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

SRv6 Segment Routing ideyasını MPLS etiketlərindən IPv6 ünvanlarına köçürür: seqment 128 bitlik SID-dir, onun daxilində kodlanmış funksiya isə qovşağın paketlə nə edəcəyini müəyyən edir. SID strukturunu (locator, function, argument), SRH başlığını (RFC 8754) və RFC 8986-dakı davranışları öyrənəcəksiniz: End, End.X və xidmət davranışları End.DT4, End.DT6, End.DX4. Ayrıca blok sıxmaya həsr olunub: uSID (RFC 9800) bir neçə seqmenti bir IPv6 ünvanına yığır və SRH-in əlavə yükünü demək olar ki, aradan qaldırır. Sonra BGP ilə SRv6 üzərində L3VPN qurulur (RFC 9252): PE VPN etiketi əvəzinə xidmət SID-ini göndərir, tranzit qovşaqlar isə paketi adi IPv6 kimi ötürür. Dərs SRv6 və SR-MPLS-i əlavə yük, MTU, avadanlığın yetkinliyi, TI-LFA və təhlükəsizlik modeli üzrə müqayisə edir, həmçinin inkapsulyasiya ilə SRH daxil edilməsi arasındakı fərqi göstərir.

MPLS etiketlərindən IPv6 ünvanlarına

SR-MPLS seqmenti 20 bitlik etiketlə kodlayır və MPLS data plane tələb edir. SRv6 (RFC 8402 arxitekturanı, RFC 8754 başlığı, RFC 8986 şəbəkə proqramlaşdırmasını təsvir edir) eyni məqsəd üçün IPv6-dan istifadə edir: seqment 128 bitlik ünvandır, mənasını isə sahib qovşaq müəyyən edir. SID adi IPv6 ünvanına bənzədiyi üçün locator prefiksi IGP-də (IS-IS üçün RFC 9352) adi marşrut kimi elan olunur, SRv6 dəstəkləməyən qovşaqlar belə paketləri SR haqqında heç nə bilmədən longest match ilə ötürür. Əsas fərq budur: tranzit P IPv6 ötürə bildikcə SRv6-nı başa düşməlidir. Ayrıca nəticə - aqreqasiya: area qovşaqlarının locator-ları sərhəddə bir prefikslə ümumiləşdirilə bilər, SR-MPLS etiketləri ilə bunu etmək olmaz.

SID strukturu: Locator : Function : Argument

128 bit locator, function və argument-ə bölünür. Locator blok (B) və qovşaq identifikatorundan (N) ibarətdir: dərsdə blok fcbb:bb00::/32, PE2 qovşağı 0002, locator-u fcbb:bb00:2::/48-dir. Function qovşaqdakı hərəkəti müəyyən edir (məsələn, VRF A üçün End.DT4 = e004), argument isə funksiya üçün ixtiyari verilənlərdir (klassik SRv6-da davranışa ötürülən qiymət; L3VPN-də adətən sıfırdır). Sahələrin uzunluqları standartla sabitlənməyib, ona görə qovşaq SID strukturunu (Locator Block Length, Locator Node Length, Function Length, Argument Length) IGP-də və BGP-də bildirir, operator isə formatı bütün şəbəkə üçün bir dəfə seçir. Locator IGP ilə marşrutlaşdırılır, locator daxilindəki SID-lər isə qovşağın lokal yazılarıdır və IGP-də ayrıca marşrut kimi elan olunmur (End.X kimi Adjacency SID-lər sub-TLV-lərdə elan edilir).

SRH və paketin işlənməsi

SRH 4-cü tip marşrutlaşdırma başlığıdır (RFC 8754): Next Header, Hdr Ext Len, Routing Type = 4, Segments Left, Last Entry, Flags, Tag sahələri və Segment List[0..n] siyahısı. Siyahı tərs sıra ilə saxlanır: sonuncu seqment Segment List[0]-dır. Paketin Destination Address-ində aktiv seqment durur, Segments Left isə növbətinin indeksini göstərir. DA-da öz SID-ini görən endpoint qovşaq davranışı yerinə yetirir: End üçün Segments Left-i 1 azaldır, Segment List[Segments Left]-i DA-ya kopyalayır və paketi ötürür. SRH-i yalnız domenin mənbə qovşağı əlavə edir, tranzit qovşaqlar onu daxil etmir; ixtiyari HMAC TLV siyahının saxtalaşdırılmasından qoruyur. Son seqmentin işlənməsi flavor-larla təsvir olunur: PSP (sondan əvvəlki seqment SRH-i çıxarır), USP (sonuncu SRH-i çıxarır) və USD (sonuncu bütün xarici başlığı çıxarır). Öz SID-i olmayan qovşaqlar paketi DA ilə ötürür və SRH-ə baxmır.

