Nəzəri əsaslar və memarlıq
LDP protokolu bir neçə iş rejimini dəstəkləyir: 1. Paylanma: Downstream Unsolicited (DU) — router sorğu gözləmədən etiketləri bütün qonşulara göndərir (operator standartı); Downstream on Demand (DoD) — etiket yalnız upstream qonşunun sorğusu ilə verilir. 2. Saxlanma: Liberal Retention — router LIB-də BÜTÜN qonşulardan gələn etiketləri saxlayır, hətta onlar aktiv Next-Hop olmasa belə (qəza zamanı ehtiyat yol daha tez aktivləşir); Conservative Retention — yalnız cari Next-Hop-un etiketi saxlanılır (yaddaşa qənaət). 3. Nəzarət: Ordered Control — router FEC üçün etiketi yalnız növbəti hop-dan etiket aldıqda və ya çıxış PE olduqda elan edir (etiket yalnız işlək LSP quyruğu olduqda verilir; Junos ordered, Cisco IOS isə independent istifadə edir); Independent Control — router downstream cavabını gözləmədən müstəqil etiket elan edir.
LDP davranışının üç müstəqil oxu
RFC 5036 qarışdırılmamalı üç ortoqonal seçimi təsvir edir: etiketlər necə paylanır (Downstream Unsolicited və ya Downstream on Demand), alınmış etiketlərlə nə etməli (liberal və ya conservative retention) və öz etiketini nə vaxt vermək olar (independent və ya ordered control). Hər vendorun implementasiyası bir kombinasiya seçir; operator Ethernet nüvəsində bu demək olar ki, həmişə DU + liberal-dır, control mode isə platformalar arasında fərqlənir.
Downstream Unsolicited və Downstream on Demand
DU rejimində downstream qovşaq (özünə yönləndirmə üçün etiket verən qovşaq) FEC üçün binding yarandığı anda Label Mapping-i sorğu olmadan bütün qonşulara göndərir. Upstream sadəcə qəbul edir. DoD rejimində upstream əvvəlcə konkret FEC üçün Label Request (0x0401) göndərir, downstream isə Label Mapping ilə cavab verir; etiket yalnız sorğu ilə verilir, next hop dəyişdikdə sorğu təkrarlanır. DoD etiketlərin bahalı olduğu yerlərdə (ATM, Frame Relay, label-controlled interfeyslər) və ya etiketləri yalnız lazım olduqda vermək istənildikdə lazımdır. Rejim Initialization-da razılaşdırılır (A bayrağı): bir qovşaq DU, digəri DoD təklif edərsə, sessiya DoD istifadə edir. Ethernet üçün DU təbiidir və hər FEC üçün bir round trip qənaət edir, ona görə IP/MPLS nüvələrində DoD nadir hallarda rast gəlinir (Huawei interfeysdə mpls ldp advertisement əmri ilə rejimi açıq seçməyə imkan verir).
Label retention: liberal və conservative
Liberal retention LIB-də bütün qonşuların bindings-lərini saxlayır, hətta qonşu hazırda FEC üçün next hop olmasa belə. Qazanc - ehtiyat yola ani keçid: əsas link düşdükdən sonra LDP Label Mapping gözləmədən LIB-də artıq olan yeni next hop etiketini götürür və LFIB millisaniyələr ərzində yenidən hesablanır. Qiymət - yaddaşdır: N qonşu LIB-in ölçüsünü vurur; 5000 FEC və 4 qonşu ilə bu 20 000 qeyddir, müasir platformalar üçün əhəmiyyətsizdir. Conservative retention yalnız cari next hop-dan gələn binding-i saxlayır, digərlərini atır (DoD ilə yeni next hop etiketini yenidən Label Request ilə soruşur). O, yaddaşa qənaət edir, lakin next hop dəyişdikdən sonra konvergensiya mesaj mübadiləsi ilə gedir və bu müddətdə trafik itir.
Label distribution control: independent və ordered
Independent control zamanı LSR prefiks RIB-də görünən kimi FEC üçün lokal etiket ayırır və next hop-dan binding gözləmədən onu elan edir. Üstünlük - sürətli start və ardıcıllıqdan asılı olmamaqdır, çatışmazlıq - mümkün müvəqqəti qara dəliklərdir: upstream etiketi artıq alıb, LSP-nin downstream hissəsi isə hələ qurulmayıb və etiketli paket çıxılmaza düşür. Ordered control zamanı qovşaq etiketi yalnız FEC üçün egress olduqda (məsələn, bu onun öz loopback-idir) və ya next hop-dan binding artıq alındıqda verir. LSP ciddi şəkildə egress-dən ingress-ə doğru qurulur, ona görə hər verilmiş etiket işlək quyruğu təmin edir. Qiymət - qurulma vaxtıdır: etiket hər qovşaqdan ardıcıl keçir və yolun ortasındakı qırılma zəncirdə yuxarıda olan hər şeyi susdurur. Sənədləşməyə görə Cisco IOS frame-mode-da independent control, Junos isə ordered istifadə edir; davranışın kritik olduğu platformada əllə yoxlanılmalıdır (bax review).
Implicit null, explicit null və PHP
FEC üçün egress üç variant verə bilər: implicit null (etiket 3, PHP: sondan əvvəlki LSR etiketi çıxarır, egress təmiz paket alır), explicit null (IPv4 üçün etiket 0, IPv6 üçün 2: etiket egress-ə qədər qalır və TC/EXP sahəsi saxlanılır) və ya non-null (adi etiket, LSP adi lookup ilə bitir). Implicit null egress-də bir lookup qənaət edir, explicit null isə son hop-da TC üzrə başdan-başa QoS təsnifatı üçün lazımdır. Cisco-da mpls ldp explicit-null FEC siyahısına və qonşu siyahısına tətbiq oluna bilər, Junos-da protocols mpls explicit-null, Huawei-də MPLS-view-da label advertise explicit-null, MikroTik-də use-explicit-null=yes.
Kim hansı etiketləri alır: paylanmanın idarə olunması
Etiketləri göndərmə üçün (Cisco mpls ldp advertise-labels for <FEC-ACL> to <PEER-ACL>, Junos export policy) və qəbul üçün (accept/import: Cisco inbound label filtering, Junos import, MikroTik accept-filter) ayrıca məhdudlaşdırmaq olar. Bu dəqiq yönləndirmə modelinə çevrilir: liberal retention ilə alınmış, lakin next hop-a uyğun gəlməyən etiket LIB-də "ehtiyat üçün" qalır. Ordered qovşaqda lazımi binding yoxdursa, o, etiketi zəncir boyunca yuxarı vermir və LSP qurulmur; independent qovşaqda etiket var, lakin LSP quyruğu boşdur və paketlər itir. Paylanma məhdudiyyəti səhvən BGP next hop üçün lazım olan FEC-ə tətbiq edilərsə, L3VPN pozulur.