[データ帯域(bit/s)] = [TCP受信ウィンドウサイズ(bit)]/[往復遅延時間(sec)]
上記が今一つわからないというご意見をいただいたので、少し詳しく説明します。
図にするとこんな感じです。

●帯域遅延積(BDP: Bandwidth Delay Product)
→ 一度にネットワーク上を流すことができる最大のデータ量。
→ 計算式: BDP = 帯域幅 (bps) × RTT (秒)
●TCPバッファがBDPより小さい場合
→ スループットが最大限に達しない(パイプを埋めきれない)
→ パケットの送信が間欠的になり、遅延が増える可能性。
●TCPバッファがBDP以上の場合
→ 理論上最大スループットが得られる。
→ ただしバッファが大過ぎると、バッファブロート(遅延増加)の原因になることも。
※バッファブローとは
バッファが過剰に大きい場合に発生する現象のこと
パケットが長時間滞留し、遅延(RTT)が増加する。特にリアルタイム通信(VoIPやゲーム)では悪影響を受ける。
解決策:AQM(Active Queue Management)や CoDel などの導入
AQM(Active Queue Management)とは
目的:従来の「バッファがいっぱいになるまで待ってからドロップする(Tail Drop)」方式では遅延が増えるため、
バッファが飽和する前に能動的にパケットをドロップまたはマークして遅延を抑える方式
CoDel(Controlled Delay)とは?(AQM アルゴリズムの1種でLinuxでも使用可能)
目的:「バッファが空いているか」ではなく、「パケットがキューに滞留している時間(sojourn time)」を測って、
遅延が一定時間(例:5ms)以上続いたらドロップを開始する方式
CoDelの特徴
しきい値は遅延時間(e.g. 5ms)
設定不要で自動的に動作(チューニング不要)
TCPフローが適切に応答できるようなドロップタイミング
遅延を最小限に保ちつつスループットも維持
下図の感じです。遅延時間が大きくなるとパケットをドロップします。

Red Hat Enterprise Linux(RHEL)における CoDel(Controlled Delay) の設定方法
(Red Hat Enterprise Linux 7以降に対応)
CoDel 単体で使用することも可能ですが、通常は fq_codel(Fair Queueing Controlled Delay) を使用するのが一般的です。fq_codel は CoDel に公平なスケジューリングを加えたものです。
1. tc(Traffic Control)で手動設定
tc qdisc add dev <インターフェース名> root fq_codel
例:tc qdisc add dev eth0 root fq_codel
オプションの設定
target 許容遅延(デフォルト:5ms)
interval 測定間隔(デフォルト:100ms)
limit パケットキューの最大数(デフォルト:10240)
quantum パケットごとのスケジューリング単位(MTUサイズ推奨)
例:tc qdisc add dev eth0 root fq_codel target 5ms interval 100ms limit 1000 quantum 300
設定確認
tc -s qdisc show dev <インターフェース名>
例:tc -s qdisc show dev eth0
設定削除
tc qdisc del dev <インターフェース名> root
例:tc qdisc del dev eth0 root
よほどのことがないとやれないと思いますが、永続的に設定される場合は、GRUB にデフォルトキュー方式を設定します
sudo grubby --update-kernel=ALL --args="net.core.default_qdisc=fq_codel"
↑
再起動後にすべてのインターフェイスでCoDelが有効になります
SolarisではCoDelは設定できないのでQoSとかで頑張るしかありません。
ご参考まで。