(57)【特許請求の範囲】
【請求項１】
パケット交換ネットワーク（４）においてパケットをルーティングする方法であって、
ルーティングテーブル（８）中で新しいエントリまたは古いエントリを検出するステップと、
タイマー（１０）を始動するステップとを含み、
タイマー（１０）の増加関数または減少関数である通過の確率を有するパケットフィルタ（１２）を構成するステップであって、検出されたエントリが新しいエントリである場合は前記関数が増加し、検出されたエントリが古いエントリである場合は前記関数が減少する、ステップと、
検出されたエントリと一致する入力パケットを検出するステップと、
検出されたパケットをパケットフィルタ（１２）によってフィルタリングするステップと、
検出されたパケットがパケットフィルタ（１２）を通過する場合に、検出されたエントリにしたがって検出されたパケットをルーティングするステップと、
そうでなければ、検出されたパケットがパケットフィルタ（１２）を通過しない場合に、ルーティングテーブル（８）のもう一方のエントリにしたがって検出されたパケットをルーティングするステップと
をさらに含み、
検出されたパケットをパケットフィルタ（１２）によってフィルタリングするステップが、
乱数ｘと検出されたパケットを関連付けるステップと、
関連付けられた乱数ｘと時間依存の閾値ｙとを比較するステップであって、閾値ｙがパケットフィルタ（１２）の前記通過の確率に比例する、ステップと、
計算された乱数ｘが閾値ｙ以下である場合、検出されたパケットがパケットフィルタを通過するものと見なすステップと、
そうでなければ、計算された乱数ｘが閾値ｙより大きい場合、検出されたパケットがパケットフィルタを通過しないものと見なすステップと
を含む、方法。
【請求項２】
タイマー（１０）を始動するステップが、
時間の初期値ｔ＝ｔ＿ｉｎｉから時間の最終値ｔ＿ｆｉｎまで時間ｔを計測するようにタイマーを始動させるステップを含み、Ｔ＝ｔ＿ｆｉｎ−ｔ＿ｉｎｉで定義されるランプ長Ｔが０より大きく、前記増加関数または前記減少関数が時間ｔに依存する、請求項１に記載の方法。
【請求項３】
ランプ長Ｔが、入力パケットを含むアプリケーションストリームの典型的なタイムスケールより長くなるように選択される、請求項２に記載の方法。
【請求項４】
関連付けられた乱数ｘが、検出されたパケットのパケットヘッダに含まれるデータから計算されるハッシュ値である、請求項１に記載の方法。
【請求項５】
関連付けられた乱数ｘが、ハッシュ値の可能な範囲で等しく分布する、請求項１に記載の方法。
【請求項６】
パケットフィルタ（１２）を構成するステップが、
検出されたエントリが新しいエントリである場合、閾値ｙを、ｙ（ｔ＿ｉｎｉ）＝ｘ＿ｍｉｎかつｙ（ｔ＿ｆｉｎ）＝ｘ＿ｍａｘである単調増加の関数ｙ（ｔ）から決定するステップであって、ｘ＿ｍｉｎがハッシュ値ｘの可能な範囲の最小値であり、ｘ＿ｍａｘがハッシュ値ｘの可能な範囲の最大値である、ステップと、
検出されたエントリが古いエントリである場合、閾値ｙを、ｙ（ｔ＿ｉｎｉ）＝ｘ＿ｍａｘかつｙ（ｔ＿ｆｉｎ）＝ｘ＿ｍｉｎである単調減少の関数ｙ（ｔ）から決定するステップと
を含み、
パケットフィルタ（１２）によって検出されたパケットをフィルタリングするステップが、
検出されたパケットを、ｔ＿ｉｎｉ≦ｔ＿ｅｆｆ≦ｔ＿ｆｉｎである実効時間ｔ＿ｅｆｆと関連付けるステップと、
関連付けられたハッシュ値ｘを、時間ｔ＝ｔ＿ｅｆｆにおける閾値ｙ（ｔ＿ｅｆｆ）と比較するステップと、
関連付けられたハッシュ値ｘがｔ＝ｔ＿ｅｆｆにおける閾値ｙ（ｔ＿ｅｆｆ）以下である場合、検出されたパケットがパケットフィルタを通過するものと見なすステップと、
そうでなければ、計算されたハッシュ値ｘがｔ＝ｔ＿ｅｆｆにおける閾値ｙ（ｔ＿ｅｆｆ）よりも大きい場合、検出されたパケットがパケットフィルタを通過しないものと見なすステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
検出されたエントリが新しいエントリであり通過の確率がその最大値に達した場合、別のエントリをルーティングテーブル（８）から削除し、パケットフィルタの動作を停止するステップと、
検出されたエントリが古いエントリであり通過の確率がその最小値になった場合、古いエントリをルーティングテーブル（８）から削除し、パケットフィルタの動作を停止するステップと
をさらに含む、請求項１に記載の方法。
【請求項８】
検出されたパケットが、新しいエントリにしたがって、または検出されたエントリが古いエントリである場合には別のエントリにしたがって、ルーティングされるルーティング経路において、過負荷を検出した場合、パケットフィルタ（１２）の通過の確率を少なくとも部分的に戻し、かつ／またはパケットフィルタ（１２）の通過の確率を一時的に一定に保つステップをさらに含む、請求項１に記載の方法。
【請求項９】
パケット交換ネットワーク（４）内のルータ（５０）であって、
パケット交換ネットワーク（４）からの入力パケットを受信するようになされるインターフェース（５１）と、ルーティングに関連するエントリを保存するようになされるルーティングテーブル（８）と、入力パケットをルーティングするようになされるルーティングユニット（５３）と、ルーティングテーブル（８）中で新しいエントリまたは古いエントリを検出し、タイマー（１０）を始動するようになされる制御ユニット（５４）とを含み、
制御ユニット（５４）がさらに、タイマー（１０）の増加関数または減少関数である通過の確率を有するパケットフィルタ（１２）を構成し、検出されたエントリが新しいエントリである場合は前記関数が増加し、検出されたエントリが古いエントリである場合は前記関数が減少し、検出されたエントリと一致する入力パケットを検出し、乱数ｘと検出されたパケットを関連付け、関連付けられた乱数ｘとパケットフィルタ（１２）の前記通過の確率に比例する時間依存の閾値ｙとを比較し、計算された乱数ｘが閾値ｙ以下である場合、検出されたパケットがパケットフィルタを通過するものと見なし、そうでなければ、計算された乱数ｘが閾値ｙより大きい場合、検出されたパケットがパケットフィルタを通過しないものと見なし、検出されたパケットがパケットフィルタ（１２）を通過する場合に、検出されたエントリにしたがって検出されたパケットをルーティングするようにルーティングユニット（５３）を始動し、そうでなければ検出されたパケットがパケットフィルタ（１２）を通過しない場合に、ルーティングテーブル（８）のもう一方のエントリにしたがって検出されたパケットをルーティングするようにルーティングユニットを始動するようになされる、ルータ。
【請求項１０】
検出されたパケットをハッシュ値ｘと関連付けるようになされるマッピング要素（５５）をさらに含む、請求項９に記載のルータ（５０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット交換ネットワークにおいてパケットをルーティングする方法、および上記の方法を実行するためのルータに関する。
【背景技術】
【０００２】
多くの独立した比較的小規模な発信源から集められる、パケットトラフィックのルーティング変更は、問題を引き起こし得る。ルータにおけるルーティング変更は、あるルータのインターフェースからの大量の収集されたトラフィックが、別のルータのインターフェースへ同時にリダイレクトし得る。ルータインターフェースの背後のネットワークにとっては、このことは統計的に、単一の大規模なオン／オフ源が動作しているかのように振る舞う。その結果、統計的に管理されるＱｏＳは、スタティックルーティングテーブルに制限される（ＱｏＳ＝サービスの品質）。さらに、ルーティング変更の後で、新たなトラフィックの統計が得られて実際の容量に適合することが分かるまでには、ベストエフォートの性能でも一定の時間が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、パケットの改善されたルーティングを実現することである。
【課題を解決するための手段】
【０００４】
本発明の第１の目的は、パケット交換ネットワークにおいてパケットをルーティングする方法によって実現され、上記の方法は、ルーティングテーブル中で新しいエントリまたは古いエントリを検出するステップと、タイマーを始動するステップと、タイマーの増加関数または減少関数である通過の確率を有するパケットフィルタを構成するステップであって、検出されたエントリが新しいエントリである場合は上記の関数が増加し、検出されたエントリが古いエントリである場合は上記の関数が減少する、ステップと、検出されたエントリと一致する入力パケットを検出するステップと、検出されたパケットをパケットフィルタによってフィルタリングするステップと、検出されたパケットがパケットフィルタを通過する場合に、検出されたパケットを検出されたエントリにしたがってルーティングするステップと、検出されたパケットがパケットフィルタを通過しない場合に、検出されたパケットをルーティングテーブルのもう一方のエントリにしたがってルーティングするステップとを含む。本発明の第２の目的は、パケット交換ネットワーク内のルータによって実現され、上記のルータは、パケット交換ネットワークからの入力パケットを受信するようになされるインターフェースと、ルーティングに関連するエントリを保存するようになされるルーティングテーブルと、入力パケットをルーティングするようになされるルーティングユニットと、ルーティングテーブル中で新しいエントリまたは古いエントリを検出し、タイマーを始動し、タイマーの増加関数または減少関数である通過の確率を有するパケットフィルタを構成し、このとき検出されたエントリが新しいエントリである場合は上記の関数が増加し、検出されたエントリが古いエントリである場合は上記の関数が減少し、検出されたエントリと一致する入力パケットを検出し、検出されたパケットをパケットフィルタによってフィルタリングし、検出されたパケットがパケットフィルタを通過する場合に、検出されたパケットを検出されたエントリにしたがってルーティングするようにルーティングユニットを始動し、検出されたパケットがパケットフィルタを通過しない場合に、検出されたパケットをルーティングテーブルのもう一方のエントリにしたがってルーティングするようにルーティングユニットを始動させるようになされる、制御ユニットとを含む。
【０００５】
「ルーティングテーブルのもう一方のエントリ」という用語は、新しいエントリまたは古いエントリに関連するルーティングと異なる代替のルーティングのためのルーティング命令を提供する、ルーティングテーブルのエントリを指す。新しいエントリの場合、ルーティングテーブルの別のエントリは、好ましくは、新しいエントリが存在しなければそれにしたがってパケットがルーティングされる、１つまたは複数のルーティング命令を提供する１つまたは複数のエントリを指す。古いエントリの場合、ルーティングテーブルの別のエントリは、好ましくは、古いエントリが存在しなければそれにしたがってパケットがルーティングされる、１つまたは複数のルーティング命令を提供する１つまたは複数のエントリを指す。
【０００６】
本発明は、第１のルーティング状態から第２のルーティング状態への、ヒットレスルーティング変更を実現する。本発明により、ルーティング変更の誤認を招くような統計的効果を低減することができる。さらに、本発明は、ルーティング変更により生じ得る、ダウンストリームネットワークにおける予測不能な過負荷という危険性も低減する。本発明は、ネットワーク中で徐々にルーティング変更を行えるようにする。
【０００７】
本発明には、ルータの異なる出力リンクの間での、突然の（＝ヒットライク）大きな負荷比率の変化が回避される（＝ヒットレス）という利点がある。後続の、すなわちダウンストリームのネットワークは、トラフィック量がゆっくり増大／減少することが典型的な状態になるという可能性を得る。
【０００８】
さらなる利点は、従属請求項により示される、本発明の実施形態によって実現する。
【０００９】
本発明のある実施形態によれば、一種の負荷バランスが新しいルーティングエントリに適用され、負荷分担は最初は０で、時間的に制御されて１００％まで徐々に上昇する。同様に、一種の負荷バランスが古いルーティングエントリに適用され、負荷分担は最初は１００％で０に向かって減少する。
【００１０】
本発明のある実施形態によれば、タイマーを始動するステップは、時間の初期値ｔ＝ｔ＿ｉｎｉから時間の最終値ｔ＿ｆｉｎまで時間ｔを計測するようにタイマーを動作させるステップを含み、Ｔ＝ｔ＿ｆｉｎ−ｔ＿ｉｎｉで定義されるランプ長が０より大きく、上記の増加関数または減少関数が時間ｔに依存する。増加関数の変数に関して関数値が増加または減少している場合に、それぞれ、関数は増加または減少していると言われる。本件では、時間依存の関数が考慮され、すなわち、関数の変数は時間である。
【００１１】
本発明のある実施形態によれば、ランプ長Ｔは、ネットワーク内のアプリケーションストリームの典型的なタイムスケールよりも長くなるように、選択される。アプリケーションストリームの典型的なタイムスケールは、検出されたパケットに関連する特定のアプリケーションを指すのではなく、ネットワーク内の典型的な（または支配的な）トラフィックを指す。例えば、ルータを通過するアプリケーショントラフィックストリームの典型的な（または支配的な）アプリケーションがウェブブラウザである場合、アプリケーションストリームの典型的なタイムスケールは、数百マイクロ秒のオーダーのタイムスケールを指し得る。したがって、典型的なランプ長Ｔは、Ｔ＝３０秒であってよい。例えば、ルータを通過するアプリケーショントラフィックストリームの典型的な（または支配的な）アプリケーションが、コンピュータ上で映像を表示するためのものである場合、アプリケーションストリームの典型的なタイムスケールは、数分のオーダーのタイムスケールを指し得る。したがって、典型的なランプ長Ｔは、Ｔ＝３０分であり得る。入力パケットの具体的な性質に関する情報に依存するルーティング方法、例えばＤＰＩ（＝Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ）を用いる方法とは異なり、本発明は、ルーティングされる単一の入力パケットの具体的な性質に関する情報を利用しない。したがって、本発明はリソースを節約する。
【００１２】
本発明のある実施形態によれば、検出されたパケットをパケットフィルタによってフィルタリングするステップは、乱数ｘと検出されたパケットを関連付けるステップと、関連付けられた乱数ｘと時間依存の閾値ｙとを比較するステップであって、閾値ｙがパケットフィルタの上記の通過の確率に比例するステップと、計算された乱数ｘが閾値ｙ以下である場合、検出されたパケットがパケットフィルタを通過するものと見なすステップと、そうでなければ計算された乱数ｘが閾値ｙより大きい場合、検出されたパケットがパケットフィルタを通過しないものと見なすステップとを含む。好ましくは、関連付けられた乱数ｘと乱数ｘの時間依存の閾値ｙとを比較するステップは、時間の基準は設定しないが可能な限り高速に実行されるべき、単一のイベントである。
【００１３】
本発明のある実施形態によれば、関連付けられた乱数ｘは、検出されたパケットのパケットヘッダに含まれるデータから計算されるハッシュ値である。ハッシュ値ｘを、入力パケットのヘッダ内の選択された情報から導出することが可能である。この情報には、ソースアドレスフィールド、ソースポートフィールド、宛先アドレスフィールド、宛先ポートフィールド、およびプロトコルＩＤフィールド、例えばＭＰＬＳラベル（ＩＤ＝識別／識別子、ＭＰＬＳ＝マルチプロトコルラベルスイッチング）が付随する。選択された情報は、フィールド全体、フィールドの１つのセグメント、またはフィールドのいくつかのセグメントであってよい。様々なハッシュ関数のいずれも、例えば、単純なハッシュ関数ｘ＝Ｋ  ｍｏｄｕｌｏ  Ｍ、ここでＫは選択されたパケットのヘッダデータに関連する数であり、Ｍが所定の値であるようなハッシュ関数が使用され得る。パケットは、ハッシュ値に応じて、ある方向または別の方向にルーティングされる。単純に乱数を選択する代わりにハッシュ値を用いることは、特定のアプリケーションストリームの関連するパケットが同一のハッシュ値に評価され、特定のアプリケーションストリームの全てのパケットに対して同じルーティングの決定がなされることになるので、好ましい。これにより、異なる経路を横断するパケットの到着の順序が狂うという問題が回避される。
【００１４】
本発明のある実施形態によれば、関連付けられた乱数ｘは、等しく分配されるハッシュ値である。適切に設計されたハッシュ関数により、関連付けられた乱数ｘを表すハッシュ値は、ハッシュ値の可能な範囲で等しく分配されるので、あらゆる負荷の分担が適切な閾値を選択することによって調整され得る。
【００１５】
本発明のある実施形態によれば、検出されたエントリが新しいエントリである場合、閾値関数ｙは、ｙ（ｔ＿ｉｎｉ）＝ｘ＿ｍｉｎかつｙ（ｔ＿ｆｉｎ）＝ｘ＿ｍａｘである単調増加の関数ｙ（ｔ）から決定される。値ｘ＿ｍｉｎはハッシュ値の可能な範囲の最小値であり、値ｘ＿ｍａｘはハッシュ値の可能な範囲の最大値である。検出されたエントリが古いエントリである場合、閾値ｙは、ｙ（ｔ＿ｉｎｉ）＝ｘ＿ｍａｘかつｙ（ｔ＿ｆｉｎ）＝ｘ＿ｍｉｎである単調減少の関数ｙ（ｔ）から決定される。さらに、検出されたパケットをパケットフィルタによりフィルタリングするステップは、検出されたパケットを、ｔ＿ｉｎｉ≦ｔ＿ｅｆｆ≦ｔ＿ｆｉｎである実効時間ｔ＿ｅｆｆと関連付けるステップを、さらに含む。検出されたパケットと関連付けられるハッシュ値ｘは、時間ｔ＝ｔ＿ｅｆｆにおける閾値ｙ（ｔ＿ｅｆｆ）と比較される。関連付けられたハッシュ値ｘが閾値ｙ（ｔ＿ｅｆｆ）以下である場合、検出されたパケットは、パケットフィルタを通過するものと見なされる。そうでなければ、計算されたハッシュ値ｘが閾値ｙ（ｔ＿ｅｆｆ）よりも大きい場合、検出されたパケットは、パケットフィルタを通過しないものと見なされる。好ましくは、閾値関数ｙは単調な関数である。
【００１６】
本発明のある実施形態では、検出されたエントリが新しいエントリであり通過の確率がその最大値に達した場合、別のエントリはルーティングテーブルから削除され、パケットフィルタは動作を停止する。別のケースでは、検出されたエントリが古いエントリであり通過の確率がその最小値になった場合、古いエントリはルーティングテーブルから削除され、パケットフィルタは動作を停止する。ルーティングテーブルは、ある宛先に宛てられたパケットをどのようにルーティングするかについての、ルーティングに関連する情報を保持する。好ましくは、ルーティングテーブルは、ルータのメモリ内に参照テーブルとして維持される。
【００１７】
ルーティング変更が実行されると、ルーティング変更の前よりも多くのパケットトラフィックを処理しなければならないルーティング経路において、過負荷状態が生じることがある。第１のケースでは、別のエントリから新しいエントリへ徐々にルーティングが変更されるので、検出されたパケットが新しいエントリにしたがってルーティングされるルーティング経路において、過負荷状態が生じることがある。第２のケースでは、古いエントリから別のエントリへ徐々にルーティングが変更されるので、検出されたパケットが別のエントリにしたがってルーティングされるルーティング経路において、過負荷状態が生じることがある。本発明のある実施形態によれば、検出されたパケットが、検出されたエントリが新しいエントリである場合には検出されたエントリにしたがって、検出されたエントリが古いエントリである場合には別のエントリにしたがって、ルーティングされるルーティング経路において、過負荷を検出した場合、パケットフィルタの通過の確率が少なくとも部分的に戻され、かつ／または一時的に一定に保たれる。過負荷が検出されると、通過の確率を定める関数が徐々に、好ましくは安定的にかつ単調に、前の値の１つに戻されることが可能である。通過の確率を定める関数の現在の値が、一定の時間Δｔの間一定に保たれることが可能であり、そして関数はこの一定値から再び増加または減少することができる。これら上記の２つの可能性の組合せが実行されることも可能である。好ましくは、期間Δｔおよび前の値は、過負荷状態の厳しさに応じて決定される。したがって、本発明は、サービス品質を全く中断することなく、過負荷になることが分かったルーティング変更を一時停止し、さらに少なくとも部分的に元に戻すことの可能性を提供する。したがって、本発明は、ルーティング変更により生じ得る、ダウンストリームネットワークにおける予測不能な過負荷の危険性を低減する。
【００１８】
好ましくは、検出されたパケットが、検出されたエントリが新しいエントリである場合には検出されたエントリにしたがって、検出されたエントリが古いエントリである場合には別のエントリにしたがって、ルーティングされるルーティング経路において、過負荷が検出された場合、制御ユニットは、ｔ＝ｔ＿ｅｆｆにおける修正された関数ｙｍｏｄ（ｔ）の関数値として、修正された閾値ｙｍｏｄ（ｔ＿ｅｆｆ）を計算する。修正された関数ｙｍｏｄ（ｔ）は、元の修正されていない関数ｙ（ｔ）に基づき、かつ、パケット交換ネットワークに、過負荷状態を解決し、かつ／または過負荷状態の影響を受けるパケット交換ネットワークをアンロードするための時間を与えるために、パケットフィルタの通過の確率を少なくとも部分的に元に戻し、かつ／またはパケットフィルタの通過の確率を一時的に一定に保つようになされる。
【００１９】
本発明のある実施形態によれば、ルータは、検出されたパケットをハッシュ値ｘに関連付けるようになされたマッピング要素をさらに含む。好ましくは、マッピング要素は、検出されたパケットのパケットヘッダに含まれるデータから、ハッシュ値ｘを計算するようにもなされる。
【００２０】
本発明のこれらのならびにさらなる特徴および利点が、添付の図面とともに取り入れられる例示的な実施形態の以下の詳細な説明を読むことにより、さらに理解されるだろう。
【図面の簡単な説明】
【００２１】
【図１】従来技術によるルーティング変更の図である。
【図２】本発明のある実施形態によるルーティング変更の図である。
【図３ａ】本発明のある実施形態による単調増加の関数ｙ（ｔ）の図である。
【図３ｂ】本発明のある実施形態による単調減少の関数ｙ（ｔ）の図である。
【図４】本発明のある実施形態によるパケットフィルタリングの決定を示す図である。
【図５】本発明のある実施形態によるルータのブロック図である。
【図６ａ】過負荷状態の検出の後に、修正された閾値関数ｙｍｏｄ（ｔ）に修正される閾値関数ｙ（ｔ）の図である。
【図６ｂ】過負荷状態の検出の後に、修正された閾値関数ｙｍｏｄ（ｔ）に修正される閾値関数ｙ（ｔ）の図である。
【図６ｃ】過負荷状態の検出の後に、修正された閾値関数ｙｍｏｄ（ｔ）に修正される閾値関数ｙ（ｔ）の図である。
【発明を実施するための形態】
【００２２】
図１は、従来技術によるルーティング変更の図である。図１は、パケット交換ネットワーク内の、入力リンク４１、４２および出力リンク４３，４４を有する最新式のルータ４０を示す。第１の入力リンク４１では、多くの小規模な発信源１００の第１のセットから収集されたパケットトラフィック１０１が、ルータ４０に到達する。第２の入力リンク４２では、多くの小規模な発信源１１０の第２のセットから収集されたパケットトラフィック１１１が、ルータ４０に到達する。パケットトラフィック１０１、１０２が、パケットレートをｙ軸、時間をｘ軸とした、曲線の略図として示されている。
【００２３】
ルータ４０における突然のルーティング変更は、出力パケットが出力リンク４３、４４でどのように分担されるかを決定する分配の突然の変更を引き起こす。出力リンク４４におけるパケットトラフィックを示すパケットレート図１２０は、パケットレートの突然の増加１２１および、いくらか時間が経過した後の突然の減少１２１を示している。これは、突然のルーティング変更が、大きなオン／オフ源により引き起こされるパケットレートの変化と同様のパケットレートの変化をもたらすということを、意味している。ダウンストリームネットワークは、どちらの場合も同じように影響を受ける。
【００２４】
このことは、ルーティング変更が、あるインターフェース４３から収集された大量のトラフィックを別のインターフェース４４へ同時にリダイレクトし得ることを意味する。インターフェース４４の背後のネットワークにとっては、このことは統計的には、単一の大規模なオン／オフ源が動作しているかのように振る舞う。ダウンストリームのゲートウェイ機能は、ルーティング変更が大量の小規模な発信源に関連するものか、または実際に大規模なオン／オフ源に関連するものなのかを見分けることができない。さらに、ルーティング変更により引き起こされるロードヒット１２１は、大規模なオン／オフ源が与えるのと同程度に重大な影響をダウンストリームネットワークに与える。
【００２５】
図２は、本発明のある実施形態によるルーティング変更の図である。図２は、パケット交換ネットワーク内の、入力リンク６１、６２および出力リンク６５、６６を有するルータ５０を示す。第１の入力リンク６１では、多くの小規模な発信源１００の第１のセットから収集されたパケットトラフィック１０１が、ルータ５０に到達する。第２の入力リンク６２では、多くの小規模な発信源１１０の第２のセットから収集されたパケットトラフィック１１１が、ルータ５０に到達する。パケットトラフィック１０１、１０２が、パケットレートをｙ軸、時間をｘ軸とした、曲線の略図として示されている。
【００２６】
ルーティング変更は、古い出力リンク６５から新しい出力リンク６６に向けて起きると仮定する。ルーティング変更には様々な理由がある。例えば、事業者が保守作業のためにリンクを開けておきたいこともあり、自動的なアップデートアルゴリズムが、新しいエントリをルーティングテーブルに書き込むこともあり、ルーティングテーブルのエントリを古いものとしてマークし、異なるルートになることもある。本発明のある実施形態によるルーティング変更の場合、古いルーティングリンク６５のトラフィック分担は徐々に低下し、一方新しいルーティングリンク６６のトラフィック分担は徐々に上昇する。本実施形態によるルーティング変更はヒットレスに、すなわちパケットレートの突然の変化を伴わずに実行される。ヒットレスなルーティング変更は、基礎となるパケットトラフィックの統計的な特徴を保っている。ダウンストリームネットワークは、（ゆっくりと）変化する状態に、または緊急時には、進行中の変更を中断する信号に、遅れずに反応することができる。
【００２７】
図３ａは、時間ｔの間の閾値関数ｙ（ｔ）の曲線の略図を示す。関数ｙ（ｔ）は、Ｔ＝ｔ＿ｆｉｎ−ｔ＿ｉｎｉで定義されるランプ長Ｔの間に、最小値ｘ＿ｍｉｎから最大値ｘ＿ｍａｘまで徐々に増加する、時間依存の閾値関数である。ｔ＿ｉｎｉにおいては、閾値ｙ（ｔ＿ｉｎｉ）はｘ＿ｍｉｎの値を有し、ｔ＿ｆｉｎにおいては、閾値ｙ（ｔ＿ｆｉｎ）はｘ＿ｍａｘの値を有する。この閾値関数ｙ（ｔ）は、ルーティングテーブルで新しいエントリのために使用される増加関数である。
【００２８】
図３ｂは、図３ａと類似した、時間ｔの間減少する閾値関数ｙ（ｔ）の曲線の略図を示す。ｔ＿ｉｎｉにおいては、閾値ｙ（ｔ＿ｉｎｉ）はｘ＿ｍａｘの値を有し、ｔ＿ｆｉｎにおいては、閾値ｙ（ｔ＿ｆｉｎ）はｘ＿ｍｉｎの値を有する。この閾値関数ｙ（ｔ）は、ルーティングテーブル内の古いエントリのために使用される。
【００２９】
図４は、時間ｔの間増加する閾値関数ｙ（ｔ）の曲線の略図を示す。閾値関数ｙ（ｔ）は、ｔ＝ｔ＿ｉｎｉにおける最小値ｘ＿ｍｉｎからｔ＝ｔ＿ｆｉｎにおける最大値ｘ＿ｍａｘまで徐々に増加する。入力パケットがルータのインターフェースに到達すると、入力パケットはパケットの到達時間を特徴付ける時間の値ｔ＿ｅｆｆと関連付けられる。この時間ｔ＿ｅｆｆにおいて、閾値ｙ（ｔ＿ｅｆｆ）が決定される。さらに、入力パケットに対して、ハッシュ値ｘが決定され、入力パケットと関連付けられる。関連付けられたハッシュ値ｘは、ｘ＿ｍｉｎからｘ＿ｍａｘまでの可能なハッシュ値の範囲の任意の値をとることができる。閾値ｙ（ｔ＿ｅｆｆ）については、関連付けられたハッシュ値ｘは閾値ｙ（ｔ＿ｅｆｆ）より大きい、すなわち破線で示された領域４２にあってよいか、または、閾値ｙ（ｔ＿ｅｆｆ）以下、すなわち実線で示された領域４１にあってよい。入力パケットのハッシュ値ｘが領域４１、４２のどちらに位置しているかに応じて、入力パケットはパケットフィルタを通過すると見なされ（ハッシュ値ｘが領域４１に位置する場合）、またはパケットフィルタを通過しないと見なされる（ハッシュ値ｘが領域４２に位置する場合）。
【００３０】
図５は、本発明の実施形態によるルータ５０が配置されているパケット交換ネットワーク４を示す。ルータ５０は、入力リンク６１から６４とのインターフェースと、出力リンク６５から６８とのインターフェースとを含む。各入力リンク６１から６４は、入力リンク６１から６４に到達するパケットがどこにルーティングされるかにしたがって、別々に処理されることが可能であり、または、入力リンク６１から６４のパケットは事実上多重化され、出力リンク６５から６８にルーティングされるべきパケットの単一のストリームとして処理されることが可能である。開示を目的として、システムが実際にどのように具現化されるかには関係なく、本明細書で開示される原理は、入力が単一のストリームとして処理されるときにより容易に理解できるものであり、したがって、以下の記述は、入力リンク６１から６４が、入力インターフェース５１内に含まれるマルチプレクサに対して与えられ、ライン５６上で入力パケットの単一のストリームを生成することを仮定する。ライン５６は、パケットフィルタ１２を含む制御ユニット５４に結合される。制御ユニット５４は、タイマー１０、マッピングユニット５５およびルーティングテーブル８と接続される。
【００３１】
制御ユニット５４は、１つまたはいくつかの互いに接続されたコンピュータ、すなわち、ハードウェアプラットフォーム、ハードウェアプラットフォームに基づくソフトウェアプラットフォーム、ならびにソフトウェアおよびハードウェアプラットフォームにより形成されるシステムプラットフォームにより実行されるいくつかのアプリケーションプログラムにより、構成される。制御ユニット５４の機能は、これらのアプリケーションプログラムを実行することで実現する。アプリケーションプログラムまたはこれらのアプリケーションプログラムの選択された部分は、システムプラットフォーム上で実行されたときに以下で説明されるようなルーティング制御サービスを提供する、コンピュータソフトウェア製品を構成する。さらに、そのようなコンピュータソフトウェア製品は、これらのアプリケーションプログラムまたはアプリケーションプログラムの上記の選択された部分を記憶する記憶媒体により構成される。
【００３２】
制御ユニット５４がルーティングテーブル８で新しいまたは古いエントリを検出すると、制御ユニット５４はタイマー１０を始動し、タイマー１０の増加関数または減少関数である通過の確率を有するパケットフィルタ１２を構成し、検出されたエントリが新しいエントリである場合は関数が増加し、検出されたエントリが古いエントリである場合は関数が減少する。入力インターフェース５１に到達した入力パケットはアンパックされ、ライン５６に送られる。制御ユニット５４はパケットヘッダのデータ、例えば宛先アドレスを読み取り、ルーティングテーブル８のエントリとこれらのデータを比較する。制御ユニット５４が、ルーティングテーブル８で検出されるエントリと一致する入力パケットをライン５６で検出すると、制御ユニット５４は、新しいまたは古いルーティングテーブルエントリの検出時間に対するルータ５０における検出されたパケットの到達時間に対応する時間の値ｔ＿ｅｆｆを提供するように、タイマー１０にクエリを行い、この時間ｔ＿ｅｆｆを検出されたパケットと関連付ける。制御ユニット５４は、検出されたパケットのパケットヘッダに含まれるデータからハッシュ値ｘを計算するようにマッピングユニット５５を始動し、計算されたハッシュ値ｘを検出されたパケットと関連付ける。したがって、マッピングユニット５５はパケットヘッダからデータを抽出し、これらの抽出されたデータからハッシュ値ｘを計算する。マッピングユニット５５は、計算されたハッシュ値と検出されたパケットを関連付ける。制御ユニット５４、特にパケットフィルタ１２は、マッピングユニット５５から受信された計算されたハッシュ値ｘと、時間ｔ＿ｅｆｆに対して決定される時間依存の閾値関数ｙ（ｔ）の関数値ｙ（ｔ＿ｅｆｆ）とを比較する。検出されたエントリが新しいエントリである場合、閾値ｙ（ｔ）は時間ｔが増加すると増加し、新しいエントリが古いエントリである場合、閾値ｙ（ｔ）は時間ｔが増加すると減少する。
【００３３】
ルーティングテーブル８および制御ユニット５４は、制御ライン７０、７１に到達する制御信号に応答する。制御ライン７０、７１によって、例えば、ルータの事業者はルーティングテーブル８および制御ユニット５４へのアクセスを有する。事業者がルーティングテーブル８に新しいエントリを実装することが可能である。したがって、制御ユニット５４は、例えば、事業者が手動で始動することにより、または、ルーティングテーブル８の内容の変更を検索する連続的に実行される検出ルーチンにより、新しいエントリを検出する。制御ライン７１により、事業者は制御ユニット５４にアクセスして、例えば、増加関数または減少関数である閾値関数ｙ（ｔ）のセットを制御ユニット５４のメモリモジュールにロードすることができる。
【００３４】
図６ａから６ｃは、時間ｔの間の、増加する閾値関数ｙ（ｔ）および修正された閾値関数ｙｍｏｄ（ｔ）の３つの例示的な曲線の概略を示す。図６ａから６ｃでは、検出されたエントリが新しいエントリである場合に対応する増加する閾値関数ｙ（ｔ）が示される。検出されたエントリが古いエントリである場合も、それに応じて処理され得ることに留意されたい。図６ａから６ｃは、図３ａで説明される関数ｙ（ｔ）に対応する、時間依存の閾値関数ｙ（ｔ）を示す。時間ｔ１および対応する閾値ｙ１：＝ｙ（ｔ１）において、事業者は、検出されたパケットが新しいエントリにしたがってルーティングされるルーティング経路の過負荷状態を、制御ユニット５４に制御ライン７１を介して報告する。ダウンストリームネットワークが、好ましくは制御ライン７１を介して、過負荷または切迫した過負荷を信号で知らせることも可能である。制御ユニット５４は、報告および／または信号により始動され、閾値関数ｙ（ｔ）を修正し、時間ｔ１の後、すなわち過負荷状態の報告の後で有効な修正された閾値関数ｙｍｏｄ（ｔ）を生成する。制御ユニット５４、特にパケットフィルタ１２は、元の修正されていない閾値関数ｙ（ｔ）に基づいて修正された閾値関数ｙｍｏｄ（ｔ）を計算し、時間ｔ＞ｔ１において、修正された閾値関数ｙｍｏｄ（ｔ）に基づいて、入力パケットのフィルタリングを実行する。修正された閾値関数ｙｍｏｄ（ｔ）は、パケットフィルタの通過の確率を少なくとも部分的に戻し、かつ／またはパケットフィルタの通過の確率を一時的に一定に保つようになされる。
【００３５】
図６ａは、パケットフィルタ１２の通過の確率が一時的に一定に保たれる、「中断」モードの例を示す。元の修正されていない増加する閾値関数ｙ（ｔ）が、時間ｔ≦ｔ１については、この時間領域で有効な閾値関数であることを示す実線によって示される。元の修正されていない増加する閾値関数ｙ（ｔ）が、時間ｔ＞ｔ１については、この時間領域では無効な閾値関数であることを示す鎖線によって示される。時間ｔ１において、ダウンストリームネットワークは、過負荷に対応するため、自身の切迫した過負荷の可能性を信号で知らせる。制御ユニット５４は、この過負荷信号によって始動され、ダウンストリームネットワークに、切迫した過負荷に対応するための期間Δｔを与える、修正された閾値関数ｙｍｏｄ（ｔ）を計算する。期間Δｔが経過すると、中断されたルーティング変更が再開される。修正された閾値関数ｙｍｏｄ（ｔ）は、元の閾値関数ｙ（ｔ）から、ｔ１＜ｔ＜ｔ１＋Δｔではｙｍｏｄ（ｔ）＝ｙ１＝ｙ（ｔ＝ｔ１）、ｔ≧ｔ１＋Δｔではｙｍｏｄ（ｔ）＝ｙ（ｔ−Δｔ）のように定義される。ｔ＞ｔ１で有効である修正された閾値関数ｙｍｏｄ（ｔ）（ｔ＞ｔ１において実線で示されている）は、］ｔ１；ｔ１＋Δｔ［の期間は値ｙ１に一定に保たれ、この期間を経過すると、元の閾値関数ｙ（ｔ）の増加率と等しい時間依存の増加率で、再び増加することができる。
【００３６】
図６ｂは、パケットフィルタ１２の通過の確率が、現在の値ｙ１から前の値に戻る、「取戻し」モードの例を示す。実線および鎖線などの図６ｂの図面は、図６ａの図面と対応する。元の修正されていない増加する閾値関数ｙ（ｔ）が、時間ｔ≦ｔ１については、この時間領域では有効な閾値関数であることを示す実線として示される。元の修正されていない増加する閾値関数ｙ（ｔ）が、時間ｔ＞ｔ１については、この時間領域では無効な閾値関数であることを示す鎖線によって示される。時間ｔ１において、ダウンストリームネットワークは、過負荷に対応するため、自身の可能性なしに切迫した過負荷を信号で知らせる。制御ユニット５４は、この過負荷信号によって始動され、ルーティング変更を取り戻す修正された閾値関数ｙｍｏｄ（ｔ）を計算する。ｔ＞ｔ１で有効である修正された閾値関数ｙｍｏｄ（ｔ）（ｔ＞ｔ１において実線で示されている）は、元の閾値関数ｙ（ｔ）から、ｔ＞ｔ１ではｙｍｏｄ（ｔ）＝ｙ（２・ｔ１−ｔ）のように定義される。修正された閾値関数ｙｍｏｄ（ｔ）は、元の閾値関数ｙ（ｔ）の負の増加率と等しい時間依存の減少率で、現在の値ｙ１から前の値ｘ＿ｍｉｎに戻る。
【００３７】
図６ｃは、前述の「中断」モードと「取戻し」モードの組合せの例を示す。時間ｔ１において、ダウンストリームネットワークは、過負荷に対応するために、自身の切迫した過負荷の可能性を信号で知らせる。制御ユニット５４は、この過負荷信号によって始動され、ダウンストリームネットワークに、切迫した過負荷に対応するための期間Δｔを与える、修正された閾値関数ｙｍｏｄ，１（ｔ）を計算する。期間Δｔが経過すると、ダウンストリームネットワークは、例えばダウンストリームネットワークのリソースが十分ではないために、過負荷状態が依然として厳しいことを信号で知らせる。その結果、制御ユニット５４がこの第２の過負荷信号によって始動され、ルーティング変更を元に戻すことを決定し、元の閾値関数ｙ（ｔ）の負の増加率と等しい時間依存の減少率で、現在の値ｙ１から前の値ｘ＿ｍｉｎまで戻る、修正された閾値関数ｙｍｏｄ，２（ｔ）を計算する。
【図１】
0005699138.tif 000002
【図２】
0005699138.tif 000003
【図３ａ】
0005699138.tif 000004
【図３ｂ】
0005699138.tif 000005
【図４】
0005699138.tif 000006
【図５】
0005699138.tif 000007
【図６ａ】
0005699138.tif 000008
【図６ｂ】
0005699138.tif 000009
【図６ｃ】
0005699138.tif 000010