我是 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
这个问题被声明为错误
https://github.com/inet-framework/inet/issues/830
错误是分类器不检查所选门索引是否可以与数据包一起推送。如果所选分支有背压,则应选择默认分支。如果默认分支也有背压,那么应该引发错误。
我也遇到这个问题,请问您最后是怎么解决的?