Как коммутатор узнает MAC-адрес, которого нет в таблице поиска?


12

У меня относительно тупой вопрос. Предположим, что коммутатор только что запустился и получил кадр, содержащий MAC-адрес назначения для сетевого устройства, которого нет в таблице MAC-адресов.

Что происходит потом? Передает ли он (MAC-адрес ff:ff:ff:ff:ff:ff) и получает ответы от подключенных устройств, или для этого используется протокол, выделенный? Я не думаю, что коммутатор использует ARP (Address Resolution Protocol)?


1
Если вы подумаете об этом, когда коммутатор не может фактически переключить фрейм (например, потому что у него нет необходимого адреса в таблице), он обычно должен рассматривать этот фрейм как концентратор по причинам совместимости.
Тодд Уилкокс

Спасибо всем за ответы.

Ответы:


28

Хороший вопрос. Я отвечу на это с анимацией:

введите описание изображения здесь

Когда узел A посылает фрейм, коммутатор не имеет ничего в его таблице МАС - адресов. Получив кадр, он записывает MAC-адрес хоста A в соответствие с портом коммутатора . Поскольку он не знает, где находится MAC-адрес назначения, он затопляет кадр всеми портами.

Это гарантирует, что если хост B существует (который на данный момент коммутатор еще не знает), он получит его. Надеемся, что после получения кадра хост B сгенерирует ответный кадр, который позволит коммутатору узнать сопоставление MAC-адреса из возвращаемого кадра.

Вы можете прочитать больше о том, как работает Switch, здесь (откуда я взял анимацию). Я также предложил бы прочитать всю серию статей, чтобы поближе рассмотреть, как пакет перемещается по сети .

Последнее замечание, касающееся терминов « Затопление против трансляции» . Коммутатор никогда не передает кадры, широковещание - это не действие, которое может выполнить коммутатор. Переключатель может затопить только кадр. Вещания просто кадр с назначением MAC - адресом ffff.ffff.ffff. Это часто путают, потому что конечный эффект один и тот же, но на самом деле они разные .


Основное различие между наводнением и вещанием заключается в том, как будет реагировать следующий узел (узлы)
Ferrybig,

2
@Ferrybig Верно. Но я бы выразить это немного разные ... Главное отличие между коммутатором затопление в однонаправленной раму, и переключатель затопление в широковещательный кадр, как следующий узел (ы) будет реагировать. Нет такого понятия, как коммутатор, передающий кадр. (Этот комментарий и мой ответ говорят о транзитном трафике, а не об управлении трафиком с / на коммутатор)
Эдди,

5

Коммутатор не использует ARP, но ARP может помочь предотвратить возникновение этой ситуации, по двум причинам:

  1. Если узел A отправляет IP-пакет на узел B, который не находится в его кэше ARP, он сначала отправит запрос ARP (который является широковещательным пакетом и будет автоматически передан коммутатором во все порты). Когда узел B отправляет свой ответ ARP, коммутатор узнает свой MAC-адрес. Таким образом, к тому времени, когда происходит фактическая передача данных, коммутатор уже знает MAC-адреса участников, и ему не нужно загружать пакеты данных.

  2. Многие устройства, когда их связь повышается, отправят бесплатный пакет ARP . Помимо обновления кэшей ARP других узлов в сети, GARP также заполняет таблицу MAC-адресов коммутатора.

IPv6 не использует ARP, но NDP выполняет аналогичную задачу.

Таким образом, в целом, хотя коммутаторы, безусловно, будут заполнять кадры одноадресными адресами, которые они не изучили, это необязательно так часто, как вы думаете, потому что обычно у них будет возможность заранее узнать адреса узлов из широковещательных кадров. Тем не менее, вы можете определенно наблюдать это с коммутатором, у которого была переполнена его таблица MAC или которая только что перезагрузилась.


4

Когда коммутатор получает кадр, он обновляет свою таблицу MAC-адресов, указав MAC-адрес источника и порт, на котором он получил кадр. Если MAC-адрес назначения отсутствует в его таблице MAC-адресов (неизвестная одноадресная передача), он перенаправляет кадр на все порты, кроме порта, на котором был получен кадр.


За исключением случаев, когда он затопляет, он не затопляет кадр обратно в порт, из которого он получил кадр, верно?
Тодд Уилкокс

1
Правильно. он не отправляет его в порт, из которого был получен кадр.
Рон Мопин

3
Я просто добавлю, что коммутатор не узнает новый (целевой) MAC-адрес, пока устройство не ответит.
Рон Ствол

Затопление кадра во все порты, есть ли риск для безопасности?

3
Может быть. И именно поэтому некоторые / многие коммутаторы поддерживают отключение одноадресной рассылки неизвестных одноадресных (а также многоадресных). За три десятилетия работы в сети у меня никогда не было необходимости его использовать.
Рикки Бим
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.