![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
oronain | 投稿日時: 2011/7/4 19:26 |
新米 ![]() ![]() 登録日: 2011/6/30 居住地: 投稿: 3 |
ネクストホップを操作してルーティングを行いたい(OLSR) Qualnet5.0.2を使用しています。
最近QualNetに触れ始め、最近ではolsr_inria.cppの 「#define DEBUG_OUTPUT 0」を 「#define DEBUG_OUTPUT 1」に変え、デバックをし、Qualnet上でolsr.inriaを用いたトポロジーでOLSRのルーティングテーブルが見れるようになり、送信元から宛先までの経路がどうなっているのかがわかるようになりました。 何かほかにも、プログラムを書くなどし、QualNetに少しでも詳しくなりたいということで、続いて、ネクストホップを操作し、自分の望んだ端末をネクストホップに選択し経路を選択しくということを考えたのですが、「olsr_inria.cpp」のソースのどの部分にどういった書き込みを追加・削除すればいいでしょうか? 現在のシナリオでは7×7のCBR通信をGRID(正方形)で配置し、一番左下から右上の端末に対してCBR通信を行わせるようにしていますが、例えば、これのネクストホップを送信元からひたすら右に送信していき、一番右下の端末からはひたすら真上に経路を選択するにはどうcppファイルを変更し、ネクストホップを変更すればいいでしょうか? 以下に現在のシナリオとolsr_inria.cppを添付しておきます。 よろしくお願いします。 ![]() |
hed | 投稿日時: 2011/7/4 19:47 |
一人前 ![]() ![]() 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: ネクストホップを操作してルーティングを行いたい(OLSR) OLSRの挙動には詳しくないので詳細はご自身で確認して頂きたいのですが、自分だったらこう調べる(ソースコードを追いかける)という方法をお伝えします。
RoutingOlsrInriaLayerという関数の中で以下のような処理があります。 ここではそれぞれ定期的なHelloやTC, MID, HNAを受信した際に何をするかがswitch文で分岐されています。OLSRではどのようなタイミングで経路を更新するかを御存知でしたら、それぞれの関数内で行っていることを初期化時に行うようにすればよいと思います。
初期化関数は名前から判断するとRoutingOlsrInriaInitではないでしょうか? あらかじめ想定した宛先に対するネクストホップを各ノードで追加すれば経路が完成すると思います。 ただし、この変更だけだと定期的な制御パケットの交換により経路が更新されてしまう可能性があります。 そのため、初期化関数内のMESSAGE_Send関数をコメントアウトするなどして、定期的な制御パケットの送信を止めてあげる必要があるかもしれません。 参考になれば幸いです。 |
hed | 投稿日時: 2011/7/4 19:50 |
一人前 ![]() ![]() 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: ネクストホップを操作してルーティングを行いたい(OLSR) あと、QualNetは有償のソフトウェアですのでソースコードをまるまる添付するのはライセンス的にまずいと思います。
(他のユーザの人もどうせ持っていますし。) 出来れば削除しておいた方が宜しいかと。 |
tya | 投稿日時: 2011/7/4 21:39 |
半人前 ![]() ![]() 登録日: 2010/11/30 居住地: 投稿: 21 |
Re: ネクストホップを操作してルーティングを行いたい(OLSR) oronainさん こんにちは.
OLSRはHELLOメッセージやTCメッセージなどから得た情報などでルーティングテーブルを構築します.そのため,自分の望んだノードのネクストホップを意図的に変更するには,ソースコードを改良する必要があります.OLSR INRIAを使用しているようなので,このソースコードを改良して自分の望んだネクストホップを設定する方法(経路構築)をご自身で考える必要があります.もしくは,static routing tableを設定するというのはどうでしょうか? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |