Для преодоления ограничений технологий локальных сетей уже достаточно давно начали применять локальные мосты, функциональные предшественники коммутаторов.
Мост - это устройство, которое обеспечивает взаимосвязь двух (реже нескольких) локальных сетей посредством передачи кадров из одной сети в другую с помощью их промежуточной буферизации. Мост, в отличие от повторителя, не старается поддержать побитовый синхронизм в обеих объединяемых сетях. Вместо этого он выступает по отношению к каждой из сетей как конечный узел. Он принимает кадр, буферизует его, анализирует адрес назначения кадра и только в том случае, когда адресуемый узел действительно принадлежит другой сети, он передает его туда.
Для передачи кадра в другую сеть мост должен получить доступ к ее разделяемой среде передачи данных в соответствии с теми же правилами, что и обычный узел.
Таким образом мост, изолирует трафик одного сегмента от трафика другого сегмента, фильтруя кадры. Так как в каждый из сегментов теперь направляется трафик от меньшего числа узлов, то коэффициент загрузки сегментов уменьшается (рисунок 2.4).
Рис. 2.4. Локализация трафика при использовании моста
Мост не только снижает нагрузку в объединенной сети, но и уменьшает возможности несанкционированного доступа, так как пакеты, предназначенные для циркуляции внутри одного сегмента, физически не появляются на других, что исключает их "прослуши-
вание" станциями других сегментов.
По своему принципу действия мосты подразделяются на два типа. Мосты первого типа выполняют так называемую маршрутизацию от источника (Source Routing), метод, разработанный фирмой IBM для своих сетей Token Ring. Этот метод требует, чтобы узел-отправитель пакета размещал в нем информацию о маршруте пакета. Другими словами, каждая станция должна выполнять функции по маршрутизации пакетов. Второй тип мостов осуществляет прозрачную для конечных станций передачу пакетов (Transparent Bridges). Именно этот тип мостов лег в основу современных коммутаторов, поэтому остановимся на нем подробнее.
Функции и алгоритмы прозрачных мостов
Прозрачные мосты являются наиболее распространенным типом мостов. Для прозрачных мостов сеть представляется наборами МАС-адресов устройств, используемых на канальном уровне, причем каждый набор связан с определенным портом моста.
Мосты используют эти адреса для принятия решения о продвижении кадра, когда кадр записывается во внутренний буфер моста из какого-либо его порта. Мосты не имеют доступа к информации об адресах сетей, относящейся к более высокому - сетевому - уровню, и они ничего не знают о топологии связей сегментов или сетей между собой. Таким образом, мосты являются совершенно прозрачными для протоколов, начиная с сетевого уровня и выше. Эта прозрачность позволяет мостам передавать пакеты различных протоколов высокого уровня, никоим образом не влияя на их содержимое.
Вследствие функциональной ограниченности мосты имеют достаточно простое устройство и представляют собой удобное и недорогое средство для построения интерсети.
Мосты обеспечивают возможность соединения двух или более сетей для образования единой логической сети. Исходные сети становятся сетевыми сегментами результирующей сети. Каждый такой сегмент остается доменом коллизий, то есть участком сети, в котором все узлы одновременно фиксируют и обрабатывают коллизию. Однако коллизии одного сегмента не приводят к возникновению коллизий в другом сегменте, так как мост не осуществляет побитовый синхронизм сегментов и ограничивает коллизии тем сегментом, в котором они возникают.
Мосты регенерируют пакеты, которые они передают с одного порта на другой (операция forwarding). Одним из преимуществ использования мостов является увеличение расстояния, покрываемого интерсетью, так как количество пересекаемых мостов не оказывает влияния на качество сигнала.
Рис. 2.5. Мост как коммуникационное устройство канального уровня
Прозрачные мосты имеют дело как с адресом источника, так и с адресом назначения, имеющимися в кадрах локальных сетей. Мост использует адрес источника для автоматического построения своей базы данных адресов устройств, называемой также таблицей адресов устройств. В этой таблице устанавливается принадлежность адреса узла какому-либо порту моста. Все операции, которые выполняет мост, связаны с этой базой данных. На рисунке 2.5 показан фрагмент сети, содержащий двухпортовый мост, и соответствующая этому фрагменту часть таблицы адресов устройств. Внутренняя структура моста показана на рисунке 2.6. Функции доступа к среде при приеме и передаче кадров выполняют микросхемы MAC.
Рис. 2.6. Состав и структура моста
Все порты моста работают в так называемом "неразборчивом" (promisquous) режиме захвата пакетов, то есть все поступающие на порт пакеты запоминаются в буферной памяти. С помощью такого режима мост следит за всем трафиком, передаваемым в присоединенных к нему сегментах и использует проходящие через него пакеты для изучения состава сети.
Когда мост получает кадр от какого-либо своего порта, то он (после буферизации) сравнивает адрес источника с элементами базы данных адресов. Если адрес отсутствует в базе, то он добавляется в нее. Если этот адрес уже имеется в базе, то возможны два варианта - либо адрес пришел с того же порта, который указан в таблице, либо он пришел с другого порта. В последнем случае строка таблицы, соответствующая обрабатываемому адресу, обновляется - номер порта заменяется на новое значение (очевидно, станцию с данным адресом переместили в другой сегмент сети). Таким способом мост "изучает" адреса устройств сети и их принадлежность портам и соответствующим сегментам сети. Из-за способности моста к "обучению" к сети могут добавляться новые устройства без необходимости реконфигурирования моста. Администратор может объявить часть адресов статическими и не участвующими в процессе обучения (при этом он их должен задать сам). В случае статического адреса приход пакета с данным адресом и значением порта, не совпадающим с хранящимся в базе, будет проигнорирован и база не обновится.
Кроме адреса источника мост просматривает и адрес назначения кадра, чтобы принять решение о его дальнейшем продвижении. Мост сравнивает адрес назначения кадра с адресами, хранящимися в его базе. Если адрес назначения принадлежит тому же сегменту, что и адрес источника, то мост "фильтрует" (filtering) пакет, то есть удаляет его из своего буфера и никуда не передает. Эта операция помогает предохранить сеть от засорения ненужным трафиком.
Если адрес назначения присутствует в базе данных и принадлежит другому сегменту по сравнению с сегментом адреса источника, то мост определяет, какой из его портов связан с этим адресом и "продвигает" (forwarding) кадр на соответствующий порт. Затем порт должен получить доступ к среде подключенного к нему сегмента и передать кадр узлам данного сегмента.
Если же адрес назначения отсутствует в базе или же это широковещательный адрес, то мост передает кадр на все порты, за исключением того порта, с которого он пришел. Такой процесс называется "затоплением" (flooding) сети. Затопление гарантирует, что пакет будет помещен на все сегменты сети и, следовательно, доставлен адресату или адресатам. Точно также мост поступает по отношению к кадрам с неизвестным адресом назначения, затопляя им сегменты сети. Очевидно, что некоторое время после инициализации мост выполняет только операцию затопления, так как он ничего не знает о принадлежности адресов сегментам сети.
Рисунок 2.5 иллюстрирует процессы обучения, фильтрации и продвижения. Предположим, что станции 1 и 2 являются новыми станциями на сегменте 1. Когда станция 1 впервые направляет кадр станции 2, то мост определяет, что адреса станции 1 нет в базе адресов и добавляет его туда. Затем, так как адреса станции 2 также нет в базе адресов, мост "затапливает" все сегменты (в данном случае это только один сегмент 2).
Когда станция 2 посылает ответный кадр, мост добавляет в свою базу и адрес 2. Затем он просматривает таблицу базы адресов и обнаруживает, что адрес 1 в ней имеется и относится к сегменту 1, которому принадлежит и адрес источника. Поэтому он фильтрует этот кадр, то есть удаляет его из буфера и никуда не передает.
Мост, работающий по описанному алгоритму, прозрачен не только для протоколов всех уровней, выше канального, но и для конечных узлов сети. Эта прозрачность состоит в том, что узлы не посылают мосту свои кадры специальным образом, указывая в них адрес порта моста. Даже при наличии моста в сети конечные узлы продолжают посылать кадры данных непосредственно другим узлам, указывая их адреса в качестве адресов назначения кадров. Поэтому порты мостов вообще не имеют МАС-адресов, работая в режиме "неразборчивого" захвата всех кадров. Такая прозрачность моста упрощает работу конечных узлов, и это свойство коренным образом отличает мост от маршрутизатора, которому узел отправляет кадр явным образом, указывая МАС-адрес порта маршрутизатора в своем кадре.
На рисунке 2.7 показана копия экрана с адресной таблицей модуля моста концентратора System 3000 компании Bay Networks. Из него видно, что сеть состоит из двух сегментов - LAN A и LAN B. В сегменте LAN A имеется по крайней мере 3 станции, а в сегменте LAN B - 2. Четыре адреса, помеченные звездочками, являются статическими, причем кадры, имеющие адреса, помеченные Flood, должны распространяться широковещательно.
Описанная процедура хорошо работает до тех пор, пока пользователи не переносят свои компьютеры из одного логического сегмента в другой. Так как MAC-адрес сетевого адаптера аппаратно устанавливается изготовителем, то при перемещении компьютера мосты должны периодически обновлять содержимое своих адресных баз. Для обеспечения этой функции записи в адресной базе делятся на два типа - статические и динамические. С каждой динамической записью связан таймер неактивности. Когда мост принимает кадр с адресом источника, соответствующим некоторой записи в адресной базе, то соответствующий таймер неактивности сбрасывается в исходное состояние. Если же от какой-либо станции долгое время не поступает кадров, то таймер неактивности исчерпывает свой интервал, и соответствующая ему запись удаляется из адресной базы.
Рис. 2.7. Таблица продвижений моста System 3000 Local Bridge
Проблема петель при использовании мостов
Обучение, фильтрация и продвижение основаны на существовании одного логического пути между любыми двумя узлами сети. Наличие нескольких путей между устройствами, известных также как "активные петли", создает проблемы для сетей, построенных на основе мостов.
Рис. 2.8. Влияние замкнутых маршрутов на работу мостов
Рассмотрим в качестве примера сеть, приведенную на рисунке 2.8. Два сегмента параллельно соединены двумя мостами так, что образовалась активная петля. Пусть новая станция с адресом 10 впервые посылает пакет другой станции сети, адрес которой также пока неизвестен мосту. Пакет попадает как в мост 1, так и в мост 2, где его адрес заносится в базу адресов с пометкой о его принадлежности сегменту 1. Так как адрес назначения неизвестен мосту, то каждый мост передает пакет на сегмент 2. Эта передача происходит поочередно, в соответствии с методом случайного доступа технологии Ethernet. Пусть первым доступ к сегменту 2 получил мост 1. При появлении пакета на сегменте 2 мост 2 принимает его в свой буфер и обрабатывает. Он видит, что адрес 10 уже есть в его базе данных, но пришедший пакет является более свежим, и он утверждает, что адрес 10 принадлежит сегменту 2, а не 1. Поэтому мост 2 корректирует содержимое базы и делает запись о том, что адрес 10 принадлежит сегменту 2. Аналогично поступает мост 1, когда мост 2 передает свою буферизованную ранее первую версию пакета на сегмент 2. В результате пакет бесконечно циркулирует по активной петле, а мосты постоянно обновляют записи в базе, соответствующие адресу 10. Сеть засоряется ненужным трафиком, а мосты входят в состояние "вибрации", постоянно обновляя свои базы данных.
В простых сетях сравнительно легко гарантировать существование одного и только одного пути между двумя устройствами. Но когда количество соединений возрастает или интерсеть становится сложной, то вероятность непреднамеренного образования петли становится высокой. Кроме того, желательно для повышения надежности иметь между мостами резервные связи, которые не участвуют при нормальной работе основных связей в передаче информационных пакетов станций, но при отказе какой-либо основной связи образуют новую связную рабочую конфигурацию без петель. Описанные задачи решает алгоритм покрывающего дерева (Spanning Tree Algorithm, STA).
Требования к пропускной способности моста
До сих пор мы предполагали, что при использовании моста для связи двух сегментов вместо повторителя общая производительность сети всегда повышается, так как уменьшается количество узлов в каждом сегменте и загрузка сегмента уменьшается на ту долю трафика, который теперь является внутренним трафиком другого сегмента. Это действительно так, но при условии что мост передает межсегментный трафик без значительных задержек и без потерь кадров. Однако, анализ рассмотренного алгоритма работы моста говорит о том, что мост может и задерживать кадры и, при определенных условиях, терять их. Задержка, вносимая мостом, равна по крайней мере времени записи кадра в буфер. Как правило, после записи кадра на обработку адресов также уходит некоторое время, особенно если размер адресной таблицы велик. Поэтому задержка увеличивается на время обработки кадра.
Время обработки кадра влияет не только на задержку, но и на вероятность потери кадров. Если время обработки кадра окажется меньше интервала до поступления следующего кадра, то следующий кадр будет помещен в буфер и будет ожидать там, пока процессор моста не освободиться и не займется обработкой поступившего кадра. Если средняя интенсивность поступления кадров будет в течение длительного времени превышать производительность моста, то есть величину, обратную среднему времени обработки кадра, то буферная память, имеющаяся у моста для хранения необработанных кадров, может переполниться. В такой ситуации мосту некуда будет записывать поступающие кадры и он начнет их терять, то есть просто отбрасывать.
Потеря кадра - ситуация очень нежелательная, так как ее последствия не ликвидируются протоколами локальных сетей. Потеря кадра будет исправлена только протоколами транспортного или прикладного уровней, которые заметят потерю части своих данных и организуют их повторную пересылку. Однако, при регулярных потерях кадров канального уровня производительность сети может уменьшится в несколько раз, так как тайм-ауты, используемые в протоколах верхних уровней, существенно превышают времена передачи кадров на канальном уровне, и повторная передача кадра может состояться через десятки секунд.
Для предотвращения потерь кадров мост должен обладать производительностью, превышающую среднюю интенсивность межсегментного трафика и большой буфер для хранения кадров, передаваемых в периоды пиковой нагрузки.
В локальных сетях часто оказывается справедливым эмпирическое правило 80/20, говорящее о том, что при правильном разбиении сети на сегменты 80% трафика оказывается внутренним трафиком сегмента, и только 20% выходит за его пределы. Если считать, что это правило действует по отношению к конкретной сети, то мост должен обладать производительностью в 20 % от максимальной пропускной способности сегмента Ethernet, то есть производительностью 0.2 ( 14880 = 3000 кадра в секунду. Обычно локальные мосты обладают производительностью от 3000 кадров в секунду и выше.
Однако, гарантий на доставку кадров в любых ситуациях мост, в отличие от повторителя, не дает. Это его принципиальный недостаток, с которым приходится мириться.