Nəzəri əsaslar və memarlıq
CSPF (Constrained Shortest Path First) TED qrafı üzərində işləyən təkmilləşdirilmiş Deykstra alqoritmidir. Standart SPF-dən fərqli olaraq CSPF yolu hesablamazdan əvvəl şərtləri ödəməyən bütün linkləri topologiyadan kəsir (pruning): 1. Zolaq məhdudiyyəti (Bandwidth): boş zolağı tunelin tələbindən az olan linklər dərhal kəsilir. 2. Link rəngləri (Affinity / Admin Groups): hər fiziki linkə 32-bitlik rəng maskası verilir (məsələn, bit 0 = Qızıl optik xətt, bit 1 = Peyk rabitəsi). Tunel yaradılarkən 'yalnız qızıl xətlərlə get' (Include-any) və ya 'peyk xətlərini qadağan et' (Exclude-any) təyin edilir. 3. Açıq yollar (Explicit Path): mühəndis tunelin keçəcəyi tranzit qovşaqları Strict Hop (birbaşa qoşulu) və ya Loose Hop (sərbəst keçid) ilə əllə təyin edə bilər.
CSPF nə edir
CSPF (Constrained SPF) LSP-nin head-end-ində TED üzrə işləyir və siqnallaşma üçün ERO qaytarır. Alqoritm: TED qrafını götürmək, məhdudiyyətləri pozan hər şeyi atmaq və qalanın üzərində Dijkstra işlətmək. Kənarlaşdırma ardıcıllığı:
- TE atributları olmayan linklər və lazımi prioritetdə boş zolağı olmayan linklər (unreserved bandwidth[setup priority] tələb olunandan azdır).
- Administrative group (affinity) yoxlamasından keçməyən linklər.
- Explicit path-in exclude-address / exclude siyahısında göstərilən qovşaqlar və linklər.
- İstifadəsi qadağan olunmuş SRLG-lərdəki linklər (qoruyucu yollar üçün).
- Qalan qrafda TE metric (və ya seçilibsə IGP metric) üzrə Dijkstra.
Kənarlaşdırmadan sonra tail-ə yol qalmırsa, tunel Path: not valid vəziyyətində qalır və RSVP ümumiyyətlə işə düşmür: Path göndərilmir. CSPF TED-də əks olunmayan heç nəyi bilmir, ona görə köhnəlmiş məlumatla yarış mümkündür: yol hesablanıb, lakin tranzit PathErr ilə cavab verir.
Dəyər üzrə bir neçə bərabər yol alınarsa, seçim platformadan asılıdır. Cisco ən böyük minimal boş zolağı olan yolu, sonra daha az hop-lu yolu, sonra təsadüfi yolu seçir. Junos susmaya görə təsadüfi (random) seçir və ya konfiqurasiya ilə least-fill (daha az dolu) və most-fill istifadə edir. Fərqli qaydalar eyni konfiqurasiyanın müxtəlif platformalarda fərqli yol verməsinin tez-tez rast gəlinən səbəbidir.
Metrika: TE metric yoxsa IGP metric
TE metric sub-TLV 5-də (OSPF) / sub-TLV 18-də (IS-IS) ayrıca ədəddir və susmaya görə IGP metrikasına bərabərdir. Onun müstəqilliyi TE yolunu başqa çəkilərlə, məsələn gecikməyə görə hesablamağa imkan verir: IGP metric buraxılış qabiliyyəti üçün saxlanılır, TE metric isə linkin gecikməsinə mütənasib verilir. Cisco-da tunel üçün metrikanın seçimi tunnel mpls traffic-eng path-selection metric te|igp ilə verilir və susmaya görə TE metric istifadə olunur. Junos ospf traffic-engineering qoşulubsa və te-metric verilibsə TE metric, əks halda IGP metric istifadə edir. Laboratoriya konfiqurasiyasında P2 üzərindən linkin TE metric-i (5) P1 üzərindəkindən (10) azdır: məhdudiyyətlər olmasa, CSPF P2-ni seçərdi, affinity məhdudiyyəti isə daha bahalı yolu seçməyə məcbur edir.
Administrative groups (affinity)
Linkin administrative group-u 32 bitlik maskadır (OSPF sub-TLV 9, IS-IS sub-TLV 3). Hər bit ixtiyari "rəngdir": bit 0 - GOLD, bit 1 - SAT. Cisco bunu ədədlə verir, mpls traffic-eng attribute-flags 0x1, Junos isə adlarla, admin-groups GOLD 0 (ad bit nömrəsi ilə əlaqələndirilir) və interfeysə bağlamaqla. Bitin mənasını administrator özü müəyyən edir, o standartlaşdırılmayıb.
Tunel tərəfində SESSION_ATTRIBUTE (C-Type 1, RFC 3209) üç 32 bitlik maska daşıyır: exclude-any, include-any, include-all. Link o halda icazəlidir ki:
- (link & exclude-any) == 0: qadağan olunmuş rəng yoxdur;
- include-any == 0 və ya (link & include-any) != 0: tələb olunan rənglərdən ən azı biri var;
- (link & include-all) == include-all: bütün məcburi rənglər var.
Cisco bunu affinity VALUE mask MASK cütü ilə konfiqurasiya edir: maskadakı hər bit üçün linkin biti affinity bitinə uyğun gəlməlidir. Yəni affinity 0x1 mask 0x3 "bit 0 mütləq 1, bit 1 mütləq 0 olmalıdır, qalanı vacib deyil" deməkdir - include-all (0x1) və exclude-any (0x2) birləşməsi. Junos eyni şeyi admin-group include-any, include-all və exclude açar sözləri ilə ifadə edir.
Cisco ilə işləyən hər kəsin bildiyi tələ: susmaya görə dəyər affinity 0x0 mask 0xFFFF-dir. Bu o deməkdir ki, açıq ayarları olmayan tunel aşağı 16 bitdə ən azı bir bit qoyulmuş istənilən linki yan keçir. Linkə "monitorinq üçün" attribute-flags 0x4 qoymaq kifayətdir ki, susmaya görə ayarları olan bütün tunellər bu linkdən istifadəni dayandırsın. Başqa tələ: məhdudiyyətlərin dəyişməsi işləyən LSP-ni dərhal yenidən qurmur. Yeni yol re-optimization zamanı hesablanır: taymerlə (Cisco-da susmaya görə 3600 s), hadisə ilə və ya əllə.
Explicit və dinamik yollar
Path-option ERO-nun necə alınacağını təsvir edir.
| Variant | CSPF nə edir | Nə vaxt istifadə etməli |
|---|---|---|
| dynamic | bütün yolu məhdudiyyətlərə görə hesablayır | əsas rejim, nasazlıqlara uyğunlaşır |
| explicit, strict hops | yolu TED üzrə yoxlayır, lakin seçmir | sərt bağlama, məsələn kanal üzrə müqavilə tələbi ilə |
| explicit, loose hops | göstərilən qovşaqlar arasındakı seqmentləri hesablayır | "P1-dən keç, qalanını özün tap" |
| explicit, exclude | ünvanları qrafdan silir və qalanını hesablayır | problemli qovşağı və ya linki yan keçmək |
ERO alt obyekti strict (növbəti qovşaq qonşu olmalıdır) və ya loose (ona gedən yolu ERO-dakı əvvəlki qovşaq öz TED-i üzrə hesablayır, ona görə loose yol head-end-in iştirakı olmadan dəyişə bilər) olur. Cisco variantların prioritetini dəstəkləyir (path-option 10, path-option 20 dynamic): birincisi mümkün olmasa, head növbətini yoxlayır. verbatim (Cisco) və no-cspf (Junos) parametrləri TED yoxlamasını söndürür və head-end-in görmədiyi yolun, məsələn başqa area-da olan yolun siqnallaşdırılmasına icazə verir: düzgünlüyə məsuliyyət tamamilə operatorun üzərindədir.
Explicit path interfeys ünvanlarını və ya router-id-ləri göstərir. Ünvan dəyişib, yol isə konfiqurasiyada qalıbsa, tunel PathErr 24/2 (Bad strict node) alır və ya TED yoxlamasından keçmir. Adlandırılmış yolları tunellərdən ayrı saxlamaq və bir yerdə dəyişmək rahatdır.
SRLG
Shared Risk Link Group birlikdə nasaz olan linkləri işarələyən ədəddir: bir kartdakı iki port, bir kabeldəki iki lif. SRLG qiymətlərini IGP flood edir (OSPF sub-TLV 16, RFC 4203; IS-IS TLV 138, RFC 5307). Qoruyucu yol üçün CSPF əvvəlcə əsas yolun SRLG-lərindəki linkləri silir (strict rejim) və ya ortaq SRLG-si olmayan yola üstünlük verir (soft rejim). SRLG olmadan iki "müstəqil" yol bir kabel qırılandan sonra eyni anda yoxa çıxa bilər.