Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
102
Добавлен:
05.03.2016
Размер:
2.22 Mб
Скачать

Лекція 17 Протокол запобігання петель комутації stp Підтримка алгоритму Spanning Tree

Алгоритм покриваючого дереваSpanning Tree Algorithm (STA) дозволяє комутаторам автоматично визначати деревоподібну конфігурацію зв'язків у мережі при довільному з'єднанні портів між собою. Як ми вже відзначали, для нормальної роботи комутатора потрібна відсутність замкнутих маршрутів у мережі. Ці маршрути можуть створюватися адміністратором спеціально для утворення резервних зв'язків або ж виникати випадковим чином, що цілком можливо, якщо мережа має численні зв'язки, а кабельна система погано структурована або документована.

Підтримуючий алгоритм STA комутатори автоматично створюють активну деревоподібну конфігурацію зв'язків (тобто зв'язану конфігурацію без петель) на безлічі всіх зв'язків мережі. Така конфігурація називається покриваючим деревом - Spanning Tree (іноді її називають основним деревом), і її назва дала ім'я всьому алгоритму. Алгоритм Spanning Tree описаний у стандарті IEEE 802.1D.

Комутатори знаходять покриваюче дерево адаптивно, за допомогою обміну службовими пакетами. Реалізація в комутаторі алгоритму STA дуже важлива для роботи в великих мережах - якщо комутатор не підтримує цей алгоритм, то адміністратор повинен самостійно визначити, які порти потрібно перевести в заблокований стан, щоб виключити петлі. До того ж при відмові якого-небудь кабелю, порту або комутатора адміністратор повинен, по-перше, виявити факт відмови, а по-друге, ліквідувати наслідки відмови, перевівши резервний зв'язок у робочий режим шляхом активізації деяких портів. За підтримкою комутаторами мережі протоколу Spanning Tree відмови виявляються автоматично, за рахунок постійного тестування зв'язаності мережі службовими пакетами. Після виявлення втрати зв'яку протокол будує нове покриваюче дерево, якщо це можливо, і мережа автоматично відновлює працездатність.

Алгоритм Spanning Tree визначає активну конфігурацію мережі в три етапи.

  1. Спочатку в мережі визначається кореневий комутатор (root switch), від якого будується дерево. Кореневим комутатор може бути обраний автоматично або призначений адміністратором. При автоматичному виборі кореневим стає комутатор з меншим значенням Мас-адреси його блоку керування.

  2. Потім, на другому етапі, для кожного комутатора визначається кореневий порт (root port) - це порт, що має по мережі найкоротшу відстань до кореневого комутатора (точніше, до кожного з портів кореневого комутатора).

  3. І нарешті, на третьому етапі для кожного сегмента мережі вибирається так званий призначений порт (designated port) - це порт, що має найкоротшу відстань від даного сегмента до кореневого комутатора. Після визначення кореневих і призначених портів кожен комутатор блокує інші порти, які не потрапили в ці два класи портів. Можна математично довести, що при такому виборі активних портів у мережі виключаються петлі й зв'язки, що залишилися, утворять покриваюче дерево (якщо воно може бути побудовано при існуючих зв'язках у мережі).

Поняття відстані відіграє важливу роль у побудові покриваючого дерева. Саме за цим критерієм вибирається єдиний порт, що з'єднує кожен комутатор з кореневим комутатором, і єдиний порт, що з'єднує кожен сегмент мережі з кореневим комутатором.

На мал. 4.38 показаний приклад побудови конфігурації покриваючого дерева для мережі, що складається з 5 сегментів й 5 комутаторів. Кореневі порти зафарбовані темними кольорами, призначені порти не зафарбовані, а заблоковані порти перекреслені. В активній конфігурації комутатори 2 й 4 не мають портів, що передають кадри даних, тому вони зафарбовані як резервні. Відстань до кореня визначається як сумарний умовний час на передачу одного біта даних від порту даного комутатора до порту кореневого комутатора. При цьому вважається, що час внутрішніх передач даних (з порту на порт) комутатором не враховується, а враховується тільки час на передачу даних по сегментах мережі, що з'єднує комутатори. Умовний час сегмента розраховується як час, затрачений на передачу одного біта інформації в 10 наносекундих одиницях між безпосередньо зв'язаними по сегменту мережі портами. Так, для сегмента Ethernet цей час дорівнює 10 умовним одиницям, а для сегмента Token Ring 16 Мбіт/с - 6,25. (Алгоритм STA не пов'язаний з яким-небудь певним стандартом канального рівня, він може застосовуватися до комутаторів, що з'єднують мережі різних технологій.)

