Linuxは、パケットの損失なしにリンクが処理できるよりも多くのパケットをアプリケーションが送信するのを防ぎますか?

Linuxは、パケットの損失なしにリンクが処理できるよりも多くのパケットをアプリケーションが送信するのを防ぎますか?

問題をより明確に説明することはできないため、以下は例示的なシナリオです。

10Mbpsの帯域幅を持つ物理インターフェイス(または10Mbpsに速度を制限するtcトークンバケットフィルタ付きの高速インターフェイス)を介してIPネットワークに接続されているLinuxシステムがあるとします。

リモートシステムでiperf UDPサーバーを起動します(同じ速度または高速リンクを使用)。

iperf -s -u -i 1

ローカルコンピュータでbw = 20 Mbpsでiperfクライアントを起動します。

iperf -c <server ip> -u -i 1 -b 20M

観察する:発信者は、10Mbpsの速度(tc qdiscのハードウェアまたはリンク層で定義されている)を決して超えません。

発信者は毎秒 20Mbit のパケットをプッシュし、インターフェイスのローカル tx キューが蓄積し、パケット損失が発生し始めると予想します。しかし、これは本当ではありません。なぜ?

Linuxカーネルのnet / schedフォルダを見てみましたが、この動作の原因が見つからないようです。

ご協力ありがとうございます。また、タイトルの関連性を高めるために自由にタイトル変更を提案してください。

ベストアンサー1

これはという機能によるものです。自動交渉、これは以下で発生します物理層。カーネルに関する限り、リンク(接続)は10Mbpsの帯域幅しか処理できず、iperfはおそらくこの最大接続速度に準拠しています。

良い人がここにいます。https://networkengineering.stackexchange.com/このインタラクションについてもっと質問がある場合は、もっと詳しく知ることができます。

おすすめ記事