Omnet++/INET 模块 PeriodicGate 即使关闭也转发数据包

问题描述 投票:0回答:2

我是 Omnet 和 Inet 的新手。
我正在修改网络 TsnLinearNetwork,它是 Inet 库的一部分,如下所示:

客户端<------->交换机<------->服务器

客户端发送一个连续的数据包流,交换机将其转发到服务器。
我正在尝试设置一个周期性的门来改变它的状态,这样如果门关闭,数据包就不会被转发。
第一秒门应该关闭,第二秒应该打开。

因此我在 omnetpp.ini 文件中配置的门状态发生变化。
与此相反,即使在关闭门状态.

,数据包也会被转发

我尝试了 omnet.ini 参数但没有成功。
我期待在周期性门状态关闭时丢弃数据包。
就像文档指出的那样:

PeriodicGate
该模块根据门是打开还是关闭来允许或禁止数据包通过。门根据更改时间列表定期打开和关闭。

所以我的问题是:
为什么即使在关门状态下也转发数据包?
我怎样才能实现这种行为?

omnetpp.ini

[General]

[simpleStart03]
network = simpleStart
sim-time-limit = 2s

*.client.numApps = 1
*.client.app[*].typename = "UdpSourceApp"
*.client.app[0].display-name = "random traffic"
*.client.app[*].io.destAddress = "server"
*.client.app[0].io.destPort = 1000
*.client.app[0].source.packetLength = 1000B
*.client.app[0].source.productionInterval = 500us
*.client.hasOutgoingStreams = true
*.client.bridging.streamIdentifier.identifier.mapping = [{stream: "random traffic"}] 
*.client.bridging.streamCoder.encoder.mapping = [{stream: "random traffic", pcp: 0}]

*.server.numApps = 1
*.server.app[*].typename = "UdpSinkApp"
*.server.app[0].io.localPort = 1000

*.switch.bridging.streamCoder.decoder.mapping = [{pcp: 0, stream: "random traffic"}]
*.switch.hasIngressTrafficFiltering = true
*.switch.bridging.streamFilter.ingress.numGates = 1
*.switch.bridging.streamFilter.ingress.numMeters = 1
*.switch.bridging.streamFilter.ingress.numStreams = 1
*.switch.bridging.streamFilter.ingress.classifier.mapping = {"random traffic": 0}
*.switch.bridging.streamFilter.ingress.meter[0].display-name = "random traffic"
*.switch.bridging.streamFilter.ingress.meter[*].typename = "SingleRateTwoColorMeter"
*.switch.bridging.streamFilter.ingress.meter[0].committedInformationRate = 40Mbps
*.switch.bridging.streamFilter.ingress.meter[0].committedBurstSize = 10kB

*.switch.bridging.streamFilter.ingress.gate[*].typename = "PeriodicGate"
*.switch.bridging.streamFilter.ingress.gate[0].display-name = "random traffic"
*.switch.bridging.streamFilter.ingress.gate[0].initiallyOpen = false
*.switch.bridging.streamFilter.ingress.gate[0].durations = [1s,1s]
*.switch.bridging.streamFilter.ingress.gate[*].initiallyOpen = false

omnetpp.ned

import inet.networks.tsn.TsnLinearNetwork;

network simpleStart extends TsnLinearNetwork
{

}

全网版本:6.0.1
Inet版本:inet4.4

omnet++ inet
2个回答
-1
投票

这个问题被声明为错误

https://github.com/inet-framework/inet/issues/830

错误是分类器不检查所选门索引是否可以与数据包一起推送。如果所选分支有背压,则应选择默认分支。如果默认分支也有背压,那么应该引发错误。

This Commit 修复了问题,this commit 改变了子模块的顺序。


-1
投票

我也遇到这个问题,请问您最后是怎么解决的?

© www.soinside.com 2019 - 2024. All rights reserved.