(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-19
(45)【発行日】2023-09-27
(54)【発明の名称】ソフトウェア定義型ネットワークにおいて限られた転送ルールで負荷分散を改善するデバイスおよび方法
(51)【国際特許分類】
H04L 47/125 20220101AFI20230920BHJP
H04L 45/42 20220101ALI20230920BHJP
H04L 47/41 20220101ALI20230920BHJP
【FI】
H04L47/125
H04L45/42
H04L47/41
(21)【出願番号】P 2021576282
(86)(22)【出願日】2019-06-25
(86)【国際出願番号】 EP2019066821
(87)【国際公開番号】W WO2020259807
(87)【国際公開日】2020-12-30
【審査請求日】2022-01-31
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】レグエイ、ジェレミー
(72)【発明者】
【氏名】メダリアニ、パオロ
(72)【発明者】
【氏名】ツァオ、ジンファ
(72)【発明者】
【氏名】ジャン、ジエ
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2014-230011(JP,A)
【文献】特開2016-146581(JP,A)
【文献】米国特許出願公開第2015/0195204(US,A1)
【文献】米国特許出願公開第2017/0359261(US,A1)
【文献】国際公開第2013/105551(WO,A1)
【文献】米国特許出願公開第2009/0193105(US,A1)
【文献】米国特許出願公開第2012/0287789(US,A1)
【文献】国際公開第2018/004639(WO,A1)
【文献】中国特許出願公開第107579923(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/125
H04L 45/42
H04L 47/41
(57)【特許請求の範囲】
【請求項1】
複数の出力ポートを用いてトラフィックを転送するネットワークデバイスであって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納するストレージシステムと、
回路であって、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、
前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フロー
の前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、
前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正し、
格納された前記転送ルールに従ってルーティングを行う
ように構成される回路と
を備え
、
前記回路がさらに
前記第1出力ポートの前記負荷または予測負荷が前記第1出力ポートの前記目標負荷と一致しない場合には、前記第1出力ポートに転送される最大フローのセットを識別することであって、前記最大フローのセットに含まれるフローの数は、前記最大フローのセットにもう1つのフローが追加されたならば、前記最大フローのセットの合計データレートが前記負荷または前記予測負荷と前記目標負荷との差異より大きくなるであろうように選択される、識別することと、
識別された前記最大フローのセットを前記第1出力ポート以外の1つまたは複数の出力ポートに割り当てることと
を行うように構成される、
ネットワークデバイス。
【請求項2】
前記回路が、
前記複数の出力ポートの前記負荷を観測し、
前記第1出力ポートの前記負荷が前記第1出力ポートの前記目標負荷と一致しない場合には、前記転送ルールに従って前記第1出力ポートに転送され
る前記複数のフローの中で負荷が最も大きいフローを識別し、
識別された前記フローを前記第2出力ポートに関連付ける
ように構成される、請求項1に記載のネットワークデバイス。
【請求項3】
前記回路が、
前記複数の出力ポートの今後の負荷を予測し、
前記第1出力ポートの前記今後の負荷が前記第1出力ポートの前記目標負荷と一致しない場合には、前記転送ルールに従って前記第1出力ポートに転送される前記複数のフローの中で前記今後の負荷が最も大きいフローを識別し、
識別された前記
今後の負荷が最も大きい前記フローを前記第2出力ポートに関連付ける
ように構成される、請求項1または2に記載のネットワークデバイス。
【請求項4】
前記第1ルールおよび前記第2ルールが転送テーブルに格納され、
前記転送テーブルが、入力フローをグループテーブルにリダイレクトするルール
および入力フローを出力ポートと関連付けるルール
である転送ルールを格納し、
それぞれのリダイレクト転送ルールが複数のパスについてトラフィック分割を実施するグループテーブルのエントリのセットを指し示す、請求項1から
3のいずれか一項に記載のネットワークデバイス。
【請求項5】
前記転送テーブルおよび前記グループテーブルが三値連想メモリ(TCAM)に格納される、請求項
4に記載のネットワークデバイス。
【請求項6】
前記第2出力ポートへのフローの割り当てにおいて、第2転送ルールが前記転送テーブルに追加される、請求項
4または
5に記載のネットワークデバイス。
【請求項7】
コントローラへのインタフェースを備え、
前記回路が、前記インタフェースを介して、前記複数の出力ポートに指定する目標分割比率
またはそれぞれの前記目標負荷、および
前記転送ルールを受信するように構成される、請求項1から
6のいずれか一項に記載のネットワークデバイス。
【請求項8】
前記回路が、前記インタフェースを介して前記コントローラに要求を送信し、前記ネットワークデバイスに1つまたは複数の新たな転送ルールまたは更新された転送ルールを提供するよう前記コントローラに要求するように構成される、請求項
7に記載のネットワークデバイス。
【請求項9】
前記要求が、
前記第1出力ポートの前記負荷が前記第1出力ポートの前記目標負荷と一致しないという通知、
TCAM利用率
および/または局部的に追加されたルールの数に関する情報、
各ポートの前記目標負荷からの偏差に関する情報、
前記ネットワークデバイスが前記第1出力ポート以外の別のポートと関連付けたフローのリスト、
のうちの少なくとも1つを含む、請求項
8に記載のネットワークデバイス。
【請求項10】
前記転送ルールの前記修正が、前記出力ポートの前記目標負荷からの前記負荷または予測負荷の偏差を最小限に抑えるように選択される、請求項1から
9のいずれか一項に記載のネットワークデバイス。
【請求項11】
前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との前記一致の改善において、
最も高い負荷を有するとみなされた1つまたは複数のフローを除去した後に
、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムを用い
て、前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との偏差を最小限に抑える最適解を求めて、さらなる集約フローの複数のフローを分割する、請求項1から
10のいずれか一項に記載のネットワークデバイス。
【請求項12】
複数の出力ポートを用いてトラフィックを転送するネットワークデバイスであって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納するストレージシステムと、
回路であって、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正し、
格納された前記転送ルールに従ってルーティングを行う
ように構成される回路と
を備え、
前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との前記一致の改善において、最も高い負荷を有するとみなされた1つまたは複数のフローを除去した後に、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムを用いて、前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との偏差を最小限に抑える最適解を求めて、さらなる集約フローの複数のフローを分割する、ネットワークデバイス。
【請求項13】
ポートごとの前記目標負荷が、前記
コントローラから受信した前記転送ルールから決定される、請求項
7に記載のネットワークデバイス。
【請求項14】
格納された前記転送ルールが、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含み、
前記第1出力ポートの前記負荷または予測負荷が前記第1出力ポートの目標負荷と一致しない場合には、
前記第1出力ポートの前記目標負荷と前記負荷または予測負荷との前記一致を改善すべく、前記複数のサブ集約フローの
前記第1出力ポートに転送される複数のフローの
うちの少なくとも1つを
除外し、
前記少なくとも1つを第2出力ポートと関連付ける
前記第2ルールを確立することにより、格納された前記転送ルールを修正する、請求項1から13のいずれか一項に記載のネットワークデバイス。
【請求項15】
複数の出力ポートを用いてトラフィックを転送するネットワークデバイスであって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納するストレージシステムと、
回路であって、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正し、
格納された前記転送ルールに従ってルーティングを行う
ように構成される回路と
を備え、
格納された前記転送ルールが、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含み、前記回路はさらに、
前記第1出力ポートの前記負荷または予測負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷または予測負荷との前記一致を改善すべく、前記複数のサブ集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける前記第2ルールを確立することにより、格納された前記転送ルールを修正する、ネットワークデバイス。
【請求項16】
前記1つまたは複数のグループテーブルが、ハッシュ結果に基づいて、または加重コストマルチパス(WCMP)によって転送を規定する、請求項
4から
15のいずれか一項に記載のネットワークデバイス。
【請求項17】
ハッシュがヘッダエントリの送信元IP、宛先IP、プロトコル、送信元ポート、宛先ポートのうちの少なくとも1つについて計算される、且つ/または入力フローを出力ポートと関連付ける前記転送ルールが前記ヘッダエントリのうちの少なくとも1つで前記入力フローを識別する、請求項
16に記載のネットワークデバイス。
【請求項18】
複数の出力ポートを有するネットワークデバイスにおいてトラフィックを転送するための方法であって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納する段階と、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、
前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フロー
の前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、
前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正する段階と、
格納された前記転送ルールに従ってルーティングを行う段階と
、
を備え
、前記方法はさらに
前記第1出力ポートの前記負荷または予測負荷が前記第1出力ポートの前記目標負荷と一致しない場合には、前記第1出力ポートに転送される最大フローのセットを識別する段階あって、前記最大フローのセットに含まれるフローの数は、前記最大フローのセットにもう1つのフローが追加されたならば、前記最大フローのセットの合計データレートが前記負荷または前記予測負荷と前記目標負荷との差異より大きくなるであろうように選択される、段階と、
識別された前記最大フローのセットを前記第1出力ポート以外の1つまたは複数の出力ポートに割り当てる段階と、を備える方法。
【請求項19】
複数の出力ポートを有するネットワークデバイスにおいてトラフィックを転送するための方法であって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納する段階と、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正する段階と、
格納された前記転送ルールに従ってルーティングを行う段階と、
前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との前記一致の改善において、最も高い負荷を有するとみなされた1つまたは複数のフローを除去した後に、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムを用いて、前記複数の出力ポートの前記負荷または予測負荷と前記目標負荷との偏差を最小限に抑える最適解を求めて、さらなる集約フローの複数のフローを分割する段階と、を備える方法。
【請求項20】
複数の出力ポートを有するネットワークデバイスにおいてトラフィックを転送するための方法であって、
集約フローの複数のフローのパケットを所定のフロー配分に従って前記複数の出力ポートに転送するための第1ルールを含む転送ルールを格納する段階と、
第1出力ポートの負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷との前記一致を改善すべく、前記集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された前記転送ルールを修正する段階と、
格納された前記転送ルールに従ってルーティングを行う段階であって、格納された前記転送ルールが、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含む、段階と、
前記第1出力ポートの前記負荷または予測負荷が前記第1出力ポートの目標負荷と一致しない場合には、前記第1出力ポートの前記目標負荷と前記負荷または予測負荷との前記一致を改善すべく、前記複数のサブ集約フローの前記第1出力ポートに転送される複数のフローのうちの少なくとも1つを除外し、前記少なくとも1つを第2出力ポートと関連付ける前記第2ルールを確立することにより、格納された前記転送ルールを修正する段階と、を備える方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ネットワークにおいてデータポートを転送するための方法およびデバイスに関する。
【背景技術】
【0002】
ソフトウェア定義型ネットワーキング(SDN)技術とは、ネットワーク性能およびネットワーク監視を改善するために、動的な、プログラムで効率的なネットワーク設定を可能にするネットワーク管理に対する取り組みである。SDNとは、従来型ネットワークの静的なアーキテクチャが分散化されて複雑であるのに対して、現行ネットワークがもっと多くの柔軟性および容易なトラブルシューティングを必要としているという現実に対処するものだとされている。SDNでは、ネットワークパケットの転送処理(データプレーン)をルーティング処理(制御プレーン)から分離することにより、ネットワークインテリジェンスを1つのネットワーク構成要素に集中化しようとしており、制御プレーンは1つまたは複数のコントローラで構成される。
【0003】
負荷分散は、ネットワーク利用率の改善において重要な役割を果たす。その趣旨は、ネットワーク容量をより有効に利用するために、トラフィックを複数のパスに分割することである。そのようなネットワークのトラフィックは一般に、複数のフローに整理される。こうしたフローは、ホスト間通信パスと規定されても、または送信元アドレスおよび宛先アドレス(例えば、IPアドレスまたはMACアドレス)と、トランスポートプロトコル(例えば、UDPまたはTCP)もしくは任意の他の識別子を伴うポート番号との一意の組み合わせにより識別されるソケット間通信と規定されてもよい。一般に、これらのフローはマクロフロー(トラフィック集合体またはフロー集合体とも呼ばれる)およびマイクロフローにグループ化される。マクロフローは、その送信元および宛先によって規定されてよく、より細かい粒度識別子(特定のサービスもしくはサービス品質および/または優先度など)により規定されるマイクロフローに細分化することができる。例えば、マイクロフローは、可能な最も細かい粒度のフロー(すなわち、単位TCPフロー)でよく、パケット並べ替え問題をもたらすので、さらに分割することはできない。マクロフローは、複数のマイクロフローの複合物であり、異なるパスでルーティングされ得るいくつかのサブフローに分割することができる。一般に、あらゆる種類のフローまたはフロー集合体がフローと呼ばれてよい。
【0004】
今日では、例えば、ソフトウェア定義型ネットワーキング(SDN)コントローラまたはパス計算要素(PCE)のようなネットワークコントローラが、複数のトラフィックエンジニアリング方法をまとめて、ルーティングおよび負荷分散を常に最適化する。こうした集中型制御プレーンエンティティは、ネットワーク負荷およびトラフィックフローに関する統計値があれば、ネットワークの全体的な視点を活用して、フローを分割する必要があるかどうかを判定し、それを行う最も効率的なやり方を決定する。
【発明の概要】
【0005】
本発明の実施形態が、ソフトウェア定義型ネットワーク(SDN)のようなネットワークにおいてデータを効果的に転送するための装置および方法を提供する。転送ネットワークデバイスは、負荷不均衡問題を検出して、負荷分散を実際のトラフィック状態に適応させることができる。適応は、必要なときに、優先して局部的に且つネットワークコントローラにより行われる。さらに、この適応は問題のあるフロー(不均衡問題の原因となっているフロー)を重視しており、限られた数の追加転送ルールが用いられるようになる。
【0006】
前述したことなどの目的が独立クレームの主題により達成される。さらなる実装形態が、従属クレーム、本明細書、および図から明らかである。
【0007】
第1態様によれば、複数の出力ポート(120-1~120-N)を用いてトラフィックを転送するためのネットワークデバイス(100)が提供される。本デバイスは、集約フローの複数のフローのパケットを所定のフロー配分に従って複数の出力ポートに転送するための第1ルールを含む転送ルールを格納したストレージシステム(101)と、第1出力ポート(120-N)の負荷が第1ポートの目標負荷と一致しない場合には、複数のフローのうちの少なくとも1つを集約フローから除外し、第1出力ポートの負荷と目標負荷との一致を改善するために集約フローの複数のフローのうちの少なくとも1つを第2出力ポート(120-1)と関連付ける第2ルールを確立することにより、格納された上記転送ルールを修正し、格納された転送ルールに従ってルーティングを行うように構成された回路(110)とを備える。本態様によるネットワークデバイスは、ネットワークの全面的な再設定を必要とせずに、フローのルーティングを局部的に変更することができる。これにより、例えば、負荷不均衡問題へのより迅速な反応が可能になり得る。
【0008】
第2態様によれば、第1態様によるネットワークデバイス(500)が提供され、回路(510)は、複数の出力ポート(520-1~520-N)の負荷を観測し、第1出力ポート(520-N)の負荷が第1ポート(520-N)の目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポート(520-N)に転送されたフロー(550-1~550-N)の中で負荷が最も大きいフロー(550-1)を識別し、識別された上記フロー(550-1)を第2出力ポート(520-1)に関連付けるように構成される。本態様によるネットワークデバイスは、複数の出力ポートの負荷不均衡問題を検出し、ネットワークの全面的な再設定を必要とせずに、負荷不均衡問題を局部的に解決することができる。これにより、例えば、より迅速な負荷分散が可能になり得る。
【0009】
第3態様によれば、第1態様または第2態様によるネットワークデバイス(500)が提供される。回路は、複数の出力ポート(520-1~520-N)の今後の負荷を予測し、第1出力ポート(520-N)の今後の負荷が第1ポート(520-N)の目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポート(520-N)に転送されるフロー(550-1~550-N)の中で今後の負荷が最も大きいフロー(550-1)を識別し、識別された上記フロー(550-1)を第2出力ポート(520-1)に関連付けるように構成される。本態様によるネットワークデバイスは、予想される今後の負荷を見越した局部的な負荷分散を可能にし得る。フローが今後に非常に大きくなると予想される場合、このフローは、対応する出力ポートで負荷分散問題が生じないように転送されてよい。
【0010】
第4態様によれば、第1態様から第3態様のうちのいずれかによるネットワークデバイス(500)が提供される。ここで、回路(510)はさらに、第1出力ポート(750)の負荷または予測負荷(701)が第1ポートの目標負荷(702)と一致しない場合には、第1出力ポートに転送される最大フローのセット(720)を識別することであって、本セット(720)に含まれるフローの数は、本セット(720)のフローにもう1つのフローが追加されたならば、本セットのフローの複数のフローの合計データレートが負荷または予測負荷(701)と目標負荷(702)との差異より大きくなるように選択される、識別することと、識別された上記フローを第1出力ポート(750)以外の1つまたは複数の出力ポートに割り当てることとを行うように構成される。本態様によるネットワークデバイスは、負荷分散問題を局部的に効果的に解決することを可能にし得る。最大フローだけが、異なる出力ポートに転送されるとみなされるので、これにより、少数の新たなルール(これは、転送ルールに代わってローカルストレージを効率的に使用し得る)とわずかな局部的計算要求とでネットワークを局部的に再設定することが可能になり得る。
【0011】
第5態様によれば、第1態様から第4態様のうちのいずれかによるネットワークデバイス(100)が提供される。ここで、第1ルールおよび第2ルールは転送テーブル(801)に格納され、転送テーブル(801)は、入力フローをグループテーブルにリダイレクトするルール(821)、または入力フローを出力ポートと関連付けるルール(822)のいずれかである転送ルールを格納し、それぞれのリダイレクト転送ルール(821)は、転送テーブルに含まれるリダイレクト転送ルール(821)のエントリにより指し示されるグループテーブルにより規定される。本態様によるネットワークデバイスは、負荷分散問題を局部的に効果的に解決することを可能にし得る。出力ポートで負荷分散問題を引き起こさないトラフィックでは、グループテーブルが用いられてよく、これにより、限定されたルールの使用だけで大量の(且つ複数の出力ポートにうまく配分され得る)データを転送するという効率的なやり方が提供されてよい。大きいフローおよび/または問題のあるフローでは、フローを出力ポートと関連付けるルールが用いられてよい。これにより、負荷不均衡問題を迅速且つ局部的に解決すると共に効果的な転送を提供することが可能になり得る。
【0012】
第6態様によれば、第5態様によるネットワーキングデバイス(100)が提供される。ここで、転送テーブル(801)およびグループテーブルは三値連想メモリ(TCAM)に格納される。本態様によるネットワークデバイスは、説明された機能の迅速な実行を可能にし得る迅速且つ効果的な転送を提供することができる。
【0013】
第7態様によれば、第5態様または第6態様によるネットワークデバイス(100)が提供される。ここで、第2出力ポートへのフローの割り当てにおいて、第2転送ルールが転送テーブル(801)に追加される。本態様によるネットワークデバイスは、フローを出力ポートと関連付ける状況に合わせたルールを用いて、負荷分散問題を効率的に解決することができる。
【0014】
第8態様によれば、第1態様から第7態様のうちのいずれかによるネットワークデバイス(100)が提供され、本デバイスはコントローラへのインタフェース(150)を有し、回路(110)は、上記インタフェースを介して、出力ポートに指定する目標分割比率、それぞれの目標負荷、および/または上記転送ルールを受信するように構成される。本態様によるネットワークデバイスは、不均衡問題を局部的に効果的に解決でき得ると共に、中央コントローラに従ってトラフィックを効率的に転送することを可能にし得る。
【0015】
第9態様によれば、第8態様によるネットワークデバイス(100)が提供される。ここで、回路(110)は、上記インタフェースを介して要求をコントローラに送信し、ネットワークデバイスに1つまたは複数の新たな転送ルールまたは更新された転送ルールを提供するようコントローラに要求するように構成される。本態様によるネットワークデバイスは、負荷分散問題を、この問題が局部的に解決できない場合に、解決することを可能にし得る。コントローラは、そのような場合に、ネットワークを全面的に再設定することがある。ネットワークデバイスは、負荷分散問題を局部的に解決することができない場合、そのような要求をネットワークコントローラだけに送出することがある。局部的な解決策の方が迅速且つ効率的かもしれないが、全面的な解決策の方が深刻な負荷不均衡問題を解決できることがある。
【0016】
第10態様によれば、第9態様によるネットワークデバイス(100)が提供される。ここで要求には、第1出力ポートの負荷が第1ポートの目標負荷と一致しないという通知、TCAM利用率および/または局部的に追加されたルールの数に関する情報、各ポートの目標負荷からの偏差に関する情報、ネットワークデバイスが第1ポート以外の別のポートと関連付けたフローのリストのうちの少なくとも1つが含まれる。本態様によるネットワークデバイスは、ネットワークコントローラが負荷不均衡問題へのより効率的になり得る解決策をより効率的に見つけ出すことに寄与することができる。
【0017】
第11態様によれば、第1態様から第10態様のうちのいずれかによるネットワークデバイス(100)が提供される。ここで転送ルール(820)の修正は、出力ポートの目標負荷からの負荷または予測負荷の偏差を最小限に抑えるように選択される。
【0018】
第12態様によれば、第1態様から第11態様のうちのいずれかによるネットワークデバイスが提供される。ここで、出力ポートの負荷または予測負荷と目標負荷との一致の改善において、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムが、最も高い負荷を有するとみなされたフローを除去した後に用いられる。本態様によるネットワークデバイスは、負荷不均衡問題の解決策をより効率的に見つけ出すことができる。
【0019】
第13態様によれば、第1態様から第12態様のうちのいずれかによるネットワークデバイス(100)が提供される。ここで、ポート(120-1~120-N)ごとの目標負荷は制御ノードから受信した転送ルール(820)から決定される。本態様によるネットワークデバイスは、追加のやり取りを行うことなく、出力ポートの目標負荷を見つけ出すことができる。
【0020】
第14態様によれば、第1態様から第13態様のうちのいずれかによるネットワークデバイス(100)が提供される。ここで、格納された転送ルール(820)は、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含み、第1出力ポート(120-N)の負荷または予測負荷が第1ポート(120-N)の目標負荷と一致しない場合には、サブ集約フローのうちの少なくとも1つを集約フローから除外し、第1出力ポート(120-N)の目標負荷と負荷または予測負荷との一致を改善するために集約フローの複数のサブ集約フローのうちの少なくとも1つを第2出力ポート(120-1)と関連付ける第2ルールを確立することにより、格納された上記転送ルール(820)を修正する。本態様によるネットワークデバイスは、負荷不均衡問題の場合に、集約フローの分割を効率的に変更することができる。
【0021】
第15態様によれば、第5態様~第14態様のうちのいずれかによるネットワークデバイス(100)が提供される。ここで、1つまたは複数のグループテーブルが、ハッシュ結果に基づくまたは加重コストマルチパス(WCMP)による転送を規定する。本態様によるネットワークデバイスは、その出力ポートに流入トラフィックを、それぞれの出力ポートの目標負荷に従って効率的に配分することができる。
【0022】
第16態様によれば、第15態様によるネットワークデバイス(100)が提供される。ここで、ハッシュがヘッダ(900)エントリの送信元IP(911)、宛先IP(912)、プロトコル(913)、送信元ポート(914)、宛先ポート(915)のうちの少なくとも1つについて計算される、且つ/または入力フローを出力ポートと関連付ける転送ルール(822)が上記ヘッダ(900)エントリのうちの少なくとも1つで入力フローを識別する。本態様によるネットワークデバイスは、その出力ポートにトラフィックを効率的に配分することができる。ルーティングが再設定されない限り、同じマイクロフローに関連するパケットが同じ出力ポートに必ず転送され得る。フロー集合体がいくつかのヘッダエントリだけで識別され、全体またはサブ集合体として転送されてよく、あるいは集約フローに属するマイクロフローが、初期集約フローの分割につながり得るもっと多くのヘッダエントリに基づいて識別されてもよい。
【0023】
第17態様によれば、複数の出力ポートを有するネットワークデバイスにおいてトラフィックを転送するための方法(1200)が提供される。本方法は、集約フローの複数のフローのパケットを所定のフロー配分に従って複数の出力ポートに転送するための第1ルールを含む転送ルールを格納する段階と、第1出力ポートの負荷が第1ポートの目標負荷と一致しない場合には、複数のフローのうちの少なくとも1つを集約フローから除外し、第1出力ポートの負荷と目標負荷との一致を改善するために集約フローの複数のフローのうちの少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された上記転送ルールを修正する段階と、格納された転送ルールに従ってルーティングを行う段階とを備える。
【0024】
本方法はさらに、出力ポートの負荷を観測する段階と、第1出力ポートの負荷が第1ポートの目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポートに転送されたフローの中で負荷が最も大きいフローを識別する段階と、識別された上記フローを第2出力ポートに関連付ける段階とを備えてよい。
【0025】
一実施形態によれば、本方法はさらに、複数の出力ポートの今後の負荷を予測する段階と、第1出力ポートの今後の負荷が第1ポートの目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポートに転送されるフローの中で今後の負荷が最も大きいフローを識別する段階と、識別された上記フローを第2出力ポートに関連付ける段階とを備えてよい。
【0026】
例示的な一実装例において、本方法はさらに、第1出力ポート(750)の負荷または予測負荷(701)が第1ポートの目標負荷(702)と一致しない場合に、第1出力ポートに転送される最大フローのセット(720)を識別することであって、本セット(720)に含まれるフローの数は、本セット(720)のフローにもう1つのフローが追加されたならば、本セットのフローの複数のフローの合計データレートが負荷または予測負荷(701)と目標負荷(702)との差異より大きくなるように選択される、識別することと、識別された上記フローを第1出力ポート(750)以外の1つまたは複数の出力ポートに割り当てることとを行うように構成されてよい。
【0027】
さらに本方法は、第1ルールおよび第2ルールを転送テーブル(801)に格納する段階を含んでよく、転送テーブル(801)は、入力フローをグループテーブルにリダイレクトするルール(821)、または入力フローを出力ポートと関連付けるルール(822)のいずれかである転送ルールを格納し、それぞれのリダイレクト転送ルール(821)は、転送テーブルに含まれるリダイレクト転送ルール(821)のエントリにより指し示されるグループテーブルにより規定される。
【0028】
一態様によれば、転送テーブル(801)およびグループテーブルは三値連想メモリ(TCAM)に格納される。
【0029】
本方法の一実施形態によれば、第2出力ポートへのフローの割り当てにおいて、第2転送ルールが転送テーブル(801)に追加される。
【0030】
例示的な一実装例において、本方法はさらに、コントローラへのインタフェースを用いるように構成されてよく、本方法は、上記インタフェースを介して、複数の出力ポートに指定する目標分割比率、それぞれの目標負荷、および/または上記転送ルールを受信するように構成される。
【0031】
いくつかの実施形態において、本方法はさらに、上記インタフェースを介して要求をコントローラに送信する段階と、ネットワークデバイスに1つまたは複数の新たな転送ルールまたは更新された転送ルールを提供するようコントローラに要求する段階とを含んでよい。
【0032】
さらに、この要求には、第1出力ポートの負荷が第1ポートの目標負荷と一致しないという通知、TCAM利用率および/または局部的に追加されたルールの数に関する情報、各ポートの目標負荷からの偏差に関する情報、並びにネットワークデバイスが第1ポート以外の別のポートと関連付けたフローのリストのうちの少なくとも1つが含まれてよい。
【0033】
一態様によれば、上述した方法が提供され、転送ルール(820)の修正は、出力ポートの目標負荷からの負荷または予測負荷の偏差を最小限に抑えるように選択される。
【0034】
本方法はさらに、出力ポートの負荷または予測負荷と目標負荷との一致の改善において、最も高い負荷を有するとみなされたフローを除去した後に、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムを用いる段階を備えてよい。
【0035】
一実施形態によれば、本方法はさらに、ポート(120-1~120-N)ごとの目標負荷を制御ノードから受信した転送ルール(820)から決定してよい。
【0036】
方法の一実施形態によれば、格納された転送ルール(820)は、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含み、第1出力ポート(120-N)の負荷または予測負荷が第1ポート(120-N)の目標負荷と一致しない場合には、サブ集約フローのうちの少なくとも1つが集約フローから除外され、格納された上記転送ルール(820)は、第1出力ポート(120-N)の負荷または予測負荷と目標負荷との一致を改善するために集約フローの複数のサブ集約フローのうちの少なくとも1つを第2出力ポート(120-1)と関連付ける第2ルールを確立することにより修正される。
【0037】
例示的な一実装例において、1つまたは複数のグループテーブルは、ハッシュ結果に基づいて、または加重コストマルチパス(WCMP)によって転送を規定する。
【0038】
本方法の一実施形態によれば、ハッシュがヘッダ(900)エントリの送信元IP(911)、宛先IP(912)、プロトコル(913)、送信元ポート(914)、宛先ポート(915)のうちの少なくとも1つについて計算される、且つ/または入力フローを出力ポートと関連付ける転送ルール(822)が上記ヘッダ(900)エントリのうちの少なくとも1つで入力フローを識別する。
【0039】
上述した方法は、コード命令を含むソフトウェアコードとして実現されてよく、コード命令は上述した方法の段階を実現する。ソフトウェアは、コンピュータ可読媒体に格納されてよい。この媒体は、プロセッサメモリでも、任意の記憶媒体などでもよい。ソフトウェアは、上で言及された制御デバイスまたはスイッチなどのデバイスに用いられてよい。
【0040】
1つまたは複数の実施形態の詳細が、添付図面および以下の説明に記載されている。本明細書、図面、および特許請求の範囲から、他の機能、目的、および利点が明らかになるであろう。
【図面の簡単な説明】
【0041】
次に、本発明の実施形態が、添付した図および図面を参照してより詳細に説明される。
【0042】
【
図1】ネットワークおよびスイッチのアーキテクチャに関する一例を示すブロック図であり、転送ルールがスイッチに格納されている。
【0043】
【
図2】送出ポートの負荷の観測比率および目標分割比率に関する一例を示す図である。
【0044】
【
図3】ネットワークおよびスイッチのアーキテクチャをさらに詳細に示すブロック図であり、トラフィック用の3つの可能なパスは異なる分割比率を有し、これらのパスには異なる数の転送ネットワークデバイスがある。
【0045】
【
図4A】本開示による、ネットワーキングデバイスの一例を示すブロック図であり、高い負荷が出力ポートNにかかっている。
【0046】
【
図4B】
図4Aと同じネットワーキングデバイスを示すブロック図であり、フロー配分についての新たなルールを確立することにより、出力ポートNの負荷が減少している。
【0047】
【
図5A】1つのポートには大きい負荷がかかり、別のポートには小さい負荷がかかることになるフローの配分を示すブロック図である。
【0048】
【
図5B】1つのフローが大きい負荷のポートから小さい負荷のポートに再配分される様子を示すブロック図である。
【0049】
【
図6】効率的な負荷分散に向けて連携する転送ネットワークデバイスおよび中央ネットワークコントローラを示すブロック図である。
【0050】
【
図7】1つのポートの目標負荷と比較される測定負荷/予測負荷を示すブロック図である。
【0051】
【
図8】本開示による一実装例における転送ルールを示すブロック図である。
【0052】
【
図9】ネットワーキングデバイスがその転送判断の根拠とする、パケットヘッダの重要なフィールドの一例を示すブロック図である。
【0053】
【
図10】本開示による転送ネットワークデバイスを用いるためのネットワーク設定の一例を示すブロック図である。
【0054】
【
図11】集中型フロー分割アルゴリズムのアルゴリズム的ワークフローの一例を示すブロック図である。
【0055】
【
図12】本開示による転送ネットワークデバイスで用いられる方法の一例を示すフロー図である。
【発明を実施するための形態】
【0056】
以下の説明では添付図に言及する。これらの添付図は本開示の一部を形成しており、本発明の実施形態の具体的な態様または本発明の実施形態が用いられ得る具体的な態様を実例として示す。本発明の実施形態は他の態様で用いられてよく、図に表現されていない構造的変更または論理的変更を含み得ることが分かる。したがって、以下の詳細な説明は限定的意味に解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲により規定される。
【0057】
例えば、説明される方法に関連した開示は、その方法を行うように構成された対応するデバイスまたはシステムにも当てはまってよく、逆もまた同様であることが分かる。例えば、1つまたは複数の特定の方法の段階が説明された場合、対応するデバイスが、説明された1つまたは複数の方法の段階を実行するための、例えば、機能ユニットといった1つまたは複数のユニット(例えば、1つまたは複数の段階を実行する1つのユニット、または複数の段階のうちの1つまたは複数をそれぞれが実行する複数のユニット)を含んでよく、そのような1つまたは複数のユニットが図に明示的に説明されていなくても、示されていなくてもよい。一方、例えば、特定の装置が1つまたは複数のユニット、例えば、機能ユニットに基づいて説明された場合、対応する方法が1つまたは複数のユニットの機能を実行する1つの段階(例えば、1つまたは複数のユニットの機能を実行する1つの段階、あるいは複数のユニットのうちの1つまたは複数の機能をそれぞれ実行する複数の段階)を含んでよく、そのような1つまたは複数の段階が図に明示的に説明されていなくても、示されていなくてもよい。さらに、本明細書において説明される様々な例示的な実施形態および/または態様の特徴は、特に記述がない限り、互いに組み合わされてよいことが分かる。
【0058】
通常、負荷分散(またはフロー分割)は、スイッチおよびルータなどのネットワークデバイスの内部で、2つの手法を用いて実施される。負荷分散の例が、
図1~
図3に示されている。
【0059】
図1は、スイッチの制御が可能なSDN/PCEコントローラを示している。スイッチの制御は、例えば、スイッチにより用いられる(場合によっては格納もされる)転送テーブルおよび/またはグループテーブルを設定することにより行われる。具体的には、スイッチは特定の宛先アドレスを有するパケットを受信し、転送テーブルおよびグループテーブルに基づいて、パケットが転送されるネクストホップをデコードする。ここでの転送テーブルは2つの列を含み、それぞれ、「一致」と表示され且つIPアドレス(一般には、可能な宛先アドレス)を含む列、および「対処」と表示され且つ転送ルール/ポリシーを規定する列である。例えば、宛先アドレス56.78.91.2のパケットは常に、アドレス56.78.91.2のネクストホップに転送される。一方、宛先アドレス56.78.91.8のパケットはさらに、グループテーブル(「ネクストホップ」の列)に示す別々のネクストホップアドレスに向けて、いくつかの出力ポートにわたって分割される。分割比率も、SDN/PCEコントローラまたは別の制御エンティティもしくはユニットにより指定されてよい。この分割は、パケット(ヘッダ)のいくつかの部分について計算されるハッシュ関数に基づいて、事前に決められる。「グループテーブル」という名称は、異なるテーブルが異なる宛先アドレスに用いられ得るという事実を意味している。
【0060】
具体的には、(送信元アドレスおよび/もしくは宛先アドレス、並びに/またはポートおよび/もしくはトランスポートプロトコルのような)パケットヘッダの重要なフィールドについてハッシュが計算され且つ送出パスを選択するのに用いられるハッシュベースの分割、および負荷分散重み(例えば、
図1および
図3の「分割比率」、並びに
図2の「目標比率」に対応する)を用いて、送出パス上のフローの数が必ず特定の比率を満たすようにする加重コストマルチパス(WCMP)のことである。どちらの場合も、フローに対して決定が行われると、フローの全パケットが同じ決定に従う必要がある(すなわち、全パケットが同じパスをたどる)。しかしながら、実際には、フローのサイズを事前に把握することはできず、フローサイズの配分は一様ではない。ここでは、フローサイズとは、フローがネットワーク(例えば、ネットワーク内の転送デバイスの入力ポートまたは出力ポート)に負わせる負荷として理解されてよい。
【0061】
図2は、転送ネットワークデバイスの3つの出力ポートの負荷の実際の比率と目標比率との一例を示している。この例のネットワークデバイスは、3GPPネットワークノードのセルサイトゲートウェイ(CSG)、RNCサイトゲートウェイ(RSG)、および2つの集約サイトゲートウェイ(ASG)である。ポートごとのフローの数は目標比率に従って配分されるので、実際の負荷は、例えば、1つまたは複数のフローが著しく大きい(ほとんどの他のフローより大きい(重い)負荷を有する)場合、著しく異なることがある。これらの2つの観測結果は、負荷分散装置が解決する必要のある厄介な不均衡問題の根源である。
【0062】
複数の送出ポートにわたるトラフィック再分割のタイプによれば、一様なフロー分割または一様でないフロー分割の区別が可能である。1つ目のタイプは最もよく使用されているタイプで、等価コストマルチパス(ECMP)としても知られている。2つ目のタイプは、ネットワークリソースの十分な利用が可能だが、実装するのが難しい。これは、不等コストマルチパス(UCMP)としても知られている。どちらの場合も、転送ネットワークデバイス内の実装は、効率的なパケット処理のために三値連想メモリ(TCAM)を活用する。スイッチ内のTCAMメモリはさらに、
図1および
図3に示すように2つのテーブル(転送テーブルおよびグループテーブル)に分割される。
図3は、IPアドレスだけでなく、一般に、D1およびD2などの任意の要求も転送テーブルにおいて一致し得ることを
図1より一般的に示している。この要求は、宛先名称もしくはアドレスまたはフロー番号もしくは識別などといった任意の形態で、宛先の識別に対応してよい。
【0063】
流入パケットごとに、スイッチは、(例えば、ヘッダエントリのうちのいずれかまたは全てと転送テーブル内の対応するエントリとを比較することにより)転送テーブル内の対応する一致を探す。これで、パケットを直接的に転送することができるのか、または特定の分割を適用する必要があるのかが指定される。この後者の場合、スイッチはグループテーブルの対応するエントリを探す。ここで、パケットの重要なフィールド(すなわち、パケットヘッダのフィールド)について計算されたハッシュの値の出力に従って、ネクストホップが決定される。グループテーブル内の、バケットとも呼ばれるエントリの設定が、特定のフロー集合体に用いられる分割比率(すなわち、負荷分散)を規定する。ネットワークの全体的な視点があれば、PCEコントローラは最も適切なTCAM設定でそれぞれのスイッチに指示を与えることができる。これは
図3に示されており、この図には、ノード0が転送テーブルを有するだけでなく、例えば、D1の送信元と宛先との間の途中にあるノード4も転送テーブルを有することが示されている。各ノードにおいて、集約フローD1またはその一部が分割されても、(例えば、集約フローの2つのサブフローを同じネクストホップに転送することにより)再度集約されてもよい。
【0064】
トラフィックは時間と共に徐々に変化するので、ノード内で局部的に観測されるフロー配分は、コントローラで計算される目標配分と異なることがある。この理由から、補正措置が必要となり、現在行っているトラフィック配分を正確に追跡し、負荷分散を調整して、問題のあるフローを適切に処理する。
【0065】
当該技術の水準では、この問題に対して、1)エレファントフローのスケジューリング、および2)利用率を意識した負荷分散という、2種類の解決策が提案されている。エレファントフローのスケジューリングでは、全てのフローにデフォルトのルーティングポリシー(例えば、ECMP)が用いられている。これに加えて、ネットワークコントローラは、古典的なIPFIXパケットまたはフローサンプリング手法を用いる監視システムを活用して、エレファントフローとも呼ばれる最大フロー、上位N個のフロー、またはヘビーヒッター(heavy hitter)のリストを把握する。最大フローのリストが集中型監視システムで確立されると、コントローラは、不均衡問題が起きた場合に、一部の最大フローに対して、具体的なルーティング判断を行うことを決定することができる。ヘビーヒッター(問題の発生源)の識別およびルーティング判断(補正措置)がコントローラで行われるので、この解決策は、短期的なトラフィックばらつきに反応するのが非常に遅い。利用率を意識した負荷分散における趣旨は、全てのフローにルーティングポリシーを用い、これらのルーティングポリシーを実際のフローサイズに合わせるということである。複数の手法を用いて、パケット損失および並べ換え問題が生じることなく、あるパスから別のパスにフローを移動させる。例えば、CONGAが送出パスの輻輳を追跡し、ネットワーク内の輻輳を最小限に抑えるアップリンクポートを選択する。決定がフローレットレベル(デバイスごとに最大64K)で行われ、所定のフローに含まれるパケットの配列に十分な長さのギャップがあるときにはいつでも、フローを複数のフローレットに分割する。LocalFlowがフローのレートを追跡し、ビンパッキング問題を周期的に解決して、フローを分割する。両方の方法でフローごとに個別の決定を行うので、多くの転送ルールをデバイスで管理する必要がある。
【0066】
本発明の実施形態が、一元的に計算されたデフォルトのルーティングポリシーと不均衡問題が起きた場合の局部的なリアルタイムの適応とを利用することにより、2つのアプローチの間に正しいトレードオフを提供することができる。
【0067】
次に、負荷分散の改善が可能な、本開示によるネットワークデバイス100の実施形態を、
図4~
図10に基づいて説明する。
【0068】
図4Aおよび
図4Bは、ネットワークデバイス100を示している。ネットワークデバイス100は、1つまたは複数の転送ルールをストレージ101に格納する。具体的には、ネットワークデバイスは、ネットワークスイッチでも、ルータでも、ゲートウェイでもよい。1つまたは複数の転送ルールに従って、流入データが様々な出力ポート120-1~120-Nに転送される。流入データ151は、フローに関連するパケットでよく、これらのフローはフロー集合体に束ねられてよい。
【0069】
これらのフローは、配分ユニット130によって複数の出力ポートに配分されてよく、同じマイクロフローに関連するデータ(パケット)が同じ出力ポートに転送される。同じ集約フローに関連するデータが、同じ出力ポートに転送されても、異なる出力ポートに配分されてもよい。各出力ポートに転送されるフローまたはフロー集合体の数は、転送ルールにより規定されてよい。2つのポート120-1および120-Nへのフロー配分が、
図4Aに例示的に示されている。ここで、負荷152は負荷153より大きい。ネットワークデバイス100はさらに、各出力ポートの負荷(負荷152および153を含む)を負荷監視ユニット140によって測定するように構成されてよい。一実施形態において、これは、対応する1つまたは複数の出力ポート120-1~120-Nの帯域幅利用率を測定することにより達成されてよい。
【0070】
この例では、出力ポート120-Nの測定負荷が当該出力ポートの所望の負荷と一致しない場合、新たなルールがネットワークデバイスによって確立されてよい。
図4Aに示すように、フロー152はフロー153より大きい。したがって、負荷監視ユニット140は、この不一致を検出し、負荷分散を改善する新たな転送ルールを決定する。負荷分散の結果が、
図4Bに概略的に示されている。入力データ151は、よりバランスのとれた2つの新たなフロー152nおよび153nに分割される。この例では、目標とするバランスのとり方は入力データ151のポート120-1および120-Nへの等価配分であったことが注目される。しかしながら、一般に、所望の負荷分散比率は一様な配分に限定されることはなく、分割比率はフローごとに且つ/またはポートごとに設定されてよい。
【0071】
新たなルールは、ストレージ101に格納されてよい。新たなルールに従って、ポート120-Nに事前に転送されたフローのうちの1つまたは複数が、今では、別の出力ポート、ここでは120-1、または場合によってはポート120-1~120-Nの他のポートにも再配分される。これにより、出力ポートの負荷の配分が、対応する目標負荷により近くなることがある。目標負荷は、全ての出力ポートに対して同じでもよく、出力ポートごとに個別に異なるように規定されてもよい。
【0072】
言い換えれば、複数の出力ポート120-1~120-Nを用いてトラフィックを転送するネットワークデバイス100は一般的に、集約フロー151の複数のフローのパケットを所定のフロー配分に従って複数の出力ポート120-1~120-Nに転送するための第1ルールを含む転送ルールを格納するストレージシステム101を備える。ネットワークデバイスはさらに回路(フロー配分回路130および負荷監視回路140を含む)を備え、この回路は、第1出力ポート120-Nの負荷(例えば、帯域幅利用率に関して測定され得る)が第1出力ポートの目標負荷と一致しない場合に、複数のフローのうちの少なくとも1つを集約フローから除外し、第1出力ポートの負荷と目標負荷との一致を改善するために集約フローの複数のフローのうちの少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより、格納された上記転送ルールを修正し、格納された転送ルールに従ってルーティングを行うように構成される。
【0073】
本開示による一実装例では、測定負荷と目標負荷との間に著しい不均衡がある場合、スイッチ100に含まれる「バケット監視」モジュール(負荷監視)140は、プローブを設置して送出トラフィックをより詳細に解析すると決定することができる。ヘビーヒッターまたはエレファントフローとも呼ばれる最も問題のあるフローを識別するために、転送ネットワークデバイスは、パケットサンプリングもしくはフローサンプリングなどの手法、またはスケッチなどの高度な手法を用いることができる。不均衡の影響の大きさは、例えば、所望の負荷と現在の負荷との偏差または差異などの不均衡度合いで決定されてよい。
【0074】
可能性のあるエレファントフローが識別されると、スイッチは、不均衡問題を解決するために、エレファントフローのルーティングを局部的に調整しようとする(ハッシュベースの分割の場合には、バケット設定が変更されてよい)。これは、
図5Aおよび
図5Bに示すように、測定負荷が目標負荷より著しく大きい出力ポート(例えば、520-N)と関連付けられる最大負荷のフロー(例えば、550-M)を別の出力ポートに関連付けることにより行われてよい。
【0075】
図5Aおよび
図5Bは、具体的には、入力集約フローをネットワークデバイスにより複数の出力ポート520-1~520-Nに配分される複数のフローまたは複数のフロー集合体550-1~550-Mを含むものとして示している点で、それぞれ
図4Aおよび
図4Bと異なる。
図5Aは、2つの最大流入フロー(550-1および550-2)が同じ出力ポート520-Nに転送される一例を示している。この例では、入力フローが最小フロー550-Mから最大フロー550-1まで、上から下に順番に並べられている。この図には全フローが示されているわけではなく、それぞれの流入フローを任意の出力ポートに転送できることが注目される。もっと多くのフローをポート520-Nおよび520-1に転送できることがさらに注目される。この例では、少なくとも2つの大きいフローがポート520-Nに転送されることが示されている。この例では、目標負荷はポートごとに同じでよく、または制限しないが、ポート520-Nの目標負荷は、大きいフロー550-1および550-2により引き起こされる実際の負荷よりはるかに小さいかもしれない。一方、ポート520-1では、実際の負荷は目標負荷より小さいかもしれない。ネットワークデバイスは、出力ポート(この例では、ポート520-N)の実際の負荷と目標負荷との不一致を検出した場合、対応するポートの負荷を解析し、最大フローを識別する。一般に、ネットワークデバイスは、最大フローだけでなく、最大フローのセットも識別できる。この例では、ネットワークデバイスは、550-1を負荷が最も大きいフローとみなし、フロー550-1を異なるポート(この例では520-1)に転送させるルールをストレージ530に追加する。
図5に示すこの例では、出力ポート520-Nおよび520-1の負荷は新たに追加したルールによって吸収されることが注目される。しかしながら、これらの出力ポートの目標負荷は異なることがある。どちらの場合も、新たなルールは、出力ポートの実際の負荷が目標負荷に吸収されるように選択される。
【0076】
言い換えれば、本実装例によるネットワークデバイスでは、回路は、複数の出力ポート520-1~520-Nの負荷を観測し、第1出力ポート520-Nの負荷が第1ポート520-Nの目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポートに転送されたフローの中で負荷が最も大きいフロー550-1を識別し、識別された上記フロー550-1を第2出力ポート520-1に関連付けるように構成される。
【0077】
本開示による別の実装例において、最も問題のあるフローの識別では、フローのサイズを予想するのに予測モデルを用いてよい。それに応じて、ネットワークデバイスは、フローの今後のサイズを予測し、今後の予測負荷と目標負荷とを比較してよい。さらに、ネットワークデバイスは、現在または今後の負荷が別の出力ポートの目標負荷から著しく逸脱している場合、フローを出力ポートの今後の最大負荷と関連付けてよい。
【0078】
予測は、任意の方式で行われてよい。例えば、過去に(1つまたは複数のタイムインスタンスにわたって)測定された負荷の外挿が適用されてよい。しかしながら、いくつかの実装例において、予測は、隣接するルータ/スイッチ(ネットワークノード)または一般的にネットワーク内の任意のルータ/スイッチで、現在および/または事前に測定された負荷を用いて行われてもよい。
【0079】
言い換えれば、本実装例によるネットワークデバイスは、複数の出力ポートの今後の負荷を予測し、第1出力ポートの今後の負荷が第1ポートの目標負荷と一致しない場合には、フロー転送ルールに従って第1出力ポートに転送されるフローの中で今後の負荷が最も大きいフローを識別し、識別された上記フローを第2出力ポートに関連付けるように構成されてよい。
【0080】
しかしながら、本開示は、1つのフローの転送を変更することに限定されない。いくつかの大きいフローが同じ出力ポートに転送され、他のポートの負荷が目標負荷より小さい場合、いくつかの大きいフローを再配分することが必要かもしれない。こうしたフローは、他の1つの出力ポートまたは他のいくつかの出力ポートと関連付けられてよい。
【0081】
図7は、1つの出力ポート750に負荷または予測負荷701で最初に転送される一連のフロー710の一例を示している。この例では、目標負荷702が実際の負荷701より著しく小さい。本開示による一実装例では、負荷701が目標負荷702(以下では目標スループットとも呼ばれる)より著しく大きい出力ポート750において最大負荷のフロー720のセットが識別されてよい。最大フローを有する本セットのフローは以下のやり方で選択されてよい。すなわち、送出パスp(ここでは750)の実際のスループット(この例では701)である
【数1】
および予想される目標スループット(ここでは702)である
【数2】
を把握し、偏差である
【数3】
が最高となるパスが決定される。このパスにおいて
【数4】
である場合、上位N個のフロー(ここでは720)であるF
1>…>F
Nから問題のあるフローのサブセットを求め、
【数5】
となるようなiを求める。
【0082】
言い換えれば、i個の最大フローは、最大(問題のある)フローのサブセット720として選択される。ここで、iは、(問題のあるi個のフローのセットに追加されなかったフローのセット730からの)残りの最大フローが問題のあるi個のフローのサブセットに追加されていたならば、対応する出力ポートの負荷が目標負荷より小さくなるように選択される。次に、問題のあるi個のフローのサブセットは、他の出力ポートに配分されてよい。
【0083】
問題のあるフローのサブセットの複数のフローのそれぞれが異なる出力ポートに転送されてもよく、問題のあるフローのセットの全フローが同じ出力ポートに送出されてもよい。
【0084】
言い換えれば、ネットワークデバイスは、第1出力ポートの測定負荷または予測負荷が第1ポートの目標負荷と一致しない場合には、第1出力ポートに転送された最大フローのセットを識別することであって、本セットに含まれるフローの数は、本セットのフローにもう1つのフローが追加されたならば、本セットのフローの複数のフローの合計データレートが、測定負荷または予測負荷と目標負荷との差異より大きくなるように選択される、識別することと、識別された上記フローを第1出力ポート以外の1つまたは複数の出力ポートに割り当てることとを行うように構成されてよい。
【0085】
別の実装例において、複数のフローは、問題のある最大フローを超えるものを含む一連のフローのサイズを解析し、且つ、例えば、ビンパッキング問題をもっと多くのフローで解決することにより、全ての出力ポートの負荷または予測される今後の負荷の偏差を最小限に抑えるように再配分されてよい。しかしながら、この手法には、より大きな計算能力が必要になり得る。
【0086】
本開示による一実装例において、転送ルールは転送テーブル801に格納される。そのようなテーブルの一例が、
図8に示されている。本実装例によれば、ルール(例えば、822)によって、フローを出力ポートと直接的に関連付けることができる、あるいは1つまたは複数のフローもしくはフロー集合体用のグループテーブルを規定することができる(例えば、821)。このグループテーブルは、対応するフローおよび/またはフロー集合体もしくはサブ集合体用の転送を規定する。どのパケットをどの出力ポート(したがって、どのフロー)に転送すべきかの決定は、パケットヘッダの重要なフィールドに適用されるハッシュ関数の結果に基づいてよい。他の実施形態において、この決定は、同じフローに属するパケットを同じ出力ポートに関連付ける任意のルールに基づいてよい。
【0087】
転送テーブルは、上述したタイプのうちの一方に関する1つまたは複数のルール、あるいは両方のタイプのルールを含んでよい。
図8に示す例において、グループテーブルは、示される全ての出力ポートを指し示している。しかしながら、本開示によるグループテーブルは、利用できる出力ポートの任意のサブセットへの転送も規定されてよい。
【0088】
例示的なパケットヘッダが、
図9に示されている。ここに挙げる重要なフィールドには、例えば、送信元IP(911)、宛先IP(912)、プロトコル913、送信元ポート914、および/または宛先ポート915のうちのいずれかまたは全てが含まれてよい。しかしながら、転送は、異なるパケットヘッダ(したがって、異なるフィールド)を用いる任意の他の種類のプロトコルに適用されてよい。
【0089】
上述した実装例によるネットワークデバイスにおいて、第1ルールおよび第2ルールが転送テーブル801に格納される。転送テーブル801は、入力フローをグループテーブルにリダイレクトするルール、または入力フローを出力ポートと関連付けるルール822のいずれかである転送ルールを格納し、それぞれのハッシュベースのルールは、転送テーブルに含まれる転送ルール821のエントリにより指し示されるグループテーブルにより規定される。
【0090】
1つの実施形態において、グループテーブルは、どのポートにパケットを転送すべきかを、ハッシュ関数の結果に基づいて規定されてよい。このハッシュ関数は、パケットヘッダの所定の部分からハッシュを計算してよい。所定の部分は、パケットヘッダの任意の部分でも、パケットヘッダ全体でもよい。
【0091】
別の実施形態において、グループテーブルは、どのポートにパケットを転送すべきかを加重コストマルチパス(WCMP)によって規定してよい。WCMPを実装するには、ハッシュ計算を利用してもよいが、その必要はない。一般に、グループテーブルは、どのパケットをどの出力ポートに転送すべきかを、パケットヘッダの所定の部分に応じて規定してよい。
【0092】
一実施形態によれば、転送ルールは三値連想メモリに格納される。言い換えれば、本実施形態による一実装例において、転送テーブルおよびグループテーブルは、格納された転送ルールによる転送の迅速な実行を可能にし得る三値連想メモリ(TCAM)に格納される。
【0093】
本開示によるネットワークデバイスは、TCAMを用いる効率を改善することができる。グループテーブルは、複数の出力ポートにわたってフローを疑似統計的に配分するルールが十分である場合に用いることができ、問題のあるフローを、例えば、その負荷が全フローの平均負荷から著しく逸脱している場合に、識別して個別に転送することができる。
【0094】
例えばこれは、出力ポートの目標負荷の比率に従って、各出力ポートにフローの数を疑似統計的に割り当てることにより、複数のフローが複数の出力ポートに配分される場合に重要になり得る。全フローが同じサイズだった場合、または各出力ポートに割り当てられるフローの数がフローのサイズの統計変動を抑制するのに十分大きかった場合、各出力ポートの実際の負荷は目標フローと一致するであろう。しかしながら、現実には、いくつかのフローの負荷は平均フロー負荷より著しく大きい。
【0095】
そのような場合、本開示によるネットワークデバイスでは、問題のあるフローを抽出し、こうしたフローを別々に転送することができる。そうすることで、本ネットワークデバイスは輻輳を解決することができ、別のネットワークエンティティからの命令を待つ必要はなく、またフローごとに個々のルールを確立する必要はない。
【0096】
本開示による一実装例では、新たなルールを局部的に確立する場合、転送ネットワークデバイスは個々のルールを転送テーブルに追加する。この個々のルールでは、どの出力ポートに対応するフローを転送すべきかを直接的に指定する。言い換えれば、第2出力ポートへのフローの割り当てにおいて、第2転送ルールは転送テーブルに追加される。一方、転送ネットワークデバイスは、グループテーブルも追加または変更することがある。
【0097】
本開示による一実装例において、ネットワークデバイスは、ネットワークコントローラへのインタフェース150を備える。ネットワークコントローラは、ネットワークに関する情報を収集し且つネットワークトラフィックを転送する全てのネットワークデバイスまたはその一部と通信することができるSDNコントローラまたはPCEのような中央コントローラでよい。
【0098】
インタフェース150を介して、ネットワークデバイスは、例えば、ネットワークコントローラから転送ルールを受信することができる。これらは、単一フロー用の個々のルール(フローを出力ポートと直接的に関連付けるルール)でも、グループテーブルに基づくルールでも、その両方でもよい。さらに、ネットワークデバイスは、出力ポート間の流入フローに対する目標分割比率、または対応する目標負荷を受信することができる。さらに、ネットワークデバイスは、各出力ポートの目標負荷を目標分割比率から計算することも、またはその逆でも計算することが可能である。
【0099】
例えば、中央コントローラは、大きい負荷のフローを認識している場合、輻輳を避けるために、こうした大きいフローに対する個々の転送ルールを転送ネットワークデバイスに設定することができる。さらに、中央コントローラは、目標分割比率を含む初期セットのルールを提供し、ネットワークを修正する場合にはそのルールを更新することができる。転送ネットワークデバイスは、目標分割比率からの著しい偏差がある場合、転送ルール(例えば、フローに対する個々の出力ポートを規定するルール)を局部的に修正することがある。
【0100】
言い換えれば、上述した実装例によるネットワーキングデバイスは、コントローラ(例えば、SDNコントローラまたはPCE)へのインタフェース150を備え、その回路は、上記インタフェースを介して、目標分割比率を受信し、複数の出力ポートに対して、それぞれの目標負荷および/または上記転送ルールを指定するように構成される。
【0101】
インタフェースは、例えば、フローのサイズまたはフローの今後のサイズに関する情報のようなさらなる情報を交換するのにも用いられてよく、こうした情報は、ネットワークデバイスが新たな最適転送ルールを局部的に求めるのに、または中央コントローラが他のネットワークデバイスに転送するのに用いられてよい。
【0102】
一実施形態によれば、ネットワークデバイスはインタフェース150を介してコントローラに要求を送出してよい。これが有益になり得るのは、例えば、独自の転送テーブルにルールを追加しても、またはその転送テーブルに含まれるルールを変更しても、ネットワークデバイスが出力ポートの目標負荷からの著しい偏差を解決できない場合である。具体的には、偏差を局部的に解決できない場合、ネットワークデバイスはコントローラに負荷分散の全面的な再設定を要求することができる。
【0103】
図6は、スイッチ(任意の転送ネットワークデバイスでよい)のアーキテクチャと、様々な構成要素が正確な負荷分散の問題を解決するためにどのようにやり取りするかを示している。負荷分散は、論理的に2つの部分に分割され得る。一方はスイッチ内部で局部的に実施され、他方は、ネットワークの全面的な再最適化のために、スイッチと集中型コントローラとのやり取りを必要とする。
【0104】
最初に、ネットワークデバイスは中央コントローラからルールのセットを受信してよい。あるいは、ネットワークデバイスは、目標分割比率そのもの(例えば、全ての出力ポートに対して等しい重み)を選択してもよい。
【0105】
最初は、スイッチノード(転送ネットワークデバイス)が、集中型コントローラにより割り当てられた最初の目標レートから逸脱しているフロー集合体があるかどうかを検出するために、送出ポートのトラフィックを監視する。著しい不均衡がある場合、スイッチ内の「バケット監視」モジュールは、プローブを設置して送出トラフィックをより詳細に解析すると決定することができる。ヘビーヒッターとも呼ばれる最も問題のあるフローを識別するために、スイッチは、パケットサンプリングもしくはフローサンプリングなどの標準的な手法、または「ヘビーヒッター検出モジュール」内のスケッチなどの高度な手法を用いることができる。
【0106】
最も問題のあるフローの識別では、予測モデルを用いてフローのサイズを予想してよいことに留意されたい。可能性のあるエレファントフローが識別されると、スイッチは、不均衡問題を解決するために、こうしたフローのルーティング(例えば、ハッシュベースの分割の場合にはバケット設定)を局部的に調整しようとする。スイッチは、この問題を解決できない場合、コントローラに支援を要求することができる。コントローラが新たなルーティング設定を決定すると、スイッチはコントローラから新たな目標分割比率(または新たな転送ルール)を受信し、負荷分散を局部的に更新する。
【0107】
他の既存の集中化手法と比較すると、提案した考えは、トラフィック変動に対する迅速な反応を可能にし、変動するトラフィック状態に適応するのに必要な時間を著しく短縮することができる。
【0108】
配分手法と比較すると、提案した考えは、局部的に対処しただけでは解決できない可能性がある著しいトラフィック不均衡を補償するために、集中型コントローラの支援を活用することができる。
【0109】
提供される主な利点は、ほとんどの場合において調整を局部的に行うことができるのと同時に、メモリ使用量(三値連想メモリ(TCAM)を用いてよい)を非常に低く抑えることができる、つまり、問題のあるフローに用いるのはいくつかの特定のルールであるということである。
【0110】
言い換えれば、上述した実施形態による転送ネットワークデバイスは、上記インタフェースを介して要求をコントローラに送信し、ネットワークデバイスに1つまたは複数の新たな転送ルールまたは更新された転送ルールを提供するようコントローラに要求するように構成される。
【0111】
本開示による一実装例において、集中型コントローラによるサポートを要求するためにネットワークデバイスによりトリガされる支援メッセージは、2つの部分で構成されてよい。すなわち、現在の不均衡およびリソース状況に関してコントローラに通知する第1の必須部分と、スイッチからコントローラへの要求を引き起こした問題に関するもっと多くの情報を含む第2の任意選択部分である。必須部分は、不均衡問題の通知およびスイッチにおける現在のTCAM利用率を含んでよい。
【0112】
任意選択部分は、各出力ポートの目標負荷からの偏差、各ポートの目標からの偏差(これは、いくつかの実施形態において、各トンネル(MPLSトンネルでよい)の目標負荷に対応してよい)、および問題のあるヘビーヒッターのリスト(フローレベルの情報)のうちのいずれかを含んでよい。
【0113】
この情報は、中央ネットワークコントローラがネットワーク設定のより優れた解決策を求めるのに有益になり得る。例えば、ネットワークデバイスのTCAM利用率を把握することは、対応するネットワークデバイスへの過剰な個々のルールの追加を避けるのに用いられてよい。
【0114】
一実施形態において、転送ルールの修正は、出力ポートの目標負荷からの測定負荷または予測負荷の偏差を最小限に抑えるように選択される。
【0115】
集中型アルゴリズムによる新たな分割配分の計算に関する一例が、
図11に示されている。
【0116】
第1段階(1101)では、リンク容量が係数αで縮小される。これにより、100%のリンク利用率が防止され、ラウンディング(rounding)の余地が確保される。様々な値のαが、並行してテストされてよい。
【0117】
第2段階(1102)では、緩和多品種フローが緩和される(すなわち、列生成法を用いる)。バケットの制約条件が取り除かれ、整数変数が緩和され、LP(線形計画法)が解かれる。
【0118】
第3段階(1103)では、相応の適正な量のバケットバジェットが、各送信元ノードにおいて(サイズに従って)各要求に割り当てられる。
【0119】
第4段階(1104)では、分数解をランダムに切り上げて、誤差を最小限に抑える実現可能なバケット設定を求める。
【0120】
第5段階(1105)では、なおも要求が割り当てられ得る場合、上記段階が繰り返される。
【0121】
言い換えれば、上述した実装例によるネットワークデバイスにおいて、要求には、第1出力ポートの測定負荷または予測負荷が第1ポートの目標負荷と一致しないという通知、TCAM利用率および/または局部的に追加されたルールの数に関する情報、各ポートの目標負荷からの偏差に関する情報、およびネットワークデバイスが第1ポート以外の別のポートと関連付けたフローのリストのうちの少なくとも1つが含まれる。
【0122】
本開示による一実装例において、転送ルールの修正は、出力ポートの目標負荷からの測定負荷または予測負荷の偏差を最小限に抑えるように選択される。これが意味し得ることは、転送ネットワークデバイスは、目標負荷からの負荷の偏差を最小限に抑えるようにフローを再配分するということである。1つの実施形態において、負荷偏差は、最大フローの再配分のみの範囲内で最小限に抑えられる。しかしながら、他の実施形態では、もっと多くのフローが再配分されてよい。さらに、中央コントローラは、局部的に解決できない負荷偏差を最小限に抑えるように、1つまたは複数のネットワークデバイスの転送ルールを変更する。中央コントローラは、負荷偏差が発生するネットワークデバイスとは異なるネットワークデバイスの転送ルールも修正してよいことに留意されたい。
【0123】
本開示による一実施形態では、目標負荷からの測定負荷または予測負荷の著しい偏差を解決するために転送テーブルを修正する場合、ネットワークデバイスは、最も高い負荷を有するとみなされた1つまたは複数のフローを除去した後に、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムを用いる。
【0124】
具体的には、各送出ポートにどの程度の容量が残っているかをネットワークデバイスが把握している場合(問題のあるフローがほとんど取り除かれていると)、VSBPPを解いて、予想される目標スループット
【数6】
に対する偏差を最小限に抑えることができる。この問題はNP困難であるが、いくつかの近似アルゴリズムが利用できる。言い換えれば、本実施形態によるネットワークデバイスでは、出力ポートの測定負荷または予測負荷と目標負荷との一致を改善するために、サイズ可変ビンパッキング問題(VSBPP)アルゴリズムが、最も高い負荷を有するとみなされたフローを除去した後に用いられる。
【0125】
ビンパッキングアルゴリズムは、最も高い負荷を有するとみなされた本セットのフローに対する最適解を求めようとすることができる。あるいは、このアルゴリズムは、ビンパッキング問題の変数としてもっと多くのフローを含んでよい。これにより、目標負荷からの負荷の偏差がより小さくなり得るが、より大きな計算能力も必要になり得る。
【0126】
本開示による一実施形態において、ネットワークデバイスは、ネットワーク制御ノードから受信した転送ルールから、ポートごとに所望の目標負荷を決定することができる。転送ルールによって複数のフローが出力ポートに、場合によっては別々の重みを用いて、疑似統計的に配分される場合、こうした重みは、それぞれの出力ポートの目標負荷を決定するのに用いられてよい。言い換えれば、例えば、転送ルールがネットワークコントローラによってネットワークデバイスに提供された場合、ネットワークデバイスは、さらに目標負荷を受信する必要もなく、出力ポートの目標負荷を計算することができる。反対に、ネットワークデバイスは、その出力ポートの目標負荷を受信するだけで、目標負荷から転送ルールを決定することがある。
【0127】
本開示による一実装例では、複数のフローがサブ集約フローに集約されてよく、これらのフローおよびサブ集約フローはさらに、フローおよび/またはサブ集約フローを含み得る集約フローに集約されてよい。新たなルールが転送ネットワークデバイスのルールのセットに追加されると(これらのルールはネットワークデバイス自体によって、または中央コントローラによって変更されてよい)、集約フロー並びにサブ集約フローおよびフローの転送を変更することができる。集約フローは(フローのサブ集約フローに)分割され、いくつかの送出パスに配分されてよいことがさらに注目される。同様に、フローおよびサブ集約フローは併合されてよい。これは、初期の転送ルールおよび修正された転送ルールによって引き起こされてよい。ルールが変更されると、その結果として、フローおよび集約フローの分割および併合は変更されてよい。
【0128】
言い換えれば、上述した実装例によるネットワークデバイスは、集約フローの複数のサブ集約フローのパケットを転送するためのルールを含む転送ルールを格納し、第1出力ポートの測定負荷または予測負荷が第1ポートの目標負荷と一致しない場合には、サブ集約フローのうちの少なくとも1つを集約フローから除外し、第1出力ポートの目標負荷と負荷との一致を改善するために集約フローの複数のサブ集約フローのうちの少なくとも1つ(例えば、ハッシュルール(または一般的に第1ルール)に従って第1ポートに割り当てられたフロー)を第2出力ポートと関連付ける第2ルールを確立することにより、格納された上記転送ルールを修正する。
【0129】
一実施形態による一実装例において、ネットワークデバイスは、ヘッダエントリの送信元IP、宛先IP、プロトコル、送信元ポート、宛先ポートのうちの少なくとも1つに関するハッシュの計算結果に応じてパケットを転送する、且つ/または入力フローを出力ポートと関連付ける転送ルールおよび/もしくは入力フローを出力ポートと関連付ける転送ルールは、上記ヘッダエントリのうちの少なくとも1つにより入力フローを識別する。
【0130】
これらのヘッダエントリは、TCP/IPヘッダまたはUDP/IPヘッダのエントリでも、任意の他の種類のヘッダのエントリでもよい。
【0131】
集約フローは、ヘッダエントリのうちの1つまたは2つのみに応じて転送されてよく、サブ集約フローは、集約フローに用いられるよりも多くのヘッダエントリに応じて転送されてよく、フローはサブ集約フローに用いられるよりも多くのエントリに応じて転送されてよい。あらゆる種類の転送において、例えば、フローまたは集約フロー用の特定の転送ルールが規定された場合に、ネットワークデバイスが同じ仕組みをフローおよび集約フローに用いることができる。特定の転送ルールでは、フローまたは集約フローを特定の出力ポートに直接的に転送する。
【0132】
図10は、本開示によるネットワークデバイスを用いることができる例示的なネットワークを示している。ホストAおよびホストBは、ローカルエリアネットワークの一部である。この例において、ホストAおよびホストBを含むローカルエリアネットワークは、ルータAを含むエンタープライズサイトAの一部でもある。エンタープライズサイトAは、ワイドエリアネットワークを介して、ここでもローカルエリアネットワークを含むエンタープライズサイトBの一部であるルータBと接続される。この例では、MPLSトンネルが、フローをサイトAからサイトBに移動させるのに用いられる(このフローは集約フローとも呼ばれることがある)。サイトAからサイトBへのフローまたは集約フローは、任意の数のサブフローで構成されてよい。この例ではワイドエリアネットワークの一部であるネットワークデバイスが、本開示で説明した負荷分散を行うことができる。
【0133】
図12は、本開示による、負荷配分を最適化する方法の一例を示している。本開示による、複数の出力ポートを有するネットワークデバイスにおいてトラフィックを転送する方法の一実装例では、集約フローの複数のフローのパケットを所定のフロー配分に従って複数の出力ポートに転送するための第1ルールを含む転送ルールが格納され、第1出力ポートの負荷が第1ポートの目標負荷と一致しない場合には、集約フローから複数のフローのうちの少なくとも1つが除外され、格納された上記転送ルールは、第1出力ポートの目標負荷と負荷との一致を改善するために集約フローの複数のフローのうちの少なくとも1つを第2出力ポートと関連付ける第2ルールを確立することにより修正され、格納された転送ルールに従ってルーティングが行われる。
【0134】
具体的には、第1出力ポートの負荷が第1ポートの目標負荷と一致しないかどうかを検出するために、送出ポート利用率が監視されてよい(
図12のS1)。これは、各送出パスpの実際のスループット
【数7】
を測定し、それを(コントローラにより決定される)予想スループット
【数8】
と比較することにより行われてよい。どの新たなルールを確立すべきかを決定するために、トラフィックは問題のある送出ポートの内部で解析されてよい(
図12のS2を参照)。
【数9】
である場合、プローブを関連ポートに設置して、ヘビーヒッターを識別してよい。パケットサンプリングもしくはフローサンプリングのような標準的な手法、またはスケッチのような高度な手法が用いられてよい。
図12のS3に示すように、問題のあるヘビーヒッター(大きいフロー)を識別するために、上位N個のフローまたは最大フローを解析して、どのフローを別個に負荷分散する必要があるかを識別する。さらに、トラフィック予測が、複数のフローの予想される今後のサイズに基づいて複数のフローを選択するのに用いられてよい。より一般的には、問題のあるフローのサブセットが識別される。S4は、問題のあるフロー用の転送の調整を示している。問題のあるフローのネクストホップが局部的に計算されてよく、ビンパッキングアルゴリズムがこの計算に用いられてよい。必要であれば、コントローラに支援を要求してもよい(
図12のS5)。具体的には、不均衡問題を局部的に解決できない場合、ネットワークを全面的に設定すること(全面的な調整のトリガ)をコントローラに要求してよい。一般に、本方法は、第1段階S1に戻り、各段階を繰り返すことを含んでよい。
【0135】
本開示によるデバイスおよび方法は、実際のトラフィック状態に負荷分散を適応させることによる、不均衡問題の解決策を提案する。この解決策の主な特性とは、適応が、1)局部的に優先され、必要な場合にはコントローラまで行われることと、2)限られた追加ルールのセットが転送テーブルに用いられるように、問題のあるフロー(不均衡問題の原因となっているフロー)を重視するということであってよい。
【0136】
本開示では、正確な負荷分散を目的とした方法および装置が提供される。この負荷分散では、配分が最初の計画目標から逸脱したエレファントフローなどの、不均衡問題の原因を局部的に識別し、フローの分割を調整することにより問題のあるフローの転送を局部的に調整し、転送ルールの再割り当てを行い、目標配分を満たすことができない場合には集中型コントローラの支援を要求してよい。
【0137】
言い換えれば、本開示は、スイッチ(転送ネットワークデバイス)が送出ポートのトラフィックを常に観測して偏差問題を検出するという点で、不均衡問題の原因を局部的に識別する方法を提供する。偏差に関する場合では、スイッチは、各ポートに対してトラフィック解析を行い、問題のあるフロー(通常、上位N個またはヘビーヒッターと呼ばれる最大のフロー)を識別することができる。次いでスイッチは、問題のあるフローの転送を局部的に調整する。そうするために、スイッチは、問題のあるフローを抽出し、それらのフローを別々に転送することができる。次いで、小さいビンパッキング問題が局部的に解決されてよい。偏差を局部的に解決できない場合、スイッチは負荷分散の全面的な(ネットワーク規模になり得る)再設定をコントローラに要求することができる。
【0138】
まとめると、本開示は、トラフィック転送ネットワークデバイス向けのデバイスおよび方法に関し、実際のトラフィック状態に負荷分散を適応させることによる、不均衡問題の解決策を提案する。ネットワークデバイスは、問題のあるフローのトラフィックを再調整することにより、局部的に不均衡問題を解決しようとし、この問題を局部的に解決できない場合には、不均衡問題を解決するために、ネットワークの再設定を中央ネットワークコントローラに通知する。