just now stepped into mpls world.
i am refering the book "MPLS Fundamentals" by Luc De Ghein.
In the implicit null portion the author states that " PHP is the default mode in cisco IOS.In case of ipv4 over mpls ,cisco ios only advertise the implicit null label for directly connected routes and summarized routes."
but some of them told me that it will send implicit null for all routes it learns.
Which is true or is there any hidden meaning in connected and summarized routes???
the implicit-null label has a special meaning, namely "Do remove the top label received and send the remaining packet". So in fact "implicit-null" means one label less is sent than the penultimate hop received.
Why would that make sense, and when?
General answer: because it saves the router sending the implicit-null label from an additional lookup.
Consider an IPv4 network and turn on MPLS f.e. by enabling LDP. What are labels choosen for? Networks or more general prefixes. Usually all IP packets going to a specific network will get the same label.
For directly connected networks, which label should be sent by the penultimate hop? Obviously an IP lookup is needed anyhow by the receiving router, so NO label should be sent. This is, what implicit-null is about. Very important though, not ALL labels are removed, only the top one will.
I understood the need for implicit null,but my question is ,is that php for directly connected and summarised routes only as mensioned in the book i refered ??Or is it it applied for all the routes learned by the PE??
No, as mentioned in your post, implicit-null is not advertised for all the routes.
Taking a hypothetical scenario, if all the PE's in the path advertise a implicit-null, then they would receive a PHP'd packet, and they wont be able to map to to any specific LSP. And hence the LSP would be broken.
As mentioned in the book you have referred or even in any other text describing the implicit function, the behaviour is to advertise the implicit null for directly connected or summarized routes to the upstream PE's.
Thank u swaroop
i mean "all routes " as all routes learned from CE,not all the PEs.i dont know if i am asking any blunder,but let me clear it,my doubt is ,if implicit null for only summarized or directly connected routes to that PE,then what if the routes learned from CE on PE is not summarized(but is specific route),will it not label it as implicit null???
If the question is about IPv4 routes learned in a VRF, then implicit-null will not be used at all - neither for PE directly connected nor for summary routes. The reason is that a PE needs a VPN label to identify the VRF context, because the IP destination address alone can not do it as you might have overlapping IP addresses in different VRFs. If you have a look at the labels in a VRF (show mpls forwarding-table vrf ...) you will see "Aggregate" for VRF connected or VRF summary routes. This denotes, that the PE will use the VPN label to select the proper VRF context and then has to perform an additional IP lookup to figure out, who should get the packet. If a label is for a VRF connected network the IP packet could be for the PE or the CE sharing this network. A VPN label alone in this case will not be enough, a double lookup is needed.
So implicit-null is used for summary routes or directly connected routes in the global IP routing table of a PE.
Hope this helps!
Hi Arun, as Martin has already specified above, implicit-null is not adv for VRF's.
You may also want to setup a small lab and study the behaviour.
sorry to jump into this, but I have a question for the gurus. In the case of penultimate P router connected to a PE which in turn is connected to a CE in a vrf.
Wouldn't the destination that the P router sees be the PEs loopback address which in case will advertise an implicit-null, so it will pop the outermost label, and send the bottom of the stack?
You are absolutely right about this. But it does not contradict what was written in this thread, if this is your concern.
The P router will receive an implicit-null from the PE through LDP for the loopback network, as this is as directly connected in the PEs global routing table. A P router will not receive any label for VPN routes from a PE. VPN labels are exchanged between PEs through MP-BGP and implicit-null cannot be used for this, as it would break VPN connectivity for the reasons described in my previous post.
Hope this helps!