Как коммутатор узнает 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 или которая только что перезагрузилась.

Hobbs
источник
4

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

Рон Мопин
источник
За исключением случаев, когда он затопляет, он не затопляет кадр обратно в порт, из которого он получил кадр, верно?
Тодд Уилкокс
1
Правильно. он не отправляет его в порт, из которого был получен кадр.
Рон Мопин
3
Я просто добавлю, что коммутатор не узнает новый (целевой) MAC-адрес, пока устройство не ответит.
Рон Ствол
Затопление кадра во все порты, есть ли риск для безопасности?
3
Может быть. И именно поэтому некоторые / многие коммутаторы поддерживают отключение одноадресной рассылки неизвестных одноадресных (а также многоадресных). За три десятилетия работы в сети у меня никогда не было необходимости его использовать.
Рикки Бим