![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kazuki | 投稿日時: 2011/12/7 20:17 |
新米 ![]() ![]() 登録日: 2011/3/24 居住地: 投稿: 8 |
Dequeueについて こんにちは,
いつもお世話になっております. 現在,無線マルチホップのシュミュレーションを 行なっております. そこである程度,Queueにパケットが溜まって転送を行うようにしようにしたいのですがうまくいきません. outputキューからのdequeueのタイミングを任意(時間で待たせたり, ある程度パケットが溜まるまで待つ)に操作することはできないので しょうか. 試しに network_ip.cpp内の NetworkIpOutputQueueDequeuePacketForAPriority()で条件を 満たさない場合はdequeueしないようにしたのですが,一回でもFALSEを 返してしまうと転送してくれなくなるようで詰まっています. よろしければアドバイスをいただけないでしょうか. ちなみにQualNet5.0を使用し,ルーティングは静的ルーティングを使っています. |
chackn | 投稿日時: 2011/12/8 13:39 |
常連 ![]() ![]() 登録日: 2005/5/13 居住地: Kanagawa, Japan 投稿: 61 |
Re: Dequeueについて kazukiさんこんにちは。
「一回でもFALSEを返してしまうと転送してくれなくなる」のは、恐らく「FALSEが返ってくることが無い」前提で作られているからだと思いました。一度でもFALSEが返ってきたら、二度とNetworkIpOutputQueueDequeuePacketForAPriority()を呼び出すトリガがかからなくなるからだと。 でもソースを見てみた限りでは、そんな作りにはなっていません。おそらく次のパケットが到着したら(802.11ですよね?)、MacDot11NetworkLayerHasPacketToSend()が呼ばれて更にこの関数が呼ばれるはずです。 なぜそうなるのか実験してみたいので、どこをどういじったのか、差支え無ければ教えていただけませんか?できればシナリオもアップロードしてください。 |
kazuki | 投稿日時: 2011/12/8 21:45 |
新米 ![]() ![]() 登録日: 2011/3/24 居住地: 投稿: 8 |
Re: Dequeueについて 返信有難うございます.
はい,802.11を使用しています. あと変わっていることといえばプロミスキャスモードを使っていること ぐらいで本当にシンプルなシナリオを試しています. いじったのはnetwork_ip.cpp内の NetworkIpOutputQueueDequeuePacketForPrioroty()で デキューが行われる前に
を差し込んでいます. コーディングが下手なため大変恥ずかしいのですが, dequeueFlagは最終判断用 mytime[]は各ノードのデキューしようとした時の時間保存用 timeFlag[]は各ノードのmytimeの代入を操作,初期値は1 なっています. ちなみにipヘッダのcodeは自分で追加したものでこれを元に特定 パケットを見分けています. 自分でも処理を追ってみたのですが,node.cppの NODE_ProcessEvent()で処理が終了してしまっているようです. 長々を申し訳ありませんが,よろしくお願い致します. ![]() |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |