IP over Ethernet #1 Введение в Ethernet коммутацию.

Продолжение IP over Ethernet. Часть 0.2 со ссылками на 0.1 и 0.


Итак поговорим о ethernet коммутаторах.

Сначала кратенько о том как было до них:


Для понимания функционирования любой эзернет сети нужно знать немного, но все-таки кое-что нужно:

1. Адресация. Если не упоминать ранние реализации, а начинать сразу с актуальных (ethernet v2), то у каждого устройства в сети (для удобства дальше все такие устройства буду называть хостами (host) как в tcp/ip независимо от контекста L2 или L3 пока речь будет идти о связанных с tcp/ip технологиях) должен существовать уникальный физический адрес - MAC, уникальность обеспечивается координацией IEEE производителей оборудования. Каждый MAC-адрес это 48 битный идентификатор, для удобства восприятия человеком обычно представленный шестнадцатиричными цифрами, объединенными в блоки:


00:0f:9f:c5:c3:c3 - разделенные двоеточиями на 8-мибитные блоки (байты или октеты) - один из наиболее популярных видов записи;

00-0f-9f-c5-c3-c3 - то же, но с дефисами, так, обычно, в длинках;

c04a.003c.044b - разделенные точками 16-тибитные блоки - принятый вид записи в Cisco IOS;


Первые 3 октета это префикс, соответствующий вендору, а следующие 3 октета - уникальный идентификатор, назначенный производителем.


Кроме идентификаторов хостов есть MAC адреса специального назначения. Во-первых широковещательный адрес или broadcast (ff:ff:ff:ff:ff:ff), MAC адрес, который используется, когда отправляемый эзернет кадр предназначается всем хостам в сети. Во-вторых и далее разные адреса для многоадресного (multicast) трафика, vrrp и прочих.


2. Общие сведения об струтуре кадра эзернет. Минимум, который нужно знать:

IP over Ethernet #1 Введение в Ethernet коммутацию. Интернет, Ethernet, Internet over Ethernet, Длиннопост

Кадр состоит из 3х частей - заголовка, полезных данных и контрольной суммы. Пока нам для последующего разбора надо знать из чего состоит заголовок. На рисунке заголовок представлен 14ю байтами из которых 6 - адрес назначения (destination, dst, d), 6 - адрес источника (source, src, s), 2 - тип кадра. Надо сказать, что на физическом уровне перед заголовком есть еще и преамбула, состоящая из 8ми байт, а после кадра межпакетный пропуск, но для начального понимания коммутации они несущественны. После нехитрого подсчета минимального payload в 46 и checksum в 4 байта получим минимальный кадр размером в 64 байта.


До появления коммутаторов все кадры в эзернет сети приходили всем хостам. То есть в такой сети (для удобства среда просто обозначена как шина):

IP over Ethernet #1 Введение в Ethernet коммутацию. Интернет, Ethernet, Internet over Ethernet, Длиннопост

Кадр отправленный от A к C с адресами в заголовке dst 00:00:00:00:00:03 и src 00:00:00:00:00:01 приходил и к B, B соответственно должен был его отбросить, так как кадр не для него, а C принять и обработать, A во время отправки ничего принимать не мог. Если C ответит A, то кадр также попадет и к A, где будет обработан, и к B, где будет отброшен. Любой кадр с dst ff:ff:ff:ff:ff:ff приходил ко всем и обрабатывался всеми, кроме отправителя, который, как водится, ничего не мог принимать во время отправки.


Сеть на концентраторах (хабах) принципиально ничего не меняла, кадры доставлялись точно также всегда всем.

IP over Ethernet #1 Введение в Ethernet коммутацию. Интернет, Ethernet, Internet over Ethernet, Длиннопост

Сеть на коммутаторах функционирует совершенно иначе, хотя для хостов все осталось как было и вроде бы ничего не изменилось.

IP over Ethernet #1 Введение в Ethernet коммутацию. Интернет, Ethernet, Internet over Ethernet, Длиннопост

Картина почти идентична предыдущей, но на ней не хватает существенных деталей, которые раньше не были существенными - номеров портов, исправим.

IP over Ethernet #1 Введение в Ethernet коммутацию. Интернет, Ethernet, Internet over Ethernet, Длиннопост

Теперь разберемся, что происходит в такой сети при таком же трафике как в предыдущих примерах.

Кадр отправленный от A к C с адресами в заголовке dst 00:00:00:00:00:03 и src 00:00:00:00:00:01 приходит в 3й порт свича. С этого момента все совсем не так как раньше. Я писал, что свич это специализированный сетевой компьютер. У него есть центральный процессор и память (ЗУ).


Итак шаг за шагом:


1. Приняв кадр на 3м порту с src-mac 00:00:00:00:00:01, свич, используя специализированную часть ЗУ, называемую CAM таблицей, запомнит на некоторое время, что хост A с MAC адресом 00:00:00:00:00:01 подключен где-то за 3м портом. CAM таблица представляет собой специализированное ЗУ, называемое ассоциативной памятью или АЗУ, в котором поиск данных по уникальным ключам происходит очень быстро.


2. Изучив dst-mac 00:00:00:00:00:02 из заголовка и определив, что это не адрес специального назначения, свич начнет поиск записи в CAM таблице, соответствующей ключу в виде этого адреса, если записи там нет (предположим в момент, когда сеть только включилась), то кадр будет отправлен во все порты кроме того, в который пришел этот кадр. То есть дальше кадр уйдет в порты 6 и 8, где будет обработан или отброшен соответствующими хостами.


3. Если C ответит A, то кадр с dst 00:00:00:00:00:01 и src 00:00:00:00:00:03 будет принят 8м портом свича.  Свич добавит в CAM таблицу запись о том, что хост C с MAC адресом 00:00:00:00:00:03 подключен где-то за 8м портом.


4. Изучив dst-mac 00:00:00:00:00:01 из заголовка и определив, что это не адрес специального назначения, свич начнет поиск записи в CAM таблице, соответствующей ключу в виде этого адреса, найдет запись о том, что хост с MAC адресом 00:00:00:00:00:01 подключен где-то за 3м портом. Дальше кадр уйдет только в порт 3, где будет обработан хостом A. В остальные порты кадр скоммутирован не будет.


Далее при каком-то значимом трафике между хостами кадры будут уходить уже адресно только получателям в соответствующие порты, это еще называется unicast.


5. Любой кадр с dst ff:ff:ff:ff:ff:ff будет после соответствующего обновления CAM таблицы по src-mac будет отправлен во все порты, кроме того на котором он был получен. Кадр будет обработан всеми хостами, кроме отправителя.


Для оценки значимости этих простых, в сущности алгоритмов я и написал предыдущие 3 части цикла. Поскольку это и предопределило революцию, описанную ранее.


В конце приведу несколько полезных ссылок в качестве, так сказать, дополнительной литературы.


Сети для самых маленьких. Часть вторая. Коммутация

Про MAC-таблицы в коммутаторах

Всё, что вы хотели знать о Ethernet фреймах, но боялись спросить, и не зря

В Интернет через Ethernet - Nag.ru

Лига Сисадминов

1.5K поста17.6K подписчик

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

4
Автор поста оценил этот комментарий

Интересно и доходчиво, пишите еще пожалуйста!

раскрыть ветку
1
Автор поста оценил этот комментарий
Льзя ли называть сегменты мак-адреса октетами?
1
Автор поста оценил этот комментарий

Можно добавить, что шина и хаб имеют один домен коллизии, а коммутатор один домен на один порт. Это существенно повышает скорость и надежность

раскрыть ветку
1
Автор поста оценил этот комментарий

В статье не увидел упоминания про пакет. Может это будет дальше?

По своему опыту вижу частую ошибку у многих не опытных сетевиков, когда они начинают путать понятия фрейма и пакета.

раскрыть ветку