Я использую хост 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.