Главная страница

Учебник для вузов в. Олифер Н. Олифер Компьютерные Принципы, технологии, протоколы


Скачать 22.28 Mb.
НазваниеУчебник для вузов в. Олифер Н. Олифер Компьютерные Принципы, технологии, протоколы
АнкорOlifer_V_G__Olifer_N_A_-_Kompyuternye_seti_-_2010.pdf
Дата12.03.2017
Размер22.28 Mb.
Формат файлаpdf
Имя файлаOlifer_V_G__Olifer_N_A_-_Kompyuternye_seti_-_2010.pdf
ТипУчебник
#3698
страница45 из 99
1   ...   41   42   43   44   45   46   47   48   ...   99
ГЛАВА 14 Интеллектуальные
функции коммутаторов
Коммутируемые сети гораздо более производительны и масштабируемы, чем сети на разделяемой
среде. Тем не менее локальная сеть, коммутаторы которой поддерживают алгоритм прозрачного
моста, по-прежнему обладает рядом принципиальных недостатков. Прежде всего, остается нере­
шенной проблема надежности сети, так как древовидная топология коммутируемых локальных сетей
очень уязвима — отказ любой линии связи или коммутатора приводит к потере связности сети, сеть
фактически распадается на два или более сегмента.
Кроме того, такая сеть не имеет барьеров на пути ошибочного трафика, генерируемого любым из
ее узлов, так как алгоритм прозрачного моста подразумевает передачу кадров с неизученным или
широковещательным адресом всем узлам сети. Примером такой нежелательной ситуации является
широковещательный шторм, возникающий из-за неисправности всего одного сетевого адаптера
и приводящий к потере работоспособности всей сети. Говорят, что сеть на коммутаторах является
«плоской», поскольку такая сеть не имеет барьеров на пути нежелательного трафика.
Ограничения древовидной топологии преодолеваются с помощью интеллектуальных функций
коммутаторов, которые наделяют локальные сети дополнительными возможностями. Так, в ком­
мутируемых локальных сетях широко применяется протокол покрывающего дерева (STP), который
за счет резервных связей в сети автоматически находит новый вариант древовидной топологии
при отказах и тем самым обеспечивает отказоустойчивость сети. Алгоритм покрывающего дерева
был разработан одновременно с алгоритмом прозрачного моста (то есть в начале 80-х) и с тех пор
успешно применяется в локальных сетях; последняя версия этого алгоритма Rapid STP позволила
значительно сократить время перехода сети на резервную топологию.
Техника виртуальных локальных сетей (VLAN) позволяет разбивать коммутируемую локальную сеть
на несколько обособленных логических сегментов, предотвращающих распространение нежелатель­
ного трафика по всей сети, кроме того, это свойство улучшает управляемость сети. Обособленные
сегменты виртуальных локальных сетей затем могут быть соединены в составную сеть уже с помо­
щью маршрутизаторов, при этом благодаря программному делению сети на сегменты очень удобно
быстро поменять структуру сети.
Механизм агрегирования линий связи позволяет объединить несколько линий связи (физических
каналов) в один логический канал. Это повышает как производительность, так и надежность сети.
Агрегирование линий связи полезно в тех случаях, когда 10-кратное повышение скорости какой-
нибудь связи раздет перехода на более высокий уровень иерархии протокола Ethernet либо невоз­
можно (например, из-за того, что существующая скорость линии является предельной, каковой на
момент написания этой книги была скорость 10 Пбит/с), либо экономически или организационно
менее выгодно, чем параллельное использование нескольких имеющихся портов.
Новые развитые возможности коммутаторов локальных сетей обеспечивают поддержку методов
QoS для различных типов трафика, включая приоритетные и взвешенные очереди, обратную связь,
резервирование ресурсов.

Алгоритм покрывающего дерева
449
Алгоритм покрывающего дерева
В коммутируемых локальных сетях проблема обеспечения надежности сети имеет свою специфику: базовый протокол прозрачного моста корректно работает только в сети с древо­
видной топологией, в которой между любыми двумя узлами сети существует единственный маршрут. Тем не менее очевидно, что для надежной работы сети необходимо наличие аль­
тернативных маршрутов между узлами, которые можно использовать при отказе основного маршрута. Наиболее простым решением этой проблемы является построение сети с аль­
тернативными маршрутами, ручное нахождение связной древовидной топологии и ручное блокирование (то есть перевод в административное состояние «отключен») всех портов, которые не входят в найденную топологию. В случае отказа сети этот процесс должен повторяться, опять же в ручном режиме. Понятно, что надежность сети в этом случае ока­
зывается не очень высокой, так как время пребывания ее в неработоспособном состоянии будет исчисляться минутами: сначала нужно обнаружить отказ и локализовать его (то есть не только зафиксировать факт, что в сети что-то перестало работать, но и понять, какая именно связь пострадала и требует обхода), затем найти новый работоспособный вариант топологи сети (если он, конечно, существует), а потом его сконфигурировать.
Для автоматического выполнения перечисленных действий, то есть нахождения и конфигуриро­
вания активной древовидной топологии, мониторинга состояния ее связей и перехода к новой
древовидной топологии при обнаружении отказа связи в коммутируемых локальных сетях ис­
пользуются
алгоритм покрывающего дерева
(Spanning Tree Algorithm, STA) и реализующий
его
протокол покрывающего дерева
(Spanning Tree Protocol, STP).
Алгоритм покрывающего дерева, разработанный достаточно давно, в 1983 году, был при­
знан IEEE удачным решением и включен в ту же спецификацию 802.1D, в которойюписы- вается и сам алгоритм прозрачного моста. Сегодня протокол STP широко применяется в наиболее массовых устройствах современных локальных сетей — коммутаторах. Протокол
STP обновлялся несколько раз, последняя его редакция описана в документе 802.1D-2004; новая версия протокола получила название RSTP (Rapid STP, то есть быстрый протокол покрывающего дерева), так как предыдущие версии STP недостаточно быстро находили новую древовидную топологию — на это могло уйти до 50 секунд. Новая версия протокола покрывающего дерева — RSTP — работает значительно быстрее, затрачивая на поиск новой топологи несколько секунд.
Мы сначала рассмотрим классическую версию STP, а затем ее быстрый вариант — RSTP
Классическая версия STP
Протокол STP формализует сеть (рис. 14.1, а) в виде графа (рис. 14.1, 6), вершинами ко­
торого являются коммутаторы и сегменты сети.
Сегмент — это связная ^асть сети, не содержащая коммутаторов (и маршрутизаторов). Сег­
мент может быть разделяемым (во время создания алгоритма STA это был единственный тип сегмента) и включать устройства физического уровня — повторители/концентраторы, существование которых коммутатор, будучи устройством канального уровня, «не заме­
чает». Сегмент также может представлять собой двухточечный канал, в коммутируемых локальных сетях это единственный тип сегмента.

