我正在运行 Proxmox PVE 主机,并尝试使用 VXLAN 将在其上运行的机器连接到我们实验室中的各种网络。但是,我遇到了我不理解的奇怪的 MTU 相关问题。
首先是我的设置。基本布局是 PVE 主机上的虚拟机通过网桥连接到 VXLAN 隧道。在隧道的另一端,我在实验室中有一台物理机,用作 VXLAN 端点 (EP)。它通过网桥连接到 VTEP 到它的一个以太网端口,后者又连接到持有我试图将我的 VM 放入的网络的交换机。
在 PVE 主机上(以一个 VM 和一个 VXLAN 为例):
___________ __________ __________ ___________
| VM eth0 | | Bridge | | VXLAN | | Host eno1 |
| 192.168.. |___| ---- |___| VNI 1 |___| 10... |___ to LabNet
| MTU 1500 | | MTU 1550 | | MTU 1550 | | MTU 1600 |
|___________| |__________| |__________| |___________|
实验室中(以1个隧道+1个实验室设备为例):
___________ __________ __________ __________ ___________
| 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 - 大多数设备无法返回报告,这就是为什么我增加了那些必须处理 VXLAN 开销的设备的 MTU(它是 1600 而不是 1550是无关的,我只想准确地描述原样状态)。
但是,我仍然遇到 MTU 不匹配/ICMP 黑洞问题:
问题 1) 链中的某些东西声称只支持 1450 的 MTU。如果我尝试通过 SSH 从 VM 连接到 LabDevice,连接会挂起然后超时。如果我通过ping -M do -s 1450某处的某处测试 MTU 并回答通常需要的碎片...消息,则存储 1450 的最大 MTU 并且随后的 SSH 连接尝试工作(直到存储的 MTU1450 条目超时)。PVE 主机确实有 MTU 设置为 1450 的设备,但它们都没有连接到 VM。
问题 2) PMTUD 即使对于不涉及隧道的设备也不起作用。如果我降低 VM eth0 的 MTU 并 ping -s...它来自 LabDevice 的东西对于 VM 来说太大但对于其他一切我都可以得到零响应,即使根据我的理解 VM 应该能够用 ICMP 回答需要碎片...消息。
半相关:我可以在 PVE 主机和端点设备上做些什么来让连接到端点的设备发现减少的 MTU?因为有些实验室我可能无法向其发送巨型帧,而且我不希望在这些实验室中的每台设备上都设置较低的 MTU。
编辑:也许也相关:我目前没有运行多播,但已经通过bridge fdb .... 同样在 VM 主机上,VM 不是直接连接到网桥,而是通过一些 veth 魔术。