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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/04:4/4
2024/05/03:22/24

2024/03/05より317/1375
人気モジュール
No.1: フォーラム 106
No.2: ニュース 3
No.3: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット91
No.2:Windows NT1

No.1:どっかの巡回ロボット88
No.2:Majestic-12巡回ロボット2
No.3:Safari1

日曜日からの合計
メイン
   Network Layer Settings: IP, QoS, Queuing & Scheduling
     IPv6におけるLink Layer Notification
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kyama
投稿日時: 2006/2/10 16:12
新米
登録日: 2006/1/11
居住地:
投稿: 13
IPv6におけるLink Layer Notification
IPv6においてLink Layer Notificationを使いたいのですが、
どのようにすればよいでしょうか??
puruta
投稿日時: 2006/2/14 10:24
半人前
登録日: 2005/7/13
居住地: 福岡
投稿: 39
Re: IPv6におけるLink Layer Notification
興味があったので Link Layer Notification をキーワードに、
Googleで調べてみたら、OLSRがらみでしか見つからなかった
です。
http://www.olsr.org/docs/report_html/node132.html
こういうことなんでしょうか??

LL(MAC) で コネクションが確立した (or その他のイベント)
で、直接上位層のインターフェース(関数)を呼び出すには?
ってゆうことなんでしょうか?

その場合、何かしらのイベントタグを作ってあげて、そのイベント
に対するIP層のディスパッチャ(switch - case 文)を作成し、
かつその switch - case から呼ばれる関数を定義してあげれば
よさそうな気がします ※抽象的な説明で_(._.)_
kyama
投稿日時: 2006/2/20 12:07
新米
登録日: 2006/1/11
居住地:
投稿: 13
Re: IPv6におけるLink Layer Notification
返信ありがとうございます。
返信送れて済みません。

御指摘の通りの機能を実現したいのですが、
QualNetにおいて、
IPv4の場合は、それを実現する関数が実装されています。
しかし、IPv6の場合には、そのような関数が見当たりません。
また、IPv6についてはオブジェクトファイルのみが提供され
ておりまして、ソースコードを変更することができません。
そこで、本フォーラムに投稿しました。
forum_support
投稿日時: 2006/2/20 22:13
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: IPv6におけるLink Layer Notification
引用:

御指摘の通りの機能を実現したいのですが、
QualNetにおいて、
IPv4の場合は、それを実現する関数が実装されています。
しかし、IPv6の場合には、そのような関数が見当たりません。


ということですが、IPv4のどの関数がそれに相当するのかお教え
いただけないでしょうか。そうすれば、それに相当するIPv6の
関数を調べる手がかりになります。別スレッドでご質問いただい
ているNetworkEmptyForwardingTable()関数ではないですよね。

引用:

また、IPv6についてはオブジェクトファイルのみが提供され
ておりまして、ソースコードを変更することができません。


ということなのですが、SNT社の方針?で、大学向け(QUP)にはIPv6の
ソースコードが提供されていないようです。弊社にはソースが
あるので、調べて(もしあれば)関数名をお知らせできると思いま
す。
kyama
投稿日時: 2006/2/22 16:26
新米
登録日: 2006/1/11
居住地:
投稿: 13
Re: IPv6におけるLink Layer Notification
返信ありがとうございます。

引用:

ということなのですが、SNT社の方針?で、大学向け(QUP)にはIPv6の
ソースコードが提供されていないようです。

知りませんでした。ありがとうございます。

引用:

弊社にはソースがあるので、調べて(もしあれば)関数名をお知らせできると思います。

関数名は、NetworkIpSetMacLayerStatusEventHandlerFunction関数です。
よろしくお願いします。
forum_support
投稿日時: 2006/2/24 21:39
モデレータ
登録日: 2005/5/17
居住地: 東京都中野区中央4-5-3 ?構造計画研究所
投稿: 322
Re: IPv6におけるLink Layer Notification
引用:

関数名は、NetworkIpSetMacLayerStatusEventHandlerFunction関数です。
よろしくお願いします。


お返事がおそくなりました。

ソースコードを調べてみましたが、QualNetのIPv6のコードには
NetworkIpSetMacLayerStatusEventHandlerFunction()に相当する関数は見当たりません。
つまり、IPv6ではLink Layer Notificationはサポートされていません。ただ、ソースに手を
入れて実装できないことはないと思います。必ず目的が達成できるという保証はありませんが、
ソースコードに手を入れられる際の参考までに、私どもで解析した情報を載せておきたいと思
います。

ipv6.cppのソースを見ると、以下のようにMAC層からのコールバック関数はNULLに設定されて
います。


00716     // MAC Layer information.
00717     ip->interfaceInfo[interfaceIndex]
00718         ->macLayerStatusEventHandlerFunction = NULL;


NetworkIpSetMacLayerStatusEventHandlerFunction()はip.cppの中に定義されている関数で、
MAC層からのパケットドロップ通知時にコールバックされる関数をインタフェース構造体に
登録する関数です。このIPv4用の関数を使えば、一旦NULLに設定されたIPv6用コールバック
関数のポインタを設定できるはずです。


03736 void
03737 NetworkIpSetMacLayerStatusEventHandlerFunction(
03738     Node *node,
03739     MacLayerStatusEventHandlerFunctionType StatusEventHandlerPtr,
03740     int interfaceIndex)
03741 {
03742     NetworkDataIp *ip = (NetworkDataIp *) node->networkData.networkVar;
03743 
03744     ERROR_Assert(ip->interfaceInfo[interfaceIndex]->
03745                      macLayerStatusEventHandlerFunction == NULL,
03746                  "MAC-layer event handler function already set");
03747 
03748     ip->interfaceInfo[interfaceIndex]->macLayerStatusEventHandlerFunction =
03749                                                          StatusEventHandlerPtr;
03750 }


これと対になっているのが、NetworkIpGetMacLayerStatusEventHandlerFunction()で、
こちらの関数は既にインタフェース構造体に登録されたコールバック関数を読み出すの
に使われます。(コードは省略)

以上の2つの関数ですが、どちらもip.cppに定義されているものの、IPv4に特化した関数
にはなっていません。また、MAC層は直接にはNetworkIpNotificationOfPacketDrop()を
呼び出します。こちらもまたip.cppに定義されていて、
NetworkIpSetMacLayerStatusEventHandlerFunction()で設定された関数ポインタを、
NetworkIpGetMacLayerStatusEventHandlerFunction()を呼び出して取得し、その関数を
呼び出しているだけです。

MAC層では以下の関数でコールバックを行っています。コードを読むと、IPv6ではコール
バックは行われていません。IPv6でもコールバックされるようにするには、この部分を
改造してあげる必要があります。


04696 // --------------------------------------------------------------------------
04697 // FUNCTION: MAC_NotificationOfPacketDrop
04698 // PURPOSE:  Notify network layer of packet drop.
04699 // --------------------------------------------------------------------------
04700 void
04701 MAC_NotificationOfPacketDrop(
04702     Node *node,
04703     NodeAddress nextHopAddress,
04704     int interfaceIndex,
04705     Message *msg)
04706 {
04707     if (MAPPING_GetNetworkTypeForInterface(node, interfaceIndex)
04708         == NETWORK_IPV4)
04709     {
04710         MplsData *mpls = (MplsData *)node->macData[interfaceIndex]->mplsVar;
04711 
04712         if (mpls)
04713         {
04714             MplsNotificationOfPacketDrop(node, msg, nextHopAddress, interfaceIndex);
04715         }
04716         else
04717         {
04718             NetworkIpNotificationOfPacketDrop(node,
04719                                               msg,
04720                                               nextHopAddress,
04721                                               interfaceIndex);
04722         }
04723     }
04724     else
04725     {
04726         // packet drop from MAC layer
04727         MESSAGE_Free(node, msg);
04728 
04729         // TBD: Notification about packet drop to upper layer
04730         // is not available for IPv6
04731     }
04732 }


以上のことから、ルーティングプロトコル等でNetworkIpSetMacLayerStatusEventHandlerFunction()
を呼び出してプロトコル固有のコールバック関数を登録すれば、IPv4であろうがIPv6で
あろうが関係なくコールバックしてくれるはずです。

IPv4とIPv6のデユアルIPにする場合には更に改造が必要になると思いますが、ここでは
割愛します。

以上、回答になりましたでしょうか。
kyama
投稿日時: 2006/2/27 17:23
新米
登録日: 2006/1/11
居住地:
投稿: 13
Re: IPv6におけるLink Layer Notification
返信ありがとうございました。
大変参考になります。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT