14

ifconfig 1.2.3.4 mtu 1492

これにより、着信パケット、発信パケット、またはその両方の MTU が 1492 に設定されますか? 着信専用だと思います

4

5 に答える 5

19

TLDR:両方。ペイロード長がそのサイズ以下のパケットのみを送信します。同様に、MTU 内のペイロード長を持つパケットのみを受け入れます。デバイスがより大きなパケットを送信する場合、デバイスは ICMP 到達不能 (オーバーサイズ) メッセージで応答する必要があります。

要点: デバイスの MTU を調整すると便利です。これは、ユーザーと宛先の間の他のホップが別の形式 (VPN や PPPoE など) でパケットをカプセル化する可​​能性があるためです。パケットの周りのこのレイヤーにより、より大きなパケットが送信されます。ワイヤー。この新しい大きなパケットがレイヤーの最大サイズを超えた場合、パケットは (完全な世界では) 複数のパケットに分割されるか、(現実の世界では) 完全に破棄されます。

実際の例として、ISP と PPPoE を話す ADSL モデムにイーサネット経由で接続されたコンピュータがあるとします。イーサネットは 1500 バイトのペイロードを許可し、そのうち 8 バイトは PPPoE で使用されます。これで、1 つのパケットで ISP に配信できる 1492 バイトまで減少しました。1500 バイトのフルサイズのイーサネット ペイロードを送信すると、ルーターによって「断片化」され、2 つのパケットに分割されます (1 つは 1492 バイトのペイロードを持ち、もう 1 つは 8 バイトのペイロードを持ちます)。

問題は、この接続を介してより多くのデータを送信したい場合に発生します-たとえば、3000 バイトを送信したいとします。コンピューターは、MTU に基づいてこれを分割します。この場合、それぞれ 1500 バイトの 2 つのパケットであり、それらをあなたのMTU を満たすことができるようにそれらを分割する ADSL モデム。これで、3000 バイトのデータが 4 つのパケットに断片化されました。2 つのパケットは 1492 バイトのペイロードで、2 つのパケットは 8 バイトのペイロードです。これは明らかに非効率的です。このデータを送信するには、実際には 3 つのパケットしか必要ありません。あなたのコンピュータがネットワークに適した MTU で構成されていれば、最初はこれを 3 つのパケット (2 つの 1492 バイト パケットと 1 つの 16 バイト パケット) として送信します。

この非効率性を回避するために、多くの IP スタックは、「Don't Fragment」と呼ばれる IP ヘッダーで少し反転します。この場合、最初の 1500 バイトのパケットを ADSL モデムに送信すると、ADSL モデムはパケットを拒否し、パケットが大きすぎることを知らせる Internet Control (ICMP) メッセージで応答します。次に、より小さいパケットで送信を再試行します。これはパス MTU ディスカバリーと呼ばれます。同様に、下の層、TCP 層では、断片化を回避するもう 1 つの要因は、両方のホストが断片化せずに転送できる最大サイズのパケットで応答する MSS (Maximum Segment Size) オプションです。これは通常、MTU から計算されます。

ここで問題が発生するのは、不適切に構成されたファイアウォールがすべての ICMP トラフィックをドロップした場合です。(たとえば) Web サーバーに接続するときは、TCP セッションを構築し、1500 バイトの MTU に基づいて TCP パケットを受け入れる意思があることを送信します (イーサネット経由でルーターに接続しているため)。サーバーは大量のデータを送信したかったので、これをチャンクに分割し (TCP および IP ヘッダーと組み合わせると) 1500 バイトのペイロードになり、それらを送信しました。ISP はこれらのいずれかを受信し、それを PPPoE パケットにラップして ADSL モデムに送信しようとしますが、大きすぎて送信できません。したがって、ICMP 到達不能で応答し、(完璧な世界では) リモート コンピューターが接続の MSS を縮小して再送信します。ただし、途中で壊れたファイアウォールがあった場合は、

最終的に、イーサネット デバイスで MTU を設定することは、適切なサイズのフレームを ADSL モデムに送信するために望ましいことですが (より小さなフレームで再送信するように求められるのを避けるため)、TCP を構築するときにリモート ホストに送信する MSS サイズに影響を与えることが重要です。接続。

于 2011-06-15T18:37:43.303 に答える
11

ifconfig ... mtu <value>インターフェイスから送信されたレイヤ 2 ペイロードの MTU を設定し、このインターフェイスで受信したより大きなレイヤ 2 ペイロードを拒否します。イーサネット リンクの両側で MTU が一致していることを確認する必要があります。同じイーサネット ブロードキャスト ドメイン内のどこでも mtu 値が一致しないようにする必要があります。イーサネット ヘッダーは、設定する MTU に含まれないことに注意してください。

また、ifconfig Linux では長い間維持されておらず古くて推奨されていません。悲しいことに、古いスクリプトを壊すことを恐れているため、Linux ディストリビューションにはまだ含まれています。これは、人々がそれを使い続けることを奨励するという非常に否定的な効果があります. iproute2コマンドファミリーを使用する必要があります。

[mpenning@hotcoffee ~]$ sudo ip link set mtu 1492 eth0
[mpenning@hotcoffee ~]$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc mq state UP qlen 1000
    link/ether 00:1e:c9:cd:46:c8 brd ff:ff:ff:ff:ff:ff
[mpenning@hotcoffee ~]$ 
于 2011-06-15T19:11:11.340 に答える
2

大きな着信パケットは、インターフェイスの MTU サイズに基づいてドロップされる場合があります。

たとえば、Linux 2.6 CentOS のデフォルトの MTU 1500 (イーサネット コントローラーでテスト済み: Intel Corporation 80003ES2LAN ギガビット イーサネット コントローラー (Copper) (rev 01)) は、1504 を超えるジャンボ パケットをドロップします。エラーは ifconfig に表示され、ethtool -S 出力に rx_long_length_errors の指示があります。MTU の増加は、ジャンボ パケットをサポートする必要があることを示します。サイズが大きすぎることに基づいてパケットをドロップするタイミングのしきい値は、MTU (-4096、-8192 など) に依存するようです。

オーレン

于 2014-01-19T10:14:23.423 に答える
0

これは Maximum Transmission Unit であるため、発信最大パケット サイズを確実に設定します。MTU より大きい着信パケットを拒否するかどうかはわかりません。

于 2011-06-15T16:27:37.887 に答える