メイン Network Layer Settings: IP, QoS, Queuing & Scheduling 特定のタイミングでパケットを破棄する方法について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kojima | 投稿日時: 2007/4/25 14:14 |
新米 登録日: 2007/4/20 居住地: 投稿: 8 |
特定のタイミングでパケットを破棄する方法について はじめまして
シミュレーションの途中で,ネットワーク層でのパケットドロップを意図的に発生させたいと考えていますが,どのようにすればよいでしょうか? |
gaku | 投稿日時: 2007/4/25 14:47 |
半人前 登録日: 2005/12/14 居住地: 投稿: 31 |
Re: 特定のタイミングでパケットを破棄する方法について # バージョンが分からないので3.9.5をベースと仮定します。
# 他のバージョンでも命名規則とかは似ているので参考になると思います。 network.cpp に NETWORK_ReceivePacketFromMacLayer という関数があります。 これが、受信時のMACレイヤとのインタフェースとなっているはずなので、この関数の中あるいはここから呼ばれる処理のいずれか適切なところで、ドロップ処理を行えばよいと思います。 上記関数内でちょうど次のようなコードが実装されています。 // drop the packet due to IP version mismatch MESSAGE_Free(node, msg); return; とても単純です・・・。Message捨ててるだけですね。 これをサンプルに処理を追加してみてはどうでしょうか。 |
kojima | 投稿日時: 2007/4/25 15:08 |
新米 登録日: 2007/4/20 居住地: 投稿: 8 |
Re: 特定のタイミングでパケットを破棄する方法について 早速の返信ありがとうございます.
network.cppにドロップコードを追加すればいいというのはわかるんですが,「シナリオファイルでどのように指定したらいいのか.」がわからない状態です. 例えば,「シミュレーション開始後 10s で host1 の Queue にある先頭のパケットを破棄する」というようなシナリオを実現するにはどうしたらよいでしょうか? 私の説明不足でした.申し訳ありません. 引用:
4.0を使っています |
gaku | 投稿日時: 2007/4/25 16:03 |
半人前 登録日: 2005/12/14 居住地: 投稿: 31 |
Re: 特定のタイミングでパケットを破棄する方法について まだよく意図が読み取れていないかもしれませんが、オリジナルのシミュレーションパラメータを追加したいということでしょうか。
例えばシミュレーション開始後10sの「10s」を設定値としてシミュレータに読み込ませたいということですか。 どのレベルまで理解されているか分かりませんが、普通にGUIを使用する場合は choices.xml に様々なプロパティの定義構文が記述されているのでこれを編集すればパラメータを追加できます。 もちろん読み込むところも実装しないといけないですが。 XMLの解説まではこの場でできませんが、例として適正位置に <variable name="Drop Start" key="DROP-START-TIME" type="Time" default="10S" /> という構文を追加するとどこか(方針次第で決めてください)のプロパティに"Drop Start"が追加されることになります。 XMLを編集後にGUIを開きなおすと"Drop Start"がどこかに表示されるので時間を指定します。20Sにして保存をかけると configファイルに DROP-START-TIME 20S という行が書き込まれるはずです。 あとはこのDROP-START-TIMEを読み込むところを実装すればいいのですが、ネットワークレイヤなら NETWORK_Initialize で実装されている内容が参考になるかと思います。 ここでいろいろパラメータを読み込んでいますので。 |
kojima | 投稿日時: 2007/4/25 17:00 |
新米 登録日: 2007/4/20 居住地: 投稿: 8 |
Re: 特定のタイミングでパケットを破棄する方法について 丁寧な説明ありがとうございました.
大変参考になりました. |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |