Перед следующими лабораторными работами со свичами хотелось бы немного объяснить, что же такое коммутаторы(switch) и мосты(bridge). Не буду вдаваться в детали и опишу самое основное.
В отличии от концентраторов(hub), свичи и мосты
коммутируют трафик изучая MAC-адреса
источника и получателя.
Коммутаторы и мосты
функционируют на втором уровне модели OSI(L2 устройства).
Коммутатор это по сути своей многопортовый мост.
Функции коммутаторов:
- Изучают MAC-адреса устройств, подключенных к портам. Составляют таблицу соответствия MAC-адреса и порта – таблица ассоциативной памяти (CAM-content-addressable memory)
- Получая пакет, коммутатор сверяет MAC-адрес получателя(destination) со свой таблицей, чтобы определить к какому порту подключен получатель. Если в таблице найден данный MAC, то коммутатор отправляет пакет только в этот порт. Если же в таблице нет данного MAC-адреса, то коммутатор рассылает данный пакет во все порты коммутатора, кроме порта от которого пришел данный пакет(порт-источник).
Следует отметить что при
первоначальной инициализации таблица MAC-адресов пуста.
Виды коммутации кадров(frame)
- store and forward. В данном режиме свич полностью получает кадр и только затем читает MAC-источник и MAC-получатель. Также проверяется контрольная сумма кадра(CRC). После этого кадр перенаправляется на нужный порт. Если же контрольная сумма не верна, то кадр не проходит (отбрасывается).
- cut-through. В отличии от предыдущего режима, в данном случае свич сразу проверяет MAC-получателя и тут же отправляет его на нужный порт, не дожидаясь других частей кадра. Это существенно уменьшает задержку. Однако, некоторые свичи все же проверяют контрольную сумму и при наличии большого числа ошибок свич либо в ручную либо автоматически переходит в режим store and forward.
- Fragment-free. Из названия следует что данный режим отбрасывает(фильтрует) фрагментированные (коллизионные) кадры. Обеспечивается это тем, что свич читает первые 64 байта до отправления кадра. А коллизии как правило происходят внутри первых 64 байт кадра. Данный режим медленнее режима cut-through
Рассмотрим механизм изучения MAC-адресов
Предположим, что свич работает в режиме store and forward
Компьютер PC0
пытается отправить данные компьютеру PC3
Допустим что на 1 порт свича приходит кадр. Он сохраняется в
буферной памяти. Свич читает MAC-адрес
получателя. Т.к. в таблице еще нет записи с таким адресом, свич начитает
рассылку кадра во все порты, исключая порт-источник. Во время рассылки свич
присваивает MAC-адрес
источника порту, из которого пришел кадр. Данные заносятся в таблицу. Если PC0 не будет передавать
пакеты, то данная запись исчезнет из таблицы по истечению времени хранения.
Как только PC3
ответит на массовую рассылку, и отправит пакет в ответ PC0, свич тут же создаст запись в
таблице и присвоит MAC-адресу
номер порта. Т.к. для MAC-адреса
PC0 уже есть запись в
таблице, то пакет сразу будет скоммутирован в нужный порт.
Таким образом, когда все компьютеры отправят хотя бы по
одному пакету, в свиче выстроится полнатя таблица MAC-адресов и соответствующих им портов.
спасибо за краткое и понятное изложение сути)
ОтветитьУдалитьзаходите еще)
УдалитьТок почему пакеты, их бы заменить на кадры)
УдалитьПолучая \пакет\, коммутатор сверяет MAC-адрес получателя(destination) со свой таблицей, чтобы определить к какому порту подключен получатель. Если в таблице найден данный MAC, то коммутатор отправляет \пакет\ только в этот порт. Если же в таблице нет данного MAC-адреса, то коммутатор рассылает данный \пакет\ во все порты коммутатора, кроме порта от которого пришел данный \пакет\(порт-источник).
ОтветитьУдалить