Netkit を使用してさまざまな TCP アルゴリズムで遊んでいます。
c1とc2の2 台のマシンが、強制的に 200 ミリ秒の遅延を持つルーターによって接続されています。c1上のプログラムは、1ms ごとに 100 バイトのパケットをc2に送信しています(TCP_NODELAY がオンになっています)。Reno は両方のマシンで輻輳制御として使用されます。
tcpdump によると、最初の 2 つのパケットのみがすぐに送信され (200 バイト)、c1は送信を停止して ACK を待ちます。受信者のウィンドウは約 2MSS (MSS=1460) であるため、 c1がさらにパケットを送信するのを防ぐのは CWND だと思います。
Reno の仕様によると、最初の CWND は 1MSS です。私はそこに何かが欠けていますか?.. 1バイトのパケットを送信しても同じ画像が得られ、2つのパケットが送信され、送信者はACKを待ちます。初期の CWND サイズは、MSS ではなく、初期のセグメント サイズによって決定されるのでしょうか?
ip route show cacheのようなものを示しています
cache mtu 1500 rtt 361ms rttvar 360ms cwnd 5 advmss 1460 hoplimit 64
CWND=5MSSということなのかな?