web-dev-qa-db-ja.com

現在のMTUサイズより大きいイーサネットフレームを受信できるのはなぜですか?

リンクeth0でip link set eth0 mtu 1000を使用してMTUサイズを1000に構成しました。 ethtool -K gro offを使用してGeneric受信オフロード(gro)を無効にしました(これにより、tcpdumpでフレーム長が "false"になる可能性があるため( ここを参照 ))、tcpdumpで今キャプチャしてもパケットが引き続き取得されます1000より大きい、例えば1500バイト。

私は何を間違っていますか?

MTUが1000に設定された受信側:

eth0:mtu 1000

14:27:38.361168 IP XXXXXX> YYYYYY:ICMP echo> request、id 3273、seq 1、length 148014:27:38.361495 IP YYYYYYY> XXXXXX :ICMPエコー応答、ID 3273、シーケンス1、長さ976

6
der_wolle

MTUは、インターフェイスを介して送信できる最大パケットサイズです。 MTUは、受信できる最大パケットサイズを制限しません。

RFC 1191 さんのコメント:

... 1つのIPホストに別のホストに送信する大量のデータがある場合、データは一連のIPデータグラムとして送信されます。通常、これらのデータグラムは、ソースから宛先へのパスに沿ったどこでもフラグメント化を必要としない最大サイズであることが望ましいです。 (断片化に対するケースについては、[5]を参照してください。)このデータグラムサイズは、パスMTU(PMTU)と呼ばれ、パス内の各ホップのMTUの最小値と同じです。現在のインターネットプロトコルスイートの欠点は、ホストが任意のパスのPMTUを検出するための標準的なメカニズムがないことです。

      Note: The Path MTU is what in [1] is called the "Effective MTU
      for sending" (EMTU_S).  A PMTU is associated with a path,
      which is a particular combination of IP source and destination
      address and perhaps a Type-of-service (TOS)...
5
Ra_