--- /dev/null
+interface host-eth0
+ ip address 10.4.4.7/24
+!
+ip route 0.0.0.0/0 10.4.4.4
+++ /dev/null
-interface host-eth0
- ip address 10.4.4.7/24
-!
-ip route 0.0.0.0/0 10.4.4.4
--- /dev/null
+ip forwarding
+!debug nhrp all
+interface nhc1-eth0
+ ip address 192.168.2.4/24
+!
+ip route 192.168.1.0/24 192.168.2.6
+interface nhc1-gre0
+ ip address 172.16.1.4/32
+ no link-detect
+ ipv6 nd suppress-ra
+ ip nhrp holdtime 10
+ ip nhrp network-id 42
+ ip nhrp registration no-unique
+ ip nhrp nhs dynamic nbma 192.168.1.1
+ ip nhrp nhs dynamic nbma 192.168.1.2
+ ip nhrp nhs dynamic nbma 192.168.1.3
+ ip nhrp shortcut
+ tunnel source nhc1-eth0
+!
+interface nhc1-eth1
+ ip address 10.4.4.4/24
+!
+ip route 0.0.0.0/0 172.16.1.1 50
+ip route 0.0.0.0/0 172.16.1.2 60
+ip route 0.0.0.0/0 172.16.1.3 70
+++ /dev/null
-!debug nhrp all
-interface nhc1-gre0
- ip nhrp holdtime 10
- ip nhrp network-id 42
- ip nhrp registration no-unique
- ip nhrp nhs dynamic nbma 192.168.1.1
- ip nhrp nhs dynamic nbma 192.168.1.2
- ip nhrp nhs dynamic nbma 192.168.1.3
- ip nhrp shortcut
- tunnel source nhc1-eth0
-exit
+++ /dev/null
-ip forwarding
-interface nhc1-eth0
- ip address 192.168.2.4/24
-!
-ip route 192.168.1.0/24 192.168.2.6
-interface nhc1-gre0
- ip address 172.16.1.4/32
- no link-detect
- ipv6 nd suppress-ra
-!
-interface nhc1-eth1
- ip address 10.4.4.4/24
-!
-ip route 0.0.0.0/0 172.16.1.1 50
-ip route 0.0.0.0/0 172.16.1.2 60
-ip route 0.0.0.0/0 172.16.1.3 70
\ No newline at end of file
--- /dev/null
+ip forwarding
+!debug nhrp all
+interface nhc2-eth0
+ ip address 192.168.2.5/24
+!
+ip route 192.168.1.0/24 192.168.2.6
+interface nhc2-gre0
+ ip address 172.16.1.5/32
+ no link-detect
+ ipv6 nd suppress-ra
+ ip nhrp holdtime 10
+ ip nhrp network-id 42
+ ip nhrp nhs dynamic nbma 192.168.1.1
+ ip nhrp nhs dynamic nbma 192.168.1.2
+ ip nhrp nhs dynamic nbma 192.168.1.3
+ ip nhrp registration no-unique
+ ip nhrp shortcut
+ tunnel source nhc2-eth0
+!
+interface nhc2-eth1
+ ip address 10.5.5.5/24
+!
+ip route 0.0.0.0/0 172.16.1.1 50
+ip route 0.0.0.0/0 172.16.1.2 60
+ip route 0.0.0.0/0 172.16.1.3 70
+++ /dev/null
-!debug nhrp all
-interface nhc2-gre0
- ip nhrp holdtime 10
- ip nhrp network-id 42
- ip nhrp nhs dynamic nbma 192.168.1.1
- ip nhrp nhs dynamic nbma 192.168.1.2
- ip nhrp nhs dynamic nbma 192.168.1.3
- ip nhrp registration no-unique
- ip nhrp shortcut
- tunnel source nhc2-eth0
-exit
+++ /dev/null
-ip forwarding
-interface nhc2-eth0
- ip address 192.168.2.5/24
-!
-ip route 192.168.1.0/24 192.168.2.6
-interface nhc2-gre0
- ip address 172.16.1.5/32
- no link-detect
- ipv6 nd suppress-ra
-!
-interface nhc2-eth1
- ip address 10.5.5.5/24
-!
-ip route 0.0.0.0/0 172.16.1.1 50
-ip route 0.0.0.0/0 172.16.1.2 60
-ip route 0.0.0.0/0 172.16.1.3 70
--- /dev/null
+ip forwarding
+!debug nhrp all
+interface nhs1-eth0
+ ip address 192.168.1.1/24
+!
+ip route 192.168.2.0/24 192.168.1.6
+nhrp nflog-group 1
+interface nhs1-gre0
+ ip address 172.16.1.1/32
+ no link-detect
+ ipv6 nd suppress-ra
+ ip nhrp holdtime 10
+ ip nhrp network-id 42
+ ip nhrp registration no-unique
+ ip nhrp redirect
+ tunnel source nhs1-eth0
+!
+ip route 10.4.4.0/24 172.16.1.4
+ip route 10.5.5.0/24 172.16.1.5
+++ /dev/null
-!debug nhrp all
-nhrp nflog-group 1
-interface nhs1-gre0
- ip nhrp holdtime 10
- ip nhrp network-id 42
- ip nhrp registration no-unique
- ip nhrp redirect
- tunnel source nhs1-eth0
-exit
+++ /dev/null
-ip forwarding
-interface nhs1-eth0
- ip address 192.168.1.1/24
-!
-ip route 192.168.2.0/24 192.168.1.6
-interface nhs1-gre0
- ip address 172.16.1.1/32
- no link-detect
- ipv6 nd suppress-ra
-!
-ip route 10.4.4.0/24 172.16.1.4
-ip route 10.5.5.0/24 172.16.1.5
--- /dev/null
+ip forwarding
+!debug nhrp all
+interface nhs2-eth0
+ ip address 192.168.1.2/24
+!
+ip route 192.168.2.0/24 192.168.1.6
+nhrp nflog-group 1
+interface nhs2-gre0
+ ip address 172.16.1.2/32
+ no link-detect
+ ipv6 nd suppress-ra
+ ip nhrp holdtime 10
+ ip nhrp network-id 42
+ ip nhrp registration no-unique
+ ip nhrp redirect
+ tunnel source nhs2-eth0
+!
+ip route 10.4.4.0/24 172.16.1.4
+ip route 10.5.5.0/24 172.16.1.5
+++ /dev/null
-!debug nhrp all
-nhrp nflog-group 1
-interface nhs2-gre0
- ip nhrp holdtime 10
- ip nhrp network-id 42
- ip nhrp registration no-unique
- ip nhrp redirect
- tunnel source nhs2-eth0
-exit
+++ /dev/null
-ip forwarding
-interface nhs2-eth0
- ip address 192.168.1.2/24
-!
-ip route 192.168.2.0/24 192.168.1.6
-interface nhs2-gre0
- ip address 172.16.1.2/32
- no link-detect
- ipv6 nd suppress-ra
-!
-ip route 10.4.4.0/24 172.16.1.4
-ip route 10.5.5.0/24 172.16.1.5
--- /dev/null
+ip forwarding
+!debug nhrp all
+interface nhs3-eth0
+ ip address 192.168.1.3/24
+!
+ip route 192.168.2.0/24 192.168.1.6
+nhrp nflog-group 1
+interface nhs3-gre0
+ ip address 172.16.1.3/32
+ no link-detect
+ ipv6 nd suppress-ra
+ ip nhrp holdtime 10
+ ip nhrp network-id 42
+ ip nhrp registration no-unique
+ ip nhrp redirect
+ tunnel source nhs3-eth0
+!
+ip route 10.4.4.0/24 172.16.1.4
+ip route 10.5.5.0/24 172.16.1.5
\ No newline at end of file
+++ /dev/null
-!debug nhrp all
-nhrp nflog-group 1
-interface nhs3-gre0
- ip nhrp holdtime 10
- ip nhrp network-id 42
- ip nhrp registration no-unique
- ip nhrp redirect
- tunnel source nhs3-eth0
-exit
+++ /dev/null
-ip forwarding
-interface nhs3-eth0
- ip address 192.168.1.3/24
-!
-ip route 192.168.2.0/24 192.168.1.6
-interface nhs3-gre0
- ip address 172.16.1.3/32
- no link-detect
- ipv6 nd suppress-ra
-!
-ip route 10.4.4.0/24 172.16.1.4
-ip route 10.5.5.0/24 172.16.1.5
\ No newline at end of file
--- /dev/null
+ip forwarding
+interface router-eth0
+ ip address 192.168.1.6/24
+!
+interface router-eth1
+ ip address 192.168.2.6/24
+exit
+++ /dev/null
-ip forwarding
-interface router-eth0
- ip address 192.168.1.6/24
-!
-interface router-eth1
- ip address 192.168.2.6/24
-exit
"""
TOPOLOGY = """
-+------------+ +------------+ +------------+
-| | | | | |
-| | | | | |
-| NHS 1 | | NHS 2 | | NHS 3 |
-| | | | | |
-+-----+------+ +-----+------+ +-----+------+
- |.1 |.2 |.3
- | | |
- | | 192.168.1.0/24 |
-------+-------------------------------+------------------+-------------+------
- |
- |.6
- GRE P2MP between all NHS and NHC +-----+------+
- 172.16.1.x/32 | |
- | |
- | Router |
- | |
- +-----+------+
- |
- |
- ---------+----------------+-------------+------
- | 192.168.2.0/24 |
- | |
- | |.4 |.5
-+------------+ | +-------+----+ +------+-----+ |
-| | | | | | | |
-| | +--------+ | | | |
++------------+ +------------+ +------------+
+| | | | | |
+| | | | | |
+| NHS 1 | | NHS 2 | | NHS 3 |
+| | | | | |
++-----+------+ +-----+------+ +-----+------+
+ |.1 |.2 |.3
+ | | |
+ | | 192.168.1.0/24 |
+------+-------------------------------+------------------+-------------+------
+ |
+ |.6
+ GRE P2MP between all NHS and NHC +-----+------+
+ 172.16.1.x/32 | |
+ | |
+ | Router |
+ | |
+ +-----+------+
+ |
+ |
+ ---------+----------------+-------------+------
+ | 192.168.2.0/24 |
+ | |
+ | |.4 |.5
++------------+ | +-------+----+ +------+-----+ |
+| | | | | | | |
+| | +--------+ | | | |
| Host |.7 | | NHC 1 | | NHC 2 +-----+10.5.5.0/24
-| +---------+ | | | | |
-+------------+ | +------------+ +------------+ |
- | |
- 10.4.4.0/24
+| +---------+ | | | | |
++------------+ | +------------+ +------------+ |
+ | |
+ 10.4.4.0/24
"""
# Save the Current Working Directory to find configuration files.
def _verify_iptables():
tgen = get_topogen()
# Verify iptables is installed. Required for shortcuts
- rc, _, _ = tgen.net["nhs1"].cmd_status("iptables")
- return False if rc == 127 else True
+ rc, _, _ = tgen.net["nhs1"].cmd_status("iptables -V")
+ return True if rc == 0 else False
def setup_module(mod):
_populate_iface()
for rname, router in router_list.items():
- router.load_config(
- TopoRouter.RD_ZEBRA,
- os.path.join(CWD, "{}/zebra.conf".format(rname)),
- )
- if rname in ("nhs1", "nhs2", "nhs3", "nhc1", "nhc2"):
- router.load_config(
- TopoRouter.RD_NHRP, os.path.join(CWD, "{}/nhrpd.conf".format(rname))
- )
+ logger.info("Loading router %s" % rname)
+ router.load_frr_config(os.path.join(CWD, "{}/frr.conf".format(rname)))
# Initialize all routers.
tgen.start_router()