MPLS and PHP to the LER

Hey guys,

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.

Thanks!

If I understand your question properly, you can add a “Local Binding” for the associated subnet and set it to implicit null.

e.g.

 /mpls local-bindings add dst-address=10.99.0.0/24 label=impl-null

This will force PHP for that subnet.

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.

You are looking at the wrong table, look at forwarding table, there you will see that labels are not pushed for those destinations.

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…
error.JPG

Bump, anyone know what to do to make PHP work in this scenario?