Проблемы с «черной дырой» PMTUD/ICMP через туннель VXLAN

Проблемы с «черной дырой» PMTUD/ICMP через туннель VXLAN

Я использую хост Proxmox PVE и пытаюсь использовать VXLAN для подключения работающих на нем машин к различным сетям в нашей лаборатории. Однако я сталкиваюсь со странными проблемами, связанными с MTU, которые я не понимаю.

Сначала моя настройка. Базовая схема такова, что виртуальные машины на хосте PVE подключаются через мост к туннелю VXLAN. С другой стороны туннеля у меня есть физическая машина в лаборатории, которая действует как конечная точка VXLAN (EP). Она подключается к VTEP через мост к одному из своих портов Ethernet, который в свою очередь подключается к коммутатору, поддерживающему сеть, в которую я пытаюсь поместить свою VM.

На хосте PVE (например, одна виртуальная машина и одна VXLAN):

 ___________     __________     __________     ___________
|  VM eth0  |   |  Bridge  |   |  VXLAN   |   | Host eno1 |
| 192.168.. |___|   ----   |___|  VNI 1   |___|   10...   |___ to LabNet
| MTU 1500  |   | MTU 1550 |   | MTU 1550 |   | MTU 1600  |
|___________|   |__________|   |__________|   |___________|

В лаборатории (конечная точка с одним туннелем + одно лабораторное устройство в качестве примера):

 ___________                        __________     __________     __________     ___________
| LabDevice |                      | EP eth1  |   |  Bridge  |   |  VXLAN   |   | EP eth0   |
| 192.168.. |___ lab switch etc ___|  ----    |___|   ----   |___|  VNI 1   |___|   10...   |___ to PVE Host
| MTU 1500  |                      | MTU 1500 |   | MTU 1550 |   | MTU 1550 |   | MTU 1600  |
|___________|                      |__________|   |__________|   |__________|   |___________|

Теперь я понимаю, что PMTUD здесь не будет работать, потому что, будучи L2, большинство этих устройств не могут возвращать данные, поэтому я увеличил MTU для тех устройств, которым приходится иметь дело с накладными расходами VXLAN (то, что это 1600, а не 1550, не имеет значения, я просто хочу точно описать текущее состояние).

Однако я все еще сталкиваюсь с проблемами несоответствия MTU/ICMP Black Hole:

Проблема 1) Что-то в цепочке утверждает, что поддерживает только MTU 1450. Если я пытаюсь подключиться с виртуальной машины к LabDevice через SSH, соединение зависает и затем истекает время ожидания. Если я тестирую MTU через ping -M do -s 1450что-то, где-то отвечает обычным сообщением о необходимости фрагментации..., максимальный MTU 1450 сохраняется, и последующие попытки подключения по SSH работают (пока не истечет время ожидания сохраненной записи MTU1450). У хоста PVE есть устройства с MTU, установленным на 1450, но ни одно из них не подключено к виртуальной машине.

Проблема 2) PMTUD не работает даже для устройств, не участвующих в туннеле. Если я уменьшаю MTU виртуальной машины eth0 и ping -s... ее из LabDevice с чем-то слишком большим для виртуальной машины, но OK для всего остального, я получаю нулевой ответ, хотя виртуальная машина, по моему мнению, должна отвечать сообщениями ICMP Fragmentation required....

Частично связанное: Могу ли я что-то сделать на хосте PVE и конечном устройстве, чтобы позволить устройствам, подключенным к конечной точке, обнаружить уменьшенный MTU? Потому что есть некоторые лаборатории, в которые я не смогу отправлять Jumbo-кадры, и я бы предпочел не устанавливать более низкий MTU на каждом устройстве в этих лабораториях.

Редактировать: Возможно, также актуально: в настоящее время я не использую многоадресную рассылку, но настроил удаленные IP-адреса через bridge fdb .... Также на хосте виртуальной машины виртуальные машины не подключены напрямую к мосту, а через какую-то магию veth.

Связанный контент