![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
wirelesstp | 投稿日時: 2007/9/23 14:52 |
新米 ![]() ![]() 登録日: 2007/7/9 居住地: 投稿: 10 |
トランスポート層のキューについて どうも、こんにちは。
トランスポート層のインプット・アウトプットキューを大きな値(70000byte)に設定するとinvalid valueと表示されます。 おそらくコード上で最大値が設定されていると思うのですが、その最大値が格納されている変数を見つけるのに苦労しています。また、guiで設定したキューを格納している変数も見つけられません。 (1)キューの最大値の変数名とguiで設定したキューの変数名をご教授していただけないでしょうか? (2)トランスポート層のインプット・アウトプットキューを無限にしたいのですが、無限にする方法はあるのでしょうか? qualnetバージョンは3.9.5 初歩的な質問で申し訳ないですが、よろしくお願いいたします。 |
hiro | 投稿日時: 2007/9/23 15:16 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: トランスポート層のキューについて > トランスポート層のインプット・アウトプットキューを
> 大きな値(70000byte)に設定 これ、具体的にconfigファイルでは何と言うキーワードのことでしょうか。 > 無限にする方法はあるのでしょうか? 無限 ですか。 仮に、Queueをダイナミックに確保することにします。 そして、Queueのサイズが実メモリサイズを超えたら、 今度は、ハードディスク上に確保します。 さらに、ハードディスクの空き容量が無くなったら、 ... ![]() |
wirelesstp | 投稿日時: 2007/9/23 15:48 |
新米 ![]() ![]() 登録日: 2007/7/9 居住地: 投稿: 10 |
Re: トランスポート層のキューについて hiroさん。ご返信ありがとうございます。
configファイル名では出力キューがTCP-SEND-BUFFER,入力キューがTCP-RECEIVE-BUFFERです。 やはりバッファサイズを無限にすることは無理ですかねー。実環境では絶対に不可能ですが、シミュレーションでならできるかなーって思ったのですが・・・ qualnetでは入力キューと出力キューを一つのキューで管理しています。つまり実際は入力出力キューとして管理されています。 ですので、トランスポートのキューに空き(受信したデータは即座にアプリケーション層のハードに保存するのでトランスポート層のキューの中身は送信したいデータが入っている状態)が無ければ、アプリケーション層からトランスポート層にデータを下ろしたい時に下ろせないといった制限を受けますよね?これってつまり無限の考えに反していますよね? またトランスポート層のキューに空きが無ければ、ネットワーク層からトランスポート層にデータを上げた時にバッファ漏れが引き起こりますよね?これも無限の考えに反しています。つまり、アプリケーション層のハードを借りて無限っぽくしても、トランスポート層のキューがボトルネックになり、トランスポート層のキューを無限にしたような振る舞いにならないような気がします・・・。 |
hiro | 投稿日時: 2007/9/23 16:18 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: トランスポート層のキューについて すみません、一つずつ確認させて下さい。
> configファイル名では出力キューがTCP-SEND-BUFFER, > 入力キューがTCP-RECEIVE-BUFFERです。 はい、わかりました。ためしに設定してみたのですが。 >> invalid value 私の環境では上記のメッセージは表示されませんでした。 ただ、3.9.5の環境が無いため実際には4.0で設定しました。 どのタイミングで『invalid value』と出ますか? |
hiro | 投稿日時: 2007/9/23 16:36 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: トランスポート層のキューについて > 実環境では絶対に不可能ですが、シミュレーションでなら
> できるかなーって思ったのですが・・・ 実環境はもちろん物理的な制約があります。 たとえシミュレーションでも情報をQueueに溜める必要があります。 したがって、シミュレーションの世界でも物理的な制約はあります。 ただ、実環境よりは制約がゆるい(沢山Queueできたり、Queueサイズを 可変にしたりすることができる)だけで、どこかに上限はあります。 64bit環境で、実メモリを32GBとか沢山実装すればほとんどの シミュレーションで困らないほど大きなQueueを設定することは 可能でしょうが、無限にすることはできません。 そういった意味ではシミュレーションといえども万能ではありません。 |
wirelesstp | 投稿日時: 2007/9/23 16:36 |
新米 ![]() ![]() 登録日: 2007/7/9 居住地: 投稿: 10 |
Re: トランスポート層のキューについて すいません。エラーメッセージを勘違いしていました。
エラーの出るタイミングとしてはシミュレーションを走らせるときです。(runボタンを押したときです。) エラーを添付します。よろしくお願いします。 ![]() |
wirelesstp | 投稿日時: 2007/9/23 16:42 |
新米 ![]() ![]() 登録日: 2007/7/9 居住地: 投稿: 10 |
Re: トランスポート層のキューについて やはり無限は無理ですかー・・・
近似的に無限ならできるかもしれないと思って変数名を探しているのですが見つからないです。 キューの最大値の変数名とguiで設定したキューの変数名はご存知ないでしょうか? |
hiro | 投稿日時: 2007/9/23 16:53 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: トランスポート層のキューについて > TCP-RECEIVE-BUFFER: Value exceeds permitted window size.
これはTCPの きまり なので不可避です。 # TCPヘッダのWindow sizeは16bitしかありません。 # したがって最大値は65535です。 ただし、RFC1323で追加されたWindow Scale Optionで ある程度回避可能です。 エラーメッセージにあるように、 ../transport/tcp/tcp.cppの335行目がRFC1323のことです。 |
hiro | 投稿日時: 2007/9/23 16:57 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: トランスポート層のキューについて > キューの最大値の変数名とguiで設定したキューの変数名
えっと、そのものズバリがエラーメッセージに出ているのですが... tcpLayer->tcpRecvBuffer <= TCP_MAXWIN じゃダメですか... |
wirelesstp | 投稿日時: 2007/9/23 18:24 |
新米 ![]() ![]() 登録日: 2007/7/9 居住地: 投稿: 10 |
Re: トランスポート層のキューについて hiroさん
ありがとうございました。送信バッファと受信バッファを切り分けてコーディングすることにしました。とても参考になりました。 ほんとうにありがとうございました。また、わからない事があれば質問させて頂きますが、その時はよろしくお願いします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |