Рис.25. Архитектура коммутатора с общей шиной
Входной блок процессора помещает в ячейку, переносимую по шине, тэг, в котором указывает номер порта назначения. Каждый выходной блок процессора порта содержит фильтр тэгов, который выбирает тэги, предназначенные данному порту.
Шина, также как и коммутационная матрица, не может осуществлять промежуточную буферизацию, но так как данные кадра разбиваются на небольшие ячейки, то задержек с начальным ожиданием доступности выходного порта практически нет – здесь работает принцип коммутации пакетов, а не каналов.
Третья базовая архитектура взаимодействия портов – двухвходовая разделяемая память.
Входные блоки процессоров соединяются с переключаемым входом разделяемой памяти, а выходные блоки этих же процессоров соединяются с переключаемым выходом этой же памяти. Переключением входа и выхода разделяемой памяти управляет менеджер очередей выходных портов. В разделяемой памяти менеджер организует несколько очередей данных, по одной для каждого выходного порта. Входные блоки процессоров передают менеджеру портов запросы на запись данных в очередь того порта, который соответствует адресу назначения. Менеджер по очереди подключает вход памяти к одному из входных блоков процессоров, и тот переписывает часть данных кадра в очередь определенного выходного порта. По мере заполнения очередей менеджер производит также поочередное подключение выхода разделяемой памяти к выходным блокам процессоров портов, и данные из очереди переписываются в выходной буфер процессора.
Двухвходовая память должна быть достаточно быстродействующей для поддержания скорости перезаписи данных между N портами коммутатора.
У каждой из описанных схем есть свои достоинства и недостатки, поэтому часто в сложных коммутаторах эти архитектуры применяются в комбинации друг с другом.
В конструктивном отношении концентраторы подразделяются на:
· автономные с фиксированным количеством портов;
· модульные на основе шасси;
· стековые.
Основными характеристиками коммутатора, характеризующими его производительность, являются:
· скорость фильтрации кадров. Определяет скорость, с которой коммутатор выполняет такие этапы обработки кадра, как: 1) прием кадра в свой буфер;
2) просмотр адресной таблицы; 3) уничтожение кадра, если порты назначения и источника принадлежат одному сегменту. Скорость фильтрации почти у всех коммутаторов является неблокирующей – коммутатор успевает отбрасывать кадры в темпе их поступления;
· скорость продвижения кадров. Определяет скорость, с которой коммутатор выполняет следующие этапы обработки кадра: 1) прием кадра в свой буфер;
2) просмотр адресной таблицы; 3) передача кадра в сеть через найденный порт назначения. Скорости фильтрации и продвижения кадров измеряются обычно в кадрах в секунду (по умолчанию берутся кадры минимального размера, которые создают для коммутатора наиболее тяжелый режим работы);
· пропускная способность. Измеряется количеством пользовательских данных (в Мбит/с), переданных в единицу времени через его порты. Максимальная пропускная способность достигается на кадрах максимальной длины;
· задержка передачи кадра. Измеряется как время, прошедшее с момента прихода первого байта кадра на входной порт коммутатора до момента появления этого же байта на его выходном порту. Задержка складывается из времени, затрачиваемого на буферизацию байт кадра, а также времени, затрачиваемого на обработку кадра коммутатором (просмотр адресной таблицы, принятие решения о фильтрации или продвижении, получение доступа к среде выходного порта). Величина задержки передачи кадра зависит от режима работы коммутатора. Если коммутация осуществляется «на лету», то задержки обычно составляют 5..40 мкс, при полной буферизации кадров – 50..200 мкс (для кадров минимальной длины).
Кроме того, существует несколько других характеристик коммутатора, которые в наибольшей степени влияют на его производительность:
· тип коммутации – «на лету» или с полной буферизацией;
· размер буфера(ов) кадров;
· производительность внутренней шины;
· производительность процессора(ов);
· размер внутренней адресной таблицы.
Внутренняя буферная память нужна коммутатору для того, чтобы временно хранить в ней кадры, когда их невозможно немедленно передать на выходной порт. Буфер предназначен для сглаживания кратковременных пульсаций трафика. Процессорный модуль каждого порта обычно имеет свою буферную память для хранения кадров. Чем больше объем этой памяти, тем менее вероятны потери кадров при перегрузках. Типичный размер буферной памяти порта составляет десятки-сотни килобайт. Дополнительным средством защиты может являться общий для всех портов буфер в модуле управления коммутатором.
Дополнительные функции коммутаторов
В данном разделе описываются наиболее распространенные дополнительные функции, которые поддерживаются большинством производителей коммутаторов для локальных сетей.
Выше отмечалось, что для нормальной работы коммутаторов и мостов в сети не должно быть замкнутых маршрутов/петель. Такие маршруты могут создаваться администратором для образования резервных связей или же возникать случайным образом, если сеть имеет многочисленные связи, а кабельная система плохо документирована. Поддерживающие алгоритм STA коммутаторы автоматически создают древовидную конфигурацию связей на множестве всех связей сети, включающем и резервные. Такая конфигурация называется покрывающим деревом – Spanning Tree. Алгоритм STA описан в стандарте IEEE 802.1D - том же стандарте, который описывает и алгоритм работы прозрачных мостов.
Реализация алгоритма STA очень важна в больших сетях. Если коммутатор не поддерживает этот алгоритм, то администратор должен вручную заблокировать определенные порты, чтобы исключить наличие в сети замкнутых маршрутов. К тому же при отказе какого-либо кабеля, порта или коммутатора администратор должен обнаружить этот отказ и вручную перевести некоторую резервную связь в рабочее состояние. Если же коммутаторы поддерживают протокол STA, то отказы обнаруживаются автоматически за счет постоянного тестирования связности сети служебными пакетами. Сразу же после обнаружения потери связности алгоритм STA строит новое покрывающее дерево, и сеть автоматически восстанавливает работоспособность, если, конечно, это возможно при имеющихся резервных связях.
Коммутаторы находят покрывающее дерево адаптивно, с помощью обмена служебными пакетами. При этом алгоритм STA определяет активную конфигурацию сети за три этапа:
· сначала в сети выбирается корневой коммутатор, от которого строится дерево. Корневой коммутатор может быть выбран автоматически или назначен администратором. При автоматическом выборе корневого коммутатора им становится коммутатор с меньшим MAC – адресом;
· затем для каждого коммутатора определяется корневой порт - порт, наименее удаленный от корневого коммутатора;
· наконец, для каждого сегмента сети выбирается так называемый назначенный порт, который имеет кратчайшее расстояние от данного сегмента до корневого коммутатора. После определения корневых и назначенных портов коммутатор блокирует остальные порты.
Расстояние до корня определяется как суммарное условное время, которое затрачивается на передачу бита данных от данного порта до порта корневого коммутатора. При этом считается, что время внутренних передач (с порта на порт) в коммутаторах пренебрежимо мало, и учитывается только время на передачу данных по сегментам сети. Условное время рассчитывается в 10-наносекундных единицах.
Для автоматического определения начальной активной конфигурации дерева все коммутаторы сети после их инициализации начинают периодически обмениваться специальными пакетами, называемыми протокольными блоками данных моста BPDU (Bridge Protocol Data Unit).
Пакеты BPDU помещаются в поле данных кадров канального уровня, например, кадров Ethernet или FDDI. Желательно, чтобы все коммутаторы поддерживали общий групповой адрес, с помощью которого пакеты BPDU могли одновременно передаваться всем коммутаторам сети. В противном случае пакеты BPDU рассылаются широковещательно.
Существует два типа пакетов BPDU: конфигурационный BPDU, т.е. заявка на возможность стать корневым коммутатором, и BPDU уведомления о реконфигурации, который посылается коммутатором, обнаружившим событие, требующее реконфигурации (отказ линии связи, отказ порта и др.).
После инициализации каждый коммутатор сначала считает себя корневым и начинает через интервал времени Hello генерировать через все свои порты сообщение BPDU конфигурационного типа. В них он указывает свой идентификатор в качестве идентификатора корневого коммутатора, нулевое расстояние до корня и идентификатор того порта, через который выдается данный BPDU. То же самое делают и другие коммутаторы в сети. Как только некоторый коммутатор получает конфигурационный BPDU, в котором указан идентификатор корневого коммутатора со значением, меньшим его собственного, то он перестает генерировать собственные BPDU, а начинает ретранслировать только кадры нового претендента на звание корневого коммутатора. При ретрансляции каждый коммутатор наращивает условное расстояние до корня, указанное в пришедшем пакете BPDU. В конце концов, в сети определится коммутатор с минимальным MAC-адресом, который станет корневым и с интервалом Hello будет посылать в сеть конфигурационные пакеты BPDU. Все остальные коммутаторы в сети передачу собственных конфигурационных пакетов прекратят.
Ретранслируя кадры, каждый коммутатор для каждого своего порта запоминает минимальное расстояние до корня, встретившееся во всех принятых этим портом кадрах BPDU. При завершении процедуры STA каждый коммутатор находит свой корневой порт – порт, для которого расстояние до корня минимально.