メイン Scenario Setup & Configuration 他ルーティングプロトコルへのデータ転送 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
rayon | 投稿日時: 2009/9/15 23:15 |
新米 登録日: 2009/9/15 居住地: 投稿: 6 |
他ルーティングプロトコルへのデータ転送 初めまして、rayonです。
他ルーティングプロトコルと協調動作をするルーティングプロトコルを作成しています。 ノードに2つのインターフェイスを持たせ、 1つ目のインターフェイスではAODV、 2つ目のインターフェイスに自作のルーティングプロトコル(以下RP)を動かしています。 AODVからRPへパケットを転送したいと考えています。 AODVからRPのインターフェイスのアドレスへパケットを転送しても、 RPのHandleProtocolPacket関数が呼び出されません。 実行結果のstatファイルを見ると、 [0], MAC, 802.11DCF,Unicasts sent = 4 [1], MAC, 802.11DCF,Unicasts received = 4 と書いてあり、MACレベルでは正常にAODVからRPへパケットが送信されていると思います。 この場合、呼び出される関数はHandleProtocolPacketではないのでしょうか? もしくはルーティングプロトコルが異なるなどの理由により、 途中でパケットが破棄されてしまっているのでしょうか? また、この方法以外でも構いませんので、 AODVから他のルーティングプロトコルへデータを送信する方法があれば教えてください。 どうか宜しくお願いします。 |
hiro | 投稿日時: 2009/9/17 2:31 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: 他ルーティングプロトコルへのデータ転送 文面だけでは状況が全くわかりませんが、
呼び出してほしい RPHandleProtocolPacket が呼び出されないのであれば、 地道に追いかけるしかないと思います。 新たに RPHandleProtocolPacket関数 を作ったわけですよね、 真っ先に確認すべきは、その RPHandleProtocolPacket関数 の呼び出し部分の 条件判断部分の処理確認か、呼び出し元関数そのものが呼び出されているかです。 具体的にどの関数で RPHandleProtocolPacket関数 を呼び出すように作成したのかは わかりませんが、一般的には DeliverPacket関数 に入れるのだと思います。 DeliverPacket関数は呼び出されていますか? |
rayon | 投稿日時: 2009/9/17 3:50 |
新米 登録日: 2009/9/15 居住地: 投稿: 6 |
Re: 他ルーティングプロトコルへのデータ転送 返信有り難う御座います。
調べてみた所、DeliverPacket関数自体が呼び出されていません。 RPのルーティングプロトコルを採用しているノード同士で パケットの送受信を行うと、 正しく DeliverPacket→RPHandleProtocolPacket と呼び出されます。 しかし、AODVを採用しているノードからRPを採用しているノードに パケットを送信した際には DeliverPacket 関数は呼び出されていません。 DeliverPacket の呼び出し元の候補を探していると NetworkIpSendOnBackplane関数は通っていて、 その中の if (outgoingInterface == CPU_INTERFACE) { DeliverPacket(node, msg, incomingInterface, hopAddr); } else { QueueUpIpFragmentForMacLayer(node,msg,outgoingInterface,hopAddr, incomingInterface); } の文で else を実行しているようです。 |
hiro | 投稿日時: 2009/9/17 12:43 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: 他ルーティングプロトコルへのデータ転送 えっと、
> AODVからRPへパケットを転送したいと考えています。 というのを整理しましょう。 パケット転送は以下の2種類やりたい。 A) 同一Node内場合。 インタフェイス0はAODV インタフェイス1はRP この同一Node内でパケットをやり取りしたい。 B) Nodeをまたぐ場合。 Node1ではAODVのみが動いている。 Node2ではRPのみが動いている。 Node1からNode2へパケットを転送したい。 転送したいパケットとは具体的に何でしょうか。 IPパケット? |
rayon | 投稿日時: 2009/9/17 15:38 |
新米 登録日: 2009/9/15 居住地: 投稿: 6 |
Re: 他ルーティングプロトコルへのデータ転送 説明不足で申し訳御座いません。
基本的に想定しているのは A の場合です。 転送するのは IPパケット だと思います。 NetworkIpSendPacketToMacLayer 関数を 呼び出して送信しています。 正常に動作する RP→RP 通信は Node1 から Node2 など別々のノード間で通信を行っています。 問題の AODV→RP 通信は 同一ノードで通信を行っています。 パケット送信に使用する関数は両方とも同じで、 上記の関数を呼び出しています。 |
hiro | 投稿日時: 2009/9/20 18:52 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: 他ルーティングプロトコルへのデータ転送 念のため確認させて下さい。
その他の機能や設定は確認済みということでOKですか? たとえば、ip forward設定は正しく処理されていますか? どこまで正常動作確認しているのか、把握できなくなりました。 AODVからRPへのパケット転送 とは IPパケットのフォワーディング処理ということで良いでしょうか。 |
rayon | 投稿日時: 2009/9/20 20:51 |
新米 登録日: 2009/9/15 居住地: 投稿: 6 |
Re: 他ルーティングプロトコルへのデータ転送 はい、その他の機能に問題はなく、
configファイルなどの設定も問題ないと思います。 configファイルの関係のありそうな部分を抜粋しますと SUBNET N16-128.1.0.0 { 0 thru 50 } SUBNET N16-128.2.0.0 { 0 thru 60 } MAC-PROTOCOL MACDOT11 MAC-DOT11-RTS-THRESHOLD 1600 PROMISCUOUS-MODE YES NETWORK-PROTOCOL IP IP-FORWARDING YES [N16-128.1.0.0] ROUTING-PROTOCOL AODV [N16-128.2.0.0] ROUTING-PROTOCOL RP に設定しています。 IPパケットのフォワーディングだと思います。 上記の設定を元に具体的な例を挙げてみます。 AODV同士(例えばノード1と2)の通信は正常に動きます。 RP同士(例えばノード55と56)も正常に動作します。 AODV→RPの通信(例えばノード0と60)を行うとします。 この時、経路が 0 → 30 → 60 と仮定すると、 AODVで 0→30、30のAODV→30のRP、RPで 30→60 となります。 問題となっているのは 30のAODV→30のRP の部分が正常に動かないことです。 30のAODVのルーティングテーブルには 宛先60へのエントリが入っており、 次ホップは30のRPのインターフェイス(128.2.0.31)に設定されています。 statファイルを見ますと 30のAODVのデータリンク層でパケット送信、 30のRPのデータリンク層でパケットを受信していることから データリンクレベルでは正常に動作しているように見えます。 しかし、ネットワーク層ではパケットが届かないという問題です。 長文になってしまいましたが、どうか宜しくお願いします。 |
hiro | 投稿日時: 2009/9/21 18:39 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: 他ルーティングプロトコルへのデータ転送 > IPパケットのフォワーディングだと思います。
ということであれば、 DeliverPacket ではなくって、ForwardPacket でした。 ForwardPacket から、 RoutePacketAndSendToMac が呼び出されます。 ここで、 incomingInterface と、 outgoingInterface を、 確認してみて下さい。 それから、動作確認を簡単にするためには、 Nodeを最小限の数にした方が良いと思います。 50とか60もあると追いかけるのが大変です。 たとえば、以下の5Nodeでどうでしょうか。 (Node1⇒Node2⇒AODV)Node3(RP⇒Node4⇒Node5) Node1とNode5間でCBRしてみると。 Node3がAODVとRPの処理をするはずなので、 確認が簡単になると期待してます。 |
rayon | 投稿日時: 2009/9/21 21:50 |
新米 登録日: 2009/9/15 居住地: 投稿: 6 |
Re: 他ルーティングプロトコルへのデータ転送 助言有り難う御座います。
提案された設定を用いてインターフェイスを調べてみました。 AODVとの時間関係を見るために AodvTransmitData 関数内で NetworkIpSendPacketToMacLayer 関数の 直前にノード番号、送信インターフェイス番号、次ホップアドレスを出力し、 RoutePacketAndSendToMac 関数の呼び出し直後で incomingInterface と outgoingInterface を表示しました。 以下はノード1から5にCBRでパケットを2つ送信した際の結果です。 RoutePacketAndSendToMac : incomingInterface = -2 , outgoingInterface = 0 nodeId = 1, outInterface = 0, nextHop = 80010002 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = -1 nodeId = 2, outInterface = 0, nextHop = 80010003 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = -1 nodeId = 3, outInterface = 0, nextHop = 80020001 RoutePacketAndSendToMac : incomingInterface = 1 , outgoingInterface = -1 RoutePacketAndSendToMac : incomingInterface = -2 , outgoingInterface = 0 nodeId = 1, outInterface = 0, nextHop = 80010002 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = -1 nodeId = 2, outInterface = 0, nextHop = 80010003 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = -1 nodeId = 3, outInterface = 0, nextHop = 80020001 RoutePacketAndSendToMac : incomingInterface = 1 , outgoingInterface = -1 |
hiro | 投稿日時: 2009/9/27 21:34 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: 他ルーティングプロトコルへのデータ転送 -1と-2をANYとCPUに置き換えました。
RoutePacketAndSendToMac : incomingInterface = CPU, outgoingInterface = 0 nodeId = 1, outInterface = 0, nextHop = 80010002 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = ANY nodeId = 2, outInterface = 0, nextHop = 80010003 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = ANY nodeId = 3, outInterface = 0, nextHop = 80020001 RoutePacketAndSendToMac : incomingInterface = 1 , outgoingInterface = ANY RoutePacketAndSendToMac : incomingInterface = CPU, outgoingInterface = 0 nodeId = 1, outInterface = 0, nextHop = 80010002 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = ANY nodeId = 2, outInterface = 0, nextHop = 80010003 RoutePacketAndSendToMac : incomingInterface = 0 , outgoingInterface = ANY nodeId = 3, outInterface = 0, nextHop = 80020001 RoutePacketAndSendToMac : incomingInterface = 1 , outgoingInterface = ANY nodeId 3で nextHop = 80020001 となっているので、 たぶんnodeId1とnodeId2とは別のサブネット側ということで見た目はあってますね。 少し話がそれますが、AODVとRT間でのルーティング情報の交換などは どのような実装になっているのでしょうか? |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |