In this post , we are going to examine what so called Seamless MPLS and the beinift from such a feature
We will start at the begining by doing usual MPLS L3VPN where R1 and R5 are MPLS PEs and all routers are running OSPF area 0 as their IGP
R1#show bgp vpnv4 unicast all
BGP table version is 4, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf MSSK)
*> 10.10.10.0/24 0.0.0.0 0 32768 i
*>i 10.10.20.0/24 5.5.5.5 0 100 0 i
PC1> ping 10.10.20.10
84 bytes from 10.10.20.10 icmp_seq=1 ttl=59 time=98.006 ms
84 bytes from 10.10.20.10 icmp_seq=2 ttl=59 time=104.006 ms
84 bytes from 10.10.20.10 icmp_seq=3 ttl=59 time=75.005 ms
84 bytes from 10.10.20.10 icmp_seq=4 ttl=59 time=142.008 ms
84 bytes from 10.10.20.10 icmp_seq=5 ttl=59 time=86.005 ms
After checking end to end connectivity and before we go into Seamless MPLS , let us check the MPLS forwarding table on one of the PEs and on the Ps for later comparsion:
R1#sh ip bgp vpnv4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 1:1 (MSSK)
10.10.10.0/24 0.0.0.0 23/nolabel(MSSK)
10.10.20.0/24 5.5.5.5 nolabel/23
R1#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 2.2.2.2/32 0 Fa1/0 192.168.12.2
17 Pop Label 192.168.23.0/24 0 Fa1/0 192.168.12.2
18 17 3.3.3.3/32 0 Fa1/0 192.168.12.2
19 18 192.168.34.0/24 0 Fa1/0 192.168.12.2
20 19 4.4.4.4/32 0 Fa1/0 192.168.12.2
21 20 192.168.45.0/24 0 Fa1/0 192.168.12.2
22 21 5.5.5.5/32 0 Fa1/0 192.168.12.2
23 No Label 10.10.10.0/24[V] 686 aggregate/MSSK
R3#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 2.2.2.2/32 0 Fa1/0 192.168.23.2
17 16 1.1.1.1/32 2173 Fa1/0 192.168.23.2
18 Pop Label 192.168.12.0/24 0 Fa1/0 192.168.23.2
19 Pop Label 4.4.4.4/32 0 Fa1/1 192.168.34.4
20 Pop Label 192.168.45.0/24 0 Fa1/1 192.168.34.4
21 21 5.5.5.5/32 2179 Fa1/1 192.168.34.4
Now , let us divide the network illustrated in the above diagram into layers as per common design :
R2 - R3 - R4 are within the core layer , R1 - R2 and R4 - R5 are distribution layer and PCs (CEs) connections to their respective PEs are access layer
Seamless router roughly speaking aims to allow our distribution to expand smoothly and conserve the MPLS forwarding table to contain only what assist in establishing end to end LSP
We are going to modify the IGP to be divided into three routing processes instead of one process , we will use OSPF PID 12 between R1 and R2 , we will use OSPF PID 1 within our core and we will use OSPF PID 45 between R4 and R5
Now , as soon we do this , we will loose our end to end LSP , which means we will not be able to maintain connectivity between our PEs and as a result the VPNv4 iBGP session will be IDLE
The idea of Seamless MPLS is to divide the provider network as we did in the previous and to establish IPv4 iBGP with label sening capability (which means we will rely on BGP to assign labels among the LSP)
So , the first thing we will do is to leak R2 Loopback address inside OSPF PID 12 and leak R4 Loopback address inside OSPF PID 45
R2:
ip prefix-list R2LOOP seq 5 permit 2.2.2.2/32
route-map MAP permit 10
match ip address prefix R2LOOP
router ospf 12
redistribute ospf 1 subnets route-map MAP
Note : the same to be done on R4
Next , we will establish IPv4 iBGP sessions between R1 and R2 , R2 and R4 , R4 and R5 with send-label capability
Note : we will consider both R2 and R4 as route reflectors for the respective address-family (IPv4) and we will have to modify the next-hop using the command next-hop-self all attached to neighbor statement under the address family (we need all as we are establishing iBGP relations)
R1:
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.2 remote-as 1
neighbor 2.2.2.2 update-source Loopback0
neighbor 5.5.5.5 remote-as 1
address-family ipv4
network 1.1.1.1 mask 255.255.255.255
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-label
exit-address-family
address-family vpnv4
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community both
exit-address-family
address-family ipv4 vrf MSSK
network 10.10.10.0 mask 255.255.255.0
exit-address-family
R2:
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source Loopback0
neighbor 4.4.4.4 remote-as 1
neighbor 4.4.4.4 update-source Loopback0
address-family ipv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 route-reflector-client
neighbor 1.1.1.1 next-hop-self all
neighbor 1.1.1.1 send-label
neighbor 4.4.4.4 activate
neighbor 4.4.4.4 route-reflector-client
neighbor 4.4.4.4 next-hop-self all
neighbor 4.4.4.4 send-label
exit-address-family
R4:
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 2.2.2.2 remote-as 1
neighbor 2.2.2.2 update-source Loopback0
neighbor 5.5.5.5 remote-as 1
neighbor 5.5.5.5 update-source Loopback0
address-family ipv4
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 route-reflector-client
neighbor 2.2.2.2 next-hop-self all
neighbor 2.2.2.2 send-label
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 route-reflector-client
neighbor 5.5.5.5 next-hop-self all
neighbor 5.5.5.5 send-label
exit-address-family
R5:
router bgp 1
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source Loopback0
neighbor 4.4.4.4 remote-as 1
neighbor 4.4.4.4 update-source Loopback0
address-family ipv4
network 5.5.5.5 mask 255.255.255.255
neighbor 4.4.4.4 activate
neighbor 4.4.4.4 send-label
exit-address-family
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community both
exit-address-family
address-family ipv4 vrf MSSK
network 10.10.20.0 mask 255.255.255.0
exit-address-family
PC2> ping 10.10.20.5
84 bytes from 10.10.20.5 icmp_seq=1 ttl=255 time=51.003 ms
84 bytes from 10.10.20.5 icmp_seq=2 ttl=255 time=55.003 ms
84 bytes from 10.10.20.5 icmp_seq=3 ttl=255 time=60.003 ms
84 bytes from 10.10.20.5 icmp_seq=4 ttl=255 time=79.005 ms
84 bytes from 10.10.20.5 icmp_seq=5 ttl=255 time=39.002 ms
R1#sh ip bgp vpnv4 all labels
Network Next Hop In label/Out label
Route Distinguisher: 1:1 (MSSK)
10.10.10.0/24 0.0.0.0 23/nolabel(MSSK)
10.10.20.0/24 5.5.5.5 nolabel/24
Now , let us have a look at the MPLS forwarding-table:
R1#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 2.2.2.2/32 0 Fa1/0 192.168.12.2
23 No Label 10.10.10.0/24[V] 0 aggregate/MSSK
R3#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 2.2.2.2/32 2925 Fa1/0 192.168.23.2
19 Pop Label 4.4.4.4/32 3017 Fa1/1 192.168.34.4
As can be seen , the difference in the number of entries is obvious , which means we conserved our resources and we gave ability to new PEs to connect and server customers smoothly
No comments:
Post a Comment