Nəzəri əsaslar və memarlıq
FEC (Forwarding Equivalence Class) MPLS yönləndirməsinin əsas anlayışıdır. Eyni yol və eyni qayda ilə ötürülən IP paketləri bir FEC-də birləşir. MPLS nüvəsində hər Loopback ünvanı (/32) ayrıca bir FEC-dir. Hər router bu FEC üçün öz label sahəsindən lokal etiket (Local Label) ayırır və LDP vasitəsilə qonşularına elan edir. Qonşudan gələn etiketlər LIB cədvəlində Remote Label kimi saxlanılır. IGP cədvəlindəki Next-Hop əsasında düzgün Remote Label çıxış etiketi (Outgoing Label) seçilir və LFIB cədvəlinə yazılır. Beləliklə, şəbəkə boyu fasiləsiz LSP (Label Switched Path) qurulur. Əgər hər hansı tranzit P routerində etiket zənciri qırılarsa, LSP dağılır və trafik itir.
FEC: etiketə dəqiq nə bağlanır
FEC (Forwarding Equivalence Class) bütün LSR-lərin eyni qaydada yönləndirdiyi paketlər sinfidir. LDP üzərində nəqliyyat MPLS-də FEC demək olar ki, həmişə IGP-dən gələn IP prefiksidir: Label Mapping mesajındakı Prefix FEC address family-ni, uzunluğu və prefiksin özünü ehtiva edir. Ondan başqa LDP-də Wildcard FEC (bütün FEC-lər, Label Withdraw/Release-də istifadə olunur), Typed Wildcard (RFC 5918) və L2VPN üçün pseudowire elementləri PWid FEC 128 və Generalized PWid FEC 129 var. Nəqliyyat LSP üçün loopback /32 prefikslər kifayətdir: onlar BGP VPN next hop-larıdır, ona görə də nüvədə link /30 şəbəkələri üçün etiketlər adətən lazım deyil.
Label Mapping: nə ötürülür
Label Mapping mesajı (0x0400) FEC TLV və Label TLV (Generic Label, 20 bit) üstəgəl könüllü TLV-ləri (Hop Count, Path Vector) ehtiva edir. LSR lokal etiketi öz pool-undan seçir: IOS-XE-də standart diapazon 16-dan başlayır, Huawei-də dinamik etiketlər 1024-dən başlayır (16-1023 statik LSP üçün ehtiyatdadır), Junos-da dinamik LDP etiketləri təxminən 299776-dan başlayır. 0-15 dəyərləri rezerv edilib: 0 - IPv4 explicit null, 1 - router alert, 2 - IPv6 explicit null, 3 - implicit null, 7 - ELI, 13 - GAL, 14 - OAM alert. Implicit null paketdə görünmür: egress yalnız 3 etiketini bildirir, sondan əvvəlki LSR isə pop (PHP) edir, beləliklə, egress-ə daxili məzmunu açılmış paket gəlir.
LIB, RIB və LFIB: üç cədvəl
- LIB (Label Information Base) bütün lokal bindings-ləri və hər qonşudan alınmış bütün bindings-ləri saxlayır (standart olaraq liberal retention).
- RIB IGP cədvəlidir; hər prefiks üçün next hop (link ünvanı) və interfeysi verir.
- LFIB yönləndirmə cədvəlidir: giriş etiketi -> əməliyyat (swap/pop) -> çıxış etiketi, interfeys, next hop.
Alqoritm: FEC üçün IGP next hop götürülür, bu ünvana sahib LDP qonşusu tapılır (Address mesajı vasitəsilə) və LIB-dən məhz həmin qonşunun binding-i götürülür. Binding yoxdursa, LFIB qeydi Pop/No Label olaraq qalır. Buradan tipik nasazlıqlar: qonşu var, binding var, lakin LFIB boşdur, çünki next hop qonşunun Address-də dərc edilməmiş ünvanına aiddir və ya IGP next hop LDP qonşusu deyil (mpls ip olmayan link).
Fasiləsiz LSP və FEC-in dəqiq uyğunluğu
LSP o zaman fasiləsizdir ki, yoldakı hər LSR-də IGP next hop-dan gələn binding olsun. LSP-ni pozmaq üçün bir boşluq kifayətdir. RFC 5036-ya görə LSR FEC-i RIB qeydi ilə dəqiq uyğunluq üzrə axtarır. Buna görə ABR/ASBR-də loopback-lərin summarizasiyası LSP-ni pozur: egress 10.255.0.2/32 üçün etiket elan edir, tranzit qovşaqların RIB-ində isə yalnız 10.255.0.0/24 var, dəqiq uyğunluq yoxdur və etiket istifadə olunmur. Çarə - PE loopback-lərini summarizasiya etməmək və ya dəstəklənən yerdə longest-match aktivləşdirməkdir (Junos-da protocols ldp altında longest-match).
No Label və Pop Label nə deməkdir
Egress FEC üçün Cisco show mpls forwarding-table sondan əvvəlki qovşaqda Outgoing Label olaraq Pop Label göstərir: bu PHP-dir, LIB-ə egress-dən imp-null etiketi gəlib. No Label dəyəri prefiks üçün IGP next hop-dan etiketin olmaması deməkdir: paket etiketsiz adi IP kimi çıxır. Adi IP trafiki üçün bu hiss olunmur, lakin xaricdə VPN etiketi olan L3VPN trafiki etiketsiz ilk qovşaqda itir, çünki P marşrutlaşdırıcısı müştəri prefikslərini bilmir.
Laboratoriya topologiyasında fasiləsiz LSP nümunəsi
FEC 10.255.0.2/32. PE2 öz loopback-i üçün implicit null (3) verir. P1 lokal etiket seçir (məsələn, 18), onun LFIB-i: in 18 -> pop -> PE2. PE1 P1-dən 18 etiketini alır və lokal 21 seçir; PE1-in LFIB-i: ingress, P1 istiqamətində push 18. PE1 -> PE2 paketi nüvədə yeganə 18 etiketini daşıyır və PE2-yə nəqliyyat etiketi olmadan çatır. Konkret nömrələr ayırma ardıcıllığından və proqram versiyasından asılıdır, struktur isə həmişə eynidir: egress - implicit null, tranzit - swap və ya pop, ingress - push.
FEC çoxluğunun idarə olunması
Standart olaraq IOS-XE bütün IGP prefiksləri üçün etiket ayırır, Junos yalnız loopback və egress-policy ilə icazə verilən prefikslər üçün, Huawei host marşrutları üçün (lsp-trigger standart olaraq host-dur). prefix-list ilə məhdudlaşdırma (Cisco: mpls ldp label allocate global prefix-list; Huawei: lsp-trigger ip-prefix; Junos: egress-policy) LFIB-i və etiket mübadiləsinə hücum səthini azaldır. Lakin etiket tələb edən hər BGP next hop və RR ünvanı siyahıda qalmalıdır: əks halda ingress LSP qura bilmir və L3VPN trafiki itir.
Label Withdraw və Release
FEC RIB-dən itərsə və ya etiket dəyişərsə, LSR Label Withdraw göndərir; qəbul edən binding-i silir və Label Release ilə cavab verir. Wildcard Withdraw FEC-in bütün bindings-lərini birdən silir. Sessiya düşdükdə qonşunun bütün bindings-ləri silinir. Bu hadisələr LFIB-də qeydlərin qısa müddətli itkisi kimi görünür, ona görə LDP-IGP sync və protection (növbəti dərslər) birləşməsi vacibdir.