Nəzəri əsaslar və memarlıq

ICMP ping və traceroute yalnız IP marşrutlaşdırmasını yoxlayır: label ilə ötürmə pozulduqda belə paket IP yolu ilə çata bilər, ona görə onlar LSP-nin sağlamlığını sübut etmir (P marşrutlaşdırıcıları traceroute-da yalnız propagate-ttl aktiv olduqda görünür). LSP-ləri yoxlamaq üçün MPLS Echo Request/Reply standartlaşdırılıb: LSP Ping və LSP Traceroute (RFC 8029, RFC 4379-u əvəz edib). 1. LSP Ping: echo sorğusu yoxlanılan LSP daxilində, müştəri trafikinin istifadə edəcəyi eyni label stack ilə, 3503 portuna UDP paketi kimi göndərilir; təyinat ünvanı 127.0.0.0/8 diapazonundandır (susmaya görə 127.0.0.1), IP TTL 1-dir, Router Alert opsiyası qoyulur. Tranzit P marşrutlaşdırıcıları paketi label ilə ötürür və IP başlığına baxmır. Egress label-i çıxarır, paketi MPLS OAM prosesinə verir və proses Target FEC Stack-i öz bindinqləri ilə yoxlayır; FEC ona aiddirsə Return Code 3, əks halda xəta kodu qaytarır. Cavab adi IP yolu ilə gedir. 2. LSP Traceroute: MPLS TTL 1, 2, 3 və s. ilə sorğular; hər qovşaq Return Code 8 və Downstream Mapping TLV (növbəti qovşaq, interfeys, MRU, çıxış label-ləri) ilə cavab verir, sonuncu qovşaq 3 kodu ilə cavab verir. Hər iki test bir FEC üçün bir LSP-ni yoxlayır: VPN label-i və VRF cədvəlini yoxlamır (bunun üçün VPN IPv4 prefix FEC və ya ping vrf lazımdır).

LSP üçün niyə ayrıca ping lazımdır

Adi ICMP ping IP yolunu yoxlayır, MPLS şəbəkəsi isə IGP və LDP sağlam görünsə də sına bilər: LDP sessiyası Oper-dir, prefiks RIB-dədir, lakin tranzit P marşrutlaşdırıcısının LFIB-ində çıxış etiketi yoxdur və ya aparat cədvəli səhv proqramlaşdırılıb. Control plane "hər şey qaydasındadır" deyir, müştəri paketləri isə itir. LSP ping və LSP traceroute (RFC 4379, onu RFC 8029 əvəz edib) məhz bu problemi həll edir: onlar yoxlanılan LSP-nin daxilində, müştəri trafikinin alacağı eyni etiket yığını ilə test paketi göndərir və nəticəni çıxış qovşağının cədvəlləri ilə müqayisə edir. Test belə sualı cavablandırır: "bu FEC-in etiketini daşıyan paket çıxış qovşağına çatırmı və çıxış qovşağı FEC-in ona aid olduğunu təsdiq edirmi".

MPLS Echo Request formatı

Echo sorğusu təyinat portu 3503 olan UDP paketidir. Təyinat IP ünvanı 127.0.0.0/8 diapazonundan götürülür (susmaya görə 127.0.0.1), IP TTL 1-dir, Router Alert opsiyası qoyulur. 127/8 ünvanı müdafiə rolunu oynayır: etiket itərsə və paket LSP-dən adi IP qovşağında çıxarsa, o, bundan sonra marşrutlaşdırılmır (loopback ünvanları ötürülmür), lokal prosesə düşür və ya atılır. Buna görə tranzit qovşaqlar IP başlığına baxmır: qərar etiketə görə verilir. 127/8 diapazonu praktiki üsul da verir: ECMP zamanı hash təyinat ünvanından asılıdır, ona görə 127.0.0.1-127.0.0.N ünvanlarını dəyişməklə echo sorğularını fərqli bərabərdəyərli yollardan keçirmək olar.

