omnet++ /INET Module PeriodicGate即使关闭也会转发数据包



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

客户& lt;——比;开关& lt;——比;服务器

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

结果,我在omnetpp.ini文件中配置的gate状态发生了变化。
与此相反,即使在闭门状态下也会转发数据包。

我尝试了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
{
}

omnet版本:6.0.1
Inet版本:inet4.4

这个问题被声明为bug

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

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

这个Commit修复了这个问题,并且这个Commit改变了子模块的顺序。

最新更新