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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/29:7/7
2024/04/28:16/23

2024/02/29より288/1375
人気モジュール
No.1: フォーラム 16
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット23

No.1:どっかの巡回ロボット23

日曜日からの合計
メイン
   Network Layer Settings: IP, QoS, Queuing & Scheduling
     オリジナルのQueuing機能の実装について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
azshi
投稿日時: 2007/4/23 21:10
新米
登録日: 2007/1/30
居住地:
投稿: 10
オリジナルのQueuing機能の実装について
いつもお世話になっております。

PriorityQueueとは別に、パケットの種類に応じて、
パケットを異なる送信キューに振り分ける
オリジナルのQueuingプロトコルを作成したいと考えています。

このような複数の送信キューに対して、
パケットを振り分ける処理を実装するには、
何(資料やソースコード)を参照すればよいでしょうか?

特にPriority Queueへのパケットの振り分け処理は、
どこで実装されているのか、教えていただけないでしょうか?

よろしくお願いします。
gaku
投稿日時: 2007/4/23 21:46
半人前
登録日: 2005/12/14
居住地:
投稿: 31
Re: オリジナルのQueuing機能の実装について
参考までに ip.cpp に実装されている NetworkIpQueueInsert とかはどうでしょうか?
(*scheduler).insertでエンキューが実行されているはずなので、あとは引数で与えるqueueIndexをパケットの種類に応じて変えてやればいいのだと思います。
packetA<->Index = 1
packetB<->Index = 2
packetC<->Index = 3
・・・
のような対応表をどこかで実装しておけば、適切なIndexを与えることができるのではないでしょうか。

mast
投稿日時: 2007/4/23 23:58
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: オリジナルのQueuing機能の実装について
引用:

参考までに ip.cpp に実装されている NetworkIpQueueInsert とかはどうでしょうか?
(*scheduler).insertでエンキューが実行されているはずなので、あとは引数で与えるqueueIndexをパケットの種類に応じて変えてやればいいのだと思います。
packetA<->Index = 1
packetB<->Index = 2
packetC<->Index = 3
・・・
のような対応表をどこかで実装しておけば、適切なIndexを与えることができるのではないでしょうか。

以下、参考までに…

(*scheduler).insertの呼び出し関係を抜き出してみたら3箇所ありました。
(全てnetwork_ip.cppです。但しQualNet 4.0のコードを見ています。)
--->NetworkIpSendOnBackplane()
    --->NetworkIpCpuQueueInsert()
        --->NetworkIpQueueInsert()
            --->(*scheduler).insert()

--->QueueUpIpFragmentForMacLayer()
    --->NetworkIpOutputQueueInsert()
        --->NetworkIpQueueInsert()
            --->(*scheduler).insert()

--->NetworkIpSendOnBackplane()
    --->NetworkIpInputQueueInsert()
        --->NetworkIpQueueInsert()
            --->(*scheduler).insert()
(BackplaneとかIpCpuQueueというのが何なのかよく分かりませんが、、)
今、IpInputQueueはおいといて、IpOutputQueueに注目すると、NetworkIpOutputQueueInsert()で、
scheduler = ip->interfaceInfo[outgoingInterface]->scheduler
というようにセットしているので、さらに、ip->interfaceInfo[outgoingInterface]->schedulerを何処でセットしているのかを追ってみると、NetworkIpInitOutputQueueConfiguration()でセットしていました。
また、NetworkIpInitOutputQueueConfiguration()は、
--->PARTITION_InitializeNodes()
    --->MAC_Initialize()
        --->ProcessInputFileSubnetLine()
            --->AddNodeToSubnet()
                --->NetworkIpCreateQueues()
                    --->NetworkIpInitOutputQueueConfiguration()
というように呼び出されているようです。
azshi
投稿日時: 2007/4/24 14:13
新米
登録日: 2007/1/30
居住地:
投稿: 10
Re: オリジナルのQueuing機能の実装について
早速のお返事ありがとうございます。

教えていただいた部分を参考に、
ソースコードの中身を追ってみたいと思います。

また、よく分からないときは
質問させていただくかと思いますので、
よろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT