HP C7200 プリンターの MTU が 1498 と表示されるのはなぜですか?

HP C7200 プリンターの MTU が 1498 と表示されるのはなぜですか?

私のワイヤレス ネットワークでは、Ubuntu Linux 12.04 で MTU 1500 を使用して Mac にトレースパスを実行できます。

(何らかの理由で Mac MTU は 1470 に設定されていますが、応答フレームはそれほど大きくないので、これは問題になりません)

HPプリンタへのトレースパスを実行すると、1514バイト長のフレームにはまったく応答しません。MTU(1500) + Ethernet(14) (SRC(6) + DST(6) + type(2)) = 1514

しかし、MTU を 1498 に設定すると、プリンターは応答します。MTU を 1499 に設定すると、プリンターは応答しません。

注: Mac で MTU を 1500 に設定すると印刷も失敗するため、コンピューターやルーターに問題があるとは考えられません。

更新: google.com へのトレースパスを実行すると、ルーター (WAN リンク上) が ICMP パケットで応答し、フラグメンテーションが必要であり、後続のフレーム MTU は 1474 である必要があることを示していることがわかります。

tracepath はこれに合わせてフレーム サイズを変更し、続行します。つまり、1488 バイトの長さのフレームを送信するようになります。

私のプリンタの場合、1500 バイトのペイロードを処理できないことを示す ICMP パケットは返送されません。1512 バイトを超えるフレームをブラックホール化しているかのようです。

更新: 新しい Mac は 1500 を使用し、問題なく印刷されます。何が起こっているのか調べてみると、私の Mac は最初に 1500 を試し、失敗した場合は MTU を 1470 に下げていました (記憶によると)。これは Apple の興味深い回避策です。

答え1

実際のMTUは包括的28 バイトのヘッダーです。ご説明いただいた内容から判断すると、プリンタは MTU 1498 に設定されているようですが、これは妥当な値です。


コンピュータの MTU を 1500 に設定すると、合計サイズが最大 1500 バイトのパケットが送信されます (説明した 1514 ではありません)。

パスまたは特定のホストの MTU を確認する別の方法は、ping コマンドを使用することです。

-f sets the Do Not Fragment bit 
-l configures the data size (remember to add 28 bytes for the header)

したがって、host.example.comのMTUが1500であるかどうかをテストするには、次のようにします。

ping -f -l 1472 host.example.com を実行します。

関連情報