MPLS NOTES\\ TODO ---- MPLS SEGMENT ROUTING NOTES (SRv6) \\ think of SRv6–using IPv6 addresses as segment IDs, and breaking the least significant /64 to create microsids for service differentiation \\ Is mostly MPLS but: * **labels** are distributed/encapsulated **in the IGP** * labels are **globally unique** (not reused) so better control of the paths. Options: * Control plane: ipv4 / ipv6 * Data plane: **mpls or native ipv6** ---- MPLS FOR ARISTA:\\ Review limitations [[https://www.arista.com/en/um-eos/eos-bgpmpls-l3-vpn#xx1221179|here]] specially regarding **next-hop-self in RR topologies**. !! PE CONFIGURATION ip routing vrf BLUE ip routing vrf RED vrf instance RED vrf instance BLUE interface Ethernet4 description pe1 -> c12 mac-address 52:dc:ca:fe:03:04 no switchport vrf BLUE ip address 10.1.12.1/24 ! router bgp 65000 router-id 10.0.0.3 bgp advertise-inactive neighbor 10.0.0.1 remote-as 65000 neighbor 10.0.0.1 next-hop-self neighbor 10.0.0.1 update-source Loopback0 neighbor 10.0.0.1 description rr1 neighbor 10.0.0.1 send-community standard extended ! address-family ipv4 neighbor 10.0.0.1 activate ! address-family vpn-ipv4 neighbor 10.0.0.1 activate neighbor 10.0.0.1 encapsulation mpls next-hop-self source-interface Loopback0 ! vrf BLUE rd 1.1.1.1:200 route-target import vpn-ipv4 200:0 route-target export vpn-ipv4 200:0 redistribute connected redistribute static redistribute ospf ! vrf RED rd 1.1.1.1:100 route-target import vpn-ipv4 100:0 route-target export vpn-ipv4 100:0 redistribute connected redistribute static redistribute ospf !! P CONFIGURATION configure terminal ! note we don't need to enable ldp in each interface individually interface Loopback0 mpls ip mpls ldp router-id interface Loopback0 no shutdown !! ROUTE REFLECTOR: router bgp 65000 router-id 10.0.0.1 bgp cluster-id 10.0.0.1 bgp route-reflector preserve-attributes bgp advertise-inactive neighbor 10.0.0.2 remote-as 65000 ! neighbor 10.0.0.2 next-hop-self neighbor 10.0.0.2 update-source Loopback0 neighbor 10.0.0.2 description rr2 neighbor 10.0.0.2 send-community standard extended ! address-family ipv4 neighbor 10.0.0.2 activate ! address-family vpn-ipv4 neighbor 10.0.0.3 activate neighbor 10.0.0.3 encapsulation mpls next-hop-self source-interface Loopback0 ---- __IMPLICIT/EXPLICIT NULL__ \\ * This null label is always 'sent' by the PE as signalling to the PHP. * implicit null is no signalling and letting the PHP do its thing and send the mpls label as an IP packet (no labels) towards the PE * explicit null is the PHP sending the mpls packet with the last label as a 'dummy' one (value 0(2 in IPv6)). The advantage is that EXP and QoS values are preserved. ---- SHOW COMMANDS: \\ show ip bgp vrf red show ip route vrf red | begin Gateway show mpls lfib route # arista only labels for lo. You'll only see transport labels here show bgp vpn-ipv4 172.16.0.0/24 detail # this is for the vpnv4 of the customer prefix 172 ! pe1#show bgp vpn-ipv4 172.16.2.0/24 detail BGP routing table information for VRF default Router identifier 10.0.0.1, local AS number 65000 BGP routing table entry for IPv4 prefix 172.16.2.0/24, Route Distinguisher: 65000:2 Paths: 1 available Local 10.0.0.2 from 10.0.0.2 (10.0.0.2) Origin IGP, metric -, localpref 100, weight 0, valid, internal, best Extended Community: Route-Target-AS:65000:2 Remote MPLS label: 100001 <<< the vpnv4 label for 172.16.2.0/24 ! traceroute mpls ldp ip 10.0.0.1/32 # this shows the swapping of the transport label show mpls ldp neighbord # luk lesson 2.3 show mpls ldp bindings # luk lesson 2.3