|
| 1 | +[General] |
| 2 | +network = BgpAndOspfv3 |
| 3 | +sim-time-limit = 100s |
| 4 | + |
| 5 | +**.ipv6.configurator.networkConfiguratorModule = "configurator" |
| 6 | + |
| 7 | +# IPv6-only routers (no IPv4 stack/configurator) |
| 8 | +*.r*.hasIpv4 = false |
| 9 | + |
| 10 | +# ---- OSPFv3 (IGP) configuration, per router; intra-AS interfaces only ---- |
| 11 | +**.rA1.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA1']/Routing6/OSPFv3") |
| 12 | +**.rA1.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA1']/Interfaces") |
| 13 | +**.rA2.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA2']/Routing6/OSPFv3") |
| 14 | +**.rA2.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA2']/Interfaces") |
| 15 | +**.rA3.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA3']/Routing6/OSPFv3") |
| 16 | +**.rA3.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rA3']/Interfaces") |
| 17 | +**.rB1.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB1']/Routing6/OSPFv3") |
| 18 | +**.rB1.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB1']/Interfaces") |
| 19 | +**.rB2.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB2']/Routing6/OSPFv3") |
| 20 | +**.rB2.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB2']/Interfaces") |
| 21 | +**.rB3.ospf.ospfv3Splitter.ospfv3RoutingConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB3']/Routing6/OSPFv3") |
| 22 | +**.rB3.ospf.ospfv3Splitter.ospfv3IntConfig = xmldoc("Ospfv3Config.xml", "Devices/Router[@id='rB3']/Interfaces") |
| 23 | + |
| 24 | +# ---- BGP over IPv6 (MP-BGP) ---- |
| 25 | +*.r*.hasBgp = true |
| 26 | +*.r*.bgp.addressFamily = "ipv6" |
| 27 | +*.r*.bgp.routingTableModule = "^.ipv6.routingTable" |
| 28 | +*.r*.bgp.bgpConfig = xmldoc("BgpConfig6.xml") |
| 29 | +# ospf here is OSPFv3 (not ospfv2::Ospfv2), and there is no redistribution, so |
| 30 | +# BGP must not try to bind to it |
| 31 | +*.r*.bgp.ospfRoutingModule = "" |
| 32 | +*.rA1.bgp.routerId = "1.1.1.1" |
| 33 | +*.rA2.bgp.routerId = "1.1.1.2" |
| 34 | +*.rA3.bgp.routerId = "1.1.1.3" |
| 35 | +*.rB1.bgp.routerId = "2.2.2.1" |
| 36 | +*.rB2.bgp.routerId = "2.2.2.2" |
| 37 | +*.rB3.bgp.routerId = "2.2.2.3" |
| 38 | +# border routers advertise themselves as next hop into their AS, so the internal |
| 39 | +# routers resolve the BGP next hop via OSPFv3 |
| 40 | +*.rA3.bgp.nextHopSelf = true |
| 41 | +*.rB1.bgp.nextHopSelf = true |
| 42 | + |
| 43 | +# end-to-end check: hostA pings hostB. This only succeeds once OSPFv3 has |
| 44 | +# converged (intra-AS reachability + next-hop resolution) AND BGP has exchanged |
| 45 | +# the inter-AS prefixes. |
| 46 | +*.hostA.numApps = 1 |
| 47 | +*.hostA.app[0].typename = "PingApp" |
| 48 | +*.hostA.app[0].destAddr = "2001:db8:2:3::100" # hostB (inter-AS, via BGP) |
| 49 | +# OSPFv3 converges and the (deferred) iBGP sessions come up around t=51s, then BGP |
| 50 | +# exchanges the inter-AS prefixes; start pinging after that |
| 51 | +*.hostA.app[0].startTime = 70s |
| 52 | +*.hostA.app[0].sendInterval = 1s |
| 53 | + |
| 54 | +# ----------------------------------------------------------------------------- |
| 55 | +# OSPFv3 only (no BGP): verifies that OSPFv3 provides multi-hop intra-AS IPv6 |
| 56 | +# reachability. hostA pings rA3's far (rA2-facing) address, which rA1 can only |
| 57 | +# reach via the OSPFv3 route through rA2. |
| 58 | +# ----------------------------------------------------------------------------- |
| 59 | +[Config OspfOnly] |
| 60 | +description = "OSPFv3 IGP only, no BGP - intra-AS IPv6 routing" |
| 61 | +*.r*.hasBgp = false |
| 62 | +*.hostA.app[0].destAddr = "2001:db8:1:23::3" # rA3 (intra-AS, via OSPFv3) |
| 63 | +*.hostA.app[0].startTime = 55s # after OSPFv3 has converged |
0 commit comments