VXLAN 隧道中的 PMTUD/ICMP 黑洞问题

网络工程 icmp mtu vxlan pmtud
2022-02-13 09:27:12

我正在运行 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 魔术。

0个回答
没有发现任何回复~