450
Глава 14. Интеллектуальные функции коммутаторов гтг
І п
б
— коммутаторы
Ц — повторители
F — дуплексный порт
Н — полудуплексный порт
— коммутаторы
> — сегменты
Рис. 14.1. Формализованное представление сети в соответствии с алгоритмом STA
Протокол покрывающего дерева обеспечивает построение древовидной топологии связей с единственным путем минимальной длины от каждого коммутатора и от каждого сегмента до некоторого выделенного корневого коммутатора — корня дерева. Единственность пути гарантирует отсутствие петель, а минимальность расстояния — рациональность маршрутов следования трафика от периферии сёти к ее магистрали, роль которой исполняет корневой коммутатор.
В качестве расстояния в STA используется метрика — традиционная для протоколов марш­
рутизации величина, обратно пропорциональная пропускной способности сегмента. В STA метрика определяется также как условное время передачи бита сегментом. В версии 802.1D-
1998 эта величина является 16-разрядной, а в версии 802.1D-2004 — 32-разрядной.
В версии 1998 года выбраны следующие значения метрики: 10 Мбит/с — 100,100 Мбит/с —
19, 1 Гбит/с — 4, 10 Гбит/с — 2. В текущей версии 802.1D-2004 используются такие зна­
чения метрик, которые расширяют диапазон скоростей сегментов до 10 Тбит/с (то есть с большим запасом относительно сегодняшнего уровня максимальной для Ethernet ско­
рости в 10 Гбит/с),Сдавая такому сегменту значение 2; соответственно сегмент 100 Гбит/с получает значение 200, 10 Гбит/с — 2000, 1 Гбит/с — 20 000, 100 Мбит/с — 200 000, а 10 Мбит/с - 2 000 000.
Идентификатор коммутатора — это 8-байтовое число, шесть младших байтов которого составляют МАС-адрес его блока управления, отрабатывающего алгоритм STA (напомним,

Алгоритм покрывающего дерева
451
что портам коммутаторов и мостов для выполнения своей основной функции М АС-адреса не требуются), а два старших байта называются приоритетом коммутатора (значение по умолчанию равно 32 768) и конфигурируются вручную, что, как мы увидим далее, позво­
ляет администратору сети влиять на процесс выбора корневого коммутатора.
Корневой порт коммутатора — это порт, который имеет кратчайшее расстояние до корне­
вого коммутатора (точнее, до любого из портов корневого коммутатора).
Идентификатором порта служит 2-байтовое число. Младший байт содержит порядковый номер данного порта в коммутаторе, а значение старшего байта является приоритетом
(значение по умолчанию равно 128) и задается администратором.
Назначенным коммутатором сегмента объявляется коммутатор, у которого расстояние до корневого коммутатора является минимальным.
Назначенный порт — это порт назначенного коммутатора сегмента, подключенный к дан­
ному сегменту.
Протокольными единицами данных моста (Bridge Protocol Data Unit, BPDU) назы­
ваются специальные пакеты, которыми периодически обмениваются коммутаторы для автоматического определения конфигурации дерева. Пакеты BPDU переносят данные об идентификаторах коммутаторов и портов, а также о расстоянии до корневого коммутатора.
Существует два типа сообщений, которые переносят пакеты BPDU: конфигурационные сообщения, называемые также сообщениями Hello, и сообщения с уведомлениями об изме­
нении конфигурации. Для доставки BPDU используется групповой адрес 01:80:С2:00:00:00, позволяющий организовать эффективный обмен данными.
Интервал Hello — это интервал между генерацией сообщений Hello; он настраивается администратором и обычно составляет от 1 до 4 секунд; по умолчанию — 2 секунды.
Три этапа построения дерева
Нарис. 14.2 приведен пример сети из стандарта 802.1D-2004, который иллюстрирует ра­
боту протокола STP. Мы также будем использовать этот пример в своем описании.
В этом примере сеть построена на восьми коммутаторах, которые имеют идентификаторы со значениями от 111 до 888 (для удобства записи здесь используются сокращенные до 3-х разрядов значения МAC-адресов коммутаторов). Все коммутаторы соединены друг с дру­
гом двухточечными связями, которые образуют сегменты А -N. Порты 3 и 4 коммутаторов с 555 по 888 соединены с конечными узлами сети, то есть компьютерами (на рисунке не показаны). Все связи в сети — это связи со скоростью 100 Мбит/с (Fast Ethernet).
Алгоритм STA определяет активную конфигурацию сети за три этапа.
Первый этап — определение корневого коммутатора, от которого строится дерево.
В качестве корневого коммутатора выбирается коммутатор с наименьшим значением
идентификатора. В исходном состоянии каждый коммутатор считает себя корневым, поэтому он генерирует и передает своим соседям сообщения Hello, в которых помещает свой идентификатор в качестве идентификатора корневого коммутатора. Как только коммутатор получает от соседа сообщение Hello, в котором содержится идентификатор корневого коммутатора, меньший его собственного, оц^перестает считать себя корневым коммутатором и генерировать свои сообщения Hello, но начинает ретранслировать сообще­
ния Hello, получаемые от соседей.

