This article describes what happens when a labeled route is resolved over an interface, and details the configuration that is required for the route to be resolved successfully.
Observe the following simple topology, where we have the Open Shortest Path First (OSPF) and Internal Border Gateway Protocol (IBGP) protocols with labeled-unicast between the R1 and R2 lo0 address. Note that in this case R2 is advertising the route, 165.24.32.0/32, towards R1.
R1 -----------OSPF / BGP labeled-unicast---------R2
labroot@RR-R1> show configuration | display set set interfaces xe-5/0/0 unit 0 family inet address 11.11.11.1/30 set interfaces fxp0 unit 0 family inet address 10.219.34.216/26 set interfaces lo0 unit 0 family inet address 192.168.1.1/32 set routing-options static route 0.0.0.0/0 next-hop 10.219.34.193 set routing-options autonomous-system 100 set protocols bgp group ibgp type internal set protocols bgp group ibgp local-address 192.168.1.1 set protocols bgp group ibgp neighbor 192.168.1.2 family inet labeled-unicast set protocols ospf area 0.0.0.0 interface all labroot@R2> show configuration | display set set interfaces xe-5/0/1 unit 0 family inet address 11.11.11.2/30 set interfaces lo0 unit 1 family inet address 192.168.1.2/32 set protocols bgp group ibgp type internal set protocols bgp group ibgp local-address 192.168.1.2 set protocols bgp group ibgp export dir-bgp set protocols bgp group ibgp neighbor 192.168.1.1 family inet labeled-unicast set protocols ospf area 0.0.0.0 interface all set policy-options policy-statement dir-bgp term 1 from protocol static set policy-options policy-statement dir-bgp term 1 from route-filter 165.24.32.0/32 exact set policy-options policy-statement dir-bgp term 1 then accept set routing-options static route 165.24.32.0/32 discard set routing-options router-id 192.168.1.2 set routing-options autonomous-system 100 labroot@R2> show route advertising-protocol bgp 192.168.1.1 inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 165.24.32.0/32 Self 100 I labroot@R2> show route advertising-protocol bgp 192.168.1.1 extensive inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden) * 165.24.32.0/32 (1 entry, 1 announced) BGP group ibgp type Internal Route Label: 16 Nexthop: Self Flags: Nexthop Change Localpref: 100 AS path: [100] I Entropy label capable
As per default behavior, the BGP protocol next-hop for a labeled route is resolved through the inet.3 table, and if there is no route resolution in the inet.3 table, route resolution is attempted in the inet.0 table.
inet.3
inet.0
In the above topology, we have a route for protocol next-hop in the inet.0 table but the route 165.24.32.0/32 is in hidden state because the protocol next-hop 192.168.1.2 is pointing to an interface, xe-5/0/0.0, where family mpls has not been configured.
family mpls
The route becomes hidden due to a check that was added in PR1242589 . As per PR1242589 , an interface must have family mpls configured for the route to be successfully resolved. If family mpls is missing on an interface, it is expected that the route would go into a hidden state.
labroot@RR-R1# run show route receive-protocol bgp 192.168.1.2 hidden inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) Prefix Nexthop MED Lclpref AS path 165.24.32.0/32 192.168.1.2 100 I labroot@RR-R1# run show route receive-protocol bgp 192.168.1.2 hidden extensive inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) 165.24.32.0/32 (1 entry, 0 announced) Accepted Route Label: 16 Nexthop: 192.168.1.2 Localpref: 100 AS path: I Entropy label capable, next hop field matches route next hop labroot@RR-R1# run show route 165.24.32.0/32 hidden inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) + = Active Route, - = Last Active, * = Both 165.24.32.0/32 [BGP/170] 00:04:05, localpref 100, from 192.168.1.2 AS path: I, validation-state: unverified Unusable labroot@RR-R1# run show route 165.24.32.0/32 extensive inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) labroot@RR-R1# run show route 165.24.32.0/32 hidden extensive inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) 165.24.32.0/32 (1 entry, 0 announced) BGP Preference: 170/-101 Next hop type: Unusable, Next hop index: 0 Address: 0x2a36c64 Next-hop reference count: 2 State: <Hidden Int Ext> Local AS: 100 Peer AS: 100 Age: 4:14 Validation State: unverified Task: BGP_100.192.168.1.2+179 AS path: I Accepted Route Label: 16 Localpref: 100 Router ID: 192.168.1.2 Indirect next hops: 1 Protocol next hop: 192.168.1.2 Label operation: Push 16 Label TTL action: prop-ttl Load balance label: Label 16: None; Indirect next hop: 0x0 - INH Session ID: 0x0 Indirect path forwarding next hops: 0 Next hop type: Unusable labroot@RR-R1# run show route 192.168.1.2 inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) + = Active Route, - = Last Active, * = Both 192.168.1.2/32 *[OSPF/10] 01:07:52, metric 1 > to 11.11.11.2 via xe-5/0/0.0 labroot@RR-R1# run show route 192.168.1.2 extensive inet.0: 10 destinations, 10 routes (9 active, 0 holddown, 1 hidden) 192.168.1.2/32 (1 entry, 1 announced) State: <FlashAll> TSI: KRT in-kernel 192.168.1.2/32 -> {11.11.11.2} *OSPF Preference: 10 Next hop type: Router, Next hop index: 653 Address: 0x48df3b4 Next-hop reference count: 3 Next hop: 11.11.11.2 via xe-5/0/0.0, selected Session Id: 0x148 State: <Active Int> Local AS: 100 Age: 1:07:55 Metric: 1 Validation State: unverified Area: 0.0.0.0 Task: OSPF Announcement bits (3): 0-KRT 5-Resolve tree 1 6-LDP AS path: I labroot@RR-R1> show configuration interfaces xe-5/0/0 unit 0 { family inet { address 11.11.11.1/30; } }
As shown below, when family mpls is configured, the labeled route is resolvable.
labroot@RR-R1# set interfaces xe-5/0/0.0 family mpls labroot@RR-R1# commit commit complete labroot@RR-R1# run show route 165.24.32.0/32 inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 165.24.32.0/32 *[BGP/170] 00:00:44, localpref 100, from 192.168.1.2 AS path: I, validation-state: unverified > to 11.11.11.2 via xe-5/0/0.0, Push 16 labroot@RR-R1# run show route 165.24.32.0/32 extensive inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden) 165.24.32.0/32 (1 entry, 1 announced) TSI: KRT in-kernel 165.24.32.0/32 -> {indirect(1048574)} *BGP Preference: 170/-101 Next hop type: Indirect, Next hop index: 0 Address: 0x48df024 Next-hop reference count: 2 Source: 192.168.1.2 Next hop type: Router, Next hop index: 655 Next hop: 11.11.11.2 via xe-5/0/0.0, selected Label operation: Push 16 Label TTL action: prop-ttl Load balance label: Label 16: None; Label element ptr: 0x3e2de00 Label parent element ptr: 0x0 Label element references: 1 Label element child references: 0 Label element lsp id: 0 Session Id: 0x148 Protocol next hop: 192.168.1.2 Label operation: Push 16 Label TTL action: prop-ttl Load balance label: Label 16: None; Indirect next hop: 0x7ad8200 1048574 INH Session ID: 0x14d State: <Active Int Ext> Local AS: 100 Peer AS: 100 Age: 45 Metric2: 1 Validation State: unverified Task: BGP_100.192.168.1.2+179 Announcement bits (2): 0-KRT 5-Resolve tree 1 AS path: I Accepted Route Label: 16 Localpref: 100 Router ID: 192.168.1.2 Indirect next hops: 1 Protocol next hop: 192.168.1.2 Metric: 1 Label operation: Push 16 Label TTL action: prop-ttl Load balance label: Label 16: None; Indirect next hop: 0x7ad8200 1048574 INH Session ID: 0x14d Indirect path forwarding next hops: 1 Next hop type: Router Next hop: 11.11.11.2 via xe-5/0/0.0 Session Id: 0x148 192.168.1.2/32 Originating RIB: inet.0 Metric: 1 Node path count: 1 Forwarding nexthops: 1 Nexthop: 11.11.11.2 via xe-5/0/0.0 Session Id: 148