web-dev-qa-db-ja.com

LinuxボックスでPMTUディスカバリーを一時的に無効/有効にする正しい方法は何ですか?

標準のイーサネットMTUサイズである1500Bよりも大きいパケットを含むpcapがいくつかあります。これについて検索したところ、ジャンボフレームを指す参照が見つかりました。ジャンボフレーム(最大9k)の送信をサポートするGBEネットワークを使用しているため、Debian派生物のTCP/IPスタックがそれ自体を自動調整し、そのような巨大なフレームサイズを使用することを理解しました( PMTU Discovery =)。これは本当に素晴らしいです!

ただし、この機能の自動有効化をある程度制御したいと思います。具体的には、pcapをキャプチャするときに一時的に無効になり、キャプチャされたすべてのパケットが1500B未満になるようにします。ジャンボフレームを見ると失敗するtcpreplayベースのpcapリプレイフレームワークがあるため、これを確認する必要があります。 Tcpreplayには、ジャンボフレームの送信を有効にするための拡張要求 フラグメントIPパケット> MTUをサポート があります。ただし、これは優先度の低いチケットであり、解決に時間がかかる可能性があります。

PMTU検出動作を手動で微調整する方法について読んだところ、/ procファイルシステムの下にある「ip_no_pmtu_disc」sysctl変数が便利であることがわかりました。クライアントシステムとサーバーシステムの両方で有効にし(いずれか1つで有効にすれば十分だと思いますが)、いくつかのpcapをキャプチャしました。ただし、1500Bを超えるパケットはまだあります。ネットワークインターフェイスのデフォルトのMTUはすでに1500Bに設定されており、PMTU検出が無効になっているため、問題なく動作すると思いました。しかし、私が欠けているものがあります。参照/ポインタをいただければ幸いです。

注:行った/ procの調整が持続しないため、システムを再起動しませんでした。また、pcapを再生する必要があるたびにシステムを再起動する立場にありません。

1
7h3rAm

あなたが見ているものは、ジャンボフレームの兆候ではありません。おそらく、NICは、データをスニッフィングした後、データをより小さなパケットにセグメント化しています。おそらくVMでテストしていますか?Linuxは、構成されているものよりも大きなMTUを送信パケットに使用しません。インターフェイス上。MTUが1500の場合、それが最大です。

0