def build(self, *args, **kwargs): # Change the config object for RouterConfig # because it does not add by default OSPF or OSPF6 r1 = self.addRouter("r1", config=RouterConfig) r2 = self.addRouter("r2", config=RouterConfig) h1 = self.addHost("h1") h2 = self.addHost("h2") lr1r2 = self.addLink(r1, r2) lr1r2[r1].addParams(ip=("2042:12::1/64", "10.12.0.1/24")) lr1r2[r2].addParams(ip=("2042:12::2/64", "10.12.0.2/24")) lr1h1 = self.addLink(r1, h1) lr1h1[r1].addParams(ip=("2042:1a::1/64", "10.51.0.1/24")) lr1h1[h1].addParams(ip=("2042:1a::a/64", "10.51.0.5/24")) lr2h2 = self.addLink(r2, h2) lr2h2[r2].addParams(ip=("2042:2b::2/64", "10.62.0.2/24")) lr2h2[h2].addParams(ip=("2042:2b::b/64", "10.62.0.6/24")) # Add static routes r1.addDaemon(STATIC, static_routes=[ StaticRoute("2042:2b::/64", "2042:12::2"), StaticRoute("10.62.0.0/24", "10.12.0.2") ]) r2.addDaemon(STATIC, static_routes=[ StaticRoute("2042:1a::/64", "2042:12::1"), StaticRoute("10.51.0.0/24", "10.12.0.1") ]) super(StaticRoutingNet, self).build(*args, **kwargs)
def build(self, *args, **kwargs): # Change the config object for RouterConfig # because it does not add by default OSPF or OSPF6 r1 = self.addRouter("r1", config=RouterConfig) r2 = self.addRouter("r2", config=RouterConfig) r3 = self.addRouter("r3", config=RouterConfig) a = self.addHost("a") b = self.addHost("b") lr1r2 = self.addLink(r1, r2) lr1r2[r1].addParams(ip=("2001:db8:1341:12::1/64")) lr1r2[r2].addParams(ip=("2001:db8:1341:12::2/64")) lr1r3 = self.addLink(r1, r3) lr1r3[r1].addParams(ip=("2001:db8:1341:13::1/64")) lr1r3[r3].addParams(ip=("2001:db8:1341:13::3/64")) lr2r3 = self.addLink(r2, r3) lr2r3[r2].addParams(ip=("2001:db8:1341:23::2/64")) lr2r3[r3].addParams(ip=("2001:db8:1341:23::3/64")) lr1a = self.addLink(r1, a) lr1a[r1].addParams(ip=("2001:db8:1341:1::1/64")) lr1a[a].addParams(ip=("2001:db8:1341:1::A/64")) lr3b = self.addLink(r3, b) lr3b[r3].addParams(ip=("2001:db8:1341:3::3/64")) lr3b[b].addParams(ip=("2001:db8:1341:3::B/64")) # Add static routes r1.addDaemon(STATIC, static_routes=[ StaticRoute("2001:db8:1341:3::/64", "2001:db8:1341:12::2") ]) r2.addDaemon(STATIC, static_routes=[ StaticRoute("2001:db8:1341::/60", "2001:db8:1341:12::1"), StaticRoute("2001:db8:1341:1::/64", "2001:db8:1341:12::1") ]) r3.addDaemon(STATIC, static_routes=[ StaticRoute("2001:db8:1341:1::/64", "2001:db8:1341:13::1") ]) super(MyTopology, self).build(*args, **kwargs)
def build(self, *args, **kwargs): """ """ r1_routes = [ StaticRoute("fc00:4::/64", "2001:14::2"), StaticRoute("::/0", "2001:12::2") ] r3_routes = [ StaticRoute("fc00:4::/64", "2001:34::2"), StaticRoute("fc00:5::/64", "2001:35::2"), StaticRoute("::/0", "2001:23::1") ] r4_routes = [ StaticRoute("fc00:1::/64", "2001:14::1"), StaticRoute("fc00:3::/64", "2001:34::1"), StaticRoute("::/0", "2001:24::1") ] r2_routes = [ StaticRoute("fc00:1::/64", "2001:12::1"), StaticRoute("fc00:3::/64", "2001:23::2"), StaticRoute("fc00:4::/64", "2001:24::2") ] fw_routes = [StaticRoute("::/0", "2001:35::1")] r1 = self.addRouter_v('r1', r1_routes) r3 = self.addRouter_v('r3', r3_routes) r4 = self.addRouter_v('r4', r4_routes) fw = self.addRouter_v('fw', fw_routes) r2 = self.addRouter_v6('r2', r2_routes) # Pure IPv6 Router a_routes = [ StaticRoute("0.0.0.0/0", "10.0.0.2"), StaticRoute("::/0", "2001:1a::1/64") ] b_routes = [ StaticRoute("0.0.0.0/0", "10.0.2.2"), StaticRoute("::/0", "2001:4b::1/64") ] c_routes = [ StaticRoute("0.0.0.0/0", "10.0.1.2"), StaticRoute("::/0", "2001:3c::1/64") ] a = self.addRouter_v('a', a_routes) b = self.addRouter_v('b', b_routes) c = self.addRouter_v('c', c_routes) # Links between Routers self.addLink(r1, r2, params1={"ip": "2001:12::1/64"}, params2={"ip": "2001:12::2/64"}) self.addLink(r2, r3, params1={"ip": "2001:23::1/64"}, params2={"ip": "2001:23::2/64"}) self.addLink(r2, r4, params1={"ip": "2001:24::1/64"}, params2={"ip": "2001:24::2/64"}) self.addLink(r1, r4, params1={"ip": "2001:14::1/64"}, params2={"ip": "2001:14::2/64"}) self.addLink(r3, r4, params1={"ip": "2001:34::1/64"}, params2={"ip": "2001:34::2/64"}) # Links between Router and Hosts (IPv4) self.addLink(r1, a, params1={"ip": "10.0.0.2/24"}, params2={"ip": "10.0.0.1/24"}) self.addLink(r4, b, params1={"ip": "10.0.2.2/24"}, params2={"ip": "10.0.2.1/24"}) self.addLink(r3, c, params1={"ip": "10.0.1.2/24"}, params2={"ip": "10.0.1.1/24"}) # Links between Router and Hosts (IPv6) self.addLink(r1, a, params1={"ip": "2001:1a::1/64"}, params2={"ip": "2001:1a::2/64"}) self.addLink(r4, b, params1={"ip": "2001:4b::1/64"}, params2={"ip": "2001:4b::2/64"}) self.addLink(r3, c, params1={"ip": "2001:3c::1/64"}, params2={"ip": "2001:3c::2/64"}) self.addLink(r3, fw, params1={"ip": "2001:35::1/64"}, params2={"ip": "2001:35::2/64"}) super(SimpleTopo, self).build(*args, **kwargs)
| + | ------- r4 ------ + b """ # R1 R3 R4 are Segment Routing Enabled Server. ipv6_address = {1: "2001:1a::/64", 3: "2001:3c::/64", 4: "2001:4b::/64"} ipv4_address = {1: "10.0.0.0/24", 3: "10.0.1.0/24", 4: "10.0.2.0/24"} ipv4_gw = {1: "10.0.0.1", 3: "10.0.1.1", 4: "10.0.2.1"} r1_routes = [ StaticRoute("fc00:4::/64", "2001:14::2"), StaticRoute("::/0", "2001:12::2") ] r3_routes = [ StaticRoute("fc00:4::/64", "2001:34::2"), StaticRoute("::/0", "2001:23::1") ] r4_routes = [ StaticRoute("fc00:1::/64", "2001:14::1"), StaticRoute("fc00:3::/64", "2001:34::1"), StaticRoute("::/0", "2001:24::1") ] r2_routes = [ StaticRoute("fc00:1::/64", "2001:12::1"), StaticRoute("fc00:3::/64", "2001:23::2"), StaticRoute("fc00:4::/64", "2001:24::2")
def build(self, *args, **kwargs): # Change the config object for RouterConfig # because it does not add by default OSPF or OSPF6 r1, r2, r3, r4 = \ self.addRouters('r1', 'r2', 'r3', 'r4', use_v4=False, use_v6=True, config=RouterConfig) # Hosts h1 = self.addHost("h1") h2 = self.addHost("h2") h3 = self.addHost("h3") h4 = self.addHost("h4") # Link between r1 and r2 lr1r2 = self.addLink(r1, r2) lr1r2[r1].addParams(ip="2042:12::1/64") lr1r2[r2].addParams(ip="2042:12::2/64") # Link between r1 and r3 lr1r3 = self.addLink(r1, r3) lr1r3[r1].addParams(ip="2042:13::1/64") lr1r3[r3].addParams(ip="2042:13::3/64") # Link between r1 and r4 lr1r4 = self.addLink(r1, r4) lr1r4[r1].addParams(ip="2042:14::1/64") lr1r4[r4].addParams(ip="2042:14::4/64") # Link between r2 and r4 lr2r4 = self.addLink(r2, r4) lr2r4[r2].addParams(ip="2042:24::2/64") lr2r4[r4].addParams(ip="2042:24::4/64") # Link between r3 and r4 lr3r4 = self.addLink(r3, r4) lr3r4[r3].addParams(ip="2042:34::3/64") lr3r4[r4].addParams(ip="2042:34::4/64") # Link between r1 and h1 lr1h1 = self.addLink(r1, h1) lr1h1[r1].addParams(ip="2042:1a::1/64") lr1h1[h1].addParams(ip="2042:1a::a/64") # Link between r2 and h2 lr2h2 = self.addLink(r2, h2) lr2h2[r2].addParams(ip="2042:2b::2/64") lr2h2[h2].addParams(ip="2042:2b::b/64") # Link between r3 and h3 lr3h3 = self.addLink(r3, h3) lr3h3[r3].addParams(ip="2042:3c::3/64") lr3h3[h3].addParams(ip="2042:3c::c/64") # Link between r4 and h4 lr4h4 = self.addLink(r4, h4) lr4h4[r4].addParams(ip="2042:4d::4/64") lr4h4[h4].addParams(ip="2042:4d::d/64") # Add static routes r1.addDaemon( STATIC, static_routes=[ StaticRoute(prefix="2042:2b::/64", nexthop="2042:12::2"), # h2->r2 StaticRoute(prefix="2042:3c::/64", nexthop="2042:13::3"), # h3->r3 StaticRoute(prefix="2042:4d::/64", nexthop="2042:13::3"), # h4->r3 ]) r2.addDaemon( STATIC, static_routes=[ StaticRoute(prefix="2042:1a::/64", nexthop="2042:12::1"), # h1->r1 StaticRoute(prefix="2042:3c::/64", nexthop="2042:24::4"), # h3->r4 StaticRoute(prefix="2042:4d::/64", nexthop="2042:24::4"), # h4->r4 ]) r3.addDaemon( STATIC, static_routes=[ StaticRoute(prefix="2042::/16", nexthop="2042:34::4"), # /->r4 ]) r4.addDaemon( STATIC, static_routes=[ StaticRoute(prefix="2042:1a::/64", nexthop="2042:14::1"), # h1->r1 StaticRoute(prefix="2042:2b::/64", nexthop="2042:24::2"), # h2->r2 StaticRoute(prefix="2042:3c::/64", nexthop="2042:14::1"), # h3->r1 ]) super().build(*args, **kwargs)
def build(self, *args, **kwargs): """ +-----+ +-----+ +-----+ +-----+ +-----+ | h1 +-----+ r1 +-----+ r2 +-----+ r3 +-----+ h3 | +-----+ +--+--+ +--+--+ +--+--+ +-----+ | | | +-----+ +--+--+ +--+--+ +--+--+ +-----+ | h6 +-----+ r6 +-----+ r5 +-----+ r4 +-----+ h4 | +-----+ +-----+ +-----+ +-----+ +-----+ """ r1 = self.addRouter_v6('r1') r2 = self.addRouter_v6('r2') r3 = self.addRouter_v6('r3') r4 = self.addRouter_v6('r4') r5 = self.addRouter_v6('r5') r6 = self.addRouter_v6('r6') h1 = self.addHost('h1', use_v4=False, use_v6=True) h3 = self.addHost('h3', use_v4=False, use_v6=True) h4 = self.addHost('h4', use_v4=False, use_v6=True) h6 = self.addHost('h6', use_v4=False, use_v6=True) self.addLink(h1, r1) self.addLink(h3, r3) self.addLink(h4, r4) self.addLink(h6, r6) lr1r2 = self.addLink(r1, r2) lr1r2[r1].addParams(ip=("2042:12::1/64",)) lr1r2[r2].addParams(ip=("2042:12::2/64",)) lr1r6 = self.addLink(r1, r6) lr1r6[r1].addParams(ip=("2042:16::1/64",)) lr1r6[r6].addParams(ip=("2042:16::2/64",)) lr2r5 = self.addLink(r2, r5) lr2r5[r2].addParams(ip=("2042:25::1/64",)) lr2r5[r5].addParams(ip=("2042:25::2/64",)) lr2r3 = self.addLink(r2, r3) lr2r3[r2].addParams(ip=("2042:23::1/64",)) lr2r3[r3].addParams(ip=("2042:23::2/64",)) lr3r4 = self.addLink(r3, r4) lr3r4[r3].addParams(ip=("2042:34::1/64",)) lr3r4[r4].addParams(ip=("2042:34::2/64",)) lr4r5 = self.addLink(r4, r5) lr4r5[r4].addParams(ip=("2042:45::1/64",)) lr4r5[r5].addParams(ip=("2042:45::2/64",)) lr5r6 = self.addLink(r5, r6) lr5r6[r5].addParams(ip=("2042:56::1/64",)) lr5r6[r6].addParams(ip=("2042:56::2/64",)) self.addSubnet(nodes=[r1, h1], subnets=["2042:11::/64"]) self.addSubnet(nodes=[r3, h3], subnets=["2042:33::/64"]) self.addSubnet(nodes=[r4, h4], subnets=["2042:44::/64"]) self.addSubnet(nodes=[r6, h6], subnets=["2042:66::/64"]) r1.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:33::2", nexthop="2042:12::2"), StaticRoute(prefix="2042:66::2", nexthop="2042:12::2"), StaticRoute(prefix="2042:44::2", nexthop="2042:12::2"), ]) r2.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:11::2", nexthop="2042:12::1"), StaticRoute(prefix="2042:33::2", nexthop="2042:25::2"), StaticRoute(prefix="2042:44::2", nexthop="2042:25::2"), StaticRoute(prefix="2042:66::2", nexthop="2042:25::2") ]) r3.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:11::2", nexthop="2042:23::1"), StaticRoute(prefix="2042:66::2", nexthop="2042:23::1"), StaticRoute(prefix="2042:44::2", nexthop="2042:23::1"), ]) r4.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:11::2", nexthop="2042:34::1"), StaticRoute(prefix="2042:66::2", nexthop="2042:34::1"), StaticRoute(prefix="2042:33::2", nexthop="2042:34::1") ]) r5.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:11::2", nexthop="2042:45::1"), StaticRoute(prefix="2042:33::2", nexthop="2042:45::1"), StaticRoute(prefix="2042:44::2", nexthop="2042:45::1"), StaticRoute(prefix="2042:66::2", nexthop="2042:56::2"), ]) r6.addDaemon(STATIC, static_routes=[ StaticRoute(prefix="2042:11::2", nexthop="2042:16::1"), StaticRoute(prefix="2042:33::2", nexthop="2042:56::1"), StaticRoute(prefix="2042:44::2", nexthop="2042:56::1"), ]) super().build(*args, **kwargs)
def build(self, *args, **kwargs): """ -----r2----- / \ c --- r1 r3 --- s \ / -----r4------ """ r1 = self.addRouter("r1", config=RouterConfig,\ lo_addresses=["2042:1::1/64", "10.50.0.1/24"]) r2 = self.addRouter("r2", config=RouterConfig, lo_addresses=["10.51.0.1/24"]) r3 = self.addRouter("r3", config=RouterConfig,\ lo_addresses=["2042:2::1/64", "10.52.0.1/24"]) r4 = self.addRouter("r4", config=RouterConfig, lo_addresses=["2042:3::1/64"]) c = self.addHost("c") s = self.addHost("s") cr1 = self.addLink(c, r1) cr1[c].addParams(ip=("2001:abe::1/64", "130.104.205.174/24")) cr1[r1].addParams(ip=("2001:abe::2/64", "130.104.205.1/24")) r1r2 = self.addLink(r1, r2, delay="10ms", bw=30) r1r2[r1].addParams(ip=("10.1.0.1/24")) r1r2[r2].addParams(ip=("10.1.0.2/24")) r2r3 = self.addLink(r2, r3, delay="10ms", bw=30) r2r3[r2].addParams(ip=("10.2.0.1/24")) r2r3[r3].addParams(ip=("10.2.0.2/24")) r3s = self.addLink(r3, s) r3s[s].addParams(ip=("2001:cafe::1/64", "50.50.50.5/24")) r3s[r3].addParams(ip=("2001:cafe::a/64", "50.50.50.1/24")) r1r4 = self.addLink(r1, r4, delay="20ms", bw=30) r1r4[r1].addParams(ip=("2001:1a::1/64")) r1r4[r4].addParams(ip=("2001:1a::a/64")) r4r3 = self.addLink(r4, r3, delay="20ms", bw=30) r4r3[r4].addParams(ip=("2001:2b::2/64")) r4r3[r3].addParams(ip=("2001:2b::b/64")) r1.addDaemon(STATIC, static_routes=[StaticRoute("50.50.50.0/24",\ "10.1.0.2"),\ StaticRoute("10.2.0.0/24",\ "10.1.0.2"),\ StaticRoute("2001:cafe::/64",\ "2001:1a::a")]) r2.addDaemon(STATIC, static_routes=[StaticRoute("50.50.50.0/24",\ "10.2.0.2"),\ StaticRoute("130.104.205.0/24",\ "10.1.0.1")]) r3.addDaemon(STATIC, static_routes=[StaticRoute("130.104.205.0/24",\ "10.2.0.1"),\ StaticRoute("10.1.0.0/24",\ "10.2.0.1"),\ StaticRoute("2001:abe::/64",\ "2001:2b::2")]) r4.addDaemon(STATIC, static_routes=[StaticRoute("2001:abe::/64",\ "2001:1a::1"),\ StaticRoute("2001:cafe::/64",\ "2001:2b::b")]) super().build(*args, **kwargs)