(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】RPLネットワークにおける効率的なメッセージ送信とループ回避
(51)【国際特許分類】
H04W 40/24 20090101AFI20240730BHJP
H04W 84/20 20090101ALI20240730BHJP
H04W 40/02 20090101ALI20240730BHJP
H04W 8/00 20090101ALI20240730BHJP
【FI】
H04W40/24
H04W84/20
H04W40/02
H04W8/00 110
(21)【出願番号】P 2021561746
(86)(22)【出願日】2020-04-09
(86)【国際出願番号】 US2020027353
(87)【国際公開番号】W WO2020214469
(87)【国際公開日】2020-10-22
【審査請求日】2023-03-08
(32)【優先日】2019-04-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】513113895
【氏名又は名称】ランディス・ギア イノベーションズ インコーポレイテッド
【氏名又は名称原語表記】LANDIS+GYR INNOVATIONS, INC.
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100135703
【氏名又は名称】岡部 英隆
(74)【代理人】
【識別番号】100189544
【氏名又は名称】柏原 啓伸
(72)【発明者】
【氏名】サバルワル,アンクシュ
(72)【発明者】
【氏名】ジャイン,サウラブ
(72)【発明者】
【氏名】シン,ショビット クマール
【審査官】松野 吉宏
(56)【参考文献】
【文献】米国特許出願公開第2019/0081892(US,A1)
【文献】米国特許出願公開第2018/0083862(US,A1)
【文献】米国特許出願公開第2015/0085830(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04B 7/24 - 7/26
H04W 4/00 - 99/00
3GPP TSG RAN WG1-4
SA WG1-4
CT WG1、4
(57)【特許請求の範囲】
【請求項1】
低電力及び損失のあるネットワーク(「RPLネットワーク」)のためのIPv6ルーティングプロトコルを使用してコンピュータネットワーク内に隣接関係を確立するシステムであって、
前記システムは、
前記RPLネットワークに含まれる第1のノードであって、前記第1のノードは、前記RPLネットワークに含まれる第2のノードに関して第1の隣接関係を有し、前記RPLネットワークに含まれる第3のノードに関して第2の隣接関係を有し、前記第1の隣接関係は、前記第1のノードの親ステータス及び前記第2のノードの子ステータスを示し、前記第2の隣接関係は、前記第1のノードの子ステータス及び前記第3のノードの親ステータスを示す、第1のノードを、含み、
前記第1のノードはプロセッサを含み、
前記プロセッサは、複数の動作を実行するように構成されており、
前記動作は、
前記第3のノードから、第1の隣接ディスカバリメッセージを受信するステップであって、前記第1の隣接ディスカバリメッセージは、要求される変更を前記第2の隣接関係に対して示すステップと、
前記第3のノードに関する前記第2の隣接関係に基づいて、前記第3のノードが前記第1のノードに対して前記親ステータスを有することを判定するステップと、並びに、
前記第3のノードが前記親ステータスを有することを判定することに応答して、前記第1の隣接ディスカバリメッセージに対する第1の応答を前記第3のノードに送信するステップであって、前記第1の応答はエラーコードを含み、前記エラーコードは前記要求される変更が利用可能で無いことを示す、送信するステップと
を含む、システム。
【請求項2】
請求項
1に記載のシステムであって、
前記プロセッサは、更に、
前記第3のノードとの失われた接続を判定することに応答して、第2の隣接ディスカバリメッセージを前記第2のノードに送信するステップと、
前記第2のノードから、前記第2の隣接ディスカバリメッセージに対する第2の応答を受信するステップであって、前記第2の応答はエラーコードを含む、受信するステップと、並びに、
前記エラーコードを含む前記第2の応答に応答して、前記RPLネットワークに含まれる第4のノードに関して第3の隣接関係を確立するステップであって、前記第3の隣接関係は、前記第1のノードの子ステータス及び前記第4のノードの親ステータスを示す、確立するステップと
を行うように構成されている、システム。
【請求項3】
請求項
2に記載のシステムであって、
前記プロセッサは、更に、
前記第2のノードから前記エラーコードを受信することに応答して、前記第2のノードに関連する寿命登録カウンタを判定するステップ
を行うように構成され、且つ、
前記寿命登録カウンタの継続時間中には前記第2のノードに追加の隣接ディスカバリメッセージを送信しないように構成されている、
システム。
【請求項4】
請求項
2に記載のシステムであって、
前記プロセッサは、更に、
前記第2のノードから前記エラーコードを受信することに応答して、登録解除メッセージを前記第2のノードに送信するステップであって、前記登録解除メッセージは、前記第2のノードの子ステータスの取り消しを示す、送信するステップと、及び、
前記登録解除メッセージの送信に続いて、前記第2のノードに追加の隣接ディスカバリメッセージを送信するステップと
を行うように構成されている、システム。
【請求項5】
請求項
2に記載のシステムであって、
前記失われた接続を判定することは、
第3の隣接ディスカバリメッセージを前記第3のノードに送信することと、並びに、
前記第3の隣接ディスカバリメッセージに対する第3の応答を受信する前に、タイムアウト閾値の満了を判定することと
を含む、記載のシステム。
【請求項6】
請求項
1に記載のシステムであって、前記エラーコードは、メモリキャッシュのステータスを示すコードである、システム。
【請求項7】
請求項
1に記載のシステムであって、前記エラーコードは、ネットワークルートが存在しないことを示すコードである、システム。
【請求項8】
請求項1に記載のシステムであって、前記第1の隣接ディスカバリメッセージは、前記第3のノードのランキングを示す、システム。
【請求項9】
低電力及び損失のあるネットワーク(「RPLネットワーク」)のためのIPv6ルーティングプロトコルを使用してコンピュータネットワーク内に隣接関係を確立するシステムであって、
前記システムは、
前記RPLネットワークに含まれる第1のノードを含み、
前記第1のノードは、プロセッサを含み、
前記プロセッサは、
前記第1のノードによって、第1の隣接ディスカバリメッセージを前記RPLネットワークに含まれる複数の追加のノードに送信するステップと、
前記複数のノードの各ノードから、(i)前記各ノードの夫々の信頼性を示すランキング、及び(ii)前記各ノードに対する伝送メトリクスを示す、夫々の応答を受信するステップと、
前記伝送メトリクスに基づいて、前記第1のノードの第1のランキングを判定するステップであって、前記第1のランキングは、前記第1のノードと前記RPLネットワークのルートノードとの間の通信経路の信頼性を示すものであり、前記第1のノードの第1のランキング及び夫々のノードのランキングは、夫々のノードと比較した前記第1のノードの相対的な信頼性を示す、第1のランキングを判定するステップと、
前記複数のノードのうちの第2のノードから、前記第2のノードの第2のランキングを示す第2の隣接ディスカバリメッセージを受信するステップと、
前記第1のランキング及び前記第2のランキングに基づいて、前記第2のノードが前記第1のノードよりもより高い信頼性を有することを判定するステップと、並びに、
前記第2のノードが前記より高い信頼性を有することを判定することに応答して、前記第2の隣接ディスカバリメッセージに対する応答を前記第2のノードに送信するステップであって、前記応答はエラーコードを含む、応答を送信するステップと
を含む動作を実行するように構成されている、システム。
【請求項10】
請求項
9に記載のシステムであって、
前記プロセッサは、更に、
前記複数のノードのうちの第3のノードから、前記第3のノードの第3のランキングを示す第3の隣接ディスカバリメッセージを受信するステップと、
前記第1のランキング及び前記第3のランキングに基づいて、前記第3のノードが前記第1のノードよりもより低い信頼性を有することを判定するステップと、並びに、
前記第3のノードが前記より低い信頼性を有することを判定することに応答して、前記第3の隣接ディスカバリメッセージに対する追加の応答を前記第3のノードに送信するステップであって、前記追加の応答は、親ノードとしての前記第1のノードの利用可能性を示すステップと
を行うように構成されている、システム。
【請求項11】
請求項
10に記載のシステムであって、
前記第3のノードは、
前記第1のノードの利用可能性を示す追加の応答に応答して、前記第1のノードの親ステータス及び前記第3のノードの子ステータスを示す、前記第1のノードに関する隣接関係を確立するように構成されている、
システム。
【請求項12】
請求項
9に記載のシステムであって、
前記第2のノードが前記第1のノードよりもより高い信頼性を有すると判定することは、前記第1のランキングの数値を前記第2のランキングの数値と比較することを含む、
システム。
【請求項13】
請求項
9に記載のシステムであって、
前記RPLネットワークは、RPLポイズニングを実装する、
システム。
【請求項14】
請求項
9記載のシステムであって、
前記エラーコードは、メモリキャッシュのステータス、若しくはネットワークルートの不在の、いずれかを示すコードである、
システム。
【請求項15】
請求項
9に記載のシステムであって、
前記第1の隣接ディスカバリメッセージは、マルチキャストメッセージとして送信され、前記第2の隣接ディスカバリメッセージに対する応答は、ユニキャストメッセージとして送信される、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概略、コンピュータネットワークにおける隣接ディスカバリプロトコルの分野に関し、より具体的には、コンピュータネットワーク内のノード間で隣接関係を確立することに関する。
【背景技術】
【0002】
コンピュータネットワークは、コンピュータネットワーク内の他のノードと通信する、一つ若しくは複数のコンピューティングデバイス、即ちノードを含み得る。幾つかの場合、コンピュータネットワークは、低電力及び損失のあるネットワーク(「RPLネットワーク」)のためのルーティングプロトコルを実装し得る。幾つかの場合、RPLネットワークは、(バッテリなどの)制限された電源で動作する一つ若しくは複数のデバイス、(グリッド電源への電気接続などの)安定した電源で動作する一つ若しくは複数のデバイス、又は、制限された電源若しくは安定した電源を組み合わせて使用するデバイスを、含み得る。RPLネットワークは、パケットを含むメッセージなどの、メッセージを送受信する複数のノードを含み得る。RPLネットワークに含まれるノードは、特定のノードとの直接的な通信経路を有するノードなど、ネットワーク内の隣接ノードとメッセージを送受信し得る。例えば、ノードは、どのノードが特定のノードと隣接しているかを発見するために、メッセージを送受信し得る。更に、ノードは、隣接ノードとの通信パスの信頼性をテストするために、メッセージを送信又は受信し得る。
【0003】
幾つかの場合、ノードは、RPLネットワーク内の追加のノードにより受信することが意図されるメッセージを中継するなどして、追加のノード間でルート化されたメッセージを送信し得る。ルート化されたメッセージは、親ノードがその子ノードに(または子ノードから)メッセージをルート化し、子ノードがその親ノードに(または親ノードから)メッセージをルート化するように、ノード間の親子関係に基づいて送信され得る。RPLネットワークは、効率的なルートに基づいて、ネットワークを介してメッセージを効率的に送信し得る。効率的なルートには、親関係を確立する信頼性の高いノードと、(子関係などの)親ではない隣接関係を確立する信頼性の低いノードを含み得る。更に、効率的なルートは、ノードが自身の子ノード(または孫ノード)との間に子関係を確立するなど、ループを回避することができる。場合によっては、非効率的なルートは、失われたパケットに関連するリピートメッセージや、多数のノードを経由してルート化されるメッセージなど、更なるメッセージを引き起こす可能性がある。
【0004】
メッセージを送信又は受信すると、送信用メッセージの生成、メッセージのルーティング、受信メッセージの解釈、又は、通信アンテナの使用の、夫々に関連する電力などの、電力をノードが消費し得る。RPLネットワークでは、メッセージの送受信により、ノードが(バッテリを消耗するなどにより)限定された電源を消費し、ノードの寿命を縮める可能性がある。電源を消費したノードは、更なるメッセージを送信できなくなる可能性があり、メッセージをキャリーするRPLネットワークの容量が減少する可能性がある。RPLネットワークの容量を向上させるためには、RPLネットワーク内のノードが送信するメッセージの数を減らすことが望ましい。更に、RPLネットワークにおいて、ループを回避するルートを含む、効率的なルートを確立することが望ましい。
【発明の概要】
【0005】
特定の実装形態によれば、RPLネットワーク内の第1のノードは、第2のノードと第1の隣接関係を確立し、第3のノードと第2の隣接関係を確立し得る。第1の隣接関係は、第1のノードの親ステータス及び第2のノードの子ステータスを示し得る。第2の隣接関係は、第1のノードの子ステータス及び第3のノードの親ステータスを示し得る。第1のノードは、第3のノードの親ステータスに基づいて、第3のノードに隣接検出メッセージを送信し得、加えて、第2のノードの子ステータスに基づいて、第2のノードに隣接検出メッセージを送信することを保留し得る。
【0006】
幾つかの実装において、RPLネットワーク内の第1のノードは、RPLネットワーク内の第2のノードと隣接関係を有し得る。隣接関係は、第2のノードの親ステータス及び第1のノードの子ステータスを示し得る。第1のノードは、第2のノードから、隣接関係に対する、要求される変更を示す隣接ディスカバリメッセージを受信し得る。隣接関係に基づいて、第1のノードは、第2のノードが親ステータスを有することを判定し得る。第2のノードの親ステータスを判定することに応答して、第1のノードは、要求される変更が利用可能で無いことを示すエラーコードを含む応答を、第2のノードに送信し得る。
【0007】
幾つかの実装では、RPLネットワーク内の第1のノードは、第1の隣接ディスカバリメッセージを複数の追加のノードに送信し得る。第1のノードは、夫々の伝送メトリクスと、各応答ノードの夫々のランキングとを示す、応答を受信し得る。第1のノードは、伝送メトリクスに基づいて、第1のノードの通信経路の信頼性を示す第1のランキングを判定し得る。第1のノードは、RPLネットワーク内の第2のノードから、第2のノードの第2のランキングを示す第2の隣接ディスカバリメッセージを受信し得る。第1及び第2のランキングに基づいて、第1のノードは、第2のノードが第1のノードよりもより高い信頼性を有すると判定し得る。第2のノードがより高い信頼性を有することを判定することに応答して、第1のノードは、エラーコードを含む応答を第2のノードに送信し得る。
【0008】
これらの例示的な実装は、本開示を限定又は定義するためではなく、本開示の理解を助ける例を提供するために、言及されている。追加の実装は、発明の詳細な説明で述べられており、更なる説明はそこにて行われる。
【図面の簡単な説明】
【0009】
本開示の特徴、実装、及び利点は、以下の詳細な説明を添付の図面を参照して読むことで、よりよく理解される。
【0010】
【
図1A】
図1A及び
図1Bは、夫々、特定の実装に係る、複数のノードを含むRPLネットワークの例を示すブロック図である。
【
図1B】
図1A及び
図1Bは、夫々、特定の実装に係る、複数のノードを含むRPLネットワークの例を示すブロック図である。
【
図2】
図2は、特定の実装に係る、RPLネットワーク上で送信されるメッセージの量を減らすためのデータフローの例を示す図である。
【
図3】
図3は、特定の実装に係る、RPLネットワークにおいて減少した量の隣接検出メッセージを送信するプロセスの例を示すフローチャートである。
【
図4】
図4は、特定の実装に係る、RPLネットワーク内のノード間の隣接関係を変更するプロセスの例を示すフローチャートである。
【
図5】
図5は、特定の実装に係る、親子ステータスの判定に基づいてRPLネットワークにおけるループの形成を回避するデータフローの例を示す図である。
【
図6】
図6は、特定の実装に係る、親子ステータスの判定に基づいてRPLネットワークにおけるループの形成を回避するプロセスの例を示すフローチャートである。
【
図7】
図7は、特定の実装に係る、ノードランキングの比較に基づいてRPLネットワークにおけるループの形成を回避するデータフローの例を示す図である。
【
図8】
図8は、特定の実装に係る、ノードランキングの比較に基づいてRPLネットワークにおけるループの形成を回避するプロセスの一例を示すフローチャートである。
【
図9】
図9は、特定の実装に係る、RPLネットワークにおいてノードとして動作するように構成されたコンピューティングデバイスの一例を示すブロック図である。
【発明を実施するための形態】
【0011】
上述のように、RPLネットワーク内の一つ若しくは複数のノードの電力消費は、ノード間で送信されるメッセージの数を減らすことによって改善され得る。本明細書に記載の特定の実装は、隣接ディスカバリメッセージ若しくは隣接検出メッセージを削減することなどにより、RPLネットワーク内部で実装される隣接ディスカバリプロトコルに関連するメッセージの量を削減する技術を提供する。例えば、RPLネットワーク内の第1のノードは、第1のノードと直接通信経路を有する又は確立できる(例えば、隣接である)ノードをディスカバするために、RPLネットワーク内の複数の追加ノードに隣接ディスカバリメッセージを送信し得る。追加ノードから受信した一つ若しくは複数の応答に基づいて、第1のノードは、親若しくは子のステータスを示す隣接関係などの、追加ノードに関する隣接関係を確立し得る。第2のノードは、第1のノードの子として示されてもよく、第3のノードは、第1のノードの親として示されてもよい。
【0012】
幾つかの実装では、第1のノードは、一つ若しくは複数の隣接検出メッセージを送信し得る。例えば、隣接検出メッセージは、隣接するノード間の通信経路をテストするために送信され得る。第1のノードは、親ノードとの通信経路の信頼性を検出するためなどに、親ノードに隣接検出メッセージを送信し得る。場合によって、第1のノードは、子ノードに送信される隣接検出メッセージを保留し得る。また、第1のノードは、子ノードから受信する隣接検出メッセージに応答し得る。RPLネットワークでは、隣接検出メッセージは、親ノードではなく、子ノードによって送信され得る。更に、親ノードは、子ノードからの隣接検出メッセージに応答し得る。親ノードは子ノードに隣接検出メッセージを送信しない可能性があるので、子ノードは応答を送信しない。従って、RPLネットワーク上で送信される、隣接検出メッセージ、及び隣接検出メッセージに対する応答の、全体的な数は減少し得る。
【0013】
幾つかの実装では、RPLネットワーク上の特定のノードが、親ノードを求めている場合がある。例えば、特定のノードが、新しいノードとしてRPLネットワークに参加しつつあることもあるし、特定のノードと従前の親ノードとの間の通信経路が、信頼性を失っていることもある。特定のノードは、新しい親ノードを確立するために、その隣接ノードに隣接ディスカバリメッセージを送信し得る。場合によって、隣接ノードは、特定ノードとの関係に基づいて隣接ディスカバリメッセージに対する応答を送信し得る。例えば、特定のノードがその子ノードに隣接ディスカバリメッセージを送信する場合、子ノードは、特定のノードが自身の親ノードであると判定し得る。子ノードは、特定のノードが自身の親ノードであるとの判定に基づいて、エラーコードを伴う応答を送信し得る。エラーコードの受信に応答して、特定のノードは、追加ノードが特定のノードの新しい親であるように、RPLネットワーク内の追加ノードと親子関係を確立し得る。従って、RPLネットワークは、ノード間のルートにおけるループを回避することができる。
【0014】
本明細書で用いるように、用語「RPLネットワーク」は、低電力及び損失のあるコンピュータネットワークのためのルーティングプロトコルを実装するコンピュータネットワークを指し得る。RPLネットワークは、低電力及び損失のあるコンピュータネットワークであり得るが、そうでなくてもよい。場合によって、RPLネットワークは、バッテリ電源で動作するコンピューティングデバイスなど、処理能力、メモリ、又はエネルギの、一つ若しくは複数に関して制約を受けて通常動作する一つ若しくは複数のノードを含み得る。更に、RPLネットワークは、データメッセージの高い損失率(例えば、パケットの損失)、低いデータレート、又はコンピュータネットワーク上のノード間の通信経路の不安定性のうちの、一つ若しくは複数を特徴とする、一つ若しくは複数のノードを含み得る。
【0015】
RPLネットワークにおいて、ルーティングプロトコルは、RPLネットワークに含まれるノード間の一つ若しくは複数のルートを確立し得る。更に、RPLネットワークは、RPLネットワーク上の一つ若しくは複数のノードによって実行される隣接ディスカバリ処理に基づいてルートを確立し得る。場合によって、RPLネットワークは、“Neighbor Discovery for IP version 6 (IPv6)”に関する標準RFC4861、又は“Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)”に関する標準RFC6775など、一つ若しくは複数の標準に係る隣接ディスカバリを実装し得る。場合によって、RPLネットワークは、“RPL:IPv6 Routing Protocol for Low-Power and Lossy Networks”に関する標準RFC6550など、一つ若しくは複数の標準に係るルーティングプロトコルを実装し得る。
【0016】
本明細書で用いるように、用語「ノード」は、コンピュータネットワークでメッセージを受信又は送信するように構成されたコンピューティングデバイスを指し得る。ノードは、ルータ、ゲートウェイ、エンドポイント、コレクタ、又は、他の適切なタイプのコンピューティングデバイスを含み得るが、これらに限定されない。場合によって、ノードは、ソフトウェアベースのコンピューティングデバイス(例えば、クラウドコンピューティングネットワーク、仮想サーバ)として実装されるノードなど、仮想ノードであってもよい。
【0017】
本明細書で用いるように、用語「隣接ディスカバリ」は、RPLネットワーク内の一つ若しくは複数の隣接ノードを判定するためにノードによって実行される一つ若しくは複数の動作を指し得る。隣接ディスカバリは、隣接勧誘又は隣接広告などの、一つ若しくは複数の隣接ディスカバリメッセージの送信を含み得る。更に、隣接ディスカバリは、マルチキャストメッセージを受信することができる任意のノードに向けられると特定されるマルチキャストメッセージなど、複数の受信ノードへの特定の隣接ディスカバリメッセージの送信を含み得る。ノードは、各ノードが追加ノードを介してメッセージをルーティングすることなく、他方にメッセージを送信できるように、ノード間に通信経路が存在する場合、互いに関しては隣接であり得る。場合によって、隣接ディスカバリは、RPLネットワークに参加している(または再参加している)ノードによって実行され得る。更に、隣接ディスカバリは、RPLネットワークに含まれるノードによって実行され得る。例えば、既に一つ若しくは複数の隣接を有するノードは、隣接ディスカバリを実行して、追加の隣接として利用可能な追加のノードがあるかどうかを判定し得る。
【0018】
本明細書で用いるように、用語「隣接検出」は、隣接ノードが信頼性があるかどうかを判定するための、RPLネットワークに含まれるノードによって実行される一つ若しくは複数の動作を指し得る。場合によって、隣接検出は、“Neighbor Discovery for IP version 6(IPv6)”に関する標準RFC4861により記述されるNUDプロセスなどの、隣接到達不能検出(「NUD」)のためのプロセスを含む。隣接検出は、隣接勧誘又は隣接広告などの、一つ若しくは複数の隣接検出メッセージの送信を含み得る。更に、隣接検出は、特定のノードに向けられると特定されるユニキャストメッセージなどの、特定の受信ノードへの特定の隣接検出メッセージの送信を含み得る。ノードは、隣接のための追加メッセージと共に隣接検出メッセージを送信するなどにより、隣接との他の通信中に隣接検出を実行し得る。更に、ノードは、メッセージに応答しない隣接などの、隣接が信頼できない可能性があると判定したことに応答する、隣接検出を実行し得る。
【0019】
本明細書で用いるように、用語「メッセージ」及び「データメッセージ」は、RPLネットワーク内のノードなどの、ノード間で送信されるように構成された一つ若しくは複数のデータパケットのグループを指し得る。メッセージは、パケットを送信するノードに関する情報(例えば、送信ノードの性能情報)、追加のコンピューティングシステム(例えば、RPLネットワークの外部のコンピューティングシステム)からの情報、又はその他の適切な情報などの、情報を含み得る。
【0020】
本明細書で用いるように、用語「通信経路」は、ノードが通信経路を介してメッセージを送受信できると言うような、ノード間のリンクを指し得る。通信経路は、有線技術(例えば、ネットワークケーブル)、無線技術(例えば、Wi-Fi、Bluetooth、セルラモデム)、又は有線技術と無線技術の組み合わせなど、ノード間の任意の適切な通信技術を介して確立され得る。
【0021】
本明細書で用いるように、「ルート」および「ルーティング」という用語は、発信ノードから一つ若しくは複数の追加ノードを介して受信ノードに送信されるメッセージを指し得る。例えば、ルーティングノードは、ルーティングノード以外の受信ノードを対象とするメッセージを受信し得る。ルーティングノードは、メッセージを受信ノードに、又は、追加のルーティングノードに、送信し得る。場合によって、ルーティングプロトコルに基づいてルートは判定され得る。更に、ルートは、ルートに含まれるノードに関する情報に基づいて変更され得る。例えば、ルーティングノードが親ノードとの接続を失ったと判定する場合、ルーティングノードは、隣接ディスカバリ動作を使用して新しい親を判定し得る。更に、ルーティングノードが属する任意のルートは、ルーティングノードの新しい親に基づいて変更され得る。
【0022】
次に図面を参照すると、
図1A及び
図1B(ここでまとめて
図1と称する)は、複数のノードを含む例示的なRPLネットワーク100の図である。RPLネットワーク100のノードは、ルートノード110と、ノード111、112、113、114、115、116、117、118、及び119等の、一つ若しくは複数の追加ノードとを含み得る。場合によって、ノード110~119の夫々は、メッセージを送受信するように構成され得る。更に、ルートノード110は、追加のRPLネットワーク又は非RPLネットワーク等の、一つ若しくは複数の追加のコンピュータネットワークと通信するように構成され得る。更に、ノード110~119の夫々は、RPLネットワーク100内の一つ若しくは複数の追加ノードとの通信経路を有し得る。例えば、ノード110~119は、無線通信技術を介して通信(例えば、メッセージの送信及び/又は受信)することが可能であり得る。例えば、ノード111及び112は、互いに通信することが可能であり得る。
【0023】
ノード110~119の夫々は、一つ若しくは複数の隣接ノードを判定するために、隣接ディスカバリ動作を実行し得る。隣接ディスカバリ動作は、隣接勧誘のような、隣接ディスカバリメッセージを送信することを含み得る。場合によって、隣接ディスカバリメッセージは、ノード111との通信経路を介して隣接ディスカバリメッセージを受信することが可能な任意のノードに向けられたマルチキャストメッセージであり得る。更に、隣接ディスカバリメッセージは、再送に利用できないことを示し得る。例えば、ノード112がノード111から隣接ディスカバリメッセージを受信する場合、ノード112は、隣接ディスカバリメッセージを追加のノードに送信しないように判定し得る。更に、隣接ディスカバリ動作は、隣接広告のような、マルチキャスト隣接ディスカバリメッセージに対する応答を送信することを含み得る。例えば、ノード111は、その利用可能な通信経路を介して、隣接ディスカバリメッセージを送信し得る。隣接ディスカバリメッセージは、ノード112、113、114、及び115によって受信され得る。隣接ディスカバリメッセージの受信に応答して、ノード112、113、114、及び115は夫々、ノード111に夫々の応答を送信し得る。場合によって、応答は、応答ノードのインターネットプロトコルアドレス(「IPアドレス」)、メディアアクセスコントロールアドレス(「MACアドレス」)、ランキング、又は、応答ノードに関する他の適切な情報を、記述している情報等の、応答ノードに関する情報を含み得る。更に、ノード110~119の夫々は、(非隣接ノードを含む)追加ノードに関する情報を格納し得る。例えば、RPLネットワーク100内の各ノードは、RPLネットワーク100内の追加ノードの、夫々のIPアドレス及びMACアドレスを、記憶し得る。ノード情報は、夫々のノードのメモリコンポーネント内のルックアップテーブルのエントリなど、任意の適切な形式で記憶され得る。
【0024】
幾つかの実装では、隣接ディスカバリ動作に基づいて、ノード110~119の夫々は、追加ノードと一つ若しくは複数の隣接関係を確立し得る。
図1Aは、RPLネットワーク100内部で確立され得る隣接関係の例示的なセットを示す。説明のために、例示的な隣接関係は、隣接するノード間の破線を介して図示される。例えば、ルートノード110は、ノード113及び114と夫々の隣接関係を確立し得る。更に、ノード111は、隣接ノード112、113、114、及び115を有し、ノード112は、隣接ノード111及び115を有し、ノード113は、ルートノード110及びノード111の隣接ノードを有し、ノード114は、ルートノード110並びにノード111、116、及び118の隣接ノードを有し、ノード115は、隣接ノード111、112、及び118を有し、ノード116は、隣接ノード114及び117を有し、ノード117は、隣接ノード116及び118を有し、ノード118は、隣接ノード114、115、117、及び119を有し、ノード119は、隣接ノード118を有する。各ノードは、ルックアップテーブル内などに、その隣接ノードに関する情報を記憶し得る。
【0025】
幾つかの実装では、隣接ディスカバリ動作に基づいて、ノード110~119の夫々は、RPLネットワーク100内の追加ノードに関して、親ステータス又は子ステータスを示す隣接関係を確立し得る。場合によって、親子関係は、一つ若しくは複数の業界標準に準拠するルーティングプロトコルなどの、ルーティングプロトコルに従って確立され得る。更に、ノード110~119が有向非環状グラフ(「DAG」)フォーマットで関係するように、親子関係が確立され得る。DAGフォーマットに基づいて、RPLネットワーク100は(ルートノード110などの)単一のルートノードを有し、各非ルートノードは単一の親ノードを有し、更に、各非ルートノードは一つ若しくは複数の子ノードを有したり有しなかったりすることがある。DAGフォーマットに基づいて、RPLネットワークは指示され、ネットワークトラフィック(例えば、メッセージ)は、親ノードと子ノードとの間で指示される。DAGフォーマットに基づいて、RPLネットワーク100は非環状であり、ループは形成されない(例えば、所与のノードは、別の所与のノードの親と子の両方、とはならない)。
【0026】
図1Bは、RPLネットワーク100内部で確立され得る親子関係の例示的なセットを示す。説明のために、例示的な親子関係は、親ノードと子ノードとの間の実線を介して図示され、矢印は子から親を指している。ルートノード110は、RPLネットワーク100内部の一つ若しくは複数の追加ノードと一つ若しくは複数の子関係を確立し得る。例えば、ルートノード110は、ノード113及び114との関係を確立し、その関係は、ノード110の親ステータス及びノード113及び114の子ステータスを示す。更に、ルートノード110は、RPLネットワーク100の外部にある追加ノードとの追加の関係(例えば、追加のコンピュータネットワーク内の追加のノードとの関係)を確立し得る。
【0027】
場合によって、非ルートノード111~119の夫々は、一つの追加ノードと親関係を確立し得る。更に、非ルートノード111~119は、一つ若しくは複数の追加ノードと一つ若しくは複数の子関係を確立し得る。RPLネットワーク100において、第1のノードは、第2のノードに関して子ステータスを有し、第3のノードに関して親ステータスを有し得る。例えば、ノード111は、ノード112及び113に関して関係を確立する。ノード112との関係は、ノード111の親ステータスと、ノード112の子ステータスとを示す。また、ノード113との関係は、ノード111の子ステータスとノード113の親ステータスを示す。表1は、
図1Bに示される例示的な親子関係をまとめたものである。場合によって、隣接関係を持ち、親でも子でもないノードに対して、ピアステータスが示される。例えば、ノード115~118は、(表1に示されるような)ノード115又はノード118のいずれもが他方の親でも子でもない(
図1Aに示されるような)隣接関係を有し得る。さらに、ノード115及び118は、互いにピアステータスを示す隣接関係を確立し得る。
【表1】
【0028】
幾つかの実装では、隣接ディスカバリ動作に基づいて、ノード110~119の夫々は、RPLネットワーク100内部の夫々のノードの相対的な信頼性を示す、夫々のランキングを判定し得る。夫々のノードについて、ランキングは、RPLネットワーク100内の追加ノードと比較して、RPLネットワーク100を介してメッセージを送信するノードの能力を示し得る。幾つかの態様において、各特定のノードは、ノードの一つ若しくは複数の伝送メトリクス(例えば、ノード間でメッセージを送信する時間)、特定のノードとルートノード110との間のルーティングノードの量(例えば、「ホップ」)、特定のノードと追加ノードとの間で失われたメッセージの量、又は任意の他の適切なパフォーマンス情報を記述する、パフォーマンス情報を含む、RPLネットワーク100に関するパフォーマンス情報に基づいて、それ自身のランキングを判定し得る。ランキングは、数値として計算され得る。場合によって、ランキングは、より高い信頼性に基づいて小さい値となり、より低い信頼性に基づいて大きい値となるように計算される。例えば、ルートノード110は、非常に高い信頼性で自身にメッセージを送信するルートノード110の能力に基づいて、0のランキングを有し得る。ノード113及び114は、比較的高い信頼性でルートノード110にメッセージを送信する能力に基づいて、夫々、10及び15の比較的小さいランキング番号を有し得る。ノード115及び119は、比較的低い信頼性でルートノード110にメッセージを送信する能力に基づいて、夫々、38及び45の比較的大きいランキング番号を有し得る。表2は、
図1に示されたノード110~119の例示的なランキングをまとめたものである。表2の例示的なランキングは、高い信頼性に基づいて小さい値を示しているが、低い信頼性に基づいて小さい値になるように計算されたランキングや、高い信頼性に基づいて大きい値になるように計算されたランキングなど、他の実装も用いることができる。
【表2】
【0029】
幾つかの実装では、ノード110~119の夫々は、隣接ノードの信頼性を検出するために、隣接検出動作を実行し得る。隣接検出動作は、隣接勧誘のような、隣接検出メッセージを送信することを含み得る。場合によって、隣接検出メッセージは、特定の隣接ノードに向けられたユニキャストメッセージであり得る。更に、隣接検出動作は、隣接広告など、ユニキャストの隣接検出メッセージに対する応答を送信することを含み得る。例えば、ノード111は、検出メッセージを、隣接ノード112、113、114、及び115の夫々に送信し得る。検出メッセージの受信に応答して、ノード112、113、114、及び115は夫々、ノード111に夫々の応答を送信し得る。場合によって、応答は、応答ノードのランキングを記述する情報などの、応答ノードに関する情報、又は、応答ノードに関する他の適切な情報を、含み得る。
【0030】
場合によって、RPLネットワーク100における隣接関係が変更され得る。特定のノードは、隣接するノードが非応答であることを(隣接者検出操作に基づくなどして)判定し得る。例えば、特定のノードと隣接ノードとの間の通信経路が遮断され得る。更に、特定のノードは、隣接ノードが特定のノードのランキングよりも信頼性の低いランキングを有すると判定し得る。例えば、隣接ノードは、自身の動作条件において、故障又は他の変化を経験し、それによって隣接ノードのランキングが相対的に低い信頼性を示すように変化している可能性もある。隣接ノードが非応答性であること、又は隣接ノードのランキングが変化したことを判定することに基づいて、特定のノードは、非応答性のノードに関する隣接関係を更新し得る。例えば、特定のノードは、非応答性ノードの親ステータスを取り消し、RPLネットワーク100内の追加ノードとの新たな親関係の確立を試み得る。
【0031】
例示的な実装では、ノード111は、ノード113に関する隣接関係を変更し得る。例えば、限定するものではないが、ノード111は、ノード113から、ノード111によって送信される隣接検出メッセージに対する応答を、受信することに失敗し得る(例えば、ノード113が応答しない、接続パスが壊れている)。更に、ノード113は、新しい親を求めていることを(例えば、隣接ディスカバリメッセージを介して)示し得る。ノード111は、ノード113に関する親ステータスを取り消すように、ノード113との隣接関係を変更し得る。
【0032】
更に、ノード111は、新しい親ノードを判定するために、一つ若しくは複数の隣接ディスカバリ動作を実行し得る。幾つかの態様では、ノード111は、マルチキャスト隣接ディスカバリメッセージなどの隣接ディスカバリメッセージを送信し得る。ノード111は、隣接ノード112、114、及び115からの応答など、RPLネットワーク100内の追加ノードからの応答を受信し得る。更に、ノード111は、隣接ディスカバリメッセージに対する応答に含まれる情報に基づいて、ノード112、114、及び115との隣接関係のうちの一つ若しくは複数を変更し得る。
【0033】
場合によって、ノードは、隣接ディスカバリメッセージを送信したノードとの親子関係に基づいて、隣接ディスカバリメッセージに対する応答を提供し得る。例えば、ノード112は、ノード111から隣接ディスカバリメッセージを受信し得る。隣接ディスカバリメッセージを受信することに応答して、ノード112は、ノード111に関して子ステータスを有することを判定し得る。子ステータスの判定に基づいて、ノード112は、エラーコードを含む応答をノード111に送信し得る。エラーコードは、例えば、ノード112がノード111に対する親ノードとして利用可能で無いことを示し得る。エラーコードを伴う応答を受信することに基づいて、ノード111は、ノード112と親ではない隣接関係を確立(または保持)し得る。場合によって、エラーコードに基づいて関係を変更するかどうかを判定することにより、子ノードと親関係を確立することを回避し、RPLネットワーク100にループを形成することを回避する。
【0034】
更に、ノードは、ノードのランキングに基づいて、隣接ディスカバリメッセージに対する応答を提供し得る。例えば、ノード115は、ノード111から、隣接ディスカバリメッセージを受信し得る。隣接ディスカバリメッセージの受信に応答して、ノード115は、ノード115のランキングを含む応答をノード111に送信し得る。ランキングを含む応答の受信に基づいて、ノード111は、ノード115のランキングをノード111のランキングと比較し得る。ノード115がノード111と比較して信頼性の低いランキングを有しているという判定に基づいて、ノード111は、ノード115と親ではない隣接関係を確立(または保持)し得る。場合によって、ランキングに基づいて関係を変更するかどうかを判定することにより、相対的に低い信頼性を有するノードと親関係を確立することを回避し、RPLネットワーク100にループを形成することを回避する。
【0035】
ノード114は、隣接ディスカバリメッセージに対する追加の応答を提供し得る。ノード114からの応答は、ノード114が親として利用可能で無いことを示すエラーコードなどの、エラーコードを省略し得る。更に、ノード114からの応答は、ノード114のランキングを含み得る。ノード111は、ノード114とノード111のランキングの比較に基づいて、ノード114がノード111と比較してより信頼性の高いランキングを有していると判定し得る。ノード111は、エラーコードを省略した応答と、ノード114がより信頼性の高いランキングを有しているとの判定とに基づいて、ノード114の親ステータスとノード111の子ステータスとを示すノード114に関して、隣接関係を確立し得る。
【0036】
隣接検出メッセージの量の削減
図2は、特定の実装に係る、RPLネットワーク100のデータフローの一例を示す。幾つかの実装では、
図2に描かれたデータフローは、送信される隣接検出メッセージ、及び隣接検出メッセージに対する応答の、数を減らすなどして、RPLネットワーク100で送信されるメッセージの量を減らすことができる。場合によって、メッセージの量を減らすことにより、ネットワーク上の一つ若しくは複数のノードのバッテリ寿命を延長すること、又は、隣接検出メッセージではない追加のメッセージを搬送するために増加したネットワーク容量を割り当てること等によって、RPLネットワーク100の容量を改善し得る。
【0037】
図2において、ノード111は、一つ若しくは複数のノードに隣接ディスカバリメッセージを送信し得る。例えば、ステップ202aで、ノード111は、ノード113に隣接ディスカバリメッセージを送信し得る。ステップ202b及び202cにおいて、ノード111は、ノード112及びノード114に、夫々、隣接ディスカバリメッセージを送信し得る。場合によって、隣接ディスカバリメッセージは、複数の受信者ノードに向けられたマルチキャストメッセージであり得る。例えば、ノード111は、ステップ202a、202b、及び202cに関して、マルチキャスト隣接ディスカバリメッセージを1回送信し得、マルチキャスト隣接ディスカバリメッセージは、ノード113、112、及び114の夫々によって受信され得る。
【0038】
ステップ204aにおいて、ノード113は、ノード111に応答を送信する。更に、ステップ204bでノード112が応答を送信し、ステップ204cでノード114が応答を送信する。応答は夫々、ノード111に向けられたユニキャストメッセージであり得る。ステップ204a、204b、及び204cに関して、応答は、IPアドレス、MACアドレス、ランキング、又は、応答ノードに関する他の適切な情報など、夫々の応答ノードに関する情報を含み得る。
【0039】
ノード111は、ノード113、112、及び114によって送信される応答を受信し得る。応答に基づいて、ノード111は、ノード113、112、及び114に関して一つ若しくは複数の隣接関係を確立し得る。ステップ206において、例えば、ノード111は、ノード113に関して親子ステータスを示す隣接関係を確立し得る。ステップ206で確立される隣接関係は、ノード113の親ステータスとノード111の子ステータス(例えば、ノード113は子ノード111の親であること)を示し得る。場合によって、RPLネットワーク100において、追加の隣接関係が確立され得る。例えば、ステップ208において、ノード112は、ノード111に関する親子ステータスを示す追加の隣接関係を確立し得る。ステップ208で確立される追加の隣接関係は、ノード111の親ステータスとノード112の子ステータス(例えば、ノード111は子ノード112の親であること)を示し得る。RPLネットワーク100の一部のノードは、ノード111がノード112の親であり且つノード113の子であるなど、親ステータスと子ステータスの両方を有し得る。
【0040】
RPLネットワーク100において、ノードは、親子関係などの隣接関係におけるノードのステータスに基づいて、一つ若しくは複数の隣接検出メッセージを送信し得る。例えば、ノード111は、ノード113に対して子ステータスを有することを判定し得る。ステップ210において、ノード111は、ノード113がノード111に対して親ステータスを有することに基づいて、ノード113に隣接検出メッセージを送信し得る。更に、ステップ212において、ノード113は、ステップ210で送信された隣接検出メッセージに対する応答を送信し得る。ステップ214において、ノード112は、ノード111がノード112に対して親ステータスを有することに基づいて、追加の隣接検出メッセージをノード111に送信し得る。更に、ステップ216にて、ノード111は、ステップ214で送信された追加の隣接検出メッセージに対する追加の応答を送信し得る。
【0041】
幾つかの実装では、RPLネットワーク100内のノードは、親子関係などの隣接関係におけるノードのステータスに基づいて、隣接検出メッセージを保留し得る。例えば、ステップ210に関して、ノード111は、ノード112がノード111に対して子ステータスを有することに基づいて、ノード112への隣接検出メッセージの送信を保留し得る。メッセージの送信を保留することは、メッセージを生成しないこと、又は、生成されたメッセージを送信しないことを含み得る。例えば、ノード111は、ノード112の子ステータスに基づいて、ノード112のための隣接検出メッセージの生成又は送信に関連する動作を実行する(又は実行することを回避する)ように構成され得る。ノード111は、ノード112に対する隣接検出メッセージの生成を回避し得、又は、生成された隣接検出メッセージを第1のノード(例えば、ノード113)に送信し得、且つ、生成された隣接検出メッセージを第2のノード(例えば、ノード112)に送信するのを回避し得る。
【0042】
ステップ212に関して、ノード112は、保留された隣接検出メッセージを受信しなかったとして、応答を生成しないように構成され得る。更に、ノード113は、ノード111がノード113に対して子ステータスを有することに基づいて、ノード111への追加の隣接検出メッセージの送信を保留し得、ノード111は応答を保留し得る。場合によって、隣接関係にあるノードのステータスに基づいて、隣接検出メッセージを保留することにより、RPLネットワーク100上で送信される、隣接検出メッセージの量、及び隣接検出メッセージに対する応答の量を、低減できる。
【0043】
幾つかの実装では、RPLネットワーク100内のノードは、子ノードを親ノードに変更する、又は親ノードを子ノードに変更するなど、隣接ノードとの隣接関係を変更し得る。隣接関係は、隣接ディスカバリメッセージなど、隣接ノードからのメッセージによって示される情報に基づいて、変更され得る。更に、隣接関係は、隣接関係(例えば、変更されていない隣接関係)における親又は子ステータスなど、隣接ノードのステータスに基づいて、変更され得る。
図2に描かれたデータフローの例では、隣接関係における親子ステータスに基づいて隣接検出メッセージが削減される環境における隣接関係の変更例を示している。しかしながら、隣接検出メッセージが削減されない環境での隣接関係の変更など、他の実装も可能である。
【0044】
図2のステップ230において、ノード113は、ノード113に対して親ステータスを有するノードなど、自身の親ノードへの接続を失い得る。例えば、ノード113は、ノード113の例示的な親として表1に示されている、ルートノード110への接続を失い得る。場合によって、ノード113は、新しい親ノードを見出すことを試み得る。例えば、ステップ232において、ノード113は、ノード111などの、RPLネットワーク100内の一つ若しくは複数のノードに、隣接ディスカバリメッセージを送信し得る。ステップ232に関して、場合によって、隣接ディスカバリメッセージは、複数の受信者ノードに向けられたマルチキャストメッセージなど、マルチキャストメッセージであり得る。更に、ステップ232に関して、隣接ディスカバリメッセージは、ノード113が親を持たないことを示すエラーなどの、エラーコードを含み得る。
【0045】
ノード111は、ステップ232にて送信される隣接ディスカバリメッセージを受信し得る。更に、ノード111は、送信ノード113がノード111に対して親ステータスを有することを判定し得る。ノード113が親ステータスを有すると判定することに応答して、ノード111は、ステップ234~238のうちの一つ若しくは複数等にて、ノード113との隣接関係を変更し得る。更に、ノード111は、ステップ236等のように、RPLネットワーク100内の追加ノードと一つ若しくは複数の追加の隣接関係を確立(又は変更)し得る。
【0046】
ステップ234において、例えば、ノード111は、ノード113の親ステータスを取り消し得る。親ステータスを失効させることは、ノード113がステータスを持たないこと、又は、親ではない追加のステータス(例えば、子、ピア)を持つことを示すように、ノード113に関する隣接関係を変更することを含み得る。
【0047】
ステップ236において、ノード111は、ノード114との追加の隣接関係を確立又は変更し得る。追加の隣接関係は、ノード114の親のステータス及びノード111の子のステータス(例えば、ノード114は子ノード111の新しい親であること)を示し得る。場合によって、追加の隣接関係は、新しい親を見出す目的でノード111が送信するマルチキャスト隣接ディスカバリメッセージなどの、一つ若しくは複数の追加メッセージに基づいて、確立又は変更される。更に、ステップ204cに関して受信したノード114からの応答など、従前に受信した情報に基づいて、追加の隣接関係が確立又は変更される。
【0048】
ステップ238において、ノード111は、ノード113との隣接関係を変更して、ノード111の追加の親ステータス及びノード113の子ステータス(例えば、ノード111は子ノード113の新しい親であること)を示し得る。
図2は、ステップ238にてこの変更を実行することを描いているが、ノード113の子ステータスを示すようにステップ234にて隣接関係を変更するなど、他の実装も可能である。
【0049】
図3は、RPLネットワークにおいて減少した量の隣接検出メッセージを送信するプロセス300の一例を示すフローチャートである。
図1~2に関して説明した幾つかの実装では、RPLネットワークのノードとして構成されたコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図3に記載の動作を実施する。説明のために、プロセス300は、
図1-2に描く例を参照して説明する。しかしながら、他の実装も可能である。
【0050】
ブロック310において、プロセス300は、RPLネットワーク内のノードによって、RPLネットワーク内の隣接ノードのグループを判定することを含む。ノードは、ステップ202a、202b、又は202cに関して、ノード111によって送信される隣接ディスカバリメッセージなどの、送信される隣接ディスカバリメッセージに基づいて隣接ノードを判定し得る。隣接ディスカバリメッセージは、マルチキャストメッセージとして送信されて得る。更に、隣接ディスカバリメッセージは、再送に利用可能では無いと表示され得る。場合によって、マルチキャスト隣接ディスカバリメッセージは、送信ノードとの直接的な通信リンクを有する追加のノードに送信され得、送信ノードとの直接的な通信リンクを有しないどの更なるノードにも再送され得ない。
【0051】
幾つかの実装では、ノードは、ノードとの直接的な通信リンクを有する隣接ノードなどの、隣接ディスカバリメッセージを受信する一つ若しくは複数の追加ノードから応答を受信し得る。更に、ノードは、少なくとも、応答に含まれる情報に基づいて、隣接関係を確立し得る。更に、ノードは、一つ若しくは複数の隣接検出メッセージなどを介して、隣接ノードの夫々との隣接関係を管理し得る。隣接検出メッセージは、(例えば、各隣接ノードに)複数回送信される、生成された隣接検出メッセージ、又は、隣接ノードの夫々の一つに夫々送信される複数の生成された隣接検出メッセージを含む、ユニキャストメッセージとして送信され得る。隣接ノードは、隣接検出メッセージに応答するように構成され得る。場合によって、ノードは、そのような応答に基づいて、隣接関係を管理し得る。
【0052】
ブロック320において、プロセス300は、ノードによって、隣接ノードのグループ内の第1の隣接ノードに関して第1の隣接関係を確立することを含む。第1の隣接関係は、ノードの親ステータス、又は第1の隣接ノードの子ステータスのうちの、一つ若しくは複数を示し得る。ブロック330において、プロセス300は、ノードによって、隣接ノードのグループ内の第2の隣接ノードに関する第2の隣接関係を確立することを含む。第2の隣接関係は、ノードの子ステータス、又は第2の隣接ノードの親ステータスのうちの、一つ若しくは複数を示し得る。例えば、ノード111は、ノード112及び113の各々と隣接関係を確立し得る。ノード112に関する第1の隣接関係は、ノード111の親ステータス及びノード112の子ステータスを示し得る。ノード113に関する第2の隣接関係は、ノード113の親ステータス及びノード111の子ステータスを示し得る。幾つかの実装では、ブロック320及び330に関して説明した動作は、様々な順序で実行され得る。例えば、ノードは、一つ若しくは複数の子ノードとの別の隣接関係を確立する前に、親ノードとの隣接関係を確立し得る(例えば、ノードは、ブロック320に関して一般的に説明されるような子を確立する前に、ブロック330に関して一般的に説明されるような親を確立してもよい)。
【0053】
ブロック340において、プロセス300は、ノードによって、隣接ノードのグループのサブセットに隣接検出メッセージを送信することを含む。サブセットは、第1の隣接ノードがノードに関して子ステータスを有することに基づいて、第1の隣接ノードを除外し得る。更に、サブセットは、第2の隣接ノードがノードに関して親ステータスを有することに基づいて、第2の隣接ノードを含み得る。場合によって、グループ内の追加の隣接ノードは、ノードに関して非子ステータス(例えば、ピアステータス)を有することに基づいて、サブセットに含まれ得る。
【0054】
ブロック350において、プロセス300は、ノードによって、第1の隣接ノードから受信する追加の隣接検出メッセージに応答することを含む。例えば、ノード112から隣接検出メッセージを受信することに応答して、ノード111は、応答をノード112に送信し得る。場合によって、ブロック350に関連する動作は、第1の隣接ノードがノードに追加の隣接検出メッセージを送信しない場合など、選択的であってもよい。
【0055】
幾つかの実装では、RPLネットワーク内のノードは、子ノードを親ノードに変更する、又は、親ノードを子ノードに変更するなど、隣接ノードとの隣接関係を変更し得る。
図4は、RPLネットワーク内のノード間の隣接関係を変更するプロセス400の一例を示すフローチャートである。
図1~
図3に関して説明したような幾つかの実装では、RPLネットワークのノードとして構成されたコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図4に記載の動作を実行する。説明のために、プロセス400は、
図1~
図3に描く例を参照して説明される。しかしながら、他の実装も可能である。
【0056】
ブロック410において、プロセス400は、RPLネットワークにおいて隣接ディスカバリメッセージを受信することを含む。隣接ディスカバリメッセージは、RPLネットワーク内のノードによって受信され、RPLネットワーク内の第1の隣接ノードによって送信され得る。更に、ノードと第1の隣接ノードとは、ノードの親子関係を示す隣接関係や、第1の隣接ノードの親子関係を示す隣接関係など、相互に関する隣接関係を有し得る。例えば、ノード111は、RPLネットワーク100内のノード113から、隣接ディスカバリメッセージを受信し得る。また、ノード111は、ノード113の親ステータスとノード111の子ステータスを示す、ノード113との隣接関係を有し得る。
【0057】
ブロック410に関する幾つかの場合、隣接ディスカバリメッセージは、エラーコードを含むか、またはそうでなければ、エラーコードを示し得る。例えば、ノード111は、隣接ディスカバリメッセージに含まれて、ノード113が親ノードを有していないことを示すエラーコード、若しくはノード113が新しい親ノードを求めていることを示すエラーコード、又は、エラーコードに関連する追加情報を、受信し得る。
【0058】
ブロック420において、プロセス400は、ノードによって、当該ノードに関する第1の隣接ノードの親ステータスを判定することを含む。親ステータスは、第1の隣接ノードに関する隣接関係に基づいて判定され得る。例えば、ノード113から隣接ディスカバリメッセージを受信することに応答して、ノード111は、ノード113に関する隣接関係に基づいて、ノード113がノード111に関する親ステータスを有するかどうかを判定し得る。
【0059】
ブロック430において、プロセス400は、ノードによって、第1の隣接ノードに関する隣接関係を変更することを含む。変更される隣接関係は、ノードに関する第1の隣接ノードの親ステータスを取り消し得る。更に、変更される隣接関係は、ノードの親ステータス、又は第1の隣接ノードの子ステータスのうちの、一つ若しくは複数を示し得る。例えば、ノード111は、ノード113の親ステータスを取り消すために、ノード111の追加の親ステータスを示すために、若しくは、ノード113の子ステータスを示すために、又は、それらの任意の組み合わせのために、ノード113との隣接関係を変更し得る。
【0060】
ブロック440において、プロセス400は、ノードによって、RPLネットワークの第2の隣接ノードとの追加の隣接関係を確立することを含む。追加の隣接関係は、第1の隣接ノードの親ステータス、又はノードの子ステータスのうちの、一つ若しくは複数を示し得る。ノード111は、例えば、ノード114に関して、ノード114の親ステータスとノード111の子ステータスとを示す、追加の隣接関係を確立し得る。
【0061】
ループの形成の防止
図5は、特定の実装に係る、RPLネットワーク100のデータフローの一例を示す。幾つかの実装では、
図5に描くデータフローは、RPLネットワーク100のノード間のルートにおけるループの形成を回避することができる。例えば、親を求めているノードは、隣接ディスカバリメッセージを送信するなどして、自身の子の子ノードになることを要求することがある。場合によっては、
図5に関して説明するステップは、ノードが自身の子との間に子関係を確立することを防ぎ得る。更に、
図5に関して説明するステップは、ノードが追加のード(例えば、ノードの子ではない)と親関係を確立する原因となることがある。
【0062】
図5において、ノード111は、RPLネットワーク100内の一つ若しくは複数の追加ノードに関して、隣接関係を確立し得る。例えば、ステップ502において、ノード111は、ノード113に関して、親子関係を示す隣接関係を確立し得る。ステップ502で確立される隣接関係は、ノード113の親のステータスとノード111の子のステータス(例えば、子ノード111の親としてのノード113)を示し得る。ノード111は、RPLネットワーク100において、親ステータスと子ステータスの両方を有し得る。例えば、ステップ504において、ノード112は、ノード111に関して親子ステータスを示す追加の隣接関係を確立し得る。ステップ504で確立される追加の隣接関係は、ノード111の親ステータスとノード112の子ステータスを示し得る(例えば、ノード111は、子ノード112の親である)。
【0063】
図5のステップ506において、ノード113は、自身の親ノードへの接続を失い得る。例えば、ノード113は、ノード113の例示的な親として表1に示されている、ルートノード110への接続を失い得る。場合によって、ノード113は、新しい親ノードを見出すことを試み得る。例えば、ステップ508において、ノード113は、ノード111のような、RPLネットワーク100内の一つ若しくは複数のノードに隣接ディスカバリメッセージを送信し得る。ステップ508に関して幾つかの場合では、隣接ディスカバリメッセージは、複数の受信者ノードに向けられるマルチキャストメッセージであってもよい。マルチキャストメッセージは、ノード113との通信経路を有する(例えば、再送信せずに、マルチキャストメッセージを直接受信できる)受信者ノードによって受信され得る。更に、ステップ508に関する隣接ディスカバリメッセージは、ノード113が親を持たないことを示すエラーなどの、エラーコードを含み得る。
【0064】
ノード111は、ステップ508で送信される隣接ディスカバリメッセージを受信し得る。ノード111は、送信ノード113がノード111に対してのステータスを有することを判定し得る。ノード113が親ステータスを有することを判定することに応答して、ノード111は、ステップ510などで、隣接ディスカバリメッセージに対する応答を送信し得る。応答は、ノード113に向けられるユニキャストメッセージであってもよい。ステップ510に関する応答は、ノード111がノード113の親ノードとして利用可能で無いことを示すエラーコードなどの、エラーコードを含み得る。場合によって、ステップ510に関するエラーコードは、 “Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)”に対する標準RFC6775に準拠した“Neighbor Cache Full”エラーコードなどの、メモリキャッシュのステータスを示してもよい。更に、ステップ510に関するエラーコードは、標準RFC6775に記載のエラーコードに加えて記載されている“No Route”エラーコードなどの、上向きのルート(例えば、ルートノード110に向かうルート)が要求ノードに利用可能でないことを示すものであってもよい。ステップ510でエラーコード付きの応答を受信することに基づいて、ノード113は、ノード111の子ステータスを示す隣接関係を確立(又は保持)し得る。更に、ノード113は、RPLネットワーク100内の追加ノードと親隣接関係を確立し得る(又は、確立を試み得る)。場合によって、子ノードから受信するエラーコードに基づいて子ノードとの子隣接関係を確立又は維持することで、ノード111とノード113との間のループなど、RPLネットワーク100にループが形成されることを回避できる。
【0065】
RPLネットワークの幾つかの実装では、親ノードを求めているノードは、エラーコードを伴う応答を提供した追加ノードに関連するカウンタの値を判定し得る。例えば、ステップ512において、ノード113は、ノード111に関連するカウンタの値を判定し得る。場合によって、カウンタは、ステップ510に関連してエラーコードを伴う応答を受信したことに応答して、ノード113によって初期化され得る。初期化されるカウンタは、ステップ510で受信される応答に基づく値を有し得る。更に、ノード113は、ノード111に対して既に実行中のカウンタを有し得、ノード113は、実行中のカウンタの値を確認し得る。場合によって、カウンタは、ステップ510で受信される応答に示される寿命値に基づく登録カウンタなどの、寿命登録カウンタであってもよい。例えば、寿命値は、“Neighbor Discovery for IP version 6 (IPv6)”に対する標準RFC4861に準拠するものであってもよい。
【0066】
ステップ510で初期化されるカウンタは、寿命値によって示される期間などの、ある期間をカウント(例えば、インクリメント、又はデクリメント)し得る。場合によって、ノード113は、カウンタに関連付けられる期間の間、ノード111からの追加の隣接ディスカバリメッセージを保留する。例えば、ステップ510でノード111により送信される応答が、ノード111が、特定の期間(例えば、1日)を示す特定の寿命値を有することを示している場合、ノード113は、その特定の期間、ノード111からの追加の隣接ディスカバリメッセージを保留する。カウンタの完了時にノード113が未だ親を求めている場合、ノード113は、特定の期間後(例えば、1日後)にノード111に追加の隣接ディスカバリメッセージを送信し得る。
【0067】
幾つかの実装では、親ノードを求めているノードは、親を求めているノードの子ではない新しい親ノードを見付けることができない場合がある。ノードは、登録解除メッセージを送信し得る。登録解除メッセージは、親を探しているノードの子など、以前にエラーコードを伴う応答を提供した追加ノードに送信され得る。更に、登録解除メッセージは、追加ノードの子ステータスを取り消すなど、隣接関係の変更を示してもよい。例えば、ステップ514において、ノード113は、登録解除メッセージをノード111に送信し得る。登録解除メッセージは、ノード113とノード111との間の隣接関係の変更を示すエラーコードを含み得る。場合によって、ノード111は、ノード113に関する隣接関係を変更して、ノード111の子ステータス及び/又はノード113の親ステータスを取り消し得る。更に、ノード111は、ノード113に関する隣接関係を変更して、ノード113の追加のステータス(例えば、ピア、子)を示し得る。
【0068】
ステップ516で、ノード113は、追加の隣接ディスカバリメッセージをノード111に送信し得る。追加の隣接ディスカバリメッセージは、ノード113が親ノードを求めていることを示し得る。追加の隣接ディスカバリメッセージに基づいて、ノード111は、ノード111が親として利用可能であることを示す応答(例えば、エラーコードを省略した応答)を、ノード113に送信し得る。又、ノード113は、ノード111の親ステータスとノード113の子ステータスを示す隣接関係をノード111との間で確立(又は、変更)し得る。場合によって、ステップ514に関する登録解除メッセージと、ステップ516に関する追加の隣接ディスカバリメッセージは、ステップ512で初期化されるカウンタが示す期間に、送信され得る。例えば、ノード113が、カウンタに関連付けられる期間中に新しい親を見付けることができない場合、ノード113は、カウンタが実行されている間に登録解除メッセージ又は追加の隣接ディスカバリメッセージを送信し得る。場合によって、登録解除メッセージ及び追加の隣接ディスカバリメッセージを送信することによって、ノード113は、ノード111の寿命値に基づくカウンタが実行されている間に、ノード111を介して、ルートノード110への新しいルートを確立することができる。
【0069】
RPLネットワークのいくつかの実装では、エラーコードを受信するノードは、追加のノード(例えば、エラーコードを提供しなかった追加のノード)と隣接関係を確立し得る。ステップ530において、例えば、ノード111は、その親ノードへの接続を失い得る。親ノードへの接続が失われたことを判定することに応答して、ノード111は、新しい親ノードを見付けることを試み得る。例えば、ステップ532において、ノード111は、ノード112などの、RPLネットワーク100内の一つ若しくは複数のノードに、隣接ディスカバリメッセージを送信し得る。ステップ532に関して、場合によっては、隣接ディスカバリメッセージは、複数の受信者ノードに向けられるマルチキャストメッセージであってもよい。更に、ステップ532における隣接ディスカバリメッセージは、ノード111が親を持たないことを示すエラーコードなどの、エラーコードを含み得る。
【0070】
ステップ534において、ノード111は、ノード112がノード111に対する親ノードとして利用可能で無いことを示すエラーコードを含む応答を、ノード112から受信し得る。場合によって、ステップ534でのエラーコードは、親として利用可能で無いことを示す特定のエラーコードなどの、ステップ510で説明したエラーコードと、同じである、又は、類似している。ステップ534でエラーコードを伴う応答を受信することに基づいて、ノード111は、ノード112の子ステータスとノード111の親ステータスとを示す隣接関係などの、ノード112との隣接関係を確立(又は、保持)し得る。場合によって、ノード111は、ステップ534で受信する応答に基づいて、ノード112から追加の隣接ディスカバリメッセージが保留されている期間を示す寿命登録カウンタなどの、カウンタを初期化し得る。
【0071】
ステップ534でエラーコードを伴う応答を受信することに応答して、ノード111は、RPLネットワーク100内の追加のノードと親隣接関係を確立し得る(又は、確立を試み得る)。例えば、ステップ536にて、ノード111は、ノード114に関して追加の隣接関係を確立し得る。ノード114との追加の隣接関係は、ノード114の親ステータス及びノード111の子ステータスを示し得る。場合によって、追加の隣接関係は、新しい親を見つける目的でノード111が送信するマルチキャスト隣接ディスカバリメッセージなどの、一つ若しくは複数の追加メッセージに基づいて、確立又は変更される。更に、追加の隣接関係は、従前に送信された隣接ディスカバリメッセージに対するノード114からの応答など、従前に受信した情報に基づいて、確立又は変更される。場合によって、子ノードから受信するエラーコードに基づいて追加ノードとの親隣接関係を確立することで、ノード111とノード112との間のループなど、RPLネットワーク100にループが形成されることを、回避できる。
【0072】
図6は、親子ステータスの判定に基づいてRPLネットワークにおけるループの形成を回避するプロセス600の一例を示すフローチャートである。
図1~5に関して説明したような、幾つかの実装では、RPLネットワークのノードとして構成されたコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図6に記載の動作を実施する。例示の目的で、プロセス600は、
図1~5に描かれる例を参照して説明される。しかしながら、他の実装も可能である。
【0073】
ブロック610において、プロセス600は、RPLネットワーク内の第1のノードによって、RPLネットワーク内の第2のノードに関する第1の隣接関係を確立することを含む。第1の隣接関係は、第1のノードの親ステータス又は第2のノードの子ステータスを示し得る。ブロック620において、プロセス600は、第1のノードによって、RPLネットワーク内の第3のノードに関する第2の隣接関係を確立することを含む。第2の隣接関係は、第1のノードの子ステータス又は第3のノードの親ステータスを示し得る。例えば、ノード111は、ノード112及び113の夫々と、隣接関係を確立(又は、保持)し得る。ノード112に関する第1の隣接関係は、ノード111の親ステータス及びノード112の子ステータスを示し得る。ノード113に関する第2の隣接関係は、ノード113の親ステータス及びノード111の子ステータスを示し得る。幾つかの実装では、ブロック610及び620に関して記載の動作は、様々な順序で実行され得る。例えば、ノードは、一つ若しくは複数の子ノードとの別の隣接関係を確立する前に、親ノードとの隣接関係を確立し得る(例えば、ノードは、ブロック610に関して一般的に説明されるように子を確立する前に、ブロック620に関して一般的に説明されるように親を確立し得る)。
【0074】
ブロック630において、プロセス600は、第1のノードによって、第3のノードから送信される隣接ディスカバリメッセージ、例えば、第3のノードが親を求めていることを示す隣接ディスカバリメッセージを、受信することを含む。隣接ディスカバリメッセージは、マルチキャストメッセージとして受信され得る。更に、隣接ディスカバリメッセージは、第2の隣接関係の、要求される変更を示し得る。場合によって、要求される変更を満たすことで、第1又は第3のノードのステータスが修正される(例えば、第1のノードのステータスが親に修正され、第3のノードのステータスが子に修正される)。例えば、ノード111は、ステップ508などの、ノード113が親ノードを求めていることを示す隣接ディスカバリメッセージをノード113から受信し得る。
【0075】
ブロック640において、プロセス600は、第1のノードによって、第3のノードの親ステータスを判定することを含む。場合によって、第1のノードは、第3のノードに関する第2の隣接関係に基づいて、親ステータスを判定する。例えば、ノード113から隣接ディスカバリメッセージを受信することに応答して、ノード111は、ノード113がノード111に関して親ステータスを有することを判定し得る。
【0076】
ブロック650において、プロセス600は、第1のノードによって、第3のノードに、隣接ディスカバリメッセージに対する応答を送信することを含む。応答は、第2の隣接関係の要求される変更が利用可能で無いことを示すエラーコードなどを含み得る。例えば、エラーコードは、第1のノードが第3のノードの親として利用可能で無いことを示し得る。例えば、ノード111は、ステップ510などにて、エラーコードを伴う応答をノード113に送信し得る。場合によって、第1のノードが送信する応答は、第3のノードがカウンタを初期化することができる寿命値などの、第1のノードに対する寿命値を示し得る。
【0077】
ブロック660において、プロセス600は、第1のノードによって、追加の隣接ディスカバリメッセージを第2のノードに送信することを含む。追加の隣接ディスカバリメッセージは、マルチキャストメッセージとして送信され得る。追加の隣接ディスカバリメッセージは、第1の隣接関係の要求される変更を示し得、要求される変更を充足することで、第1又は第2のノードのステータスが変更される(例えば、第1のノードのステータスが子に変更され、第2のノードのステータスが親に変更される)。場合によって、第1のノードは、第3のノードなど、第1のノードが親関係にあるノードとの接続を失ったことに基づいて、追加の隣接ディスカバリメッセージを送信し得る。例えば、ノード111は、ステップ530で親の接続を失ったことに基づいて、ステップ532などで、ノード112に隣接ディスカバリメッセージを送信し得る。更に、ステップ532に関しての隣接ディスカバリメッセージは、ノード111とノード112との間の隣接関係に対する、要求される変更を示し得る。
【0078】
ブロック670において、プロセス600は、第1のノードによって、及び第2のノードから、追加の隣接ディスカバリメッセージに対する追加の応答を受信することを含む。追加の応答は、第1の隣接関係の要求される変更が利用可能で無いことを示す、エラーコードなどを含み得る。例えば、エラーコードは、第2のノードが第1のノードの親として利用可能で無いことを示し得る。例えば、ノード111は、ステップ534のように、エラーコードを伴う応答をノード112から受信し得る。場合によって、第2のノードが送信する追加の応答は、第2のノードに対する寿命値を示し得る。更に、第1のノードは、第2のノードに関連するカウンタを初期化し得る。カウンタによって示される期間の間(例えば、カウンタがインクリメント又はデクリメントしている間)、第1のノードは、第2のノードからの更なる隣接ディスカバリメッセージを保留し得る。
【0079】
ブロック680において、プロセス600は、第1のノードによって、RPLネットワーク内の第4のノードに関して、第3の隣接関係を確立することを含む。第3の隣接関係は、エラーコードを伴う追加の応答の受信に応答して、確立され得る。更に、第3の隣接関係は、第4のノードの親ステータス又は第1のノードの子ステータスを示し得る。例えば、ノード111は、ステップ536のように、ノード114との隣接関係を確立(又は変更)し得る。
【0080】
ブロック660、670、及び680は、ブロック610~650に関連して説明されているが、他の実装が可能である。例えば、ブロック660~680に関して概略説明されているように、新しい親を見出す目的で隣接ディスカバリメッセージを送信するノードは、ブロック610~650に関して概略説明されているように、別の隣接ディスカバリメッセージを受信又は応答することができるが、その必要も必ずしも無い。
【0081】
図7は、特定の実装に係る、RPLネットワーク100のためのデータフローの例を示す。幾つかの実装では、
図7に描くデータフローは、ノードに、より信頼性の高いランキングを有する追加のノードとの親関係を確立させるなどして、RPLネットワーク100のノード間のルートにおけるループの形成を回避し得る。例えば、親を求めているノードは、孫ノードのような、信頼性の低いノードの子ノードになることを要求し得る。場合によって、
図7に関して説明するステップは、ノードが孫ノード若しくは他の信頼性の低いノードとの、子関係を確立することを回避し得る。更に、
図7に関して記載するステップは、ノードが高い信頼性を有する追加のノード(例えば、孫ノードではない)と親関係を確立するように為し得る。
【0082】
図7において、ノード111は、RPLネットワーク100内の一つ若しくは複数のノードに、隣接ディスカバリメッセージを送信し得る。例えば、ステップ702aにおいて、ノード111は、ノード113に、隣接ディスカバリメッセージを送信し得る。ステップ702b及びステップ702cにおいて、ノード111は、隣接ディスカバリメッセージをノード112及びノード114に、夫々送信し得る。場合によって、隣接ディスカバリメッセージは、複数の受信者に向けられるマルチキャストメッセージであり得る。例えば、ノード111は、ステップ702a、702b、及び702cに関して、マルチキャストの隣接ディスカバリメッセージを一度だけ送信し得、マルチキャストの隣接ディスカバリメッセージは、ノード113、112、及び114の夫々により受信され得る。
【0083】
ステップ704aにおいて、ノード113は、ノード111に応答を送信する。更に、ステップ704bではノード112が応答を送信し、ステップ704cではノード114が応答を送信する。なお、応答は夫々、ノード111に向けたユニキャストメッセージであり得る。ステップ704a、704b、及び704cに関して、応答は、夫々の応答ノードに関する情報、例えば、ランキング、IPアドレス、MACアドレス、若しくは応答ノードに関する他の適切な情報を、含み得る。場合によって、ノード111は、応答ノード113、112、若しくは114のうちの、一つ若しくは複数に関連する伝送メトリクスを受信する。伝送メトリクスは、応答ノードがルートノード110にメッセージを送信又はルーティングする信頼性を記述し得る。例えば、伝送メトリクスは、応答ノードと追加ノードとの間でメッセージを伝送する時間、応答ノードとルートノード110との間のルーティングノード(例えば、「ホップ」)の量、応答ノードと追加ノードとの間で失われるメッセージの量、又は、応答ノードのパフォーマンスの信頼性を記述する他の適切な情報を、記述し得る。場合によって、ノード111は、ステップ704a~704cに関して応答に含まれる情報に基づいて、伝送メトリクスを受信する。
【0084】
ノード111は、ノード113、112、及び114に対する夫々のランキング及び伝送メトリクスを含む、ステップ704a~704cに関する応答を受信し得る。ステップ706において、ノード111は、伝送メトリクスに基づいて、自身のランキングを判定し得る。例えば、ノード111は、表2に示す20の例示的なランキングを自身のために判定し得る。ステップ706で判定されるランキングは、ノード112、113、若しくは114のうちの一つ若しくは複数を含む、RPLネットワーク100の追加のノードに対する、RPLネットワーク100を介してメッセージを送信するノード111の能力を示し得る。
【0085】
ステップ708において、ノード111は、ノード113から隣接ディスカバリメッセージを受信し得る。例えば、ステップ708で受信する隣接ディスカバリメッセージは、ノード113が親ノードを求めていることを示すマルチキャスト隣接ディスカバリメッセージであり得る。更に、ステップ708で受信する隣接ディスカバリメッセージは、表2のノード113に対して示される例示の10のランキングのように、ノード113のランキングを含み得る。
【0086】
ステップ710において、ノード111は、自身のランキングを、ステップ708に関して受信されるランキングと比較し得る。例えば、ノード111は、20という数値と10という数値とを比較し得る。更に、ノード111は、ノード113及びノード111の夫々のランキングに基づいて、ノード113がノード111と比較してより高い信頼性を有する(例えば、10のランキングは、20のランキングと比較してより高い信頼性を示す)と判定し得る。
【0087】
ステップ712において、ノード111は、ノード111がノード113の親として利用可能で無いことを示すエラーコードなどの、エラーコードを伴う応答をノード113に送信し得る。エラーコードを伴う応答は、ステップ710で実行されるランキングの比較に基づいて、ステップ712で送信され得る。場合によって、より高いランクの信頼性を有するノードから受信される隣接ディスカバリメッセージに応答してエラーコードを送信することで、相対的に高い信頼性を有するノード113と相対的に低い信頼性を有するノード111との間のループなど、RPLネットワーク100内にループが形成されることを回避し得る。
【0088】
ステップ730において、ノード111は、ノード112から隣接ディスカバリメッセージを受信し得る。隣接ディスカバリメッセージは、表2のノード112に対して示される例示的な34のランキングのような、ノード112のランキングを含み得る。
【0089】
ステップ732において、ノード111は、自身のランキングを、ステップ730に関して受信したランキングと比較し得る。例えば、ノード111は、20の数値を34の数値と比較し得る。更に、ノード111は、ノード112及びノード111の夫々のランキング(例えば、34のランキングは、20のランキングと比較して低い信頼性を示す)に基づいて、ノード112がノード111と比較して低い信頼性を有すると判定し得る。
【0090】
ステップ734において、ノード111は、ステップ730で受信した隣接ディスカバリメッセージに対する応答をノード112に送信し得る。ステップ734で送信される応答は、ノード112の親ノードとしてのノード111の利用可能性を示し得る。利用可能性を示す応答は、ステップ732で実行されたランキングの比較に基づいて送信され得る。
【0091】
場合によって、ノードランキングの比較に基づいて、隣接関係が確立される。例えば、ステップ736において、ノード112は、ステップ734で示された利用可能性に応答して、ノード111に関して隣接関係を確立し得る。ステップ736で確立される隣接関係は、ノード111の親ステータスとノード112の子ステータスを示し得る。
【0092】
場合によって、より高いランクの信頼性を有するノードから受信する隣接ディスカバリメッセージに応答してエラーコードを送信することにより、RPLネットワーク100において、相対的に高い信頼性を有するノードと相対的に低い信頼性を有するノードとの間のループなどが、形成されることを防止することができる。更に、信頼性の高いノードへの応答でエラーコードを送信することで、親ノード、親ノードの子、子ノードの子の間(例えば、「祖父母」ノードと「孫」ノードとの間のループ)など、2つ以上のノードの間でループが形成されることを防止することができる。例えば、ノード111は、
図1Bに関して説明するように、ノード112の子であるノード115に、隣接ディスカバリメッセージを送信し得る。ノード115は、(
図1Bに描く例によれば)ノード111と親子関係を持たない。仮に、ノード111がノード115と親関係を確立した場合、ノード111がノード112の親となり、ノード112がノード115の親となり、ノード115がノード111の親となる、3ノードループが形成される可能性がある。しかし、RPLネットワーク100では、ノード115は、ノード111とノード115とのランキングの比較に基づいて、ノード111の方が相対的に信頼性が高いと判定する。ノード115は、エラーコードを含む応答を送信し、ノード111は、ノード114のような追加のノードとの間で親関係を確立する。したがって、ノードランキングの比較に基づいて隣接ディスカバリメッセージに応答することで、RPLネットワーク100におけるループの形成を防止することができる。
【0093】
幾つかの実装では、RPLネットワーク内のノードは、ノードがRPLネットワーク内に親を有するかどうかに基づく調整など、自身のランキングの調整を行い得る。場合によって、ランキングの調整は、“RPL:IPv6 Routing Protocol for Low-Power and Lossy Networks”の標準RFC 6550で説明されているRPLポイズニングプロセスなど、無限のランキング(例えば、無限の信頼性)を判定するプロセスを含む。例えば、RPLネットワーク100がRPLポイズニングを実装する場合、ノード113は、他のノードによって無限と解釈されるランキングなど、非常に悪い信頼性を反映するように、そのランキングを調整することができる。エラーコードを伴う応答を受信した後に、ノード113は、調整されたランキングに基づいて、ノード111などの、別のノードと親関係を確立し得る。例えば、ノード111のランキングとノード113の調整されたランキングとの追加の比較(例えば、無限のランキングと比較して20のランキング)は、調整されたノード113がノード111と比較して信頼性が低いことを示す。更に、ノード111は、追加の比較に基づいて、ノード113の親として利用可能であることを示す応答を提供し得る。
【0094】
図8は、ノードランキングの比較に基づいてループ形成を回避するためのプロセス800の例を示すフローチャートである。
図1~7に関して説明した幾つかの実装において、RPLネットワークのノードとして構成されるコンピューティングデバイスは、適切なプログラムコードを実行することによって、
図8に記載の動作を実行する。説明のために、プロセス800は、
図1~7に描く例を参照して記載する。しかしながら、他の実装も可能である。
【0095】
ブロック810において、プロセス800は、RPLネットワークにて隣接ディスカバリメッセージを送信することを含む。隣接ディスカバリメッセージは、RPLネットワーク100のノード111など、RPLネットワークの第1のノードによって送信され得る。更に、隣接ディスカバリメッセージは、ノード112~ノード119のうちの一つ若しくは複数など、RPLネットワーク内の追加のノードに送信され得る。隣接ディスカバリメッセージは、マルチキャストメッセージとして送信され得、又は、再送に利用可能で無いと示され得る。
【0096】
ブロック820において、プロセス800は、第1のノードによって、RPLネットワーク内の一つ若しくは複数の追加のノードから応答を受信することを含む。各応答は、夫々の応答ノードのランキングを示し得る。加えて、各応答は、RPLネットワーク内の夫々のノードの通信経路の信頼性を記述する伝送メトリクスなど、夫々の応答ノードの伝送メトリクスを示し得る。例えば、ノード111は、ノード112、113、又は114のうちの、一つ若しくは複数から、夫々の伝送メトリクスを示す応答を受信し得る。伝送メトリクスは、ノード112、113、又は114がメッセージをルートノード110に送信又はルーティングする信頼性を示し得る。
【0097】
ブロック830において、プロセス800は、ノードによって、第1のノードの第1のランキングを判定することを含む。第1のランキングは、第1のノードとRPLネットワークのルートノードとの間の通信経路など、第1のノードの通信経路の信頼性を示し得る。例えば、ノード111は、ノード111がルートノード110にメッセージを送信又はルーティングする信頼性を示す、自身のためのランキングを判定し得る。幾つかの実装において、第1のランキングは、ブロック820に関して受信した伝送メトリクスに少なくとも部分的に基づいて、判定され得る。例えば、ノード111は、ノード111からルートノード110にメッセージをルーティングし得るノードの伝送メトリクスに、部分的に基づいて、自身のランキングを判定し得る。
【0098】
ブロック840において、プロセス800は、第1のノードによって、RPLネットワーク内の第2のノードから第2の隣接ディスカバリメッセージを受信することを含む。第2の隣接ディスカバリメッセージは、第2のノードの第2のランキングを示し得る。例えば、ノード111は、ステップ708に関するように、ノード113のランキングを示す隣接ディスカバリメッセージをノード113から受信し得る。
【0099】
ブロック850において、プロセス800は、第1のノードによって、第2のノードが第1のノードよりも高い信頼性を有することを判定することを含む。判定は、第1のランキング及び第2のランキングに基づいて、例えば、ランキングによって示される値の比較に基づいて、行われ得る。例えば、ノード111は、ランキングの値の数値比較を行うなどして、ステップ710に関して、自身のランキングをノード113のランキングと比較し得る。その比較に基づいて、ノード111は、ノード113がより高い信頼性を有すると判定し得る。
【0100】
ブロック860において、プロセス800は、第1のノードによって、及び第2のノードに、第2の隣接ディスカバリメッセージに対する応答を送信することを含む。応答は、第1のノードが第2のノードの親として利用可能で無いことを示すエラーコード等の、エラーコードを含み得る。例えば、ステップ712に関して、ノード111は、ノード111がノード113の親として利用可能で無いことを示すエラーコードを伴う応答を、ノード113に送信し得る。
【0101】
ブロック870において、プロセス800は、第1のノードによって、RPLネットワーク内の第3のノードから第3の隣接ディスカバリメッセージを受信することを含む。第3の隣接ディスカバリメッセージは、第3のノードの第3のランキングを示し得る。例えば、ノード111は、ステップ730に関するように、ノード112のランキングを示す隣接ディスカバリメッセージをノード112から受信し得る。
【0102】
ブロック880において、プロセス800は、第1のノードによって、第3のノードが第1のノードよりも低い信頼性を有することを判定することを含む。判定は、第1のランキング及び第3のランキングに基づいて、例えば、ランキングによって示される値の比較に基づいて、行われ得る。例えば、ノード111は、ランキングの値の数値比較を行うなどして、ステップ732に関して、自身のランキングをノード112のランキングと比較し得る。その比較に基づいて、ノード111は、ノード112がより低い信頼性を有すると判定し得る。
【0103】
ブロック890において、プロセス800は、第1のノードによって、及び第3のノードに、第3の隣接ディスカバリメッセージに対する応答を送信することを含む。応答は、第1のノードが第3のノードの親として利用可能であることを示し得る。場合によって、第3のノードは、第3の隣接ディスカバリメッセージに対する応答に基づいて、親子関係を確立し得る。例えば、ステップ734に関して送信された、ノード111の利用可能性を示す応答に応答して、ノード112は、ステップ736のように、ノード111の親ステータス及びノード112の子ステータスを示す隣接関係を確立し得る。
【0104】
ブロック870、880、及び890は、ブロック810~860に関連して説明しているが、他の実装が可能である。例えば、ランキングの比較に基づいて、ブロック870~890に関連して概略記載するように、親としての利用可能性を示す応答を送信するノードは、ブロック810~860に関連して概略記載するように、別のランキング比較を実行し得、又はエラーコードを伴う別の応答を送信し得るが、必ずしもその必要も無い。
【0105】
場合によって、
図3、4、6、又は8の何れかに関連して記載する一つ若しくは複数の動作が、
図3、4、6、又は8の別のプロセスに関連して記載する追加の動作に加えて、又はそれらと組み合わせて、実行され得る。例えば、(
図3に関連して概略記載するように)RPLネットワークにて隣接検出メッセージを保留するノードは、(
図4に関連して概略記載するように)追加のノードとの隣接関係を変更し得る。更に、(概略、
図8に関連して記載するように)ランキングの比較に基づいて隣接ディスカバリメッセージに対する応答を送信するノードは、(概略、
図6に関連して記載するように)親子ステータスに基づいて隣接ディスカバリメッセージに対する応答も送信し得る。説明した動作の追加の組み合わせを含む追加の実装が、可能である。
【0106】
ノード構成例
本明細書で記載する動作を実行するために、任意の適切なコンピューティングシステム、又はコンピューティングシステムのグループを使用することができる。例えば、
図9は、特定の実装に係る、RPLネットワーク100等の、RPLネットワークのノードとして動作するように構成されたコンピューティングデバイス901を示すブロック図である。
【0107】
コンピューティングデバイス901の示される例は、一つ若しくは複数のメモリデバイス904に通信可能に結合する一つ若しくは複数のプロセッサ902を含む。プロセッサ902は、コンピュータ実行可能プログラムコードを実行する、又は、メモリデバイス904に格納される情報にアクセスする。プロセッサ902の例には、マイクロプロセッサ、特定用途向け集積回路(「ASIC」)、フィールドプログラマブルゲートアレイ(「FPGA」)、又は、他の適切なプロセッシングデバイスが含まれる。プロセッサ902は、一つを含む、任意の数のプロセッシングデバイスを含むことができる。
【0108】
メモリデバイス904は、ネットワークテーブル930、隣接ディスカバリメッセージ940、応答950、及び、他の受信した若しくは判定した値又はデータオブジェクトを、記憶するための任意の適切な非一時的コンピュータ読取可能媒体を含む。ネットワークテーブル930は、例えば、RPLネットワーク100内の追加のノードに関する情報、例えば、ランキング、応答時間、ルート、隣接関係、親子ステータス、又は、他の適切な情報を、示すことができる。コンピュータ読取可能媒体は、コンピュータ読取可能命令若しくは他のプログラムコードをプロセッサに提供することができる、任意の電子、光学、磁気、又は、他の記憶デバイスを含むことができる。コンピュータ読取可能媒体についての非限定的な例としては、磁気ディスク、メモリチップ、ROM、RAM、ASIC、光ストレージ、磁気テープ若しくは他の磁気ストレージ、又は、プロセッシングデバイスが命令を読み取ることができるその他の媒体が挙げられる。命令は、例えば、C、C++、C#、Visual Basic、Java、Python、Perl、JavaScript、及び、ActionScriptを含む、任意の適切なコンピュータプログラム言語で書かれるコードから、コンパイラ又はインタプリタによって生成されるプロセッサ固有の命令を含み得る。
【0109】
コンピューティングデバイス901は、又、入力デバイス若しくは出力デバイスなどの多数の、外部デバイス若しくは内部デバイスを含むことができる。例えば、コンピューティングデバイス901は、入力デバイスから入力を受け取り、又は出力デバイスに出力を提供することができる、入力/出力(「I/O」)インターフェース908を備えて示されている。バス906も又、コンピューティングデバイス901に含めることができる。バス906は、コンピューティングデバイス901の一つ若しくは複数のコンポーネントを通信可能に結合することができる。
【0110】
コンピューティングデバイス901は、
図1~8に関して既に述べた一つ若しくは複数の動作を実行するようにプロセッサ902を構成する、プログラムコードを実行する。プログラムコードは、例えば、ネットワークテーブル930、隣接ディスカバリメッセージ940、応答950、又は、本明細書に記載の一つ若しくは複数の動作を実行する他の適切なアプリケーション若しくはメモリ構造の、一つ若しくは複数に関連する動作を含む。プログラムコードは、メモリデバイス904若しくは任意の適切なコンピュータ読取可能媒体に常駐し得、プロセッサ902若しくは任意の他の適切なプロセッサによって実行され得る。幾つかの実装では、上述のプログラムコード、ネットワークテーブル930、隣接ディスカバリメッセージ940、及び応答950は、
図9に示すように、メモリデバイス904に格納される。
【0111】
図9に示すコンピューティングデバイス901は、少なくとも一つのネットワークインターフェース910も含む。ネットワークインターフェース910は、RPLネットワーク100内の追加のノードの一つ若しくは複数との、有線若しくは無線データ接続を確立するのに適した任意のデバイス又はデバイスのグループを含む。ネットワークインターフェース910についての非限定の例は、Wi-Fiモデム、Bluetoothモデム、モバイルデータモデム、イーサネットネットワークアダプタ、及び/又は同様のものを含む。コンピューティングデバイス901は、ネットワークインターフェース910を使用して、RPLネットワーク100内の一つ若しくは複数の追加のノードと通信することができる。
【0112】
一般検討事項
請求項の発明の主旨についての完全な理解を提供するべく、多数の特定の詳細な説明が本明細書に記載されている。しかしながら、当業者は、請求項の発明の主旨がこれらの特定の詳細な説明無しで実施され得ることを理解するであろう。他の例では、当業者に周知であろう方法、装置、又は、システムは、請求項の発明の主旨を不明瞭にしないように、詳細には記載されていない。
【0113】
特に明記しない限り、本明細書全体において、「プロセッシング」、「コンピューティング」、「計算」、「判定」、及び「識別」などの用語を利用する説明は、一つ若しくは複数のコンピュータ又は同様の電子コンピューティングデバイス若しくはデバイス群などの、コンピューティングデバイスの動作又はプロセスを指し、コンピューティングプラットフォームのメモリ、レジスタ、若しくは他の情報記憶デバイス、伝送デバイス、又はディスプレイデバイス内部の、物理的な電子的若しくは磁気的な量として表されるデータを操作又は変換する、ということを理解されたい。
【0114】
本明細書で説明するシステム若しくはシステム群は、いかなる特定のハードウェアアーキテクチャ若しくは構成にも限定されない。コンピューティングデバイスは、一つ若しくは複数の入力を条件とした結果を提供するコンポーネントの任意の適切な配置を含むことができる。適切なコンピューティングデバイスには、コンピューティングシステムを、汎用コンピューティング装置から、本発明の主旨についての一つ若しくは複数の実装を実行する、特殊なコンピューティング装置にプログラムする、又は構成する保存されたソフトウェアに、アクセスする多目的マイクロプロセッサベースのコンピュータシステムが、含まれる。任意の適切なプログラミング、スクリプト、又は、他のタイプの言語若しくは言語の組み合わせを、使用して、本明細書に含まれる教示を、コンピューティングデバイスをプログラミングすることに又は構成することに用いられるソフトウェアに、実装することができる。
【0115】
本明細書に開示の方法の実施は、それらコンピューティングデバイスの動作において実行され得る。上述の例で提示したブロックの順序は、変化させることができ、例えば、ブロックを再順序付けしたり、組み合わせたり、及び/又は、サブブロックに分割したりすることができる。特定のブロック又はプロセスは、並行して実行することができる。
【0116】
本明細書での「~ように適応された」又は「~ように構成された」の使用は、追加のタスク又はステップを実行するように適応された、又は構成されたデバイスを排除しない、オープンで包括的な言語として意図されている。更に、「~に基づいて」の使用は、一つ若しくは複数の記載の条件又は値「に基づく」プロセス、ステップ、計算、又は、他のアクションが、実際には、記載されたものを超える追加の条件又は値に基づいていてもよいという点で、オープンで包括的であることを意図されている。本明細書に含まれるへッディング、リスト、及びナンバリングは、説明を容易にするためだけのものであり、限定することを意味するものではない。
【0117】
本発明の主旨を特定の実施態様に関して詳細に説明したが、当業者は、前述の理解を得た上で、それら実施態様に対する変更、変形、及び等価物を容易に作り出すことができることが、理解されるであろう。従って、本開示は、限定ではなく例示を目的として提示されており、当業者が容易に理解できるような変更、変形、及び/又は追加を本発明の主旨に含めることを排除するものではないことが、理解されるべきである。