I come across two terms that is implicit-null and explicit-null and i got confused.
can anyone try to explain what exactly means by both of these terms.
implicit-null i understood --it is last hop advertise a label of 3 to indicate it as implicit-null
(edited as i misunderstood the question previously, i try my best to explain)
Consider the following topology where all the routers are running an IGP (eg OSPF)
10.x.x.x/24 --- Router A --- Router B -- Router C -- Router D -- Router E --- 11.x.x.x/24
Consider MPLS is enabled only between Router A and Router D. Link between Router D and E are not MPLS enabled. Router D learns about 11.x.x.x prefix by some protocol from Router E. But there is no way that Router D decides by itself that it is the egress LSR for this prefix as there are some possible reasons because MPLS could be disabled by manual error between Router D and E. Or Router E belongs to a customer. I think this is one of the reason that by default implicit nulls are not generated for prefixes in RIB learned apart from connected and aggregate, because the router knows it for sure that it is the egress point for connected and aggregate.
If someone has better explanation and any other reason, pls post.
Both implicit and explicit null labels are generated by last hop router to its neighbors.
Implicit null is by default which means penultimate router should only send IP packet thus it pops the label (popping the label known as PHP and this is done to reduce the load on last hop router). The one disadvantage in implicit null approach is if the network is configured for QoS based on MPLS EXP bits, then QoS is lost between penultimate router and last hop router.
In this case, we can make use of Explicit null which means penultimate hop router does not pop the label. It sends with label value of 0 but with other fileds including EXP bits intact. This way QoS treatment is preserved between penultimate router and last hop router. Explicit null should be configured manually in last hop router.