452
Глава 14. Интеллектуальные функции коммутаторов
Если администратор не вмешается в этот процесс, корневой коммутатор выбирается достаточно случайным образом — им станет устройство с минимальным МАС-адресом блока управления. Очевидно, что такой выбор может оказаться далеко не рациональным.
Например, при выборе коммутатора 555 в качестве корневого значительная часть трафика проходила бы через большое количество транзитных сегментов и коммутаторов. Поэтому пускать данный процесс «на самотек» администратору не стоит — лучше в него вмешаться и назначить корневой коммутатор осознанно (путем соответствующего конфигурирования старших байтов идентификаторов коммутатора), чтобы выбранный коммутатор действи- тельно занимал центральное место в соединениях сегментов.
В нашем примере мы предполагаем, что администратор не стал менять приоритеты комму­
таторов, так что у всех коммутаторов они остались равными значению 32 768 (значение по умолчанию), некорневым коммутатором стал коммутатор с идентификатором 111.
Второй этап — выбор корневого порта для каждого коммутатора.
Корневым портом коммутатора является тот порт, расстояние от которого до корневого коммутатора является минимальным. Сам корневой коммутатор корневых портов не имеет.

Алгоритм покрывающего дерева
453
Для определения корневого порта каждый коммутатор использует пакеты Hello, ретран­
слируемые ему другими коммутаторами. На основании этих пакетов каждый коммутатор определяет минимальные расстояния от всех своих портов до корневого коммутатора. При ретрансляции сообщения Hello каждый коммутатор увеличивает указанное в сообщении расстояние до корня на метрику того сегмента, из которого принят данный пакет. Тем са­
мым в пакете Hello по мере прохождения через коммутаторы наращивается поле, показы­
вающее расстояние до корневого коммутатора. Например, если считать, что все сегменты в рассматриваемом примере являются сегментами Ethernet со скоростью 100 Мбит/с, то коммутатор 222, приняв из сегмента А пакет Hello со значением расстояния, равным 0, увеличивает его на 200 000 условных единиц (если коммутатор работает с величинами метрики, рекомендованными версией стандарта STP от 2004 года).
Ретранслируя пакеты, каждый коммутатор для каждого своего порта запоминает мини­
мальное расстояние до корня, встретившееся во всех принятых этим портом пакетах Hello.
По завершении процедуры определения конфигурации покрывающего дерева каждый коммутатор находит свой корневой порт (с минимальным расстоянием до корня).
При равных метриках для разрешения неоднозначности к процедуре выбора минимального расстояния привлекаются значения идентификаторов коммутаторов и портов. Предпо­
чтение отдается портам и коммутаторам с наименьшими идентификаторами. Например, у коммутатора 222 порты 1 и 2 находятся на одинаковом расстоянии до корневого комму­
татора 111 — оба эти порта непосредственно связаны через сегменты А и В с коммутатором
111, а значит, получают пакеты Hello с метрикой, равной 0. Так как идентификатор порта 1 меньше идентификатора порта 2, то корневым портом коммутатора 222 выбирается порт 1.
По аналогичной причине корневым портом коммутатора 555 становится порт 1, а не порт 2.
Оба эти порта получают сообщения Hello, генерируемые корневым коммутатором 111, с наименьшим значением метрики 200 000. Порт 1 получает такие сообщения по маршру­
ту: порт 1 коммутатора 111 — сегмент С — порт 1 коммутатора 333 — порт 6 коммутатора
333 - сегмент G, соответственно порт 2 получает их по маршруту: порт 3 коммутатора
111 — сегмент Е — порт 1 коммутатора 444 — порт б коммутатора 444 — сегмент /.
Третий этап — выбор назначенных коммутаторов и портов для каждого сегмента сети.
Назначенным является тот коммутатор (из числа коммутаторов, непосредственно под­
ключенных к данному сегменту), у которого расстояние до корневого моста является минимальным (точнее, расстояние от корневого порта этого коммутатора до корневого коммутатора). Назначенные порты для сегментов исполняют ту же роль, что корневые порты для коммутаторов — они находятся на кратчайшем пути до корневого коммутатора.
Как и при выборе корневого порта, здесь используется распределенная процедура. Каждый коммутатор сегмента, прежде всего, исключает из рассмотрения свой корневой порт (для сегмента, к которому он подключен, всегда существует другой коммутатор, расположенный ближе к корню). Для каждого из оставшихся портов выполняется сравнение принятых по ним минимальных расстояний до корня (еще до наращивания на метрику сегмента) с расстоянием до корня корневого порта данного коммутатора. Если все принятые на этом порту расстояния оказываются больше, чем расстояние от собственного корневого порта, значит, для сегмента, к которому подключен порт, кратчайший путь к корневому комму­
татору проходит через него, и он становится назначенным. Коммутатор делает все свои порты, для которых такое условие выполняется, назначенными. Когда имеется несколько портов с одинаковым кратчайшим расстоянием до корневого коммутатора, выбирается порте наименьшим идентификатором.

454
Глава 14. Интеллектуальные функции коммутаторов
В рассматриваемом примере коммутатор 111 при проверке порта 1 обнаруживает, что через этот порт принимаются пакеты с минимальным расстоянием 200 ООО (это пакеты от порта 1 коммутатора 222, который ретранслирует через все свои порты сообщения
Hello, полученные от коммутатора 111, но с измененной метрикой, в частности передает их и коммутатору 111). Так как коммутатор 111 является корневым, то его расстояние до корневого коммутатора равно нулю, то есть меньше, чем у получаемых через порт 1 сообщений. Поэтому коммутатор 1 объявляет свой порт 1 назначенным для сегмента А.
Коммутатор 222 не может объявить свой порт 1 назначенным для сегмента Л, так как через него он получает сообщения с минимальной метрикой 0, а у его корневого порта метрика равна 200 000.
На выполнение всех трех этапов коммутаторам сети отводится по умолчанию 15 с. Эта стадия работы портов называется стадией прослушивания (listening), поскольку порты слушают только сообщения BPDU и не передают пользовательских кадров. Считается, что порты находятся в заблокированном состоянии, которое относится только к пользователь­
ским кадрам, в то время как кадры BPDU обрабатываются. Предполагается, что в стадии прослушивания каждый коммутатор получит столько пакетов Hello, сколько потребуется для определения состояния своих портов.
Все остальные порты, кроме корневых и назначенных, каждым коммутатором блокиру­
ются и не могут передавать пользовательские кадры. Математически доказано, что при таком выборе активных портов в сети исключаются петли, а оставшиеся связи образуют
покрывающее дерево (если оно вообще может быть построено при существующих связях в сети).
Результат работы протокола STP для нашего примера показан на рис. 14.3.
На рисунке корневые порты коммутаторов отмечены символом R, назначенные порты за­
крашены, а заблокированные зачеркнуты.
После построения покрывающего дерева коммутатор начинает принимать (но не продви­
гать) пакеты данных и на основе их адресов источника строить таблицу продвижения. Это обычный режим обучения прозрачного моста, который ранее нельзя было активизировать, так как порт не был уверен в том, что он останется корневым ири назначенным и будет передавать пакеты данных. Стадия обучения (learning) также выдерживается в течение интервала 15 с. При этом порт продолжает участвовать в работе алгоритма STA, так что поступление пакетов BPDU с лучшими параметрами переводит его в заблокированное состояние.
И только после двукратной выдержки по таймеру порт переходит в стадию продвижения
(forwarding) и начинает продвигать пользовательские кадры в соответствии с построенной таблицей (которая продолжает модифицироваться, отражая изменения в структуре сети).
Фактически в нашем примере в продвижении пользовательских пакетов после построения активной топологии участвуют только коммутаторы 111,333 и с 555 по 888.
В процессе нормальной работы корневой коммутатор продолжает генерировать пакеты
Hello, а остальное коммутаторы получают их через свои корневые порты и ретранслируют через назначенные порты. У коммутатора могут отсутствовать назначенные порты, как у коммутаторов 222 и 444, но он все равно участвует в работе протокола STA, так как корне­
вой порт принимает служебные пакеты BPDU.

Алгоритм покрывающего дерева
1   ...   41   42   43   44   45   46   47   48   ...   99


написать администратору сайта