Зачем коммутаторам нужны таблицы ARP, когда перевод выполняется на стороне машины?

12

Как видно из названия, зачем коммутаторам нужны таблицы ARP, когда перевод выполняется на стороне машины?

Грубо говоря, почему есть две таблицы ARP на машинах и на коммутаторах? Не достаточно ли одного на коммутаторе?

Мохамад-Джаафар Нехме
источник
Я думаю, что ответы на этой странице правильные. На других страницах я нашел других комментаторов, говорящих, что коммутаторы L2 содержат таблицы ARP. Это не имеет никакого смысла. Только устройства L3 содержат таблицы ARP.
Стивен Гиббонс

Ответы:

23

Это довольно распространенное заблуждение или, точнее, проблема терминологии. На коммутаторе второго уровня нет таблицы ARP, только таблица пересылки. Коммутатор записывает каждый MAC-адрес src, который видит входящим, в таблицу пересылки и приписывает его порту, так что кадры с dst MAC будут отправляться только на порт, известный для этого MAC. Многие люди называют это «таблицей arp» или «кешем arp», хотя это не так.

В управляемом коммутаторе второго уровня есть таблица переадресации плюс таблица ARP, но последняя используется только для интерфейса управления для связи с заинтересованными хостами (т. Е. ПК, который вы используете для настройки коммутатора.) В управляемом коммутаторе уровня 3 будет таблица переадресации плюс таблица ARP, поскольку она необходима для интерфейса управления, а также существует функциональность маршрутизатора для пересылки между подсетями.

Джефф Меден
источник
Насколько я понимаю, вы бы смоделировали коммутатор как набор (коммутатор) портов. Порты - это пронумерованные очереди пакетов. Коммутатор истощает порты в произвольном порядке и поддерживает отображение от mac к порту. Когда пакет выгружается из порта, src mac (адрес) сопоставляется с портом (номером). Когда очищенный пакет должен быть доставлен, он отправляется на порт Dest Mac, если он известен, или транслируется, если он не известен. Это означает, что порт должен получить пакет eth для сопоставления.
Роб
@Rob, в вашем комментарии есть ряд неясных утверждений, если не явных неточностей. Порты не являются очередями; на некоторых платформах может быть отображение 1: 1, но они не совпадают. MAC-адрес узнается, когда кадр получен, а не передан. Кадры доставляются в выходную очередь в порядке их получения, возможно, в сочетании с каким-либо QoS, это не произвольно. Кадры с неизвестными адресами назначения затопляются, а не транслируются.
YLearn
Затем: модель переключается в виде пронумерованных пар очередей (пакет Ethernet) (вход, выход). Когда входная очередь считывается, убедитесь, что src mac этого пакета сопоставлен с номером порта входной очереди. Этот пакет должен быть помещен в очередь out, соответствующую dst mac. Если порт не сопоставлен, пакет помещается во все очереди, кроме его собственной. (Не уверен, что такое различие между широковещательной передачей и флудом, поскольку я предполагаю, что он буквально посылает один и тот же сигнал по всем проводам на аппаратном уровне; или, возможно, он циклически перебирает через порты?)
Роб
Ах ... Я думаю, что вижу возражение против моделирования коммутатора в виде очередей пакетов. Коммутатор может работать с меньшими порциями данных, чем целые пакеты. То есть: как только мы узнаем, какие порты должны получить пакет, для которого мы получаем байты, мы можем отправлять эти байты. пример: поставьте в очередь достаточно байтов для обработки заголовка Ethernet; не держите весь пакет.
Роб
@Rob, залитый кадр - это одноадресный кадр с неизвестным адресатом, который залил каждый порт, кроме принимающего порта. Широковещательная рассылка - это кадр всех адресатов, который отправляется всеми портами, отличными от принимающего порта, но будет по-прежнему обрабатываться таким образом всеми коммутаторами, получающими его в широковещательном домене L2. Хотя эффект одинаков для одного коммутатора, эффект для всей сети значительно отличается.
YLearn
6

Каждое устройство, использующее протокол IP, имеет таблицу ARP. Поскольку IP является протоколом L3 и требует базового протокола L2, это требование для устройства, чтобы иметь возможность преобразовывать IP-адрес L3 в свой соответствующий адрес L2.

Независимо от того, связывается ли ваше устройство с IP-адресом в локальной сети или нет, оно должно отправлять свой трафик L2 (для простоты, исключим широковещательную и многоадресную рассылку из этого обсуждения) на конкретное устройство в локальном домене L2. Если IP-адрес находится в локальной сети, он будет напрямую связан с устройством назначения. Если нет, то это будет устройство, функционирующее в качестве шлюза или маршрутизатора для локальной сети, которое может перенаправлять трафик L3 к месту назначения.

Если коммутатор вообще не использует протокол IP (т. Е. Он даже не обеспечивает какого-либо управления по IP, никакой функциональности L3 и т. Д.), То ему не нужна таблица ARP.

Однако я не знаю о платформе корпоративного коммутатора, которая не использует протокол IP. Telnet, SSH, HTTP, HTTPS и SNMP - это лишь несколько примеров широко поддерживаемых сервисов корпоративного коммутатора, которым требуется доступ к IP.

YLearn
источник
2

Как вы, вероятно, уже знаете, цель таблицы ARP - преобразовать адреса сетевого уровня в адреса канального уровня. т.е. IP-адреса к MAC-адресам.

Таблицы, на которые вы ссылаетесь, не совсем полны. Коммутаторы уровня 2 также имеют два вида таблиц:

  • таблица ARP, которая используется для связи с коммутатором «как компьютер» для взаимодействия с его элементами управления. Ну, так будет, если это управляемый коммутатор

  • таблица, которая связывает порты коммутатора с MAC-адресами

Пример 1. Если ПК запускает пакет, он будет использовать MAC-адрес, если IP-адрес является локальным (из таблицы ARP). Когда этот пакет достигает коммутатора, коммутатор переместит пакет на соответствующий порт на основе MAC-адреса (из порта коммутатора / таблицы MAC).

Пример 2. Если коммутатор запускает пакет из своего интерфейса управления, он делает то же самое, что и ПК, используя свою таблицу ARP. Но если коммутатор запускает пакет из своей функции переключения, он просто перемещает этот пакет с одного порта на другой в соответствии со своей таблицей портов / MAC.

fred3
источник
Спасибо дорогой. Хорошие и полезные примеры. Пожалуйста, не путайте между пакетами и кадрами.
Мохамад-Джафар NEHME
-2

Коммутаторы имеют таблицы MAC-адресов.
Конечные точки, такие как ПК, имеют таблицы arp.

Ронни Ройстон
источник
Значит, только у коммутаторов есть таблицы MAC-адресов? И только конечные точки имеют таблицы ARP?
YLearn
1
@YLearn Для реальных переключателей L2, да.
Навин