![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kazuki | 投稿日時: 2011/6/17 11:20 |
新米 ![]() ![]() 登録日: 2011/3/24 居住地: 投稿: 8 |
パケットに2つの目的ノードへの宛先を追加 こんにちは
初めて投稿いたします. 私はパケットに2つの目的ノードへの宛先を追加しようと 考えているのですが,どのあたりの関数を改変すればいいのか 検討がつきません. ネットワーク層でIPヘッダの宛先を2つにできないでしょうか. どの関数がルーティングテーブルから宛先をパケットに与えているのでしょうか. どうか,アドバイスをお願い致します. ちなみに,ルーティングをNoneにしてstaticルーティングに しているのですが,その場合はネットワーク層の動きはどこに 記載されているのでしょうか. 質問ばかりで申し訳ありませんが,よろしくお願い致します. |
ino | 投稿日時: 2011/6/20 9:22 |
新米 ![]() ![]() 登録日: 2011/1/24 居住地: 投稿: 16 |
Re: パケットに2つの目的ノードへの宛先を追加 kazukiさん、こんにちは
> ネットワーク層でIPヘッダの宛先を2つにできないでしょうか. 「IPヘッダの宛先アドレスのフィールドを拡張し、2つの宛先を込められるようにする」 といったようなことをお考えでしょうか? これを素直に実装するならばIpHeaderType構造体を修正 (ip_dst -> ip_dst1, ip_dst2の様な感じでしょうか) した上で、それにまつわる処理にも修正を加えていくことになります。 例えば、network_ip.cppのRouteThePacketUsingLookupTable()において NetworkGetInterfaceAndNextHopFromForwardingTable( node, ipHeader->ip_dst, &outgoingInterface, &nextHop); で、nextHopを引いてきていますが、これを例えばip_dst1, ip_dst2 それぞれに行うなどです。 その他にも、IpHeaderType構造体のサイズが変わることになりますので そのへんに依存したコードを丁寧に潰していく必要があります。 (チェックサム計算の修正やヘッダのpaddingなども必要? 既存の宛先一つモードとの互換性も考える必要があるでしょうか? いずれにせよかなり広範囲に渡る修正が予想されます。) > ちなみに,ルーティングをNoneにしてstaticルーティングに > しているのですが,その場合はネットワーク層の動きはどこに > 記載されているのでしょうか. こちらも、RouteThePacketUsingLookupTable()あたりから 一度コードを追ってみてはいかがでしょうか。 ProgrammersGuideの 4.4 Network Layerの章が参考になるかと思います。 - 4.4.2 Network Layer Organization: Files and Folders には具体的なソースファイル名の記述が、 - 4.4.4 Network Layer APIs and Inter-layer Communication には にはそれぞれの機能に関する記述があります。 また、もしマルチキャスト的なことをやりたいのであれば - 4.4.6 Adding a Network Layer Multicast Routing Protocol が参考になるかと思います。 |
kazuki | 投稿日時: 2011/6/20 14:24 |
新米 ![]() ![]() 登録日: 2011/3/24 居住地: 投稿: 8 |
Re: パケットに2つの目的ノードへの宛先を追加 inoさん,
早速の回答,ありがとうございます. 指摘いただいたところを重点的に調べてみます. IPヘッダの2つの宛先から,無線で受信した各ノードが それぞれに次ホップを判断してマルチホップを行うように することを目指しています. また,質問することがあるかもしれませんが よろしくお願い致します. |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |