LinuxにはUDPペイロードにサイズ制限がありますか?

LinuxにはUDPペイロードにサイズ制限がありますか?

私はDebianを使用しています。 Pythonのscapyモジュールを使用してUDPパケットを定式化し、約1500バイトを超えるペイロードを追加すると、UDPの最大ペイロードが65,507バイトと仮定されていますが、私のプログラムはクラッシュします。

大規模なUDPパケットを生成できないいくつかのLinux設定がありますか?設定を調整できますか?

編集:私はPythonのループからパケットを生成しており、時間と競合しています。このプログラムは、設定された制限(たとえば、毎秒500パケット)でトラフィックを生成するように設計されたトラフィックジェネレータです。たとえば、1 秒あたり 500 個のパケットに設定されている場合、次の秒は別の 500 個のパケットを生成するため、遅れることができないため、500 個のパケットを生成するのに 1 秒しか時間がかかりません。

1 秒あたり 400 個のパケット制限に達し、それ以上追従できなくなりました。いくつかの理論的解決策があります。

  1. マルチスレッドの使用 - これについて見てみましょう。
  2. より大きなUDPパケットを生成してオーバーヘッドを減らします。
    • 私が今何をしているのか

はい、ペイロードが1500バイトを超えるUDPパケットを作成すると、断片化されます。私が理解する限り、カーネルはそれを処理します。私はCで書かれたカーネルが1つの大きなUDPパケットを複数のパケットに分割し、Pythonが複数の小さなパケットを生成できるよりも速く転送できるようにしたいと思います。これが本当かどうかはわかりませんが、カーネルに大規模なUDPパケットの破棄を停止し、実際に断片化して送信するように指示できると仮定すると、テストするのは簡単です。

ベストアンサー1

~からhttps://en.wikipedia.org/wiki/Maximum_transmission_unit#Applicability- "イーサネットの場合、最大フレームサイズは1518バイトで、そのうち18バイトはオーバーヘッド(ヘッダーとFCS)なので、MTUは1500バイトになります。

おすすめ記事