[General] network = SharedCoreShowcase abstract = true sim-time-limit = 100ms **.fcsMode = "computed" **.checksumMode = "computed" *.*.llc.typename = "" *.*.ethernet.typename = "EthernetLayer" *.*.eth[*].typename = "LayeredEthernetInterface" *.*.eth[*].bitrate = 100Mbps # The hosts send and receive untagged frames; they have no 802.1Q layer. The # hosts of service provider 2 use the MAC addresses of service provider 1's # hosts, customer C those of customer A and customer D those of customer B. *.hostA1a.eth[0].address = "02-00-00-00-0a-1a" *.hostA1b.eth[0].address = "02-00-00-00-0a-1b" *.hostA2a.eth[0].address = "02-00-00-00-0a-2a" *.hostA2b.eth[0].address = "02-00-00-00-0a-2b" *.hostB1a.eth[0].address = "02-00-00-00-0b-1a" *.hostB1b.eth[0].address = "02-00-00-00-0b-1b" *.hostB2a.eth[0].address = "02-00-00-00-0b-2a" *.hostB2b.eth[0].address = "02-00-00-00-0b-2b" *.hostC1a.eth[0].address = "02-00-00-00-0a-1a" *.hostC1b.eth[0].address = "02-00-00-00-0a-1b" *.hostC2a.eth[0].address = "02-00-00-00-0a-2a" *.hostC2b.eth[0].address = "02-00-00-00-0a-2b" *.hostD1a.eth[0].address = "02-00-00-00-0b-1a" *.hostD1b.eth[0].address = "02-00-00-00-0b-1b" *.hostD2a.eth[0].address = "02-00-00-00-0b-2a" *.hostD2b.eth[0].address = "02-00-00-00-0b-2b" # Each customer is an IP subnet of its own. *.configurator.config = xmldoc("addresses.xml") # Every host pings its counterpart at the other site of the same customer. # hostA1a starts first, so that its first ping crosses the network alone. *.host*.numApps = 1 *.host*.app[0].typename = "PingApp" *.hostA1a.app[0].startTime = 1ms *.host*.app[0].startTime = 2ms *.host*.app[0].sendInterval = 10ms *.host*.app[0].count = 5 *.hostA1a.app[0].destAddr = "hostA2a" *.hostA1b.app[0].destAddr = "hostA2b" *.hostA2a.app[0].destAddr = "hostA1a" *.hostA2b.app[0].destAddr = "hostA1b" *.hostB1a.app[0].destAddr = "hostB2a" *.hostB1b.app[0].destAddr = "hostB2b" *.hostB2a.app[0].destAddr = "hostB1a" *.hostB2b.app[0].destAddr = "hostB1b" *.hostC1a.app[0].destAddr = "hostC2a" *.hostC1b.app[0].destAddr = "hostC2b" *.hostC2a.app[0].destAddr = "hostC1a" *.hostC2b.app[0].destAddr = "hostC1b" *.hostD1a.app[0].destAddr = "hostD2a" *.hostD1b.app[0].destAddr = "hostD2b" *.hostD2a.app[0].destAddr = "hostD1a" *.hostD2b.app[0].destAddr = "hostD1b" # The customer switches are VLAN-unaware. All other bridges are VLAN-aware: # they learn and forward per VLAN, in the VLAN space of their 802.1Q layer. *.sp*.ieee8021q.typename = "Ieee8021qProtocol" *.peb*.ieee8021q.typename = "Ieee8021qProtocol" *.pb.ieee8021q.typename = "Ieee8021qProtocol" *.sp*.bridging.typename = "BridgingLayer" *.peb*.bridging.typename = "BridgingLayer" *.pb.bridging.typename = "BridgingLayer" # The port of pebW toward service provider 1 (eth0) carries C-tagged frames, # its port toward the core bridge (eth2) S-tagged frames over C-tagged ones. *.pebW.numPcapRecorders = 2 *.pebW.pcapRecorder[0].moduleNamePatterns = "eth[0]" *.pebW.pcapRecorder[0].pcapFile = "${resultdir}/${configname}-#${runnumber}-pebW_eth0.pcap" *.pebW.pcapRecorder[1].moduleNamePatterns = "eth[2]" *.pebW.pcapRecorder[1].pcapFile = "${resultdir}/${configname}-#${runnumber}-pebW_eth2.pcap" # The bridges of the core are S-VLAN bridges: their 802.1Q layer inserts and # removes S-tags, and leaves the C-tags of the service providers in the # payload, and their VLAN policy and relay work with the S-VLAN of the frames. *.peb*.**.vlanTagType = "s" *.pb.**.vlanTagType = "s" [Config PortTypes] description = "two service providers, each with C-VLANs for its customers, share a core that separates them by S-VLAN; the bridge ports are configured by port type with Ieee8021adPolicy" # The VLAN policy of each bridge gives each of its ports an IEEE 802.1Q port # type. The direction reverser forwards the PCP (the default): a port that sends # a VLAN untagged sends it without any tag. *.sp*.bridging.vlanPolicy.typename = "Ieee8021adPolicy" *.peb*.bridging.vlanPolicy.typename = "Ieee8021adPolicy" *.pb.bridging.vlanPolicy.typename = "Ieee8021adPolicy" # The bridges of the service providers are C-VLAN bridges. The ports of the # customers are access ports: they accept untagged and priority-tagged frames # and classify them into the C-VLAN of the customer. The uplink to the core is # a trunk that carries both C-VLANs C-tagged. A customer switch takes one access # port, two hosts take two. *.sp1w.bridging.vlanPolicy.ports = {"eth0" : {"type" : "access", "vid" : 10}, "eth1" : {"type" : "access", "vid" : 10}, "eth2" : {"type" : "access", "vid" : 20}, "eth3" : {"type" : "trunk", "vids" : [10, 20]}} *.sp1e.bridging.vlanPolicy.ports = {"eth0" : {"type" : "access", "vid" : 10}, "eth1" : {"type" : "access", "vid" : 20}, "eth2" : {"type" : "access", "vid" : 20}, "eth3" : {"type" : "trunk", "vids" : [10, 20]}} *.sp2w.bridging.vlanPolicy.ports = {"eth0" : {"type" : "access", "vid" : 10}, "eth1" : {"type" : "access", "vid" : 20}, "eth2" : {"type" : "access", "vid" : 20}, "eth3" : {"type" : "trunk", "vids" : [10, 20]}} *.sp2e.bridging.vlanPolicy.ports = {"eth0" : {"type" : "access", "vid" : 10}, "eth1" : {"type" : "access", "vid" : 10}, "eth2" : {"type" : "access", "vid" : 20}, "eth3" : {"type" : "trunk", "vids" : [10, 20]}} # An edge bridge of the core has a customer network port (cnp) toward each # service provider: it accepts frames without an S-tag, puts all of them into # the S-VLAN of that service provider, and removes the S-tag when it sends to # it. Its provider network port (pnp) toward the core bridge carries both # S-VLANs S-tagged. *.peb*.bridging.vlanPolicy.ports = {"eth0" : {"type" : "cnp", "vid" : 100}, "eth1" : {"type" : "cnp", "vid" : 200}, "eth2" : {"type" : "pnp", "vids" : [100, 200]}} # The core bridge relays by S-VLAN only. *.pb.bridging.vlanPolicy.ports = {"eth0" : {"type" : "pnp", "vids" : [100, 200]}, "eth1" : {"type" : "pnp", "vids" : [100, 200]}} [Config FiltersAndMappers] description = "two service providers, each with C-VLANs for its customers, share a core that separates them by S-VLAN; the bridge ports are configured with the filters and mappers of VlanPolicyLayer" # The VLAN policy of each bridge consists of the filters and mappers of # VlanPolicyLayer. The filters check the VLAN id as it is on the wire. *.sp*.bridging.vlanPolicy.typename = "VlanPolicyLayer" *.peb*.bridging.vlanPolicy.typename = "VlanPolicyLayer" *.pb.bridging.vlanPolicy.typename = "VlanPolicyLayer" # A forwarded PCP would keep the tag on a port that sends the VLAN untagged, # as a priority tag (VLAN id 0). *.sp*.bridging.directionReverser.reverser.forwardPcp = false *.peb*.bridging.directionReverser.reverser.forwardPcp = false *.pb.bridging.directionReverser.reverser.forwardPcp = false # The bridges of the service providers are C-VLAN bridges. Their access ports # accept untagged frames only and classify them into the C-VLAN of the # customer; the uplink to the core is a trunk that carries both C-VLANs # C-tagged. A customer switch takes one access port, two hosts take two. *.sp*.bridging.vlanPolicy.inboundMapper.typename = "VlanIndMapper" *.sp*.bridging.vlanPolicy.inboundFilter.acceptedVlanIds = {"eth0" : [-1], "eth1" : [-1], "eth2" : [-1], "eth3" : [10, 20]} *.sp*.bridging.vlanPolicy.outboundFilter.acceptedVlanIds = {"eth0" : [-1], "eth1" : [-1], "eth2" : [-1], "eth3" : [10, 20]} *.sp1w.bridging.vlanPolicy.inboundMapper.mappedVlanIds = {"eth0" : {"-1" : 10}, "eth1" : {"-1" : 10}, "eth2" : {"-1" : 20}} *.sp1w.bridging.vlanPolicy.outboundMapper.mappedVlanIds = {"eth0" : {"10" : -1}, "eth1" : {"10" : -1}, "eth2" : {"20" : -1}} *.sp1e.bridging.vlanPolicy.inboundMapper.mappedVlanIds = {"eth0" : {"-1" : 10}, "eth1" : {"-1" : 20}, "eth2" : {"-1" : 20}} *.sp1e.bridging.vlanPolicy.outboundMapper.mappedVlanIds = {"eth0" : {"10" : -1}, "eth1" : {"20" : -1}, "eth2" : {"20" : -1}} *.sp2w.bridging.vlanPolicy.inboundMapper.mappedVlanIds = {"eth0" : {"-1" : 10}, "eth1" : {"-1" : 20}, "eth2" : {"-1" : 20}} *.sp2w.bridging.vlanPolicy.outboundMapper.mappedVlanIds = {"eth0" : {"10" : -1}, "eth1" : {"20" : -1}, "eth2" : {"20" : -1}} *.sp2e.bridging.vlanPolicy.inboundMapper.mappedVlanIds = {"eth0" : {"-1" : 10}, "eth1" : {"-1" : 10}, "eth2" : {"-1" : 20}} *.sp2e.bridging.vlanPolicy.outboundMapper.mappedVlanIds = {"eth0" : {"10" : -1}, "eth1" : {"10" : -1}, "eth2" : {"20" : -1}} # An edge bridge of the core accepts frames without an S-tag from a service # provider, puts all of them into the S-VLAN of that service provider, and # removes the S-tag when it sends to it. *.peb*.bridging.vlanPolicy.inboundMapper.typename = "VlanIndMapper" *.peb*.bridging.vlanPolicy.inboundMapper.mappedVlanIds = {"eth0" : {"-1" : 100}, "eth1" : {"-1" : 200}} *.peb*.bridging.vlanPolicy.inboundFilter.acceptedVlanIds = {"eth0" : [-1], "eth1" : [-1], "eth2" : [100, 200]} *.peb*.bridging.vlanPolicy.outboundFilter.acceptedVlanIds = {"eth0" : [-1], "eth1" : [-1], "eth2" : [100, 200]} *.peb*.bridging.vlanPolicy.outboundMapper.mappedVlanIds = {"eth0" : {"100" : -1}, "eth1" : {"200" : -1}} # The core bridge relays by S-VLAN only. *.pb.bridging.vlanPolicy.inboundFilter.acceptedVlanIds = {"eth0" : [100, 200], "eth1" : [100, 200]} *.pb.bridging.vlanPolicy.outboundFilter.acceptedVlanIds = {"eth0" : [100, 200], "eth1" : [100, 200]}