VXLAN トンネルを介した PMTUD/ICMP ブラックホール問題

VXLAN トンネルを介した PMTUD/ICMP ブラックホール問題

私は Proxmox PVE ホストを実行しており、VXLAN を使用して、その上で実行されているマシンをラボ内のさまざまなネットワークに接続しようとしています。しかし、理解できない奇妙な MTU 関連の問題が発生しています。

まず、私のセットアップです。基本的なレイアウトは、PVE ホスト上の仮想マシンがブリッジ経由で VXLAN トンネルに接続するというものです。トンネルの反対側には、VXLAN エンドポイント (EP) として機能するラボ内の物理マシンがあります。このマシンは、ブリッジ経由でイーサネット ポートの 1 つに VTEP に接続し、次に、VM を配置しようとしているネットワークを保持するスイッチに接続します。

PVE ホスト (例として 1 つの VM と 1 つの 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 を増やしました (1550 ではなく 1600 であることは関係ありません。現状を正確に説明したいだけです)。

しかし、MTU の不一致/ICMP ブラックホールの問題がまだ発生しています。

問題 1) チェーン内の何かが、1450 の MTU のみをサポートすると主張しています。VM から LabDevice に SSH 経由で接続しようとすると、接続がハングしてタイムアウトします。ping -M do -s 1450どこかの何かを介して MTU をテストすると、通常のフラグメンテーションが必要です... というメッセージが返され、最大 MTU の 1450 が保存され、その後の SSH 接続試行が機能します (保存された MTU1450 エントリがタイムアウトするまで)。PVE ホストには MTU が 1450 に設定されているデバイスがありますが、そのいずれも VM に接続されていません。

問題 2) PMTUD は、トンネルに関係のないデバイスでも機能しません。VM eth0 の MTU を下げて、LabDevice から VM には大きすぎるが他はすべて問題ない値で ping -s... を実行すると、私の理解では VM が ICMP フラグメント化が必要... メッセージで応答できるはずであるにもかかわらず、応答がゼロになります。

少し関連していますが、エンドポイントに接続されたデバイスが縮小された MTU を検出できるようにするために、PVE ホストとエンドポイント デバイスで何かできることはありますか? ジャンボ フレームを送信できないラボがいくつかあるため、それらのラボ内のすべてのデバイスでより低い MTU を設定する必要がないようにしたいのです。

編集: おそらく関連があります: 現在、マルチキャストは実行していませんが、 経由でリモート IP を設定していますbridge fdb ...。また、VM ホストでは、VM はブリッジに直接接続されるのではなく、何らかの veth マジック経由で接続されます。

関連情報