У наведеному прикладі передбачається, що всі сегменти працюють на одній швидкості, тому вони мають однакові умовні відстані, які тому не показані на малюнку.

Для автоматичного визначення початкової активної конфігурації дерева всі комутатори мережі після їхньої ініціалізації починають періодично обмінюватися спеціальними пакетами, які називаються протокольними блоками даних моста — BPDU (Bridge Protocol Data Unit), що відбиває факт первісної розробки алгоритму STA для мостів.

Мал. 4.38. Побудова покриваючого дерева мережі за алгоритмом STA

Пакети BPDU містяться в полі даних кадрів канального рівня, наприклад кадрів Ethernet або FDDI. Бажано, щоб всі комутатори підтримували загальну групову адресу, за допомогою якого кадри, що містять пакети BPDU, могли б одночасно передаватися всім комутаторам мережі. Інакше пакети BPDU розсилаються широкомовно.

Поля пакета BPDU перераховані нижче.

  • Ідентифікатор версії протоколу STA - 2 байти. Комутатори повинні підтримувати ту саму версію протоколу STA, інакше може встановитися активна конфігурація з петлями.

  • Тип BPDU - 1 байт. Існують два типи BPDU - конфігураційний BPDU, тобто заявка на можливість стати кореневим комутатором, на підставі якої відбувається визначення активної конфігурації, і BPDU повідомлення про реконфігурування, що посилає комутатором, що виявив подію, яка вимагає проведення реконфігурації - відмова лінії зв'язку, відмова порту, зміна пріоритетів комутатора або портів.

  • Прапори - 1 байт. Один біт містить прапор зміни конфігурації, другий - прапор підтвердження зміни конфігурації.

  • Ідентифікатор кореневого комутатора - 8 байт.

  • Відстань до кореня - 2 байти.

  • Ідентифікатор комутатора - 8 байт.

  • Ідентифікатор порту - 2 байти.

  • Час життя повідомлення - 2 байти. Виміряється в одиницях по 0,5 с, служить для виявлення застарілих повідомлень. Коли пакет BPDU проходить через комутатор, той додає вчасно життя пакета час його затримки даним комутатором.

  • Максимальний час життя повідомлення - 2 байти. Якщо пакет BPDU має час життя, що перевищує максимальне, то він ігнорується комутаторами.

  • Інтервал hello, через який посилають пакети BPDU.

  • Затримка зміни станів - 2 байти. Затримка визначає мінімальний час переходу портів комутатора в активний стан. Така затримка необхідна, щоб виключити можливість тимчасового виникнення петель при неодночасній зміні станів портів під час реконфігурації. У пакета BPDU повідомлення про реконфігурацію відсутні всі поля, крім двох перших.

Ідентифікатори комутаторів складаються з 8 байт, причому молодші 6 є Мас-адреса блоку управління комутатора. Старші 2 байти у вихідному стані заповнені нулями, але адміністратор може змінити значення цих байтів, тим самим призначивши певний комутатор кореневим.

Після ініціалізації кожен комутатор спочатку вважає себе кореневим. Тому він починає через інтервал hello генерувати через всі свої порти повідомлення BPDU конфігураційного типу. У них він указує свій ідентифікатор як ідентифікатор кореневого комутатора (і як ідентифікатор даного комутатора також), відстань до кореня встановлюється в 0, а як ідентифікатор порту вказується ідентифікатор того порту, через який передається BPDU. Як тільки комутатор одержує BPDU, у якому є ідентифікатор кореневого комутатора, зі значенням, меншим його власного, він перестає генерувати свої власні кадри BPDU, а починає ретранслювати тільки кадри нового претендента на звання кореневого комутатора. На мал. 4.38 у комутатора 1 ідентифікатор має найменше значення, раз він став у результаті обміну кадрами кореневим.

