I have enabled MPLS on one leaf of our network. Rest of the network is all routed, but not mpls enabled.
Only this „leaf“ of the network is mpls.
Looking at the LER, it has one interface with LDP enabled, and another interface, which is not LDP enabled:
/interface ethernet print where running
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP MASTER-PORT SWITCH
0 R eth1 - b1.wlan1.local 1500 D4:CA:6D:xx:xx:xx enabled none switch1
1 R eth3 - backbone.local 1500 D4:CA:6D:xx:xx:xx enabled none switch1
/mpls interface
set [ find default=yes ] mpls-mtu=1512
/mpls ldp
set enabled=yes lsr-id=$LoopbackIP transport-address=$LoopbackIP
/mpls ldp interface
add interface="eth1 - b1.wlan1.local"
Not lets look at the routes and local-bindings:
Now for my problem:
As you can see, the directly connected routes are correctly label as impl-null. The problem is that the routes that are not MPLS enabled (on the backbone interface) are still getting labeled with labels.
This causes the router after the LER to not perform PHP.
How can I configure the LER to correctly label the routes which are not directly connected, but on a non-MPLS interface, to be label as impl-null?
This would make PHP work correctly, same as it does for directly connected routes.
However, come to think of it, if you dont have the interface as one of your MPLS interfaces it should be matching the 0.0.0.0/0 rule which is impl-null…
If you DONT have the affected interfaces configured as LDP interfaces, and the router is still pushing labels out this interface than that sounds like a bug you should let support@mikrotik.com know about.
The problem is not that the labels are getting pushed on that interface, they are poped properly on the LER.
The problem is that the LER’s neighbor is not performing PHP, since there is a local binding for that subnet on the LER, the LER receives MPLS labeled frames for that subnet, which it should not under PHP.
The subnets on the not MPLS enabled interface should have an impl-null label in the local bindings for PHP to work.
That interface is not a MPLS interface, but a local bindings for routes which go out that interface are still created. That is what makes PHP not work to the LER.
I guess I could manually make impl-null bindings, but that is a lot of manual work for all the routes… This should be done automatically.
Ok, so when trying to add impl-null binding manually for those routes, I get a lovely error.
I can add exactly one manual binding for impl-null, anything else produces this error.
This is obviously wrong, since I can have many impl-null labeled routes on a single router…