Estou executando um host Proxmox PVE e tentando usar o VXLAN para conectar as máquinas em execução nele a várias redes em nosso laboratório. No entanto, estou enfrentando problemas estranhos relacionados ao MTU que não entendo.
Primeiro minha configuração. O layout básico é que as máquinas virtuais no host PVE se conectem por meio de uma ponte a um túnel VXLAN. Do outro lado do túnel, tenho uma máquina física no laboratório que atua como um endpoint VXLAN (EP). Ele se conecta ao VTEP via ponte para uma de suas portas Ethernet, que por sua vez se conecta ao switch que contém a rede na qual estou tentando colocar minha VM.
No Host PVE (uma VM e uma VXLAN como exemplo):
___________ __________ __________ ___________
| VM eth0 | | Bridge | | VXLAN | | Host eno1 |
| 192.168.. |___| ---- |___| VNI 1 |___| 10... |___ to LabNet
| MTU 1500 | | MTU 1550 | | MTU 1550 | | MTU 1600 |
|___________| |__________| |__________| |___________|
No laboratório (o endpoint com um túnel + um dispositivo de laboratório como exemplo):
___________ __________ __________ __________ ___________
| 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 |
|___________| |__________| |__________| |__________| |___________|
Agora, entendo que o PMTUD realmente não funcionará aqui porque - sendo L2 - a maioria desses dispositivos não pode reportar, e é por isso que aumentei o MTU para os dispositivos que precisam lidar com a sobrecarga da VXLAN (que é 1600 e não 1550 não está relacionado, só quero descrever exatamente o estado em que se encontra).
No entanto, ainda estou enfrentando problemas de incompatibilidade de MTU/buraco negro de ICMP:
Problema 1) Algo na cadeia afirma suportar apenas um MTU de 1450. Se eu tentar conectar-me do VM ao LabDevice via SSH, a conexão será interrompida e expirará. Se eu testar MTUs por meio de ping -M do -s 1450
algo em algum lugar que responda com a mensagem usual de fragmentação necessária..., o MTU máximo de 1450 será armazenado e as tentativas de conexão SSH subsequentes funcionarão (até que a entrada MTU1450 armazenada expire). O host PVE possui dispositivos com MTU definido como 1450, mas nenhum deles está conectado à VM.
Problema 2) O PMTUD não funciona mesmo para dispositivos não envolvidos no túnel. Se eu diminuir o MTU da VM eth0 e ping -s... do LabDevice com algo muito grande para a VM, mas OK para todo o resto, recebo resposta zero, mesmo que a VM deva, pelo meu entendimento, ser capaz de responder com ICMP fragmentação necessária... mensagens.
Semi-relacionado: Há algo que eu possa fazer no host PVE e no dispositivo endpoint para permitir que dispositivos conectados ao endpoint descubram um MTU reduzido? Porque há alguns laboratórios para os quais talvez não consiga enviar Jumbo Frames e prefiro não ter que definir um MTU mais baixo em cada dispositivo desses laboratórios.
Editar: talvez também seja relevante: atualmente não estou executando multicast, mas configurei os IPs remotos via bridge fdb ...
. Também no host da VM, as VMs não estão conectadas diretamente à ponte, mas por meio de alguma mágica.