LDP Inbound Label Advertisement Filtering

Load isis.cfg

#IOS-XE
config replace flash:isis.cfg

#IOS-XR
configure
load bootflash:isis.cfg
commit replace
y

  • Configure LDP using LDP autoconfig under ISIS

  • Configure inbound label filtering on R1 and XR2 to filter out label bindings received from their LDP neighbors for all transit prefixes

Answer

#R1-6
router isis
 mpls ldp autoconfig

#R1
ip access-list standard LDP_FILTER_IN
 deny 10.0.0.0 0.255.255.255
 permit host 20.20.20.20
 deny 20.0.0.0 0.255.255.255
 permit any
!
mpls ldp neighbor 2.2.2.2 labels accept LDP_FILTER_IN

#XR1, XR2
router isis 1
 add ipv4
  mpls ldp auto-config
!
mpls ldp

#XR2
ipv4 access-list LDP_FILTER_IN
 10 deny ipv4 10.0.0.0/8 any
 20 permit ipv4 host 20.20.20.20 any
 30 deny ipv4 20.0.0.0/8 any
 40 permit ipv4 any any
!
mpls ldp
 address-family ipv4
  label
   remote
    accept
     from 19.19.19.19:0 for LDP_FILTER_IN

Explanation

Inbound LDP advertisement filtering is much easier to configure than outbound advertisement filtering. In both IOS-XE and IOS-XR, we must apply an ACL on a per-neighbor basis to filter incoming LDP bindings.

On IOS-XE, we use the following command:

#IOS-XE
mpls ldp neighbor RID labels accept ACL

On IOS-XR, we use the following command:

#IOS-XR
mpls ldp
 address-family ipv4
  label
   remote
    accept
     from RID:0 for ACL

Verification

On R1, since R2 is the only LDP peer, we can look at the LDP bindings summary for a quick check that the inbound filtering is working. Before implementing the filter, we see that we have one remote binding for every prefix:

After implementing the filter, we should only see a remote binding for the /32 loopbacks, due to our standard ACL we are applying for R2:

Likewise, on XR2, we can use the same command. First we verify that we are receiving one remote label (from XR1) for every prefix:

Next, we apply the inbound filter and verify that XR2 has discarded XR1’s bindings for non-loopback prefixes:

Last updated