Acest post are mai mult valoare teoretica decat practica, totusi trebuie sa raminem cu ideea ca pt. configurarea acestei noi metode de comutare a pachetelor avem nevoie de routere, protocoale de rutare IGP, de BGP (in urmatorul post) si de ceva in plus pe care incerc sa il evidentiez aici.
Ideea consta in asocierea unei etichete MPLS, de exemplu, cu o adr IP si anuntarea acestei etichete printr-un prot. de rutare destinat acestei sarcini, LDP (Label Distribuition Protocol).
Totodata si adr. IP este anuntata printr-un prot. de rutare IGP. Corespondenta intre eticheta MPLS si adresa IP este importanta doar la intrarea pachetului IP in routerele PE, apoi conteaza numai corespondenta intre etichete.
Presupunem ca un pachet IP are sursa 192.168.2.x si destinatia 192.168.1.x (cele doua retele, in acest caz, sunt direct conectate de router PE2 si respectiv PE1). Routerul PE2 incapsuleaza pachetul IP intr-un frame MPLS (prin adaugarea unui header MPLS) si apoi intr-un frame corespunzator prot. Layer 2 OSI de pe interfata de iesire (in cazul meu HDLC). In figura de mai jos observa ca intre headerul HDLC si cel IP se gaseste headerul MPLS, in care valoarea etichetei este 18 si TTL=255.
Acum mesajul a ajuns in routerul P2 si are eticheta 18. Acest router nu se mai uita in tabela si de rutare, ci numai in LFIB. Se observa ca eticheta 18 (local tag) trebuie inlocuita cu 17 (outgoing tag) si frame-ul MPLS trebuie trimis pe interfara Se 1/1. In plus, TTL se decrementeaza cu 1.
Astfel, din router P2 pleaca mesajul in forma de mai jos (vezi eticheta si TTL).
Acum mesajul a ajuns in routerul P1 si are eticheta 17. Nici acest router nu se uita in tabela de rutare, ci numai in LFIB. De aceasta data etichetei 17 (local tag) ii corespunde o eticheta speciala (valoarea numerica 3) care inseamna 'imposition-null' si care determina routerul P1 sa elimine headerul MPLS (pop tag) si sa trimita spre PE1 pachetul IP asa cum l-a primit initial routerul PE2, cu exceptia TTL (acum 253).
Mesajul trimis de catre P1 nu mai contine headerul MPLS, iar TTL este 253.
Dupa ce mesajul a ajuns in PE1, doar acest router se mai uita in tabela de rutare proprie pt a determina intf. de iesire a pachetului.
Ca sa se intample toate acestea, trebuie sa configuram interfetele de leg. dintre routere cu comanda mpls ip si un prot de rutare IGP (OSPF, ISIS, EIGRP) cu timp de convergenta mic. Trebuie sa analizati daca este necesar sa mariti si MTU, un header MPLS are exact 20+3+1+8=32 biti (eticheta MPLS + Experimental_bits + Stack_bit + MPLS_TTL).
Experimental_bits -3 biti care se folosesc pt marcarea frame-urilor in vederea implementarii QoS.
Stack bit - bitul care indica daca acest header este ultimul din stiva (S=1) sau mai urmeaza si alte headere MPLS (S=0).
TTL_MPLS - campul de 8 biti care previne intrarea in bucla a unui frame MPLS.
Etichetele MPLS ajung de la un router la altul prin prot de rutare special, standard, denumit LDP - Label Distribution Protocol, care se activeaza automat dupa ce se configureaza routerele cum am precizat anterior.
Se formeaza in mod automat adiacente LDP intre routere; mesajele LDP sunt incapsulate in TCP/646.
De exemplu configuratia routerului P1 este:
interface Loopback1
ip address 1.1.1.1 255.255.255.255
!
interface Serial1/0
description link_2_PE1
ip address 172.16.1.1 255.255.255.252
ip router isis IGP
mpls ip
!
interface Serial1/1
description link_2_P2
ip address 172.16.0.1 255.255.255.252
ip router isis IGP
mpls ip
!
router isis IGP
net 49.0001.0010.0100.1001.00
is-type level-2-only
log-adjacency-changes
redistribute connected
Adiacentele LDP pe care le formeaza cu routerele PE1 si P2:
P1#sh mpls ldp neighbor
Peer LDP Ident: 2.2.2.2:0; Local LDP Ident 1.1.1.1:0
TCP connection: 2.2.2.2.34835 - 1.1.1.1.646
State: Oper; Msgs sent/rcvd: 13/11; Downstream
Up time: 00:00:52
LDP discovery sources:
Serial1/1, Src IP addr: 172.16.0.2
Addresses bound to peer LDP Ident:
2.2.2.2 172.16.0.2
Peer LDP Ident: 192.168.10.1:0; Local LDP Ident 1.1.1.1:0
TCP connection: 192.168.10.1.31261 - 1.1.1.1.646
State: Oper; Msgs sent/rcvd: 10/9; Downstream
Up time: 00:00:41
LDP discovery sources:
Serial1/0, Src IP addr: 172.16.1.2
Addresses bound to peer LDP Ident:
172.16.1.2 10.0.0.1 192.168.10.1
Tabela de rutare:
P1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback1
2.0.0.0/32 is subnetted, 1 subnets
i L2 2.2.2.2 [115/10] via 172.16.0.2, Serial1/1
i L2 192.168.10.0/24 [115/10] via 172.16.1.2, Serial1/0
172.16.0.0/30 is subnetted, 3 subnets
i L2 172.16.20.0 [115/20] via 172.16.0.2, Serial1/1
C 172.16.0.0 is directly connected, Serial1/1
C 172.16.1.0 is directly connected, Serial1/0
i L2 192.168.20.0/24 [115/20] via 172.16.0.2, Serial1/1
10.0.0.0/32 is subnetted, 2 subnets
i L2 10.0.0.2 [115/20] via 172.16.0.2, Serial1/1
i L2 10.0.0.1 [115/10] via 172.16.1.2, Serial1/0
Tabela LFIB:
P1#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 0 Se1/1 point2point
17 Pop tag 172.16.20.0/30 0 Se1/1 point2point
18 Pop tag 10.0.0.1/32 0 Se1/0 point2point
19 Pop tag 192.168.10.0/24 0 Se1/0 point2point
20 20 10.0.0.2/32 0 Se1/1 point2point
21 21 192.168.20.0/24 0 Se1/1 point2point
Urmatorul post va fi despre VPN MPLS Layer 3, practic vom vedea frame-uri MPLS cu doua headere MPLS si un singur header IP, adrese VPNv4, VRF-uri si cum putem configura intraneturile a doi clienti care au acelasi plan de adresare privat, fara ca routerele sa fie deranjate ca pe doua interfete au aceeasi adresa IP.