cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1305
Views
10
Helpful
8
Replies

MPLS question please help.

CCNPHopeful
Level 1
Level 1

Hello everyone.

 

I am racking my brain over something that hopefully has a very simple answer.

 

I have routers linked in a sequential chain with some networks at either end.

 

Originally they were using eigrp as the routing protocol and I configured MPLS.

 

Using wireshark I could verify that pings from workstations which traveled through these routers was MPLS encapsulated.

 

I then removed the EIGRP and configered BGP and with MPLS remaining the same.

 

Pings works. BGP neighbors are fine. MPLS neighbors are fine. But there isnt any info in the MPLS forwarding table and wireshark is not showing MPLS encapsulation anymore.

 

What am I doing wrong?

 

Many thanks

2 Accepted Solutions

Accepted Solutions

Ok cool thanks for sharing your config.

 

The problem is that LDP does assign labels to IGP learned prefixes, which makes sense because BGP is not a routing protocol and does not ensure reachability between devices, in fact it only shares prefixes without any notion of routing in between. Imagine if LDP would have assigned labels to any prefix, imagine the blackholes :)
More context: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/mp_ldp/configuration/xe-16-7/mp-ldp-xe-16-7-book/mp-ldp-alloc-filter.html

 

Hope ti helps.

 

Cheers, L.

View solution in original post

Here are my comments to your questions

My BGP neighbors are not discovered by static routing but via the connected interfaces. If my BGP neighbors were configured via loopbacks and static routes would MPLS tagging have been used by default?

LDP protocol assigns labels to all IGP learned prefixes, including the static routes. Cisco IOS does not assign labels to BGP learned prefixes, until you configure the "send-label" command.

Also one more question please if I may. On one router when configuring I enabled MPLS before I had configured the label range. I fixed this by rebooting the router afterwards and the labels I wanted were then in effect. Is there any command I can use to do this without rebooting?

Label range change requires a reboot.

View solution in original post

8 Replies 8

You do not use BGP as IGP. It's an application, not a routing protocol and typically needs an underlying IGP/static-route configured in the network for reachability purposes.

 

That said, it's hard to imagine how your network setup works just reading your description. For instance there's no such thing as MPLS adjacency, perhaps you meant LDP?

 

I'd be happy to tak a look iuf you can post a chunck of your config :)

 

Cheers, L. 

Hello thanks for your reply.

So are you saying MPLS doesnt usually or cant run over multiple BGP connections?

The BGP neighbors are linked via the connected ports. No static routing or loopbacks used. I'm assuming its the lack of static routing thats the issue here?

!
interface Serial1/2
ip address 172.20.40.4 255.255.255.0
mpls ip
serial restart-delay 0
!
router bgp 65404
bgp log-neighbor-changes
network 172.20.40.0 mask 255.255.255.0
network 192.168.20.0
neighbor 172.20.40.3 remote-as 65403
!
show mpls for
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
#show ip bgp summ
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.20.40.3 4 65403 293 293 7 0 0 04:22:46 5

#show mpls ldp neighbor
Peer LDP Ident: 172.20.40.3:0; Local LDP Ident 192.168.20.4:0
TCP connection: 172.20.40.3.646 - 192.168.20.4.38214
State: Oper; Msgs sent/rcvd: 306/306; Downstream
Up time: 04:22:54
LDP discovery sources:
Serial1/2, Src IP addr: 172.20.40.3
Addresses bound to peer LDP Ident:
172.20.30.3 172.20.40.3

It is not usual to have such setup as you are using.
Cisco IOS by default does not assign labels to IPv4 prefixes learned by BGP. To overcome this behavior you need to configure the following command under bgp process on your eBGP peers

!
router bgp 65404
neighbor 172.20.40.3 remote-as 65403
neighbor 172.20.40.3 send-label
!

I hope this helps,

P.

Ok cool thanks for sharing your config.

 

The problem is that LDP does assign labels to IGP learned prefixes, which makes sense because BGP is not a routing protocol and does not ensure reachability between devices, in fact it only shares prefixes without any notion of routing in between. Imagine if LDP would have assigned labels to any prefix, imagine the blackholes :)
More context: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/mp_ldp/configuration/xe-16-7/mp-ldp-xe-16-7-book/mp-ldp-alloc-filter.html

 

Hope ti helps.

 

Cheers, L.

Hi Guys,

 

Thank you very much for your responses.

 

The send-label command has made it work!

 

As you can tell this scenario was through a simulator but I asked the question because I wanted to know why it wasnt working.

 

At first I was somewhat puzzled by some of the responses on here regarding BGP not being a routing protocol. And I actually still am to an extent. If I recall correctly from my teaching a BGP network will only show up in the RIB if there is already a known path to it. This would be via a static or IGP route so I guess that somewhat explains it actually. 

 

My BGP neighbors are not discovered by static routing but but via the connected interfaces.

If my BGP neighbors were configured via loopbacks and static routes would MPLS tagging have been used by default?

 

Also one more question please if I may.  On one router when configuring I enabled MPLS before I had configured the label range. I fixed this by rebooting the router afterwards and the labels I wanted were then in effect. Is there any command I can use to do this without rebooting? I had already tried the clear ldp counters and bindings. I cant remember all the clear commands I used but none were effective.

 

Thank you

BGP is an application, it does leverage TCP as opposed to be a protocol itself like OSPF and EIGRP. The difference between BGP and tradional routing protocols is that BGP does not ensure actual reachbaility but only shares prefixes. A router recurses to underlying reachability information in RIB to resolve next-hop for BGP prefixes.

Although send-label worked, I would never ever do anything like you did, and by default as I said there's a reson why LDP does assign label to IGP learned prefixes only.

In regards to changing the labels range and making take effect without reboot I am not totally sure. It varies a lot between implementation and vendors I guess, it does not say you need a reboot here: https://www.ciscopress.com/articles/article.asp?p=680824&seqNum=3

I would expect you should reset LDP adjacency at least, assuming you have them all Up :)

Hope it helps.

There are MPLS based Data Center network designs, where only eBGP is used in the control plane. eBGP is also used to advertise labels and so it completely replaces the LDP. This simplifies the DC control plane, because IGP or LDP are not more required. Every multilayer switch in the DC spine-leaf architecture has its own BGP AS and communicates with other nodes using eBGP protocol. This approach is the base for overlay services, like VPLS in the DC.

Here are my comments to your questions

My BGP neighbors are not discovered by static routing but via the connected interfaces. If my BGP neighbors were configured via loopbacks and static routes would MPLS tagging have been used by default?

LDP protocol assigns labels to all IGP learned prefixes, including the static routes. Cisco IOS does not assign labels to BGP learned prefixes, until you configure the "send-label" command.

Also one more question please if I may. On one router when configuring I enabled MPLS before I had configured the label range. I fixed this by rebooting the router afterwards and the labels I wanted were then in effect. Is there any command I can use to do this without rebooting?

Label range change requires a reboot.