...
Verify that IP connectivity and routing are working properly
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R4] /ip/address> /tool traceroute 111.111.111.1 src-address=111.111.111.4 Columns: ADDRESS, LOSS, SENT, LAST, AVG, BEST, WORST, STD-DEV # ADDRESS LOSS SENT LAST AVG BEST WORST STD-DEV 1 111.13.0.1 0% 4 0.6ms 0.6 0.6 0.6 0 2 111.12.0.1 0% 4 0.5ms 0.6 0.5 0.6 0.1 3 111.111.111.1 0% 4 0.6ms 0.6 0.6 0.6 0 |
...
After LDP sessions are established, R2 should have two LDP neighbors:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /mpls/ldp/neighbor> print Flags: D, I - INACTIVE; O, T - THROTTLED; p - PASSIVE Columns: TRANSPORT, LOCAL-TRANSPORT, PEER, ADDRESSES # TRANSPORT LOCAL-TRANSPORT PEER ADDRESSES 0 DO 111.111.111.1 111.111.111.2 111.111.111.1:0 111.11.0.1 111.111.111.1 1 DOp 111.111.111.3 111.111.111.2 111.111.111.3:0 111.12.0.2 111.13.0.1 111.111.111.3 |
...
The local mappings table shows what label is assigned to what route and peers the router have distributed labels to.
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /mpls/ldp/local-mapping> print Flags: I - INACTIVE; D - DYNAMIC; E - EGRESS; G - GATEWAY; L - LOCAL Columns: VRF, DST-ADDRESS, LABEL, PEERS # VRF DST-ADDRESS LABEL PEERS 0 D G main 10.0.0.0/8 16 111.111.111.1:0 111.111.111.3:0 1 IDE L main 10.155.130.0/25 impl-null 111.111.111.1:0 111.111.111.3:0 2 IDE L main 111.11.0.0/24 impl-null 111.111.111.1:0 111.111.111.3:0 3 IDE L main 111.12.0.0/24 impl-null 111.111.111.1:0 111.111.111.3:0 4 IDE L main 111.111.111.2 impl-null 111.111.111.1:0 111.111.111.3:0 5 D G main 111.111.111.1 17 111.111.111.1:0 111.111.111.3:0 6 D G main 111.111.111.3 18 111.111.111.1:0 111.111.111.3:0 7 D G main 111.111.111.4 19 111.111.111.1:0 111.111.111.3:0 8 D G main 111.13.0.0/24 20 111.111.111.1:0 111.111.111.3:0 |
...
Remote mappings table on the other hand shows labels that are allocated for routes by neighboring LDP routers and advertised to this router:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /mpls/ldp/remote-mapping> print Flags: I - INACTIVE; D - DYNAMIC Columns: VRF, DST-ADDRESS, NEXTHOP, LABEL, PEER # VRF DST-ADDRESS NEXTHOP LABEL PEER 0 ID main 10.0.0.0/8 16 111.111.111.1:0 1 ID main 10.155.130.0/25 impl-null 111.111.111.1:0 2 ID main 111.11.0.0/24 impl-null 111.111.111.1:0 3 ID main 111.12.0.0/24 17 111.111.111.1:0 4 D main 111.111.111.1 111.11.0.1 impl-null 111.111.111.1:0 5 ID main 111.111.111.2 19 111.111.111.1:0 6 ID main 111.111.111.3 20 111.111.111.1:0 7 ID main 111.111.111.4 21 111.111.111.1:0 8 ID main 111.13.0.0/24 18 111.111.111.1:0 9 ID main 0.0.0.0/0 impl-null 111.111.111.3:0 10 ID main 111.111.111.2 16 111.111.111.3:0 11 ID main 111.111.111.1 18 111.111.111.3:0 12 D main 111.111.111.3 111.12.0.2 impl-null 111.111.111.3:0 13 D main 111.111.111.4 111.12.0.2 19 111.111.111.3:0 14 ID main 10.155.130.0/25 impl-null 111.111.111.3:0 15 ID main 111.11.0.0/24 17 111.111.111.3:0 16 ID main 111.12.0.0/24 impl-null 111.111.111.3:0 17 D main 111.13.0.0/24 111.12.0.2 impl-null 111.111.111.3:0 |
...
The remote mapping table will have active mappings only for the destinations that have direct next-hop, for example, let's take a closer look at 111.111.111.4 mappings. The routing table indicates that the network 111.111.111.4 is reachable via 111.12.0.2 (R3):
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /ip/route> print where dst-address=111.111.111.4 Flags: D - DYNAMIC; A - ACTIVE; o, y - COPY Columns: DST-ADDRESS, GATEWAY, DISTANCE DST-ADDRESS GATEWAY DISTANCE DAo 111.111.111.4/32 111.12.0.2%ether3 110 |
And if we look again at the remote mapping table, the only active mapping is the one received from R3 with assigned label 19. This implies that when R2 when routing traffic to this network, will impose label 19.
Code Block | ||||
---|---|---|---|---|
| ||||
17 D main 111.111.111.4 111.12.0.2 19 111.111.111.3:0 |
...
Label switching rules can be seen in the forwarding table:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /mpls/forwarding-table> print Flags: L, V - VPLS Columns: LABEL, VRF, PREFIX, NEXTHOPS # LABEL VRF PREFIX NEXTHOPS 0 L 16 main 10.0.0.0/8 { nh=10.155.130.1; interface=ether1 } 1 L 18 main 111.111.111.3 { label=impl-null; nh=111.12.0.2; interface=ether3 } 2 L 19 main 111.111.111.4 { label=19; nh=111.12.0.2; interface=ether3 } 3 L 20 main 111.13.0.0/24 { label=impl-null; nh=111.12.0.2; interface=ether3 } 4 L 17 main 111.111.111.1 { label=impl-null; nh=111.11.0.1; interface=ether2 } |
...
Now if we look at the forwarding table of R3:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R3] /mpls/forwarding-table> print Flags: L, V - VPLS Columns: LABEL, VRF, PREFIX, NEXTHOPS # LA VRF PREFIX NEXTHOPS 0 L 19 main 111.111.111.4 { label=impl-null; nh=111.13.0.2; interface=ether3 } 1 L 17 main 111.11.0.0/24 { label=impl-null; nh=111.12.0.1; interface=ether2 } 2 L 16 main 111.111.111.2 { label=impl-null; nh=111.12.0.1; interface=ether2 } 3 L 18 main 111.111.111.1 { label=17; nh=111.12.0.1; interface=ether2 } |
...
For example, the traceroute from R4 to R1 looks like this:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R1] /mpls/ldp/neighbor> /tool traceroute 111.111.111.4 src-address=111.111.111.1 Columns: ADDRESS, LOSS, SENT, LAST, AVG, BEST, WORST, STD-DEV, STATUS # ADDRESS LOSS SENT LAST AVG BEST WORST STD-DEV STATUS 1 111.11.0.2 0% 2 0.7ms 0.7 0.7 0.7 0 <MPLS:L=19,E=0> 2 111.12.0.2 0% 2 0.4ms 0.4 0.4 0.4 0 <MPLS:L=19,E=0> 3 111.111.111.4 0% 2 0.5ms 0.5 0.5 0.5 0 |
...
So on R2, for example, we get:
Code Block | ||||
---|---|---|---|---|
| ||||
[admin@R2] /mpls/ldp/remote-mapping> print Flags: I - INACTIVE; D - DYNAMIC Columns: VRF, DST-ADDRESS, NEXTHOP, LABEL, PEER # VRF DST-ADDRESS NEXTHOP LABEL PEER 0 ID main 111.111.111.2 17 111.111.111.3:0 1 ID main 111.111.111.1 16 111.111.111.3:0 2 D main 111.111.111.3 111.12.0.2 impl-null 111.111.111.3:0 3 D main 111.111.111.4 111.12.0.2 18 111.111.111.3:0 4 ID main 111.111.111.2 16 111.111.111.1:0 5 D main 111.111.111.1 111.11.0.1 impl-null 111.111.111.1:0 6 ID main 111.111.111.3 17 111.111.111.1:0 7 ID main 111.111.111.4 18 111.111.111.1:0 |
...
Property | Description |
---|---|
active-connect (yes | no) | Indicates that active role have been selected and the router is trying to establish the session. |
addresses (list of IPs) | List of discovered addresses on the neighbor |
inactive (yes | no) | Whether binding is active and can be selected as a candidate for forwarding. |
dynamic (yes | no) | Whether entry was dynamically added |
local-transport (IP) | Selected local transport address. |
on-demand (yes | no) | Downstream On Demand label distribution |
operational (yes | no) | Indicates whether the peer is operational. |
passive (yes | no) | Indicates whether the peer is in a passive role. |
passive-wait (yes | no) | Indicates whether the peer is in a passive role and currently is waiting for the session to be initialized. |
path-vector-limit (integer) | |
peer (IP:integer) | LSR-ID and label space of the neighbor |
sending-targeted-hello(yes | no) | Whether targeted hellos are being sent to the neighbor. |
throttled (yes | no) | Indicates whether session is in throttled state. Session is throttled after initialization failure, max throttle time 120s. |
used-afi (yes | no) | Used transport AFI |
vpls (yes | no) | Whether neighbor is used by VPLS tunnel |
...
Property | Description |
---|---|
accept (yes | no; Default: no) | Whether to accept label bindings from the neighbors for the specified prefix. |
comments (string; Default: ) | Short description of the entry |
disabled (yes | no; Default: no) | |
neighbor(string; Default: ) | Neighbor to which this filter applies. |
prefix (IP/mask; Default: ) | Prefix to match. |
vrf (name; Default: ) |
...
Property | Description |
---|---|
advertise (yes | no; Default: no ) | Whether to advertise label bindings to the neighbors for the specified prefix. |
comments (string; Default: ) | Short description of the entry |
disabled (yes | no; Default: no) | |
neighbor(string; Default: ) | Neighbor to which this filter applies. |
prefix (IP/mask; Default: ) | Prefix to match. |
vrf (name; Default: ) |
...