受信したパケット長がMTUより大きい場合、ホストはICMP「フラグメンテーションが必要」を送信しません。

受信したパケット長がMTUより大きい場合、ホストはICMP「フラグメンテーションが必要」を送信しません。

私のネットワークのMTU関連の問題を解決しています。知識が不足しており、ここでの説明が必要です。 :)

クライアントホスト(NIでMTU = 1500バイトで構成されている)がサーバーホスト(NIでMTU = 1400で構成されている)にトラフィックを送信する設定があります。クライアントは、時にはサーバーホストのMTU(1450バイトなど)よりも大きく、DFフラグが設定されているパケットを送信します。

どちらのホストもPMTUDを有効にしましたが(sysctl net.ipv4.ip_no_pmtu_discreturn実行0、したがってDFフラグの実行)、何らかの理由でクライアントはこの特定のパスに低いMTUを使用する必要があるという事実を学習しません。ip route get %server-ip-here%特別なMTUは返されません。

2つのホストは互いに非常に近く(同じDCには1つのルータしかありません)、2つのホスト間のすべてのデバイスの99.9%が1450バイトのパケットをうまく処理できるため、削除する理由はありません。 ICMP「断片化が必要」を再送信します。

私が理解したのは、ネットワークインターフェイスのMTUが1400バイトなので、サーバーホストからパケットがドロップされることです。

PMTUDで見つかったすべての記事によると、これらのICMPパケットはクライアントとサーバー間のルーターによってのみ送信されるようです。

誰かが私のアイデアを確認できますか?長さがローカルに設定された MTU よりも長いため、最終ホストが着信パケットをドロップする場合、ICMP の「フラグメンテーションが必要」を送信しませんか?

答え1

実際には、ICMPフラグメントを送信するために必要なものを文書化したRFC 1191(パスMTU検索)のみが見つかりました。

2. 契約概要

基本的な考え方は、ソースホストが最初にパスのPMTUが最初のホップの(既知の)MTUであると仮定し、DFビットセットと共にそのパスのすべてのデータグラムを送信することです。データグラムが大きすぎる場合配信予定破片なしルーター経由道に沿って、そのルーターそれらは破棄され、「DFを断片化して設定する必要がある」ことを意味するコードとともに、ICMP宛先到達不能メッセージが返されます[7]。

4. ルーターの仕様

いつルーターできない今後データグラムがネクストホップネットワークのMTUを超え、Don't Fragment(フラグメント化しない)ビットが設定されているため、ルータはICMP Destination Unreachableメッセージをデータグラムソースに返す必要があり、コードは「フラグメント化が必要でDF」を示します。置かれている」。

すべての説明では、ICMPがホストではなくルータによって送信されると仮定します。再送信時に決定が行われます。その他インターフェイスのMTUが低すぎて受信できません。

ホスト(受信したパケットをルーティングしない)がこれらのICMPを発行するための規制はありません。以下を実行するアプリケーションに直接エラーを送信します。放射そのようなパケットですが、もしそうなら受け取った「正式に」サポートされていない(MTUが1400であるため)、サイズ1500のパケットは、ハードウェアがそれを破棄する(しかしそうでないか論争の余地がある)、パケットを破棄します。 t、私の考えではこれは(RFCで)未定義の動作であり、OSネットワークスタックがこれを受け入れることができるようです。

LANの設定が正しいと仮定する必要があります。ホストは、同じブロードキャストドメイン内の他のすべてのノードと同じMTUを持ちます。

関連情報