(57)【特許請求の範囲】
【請求項１】
ネットワークのノードのルーティングエンジンでデータパケットを受信し、
前記データパケットを前記ノードから前記データパケットのあて先へ送るルートを前記ノードの転送テーブルから既存のネットワークポリシーに基づき選択し、該転送テーブルは、前記ノードから前記あて先への２つ以上のルートに関するルートコストを含むルート特性を有し、
ハードウェアコンピューティングデバイスによって、実時間トラフィック情報に基づき、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう、前記選択されたルートを解析し、
前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記データパケットを前記ノードの前記ルーティングエンジンへ返し、前記選択されたルートの代わりに、前記データパケットのための代替のルートを前記転送テーブルから選択する
ことを有し、
前記代替のルートを選択することは、
前記代替のルートが選択されないことで前記データパケットがドロップされる場合に、前記代替のルートが選択されることで該代替のルートの選択が前記既存のネットワークポリシーに反するとしても前記データパケットがドロップされることよりも良い結果がもたされるかどうかを判定し、該判定の結果に応じて前記既存のネットワークポリシーを緩和して前記代替のルートを選択することを含む、
方法。
【請求項２】
前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう前記選択されたルートを解析すること、及び前記データパケットを前記ノードの前記ルーティングエンジンへ返し、前記選択されたルートの代わりに前記データパケットのための前記代替のルートを選択することを、前記選択された代替のルートが前記データパケットを運ぶのに適切であると見なされるまで繰り返し、
前記選択された代替のルートが前記データパケットを運ぶのに適切であると見なされた後に、前記選択された代替のルートに沿って前記データパケットを送信する
ことを更に有する請求項１に記載の方法。
【請求項３】
前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう前記選択されたルートを解析すること、及び前記データパケットを前記ノードの前記ルーティングエンジンへ返し、前記選択されたルートの代わりに前記データパケットのための前記代替のルートを選択することを、終了条件が満たされるまで繰り返し、
前記終了条件が満たされた後に、前記データパケットをドロップする
ことを更に有する請求項１に記載の方法。
【請求項４】
前記データパケットに関するメタデータを保持することを更に有し、
前記メタデータは、前記データパケットを運ぶ適切性に関して、前記ノードから前記あて先へのどのルートが解析されたかを示す、
請求項１に記載の方法。
【請求項５】
前記データパケットのための前記代替のルートを選択することは、
前記転送テーブルにおいて、前記ノードから前記あて先への２つ以上の代替のルートを識別し、
前記２つ以上の代替のルートのルート特性を比較し、
前記ルート特性に少なくとも部分的に基づき、前記２つ以上の代替のルートの中から前記代替のルートを選択する
ことを有する、請求項１に記載の方法。
【請求項６】
前記２つ以上の代替のルートの前記ルート特性を比較することは、前記２つ以上の代替のルート沿いのクオリティ・オブ・サービスを比較することを有する、
請求項５に記載の方法。
【請求項７】
前記２つ以上の代替のルートの前記ルート特性を比較することは、前記データパケットが送信されているアプリケーションに少なくとも部分的に基づき実施される、
請求項５に記載の方法。
【請求項８】
ネットワークのノードを有し、該ノードは、
データパケットを受信し、該データパケットを前記ノードから前記データパケットのあて先へ送るルートを前記ノードの転送テーブルから既存のネットワークポリシーに基づき選択し、前記転送テーブルは、前記ノードから前記あて先への２つ以上のルートに関するルートコストを含むルート特性を有する、よう構成されるルーティングエンジンと、
前記ルーティングエンジンのアウトバウンドインターフェイスに関連するトラフィックシェーピング部と
を有し、
前記トラフィックシェーピング部は、
ハードウェアコンピューティングデバイスによって、実時間トラフィック情報に基づき、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう、前記選択されたルートを解析し、
前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記データパケットを前記ノードの前記ルーティングエンジンへ返す
よう構成され、
前記ルーティングエンジンは、前記データパケットが返されたことに応答して、
前記データパケットのための代替のルートが選択されないことで該データパケットがドロップされる場合に、前記代替のルートが選択されることで該代替のルートの選択が前記既存のネットワークポリシーに反するとしても前記データパケットがドロップされることよりも良い結果がもたされるかどうかを判定し、
該判定の結果に応じて前記既存のネットワークポリシーを緩和して、前記選択されたルートの代わりに、前記代替のルートを前記転送テーブルから選択する
よう更に構成される、
システム。
【請求項９】
前記選択された代替のルートが前記データパケットを運ぶのに適切であると見なされるまで、前記トラフィックシェーピング部は、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう前記選択されたルートを繰り返し解析するように構成され、前記ルーティングエンジンは、前記選択されたルートの代わりに前記データパケットのための前記代替のルートを繰り返し選択するように構成され、
前記ノードは、前記選択された代替のルートが前記データパケットを運ぶのに適切であると見なされた後に、前記選択された代替のルートに沿って前記データパケットを送信するよう構成されるネットワークインターフェイスを更に有する、
請求項８に記載のシステム。
【請求項１０】
終了条件が満たされるまで、前記トラフィックシェーピング部は、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう前記選択されたルートを繰り返し解析するように構成され、前記ルーティングエンジンは、前記選択されたルートの代わりに前記データパケットのための前記代替のルートを繰り返し選択するように構成され、
前記トラフィックシェーピング部は、前記終了条件が満たされた後に、前記データパケットをドロップするよう更に構成される、
請求項８に記載のシステム。
【請求項１１】
前記ルーティングエンジンは、前記データパケットに関するメタデータを保持するよう更に構成され、
前記メタデータは、前記データパケットを運ぶ適切性に関して、前記ノードから前記あて先へのどのルートが解析されたかを示す、
請求項８に記載のシステム。
【請求項１２】
前記ルーティングエンジンは、
前記転送テーブルにおいて、前記ノードから前記あて先への２つ以上の代替のルートを識別し、
前記２つ以上の代替のルートのルート特性を比較し、
前記ルート特性に少なくとも部分的に基づき、前記２つ以上の代替のルートの中から前記代替のルートを選択する
ことによって、前記データパケットのための前記代替のルートを選択するよう構成される、
請求項８に記載のシステム。
【請求項１３】
前記２つ以上の代替のルートの前記ルート特性を比較することは、前記２つ以上の代替のルート沿いのクオリティ・オブ・サービスを比較することを有する、
請求項１２に記載のシステム。
【請求項１４】
前記２つ以上の代替のルートの前記ルート特性を比較することは、前記データパケットが送信されているアプリケーションに少なくとも部分的に基づき実施される、
請求項１２に記載のシステム。
【請求項１５】
プロセッサによって実行される場合に、該プロセッサに、請求項１乃至７のうちいずれか一項に記載の方法を実施させるコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムを記憶しているコンピュータ読出可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示は、ネットワーキングに関係があり、特に、ポリシーベースネットワークにおいて、そのようなネットワークが動的でありうる場合に、ネットワーク利用を改善することに関係がある。
【０００２】
送信元（source）とあて先（destination）との間に複数の経路を有するポリシールーティングネットワーク（policy-routed  network）は、特に、トポロジ及びリンクが時間とともに変化する状況において、一般に、ネットワークのスループットを人為的に低減しながら、それらの複数の経路を活用するよう最適化されていない。リンクが所与のクオリティ・オブ・サービス（ＱｏＳ；quality  of  service）レベル又はディフサーブ・コードポイント（ＤＳＣＰ；differentiate  services  code  point）値について飽和している場合には、追加のトラフィックは、たとえ適切な代替パスが利用可能であるとしてもドロップされる。データをドロップすることにおいて、重要な情報は失われる可能性があり、あるいは、時間依存の情報は過度に遅延される可能性がある。これは、喪失又は遅延が極端な結果となりうる戦術ネットワークにおいて特に重要である。
【０００３】
従来のネットワークマネージャは、とられるべきルートをＱｏＳレベル又はＤＳＣＰ値に基づき決定するポリシーベースマネージメントのためのルールを有しているが、それらのルートが過密である場合には、データは通常はドロップされる。
【発明の概要】
【０００４】
一実施形態において、方法は、ネットワークのノードのルーティングエンジンでデータパケットを受信することを含む。ルートは、前記データパケットを前記ノードから前記データパケットのあて先へ送るために、前記ノードの転送テーブルから選択される。前記転送テーブルは、前記ノードから前記あて先への２つ以上のルートに関するルートコストを含むルート特性を含む。前記選択されたルートは、ハードウェアコンピューティングデバイスによって、実時間トラフィック情報に基づき、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう、解析される。前記データパケットは、前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記ノードの前記ルーティングエンジンへ返される。代替のルートは、前の前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記前の選択されたルートの代わりに前記データパケットのために、前記転送テーブルから選択される。
【０００５】
他の実施形態において、システムは、ネットワークノードを含み、該ノードは、ルーティングエンジンと、該ルーティングエンジンのアウトバウンドインターフェイスに関連するトラフィックシェーピング部とを含む。前記ルーティングエンジンは、データパケットを受信し、該データパケットを前記ノードから前記データパケットのあて先へ送るルートを前記ノードの転送テーブルから選択するよう構成される。前記転送テーブルは、前記ノードから前記あて先への２つ以上のルートに関するルートコストを含むルート特性を含む。前記トラフィックシェーピング部は、ハードウェアコンピューティングデバイスによって、実時間トラフィック情報に基づき、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう、前記選択されたルートを解析するよう構成される。前記トラフィックシェーピング部は、前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記データパケットを前記ノードの前記ルーティングエンジンへ返すよう更に構成される。前記ルーティングエンジンは、前の前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記前の選択されたルートの代わりに、前記データパケットのための代替ルートを前記転送テーブルから選択するよう更に構成される。
【０００６】
更なる他の実施形態において、コンピュータプログラム製品は、コンピュータ可読プログラムコードが担持されているコンピュータ可読記憶媒体を含む。前記コンピュータ可読プログラムコードは、方法を実施するようプロセッサによって実行可能である。前記方法は、ネットワークのノードのルーティングエンジンでデータパケットを受信することを含む。ルートは、前記データパケットを前記ノードから前記データパケットのあて先へ送るために、前記ノードの転送テーブルから選択される。前記転送テーブルは、前記ノードから前記あて先への２つ以上のルートに関するルートコストを含むルート特性を含む。前記選択されたルートは、コンピュータハードウェアコンピューティングデバイスによって、実時間トラフィック情報に基づき、前記選択されたルートが前記データパケットを運ぶのに適切であるかどうかを判定するよう、解析される。前記データパケットは、前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記ノードの前記ルーティングエンジンへ返される。代替のルートは、前の前記選択されたルートが前記データパケットを運ぶのに不適切であると決定される場合には、前記前の選択されたルートの代わりに前記データパケットのために、前記転送テーブルから選択される。
【０００７】
更なる特徴及び利点は、本開示の技術を通じて実現される。本開示の他の実施形態及び態様は、本願で詳細に記載され、特許請求の範囲の部分と見なされる。本開示をその利点及び特徴をもってより良く理解するために、本明細書及び図面を参照されたい。
【図面の簡単な説明】
【０００８】
本開示のより完全な理解のために、これより、添付の図面及び詳細な説明に関連して挙げられている以下の簡単な説明が参照される。図面において、同じ参照符号は同じ部分を表す。
【０００９】
【図１】本開示のいくつかの実施形態に従って、ルーティングシステムのノードのブロック図である。
【００１０】
【図２】本開示のいくつかの実施形態に従って、ネットワークにおいてデータパケットをルーティングする方法のフロー図である。
【００１１】
【図３】本開示のいくつかの実施形態に従って、ルーティングシステムのいくつか又は全ての態様を実装するコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１２】
本ルーティングシステムのいくつかの実施形態に従って、データパケットは、混雑、すなわち、リンク飽和、又は他のトラフィックシェーピング懸案事項によりドロップされるのではなく、リルーティングされてよい。一般に、ルーティングシステムは、選択された“最良”のルートがリンク飽和又は他の問題を抱えていることを特定し、データのための１つ以上の実行可能な代替ルートを動的に特定し、それら代替のルートの中の少なくとも１つを使用してよい。このように、パケットをドロップするのではなく、ルーティングシステムは、データパケットのあて先に向けて、場合により、異なっているが適合するＱｏＳレベルで、代替のルートを動的に使用してよい。
【００１３】
ルーティングシステムは、例えば、所望のあて先アドレス、ＱｏＳ、及びＤＳＣＰマーキングに基づき、他の特定された実行可能なルートから選択するよう、それらのルートを利用してよい。そのような代替のルートが存在する場合には、ルーティングシステムは、パケットをドロップさせただろうルートの代わりに、その代替のルートに沿ってパケットを転送してよい。ルーティングシステムの様々な実施形態は、混雑又はトラフィックシェーピング懸案事項の場合にパケットをドロップする必要性を防ぎ、ネットワーク全体の利用を改善し、それによって再送信の必要性を減らしてよい。本ルーティングシステムの実施形態は動的にルートを選択し得るので、そのような実施形態は、それ故に、動的ネットワークをより有効に使用することができる。
【００１４】
図１は、ネットワークのノード１１０の少なくとも一部のブロック図であり、ノード１１０は、本開示のいくつかの実施形態に従うルーティングシステム１００の態様を組み込む。ノード１１０は、ルーティングシステム１００によって管理されているネットワークのためのルーティングノードであってよい。ノード１１０は、図示されている以外のコンポーネントを含んでよいことが理解されるだろう。ネットワークは、そのようなノード１１０の１つ以上を含んでよく、ノード１１０は、ネットワークにわたってデータパケットをルーティングしてよい。図示されるように、ノード１１０は、ルーティングエンジン１２０及び１つ以上のネットワークインターフェイス１３０を含んでよい。夫々のネットワークインターフェイス１３０は、１つ以上のダウンストリームエンティティ１６０（例えば、weighted  fair  queues（ＷＦＱ））へ接続されているトラフィックシェーピング部１４０を含んでよい。複数のネットワークインターフェイス１３０が図１では示されているが、ただ２つのネットワークインターフェイス１３０のみが単一のノード１１０において含まれる場合があってよい。夫々のダウンストリームエンティティ１６０は、現在のノード１１０を隣接ノード１１０へ接続する対応する物理リンクへのインターフェイスを含んでよい。
【００１５】
データパケットは、ノード１１０において、隣接ノードからノードのネットワークインターフェイス１３０の１つを通じて受信されてよい。その場合に、ネットワークインターフェイス１３０は入口インターフェイスの機能を果たす。対照的に、データパケットがノード１１０から特定のネットワークインターフェイス１３０を通じて送られるとき、そのネットワークインターフェイス１３０は出口インターフェイスの機能を果たす。
【００１６】
ルーティングエンジン１２０は、ノード１１０で受信された夫々のデータパケットについてルーティング決定を行ってよい。より具体的には、ルーティングエンジン１２０は、従来のポリシー決定を経てデータパケットのために最も適切と見なされたルートが、混雑又は他の理由により、データパケットを扱うのに不適切であるかどうかを判定してよい。その場合に、ルーティングエンジン１２０は、データパケットのための最良の代替ルートを選択してよい。
【００１７】
従来のルーティング技術に従って、ノードのルーティングエンジンは、ルーティングエンジンが承知している夫々のあて先への最良のルートを示す転送テーブルを保持する。あて先への複数の最良のルートは、それらが等しいコストであるか、あるいは、コストの差が予め定義された閾範囲内にある場合に、維持されてよい。転送テーブルに格納されているデータは、隣接ノードとの通信を通じて確立され、隣接ノードは次いでそれらの隣接ノードと通信し、以降続く。よって、第１ノードとあて先との間にある様々なノード間の通信を通じて、第１ノードは、あて先への最良のルートを決定する。更には、夫々のノードはその隣接リンク（すなわち、隣接ノードへの接続）を承知しているので、様々なノードは、ネットワークトポロジの変化を互いに連絡することができる。ネットワークに対するトポロジの変化又は他の変化が新たな最良のルートを導入する場合には、第１ノードは、他のノードとの通信を通じて、いずれはそのことを知るようになる。その場合に、新たな最良のルートは、ルーティングエンジンの転送テーブルにおいて前の最良のルートに取って代わる。
【００１８】
最良のルートに加えて、従来のシステムにおいて、ルーティングエンジンはそのルートのコストも保持する。ルートのコストの計算は、一般に、ポリシーに依存する。例えば、第１ノードによって記憶されているルートのコストは、第１ノードとあて先との間のホップ（ノード間のリンク）の数であってよい。従来の技術に従って、転送テーブルにおいて保持されている夫々のあて先について、最良のルート（すなわち、最低コストのルート、又は極めて最低コストに近いルート）のみが転送テーブルにおいて保持されている。他のルート全ては、捨てられ、忘れられる。よって、データパケットが特定のあて先への配信のために受信されるとき、従来の技術に従って、ルーティングエンジンは、現在知られている最良のルートを選択する。
【００１９】
本開示に従うルーティングシステム１００のいくつかの実施形態において、従来技術において見られるように、ノード１１０は互いと通信してよく、夫々のノードは転送テーブル１２５を保持してよい。なお、転送テーブル１２５は、夫々の既知のあて先について１つ以上のルートを保持してよい。新たなルートが特定されるとき、そのルートは、そのルートのコストとともに転送テーブル１２５へ加えられてよいが、既存の既知のルートは転送テーブル１２５から削除される必要はない。最良のルートを最初に選択するとき、いくつかの実施形態に従って、ルーティングエンジン１２０は、転送テーブルに格納されている、あて先への利用可能なルートの中から、現在の最良のルート（例えば、最低コストのルート）を選択してよい。
【００２０】
選択されたルートに基づき、ルーティングエンジン１２０は、対応するネットワークインターフェイス１３０を特定してよい。いくつかの実施形態において、個別のネットワークインターフェイス１３０が、現在のノード１１０からの夫々のリンクについて使用されてよい。故に、ルート選択は、選択されたルートの最初のリンクに関連する対応するネットワークインターフェイスを一意的に決定してよい。
【００２１】
夫々のネットワークインターフェイス１３０は、トラフィックシェーピング部１４０及び関連するダウンストリームエンティティ１６０を含んでよい。トラフィックシェーピング部１４０は、１つ以上のトラフィックキューを含んでよい。トラフィックシェーピング部１４０は、ユーザ設定可能なポリシーに基づき、特定のキューにデータを置いてよい。例えば、それに限定するものではないが、トラフィックシェーピング部１４０は、データパケット出力レート、すなわち、レートリミットを保つために、トークンバケットをトラフィックメータ（traffic  meter）として使用してよい。キューにある様々なデータパケットは、最終的には待機解除され、いくつかの場合には、ダウンストリームエンティティ１６０へ送られてよい。
【００２２】
パケットがダウンストリームエンティティ１６０へ送られる前に、トラフィックシェーピング部１４０は、そのネットワークインターフェイス１３０から通じているリンクから始まる選択されたルートがデータパケットを運ぶのに適切であるかどうかを判定してよい。選択されたルートが適切と見なされる場合には、トラフィックシェーピング部１４０はパケットをダウンストリームエンティティ１６０へ送ってよい。
【００２３】
選択されたルートが従来の“最良”のルートであるときでさえ、選択されたルートが特定のデータパケットを運ぶのに適切でない状況がありうる。例えば、それに限定するものではないが、データパケットは、そのデータパケットがユーザ設定可能なポリシーに従うプロファイル（すなわち、コントラクト）から外れている場合、又は適用可能なキューがいっぱいである場合には、ドロップされる必要がありうる。従来の技術に従って、そのような状況において、データパケットは、ユーザ設定可能なポリシーに従ってトラフィックシェーピング部１４０によってドロップされるか又は捨てられうる。
【００２４】
データパケットを運ぶための選択されたルートの適切性に関する判定は、既存のポリシーによって決定されてよい。既存のポリシーは、ネットワークマネージャによって確立され、ネットワークの様々なノード１１０によって執行されてよい。例えば、それに限定するものではないが、ルートは、その利用が所定の閾値（ルートのいずれか１つのリンク上における８０％負荷の閾値）を超えるときに混雑により、パケットを送信するには帯域幅が不十分であることにより、あるいは、前のデータパケットをダウンストリームエンティティ１６０の対応する物理インターフェイスへ送ることから隣接リンクにわたるそれらのデータパケットの送信までの間に許容不可能な遅延（すなわち、所定の閾値の時間フレームを超える遅延）が存在することにより、不適切であると見なされてよい。他の例として、ルートは、ルートのジッタが所定の閾値を超える場合に、不適切であると見なされてよい。
【００２５】
従来の技術に従って、トラフィックシェーピング部は、選択されたルートがデータパケットを運ぶのに現在適切であるかどうか（例えば、データパケットがプロファイル内にあるかどうか）を判定するよう、現在のネットワークポリシーに基づき、選択されたルートを検査及び解析する。選択されたルートがデータパケットのために適切であると見なされる場合には、トラフィックシェーピング部は、データパケットをダウンストリームエンティティ１６０の物理インターフェイスへ送ってよい。物理インターフェイスは、次いで、選択されたルートに対応する隣接リンクに沿ってデータパケットを送ってよい。選択されたルートが適切でない場合には、データパケットは、従来の技術に従って、通常は、キューに入れられるか、再分類されるか、又はドロップされる。
【００２６】
本開示のいくつかの実施形態は従来の技術を足がかりとする。いくつかの実施形態に従って、トラフィックシェーピング部１４０は、選択されたルートが不適切であることに起因してデータパケットをドロップする必要がない。むしろ、その場合に、トラフィックシェーピング部１４０は、データパケットをルーティングエンジン１２０へ返してよい。ルーティングエンジン１２０は、次いで、データパケットをそのあて先へ送るための最良の代替ルートを決定してよい。このために、ルーティングエンジン１２０は、データパケットのための１つ以上の代替のルートを特定してよい。それら代替のルートは、上述されたように、転送テーブル１２５において既に格納されていてよい。いくつかの実施形態において、特定された代替のルートは、現在のノード１１０からあて先へ通じている、以前に発見されたルート全てを含んでよい。つまり、そのようなルートは、新たな最良のルートの特定時にドロップされている必要はない。
【００２７】
いくつかの実施形態に従って、ルーティングエンジン１２０は、その転送テーブル１２５において、夫々の既知のあて先へ向かう複数の代替のルートを保持してよい。ルーティングエンジン１２０は、代替のルートに関する様々なルートデータも保持してよい。ルートデータは、夫々のルート特性を含んでよく、上述されたように、ネットワークの様々なノード間の通信を通じて生成及び保持されてよい。ルートデータは、様々な代替のルートのルートコストを含んでよい。ルートコストは、例えば、ＱｏＳ、帯域幅、レイテンシー、ホップ数、及びジッタのような、様々な因子に基づき計算されてよい。
【００２８】
ルートデータを用いて、ルーティングエンジン１２０は、以前に選択されたルートがデータパケットのために不適切であると見なされて、そのようなデータパケットがルーティングエンジン１２０へ返された後に、最良の代替のルートを選択してよい。最良の代替のルートとしてどのルートを選択すべきかを判定することは、様々なアルゴリズムの使用を通じて起こってよい。アルゴリズムは、代替のルートの様々なトラフィック特性を考慮してよい。例えば、それに限定するものではないが、使用される選択アルゴリズムは、ＱｏＳアウェア（QoS-aware）であってよく、そして、ルートコストに寄与し且つルートデータから求められ得る次のもの：ＱｏＳ、ＤＳＣＰマーキング、帯域幅、レイテンシー、ホップ数、及びジッタ、のうちの１つ以上の組み合わせを考慮してよい。いくつかの実施形態において、選択アルゴリズムは、データパケットが送信されているアプリケーションも考慮してよい。例えば、ＶｏＩＰアプリケーションは、ウェブブラウジングのために許容可能であるよりも小さいジッタ量を要求することがあり得る。よって、ＶｏＩＰパケットのために、最良の代替のルートは、ジッタ閾値を下回るよう要求され得る。他の例として、選択アルゴリズムは、最も高い帯域幅を有するルートを単に選択してよく、あるいは、あて先へ向かう様々な代替のルートに対してデータパケットを割り当てることへのラウンドロビン（round  robin）アプローチを使用してよい。様々な選択アルゴリズムは、転送テーブル１２５における利用可能な代替のルートの中から最良の代替のルートを選択するために使用されてよいことが理解されるだろう。
【００２９】
いくつかの事例において、最良の代替のルートを選択することは、既存のネットワークポリシーに反してよく、あるいは、既存のネットワークポリシーを少なくとも緩和してよい。例えば、ネットワークポリシーは、特定のアプリケーションのためのデータパケットがルートに沿って少なくとも所定のＱｏＳ又は他の所望の特性を有して送られることを求めてよい。しかし、そのような要求は、最初に選択された最良のルートが不適切であることに起因してデータパケットがドロップされるときに、有害無益でありうる。いくつかの実施形態に従って、それらのデータパケットは、代わりに、わずかにより低いＱｏＳを有するルートに沿って送られてよく、これは、データパケットをドロップすることよりも良い結果をもたらし得る。最良の代替のルートを選択することは、それ故に、データパケットをドロップすることよりも良い結果につながり得る。混雑時に、従来であれば、キューに入れられたデータをドロップする必要があるところ、そうするのではなく、ルーティングシステム１００は、データパケットを適応させ、それを他の別のルートによって送ってよい。
【００３０】
いくつかの実施形態において、ルーティングエンジン１２０は、どのネットワークインターフェイス１３０が問題となっているデータパケットのために既に試されたかを示すメタデータを、例えば、データパケット自体において、あるいは、ルーティングエンジン１２０において記憶されることによって、保持してよい。選択されたルートのネットワークインターフェイス１３０へデータパケットを送る前に、ルーティングエンジン１２０は、対応するネットワークインターフェイス１３０がデータパケットのためにこれまで試みられていないことを確かめるよう、データパケットに関連するメタデータをチェックしてよい。選択されたルートのためのネットワークインターフェイス１３０がそのようなメタデータにおいて既にリストアップされている場合には、ルーティングエンジン１２０は、以前に選択されており、既に試みられていると決定されたルートを除いて、データパケットのための別の最良の代替ルートを選択してよい。更には、データパケットは、ネットワークインターフェイス１３０の１つを通じてノードで受信されていてよく、その場合に、ネットワークインターフェイス１３０は、入口インターフェイスとして振る舞った。ルートのルーピングを回避するよう、いくつかの実施形態において、ルーティングエンジン１２０は、入口インターフェイスをデータパケットのための発信ネットワークインターフェイス１３０として選択することを回避してよい。いくつかの実施形態において、選択されたルートのためのネットワークインターフェイス１３０へデータパケットを送るとき、ルーティングエンジン１２０は、ネットワークインターフェイス１３０がデータパケットのために試みられたことがあることを示すよう、データパケットの関連するメタデータを変更してよい。
【００３１】
選択されたルート（最初に選択された最良のルート、又はルーティングエンジン１２０への返還後に選択された最良の代替ルート、のいずれか一方であってよい。）がデータパケットのために適切であると見なされる場合には、トラフィックシェーピング部１４０は、データパケットをダウンストリームエンティティ１６０へ送ってよい。ダウンストリームエンティティ１６０の物理インターフェイスは、次いで、選択されたルートに対応する隣接リンクに沿ってデータパケットを送ってよい。しかし、選択されたルートが不適切であると見なされる場合には、トラフィックシェーピング部１４０は、このネットワークインターフェイス１３０が既に試みられたことを示すよう、データパケットの関連するメタデータを変更してよく（ルーティングエンジン１２０がこのタスクを既に実施していない限り。）、次いで、データパケットをルーティングエンジン１２０へ返してよい。ルーティングエンジン１２０は、次いで、上述されたように、データパケットのための新たな最良の代替ルートを選択してよい。
【００３２】
代替的に、いくつかの実施形態において、選択されたルートが適切ないとき、終了条件が満たされたとトラフィックシェーピング部１４０が決定するならば、トラフィックシェーピング部１４０はデータパケットをドロップしてよい。例えば、それに限定するものではないが、トラフィックシェーピング部１４０が、データパケットの関連するメタデータに基づき、データパケットが前の試みにおいて又は所定回数の前の試みにおいて再ルーティングのためにルーティングエンジン１２０へ既に返されていることを決定する場合には、トラフィックシェーピング部１４０は、データパケットをルーティングエンジン１２０へ返す代わりに、データパケットをドロップしてよい。
【００３３】
図２は、本開示のいくつかの実施形態に従って、ネットワークを通じてデータパケットをルーティングする方法２００のフロー図である。図示されるように、ブロック２１０で、データパケットはノード１１０で受信されてよい。ブロック２２０で、ルートはデータパケットのために選択されてよい。このとき、ルートは転送テーブル１２５から選択される。ルートが決定されると、データパケットは、選択されたルートに対応するネットワークインターフェイス１３０へ送られる。決定ブロック２３０で、選択されたルートのネットワークインターフェイス１３０はデータパケットのために適切であるかどうかが判定されてよい。選択されたルートが適切であると見なされる場合には、データパケットは、ブロック２４０で、ダウンストリームエンティティ１６０へ送られる。
【００３４】
選択されたルートが、決定ブロック２３０で、データパケットのために不適切であると見なされる場合には、決定ブロック２５０で、代替のルートが利用不可であるか、あるいは、所定の終了条件が満たされているかどうかが判定される。決定ブロック２５０において、代替のルートが利用不可能であるか、あるいは、所定の終了条件が満たされている化のいずれかである場合に、次いで、ブロック２８０で、データパケットはドロップされる。そうでない場合には、データパケットはルーティングエンジン１２０へ戻される。ブロック２７０で、代替のルートは、転送テーブル１２５における利用可能な代替のルートの中から選択されてよい。方法２００は、次いで決定ブロック２３０へ戻り、そこで、選択されたルートのネットワークインターフェイス１３０はデータパケットのために適切であるかどうかが判定される。ブロック２３０乃至２７０は、適切な代替のルートが見つけられるまで、又はデータパケットがドロップされるまで、繰り返されてよい。
【００３５】
上記の方法２００は、単に説明のために与えられていることが理解されるだろう。この方法２００は、実施に基づき変更されてよく、あるいは、他の方法が、本開示の他の実施形態に従って、使用されてよい。
【００３６】
このように、本ルーティングシステム１００のいくつかの実施形態は、過負荷状態のリンクへのトラフィックが遊休（underutilized）リンクへオフロードされ得ることで、ネットワークの帯域幅のより良い利用を可能にする。結果として、ルーティングシステム１００は、従来のルーティング技術と比較して、データをドロップする必要性を減らし得る。更には、ルーティングシステム１００は、ルーティングプロトコルが集中してしまう前に、トポロジの変化に反応することができる。例えば、プライマリ・リンクがトポロジの変化より前に劣化するにつれて、代替のリンクは更なるトラフィックを自動的に運び始めてよい。
【００３７】
ルーティングシステム１００のいくつかの実施形態は、全体として、又は部分的に、コンピュータシステムによって、又はコンピュータハードウェアによって実装されてよい。例えば、それに限定するものではないが、ルーティングシステムは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ；field-programmable  gate  array(s)）、特定用途向け集積回路（ＡＳＩＣ；application-specific  integrated  circuit(s)）、又はカスタムロジックによって実装されてよい。他の例として、図３は、いくつかの実施形態に従ってルーティングシステム１００又は方法２００を実装することにおいて使用されるコンピュータシステム３００のブロック図を表す。本願で記載されるルーティングシステム１００又は方法２００は、ハードウェア、ソフトウェア（例えば、ファームウェア）、又はそれらの組み合わせにおいて実装されてよい。例えば、ルーティングシステム１００の１つ以上のノード１１０は、図３に示されているようなコンピュータシステム３００において具現されてよい。
【００３８】
例となる実施形態において、記載される方法は、少なくとも部分的に、ハードウェアにおいて実装されてよく、パーソナルコンピュータ、ワークステーション、ミニコンピュータ、又はメインフレームコンピュータのような、特別目的又は汎用のコンピュータシステム３００のマイクロプロセッサの部分であってよい。
【００３９】
例となる実施形態において、図３に示されるように、コンピュータシステム３００は、プロセッサ３０５と、メモリコントローラ３１５へ結合されているメモリ３１０と、ローカルＩ／Ｏコントローラ３３５を介して通信上結合されている１つ以上の入力デバイス３４５及び／又は出力デバイス３４０（例えば、周辺機器）とを含む。それらのデバイス３４０及び３４５は、例えば、プリンタ、スキャナ、マイクロホン、及び同様のものを含んでよい。従来のキーボード３５０及びマウス３５５は、Ｉ／Ｏコントローラ３３５へ結合されてよい。Ｉ／Ｏコントローラ３３５は、例えば、当該技術で知られるような、１つ以上のバス又は他の有線若しくは無線接続であってよい。Ｉ／Ｏコントローラ３３５は、コントローラ、バッファ（キャッシュ）、ドライバ、リピータ、及びレシーバのような、通信を可能にする更なる要素を備えてよいが、簡単のために省略される。
【００４０】
Ｉ／Ｏデバイス３４０、３４５は、入力及び出力の両方を伝えるデバイス、例えば、ディスク及びテープストレージ、ネットワークインターフェイスカード（ＮＩＣ；network  interface  card）又は変調器／復調器（他のファイル、デバイス、システム、又はネットワークにアクセスするためのもの。）、無線周波数（ＲＦ；radio  frequency）又は他のトランシーバ、電話インターフェイス、ブリッジ、ルータ、並びに同様のものを更に含んでよい。
【００４１】
プロセッサ３０５は、ハードウェア命令又はソフトウェア、特に、メモリ３１０に記憶されているものを実行するハードウェアデバイスである。プロセッサ３０５は、あらゆるカスタムメイドの又は市販されているプロセッサ、中央演算処理装置（ＣＰＵ；central  processing  unit）、コンピュータシステム３００に関連するいくつかのプロセッサの中の補助プロセッサ、半導体ベースのマイクロプロセッサ（マイクロチップ又はチップセットの形をとる。）、マクロプロセッサ、あるいは、命令を実行するためのデバイスであってもよい。プロセッサ３０５はキャッシュ３７０を含む。キャッシュ３７０は、実行可能命令のフェッチを加速させる命令キャッシュ、データのフェッチ及び格納を加速させるデータキャッシュ、並びに実行可能命令及びデータの両方のためのＶ２Ｐ（virtual-to-physical）アドレス変換を加速させるために使用されるトランスレーション・ルックアサイド・バッファ（ＴＬＢ；translation  lookaside  buffer）を含んでよいが、それらに限られない。キャッシュ３７０は、更なるキャッシュレベル（Ｌ１、Ｌ２、など）のヒエラルキーとして構築されてよい。
【００４２】
メモリ３１０は、揮発性メモリ素子（例えば、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、などのような、ランダムアクセスメモリ（ＲＡＭ；random  access  memory））及び不揮発性メモリ素子（例えば、ＲＯＭ，消去可能なプログラム可能リードオンリーメモリ（ＥＰＲＯＭ；erasable  programmable  read  only  memory）、電気的消去可能なプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ；electronically  erasable  programmable  read  only  memory）、プログラム可能リードオンリーメモリ（ＰＲＯＭ；programmable  read  only  memory）、テープ、コンパクトディスク・リードオンリーメモリ（ＣＤ−ＲＯＭ：compact  disc  read  only  memory）、ディスク、ディスケット、カートリッジ、カセット又は同様のもの、など）のいずれか１つ又は組み合わせを含んでよい。更には、メモリ３１０は、電子的な、磁気的な、光学的な、又は他のタイプの記憶媒体を組み込んでよい。メモリ３１０は、様々なコンポーネントが互いから離れて位置しているがプロセッサ３０５によってアクセスされ得る分散アーキテクチャを有してよい点に留意されたい。
【００４３】
メモリ３１０における命令は、１つ以上の別個のプログラムを含んでよい。プログラムの夫々は、論理関数を実装する実行可能命令の順序付きリストを有する。図３の例では、メモリ３１０における命令は、適切なオペレーティングシステム（ＯＳ；operating  system）３１１を含む。オペレーティングシステム３１１は、本質的に、他のコンピュータプログラムの実行を制御してよく、スケジューリング、入出力制御、ファイル及びデータ管理、メモリ管理、並びに通信制御及び関連するサービスを提供する。
【００４４】
更なるデータ、例えば、プロセッサ３０５のための命令又は他の取り出し可能な情報を含み、ストレージ３２０において記憶されてよい。ストレージ３２０は、ハードディスクドライブ又はソリッドステートドライブのような記憶デバイスであってよい。メモリ３１０における又はストレージ３２０における記憶されている命令は、プロセッサが本開示のルーティングシステム１００及び方法２００の１つ以上の態様を実行することを可能にするものを含んでよい。
【００４５】
コンピュータシステム３００は、ディスプレイ３３０へ結合されているディスプレイコントローラ３２５を更に含んでよい。例となる実施形態において、コンピュータシステム３００は、ネットワーク３６５へ結合するためのネットワークインターフェイス３６０を更に含んでよい。ネットワーク３６５は、コンピュータシステム３００と何らかの外部サーバ、クライアント及び同様のものとの間の広帯域接続を介した通信のためのＩＰベースネットワークであってよい。ネットワーク３６５は、コンピュータシステム３００と外部システムとの間でデータを送信及び受信する。例となる実施形態において、ネットワーク３６５は、サービスプロバイダによって運営される管理ＩＰネットワークであってよい。ネットワーク３６５は、無線形態において、例えば、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、などのような無線プロトコル及びテクノロジを用いて、実装されてよい。ネットワーク３６５はまた、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、インターネット、又は他の同様のタイプのネットワーク環境のような、パケット交換ネットワークであってよい。ネットワーク３６５は、固定無線ネットワーク、無線ローカルエリアネットワーク（ＬＡＮ；local  area  network）、無線ワイドエリアネットワーク（ＷＡＮ；wide  arear  network）、パーソナルエリアネットワーク（ＰＡＮ；personal  area  network）、仮想プライベートネットワーク（ＶＰＮ；virtual  private  network）、イントラネット又は他の適切なネットワークシステムであってよく、信号を受信及び送信するための設備を含んでよい。
【００４６】
本開示に従うルーティングシステム１００及び方法２００は、全体として、又は部分的に、コンピュータプログラム製品において、又は図３に表されているようなコンピュータシステム３００において、具現されてよい。
【００４７】
以下、特許請求の範囲における全ての手段又はステップ及び機能要素の対応する構造、構成要素、動作、及び均等物は、具体的に請求されている他の請求されている要素と組み合わせて機能を実施する如何なる構造、構成要素、又は動作も含むよう意図される。本願の明細書は、説明を目的として提示されてきたが、包括的であるよう又は具体的に記載されている実施形態に制限されるよう意図されない。多くの変更及び変形は、本開示の適用範囲及び主旨から逸脱することなしに、当業者に明らかだろう。実施形態は、様々な実施形態及び実際の適用の原理を最も良く説明するために、且つ、考えられている特定の使用に適していると様々な変更を伴った様々な実施形態を理解することを当業者に可能にするために、選択され記載された。
【００４８】
いくつかの実施形態が記載されてきたが、当業者は、現在及び将来の両方において、続く特許請求の範囲の適用範囲内にある様々な改善及び増強を行うことができると理解されるだろう。特許請求の範囲は、本開示の適切な保護を維持するよう解釈されるべきである。
【図１】
0006389564.tif 000002
【図２】
0006389564.tif 000003
【図３】
0006389564.tif 000004