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

ГЛАВА 16 Интеллектуальные функции

коммутаторов

Коммутаторы позволяют значительно увеличивать размеры сетей за счет разбиения разделяемой среды на части или полного отказа от принципа разделения среды в пользу коммутируемых локальных сетей Однако при росте сетей возникают новые проблемы, с которыми не в состоянии справиться коммутатор, работа которого строится лишь на основе алгоритма прозрачного моста. Прежде всего, остается нерешенной проблема надежности сети, так как древовидная топология коммутируемых локальных сетей очень уязвима — отказ любой линии связи или коммутатора приводит к потере связности сети, сеть фактически распадается на два или более сегмента.

Ограничения древовидной топологии преодолеваются благодаря интеллектуальным функциям коммутаторов, которые наделяют локальные сети дополнительными возможностями. Так, в коммутируемых локальных сетях широко применяется алгоритм покрывающего дерева (STA), который позволяет автоматически находить новый вариант древовидной топологии при отказах коммутаторов или линий связи и тем самым обеспечить отказоустойчивость сети. Алгоритм покрывающего дерева был разработан одновременно с алгоритмом прозрачного моста (то есть в начале 80-х) и с тех пор успешно применяется в локальных сетях.

Сравнительно недавно, с началом широкого применения коммутируемых локальных сетей был разработан механизм агрегирования линий связи. Поддержка коммутаторами агрегирования позволяет объединять несколько линий связи (физических каналов) в один логический канал. Это повышает как производительность, так и надежность сети.

Новые развитые возможности коммутаторов локальных сетей обеспечивают поддержку методов QoS для различных типов трафика, включая приоритетные и взвешенные очереди, обратную связь, резервирование ресурсов.

Несмотря на прогресс, обеспечиваемый алгоритмом покрывающего дерева и механизмом агрегирования линий связи, в локальных сетях, построенных только на коммутаторах и не использующих маршрутизаторы, остается немало проблем. Часть из этих проблем позволяет снять техника виртуальных локальных сетей (VLAN). Функция VLAN дает возможность за счет конфигурирования коммутаторов (то есть программным, а не физическим способом, соединяя и разъединяя разъемы кабелей) разделить локальную сеть на несколько обособленных логических сегментов. Такие обособленные сегменты затем могут быть соединены в составную сеть уже с помощью протокола сетевого уровня, при этом благодаря программному делению сети на сегменты можно очень удобно и быстро менять структуру сети.

Алгоритм покрывающего дерева

Список ключевых слов: алгоритм покрывающего дерева, протокол покрывающего дерева, сегмент сети, корневой коммутатор, метрика, идентификатор коммутатора, корневой порт, идентификатор порта, назначенный порт, назначенный коммутатор, протокольная единица данных моста.

В тех локальных сетях, где технологии и оборудование реализуют функции только первого и второго уровней модели ISO/OSI, проблема использования альтернативных путей имеет свою специфику: базовые протоколы поддерживают только древовидные, то есть не содержащие замкнутых контуров, топологии связей.

Для автоматического перевода в резервное состояние всех альтернативных связей, не вписывающихся в топологию дерева, в локальных сетях используются алгоритм покрывающего дерева (Spanning Tree Algorithm, STA) и реализующий его протокол покрывающего дерева (Spanning Tree Protocol, STP).

Алгоритм покрывающего дерева, разработанный достаточно давно, в 1983 году, был признан IEEE удачным и включен в ту же спецификацию 802.1D, в которой описывается и сам алгоритм работы прозрачного моста. Хотя мосты, для которых был разработан алгоритм, сегодня уже относятся к практически «вымершему» виду коммуникационных устройств, STA широко применяется в наиболее массовых устройствах современных локальных сетей — коммутаторах. Алгоритм STA позволил без применения маршрутизаторов только на основе коммутаторов строить крупные локальные сети, за счет избыточных связей обладающие высокой надежностью.

Производители оборудования, как правило, реализуют алгоритм STA в коммутаторах, предлагаемых для тех участков сети, к которым предъявляются повышенные требования к надежности, — в магистральных коммутаторах, а также в коммутаторах отделов и крупных рабочих групп.

Необходимые определения

Алгоритм STA формализует сеть (рис. 16.1, а) в виде графа (рис. 16.1, б), вершинами которого являются коммутаторы и сегменты сети.

Сегмент — связная часть сети, не содержащая коммутаторов (и маршрутизаторов). Сегмент может быть разделяемым (во время создания алгоритма STA это был единственный тип сегмента) и включать устройства физического уровня: повторители/концентраторы, существование которых коммутатор, будучи устройством канального уровня, «не замечает». Сегодня сегмент часто представляет собой дуплексный двухточечный канал между смежными портами двух коммутаторов.

Алгоритм покрывающего дерева обеспечивает построение древовидной топологии связей с единственным путем минимальной длины от каждого коммутатора и от каждого сегмента до некоторого выделенного корневого коммутатора — корня дерева. Единственность пути гарантирует отсутствие петель, а минимальность расстояния — рациональность маршрутов следования трафика от периферии сети к ее магистрали, роль которой исполняет корневой коммутатор.

Рис. 16.1. Формализованное представление сети в соответствии с алгоритмом STA

В качестве расстояния в STA используется метрика, традиционная для протоколов маршрутизации, — величина, обратно пропорциональная пропускной способности сегмента. В STA метрика также определяется как условное время передачи бита сегментом. Это время измеряется в 10-наносекундных единицах. Так, для сегмента Ethernet 10 Мбит/с метрика равна 10 условных единиц, для сегмента Ethernet 100 Мбит/с — 1, а для сегмента Token Ring 16 Мбит/с — 6,25. Учитывая, что сети становятся все более и более скоростными, существует так называемая пересмотренная версия шкалы условных единиц: 10 Мбит/с — 100, 100 Мбит/с — 19, 1 Гбит/с — 4, 10 Гбит/с — 2.

Идентификатор коммутатора — это 8-байтовое число, шесть младших байтов которого составляет МАС-адрес его блока управления, отрабатывающего алгоритм STA (напомним, что портам коммутаторов и мостов для выполнения своей основной функции МАС-адреса не требуются), а два старших байта конфигурируются вручную, что, как мы дальше увидим, позволяет администратору сети влиять на процесс выбора корневого коммутатора.

Корневой порт коммутатора — порт, который имеет кратчайшее расстояние до корневого коммутатора (точнее, до любого из портов корневого коммутатора).

Идентификатором порта служит 2-байтовое число. Младший байт содержит порядковый номер данного порта в коммутаторе, а значение старшего байта задается администратором.

Назначенный порт — порт, который среди всех портов всех коммутаторов данного сегмента сети имеет минимальное расстояние до корневого коммутатора.

Назначенным коммутатором сегмента объявляется коммутатор, которому принадлежит назначенный порт данного сегмента.

Протокольными единицами данных моста (Bridge Protocol Data Unit, BPDU) называются специальные пакеты, которыми периодически обмениваются коммутаторы для автоматического определения конфигурации дерева. Пакеты BPDU переносят данные об идентификаторах коммутаторов и портов, а также о расстоянии до корневого коммутатора. Интервал генерации пакетов BPDU, называемый в алгоритме интервалом hello, настраивается администратором и обычно составляет от 1 до 4 секунд.

Три этапа построения дерева

На рис. 16.2 приведен пример сети, которую мы будем использовать для иллюстрации процедуры построения покрывающего дерева.

Рис. 16.2. Пример покрывающего дерева STA

Алгоритм STA определяет активную конфигурацию сети за три этапа.

Первый этап — определение корневого коммутатора, от которого строится дерево.

В соответствии с алгоритмом STA в качестве корневого коммутатора выбирается коммутатор с наименьшим значением идентификатора. Если администратор не вмешается в этот процесс, корневой коммутатор будет выбран достаточно случайным образом — им станет устройство с минимальным МАС-адресом блока управления. Очевидно, что такой выбор может оказаться далеко не рациональным. Например, при выборе коммутатора 5 в качестве корневого значительная часть трафика проходила бы через большое количество транзитных сегментов и коммутаторов. Поэтому не стоит администратору пускать данный процесс «на самотек» — лучше в него вмешаться и назначить корневой коммутатор осознанно (за счет соответствующего конфигурирования старших байтов идентификаторов коммутатора), чтобы выбранный коммутатор действительно занимал центральное место в соединениях сегментов. Предположим, что идентификаторы коммутаторов совпадают с их номерами, приведенными на рисунке. Тогда корневым коммутатором является коммутатор 1.

Второй этап — выбор корневого порта для каждого коммутатора.

Расстояние определяется по пакетам BPDU, поступающим от корневого коммутатора. На основании этих пакетов каждый коммутатор может определить минимальные расстояния от всех своих портов до корневого коммутатора. Каждый коммутатор анализирует и ретранслирует BPDU, увеличивая расстояние до корня, указанное в полученном пакете BPDU, на условное время того сегмента, из которого принят данный пакет. Тем самым в пакете BPDU по мере прохождения через коммутаторы наращивается расстояние до корневого коммутатора. Например, если считать, что все сегменты в рассматриваемом примере являются сегментами Ethernet 10 Мбит/с, то коммутатор 2, приняв из сегмента 1 пакет BPDU с расстоянием, равным 0, увеличивает его на 10 условных единиц (измерения метрики).

Ретранслируя пакеты, каждый коммутатор для каждого своего порта запоминает минимальное расстояние до корня, встретившееся во всех принятых этим портом пакетах BPDU. По завершении процедуры определения конфигурации покрывающего дерева каждый коммутатор находит свой корневой порт (с минимальным расстоянием до корня).

При равных метриках для разрешения неоднозначности к процедуре выбора минимального расстояния привлекаются значения идентификаторов коммутаторов и портов. Предпочтение отдается портам и коммутаторам с наименьшими идентификаторами. Например, для сегмента 3 существует два равноценных в отношении метрики пути к корневому коммутатору 1 — через коммутатор 3 и через коммутатор 4. Выбранный путь проходит через коммутатор, с меньшим значением идентификатора, а именно 3 (номера портов внутри коммутатора в данном случае совпадают, но при сравнении сначала принимается во внимание идентификатор коммутатора, а потом уже номер порта).

В нашем примере коммутатор 3 выбирает порт 1 в качестве корневого, так как для него минимальное расстояние до корня равно 10 условных единиц (пакет BPDU с таким расстоянием принят от корневого коммутатора через сегмент 1). Порт 2 коммутатора 3 устанавливает на основании принятых пакетов, что минимальное расстояние равно 20 условных единиц — это соответствует прохождению пакета от порта 2 корневого коммутатора через сегмент 2, затем через коммутатор 4 и сегмент 3. Коммутатор 2 при выборе корневого порта «сталкивается» с ситуацией, когда у его портов 1 и 2 равное расстояние до корня — по 10 условных единиц (порт 1 принимает пакеты от порта 1 корневого коммутатора через один промежуточный сегмент — сегмент 1, так же как порт 2 получает пакеты от порта 2 корневого коммутатора через сегмент 2). Поскольку числовое значение идентификатора порта 1 меньше, чем порта 2, то корневым и выбирается порт 1.

Третий этап — выбор назначенных порта и коммутатора.

Из всех портов всех коммутаторов в пределах каждого сегмента сети выбирается назначенный порт и соответствующий данному порту назначенный коммутатор сегмента. Аналогично выбору корневого порта здесь используется распределенная процедура. Каждый коммутатор сегмента прежде всего исключает из рассмотрения свой корневой порт (для сегмента, к которому он подключен, всегда существует другой коммутатор, который расположен ближе к корню). Для каждого из оставшихся портов выполняется сравнение принятых по ним минимальных расстояний до корня (еще до наращивания на условное время сегмента) с расстоянием до корня корневого порта данного коммутатора. Если все принятые на этом порту расстояния оказываются больше, чем расстояние от собственного корневого порта, значит, для сегмента, к которому подключен порт, кратчайший путь к корневому коммутатору проходит через него, и он становится назначенным. Коммутатор делает все свои порты, для которых такое условие выполняется, назначенными. Когда имеется несколько портов с одинаковым кратчайшим расстоянием до корневого коммутатора, выбирается порт с наименьшим идентификатором.

В рассматриваемом примере коммутатор 2 при проверке порта 2 обнаруживает, что через этот порт принимаются пакеты с минимальным расстоянием 0 (это пакеты от порта 2 корневого коммутатора 1). Так как собственный корневой порт у коммутатора 2 имеет расстояние до корня 10, то порт 2 этого коммутатора не является назначенным для сегмента 2.

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

Все остальные порты, кроме корневых и назначенных, блокируются (на рисунке они перечеркнуты), и в результате завершается построение покрывающего дерева. Математически доказано, что при таком выборе активных портов в сети исключаются петли, и оставшиеся связи образуют покрывающее дерево (если оно вообще может быть построено при существующих связях в сети).

После построения покрывающего дерева коммутатор начинает принимать (но не продвигать) пакеты данных и на основе их адресов источника строить таблицу продвижения. Это обычный режим обучения прозрачного моста, который ранее нельзя было активизировать, так как порт не был уверен в том, что он останется корневым или назначенным и будет передавать пакеты данных. Состояние обучения по умолчанию также выдерживается в течение интервала 15 с. При этом порт продолжает участвовать в работе алгоритма STA, так что поступление пакетов BPDU с лучшими параметрами переводит его в заблокированное состояние.

Примечание. Отметим, что выбранная по алгоритму STA древовидная топология в общем случае не оптимальна для всех путей передачи трафика. Так, в описываемом примере при передаче пакетов из сегмента 3 в сегмент 2 трафик проходит путь: коммутатор 3 — сегмент 1 — коммутатор 1 — сегмент 2. Метрика этого пути — 30. Если бы порт 2 коммутатора 4 не был заблокирован, то путь мог бы быть короче — через коммутатор 4. При этом метрика пути была бы равна 20 — лучше, чем в предыдущем случае. Такой вариант возможен при выборе кратчайшего пути к корневому коммутатору для сегмента 4 через коммутатор 4, а не 3, например, за счет соответствующего назначения старших частей идентификаторов коммутаторов. Однако при таком варианте путь из сегмента 4 в сегмент 1 уже не окажется оптимальным.

И только после двукратной выдержки по таймеру порт переходит в состояние продвижения и обрабатывает пакеты данных в соответствии с построенной таблицей (которая продолжает модифицироваться, отражая изменения в структуре сети).

В процессе нормальной работы корневой коммутатор продолжает генерировать конфигурационные пакеты BPDU с интервалом hello, а остальные коммутаторы получают их через свои корневые порты и ретранслируют через назначенные порты. У коммутатора могут отсутствовать назначенные порты, как у коммутаторов 2 и 4, но он все равно участвует в работе протокола STA, так как корневой порт принимает служебные пакеты BPDU.

Если по истечении максимального времени жизни сообщения (по умолчанию — 20 с) корневой порт любого коммутатора сети не получает служебный пакет BPDU, то он инициализирует новую процедуру построения покрывающего дерева. При этом на все порты генерируется и передается пакет BPDU, в котором коммутатор указывает себя в качестве корневого. Аналогичным образом ведут себя и другие коммутаторы сети, у которых истек таймер максимального времени жизни сообщения, в результате чего выбирается новая активная конфигурация.

Недостатки и достоинства STA

Одним из основных достоинств алгоритма покрывающего дерева является то, что, в отличие от многих упрощенных алгоритмов, где переход в резервное соединение осуществляется исключительно при отказе соседнего устройства, он принимает решение о реконфигурировании с учетом не только связей с соседями, но и связей в отдаленных сегментах сети.

К недостаткам алгоритма можно отнести то, что в сетях с большим количеством коммутаторов время определения новой активной конфигурации может оказаться слишком большим. Если в сети используются заданные по умолчанию значения тайм-аутов, переход на новую конфигурацию может занять свыше 50 секунд: 20 секунд понадобится на констатацию факта потери связи с корневым коммутатором (истечение таймера — единственный способ узнать об этом событии в стандартном варианте STA) и еще 2 x 15 секунд потребуется для перехода портов в состояние продвижения.

Имеющиеся многочисленные нестандартные версии STA позволяют сократить время реконфигурирования за счет усложнения алгоритма, например добавления новых типов служебных сообщений. В 2001 году разработана стандартная ускоренная версия STA (спецификация IEEE 802.1w).

Агрегирование линий связи в локальных сетях

Список ключевых слов: агрегирование линий связи, транк, динамический способ распределения кадров, статический способ распределения кадров, протокол управления агрегированием линий связи.

Транки и логические каналы

Агрегирование линий связи (физических каналов) между двумя коммуникационными устройствами в один логический канал является еще одной формой использования избыточных альтернативных связей в локальных сетях.

Отличие техники агрегирования линий связи от алгоритма покрывающего дерева достаточно принципиально.

  • Алгоритм STA переводит избыточные связи в горячий резерв, оставляя в рабочем состоянии только минимальный набор линий, необходимых для обеспечения связности сегментов сети. В этом случае повышается надежность сети, но не ее производительность.

  • При агрегировании физических каналов все избыточные связи остаются в рабочем состоянии. В результате повышается как надежность сети, так и ее производительность.

При отказе одной из составляющих агрегированного логического канала, который часто называют транком, трафик распределяется между оставшимися линиями (рис. 16.3). На рисунке примером такой ситуации является транк 2, в котором один из физических каналов (центральный) отказал, так что все кадры передаются по оставшимся двум каналам. Этот пример демонстрирует повышение надежности при агрегировании.

Рис. 16.3. Агрегирование физических каналов

Покажем теперь, как агрегирование линий связи повышает производительность сети. Так, на рисунке коммутаторы 1 и 3 соединены тремя параллельными линиями связи, что в три раза повышает производительность этого участка сети по сравнению со стандартным вариантом топологии дерева, которая не допускает таких параллельных связей. Повышение производительности связи между коммутаторами путем агрегирования линий связи в некоторых случаях является более эффективным, чем замена единственной линии связи более скоростной.

Например, несмотря на то что семейство Ethernet предлагает широкий выбор скоростей физического канала, от 10 Мбит/с до 10 Гбит/с, десятикратное повышение скорости при переходе от одного стандарта Ethernet к другому не всегда нужно и экономически оправдано. Например, если в установленных в сети коммутаторах отсутствует возможность добавления модуля с портом Gigabit Ethernet, то повышение скорости на некоторых каналах до 1000 Мбит/с потребует полной замены коммутаторов. В то же время вполне возможно, что у таких коммутаторов имеются свободные порты Fast Ethernet, поэтому скорость передачи данных можно было бы повысить, например, до 600 Мбит/с, объединив в агрегированный канал шесть портов Fast Ethernet.

Агрегирование линий связи является обобщением одного из способов применения альтернативных маршрутов (см. раздел «Альтернативные маршруты» в главе 6): «Сеть заранее находит два маршрута, однако использует только один». При агрегировании отыскивается N маршрутов (где N ≥ 2), каждый из которых используется для одного потока, а при отказе какого-либо маршрута «пострадавший» поток переводится на любой из оставшихся (N - 1) работающих маршрутов.

Агрегирование линий связи используется как для связей между портами коммутаторов локальной сети, так и для связей между компьютером и коммутатором. Чаще всего этот вариант выбирают для высокоскоростных и ответственных серверов. В этом случае все сетевые адаптеры, входящие в транк, принадлежат одному компьютеру и разделяют один и тот же сетевой адрес. Поэтому для протокола IP или другого протокола сетевого уровня порты транка неразличимы, что соответствует концепции единого логического канала, лежащей в основе агрегирования.

Почти все методы агрегирования, применяемые в настоящее время, обладают существенным ограничением — в них учитываются только связи между двумя соседними коммутаторами сети и полностью игнорируется все, что происходит вне этого участка сети. Например, работа транка 1 никак не координируется с работой транка 2, и наличие обычной связи между коммутаторами 2 и 3, которая создает вместе с транками 1 и 2 петлю, не учитывается. Поэтому технику агрегирования линий связи необходимо применять одновременно с алгоритмом покрывающего дерева — если администратор сети хочет использовать все топологические возможности объединения узлов сети. Для STA транк должен выглядеть как одна линия связи, тогда логика работы алгоритма останется в силе.

Существует большое количество фирменных реализаций механизма агрегирования линий связи. Наиболее популярные принадлежат, естественно, лидерам в секторе оборудования для локальных сетей. Это такие реализации, как Fast EtherChannel и Gigabit EtherChannel компании Cisco, MultiLink Trunking компании Nortel, Adaptive Load Balancing компании Intel и ряд других. Стандарт IEEE 802.3ad Link Aggregation обобщает эти подходы.

Борьба с «размножением» пакетов

Рассмотрим теперь подробней, в чем состоят особенности работы коммутатора в случае, когда его порты образуют транк. Во фрагменте сети, приведенном на рис. 16.4, два коммутатора — 1 и 2 — связаны четырьмя физическими каналами.

Рис. 16.4. Размножение пакетов с неизученным адресом

при наличии параллельных каналов между коммутаторами

Необходимо отметить, что транк может быть односторонним или двусторонним. Каждый коммутатор контролирует только отправку кадра, принимая решение, на какой из выходных портов его нужно передать. Поэтому если оба коммутатора считают связывающие их каналы транком, то он будет двусторонним, в противном случае — односторонним.

Рисунок иллюстрирует поведение коммутатора 1 по отношению к параллельным каналам. В том случае, когда они не рассматриваются данным коммутатором как агрегированный канал, возникают проблемы с кадрами двух типов:

  • кадрами с еще не изученными коммутатором уникальными адресами;

  • кадрами, в которых указан широковещательный или групповой адрес.

Алгоритм прозрачного моста требует от коммутатора передавать кадр с неизученным (отсутствующим в таблице продвижения) адресом на все порты, кроме

того, с которого кадр был принят. При наличии параллельных каналов такой кадр будет «размножен» в количестве, равном количеству каналов, — в приведенном примере коммутатор 2 примет четыре копии оригинального кадра.

При этом происходит также зацикливание кадров — они будут постоянно циркулировать между двумя коммутаторами, причем удалить их из сети окажется невозможно, так как в кадрах канального уровня отсутствует поле срока жизни, часто используемое в протоколах верхних уровней, например в IP и IPX.

В любом случае кадр с неизученным адресом повысит нагрузку на сеть за счет увеличения числа кадров, что чревато возникновением заторов, задержек и потерь данных. Помимо роста нагрузки дублирование кадров может привести также к неэффективной работе многих протоколов верхнего уровня. Примером может служить узел, работающий по протоколу TCP, для которого дублирование положительных квитанций, подтверждающих факт доставки данных адресату, служит косвенным признаком перегрузки сети.

Еще больше проблем создают кадры с широковещательным адресом — они всегда должны передаваться на все порты, кроме исходного, так что в любом случае «засорение» сети посторонним трафиком окажется значительным, и кадры будут зацикливаться.

С кадрами, у которых адрес назначения изучен, проблем у коммутаторов, связанных параллельными каналами, не возникает — коммутатор передает такой кадр на тот единственный порт, по которому этот кадр впервые пришел от источника.

Разработчики механизмов агрегирования учли проблемы, возникающие при обработке кадров с неизученными, широковещательными и групповыми адресами. Решение достаточно простое — все порты, связанные с параллельными каналами, считаются одним логическим портом, который и фигурирует в таблице продвижения вместо нескольких физических портов.

В примере, представленном на рис. 16.4, в таблице продвижения вместо портов Р17, Р18, Р19 и Р10 фигурирует логический порт AL11. С этим портом связаны адреса всех узлов, путь к которым лежит через коммутатор 2. При этом изучение нового адреса по кадру, поступившему от любого из физических портов, входящих в транк, приводит к появлению в таблице продвижения коммутатора новой записи с идентификатором логического порта. Поступающий в коммутатор кадр, адрес назначения которого изучен и связан с идентификатором логического порта, передается на один (и только один!) выходной физический порт, входящий в состав транка. Точно так же коммутатор поступает с неизученными, широковещательными и групповыми адресами — для передачи кадра используется только одна из связей. На порты коммутатора, не входящие в транк, это изменение в логике обработки кадров не распространяется. Так, коммутатор 1 всегда передает кадр с неизученным или широковещательным адресом на порты Р11 — Р16. Благодаря такому решению кадры не дублируются и описанные проблемы не возникают.

Соседние файлы в папке olifer_v_g_olifer_n_a_kompyuternye_seti_principy_tehnologii