(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-18
(45)【発行日】2023-07-26
(54)【発明の名称】メッシュネットワーク
(51)【国際特許分類】
H04W 84/18 20090101AFI20230719BHJP
H04L 67/1061 20220101ALI20230719BHJP
H04L 45/02 20220101ALI20230719BHJP
H04W 48/10 20090101ALI20230719BHJP
H04W 76/10 20180101ALI20230719BHJP
G06F 11/18 20060101ALI20230719BHJP
H04W 40/24 20090101ALI20230719BHJP
【FI】
H04W84/18
H04L67/1061
H04L45/02
H04W48/10
H04W76/10
G06F11/18 610
H04W40/24
(21)【出願番号】P 2021540893
(86)(22)【出願日】2019-12-10
(86)【国際出願番号】 US2019065505
(87)【国際公開番号】W WO2020149965
(87)【国際公開日】2020-07-23
【審査請求日】2021-07-14
(32)【優先日】2019-01-17
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】520128820
【氏名又は名称】ノースロップ グラマン システムズ コーポレーション
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ブルッカート、ロバート シー.
(72)【発明者】
【氏名】ビバウト、ドン ダブリュ.
【審査官】長谷川 未貴
(56)【参考文献】
【文献】米国特許出願公開第2018/0212863(US,A1)
【文献】特開2014-060483(JP,A)
【文献】特開2009-260594(JP,A)
【文献】米国特許出願公開第2015/0264554(US,A1)
【文献】特表2011-521590(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 11/18
H04B 7/24 - 7/26
H04L 67/1061
H04L 45/02
H04W 4/00 - 99/00
DB名 3GPP TSG RAN WG1-4
SA WG1-4
CT WG1、4
(57)【特許請求の範囲】
【請求項1】
メッシュネットワークを確立するためのシステムであって、
1つまたは複数のコンピューティングプラットフォームを備え、前記1つまたは複数のコンピューティングプラットフォームは、
複数のノードの各々についてソフトウェアアプリケーションの実行を開始し、ここで、複数のノードの各々は、
他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
トークンレジスタに、前記複数のノードにおける通信リンクが確立されている各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、前記複数のノードの通信リンクが確立されていない各ノードの別の表示とを記録し、
個々のノードの始動に応答して、前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、
前記個々のノードからの特定のマルチキャスト識別メッセージは、個々のノードが通信リンクを確立した前記複数のノードの各ノードに関する特定の識別子と、前記1つまたは複数のマルチキャスト識別メッセージにおいて識別された、個々のノードが通信リンクを確立していない各ノードに関する別の識別子とを含
んでおり、
前記個々のノードからの前記特定のマルチキャスト識別メッセージに含まれる前記別の識別子に基づいて、前記個々のノードが通信リンクを確立していない前記複数のノードの各ノードとの通信リンクを確立する、システム。
【請求項2】
前記複数のノードのうちの少なくとも2つが非決定論的な順序で始動される、請求項1に記載のシステム。
【請求項3】
各個々のノードによって提供されるマルチキャスト識別メッセージは、個々のノード上の開放通信ポートを識別する、請求項1に記載のシステム。
【請求項4】
前記1つまたは複数のコンピューティングプラットフォームは、前記メッシュネットワークを介して前記複数のノードの間の通信を可能にするミドルウェアを備える、請求項1に記載のシステム。
【請求項5】
前記複数のノードの各々は、前記複数のノードの各々との通信リンクを確立することに応答して、前記マルチキャスト識別メッセージをブロードキャストするレートを、過渡状態のレートから定常状態のレートに低減する、請求項1に記載のシステム。
【請求項6】
前記複数のノードの各々が、
個々のノードと特定のノードとの間の通信リンクの障害を検出し、
前記トークンレジスタから前記特定のノードを削除し、
前記マルチキャスト識別メッセージのブロードキャストのレートを定常状態のレートから過渡状態のレートに変更する、請求項5に記載のシステム。
【請求項7】
前記複数のノードの各々は、独立したランタイム環境で動作する、請求項1に記載のシステム。
【請求項8】
メッシュネットワークを確立するためのシステムであって、
前記メッシュネットワークの複数のノードを備え、前記複数のノードの各々が1つまたは複数のコンピューティングプラットフォーム上で実行され、オンラインになると、前記複数のノードの各々が、
前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、ここで、各マルチキャスト識別メッセージは、個々のノードの一意の識別子と、個々のノードに関するトークンレジスタの現在の状態を特徴付けるデータとを含んでおり、
他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
個々のトークンレジスタに、通信リンクが確立されている前記複数のノードにおける各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、通信リンクが確立されていない前記複数のノードの各ノードの別の表示とを記録
し、
前記個々のトークンレジスタに記録された前記別の表示に基づいて、通信リンクを確立していない前記複数のノードの各ノードとの通信リンクを確立する、システム。
【請求項9】
前記複数のノードのうちの少なくとも2つが非決定論的な順序で始動される、請求項8に記載のシステム。
【請求項10】
各個々のノードによって提供される前記マルチキャスト識別メッセージは、個々のノード上の開放通信ポートを識別する、請求項8に記載のシステム。
【請求項11】
前記複数のノードの各々は、前記複数のノードの各々との通信リンクを確立することに応答して、前記マルチキャスト識別メッセージをブロードキャストするレートを、過渡状態のレートから定常状態のレートに低減する、請求項8に記載のシステム。
【請求項12】
前記複数のノードの各々が
個々のノードと特定のノードとの間の通信リンクの障害を検出し、
前記トークンレジスタから前記特定のノードを削除し、
ブロードキャストメッセージのレートを定常状態のレートから過渡状態のレートに変更する、請求項11に記載のシステム。
【請求項13】
メッシュネットワークを確立するための方法であって、
前記メッシュネットワークの第1のノードにおいてアプリケーションの実行を開始するステップと、
前記第1のノードが、前記メッシュネットワーク上の第2のノードによってブロードキャストされた第1のマルチキャスト識別メッセージを受信するステップと、
前記第1のノードが、前記第1のマルチキャスト識別メッセージの受信に応答して、前記第2のノードとの通信リンクが確立されていないことを決定するステップと、
前記第1のノードが、前記第2のノードとの通信リンクが確立されていないとの決定に応答して、前記第2のノードによってブロードキャストされた前記第1のマルチキャスト識別メッセージにおいて識別されたポート上で前記第2のノードとの通信リンクを確立するステップと、
確立後、前記第1のノードが、前記メッシュネットワーク上に前記第2のノードによってブロードキャストされた第2のマルチキャスト識別メッセージを受信するステップと、
前記第1のノードが、前記第2のマルチキャスト識別メッセージの受信に応答して、前記第2のノードとの通信リンクが確立されたという表示を追加するステップと、
前記第1のノードが、前記第1のマルチキャスト識別メッセージおよび/または前記第2のマルチキャスト識別メッセージにおいて識別された、第3のノードとの通信リンクが確立されていないという表示を追加するステップと、
前記第1のノードが、前記メッシュネットワーク上の各ノードにマルチキャスト識別メッセージをブロードキャストするステップであって、前記マルチキャスト識別メッセージは、前記第1のノードと前記第2のノードとの間に通信リンクが確立されていることを示す第1の識別子と、前記第1のノードと前記第3のノードとの間に通信リンクが確立されていないことを示す第2の識別子とを含む、前記ブロードキャストするステップと、
前記第3のノードが、前記第1のノードからブロードキャストされた前記マルチキャスト識別メッセージに含まれる前記第2の識別子に基づいて、前記第1のノードと通信リンクを確立するステップと、を含む方法。
【請求項14】
前記メッシュネットワークの前記第1のノード、前記第2のノード、および前記第3のノードは、非決定論的な順序で始動される、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータネットワークに関する。より具体的には、本開示は、メッシュネットワークを確立および維持するためのシステムおよび方法に関する。
【背景技術】
【0002】
コンピューティングプラットフォームまたはデジタルプラットフォームとは、ソフトウェアが実行される環境を指す。コンピューティングプラットフォームは、プログラムコードが実行されるものであれば、ハードウェアまたはオペレーティングシステム(OS)、ウェブブラウザおよび関連するアプリケーションプログラミングインタフェース、またはその他の基本となるソフトウェアであり得る。コンピューティングプラットフォームには、コンピューターアーキテクチャ、OS、ランタイムライブラリなど、様々な抽象化レベルがある。コンピューティングプラットフォームは、コンピュータプログラムを実行することができるステージである。
【0003】
ミドルウェアは、オペレーティングシステムから利用できるサービスを超えて、ソフトウェアアプリケーションにサービスを提供するコンピュータソフトウェアである。それは「ソフトウェアグルー」として説明することができる。ミドルウェアは、ソフトウェア開発者が通信および入出力を簡単に実施できるようにする。ミドルウェアという用語は、一般に、分散アプリケーションでのデータの通信および管理を可能にするソフトウェアを指す。1つの定義として、ミドルウェアは、「トランスポート(例えば、TCP/IPを介して)層のサービスセットの上位にあるが、アプリケーション環境の下位にある(例えば、アプリケーションレベルのAPIよりも下にある)サービス」である。このより具体的な意味では、ミドルウェアは、クライアントサーバにおけるダッシュ(「-」)、またはピアツーピアにおける「ツー(-to-)」として説明することができる。ミドルウェアには、ウェブサーバ、アプリケーションサーバ、コンテンツ管理システム、およびアプリケーションの開発および配信をサポートする同様のツールが含まれる。
【発明の概要】
【0004】
一例は、メッシュネットワークを確立するためのシステムに関する。システムは、複数のノードの各々に対してソフトウェアアプリケーションの実行を開始する1つまたは複数のコンピューティングプラットフォームを含むことができる。1つまたは複数のプラットフォームの各々は、複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、複数のノードの別のノードとのメッシュネットワークにおける通信リンクを確立することもできる。1つまたは複数のプラットフォームの各々は、トークンレジスタに、通信リンクが確立されている複数のノードの各ノードの特定の表示(indication)と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、通信リンクが確立されていない複数のノードの各ノードの別の表示とを記録することもできる。1つまたは複数のプラットフォームの各々は、個々のノードの始動に応答して、メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストする。個々のノードからの特定のマルチキャスト識別メッセージは、個々のノードが通信リンクを確立した複数のノードの各ノードに関する特定の識別子と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、個々のノードが通信リンクを確立していない各ノードに関する別の識別子とを含む。
【0005】
別の例は、メッシュネットワークの複数のノードを含むメッシュネットワークを確立するためのシステムに関し、複数のノードの各々は、1つまたは複数のコンピューティングプラットフォーム上で実行され、オンラインになると、複数のノードの各々は、メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、各マルチキャスト識別メッセージは、個々のノードの一意の識別子と、個々のノードに関するトークンレジスタの現在の状態を特徴付けるデータとを含む。複数のノードの各々は、複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、複数のノードの別のノードとのメッシュネットワーク内の通信リンクを確立する。複数のノードの各々は、個々のトークンレジスタに、通信リンクが確立されている複数のノードの各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、マルチキャスト識別メッセージを受信していない複数のノードの各ノードの別の表示とを記録する。
【0006】
さらなる別の例は、メッシュネットワークを確立するための方法に関する。方法は、メッシュネットワークの第1のノードにおいてアプリケーションの実行を開始するステップを含むことができる。方法は、開始後に、メッシュネットワーク上の各ノードにマルチキャスト識別メッセージをブロードキャストするステップも含むことができる。方法は、メッシュネットワーク上の第2のノードによってブロードキャストされた第1のマルチキャスト識別メッセージを第1のノードによって受信するステップをさらに含むことができる。方法は、第1のノードが、第1のマルチキャスト識別メッセージの受信に応答して、第2のノードとの通信リンクが確立されていないことを決定するステップをさらに含むことができる。方法は、第1のノードが、第2のノードとの通信リンクが確立されていないとの決定に応答して、第2のノードによってブロードキャストされた第1のマルチキャスト識別メッセージにおいて識別されたポート上で第2のノードとの通信リンクを確立するステップをさらに含むことができる。方法は、確立後、第1のノードが、メッシュネットワーク上に第2のノードによってブロードキャストされた第2のマルチキャスト識別メッセージを受信するステップをさらに含むことができる。方法は、第1のノードが、第2のマルチキャスト識別メッセージの受信に応答して、第2のノードとの通信リンクが確立されたという表示を追加するステップをさらに含むことができる。
【図面の簡単な説明】
【0007】
【
図1】メッシュネットワークを確立および維持するためのシステムの例を示す図。
【
図2A】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2B】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2C】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2D】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2E】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2F】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2G】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2H】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2I】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2J】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2K】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2L】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2M】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図2N】メッシュネットワークを確立および維持するためのシステムの別の例を示す図。
【
図3】メッシュネットワークのノードをサポートすることができるコンピューティングプラットフォームの例を示す図。
【
図4】航空機上で動作する複数のノードのための複数のコンピューティングプラットフォームを備えたシステムの例を示す図。
【
図5】メッシュネットワークを確立および維持するための方法の例を示す図。
【発明を実施するための形態】
【0008】
本開示は、複数のノードの間でメッシュネットワークを確立および維持するためのシステムおよび方法に関する。システムは、複数のノードの各々上でソフトウェアアプリケーションの実行を各々が非決定論的な順序で開始する1つまたは複数のコンピューティングプラットフォームを含む。各ノードがオンラインになると(ソフトウェアアプリケーションが開始プロセスを完了すると)、個々のノードはマルチキャスト識別メッセージをメッシュネットワーク上の他のノードに過渡状態のレートでブロードキャストする。各マルチキャスト識別メッセージは、対応するノードに関する一意の識別子(例えば、ネットワークアドレスおよび開放ポート番号)と、対応するノードのトークンレジスタを特徴付けるデータとを含む。
【0009】
さらに、マルチキャスト識別メッセージの受信に応答して、各ノードは、対応するトークンレジスタを分析して、個々のマルチキャスト識別メッセージをブロードキャストするノード(ブロードキャストノードと呼ばれる)との通信リンクが確立されているかどうかを判定する。ブロードキャストノードとの通信リンクが確立されていない場合、マルチキャスト識別メッセージを受信した各ノード(受信ノードと呼ぶことができる)は、ブロードキャストノードの一意の識別子(例えば、ネットワークアドレスおよび開放ポート)に基づいてブロードキャストノードとの通信リンクを確立する。さらに、ブロードキャストノードからの後続のマルチキャスト識別メッセージに応答して、各受信ノードは、受信ノードとブロードキャストノードとの間に通信リンクが確立されたという表示とともに、ブロードキャストノードをトークンレジスタに追加する。さらに、各受信ノードは、各マルチキャスト識別メッセージに応答して、マルチキャスト識別メッセージにおいて識別された、通信リンクが確立されていない他のノード(存在する場合)の表示を対応するトークンレジスタに追加する。従って、各受信ノード内のトークンレジスタは、マルチキャスト識別メッセージにおいて識別されたが、(直接)通信リンクが確立されていないノードの表示を含む。このプロセスは、メッシュネットワークが完全接続されたメッシュネットワークになるように、メッシュネットワーク内の各(オンライン)ノードの間に通信リンクができるまで継続する。
【0010】
さらに、完全接続されたメッシュネットワークが確立された後、メッシュネットワーク上のノードの各々は、マルチキャスト識別メッセージをブロードキャストするレートを過渡状態のレートから定常状態のレートに低減して、ネットワークトラフィックを減少させる。しかしながら、将来のある時点で、メッシュネットワーク内の任意のノードが、任意のノードと特定のノードの間の通信リンクの障害を検出した場合、任意のノードは、トークンレジスタから特定のノードを削除して、ブロードキャストメッセージのレートを定常状態のレートから過渡状態のレートに変更する。本明細書で説明するシステムおよび方法を実装することにより、単一障害点のないサーバレスメッシュネットワークを確立し、かつ維持することができる。さらに、前述したように、メッシュネットワーク上のノードは、非決定論的な方法(例えば、予測不能な順序)で始動することができる。
【0011】
図1は、N個のノード52のピアツーピア(例えば、サーバレス)完全接続されたメッシュネットワークを確立および維持するためのシステム50の一例を示しており、ここで、Nは2以上の整数である。本明細書で使用される場合、「完全接続されたメッシュネットワーク」という用語は、各ノード52が最終的に他の全てのノード52に直接接続することを示す。
【0012】
N個のノード52は、コンピューティングプラットフォーム54上で実行されるソフトウェアサービス(例えば、アプリケーションおよびミドルウェア)を表すことができる。
図1は1つのコンピューティングプラットフォームを示しているが、複数のコンピューティングプラットフォームが存在し得ることが理解される。一例として、システム50は、航空機に実装することができ、N個のノード52の各々は、航空機の異なる部分を制御するための異なるソフトウェアサービスを表す。
【0013】
ノード52の各々は、ノード52間の通信を可能にするためのミドルウェアアプリケーションを含むことができる。ミドルウェアは、ミドルウェア上で実行されるソフトウェアアプリケーションのための独立したランタイム環境を提供することができる。いくつかの例では、N個のノード52の各々は、伝送制御プロトコルインターネットプロトコル(TCIP/IP)スタック内の通信プロトコルなどの標準通信プロトコルで通信することができる。より具体的には、いくつかの例では、ノード52は、伝送制御プロトコル(TCP)またはユーザデータグラムプロトコル(UDP)を介して通信することができる。
【0014】
本明細書で使用される場合、「オンラインになる」という表現は、対応するノード52が起動プロセスの実行を完了し、メッシュネットワーク上の他のノードと通信する準備ができていることを示す。同様に、「オフラインになる」という表現は、対応するノードがメッシュネットワーク上の他のノードと通信できないことを示す。コンピューティングプラットフォーム54の初期起動時に、N個のノード52の各々が起動される。さらに、N個のノード52のうちの少なくとも2つは、非決定論的な順序でオンラインになる(例えば、起動プロセスを完了する)。別の言い方をすれば、少なくとも2つのノードが、予測できない順序で初期起動シーケンスを完了する。一例として、コンピューティングプラットフォーム54の1回目の起動時に、ノード3がノード2の前にオンラインになるように、ノード2は、ノード3の後に起動プロセスを完了することができる。さらに、コンピューティングプラットフォームの2回目の起動時に、ノード2がノード3の前にオンラインになるように、ノード2は、ノード3の前に起動プロセスを完了することができる。N個のノード52の各々を始動する順序は、例えば、コンピューティングプラットフォーム54の制御の及ばない可能性がある要因(例えば、ネットワーク待ち時間、オペレーティングシステムの優先順位および/または環境要因)に基づくことができる。
【0015】
各ノード52は、メッシュネットワーク上のノード52を追跡するトークンレジスタ56を格納する。より具体的には、各ノード52のトークンレジスタ56は、トークンレジスタ56に関連付けられたノード52を特徴付ける情報を識別するデータを格納する。さらに、各ノード52のトークンレジスタ56は、トークンレジスタ56に関連付けられたノード52との通信リンクを確立したメッシュネットワーク上のノード52に関するデータを格納する。さらに、各ノード52のトークンレジスタ56は、トークンレジスタ56に関連付けられたノード52との通信リンクを確立していないが、少なくとも1つの他のノード52からのマルチキャスト識別メッセージにおいて識別された、メッシュネットワーク上のノード52に関するデータを格納する。言い換えると、任意のノード52について、任意のノードのトークンレジスタ56は、(i)任意のノード52(それ自体)、(ii)任意のノード52が通信リンクを確立した他の各ノード52、および(iii)通信リンクが確立されていないが、別のノード52からのマルチキャスト識別メッセージで識別されている各ノード52を識別する。
【0016】
コンピューティングプラットフォーム54が始動された時から、メッシュネットワークが完全接続されたメッシュネットワークになるまで、N個のノード52の各々は、過渡状態で動作する。過渡状態では、N個のノード52の各々が、対応する起動手順を完了すると、過渡状態のレートでメッシュネットワーク内の各アクティブノードにマルチキャスト識別メッセージをブロードキャストする。(ブロードキャストされた)マルチキャスト識別メッセージの各々は、マルチキャスト識別メッセージをブロードキャストするノード52の一意の識別子を含む。一意の識別子は、ネットワークアドレス(IPアドレス)と、マルチキャスト識別メッセージをブロードキャストするノード52の開放ポートを特徴付けるデータとすることができる。各ノード52は、ブロードキャストされたマルチキャスト識別メッセージで識別された開放ポートを介して、任意のノードと一方向の通信リンクを確立することができるように構成されている。
【0017】
ある特定の例(以下、「特定の例」という)として、ノード1が最初にオンラインになり(例えば、起動プロセスを完了する)、ノード3が2番目にオンラインになり、ノード2が3番目にオンラインになることを想定する。この例では、起動プロセスが完了すると、ノード1がマルチキャスト識別メッセージを過渡状態のレートでブロードキャストする。最初に、ノード1は、N個のノード52のうちの最初にオンラインになるノード52であるため、マルチキャスト識別メッセージは、ノード3またはノード2によって受信されない。
【0018】
特定の例を続けると、ノード3がオンラインになると(例えば、起動プロセスが完了すると)、ノード3はノード1によってブロードキャストされた次のマルチキャスト識別メッセージを受信する。次のマルチキャスト識別メッセージの受信に応答して、ノード3は、ノード3からノード1への通信リンクを確立する(開放する)。通信リンクは、TCP接続、UDP接続、または別のプロトコルを使用する接続とすることができる。さらに、ブロードキャストされた後続のマルチキャスト識別メッセージのノード3による受信に応答して、ノード1は、ノード3との通信リンクが確立されたという表示を追加するようにノード1のトークンレジスタを更新する。
【0019】
さらに、特定の例を続けると、ノード3は、また、マルチキャスト識別メッセージを過渡状態のレートでブロードキャストする。ノード2は、依然としてオンラインではないため(例えば、起動プロセスが完了していないため)、ノード2は、ノード3からマルチキャスト識別メッセージを受信しない。しかしながら、この例においてこの時点では、ノード1はオンラインであるため、ノード1は、マルチキャスト識別メッセージを受信する。ノード3からのマルチキャスト識別メッセージには、ノード3の一意の識別子と、ノード3のトークンレジスタ56を特徴付けるデータとが含まれている。一意の識別子には、ネットワークアドレス(例えば、IPアドレス)と、ノード3への通信リンクに関する開放ポート番号とが含まれている。より一般的には、マルチキャスト識別メッセージにおいて任意のノード52によって送信される一意の識別子は、任意のノードとの通信リンクを確立するための情報を含む。マルチキャスト識別メッセージの受信に応答して、ノード1は、ノード3との通信リンクを開く。さらに、後続のマルチキャスト識別メッセージにおいて、ノード1は、ノード1のトークンレジスタ56を特徴付けるデータと、ノード1の一意の識別子(例えば、IPアドレスおよび開放ポート番号)とをノード3に提供する。ノード1のトークンレジスタ56を特徴付けるデータの受信に応答して、ノード3は、ノード3のトークンレジスタ56を更新する。より具体的には、ノード3は、ノード1との通信リンクが確立されたという表示をトークンレジスタ56に追加する。
【0020】
特定の例を続けると、その後、ノード2がオンラインになる。オンラインになると、ノード2は、ノード2の一意の識別子(例えば、IPアドレスおよび開放ポート番号)を含むマルチキャスト識別メッセージをブロードキャストする。特定の例では、ノード1がノード2から最初のマルチキャスト識別メッセージを受信しているが、ノード3は、マルチキャスト識別メッセージを受信していないと想定する。マルチキャスト識別メッセージは、通信の衝突および/またはメッシュネットワークでのパケットの損失が原因で、メッシュネットワーク上の全てのオンラインノード52で受信されない場合がある。従って、マルチキャスト識別メッセージに応答して、ノード1は、ノード2との通信リンクを確立して、後続のマルチキャスト識別メッセージにおいてノード1のトークンレジスタ56を特徴付けるデータをノード2に提供する。
【0021】
ノード1のトークンレジスタ56を特徴付けるデータの受信に応答して、ノード2は、ノード2のトークンレジスタ56を更新する。特に、ノード2は、ノード1との通信リンクが確立されたという表示と、ノード3がメッシュネットワーク上にあるが、ノード3との通信リンクが確立されていないことを示すノード3に関する別の表示とをトークンレジスタ56に追加する。即ち、特定の例のこの時点で、ノード3のトークンレジスタは、メッシュネットワーク内で通信リンクを確立しているノード52に関する特定のインジケータ(indicator)と、通信リンクが確立されていないが、別のノード(例えば、ノード1)がメッシュネットワークのメンバーであると識別しているノードに関する別のインジケータとの2つの異なるインジケータを有する。
【0022】
特定の例を続けると、後続のマルチキャスト識別メッセージにおいて、ノード1は、ノード1のトークンレジスタの更新されたステータスを特徴付けるデータをノード3に提供する。ノード1の更新されたトークンレジスタ56を特徴付けるデータに応答して、ノード2は、ノード2のトークンレジスタ56を更新する。特に、ノード2は、ノード3がメッシュネットワークのメンバーであり、かつノード2との通信リンクが確立されていないことを示すデータをトークンレジスタ56に格納する。
【0023】
特定の例を続けると、N個のノード52の各々は、過渡状態のレートでマルチキャスト識別メッセージをブロードキャストし続ける。過渡状態のレートは、ノード52ごとに同じであっても、異なっていてもよいことに留意されたい。ある時点で、ノード3によってブロードキャストされたマルチキャスト識別メッセージがノード2で受信されると想定する。それに応答して、ノード2は、ノード3との通信リンクを確立する。さらに、後続のマルチキャスト識別メッセージにおいて、ノード2は、ノード2の一意の識別子(例えば、IPアドレスおよび開放ポート番号)と、トークンレジスタ56を特徴付けるデータとをノード3に提供する。それに応答して、ノード3は、ノード2との通信リンクを確立して、後続のマルチキャスト識別メッセージにおいて、ノード2の一意の識別子(例えば、IPアドレスおよび開放ポート番号)と、ノード2のトークンレジスタを特徴付けるデータをノード3に提供する。後続のマルチキャスト識別メッセージに応答して、ノード2は、ノード3との通信リンクが確立されたことを記録するようにそのトークンレジスタ56を変更する。従って、特定の例のこの時点で、メッシュネットワークの各ノード52間で直接双方向通信が確立される。従って、メッシュネットワークは、完全接続されたメッシュネットワークとなる。
【0024】
システム50の各ノード52によってブロードキャストされる後続のマルチキャスト識別メッセージにおいて、対応するトークンレジスタ56を特徴付けるデータは、メッシュネットワーク上の全てのノードを識別する。従って、所定の時間(例えば、5~10秒)の後、メッシュネットワークは、定常状態にあると見なされる。そのような状況では、所定の時間が経過した後、各ノード52は、マルチキャスト識別メッセージをブロードキャストするレートを、過渡状態のレートから定常状態のレートに低減することができる。一例として、定常状態のレートでは、各ノード52は、メッシュネットワーク上のネットワークトラフィックを減少させるために、過渡状態のレートよりも少なくとも半分低いレートでマルチキャスト識別メッセージをブロードキャストする。従って、任意のノード52が過渡状態のレートで1秒あたり1個のメッセージのレートでマルチキャスト識別メッセージをブロードキャストする場合、任意のノードは、2秒以上あたり1個のメッセージの定常状態のレートでマルチキャスト識別メッセージをブロードキャストし得る。
【0025】
特定の例を続けると、ある時点で、定常状態に達した後、ノード3がオフラインになる(無効になる)と想定する。一例では、例えば、ノード3で実行されているソフトウェアの障害のために、ノード3がオフラインになる可能性がある。別の例では、ノード3は、システム50の物理的構成要素がノード3をサポートする領域内で航空機が損傷を受けた状況でオフラインになる可能性がある。このような場合、ノード1またはノード2(残りの機能ノード52)がオフラインノード(ノード2)にメッセージを送信することを試行するが、その試行は失敗する。このような障害は、例えば、送信されたメッセージに対する確認応答の欠如によって検出することができる。
【0026】
特定の例を続けると、ノード2は、ノード3がメッセージに応答していないことを検出すると想定する。このような状況では、ノード2はノード3のトークンレジスタ56からノード3を削除し、ノード2は過渡状態に戻り、ノード3は、更新された状態のトークンレジスタ56を特徴付けるデータを含むマルチキャスト識別メッセージを過渡状態のレートでブロードキャストする。マルチキャスト識別メッセージの受信に応答して、ノード1は、ノード2のトークンレジスタ56を特徴付けるデータを分析して、ノード2が欠落していることを識別する。それに応答して、ノード1は、ノード3にメッセージを送信することを試行することができる。特定の例では、ノード3が無効になっているため、試行は失敗する。それに応答して、ノード1は、トークンレジスタ56からノード3を削除して、過渡状態に戻り、マルチキャスト識別メッセージが過渡状態のレートでブロードキャストされることとなる。
【0027】
特定の例を続けると、残りの両方のオンラインノード52(ノード1およびノード2)が、対応するトークンレジスタがメッシュネットワーク内に他のノードを含んでいないことを検出すると、メッシュネットワークは定常状態に戻る。特定の例では、定常状態では、ノード1およびノード2の両方が、マルチキャスト識別メッセージを送信するレートを過渡状態のレートから定常状態のレートに低減する。
【0028】
システム50を実装することにより、サーバを使用することなく、完全接続されたメッシュネットワークを迅速に確立することができる。さらに、前述したように、ノード52がアクティブ化される順序、および/または起動プロセスを完了する順序の要件は存在しない。即ち、メッシュネットワーク上の各ノード52は、任意の順序で、かつ/または非決定論的にオンラインにすることができる。さらに、システム50は、単一障害点を持たない。むしろ、システム50はサーバレスであり、その結果、各ノード52は、中間システムなしで他のノード52と通信することができる。さらに、ミドルウェアは、ミドルウェア上で実行されているアプリケーションからのメッセージが、メッセージの意図された受信側(例えば、別のアプリケーション)がオンラインになるまで遅れるように構成することができる。
【0029】
図2A~
図2Nは、複数のノード102間で完全接続されたメッシュネットワークを確立および維持するためのシステム100の例を示す。図示の例では、4個のノード102が存在する。しかしながら、他の例では、より多くのまたはより少ないノード102が存在することができる。ノード102は、
図1のノード52を実施するために採用され得る。ノード102は、コンピューティングプラットフォーム上で実行されるソフトウェアサービスを表すことができる。各ソフトウェアサービスは、ノード102間の通信を可能にするミドルウェア上で動作することができる。各ノード102は、トークンレジスタ104(
図2A~
図2Nにおいて「TR」とラベル付けされている)を含む。
図2A~
図2N全体を通して、実線で示されているノード102(
図2Aのノード1およびノード2など)は、オンラインである(起動プロセスを完了した)と見なされることが理解される。さらに、
図2A~
図2Nに示される例の全体を通して、破線のノード102(
図2Aのノード2およびノード4など)は、オフラインである(例えば、無効化されている、および/または起動プロセスが完了していない)と見なされる。
【0030】
各トークンレジスタ104は、対応するノード102の識別情報と、対応するノード102が通信リンクを確立しているメッシュネットワーク内のノード102(存在する場合)に関する特定の表示とを含む。さらに、各トークンレジスタ104は、別のノード102によって識別されたが、通信リンクが確立されていないメッシュネットワーク内のノード(存在する場合)に関する別の表示を含む。
【0031】
図2Aにおいて、ネットワークが過渡状態にあると想定する。特に、前述したように、
図2Aにおいて、ノード1および3は実線で示されているようにオンライン(起動プロセスが完了)であり、ノード2および4は破線で示されているようにオフラインであると想定する。
図2Aでは、矢印110によって示されるように、ノード1は、マルチキャスト識別メッセージをブロードキャストする。ノード2およびノード4はオフラインであるため、ノード3は、マルチキャスト識別メッセージ110を受信する。マルチキャスト識別メッセージ110は、一意の識別子(例えば、IPアドレスおよび開放ポート番号)と、マルチキャスト識別メッセージ110をブロードキャストするノード102のトークンレジスタとを含むことができる。
図2Bに示されるように、マルチキャスト識別メッセージ110に応答して、ノード3は、ノード1からのマルチキャスト識別メッセージにおいて識別される開放ポート上で矢印112によって示されるノード1との通信リンクを確立する。
【0032】
図2Cに示されるように、ノード3によってブロードキャストされる矢印114によって示される次のマルチキャスト識別メッセージ110は、ノード3のトークンレジスタ104を特徴付けるデータを含む。ノード3は、ノード1との通信リンク112を確立し、ノード3およびノード1は、ノード3のトークンレジスタ104を特徴付けるデータを受信したので、ノード1は、ノード3をノード1のトークンレジスタ104に追加する。より具体的には、ノード1は、ノード3との間に通信リンク112が確立されたという特定の表示とともに、ノード3をトークンレジスタ104に追加する。
図2Dに示されるように、ノード1は、ノード3の開放ポート上で矢印116によって示されるノード3との通信リンクを確立する。さらに、後続のマルチキャスト識別メッセージ110において、ノード1は、ノード1およびノード3を識別するノード1のトークンレジスタ104を特徴付けるデータを提供する。それに応答して、ノード3は、ノード1との通信リンクが確立されたという特定の表示とともに、ノード1をノード3のトークンレジスタ104に追加する。
【0033】
さらに、
図2Dでは、オンラインである各ノード102間で直接双方向通信が確立されている。従って、閾値時間(例えば、5~10秒)内に追加のノード102がオンラインにならない例では、結果的に形成されるメッシュネットワークは、2個のノード102間の完全接続されたメッシュネットワークとなる。従って、メッシュネットワークは定常状態にあり、このような状況では、ノード1およびノード3は、マルチキャスト識別メッセージのブロードキャストのレートを過渡状態のレートから定常状態のレートに低減する。しかしながら、
図2Eにおいて、ノード2がオンラインになり、ノード1およびノード3が過渡状態に戻ることが生じるものと想定する。
【0034】
より具体的には、
図2Eにおいては、ノード2がオンラインになると、ノード2は、矢印120によって示されるように、一意の識別子(例えば、IPアドレスおよび開放ポート番号)と、
図2のトークンレジスタ104を特徴付けるデータとを含むマルチキャスト識別メッセージをブロードキャストする。それに応答して、ノード1は、矢印122によって示されるように、ノード2との通信リンクを確立する。
図2Fに示されるように、ノード1によってブロードキャストされる後続のマルチキャスト識別メッセージ110(
図2Aにも示される)は、ノード1のトークンレジスタ104を特徴付けるデータを提供する。
図2A~
図2N全体を通して、同じ参照番号を異なる矢印で使用して、同じマルチキャスト識別メッセージに関して異なるエンドポイントを示していることに留意されたい。例えば、マルチキャスト識別メッセージ110は、ノード1によってノード3およびノード2の両方にブロードキャストされる。
【0035】
ノード1によってブロードキャストされたマルチキャスト識別メッセージ110に応答して、ノード2は、そのトークンレジスタ104を変更する。より具体的には、ノード2は、ノード1との通信リンク122が確立されたという特定の表示とともに、ノード1をノード2のトークンレジスタ104に追加する。さらに、ノード2は、ノード3との通信リンクが確立されていないという別の表示とともに、ノード3をノード2のトークンレジスタ104に追加する。
図2Eに示されるように、通信リンクが確立されていないメッシュネットワーク上のノード102は、参照番号126によって示されるように、色が反転したトークンレジスタ104で表されている。
【0036】
図2Fでは、ノード1からのマルチキャスト識別メッセージ110に応答して、ノード2は、矢印128によって示されるように、ノード1との通信リンクを確立する。さらに、ノード2によってブロードキャストされる後続のマルチキャスト識別メッセージ120において、ノード2は、ノード2のトークンレジスタ104を特徴付けるデータを提供する。この状況において、ノード3は、この特定のマルチキャスト識別メッセージを受信しないと想定する。それに応答して、ノード1は、通信リンク122がノード2と確立されたという特定の表示とともに、ノード2をノード1のトークンレジスタ104に追加する。さらに、ノード1のトークンレジスタ104を特徴付けるデータを有する、ノード1からの後続のマルチキャスト識別メッセージ110がノード3で受信される。それに応答して、ノード3は、ノード2との通信リンクが確立されていないという他の表示とともに、ノード2をトークンレジスタ104に追加する。
【0037】
図2Gにおいて、ノード2によってブロードキャストされた後続のマルチキャスト識別メッセージ120がノード3において受信される。それに応答して、ノード3は、ノード2の開放ポート上で矢印130によって示されるように、ノード2との通信リンクを確立する。さらに、ノード3によってブロードキャストされる後続のマルチキャスト識別メッセージ114において、ノード3は、ノード3のトークンレジスタ104を特徴付けるデータをノード2(およびノード1)に提供する。それに応答して、ノード3からノード2への通信リンク130が確立されるので、ノード2は、通信リンク130がノード3と確立されたことを示すようにノード2のトークンレジスタ104を変更する。
【0038】
さらに、
図2Hに示されるように、ノード3によってブロードキャストされたマルチキャスト識別メッセージ114にさらに応答して、ノード2は、ノード3の開放ポート上で矢印132によって示されるノード3との通信リンクを確立する。さらに、後続のマルチキャスト識別メッセージ120において、ノード2は、トークンレジスタ104をノード3(およびノード1)にブロードキャストする。それに応答して、ノード2からノード3への通信リンク132が確立されるので、ノード3は、通信リンク132がノード2と確立されたことを示すようにノード3のトークンレジスタ104を変更する。
【0039】
さらに、
図2Dに示される状況と同様に、
図2Hにおいて、直接双方向通信が、オンラインである各ノード102間で確立される。従って、閾値時間(例えば、5~10秒)内に追加のノード102がオンラインにならない例では、結果的に形成されるメッシュネットワークは、3個のノード102間の完全接続されたメッシュネットワークとなる。従って、メッシュネットワークは定常状態にあり、このような状況では、ノード1、ノード2、およびノード3は、マルチキャスト識別メッセージのブロードキャストのレートを過渡状態のレートから定常状態のレートに低減する。しかしながら、
図2Iにおいて、ノード4がオンラインになり、ノード1、ノード2、およびノード3が過渡状態に戻ることが生じたと想定する。
【0040】
より具体的には、
図2Iにおいて、ノード4がオンラインになると、ノード4は、矢印140によって示されるように、一意の識別子(例えば、IPアドレスおよび開放ポート番号)と、ノード3のトークンレジスタ104を特徴付けるデータとを含むマルチキャスト識別メッセージをブロードキャストする。
図2Iに示される例において、ノード3は、ノード4からマルチキャスト識別メッセージを受信し、ノード1およびノード2は、ノード4からマルチキャスト識別メッセージ140を受信しないと想定する。それに応答して、ノード3は、矢印142によって示されるように、ノード4との通信リンクを確立する。
図2Iに示されるように、後続のマルチキャスト識別メッセージ114(
図2Aにおいても示される)において、ノード3は、ノード3のトークンレジスタ104を特徴付けるデータを提供する。それに応答して、ノード4はそのトークンレジスタ104を変更する。より具体的には、ノード2は、ノード4との通信リンク142が確立されたという特定の表示とともに、ノード3をノード2のトークンレジスタ104に追加する。さらに、ノード4は、ノード1またはノード2との通信リンクが確立されていないという別の表示とともに、ノード1およびノード2をトークンレジスタ104に追加する。さらに、ノード1およびノード2は各々、ノード4がメッシュネットワーク上のノードであり、かつノード4との通信リンクが確立されていないという表示を追加するように対応するトークンレジスタ104を変更する。
【0041】
図2Jに示されるように、後続のマルチキャスト識別メッセージ114は、ノード4によって受信され、それに応答して、ノード4は、矢印144によって示されるノード4との通信リンクを開く。さらに、ノード4によってブロードキャストされた後続のマルチキャスト識別メッセージ140は、ノード1ではなく、ノード2およびノード3によって受信される。それに応答して、ノード3は、通信リンク144がノード4と確立されたことを示すようにそのトークンレジスタ104を変更する。さらに、本明細書で説明する方法で、ノード2は、マルチキャスト識別メッセージ140で識別されるノード4の開放ポート上で矢印150によって示される通信リンクを確立し、ノード2は、後続のマルチキャスト識別メッセージ120をブロードキャストする。ノード2からノード4への通信リンク150が確立されるので、ノード2からのマルチキャスト識別メッセージ120に応答して、ノード4は、通信リンク150がノード2と確立されたという特定の表示を含むようにそのトークンレジスタ104を変更する。
【0042】
さらに、ノード2からのマルチキャスト識別メッセージ120に応答して、ノード4は、矢印152によって示されるノード2との通信リンクを確立する。さらに、ノード4からブロードキャストされた後続のマルチキャスト識別メッセージ140に応答して、ノード2は、通信リンク154がノード4と確立されたという特定の表示を含むように、そのトークンレジスタ104を変更する。
【0043】
図2Kに示されるように、ノード4によってブロードキャストされる後続のマルチキャスト識別メッセージ140は、ノード1、ノード2、ノード3、およびノード4によって受信される。それに応答して、ノード1は、矢印154によって示されるノード4との通信リンクを開く。さらに、ノード1からの後続のマルチキャスト識別メッセージ110の受信に応答して、ノード4は、通信リンク154がノード1と確立されたという特定の表示を含むように、そのトークンレジスタ104を変更する。さらに、ノード1によってブロードキャストされた後続のマルチキャスト識別メッセージ110に応答して、後続のマルチキャスト識別メッセージ110は、ノード4(ノード2およびノード3も同様)において受信される。それに応答して、ノード4は、ノード4の開放ポート上で矢印156によって示される通信リンクを開く。ノード4によってブロードキャストされた後続のマルチキャスト識別メッセージ140に応答して、ノード1は、通信リンク154がノード4と確立されたという特定の表示を含むように、そのトークンレジスタ104を変更する。
【0044】
さらに、
図2Dおよび
図2Hに示されている状況と同様に、
図2Kにおいて、直接双方向通信が、オンラインである各ノード102間で確立される。従って、閾値時間(例えば、5~10秒)内に追加のノード102がオンラインにならない例では、結果的に形成されるメッシュネットワークは、3個のノード102間の完全接続されたメッシュネットワークとなる。従って、メッシュネットワークは定常状態にあり、このような状況では、ノード1、ノード2、ノード3、およびノード4は、マルチキャスト識別メッセージのブロードキャストのレートを過渡状態のレートから定常状態のレートに低減する。
【0045】
さらに、
図2Lにおいて、ノード4が不確定要因によりオフラインになったと想定する。いくつかの例として、ノード4はソフトウェアクラッシュによりオフラインになる場合がある。他の例では、ノード4のハードウェアを搭載した航空機の損傷など、ハードウェア障害が原因でノード4がオフラインになる場合がある。このような状況では、ノード1、ノード2、およびノード3によってブロードキャストされるマルチキャスト識別メッセージは、110、114、および152の破線で示されているように、ノード4によって受信されない。さらに、ある時点で、ノード1は通信リンク154を介してノード4との通信を試行する。さらに、ノード2は、通信リンク152を介してノード4との通信を試行し、ノード3は、通信リンク142を介してノード4との通信を試行する。ノード4はオフラインであるため、破線142、152、および154で示されているように、通信リンク142、152、および154の各々が切断される。従って、この状況では、ノード1、ノード2、およびノード3は、マルチキャスト識別メッセージのブロードキャストのレートを定常状態のレートから過渡状態のレートに増加させる過渡モードに戻る。
【0046】
図2Mに示すように、ノード4がオフラインであることを検出すると、ノード1、ノード2、およびノード3は、ノード4がメッシュネットワーク上のノードであるが、ノード4との通信リンクが確立されていないことを示すように個々のトークンレジスタ104を変更する。さらに、
図2Nに示されるように、所定の時間(例えば、5~10秒)後、ノード1、ノード2、およびノード3は、メッシュネットワークからノード4を削除するように個々のトークンレジスタ104を変更する。さらに、閾値時間(例えば、5~10秒)内に追加のノード102がオンラインにならない例では、結果的に形成されるメッシュネットワークは、3個のノード102間の完全接続されたメッシュネットワークとなる。従って、メッシュネットワークは定常状態にあり、このような状況では、ノード1、ノード2、およびノード3は、マルチキャスト識別メッセージのブロードキャストのレートを過渡状態のレートから定常状態のレートに低減する。
【0047】
図2A~
図2Nのシステム100を使用することにより、ノード102の各々を、非決定論的な順序でオンラインにし、かつ/またはオフラインにすることができる。さらに、ノード102の通信を可能にするミドルウェアは、対応する各トークンレジスタ104が通信リンクが確立されたことを示すまでメッセージを遅らせることができる。このようにして、メッセージの再送信および/またはメッシュネットワーク上での衝突による遅延を短縮することができる。さらに、説明したように、システム100はサーバレスであるため、システム100の単一障害点は存在しない。実際、
図2M~
図2Nに示されているように、各ノード102は、別のノード102がオフラインになったことを検出したことに応答して、是正措置を取るように構成される。
【0048】
図3は、例えば、
図1のノード52および/または
図2A-2Nのノード102のような、N個のノード202をサポートすることができるコンピューティングプラットフォーム200の例を示す。ここで、Nは、1以上の整数である。コンピューティングプラットフォーム200は、ハードウェア204を含む。いくつかの例では、ハードウェア204は、機械可読命令を格納するための非一時的メモリ(例えば、揮発性メモリおよび/または不揮発性メモリ)と、メモリにアクセスして機械可読命令を実行するための処理ユニット(例えば、1つまたは複数のプロセッサコア)とを含む。いくつかの例では、メモリは、ハードディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、ランダムアクセスメモリ、またはそれらの任意の組み合わせとして実装することができる。他の例では、ハードウェア204は、命令が埋め込まれたマイクロコントローラを含むことができる。さらに、他の例では、ハードウェア204は、特定用途向け集積回路(ASIC)チップを含む。ハードウェア204はまた、他のコンピューティングプラットフォームと通信するためのイーサネット(登録商標)インターフェース、Wi?Fiインターフェース、ブルートゥース(Bluetooth(登録商標))インターフェースなどのインターフェースを含むことができる。
【0049】
コンピューティングプラットフォーム200は、ハードウェア204上で実行されるオペレーティングシステム206を含むことができる。オペレーティングシステム206は、ハードウェア204およびソフトウェアリソースを管理することができるとともに、コンピュータプログラムに共通のサービスを提供することができる。さらに、ミドルウェア208(例えば、アプリケーションソフトウェア)のN個のインスタンスは、オペレーティングシステム206上で実行することができる。ミドルウェア208のN個のインスタンスの各々は、対応するノード202上に実装することができる。ミドルウェア208は、N個のアプリケーション210間の通信を可能にすることができ、各ノード202は、アプリケーションを含む。より具体的には、ミドルウェア208の各インスタンスは、2つのアプリケーションが別々のコンピューティングプラットフォーム上で実行されている状況を含んで、1つのアプリケーション210から別のアプリケーション210へのネットワーク通信(例えば、TCPおよび/またはUDPパケット)を指示することができる。さらに、各ミドルウェア208のインスタンスは、対応するアプリケーション210による別のアプリケーションと通信するための要求を、そのアプリケーションに対応するノードがオンラインになるまで遅らせることができる。即ち、ミドルウェア208は、任意のアプリケーション210がオフラインのアプリケーションと通信するための試行を防止することができる。いくつかの例では、ミドルウェア208のN個のインスタンスは、対応するアプリケーション210のための独立したランタイム環境を提供することができる。
【0050】
図4は、
図1のシステム50および/または
図2A~
図2Nのシステム100を実装するために採用することができるシステム250の例を示す。さらに、システム250は、3つのコンピューティングプラットフォーム252を含む。各コンピューティングプラットフォーム252は、
図3のコンピューティングプラットフォーム200のインスタンスを表すことができる。システム250は、戦闘用の航空機で実行することができるソフトウェアの例として提供されている。
【0051】
システム250は、コンピューティングプラットフォーム252の各々上で実行されるノードを含む。各ノードは、
図1のノード52および/または
図2A~
図2Nのノード102のインスタンスを表すことができる。
図4に示される例では、コンピューティングプラットフォーム1は、ナビゲーションノード260および制御ノード262を含む。ナビゲーションノード260は、例えば、航空機のナビゲーションシステムを制御するためのソフトウェアを含むことができる。制御ノード262は、航空機のパイロット制御のためのソフトウェアを表すことができる。
【0052】
コンピューティングプラットフォーム2は、例えば、航空機の着陸装置を制御するためのソフトウェアを表すことができる着陸装置ノード264を含むことができる。さらに、コンピューティングプラットフォーム3は、航空機の兵器システムの動作を制御するための兵器ノード266を含むことができる。ナビゲーションノード260、制御ノード262、着陸装置ノード264、および兵器ノード266の各々は、本明細書で説明されるように、非決定論的な方法でオンラインまたはオフラインにすることができる。さらに、図示のように、双方向通信リンク270(2つの一方向通信リンクを表すことができる)は、システム250内の各ノードをシステム250内の全ての他のノードに接続する。このようにして、システム250は、完全接続されたメッシュネットワークを動作させる。さらに、システム250の結果的に形成されるメッシュネットワークは、サーバレスであり、その結果、システム250は単一障害点を持たない。
【0053】
図5は、コンピューティングプラットフォーム上で動作する複数のノードの間でメッシュネットワークを確立および維持するための方法300の例を示す。方法300は、任意のノード(例えば、
図1のノード52および/または
図2A~
図2Nのノード102)によって実行することができる。
【0054】
310において、任意のノードは、任意のノードがオンラインになるように、任意のノードの上で実行されるアプリケーションを開始する。315において、ノードは、マルチキャスト識別メッセージを過渡状態のレートでブロードキャストする。320において、ノードは、メッシュネットワーク上の別のノードによってブロードキャストされたマルチキャスト識別メッセージを受信する。
【0055】
325において、他のノードとの通信リンクが確立されているかどうかに関して判定が行われる。325における判定が負(例えば、否)である場合、方法300は330に移行する。325における判定が正(例えば、是)である場合、方法300は335に移行する。330において、任意のノードは、マルチキャスト識別メッセージをブロードキャストする他のノードとの通信リンクをマルチキャスト識別メッセージにおいて識別された通信ポートで確立し、方法は315に戻る。
【0056】
335において、ノードまたは複数のノードが任意のノードのトークンレジスタに追加されるべきであるかどうかに関して判定が行われる。判定は、例えば、マルチキャスト識別メッセージをブロードキャストした他のノードが、任意のノードのトークンレジスタ内に存在しない、かつ/または任意のノードのトークンレジスタ内に存在しない第3のノードが、他のノードによってブロードキャストされたマルチキャスト識別メッセージにおいて識別されるという判定に基づくことができる。335における判定が正(例えば、是)である場合、方法300は340に移行する。335における判定が負(例えば、否)である場合、方法300は345に移行する。340において、任意のノードは、335における判定に基づいてそのトークンレジスタを変更する。特に、340においてトークンレジスタは、任意のノードが通信を確立したメッシュネットワークの各ノードに関する特定の表示と、通信が確立されていないメッシュネットワーク上の各ノードの別の表示とを記録し、方法300は、315に戻る。
【0057】
345において、メッシュネットワークが定常状態を達成したかどうかに関して別の判定が行われる。345における判定は、例えば、任意のノードのトークンレジスタがマルチキャスト識別メッセージに応答して変更されてからの経過時間に基づくことができる。345における判定が負(例えば、否)である場合、方法300は315に戻ることができる。345における判定が正(例えば、是)である場合、方法300は350に移行する。350において、任意のノードは、マルチキャスト識別メッセージのブロードキャストのレートを(過渡状態のレートから)定常状態のレートに低減する。
【0058】
上記で説明したことは一例である。当然ながら、考えられる全ての構成要素または方法の組み合わせを説明することは不可能であるが、当業者は、さらに多くの組み合わせおよび順列が可能であることを認識するであろう。従って、本開示は、添付の特許請求の範囲を含む、本出願の範囲内にあるそのような全ての変更、修正、および変形を包含することを意図している。本明細書で使用される場合、「含む」という用語は、含むがこれに限定されないことを意味し、「含んでいる」という用語は、含んでいるがこれに限定されないことを意味する。「に基づく」という用語は、少なくとも部分的に基づくことを意味する。さらに、本開示または特許請求の範囲が「ある」構成要素、「第1の」構成要素、または「別の」構成要素、またはそれらと同等の構成要素を記載している場合、それは、そのような構成要素を1つまたは複数含むと解釈されるべきであり、2つ以上の要素を必要とするわけでも、除外するわけでもない。
以下に、上記実施形態から把握できる技術思想を付記として記載する。
[付記1]
メッシュネットワークを確立するためのシステムであって、
1つまたは複数のコンピューティングプラットフォームを備え、前記1つまたは複数のコンピューティングプラットフォームは、
複数のノードの各々についてソフトウェアアプリケーションの実行を開始し、ここで、複数のノードの各々は、
前記複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
トークンレジスタに、前記複数のノードにおける通信リンクが確立されている各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、前記複数のノードの通信リンクが確立されていない各ノードの別の表示とを記録し、
個々のノードの始動に応答して、前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、個々のノードからの特定のマルチキャスト識別メッセージは、個々のノードが通信リンクを確立した前記複数のノードの各ノードに関する特定の識別子と、前記1つまたは複数のマルチキャスト識別メッセージにおいて識別された、個々のノードが通信リンクを確立していない各ノードに関する別の識別子とを含み、
各ノードが伝送制御プロトコル(TCP)を介して通信する、システム。
[付記2]
メッシュネットワークを確立するためのシステムであって、
1つまたは複数のコンピューティングプラットフォームを備え、前記1つまたは複数のコンピューティングプラットフォームは、
複数のノードの各々についてソフトウェアアプリケーションの実行を開始し、ここで、複数のノードの各々は、
前記複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
トークンレジスタに、前記複数のノードにおける通信リンクが確立されている各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、前記複数のノードの通信リンクが確立されていない各ノードの別の表示とを記録し、
個々のノードの始動に応答して、前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、個々のノードからの特定のマルチキャスト識別メッセージは、個々のノードが通信リンクを確立した前記複数のノードの各ノードに関する特定の識別子と、前記1つまたは複数のマルチキャスト識別メッセージにおいて識別された、個々のノードが通信リンクを確立していない各ノードに関する別の識別子とを含み、
前記1つまたは複数のコンピューティングプラットフォームは、複数のコンピューティングプラットフォームを含む、システム。
[付記3]
メッシュネットワークを確立するためのシステムであって、
1つまたは複数のコンピューティングプラットフォームを備え、前記1つまたは複数のコンピューティングプラットフォームは、
複数のノードの各々についてソフトウェアアプリケーションの実行を開始し、ここで、複数のノードの各々は、
前記複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
トークンレジスタに、前記複数のノードにおける通信リンクが確立されている各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、前記複数のノードの通信リンクが確立されていない各ノードの別の表示とを記録し、
個々のノードの始動に応答して、前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、個々のノードからの特定のマルチキャスト識別メッセージは、個々のノードが通信リンクを確立した前記複数のノードの各ノードに関する特定の識別子と、前記1つまたは複数のマルチキャスト識別メッセージにおいて識別された、個々のノードが通信リンクを確立していない各ノードに関する別の識別子とを含み、
前記1つまたは複数のコンピューティングプラットフォームが航空機に実装される、システム。
[付記4]
前記複数のノードのうちの第1のノードがナビゲーションシステムを含み、前記複数のノードのうちの第2のノードが兵器システムを含む、付記3に記載のシステム。
[付記5]
メッシュネットワークを確立するためのシステムであって、
前記メッシュネットワークの複数のノードを備え、前記複数のノードの各々が1つまたは複数のコンピューティングプラットフォーム上で実行され、オンラインになると、前記複数のノードの各々が、
前記メッシュネットワーク上でマルチキャスト識別メッセージをブロードキャストし、ここで、各マルチキャスト識別メッセージは、個々のノードの一意の識別子と、個々のノードに関するトークンレジスタの現在の状態を特徴付けるデータとを含んでおり、
前記複数のノードの個々のノードによって、他のノードからのマルチキャスト識別メッセージに応答して、前記複数のノードの別のノードとの前記メッシュネットワークにおける通信リンクを確立し、
個々のトークンレジスタに、通信リンクが確立されている前記複数のノードにおける各ノードの特定の表示と、1つまたは複数のマルチキャスト識別メッセージにおいて識別された、通信リンクが確立されていない前記複数のノードの各ノードの別の表示とを記録し、
前記複数のノードのうちの少なくとも2つが非決定論的な順序で始動され、
各ノードが伝送制御プロトコル(TCP)を介して通信する、システム。