Echo-nun sabit başlığı 32 baytdır: Version (1), Global Flags (V biti "FEC yığınını yoxla" deməkdir), Message Type (1 - Echo Request, 2 - Echo Reply), Reply Mode, Return Code, Return Subcode, Sender's Handle (cavaba köçürülür), Sequence Number, TimeStamp Sent və TimeStamp Received (RTT bunlarla hesablanır). Sonra TLV-lər gəlir. Reply Mode: 1 - cavab vermə, 2 - IP üzərindən UDP paketi ilə cavab (susmaya görə), 3 - Router Alert ilə UDP paketi (hər hop-da emal olunur), 4 - tətbiq idarəetmə kanalı ilə cavab (psevdotellər üçün VCCV). Echo Reply sorğunun gəldiyi UDP portuna və adi IP marşrutlaşdırması ilə göndərilir: buna görə qayıdış yolu sınıqdırsa, düzünə LSP sağlam olsa da "cavab yoxdur" alınır.

Target FEC Stack və çıxış qovşağının cavabı

Əsas TLV (tip 1) Target FEC Stack-dir: yığının hər etiketi üçün FEC siyahısı, yuxarıdan başlayaraq. Alt-tip nümunələri: LDP IPv4 prefix (1), RSVP IPv4 LSP session (3), VPN IPv4 prefix (6), FEC 128 pseudowire (10), FEC 129 pseudowire (11), BGP labeled IPv4 prefix (12), Nil FEC (16). Çıxış qovşağı paketi alır, etiketləri silir, 127.0.0.1 ünvanını görür və sorğunu OAM prosesinə verir. Proses FEC-i yoxlayır: LDP IPv4 prefix 10.255.0.2/32 üçün çıxış qovşağı özü bu prefiksin "son nöqtəsi" olmalıdır (ünvan onun loopback-indədir). Yoxlama keçərsə, cavabda Return Code 3 olur ("Replying router is an egress for the FEC at stack-depth"). Beləliklə, ping yalnız çatdırılmanı deyil, həm də etiket ilə FEC-in uyğunluğunu yoxlayır: səhv etiketlə başqa qovşağa düşən paket 3 yox, 4 və ya 10 kodunu alır.

Return Code: cavabı necə oxumaq

Qaytarma kodu əsas diaqnostik nəticədir. RFC 8029 dəyərləri: 0 - kod yoxdur; 1 - pozulmuş sorğu; 2 - başa düşülməyən TLV-lər; 3 - qovşaq bu FEC üçün çıxış qovşağıdır; 4 - qovşaqda bu yığın dərinliyində bu FEC üçün əlaqə yoxdur; 5 - Downstream Mapping uyğunsuzluğu; 8 - etiket bu yığın dərinliyində kommutasiya olunur (tranzit qovşaq, traceroute-un normal cavabı); 9 - etiket var, lakin onun üzrə MPLS ötürməsi yoxdur; 10 - bu FEC-in əlaqəsi göndərilmiş etiketlə üst-üstə düşmür; 11 - etiket üçün qeyd yoxdur; 12 - protokol interfeysdə aktiv deyil. 4, 9, 10, 11 kodları "LSP burada qırılıb" deməkdir. Nəzərə alın ki, 10 kodunu çox vaxt səhvən "label switched but no MPLS forwarding" kimi göstərirlər - bu 9 koddur.

LSP traceroute: Downstream Mapping və TTL

Traceroute echo sorğularını MPLS TTL 1, 2, 3 və s. ilə göndərir. Tranzit qovşaqda etiketin TTL-i bitir, paket OAM prosesinə düşür və qovşaq Return Code 8 ilə birlikdə Downstream Mapping TLV-si (DSMAP, tip 2; müasir realizasiyalarda DDMAP, tip 20, RFC 6424) ilə cavab verir: növbəti qovşağın ünvanı, interfeys, MRU (downstream-in qəbul etdiyi paketin maksimal ölçüsü) və çıxış etiket yığını. Ingress bu məlumatı növbəti sorğuya köçürür, beləliklə sonrakı qovşaq paketi əvvəlki qovşağın vəd etdiyi etiketlə qəbul etdiyini yoxlaya bilər. Uyğunsuzluq Return Code 5 (Downstream Mapping Mismatch) verir. Sonuncu qovşaq Return Code 3 ilə cavab verir. PHP olduqda sondan əvvəlki qovşaq çıxış etiketini implicit-null (3) kimi bildirir: bu normaldır, qəza deyil.

Vacib xüsusiyyət: LSP traceroute propagate-ttl rejimindən asılı deyil. Adi IP traceroute-da no mpls ip propagate-ttl P marşrutlaşdırıcılarını gizlədir (IP TTL etiketə köçürülmür), LSP traceroute isə etiketin TTL-ini özü təyin edir və hər hop-u görür. Ona görə əvvəlcə IP traceroute ilə yox, onunla yoxlayın.