При ретрансляції кадрів кожен комутатор нарощує відстань до кореня, зазначена в що пришли BPDU, на умовний час сегмента, по якому прийнятий даний кадр. Тим самим у кадрі BPDU, по мірі проходження через комутатори, накопичується відстань до кореневого комутатора. Якщо вважати, що всі сегменти розглянутого приклада є сегментами Ethernet, то комутатор 2, прийнявши від комутатора BPDU по сегменті 1 з відстанню, яка дорівнює 0, нарощує його на 10 одиниць.

Ретранслюючи кадри, кожен комутатор для кожного свого порту запам'ятовує мінімальну відстань до кореня, що зустрілося у всіх прийнятих цим портом кадрах BPDU. При завершенні процедури встановлення конфігурації покриваючого дерева (за часом) кожен комутатор знаходить свій кореневий порт - це порт, для якого мінімальна відстань до кореня виявилося менше, ніж в інших портів. Так, комутатор 3 вибирає порт А в якості кореневого, оскільки по порту А мінімальна відстань до кореня дорівнює 10 (BPDU з такою відстанню прийнятий від кореневого комутатора через сегмент 1). Порт В комутатора 3 виявив у прийнятих кадрах мінімальна відстань в 20 одиниць - це відповідало випадку проходження кадру від порту В кореневого моста через сегмент 2, потім через міст 4 і сегмент 3.

Крім кореневого порту комутатори розподіленим образом вибирають для кожного сегмента мережі призначений порт. Для цього вони виключають із розгляду свій кореневий порт (для сегмента, до якого він підключений, завжди існує інший комутатор, що ближче розташований до кореня), а для всіх своїх портів, що залишилися, порівнюють прийняті по них мінімальні відстані до кореня з відстанню до кореня свого кореневого порту. Якщо в якого-небудь свого порту прийняті їм відстані до кореня більше, ніж відстань маршруту, що пролягає через свій кореневий порт, то це значить, що для сегмента, до якого підключений даний порт, найкоротша відстань до кореневого комутатора веде саме через даний порт. Комутатор робить всі свої порти, у яких така умова виконується, призначеними.

Якщо в процесі вибору кореневого порту або призначеного порту кілька портів виявляються рівними за критерієм найкоротшої відстані до кореневого комутатора, то вибирається порт із найменшим ідентифікатором.

Як приклад розглянемо вибір кореневого порту для комутатора 2 і призначені порти для сегмента 2. Міст 2 при виборі кореневого порту зштовхнувся із ситуацією, коли порт А и порт В мають рівну відстань до кореня - по 10 одиниць (порт А приймає кадри від порту В кореневого комутатора через один проміжний сегмент - сегмент 1, а порт В приймає кадри від порту А кореневого комутатора також через один проміжний сегмент - через сегмент 2). Ідентифікатор А має менше числове значення, чим В (у силу впорядкованості кодів символів), тому порт А став кореневим портом комутатора 2.

При перевірці порту В на випадок, чи не є він призначеним для сегмента 2, комутатор 2 виявив, що через цей порт він приймав кадри із зазначеними у них мінімальною відстанню 0 (це були кадри від порту В кореневого комутатора 1). Тому що власний кореневий порт у комутатора 2 має відстань до кореня 10, то порт В не є призначеним для сегмента 2.

Потім всі порти, крім кореневого й призначених, переводяться кожним комутатором у заблокований стан. На цьому побудова покриваючого дерева закінчується.

У процесі нормальної роботи кореневий комутатор продовжує генерувати службові кадри BPDU, а інші комутатори продовжують їх приймати своїми кореневими портами й ретранслювати призначеними. Якщо в комутатора немає призначених портів, як у комутаторів 2 й 4, то вони однаково продовжують брати участь у роботі протоколу Spanning Tree, приймаючи службові кадри кореневим портом. Якщо після закінчення тайм-ауту кореневий порт будь-якого комутатора мережі не одержує службовий кадр BPDU, то він ініціює нову процедуру побудови покриваючого дерева, сповіщаючи при цьому інші комутатори BPDU повідомлення про реконфигурацію. Одержавши такий кадр, всі комутатори починають знову генерувати BDPU конфігураційного типу, у результаті чого встановлюється нова активна конфігурація.

Соседние файлы в папке Знайшов_на_компі_в_501-2014-06-05