Difference between revisions of "VPP/MPLS FIB"
(→MPLS VPN) |
|||
Line 33: | Line 33: | ||
ip table add 2 | ip table add 2 | ||
− | Step 3; and add a route via the iBGP peer with the MPLS label advertised by that peer | + | Step 3; and add a route via the iBGP peer[s] with the MPLS label advertised by that peer |
ip route add table 2 10.10.10.0/24 via 10.0.0.2 next-hop-table 0 out-label 122 | ip route add table 2 10.10.10.0/24 via 10.0.0.2 next-hop-table 0 out-label 122 | ||
Line 42: | Line 42: | ||
ip route add table 2 10.10.20.0/24 via 172.16.0.1 next-hop-table 2 | ip route add table 2 10.10.20.0/24 via 172.16.0.1 next-hop-table 2 | ||
− | Step 5; depending on the label allocation scheme used add routes to the MPLS FIB to accept incoming labelled packets | + | Step 5; depending on the label allocation scheme used, add routes to the MPLS FIB to accept incoming labelled packets |
1 per-prefix label scheme - this command 'binds' the label to the same forwarding as the IP route | 1 per-prefix label scheme - this command 'binds' the label to the same forwarding as the IP route |
Revision as of 11:36, 17 January 2018
MPLS FIB
There is a tight coupling between IP and MPLS forwarding. MPLS forwarding equivalence classes (FECs) are often an IP prefix – that is to say that traffic matching a given IP prefix is routed into a MPLS label switch path (LSP). It is thus necessary to be able to associated a given prefix/route with an [out-going] MPLS label that will be imposed when the packet is forwarded. This is configured as:
ip route add 1.1.1.1/32 via 10.10.10.10 GigE0/0/0 out-labels 33
packets matching 1.1.1.1/32 will be forwarded out GigE0/0/0 and have MPLS label 33 imposed. More than one out-going label can be specified. Out-going MPLS labels can be applied to recursive and non-recursive routes, e.g;
ip route add 2.2.2.0/24 via 1.1.1.1 out-labels 34
packets matching 2.2.2.0/24 will thus have two MPLS labels imposed; 34 and 33. This is the realisation of, e,g, an MPLS BGP VPNv4. To associate/allocate a local-label for a prefix, and thus have packets to that local-label forwarded equivalently to the prefix do;
mpls local-label 99 2.2.2.0/24
In the API this action is called a ‘bind’. The router receiving the MPLS encapsulated packets needs to be programmed with actions associated which each label value – this is the role of the MPLS FIB. The MPLS FIB Is a table, whose key is the MPLS label value and end-of-stack (EOS) bit, which stores the action to perform on packets with matching encapsulation. Currently supported actions are:
1) Pop the label and perform an IPv[46] lookup in a specified table 2) Pop the label and forward via a specified next-hop (this is penultimate-hop-pop, PHP) 3) Swap the label and forward via a specified next-hop.
These can be programmed respectively by:
1) mpls local-label 33 ip4-lookup-in-table X 2) mpls local-label 33 via 10.10.10.10 GigE0/0/0 3) mpls local-label 33 via 10.10.10.10 GigE0/0/0 out-labels 66
the latter is an example of an MPLS cross connect. Any description of a next-hop, recursive, non-recursive, labelled, non-labelled, etc, that is valid for an IP prefix, is also valid for an MPLS local-label.
MPLS VPN
To configure an MPLS VPN for a PE the follow example can be used.
Step 1; Configure routes to the iBGP peers;
ip route add 10.0.0.1/32 via 192.168.1.2 Eth0 out-labels 33 ip route add 10.0.0.2/32 via 192.168.2.2 Eth0 out-labels 34
Step 2; Configure the customer 'VRF'
ip table add 2
Step 3; and add a route via the iBGP peer[s] with the MPLS label advertised by that peer
ip route add table 2 10.10.10.0/24 via 10.0.0.2 next-hop-table 0 out-label 122 ip route add table 2 10.10.10.0/24 via 10.0.0.1 next-hop-table 0 out-label 121
Step 4; add a route via the eBGP peer
ip route add table 2 10.10.20.0/24 via 172.16.0.1 next-hop-table 2
Step 5; depending on the label allocation scheme used, add routes to the MPLS FIB to accept incoming labelled packets
1 per-prefix label scheme - this command 'binds' the label to the same forwarding as the IP route mpls local-label 99 10.10.20.0/24
2 per-CE label scheme - this pops the incoming label. Append config for 'out-labels' if so desired. mpls local-label 99 via 172.16.0.1 next-hop-table 2
3 per-VRF label scheme mpls local-label 99 via ip4-lookup-in-table 2