--- /dev/null
+xx as to xx via inet 10.0.1.2 dev r1-eth0 proto zebra
+xx as to xx via inet 10.0.1.2 dev r1-eth0 proto zebra
+xx via inet 10.0.1.2 dev r1-eth0 proto zebra
+xx via inet 10.0.1.2 dev r1-eth0 proto zebra
+xx via inet 10.0.1.2 dev r1-eth0 proto zebra
--- /dev/null
+O 1.1.1.1/32 [110/0] is directly connected, lo
+O>* 2.2.2.2/32 [110/10] via 10.0.1.2, r1-eth0
+O>* 3.3.3.3/32 [110/20] via 10.0.1.2, r1-eth0 label xxx
+O>* 4.4.4.4/32 [110/20] via 10.0.1.2, r1-eth0 label xxx
+O 10.0.1.0/24 [110/10] is directly connected, r1-eth0
+O>* 10.0.2.0/24 [110/20] via 10.0.1.2, r1-eth0
+O>* 10.0.3.0/24 [110/20] via 10.0.1.2, r1-eth0
-1.1.1.1/32
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
-2.2.2.2/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
-3.3.3.3/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
-4.4.4.4/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
-10.0.1.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
-10.0.2.0/24
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
-10.0.3.0/24
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
+AF Destination Nexthop Local Label Remote Label In Use
+ipv4 1.1.1.1/32 2.2.2.2 imp-null xxx no
+ipv4 2.2.2.2/32 2.2.2.2 xxx imp-null yes
+ipv4 3.3.3.3/32 2.2.2.2 xxx xxx yes
+ipv4 4.4.4.4/32 2.2.2.2 xxx xxx yes
+ipv4 10.0.1.0/24 2.2.2.2 imp-null imp-null no
+ipv4 10.0.2.0/24 2.2.2.2 xxx imp-null yes
+ipv4 10.0.3.0/24 2.2.2.2 xxx imp-null yes
--- /dev/null
+1.1.1.1/32
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+2.2.2.2/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+3.3.3.3/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+4.4.4.4/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+10.0.1.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+10.0.2.0/24
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+10.0.3.0/24
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
-Local LDP Identifier: 1.1.1.1:0
-Discovery Sources:
- Interfaces:
- r1-eth0: xmit/recv
- LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
- Hold time: 15 sec
- Targeted Hellos:
+AF ID Type Source Holdtime
+ipv4 2.2.2.2 Link r1-eth0 15
--- /dev/null
+Local LDP Identifier: 1.1.1.1:0
+Discovery Sources:
+ Interfaces:
+ r1-eth0: xmit/recv
+ LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
+ Hold time: 15 sec
+ Targeted Hellos:
--- /dev/null
+AF Interface State Uptime Hello Timers ac
+ipv4 r1-eth0 ACTIVE xx:xx:xx 5/15 1
-Peer LDP Identifier: 2.2.2.2:0
- TCP connection: 1.1.1.1:xxx - 2.2.2.2:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r1-eth0
+AF ID State Remote Address Uptime
+ipv4 2.2.2.2 OPERATIONAL 2.2.2.2 xx:xx:xx
--- /dev/null
+Peer LDP Identifier: 2.2.2.2:0
+ TCP connection: 1.1.1.1:xxx - 2.2.2.2:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r1-eth0
--- /dev/null
+ Inbound Outbound
+ Label Type Nexthop Label
+-------- ------- --------------- --------
+ XX LDP 10.0.1.2 3
+ XX LDP 10.0.1.2 3
+ XX LDP 10.0.1.2 3
+ XX LDP 10.0.1.2 XX
+ XX LDP 10.0.1.2 XX
+++ /dev/null
- Inbound Outbound
- Label Type Nexthop Label
--------- ------- --------------- --------
- 16 LDP 10.0.2.3 3
- 16 LDP 10.0.3.3 3
- 17 LDP 10.0.1.1 3
- 18 LDP 10.0.2.4 3
--- /dev/null
+xx proto zebra
+ nexthopvia inet 10.0.2.3 dev r2-eth1 weight 1
+ nexthopvia inet 10.0.3.3 dev r2-eth2 weight 1
+xx via inet 10.0.1.1 dev r2-eth0 proto zebra
+xx via inet 10.0.2.4 dev r2-eth1 proto zebra
--- /dev/null
+O>* 1.1.1.1/32 [110/10] via 10.0.1.1, r2-eth0
+O 2.2.2.2/32 [110/0] is directly connected, lo
+O>* 3.3.3.3/32 [110/10] via 10.0.2.3, r2-eth1
+O>* 4.4.4.4/32 [110/10] via 10.0.2.4, r2-eth1
+O 10.0.1.0/24 [110/10] is directly connected, r2-eth0
+O 10.0.2.0/24 [110/10] is directly connected, r2-eth1
+O 10.0.3.0/24 [110/10] is directly connected, r2-eth2
-1.1.1.1/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 imp-null
- 3.3.3.3 xxx
- 4.4.4.4 xxx
-2.2.2.2/32
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 xxx
- 3.3.3.3 xxx
- 4.4.4.4 xxx
-3.3.3.3/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 xxx
- 3.3.3.3 imp-null
- 4.4.4.4 xxx
-4.4.4.4/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 xxx
- 3.3.3.3 xxx
- 4.4.4.4 imp-null
-10.0.1.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 imp-null
- 3.3.3.3 xxx
- 4.4.4.4 xxx
-10.0.2.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 xxx
- 3.3.3.3 imp-null
- 4.4.4.4 imp-null
-10.0.3.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 1.1.1.1 xxx
- 3.3.3.3 imp-null
- 4.4.4.4 xxx
+AF Destination Nexthop Local Label Remote Label In Use
+ipv4 1.1.1.1/32 1.1.1.1 xxx imp-null yes
+ipv4 1.1.1.1/32 3.3.3.3 xxx xxx no
+ipv4 1.1.1.1/32 4.4.4.4 xxx xxx no
+ipv4 2.2.2.2/32 1.1.1.1 imp-null xxx no
+ipv4 2.2.2.2/32 3.3.3.3 imp-null xxx no
+ipv4 2.2.2.2/32 4.4.4.4 imp-null xxx no
+ipv4 3.3.3.3/32 1.1.1.1 xxx xxx no
+ipv4 3.3.3.3/32 3.3.3.3 xxx imp-null yes
+ipv4 3.3.3.3/32 4.4.4.4 xxx xxx no
+ipv4 4.4.4.4/32 1.1.1.1 xxx xxx no
+ipv4 4.4.4.4/32 3.3.3.3 xxx xxx no
+ipv4 4.4.4.4/32 4.4.4.4 xxx imp-null yes
+ipv4 10.0.1.0/24 1.1.1.1 imp-null imp-null no
+ipv4 10.0.1.0/24 3.3.3.3 imp-null xxx no
+ipv4 10.0.1.0/24 4.4.4.4 imp-null xxx no
+ipv4 10.0.2.0/24 1.1.1.1 imp-null xxx no
+ipv4 10.0.2.0/24 3.3.3.3 imp-null imp-null no
+ipv4 10.0.2.0/24 4.4.4.4 imp-null imp-null no
+ipv4 10.0.3.0/24 1.1.1.1 imp-null xxx no
+ipv4 10.0.3.0/24 3.3.3.3 imp-null imp-null no
+ipv4 10.0.3.0/24 4.4.4.4 imp-null xxx no
--- /dev/null
+1.1.1.1/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 imp-null
+ 3.3.3.3 xxx
+ 4.4.4.4 xxx
+2.2.2.2/32
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 xxx
+ 3.3.3.3 xxx
+ 4.4.4.4 xxx
+3.3.3.3/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 xxx
+ 3.3.3.3 imp-null
+ 4.4.4.4 xxx
+4.4.4.4/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 xxx
+ 3.3.3.3 xxx
+ 4.4.4.4 imp-null
+10.0.1.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 imp-null
+ 3.3.3.3 xxx
+ 4.4.4.4 xxx
+10.0.2.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 xxx
+ 3.3.3.3 imp-null
+ 4.4.4.4 imp-null
+10.0.3.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 1.1.1.1 xxx
+ 3.3.3.3 imp-null
+ 4.4.4.4 xxx
-Local LDP Identifier: 2.2.2.2:0
-Discovery Sources:
- Interfaces:
- r2-eth0: xmit/recv
- LDP Id: 1.1.1.1:0, Transport address: 1.1.1.1
- Hold time: 15 sec
- r2-eth1: xmit/recv
- LDP Id: 3.3.3.3:0, Transport address: 3.3.3.3
- Hold time: 15 sec
- LDP Id: 4.4.4.4:0, Transport address: 4.4.4.4
- Hold time: 15 sec
- Targeted Hellos:
+AF ID Type Source Holdtime
+ipv4 1.1.1.1 Link r2-eth0 15
+ipv4 3.3.3.3 Link r2-eth1 15
+ipv4 4.4.4.4 Link r2-eth1 15
--- /dev/null
+Local LDP Identifier: 2.2.2.2:0
+Discovery Sources:
+ Interfaces:
+ r2-eth0: xmit/recv
+ LDP Id: 1.1.1.1:0, Transport address: 1.1.1.1
+ Hold time: 15 sec
+ r2-eth1: xmit/recv
+ LDP Id: 3.3.3.3:0, Transport address: 3.3.3.3
+ Hold time: 15 sec
+ LDP Id: 4.4.4.4:0, Transport address: 4.4.4.4
+ Hold time: 15 sec
+ Targeted Hellos:
--- /dev/null
+AF Interface State Uptime Hello Timers ac
+ipv4 r2-eth0 ACTIVE xx:xx:xx 5/15 1
+ipv4 r2-eth1 ACTIVE xx:xx:xx 5/15 2
-Peer LDP Identifier: 1.1.1.1:0
- TCP connection: 2.2.2.2:xxx - 1.1.1.1:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r2-eth0
-
-Peer LDP Identifier: 3.3.3.3:0
- TCP connection: 2.2.2.2:xxx - 3.3.3.3:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r2-eth1
-
-Peer LDP Identifier: 4.4.4.4:0
- TCP connection: 2.2.2.2:xxx - 4.4.4.4:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r2-eth1
+AF ID State Remote Address Uptime
+ipv4 1.1.1.1 OPERATIONAL 1.1.1.1 xx:xx:xx
+ipv4 3.3.3.3 OPERATIONAL 3.3.3.3 xx:xx:xx
+ipv4 4.4.4.4 OPERATIONAL 4.4.4.4 xx:xx:xx
--- /dev/null
+Peer LDP Identifier: 1.1.1.1:0
+ TCP connection: 2.2.2.2:xxx - 1.1.1.1:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r2-eth0
+
+Peer LDP Identifier: 3.3.3.3:0
+ TCP connection: 2.2.2.2:xxx - 3.3.3.3:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r2-eth1
+
+Peer LDP Identifier: 4.4.4.4:0
+ TCP connection: 2.2.2.2:xxx - 4.4.4.4:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r2-eth1
--- /dev/null
+ Inbound Outbound
+ Label Type Nexthop Label
+-------- ------- --------------- --------
+ XX LDP 10.0.1.1 3
+ XX LDP 10.0.2.3 3
+ XX LDP 10.0.2.4 3
+ XX LDP 10.0.3.3 3
--- /dev/null
+xx proto zebra
+ nexthopvia inet 10.0.2.2 dev r3-eth0 weight 1
+ nexthopvia inet 10.0.3.2 dev r3-eth1 weight 1
+xx proto zebra
+ nexthopvia inet 10.0.2.2 dev r3-eth0 weight 1
+ nexthopvia inet 10.0.3.2 dev r3-eth1 weight 1
+xx proto zebra
+ nexthopvia inet 10.0.2.2 dev r3-eth0 weight 1
+ nexthopvia inet 10.0.3.2 dev r3-eth1 weight 1
+xx via inet 10.0.2.4 dev r3-eth0 proto zebra
--- /dev/null
+O>* 1.1.1.1/32 [110/20] via 10.0.2.2, r3-eth0 label xxx
+O>* 2.2.2.2/32 [110/10] via 10.0.2.2, r3-eth0
+O 3.3.3.3/32 [110/0] is directly connected, lo
+O>* 4.4.4.4/32 [110/10] via 10.0.2.4, r3-eth0
+O>* 10.0.1.0/24 [110/20] via 10.0.2.2, r3-eth0
+O 10.0.2.0/24 [110/10] is directly connected, r3-eth0
+O 10.0.3.0/24 [110/10] is directly connected, r3-eth1
-1.1.1.1/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 4.4.4.4 xxx
-2.2.2.2/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 4.4.4.4 xxx
-3.3.3.3/32
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 4.4.4.4 xxx
-4.4.4.4/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 4.4.4.4 imp-null
-10.0.1.0/24
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 4.4.4.4 xxx
-10.0.2.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 4.4.4.4 imp-null
-10.0.3.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 4.4.4.4 xxx
+AF Destination Nexthop Local Label Remote Label In Use
+ipv4 1.1.1.1/32 2.2.2.2 xxx xxx yes
+ipv4 1.1.1.1/32 4.4.4.4 xxx xxx no
+ipv4 2.2.2.2/32 2.2.2.2 xxx imp-null yes
+ipv4 2.2.2.2/32 4.4.4.4 xxx xxx no
+ipv4 3.3.3.3/32 2.2.2.2 imp-null xxx no
+ipv4 3.3.3.3/32 4.4.4.4 imp-null xxx no
+ipv4 4.4.4.4/32 2.2.2.2 xxx xxx no
+ipv4 4.4.4.4/32 4.4.4.4 xxx imp-null yes
+ipv4 10.0.1.0/24 2.2.2.2 xxx imp-null yes
+ipv4 10.0.1.0/24 4.4.4.4 xxx xxx no
+ipv4 10.0.2.0/24 2.2.2.2 imp-null imp-null no
+ipv4 10.0.2.0/24 4.4.4.4 imp-null imp-null no
+ipv4 10.0.3.0/24 2.2.2.2 imp-null imp-null no
+ipv4 10.0.3.0/24 4.4.4.4 imp-null xxx no
--- /dev/null
+1.1.1.1/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 4.4.4.4 xxx
+2.2.2.2/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 4.4.4.4 xxx
+3.3.3.3/32
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 4.4.4.4 xxx
+4.4.4.4/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 4.4.4.4 imp-null
+10.0.1.0/24
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 4.4.4.4 xxx
+10.0.2.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 4.4.4.4 imp-null
+10.0.3.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 4.4.4.4 xxx
-Local LDP Identifier: 3.3.3.3:0
-Discovery Sources:
- Interfaces:
- r3-eth0: xmit/recv
- LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
- Hold time: 15 sec
- LDP Id: 4.4.4.4:0, Transport address: 4.4.4.4
- Hold time: 15 sec
- Targeted Hellos:
+AF ID Type Source Holdtime
+ipv4 2.2.2.2 Link r3-eth0 15
+ipv4 4.4.4.4 Link r3-eth0 15
--- /dev/null
+Local LDP Identifier: 3.3.3.3:0
+Discovery Sources:
+ Interfaces:
+ r3-eth0: xmit/recv
+ LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
+ Hold time: 15 sec
+ LDP Id: 4.4.4.4:0, Transport address: 4.4.4.4
+ Hold time: 15 sec
+ Targeted Hellos:
--- /dev/null
+AF Interface State Uptime Hello Timers ac
+ipv4 r3-eth0 ACTIVE xx:xx:xx 5/15 2
-Peer LDP Identifier: 2.2.2.2:0
- TCP connection: 3.3.3.3:xxx - 2.2.2.2:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r3-eth0
-
-Peer LDP Identifier: 4.4.4.4:0
- TCP connection: 3.3.3.3:xxx - 4.4.4.4:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r3-eth0
+AF ID State Remote Address Uptime
+ipv4 2.2.2.2 OPERATIONAL 2.2.2.2 xx:xx:xx
+ipv4 4.4.4.4 OPERATIONAL 4.4.4.4 xx:xx:xx
--- /dev/null
+Peer LDP Identifier: 2.2.2.2:0
+ TCP connection: 3.3.3.3:xxx - 2.2.2.2:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r3-eth0
+
+Peer LDP Identifier: 4.4.4.4:0
+ TCP connection: 3.3.3.3:xxx - 4.4.4.4:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r3-eth0
--- /dev/null
+ Inbound Outbound
+ Label Type Nexthop Label
+-------- ------- --------------- --------
+ XX LDP 10.0.2.2 3
+ XX LDP 10.0.2.2 3
+ XX LDP 10.0.2.2 XX
+ XX LDP 10.0.2.4 3
+ XX LDP 10.0.3.2 3
+ XX LDP 10.0.3.2 3
+ XX LDP 10.0.3.2 XX
--- /dev/null
+xx proto zebra
+ nexthopvia inet 10.0.2.2 dev r4-eth0 weight 1
+ nexthopvia inet 10.0.2.3 dev r4-eth0 weight 1
+xx as to xx via inet 10.0.2.2 dev r4-eth0 proto zebra
+xx via inet 10.0.2.2 dev r4-eth0 proto zebra
+xx via inet 10.0.2.2 dev r4-eth0 proto zebra
+xx via inet 10.0.2.3 dev r4-eth0 proto zebra
--- /dev/null
+O>* 1.1.1.1/32 [110/20] via 10.0.2.2, r4-eth0 label xxx
+O>* 2.2.2.2/32 [110/10] via 10.0.2.2, r4-eth0
+O>* 3.3.3.3/32 [110/10] via 10.0.2.3, r4-eth0
+O 4.4.4.4/32 [110/0] is directly connected, lo
+O>* 10.0.1.0/24 [110/20] via 10.0.2.2, r4-eth0
+O 10.0.2.0/24 [110/10] is directly connected, r4-eth0
+O>* 10.0.3.0/24 [110/20] via 10.0.2.2, r4-eth0
-1.1.1.1/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 3.3.3.3 xxx
-2.2.2.2/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 3.3.3.3 xxx
-3.3.3.3/32
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 3.3.3.3 imp-null
-4.4.4.4/32
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 xxx
- 3.3.3.3 xxx
-10.0.1.0/24
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 3.3.3.3 xxx
-10.0.2.0/24
- Local binding: label: imp-null
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 3.3.3.3 imp-null
-10.0.3.0/24
- Local binding: label: xxx
- Remote bindings:
- Peer Label
- ----------------- ---------
- 2.2.2.2 imp-null
- 3.3.3.3 imp-null
+AF Destination Nexthop Local Label Remote Label In Use
+ipv4 1.1.1.1/32 2.2.2.2 xxx xxx yes
+ipv4 1.1.1.1/32 3.3.3.3 xxx xxx no
+ipv4 2.2.2.2/32 2.2.2.2 xxx imp-null yes
+ipv4 2.2.2.2/32 3.3.3.3 xxx xxx no
+ipv4 3.3.3.3/32 2.2.2.2 xxx xxx no
+ipv4 3.3.3.3/32 3.3.3.3 xxx imp-null yes
+ipv4 4.4.4.4/32 2.2.2.2 imp-null xxx no
+ipv4 4.4.4.4/32 3.3.3.3 imp-null xxx no
+ipv4 10.0.1.0/24 2.2.2.2 xxx imp-null yes
+ipv4 10.0.1.0/24 3.3.3.3 xxx xxx no
+ipv4 10.0.2.0/24 2.2.2.2 imp-null imp-null no
+ipv4 10.0.2.0/24 3.3.3.3 imp-null imp-null no
+ipv4 10.0.3.0/24 2.2.2.2 xxx imp-null yes
+ipv4 10.0.3.0/24 3.3.3.3 xxx imp-null yes
--- /dev/null
+1.1.1.1/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 3.3.3.3 xxx
+2.2.2.2/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 3.3.3.3 xxx
+3.3.3.3/32
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 3.3.3.3 imp-null
+4.4.4.4/32
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 xxx
+ 3.3.3.3 xxx
+10.0.1.0/24
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 3.3.3.3 xxx
+10.0.2.0/24
+ Local binding: label: imp-null
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 3.3.3.3 imp-null
+10.0.3.0/24
+ Local binding: label: xxx
+ Remote bindings:
+ Peer Label
+ ----------------- ---------
+ 2.2.2.2 imp-null
+ 3.3.3.3 imp-null
-Local LDP Identifier: 4.4.4.4:0
-Discovery Sources:
- Interfaces:
- r4-eth0: xmit/recv
- LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
- Hold time: 15 sec
- LDP Id: 3.3.3.3:0, Transport address: 3.3.3.3
- Hold time: 15 sec
- Targeted Hellos:
+AF ID Type Source Holdtime
+ipv4 2.2.2.2 Link r4-eth0 15
+ipv4 3.3.3.3 Link r4-eth0 15
--- /dev/null
+Local LDP Identifier: 4.4.4.4:0
+Discovery Sources:
+ Interfaces:
+ r4-eth0: xmit/recv
+ LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
+ Hold time: 15 sec
+ LDP Id: 3.3.3.3:0, Transport address: 3.3.3.3
+ Hold time: 15 sec
+ Targeted Hellos:
--- /dev/null
+AF Interface State Uptime Hello Timers ac
+ipv4 r4-eth0 ACTIVE xx:xx:xx 5/15 2
-Peer LDP Identifier: 2.2.2.2:0
- TCP connection: 4.4.4.4:xxx - 2.2.2.2:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r4-eth0
-
-Peer LDP Identifier: 3.3.3.3:0
- TCP connection: 4.4.4.4:xxx - 3.3.3.3:xxx
- Session Holdtime: 180 sec
- State: OPERATIONAL; Downstream-Unsolicited
- Up time: xx:xx:xx
- LDP Discovery Sources:
- IPv4:
- Interface: r4-eth0
+AF ID State Remote Address Uptime
+ipv4 2.2.2.2 OPERATIONAL 2.2.2.2 xx:xx:xx
+ipv4 3.3.3.3 OPERATIONAL 3.3.3.3 xx:xx:xx
--- /dev/null
+Peer LDP Identifier: 2.2.2.2:0
+ TCP connection: 4.4.4.4:xxx - 2.2.2.2:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r4-eth0
+
+Peer LDP Identifier: 3.3.3.3:0
+ TCP connection: 4.4.4.4:xxx - 3.3.3.3:xxx
+ Session Holdtime: 180 sec
+ State: OPERATIONAL; Downstream-Unsolicited
+ Up time: xx:xx:xx
+ LDP Discovery Sources:
+ IPv4:
+ Interface: r4-eth0
--- /dev/null
+ Inbound Outbound
+ Label Type Nexthop Label
+-------- ------- --------------- --------
+ XX LDP 10.0.2.2 3
+ XX LDP 10.0.2.2 3
+ XX LDP 10.0.2.2 3
+ XX LDP 10.0.2.2 XX
+ XX LDP 10.0.2.3 3
+ XX LDP 10.0.2.3 3
fatal_error = ""
+# Expected version of CLI Output - Appendix to filename
+# empty string = current, latest output (default)
+# "-1" ... "-NNN" previous versions (incrementing with each version)
+cli_version = ""
+
+
#####################################################
##
## Network Topology Definition
def test_router_running():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
fatal_error = net['r%s' % i].checkRouterRunning()
assert fatal_error == "", fatal_error
+ # Detect CLI Version
+ # At this time, there are only 2 possible outputs, so simple check
+ output = net['r1'].cmd('vtysh -c "show mpls ldp discovery" 2> /dev/null').rstrip()
+
+ # Check if old or new format of CLI Output. Default is to current format
+ #
+ # Old (v1) output looks like this:
+ # Local LDP Identifier: 1.1.1.1:0
+ # Discovery Sources:
+ # Interfaces:
+ # r1-eth0: xmit/recv
+ # LDP Id: 2.2.2.2:0, Transport address: 2.2.2.2
+ # Hold time: 15 sec
+ # Targeted Hellos:
+ #
+ # Current (v0) output looks like this:
+ # AF ID Type Source Holdtime
+ # ipv4 2.2.2.2 Link r1-eth0 15
+ pattern = re.compile("^Local LDP Identifier.*")
+ if pattern.match(output):
+ cli_version = "-1"
+
# For debugging after starting FRR/Quagga daemons, uncomment the next line
# CLI(net)
def test_mpls_interfaces():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_mpls_ldp_interface.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_mpls_ldp_interface.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()
def test_mpls_ldp_neighbor_establish():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
sys.stdout.flush()
# Look for any node not yet converged
for i in range(1, 5):
- established = net['r%s' % i].cmd('vtysh -c "show mpls ldp neighbor" 2> /dev/null')
+ established = net['r%s' % i].cmd('vtysh -c "show mpls ldp neighbor" 2> /dev/null').rstrip()
+ if cli_version != "-1":
+ # On current version, we need to make sure they all turn to OPERATIONAL on all lines
+ #
+ lines = ('\n'.join(established.splitlines()) + '\n').splitlines(1)
+ # Check all lines to be either table header (starting with ^AF or show OPERATIONAL)
+ header = r'^AF.*'
+ operational = r'^ip.*OPERATIONAL.*'
+ found_operational = 0
+ for j in range(1, len(lines)):
+ if (not re.search(header, lines[j])) and (not re.search(operational, lines[j])):
+ established = "" # Empty string shows NOT established
+ if re.search(operational, lines[j]):
+ found_operational += 1
+ if found_operational < 1:
+ # Need at least one operational neighbor
+ established = "" # Empty string shows NOT established
if not established:
print('Waiting for r%s' %i)
sys.stdout.flush()
def test_mpls_ldp_discovery():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_mpls_ldp_discovery.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_mpls_ldp_discovery.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
+ # Actual output from router
+ actual = net['r%s' % i].cmd('vtysh -c "show mpls ldp discovery" 2> /dev/null').rstrip()
+
# Read expected result from file
expected = open(refTableFile).read().rstrip()
# Fix newlines (make them all the same)
def test_mpls_ldp_neighbor():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_mpls_ldp_neighbor.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_mpls_ldp_neighbor.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()
# Actual output from router
actual = net['r%s' % i].cmd('vtysh -c "show mpls ldp neighbor" 2> /dev/null').rstrip()
- # Mask out Timer in Uptime
- actual = re.sub(r"Up time: [0-9][0-9]:[0-9][0-9]:[0-9][0-9]", "Up time: xx:xx:xx", actual)
- # Mask out Port numbers in TCP connection
- actual = re.sub(r"TCP connection: ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]):[0-9]+ - ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]):[0-9]+",
- r"TCP connection: \1:xxx - \2:xxx", actual)
+
+ # Mask out changing parts in output
+ if cli_version == "-1":
+ # Mask out Timer in Uptime
+ actual = re.sub(r"Up time: [0-9][0-9]:[0-9][0-9]:[0-9][0-9]", "Up time: xx:xx:xx", actual)
+ # Mask out Port numbers in TCP connection
+ actual = re.sub(r"TCP connection: ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]):[0-9]+ - ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]):[0-9]+",
+ r"TCP connection: \1:xxx - \2:xxx", actual)
+ else:
+ # Current Version
+ #
+ # Mask out Timer in Uptime
+ actual = re.sub(r"(ipv4 [0-9\.]+ +OPERATIONAL [0-9\.]+ +)[0-9][0-9]:[0-9][0-9]:[0-9][0-9]", r"\1xx:xx:xx", actual)
# Fix newlines (make them all the same)
actual = ('\n'.join(actual.splitlines()) + '\n').splitlines(1)
def test_mpls_ldp_binding():
global fatal_error
global net
+ global cli_version
# Skip this test for now until proper sorting of the output
# is implemented
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_mpls_ldp_binding.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_mpls_ldp_binding.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()
# Actual output from router
actual = net['r%s' % i].cmd('vtysh -c "show mpls ldp binding" 2> /dev/null').rstrip()
- # Mask out label
- actual = re.sub(r"label: [0-9]+", "label: xxx", actual)
- actual = re.sub(r"(\s+[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+[ ]+)[0-9]+", r"\1xxx", actual)
-
+
+ # Mask out changing parts in output
+ if cli_version == "-1":
+ # Mask out label
+ actual = re.sub(r"label: [0-9]+", "label: xxx", actual)
+ actual = re.sub(r"(\s+[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+[ ]+)[0-9]+", r"\1xxx", actual)
+ else:
+ # Current Version
+ #
+ # Mask out label
+ actual = re.sub(r"(ipv4 [0-9\./]+ +[0-9\.]+ +)[0-9][0-9] (.*)", r"\1xxx\2", actual)
+ actual = re.sub(r"(ipv4 [0-9\./]+ +[0-9\.]+ +[a-z\-]+ +)[0-9][0-9] (.*)", r"\1xxx\2", actual)
+
# Fix newlines (make them all the same)
actual = ('\n'.join(actual.splitlines()) + '\n').splitlines(1)
def test_zebra_ipv4_routingTable():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_ipv4_route.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_ipv4_route.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()
def test_mpls_table():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/show_mpls_table.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/show_mpls_table.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()
def test_linux_mpls_routes():
global fatal_error
global net
+ global cli_version
# Skip if previous fatal error condition is raised
if (fatal_error != ""):
print("******************************************\n")
failures = 0
for i in range(1, 5):
- refTableFile = '%s/r%s/ip_mpls_route.ref' % (thisDir, i)
+ refTableFile = '%s/r%s/ip_mpls_route.ref%s' % (thisDir, i, cli_version)
if os.path.isfile(refTableFile):
# Read expected result from file
expected = open(refTableFile).read().rstrip()