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

パスワード:


パスワード紛失

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

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

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

日曜日からの合計
メイン
   Miscellaneous: Architecture & Generic Development Questions
     パケットの伝送を行うプロトコルの書き方について
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
masamura
投稿日時: 2005/12/20 19:08
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
ご返答ありがとうございます.

mac.cpp内にあるものに関しては私の努力不足でした.
申し訳ありません.

おそらく, 他の触るところはないので, 問題はないと思います.

週末からお休みとのことで, かなり不安になってきました...
forum_support
投稿日時: 2005/12/20 18:59
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: パケットの伝送を行うプロトコルの書き方について
引用:

masamuraさんは書きました:

4については, mac.cppに既に追記してあります.
(一応, シミュレーションは1ホップの通信であればできているようです.)

1,2,3,5に関して, 追記を行うところはないとの解釈でよいのでしょうか?
参考までにそれぞれがどのファイルに既述されているか,
教えていただけないでしょうか?

よろしくお願い致します.


1,2,3については、他レイヤのプロトコルを修正したり
特殊なことをしていないのであれば修正箇所は無いと思
います。

5 については、 masamura さんがおつくりになった
プロトコルに依存しますので、お作りになったプロトコル
で必要な初期化処理を記述してください。

各関数の位置については、以下のとおりです。grep -R xxxx 等
をお使いになるか、Windows の検索機能等ですぐに分かると思い
ます。私は windows 環境で使用していますが、Cygwin を利用して
grep 検索をよく行います。または、以前お知らせした doxygen
を使うか、VC++ や gccのデッバッガーフロントエンド等を用い
て確認する方法もあります。

1.PARTITION_InitializeNodes : addons/seq/partition.cpp
2.MAC_Initialize : mac/mac.cpp
3.ProcessInputFileSubnetLine : mac/mac.cpp
4.AddNodeToSubnet : mac/mac.cpp
5.AlohaInit : mac/aloha.cpp
masamura
投稿日時: 2005/12/20 17:50
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
早速のご回答ありがとうございました.

引用:

Alohoa初期化部のコールスタックは次のようになっていることが
ソースコードから読み取れます。

1.PARTITION_InitializeNodes
2.MAC_Initialize
3.ProcessInputFileSubnetLine
4.AddNodeToSubnet
5.AlohaInit

3 の関数で、使用するプロトコル名を読み込み 4に引数で
それを渡しています。

4 の関数中では、以下のように読み込んだプロトコル名にたいして、
初期化処理をそれぞれ呼び出しています。

プロトコルを追加されたのであれば、この else if 文を追加して
プロトコル初期化関数を呼べばよいです。


4については, mac.cppに既に追記してあります.
(一応, シミュレーションは1ホップの通信であればできているようです.)

1,2,3,5に関して, 追記を行うところはないとの解釈でよいのでしょうか?
参考までにそれぞれがどのファイルに既述されているか,
教えていただけないでしょうか?

よろしくお願い致します.
forum_support
投稿日時: 2005/12/20 17:32
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: パケットの伝送を行うプロトコルの書き方について
Alohoa初期化部のコールスタックは次のようになっていることが
ソースコードから読み取れます。

1.PARTITION_InitializeNodes
2.MAC_Initialize
3.ProcessInputFileSubnetLine
4.AddNodeToSubnet
5.AlohaInit

3 の関数で、使用するプロトコル名を読み込み 4に引数で
それを渡しています。

4 の関数中では、以下のように読み込んだプロトコル名にたいして、
初期化処理をそれぞれ呼び出しています。

