(58)【調査した分野】(Int.Cl.,DB名)
前記複数のネットワークノードは、前記複数のネットワークノード上のアプリケーションおよびL2分離制御経路のうちの少なくとも一方を通じてリンクロスイベントを相互に伝達する、請求項1または2に記載のシステム。
前記第2のノードは、前記フレームを再びブロードキャストするかどうかを判断するように構成され、前記判断は、前記フレームが1つ以上のインターフェースでまだ送信されていないことに基づいている、請求項4に記載のシステム。
前記ネットワークノードが以前に前記通知を送信したかどうかを判断するステップは、前記ネットワークノード上で実行中のアプリケーションによって、フレーム内のクッキーを見るステップを含む、請求項11に記載の方法。
前記ネットワークノードは1つ以上のアプリケーションを実行し、前記1つ以上のアプリケーションは、以前に前記通知が送信されたかどうかを判断し、前記通知を再送信する、請求項16に記載のネットワークノード。
【発明を実施するための形態】
【0010】
詳細な説明
概要
本開示は、一般に、クラウド管理されたmmWaveベースのポイントツーマルチポイントメッシュバックホールなどの、ネットワークにおけるスケジューリングおよびルーティング決定の管理に関する。中央クラウドソフトウェア定義無線ネットワーク(Software Defined Wireless Network:SDWN)コントローラは、ネットワークに対するルーティングおよびスケジューリング変更を一元的に管理する。ネットワーク内の各ノードには、たとえばリンク故障または他の状況が原因であるリンクロスの場合に実現されるべき新しいルートを識別するイベントプロファイルが設けられる。特定のリンクまたはリンクの組合せが故障すると、故障したリンクに接続されているノード上で実行中のアプリケーションが、リンクダウン状態をブロードキャストし得る。加えて、ネットワーク内のノードは、それら自体のルーティングテーブルをアップデートして、イベントプロファイル内に設けられている新しいルーティングスキームを実現する。新しいルーティングスキームを実現しているノードは、ネットワーク内の付加的なノードが故障したリンクに直接接続されていないにもかかわらずこの変更によって影響を受けるこれらのノードを含み得る。
【0011】
ネットワークノードは、隣接ノードと通信するために、コントローラによってセットアップされた数ギガバイトの速度の無線通信デバイスを含み得る。コントローラは、集中型スケジューリングを全ての接続されたノードにプッシュして可能なリンクを構築する。リンクは、高指向性を有している。フェーズドアレイは、高指向性リンク技術の一例である。プライマリリンクは、コントローラによって選択される、コントローラトラフィックおよびノーマルユーザデータのルーティングを行なう経路を含む。リンクレベル無線リソーススケジューリングは、ネットワークレベルルーティング決定で調整されて、所与のノードが所望のピアとビームフォーミングされる。指向性フェーズドアレイを用いて、バックホールトポロジは代替(冗長)リンクを有することが予想される。ノードは、これらのリンクがビームフォーミングされたリンクを維持するように、これらのリンクにおける時間の一部のみを費やすと予想され、その第一の目的は、きわめて低い帯域幅制御トラフィックの交換である。これらの代替リンクは、プライマリリンクロス中にコントローラに可能な経路を提供する。しかしながら、プライマリリンクの故障時に少なくとも1つのアクティブな代替リンクが存在するべきである。また、リンクロスの際にトラフィックの復元における遅延を避けるために、待ち時間を可能な限り最短に保つべきである。
【0012】
ネットワークは、たとえば100を超えるノードなど多くのノードを含み得る。そのため、リンク故障のすべての順列に関してスケジューリングおよびルートを決定する複雑な計算は、時間的制約がある中ではきわめて難しい場合がある。
【0013】
イベントプロファイルは、通常動作の場合および1つ以上のリンクが故障した場合のルーティングおよびスケジューリング命令を有する。このトポロジでは、すべてのスケジューリングおよびルーティング決定は、十分に同期されている必要がある。これに対応するために、ノードがリンクロスにどのように応答するべきかを示すプロファイルは、リンクロスのすべての入れ替え可能な可能性を有する。イベントプロファイルはたとえば、ルックアップテーブル、または可能なリンクロスイベントを提案されたノード応答と関連付ける他のデータ構造でもよい。
【0014】
また、コントローラは、定期的にプロファイルをアップデートする。アップデートは、あらゆるリンク変更イベントを補償し得る。プロファイルは、mmWaveノードがそれほどダイナミックではないチャネル状態を有する固定ノードであるということを利用して、アダプティブになるようにリアルタイムフィードバックに基づいて選択される。コントローラは、定期的なリンクアップデートを通じて、リンク切断の可能性が高いリンクについて学習し、それらの順列の場合のみにプロファイルアップデートを提供して、クラウドの実現の大半によって管理可能な計算上の複雑さを低下させる。
【0015】
プロファイルエントリにマッチングしないリンクロスの組合せの場合、ノードは、データフレームのいかなるさらなる転送も停止し、バッファリングモードになる。リンクロスブロードキャストは、最終的にコントローラネットワークに対して有線接続性を有するハブノードを介してコントローラに達し、コントローラは、新しいルートアップデートをプッシュすることによって応答する。新しいルートが構築されるまでネットワークルートが不安定な状態にあることを考慮すると、ハブノードは、コントローラによって新しいルートアップデートをブロードキャストをすると予想される。いくつかの実施態様では、ノードは、プロファイルにマッチングするリンクロスイベントについて一時的なバッファリング状態になり得、転送状態に移行する前にすべての隣接ノードに関してルートアップデートを保証する。
【0016】
なお、故障したリンクについて2つのノードが存在する。双方のノードは、プロファイルテーブル内に入力されている同じクッキーを任意で用いて、すべての利用可能なリンク上のリンクロスをブロードキャストし得る。新しいプロファイルがコントローラによってプッシュされる前に新たに選択されたプライマリリンクも故障すれば、ノードは、マッチングプロファイルなしでそのイベントをリンクロスとして処理するように選択し、新しいルートアップデートに関してコントローラにリンクロスイベントを、再びブロードキャストとして、可能であればすべての利用可能なリンクで送ってもよい。
【0017】
そのような状況は珍しいことが予想され、リンクロスイベントがコントローラに到達した後のアップデートでコントローラがターンアラウンドするまでは、そのような変更は一時的である。
【0018】
ルーティングに必要とされるプライマリリンクが故障したときに起こるように、故障したリンクを有するノードによって使用されるブロードキャストメカニズムおよびノード間通信メカニズムは、コントローラセットアップSDNルーティングに依存しない。特定のリンクが故障すると、故障したリンクを有するノードが通知をブロードキャストする。この通知は、さまざまな伝搬方法のうちのいずれかを使用してブロードキャスト可能である。一例によると、ルーティングメカニズムは、任意にコントローラプロキシとして1つ以上のノードを使用して、ローソケット(raw socket)および特殊なイーサタイプを使用し得る。たとえば、故障したリンクを有するノードは、特殊なイーサタイプを有するフレームをブロードキャストする。イーサタイプを検出しそれをノード上で実行中のアプリケーションに転送するスイッチングエントリで、すべてのノードのセットアップが行なわれる。アプリケーションはそれをローソケットで受信し、基礎をなすネットワークは、ブロードキャストされたフレームの再分散を行なわない。受信ノードは、過去に構成された期間内にマッチングするクッキーのためにブロードキャストをまだ行っていない場合、すべての利用可能なインターフェース上のリンク故障を再送信するように選択可能である。アプリケーションは、ブロードキャストされたフレーム内の特定のクッキーを見て以前にフレームを転送したかどうかを識別し、再びそれを転送しようとする前に、トポロジ内にループが存在しないことを保証する。有線ネットワークによってコントローラに接続されている「ハブノード」は、付加的にブロードキャストされたフレームをコントローラに送り、それによって、コントローラは今後の決定を行なうことができる。
【0019】
別の例によると、標準層2/標準層3(L2/L3)ルーティングメカニズムを使用可能である。たとえば、制御トラフィックは、仮想ローカルエリアネットワーク(VLAN)内などにおいて、L2隔離され得る。さらに別のアプローチでは、待ち時間およびmmWave特性について最適化された標準L2/L3ルーティングアルゴリズムを変更する。一例として、最適化リンク状態ルーティング(Optimized Link State Routing:OLSR)アルゴリズムでは、必要とされるいかなる動作またはパラメータも、より速いルート収束について変更し得る。さらに、ブロードキャスト待ち時間も、制御された指向性mmWaveネットワークについて変更し得る。コントローラおよびノード間メッセージ通信メカニズムは、たとえば、特定のネットワークのシステム展開シナリオおよびルーティング特性に基づいて事前に決められ得る。
【0020】
各ノードは、ブロードキャストされたフレームを受信しそれを転送するかどうかを判断すると、それ自体のルーティングテーブルをイベントプロファイルに基づいてアップデートする。たとえば、所与のノードは、リンクの特定の組合せが故障したと示す、複数のブロードキャストされたフレームを受信し得る。所与のノードは、イベントプロファイルを調べ、当該故障したリンクの特定の組合せに対応する、所定の推奨された応答を識別する。所与のノードは、その後所定の推奨された応答に基づいて、それ自体のルーティングテーブルをアップデート可能である。ネットワーク内の他の各ノードも、同じ手続きを実行する。
【0021】
上記の技術は、コントローラに対する帯域外アクセスについてプロダクトが付加的なロバスト無線技術を必要としないため、必要とするプロダクトコストおよびパワーが低く、かつ、ルートの再構築に必要なローカルノード間通信としてのより良好な性能がコントローラ応答よりも待ち時間が短いと予想されるという点で、有利である。
【0022】
システムの例
図1は、クラウドコントローラ110と相互接続された複数のノード152〜158とを含むシステム100の例を示す図である。数個のノードしか図示されていないが、非常に多くのノードが含まれ得ると理解するべきである。ノードは、リンク182を介してクラウドコントローラ110と相互接続され、複数のプライマリリンク184〜186および代替リンク192〜196を介して互いに相互接続されている。
【0023】
ネットワーク112は、SDWN、またはデータセンター、負荷が分散されたサーバファーム、相互接続された周辺機器のバックプレーン、マザーボード上の構成要素のシステムなどの、いかなる他のタイプのネットワークでもよい。ネットワーク112および間にあるノードは、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、広域ネットワーク、ローカルネットワーク、1つ以上の企業が所有する通信プロトコルを使用したプライベートネットワーク、イーサネット(登録商標)、WiFi(登録商標)(802.11、802.11b、g、n、または他のそのような規格)、HTTP、および上述したもののさまざまな組合せを含むさまざまな構成およびプロトコルを備え得る。
【0024】
コントローラは、たとえば、ネットワークに対するルーティングおよびスケジューリング変更を一元的に管理する中央クラウドSDWNコントローラであり得る。コントローラは、集中型スケジューリングをすべての接続されたノードにプッシュして可能なリンクを構築する。また、コントローラは、ネットワーク内の各ノードに、リンクロスの場合に実現されるべき新しいルートを識別するイベントプロファイルを提供する。また、コントローラは、定期的にプロファイルをアップデートする。アップデートは、ダウンリンク、修復されたリンク、および欠陥の可能性が高いリンクなど、いかなるリンク変更イベントも補償し得る。プロファイルは、アダプティブになるようにリアルタイムフィードバックに基づいて選択される。
【0025】
ノード152〜158は、たとえば、隣接ノードと通信するためにコントローラによってセットアップされた数ギガバイトの速度の無線通信デバイスであり得る。ノード152〜158の各々は、他のノードとの通信に使用可能なアプリケーションを実行する。たとえば、ノード154は、特定のリンクまたはリンクの組合せの故障を識別する場合、当該故障をアプリケーションを通じてネットワーク内の他のノードにブロードキャストし得る。リンク184、186が依然としてアクティブであると仮定すると、ノード152および158上で実行中のアプリケーションは、ローソケットによってブロードキャストされた「リンクダウン」情報を受信する。受信ノード152、158は、以前に同じ「リンクダウン」情報をブロードキャストしたかどうかを判断し、ブロードキャストしていない場合、ノード152、158は、当該「リンクダウン」情報を他の接続されたノードにブロードキャストする。
【0026】
コントローラ110に接続されているノード152は、ハブノードとして機能する。上述の例を続けると、ノード152が「リンクダウン」情報を受信すると、コントローラ110にもこの情報を転送して、コントローラ110が今後のルーティング決定を行なえるようにする。
【0027】
ネットワーク内のノードは、それら自体のルーティングテーブルをアップデートして、イベントプロファイルに設けられた新しいルーティングスキームを実現する。たとえば、それら自体に接続された1つ以上のリンクがダウンしたと検出することによって、または接続されたノードによってブロードキャストされた「リンクダウン」情報を受信することによってリンクダウンイベントを識別すると、ノードは、識別したリンクダウンイベントをどのように処理するかについての命令に関するイベントプロファイルを参照し得る。イベントプロファイルは、ノードが1つ以上の経路をイベントプロファイルにおいて識別された1つ以上の新しい経路で置換えるべきだと示し得る。新しいルーティングスキームを実現するノードは、この変更によって影響を受けたネットワーク内の付加的なノードを、これらの付加的なノードが故障リンクに直接接続されていないにもかかわらず、含み得る。たとえば、リンク184が故障したと示す「リンクダウン」情報をノード156が受信した場合、ノード156は、イベントプロファイルを調べ、それに応じてそのルーティングテーブルをアップデートしてもよい。
【0028】
プライマリリンク184〜186は、フェーズドアレイなどのmmWave物理層通信に関する高指向性リンクでもよい。プライマリリンク184〜186は、コントローラ110によって選択された、コントローラトラフィックおよびノーマルユーザデータをルーティングする経路を含む。リンクレベル無線リソーススケジューリングは、ネットワークレベルルーティング決定に合わせて調整されて、所与のノードは所望のピアとビームフォーミングされる。指向性フェーズドアレイでは、バックホールトポロジは代替(冗長)リンクを有すると予想される。ノードは、ビームフォーミングされたリンクを維持するようにこれらのリンクにおいて一部の時間のみを費やすと予想され、その第一の目的は、きわめて低い帯域幅制御トラフィックの交換である。
【0029】
代替リンク192〜196は、プライマリリンクロス中にコントローラに可能な経路を提供する。リンクがプライマリリンクとみなされるかまたは代替リンクとみなされるかは、特定のノードまたは経路に関係がある場合がある。たとえば、ノード152からノード154へのプライマリ経路はプライマリリンク184を含み得る一方で、代替経路は代替リンク192、194を含み得る。プライマリリンク故障の時に少なくとも1つのアクティブな代替リンクが存在するべきである。また、リンクロスにおけるトラフィックの復元の際の遅延を避けるために、待ち時間を可能な限り最短に保つべきである。
【0030】
一例によると、ノード154は、プライマリリンク186の故障を検出可能である。ノード154によって使用されるノード間通信メカニズムは、いかなる特定のルーティングにも依存しない。そうではなく、故障リンクを有するノード154は、特殊なイーサタイプを有するフレームをブロードキャストする。ノード152〜158はすべて、イーサタイプを検出しノード上で実行中のアプリケーションにそれを転送するスイッチングエントリでセットアップされる。したがって、ノード152、156、158上で実行中のアプリケーションは、ローソケットでブロードキャストされたフレームを受信し、基礎をなすネットワークはブロードキャストされたフレームを再分配しない。ノード152、156、158の各々の上で実行中のアプリケーションは、ブロードキャストされたフレーム内の特定のクッキーを見て、以前にフレームを転送したかどうかを識別する。受信ノード152、156、158上のアプリケーションのいずれかが以前にフレームを転送していない場合、そのアプリケーションは、すべての利用可能なインターフェースでフレームを再送信する。
【0031】
故障したプライマリリンク186もノード152に連結されているので、ノード152は、ノード154と同時にすべての利用可能なリンク上のリンクロスの検出およびブロードキャストを行ない得る。いくつかの例では、ノード152によるブロードキャストは、ノード154によるブロードキャストと同じクッキーを含み得る。
【0032】
上記の例を続けると、各受信ノード152、156、158は、イベントプロファイルに基づいてそれ自体のルーティングテーブルをアップデートする。たとえば、ノード156は、各々が異なる故障リンクを識別する複数のブロードキャストされたフレームを受信し得る。まとめると、複数のブロードキャストされたフレームは、故障したリンクの特定の組合せを示す。いくつかの例では、ノード156は、1つ以上のフレームを収集し、故障したリンクの組合せに対応するルーティングアップデートに関するイベントプロファイルを調べる。他の例では、ノード156は、受信された各個別の通知に関するイベントプロファイルを調べる。どちらの場合でも、ノード156はその後、イベントプロファイル内の所定の推奨された応答に基づいてそれ自体のルーティングテーブルをアップデート可能である。ネットワーク内の他のノード152、158も、同じ手続きを行なう。いくつかの例では、ノード152、156、158は、ブロードキャストされたフレームを再送信しつつ転送状態に移行する前に一時的な干渉状態になり得る。
【0033】
いくつかの例では、リンクロスの組合せはプロファイルエントリにマッチングしない場合がある。このイベントでは、ノード152〜158は、データフレームのいかなるさらなる転送も中止可能であり、干渉モードになり得る。リンクロスブロードキャストは、コントローラネットワークに対する優先接続性を有するハブノード120を介して、たとえばリンク182を介して、最終的にコントローラ110に到達する。それに応じて、コントローラ110は、新しいルートアップデートをプッシュする。ハブノード152は、新しいルートアップデートをブロードキャストする。
【0034】
新たに選択されたプライマリリンクも、新しいプロファイルがコントローラによってプッシュされる前に故障する可能性がある。この場合、ノードは、そのイベントをマッチングプロファイルを有さないリンクロスとして処理するように選択可能である。したがって、ノードは、新しいルートアップデートに関してコントローラにリンクロスイベントを、たとえば、すべての利用可能なリンクでブロードキャストされるように送ることができる。
【0035】
図2は、コントローラ110をより詳細に示す。コントローラ110は、いかなるタイプの仮想化もしくは非仮想化コンピューティングデバイス、またはネットワークで通信可能なコンピューティングデバイスのシステムでもよい。コントローラ110は、1つ以上のプロセッサ140と、メモリ130と、汎用コンピューティングデバイスに典型的に存在する他の構成要素とを含み得る。メモリ130は、1つ以上のプロセッサ140によって実行可能な命令138を含む、1つ以上のプロセッサ140によってアクセス可能な情報を格納可能である。
【0036】
メモリ130も、プロセッサ140によって検索、操作、または格納可能なデータ134を含み得る。メモリは、プロセッサによってアクセス可能な情報を格納可能ないかなる非一時的なタイプ、たとえば、ハードドライブ、メモリカード、RAM、DVD、書き込み可能なタイプなどでもよい。
【0037】
命令138は、1つ以上のプロセッサによって直接実行すべき命令のいかなるセット、たとえばマシンコード、または間接的に実行すべき命令のいかなるセット、たとえばスクリプトであり得る。その点に関して、「命令」、「アプリケーション」、「ステップ」および「プログラム」という用語は、ここでは同じ意味で使用可能である。命令は、プロセッサによる直接的な処理に関するオブジェクトコードフォーマットで、または、オンデマンドで解釈される、もしくは事前にコンパイルされるスクリプトまたは独立したソースコードモジュールの集合を含むいかなる他のコンピューティングデバイス言語でも格納可能である。命令の機能、方法およびルーチンは、以下でより詳細に説明される。
【0038】
データ134は、命令138に従って1つ以上のプロセッサ140によって検索、格納、または変更可能である。一例では、データ134は、ノード152〜158に提供される1つ以上のイベントプロファイル136を含み得る。イベントプロファイル136は、リンク故障の際にすべてのノードに関するルーティング命令を提供するマスターイベントプロファイルであり得る。別の例では、イベントプロファイル136は、多くのイベントプロファイル、たとえばネットワーク内の各ノード固有の1つのプロファイルを含み得る。
【0039】
命令138に従って、コントローラ110は、ネットワーク内のノードにイベントプロファイル136を提供し得る。コントローラ110はさらに、ノードから情報を、たとえば、ダウンしているリンクまたは切断の可能性のあるリンクを識別する情報を受信し得る。コントローラ110は、この情報を使用してイベントプロファイルをアップデート可能である。アップデートされたイベントプロファイルは、再びノードに提供される。
【0040】
ここで説明される主題はいかなる特定のデータ構造によっても制限されないが、データ134は、内部メモリまたは外部メモリ、コンピュータレジスタ、関係データベースに多くの異なるフィールドおよびレコードを有するテーブル、またはXMLドキュメントとして保存可能である。また、データ134は、2進値、ASCIIまたはUnicodeなどのコンピューティングデバイスが読取り可能ないかなるフォーマットでもフォーマット可能であるが、これらに限定されない。さらに、データは、関連情報の識別に十分ないかなる情報、たとえば、数、説明テキスト、プロプライエタリコード、ポインタ、他のネットワーク位置などの他のメモリに格納されたデータについての記載、または該当するデータを計算するために関数によって使用される情報を含み得る。
【0041】
1つ以上のプロセッサ140は、市販のCPUなどのいかなる従来のプロセッサでもあり得る。代替的に、プロセッサは、特定用途向け集積回路(「ASIC」)または他のハードウェアベースのプロセッサなどの専用の構成要素であり得る。必要ではないが、サーバ130は、特定のコンピューティングプロセスを行なうために専門ハードウェア構成要素を含み得る。
【0042】
図2は、同じブロック内のコンピューティングデバイス110のプロセッサ、メモリ、および他の要素を機能的に示すが、プロセッサ、コンピュータ、コンピューティングデバイス、またはメモリは、実際には、同じ物理的ハウジング内にあってもなくてもよい複数のプロセッサ、コンピュータ、コンピューティングデバイス、またはメモリを含み得る。たとえば、メモリは、コンピューティングデバイス110のハウジングとは異なるハウジング内に位置するハードドライブまたは他の格納媒体であり得る。したがって、プロセッサ、コンピュータ、コンピューティングデバイス、またはメモリについての記載は、並列に動作してもしなくてもよいプロセッサ、コンピュータ、コンピューティングデバイス、またはメモリの集合についての言及を含むと理解されよう。たとえば、コンピューティングデバイス110は、負荷が分散されたサーバファーム、分散システムなどとして動作するサーバコンピューティングデバイスを含み得る。またさらに、以下で説明される機能のいくつかは1つのプロセッサを有する1つのコンピューティングデバイス上で発生すると示されているが、ここで説明される主題のさまざまな側面は、複数のコンピューティングデバイス、たとえば、ネットワークで情報を通信することによって実現可能である。
【0043】
図3は、ノード350の一例をより詳細に示す図である。いくつかの例では、ノード350は、コントローラ110と同様に構成されてもよく、上述のように、1つ以上のプロセッサ380およびメモリ360を有してもよく、メモリ360はデータ362および命令368を含む。いくつかの例では、ノード350は、サーバ、ルータ、または他のいかなるタイプのコンピューティングデバイスなどのネットワークデバイスでもよい。いくつかの例では、ノード350は、通常パーソナルコンピューティングデバイスと接続して使用される構成要素のすべてを有するパーソナルコンピューティングデバイス、たとえば、中央処理装置(CPU)、データおよび命令を格納するメモリ(RAMおよび内部ハードドライブなど)、ディスプレイ(スクリーンを有するモニタ、タッチスクリーン、プロジェクタ、テレビ、または情報を表示するように動作可能な他のデバイスなど)、ユーザインプットデバイス(マウス、キーボード、タッチスクリーン、またはマイクロフォンなど)、およびこれらの要素を互いに接続するために使用される全ての構成要素でもよい。
【0044】
ノード350は、ノード350上で実行可能な1つ以上のアプリケーション370も含み得る。アプリケーション370は、さまざまなノード間の通信を容易にするといった、さまざまな機能を行なうように構成され得る。たとえば、アプリケーションは、すべてのインターフェースによってリスニングを行なうソケットを含み得る。アプリケーション370は、ブロードキャストされたフレームなどの通知を送るかどうかを判断し得る。アプリケーション370はメモリ360と離れていると図示されているが、メモリ360と統合可能であると理解されるべきである。
【0045】
いくつかの例では、ノード350は、ノード間通信に関する他の特徴を含み得る。たとえば、ノード350は、L2/L3ルーティング用のポートまたはインターフェースを備え得る。
【0046】
ノード350は、イベントプロファイル364およびルーティングテーブル366などのデータ362を格納し得る。イベントプロファイル364は、リンク故障の際にノード350に情報を提供するコントローラ110(
図2)によってプッシュされるテーブルまたは他のデータ構造でもよい。ノード350上に格納されたイベントプロファイル364は、
図2のイベントプロファイル136と同じでもよい。他の例では、イベントプロファイル364はノード350に特有でもよい。ルーティングテーブル366は、ノード350およびコントローラ110の少なくとも一方によってアップデート可能ないかなるタイプのルーティングテーブルでもよい。
【0047】
ノード350上でプログラムされた命令368は、ノード350に特定のリンクダウンイベントの発生を識別させる。この識別は、隣接ノードからの通知の検出、受信、またはいかなる他の種類の技術を含み得る。ノード350は、以前にリンクダウンイベントを処理したかどうかを判断し、処理していない場合、ネットワーク内の他のノードにイベントを伝達する。上述したように、この判断およびそれに続く伝達は、アプリケーション370によって行なうことが可能である。
【0048】
ノード350はさらに、イベントプロファイル364に基づいて、特定のリンクロスイベントに対応するルーティング変更を決定し得る。したがって、ノード350は、所定のルーティング変更に基づいてルーティングテーブル366をアップデートする。
【0049】
図4は、イベントプロファイル400の例を示す図である。この例では、イベントプロファイル400は、複数の列410および複数の行430を含むテーブルである。各行430の第1の列412は、特定のリンクロスイベントを示し得る。たとえば、各セルは、「リンク1」がダウンしている、「リンク1」および「リンク3」がダウンしている、といったダウンリンクの多くの可能な組合せのうちの1つを示し得る。いくつかの組合せのみが示されているが、多くの順列を含むことが可能である。たとえば、何百または何千のノードを含む大規模ネットワークの場合、イベントプロファイル400は、何千ものまたはそれ以上の可能なリンクロスイベントを含み得る。
【0050】
第1のリンクロスイベント列412内の各エントリに対応するのは、特定のノードに関して指定された列内のエントリである。たとえば、列414はノードAによってとられるべきアクションを識別可能であり、列416はノードBによってとられるべきアクションを識別可能であり、列418はノードnによってとられるべきアクションを識別可能である。これらのアクションは、特定のノードのルーティングテーブルをアップデートするための命令を含み得る。たとえば、リンク1、5、および7がダウンしていることに対応するセル435でのリンクロスイベントの場合、ノードBは、ルーティングテーブルのうちの1つ以上における1つ以上のエントリを変更するように命令され得る。
【0051】
イベントプロファイルの例がテーブルとして
図4で示されているが、他のデータ構造も使用可能である。
【0052】
方法の例
前述の説明に加えて、本開示に係る方法についてここで説明する。方法の動作は特定の順序で説明されるが、動作の順序は変更可能であると理解されるべきである。いくつかの動作は、同時に行なうことができる。さらに、動作は追加または省略可能である。
【0053】
図5は、ネットワークにおけるルーティングおよびアップデートを制御する方法500の例を示す図である。ブロック510で、コントローラは、ネットワーク内のノードにイベントプロファイルを提供し得る。たとえば、コントローラは、ネットワーク内の各ノードに、多数の考えられるリンク故障の組合せの際にさまざまなノードによってとられるべきアクションを示すマスターイベントプロファイルを提供する。
【0054】
ブロック520で、コントローラは、ノードのうちの1つ以上から情報を受信する。たとえば、さまざまなノードからの情報は、ハブノードを通じてコントローラに渡すことが可能である。情報は、1つ以上のリンクの状態を示し得る。たとえば、状態は、リンクをダウンしているまたは故障する可能性があると識別可能である。リンクは、たとえば、誤り率が高いまたは信号強度が低いなどといった現在のメトリクスに基づいて、故障する可能性があると判断可能である。他の例では、コントローラによって統計的分析に基づいて判断可能である。たとえば、コントローラは、リンクの履歴を見て影響を受けやすいリンクを決定し、そのようなリンクが影響を受けにくくなるように故障閾値を適応的に変更可能である。
【0055】
ブロック530で、コントローラは、受信した情報に基づいてイベントプロファイルをアップデートする。たとえば、受信した情報は集約され、一括して、故障する可能性のあるリンクの組合せを識別可能である。当該組合せがイベントプロファイルにまだリストアップされていない場合、コントローラは、当該可能性のあるリンクロスイベントについてノードに関してルーティング変更を追加可能である。コントローラはさらに、アップデートされたイベントプロファイルをノードにプッシュ可能である。
【0056】
図6は、ルーティングトポロジをアップデートする方法600の例を示す図である。この方法は、以下ではネットワーク内の所与のノードの視点から説明される。しかしながら、ネットワーク内の各ノードは、方法600を実行するようにプログラム可能である。
【0057】
ブロック610で、ノードは、リンクロスイベントの発生を識別する。この識別は、1つ以上の接続されたリンクがダウンしたと検出すること、または、コントローラおよび別のノードの少なくとも一方から通知を受信することを含み得る。たとえば、ノードは、それ自体の上で実行中のアプリケーションを通じて、アクティブなリンクを介して依然として接続している隣接ノードから通知を受信可能である。リンクロスイベントは、ネットワーク内の1つまたは複数のリンクの故障または非活性化を含み得る。複雑なネットワークでは、ネットワークの異なるノードにわたるリンクの組合せが、所与の時間にダウンする可能性がある。
【0058】
ブロック620で、ノードは、以前にリンクロスイベントをネットワーク内の他のノードに伝達したかどうかを判断する。たとえば、所与のノード上のアプリケーションは、別のノードから受信されたフレーム内の特定のクッキーを見てもよい。この特定のクッキーは、所与のノードが以前にフレームを転送したかどうかを示す。他の例では、ノードは、以前の送信イベントのログを調べてもよい。
【0059】
ノードが以前にリンクロスイベントの通知を送信したと判断すると、ブロック625で、ノードは、ルーティングおよびコントローラへの情報の送信を継続することが可能である。そのような情報は、
図5を参照して説明されたように、イベントプロファイルをアップデートするためにコントローラによって使用可能である。
【0060】
ノードが以前にリンクロスイベントの通知を送信していない場合、ブロック630で、ノードは1つ以上の隣接ノードに通知を送る。たとえば、ノード上で実行中のアプリケーションは、受信したフレームをすべてのインターフェース上でブロードキャスト可能である。
【0061】
ブロック640で、ノードは、特定のリンクロスイベントに関してルーティング変更を決定する。ルーティング変更の決定は、イベントプロファイルを調べてリンクロスイベントに対応する所定のアクションを識別することを含み得る。いくつかの例では、ノードは、リンクロスイベントの複数の通知を受信可能である。したがって、ノードは、故障したリンクの組合せに関して適切なアップデートを決定可能である。
【0062】
ブロック650で、ノードは、決定したルーティング変更を実現する。たとえば、ノードは、ルーティング/転送テーブルにおける1つ以上のエントリを変更可能である。その後、方法600は、ノードが新しいリンクロスイベントに関してルーティングおよびモニタリングを継続するブロック625に戻る。
【0063】
上述のシステムおよび方法は、コントローラへの帯域外アクセスに関する、付加的なロバスト無線技術を用いずに動作可能である。その結果、コストの大幅な削減および電力の節約が実現される。さらに、ルートの再構築に必要なローカルなノード間通信がコントローラ応答よりも待ち時間が少ないと予想されるため、性能が拡張される。
【0064】
特許請求の範囲によって規定される主題の範囲から逸脱することなく上述した特徴のこれらの変形および組合せならびに他の変形および組合せを利用することができるため、実施形態の上述の説明は、特許請求の範囲によって規定される主題を限定するものではなく、その例示として理解すべきである。一例として、上記の動作は、上述した正確な順序で実行される必要はない。むしろ、さまざまなステップは、異なる順序でまたは同時に処理することができる。たとえば、リンク故障の発生を検出し、リンク故障が以前にノードによって処理されていなかったと判断するノードは、他のノードに対するリンク故障の通知のブロードキャストに先立ってルーティングテーブルをアップデート可能である。別段の記載がない限り、ステップを省略することもできる。さらに、本明細書に記載された実施例、ならびに「たとえば」および「含む」などの表現は、特許請求の範囲の主題を特定の実施例に限定するものとして解釈するべきではなく、むしろ、これらの実施例は、多くの可能な実施形態の一部を例示することを意図している。さらに、異なる図面において、同様の参照番号は、同一または類似の要素を指すことができる。