Назначенный порт у сегмента может быть только один. У корневого моста все порты являются назначенными, а их расстояние до корня полагается равным нулю. Корневого порта у корневого моста нет.
Также при построении покрывающего дерева важную роль играет понятие расстояния. По этому критерию выбирается единственный порт, соединяющий каждый коммутатор с корневым коммутатором, и единственный порт, соединяющий каждый сегмент сети с корневым коммутатором. Все остальные порты переводятся в резервное состояние, то есть такое, при котором они не передают обычные кадры данных. При таком выборе активных портов в сети исключаются петли и оставшиеся связи образуют покрывающее дерево. В качестве расстояния в STA используется метрика (или т.н. Path Cost)- она определяется как суммарное условное время на передачу данных от порта данного коммутатора до порта корневого коммутатора Условное время сегмента рассчитывается как время передачи одного бита информации и измеряется в 10-наносекундных единицах. Так, для сегмента Ethernet на 10 Мбит/с условное время равно 10 условным единицам
Для примера рассмотрены 3 коммутатора, подключенные с образованием петли. Т.о., в сети могут возникнуть проблемы с зацикливанием пакетов: например, при передаче широковещательных пакетов коммутатором A коммутатору B, коммутатор В передаст эти пакеты коммутатору C, а тот в свою очередь, вернет их коммутатору A и так далее. Т.е., пакеты могут ходить по сети бесконечно долго, что может привести к нарушению работоспособности сети. В этом примере с помощью STP блокируется соединение между коммутаторами С и B.
ДО РАБОТЫ STP | ПОСЛЕ РАБОТЫ STP |
Для автоматического определения начальной активной конфигурации дерева все коммутаторы сети после их инициализации начинают периодически обмениваться специальными пакетами, называемыми протокольными блоками данных моста - BPDU (Bridge Protocol Data Unit)
Пакеты BPDU содержат основную информацию, необходимую для построения топологии сети без петель:
Идентификатор коммутатора, на основании которого выбирается корневой коммутатор
Метрика до корневого коммутатора
Идентификатор порта
Пакеты BPDU помещаются в поле данных кадров канального уровня, например, кадров Ethernet.
Пакет BPDU имеет следующие поля:
- Идентификатор версии протокола STA - 2 байта. Коммутаторы должны поддерживать одну и ту же версию протокола STA, иначе может установиться активная конфигурация с петлями.
- Тип BPDU - 1 байт. Существует два типа BPDU - конфигурационный BPDU, то есть заявка на возможность стать корневым коммутатором, на основании которой происходит определение активной конфигурации, и BPDU уведомления о реконфигурации, которое посылается коммутатором, обнаружившим событие, требующее проведения реконфигурации - отказ линии связи, отказ порта, изменение приоритетов коммутатора или портов.
- Флаги - 1 байт. Один бит содержит флаг изменения конфигурации, второй бит - флаг подтверждения изменения конфигурации.
- Идентификатор корневого коммутатора - 8 байтов.
- Расстояние до корня - 2 байта.
- Идентификатор коммутатора - 8 байтов.
- Идентификатор порта - 2 байта.
- Время жизни сообщения - 2 байта. Измеряется в единицах по 0.5 с, служит для выявления устаревших сообщений. Когда пакет BPDU проходит через коммутатор, тот добавляет ко времени жизни пакета время его задержки данным коммутатором.
- Максимальное время жизни сообщения - 2 байта. Если пакет BPDU имеет время жизни, превышающее максимальное, то он игнорируется коммутаторами.
- Интервал hello, через который посылаются пакеты BPDU.
- Задержка смены состояний - 2 байта. Минимальное время перехода портов коммутатора в активное состояние. Такая задержка необходима, чтобы исключить возможность временного возникновения альтернативных маршрутов при неодновременной смене состояний портов во время реконфигурации.
У пакета BPDU уведомления о реконфигурации отсутствуют все поля, кроме двух первых.
После инициализации каждый коммутатор сначала считает себя корневым. Поэтому он начинает через интервал hello генерировать через все свои порты сообщения BPDU конфигурационного типа. В них он указывает свой идентификатор в качестве идентификатора корневого коммутатора, расстояние до корня устанавливается в 0, а в качестве идентификатора порта указывается идентификатор того порта, через который передается BPDU. Как только коммутатор получает BPDU, в котором имеется идентификатор корневого коммутатора, меньше его собственного, он перестает генерировать свои собственные кадры BPDU, а начинает ретранслировать только кадры нового претендента на звание корневого коммутатора. При ретрансляции кадров он наращивает расстояние до корня, указанное в пришедшем BPDU, на условное время сегмента, по которому принят данный кадр.
При ретрансляции кадров каждый коммутатор для каждого своего порта запоминает минимальное расстояние до корня. При завершении процедуры установления конфигурации покрывающего дерева, каждый коммутатор находит свой корневой порт - это порт, который ближе других портов находится по отношению к корню дерева. Кроме этого, коммутаторы выбирают для каждого сегмента сети назначенный порт. Для этого они исключают из рассмотрения свой корневой порт, а для всех своих оставшихся портов сравнивают принятые по ним минимальные расстояния до корня с расстоянием до корня своего корневого порта. Если у своего порта это расстояние меньше принятых, то это значит, что он является назначенным портом. Все порты, кроме назначенных переводятся в заблокированное состояние и на этом построение покрывающего дерева заканчивается.
Когда имеется несколько портов с одинаковым кратчайшим расстоянием до корневого коммутатора, выбирается порт с наименьшим идентификатором.
Таким образом, в процессе построения топологии сети каждый порт коммутатора проходит несколько стадий:
- Blocking - При инициализации коммутатора все порты (за исключением отключенных) автоматически переводятся в состояние "Заблокирован". В этом случае порт генерирует, принимает, обрабатывает и ретранслирует только пакеты BPDU. Все остальные пакеты не передаются.
- Listening - В начальный момент работы алгоритма STA порты коммутатора переходят в состояние "Прослушивание". В этот момент пакеты BPDU от других коммутаторов еще не получены и коммутатор считает себя корневым, а все свои порты - назначенными. В том режиме порт может находится до истечения таймера смены состояний (Forwarding Timer). Интервал, выдерживаемый с помощью таймера может изменяться от 4 до 30 с. и нужен он для получения BPDU от всех коммутаторов сети. В этом режиме порт продолжает генерировать, принимать, обрабатывать и ретранслировать BPDU. Если в течение этого времени порт получит BPDU с лучшими параметрами, чем собственные (расстояние, идентификатор коммутатора или порта), то он перейдет в состояние "Заблокирован". В противном случае порт переводится в состояние "Обучение".
- Learning - Обучение - порт начинает принимать пакеты и на основе адресов источника строить таблицу коммутации. Порт в этом состоянии все еще не продвигает пакеты. Порт продолжает участвовать в работе алгоритма STA, и при поступлении BPDU с лучшими параметрами переходит в состояние Blocking "Заблокирован".
- Forwarding - Продвижение - только после двукратной выдержки по таймеру порт переходит в состояние Продвижение и обрабатывает пакеты данных в соответствии с построенной таблицей
- Disable - Отключен - в это состояние порт переводит администратор. Отключенный порт не участвует ни в работе протокола STP, ни в продвижении пакетов данных. Порт можно также вручную включить и он сначала перейдет в состояние Blocking.
В процессе нормальной работы корневой коммутатор продолжает генерировать служебные пакеты BPDU, а остальные коммутаторы продолжают их принимать своими корневыми портами и ретранслировать назначенными. Если по истечении максимального времени жизни сообщения (по умолчанию - 20 с) корневой порт любого коммутатора сети не получит служебный пакет BPDU, то он инициализирует новую процедуру построения покрывающего дерева. При этом на все порты генерируется и передается BPDU, в котором коммутатор указывает себя в качестве корневого. Изменяемые настройки коммутатора:
- Priority - Приоритет коммутатора, может варьироваться от 0 до 65535
- Hello Time- интервал между передачей BPDU корневым коммутатором, может изменяется от 1 до 10 с. Если вы изменили Hello Time коммутатору, который не является корневым, то параметр будет использоваться только в случае если он станет корневым.
- Max. Age - может изменяется от 6 до 40 с. Если по истечении интервала времени, установленного в Max.Age от корневого коммутатора все еще не пришел пакет BPDU, то ваш коммутатор начнет сам посылать пакеты BPDU, объявляя себя в качестве корневого коммутатора.
- Forward Delay Timer - может изменяется от 4 до 30 с. Это время, в течении которого каждый порт коммутатора остается в состоянии прослушивания перед переходом либо в состояние продвижения пакетов либо в состояние блокирования.
- Port Priority - может изменяется от 0 до 255. Чем меньше значение данного параметра, тем выше вероятность, что порт станет корневым.
- Port Cost - может изменяется от 1 до 65535. Чем меньше значение данного параметра, тем выше вероятность, что порт будет выбран для продвижения пакетов.
12.2. Практический пример
http://nag.ru/articles/reviews/15455/vlastelin-kolec-stp.html
Для закрепления материала рассмотрим подробно работу протокола STP на следующем примере. Предположим, имеется сетевая топология из трех коммутаторов A, B, C. Коммутаторы связаны между собой через разделяемые сетевые сегменты X, Y и Z.
Сконфигурируем их следующим образом: приоритет коммутатора A установим 8192, приоритет B и C по 32768. Стоимость портов 1 и 2 коммутатора B установим 100. Стоимость портов 1 и 2 коммутатора C установим 50.
После включения STP (или коммутаторов с включенным STP) начинаются выборы корневого коммутатора. Все коммутаторы начинают рассылать BPDU с идентификатором корневого коммутатора в качестве которого вначале считают себя. После того, как коммутатор получает BPDU с идентификатором корневого коммутатора меньшим, чем он сам, он перестает считать себя корневым. В итоге выборов корневым становится коммутатор с наименьшим идентификатором. Мы этого намеренно добивались для коммутатора A, установив его приоритет заведомо меньше, чем у B и C. Корневой коммутатор в сети – единственный. Желательно, чтобы им становился наиболее мощный коммутатор ядра сети.
Непосредственно после выборов корневой коммутатор начинает генерировать (передавать) на всех своих портах BPDU с определенным периодом (период можно настраивать, обычно это 1-2 секунды). Все остальные коммутаторы только ретранслируют получаемые от корневого BPDU, изменяя в них только некоторые параметры (например, стоимость пути до корня).
Таким образом, BPDU от корневого коммутатора достигают всех коммутаторов в сети. В нашем случае корневой коммутатор A посылает в сторону B и C на портах 1 и 2 пакеты BPDU, содержащие RBID((Root Bridge Identifier)=[MAC A + A Priority] и RPC (Root Path Cost) = 0, так как A является корневым и следовательно путь до корня от самого A равен 0. Коммутатор B при получении на порту 1 BPDU от A добавляет входную стоимость порта (которая равна 100) к RPC, содержащейся в BPDU (0). Коммутатор B запоминает стоимость пути к корню через порт 1 (RPC = 100) и посылает в сторону C пакет BPDU с RBID=A и RPC=100. Коммутатор C получает от A BPDU с RBID A, RPC=0 через порт 2 и BPDU от B с RBID = A , RPC=100 через порт 1. Коммутатор С добавляет к полученным RPC свои входные стоимости портов и в итоге получает RPC через порт 1 = 150 и RPC через порт 2 = 50. Он выбирает путь к корню с наименьшей стоимостью (а это RPC=50 через порт 2) и в соответствии с этим назначает корневой порт – 2. Тот же коммутатор С посылает в сторону B BPDU с RBID=A и RPC=50. Коммутатор B уже имеет информацию о достижении корня (порт 1, RPC=100) и, получив BPDU от С (RBID=A и RPC=50), и добавив к нему свою входную стоимость (100), выполняет несложный выбор – корневым (с наименьшим RPC=100) становится порт номер 1.
После выбора корневых портов коммутаторами решается какой коммутатор (Designated Bridge) и его порт (Designated Port) будет обслуживать каждый конкретный сегмент сети. Это происходит аналогично выбору корневых портов – для каждого сегмента просчитывается кратчайший путь до корня.
Последним этапом работы STP является блокирование на всех коммутаторах портов, не являющихся корневыми или назначенными. Заметим, что блокировка STP работает только для передаваемых данных – BPDU через блокируемые порты пропускаются и линк будет по-прежнему активным.
Дополнительные функции.
Кроме основной задачи построения беспетлевой топологии STP решает еще одну дополнительную – изменение времени хранения MAC адресов в таблицах коммутаторов в случае изменения состояния портов. Происходит это следующим образом: коммутатор, на котором произошло изменение (например, отключился и снова включился порт), посылает в сторону корневого специальный BPDU Topology Change Notification (TCN). Корневой после его получения рассылает TCN для всех коммутаторов и они изменяют время хранения MAC адресов в своих таблицах с целью обеспечения коммутации пакетов с учетом возможных изменений (например, на порту изменился MAC адрес клиента, а коммутатор по умолчанию продержит соответствующую запись в таблице слишком долго).
12.3. Развитие STP
Дальнейшим развитием STP явилось появление таких протоколов как RSTP, PVSTP и MSTP.
Rapid STP (RSTP) характеризуется значительными усовершенствованиями STP, среди которых необходимо отметить уменьшение времени сходимости и более высокую устойчивость.
Per Vlan STP (PVSTP) в соответствии с названием расширяет функционал STP для использования виланов. В рамках данного протокола в каждом вилане работает отдельный экземпляр STP.
Multiple STP (MSTP) является наиболее современной реализацией STP, учитывающей все достоинства и недостатки предыдущих решений. Данный протокол предполагает конфигурирование необходимого количества экземпляров STP в не зависимости от числа виланов на коммутаторе (в отличие от PVSTP, в котором число STP процессов равно числу виланов) и вхождение виланов в нужный STP экземпляр.
Заключение.
В заключение приведем описание работы STP, ориентированное на практическое применение при разработке сетевых топологий:
- Во всей сети выбирается ОДИН корневой мост. Это делается по наименьшему BID. BID=MAC+BRIDGE PRIORITY. По умолчанию Priority=32768, поэтому при равных приоритетах выбирается коммутатор с меньшим MAC адресом.
Отсюда вывод: если требуется, чтобы коммутатор стал корневым - нужно сделать его приоритет наименьшим среди всех других коммутаторов.
- КАЖДЫЙ коммутатор анализирует ВСЕ возможные варианты связи и просчитывает самый кратчайший путь (то есть СУММАРНУЮ стоимость пути) до корневого коммутатора. Порт, через который это достигается становится корневым. Он ОДИН у каждого коммутатора. Если стоимости пути равны (например два параллельных линка между коммутаторами), то используется дополнительный параметр – Port ID, в который входит Port Priority.
Вывод: если необходимо, чтобы конкретный линк связывал данный коммутатор с корневым – необходимо на конкретном порту получить наименьшую стоимость пути до корня. Это достигается изменением параметра "стоимость" на портах коммутаторов.
- Для КАЖДОГО сегмента сети просчитывается кратчайший путь до корневого коммутатора. Коммутатор, через который этот путь проходит, становится назначенным коммутатором, а его порт, соединенный с данным сегментом, – назначенным портом. Выбор назначенного порта в каждом сегменте происходит по наименьшей стоимости пути или, при равных стоимостях, - по наименьшему Bridge ID.
Вывод: если необходимо, чтобы трафик в конкретный сегмент сети проходил через определенные коммутаторы, - нужно сделать общую стоимость пути через них до корня наименьшей.
- Все порты не являющиеся Root или Designated – блокируются. Главное не забывать, что блокировка по STP не означает отсутствие физического линка! Блокирование касается только передаваемых данных, а BPDU должны передаваться беспрепятственно.
13. Лекция №13. Агрегирование каналов в локальных сетях
13.1. Агрегирование как способ повышения производительности и надежности.
Статья Натальи Олифер приведена здесь без изменений. (http://www.osp.ru/lan/2002/02/135784/)
Oбъединение физических каналов (Link Aggregation) между двумя коммуникационными устройствами в один логический канал позволяет активно задействовать избыточные альтернативные связи в локальных сетях. В данном контексте термин «локальные сети» служит для обозначения технологий канального уровня, наподобие Ethernet, и необходимых для их работы устройств — коммутаторов, сетевых адаптеров и маршрутизаторов (в последнем случае имеется в виду соответствующий слой аппаратного и программного обеспечения).
Именно на канальном уровне протоколов локальных сетей проявляются особенности использования избыточных связей, такие, как дублирование и зацикливание кадров в петлевидных маршрутах. И хотя эти проблемы могут быть решены на более высоком сетевом уровне маршрутизаторами IP/IPX и программными средствами операционных систем, поддержка избыточных связей столь экономичными и широко распространенными устройствами локальных сетей, как коммутаторы второго уровня, обладает рядом преимуществ. Прежде всего, это снижение стоимости сети, так как многие ее участки строятся без привлечения относительно дорогих маршрутизаторов (коммутаторов третьего уровня). Кроме того, скорость реакции на обрыв связи часто повышается.
Агрегирование каналов применяется достаточно широко наряду с другим, принципиально отличающимся, способом использования избыточных связей — алгоритмом построения покрывающего дерева (Spanning Tree Algorithm, STA). Он переводит избыточные связи в «горячий» резерв, оставляя в рабочем состоянии только минимальный набор каналов, необходимый для обеспечения связности сегментов сети (см. «Резервирование соединений в локальных сетях», «Журнал сетевых решений/LAN», январь 2002 г.). В этом случае повышается надежность сети, поскольку при отказе какого-либо соединения в строй автоматически вводятся резервные связи, и через небольшой промежуток времени работоспособность сети восстанавливается.
При агрегировании физических каналов все избыточные связи остаются в рабочем состоянии, а имеющийся трафик распределяется между ними для достижения баланса загрузки (см. Рисунок 1). При отказе одного из составляющих такого логического канала, который часто называют транком, трафик распределяется между оставшимися каналами. На Рисунке 1 в качестве примера такой ситуации выступает транк 2, где один из каналов, закрашенный в фиолетовый цвет, перестал функционировать, и все кадры передаются по оставшимся двум каналам.
Рисунок 1. Агрегирование физических каналов. |
13.1.1. ЛОГИЧЕСКИЙ КАНАЛ (Транк)
Агрегирование каналов может применяться для связи как между двумя коммутаторами локальной сети или между портами маршрутизатора, так и между компьютером и коммутатором (чаще всего последний вариант используется для высокоскоростных и ответственных серверов). В двух последних случаях все сетевые адаптеры или порты маршрутизатора, которые входят в транк, имеют один и тот же сетевой адрес (или одни и те же адреса, так как транк, подобно обычному порту/адаптеру, может иметь их несколько). Поэтому для протокола IP или другого протокола сетевого уровня порты транка неразличимы, что соответствует концепции единого логического канала, лежащей в основе агрегирования.
Очевидно, что агрегирование каналов приводит к повышению и производительности (вместо одного канала одновременно используется несколько), и надежности. Но все современные методы агрегирования обладают существенным ограничением — они принимают во внимание только связи между двумя соседними коммутаторами, полностью игнорируя все, что происходит вне этого участка сети. Например, работа транка 1 никак не координируется с работой транка 2 и не учитывает наличие обычной связи между коммутаторами 2 и 3, которая вместе с транками 1 и 2 создает петлю. Поэтому агрегирование каналов нужно применять одновременно с алгоритмом покрывающего дерева — если администратору сети необходимы все топологические возможности объединения узлов сети. Для алгоритма STA транк должен выглядеть как одна связь, тогда все его вычисления останутся в силе.
Механизм агрегирования каналов имеет большое количество нестандартных реализаций. Наиболее популярные принадлежат, естественно, лидерам в секторе оборудования для локальных сетей. Это Fast EtherChannel и Gigabit EtherChannel компании Cisco, MultiLink Trunking компании Nortel, Adaptive Load Balancing компании Intel и ряд других. Стандарт IEEE 802.ad Link Aggregation обобщает эти подходы.
13.1.2. Размножение пакнтов
Как же работает коммутатор, когда его порты образуют транк? Во фрагменте сети, приведенном на Рисунке 2, два коммутатора — 1 и 2 — связаны четырьмя физическими каналами. Необходимо отметить, что транк может быть односторонним или двусторонним. Каждый коммутатор контролирует только отправку кадра, принимая решение, на какой из выходных портов его нужно передать. Поэтому, если оба коммутатора считают связывающие их каналы транком, он будет двусторонним, в противном случае — односторонним.
Рисунок 2. «Размножение» пакетов с неизученным адресом при использовании параллельных каналов между коммутаторами. |
Рисунок 2 иллюстрирует поведение коммутатора 1 по отношению к параллельным соединениям. В том случае, когда они не рассматриваются данным коммутатором как агрегированный канал, проблемы возникают с кадрами двух типов: когда они имеют, во-первых, неизученные коммутатором уникальные адреса, и, во-вторых, широковещательный или групповой адрес.
B соответствии с алгоритмом прозрачного моста коммутатора должен передать кадр с неизученным (отсутствующим в таблице продвижения) адресом на все порты, за исключением того, с которого кадр был принят. При наличии параллельных каналов такой кадр будет «размножен» в количестве, равном числу каналов. В приведенном примере коммутатор 2 примет четыре копии оригинального кадра.
Если коммутатор 2 уже изучил адрес назначения МАС9, то он передаст каждую копию кадра узлу назначения через один порт, а если нет — то через все, в том числе и через порты параллельных каналов (естественно, кроме того, с которого кадр получен, так что кадр 1 в таком случае поступит на порты P18, P19 и P10 коммутатора 1). В последнем случае произойдет также зацикливание кадров — они будут постоянно циркулировать между двумя коммутаторами, причем удалить их из сети невозможно, поскольку в кадрах канального уровня отсутствует поле «срок жизни», часто используемое в протоколах верхних уровней, например в IP и IPX.
Кадр с неизученным адресом неизбежно приведет к росту нагрузки на сеть за счет увеличения числа кадров, что чревато возникновением заторов, задержек и потерь данных. Кроме роста нагрузки дублирование кадров может привести также к неэффективной работе многих протоколов верхнего уровня. Примером тому может служить узел, работающий по протоколу TCP. При дублировании квитанций, подтверждающих факт доставки данных адресату, некоторые реализации этого протокола резко уменьшают размер окна приема, снижая тем самым скорость отправки данных в сеть передатчиком. Дублирование квитанции интерпретируется как признак потери данных — раз приемник повторно присылает одну и ту же квитанцию, значит, с большой степенью вероятности можно считать, что последующие кадры утеряны.
Еще больше проблем создают кадры с широковещательным адресом — они всегда должны передаваться на все порты, кроме исходного, и будут постоянно зацикливаться, так что в любом случае «засорение» сети посторонним трафиком окажется значительным.
Если адрес назначения кадров уникален и изучен, проблем у коммутаторов, связанных параллельными каналами, не возникает — он передается на единственный порт, по которому пришел в свое время кадр с данным адресом источника.
13.1.3. БОРЬБА С «РАЗМНОЖЕНИЕМ»
Разработчики механизмов агрегирования учли проблемы, возникающие при обработке кадров с неизученными, широковещательными и групповыми адресами. Решение достаточно простое — все порты, связанные с параллельными каналами, считаются одним логическим портом, он-то и указывается в таблице продвижения вместо нескольких физических.
Рисунок 3. Распределение потоков по каналам транков. |
В примере, изображенном на Рисунке 3, в таблице продвижения вместо портов P17, P18, P19 и P10 фигурирует логический порт AL11. С ним связаны адреса всех узлов, путь к которым лежит через коммутатор 2. Выявление неизвестного адреса на любом из физических портов, входящих в транк, приводит к появлению в таблице продвижения коммутатора новой записи с идентификатором логического порта. Поступающий в коммутатор кадр, адрес назначения которого изучен и связан с идентификатором логического порта, передается на один (и только один!) выходной физический порт, входящий в состав транка. Точно так же коммутатор поступает с неизученными, широковещательными и групповыми адресами — для передачи кадра используется только одна из связей. На порты коммутатора, не входящие в транк, это изменение в логике обработки кадров не распространяется: так, коммутатор 1 всегда передает кадр с неизученным или широковещательным адресом на порты P11-P16.
Благодаря такому решению, кадры не дублируются, и описанные сложности не возникают. Правда, это справедливо только тогда, когда оба коммутатора рассматривают каналы как транк, в противном случае часть проблем остается. Например, если коммутатор 2 не считает связи транком, то кадр с неизвестным для коммутатора 2 адресом назначения будет им размножен и отправлен обратно коммутатору 1 в трех копиях. Поэтому полностью задействовать свойства транка можно лишь при его соответствующей двусторонней конфигурации.
13.1.4. Выбор порта
Остается открытым вопрос — какой из портов коммутатора предпочтителен для продвижения кадра через транк? Можно предложить несколько вариантов ответа. Так как агрегирование каналов предназначено для повышения суммарной производительности участка сети между двумя коммутаторами (или коммутатором и сервером), то желательно кадры распределять по портам транка динамически, направляя их в наименее загруженные порты (с меньшей длиной очереди).
Динамический способ распределения кадров, учитывающий текущую загрузку портов и обеспечивающий баланс нагрузки между всеми каналами транка, должен приводить, казалось бы, к максимальной пропускной способности транка. Однако данное утверждение справедливо не всегда, так как в нем учитывается не поведение протоколов верхнего уровня, а только интенсивность общего потока кадров канального уровня
В то же время производительность целого ряда протоколов может заметно снижаться, если пакеты сеанса между двумя конечными узлами будут приходить не в том порядке, в котором они отправлены узлом-источником. А такая ситуация может возникнуть, если два или более смежных по отношению к сеансу кадра станут передаваться через разные порты транка из-за неодинаковой длины очередей в их буферах и, как следствие, неравномерной задержки передачи кадра, так что более поздний кадр обгонит своего предшественника.
Если протоколы стека IP (например, TCP) толерантны к неупорядоченности приходящих пакетов, то протоколы стека IPX и DECnet резко теряют полезную производительность, считая такие события потерей пакета и запрашивая его повторную передачу. Поэтому в большинстве реализаций механизмов агрегирования используются методы статического, а не динамического распределения кадров по портам.
Статическое распределение подразумевает закрепление за определенным портом транка потока кадров определенного сеанса между двумя узлами, в этом случае все кадры будут проходить через одну и ту же очередь и последовательность их не изменится. Обычно при статическом распределении выбор порта для конкретного сеанса выполняется на основании некоторых признаков поступающих пакетов. Как правило, это МАС-адреса источника или назначения, либо оба вместе.
В популярной реализации Fast EtherChannel компании Cisco для коммутаторов семейства Catalyst 5000/6000 выбор номера порта транка осуществляется с помощью операции исключающего ИЛИ (XOR) над двумя последними битами МАС-адресов источника и приемника. Результат этой операции имеет четыре значения: 00, 01, 10 и 11, которые и являются условными номерами портов транка. На Рисунке 3 приведен пример сети, в которой работает механизм Fast EtherChannel (аналогично работает и Gigabit EtherChannel) для коммутаторов Catalyst 5000/6000. При этом распределение потоков сеанса между конечными узлами достаточно случайно. Так как оно не учитывает реальной нагрузки, которую создает каждый сеанс, то общая пропускная способность транка может использоваться нерационально, особенно если по интенсивности сеансы намного отличаются друг от друга. Кроме того, алгоритм распределения не гарантирует даже равномерного в количественном отношении распределения сеансов по портам.
Случайный набор МАС-адресов в сети может привести к тому, что через один порт будут проходить несколько десятков сеансов, а через другой — два-три. При данном алгоритме только большое количество компьютеров и сеансов между ними способно обеспечить равномерную нагрузку на порты. Это характерно для таких магистральных коммутаторов, как Catalyst 5000/6000.
Сеансы можно распределить между портами и другими способами: например, в соответствии с IP-адресами пакетов внутри кадров канального уровня, номерами виртуальных локальных сетей (VLAN), типами прикладных протоколов (почта по одному порту, трафик Web по другому и т. д.). Полезным оказывается назначение порту сеансов с МАС-адресами, изученными именно через этот порт, чтобы трафик сеансов проходил через один и тот же порт в обоих направлениях.
Чем больше признаков учитывает механизм распределения, тем более равномерно нагружаются порты транка и, следовательно, эффективнее функционирует транк. Некоторые реализации могут выполнять распределение с учетом текущей загрузки портов, но не для каждого отдельного пакета, а для всех пакетов сеансов. Такой способ, наряду с учетом номера порта, по которому изучен МАС-адрес назначения, применяется в механизмах Fast EtherChannel в коммутаторах Catalyst 2900X.
13.1.5. ВОССТАНОВЛЕНИЕ ПРИ ОТКАЗЕ
При отказе какого-либо канала транка все пакеты сеансов, назначенные для соответствующего порта, направляются на один из оставшихся портов. Обычно такое восстановление связности занимает от нескольких до десятков миллисекунд. Это объясняется тем, что во многих реализациях транка после отказа канала все связанные с ним МАС-адреса принудительно отмечаются как неизученные.
Затем коммутатор повторяет процедуру изучения данных адресов, дожидаясь, когда один из них придет на какой-либо порт транка, после чего они снова становятся изученными. Далее процедура назначения сеансов портам выполняется заново, естественно с учетом только работающих портов. Так как тайм-ауты в сеансах протоколов локальных сетей обычно небольшие, то время восстановления соединения оказывается коротким.
14. Лекция №14. Возможности современных коммутаторов по организации виртуальных сетей
Функциональные возможности современных коммутаторов позволяют организовывать виртуальные сети (VLAN-сетей) для создания гибкой сетевой инфраструктуры. В настоящее время VLAN-сети еще не получили широкого распространения, особенно в небольших корпоративных сетях. Во многом это связано с тем, что конфигурирование коммутаторов для организации VLAN-сетей весьма непростое дело, особенно если инфраструктура сети включает несколько коммутаторов. Кроме того, конфигурирование коммутаторов при создании VLAN-сетей, равно как и настройка других функциональных возможностей, может значительно отличаться у коммутаторов от различных фирм, вследствие чего известные производители сетевого оборудования, такие как Cisco, HP, 3Com, Allied Telesyn, Avaya, устраивают специальные курсы по работе с их оборудованием. Понятно, что упрощать конфигурирование своего оборудования, делать этот процесс интуитивно понятным и простым и уж тем более вырабатывать общие соглашения и единый интерфейс по настройке оборудования от разных производителей — явно не в интересах самих производителей, однако пользователи вполне способны самостоятельно разобраться во многих возможностях коммутаторов. Поэтому в данной статье мы рассмотрим возможности современных коммутаторов по организации виртуальных сетей и расскажем о базовых принципах их конфигурирования.