if (strcmp(macProtocolName, "SWITCHED-ETHERNET") == 0)
{
      SWITCHED-ETHERNET の初期化処理
   return;
}
else if (strcmp(macProtocolName, "MAC802.3") == 0)
{
 802.3 の初期化処理
}
・
・
else if (if (strcmp(macProtocolName, "ALOHA") == 0) {
    node->macData[interfaceIndex]->macProtocol=MAC_PROTOCOL_ALOHA;
    AlohaInit(node, interfaceIndex, interfaceAddress,nodeInput, nodesInSubnet);
}
・
・
・


プロトコルを追加されたのであれば、この else if 文を追加して
プロトコル初期化関数を呼べばよいです。

さらにIDEが適切に追加プロトコルのパラメータをconfigファイルに落とせるように、choice.xml中の
<subcategory title="MAC Protocol" class="interface,device,atmdevice"> 以下に他のMACプロトコル
の設定をまねて、追加したプロトコルのパラメータを追記していた
だくことになります。
masamura
投稿日時: 2005/12/20 16:33
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
ご返答ありがとうございます.

引用:

(3)PLAYボタンを押すとqualnet.exe が .config ファイルを読み込
みシミュレーションを実行します。この .config ファイルの読み込
み処理で、新規に追加した <KEY>と<PARAMETER>を読み込むようにソ
ースコードを修正する必要があります。

ファイル読み込みは IO_Read*** といったAPI郡を利用することに
なります。


ここでおっしゃるソースコードとは,
作成したMACプロトコルの.cppのことでしょうか?
既存のALOHAを参考にしましたが, そのような表記は見当たりませんでした.
あまりよく分かっていないので,
具体例を挙げて教えていただけたらと思います.
よろしくお願い致します.
forum_support
投稿日時: 2005/12/20 16:06
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: パケットの伝送を行うプロトコルの書き方について

settings/choces.xml 

を編集していただければIDEから設定できるようになります。

ただし、これはシミュレーションシナリオファイルを作成する
ためだけの設定ですから、シミュレータは実際にこのパラメータ
を読み込むコードを追加しておかなければなりません。

QN3.9でIDEからシミュレーションを実行するまでの流れをおさらいすると

(1) IDE でシナリオを作成すると XML形式の .scn ファイルが
作成されます。

(2) RUNボタンを押すと、IDEは .scn ファイルを元に、シナリオ
ディレクトリ内に .config/.app/.node 等のシミュレーション実行
用のファイルを作成します。
※ここで、choice.xml で指定した key に対してIDEで設定した
※パラメータが
※<KEY> <PARAMETER>
※といったフォーマットで .config ファイル中に埋め込まれます。
(3)PLAYボタンを押すとqualnet.exe が .config ファイルを読み込
みシミュレーションを実行します。この .config ファイルの読み込
み処理で、新規に追加した <KEY>と<PARAMETER>を読み込むようにソ
ースコードを修正する必要があります。

ファイル読み込みは IO_Read*** といったAPI群を利用することに
なります。
masamura
投稿日時: 2005/12/19 13:13
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
いつもお世話になっています.

結局のところ, ソースコードを直接修正することにしました.
コンパイルも実行し, エラーもとってみました.

このプロトコルをGUIに導入するには,
マニュアルを読むところによると
settings/choices.xmlの追記を行うだけでよいのでしょうか?

よろしくお願いいたします.
masamura
投稿日時: 2005/12/15 12:16
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
早速のご返答ありがとうございました.
ひとまず自分で考えながらやってみたいと思います.
また, doxygenも導入したいと思います.

また, 何か疑問点が出てきましたらお尋ねしたいと思いますので,
その際はよろしくお願い致します.
forum_support
投稿日時: 2005/12/14 20:58
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: パケットの伝送を行うプロトコルの書き方について
引用:

masamuraさんは書きました:
今は既存のALOHAを簡略化して,
「単純にパケットを送るようなもの」までもっていきたいと考えており,
プロトコルデザイナーを使って, 衝突検出や再送を取り払っているところです.
もしかしたら, この作業もソースファイルを直接触ったほうがいいのでしょうか?


ALOHAでしたら、既にプロトコルデザイナのテンプレートも
用意されていると思いますので、デザイナを使っても、
直接コードを修正されてもどちらでも出来ると思います。
好みの問題になってくるとおもいますよ。
MACからPhysical の状態を知りたい場合には、いくつか関数が用意
されていますので既存コードから読み取ってみてください。この
手の関数は大抵、スケジューリングハンドラでなく、関数の
直接呼出しになっていると思いますので、コードを追いやすいと
思います。ちなみに Support Team は doxygen 等のツールを
使ってソースを追っています。
masamura
投稿日時: 2005/12/14 20:36
半人前
登録日: 2005/12/6
居住地: 岐阜県
投稿: 39
Re: パケットの伝送を行うプロトコルの書き方について
ご回答ありがとうございます.
また, こちらが無知なために,
手間をかけさせてしまって本当に申し訳ありません.
丁寧に対応して頂けることに感謝しております.

素人としてプロトコルデザイナーを使用したほうが
「視覚的」ということで勝手に作業しやすと思い込んでおりました.
しかし, 今回のご回答からはそうではないみたいですね.
申し訳ありません.

今は既存のALOHAを簡略化して,
「単純にパケットを送るようなもの」までもっていきたいと考えており,
プロトコルデザイナーを使って, 衝突検出や再送を取り払っているところです.
もしかしたら, この作業もソースファイルを直接触ったほうがいいのでしょうか?

何かとお世話になりますが, よろしくお願い致します.
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT