Hello everyone, some guys asked me about the forwarding behavior on the PE router in the MPLS L3VPN scenario. In this post, we are going to introduce the forwarding behavior about the MPLS L3VPN from the PE router.
Commonly, we could get the forwarding information from the routing table, but the routing table leaves mass of forwarding information behind. If you want to get the detailed information, the FIB is recommended.
For example, in a MPLS L3VPN scenario as the topology dispalyed below, we could query the forwarding information on the PE router.
![]()
A MPLS L3VPN Option C tunnel is established between PE1 and PE2, RR1 and RR2 are configured as the route-reflector.
Let’s take the PE1 as an example.
1. get the vpn-instance forwarding information about the specific traffic to get the inner label and the BGP nexthop.
![]()
LspFwdFlag field indicates the traffic should be forwarded in the MPLS tunnel(MPLS L3VPN/L2VPN tunnel).
InLabel indicates the inner label of the packet(actually, if the InLable is not 0, the packets will be encapsulated with two MPLS labels at least).
After these information, we could learn that the packets will be encapsutlated with a MPLS label 1024, and hand over to 10.1.1.3
2. check the forwarding information(NOT vpn-instance forwarding information) about the BGP nexthop to get the outter label.
![]()
Label indicates the second label encapsulated(of course, the LspFwdFlag shouldn’t be 0, or the Label should be 0 too.)
From these information, the packet should be hand over to 23.1.1.3.
3. check the nexthop forwarding information
![]()
Check the forwarding information about 23.1.1.3, LspFwdFlag is 0, so, it should be forwarded to the nexthop 23.1.1.2(the local address) and out interface is G0/0/1.
By now, the packet is out of the PE1.



