Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/29:12/12
2024/04/28:16/23

2024/02/29より291/1375
人気モジュール
No.1: フォーラム 19
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット27

No.1:どっかの巡回ロボット26
No.2:Majestic-12巡回ロボット1

日曜日からの合計
メイン
   Application Layer Protocol Implementation & Model Development
     TCP Sackの挙動に関する疑問
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
act
投稿日時: 2012/12/10 9:52
新米
登録日: 2011/10/25
居住地:
投稿: 3
TCP Sackの挙動に関する疑問
QualNet5.1を使用しています。
TCP Sackの挙動を調べるため、transport_tcp_output.cpp で tp->snd_cwnd を出力させてみたところ、以下のような値が確認されました。
なお、このときのMSSは1460byteという設定です。

<Time[sec]> <cwnd[byte]>
1.021590254 2920
1.021590254 2920
1.042889848 4380
1.042889848 4380
1.042889848 4380
1.044525068 5840
1.044525068 5840
1.044525068 5840
1.045605220 7300
1.045605220 7300
1.045605220 7300
1.047312432 8760
1.047312432 8760
1.047312432 8760
1.048464584 10220
1.048464584 10220
1.048464584 10220
     ・
     ・
     ・

ここで疑問に思ったことは次の2点です。

1.上記出力結果は、1行1行が別々のパケットに関するもののはずですが、3行ずつ同一の時刻となっています。また、cwndがスロースタートフェーズの挙動になっていないように思います。

2.このとき、TCPの確認応答パケットが返ってくるタイミングを調べたところ、2〜3回パケットを送信する毎に返ってきていました。
確認応答パケットは、cwndの分だけパケットを送信する毎に返ってくるものだと考えていたので、想定と異なっていました。


以上の2点について、なぜこのような挙動となっているのか分からず、ご相談させていただきました。
長文となってしまい申し訳ありませんが、よろしくお願い致します。



※ちなみに、出力箇所は以下の通りです。

msg = MESSAGE_Alloc(node, 0, 0, 0);
(unsigned char *) prepare_outgoing_packet(
node,
msg,
&(inp->inp_snd),
len,
hdrlen,
off);

if (len) {
if (tcp_stat) {
if (tp->t_force && len == 1) {
tcp_stat->tcps_sndprobe++;
} else if (SEQ_LT(tp->snd_nxt, tp->snd_max)) {
tcp_stat->tcps_sndrexmitpack++;
//tcp_stat->tcps_sndrexmitbyte += len;
} else {
tcp_stat->tcps_sndpack++;
//tcp_stat->tcps_sndbyte += len;

//ここで出力

}
}
utsubo
投稿日時: 2012/12/12 14:42
新米
登録日: 2010/11/9
居住地:
投稿: 13
Re: TCP Sackの挙動に関する疑問
こんにちは。

まず、1についてですが、出力があった場合に必ず送信が行われていることは確認しましたでしょうか?
(2の確認応答パケットの数もここでのカウントが間違っていると、考え方が変わるかもしれませんので、もう一度見直してみてください。)

スロースタートについては、RFC2001が参考になるかと思われます。
出力結果からACKを受信する毎にMSSだけ加算されていることがわかりますが、
これが、snd_cwnd内と同等のデータ量を全て送信されるまで繰り返されると、
結果的に元のsnd_cwndの倍(一般的なスロースタートの挙動)になるはずです。
act
投稿日時: 2012/12/25 3:12
新米
登録日: 2011/10/25
居住地:
投稿: 3
Re: TCP Sackの挙動に関する疑問
返信が遅くなってしまいましたが、ご回答ありがとうございました。

1については、(出力の数×MSS)が、シナリオで設定した全体のデータ量と等しくなっていため、
出力のたびに送信が行われているものと思っていました。
しかし、やはり全く同一の時刻に複数の出力があるというのは変ですよね…。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT