Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/21:6/6
2024/05/20:19/24

2024/03/22より392/1415
人気モジュール
No.1: フォーラム 40
No.2: QualNet概要 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット38

No.1:どっかの巡回ロボット34
No.2:Google巡回ロボット3
No.3:Baidu巡回ロボット1

日曜日からの合計
メイン
   Routing Settings
     複数の経路を同時に使用する方法に関して
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
takeshi
投稿日時: 2006/10/20 16:21
新米
登録日: 2006/5/10
居住地:
投稿: 16
複数の経路を同時に使用する方法に関して
QualNetでの実現方法が分からなかったので、質問させてください

添付するようなトポロジ上で、ノード1とノード2がTCP通信をすることを考えています

FTP通信1: 192.0.0.1 <=> 192.0.2.1
FTP通信2: 192.0.1.1 <=> 192.0.2.1

このときにノード1とノード2の間には二つの経路が存在するので
二つの経路それぞれにTCPコネクションをはって同時に通信させたいのですが
ルーティング方法が分かりません

ちなみに現状はstaticルーティングに設定しています

ノード2における経路表の問題でうまく両方の経路を使用できていないと思うのですが
もし何かご存知の方がいらしましたらご教授お願いいたします
topo.gif
mast
投稿日時: 2006/10/20 23:49
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: 複数の経路を同時に使用する方法に関して
こんばんは。

takeshiさんのシナリオの実行は、少なくともルーティングテーブルが1つの宛先に対して複数Nexthop登録可能となっていないと、無理ではないでしょうか?

さらにポリシールーティングの機能(Linuxで言うところのNetfilterとRPDBに相当する機能:この例だと例えば送信元ポート番号によるパケットクラシフィケーションとクラス別ルーティングテーブル)が必要になってくるかと思います。

# "普通の"IPルーティングでは、Nexthopを決めるときに、
# 送信元IPアドレスや送信元ポートを気にしてないはずです。

そこで便乗質問ですが、QualNetはポリシールーティングやマルチパスルーティングに対応していますか?

もし対応していなければ、たぶん大改造を加えないと、takeshiさんのシナリオのシミュレーションはできないのではないかと思います。

別のアプローチとして考えられるのは、例えば、クライアント側がIPのソースルートオプションを使って送信するようなアプリケーションがあれば、そのアプリケーションの設定のみでなんとかなりそうですが、QualNetが標準でサポートしているアプリケーションにそういうものがあるかどうかは私は知りません。

ご参考になるかは分かりませんが、興味があったので投稿させて頂きました。(便乗質問になってしまいましたが。。)
gaku
投稿日時: 2006/10/21 2:19
半人前
登録日: 2005/12/14
居住地:
投稿: 31
Re: 複数の経路を同時に使用する方法に関して
QualNetの実装をのぞいてみました。
結果、mastさんのご指摘の通り、ルーティングテーブルを見る際に送信元IPアドレスを参照しないのでテーブル上に複数経路がある場合でも最初の適合経路に決まってしまいます。
つまり片方の経路しか確立できません。
例えばTCPではなく、図で見たところの下り方向のみのUDPのように宛先IPアドレスが異なるならばそれぞれルートエントリーがしっかり分かれるはずなので複数経路(ノード単位で見た場合)も可能かと思います。

どの程度のことを評価したいのか存じ上げませんが、とりあえず両方の経路にパケットが流れればよいということであれば、適切なダイナミックルーティングプロトコルを使用すればテーブルが動的に書き換わるのでどちらの経路も通ると思います。

あくまでスタティックルーティングを使用し、かつ両経路のトラフィックを細かく調整したいということであれば、ルーティングテーブル参照部分の処理を改造しないとおそらく実現できないかと思います。
例えば、関数内で送信元のインタフェース識別子を参照することができるようにし、これとテーブル上の複数経路のうちどれを採用するかマッピングのルール付けをするようにしておけば、該当経路を特定できますよね。
ただし、こういう簡易的な手は本来のプロトコルから外れることはもちろんのこと、他に変な影響が出る可能性は大いにあるのでリスク付きになりますが・・・。
takeshi
投稿日時: 2006/10/22 8:34
新米
登録日: 2006/5/10
居住地:
投稿: 16
Re: 複数の経路を同時に使用する方法に関して
>mastさん,gakuさん

コメントありがとうございました

スタティックルーティングにはこだわっておりませんので,もしポリシールーティングなどで解決できるのであれば
その実現方法などご教授いただけないでしょうか?

私の方でも実現する方法を調べてみます
gaku
投稿日時: 2006/10/24 23:53
半人前
登録日: 2005/12/14
居住地:
投稿: 31
Re: 複数の経路を同時に使用する方法に関して
何らかの改造を加えない限り、ポリシールーティング等には対応してないように見えますけど・・・。
できれば改造を加えたくないというスタンスであるならば、ダイナミックルーティングプロトコルの選択肢(設定)がいろいろあると思うので、まずはそこからご自身の目的にいちばん合いそうなものを探してみてはいかがでしょうか。
逆に、改造を加えるのであれば先に申し上げたようにスタティックルーティングをベースにして何か方法を考えるのが楽だと思います。ルーティングテーブルの状態遷移に悩まなくて良いはずなので。
mast
投稿日時: 2006/10/25 0:33
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: 複数の経路を同時に使用する方法に関して
引用:
何らかの改造を加えない限り、ポリシールーティング等には対応してないように見えますけど・・・。

ありました!
Route Mapという機能です。
プログラマーズガイドにも何やら少し書いてますが、それよりも、
verification/policy-routing以下のシナリオが参考になります。

srcポート毎にパケットにマーク付けして、マーク毎にnexthopを指定すればできそうではないですか?
mast
投稿日時: 2006/10/25 1:24
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: 複数の経路を同時に使用する方法に関して
引用:
プログラマーズガイドにも何やら少し書いてますが、それよりも、
verification/policy-routing以下のシナリオが参考になります。

立て続けにすみません。
ダウンロードサイトのModel Library Documentationにある、
QualNet-3.9.5-ModelLibrary-Developer.pdf
に、Policy Routing, Route Map, Access Listの設定に関する詳しい説明がありました。

引用:
srcポート毎にパケットにマーク付けして、マーク毎にnexthopを指定すればできそうではないですか?

ドキュメントを見る限り、ポート番号でマッチさせることはできないっぽいです。。
SRC IPでマッチはできるみたいですが、途中ルータではなく、トラフィックの送信元ノードでそのマッチの適用が可能なのかどうかは、ちょっとやってみないとわかりません。
gaku
投稿日時: 2006/10/25 8:54
半人前
登録日: 2005/12/14
居住地:
投稿: 31
Re: 複数の経路を同時に使用する方法に関して
なるほど、半分予測で投稿してしまって失礼しました。
設定にこういったものもあるのですね。
参考になります。
mast
投稿日時: 2006/10/27 1:54
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: 複数の経路を同時に使用する方法に関して
> takeshiさん
乗りかかった船なので、「この際・・・」と思い、いろいろやってみました。
その結果、(IPフラグメンテーションが起こる場合にはうまくいきませんが)IPフラグメンテーションが起こらないようなシナリオであればうまく動作させることができるようになりました。設定方法の説明は(面倒なので )割愛しますが、シナリオファイルとシナリオディレクトリを添付しておきます。よかったら参考にしてみてください。

ちなみに、ソースコードは、network/ip.cppのRoutePacketAndSendToMac関数の以下の一箇所だけいじっています。QualNetのバージョンは3.9.5です。

//-------------------------------------------------------------------------//
// Non fragmented packet same as before.
//-------------------------------------------------------------------------//
    if (ip->mobileIpStruct)
    {
        MobileIpEncapsulateDatagram(node, msg);
    }

    // For PBR analysis
    // No particular check is available to ascertain whether its a data
    //  or a control packet(we can do a precedence check, but thats not
    // a foolproof test). So all the packets are policy routed.

    // 15 June, 2004, Added check to avoid (OLSR) control packet matching
#if 0 /* modified by mast: Enabling Local PBR */
    if (ipHeader->ip_tos != IPTOS_PREC_INTERNETCONTROL &&
        incomingInterface != CPU_INTERFACE)
#else /* modified by mast: Enabling Local PBR */
    if (ipHeader->ip_tos != IPTOS_PREC_INTERNETCONTROL)
#endif /* modified by mast: Enabling Local PBR */
    {


誰か、IPフラグメンテーションへ対応させてくれると嬉しいところなのですが。。

Scenario_2.zip
takeshi
投稿日時: 2006/11/9 11:48
新米
登録日: 2006/5/10
居住地:
投稿: 16
Re: 複数の経路を同時に使用する方法に関して
>mastさん

返信が遅れて大変申し訳ありません.
mastさんの変更を参考にさせて頂きたいと思います.
ありがとうございました.
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT