예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
          |        +      |
          ------- 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")
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)