Davranışlar (RFC 8986)

End - qovşağa keçid. End.X - konkret qonşu üzərindən ötürmə (Adjacency SID analoqu). End.T - göstərilən IPv6 cədvəlində lookup. End.DX4, End.DX6 - dekapsulyasiya və konkret CE-yə göndərmə (per-CE). End.DT4, End.DT6, End.DT46 - dekapsulyasiya və VRF cədvəlində lookup (per-VRF; DT46 hər iki ailəyə xidmət edir). End.B6.Encaps - yeni inkapsulyasiyalı siyasətə bağlanma (Binding SID analoqu). Baş qovşaq tərəfində H.Encaps (SRH-li xarici IPv6 başlığı), H.Encaps.Red (reduced: ilk SID DA-ya düşür, SRH onu təkrarlamır, tək SID olanda SRH lazım deyil) və H.Insert (SRH xarici başlıqsız ilkin pakete daxil edilir) təyin olunub. Daxil etmə ilkin ünvanlamanı saxlayır və 40 bayt qazandırır, lakin məhduddur (RFC 8754 SRH-i yalnız mənbə qovşağa əlavə etməyə icazə verir) və L3VPN-də tətbiq olunmur: xidmət daxili paketi dəyişdirmədən çatdırmaq üçün inkapsulyasiya tələb edir.

uSID və sıxma (RFC 9800)

Tam 128 bitlik SID-lər SRH-i şişirdir: hər seqment 16 bayt tutur. Cavab seqmentlərin sıxılmasıdır. Mikro-SID (uSID, RFC 9800-un NEXT-CSID flavor-u) 16 bit tutur; 128 bitlik konteynerə blok (məsələn, 32 bit) və altıya qədər uSID sığır. DA blok və uSID ardıcıllığını saxlayır; uN-li qovşaq (sürüşdürmə davranışlı End) blokdan sonrakı ilk uSID-i özününkü ilə müqayisə edir, qalanını 16 bit sola sürüşdürür, sıfırlarla doldurur və paketi ötürür, ona görə aktiv uSID həmişə blokdan dərhal sonradır. 6 hop üçün SRH ümumiyyətlə lazım deyil: xarici IPv6 40 + 8 + 6x16 əvəzinə 40 bayt çəkir. Daha uzun yollar üçün konteynerlər SRH-ə qoyulur. Xidmətlər siyahının sonunda öz uSID-lərini (uDT4, uDT6) alır. Blok və sahə uzunluqları bütün qovşaqlarda üst-üstə düşməlidir, müxtəlif istehsalçıların uyğunluğu isə flavor və locator formatının realizasiyasından asılıdır; platforma matrisinə baxın. Sıxmanın digər flavor-ları mövcuddur və bu dərsdə nəzərdən keçirilmir.

SRv6 üzərində L3VPN (RFC 9252)

PE2 VRF üçün öz locator-undan SID ayırır: per-VRF End.DT4 (və ya DT6/DT46) və ya per-CE End.DX4. SID davranış və SID strukturu ilə birlikdə VPNv4/VPNv6-da BGP Prefix-SID atributunda (SRv6 L3 Service TLV) daşınır; yeniləmənin ölçüsünü azaltmaq üçün SID bitlərinin bir hissəsi NLRI-nin etiket sahəsində kodlana bilər (transposition). RT, RD, import və export MPLS L3VPN-dəki kimi işləyir; yalnız nəqliyyat və xidmət inkapsulyasiyası dəyişir: iki etiket əvəzinə DA = xidmət SID-i olan xarici IPv6 başlığı. Marşrutun next hop-u PE2-nin IPv6 ünvanıdır, IGP onu locator vasitəsilə bilir. Route reflector Prefix-SID atributunu saxlamalıdır; TE üçün xidmət SID-indən əvvəl yol seqmentləri (SRH və ya uSID) qoyulur. DA End.DT4 ilə üst-üstə düşəndə qəbul edən PE xarici başlığı çıxarır və daxili ünvanı VRF-də axtarır.