Краткая версия: у нас возникла проблема с конкретным сервером, получающим большое количество дубликатов пакетов. После долгого поиска неисправностей мы обнаружили, что проблема была вызвана тем, что коммутатор отправлял мой пакет через каждый порт (т.е. действовал как концентратор), а 3 маршрутизатора отражали пакет обратно. Когда маршрутизаторы отражали пакет обратно, коммутатор снова отправлял пакет через каждый другой порт, и они снова отражались бы другими маршрутизаторами. Это будет продолжаться до тех пор, пока TTL не уменьшится до 0. Я не понимаю, почему маршрутизаторы отправляли пакет обратно. Разве маршрутизатор не должен отбрасывать пакет, поскольку MAC-адрес назначения не соответствует его MAC-адресу?
Полная версия: предположим, что к коммутатору и моей виртуальной машине подключено 3 маршрутизатора (A, B и C). Пакет udp будет приходить от маршрутизатора A, предназначенного для моей виртуальной машины. На этом этапе TTL равен 60. Коммутатор не имеет MAC-адреса моей виртуальной машины, поэтому он перенаправляет пакет через каждый другой порт. Маршрутизаторы B и C получают пакет и видят, что IP-адрес находится на том же порту, поэтому уменьшите TTL и отправьте пакет обратно на тот же порт. Теперь у нас есть 2 пакета с TTL 59. Коммутатор снова рассылает 2 пакета, и они отражаются от других 2 маршрутизаторов, так что в итоге мы получаем 4 пакета с TTL 58. Затем мы получаем 8 при 57 и 16 при 56. и т.д., пока пакеты не начнут сбрасываться. Все это время моя виртуальная машина получает копии всех этих пакетов. Поскольку виртуальная машина только когда-либо получает, ей никогда не удается попасть в таблицу MAC-адресов коммутатора. Здесь помогает ARP, но его тайм-аут был больше, чем тайм-аут переключателей в таблице Mac. Уменьшение этого значения решило проблему, но остается вопрос, почему маршрутизаторы отражали пакет обратно. Насколько я понимаю, это нестандартное поведение.
РЕДАКТИРОВАТЬ: Подробности из захвата wirehark (показаны только последние 2 цифры Mac):
MAC TTL
95 60
99 59
EC 59
95 58
EC 58
95 58
99 58
then 8 packets at 57 etc
Посмотрите, как это выглядит, как будто он приходит с MAC-адреса, заканчивающегося на 95, затем отскакивает от двух других маршрутизаторов, а затем оба этих пакета снова отскакивают от двух других, образуя 4 пакета?
Вы описываете то, что происходит, когда таблица CAM коммутатора заполнена, когда он больше не может узнавать MAC-адрес и пересылает пакеты на каждый порт. Может быть сложно понять, связана ли это с неуправляемым коммутатором, но с управляемым коммутатором вы должны иметь возможность отображать таблицу CAM.
В этом вопросе также может помочь схема сети.
РЕДАКТИРОВАТЬ:
Из добавленной диаграммы видно, что у вас две проблемы. Первый по-прежнему остается там, где коммутатор будет пересылать пакет на каждый порт, если он не знает, куда идти. Проверьте журналы, чтобы узнать, почему ваш MAC-адрес удаляется из таблицы.
Вторая проблема заключается в том, что маршрутизаторы получают пакет и отправляют его обратно на коммутатор, который, в свою очередь, отправляет его на каждый порт (кроме своего собственного). Настроен ли конкретный порт с маршрутом по умолчанию, 0.0.0.0?