Nəzəri əsaslar və memarlıq
MPLS shim başlığı (RFC 3032) L2 və L3 başlıqları arasında yerləşən 32-bitlik sahədir. Dörd sahədən ibarətdir: 20-bitlik Label (0-15 rezerv olunub), 3-bitlik Traffic Class (TC/EXP QoS üçün), 1-bitlik Bottom of Stack bayrağı (S: ən daxili etiketdə 1, xarici etiketlərdə 0 olur) və 8-bitlik TTL (hər LSR-də 1 vahid azaldılır). Hər etiket steki 4 bayt artırır. Müasir şəbəkələrdə etiket sayı 3-5-ə çatır (Nəqliyyat + VPN xidmət + FRR bypass = 16-20 bayt). Bu, MPLS MTU problemini yaradır: interfeys MTU 1500 bayt qaldıqda, 1500 baytlıq IP paketi və 8 bayt etiket 1508 bayt edir və MTU-nu aşır: DF=1 olduqda LSR paketi atır və ICMP Fragmentation Needed qaytarır (LSP boyunca, RFC 3032), L2 çərçivə həddi aşıldıqda isə paket səssizcə itir. Tipik əlamət: ping və BGP OPEN işləyir, böyük paketlər isə donur. Buna görə nüvə interfeyslərində MTU ehtiyatla artırılır (adətən 1530-1548 bayt, Jumbo frames).
Etiket stekinin qeydi (LSE): L2 ilə L3 arasında 32 bit
Etiket stekinin bir qeydi (Label Stack Entry, RFC 3032) dəqiq 4 bayt tutur və kanal səviyyəsi başlığı ilə IP başlığı arasında yerləşir. Buna görə MPLS-i bəzən "2.5-ci səviyyə" adlandırırlar. Ethernet-də kadr tipi dəyişir: IPv4 üçün 0x0800 əvəzinə unicast üçün 0x8847, multicast üçün 0x8848. Sahələr yüksək bitdən başlayaraq belədir:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label (20) | TC (3)|S| TTL (8) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
bits 0-19: Label | bits 20-22: TC | bit 23: S | bits 24-31: TTLEtiket 20 bitdir, yəni 1 048 576 qiymət, onlardan 16-sı (0-15) rezerv olunub, dinamik və statik bölgü üçün 1 048 560 qalır. TC sahəsi (Traffic Class, 3 bit, 8 sinif) əvvəllər EXP adlanırdı; RFC 5462 (2009) onu yenidən adlandırdı, çünki o çoxdan eksperimentlər üçün deyil, DiffServ üçün istifadə olunur. S biti (Bottom of Stack) yalnız stekin son qeydində 1-dir; LSR həmişə yalnız yuxarı qeydə baxır, S isə onu çıxardıqdan sonra növbəti elementin başqa etiket yox, faydalı yük (IP, Ethernet və s.) olduğunu anlamağa imkan verir. TTL 8 bitdir və IP TTL ilə eyni məqsədə xidmət edir: dövrələrdən qorunma və traceroute-un əsası.
Rezerv olunmuş 0-15 etiketləri
Bu qiymətlər LDP/RSVP/BGP ilə adi etiket kimi paylanmamalıdır. Onların bir hissəsi hər gün praktikada işlədilir, digərləri demək olar ki, heç vaxt.
| Etiket | Ad | Təyinatı |
|---|---|---|
| 0 | IPv4 Explicit Null | Etiketi çıxarıb paketi IPv4 kimi emal etmək; PHP söndürüldükdə TC-ni egress-ə qədər saxlayır. |
| 1 | Router Alert | Paketi yerli LSR-in control plane-inə təhvil vermək; adi yönləndirmə etiketi kimi seçilmir. |
| 2 | IPv6 Explicit Null | 0 ilə eynidir, lakin IPv6 üçün. |
| 3 | Implicit Null | Başlıqda heç vaxt görünmür: egress onu LDP/RSVP ilə elan edir ki, sondan əvvəlki hop etiketi çıxarsın (PHP). |
| 7 | ELI (Entropy Label Indicator, RFC 6790) | Stekin növbəti qeydi yük balanslaşdırması üçün entropy etiketidir; ELI-nin TTL-i adətən 0 olur. |
| 13 | GAL (RFC 5586) | Generic Associated Channel Label, MPLS-TP OAM tərəfindən istifadə olunur. |
| 14 | OAM Alert (RFC 3429) | Xidməti OAM paketləri (Y.1711); IP/MPLS şəbəkələrində nadir hallarda rast gəlinir. |
| 15 | Reserved | Xüsusi təyinatlı etiketlər fəzasının genişləndirilməsi üçün rezerv edilib. |
4-6 və 8-12 qiymətləri təyin olunmayıb. İlk "adi" qiymət 16-dır; Cisco IOS-XE LDP etiketlərini defolt olaraq 16-dan paylayır, Junos LDP təxminən 300000 ətrafındakı diapazondan istifadə edir, SR-MPLS isə defolt olaraq SRGB 16000-23999 işlədir. Bu, show mpls forwarding-table-da müxtəlif protokolların etiketlərinin niyə bu qədər fərqli göründüyünü izah edir.
Stek və onun bayt ilə qiyməti
Hər etiket kadrın ölçüsünə 4 bayt əlavə edir. Nüvədən keçməli olan ölçü belə hesablanır: L3 yükü üçün müştərinin IP MTU-su + 4*N, burada N stekdəki etiketlərin sayıdır; L2 yükü (pseudowire, VPLS, EVPN) üçün FCS-siz müştəri Ethernet kadrının ölçüsü + 4*N + 4 bayt control word (aktivdirsə). IP MTU 1500 olduqda FCS-siz müştəri kadrı 1514 baytdır (dot1q teqi ilə 1518).
| Ssenari | Stekdəki etiketlər | Yük | Nüvədə minimum MTU |
|---|---|---|---|
| LDP üzərində IP | nəqliyyat (1) | IP 1500 | 1504 |
| LDP və ya SR üzərində L3VPN | nəqliyyat + VPN (2) | IP 1500 | 1508 |
| L3VPN + RSVP-TE, LDP over TE | VPN + LDP + TE (3) | IP 1500 | 1512 |
| L3VPN, TE və aktiv FRR bypass | VPN + TE + bypass (3-4) | IP 1500 | 1512-1516 |
| Inter-AS option C | VPN + BGP-LU + IGP (3) | IP 1500 | 1512 |
| 5 SID-dən SR-TE policy + VPN | 6 | IP 1500 | 1524 |
| VPWS/VPLS, teqsiz Ethernet | nəqliyyat + PW + CW (4 bayt) | kadr 1514 | 1526 |
| VPLS, teqli kadr | eyni | kadr 1518 | 1530 |
| EVPN: nəqliyyat, EVPN, ELI+EL | 4 etiket | kadr 1514 | 1530 |
| ESI etiketli EVPN BUM | 5 etiket | kadr 1514 | 1534 |
Buradan tipik tövsiyə çıxır: bütün nüvə və aqreqasiya linklərində MTU ehtiyatla təyin edilməlidir (1600 və ya avadanlıq və qovşaqlar dəstəkləyirsə jumbo 9000-9216). Laboratoriya dəyəri 1524 "müştəri 1500 + 6 etiket" kimi seçilib, bu, L3VPN, FRR-li TE və beş SID-li SR-TE üçün kifayətdir. Əsas məqam odur ki, stekin mümkün maksimal dərinliyini adi ssenari yox, şəbəkədə ola biləcək ən uzun xidmətlər kombinasiyası müəyyən edir.
TTL-in yayılması: uniform və pipe
RFC 3443 iki modeli təsvir edir. Uniform modeldə (Cisco-da, Huawei-də ictimai şəbəkə üçün və Junos-da defolt) ingress LSR IP TTL-i etiketin TTL-inə kopyalayır, hər LSR onu 1 azaldır, sonuncu etiket çıxarılanda dəyər geriyə IP TTL-ə kopyalanır. Operator və müştəri üçün bu, adi L3 şəbəkəyə bənzəyir və traceroute hər P marşrutlaşdırıcısını görür. Pipe modelində LSP şəffaf boru sayılır: ingress etiketə 255 yazır, tranzit LSR-lər yalnız etiketi azaldır, müştərinin IP TTL-inə toxunulmur; nüvə müştəri traceroute-undan gizlənir.
Əsas əmrlər: Cisco no mpls ip propagate-ttl, Junos set protocols mpls no-propagate-ttl, MikroTik /mpls/set propagate-ttl=no, Huawei mpls rejimində undo ttl propagate public / undo ttl propagate vpn. Yayılmanın söndürülməsi nüvə topologiyasını müştəridən gizlədir və P marşrutlaşdırıcılarının ünvanlarını qoruyur; bunun əvəzi isə odur ki, müştəri traceroute-undan nüvənin hansı hop-unda əlaqənin itdiyini görmək olmur. Onu bütün PE-lərdə eyni cür aktiv və ya deaktiv etmək lazımdır, əks halda egress-də TTL dəyəri yola görə fərqli olacaq.