При появлении в конце 80-х начале 90-х годов быстрых протоколов, появились коммутаторы, они предназначались для обслуживания потока поступающего на каждый порт. В устройство ставился отдельный специализированный процессор, который реализовывал алгоритм прозрачного моста. По сути, коммутатор — это мультипроцессорный мост, способный параллельно продвигать кадры сразу между всеми парами своих портов.
Производительность коммутаторов на несколько порядков выше, чем мостов – коммутаторы могут передавать до нескольких десятков, а иногда и сотен миллионов кадров в секунду, в то время как мосты обычно обрабатывали 3 – 5 тысяч кадров в секунду.
Рис. Структура коммутатора EtherSwitch компании Kalpana
Каждый из 8 портов 10Base-T обслуживается одним процессором пакетов Ethernet (EPP). Кроме того, коммутатор имеет системный модуль, который координирует работу всех процессоров ЕРР, в частности ведет общую адресную таблицу коммутатора для передачи кадров между портами используется коммутационная матрица. Она функционирует по принципу коммутации каналов, соединяя порты коммутатора. При поступлении кадра в какой-либо порт соответствующий процессор ЕРР буферизует несколько первых байтов кадра, чтобы прочитать адрес назначения. После получения адреса назначения процессор сразу же приступает к обработке кадра, не дожидаясь прихода остальных его байтов.
Процессор ЕРР просматривает свой кэш адресной таблицы, и если не находит так нужного адреса, обращается к системному модулю, который работает в многозадачном режиме, параллельно обслуживая запросы всех процессоров ЕРР. Системный модуль производит просмотр общей адресной таблицы и возвращает процессору найденную строку, которую тот буферизует в своем кэше для последующего использования.
Если адрес назначения найден в адресной таблице и кадр нужно отфильтровать, процессор просто прекращает записывать в буфер байты кадра, очищает буфер и ждет поступления нового кадра
Если же адрес найден и кадр нужно передать на другой порт, процессор, продолжая прием кадра в буфер, обращается к коммутационной матрице, пытаясь установить в пей путь, связывающий его порт с портом, через который идет маршрут к адресу назначения. Коммутационная матрица способна помочь только в том случае, если порт адреса назначения в этот момент свободен, то есть, не соединен с другим портом данного коммутатора;
Если же порт занят, то, как и в любом устройстве с коммутацией каналов, матрица в соединении отказывает, в этом случае кадр полностью буферизуется процессором входного порта, после чего процессор ожидает освобождения выходного порта и образования коммутационной матрицей нужного пути.
После того как нужный путь установлен, в него направляются буферизованные байты кадра, которые принимаются процессором выходного порта. Как только процессор выходного порта получает доступ к подключенному к нему сегменту Ethernet по алгоритму CSMA/CD, байты кадра сразу же начинают передаваться в сеть. Процессор входного порта постоянно хранит несколько байтов принимаемого кадра в своем буфере, что позволяет ему независимо и асинхронно принимать и передавать байты кадра .
Описанный способ передачи кадра без его полной буферизации получил название коммутации «на лету» (on-the-fly), или – «напролет» (cut-through). Этот способ представляет собой, по сути, конвейерную обработку кадра, когда частично совмещаются во времени несколько этапов его передачи.
Прием первых байтов кадра процессором входного порта, включая прием байтов адреса назначения.
Поиск адреса назначения в адресной таблице коммутатора (в кэше процессора или в общей таблице системного модуля).
Коммутация матрицы.
Прием остальных байтов кадра процессором входного порта.
Прием байтов кадра (включая первые) процессором выходного порта через коммутационную матрицу.
Получение доступа к среде процессором выходного порта
Передача байтов кадра процессором выходного порта в сеть.