JP5720793B2 - データ転送方法およびそれを用いるノード装置 - Google Patents
データ転送方法およびそれを用いるノード装置 Download PDFInfo
- Publication number
- JP5720793B2 JP5720793B2 JP2013534493A JP2013534493A JP5720793B2 JP 5720793 B2 JP5720793 B2 JP 5720793B2 JP 2013534493 A JP2013534493 A JP 2013534493A JP 2013534493 A JP2013534493 A JP 2013534493A JP 5720793 B2 JP5720793 B2 JP 5720793B2
- Authority
- JP
- Japan
- Prior art keywords
- frame
- node
- node device
- identifying
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/12—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
- H04W40/14—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality based on stability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0686—Additional information in the notification, e.g. enhancement of specific meta-data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/18—Loop-free operations
Description
本発明は、複数のノードを含むネットワークにおけるデータ通信方法およびそれを用いるネットワーク装置に関する。
アドホックネットワークシステムでは、アドホックネットワーク通信端末(ノード装置、または単にノードとも呼ばれる)同士が自律的にネットワーク接続し、相互の通信を可能としている。「自律的に」という言葉は、使用者によって随時通信経路を設定したり、サーバやルータの通信管理を行う専用の通信端末やインフラを必要としない、ということを意味する。
アドホックネットワークのルーティングプロトコル(アドホックプロトコル)には、リアクティブ型のAdhoc On Demand Distance Vector Algorithm(AODV)やプロアクティブ型のOptimized Link State Routing(OLSR)が知られている。
AODVでは、経路探索にブロードキャストを用いて、他の通信ノード装置がブロードキャストを繰り返し、目的のノード装置への経路を発見する手法である。通信ノード装置は、目標とする経路を発見するために周囲に「Route Request(RREQ)」というフレームを送出する。このフレームには、検出目標の通信ノードIDが明記されている。
周囲の通信ノード装置は、自身を検索していない場合は、新たにRREQフレームを作成して、周囲へのブロードキャストを繰り返し行う。このとき各通信ノード装置は、送り先のメッセージが、隣接するどの通信ノード装置から受信されたものなのかを記録する。RREQメッセージが目的の通信ノードに達したとき、その目的の通信ノード装置は、「Route Reply(PREP)」フレームを作成し、送り元のノードに対して、RREQフレームが送られてきた経路を辿るようにしてPREPを送信する。こうすることによって、双方向の通信経路が作成される。
OLSRでは、通信ノード装置同士が定期的にフレームを交換し合うことで、ネットワーク全体を把握し、目的の通信ノードまでの経路を検出する。通信ノード装置は、周期的にハロー(HELLO)フレームを送出し、互いにその存在を通知し合う。通信相手となる通信ノード装置の存在が判明したところで、次に効率的にネットワーク全体にフレームを配信するための、Multi Point Reley(MPR)と呼ばれるフラッディング用のパスを生成する。MPRにより、各通信ノード装置から効率よくフレームをネットワーク全体へブロードキャストすることができる。次にこのMPRを用いて、経路生成メッセージであるTechnology Control(TC)フレームをノード装置同士が互いに配信することで全ノード装置がネットワークトポロジーを知ることができる。フレームを目標とする通信ノード装置に送るには、送信元となる通信ノード装置自信が知っているネットワークトポロジーを参照し、送るべき隣接通信ノード装置にフレームを渡す。隣接ノードも同様に処理を行う、最終的に目標ノード装置にフレームを配信する。
上記のように、ネットワーク内の各ノード装置がネットワークトポロジーを把握することを前提としたネットワークシステムでは、ネットワーク環境の動的な変化にシステムが追従できない場合がある。たとえば、ノード装置がその時点で認識しているネットワークトポロジーに基づいて、データを送信しようとしても、必ず送信に成功するとは限らない。
各ノード装置が自律的に動作するアドホックネットワークシステムにおいては、あるノード装置に宛てた送信フレームを中継する際には、その時点で有効な経路を各ノード装置が把握しておく必要がある。そのために、各ノード装置は、フレームの送信の際に参照する各種情報を格納するためのテーブルを備えている。それらのテーブルには、ノード装置に隣接する他のノードを記憶するための隣接ノード管理テーブル、フレームの送信元となるノード装置(「GS」(Global Source)とも呼ぶ)が、送信する複数のフレームの各々を一意に識別する識別情報を管理するFID(Frame IDentification)管理テーブル、フレームを宛先となるノード装置(「GD(Global Destination)」とも呼ぶ)に送信するにあたり、どの隣接ノードに送信するかを決定するための情報を管理する重み付けテーブル、を備えている。
しかしながらアドホックネットワークにおいては、データ通信量が多い場合は、中継するノードのFID管理テーブルが肥大化しリソースを圧迫するという問題があった。また、FID管理テーブルの検索、登録、削除の処理により各ノード装置のCPUリソースの使用時間が増大するという問題があった。また、データの中継ノードの転送回数示すHOP数が多くなる場合、データのスループットに影響を与えてしまうという問題があった。
よって、FID管理テーブルを用いて有効な経路を把握しつつ、データの転送スループットとメモリ、CPUのリソースを最適化する方法およびそれを用いたノード装置が望まれている。
ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、を含み、前記フレームに含まれている経路安定指標は、前記フレームを最初に送信したノード装置から前記フレームが最終的に届けられるノード装置までのフレームの経路が安定しているか否かを表しており、前記経路安定指標処理手段は、前記経路が安定していないことを前記経路安定指標が表している場合には、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定する処理を行うことを決定し、前記経路が安定していることを前記経路安定指標が表している場合には、前記判定する処理を行わないことを決定する、ことを特徴とするノード装置が提供される。
上記のノード装置によれば、既存技術のループ検知による経路選択方法を用いつつ、データの転送スループットとメモリ、CPUのリソースを最適化することができる。
図1〜20を参照しながら、ネットワークにおけるデータ通信方法およびそれを用いるネットワーク装置について説明する。本実施形態では、FID管理テーブルを用いて有効な経路を把握しつつ、データの転送スループットとメモリやCPUのリソースを最適化する方法が提供される。
経路選択方法では、まず、データフレームの発信元であるノード(以下のGS)が、自ノードの識別ID(ノードIDとも呼ぶ)と、自ノードが管理するFrame IDentification(FID)をデータフレームに記載し送信する。データフレームのGSであるノード装置のノードIDとFIDをフレームに記載することによって、個々のフレームを識別することができる。次に、このデータフレームを転送するノードは、自ノードのFID管理テーブルを検索して登録がない場合、初めて受信したデータフレームとして、受信元(「LS](Local Source)とも呼ぶ)のノードを記憶し、このノード以外のノードを選択して記憶した後、転送を行う。また、自ノードのFID管理テーブルを検索して登録がある場合は、以前転送を行ったノードはループして届かなかったと判断し、記憶しているノードは使用不可にし、それ以外の転送先ノードがあれば同様に記憶して転送、無ければ、最初に受信したノードにバックトラックする。このように、ループを検知して異なる経路に転送したり、バックトラックしたりする事で、各ノードがデータ宛先毎に最適な経路を学習する。
本実施形態でネットワーク内を転送されるデータフレームには、データフレームが、その経路にはループが存在しないことをその経路のノード装置が認識済みである安定化経路を転送されようとする場合には、ループ検知のための処理を省略して、データの転送スループットとメモリやCPUのリソースを改善するために導入されるループ検知フラグが含まれている。
ループ検知フラグは、具体的には「0」または「1」の値である。ループ検知フラグのデフォルト値は「1」である。つまり、ノード装置は初期状態において、ループ検知のための処理を実行する。もちろん、ループ検知フラグは、データフレームが安定化経路を転送されようとしているか否かを判定する情報を与えることができれば、「0」または「1」以外の値であっても構わない。ループ検知フラグの値は、経路安定指標とも呼ばれる。
図1はアドホックネットワーク構成の例を示す図である。図1のネットワーク10は、以下の実施形態を適用することが可能なアドホックネットワークの一例であり、7つのノード装置、X、Y、A、B、C、DおよびEを含んでいる。各ノード装置をネットワークトポロジーの観点から単にノードと呼ぶこともある。
ネットワーク10はこれだけで閉じている必要はなく、ネットワーク10内の1つまたは複数のノード装置がネットワーク10とは別のネットワークに属する装置と接続されていても良い。たとえば、ネットワーク10に属するノード装置の一つが、データ管理サーバを含む外部ネットワークのゲートウェイ装置に接続されていても良い。そして、そのノード装置によって送受信されるデータは、ゲートウェイ装置を介して外部のデータ管理サーバに送られ、管理されても良い。
ネットワーク10を構成する各ノード装置には、それぞれ識別情報である「ノードID(IDentification)」が付与されている。図1の各ノードに付与された参照符号がノードIDを示すものとして説明する。各ノード装置にとって自分自身に付与されたノードIDを、自ノードIDともいう。
図1において、直接的に通信可能なノード装置間にはリンクが存在するという。リンクは実線で示されている。具体的には、ノード装置XとD、ノード装置DとA、ノード装置DとE、ノード装置EとY、ノード装置AとB、ノード装置AとC、ノード装置BとC、ノード装置BとYの間にリンクが存在する。リンクは、無線によってノード装置の間を接続する無線リンクでも、有線によってノード装置の間を接続する有線リンクでも良い。
また、1つのリンクによって隔てられ、結び付けられている2つのノード装置は、互いに隣接するノード装置である。
このようなアドホックネットワーク10のトポロジーは動的である。「トポロジーが動的である」とはノード装置の数の変化、またはリンクの数の変化があり得る、という意味である。すなわち、ネットワーク10を構成するノード装置のいずれかが撤去されることもあるし、また新たなノード装置が追加されることもある。また、あるリンクが突然に消滅することもあるし、新たなリンクが発生することもある。ノード装置の数の変化およびリンクの数の変化は、ネットワークの管理者によって意図的に行われる場合もあるし、そうでない場合もある。
ネットワーク10のノード装置間では、Protocol Deta Unit(PDU)としてのフレームが送受信される。あるフレームがたとえば、ノード装置Xからノード装置Yに向けて送られる場合、ノード装置Xを「GS(Global Source)」、ノード装置Yを「GD(Global Destination)」と呼ぶ。図1では、ノード装置Xからノード装置Yへは、ノード装置D、Eを経由する経路、ノード装置D、A、Bを経由する経路、ノード装置D、A、C、Bを経由する経路などが存在する。これらの経路をそれぞれ、<X、D、E、Y>、<X、D、A、B、Y>、<X、D、A、C、B、Y>とタプルで表記することがある。 経路<X、D、E、Y>において、ノード装置XはGS、ノード装置YはGDであることが既に述べた。ノード装置Xからノード装置Dにフレームが送信され、ノード装置Dによって受信されるとき、ノード装置Xを「LS(Local Source)」、ノード装置Dを「LD(Local Destination)」と呼ぶ。LSとLDは一つのリンクによって隔てられた2つのノード装置に対して定義される。
経路におけるリンクの数はホップ数とも呼ばれる。たとえば、経路<X、D、E、Y>において、GSであるノードXからGDであるノードYまでのホップ数は3である。LSからLDまでのホップ数は、定義より1である。
図1に示されているアドホックネットワーク10のある一つのノード装置は、そのノード装置に隣接するノード装置の存在とノードIDを認識している。たとえば、ノード装置Aは、隣接する3つのノード装置とそれぞれのノードIDであるB、C、Dを認識しており、ネットワーク10の全体を把握している必要はない。別の言葉では、あるノード装置は、ホップ数1以内の範囲に属するノード装置およびリンクに関する情報のみを保持している。あるノード装置が保持している情報には、自分自身に関する情報も含まれる。よって、ネットワーク10の規模が増大しても、各ノード装置がネットワーク全体を認識するためのデータの通信を行い、そのデータの通信がネットワークに多大な負荷を強いる結果、通信システム全体としての性能が悪化することはない。
また、ネットワーク10内で送受信されるデータフレームには、フレーム識別情報が含まれており、一意に識別される。フレーム識別情報の一例では、データフレームのGSであるノード装置のノードIDと、各ノード装置がGSとなって送信するフレームの識別のための情報であるFID(Frame IDentification)の組み合わせである。FIDの例としては、所定のビット数のシーケンス番号や、タイムスタンプを挙げることができる。FIDとしてたとえば、タイムスタンプを採用すると、複数のノードで同一のFIDが生成される可能性がある。しかしながら、フレーム識別情報は、FIDとデータフレームのGSであるノード装置のノードIDの組み合わせであるので、異なるノード装置がそれぞれGSとなって送信したデータフレームは、異なるフレーム識別情報を有する。
上述のように、本実施形態におけるデータフレームには、ノード検知フラグが含まれる。
図2はノード装置の機能ブロックの例を示す図であり、図3はノード装置のハードウェア構成の例を示す図である。図4はそのような構成を有するノード装置における経路選択のための処理について説明する図である。
図2に示されているように、アドホックネットワーク10を構成するノード装置100は、受信部101と、フレームを送信する送信部102を備えている。受信部101は受信手段に対応する。また、送信部102は、送信手段に対応する。
また、ノード装置100は、フレームの送信の際に参照する各種情報を格納するためのテーブルを備えている。それらのテーブルには、ノード装置に隣接する他のノードを記憶するための隣接ノード管理テーブル103、フレームを宛先となるノード装置(「GD(Global Destination)」とも呼ぶ)に送信するにあたり、どの隣接ノードに送信するかを決定するための情報を管理する重み付けテーブル104、フレームの送信元となるノード装置(「GS」(Global Source)とも呼ぶ)が、送信する複数のフレームの各々を一意に識別する識別情報を管理するFID(Frame IDentification)管理テーブル105を備えている。FID管理テーブル105は記憶手段の一つである。
重み付けテーブル104は、フレームをどの隣接ノード装置に送信するかを決定するための情報をGD毎に管理するためのテーブルである。図2に示されているノード装置100は7つのノード装置から構成されるネットワーク10に用いられるので、各ノード装置は最大6つ隣接ノードを有する。よってノード装置i(i=1〜6)の重み付けテーブル104は、各隣接ノードごとに重み付けテーブル104i−j(j=1〜max6)を備えている。重み付けテーブル104に含まれている情報から、GD宛のフレームをどの隣接ノードをLDとして選択するか、を決めることができる。すなわち、ここでの「重み」とは、フレームのGDごとに、ノード装置100に隣接する1つ以上のノード装置に関して、LDを選択する際の優先度を表している。重み付けテーブル104も記憶手段の一つである。
さらにノード装置100は、受信部100が受信したフレームの種類を判定するフレーム分岐処理部106を備えている。フレームには、たとえば、データフレーム、ハローフレーム、およびACK(ACKnowledge)フレームなどが存在する。
データフレームは、GSであるノード装置が、GDであるノード装置に伝達しようとするデータをペイロードとして含む。つまり、フレームが定義される層より上位の層で定義されるプロトコルのPDUがペイロードとしてデータフレームに含まれる。
ハローフレームは、制御情報を通信するための制御フレームの一種で、ノード装置100が自分自身の存在を他のノード装置に通知するためのフレームである。ハローフレームを受信したノード装置は、ハローフレームの送信元のノード装置の存在に関する情報を自身の隣接ノード管理テーブル103に記憶したり、隣接ノード管理テーブル103を更新したり、さらに重み付けテーブル104を更新したりする。
ACKフレームは、あるノード装置からデータフレームを隣接するノード装置に送信したとき、データフレームの送信が成功した場合に隣接するノード装置から受け取るフレームである。逆にデータフレームを送信したノード装置が、所定の時間が経過しても、ACKフレームを受信できない場合には、データフレームの送信に失敗したことを意味する。
また、ノード装置100は、それぞれのフレームの受信に伴う処理を行うための処理部を備えている。具体的には、ACKフレームに関する処理を行うACK処理部107、ハローフレームの受信に伴って処理を行うリンク処理部108を備える。ACK処理部107は、たとえば、データフレームの送信後の所定の時間内にACKフレームを受信するかどうかを監視する。リンク管理部108は、隣接ノード管理テーブルを管理し、重み付けテーブル104の管理にも関わる。リンク管理部108は、隣接ノード管理テーブル103に新たに隣接ノードを加えたり、認識不能となったノード装置に関するエントリを削除するエージング処理を行ったりする。また、リンク管理部108は、隣接ノード装置に関する重み付けテーブル104の追加、削除、または更新を行う。さらに、データフレームの受信に伴って処理を行うために、バッファ部109およびデータフレーム処理部110を備えている。これらのほかに、上位層処理部111、ハローフレーム生成部112、およびFID(Frame IDentification)生成部113を備えている。上位層処理部111は、ノード装置100がGSまたはGDである場合に、データフレームにペイロードとして含まれる上位層のPDUを処理する。
ノード装置100がフレームを受信すると、各部は次のように動作する。
ノード装置100の受信部101がフレームを受信すると、受信したフレームをフレーム分岐処理部106に送る。フレーム分岐処理部106は、フレームの種類を判定する。たとえば受信したフレームが、データフレーム、ハローフレーム、およびACK(ACKnowledge)フレームのいずれであるかを判定する。
ノード装置100の受信部101がフレームを受信すると、受信したフレームをフレーム分岐処理部106に送る。フレーム分岐処理部106は、フレームの種類を判定する。たとえば受信したフレームが、データフレーム、ハローフレーム、およびACK(ACKnowledge)フレームのいずれであるかを判定する。
ハローフレームが受信された場合、フレーム分岐処理部106は、受信されたハローフレームをリンク管理部108に出力する。リンク管理部108では、ハローフレームの受信に応じて、隣接ノードの存在を認識し、認識結果を隣接ノード管理テーブル103に反映する。隣接ノード管理テーブル103に変更があった場合、リンク管理部108は重み付けテーブル104を更新しても良い。
ノード装置100の受信部101がACKフレームを受信した場合、フレーム分岐処理部106は、受信したACKフレームをACK処理部107に出力する。
バッファ部109は、データフレームの送信の失敗および再送のために、データフレームを格納する。
ACK処理部107は、ACKフレームの受信に伴って、データフレームの送信の完了を認識し、不要になったデータフレームをバッファ部109から削除する。また、ACK処理部107は、データフレームの送信の成否をデータフレーム処理部110に通知する。
ノード装置100の受信部101がデータフレームを受信した場合、フレーム分岐処理部106は、受信されたデータフレームをバッファ部109に格納すると共にデータフレーム処理部110に送る。
フレーム分岐処理部106からデータフレームを受けたデータフレーム処理部110は、たとえば次のような処理を行う。
データフレーム処理部110が行う処理の一つは、受信部101が受信したデータフレームに対するACKフレームを生成し、その送信を送信部102に指令を出すことである。
また、データフレーム処理部110は、受信したデータフレームのGDがノード装置100の自ノードIDと等しいか否かを判定する。そして、受信したデータフレームのGDがノード装置100の自ノードIDと異なる場合には、データフレーム処理部110は、FID管理テーブル105を参照しながら、今回、受信したデータフレームが、ネットワーク10内に形成された、フレームがループする経路(以下では、単にループ経路とも呼ぶ)を中継してノード装置100に戻ってきたものであるか否かを判定する。「フレームがループする」とは、過去にノード装置100がLSとなって送信したフレームがネットワーク10内を中継されるうちにノード装置100に戻って来ることである。
もし、今回受信したデータフレームが上記のようなループ経路をたどってきたものではないと判定された場合には、データフレーム処理部110は、受信したデータフレームを転送するためにLDとして指定する隣接ノード装置を選択し、送信部102に転送するように指令を出す。
また、もし、今回受信したデータフレームが上記のようなループ経路をたどってきたものであると判定された場合には、データフレーム処理部110は、過去にLDとして選択した隣接ノード装置が適切なLDではなかったと認識し、その認識の結果を重み付けテーブル104に反映させる。そして、データフレーム処理部110は、重み付けテーブル104を参照して、LDとして選択可能な隣接ノード装置がまだ存在するか否かを判定する。
データフレーム処理部110は、ACK処理部107からデータフレームの送信の成否の通知を受けると、そのデータフレームのLDとして選択したノード装置がLDとして適切か否かを判定し、その判定結果を重み付けテーブル104に反映させる。
ノード装置100のリンク管理部108、データフレーム処理部110は、ループ検知フラグの値(経路安定指標)に依存する処理を決定、実行する。これらの部をまとめて経路安定指標処理手段とも呼ぶ。
ノード装置100はまた、次のような処理を行う。
ハローフレームワーク生成部112は、重み付けテーブル104と隣接ノード管理テーブル103を利用して、定期的にハローフレームを生成し送信部102に送る。ハローフレームワーク生成部112からハローフレームを受けた送信部102は、隣接するノードに対してハローフレームを送信する。
ハローフレームワーク生成部112は、重み付けテーブル104と隣接ノード管理テーブル103を利用して、定期的にハローフレームを生成し送信部102に送る。ハローフレームワーク生成部112からハローフレームを受けた送信部102は、隣接するノードに対してハローフレームを送信する。
上位層処理部111は、任意のタイミングでデータフレームにペイロードとして含めて送信する対象のデータをデータフレーム処理部110に送る。そのデータを受けたデータフレーム処理部110は、上位層処理部111の要求に応じてデータフレームを作成し、送信部102に送る。データフレーム処理部110からそのようなデータフレームを受けた送信部102は、LDである隣接ノード装置にデータフレームを送信する。このようなデータフレームのGSは、ノード装置100に他ならない。
図3は、上記のような機能を有するノード装置100のハードウェア構成の例を示す図である。
図3では、ノード装置100は、マイクロプロセッシングユニット(MPU)201、物理層(PHY)チップ202、タイマIC(Integrated Circuit)203、Dynamical Random Access Memory(DRAM)204、フラッシュメモリ205、および無線モジュール206を備える。
MPU201とPHYチップ202の間を接続する通信インターフェイスは、MII/MDIO(Media Independent Interface or Management Data Input/Output)207である。MIIおよびMDIOはいずれも、物理層とMAC副層(Media Access Control sublayer)との間の通信を司るインターフェイス規格である。MPU201とタイマICは、I2C/PIO(Inter−Integrated Circuit or Parallel Input/Output)バス208を介して接続されている。DRAM204、フラッシュメモリ205および無線モジュール206は、PCI(Peripheral Component Interconnect)バス209を介してMPU201に接続されている。
MPU201は、フラッシュメモリ205に格納されたファームウェアなどのプログラムをDRAM204にロードし、DRAM204をワーキングメモリとして使用しつつ処理を実行する。プログラムはフラッシュメモリ205ではなく、コンピュータ読み取り可能記憶媒体に記憶され、ノード装置100にインストールされても良いし、インターネットなどネットワークからPHYチップ202または無線モジュール206を介してダウンロードされ、ノード装置100にインストールされても良い。また、DRAM204、フラッシュメモリ205といったメモリのほか、SRAM(Static Random Access Memory),SDRAM(Synchronous Random Access Memory)などの記憶装置を有しても良い。また、プログラムは、図示されていない不揮発性記憶装置、たとえばハードディスクドライブなどに収納されていても良い。MPU201は、プログラムを実行することで、図2のフレーム分岐処理部106、ACK処理部107、リンク管理部108、データフレーム処理部110、上位層処理部111、ハローフレーム生成部112、FID生成部113として動作することが可能である。
DRAM204、フラッシュメモリ205、または図示されていない記憶装置は、隣接ノード管理テーブル103、重み付けテーブル104、FID管理テーブル105、バッファ部109を実現する。
フラッシュメモリ205には、MPU201による処理のためのプログラムのみならず、ノード装置100のノードIDなど、ノード装置100に固有の情報を記憶している。
PHYチップ202は、有線接続における物理層の処理を行うデバイスである。ノード装置100を含むアドホックネットワーク10が無線ネットワークである場合にはPHYチップ202を省略することも可能である。有線ネットワークの場合には、ノード装置100はイーサネット(登録商標)規格に従ったLANポートを備え、LANポートに接続されたケーブルを介して、ゲートウェイ装置などの外部の装置に接続されていても良い。
アドホックネットワーク10が有線ネットワークの場合には、MPU201は、イーサネットフレームを生成し、MII/MDOI207を介してPHYチップ202に出力する。PHYチップ202は、MPU201からのイーサネットフレームに関する情報を、ケーブルの種類に応じた信号に変換し、(図示されていない)LANポートからノード装置100の外部に出力することができる。また、PHYチップ202は、ノード装置100の外部からケーブルおよびLANポートを介してノード装置100に入力される信号を、MII/MDOI207を介してMPU201が認識可能な形に変換し、MPU201に出力することができる。
無線モジュール208は、アドホックネットワーク10が無線ネットワークである場合など、無線接続における物理層の処理を行う。図2の受信部101および送信部102は、無線モジュールによって実現される。無線モジュール208は、アンテナ、ADコンバータやDAコンバータなどの変換器、変調器、復調器、アンプなどを含んでいても良い。
タイマIC203は、設定された時間が経過するまで時間のカウントを行い、設定された時間の経過後、割り込み信号を出力する。たとえば、タイマIC203は、隣接ノード管理テーブル103、重み付けテーブル104、FID管理テーブル105のエージング処理をそれぞれ所定の時間間隔で実行するための割り込み信号を出力しても良い。タイマIC203は、計時手段に相当する。
また、受信部101、フレーム分岐処理部106、リンク管理部108、ハローフレーム生成部112はハローフレームの送受信を通じて、経路に関する情報を取得する経路情報取得手段に含まれる。
上記のような機能を有するノード装置100のハードウェア構成は図3に示されているものには限定されない。他にも様々なバリエーションが存在する。たとえば、図2のフレーム分岐処理部106、ACK処理部107、リンク管理部108、データフレーム処理部110、上位層処理部111、ハローフレーム生成部112、FID生成部113の一部またはすべては専用回路として構成されても良い。
<ループの検出>
次に各ノード装置における経路選択のための処理について説明する。
次に各ノード装置における経路選択のための処理について説明する。
図4は、1つのノード装置における経路選択のための処理について説明する図である。図4に示されているネットワーク30では、ノード装置βは、ノードα、ノードγ、ノードδ、ノードε、ノードζの5つの隣接ノード装置とリンクで接続されている。すなわちノード装置βからは、ノードβとノードαの間のリンクLα、β、ノードβとノードγの間のリンクLβ、γ、ノードβとノードδの間のリンクLβ、δ、ノードβとノードεの間のリンクLβ、ε、ノードβとノードζの間のリンクLβ、ζの5つのリンクが伸びている。
また、ノードδとノードζは、リンクL1、ネットワーク3a、リンクL2を介して直接的または間接的に接続されているものとする。すなわち、ネットワーク3aは、リンクL1とリンクL2の接点であっても良い。
図4では、ノードβはノードαから、GDを図4には示されていないノードηとするデータフレーム301を受信するものとする。ノードβからノードηへは、ノードγ、ノードδ、ノードε、ノードζのいずれを通っても到達可能であるとする。
ノード装置βは、重み付けテーブル104を有している。以下では、ノードηに対する重み付けテーブルをテーブル104−ηとして参照することがある。重み付けテーブル104−ηでは、ノードα、ノードγ、ノードδ、ノードε、ノードζの5つの隣接ノード装置に対して、重みWα、Wγ、Wδ、Wε、Wζがそれぞれ付与されている。
ところで、ノード装置間の通信が無線である場合、通信時における環境やノード装置間の距離が通信品質に影響を及ぼすことがあり、ノード装置間の通信が有線である場合には、たとえばトラフィック量が通信品質に影響を及ぼすことがある。そのような影響を考慮に入れて、ここでは重みの範囲を0以上1以下とする。もちろん、重みはこの範囲に限定されず、この範囲の値以外の値を重みとして取り得る実施形態を想定することができる。また、ここでは、重みの値が小さいほど、その重みに対応するノードの優先度が高いとする。
さらに、ノードβはノードαから、データフレーム301を受信した時点での重みWγ、Wδ、Wε、Wζの大小関係は、Wγ<Wδ<Wε<Wζであったとする。つまり、ノードβにとって、ノードγ、ノードδ、ノードε、ノードζの4つの隣接ノードの中でノードγが最も優先度が高い。よって、ノードβは、データフレーム301の転送するためのLDとして、まずノードγを選択し、ノードγにデータフレーム301を送信する。
もし、ノードγへの送信が失敗すると、ノードβは重みWγの値を増大させ、ノードηをGDとするデータフレームの送信時にノードγをLDとすることが適切ではないことを認識する。
送信失敗には次のようなものが含まれる。
(F1)リンクLβ、γの障害によりノードβからノードγにデータフレーム301が到達しない、
(F2)ノードγの障害によりノードγがデータフレーム301を受け取れない、
(F3)ノードγからノードβにデータフレーム301が戻ってくる、
(F1)リンクLβ、γの障害によりノードβからノードγにデータフレーム301が到達しない、
(F2)ノードγの障害によりノードγがデータフレーム301を受け取れない、
(F3)ノードγからノードβにデータフレーム301が戻ってくる、
(F1)は、ノードβがデータフレーム301をノードγに転送した時点で、リンクLβ、γに障害が発生し、データフレーム301がノードγまで届かない場合である。(F2)は、リンクLβ、γには障害はないが、ノードγの機能に障害が発生していて、ノードγはデータフレーム301を受け取れない場合である。(F1)および(F2)では、ノードγからノードβにデータフレーム301に対するACKフレームが所定の時間内に返信されてこないことによって、ノード装置βは送信失敗を認識する。本実施形態では、(F1)または(F2)が起こったときには、重みWγの値を所定の値だけ大きくする。
(F3)では、ノードβからノードγへのデータフレーム301の送信は、一旦成功する。このことは、ノードγからノードβにデータフレーム301に対するACKフレームが所定の時間内に返信されることによって確認することができる。このとき、ノードβは、LDとして選択したノードγに対応する重みノードγからノードβにデータフレーム301に対する重みWγの値を小さくしても良い。
しかしながら、(F3)の場合、ノードγからGDであるノードηまでデータフレーム301を転送することのできる経路が見付からなければ、ノードγはデータフレーム301をノードβに送り返す。これをバックトラック動作とも呼ぶ。
ノードγがバックトラック動作を行うと、ノードβは、ノードβ自身が過去にノードγに送信したデータフレーム301をノードγから受信する。このことによって、ノードβは、ノードβからノードηをGDとするデータフレーム301の送信において、ノードγをLDとして選択することは適切ではないと認識する。本実施形態では、(F3)が起こったときには、重みWγの値を最大値に設定する。
図4に戻って、ここではノードβが、データフレーム301をノードγに送信した結果、ノードβは送信失敗を認識し、重みWγの値を変更するとする。そして、その結果、重みWγ、Wδ、Wε、Wζの大小関係は、Wδ<Wε<Wζ<Wγと変化したとする。
続いてノードβは、データフレーム301をGDであるノードηに届けるために、ノードγとは異なるノードをLDとして選択し、データフレーム301を再送信することを試みる。この時点で、最も優先度の高いノードは、ノードδである。そこで、ノードβはノードδをLDとしてデータフレーム301を再送信する。
このとき、図4では次のようなことが起こる。ノードβから送られたデータフレーム301は、ノードδに到達する。ノードδは、データフレーム301に対するACKフレームをノードβに送信する。ノードδからACKフレームを受信したノードβは、ノードδへのデータフレーム301の送信の成功を認識し、重みWεの値を小さくする。重みの値の変更によっても、重みWγ、Wδ、Wε、Wζの大小関係は、Wδ<Wε<Wζ<Wγが相変わらず成立する。ノードδに到達したデータフレーム301は、ネットワーク3aを介してノードζに到達するとする。さらに、ノードζは、LDとしてノードβを選択するとする。すると、ノードβは、自身が過去にノードδに送信したデータフレーム301をノードζから受信し、送信失敗を認識する。つまり、ノードβは、ノードβからノードηをGDとするデータフレーム301の送信において、ノードδをLDとして選択することは適切ではないと認識する。この場合は、(F4)<β、δ、ネットワーク3a、ζ、β>というループ経路が形成されていることによって、ノードβにデータフレーム301が戻ってくる、
ことによる送信失敗である。
ことによる送信失敗である。
(F4)が起こることによって、ノードβは、重みWδの値を大きくする。たとえば、重みWεの値を最大値に設定する。重みWγ、Wδ、Wε、Wζの大小関係は、Wε<Wζ<Wγ=Wδとなる。
次にノードβは、新たな重みの大小関係を参照して、ノードηをGDとするデータフレーム301を、ノードεをLDとして送信する。図4の例では、ノードεへのデータフレーム301の送信は成功するものとする。このデータフレーム301のノードεへの送信成功に伴って、ノードβは、ノードεに対する重みWεの値を小さくするが、重みWγ、Wδ、Wε、Wζの大小関係は相変わらずWε<Wζ<Wγ=Wδである。
このような重みの変更は変更手段で行われる。変更手段には、データフレーム処理部110が含まれる。
<ループ検知処理と経路決定方法>
図5は、図1に示されているアドホックネットワークにおいて、ループ検知処理を行いつつ経路が選択される様子を説明する図である。図5では、動的かつ自律分散的に経路が選択される。図5は、ノードXがGSとなり、ノードYをGDとするデータフレームを送信する場合の、ネットワーク10内での経路の選択の様子を示している。図5では、XからYに向けて始めてデータフレームが送信されるものとする。つまり、図1のネットワークの各リンクのループ検知フラグは「1」、つまり、各ノード装置は、ループ検知フラグのフィールドに1が格納されたデータフレームを送受信した場合、ループ検知処理を行う。したがって、図5の説明では、ループ検知フラグに関する処理には言及しない。
図5は、図1に示されているアドホックネットワークにおいて、ループ検知処理を行いつつ経路が選択される様子を説明する図である。図5では、動的かつ自律分散的に経路が選択される。図5は、ノードXがGSとなり、ノードYをGDとするデータフレームを送信する場合の、ネットワーク10内での経路の選択の様子を示している。図5では、XからYに向けて始めてデータフレームが送信されるものとする。つまり、図1のネットワークの各リンクのループ検知フラグは「1」、つまり、各ノード装置は、ループ検知フラグのフィールドに1が格納されたデータフレームを送受信した場合、ループ検知処理を行う。したがって、図5の説明では、ループ検知フラグに関する処理には言及しない。
図5の説明において、ノード装置α(α=X、Y、A、B、C、D、E)における重み付けテーブル104−αで参照する。そして重み付けテーブル104−αにおけるノードβ(β≠α=X、Y、A、B、C、D、E)に対する重みをW(α)βと書く。厳密には、重みはGDごとに定義されるので、今の場合は、そして重み付けテーブル104−αにおけるGDがノードγであるフレームの送信におけるノードβ(β≠α=X、Y、A、B、C、D、E)に対する重みを定義すべきであり、それをWγ(α)βや、Wα、γ、βと書く。しかしながら、図5の説明では、GDがノードYであるデータフレームの中継しか扱わないので、重み付けテーブル104−αにおけるノードβに対する重みをW(α)βと略記する。
ステップS101で、GSであるノードXは、隣接するノードDをLDとして選択し、データフレームをノードDに送信する。
ノードDは、ノードAとノードEの2つの隣接するノードを有するが、重み付けテーブル104−Dにおいて、ノードAとノードEに対する重みは、大小関係W(D)A<W(D)Eであるとする。
ステップS102では、ノードDは、ステップS101で受信したデータフレームを転送する際のLDとしてノードAを選択し、データフレームをノードAに送信する。
ステップS102でノードDからデータフレームを受信したノードAは、次の転送先を選択する。ノードAの重み付けテーブル104−Aでは、W(A)B<W(A)Cが成立しているとする。
ステップS103では、ノードAは、ステップS102で受信したデータフレームを転送する際のLDとしてノードBを選択し、データフレームをノードBに送信する。
ステップS103でノードAからデータフレームを受信したノードBは、次の転送先を選択する。ノードBの重み付けテーブル104−Bでは、W(B)Y<W(B)Cが成立しているとする。
ステップS104では、ノードBは、ステップS103で受信したデータフレームを転送する際のLDとしてノードYを選択し、データフレームをノードYに送信する。しかし、この時点で、ノードBとノードYを結ぶリンクに障害が発生し、ノードYへの送信が失敗するとする。このノードYへの送信失敗は、送信後、所定の時間内にノードBはノードYからACKフレームを受信しないことによって認識される。この状況は、図4で、ノートβからノードγへのデータフレームの送信の際に生じた送信失敗と同様の状況である。ノードYへの送信失敗を認識したノードBは、重み付けテーブル104−Bを更新する。その結果、W(B)C<W(B)Yとなる。
次に、ステップS105でノードBは、更新された重み付けテーブル104−Bにおける重みの大小関係W(B)C<W(B)Yに従って、ノードCにデータフレームを転送する。
ステップS106でノードCは、ステップS105でノードBから受信したデータフレームを、ノードAに転送する。ノードCがードBからのデータフレームを転送する先は、ノードAしかないからである。
ノードCからデータフレームを受信したノードAは、そのデータフレームが過去にノードA自身がノードBに送信したものであることを認識する。つまり、<A、B、C、A>というループ経路が形成されている。この状況は、図4で、ノードβがノードδに送信したデータフレームをノードζから受信する状況と同様である。よって、ノードAは、重み付けテーブル104−Aを、ノードAにおけるノードBに対する重みの値は最大値となるように更新する。
ステップS101からS106までのデータフレームの転送経路は、図6のようである。すなわち、ノードXからノードYにデータを転送するとき、ノードXはノードDに送信し、ノードDはノードAに転送している。ノードAはノードBに転送したがノードCから同一フレームを受け取った(ループ検知した)ので、「ノードYに転送する場合、ノードBに転送するのは適切ではない」と学習する。
次のステップS107でノードAは次のような判断をする。ステップS106でノードCから受信したデータフレームの転送先の選択で、そのデータフレームはもともとステップS102でノードDから受信したものである。そして、過去にステップS103でノードBに向けて送信されたものでもある。すると、ノードAにとってLDとして採用していない隣接ノードはノードCしかない。そして、ステップS107でノードAは、ステップS106でノードCから受信したデータフレームをノードCに向けて送信する。
ノードAからデータフレームを受信したノードCは、そのデータフレームがステップS106でノードC自身がノードAに向けて送信したものであることを認識する。よって、ノードCは、重み付けテーブル104−CをノードCにおけるノードAに対する重みの値は最大値となるように更新する。
そして、ノードCはステップS108で、ステップS107のノードAと同様の判断を行い、ステップS107でノードAから受信したデータフレームをノードBをLDとして選択して転送する。ノードCからノードBへのデータフレームの転送は、バックトラック動作を定義する。このようなノードCのバックトラック動作によって、ノードBは、ノードYをGDとするデータフレームの中継において、ノードCから先は袋小路になっていることを認識する。
次のステップS109においてノードBは、ステップS108のノードCと同様の判断を行い、データフレームをノードAに送り返す。すなわち、ノードCからデータフレームを受信したノードBは、そのデータフレームがステップS105でノードB自身がノードCに向けて送信したものであることを認識する。よって、ノードBは、重み付けテーブル104−BをノードBにおけるノードCに対する重みの値は最大値となるように更新する。また、そのデータフレームは、過去にステップS104でノードYに向けて送信され、失敗に終わったものでもあることを認識する。すると、ノードBにとってLDとして採用していない隣接ノードはノードAしかない。そして、ステップS109でノードBは、ステップS108でノードCから受信したデータフレームをノードAに向けて送信する。
ステップS110においてノードAは、ノードBから受信したデータフレームが、過去においてステップS102でノードDから受信したものであり、ステップS103でノードBに送信したものであり、ステップS106でノードCから受信しステップS107でノードCに送り返したものであることを認識する。そこで、ノードAは、ステップS109でノードBから受信したデータフレームをノードDに転送する。つまり、本ステップの動作もバックトラック動作である。
ノードAからデータフレームを受信したノードDは、重み付けテーブル104−DをノードDにおけるノードAに対する重みの値は最大値となるように更新する。
次のステップS111でノードDは、データフレームを転送するためのLDとしてまだ試していない他の隣接ノードであるノードEを選択し、データフレームをノードEに転送する。
ノードDからデータフレームを受信したノードEにとって、そのデータフレームを転送するためのLDの候補はノードYしかない。
そこで、ステップS112でノードEは、ステップS111でノードDから受けたデータフレームをノードYに向けて送る。
以上のようにして、アドホックネットワーク10においては、ネットワーク10内に障害が発生しても、各ノードが自律分散的に動作することによって、データフレームは所望のGDまで届けられる。
図6は、上記のような動作によって、ネットワーク10にループ経路<A、B、C、A>が検知された様子を示している。
図7は、ネットワーク10にループ経路<A、B、C、A>が検知された結果、経路の変更が行われる様子を示している。
図7の左側の図は、ノードBとノードY間のリンクが不安定で時々切れるような状態である。図7の左側の図では、各リンクに付与されるループ検知フラグの値Lは、全てL=1である。このとき、リンクが切れた場合は、ノードAにてループ検出し、ノードCに転送しても同様にループ検出し、ノードDにバックトラックを行う。ノードDはノードAに転送して戻ってきたため、ここでもループ検知となり、他の経路のノードEに転送を行う。
図7の右側の図は、ループ経路検知処理の結果、経路<X、D、E、Y>が出来た様子を示す図である。ここで、ノードX−D間、ノードD−E間、ノードE−Y間のリンクが強固である場合、この経路で安定する。経路<X、D、E、Y>を安定化経路と呼ぶ。
しかしながら、無線ネットワークに参加するノードが固定的に設置されたり、追加や削除が頻発しない環境の場合、このループ検知処理による経路決定方法は、ノードが経路学習を行い、経路が安定した後はあまり使う必要がなくなってくる。そこで、経路が安定した後、すなわち安定化経路が形成された後は、安定化経路上の各ノードは、そのノードから伸びているリンクに付与されるループ検知フラグの値を「1」から「0」に変更し、以後、ループ検知処理を行わないように設定する。すなわち、ノードX−D間、ノードD−E間、ノードE−Y間のリンクにはループ検知フラグL=0が付与される。
<フレームのフォーマット>
図8は、本実施形態で用いられるフレームのフォーマットの例である。以下で示すフレームのフォーマットの例は単なる一例であり、フレームに含まれるフィールドの順序が異なっていたり、図示されていないフィールドを含んでいても良い。
<フレームのフォーマット>
図8は、本実施形態で用いられるフレームのフォーマットの例である。以下で示すフレームのフォーマットの例は単なる一例であり、フレームに含まれるフィールドの順序が異なっていたり、図示されていないフィールドを含んでいても良い。
本例におけるデータフレーム302は、LD、LS、GD、GS、FID、タイプ、L、長さの各フィールドを持つヘッダおよびペイロードを含む。Lはループ検知フラグフィールドである。
データフレーム302のLDフィールド、LSフィールド、GDフィールド、およびGSフィールドには、データフレーム302のLD、LS、GD、およびGSである各ノード装置のノードIDがそれぞれ指定される。また、データフレーム302のFIDフィールドには、データフレーム302のGSであるノード装置が生成してデータフレーム302に割り当てたFIDが指定される。
データフレーム302のタイプフィールドには、「データフレーム」というタイプを示す所定の定数が指定される。また、データフレーム302の長さフィールドには、ペイロードの長さが指定される。データフレーム302のペイロードは、データフレーム302が定義されるプロトコルよりも上位の層のプロトコルのPDUである。
例えば、MAC副層を仮想的にさらに2つの副層に分割することを想定する。第1実施形態のフレームは、この仮想的な2つの副層のうちの下の方の副層で定義されてもよく、すなわち、MAC副層で定義される他のプロトコル(例えばイーサネットなど)のPDUをペイロードに含んでもよい。換言すれば、第1実施形態のフレームは、第2層で定義されるイーサネットフレームをカプセル化するフレームであってもよい。この場合、上位層処理部111はイーサネットフレームを処理する処理部であるから、公知のMACチップを用いて実現することもできる。
ループ検知フラグは、データフレームが安定化経路を転送されようとする場合には、ループ検知のための処理を省略して、データの転送スループットとメモリやCPUのリソースを改善するために導入される。
ループ検知フラグは、具体的には「0」または「1」の値である。もちろん、ループ検知フラグは、データフレームが安定化経路を転送されようとしているか否かを判定する情報を与えることができれば、「0」または「1」以外の値であっても構わない。ループ検知フラグの値は、経路安定指標とも呼ばれる。また、ループ検知フラグの値(経路安定指標)に依存する処理を決定、実行するのは、ノード装置100のリンク管理部108、データフレーム処理部110であるが、これらを経路安定指標処理手段とも呼ぶ。
また、受信部101、フレーム分岐処理部106、リンク管理部108、ハローフレーム生成部112はハローフレームの送受信を通じて、経路に関する情報を取得する経路情報取得手段に含まれる。
ループ検知フラグのデフォルト値は「1」である。つまり、ノード装置は初期状態において、ループ検知のための処理を実行する。
しかしながら、図7のように、一旦、安定化経路が形成されると、安定化経路を構成するリンクに対するループ検知フラグは「0」に設定される。
「ループ検知フラグ」が0であるか1であるかで、ノードの挙動が以下のように変わる。
各ノード装置は、ループ検知フラグのフィールドに1が格納されたデータフレームを受信した場合、後述の比較例における動作と同様の動作を行う。
各ノード装置は、ループ検知フラグのフィールドに1が格納されたデータフレームを送信(転送)する場合、後述の比較例における動作と同様の動作を行う。
各ノード装置は、ループ検知フラグのフィールドに0が格納されたデータフレームを受信した場合、ループ検知のための確認動作を行わない。
各ノード装置は、ループ検知フラグのフィールドに0が格納されたデータフレームを送信(転送)する場合、FID管理テーブルの登録動作を行なわない。
つまり、ループ検知フラグが「1」の場合は比較例の処理と送信処理、受信処理は同じで、ループ検知フラグが「0」の場合は、受信処理はループ検知の判定を実施せず、送信処理はFID管理テーブルの登録処理を行わない。
また、各ノード装置は、次のような場合にループ検知フラグの値を変更する。
ループ検知フラグの値を「0」から「1」に変更するのは次の場合である。
(A1)一定時間使用実績が無い経路への送信時
(A2)経路を変更した最初の送信時
(A3)ホップ数が変化した経路への送信時
(A4)経路の評価値(スコア)が変化した経路への送信時
(A5)前回ループした経路への送信時
ループ検知フラグの値を「0」から「1」に変更するのは次の場合である。
(A1)一定時間使用実績が無い経路への送信時
(A2)経路を変更した最初の送信時
(A3)ホップ数が変化した経路への送信時
(A4)経路の評価値(スコア)が変化した経路への送信時
(A5)前回ループした経路への送信時
(A1)では、FID管理テーブル105を参照することによって、経路に直前の一定時間に使用実績があるかないかを判断することができる。
(A3)および(A4)のホップ数の変化および経路の評価値は、たとえば、隣接ノード管理テーブル103に一旦格納されるハローフレームのハローヘッダに含まれる情報から取得しても良い。
図9は、ハローヘッダのフォーマットの例を示す図である。
ハローヘッダ701は、以下で述べるように、GD、ホップ数h、経路品質重みd、復路品質重み、およびノードタイプを含んでいる。経路品質重みdを(A4)の経路の評価値として用いることができる。また、以下で述べるように、ハローフレームに含まれる情報から、(A3)および(A4)のホップ数の変化および経路の評価値を得ることができる。
ハローヘッダ701は、以下で述べるように、GD、ホップ数h、経路品質重みd、復路品質重み、およびノードタイプを含んでいる。経路品質重みdを(A4)の経路の評価値として用いることができる。また、以下で述べるように、ハローフレームに含まれる情報から、(A3)および(A4)のホップ数の変化および経路の評価値を得ることができる。
(A5)の「前回ループした経路」とは、たとえば、図6において、前回、ノードAからノードBに向けてデータフレームを送信した結果、<A、B、C、A>のようなループ経路が形成された場合、再び、ノードAからノードBに向けてデータフレームを送信する際には、もし、ループ検知フラグの値が「0」ならば、「0」から「1」に変更する。
また、ループ検知フラグの値を「1」から「0」に変更するのは次の場合である。
(B1)安定化経路中のリンクを介して送信されるとき
(B2)GDへの送信時
(B1)安定化経路中のリンクを介して送信されるとき
(B2)GDへの送信時
(B1)では、以下で詳述するが、たとえば、そのノード装置から伸びるリンクに付与されている重みの順序が前回から変化しなくなったようなノード装置からデータフレームが送信されるときに、ループ検知フラグの値を「1」から「0」に変更しても良い。
(B2)では、LDとしてGDが選択されると、ループ検知フラグの値を「1」から「0」に変更する。
データフレーム303、304はそれぞれ、ステップS102およびS103におけるデータフレームである。
データフレーム303は、図5のステップS102でノード装置Dがノード装置Aに送信するデータフレームである。
データフレーム303では、LDフィールドには、ステップS102の送信においてLDとして選択されたノード装置AのノードID(すなわちA)が指定されている。
LSフィールドには、ステップS102の送信におけるLSであるノード装置DのノードID(すなわちD)が指定されている。
GDフィールドには、GSであるノード装置XがステップS101の送信のときに指定したノード装置YのノードID(すなわちY)が指定されている。
GSフィールドには、GSであるノード装置XのノードID(すなわちX)が指定されている。
FIDフィールドには、GSであるノード装置が生成したFID(以下FXとする)が指定されている。
タイプフィールドには、「データフレーム」というタイプを示す所定の定数が指定されている。例えば、タイプは2ビットによって表すこともでき、(00)2でもよい。
ループ検知フラグフィールド(L)には、ループ検知フラグの値が格納される。
長さフィールドには、データフレーム302のペイロードの長さPaが指定される。なお、長さは例えばバイト単位で表されてもよいし、その他の単位で表されてもよい。
長さフィールドには、データフレーム302のペイロードの長さPaが指定される。なお、長さは例えばバイト単位で表されてもよいし、その他の単位で表されてもよい。
データフレーム303には、ペイロードとして、MAC層プロトコルのフレーム(例えばイーサネットフレーム)が含まれる。
データフレーム304は、図5のステップS103でノード装置Aがノード装置Bに送信するデータフレームである。
LDフィールドには、ステップS103の送信においてLDとして選択されたノード装置BのノードID(すなわちB)が指定されている。つまり、転送にあたって、ノード装置AはLDフィールドを書き換える。
LSフィールドには、ステップS103の送信におけるLSであるノード装置AのノードID(すなわちA)が指定されている。つまり、転送にあたって、ノード装置AはLSフィールドを書き換え、自ノードIDを設定する。
GD、GS、FID、タイプ、長さの各フィールドと、ペイロードの内容は、ノード装置Aが受信したデータフレーム303と同じである。
ハローフレーム311は、図9に示されているように、LD、LS、GD、GS、FID、タイプ、ペイロードの各フィールドを含むヘッダを有する。ハローフレーム311の具体例はハローフレーム312である。ハローフレームは前述のように、制御情報を通信するための制御フレームの一種で、ノード装置100が自分自身の存在を他のノード装置に通知するためのフレームである。ハローフレームを受信したノード装置は、ハローフレームの送信元のノード装置の存在に関する情報を自身の隣接ノード管理テーブル103に記憶したり、隣接ノード管理テーブル103を更新したり、さらに重み付けテーブル104を更新したりする。
ハローフレーム311のLDフィールドには、ハローフレーム311を送信するノード装置に隣接するすべてのノード装置へのブロードキャストを表す特殊な値が指定される。なおここでの「ブロードキャスト」は隣接するすべてのノード装置へのブロードキャストである。以下、説明の便宜上、本例においてはノードIDが3バイトで表されるものとし、「0x」は16進数を表すものとする。また、0x000000と0xFFFFFFは予約されており、通常のノードIDとしては使われないものとする。本例におけるすべてのハローフレームでは、ハローフレーム312と同様、LDフィールドに、当該ハローフレームを送信するノード装置に隣接するすべてのノード装置へのブロードキャストを表す特殊な値として、0xFFFFFFが指定されている。
ハローフレーム311のLSフィールドには、ハローフレーム311を送信するノード装置自身のノードIDが指定される。よって、ノード装置Aが送信するハローフレーム312のLSフィールドには、ノード装置AのノードIDであるAが指定される。
ハローフレーム311のタイプフィールドには、「ハローフレーム」というタイプを示す所定の定数が指定される。具体的には、「ハローフレーム」というタイプは、ハローフレーム312に例示するように所定の定数Hにより表され、例えばH=(10)2でもよい。
ペイロードには、ハローヘッダが含まれている。
ハローヘッダは、GD、ホップ数h、経路品質重みd、復路品質重み、およびノードタイプを含んでいる。
ハローヘッダは、GD、ホップ数h、経路品質重みd、復路品質重み、およびノードタイプを含んでいる。
GDは例えば、図18のハローヘッダを含むハローフレームの最初の送信元(GS)であるノード装置が持つ、重み付けテーブルに対応するグローバル宛先アドレス(GD)の情報である。
ホップ数hは例えば、このハローフレームの送信元からGDとして設定されたノード装置までのホップ数の情報である。
経路品質重みdは、GDまでの経路上での遅延から求めた値である。この経路品質重みdを(A4)の経路の評価値として用いることができる。
復路品質重みは、相手のノード装置(ここでは、ハローフレームを送信したノード装置)から自ノード装置へ至る方向の通信品質に基づいて求めた値が格納される。
ノードタイプには、ゲートウェイ、中継器、及び端末等の種類が定義される。
よって、ハローフレームの、たとえばハローヘッダに含まれる情報から、(A3)および(A4)のホップ数の変化および経路の評価値を得ることができる。
よって、ハローフレームの、たとえばハローヘッダに含まれる情報から、(A3)および(A4)のホップ数の変化および経路の評価値を得ることができる。
また、本例におけるACKフレームは、図10のACKフレーム321のように、LD、LS、GD、GS、FID、タイプの各フィールドを含むヘッダを有する。ACKフレーム321の具体例はACKフレーム322である。また、ACKフレーム322は、図5のステップS102でノード装置Dがノード装置Aにデータフレーム303を送信したとき、ノード装置Aがノード装置Dに返信するACKフレームである。
ACKフレーム321のLDフィールドには、ACKフレーム321の送信の契機となったデータフレームを送信した隣接ノード装置のノードIDが指定される。よって、例えばACKフレーム322のLDフィールドには、ACKフレーム322をノード装置Aが送信する契機となったデータフレーム303を送信した、ノード装置Aの隣接ノード装置DのノードIDであるDが指定される。
ACKフレーム321のLSフィールドには、ACKフレーム321を送信するノード装置自身のノードIDが指定される。よって、ノード装置Aが送信するACKフレーム322のLSフィールドには、ノード装置AのノードIDであるAが指定される。
また、ハローフレームと同様にACKフレームも転送されないので、本例におけるすべてのACKフレームでは、GDフィールドに、ヌルを表す特殊な値0x000000が指定される。
ACKフレーム321のGSフィールドとFIDフィールドには、ACKフレーム321の送信の契機となったデータフレームのGSフィールドとFIDフィールドの値がコピーされる。上記のように、GSフィールドとFIDフィールドの値の組み合わせにより、データフレームがネットワーク内で一意に識別される。よって、ACKフレーム321を送信するノード装置が、受信したデータフレームから値をコピーすることで、ACKフレーム321がどのデータフレームに対するものなのかを、ACKフレーム321を受信したノード装置において識別することが可能となる。
よって、例えばデータフレーム303の受信を契機として送信されるACKフレーム322では、GSフィールドとFIDフィールドの値は、データフレーム303と同じく、それぞれXとFXである。
ACKフレーム321のタイプフィールドには、「ACKフレーム」というタイプを示す所定の定数が指定される。具体的には、「ACKフレーム」というタイプは、ACKフレーム322に例示するように所定の定数Aにより表され、例えばA=(11)2でもよい。
<テーブルのフォーマット>
図11は、図2の重み付けテーブルの例を示す図である。図11は、具体例として、図2のノード装置Aの重み付けテーブル104A−i(1≦i≦M)を示している。前述のように、「重み付けテーブル104」とは、GDごとに管理される複数の重み付けテーブルの総称である。各重み付けテーブル104A−i(1≦i≦M)は、対応するGDを記憶している。
図11は、図2の重み付けテーブルの例を示す図である。図11は、具体例として、図2のノード装置Aの重み付けテーブル104A−i(1≦i≦M)を示している。前述のように、「重み付けテーブル104」とは、GDごとに管理される複数の重み付けテーブルの総称である。各重み付けテーブル104A−i(1≦i≦M)は、対応するGDを記憶している。
そして、各重み付けテーブル104−iは1つ以上のエントリを有し、各エントリは、最終更新時刻フィールドとLDフィールドと重みフィールドを有する。最終更新時刻フィールドには重みの学習のためにエントリが最後に更新された時刻が格納され、LDフィールドには隣接ノード装置のノードIDが格納され、重みフィールドには当該隣接ノード装置に対応付けられた重みの値が格納される。
図1のネットワーク10では、ノード装置Aにはノード装置D、B、およびCが隣接している。したがって、重み付けテーブル104A−Yは、これら3つの隣接ノード装置D、B、およびCにそれぞれ対応する3つのエントリを有する。重み付けテーブルのエントリの内容は、次のとおりである。
最終更新時刻フィールドには、エントリの最終更新時刻TWA,Y,Dが格納されている。
LDフィールドには、隣接ノード装置のノードIDが格納されている。たとえば、LDがノードDである場合には、LDフィールドには「D」が格納される。
重みフィールドには、隣接ノード装置に対応付けられる重みが格納されている。たとえば、GDがノードYであるデータフレームの送信におけるノード装置Dに対する重みは、WA,Y,Dである。
GDがノードBであるデータフレームの送信における各LDに対する重みが格納されている重み付けテーブル104A−Bのエントリの内容も同様である。
なお、重み付けテーブル104は、同一のGDであれば、たとえFIDとGSの組み合わせが異なるデータフレームを送信したとしても、送信の度に、送信先となったLDの重みが更新される。例えば、あるデータフレームの送信時に、リンク障害のため特定のLDの重みが大きくなっても(優先度が低くなっても)、すぐに別データフレーム(GDとLDは同一)の送信で、リンク障害が解消されていて送信成功となれば、該LDの重みは小さくなる(優先度は高くなる)。逆に、複数の異なるデータフレーム(GDとLDは同一)が立て続けに、リンク障害のため送信失敗となれば、たとえ同一のFIDとGSの組み合わせのデータフレームは1度しか送信を試していなくても、該当のLDの重みが最大値になってしまうことがある。
図12は、ノード装置Aのバッファ部109−A内のあるエントリを例示している。
バッファ部109は、受信部101が受信した個々のデータフレームにそれぞれ対応する複数のエントリを含む。そして、各エントリは、タイムアウト時刻と受信したデータフレームを含む。
バッファ部109は、受信部101が受信した個々のデータフレームにそれぞれ対応する複数のエントリを含む。そして、各エントリは、タイムアウト時刻と受信したデータフレームを含む。
具体的には、図5のステップS102において、ノード装置Dからノード装置Aがデータフレーム303を受信すると、バッファ部109−Aには、タイムアウト時刻TI3,jとデータフレーム303とを含むエントリが作成される。図12のタイムアウト時刻TI3,jは、ノード装置Aが、データフレーム304を送信した後、データフレーム304に対するACKフレームの受信をいつまで待つのかを示す時刻である。つまり、ノード装置Aは、タイムアウト時刻TI3,jまでにデータフレーム304に対するACKフレームをノード装置Bから受信することができなければ、タイムアウトして、ノード装置Bへのデータフレーム304の送信に失敗したと判断する。
図13は、図2の隣接ノード管理テーブル103の例を示す図である。隣接ノード管理テーブル103には、ノードIDフィールドと最終更新時刻フィールドがある。
例えば、図1のネットワーク10では、ノード装置Dにはノード装置X、A、およびEが隣接している。したがって、ノード装置Dの隣接ノード管理テーブル103−Dは、これら3つの隣接ノード装置X、A、およびEにそれぞれ対応する3つのエントリがある。そして、隣接ノード装置Ni(i=X、A、E)に対応する各エントリにおいて、ノードIDフィールドには隣接ノード装置のノードIDが格納されており、最終更新時刻フィールドには、当該エントリが最後に更新された時刻が格納されている。
図14A及び14Bは、FID管理テーブル105の例を示す図である。図14A及び14Bに示すように、FID管理テーブル105には、FID、GS、LD、OLS、最終更新時刻の各フィールドがある。
FID管理テーブル105におけるFIDフィールドとGSフィールドは、データフレームを一意に識別するためのフィールドであり、受信したデータフレームのFIDフィールドとGSフィールドから値がそれぞれコピーされる。
FID管理テーブル105のLDフィールドには、FIDフィールドとGSフィールドの値により識別されるデータフレームを送信するために、最後にLDとして選択した隣接ノード装置のノードIDが格納される。
また、FID管理テーブル105のOLSフィールドには、FIDフィールドとGSフィールドの値により識別されるデータフレームを最初に受信したときに当該データフレームのLSフィールドに指定されていた隣接ノード装置のノードIDが格納される。OLSフィールドは、データフレームの転送のためにLDを選択するにあたって、LDの候補の中からOLSを除くためにも利用され、バックトラック動作のときのLDを決定するためにも利用される。
そして、FID管理テーブル105の最終更新時刻フィールドには、エントリが最後に更新された時刻が格納される。
図14のFID管理テーブル105は、図3のDRAM204やフラッシュメモリ205により実現される。このFID管理テーブル105は、以下の(a1)〜(a3)の各情報を対応付けて記憶する記憶手段の一例である。
(a1)フレームを識別するフレーム識別情報
(a2)複数の隣接ノード装置のうちで、フレームの送信先であるノード装置を識別する送信先ノード識別情報
(a3)送信対象フレームを最初に送信してきたノード装置を識別する起源ノード識別情報
(a2)複数の隣接ノード装置のうちで、フレームの送信先であるノード装置を識別する送信先ノード識別情報
(a3)送信対象フレームを最初に送信してきたノード装置を識別する起源ノード識別情報
なお、上記(a1)のフレームの例は、データフレームである。そして、フレーム識別情報の例は、GSフィールドの値とFIDフィールドの値の組み合わせである。
また、上記(a2)のノード識別情報の具体例は、FID管理テーブル105のLDフィールドに格納される隣接ノード装置のノードIDであってもよい。
(a3)の起源ノード識別情報の具体例は、FID管理テーブル105のOLSフィールドに格納されるノードIDである。
ノード装置100がデータフレームを中継する場合には、ノード装置100が最初に当該データフレームを受信したときの当該データフレームのLSフィールドの値が、FID管理テーブル105のOLSフィールドに格納される。つまり、フレームを最初に送信してきたノード装置のノードIDが、OLSフィールドに格納される。
また、ノード装置100自身がGSとなる場合はFID管理テーブル105のOLSフィールドには自ノードIDが格納される。つまり、ノード装置100自身が送信対象フレームを生成した場合、OLSフィールドには、ノード装置100自身の識別情報である自ノードIDが格納される。換言すれば、OLSフィールドに格納されるノードIDは、ノード装置100自身を中心としたホップ数1以下の範囲において、ノード装置100が送信対象フレームの起源として認識するノード装置のノードIDである。
図2の重み付けテーブル104は、図3のDRAM204やフラッシュメモリ205により実現される。この重み付けテーブル104は、データフレームの最終宛先であるGDに対応付けて、複数の隣接ノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する記憶手段の一例である。
送信可能性情報は、上記比較例では、具体的にはLDフィールドのノードIDと重みの値との組をそれぞれ含む、1つまたは複数のエントリで表されている。そして、送信可能性は、例えば「重みの値が1ならば送信不能であり、重みの値が1未満ならば送信可能である」というように表される。
図2のデータフレーム処理部110は、例えば図3のMPU201とDRAM204により実現され、送信可能性情報を更新する更新手段の一例である。受信部101などの受信手段が受信した受信フレームを識別するフレーム識別情報が、FID管理テーブル105などの記憶手段に(a1)のフレーム識別情報として記憶されている場合、更新手段としてのデータフレーム処理部110は、送信可能性情報を更新する。
この場合に更新される送信可能性情報は、受信フレームに指定された最終宛先(つまりGD)である受信フレーム宛先に対応付けられて、重み付けテーブル104などの記憶手段に記憶されている送信可能性情報である。送信可能性情報は、FID管理テーブル105などの記憶手段に、受信フレーム識別情報と対応付けられて記憶されている、(a2)の送信先隣接ノード識別情報により識別される第1の隣接ノード装置への送信可能性が「送信不能」を示すように、更新される。例えば、「FID管理テーブル105のLDフィールドと同じ値をLDフィールドに持つ、重み付けテーブル104のエントリにおいて、重みを1に設定する」という動作が、更新手段としてのデータフレーム処理部110により行われる。
また、データフレーム処理部110と送信部102は、協働して、複数の隣接ノード装置の中から、送信可能な第2のノード装置を選択し、第2のノード装置へ受信フレームを送信する送信手段として機能する。送信手段の一部としてのデータフレーム処理部110は、受信フレーム宛先に対応付けられて重み付けテーブル104などの記憶手段に記憶されている送信可能性情報に基づいて、第2のノード装置を選択する。ここで、FID管理テーブル105などの記憶手段において、受信フレーム識別情報に対応付けられた(a3)の起源ノード識別情報として第3のノード装置が記憶されているとする。
送信フレーム識別情報が、FID管理テーブル105などの記憶手段に(a1)のフレーム識別情報として記憶されている場合、送信手段としてのデータフレーム処理部110は、第3の隣接ノード装置を送信可能性情報によらず送信不能とみなす。つまり、データフレーム処理部110は、「OLSである隣接ノード装置は、重みの値によらず、送信不能である」と見なして、OLSである隣接ノード装置をLDの候補から除外する。そして、送信手段としてのデータフレーム処理部110は、第3の隣接ノード装置とは異なる、送信可能な第2の隣接ノード装置を選択する。
また、データフレーム処理部110と送信部102は、協働してバックトラック手段としても機能する。バックトラック手段としてのデータフレーム処理部110と送信部102は、重み付けテーブル104などの記憶手段の送信可能性情報において、複数の隣接ノード装置の中に送信可能なものがなく、かつ受信フレーム識別情報がFID管理テーブル105などの記憶手段に(a1)のフレーム識別情報として記憶されている場合に、第3のノード装置へ受信フレームを送信する。
なお、ここで「複数の隣接するノード装置の中に送信可能なものがない」とは、「重みが1であるなど、送信可能性情報により送信不能と示されている隣接ノード装置か、上記のように送信可能性情報によらず送信不能と見なされている第3の隣接ノード装置しかない」という意味である。
図14Aと図14Bは、図5のステップS101〜S112での各ノード装置のFID管理テーブル105を具体例として示している。以下、ステップS101〜S112がそれぞれ実行される時刻をTF101〜TF112と表す。
ステップS101でノード装置Xがノード装置Dにデータフレームを送信するとき、ノード装置XはFID管理テーブル105−Xに新たなエントリE1を作成する。
そして、ノード装置Xは、エントリE1のFIDフィールドとGSフィールドに、送信したデータフレームのFIDとGSの値を設定する。
ここで、データフレームのGSとFIDの値は、前述のとおり、データフレームがネットワーク1内を転送されても書き換えられない。したがって、図5でネットワーク1内をステップS101〜S112で送信されるデータフレームのFIDとGSの値は、図8のデータフレーム303および304と同じく、それぞれFaとXである。よって、ステップS101でノード装置Xは、エントリE1のFIDフィールドとGSフィールドに、それぞれFaとXという値を設定する。なお、以下の各ステップS102〜S112で他のノード装置がそれぞれのFID管理テーブル105のエントリのFIDフィールドとGSフィールドに設定する値も、同じくFaとXである。よって、以下ではFIDフィールドとGSフィールドに関する説明を省略する。
また、ステップS101でノード装置Xは、LDとして選択したノード装置DのノードIDであるDを、エントリE1のLDフィールドに設定する。GSとFIDの値の組により一意に識別される、ある特定のデータフレームに関して、OLSとは、当該特定のデータフレームを最初に受信したときの当該特定のデータフレームのLSに指定されたノードIDで識別される隣接ノード装置のことである。
しかしこのようにOLSを定義すると、例えばノード装置XがGSとなってデータフレームを送信する場合に、ノード装置X自身にとっては、送信したデータフレームに関してOLSが未定義となってしまう。そこで、以下ではOLSの定義を拡張する。具体的には、「ノード装置Ni自身がGSとなってデータフレームを送信する場合には、当該データフレームに関するノード装置Ni自身にとってのOLSとは、ノード装置Ni自身である」と定義する。換言すれば、OLSとは、ノード装置Ni自身が直接認識しているネットワークの範囲内において、ノード装置Niにとってデータフレームの起源として認識されるノード装置である。なおここで、「ノード装置Ni自身が直接認識しているネットワークの範囲」とは、ノード装置Niから見てホップ数1以下の範囲であり、具体的にはノード装置Ni自身と、ノード装置Niの隣接ノード装置のみが含まれる。
以上の拡張されたOLSの定義より、ステップS101でノード装置XがエントリE1のOLSフィールドに設定する値は、ノード装置X自身のノードID(すなわちX)である。ノード装置Xは、もし今後GSの値がXでFIDの値がFaのデータフレームを受信することがあれば、以上のようにして作成したエントリE1に基づいて、「かつてノード装置X自身が送信したデータフレームを受信した」と認識することができる。
また、ステップS101でノード装置Xは、現在時刻TF101をエントリE1の最終更新時刻フィールドに設定する。なお、以下の各ステップS102〜S112で他のノード装置がそれぞれのFID管理テーブル105のエントリの最終更新時刻フィールドに設定する値は、同様に、各ステップS102〜S112が実行される時刻TF102〜TF112である。よって、以下では最終更新時刻フィールドに関する説明も省略する。
そして、ステップS101でノード装置Xからデータフレームを受信したノード装置Dは、ステップS102でノード装置Aにデータフレームを送信するときにFID管理テーブル105−Dに新たなエントリE2を作成する。そして、ノード装置DはエントリE2において、OLSフィールドにはXと設定し、LDフィールドにはAと設定する。
続いて、ステップS102でノード装置Dからデータフレームを受信したノード装置Aは、ステップS103でノード装置Bにデータフレームを送信するときにFID管理テーブル105−Aに新たなエントリE3を作成する。そして、ノード装置AはエントリE3において、OLSフィールドにはDと設定し、LDフィールドにはBと設定する。
続いて、ステップS103でノード装置Aからデータフレームを受信したノード装置Bは、ステップS104でノード装置Yにデータフレームを送信するときにFID管理テーブル105−Bに新たなエントリE4を作成する。そして、ノード装置BはエントリE4において、OLSフィールドにはAと設定し、LDフィールドにはYと設定する。
ところが、ステップS104での送信は、ノード装置BとYの間のリンクの障害のために失敗する。すなわち、ノード装置Bは、ノード装置YからACKフレームを受信することができないため、タイムアウトする。その結果、ノード装置Bは、ステップS105のように、他の隣接ノード装置Cを次のLDとして再選択し、ノード装置Cにデータフレームを送信する。
ここで、ステップS104とS105でそれぞれ送信されるデータフレームは、FIDの値がFaでありGSの値がXであるから、同一のデータフレームである。したがって、ステップS105でノード装置Bは、新たなエントリを作成するのではなく、既存のエントリE4を更新する。具体的には、ステップS105でノード装置Bは、エントリE4において、LDフィールドの値をCに上書きする。なお、GSの値がXでFIDの値がFaである同じデータフレームをノード装置Bが何度送信しようとも、「ノード装置Bが当該データフレームを最初に受信したのはノード装置Aからである」という事実は変わらない。よって、エントリE4のOLSフィールドの値は、書き換えられることはなく、Aのままである。
続いて、ステップS105でノード装置Bからデータフレームを受信したノード装置Cは、ステップS106でノード装置Aにデータフレームを送信するときにFID管理テーブル105−Cに新たなエントリE5を作成する。そして、ノード装置CはエントリE5において、OLSフィールドにはBと設定し、LDフィールドにはAと設定する。
そして、ステップS106でノード装置Cからデータフレームを受信したノード装置Aは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105−Aを検索し、エントリE3を見つける。エントリE3が見つかったことから、ノード装置Aは、「ノード装置A自身がかつてステップS103で送信したのと同一のデータフレームをステップS106で受信した」と認識することができる。
したがって、ノード装置Aは、次のステップS107でデータフレームをノード装置Cに送信するに際して、FID管理テーブル105−Aに新たなエントリを作成するのではなく、既存のエントリE3を更新する。具体的には、ステップS107でノード装置Aは、エントリE3において、LDフィールドの値をCに上書きする。なお、エントリE3のOLSフィールドの値は書き換えられることはなく、Dのままである。
すると、ステップS107でノード装置Aからデータフレームを受信したノード装置Cは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105−Cを検索し、エントリE5を見つける。エントリE5が見つかったことから、ノード装置Cは、「ノード装置C自身がかつてステップS106で送信したのと同一のデータフレームをステップS107で受信した」と認識することができる。
したがって、ノード装置Cは、次のステップS108でデータフレームをノード装置Bに送信するに際して、FID管理テーブル105−Cに新たなエントリを作成するのではなく、既存のエントリE5を更新する。具体的には、ステップS108でノード装置N5は、エントリE5において、LDフィールドの値をBに上書きする。なお、エントリE5のOLSフィールドの値は書き換えられることはなく、Bのままである。
すると、ステップS108でノード装置Cからデータフレームを受信したノード装置Bは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105−Bを検索し、エントリE4を見つける。エントリE4が見つかったことから、ノード装置Bは、「ノード装置B自身がかつてステップS105で送信したのと同一のデータフレームをステップS108で受信した」と認識することができる。
したがって、ノード装置Bは、次のステップS109でデータフレームをノード装置Aに送信するに際して、FID管理テーブル105−Bに新たなエントリを作成するのではなく、既存のエントリE4を更新する。具体的には、ステップS109でノード装置Bは、エントリE4において、LDフィールドの値をAに上書きする。なお、エントリE4のOLSフィールドの値は書き換えられることはなく、Aのままである。
すると、ステップS109でノード装置Bからデータフレームを受信したノード装置Aは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105−Aを検索し、エントリE3を見つける。エントリE3が見つかったことから、ノード装置Aは、「ノード装置A自身がかつてステップS103で送信したのと同一のデータフレームをステップS109で受信した」と認識することができる。
したがって、ノード装置Aは、次のステップS110でデータフレームをノード装置Dに送信するに際して、FID管理テーブル105−Aに新たなエントリを作成するのではなく、既存のエントリE3を更新する。具体的には、ステップS110でノード装置Aは、エントリE3において、LDフィールドの値をDに上書きする。なお、エントリE3のOLSフィールドの値は書き換えられることはなく、Dのままである。
すると、ステップS110でノード装置Aからデータフレームを受信したノード装置Dは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105−Dを検索し、エントリE2を見つける。エントリE2が見つかったことから、ノード装置N2は、「ノード装置D自身がかつてステップS102で送信したのと同一のデータフレームをステップS110で受信した」と認識することができる。
したがって、ノード装置Dは、次のステップS111でデータフレームをノード装置Eに送信するに際して、FID管理テーブル105−Dに新たなエントリを作成するのではなく、既存のエントリE2を更新する。具体的には、ステップS111でノード装置Dは、エントリE2において、LDフィールドの値をEに上書きする。なお、エントリE2のOLSフィールドの値は書き換えられることはなく、Xのままである。
そして、ステップS111でノード装置Dからデータフレームを受信したノード装置Eは、ステップS112でノード装置Yにデータフレームを送信するときにFID管理テーブル105−Eに新たなエントリE6を作成する。そして、ノード装置EはエントリE6において、OLSフィールドにはDと設定し、LDフィールドにはYと設定する。
<データフレームの送受信処理>
図15〜20を参照しながら、アドホックネットワーク10のノード装置100におけるデータフレームの送信動作を詳細に説明する。ここでは、図17に示すようなアドホックネットワーク40を想定する。そして、ノードSからノードGに向けてデータフレームを始めて送信する場合を考える。
<データフレームの送受信処理>
図15〜20を参照しながら、アドホックネットワーク10のノード装置100におけるデータフレームの送信動作を詳細に説明する。ここでは、図17に示すようなアドホックネットワーク40を想定する。そして、ノードSからノードGに向けてデータフレームを始めて送信する場合を考える。
図15は、グローバルソース(GS)であるノード装置Sにおけるデータフレームの送信処理の概略を示す図である。
ステップS301では、データフレーム処理部110はデータフレーム401を作成する。より詳細には、データフレームのタイプフィールドにDATAを、長さフィールドに長さを、ペイロードフィールドにデータを設定する。また、GSおよびLSに自ノードのIDである「S」を設定する。図15では、GSおよびLSにはノードSのIDである「S」が設定される。また、GDには、宛先ノードのIDである「G」を設定する。
次のステップS302では、LDを選択するために、重み付けテーブル104を検索し、GDがノードGである重み付けテーブルを検索し、重みの値が最も小さい隣接ノードをLDとして選択する。図17の場合は、ノードSに隣接するのはノードAだけなので、データフレーム401のLDとしてAが選択される。
そして、ステップS303で、データフレーム401中のLDフィールドにノードAのIDである「A」が設定される。
次に、ステップS304で、FID生成部113から、送信したいデータフレームのFID(Frame IDentification)であるFID0を取得する。
ステップS305では、ステップS304で取得したFIDを、データフレーム401のFIDフィールドに設定する。
ステップS306では、FID管理テーブル105にデータフレーム401の情報を登録する。
ステップS307では、ループ検知フラグフィールドLにループ検知フラグの値を格納する。ここでは、デフォルト値L=1が格納されるとする。
最後にノードSは、このようにして生成されたデータフレーム401をLDであるノードAに向けて送信する。
図16は、図17のネットワーク40のノードBにおけるデータフレームの受信後の処理を模式的に表す図である。
図18は、本実施形態における、ノード装置のデータフレームの転送処理を示している。
本実施形態では、図16に示されているように、ノード装置100は、ハローフレーム701を送受信する。
具体的には、ノード装置100のハローフレーム生成部112は、ステップS801でハローフレーム701を生成する。そして、ステップS802で、送信部102からハローフレーム701を送信する。
また、ノード装置100は他のノード装置からのハローフレーム701を受信する。より詳細には、ステップS803でノード装置100の受信部101は、他のノード装置からのハローフレーム701を受ける。受けたハローフレーム701は、フレーム分岐処理部106を介してリンク管理部108に送られる。ハローフレーム701の受信によって、ノード装置100は、ある経路におけるホップ数の変化や、経路の評価値(スコア)が変化など、あるノードまでの経路に関する情報を取得することができる。
データフレーム501を受信した後の処理は、図18のステップS202から始まる。データフレームを受信した後の処理の間、S900で示されているように、データフレーム処理部110は、計時手段を用いて、処理の時刻をカウントする。
ステップS202では、受信したデータフレームのLDの値が自ノードのIDか否かを判定する。もし、この判定の結果がNo、即ち否定的なものであるあったなら、そのデータフレームは受信すべきものではないので、ステップS204でフレームの廃棄をする。
ステップS202の判定の結果がYes、即ち肯定的なものであるなら、ノードBはACKフレームを送信元のノードAに送信する。
次のステップS208では、受信したデータフレームのGDの値が自ノードのIDであるか否かを判定する。もし、この判定の結果がYesであるなら、ステップS210に進み、ステップS210で上位層処理部111に通知する。そして、上位層処理部111が、ノード装置がGDである場合に、データフレームにペイロードとして含まれる上位層のPDUを処理する。
ステップS208の判定の結果がNoであるなら、ステップS400に進む。
ステップS400では、受信したデータフレームのループ検知フラグLが「0」、即ち、ループ検知のための処理をスキップするように設定されているか否かを判定する。このステップS400における処理は、比較例にはなかったものであり、図16の(1)として示されている通り、ノード装置のデータフレーム処理部110で処理される。
ステップS400では、受信したデータフレームのループ検知フラグLが「0」、即ち、ループ検知のための処理をスキップするように設定されているか否かを判定する。このステップS400における処理は、比較例にはなかったものであり、図16の(1)として示されている通り、ノード装置のデータフレーム処理部110で処理される。
ステップS400での判定の結果がYes、即ちループ検知フラグLが「0」であり、ループ検知のための処理をスキップするように設定されている場合には、処理はステップS216に進む。
ステップS400での判定の結果がNo、即ちループ検知フラグLが「1」であり、ループ検知のための処理を行うように設定されている場合には、処理はステップS212に進む。
ステップS212では、受信したデータフレームのGSとFIDの値に基づいてFID管理テーブル105を検索する。
そして、次のステップS214では、FID管理テーブル105にエントリがあるか否かを判定する。
ステップS214〜S216の処理は図16の(2)で示されている。即ち、データフレームのGSおよびFIDフィールドから値を読み出し、その値をキーにFID管理テーブル105を検索する。そして、検索結果を判定する。
ステップS214の判定の結果がNoであるなら、ステップS216に進む。ステップS216では、受信したデータフレームのGDの値をキーに重み付けテーブル104を検索する。
ステップ218では、データフレームのGDの値が重み付けテーブル104のエントリにヒットするか否かを判定する。
ステップ218の判定の結果がYesであれば、ステップS220に進み、重み付けテーブル104のエントリの調整処理を行う。この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードは前回の送信時から変更されるかも知れないし、同じノードが選択されるかも知れない。ステップS220の処理が終了すると、次のステップS402では、転送先が「変更あり」または「変更なし」であることを示す情報を記憶する。この情報はデータフレーム処理部110に記憶される。ステップS402の処理が終了すると、ステップS228に進む。
ステップ218の判定の結果がNoであれば、ステップS222に進み、重み付けテーブル104に新たなエントリを登録する。この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードはこれまでノードBからは送信されたことがない新規のノードとなる。ステップS222の処理が終了すると、次のステップS404では、転送先が「新規」であることを示す情報を記憶する。この情報はデータフレーム処理部110に記憶される。ステップS404の処理が終了すると、ステップS228に進む。
ステップS214の判定の結果がYesであるなら、ステップS224に進む。この場合は、今回受信したデータフレームは、過去にノードBから送信されたものである。よって、ループ経路が形成されている可能性がある。
ステップS224では、受信したデータフレームのGDの値をキーに重み付けテーブル104を検索する。今の場合は、受信したデータフレームのGDの値は重み付けテーブル104に登録されているので、ステップS226で重み付けテーブル104に登録されているLDに対する重みを最大値に変更する。また、この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードは前回の送信時から変更される。ステップS226の処理が終了すると、ステップS406で、転送先は「変更あり」であることを示す情報を記憶する。この情報はデータフレーム処理部1110に記憶される。ステップS406の処理が終了すると、ステップS228に進む。
ステップS216〜S226、S402〜S406の処理は図16の(3)で示されている。即ち、データフレームのGDから値を読み出し、その値をキーに重み付けテーブル104を検索する。そして、検索結果を判定し、その結果により重み付けテーブル104の登録/更新と、送信先の変更の有無を認識する。
ステップS228では、現時点での重み付けテーブルを参照しながら、転送先ノード、即ちLDを決定して取得する。
ステップS408では、受信データフレームのループ検知フラグLの更新処理を行う。ステップS408の処理は図16の(4)で示されている。
次のステップS230では、受信したデータフレームのLDおよびLSの更新処理を行う。具体的には、受信したデータフレームでは、LDはノードBのIDである「B」であったが、ノードBの唯一の隣接ノードである「D」に変更する。また、LSは、「A」から「B」に変更する。ステップS228およびS230の処理はそれぞれ、図16の(5)および(6)で示されている。
ステップS230の次のステップS410では、受信したデータフレームのループ検知フラグLが「0」、即ち、ループ検知のための処理をスキップするように設定されているか否かを判定する。このステップの処理は、ノード装置のデータフレーム処理部110で処理される。
ステップS410での判定の結果がYes、即ちループ検知フラグLが「0」であり、ループ検知のための処理をスキップするように設定されている場合には、処理はステップS240に進む。
ステップS400での判定の結果がNo、即ちループ検知フラグLが「1」であり、ループ検知のための処理を行うように設定されている場合には、処理はステップS232に進む。
次のステップS232では、受信したデータフレームのGSとFIDをキーにFID管理テーブル105を検索する。次に、ステップS234でFID管理テーブル105のエントリに該当するものが存在するか否かを判定する。
ステップS234の判定の結果がYesであれば、ステップS238でFID管理テーブル105の更新処理を行ったあと、ステップS240に進む。ステップS234の判定の結果がNoであれば、ステップS236でFID管理テーブル105に新規登録処理を行ったあと、ステップS240に進む。このステップS232〜S238の処理は、図16の(7)として示されている。
ステップS240では、データフレームの送信処理を行う。このステップS240の処理は、図16の(8)として示されている。
このように、「ループ検知フラグ」が0の場合は、受信処理はループ検知の判定を実施せず、送信処理は「FID管理テーブル」の登録処理を行わないので、ノードのCPUリソースの低負荷化とメモリの有効活用があり、これにより転送効率を改善することができる。
<データフレームの転送の経路変更>
図19および図20を用いて、データフレームの転送の経路変更について説明する。
図19および図20を用いて、データフレームの転送の経路変更について説明する。
図19および図20に示されているネットワーク20は、ノードS、A、B、C、D、E、F、Gで構成される。ノードSはノードAとのみ隣接している。ノードAは、ノードS、ノードBおよびノードCと隣接する。即ち、ノードSとノードAの間にリンクLSA、ノードAとノードBの間にリンクLAB、ノードAとノードCの間にリンクLACが存在する。ノードBは、ノードAとノードDと隣接し、ノードCはノードA、ノードD、およびノードFと隣接する。即ち、ノードBとノードDの間にリンクLBD、ノードCとノードDの間にリンクLCD、ノードCとノードFの間にリンクLCFが存在する。ノードFは、ノードCのほかにノードEと隣接する。つまり、ノードFとノードEの間にリンクLEFが存在する。ノードDはノードBとノードCのほか、ノードEと隣接する。つまり、ノードDとノードEの間にはリンクLDEが存在する。ノードGはノードEのみと隣接する。即ち、ノードEとノードGの間にリンクLEGが存在する。前例と同様に、リンクは有線リンクでも無線リンクでも良い。また、ネットワーク20のリンクの一部が無線リンクであり、残りが有線リンクでも良い。
図19では、リンクLSA、リンクLAB、リンクLBD、リンクLDE、リンクLEGが安定しているとする。すなわち、経路<S、A、B、D、E、G>は安定経路である。このとき、各リンク間でのデータフレームの転送は、データフレームのループ検知フラグLをL=0、すなわちループ検知処理をしないという設定の下に行われる。
図20では、図19に示されている状況から、リンクLABが何らかの理由で不安定になった場合の各リンクにおけるループ検知フラグの値の様子である。
ノードAはノードSからループ検知フラグLの値が「0」のデータフレームを受信する。すると、ループ検知処理は行わずに転送先を決める。このとき、ノードAは転送先としてノードBを選択するとする。
ノードAからノードBに向けて送信されたデータフレームは、リンクLABが不安定であるがゆえに、ノードBには到達しない。そこで、ノードAは、データフレームの送信先として、残っている隣接ノードであるCを選択する。経路変更に伴って、ループ検知フラグLを「1」に変更し、「FID管理テーブル」に登録したのち、データフレームをノードCに転送する。
ノードCは、ループ検知フラグLが「1」のデータフレームを受信したので、「FID管理テーブル」を参照してループ検知処理を行い、この結果、ループ経路ではないため、GDであるノードG用の「重み付けテーブル」を参照してLDとしてノードDを選択する。このとき、ノードCはノードGにデータフレームを転送した実績が無いためループ検知フラグLを「1」とし、「FID管理テーブル」に登録したのち、データフレームをノードDに転送する。
ノードDは、ループ検知フラグLが「1」のデータフレームを受信したので、「FID管理テーブル」を参照してループ検知処理を行い、この結果ループではないため、GDがノードG用の「重み付けテーブル」を参照して転送先をEに決定する。このとき、ノードDはノードGにデータフレームを転送した実績があり、経路が安定しているためループ検知フラグL を「0」とし、「FID管理テーブル」に登録は行わないで、データフレームをノードEに転送する。
本例の場合、ループ検知の機能が働くのはノードAの送信処理の部分と、ノードCの受信処理と送信処理と、ノードDの受信処理のみに限定される。
(比較例)
図21〜23を参照して、上記実施形態の比較例について説明する。
図21〜23を参照して、上記実施形態の比較例について説明する。
尚、本例の説明において、上記実施形態に記載のネットワークやネットワークを構成するノード装置の構成要素と同一または類似の機能を有するものについては、同一または類似の参照符号を付与し、詳細な説明を省略する。また、ノード装置における処理についても、同一または類似の処理については、同一または類似の参照符号を付与し、詳細な説明を省略する。
本比較例においても、アドホックネットワークを構成するノード装置は、前述のノード装置100と類似の構成を有する。即ち、本実施形態のノード装置1100も、データフレーム処理部1110の処理を除けば、図2及び3に示されているようなブロック図およびハードウェア構成を有する。
本例のノード装置のデータフレーム処理部では、図8に示されているデータフレームのうち、ループ検知フラグフィールドLがないデータフレーム1501を扱う。
図21は、本実施形態で用いられるデータフレーム1501の構成例である。本例におけるデータフレーム302は、LD、LS、GD、GS、FID、タイプ、長さの各フィールドを持つヘッダおよびペイロードを含んでいる。
<データフレームを受信した後の処理>
次に、図22および23を参照しながら、データフレームの受信処理について説明する。図22は、データフレームを受信した後の処理を示すフローチャートである。図23は、ノードBにおける処理を模式的に表す図である。
<データフレームを受信した後の処理>
次に、図22および23を参照しながら、データフレームの受信処理について説明する。図22は、データフレームを受信した後の処理を示すフローチャートである。図23は、ノードBにおける処理を模式的に表す図である。
データフレームを受信した後の処理は、ステップS202から始まる。ステップS202では、受信したデータフレームのLDの値が自ノードのIDか否かを判定する。もし、この判定の結果がNo、即ち否定的なものであるあったなら、そのデータフレームは受信すべきものではないので、ステップS204でフレームの廃棄をする。
ステップS202の判定の結果がYes、即ち肯定的なものであるなら、ノードBはACKフレームを送信元のノードAに送信する。
次のステップS208では、受信したデータフレームのGDの値が自ノードのIDであるか否かを判定する。もし、この判定の結果がYesであるなら、ステップS210に進み、ステップS210で上位層処理部111に通知する。そして、上位層処理部111が、ノード装置がGDである場合に、データフレームにペイロードとして含まれる上位層のPDUを処理する。
ステップS208の判定の結果がNoであるなら、S212に進む。
ステップS212では、受信したデータフレームのGSとFIDの値に基づいてFID管理テーブル105を検索する。
ステップS212では、受信したデータフレームのGSとFIDの値に基づいてFID管理テーブル105を検索する。
そして、次のステップS214では、FID管理テーブル105にエントリがあるか否かを判定する。
ステップS214〜S216の処理は図23の(1)で示されている。即ち、データフレームのGSおよびFIDフィールドから値を読み出し、その値をキーにFID管理テーブル105を検索する。そして、検索結果を判定する。
ステップS214の判定の結果がNoであるなら、ステップS216に進む。ステップS216では、受信したデータフレームのGDの値をキーに重み付けテーブル104を検索する。
ステップ218では、データフレームのGDの値が重み付けテーブル104のエントリにヒットするか否かを判定する。
ステップ218の判定の結果がYesであれば、ステップS220に進み、重み付けテーブル104のエントリの調整処理を行う。この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードは前回の送信時から変更されるかも知れないし、同じノードが選択されるかも知れない。ステップS220の処理が終了すると、ステップS228に進む。
ステップ218の判定の結果がNoであれば、ステップS222に進み、重み付けテーブル104に新たなエントリを登録する。この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードはこれまでノードBからは送信されたことがない新規のノードとなる。ステップS222の処理が終了すると、ステップS228に進む。
ステップS214の判定の結果がYesであるなら、ステップS224に進む。この場合は、今回受信したデータフレームは、過去にノードBから送信されたものである。よって、ループ経路が形成されている可能性がある。
ステップS224では、受信したデータフレームのGDの値をキーに重み付けテーブル104を検索する。今の場合は、受信したデータフレームのGDの値は重み付けテーブル104に登録されているので、ステップS226で重み付けテーブル104に登録されているLDに対する重みを最大値に変更する。また、この場合には、ノードGをGDとするデータフレームの送信に際して、LDとなるノードは前回の送信時から変更される。ステップS226の処理が終了すると、ステップS228に進む。
ステップS216〜S226の処理は図23の(2)で示されている。即ち、データフレームのGDから値を読み出し、その値をキーに重み付けテーブル104を検索する。そして、検索結果を判定し、その結果により重み付けテーブル104の登録/更新を行う。
ステップS228では、現時点での重み付けテーブルを参照しながら、転送先ノード、即ちLDを決定する。
ステップS230では、受信したデータフレームのLDおよびLSの更新処理を行う。具体的には、受信したデータフレームでは、LDはノードBのIDである「B」であったが、ノードBの唯一の隣接ノードである「D」に変更する。また、LSは、「A」から「B」に変更する。ステップS228〜S230の処理は、図23の(3)および(4)で示されている。
ステップS230の次のステップS232では、受信したデータフレームのGSとFIDをキーにFID管理テーブル105を検索する。次に、ステップS234でFID管理テーブル105のエントリに該当するものが存在するか否かを判定する。
ステップS234の判定の結果がYesであれば、ステップS238でFID管理テーブル105の更新処理を行ったあと、ステップS240に進む。ステップS234の判定の結果がNoであれば、ステップS236でFID管理テーブル105に新規登録処理を行ったあと、ステップS240に進む。ステップS232〜S238の処理は図23の(5)で示されている。
ステップS240ではデータフレームをノードDに向けて送信する。
このように、本例におけるデータフレームの受信処理では、図18のS400、S410の処理が抜け落ちている。そのため、データフレームが安定化経路に沿って転送されるか否かに関わりなく、常に各ノードでループ経路検知処理を行うことになる。
このように、本例におけるデータフレームの受信処理では、図18のS400、S410の処理が抜け落ちている。そのため、データフレームが安定化経路に沿って転送されるか否かに関わりなく、常に各ノードでループ経路検知処理を行うことになる。
上記のようなノード装置から構成されるネットワークでは、データ通信量が多い場合は、中継するノードのFID管理テーブルのリソースや、FID管理テーブルの検索、登録、削除の処理時間のCPUリソースに対する影響が大きくなり、更に、データの中継ノードの転送回数示すホップ数が多くなる場合、データのスループットに影響を与えてしまう。
<作用効果>
図24は、本実施形態と比較例に示したノード装置を用いたときのスループットの比較のグラフである。
図24は、本実施形態と比較例に示したノード装置を用いたときのスループットの比較のグラフである。
図24において、縦軸はスループットで、横軸はホップ(HOP)数である。このグラフによると、ノードを経由する度に時間がかかり、全体的なスループットは低下する事を示している。
図中の遅延の意味は、ループ検知フラグが「1」で転送を行ったノードの割合である。すなわち、100%であれば、比較例の場合と同等になる。このグラフから、遅延ノードの割合が少ない程、また、ホップ数が大きくなる程、スループットが向上する事がわかる。
Claims (8)
- ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、
前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、
前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、
前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、
を含み、
前記フレームに含まれている経路安定指標は、前記フレームを最初に送信したノード装置から前記フレームが最終的に届けられるノード装置までのフレームの経路が安定しているか否かを表しており、
前記経路安定指標処理手段は、前記経路が安定していないことを前記経路安定指標が表している場合には、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定する処理を行うことを決定し、前記経路が安定していることを前記経路安定指標が表している場合には、前記判定する処理を行わないことを決定する、
ことを特徴とするノード装置。 - ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、
前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、
前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、
前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、
過去にフレームを前記送信先ノード装置に向けて送信してからの時間を計時する計時手段と、
を含み、
前記更新手段は、前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うように前記経路安定指標を変更した後、前記送信手段が前記フレームを送信する、
ことを特徴とするノード装置。 - ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、
前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、
前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、
前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、
前記フレームの前記最終宛先までの経路に関する情報を取得する経路情報取得手段と、
を含み、
前記第2の記憶手段が記憶する送信可能性情報には、前記フレームの前記最終宛先までの経路に関する情報が含まれており、
前記フレームの前記最終宛先までの経路に関する情報が変化したときに、前記送信手段は、前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うように前記経路安定指標を変更した後、前記フレームを送信する、
ことを特徴とするノード装置。 - 前記フレームの前記最終宛先までの経路に関する情報は、ホップ数であることを特徴とする請求項3に記載のノード装置。
- 前記フレームの前記最終宛先までの経路に関する情報は、前記経路の品質に関する情報であることを特徴とする請求項3に記載のノード装置。
- ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、
前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、
前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、
前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、
を含み、
前記送信先ノード装置への前記フレームの送信において、前回の送信の際に、前記更新手段による前記送信先ノード装置への前記送信可能性の変更を経験している場合には、前記送信手段は、前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うように前記経路安定指標を変更した後、前記フレームを送信する、
ことを特徴とするノード装置。 - ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信する受信手段と、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先となる隣接するノード装置を識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて記憶する第1の記憶手段と、
前記複数のノード装置のうち、前記フレームが最終的に届けられるノード装置を識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を記憶する第2の記憶手段と、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定する経路安定指標処理手段と、
前記経路安定指標処理手段による決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新する更新手段と、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択する選択手段と、
前記選択手段によって選択された前記送信先ノード装置に向けて前記フレームを送信する送信手段と、
を含み、
前記送信先ノード装置への前記フレームの送信において、前記送信先ノード装置が前記最終宛先で指定されるノード装置の場合は、前記送信手段は、前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行わないように前記経路安定指標を変更した後、前記送信フレームを送信する、
ことを特徴とするノード装置。 - ネットワークを構成する複数のノード装置のうち隣接するノード装置の一つから、経路安定指標を含むフレームを受信するステップと、
前記フレームを識別するフレーム識別情報と、前記隣接するノード装置のうち、前記フレームを転送する先である前記隣接するノード装置の一つを識別する送信先ノード識別情報と、前記フレームが最初に送信されたノード装置を識別する起源ノード識別情報とを対応付けて第1の記憶手段に記憶するステップと、
前記フレームが最終的に届けられる前記複数のノード装置の一つを識別する最終宛先が与えられたとき、前記隣接するノード装置それぞれへの送信可能性を表す送信可能性情報を第2の記憶手段に記憶するステップと、
前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されているかどうかを判定する処理を行うか否かを、前記フレームの前記経路安定指標に基づいて決定するステップと、
前記決定するステップによる決定の結果が、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定することを示し、かつ前記フレームを識別するフレーム識別情報が、前記第1の記憶手段に記憶されている場合のみ、前記第2の記憶手段に記憶されている、前記送信先ノード識別情報により識別されるノード装置への前記送信可能性が送信不能を示すように更新するステップと、
前記フレームの最終宛先に対応付けられて前記第2の記憶手段に記憶されている前記送信可能性情報に基づいて、前記複数のノード装置の中から隣接するノード装置の一つを送信先ノード装置として選択するステップと、
前記選択するステップによって選択された前記送信先ノード装置に向けて前記フレームを送信するステップと、
を備え、
前記フレームに含まれている経路安定指標は、前記フレームを最初に送信したノード装置から前記フレームが最終的に届けられるノード装置までのフレームの経路が安定しているか否かを表しており、
前記決定するステップは、前記経路が安定していないことを前記経路安定指標が表している場合には、前記フレームを識別するフレーム識別情報が前記第1の記憶手段に記憶されているかどうかを判定する処理を行うことを決定し、前記経路が安定していることを前記経路安定指標が表している場合には、前記判定する処理を行わないことを決定する、
ことを特徴とするデータ転送方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/071403 WO2013042209A1 (ja) | 2011-09-20 | 2011-09-20 | データ転送方法およびそれを用いるノード装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2013042209A1 JPWO2013042209A1 (ja) | 2015-03-26 |
JP5720793B2 true JP5720793B2 (ja) | 2015-05-20 |
Family
ID=47914021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013534493A Expired - Fee Related JP5720793B2 (ja) | 2011-09-20 | 2011-09-20 | データ転送方法およびそれを用いるノード装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140198666A1 (ja) |
JP (1) | JP5720793B2 (ja) |
WO (1) | WO2013042209A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6237770B2 (ja) | 2013-05-31 | 2017-11-29 | 富士通株式会社 | 無線端末、重要度生成方法及び無線通信システム |
JP6244733B2 (ja) * | 2013-08-14 | 2017-12-13 | 富士通株式会社 | ノード装置、通信システム、通信プログラムおよび通信方法 |
JP6171868B2 (ja) * | 2013-11-11 | 2017-08-02 | 富士通株式会社 | ノード装置、経路入れ替え方法、及び、プログラム |
JP6206105B2 (ja) * | 2013-11-11 | 2017-10-04 | 富士通株式会社 | 通信システム、通信方法および通信プログラム |
JP6459558B2 (ja) * | 2015-01-27 | 2019-01-30 | 富士通株式会社 | 無線通信装置、無線通信方法、および無線通信プログラム |
CN106910326B (zh) * | 2015-12-22 | 2021-04-27 | 安定宝公司 | 报警设备校准方法及系统 |
CN106059806B (zh) * | 2016-05-27 | 2021-03-02 | 新华三技术有限公司 | 一种can报文发送方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1287543C (zh) * | 2001-08-28 | 2006-11-29 | 索尼公司 | 发送设备和发送控制方法、以及接收设备和接收控制方法 |
JP2004208068A (ja) * | 2002-12-25 | 2004-07-22 | Fujitsu Ltd | ネットワークの経路探索方式、中継ノードおよびネットワーク監視装置 |
WO2007088358A1 (en) * | 2006-02-03 | 2007-08-09 | British Telecommunications Public Limited Company | Method of operating a network |
JP2009017347A (ja) * | 2007-07-06 | 2009-01-22 | Toshiba Corp | 通信を制御する装置、方法、プログラム、および端末装置 |
US7936697B2 (en) * | 2007-08-30 | 2011-05-03 | Bae Systems Information And Electronic Systems Integration Inc. | Topology aware MANET for mobile networks |
US8320371B2 (en) * | 2007-10-26 | 2012-11-27 | Cisco Technology, Inc. | Statistics based forwarding information base repopulation |
KR101066291B1 (ko) * | 2009-01-02 | 2011-09-20 | 삼성전자주식회사 | 패킷 라우팅 방법 및 장치 |
EP2464060B1 (en) * | 2009-07-27 | 2016-05-04 | Fujitsu Limited | Node device, storage medium, and method for transmitting frame |
JP5347846B2 (ja) * | 2009-08-31 | 2013-11-20 | 富士通株式会社 | ノード関連情報を収集するシステム、ノード装置、およびフレーム処理方法 |
US9571433B2 (en) * | 2011-09-12 | 2017-02-14 | Panasonic Intellectual Property Management Co., Ltd. | Communication device, relay server for relaying data from communication device, and communication system including them |
-
2011
- 2011-09-20 WO PCT/JP2011/071403 patent/WO2013042209A1/ja active Application Filing
- 2011-09-20 JP JP2013534493A patent/JP5720793B2/ja not_active Expired - Fee Related
-
2014
- 2014-03-17 US US14/215,586 patent/US20140198666A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JPWO2013042209A1 (ja) | 2015-03-26 |
WO2013042209A1 (ja) | 2013-03-28 |
US20140198666A1 (en) | 2014-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4762735B2 (ja) | 無線通信装置、通信経路制御装置、通信経路制御方法及び通信システム | |
JP5720793B2 (ja) | データ転送方法およびそれを用いるノード装置 | |
JP4005996B2 (ja) | 移動アドホックネットワークにおけるブロードキャストデータ処理方法 | |
JP4679616B2 (ja) | 無線lan中継装置、無線lan中継方法およびコンピュータプログラム | |
US9768917B2 (en) | Communication control method, network system, and communication device | |
US9730140B2 (en) | Transmission control method, node, and non-transitory computer-readable recording medium | |
US8213352B2 (en) | Wireless communication system, wireless communication device, wireless communication method, and program | |
JP5092241B2 (ja) | ネットワークシステム | |
KR101147467B1 (ko) | 경로 설정 장치 및 방법 | |
JP2006270914A (ja) | センサ端末、センサ端末の制御方法 | |
JP2007129542A (ja) | 無線通信システム、無線通信装置及び無線通信方法、並びにコンピュータ・プログラム | |
JP2004336716A (ja) | アドホックネットワークにおけるパスmtu発見システム及び方法 | |
CN109068367B (zh) | 一种无线令牌传递方法、装置、设备及可读存储介质 | |
JP4641245B2 (ja) | アドホック・ネットワーク・システム、無線アドホック端末およびその故障検出方法 | |
JP5036602B2 (ja) | 無線アドホック端末およびアドホック・ネットワーク・システム | |
JP5673840B2 (ja) | ノード装置および通信方法 | |
JP2007243932A (ja) | 無線データ通信システム | |
US9973414B2 (en) | Device and method for wireless communication used in wireless ad hoc network | |
JP2014204437A (ja) | ダウンリンクルーティングの取得及び保守の方法及び装置 | |
JP2009124303A (ja) | アドホックネットワークにおけるメッセージ転送方法 | |
JP2008042647A (ja) | アドホック・ネットワークを構成するノード | |
KR100943638B1 (ko) | 저전력 센서 네트워크에서의 리액티브 라우팅 방법 및시스템 | |
Kaur et al. | Enhanced Hybrid Routing Protocol for Load Balancing in WSN Using Mobile Sink Node |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141216 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150309 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5720793 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |