Компьютерные сети

Компьютерные сети

Н. Олифер

Имеющиеся многочисленные нестандартные версии STA позволяют сократить время реконфигурирования за счет усложнения алгоритма, например добавления новых типов служебных сообщений. В 2001 году была разработана стандартная ускоренная версия протокола — RSTP (спецификация IEEE 802. lw), которая затем вошла в качестве раздела 17 в общий стандарт 802.1D-2004.
Версия RSTP
В версии RSTP для сокращения времени построения активной топологии использовано несколько новых механизмов и приемов.

Коммутаторы стали учитывать тип сегмента, подключенного к порту. Различаются следующие типы сегментов:
□ Сегмент типа «точка-точка». В коммутируемых сетях это единственный тип сегмента; для него у порта существует единственный порт-сосед.
□ Разделяемая среда. Стандарт RSTP по-прежнему учитывает существование разделяемой среды, так как формально ее никто не отменял, и все стандарты, включая основной стандарт Ethernet IEE 802.3, описывают работу сегмента этого типа.

□ Тупиковая связь (edge port). Связь, которая соединяет порт коммутатора с конечным узлом сети; по этому сегменту нет смысла ожидать прихода сообщений протокола RSTP. Тупиковая связь конфигурируется администратором.
В случае подключения к порту тупикового сегмента этот порт не участвует в протоколе RSTP, а сразу после включения переходит в стадию продвижения кадров. Нужно заметить, что в стандарте RSTP начальное заблокированное состояние портов переименовано в состояние отбрасывания.

Для портов со связями остальных типов переход в состояние продвижения по-прежнему достижим только после нахождения в стадии обучения.
Исключается стадия прослушивания. Коммутаторы не выдерживают паузу в 15 с для того, чтобы зафиксировать соответствующую роль порта, например корневого или назначенного. Вместо этого порты переходят в стадию обучения сразу же после назначения им роли корневого или назначенного порта.

Сокращается период фиксации отказа в сети — вместо 10 периодов неполучения сообщений Hello он стал равен трем таким периодам, то есть 6 с вместо 20.

Введены новые роли портов — появились альтернативный (alternative) и резервный (backup) порты. Альтернативный порт является портом-дублером корневого порта коммутатора, то есть он начинает продвигать кадры в том случае, когда отказывает (либо перестает принимать сообщения Hello в течение трех периодов) корневой порт. Резервный порт является портом-дублером назначенного порта сегмента; однако такая роль порта имеет смысл только для сегментов, представляющих собой разделяемую среду. Альтернативные и резервные порты находятся в состоянии отбрасывания кадров, так как они не должны продвигать кадры до тех пор, пока их роль не изменится на роль корневого или назначенного порта.

Как альтернативные, так и резервные порты выбираются одновременно с корневыми и назначенными портами. Такой подход значительно ускоряет реакцию сети на отказы, так как переход, например, на альтернативный порт происходит сразу же после фиксации отказа и не связан с ожиданием истечения тайм-аутов. Например, на рис. 14.3 альтернативным портом выбирается порт 2, так как он имеет наилучшее из всех портов (после корневого, естественно) расстояние до корневого коммутатора. При отказе связи между портом 4 коммутатора 111 и портом 1 коммутатора 333 порт 2 коммутатора 333 становится корневым. Он сразу же переходит в состояние обучения, минуя стадию прослушивания, которая была бы необходима, если бы коммутаторы работали по протоколу STP.

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

Для исключения данной ситуации (и в условиях отсутствия стадии прослушивания) назначенный порт, который претендует на то, чтобы продвигать кадры, просит подтвердить свою роль у соседних коммутаторов. Например, на рис. 14.3 при отказе связи между портом 4 коммутатора 111 и портом 1 коммутатора 333 порт 3 коммутатора 222 должен инициировать процедуру подтверждения.

Для этого порт посылает своему соседу по сегменту «точка-точка» конфигурационное сообщение, называемое предложением (proposing). Это сообщение вызывает временный перевод всех назначенных портов соседа в состояние отбрасывания; кроме того, эти порты распространяют сообщение с предложением далее по сети своим нижележащим (в отношении расстояния до корневого коммутатора) соседям. Когда это сообщение доходит до коммутатора, у которого все порты либо находятся в стабильном состоянии, либо являются тупиковыми, то этот коммутатор отвечает на него сообщением согласия (название этого сообщения отражает тот факт, что коммутатор согласен на то, чтобы назначенные порты, передавшие предложение на переход в состояние продвижения кадров, стали продвигать кадры). Назначенный порт, получив в ответ сообщение согласия (а оно проходит в обратном направлении, от листьев к корню), фиксирует состояние продвижения кадров. Если же назначенный порт не получает такого сообщения, то он останется в состоянии отбрасывания. Данная процедура исключает возникновение петель в активной конфигурации, к тому же она сокращает время работы протокола RSTP, так как именно благодаря ей исключается стадия прослушивания.

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

На рис. 14.4 показана активная топология покрывающего дерева, найденная для предыдущего примера сети (см. рис. 14.2), но уже по протоколу RSTP. Двумя черточками отмечены альтернативные порты, находящиеся в состоянии отбрасывания, а ромбами — тупиковые порты.
Рис. 14.4. Активная топология, найденная по протоколу RSTP

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

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

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

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

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

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

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

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

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

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

Алгоритм прозрачного моста требует от коммутатора передавать кадр с неизученным (отсутствующим в таблице продвижения) адресом на все порты, кроме того, с которого кадр
был принят. При наличии параллельных каналов такой кадр будет «размножен» в количестве, равном количеству каналов — в приведенном примере коммутатор 2 примет четыре копии оригинального кадра.
МАС7А
МАС1->Р11МАС2-+Р11МАСЗ-+Р12МАС4-»Р15МАС5->Р16МАС6->Р12МАС7->Р17МАС8-+Р18МАС9->?MAC 10-*?МАС11 -*?МАС9-+Р24

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

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

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

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

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

ВНИМАНИЕ-
Сказанное справедливо только тогда, когда агрегированная линия связи сконфигурирована в качестве транка с обеих сторон.
Выбор порта
Остается открытым вопрос: какой из портов коммутатора нужно использовать для продвижения кадра через транк?

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

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

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

Обычно при статическом распределении выбор порта для некоторого сеанса выполняется на основании определенных признаков, имеющихся в поступающих пакетах. Чаще всего такими признаками являются МАС-адреса источника или приемника или оба вместе. В популярной реализации механизма Fast EtherChannel компании Cisco для коммутаторов семейства Catalyst при выборе номера порта транка используется операция исключающего ИЛИ (XOR) над двумя последними битами МАС-адресов источника и приемника. Результат этой операции имеет четыре значения: 00,01,10 и 11, которые и являются условными номерами портов транка.

МАС1 МАС7

На рис. 14.7 приведен пример сети, в которой работает механизм Fast EtherChannel. Распределение потоков для сеансов между конечными узлами получается при этом достаточно случайным. Так как в распределении не учитывается реальная нагрузка, которую создает каждый сеанс, общая пропускная способность транка может использоваться нерационально, особенно если интенсивности сеансов намного отличаются друг от друга. Кроме того, алгоритм распределения не гарантирует даже равномерного в количественном отношении распределения сеансов по портам. Случайный набор М AC-адресов в сети может привести к тому, что через один порт будут проходить несколько десятков сеансов, а через другой — только два-три. Выравнивания нагрузки портов в данном алгоритме можно достигнуть только при большом количестве компьютеров и сеансов связи между ними.

Можно предложить и другие способы распределения сеансов по портам. Например, в соответствии с IP-адресами пакетов, которые инкапсулированы в кадры канального уровня, типами прикладных протоколов (почта по одному порту, веб-трафик по другому и т. д.). Полезным оказывается назначение порту сеансов с М AC-адресами, которые были изучены как идущие именно через этот порт — тогда трафик сеанса пойдет через один и тот же порт в обоих направлениях.

Стандартный способ создания агрегированных каналов, описанный в спецификации 802.3ad, предполагает возможность создания логического порта путем объединения нескольких физических портов, принадлежащих разным коммутаторам. Для того чтобы коммутаторы могли автоматически обеспечиваться информацией о принадлежности какого-либо физического порта определенному логическому порту, в спецификации предложен служебный протокол управления агрегированием линий связи (Link Control Aggregation Protocol, LCAP). Поэтому возможны такие конфигурации агрегированных каналов, которые увеличивают отказоустойчивость сети не только на участках между двумя коммутаторами, но и в более сложных топологиях (рис. 14.8).

-7*- Агрегированный канал Рис. 14.8. Распределенное агрегирование каналов

При отказе какого-либо канала транка все пакеты сеансов, назначенные для соответствующего порта, будут направляться на один из оставшихся портов. Обычно восстановление связности при таком отказе занимает от единиц до десятков миллисекунд. Это объясняется тем, что во многих реализациях транка после отказа физического канала все МАС-адреса, которые были с ним связаны, принудительно помечаются как неизученные. Затем коммутатор повторяет процедуру изучения этих адресов. После этого процедура назначения сеанса портам выполняется заново, естественно, учитываются только работающие порты. Так как тайм-ауты в сеансах протоколов локальных сетей обычно небольшие, коротким оказывается и время восстановления соединения.

Фильтрация трафика

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


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

Report Page