VXLAN 隧道上的 PMTUD/ICMP 黑洞問題

VXLAN 隧道上的 PMTUD/ICMP 黑洞問題

我正在運行 Proxmox PVE 主機,並嘗試使用 VXLAN 將其上運行的電腦連接到我們實驗室中的各種網路。但是,我遇到了一些我不明白的與 MTU 相關的奇怪問題。

首先是我的設定。基本佈局是 PVE 主機上的虛擬機器透過橋接器連接到 VXLAN 隧道。在隧道的另一邊,我的實驗室中有一台實體機,充當 VXLAN 端點 (EP)。它透過橋接器連接到 VTEP 的一個乙太網路端口,該端口又連接到容納我試圖將虛擬機放入的網路的交換器。

在 PVE 主機上(以一台虛擬機器和一台 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。如果我透過ping -M do -s 1450某處的某些內容測試 MTU,並使用通常的碎片要求...訊息,則會儲存最大 MTU 1450,並且後續的 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 魔法連接。

相關內容