Поняття протоколу spanning-tree
Як показано на рис. 1, всі екземпляри протоколу spanning-tree (комутована мережа LAN або домен широкомовної розсилки) містять комутатор, призначений як кореневий мост. Кореневий міст служить точкою прив'язки всім розрахунків протоколу spanning-tree, дозволяючи визначити надлишкові шляхи, які слід заблокувати.
Процес вибору визначає, який із комутаторів стане кореневим мостом.
На рис. 2 показані поля BID. Ідентифікатор BID складається із значення пріоритету, розширеного ідентифікатора системи та MAC-адреси комутатора.
Усі комутатори в домені широкомовної розсилки беруть участь у процесі вибору. Після завантаження комутатора вони починають розсилати кадри BPDU з інтервалом дві секунди. Ці BPDU містять ідентифікатор комутатора BID і ідентифікатор кореневого моста.
Коли комутатори пересилають свої кадри BPDU, суміжні комутатори в домені широкомовної розсилки зчитують дані про ідентифікатор кореневого моста. Якщо ідентифікатор кореневого моста отриманого кадру BPDU має менше значення, ніж ідентифікатор кореневого моста на комутаторі, що приймає, то в цьому випадку приймає комутатор оновлює свій ідентифікатор кореневого моста, вказуючи суміжний комутатор в якості кореневого моста. Фактично це може бути не суміжний комутатор, а будь-який інший комутатор у домені широкомовного розсилання. Потім комутатор пересилає нові кадри BPDU з меншим значенням ідентифікатора кореневого моста інші суміжні комутатори. Поступово комутатор з найменшим значенням ідентифікатора BID визначається кореневим мостом для екземпляра протоколу spanning-tree.
Кореневий міст вибирається для кожного екземпляра протоколу spanning-tree. Можлива наявність кількох окремих кореневих мостів. Якщо всі порти на всіх комутаторах є учасниками мережі VLAN 1, то існує тільки один екземпляр протоколу spanning-tree. Розширений ідентифікатор системи використовується визначення екземпляра протоколу spanning-tree.
Поняття протоколу spanning-tree
IEEE 802.1D STP використовує алгоритм протоколу spanning-tree (STA), щоб визначити, які порти комутаторів в мережі повинні бути переведені в стан блокування, щоб уникнути виникнення петель. STA призначає один із комутаторів як кореневий мост і використовує його як точку прив'язки для розрахунку всіх шляхів. На малюнку кореневий міст (комутатор S1) вибрано за допомогою спеціального процесу вибору. Усі комутатори, що беруть участь у STP, обмінюються кадрами BPDU, щоб визначити, який комутатор має найнижче значення ідентифікатора моста (BID) у мережі. Комутатор із найменшим значенням BID автоматично стає кореневим мостом для розрахунків STA.
Примітка. Щоб спростити завдання, припустимо (поки не зазначено інше), що всі порти на всіх комутаторах призначені мережі VLAN 1. Кожен комутатор має унікальну MAC-адресу, пов'язану з мережею VLAN 1.
BPDU є кадром обміну повідомленнями, яким обмінюються комутатори для STP. Кожен BPDU містить ідентифікатор BID, який визначає комутатор, який надіслав BPDU. Ідентифікатор BID містить значення пріоритету, MAC-адресу комутатора, що відправляє, і додатковий розширений ідентифікатор системи. Найнижче значення BID визначається комбінацією значень цих трьох полях.
Після визначення кореневого мосту STA розраховує найкоротший шлях до нього. Усі комутатори використовують STA визначення портів, підлягають блокуванню. Поки STA визначає оптимальні шляхи до кореневого мосту для всіх портів комутатора в домені широкомовного розсилання, пересилання трафіку по мережі заблоковано. При визначенні портів, що підлягають блокуванню, STA враховує вартість як шляху, і порту. Вартість портів розраховується за допомогою значень вартості порту, яка залежить від швидкості кожного порту комутатора цьому маршруті. Сума значень вартості порту визначає загальну вартість колії до кореневого мосту. Якщо для вибору доступно кілька шляхів, STA вибирає шлях із найменшою вартістю.
Визначивши найкращі шляхи для кожного комутатора, алгоритм STA призначає ролі портам комутаторів, що беруть участь. Ролі портів описують їх зв'язок із кореневим мостом у мережі, а також вказують, чи дозволено для них пересилання трафіку:
- Кореневі порти - порти комутатора, що знаходяться максимально близько до кореневого мосту. На малюнку кореневий порт S2 — порт F0/1, налаштований для транкового каналу між S2 і S1. Кореневий порт на S3 – порт F0/1, налаштований для транкового каналу між S3 та S1. Кореневі порти вибираються для кожного комутатора окремо.
- Призначені порти — усі некореневі порти, яким дозволено пересилати трафік по мережі. На малюнку порти комутатора S1 (F0/1 та F0/2) є призначеними портами. На комутаторі S2 порт F0/2 також налаштований як призначений порт. Призначені порти вибираються для кожного транкового каналу окремо. Якщо одному кінці транка знаходиться кореневий порт, то іншому — призначений.Усі порти кореневому мосту є призначеними портами.
- Альтернативні та резервні порти – альтернативні та резервні порти налаштовуються у стан блокування, щоб уникнути виникнення петель. На малюнку STA налаштував порт F0/2 на комутаторі S3 як альтернативного порту. Порт F0/2 на комутаторі S3 перебуває у стані блокування. Альтернативні порти вибираються лише з транкових каналах, де жоден із кінців перестав бути кореневим портом. Зверніть увагу, що на малюнку заблоковано лише один із кінців транку. Це забезпечує швидший перехід у стан пересилання у разі потреби. (Заблоковані порти використовуються лише в тому випадку, коли два порти на одному комутаторі з'єднані один з одним за допомогою комутатора або одного кабелю).
- Відключені порти – відключеним називається порт комутатора, живлення якого вимкнено.
Принцип роботи протоколів STP/RSTP, функція захисту кореня (root guard)
Spanning Tree Protocol – мережевий протокол, який працює на другому рівні моделі OSI. Заснований на однойменному алгоритмі, розробником якого є «Мама Інтернету» - Радя Перлман (Radia Perlman).
Основним завданням STP є приведення мережі Ethernet із множинними зв'язками до деревоподібної топології, яка виключає цикли пакетів. Відбувається це шляхом автоматичного блокування непотрібних на даний момент для повної зв'язності портів. Протокол описано у стандарті IEEE 802.1D.
Для того щоб визначити, які порти заблокувати, а які будуть у режимі пересилання, STP виконує наступне:
- Вибір кореневого мосту (Root Bridge)
- Визначення кореневих портів (Root Port)
- Визначення виділених портів (Designated Port)
Кореневим стає комутатор із найменшим ідентифікатором мосту (Bridge ID).
Лише один комутатор може бути кореневим. Для того, щоб вибрати кореневий комутатор, всі комутатори відправляють повідомлення BPDU, вказуючи себе як кореневий комутатор. Якщо комутатор отримує BPDU від комутатора з меншим Bridge ID, він перестає анонсувати інформацію у тому, що він кореневої і починає передавати BPDU комутатора з меншим Bridge ID. У результаті лише один комутатор залишиться кореневим і передаватиме BPDU.
Спочатку Bridge ID складався з двох полів:
- Пріоритет — це поле, яке дозволяє адміністративно впливати на вибори кореневого комутатора. Розмір - 2 байти,
- MAC-адреса – використовується як унікальний ідентифікатор, який, у разі збігу значень пріоритетів, дозволяє вибрати кореневий комутатор. Так як MAC-адреси унікальні, то і Bridge ID унікальний, тому якийсь комутатор обов'язково стане кореневим.
Порт комутатора, який має найкоротший шлях до кореневого комутатора називається кореневим портом. У будь-якого не кореневого комутатора може бути лише один кореневий порт.
Комутатор в сегменті мережі, що має найменшу відстань до кореневого комутатора, називається призначеним комутатором (мостом). Порт цього комутатора, який підключений до сегменту мережі, що розглядається, називається призначеним портом.
- У мережі вибирається один кореневий міст (Root Bridge).
- Далі кожен, відмінний від кореневого, міст прораховує найкоротший шлях до кореневого. Відповідний порт називається кореневим портом (Root Port). У будь-якого не кореневого комутатора може бути лише один кореневий порт.
- Після цього кожному сегменту мережі прораховується найкоротший шлях до кореневого порту. Міст, через який проходить цей шлях, стає призначеним для цієї мережі (Designated Bridge).Безпосередньо підключений до мережі порт моста призначеним портом.
- Далі на всіх мостах блокуються всі порти, що не є кореневими та призначеними. Через війну виходить деревоподібна структура (математичний граф) з вершиною як кореневого комутатора.
Алгоритм дії STP
- Після включення комутаторів до мережі, за умовчанням кожен (!) комутатор вважає себе кореневим (root).
- Потім комутатор починає посилати по всіх портах конфігураційні Hello BPDU пакети раз на 2 секунди.
- Виходячи з даних Hello BPDU пакетів, той комутатор набуває статусу root, тобто кореня.
- Після цього всі порти крім root port та designated port блокуються.
Відбувається посилка Hello-пакетів раз на 20 секунд або при пропаданні/відновленні якого-небудь лінка, з метою перешкоджання появі петель у мережі.
Змінами топології вважається зміни ролей DP та RP. Комутатор, який виявив зміни у топології відправляє Topology Change Notification (TCN) BPDU кореневому комутатору:
- Комутатор, на якому відбулися зміни, відправляє TCN BPDU через свій кореневий порт. Надсилання повідомлення повторюється кожен hello interval (2 секунди) доти, доки повідомлення не буде підтверджено.
- Наступний комутатор, який отримав TCN BPDU надсилає назад підтвердження. Підтвердження відправляється в наступному Hello BPDU, яке відправлятиме комутатор, виставленням прапора Topology Change Acknowledgement (TCA).
- Далі комутатори, у яких порт працює в ролі DP для сегмента, повторюють перші два кроки і відправляють TCN через свій кореневий порт і чекають на підтвердження.
Після того, як кореневий комутатор отримав TCN BPDU, він відправляє кілька наступних Hello з прапором TCA. Ці повідомлення отримують усі комутатори.При отриманні повідомлення hello з прапором TCA комутатор використовує короткий таймер (Forward Delay time) для того, щоб оновити записи в таблиці комутації. Оновлення виконується через те, що після змін у топології STP у таблиці комутації можуть зберігатися неправильні записи.
Якщо порт змінює стан з Blocking в Forwarding, він повинен пройти через два проміжні стани: Listening і Learning. Перехід з Forwarding до Blocking може виконуватися відразу.
Ролі та стани портів
- Root Port - кореневий порт комутатора
- Designated Port - призначений порт сегмента
- Nondesignated Port - непризначений порт сегмента
- Disabled Port — порт, який знаходиться у вимкненому стані
- Blocking - блокування
- Listening - прослуховування
- Learning - навчання
- Forwarding - пересилання
Функція root-guard "захист кореня"
Функція захисту кореня забезпечує можливість встановити розташування кореневого мосту в мережі. Це забезпечує впевненість у тому, що порт, на якому активізовано функцію захисту кореня, призначено. Зазвичай всі порти кореневого моста призначені, якщо два або більше портів кореневого мосту не з'єднані разом. Якщо міст отримує високопріоритетні STP елементи даних протоколу управління мостами (BPDU) у кореневому порту, для якого включена функція захисту кореня, захист кореня переводить порт у стан STP, що називається неузгодженістю кореня. Стан неузгодженості кореня аналогічний стану прослуховування. Трафік через порт у такому стані не пересилається. Таким чином, захист кореня задає розташування кореневого моста. Функцію захисту кореня необхідно увімкнути на всіх портах, які не повинні стати кореневими.
Зміни "місця розриву кільця" на устаткуванні Sprinter
За промовчанням на устаткуванні Sprinter протокол RSTP визначає «місце розриву кільця», тобто. який порт блокувати, виходячи з швидкості з'єднання, якій відповідає вартість з'єднання.
Нижче наведено відповідність швидкості та вартості з'єднання:
10 Mb/s: Cost=2 000 000
100 Mb/s: Cost=200 000
1000 Mb/s: Cost=20 000
Для того, щоб змінити «місце розриву кільця», необхідно змінювати вартість з'єднань у тих точках, зміна вартості яких дозволить визначити найкоротший шлях через раніше заблокований порт і заблокує порт в іншому сегменті.
Для зміни вартості з'єднання порту необхідно використати команду:
де port number – номер порту, для якого змінюємо вартість з'єднання
port cost – нове значення вартості з'єднання
Для малюнка, представленого нижче, ця команда виглядає так: