Spanning Tree Protocol : 802.1D
Salam dostlar! Bir müddətdir ki, məqalə üçün mövzu seçimi barədə düşünürdüm və nəticədə çox mürəkkəb və eyni zamanda maraqlı bir protokol olan STP (Spanning Tree Protocol) barəsində yazmağa qərar verdim. Təbii ki, STP-nin çoxnövlülüyünü nəzərə alaraq bu protokolun tam analiz olunması üçün bir məqalə kifayət etməyəcək və ona görə də bu mövzu barədə silsilə məqalələrin yazılması planlaşdırılır. Bu yazı klassik 802.1D standartı haqqında olacaq. Məqalənin oxumazdan əvvəl məlumatların ötürülməsi üsulları və switch funksiyaları barədə məlumatlı olmaq mütləqdir.
Protokol haqqında danışmazdan əvvəl gəlin STP-nin hansı problemi həll etdiyini təhlil edək. Aşağıda təqdim olunan topologiyada istifadəçilərin bir şəbəkədə (subnetdə) olması və STP-nin tətbiq olunmaması şərti ilə PC-A və PC-B arasında məlumat mübadiləsi zamanı baş verənlərə nəzər salaq.
- PC-A ilkin əlaqə üçün PC-B-in MAC ünvanını öyrənmək məqsədi ilə ARP sorğusu göndərəcək.
- ARP sorğusu broadcast olduğu üçün SW-A bu məlumatı qəbul edib SW-B və SW-C-yə otürəcəkdir.
- SW-B öz növbəsində bu sorğunu PC-B və SW-C-yə yönləndirəcəkdir.
- SW-C broadcast məlumatını yenidən SW-A-ya qaytaracaq.
- SW-A öz növbəsində bu məlumatı PC-A və SW-B-yə göndərəcək
Burada mövcud olan rəqəm ardıcıllığı tam düzgün sayılmaya bilər, çünki 3-cü addımda SW-C-nin yenidən yönləndirdiyi sorğular qeyd olunmayıb. Bununla belə zənnimcə bir broadcast sorğunun şəbəkəyə vurduğu ziyanı anlamaq olar. Baş verənlərə texniki dildə bridging loop deyilir. Switch-lər sonsuz olaraq bir-birinə bu məlumatı ötürəcək və şəbəkə tam olaraq istifadəyə yararsız olacaq. Qeyd edim ki, ARP OSİ Layer 2 protocol olduğundan burada TTL göstəricisi köməyimizə çatmayacaq.
Radia Perlman tərəfindən yaradılan Spanning Tree protokolu bu problemi həll etməkdə kömək edir. STP şəbəkənin layer 2 seqmentində əlavə (redundant) qoşulmaların olması ilə barəbər loopdan azad (loop free) şəraitin yaradılmasını təmin edir.
Spanning Tree protokolu loop yaradan qoşulmaları təyin edərək həmin portlardan trafikin ötürülməsini məhdudlaşdırır. Başqa sözlə desək bu portlar istifadəçilərin trafiki üçün istifadə olunmur. Misal üçün STP işlək olan halda qeyd olunan topologiyada PC-A tərəfindən göndərilən ARP birinci misaldaki kimi sonsuz olaraq şəbəkədə qalmayacaq, çünki artıq SW-A və SW-C arasında olan xətt trafikin ötürülməsi üçün istifadə olunmur.
Bu məqsədə nail olmaq üçün STP üç prosesi həyata keçirməlidir:
- Root bridge seçimi
- Bütün switch-lərin root bridge-ə ən yaxın olan portlarının tapılması (Root port)
- Qalan xəttlərdə məlumat axının məhdudlaşdırılması.
Root bridge-in seçilməsi böyük əhəmiyyət daşıyır və sonraki bəndlərdə ediləcək seçimlərə birbaşa təsir edir. STP-də yalnız bir Root bridge seçilə bilər və bu statusun hansı switch-ə verilməsi ümumi STP topologiyasının əsasını qoyur. Root bridge seçimini switch-lər arasında Bridge İD-yə əsasən edilir. 802.1D standartında Bridge İD göstəricisi 8 bayt təşkil edir və burada 2 bayt Bridge prioriteti, 6 bayt isə MAC ünvan bölmələrinə ayrıblıb.
2 bayt (16 bit) olan Bridge Prioritet göstəricisi 0-65535 aralığından seçilə bilər və default olaraq 32768 kimi təyin olunur. Bridge İD-də istifadə olunan MAC ünvan switch-in hansısa portdan öyrəndiyi MAC deyil, istehsalçısı tərəfindən təyin olunmuş göstəricidir. Switch-lər arasında Bridge İD-si ən aşağı olan Root Bridge seçilir. Misal üçün qeyd olunan topologiyada SW-B daha aşağı Bridge İD-yə malik olduğuna görə Root Bridge seçiləcəkdir və SW-B-nin portları designated kimi təyin olunacaqdır. Bu o deməkdir ki, switch-in portları məlumat ötürülməsində aktiv olaraq iştirak edir. Qeyd etmək lazımdır ki, Root Bridge-in bütün portları designated rolunda olur.
Birinci addım yekunlaşdıqdan sonra qalan bütün switch-lər Root Bridge-ə ən yaxın yolu tapıb, həmin portun rolunu root port kimi təyin etməlidirlər. Hər bir switch-in yanlız bir root port-u ola bilər. Bu seçimin edilməsi üçün cost (dəyər) göstəricisindən istifadə olunacaq. Hər bir switch, portun sürətini əsas tutaraq aşağıdaki cədvələ uyğun dəyəri təyin edir.
Birdən çox seçim olduqda Bridge İD-dəki kimi ən aşağı dəyəri olan yol seçilir. Bizim misalda bütün portların 100Mb/s olduğunu nəzərə alsaq, Root port, başqa sözlə desək seçilmiş Root bridge-ə ən yaxın yolu seçmək üçün SW-A mövcud iki yolu dəyərləndirməlidir. Burada birbaşa olan qoşuntunun dəyəri 19-dur, SW-C üzərindən olan qoşuntunun isə dəyəri 38-dir. 19 dahra aşağı olduğu üçün SW-A həmin portu Root Port kimi təyin edəcək. Bu prosesin eynisini SW-C etməklə öz Root Portunu təyin edir.
Root Bridge və Root portlar təyin olunduqdan sonra loopdan azad (loop free) şəratin yaradılması üçün qalan xətlərdə məlumat axını məhdudlaşdırılmalıdır. Bu misalda SW-A və SW-C arasındaki xətdə switch-lərdən biri öz tərəfini bloklaşdırlmalı olacaq. Bu halda hər iki switch-in Root Bridge-ə çatma dəyəri eyni olduğu üçün kimin öz tərəfini blok edəcəyi Bridge İD-yə görə təyin olunacaqdır. Bridge İD-si aşağı olan switch öz tərəfini designated port edəcəkdir, . Bridge İD-si yüksək olan switch isə portunu bloklaşdıracaq və bu port rolu non-designated adlanır. Göründüyü kimi loop-un qarşısını almaq üçün yalnız bir tərəf öz portunu bloklaşdırır.
Əgər Root Bridge-ə birdən çox eyni dəyərli yol olsa, onda Root port seçimi yuxarıda olan (upstream) switch-in Bridge İD-sinə görə ediləcək. Aşağı BİD-yə malik olar switch-ə gedən port root kimi təyin olunacaq. Aşağıdaki misalda SW-D üçün Root Bridge-ə çatmağa iki ədəd eyni dəyərli yol var və SW-A daha aşağı BİD-yə malik olduğuna görə SW-D məhz həmin portu root kimi təyin edəcəkdir.
Əgər switch iki portdan eyni BİD alırsa (bu yalnız switch-lər arasında birdən çox kabel olduqda baş tuta bilər) onda upstream olan switchin Port ID-ləri müqaisə olunacaq. Daha aşağı PİD hansı portdan qəbul olunarsa, o port root kimi seçiləcək. Bu misalda yenə SW-D üçün Root Bridge-ə çatmağa iki ədəd eyni dəyərli yol var və yuxarıdaki misalda iki fərqli BİD arasında seçim edilirdisə, burada BİD eynidir. Ona görə də seçim SW-A tərəfdə olan Port İD-lərə görə edilir. Port İD 2 bayt təşkil edir və burada 8 bit port prioriteti, qalan 8 bit isə interfeys nömrəsini göstərir.
Port prioritet default olaraq 128 kimi təyin olunur və local olaraq switch portu üçün dəyişdirilə bilər. İnterfeys nömrəsi isə port nömrəsini göstərir (misal üçün 0/10). Port prioritet göstəricisinin əksər hallarda dəyişilmədiyini nəzərə alsaq, seçimin port nömrəsinə görə edildiyini söyləyə bilərik. Aşağıdaki misalda göründüyü kimi SW-A 0/1 portundan daha aşağı Port İD göndərdiyi üçün SW-D həmin Port İD-ni qəbul etdiyi portu Root kimi təyin edir.
Qeyd olunan bütün bu proseslərin baş tutması üçün switch-lər arasında məlumatlar Configuration BPDU (Bridge Protocol Data Unit) vasitəsi ilə ötürülür. Configuration BPDU STP topologiyasının qurulmasında və qeyd olunan seçimlərin baş tutmasını təmin edir. STP topologiyasının qurulduqdan sonra yanlız Root Bridge BPDU göndərir. BPDU-da ötürülən əsas məlumatlar aşağıda qeyd olunub.
- Root İD : STP topologiyasında Root Bridge olan switch-in Bridge İD-si
- Root Path Cost : BPDU-nu ötürən switch-in Root Bridge-ə olan dəyəri
- Sender Bridge ID : BPDU-nu ötürən switch-in Bridge İD-si
- Port ID : BPDU ötürülən port haqqında məlumat.
- Hello Time : BPDU-nun neçə saniyədən bir göndərildiyini təyin edir. Default olaraq bu göstərici 2 saniyədir.
- Max age : BPDU-nu qəbul edən switch üçün bu göstərici BPDU taym-aut rolunu oynayır. Default olaraq bu göstərici 20 saniyədir.
- Forward Delay : Switch portunun neçə saniyə listening və learning rejimində olacağımı təyin edir. Default olaraq bu göstərici 15 saniyədir.
- Message Type : BPDU-nun növünü təyin edir. (Configuration və ya TCN BPDU)
- Flags : Qəbul edilmiş TCN BPDU-nun cavablandırılması üçün və ya topologiya dəyişikliyi barədə məlumat vermək üçün istifadə olunur.
Təqdim olunan bu məlumatların məqsədini tam anlamaq üçün məqalənin növbəti hissəsində taymerlər, port statusları və TCN haqqında daha ətraflı danışmaq istəyirəm.
STP-də port rolu və port statusu anlayışları fərqlidir və bu fərqi anlamaq əhəmiyyətlidir. Port rolu dedikdə biz yuxarıda qeyd olunan root, designated və ya non-designated portlarını nəzərdə tuturuq. Port rolları konkret olaraq STP-nin cari topologiyasını göstərir. Port statusu dedikdə isə daha çox switch portunun məlumat ötürmə qabiliyyətini təyin etmiş oluruq. 802.1D STP-də mövcud olan port statusları/rejimləri aşağıda qeyd olunub.
- Disabled : port söndürülüb və işlək deyil
- Blocking : STP-də loopdan azad olmaq üçün əlavə portlar bu statusda olur
- Listening : Bu statusda port heç bir trafik ötürmür və MAC ünvan öyrənmir, amma STP topologiyasının qurulması üçün port BPDU mesajlarını emal edir. Port default olaraq 15 saniyə bu statusda olur
- Learning : Listening statusunda sonra port 15 saniyə learning-də olur. Bu statusda port yenə heç bir trafik ötürmür, amma artıq MAC ünvan öyrənə bilir
- Forwarding : Listening və Learning prosesləri uğurla bitdikdən sonra port bu statusa keçir. Burada port artıq istifadəçi trafikini ötürə bilir və işlək sayılır.
Hər bir port Blocking statusundan Forwarding statusuna keçənə qədər Listening və Learning mərhələlərini keçir. Bu o deməkdir ki, STP-də dəyişiklik baş verdiyi halda şəbəkə ən tez 30 saniyəyə özünü bərpa edəcəkdir.
Məqalənin son hissəsi TCN (Topology Change Notification) və STP-də topologiya dəyişməsi prosesi haqqında olacaq. STP-də Topology Change (Topologiya dəyişikliyi) hər hansısa aktiv (forwarding) olan portun blocking və disabled rejiminə keçməsi (və ya bu prosesin əksi) deməkdir. Dəyişiklik baş verdikdə switch öz root portundan hər 2 saniyədən bir (hello time) TCN BPDU göndərir. Bu TCN BPDU-nun məqsədi topologiyada dəyişikliyin baş verdiyi barədə məlumatı Root Bridge-ə çatdırmaqdır.
Hər bir root olmayan switch TCN-i qəbul edib öz root portundan ötürməkdən əlavə TCN-i qəbul etdiyi designated portundan ötürülən növbəti Configration BPDU-nun Flags bölməsində Topology Change Acknowledgment göndərir. Bununla TCN BPDU-nu hasil edən switch həmin dəyişikliyə görə daha TCN göndərmir.
Aşağıdaki şəkildə kompüter qoşulduqda SW-D tərəfdən həmin proses başlayır. Maraqlısı odur ki, burada hansı dəyişiklin baş verdiyi söylənilmir, yəni Root Bridge sadəcə dəyişikliyin olduğu barədə məlumatlanacaqdır, konkret olaraq hansı switch-də nəyin dəyişdiyi barədə deyil.
Beləlikdə Root Bridge-ə bu TCN BPDU çatdıqdan sonra artıq növbəti göndərəcəyi Configuration BPDU-nun daxilində Topology Change məlumatını yerləşdirib bütün STP topologiyasına göndərəcəkdir. Bütün switch-lər bu məlumatı əldə etdikdən sonra default olaraq 300 saniyə olan CAM cədvəlin ləğv olunma vaxtını 15 saniyəyə dəyişir (forward delay qədər). Root bridge Topology Change məlumatını dayanmadan 35 saniyə ərzində göndərəcəkdir (Max age + forward delay)
Bütün bu prosesi etməkdə məqsəd STP topologiyası ilə CAM cədvəlinin uyğun olmasını təmin etməkdir. TCN-nin mahiyyətini tam anlamaq üçün aşağıdaki misala nəzər yetirək. Təsəvvür edin ki, bu topologiyada A kompüteri B kompüterinə məlumat ötürür və bu məlumat axını adi qaydada SW-D, SW-A , SW-B, SW-C marşrutu ilə baş tutur və CAM cədvələ əsasən SW-D kompüter B-yə çatmaq üçün məlumatı 0/1 portundan ötürməlidir. Müəyyən müddət sonra SW-A və SW-B arasındaki xətt qırılır. Bu zaman SW-E 0/3 portunda artıq BPDU almır və 20 saniyə sonra (max age) 0/3 portunu blocking-dən listening (15 saniyə), sonra learning (daha 15 saniyə) və nəhayət forwading rejiminə keçirəcəkdir. Göründüyü kimi 50 saniyə sonra şəbəkə bərpa olundu, amma TCN olmasaydı A kompüteri və B kompüteri arasında məlumat axını hələ 250 saniyə bərpa olunmayacaqdır, çünki SW-D üçün B kompüterinin MAC ünvanı, SW-C üçün isə A kompüterinin MAC ünvanı barədə məlumat artıq köhnədir. TCN-nin köməyi ilə isə switch-lər CAM cədvəllərini daha tez yeniləyərək default 5 dəqiqə limitini gözləməyəcəklər.
STP konfiqurasiyası haqqında növbəti məqalələrdə yazmağı planlaşdırıram. Zənnimcə bu cür mürəkkəb mövzuda əsas nəzəriyə və iş prinsipini anlamaqdır və çox çalışdım ki, məqalə dolğun və aydın olsun.
Ümid edirəm ki, faydalı olacaq!
Şərhlər ( 2 )
Salam, məqaləyə görə təşəkkürlər.
Bu protokol, şəbəkəmizdə özü avtomatik işə düşür ? Belə başa düşdüm ki, müasir svvitchlər bu protokolu dəstəkliyir. Və şəbəkədə loop olan kimi özü avtomatik portu bağlıyır ?
Salam,
STP ötən əsrin 80-ci illərində yaranmış bir texnologiyadır və istehsalçıdan asıllı olmayaraq bütün sviçlər bu texnologyanı dəstəkləyir. Sadəcə olaraq nəzərə alın ki, yaranandan bəri bu məqalədə qeyd olunan STP-yə çoxlu dəyişikliklər və əlavələr olunub. Bu barədə gələcəkdə məqalələrin yazılması planlaşdırılır.
Hörmətlə,
Hatəm