[General] network = inet.networks.tsn.TsnLinearNetwork sim-time-limit = 1s description = "Per-stream filtering using single rate two color metering" # client applications *.client.numApps = 2 *.client.app[*].typename = "UdpSourceApp" *.client.app[0].display-name = "best effort" *.client.app[1].display-name = "video" *.client.app[*].io.destAddress = "server" *.client.app[0].io.destPort = 1000 *.client.app[1].io.destPort = 1001 # best-effort stream ~40Mbps *.client.app[0].source.packetLength = 1000B *.client.app[0].source.productionInterval = 200us + replaceUnit(sin(dropUnit(simTime() * 10)), "ms") / 20 # video stream ~20Mbps *.client.app[1].source.packetLength = 500B *.client.app[1].source.productionInterval = 200us + replaceUnit(sin(dropUnit(simTime() * 20)), "ms") / 10 # server applications *.server.numApps = 2 *.server.app[*].typename = "UdpSinkApp" *.server.app[0].io.localPort = 1000 *.server.app[1].io.localPort = 1001 # enable outgoing streams *.client.hasOutgoingStreams = true # client stream identification *.client.bridging.streamIdentifier.identifier.mapping = [{stream: "best effort", packetFilter: expr(udp.destPort == 1000)}, {stream: "video", packetFilter: expr(udp.destPort == 1001)}] # client stream encoding *.client.bridging.streamCoder.encoder.mapping = [{stream: "best effort", pcp: 0}, {stream: "video", pcp: 4}] # disable forwarding IEEE 802.1Q C-Tag *.switch.bridging.directionReverser.reverser.excludeEncapsulationProtocols = ["ieee8021qctag"] # stream decoding *.switch.bridging.streamCoder.decoder.mapping = [{pcp: 0, stream: "best effort"}, {pcp: 4, stream: "video"}] # enable ingress per-stream filtering *.switch.hasIngressTrafficFiltering = true # per-stream filtering *.switch.bridging.streamFilter.ingress.numStreams = 2 *.switch.bridging.streamFilter.ingress.classifier.mapping = {"best effort": 0, "video": 1} *.switch.bridging.streamFilter.ingress.meter[0].display-name = "best effort" *.switch.bridging.streamFilter.ingress.meter[1].display-name = "video" *.switch.bridging.streamFilter.ingress.meter[*].typename = "SingleRateTwoColorMeter" *.switch.bridging.streamFilter.ingress.meter[0].committedInformationRate = 40Mbps *.switch.bridging.streamFilter.ingress.meter[1].committedInformationRate = 20Mbps *.switch.bridging.streamFilter.ingress.meter[0].committedBurstSize = 10kB *.switch.bridging.streamFilter.ingress.meter[1].committedBurstSize = 5kB