Алгоритм прозрачного моста IEEE 802.1D
Слово «прозрачный» в названии алгоритм прозрачного моста отражает тот факт, что мосты и коммутаторы в своей работе не учитывают существование в сети сетевых адаптеров конечных узлов, концентраторов, повторителей. С другой стороны, и перечисленные выше сетевые устройства функционируют, «не замечая» присутствия в сети мостов и коммутаторов.
Алгоритм прозрачного моста не зависит от технологии локальной сети, в которой устанавливается мост/коммутатор, поэтому прозрачные мосты/коммутаторы Ethernet работают точно так же, как прозрачные мосты/коммутаторы FDDI или Token Ring.
Коммутатор строит свою адресную таблицу на основании пассивного наблюдения за трафиком, циркулирующим в подключенных к его портам сегментах. При этом коммутатор учитывает адреса источников кадров данных, поступающих на порты коммутатора. По адресу источника кадра коммутатор делает вывод о принадлежности узла-источника тому или иному сегменту сети.
Рассмотрим процесс автоматического создания адресной таблицы коммутатора и ее использования на примере простой сети, представленной на рисунке. 14.4.
Рисунок.14.4 Принцип работы прозрачного моста/коммутатора.
Коммутатор соединяет два сетевых сегмента. Сегмент 1 составляют компьютеры, подключенные с помощью одного отрезка коаксиального кабеля к порту 1 коммутатора, а сегмент 2 – компьютеры, подключенные с помощью другого отрезка коаксиального кабеля к порту 2 коммутатора. В исходном состоянии коммутатор не знает о том, компьютеры с какими МАС-адресами подключены к каждому из его портов. В этой ситуации коммутатор просто передает любой захваченный и буферизованный кадр на все свои порты за исключением того порта, от которого этот кадр получен. В нашем примере у коммутатора только два порта, поэтому он передает кадры с порта 1 на порт 2, и наоборот. Отличие работы коммутатора в этом режиме от повторителя заключается в том, что он передает кадр, предварительно буферизуя его, а не бит за битом, как это делает повторитель. Буферизация разрывает логику работы всех сегментов как единой разделяемой среды. Когда коммутатор собирается передать кадр с сегмента на сегмент, например с сегмента 1 на сегмент 2, он, как обычный конечный узел, пытается получить доступ к разделяемой среде сегмента 2 по правилам алгоритма доступа, в данном примере — по правилам алгоритма CSMA/CD.
Одновременно с передачей кадра на все порты коммутатор изучает адрес источника кадра и делает запись о его принадлежности к тому или иному сегменту в своей адресной таблице.Эту таблицу также называют таблицей фильтрации, или таблицей маршрутизации.Например, получив на порт 1 кадр от компьютера 1, коммутатор делает первую запись в своей адресной таблице.
МАС-адрес 1 — порт 1.
Эта запись означает, что компьютер, имеющий МАС-адрес 1, принадлежит сегменту, подключенному к порту 1 коммутатора. Если все четыре компьютера данной сети проявляют активность и посылают друг другу кадры, то скоро коммутатор построит полную адресную таблицу сети, состоящую из 4 записей — по одной записи на узел.
При каждом поступлении кадра на порт коммутатора он, прежде всего, пытается найти адрес назначения кадра в адресной таблице. Продолжим рассмотрение действий коммутатора на примере (см. рисунок 14.4).
1. При получении кадра, направленного от компьютера 1 компьютеру 3, коммутатор просматривает адресную таблицу на предмет совпадения адреса в какой-либо из ее записей с адресом назначения — МАС-адресом 3. Запись с искомым адресом имеется в адресной таблице.
2. Коммутатор выполняет второй этап анализа таблицы — проверяет, находятся ли компьютеры с адресами источника и назначения в одном сегменте. В примере компьютер 1 (МАС-адрес 1) и компьютер 3 (МАС-адрес 3) Находятся в разных сегментах. Следовательно, коммутатор выполняет операцию продвижения(forwarding) кадра — передает кадр на порт 2, ведущий в сегмент получателя, получает доступ к сегменту и передает туда кадр.
3. Если бы оказалось, что компьютеры принадлежали одному сегменту, то кадр просто был бы удален из буфера. Такая операция называется фильтрацией(filtering).
4. Если бы запись МАС-адрес 3 отсутствовала в адресной таблице, то есть, другими словами, адрес назначения был неизвестен коммутатору, то он передал бы кадр на все свои порты, кроме порта — источника кадра, как и на начальной стадии процесса обучения.
Процесс обучения коммутатора никогда не заканчивается и происходит одновременно с продвижением и фильтрацией кадров. Коммутатор постоянно следит за адресами источника буферизуемых кадров, чтобы автоматически приспосабливаться к изменениям, происходящим в сети, — перемещениям компьютеров из одного сегмента сети в другой, отключению и появлению новых компьютеров.
Входы адресной таблицы могут быть динамическими, создаваемыми в процессе самообучения коммутатора, и статическими, создаваемыми вручную администратором сети. Статические записине имеют срока жизни, что дает администратору возможность влиять на работу коммутатора, например, ограничивая передачу кадров с определенными адресами из одного сегмента в другой.
Динамические записиимеют срок жизни — при создании или обновлении записи в адресной таблице с ней связывается отметка времени. По истечении определенного таймаута запись помечается как недействительная, если за это время коммутатор не принял ни одного кадра с данным адресом в поле адреса источника. Это дает возможность коммутатору автоматически реагировать на перемещения компьютера из сегмента в сегмент — при его отключении от старого сегмента запись о его принадлежности к нему со временем вычеркивается из адресной таблицы. После подключения этого компьютера к другому сегменту его кадры начнут попадать в буфер коммутатора через другой порт, и в адресной таблице появится новая запись, соответствующая текущему состоянию сети.
Кадры с широковещательными МАС-адресами, как и кадры с неизвестными адресами назначения, передаются коммутатором на все его порты. Такой режим распространения кадров называется затоплениемсети (flooding). Наличие коммутаторов в сети не препятствует распространению широковещательных кадров по всем сегментам сети. Однако это является достоинством только тогда, когда широковещательный адрес выработан корректно работающим узлом.
Нередко в результате каких-либо программных или аппаратных сбоев протокол верхнего уровня или сетевой адаптер начинают работать некорректно, а именно постоянно с высокой интенсивностью генерировать кадры с широковещательным адресом. Коммутатор в соответствии со своим алгоритмом передает ошибочный трафик во все сегменты. Такая ситуация называется широковещательным штормом(broadcast storm).
К сожалению, коммутаторы не защищают сети от широковещательного шторма, во всяком случае, по умолчанию, как это делают маршрутизаторы. Максимум, что может сделать администратор с помощью коммутатора для борьбы с широковещательным штормом, — установить для каждого узла предельно допустимую интенсивность генерации кадров с широковещательным адресом. Но при этом нужно точно знать, какая интенсивность является нормальной, а какая — ошибочной. При смене протоколов ситуация в сети может измениться, и то, что вчера считалось ошибочным, сегодня может оказаться нормой.
На рисунке 14.5 показана типичная структура коммутатора. Функции доступа к среде при приеме и передаче кадров выполняют микросхемы MAC, которые идентичны микросхемам сетевого адаптера.
Протокол, реализующий алгоритм коммутатора, располагается между уровнями MAC и LLC (рисунок 14.6).
Рисунок. 14.5 Структура моста/коммутатора.
Рисунок. 14.6 Место протокола коммутатора в стеке протоколов.