(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-20
(45)【発行日】2024-02-29
(54)【発明の名称】転送装置、転送システム、および転送プログラム
(51)【国際特許分類】
H04L 47/00 20220101AFI20240221BHJP
H04L 12/46 20060101ALI20240221BHJP
H04L 12/28 20060101ALI20240221BHJP
【FI】
H04L47/00
H04L12/46 D
H04L12/28
(21)【出願番号】P 2019192048
(22)【出願日】2019-10-21
【審査請求日】2022-08-18
(73)【特許権者】
【識別番号】504411166
【氏名又は名称】アラクサラネットワークス株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】山手 圭一郎
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2004-048450(JP,A)
【文献】特開2005-210606(JP,A)
【文献】特開2001-326688(JP,A)
【文献】米国特許出願公開第2011/0051604(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/00
H04L 12/46
H04L 12/28
(57)【特許請求の範囲】
【請求項1】
データを転送する転送装置であって、
前記データを入力順に蓄積し前記入力順に出力可能な保持部と、
前記保持部に蓄積されたデータを廃棄するデータ量である廃棄キュー長が大きいほど帯域が小さくなるように前記廃棄キュー長と前記帯域とを対応付けた対応情報を記憶する記憶部と、
前記保持部への入力対象データに記録されている記録帯域に応じて特定の廃棄キュー長を前記対応情報から特定し、前記特定の廃棄キュー長と、前記保持部に滞留しているデータ量である滞留キュー長と、に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定し、前記滞留キュー長が前記特定の廃棄キュー長以上である場合、前記入力対象データを廃棄する入力判定部と、
を有することを特徴とする転送装置。
【請求項2】
請求項1に記載の転送装置であって、
前記入力判定部は、前記記録帯域よりも大きい帯域に対応する廃棄キュー長を前記特定の廃棄キュー長として特定する、
ことを特徴とする転送装置。
【請求項3】
請求項2に記載の転送装置であって、
前記入力判定部は、前記記録帯域よりも大きい帯域の中で最小の帯域に対応する廃棄キュー長を前記特定の廃棄キュー長として特定する、
ことを特徴とする転送装置。
【請求項4】
請求項1に記載の転送装置であって、
前記入力判定部は、前記滞留キュー長が前記特定の廃棄キュー長がよりも小さい場合、前記入力対象データを前記保持部に入力する、
ことを特徴とする転送装置。
【請求項5】
請求項1に記載の転送装置であって、
回線に接続され、前記滞留キュー長の合計帯域が前記回線の残存帯域よりも小さい場合、前記保持部に蓄積されたデータを前記入力順に前記回線に送信する送信部と、
を有することを特徴とする転送装置。
【請求項6】
データを転送する転送装置であって、
前記データを入力順に蓄積し前記入力順に出力可能な保持部と、
データ廃棄を必ず行うデータ量である廃棄確定キュー長と、ランダムなデータ廃棄を行うデータ量であるランダム廃棄キュー長と、前記保持部への入力対象データの廃棄確率と、帯域と、を対応付けた対応情報を記憶する記憶部と、
前記入力対象データに記録されている記録帯域に応じて特定の廃棄確定キュー長、特定のランダム廃棄キュー長、および特定の廃棄確率を前記対応情報から特定し、前記特定の廃棄確定キュー長、前記特定のランダム廃棄キュー長、および前記特定の廃棄確率と、前記保持部からの滞留キュー長と、に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定し、前記滞留キュー長が前記特定の廃棄
確定キュー長以上である場合、前記入力対象データを廃棄する入力判定部と、
を有することを特徴とする転送装置。
【請求項7】
請求項6に記載の転送装置であって、
前記入力判定部は、前記記録帯域よりも大きい帯域に対応する廃棄キュー長を前記特定の廃棄
確定キュー長として特定し、前記特定の廃棄
確定キュー長に対応するランダム廃棄キュー長を前記特定のランダム廃棄キュー長として特定し、前記特定の廃棄
確定キュー長に対応する廃棄確率を前記特定の廃棄確率として特定する、
ことを特徴とする転送装置。
【請求項8】
請求項7に記載の転送装置であって、
前記入力判定部は、前記記録帯域よりも大きい帯域の中で最小の帯域に対応する廃棄キュー長を前記特定の廃棄
確定キュー長として特定する、
ことを特徴とする転送装置。
【請求項9】
請求項6に記載の転送装置であって、
前記入力判定部は、前記滞留キュー長が前記特定のランダム廃棄キュー長よりも小さい場合、前記入力対象データを前記保持部に入力する、
ことを特徴とする転送装置。
【請求項10】
請求項6に記載の転送装置であって、
前記入力判定部は、前記対応情報において前記特定のランダム廃棄キュー長が前記特定のランダム廃棄キュー長未満に設定されている場合で、かつ、前記滞留キュー長が前記特定のランダム廃棄キュー長以上で、かつ、前記特定の廃棄
確定キュー長よりも小さい場合、前記特定の廃棄確率に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定する、
ことを特徴とする転送装置。
【請求項11】
データを転送する転送装置であって、
帯域別に設けられ、該当する帯域のデータを入力順に蓄積し前記入力順に出力可能な複数の保持部と、
前記複数の保持部の各々の識別情報と前記識別情報ごとに異なる帯域とを対応付けた対応情報を記憶する記憶部と、
入力対象データに記録されている記録帯域よりも大きい帯域の中で最小の帯域に応じた特定の識別情報を前記対応情報から特定し、前記複数の保持部のうち前記特定の識別情報によって特定される特定の保持部に前記入力対象データを入力し、前記特定の保持部に前記入力対象データを入力できない場合は前記入力対象データを廃棄する入力判定部と、
回線に接続され、前記複数の保持部のうち前記帯域が小さい保持部のデータから順次前記回線に送信する送信部と、
を有することを特徴とする転送装置。
【請求項12】
第1転送装置と、前記第1転送装置と通信可能に接続される第2転送装置と、を有する転送システムであって、
前記第1転送装置は、
複数の通信装置の各々と通信可能に接続される複数の通信部と、
フローを特定するフロー特定情報と前記フローごとに異なる帯域計測番号とを対応付けた第1対応情報と、前記帯域計測番号ごとに帯域が加算される帯域情報と、を記憶する第1記憶部と、
前記第1対応情報を参照して、前記複数の通信部のいずれかからの判定対象データに含まれているフロー特定情報に基づいて、前記判定対象データの帯域計測番号を特定し、前記帯域情報において前記判定対象データの帯域計測番号に対応する帯域に、前記判定対象データのサイズを加算し、前記サイズが加算された加算後の帯域を前記判定対象データに記録するフロー判定部と、
前記フロー判定部によってフローが判定された前記判定対象データの宛先アドレスに基づいて、前記複数の通信装置のうち前記宛先アドレスで特定される前記第2転送装置(コア)に接続される特定の通信部を決定する転送先決定部と、を有し、
前記第2転送装置は、
前記第1転送装置からのデータを入力順に蓄積し前記入力順に出力可能な保持部と、
前記保持部に蓄積されたデータを廃棄するデータ量である廃棄キュー長が大きいほど帯域が小さくなるように前記廃棄キュー長と前記帯域とを対応付けた第2対応情報を記憶する第2記憶部と、
前記第1転送装置からの前記保持部への入力対象データに記録されている記録帯域に応じて特定の廃棄キュー長を前記第2対応情報から特定し、前記特定の廃棄キュー長と、前記保持部に滞留しているデータ量である滞留キュー長と、に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定し、前記滞留キュー長が前記特定の廃棄キュー長以上である場合、前記入力対象データを廃棄する入力判定部と、
を有することを特徴とする転送システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを転送する転送装置、転送システム、および転送プログラムに関する。
【背景技術】
【0002】
インターネットが普及したことにより、サーバーやサービスの仮想化技術が進化している。これにより、ユーザーである組織が個別にサーバーを購入および管理するよりも、データセンターからサーバーやサービスをレンタルし、インターネット経由で利用する方が、費用、稼働率などの品質およびサーバー増強などのスケーラビリティーなど多くの面において優位となっている。この結果、データセンターが収容するサーバーの台数も増え続けている。あわせて、データセンターのネットワークではトラフィックも常時増加している。
【0003】
データセンター運用者は、トラフィックの増加に対して、将来のトラフィック量を予想し、事前に回線やネットワーク転送装置(以降「スイッチ」と呼ぶ)を増強する。これにより、トラフィックがネットワークの帯域を越えないよう管理される。しかし、データセンターでは、一般的には、全サーバーが最大性能でパケットを送信した場合の帯域が、データセンターネットワークに用意されていない。このため、サーバーが予測を越えたトラフィックを送信した場合、トラフィックが回線の帯域を越えるので、トラフィックの一部が廃棄される。
【0004】
トラフィックがネットワークの帯域を越えた場合の回線帯域の使用方法として、公平制御という方法がある。公平制御を実現する方法としては、たとえばフェアキューを使用する方法がある。この方法は、各スイッチにおいて回線へ送信するトラフィックを個別のフローに分離し、フロー個別にキューを用意して該当フローのパケットを対応するキューに滞留させ、ラウンドロビンで各キューからパケットを引き抜いて送信する。これにより、トラフィックの合計帯域が回線帯域を越える場合には、帯域の大きなフローのトラフィックを廃棄する。したがって、フロー間の公平性が実現される。フェアキューを利用して公平制御を実現する方法の一例は、特許文献1に開示されている。
【0005】
特許文献1の公平アクセスネットワークシステムは、論理的に多重化されたVLANの数に従って各VLANにそれぞれ対応するキューを作成し、受信したパケットの宛先IPアドレスに基づき、このパケットを送信する場合に所属するVLANのキューにこのパケットのデータを振り分け、次に複数のキューにそれぞれ振り分けられたパケットのデータを各キューから所定の順序で送出する。
【0006】
さらに、非特許文献1に提示されているRandom Early Detection(以降、「ランダム初期検出」と呼ぶ)を使用して公平制御を実現する場合、フェアキュー等によりフロー個別の帯域またはパケットの滞留状態を把握し、帯域が大きなフローを狙ってランダム初期検出によるパケット検出および廃棄をする。これにより、ランダム初期検出を動作させつつフロー間の公平性を向上することができる。
【0007】
また、トラフィックがネットワークの帯域を越えた場合の回線帯域の使用方法として、非特許文献2に紹介されているTwo Rate Three Markerという方法がある。この方法は、たとえば、送信元であるサーバーごとに保証帯域(Committed Information Rate(CIR))とピーク帯域(Peak Information Rate(PIR))とを設定し、保証帯域以下のトラフィック、保証帯域以上ピーク帯域以下のトラフィック、およびピーク帯域を越えるトラフィックの3種類にトラフィック内のパケットを分別して各パケットのDSフィールドに記録する。
【0008】
そして、この方法は、データセンターネットワークの入り口であるエッジスイッチでサーバー個別に保証帯域とピーク帯域を設定してTwo Rate Three Markerにしたがってパケットに3種類の種別を記録する。これにより、ネットワーク内の輻輳ポイントにおいてこの3種類を区別して保証帯域以下のパケットを最優先、保証帯域以上ピーク帯域以下のパケットを次善優先として扱う。したがって、トラフィック間の公平性が実現される。
【先行技術文献】
【特許文献】
【0009】
【非特許文献】
【0010】
【文献】Floyd, S., and Jacobson, V “Random Early Detection gateways for Congestion Avoidance”,IEEE/ACM Transactions on Networking, V.1 N.4, August 1993,
【文献】“A Two Rate Three Color Marker”, RFC 2698, September 1999.
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、フェアキューを使うためには、少なくともフローと同じ数のキューが必要であり、各キューに少なくとも1パケット分のパケットバッファーが必要である。データセンターが収容するサーバーの台数が増えるとフローの数も増加するので、スイッチに大量のキューとバッファー用メモリが必要となる。したがって、データセンター向けに公平制御を実現したスイッチは高価となる。さらに、スイッチのキューの数に上限がある場合、収容サーバーの増加に伴うフローの増加により、スイッチの公平制御機能が使用できなくなる可能性がある。
【0012】
図20は、データセンターのネットワーク構成例を示す説明図である。ここで、
図20を用いて、フェアキューを使用した場合のコアスイッチに必要なキューの数を説明する。
図20に示すデータセンターには、
図20から省略されている装置を含めて1000台のサーバーS1~S1000がある。サーバーS1~S1000を区別しない場合は、単に、サーバーSと表記する。
【0013】
これらサーバーS1~S1000をネットワークに接続するために、
図20から省略されている装置を含めて100台のエッジスイッチE1~E100がある。エッジスイッチE1~E100を区別しない場合は、単に、エッジスイッチEと表記する。S1からS10までの10台のサーバーは、エッジスイッチE1に接続している。同様に
図20から省略されている装置および回線を含めてS11~S1000までの990台のサーバーも、それぞれ10台ずつ、対応するE2~E100までの99台のエッジスイッチに接続している。
【0014】
これら100台のエッジスイッチE1~E100を接続するために、
図20から省略されている装置を含めて10台のコアスイッチC11~C20がある。E1からE10までの10台のエッジスイッチはコアスイッチC11に接続している。同様に
図20から省略されている装置および回線を含めてE2~E100までの99台のエッジスイッチも、それぞれ10台ずつ、対応するC12~C20までの9台のコアスイッチに接続している。
【0015】
さらにこれら10台のコアスイッチC11~C20を接続するために、1台のコアスイッチC1がある。10台のコアスイッチC11~C20はコアスイッチC1と接続している。コアスイッチC1~C20を区別しない場合は、単に、コアスイッチCと表記する。
【0016】
図20のサーバーSとエッジスイッチEとの間、エッジスイッチEとコアスイッチCとの間、コアスイッチC同士の間を接続する回線の帯域は、すべて10[Gbit/s]であると仮定する。
【0017】
ここで、S1からS100までの100台のサーバーがそれぞれ、S901からS1000の100台のサーバーのどれかへ、100[Mbit/s]でトラフィックを送信していると仮定する(合計10[Gbit/s]のトラフィック)。また、S101からS900までの800台のサーバーも、S901からS1000の100台のサーバーのどれかへ、10[Mbit/s]でトラフィックを送信していると仮定する(合計8[Gbit/s]のトラフィック)。
【0018】
この仮定したトラフィックはすべて、コアスイッチC1からコアスイッチC20への回線2000を通過する。この回線2000は10[Gbit/s]であるが、サーバーS1~S900までのトラフィックの合計は18[Gbit/s]なので、8[Gbit/s]超過している。送信元サーバーS1~S900別に公平制御を目標とする場合、サーバーS1~S100が送信する100[Mbit/s]のトラフィックをそれぞれ80[Mbit/s]廃棄して各々20[Mbit/s]とし、合計10[Gbit/s]とするのが適切である。
【0019】
フェアキューを使用した場合、コアスイッチC1のコアスイッチC20への回線が接続しているインターフェースにおいて、通過するトラフィックの900台のサーバーS1~S900それぞれ個別のキューの各々から、フェアキューにしたがって、パケットがある限りラウンドロビンでパケットを引き抜いて送信される。たとえば、900台のサーバーS1~S900に対応する900本のキューから10[Mbit/s]のトラフィックが送信される(合計9[Gbit/s]のトラフィック)。残った1[Gbit/s]の帯域に対して10[Mbit/s]では送信しきれないS1からS100までのサーバーに対応する100本のキューから、追加で[10Mbit/s]のトラフィックが送信される(合計1[Gbit/s]のトラフィック)。これにより、公平制御される。
【0020】
しかし、フェアキューを実現するために、コアスイッチC1に900本のキューが必要である。この数はデータセンターにあるサーバーの数とほぼ同等である。このため、データセンターに収容するサーバーの台数が増加すると必要なキューの数も増える。この結果、コアスイッチCのキュー数でデータセンターの規模が制限されてしまう。
【0021】
また、非特許文献2のTwo Rate Three Markerを使用する場合、エッジスイッチE1~E100の各々が接続している10台のサーバーが送信したトラフィックをエッジスイッチE1~E100の各々が識別し、各サーバーについてピーク帯域として20[Mbit/s]を設定してTwo Rate Three Markerを動作させてDSフィールドに記録する。
【0022】
コアスイッチC1のコアスイッチC20への回線が接続しているインターフェースにおいてDSフィールドの値に応じてパケット送信キューを変更すると、サーバーS1~S100が送信したトラフィックのうち20[Mbit/s]分のパケット(合計2[Gbit/s]のトラフィック)とサーバーS101~S900が送信したトラフィックの10[Mbit/s]分のパケット(合計9[Gbit/s]のトラフィック)とが送信される。これにより、公平制御される。
【0023】
しかし、適切な公平制御のための送信元サーバーSあたりのトラフィックの帯域上限は、状況により変化する。上記例の場合は、ピーク帯域を20[Mbit/s]に制限すると公平であったが、サーバーS101~S900が11[Mbit/s]で送信している場合(合計9.9[Gbit/s]のトラフィック)は、サーバーS1~S100を12[Mbit/s](合計1.2[Gbit/s]のトラフィック)に制限すると公平になる。
【0024】
公平になるためのピーク帯域はトラフィックの状況によって異なる。したがって、状況に合わせた適切な帯域を求め、エッジスイッチEのTwo Rate Three Markerの設定に反映する必要がある。しかし、コアスイッチCにおいて公平制御のための適切な帯域を求めるためにはフロー個別の帯域を調べる必要があり、結局データセンターのサーバー台数に比例した資源が必要となる。さらに、適切な帯域を求めてエッジスイッチEへ反映している間にもトラフィックの帯域が変化し、反映が間に合わず適切な動作とならない可能性もある。
【0025】
このため、データセンターネットワークで公平性を実現するためには、フェアキューのようにサーバー台数に比例したリソースを各スイッチに要求することなく、かつTwo Rate Three Markerのようにサーバー別トラフィックの帯域に応じたピーク帯域計算も必要としない簡便な公平制御の実現方法が必要である。
【0026】
本発明は、簡便な公平制御を実現することを目的とする。
【課題を解決するための手段】
【0027】
本願において開示される発明の一側面となる転送装置は、データを転送する転送装置であって、前記データを入力順に蓄積し前記入力順に出力可能な保持部と、前記保持部に蓄積されたデータを廃棄するデータ量である廃棄キュー長が大きいほど帯域が小さくなるように前記廃棄キュー長と前記帯域とを対応付けた対応情報を記憶する記憶部と、前記保持部への入力対象データに記録されている記録帯域に応じて特定の廃棄キュー長を前記対応情報から特定し、前記特定の廃棄キュー長と、前記保持部に滞留しているデータ量である滞留キュー長と、に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定し、前記滞留キュー長が前記特定の廃棄キュー長以上である場合、前記入力対象データを廃棄する入力判定部と、を有することを特徴とする。
【0028】
本願において開示される発明の他の側面となる転送装置は、データを転送する転送装置であって、帯域別に設けられ、該当する帯域のデータを入力順に蓄積し前記入力順に出力可能な複数の保持部と、前記複数の保持部の各々の識別情報と前記識別情報ごとに異なる帯域とを対応付けた対応情報を記憶する記憶部と、入力対象データに記録されている記録帯域よりも大きい帯域の中で最小の帯域に応じた特定の識別情報を前記対応情報から特定し、前記複数の保持部のうち前記特定の識別情報によって特定される特定の保持部に前記入力対象データを入力し、前記特定の保持部に前記入力対象データを入力できない場合は前記入力対象データを廃棄する入力判定部と、回線に接続され、前記複数の保持部のうち前記帯域が小さい保持部のデータから順次前記回線に送信する送信部と、を有することを特徴とする。
【0029】
本願において開示される発明の別の側面となる転送装置は、データを転送する転送装置であって、複数の通信装置の各々と通信可能に接続される複数の通信部と、フローを特定するフロー特定情報と前記フローごとに異なる帯域計測番号とを対応付けた対応情報と、前記帯域計測番号ごとに帯域が加算される帯域情報と、を記憶する記憶部と、前記対応情報を参照して、前記複数の通信部のいずれかからの判定対象データに含まれているフロー特定情報に基づいて、前記判定対象データの帯域計測番号を特定し、前記帯域情報において前記判定対象データの帯域計測番号に対応する帯域に、前記判定対象データのサイズを加算し、前記サイズが加算された加算後の帯域を前記判定対象データに記録するフロー判定部と、前記フロー判定部によってフローが判定された前記判定対象データの宛先アドレスに基づいて、前記宛先アドレスで特定される特定の通信装置に接続される特定の通信部を決定する転送先決定部と、を有することを特徴とする。
【0030】
本願において開示される発明の一側面となる転送システムは、第1転送装置と、前記第1転送装置と通信可能に接続される第2転送装置と、を有する転送システムであって、前記第1転送装置は、複数の通信装置の各々と通信可能に接続される複数の通信部と、フローを特定するフロー特定情報と前記フローごとに異なる帯域計測番号とを対応付けた対応情報と、前記帯域計測番号ごとに帯域が加算される帯域情報と、を記憶する記憶部と、前記対応情報を参照して、前記複数の通信部のいずれかからの判定対象データに含まれているフロー特定情報に基づいて、前記判定対象データの帯域計測番号を特定し、前記帯域情報において前記判定対象データの帯域計測番号に対応する帯域に、前記判定対象データのサイズを加算し、前記サイズが加算された加算後の帯域を前記判定対象データに記録するフロー判定部と、前記フロー判定部によってフローが判定された前記判定対象データの宛先アドレスに基づいて、前記複数の通信装置のうち前記宛先アドレスで特定される前記第2転送装置に接続される特定の通信部を決定する転送先決定部と、を有し、前記第2転送装置は、前記第1転送装置からのデータを入力順に蓄積し前記入力順に出力可能な保持部と、前記保持部に蓄積されたデータを廃棄するデータ量である廃棄キュー長が大きいほど帯域が小さくなるように前記廃棄キュー長と前記帯域とを対応付けた対応情報を記憶する記憶部と、前記第1転送装置からの前記保持部への入力対象データに記録されている記録帯域に応じて特定の廃棄キュー長を前記対応情報から特定し、前記特定の廃棄キュー長と、前記保持部に滞留しているデータ量である滞留キュー長と、に基づいて、前記入力対象データを前記保持部に入力するか廃棄するかを判定し、前記滞留キュー長が前記特定の廃棄キュー長以上である場合、前記入力対象データを廃棄する入力判定部と、を有することを特徴とする。
【0031】
本願において開示される発明の一側面となる転送プログラムは、複数の通信装置の各々と通信可能に接続される複数の通信部によるデータ転送をプロセッサに実行させる転送プログラムであって、前記プロセッサは、フローを特定するフロー特定情報と前記フローごとに異なる帯域計測番号とを対応付けた対応情報と、前記帯域計測番号ごとに帯域が加算される帯域情報と、を記憶する記憶部にアクセス可能であり、前記プロセッサに、前記対応情報を参照して、前記複数の通信部のいずれかからの判定対象データに含まれているフロー特定情報に基づいて、前記判定対象データの帯域計測番号を特定し、前記帯域情報において前記判定対象データの帯域計測番号に対応する帯域に、前記判定対象データのサイズを加算し、前記サイズが加算された加算後の帯域を前記判定対象データに記録するフロー判定処理と、前記フロー判定処理によってフローが判定された前記判定対象データの宛先アドレスに基づいて、前記宛先アドレスで特定される特定の通信装置に接続される特定の通信部を決定する転送先決定処理と、を実行させることを特徴とする。
【発明の効果】
【0032】
本発明の代表的な実施の形態によれば、簡便な公平制御を実現することができる。
【図面の簡単な説明】
【0033】
【
図1】
図1は、実施例1にかかるエッジスイッチEの構成例を示すブロック図である。
【
図2】
図2は、
図1に示したフロー判定部の構成例を示すブロック図である。
【
図3】
図3は、実施例1にかかるパケットフォーマットの一例を示す説明図である。
【
図4】
図4は、帯域の値をその2を底とする対数に変換した場合の例を示す表である。
【
図5】
図5は、エッジスイッチのサーバーSおよびコアスイッチとの回線接続図である。
【
図6】
図6は、エッジスイッチにおけるフロー表の設定例を示す説明図である。
【
図7】
図7は、パケットに記録される帯域例1を示す表である。
【
図8】
図8は、実施例1にかかるコアスイッチの構成例を示すブロック図である。
【
図9】
図9は、
図8に示したコアスイッチの送信部の構成例を示すブロック図である。
【
図10】
図10は、パケットの記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および廃棄キュー長の集計例1を示す説明図である。
【
図13】
図13は、パケットに記録される帯域例2を示す表である。
【
図14】
図14は、パケットの記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および廃棄キュー長の集計例2を示す説明図である。
【
図16】
図16は、実施例2にかかるコアスイッチの送信部の構成例を示すブロック図である。
【
図17】
図17は、パケットの記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および送信キュー番号の集計例を示す説明図である。
【
図18】
図18は、実施例3にかかるコアスイッチCの送信部の構成例を示すブロック図である。
【
図19】
図19は、ケース3またはケース4において、送信部が回線へ送信すべきパケットの記録帯域別の1[ms]当たりパケット数、1[ms]あたり送信情報量、帯域、および廃棄確定キュー長とランダム廃棄キュー長を示す表である。
【
図20】
図20は、データセンターのネットワーク構成例を示す説明図である。
【発明を実施するための形態】
【0034】
以下に示す各実施例は、データを転送する転送装置、転送システム、および転送プログラムに関し、たとえば、データセンターネットワークのように、端末を多数収容して通信を支えるプライベートネットワークおよびVPNネットワークに適用可能である。
【実施例1】
【0035】
実施例1は、コアスイッチCのインターフェースにある送信キューの長さを利用して公平制御を実現する例である。以下、
図1から
図16、および
図20を用いて実施例1を説明する。
【0036】
<エッジスイッチEの構成例>
図1は、実施例1にかかるエッジスイッチEの構成例を示すブロック図である。エッジスイッチEは、制御部101と、パケット処理部102と、データバス103と、複数のインターフェース部104と、を有する転送装置である。パケット処理部102は、パケットバッファー110と、フロー判定部111と、転送先決定部112と、を有する。各インターフェース部104は、受信部113と送信部114とを有する。
【0037】
サーバーSが送信したパケットは、サーバーSと接続しているエッジスイッチEのインターフェース部104の受信部113によって受信される。受信されたパケットは、データバス103を経由してパケット処理部102にあるパケットバッファー110に蓄積される。
【0038】
フロー判定部111は、パケットバッファー110に蓄積されたパケットの各々についてフロー判定処理を実行し、判定結果に応じて必要がある場合に当該パケットを書き換える。フロー判定部111の詳細は、
図2で後述する。
【0039】
転送先決定部112は、パケットの宛先アドレスに基づいて、当該パケットを送信すべき送信インターフェースを決定する。最後に、転送先決定部112によって送信インターフェースに決定されたインターフェース部104の送信部114が、パケットバッファー110からパケットを読み取り、パケットを送信する。これにより、パケットが転送される。
【0040】
なお、フロー判定部111および転送先決定部112は、メモリに記憶されたプログラムをプロセッサにより実行させることにより実現される機能としてもよく、LSIによって実行されてもよい。
【0041】
<フロー判定部111の構成例>
図2は、
図1に示したフロー判定部111の構成例を示すブロック図である。フロー判定部111は、フロー判定処理部201と、フロー表202と、帯域表203と、帯域リセット部204と、を有する。フロー表202および帯域表203は、図示しないメモリに記憶されている。
【0042】
フロー判定処理部201は、フロー判定処理をパケットごとに実行する。フロー表202は、フローを判定するためのテーブルであり、フィールドとして、受信インターフェース221、送信元アドレス222、帯域計測番号223および帯域記録係数224を保持する。受信インターフェース221には、値として、パケットが受信されたインターフェース部104の識別情報が記録される。送信元アドレス222には、値として、受信されたパケットの送信元アドレスが記録される。受信インターフェース221および送信元アドレス222がフローを特定するフロー特定情報である。
【0043】
帯域計測番号223には、値として、フローごとに異なる番号が記録される。帯域記録係数224には、値として、あらかじめ設定された値が記録される。たとえば、帯域記録係数224の列には、全フローについて「1」が設定される。帯域記録係数224は通信コストに関する値であり、帯域を重み付けする。帯域記録係数224の値が小さいほどそのパケットが送信されやすくなり通信コストが上昇する。
【0044】
帯域表203は、帯域計測番号223毎に計測された帯域230を記録する。帯域リセット部204は、帯域表203に記録された帯域230をリセットする。フロー判定処理部201の動作について詳細に説明する。
【0045】
フロー判定処理部201は、パケットバッファー110から判定対象パケットの受信インターフェースと送信元アドレスとパケットサイズを読み出す。
【0046】
フロー判定処理部201は、パケットバッファー110から読み出した受信インターフェースおよび送信元アドレスと一致する受信インターフェース221および送信元アドレス222の行をフロー表202から検索し、該当行の帯域計測番号223と帯域記録係数224を読み出す。該当行がない場合には、フロー判定処理部201は、これ以上何もしない。
【0047】
フロー判定処理部201は、帯域表203から該当した帯域計測番号223の行を読み出し、その行の帯域230に、パケットバッファー110から読み出したパケットサイズを加算する。そして、フロー判定処理部201は、加算後の帯域230を取り出し、帯域表203から読み出した行の帯域記録係数224を乗算して、判定対象パケットの帯域フィールドに記録する。フロー判定処理とは別に、帯域リセット部204が、1[ms]周期で帯域表203の全行にアクセスし、アクセスした行の帯域230を0にリセットする。
【0048】
<パケットフォーマット>
図3は、実施例1にかかるパケットフォーマットの一例を示す説明図である。パケット300は、IPヘッダ301と、データを格納するペイロード302と、を有する。IPヘッダ301は、パケット300の転送に必要な情報を格納する複数のフィールドを有する。これらのフィールドのうち前述の帯域フィールドとしてはサービス種別303のフィールドを使用することができる。ただし、サービス種別303のうち帯域の格納に利用できる部分は6ビットなので、0から63までの64個の数値しか表現できない。そのため、たとえば、帯域の値の2を底とする対数をとって、その値を格納するという方法が一例である。
【0049】
図4は、帯域の値をその2を底とする対数に変換した場合の例を示す表である。この方法によれば、丸め誤差が入るものの、2の64乗のまでの値をIPヘッダ301の標準フィールドに格納することができる。他の格納方法としては、IPヘッダ301の長さが標準より長くなることが大きな問題とならないのであれば、独自の格納方法を定義して、
図3の拡張情報304に格納することもできる。
【0050】
<エッジスイッチEのサーバーSおよびコアスイッチCとの回線接続>
図5は、エッジスイッチEのサーバーSおよびコアスイッチCとの回線接続図である。
図5では、エッジスイッチEとしてエッジスイッチE1、サーバーSとしてサーバーS1~S10、コアスイッチCとしてコアスイッチC1を例に挙げて説明する。
【0051】
エッジスイッチE1は、インターフェース部104として、11個のインターフェース部501~511を有する。インターフェース部501はサーバーS1と回線接続される。同様に、インターフェース部502はサーバーS2と、インターフェース部503はサーバーS3と、インターフェース部504はサーバーS4と、インターフェース部505はサーバーS5と、インターフェース部506はサーバーS6と、インターフェース部507はサーバーS7と、インターフェース部508はサーバーS8と、インターフェース部509はサーバーS9と、インターフェース部510はサーバーS10と、インターフェース部511はコアスイッチC11と接続される。
【0052】
<フロー表202の設定例>
図6は、エッジスイッチE1におけるフロー表202の設定例を示す説明図である。エッジスイッチE1は、フロー表202を用いて、送信元サーバーS別にフローを分別し、パケット300にフローの帯域を記録する。なお、サーバーS1~S10には、それぞれアドレス「10.0.0.1」~「10.0.0.10」が割り当てられているものとする。
【0053】
フロー表202の各行はそれぞれサーバーS1~S10に対応する。具体的には、たとえば、受信インターフェース221の列には各サーバーS1~S10と接続しているインターフェース部501~510の識別情報として、便宜的にインターフェース部501~510の符号501~510が設定される。送信元アドレス222の列には各サーバーS1~S10のアドレス「10.0.0.1」~「10.0.0.10」が設定される。帯域計測番号223の列には、各フローで異なる番号が設定される。
【0054】
<パケット300に記録される帯域例1>
図7は、パケット300に記録される帯域例1を示す表である。
図7では、例として、サーバーS1が100[Mbit/s]のトラフィックを1250バイトのパケット300に分割し、分割したパケット300を100[μs]周期で送信した場合に、エッジスイッチE1がパケット300に記録する帯域の例を示す。
【0055】
図7のとおり、サーバーS1が100[μs]周期でしたパケット300に対し、エッジスイッチE1のフロー判定部111は、
図6のフロー表202の先頭行における帯域計測番号223の値「1」と帯域記録係数224の値「1」をフロー表202から取得する。次いで、フロー判定部111は、時刻が50[μs]において、帯域表203の帯域計測番号223の値「1」番である行の帯域230の値「0」にパケットサイズである1250[Byte]を加算する。
【0056】
これ以降の時刻で、サーバーS1が送信する一連のパケット300について、エッジスイッチE1において1250[Byte],2500[Byte],3750[Byte],…のように、1250[Byte]単位の累積値を算出する。これら累積値が、対応するパケット300および帯域表203の帯域230に記録される。しかし一方で、帯域リセット部204が1[ms]周期で帯域表203の帯域230の値を「0」でリセットするので、パケット300に記録される帯域は15000[Byte]を越えることがなく1250[Byte]に戻る。
【0057】
<コアスイッチCの構成例>
図8は、実施例1にかかるコアスイッチCの構成例を示すブロック図である。コアスイッチCは、制御部801と、パケット処理部802と、データバス803と、複数のインターフェース部804と、を有する転送装置である。パケット処理部802は、パケットバッファー810と、転送先決定部812と、を有する。各インターフェース部804は、受信部813と送信部814と、を有する。
【0058】
コアスイッチCもエッジスイッチE同様、コアスイッチCと接続している接続先スイッチがコアスイッチCへ送信したパケット300は、コアスイッチC内の当該接続先スイッチと接続しているインターフェース部804の受信部813によって受信される。接続先スイッチとは、コアスイッチCがコアスイッチC1であれば、コアスイッチC11~C20である、コアスイッチCがコアスイッチC11~C20のいずれかであれば、コアスイッチC1およびエッジスイッチE(たとえば、コアスイッチCがコアスイッチC11であれば、エッジスイッチE1~E10)である。受信されたパケット300は、データバス803を経由してパケット処理部802にあるパケットバッファー810に蓄積される。
【0059】
転送先決定部812は、パケットバッファー810に蓄積されたパケット300の各々について、パケット300の宛先アドレスに基づいて、当該パケット300を送信すべき送信インターフェースを決定する。最後に、転送先決定部812によって送信インターフェースに決定されたインターフェース部804の送信部814が、パケットバッファー810からパケット300を読み取り、パケット300を送信する。これにより、パケット300が転送される。
【0060】
<コアスイッチCの送信部814の構成例>
図9は、
図8に示したコアスイッチCの送信部814の構成例を示すブロック図である。コアスイッチCの送信部814は、送信キュー901と、回線送信部902と、入力判定部903と、廃棄優先度表904と、を有する。廃棄優先度表904は、図示しないメモリに記憶されている。
【0061】
送信キュー901は、パケット300を先入れ先出しするリスト構造(FIFOメモリ)である。送信キュー901は、たとえば、1000パケットまでパケット300を保持する。回線送信部902は、回線送信部902の接続先のスイッチのインターフェース部に、送信キュー901から出力されるパケット300を送信する。
【0062】
入力判定部903は、パケットバッファー810からパケット300を送信キュー901に入力すべきか否かを、廃棄優先度表904に基づいて判定する。廃棄優先度表904は、フィールドとして、廃棄キュー長942を帯域941別にあらかじめ設定したテーブルである。廃棄キュー長942とは、入力判定部903がパケットバッファー810から読み取ったパケット300を、送信キュー901に搭載するか、または、廃棄するかを決定するためのパラメータである。送信キュー901に搭載されているパケット数である送信キュー長に基づき、廃棄キュー長942には、パケット廃棄を行う最小の送信キュー長が設定される。コアスイッチCの送信部814の動作について詳細に説明する。
【0063】
入力判定部903は、パケット300をパケットバッファー810から読み取ると、廃棄優先度表904から、パケット300の帯域フィールドに記録された帯域(記録帯域)よりも大きい帯域941の中で最小な帯域941を記した行を検索する。たとえば、記録帯域が10000[bit/s]であれば、10000[bit/s]よりも大きい帯域941(18000~1250000[bit/s])の中で、最小の帯域941である18000[bit/s]の行が検索される。
【0064】
入力判定部903は、検索された行の廃棄キュー長942を取得する。上記の例では、入力判定部903は、帯域941である18000[bit/s]の行の廃棄キュー長942である「500」を取得する。
【0065】
次いで、入力判定部903は、送信キュー901に滞留しているパケット300の数(以降、「滞留キュー長」と呼ぶ)を送信キュー901から取得する。入力判定部903は、滞留キュー長と廃棄優先度表904から得た廃棄キュー長942とを比較する。入力判定部903は、滞留キュー長が廃棄キュー長942の値よりも小さい場合、パケットバッファー810から読み取ったパケット300を送信キュー901に入力する。
【0066】
回線送信部902は、送信キュー901にパケット300が滞留している場合、送信キュー901の先頭パケットを抽出し、回線速度に従って回線へ送信する。一方、入力判定部903は、滞留キュー長が廃棄キュー長942の値以上である場合、パケットバッファー810から読み取ったパケット300を廃棄する。
【0067】
図10は、パケット300の記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および廃棄キュー長942の集計例1を示す説明図である。集計例1では、コアスイッチCのインターフェース部804にある送信キュー901の長さを利用して公平制御を実現する構成が適用される。
【0068】
具体的には、たとえば、サーバー群からあるトラフィックが送信されてエッジスイッチE1が
図6に示すフロー表202を使用した場合において、コアスイッチC1がコアスイッチC20へ本来送信すべきトラフィックをパケット300の記録帯域別に集計した例である。
【0069】
より具体的には、たとえば、
図10では、以下のケース1およびケース2を想定する。(ケース1)サーバーS1~S100が、サーバーS900~S1000のいずれかに、100[Mbit/s]のトラフィックを100[μs]間隔の1250バイトのパケット300で送信する。
【0070】
(ケース2)サーバーS101~S900が、サーバーS900~S1000のいずれかに、10[Mbit/s]のトラフィックを1[ms]間隔の1250バイトのパケット300で送信する。
【0071】
図10では、ケース1またはケース2の場合の、コアスイッチC1のコアスイッチC20へ接続するインターフェース部804の送信部814において、本来送信すべきパケット300の記録帯域別の1[ms]あたりパケット数、1[ms]あたり情報量、通信帯域および廃棄キュー長を示す。
【0072】
ここで、滞留キュー長が「650」である場合を考える。この場合、
図10に示したとおり、
図9の廃棄優先度表904により、廃棄キュー長942の値「650」に対応する帯域941は、5800[bit/s]未満である。したがって、5800[bit/s]未満のパケット300が、送信キュー901に積まれる。
【0073】
図10によると記録帯域が5800[bit/s]未満のパケット300の記録帯域別全サーバー合計帯域の累積値は、合計12[Gbit/s](=9+1+1+1)の帯域となるが、コアスイッチCのインターフェース部804は、10[Gbit/s]しか送信速度がない。このため、回線送信部902による送信キュー901からのパケット出力よりも、入力判定部903による送信キュー901へのパケット入力の方が多い。その結果、滞留キュー長が伸張する。
【0074】
また、滞留キュー長が「850」の場合、
図10に示したとおり、
図9の廃棄優先度表904により、廃棄キュー長942の値「850」に対応する帯域941は、1800[bit/s]未満である。したがって、1800[bit/s]未満のパケット300のみが送信キュー901に積まれる。
【0075】
記録帯域1800[bit/s]未満のパケット300の記録帯域別全サーバー合計帯域の累積値は、9[Gbit/s]の帯域となるが、コアスイッチCのインターフェース部804の送信速度10[Gbit/s]の方が速い。このため、回線送信部902による送信キュー901からのパケット出力よりも、入力判定部903による送信キュー901へのパケット入力の方が少ない。その結果、滞留キュー長が短縮する。
【0076】
そして、滞留キュー長が701~800の状態において、帯域941が3200[bit/s]未満であるパケット300(合計10[Gbit/s])が送信キュー901に積まれる。したがって、
図10のトラフィックは、コアスイッチCのインターフェース部804の送信速度10[Gbit/s]とつりあって安定する。
【0077】
この結果、サーバーS101~S900(ケース2)の10[Mbit/s]のトラフィックについては、100[μs]間隔の1250バイトのパケット300はすべて送信される。一方、サーバーS1~S100(ケース1)の100[Mbit/s]のトラフィックはそれぞれ1[ms]あたり10パケット送信される。この10パケットの中で、記録帯域が1250と2500である2パケットのみが通過するので20[Mbit/s]となり、公平制御が実現できる。
【0078】
なお、実施例1では、フロー判定をパケット300の送信元アドレスに基づいて行う例で説明したが、パケット300中のその他の要素をフロー判定に用いてもよい。
【0079】
図11は、フロー表202の変形例1を示す説明図である。
図11のフロー表1102は、
図6のフロー表202に、宛先アドレス1101が追加されたテーブルである。フロー表1102を用いると、フロー判定処理部201は、送信元アドレス222と宛先アドレス1101の組み合わせでフロー判定を行うことができる。
【0080】
ここで、
図11において、宛先アドレス1101の値「*」は、すべての宛先アドレスを意味する。したがって、フロー判定処理部201は、フロー表1102の検索を、は一番上の行から順に、マッチする行が見つかるまで実行する。
【0081】
図11の例で説明すると、受信インターフェース221の値が「603」であるインターフェース部503に接続された送信元アドレス1201の値「10.0.0.3」のサーバーS3からパケット300が送信されたとする。このパケット群について、宛先アドレスが192.168.0.1であるパケット300とそれ以外のパケット300で異なる帯域計測番号223が割り当てられる。したがって、この特定の宛先アドレス1101の値「192.168.0.1」に対するパケット300だけ個別に帯域計測可能である。
【0082】
たとえば、送信元アドレス222だけでフロー判定した場合だと、送信元アドレス222と宛先アドレスの組み合わせでフロー判定する場合に比べて、計測帯域が大きく廃棄の影響を受ける場合である。一方、特定の宛先アドレス1101に対するパケット300だけ個別に帯域計測して、その結果が送信元アドレス222だけでフロー判定する場合に比べて小さな帯域となれば、そのパケット300は廃棄の影響を受けない。
【0083】
また、フロー表1102を適用した例では、特定のサーバーSが送信するパケット300に記録する帯域を送信元アドレス222だけでフロー判定する場合に比べて小さくすることにより、特定のサーバーSのトラフィックを他サーバーSより多くすることもできる。
【0084】
図12は、フロー表202の変形例2を示す説明図である。
図12は、エッジスイッチE1のフロー判定部111のフロー表202を示す。フロー表202において、受信インターフェース221の値「602」の行の帯域記録係数224が「0.5」である。受信インターフェース221の値「602」は、サーバーS2と接続されるインターフェース部502を示す。公平制御のパケット300の重みである帯域記録係数224を他の帯域記録係数224の半分であるため、サーバーS2は、他サーバーSの2倍のトラフィックを流す。
【0085】
図13は、パケット300に記録される帯域例2を示す表である。
図13では、例として、サーバーS2が100[μs]周期で1250バイトのパケット300を送信した場合に、エッジスイッチE1のフロー判定部111が
図12に示すフロー表202設定時にパケット300に帯域を記録した例を示す。
図8の場合と異なり、
図12では、受信インターフェース221が「602」の行の帯域記録係数224が「0.5」であるため、パケット300に記録される帯域の値はすべて、0.5が乗じられて半分となる。
【0086】
図14は、パケット300の記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および廃棄キュー長942の集計例2を示す説明図である。集計例2では、エッジスイッチE1が
図12に示すフロー表202を使用する点を除いて、集計例1と同一条件である。
【0087】
ここで、滞留キュー長が「800」未満である場合を考える。
図14において記録帯域が3200[bit/s]未満のパケット300が、送信キュー901に積まれる。すると、送信キュー901に入力されたトラフィックの合計帯域が10.03[Gbit/s]となり、コアスイッチCのインターフェース部804の送信速度である10[Gbit/s]を超える。その結果、滞留キュー長が伸張する。
【0088】
滞留キュー長が伸張して800以上となると、
図14において記録帯域が1800[bit/s]未満のパケット300だけが送信キュー901に積まれる。この結果、送信キュー901に入力されるトラフィックの合計帯域が9.01[Gbit/s]となり、コアスイッチCのインターフェース部804の送信速度である10[Gbit/s]を下回る。その結果、滞留キュー長が短縮する。
【0089】
このように、滞留キュー長は800前後で増減する。そして、記録帯域が625[bit/s]および1250[bit/s]であるトラフィック9.01[Gbit/s]のすべてと、記録帯域が1875[bit/s]、2500[bit/s]および3125[bit/s]であるトラフィック1.01[Gbit/s]の一部との合計である10[Gbit/s]のトラフィックが送信される。
【0090】
このとき、送信される10[Gbit/s]のうち、前者の9.01[Gbit/s]のトラフィックはすべて送信されるので、残りの帯域0.99[Gbit/s]が後者の1.02[Gbit/s]のトラフィックの送信に使用される。すなわち、後者のトラフィック1.02[Gbit/s]のうち実際に送信されるのは0.99[Gbit/s](約97%)で、残りの約3%は廃棄されることになる。
【0091】
以上の動作により、フロー表202において帯域記録係数224の値が「1」であるサーバーS1のトラフィックにおいては、1[ms]あたり記録帯域が1250[bit/s]および2500[bit/s]である2パケット通過することが期待できる。一方、帯域記録係数224の値が「0.5」であるサーバーS2のトラフィックにおいては、1[ms]あたり記録帯域が625、1250、1875、2500[bit/s]である4パケットのほとんどが通過することが期待できる。
【0092】
このようにして、フローの実帯域に対して重みを考慮した値をパケット300に帯域として記録することにより、他フローに対するトラフィックの重みの違いを表現し、コアスイッチCでの輻輳時に重要トラフィックを優先して送信することが可能になる。
【0093】
なお、フロー表202によるフロー判定は、帯域記録係数224を利用する場合でも、
図6に対する
図11のフロー表1102と同様に、送信元アドレス222以外の要素を使ってもよい。
【0094】
図15は、フロー表の変形例を示す説明図である。
図15のフロー表1502は、
図13のフロー表202に、宛先アドレス1101が追加されたテーブルである。フロー表1502を用いると、フロー判定処理部201は、送信元アドレス222と宛先アドレス1101の組み合わせでフロー判定を行うことができる。
【0095】
なお、
図15では、送信元アドレス222の値「10.0.0.3」のサーバーSから送信されるパケット300のうち、宛先アドレス1101の値「192.168.0.1」のパケット300だけに別の帯域記録係数224を適用できる。これにより、このパケット300を重要トラフィックとして扱うことができる。
【実施例2】
【0096】
実施例2は、コアスイッチCのインターフェースに複数の送信キュー901を適用して公平制御を実現する例を示す。実施例2のコアスイッチCの送信部814の構造が実施例1と異なる。なお、実施例1と同一構成には同一符号を付しその説明を省略する。
【0097】
図16は、実施例2にかかるコアスイッチCの送信部814の構成例を示すブロック図である。送信部814は、複数の送信キュー901と、回線送信部1602と、入力判定部1603と、キュー番号表1604と、を有する。キュー番号表1604は、図示しないメモリに記憶される。
【0098】
複数の送信キュー901には、1から始まる送信キュー番号がついており、それぞれ100パケットまでパケット300を搭載することができるものとする。
【0099】
回線送信部1602は、複数ある送信キュー901のいずれか1つにパケット300が滞留している場合、送信キュー番号1642の値が最小の送信キュー901からパケット300を1つ抽出し、回線へ送信する。
【0100】
入力判定部1603は、パケットバッファー810からパケット300をいずれの送信キュー901に入力すべきか否かを、キュー番号表1604に基づいて判定する。キュー番号表1604は、送信キュー901ごとに付与された送信キュー番号1642を帯域941別にあらかじめ設定したテーブルである。コアスイッチCの送信部814の動作について詳細に説明する。
【0101】
入力判定部1603は、パケット300をパケットバッファー810から読み取り、キュー番号表1604から、パケット300に記録されている帯域よりも大きい帯域941の中で最小の帯域941を記録した行を検索する。たとえば、記録帯域が10000[bit/s]であれば、10000[bit/s]よりも大きい帯域941(18000~1250000[bit/s])の中で、最小の帯域941である18000[bit/s]の行が検索される。
【0102】
入力判定部1603は、検索された行の送信キュー番号1642を取得する。上記の例では、入力判定部1603は、帯域941である18000[bit/s]の行の送信キュー番号1642である「7」を取得する。
【0103】
次いで、入力判定部1603は、パケット300を、取得した送信キュー番号1642の送信キュー901に搭載する。取得した送信キュー番号1642の送信キュー901に空きがない場合は、入力判定部1603は、当該パケット300を廃棄する。
【0104】
図17は、パケット300の記録帯域ごとにおける送信パケット数、送信情報量、全サーバー合計帯域、および送信キュー番号1642の集計例を示す説明図である。本集計例では、廃棄キュー長942から送信キュー番号1642に変更された点を除いて、集計例1と同一条件である。なお、送信キュー番号1642に値が#である送信キュー901を、送信キュー901-#と表記する。
【0105】
図17に示すトラフィックに対して回線送信部1602が回線帯域である10[Gbit/s]でパケット300を送信する場合、まず、送信部814は、送信キュー901-2から9[Gbit/s]のパケット300を回線送信部1602に出力する。
【0106】
回線帯域が1[Gbit/s]余っているので、送信キュー901-3から1[Gbit/s]のパケット300を回線送信部1602に出力する。この結果、回線帯域をすべて消費したので、送信キュー901-4番以降に滞留するパケット300は回線送信部1602に出力されない。そして、サーバーS101~S900の10[Mbit/s]のトラフィックのパケット300はすべて送信される。一方、サーバーS1~S100の100[Mbit/s]のトラフィックについては、それぞれ1[ms]あたり10パケットある中で記録帯域が1250[bit/s]と2500[bit/s]である2パケットのみが通過する。これにより、サーバーS1~S100からの10[Mbit/s]分のトラフィックのパケット300が送信されるため、公平制御が実現できる。
【実施例3】
【0107】
実施例3は、ランダム初期検出による廃棄を実現する例である。実施例3のコアスイッチCの送信部814の内部構造が実施例1と異なる。実施例1と同一構成には同一符号を付し、その説明を省略する。
【0108】
図18は、実施例3にかかるコアスイッチCの送信部814の構成例を示すブロック図である。送信部814は、送信キュー901と、回線送信部902と、入力判定部1803と、ランダム廃棄優先度表1804と、を有する。
【0109】
入力判定部1803は、パケットバッファー810からパケット300を送信キュー901に入力すべきか否かを、ランダム廃棄優先度表1804に基づいて判定する。ランダム廃棄優先度表1804は、廃棄確定キュー長1842、ランダム廃棄キュー長1843およびランダム廃棄確率1844を帯域941別にあらかじめ設定したテーブルである。廃棄確定キュー長1842、ランダム廃棄キュー長1843およびランダム廃棄確率1844は、入力判定部1803がパケットバッファー810から読み取ったパケット300を送信キュー901に入力するか、または、廃棄するかを決定するためのパラメータである。
【0110】
廃棄確定キュー長1842は、送信キュー901に搭載されているパケット数である滞留キュー長に基づき、パケット廃棄を必ず行う最小の送信キュー長である。ランダム廃棄キュー長1843は、廃棄確率に基づいたパケット300のランダム廃棄を行う最小の滞留キュー長である。ランダム廃棄確率1844は、ランダム廃棄を行う際の廃棄確率である。ここで、廃棄確定キュー長1842は、ランダム廃棄キュー長1843の値以上に設定される。換言すれば、ランダム廃棄キュー長1843は、廃棄確定キュー長1842以の値以下に設定される。コアスイッチCの送信部814の動作について詳細に説明する。
【0111】
入力判定部1803は、パケットバッファー810から送信すべきパケット300を読み取り、ランダム廃棄優先度表1804から、パケット300に記録されている帯域よりも大きい帯域941の中で最小な帯域941を記録した行を検索する。たとえば、記録帯域が10000[bit/s]であれば、10000[bit/s]よりも大きい帯域941(18000~1250000[bit/s])の中で、最小の帯域941である18000[bit/s]の行が検索される。
【0112】
入力判定部903は、検索された行の廃棄確定キュー長1842、ランダム廃棄キュー長1843およびランダム廃棄確率1844を取得する。上記の例では、入力判定部903は、帯域941である18000[bit/s]の行の廃棄確定キュー長1842の値「400」、ランダム廃棄キュー長1843の値「300」、およびランダム廃棄確率1844の値「1%」を取得する。次いで入力判定部903は、滞留キュー長を送信キュー901から取得する。
【0113】
入力判定部903は、ランダム廃棄優先度表1804から得た廃棄確定キュー長1842およびランダム廃棄キュー長1843と、取得した滞留キュー長と、を比較する。比較対象のランダム廃棄キュー長1843の値が、比較対象の廃棄確定キュー長1842の値未満に設定されている場合は、以下のようになる。
【0114】
滞留キュー長がランダム廃棄キュー長より1843も小さい場合、入力判定部903は、パケット300を送信キュー901に入力する。滞留キュー長がランダム廃棄キュー長1843以上で、かつ、廃棄確定キュー長1842より短い場合、入力判定部903は、ランダム廃棄優先度表1804から得たランダム廃棄確率1844の値でパケット300を廃棄する。一方、廃棄しなかった場合、入力判定部903は、パケット300を送信キュー901に入力する。滞留キュー長が廃棄確定キュー長1842以上である場合、入力判定部903は、パケット300を廃棄する。
【0115】
比較対象のランダム廃棄キュー長1843の値が、比較対象の廃棄確定キュー長1842の値と同一に設定されている場合は、以下のようになる。
【0116】
滞留キュー長がランダム廃棄キュー長より1843(=廃棄確定キュー長1842)も小さい場合、入力判定部903は、パケット300を送信キュー901に入力する。滞留キュー長がランダム廃棄キュー長1843以上(=廃棄確定キュー長1842)である場合、入力判定部903は、パケット300を廃棄する。
【0117】
つぎに、コアスイッチC1がランダム初期廃棄を実現する場合におけるランダム廃棄優先度表1804の設定例について説明する。具体的には、たとえば、以下のケース3またはケース4においてコアスイッチC1のコアスイッチC20へ接続する送信部814の動作を説明する。
【0118】
(ケース3)サーバーS1~S100がサーバーS900~S1000のいずれかへ、20[Mbit/s]のトラフィックを500[μs]間隔の1250バイトのパケットで送信する。
【0119】
(ケース4)サーバーS101~S900がサーバーS900~S1000のいずれかへ、10[Mbit/s]のトラフィックを1[ms]間隔の1250バイトのパケットで送信する。
【0120】
図19は、ケース3またはケース4において、回線送信部902が回線へ送信すべきパケット300の記録帯域別の1[ms]当たりパケット数、1[ms]あたり送信情報量、帯域、および廃棄確定キュー長とランダム廃棄キュー長を示す表である。
【0121】
滞留キュー長が「600」未満の場合、記録帯域が1250[bit/s]から3750[bit/s]までのパケット300による11[Gbit/s]のトラフィックはすべて送信キュー901に積まれる。この結果、回線帯域10[Gbit/s]よりも送信対象のトラフィックの合計11[Gbit/s]の方が大きい。その結果、滞留キュー長が伸張する。
【0122】
滞留キュー長が伸張して600~699になると、記録帯域が1250[bit/s]および2500[bit/s]であるパケット300による合計10[Gbit/s]のトラフィックはすべて送信キュー901に積まれる。一方、記録帯域が3750[bit/s]であるパケット300による1[Gbit/s]のトラフィックについては、滞留キュー長がランダム廃棄キュー長1843より長いのでランダム廃棄確率1%のパケット300が廃棄されて0.99[Gbit/s]だけ送信キュー901に積まれる。
【0123】
こうして、回線帯域よりも送信すべきトラフィックの合計帯域の方が大きく、かつ、滞留キュー長が伸張した場合に、サーバーS101~S900が送信したトラフィックに比べて記録帯域が大きなパケット300を含む(すなわち、送信トラフィック帯域も大きい)S1~S100が送信したトラフィックだけをランダム初期検出による廃棄の対象とし、公平なランダム初期検出を実現する。
【0124】
以上説明したように、上述した各実施例では、ネットワークのエッジスイッチEが、ネットワーク外部から受信したパケット300をフローに分別し、フロー個別に帯域を計測し、パケット300に帯域を記録する。コアスイッチCは、パケット300を転送するにあたり、パケット300の記録帯域を参照し、記録帯域が小さなパケットを優先して送信する。
【0125】
これにより、コアスイッチCにおいて回線帯域よりも該当回線へ送信すべきトラフィックの合計帯域の方が大きい場合に、記録帯域が大きなパケットを廃棄することができる。結果として帯域の大きなフローのパケット300が優先して廃棄されるので、結果的に複数フロー間で帯域を公平制御できる。
【0126】
また、エッジスイッチEとコアスイッチCとで機能を分担してネットワーク全体で公平制御を実現したことにより、エッジスイッチEではフローの数だけ帯域計測機能が必要になるが、エッジスイッチEを通過してネットワークに入ってくるパケット300はエッジスイッチEに接続しているサーバーSが送信したデータとなる。したがって、エッジスイッチEで管理すべきフローの数はデータセンター全体のフロー数とは無関係な充分に少ない数となる。また、コアスイッチCではフロー個別の動作がないので、データセンター全体のフロー数を考慮する必要がなくなる。
【0127】
たとえば、端末が多数接続されているネットワークにおいて、ネットワーク上のどのスイッチにも端末数に比例するリソースを用意することなく、回線での輻輳時に端末間で帯域を公平制御することができる。
【0128】
また、上述した転送装置および転送システムは、下記(1)~(20)のように構成することもできる。
【0129】
(1)パケット300を転送する転送装置の一例であるコアスイッチCは、たとえば、実施例1に示したように、パケット300を入力順に蓄積し入力順に出力可能な保持部(たとえば、送信キュー901)と、保持部に蓄積された第1データ量(たとえば、廃棄キュー長942)が多いほど帯域941が小さくなるように第1データ量と帯域とを対応付けた対応情報(たとえば、廃棄優先度表904)を記憶する記憶部と、入力対象パケットに記録されている記録帯域に応じて特定の第1データ量を対応情報から特定し、特定の第1データ量と、保持部からの取得データ量である滞留キュー長と、に基づいて、入力対象パケットを保持部に入力するか廃棄するかを判定する入力判定部903と、を有する。
【0130】
これにより、記録帯域が大きいほど入力対象パケットが廃棄されやすく、記録帯域が小さいほど保持部に入力されやすくなる。したがって、簡便な公平制御を実現することができる。
【0131】
(2)上記(1)のコアスイッチCにおいて、入力判定部903は、記録帯域よりも大きい帯域に対応する第1データ量を特定の第1データ量として特定する。これにより、特定の第1データ量を、記録帯域に対応する第1データ量よりも小さく設定することができ、入力対象パケットが廃棄されやすくなる。
【0132】
(3)上記(2)のコアスイッチCにおいて、入力判定部903は、記録帯域よりも大きい帯域の中で最小の帯域に対応する第1データ量を特定の第1データ量として特定する。これにより、記録帯域に対応する第1データ量よりも小さい特定の第1データ量の低下を抑制することができ、入力対象パケットの廃棄されやすさと、入力のされやすさとのバランスを保つことができる。
【0133】
(4)上記(1)のコアスイッチCにおいて、入力判定部903は、取得データ量が特定の第1データ量がよりも小さい場合、入力対象データを保持部に入力する。これにより、滞留キュー長を伸張させることができる。
【0134】
(5)上記(1)のコアスイッチCにおいて、入力判定部903は、取得データ量が特定の第1データ量以上である場合、入力対象データを廃棄する。これにより、滞留キュー長の伸張を抑制することができる。
【0135】
(6)上記(1)のコアスイッチCにおいて、たとえば、実施例3に示したように、対応情報(たとえば、ランダム廃棄優先度表1804)は、第1データ量(たとえば、廃棄確定キュー長1842)と、第1データ量以下の第2データ量(たとえば、ランダム廃棄キュー長1843)と、入力対象パケットの廃棄確率(たとえば、ランダム廃棄確率1844)と、帯域941と、を対応付けており、入力判定部1803は、記録帯域に応じて特定の第1データ量、特定の第2データ量、および特定の廃棄確率を対応情報から特定し、特定の第1データ量、特定の第2データ量、および特定の廃棄確率と、保持部からの取得データ量と、に基づいて、入力対象パケットを保持部に入力するか廃棄するかを判定する。
【0136】
これにより、ランダム初期検出による入力対象パケットの廃棄の簡便化を図ることができる。
【0137】
(7)上記(6)のコアスイッチCにおいて、入力判定部1803は、記録帯域よりも大きい帯域に対応する第1データ量を特定の第1データ量として特定し、特定の第1データ量に対応する第2データ量を特定の第2データ量として特定し、特定の第1データ量に対応する廃棄確率を特定の廃棄確率として特定する。
【0138】
これにより、ランダム初期検出において、特定の第1データ量を、記録帯域に対応する第1データ量よりも小さく設定することができ、入力対象パケットが廃棄されやすくなる。
【0139】
(8)上記(7)のコアスイッチCにおいて、入力判定部1803は、記録帯域よりも大きい帯域の中で最小の帯域に対応する第1データ量を特定の第1データ量として特定する。これにより、ランダム初期検出において、記録帯域に対応する第1データ量よりも小さい特定の第1データ量の低下を抑制することができ、入力対象パケットの廃棄されやすさと、入力のされやすさとのバランスを保つことができる。
【0140】
(9)上記(6)のコアスイッチCにおいて、入力判定部1803は、取得データ量が特定の第2データ量よりも小さい場合、入力対象データを保持部に入力する。これにより、ランダム初期検出において、滞留キュー長を伸張させることができる。
【0141】
(10)上記(6)のコアスイッチCにおいて、入力判定部1803は、対応情報において特定の第2データ量が特定の第2データ量未満に設定されている場合で、かつ、取得データ量が特定の第2データ量以上で、かつ、特定の第1データ量よりも小さい場合、特定の廃棄確率に基づいて、入力対象データを保持部に入力するか廃棄するかを判定する。
【0142】
これにより、ランダム初期検出において、滞留キュー長の伸縮制御を簡略化することができる。
【0143】
(11)上記(6)のコアスイッチCにおいて、入力判定部1803は、取得データ量が特定の第1データ量以上である場合、入力対象データを廃棄する。これにより、ランダム初期検出において、滞留キュー長の伸張を抑制することができる。
【0144】
(12)上記(1)のコアスイッチCにおいて、たとえば、実施例1および実施例3に示したように、回線に接続され、取得データ量の合計帯域が回線の残存帯域よりも小さい場合、保持部に蓄積されたパケットを入力順に回線に送信する回線送信部902を有する。
【0145】
これにより、帯域が大きいフローほど、そのフローに属するパケット300が優先して廃棄され、結果的に複数フロー間で帯域を公平制御することができる。
【0146】
(13)パケット300を転送する転送装置の一例であるコアスイッチCは、たとえば、実施例2に示したように、帯域別に設けられ、該当する帯域のパケットを入力順に蓄積し入力順に出力可能な複数の保持部(たとえば、複数の送信キュー901)と、入力対象パケットに記録されている記録帯域に基づいて、複数の保持部のうち入力対象パケットをいずれの保持部に入力すべきかを判定する入力判定部1603と、を有する。
【0147】
これにより、帯域941別に、滞留キュー長を伸縮制御することができる。
【0148】
(14)上記(13)のコアスイッチCは、複数の保持部の各々の識別情報(たとえば、送信キュー番号1642)と識別情報ごとに異なる帯域941とを対応付けた対応情報(たとえばキュー番号表1604)を記憶する記憶部を有し、入力判定部1603は、記録帯域に応じて特定の識別情報を対応情報から特定し、複数の保持部のうち特定の識別情報によって特定される保持部に入力対象パケットを入力する。
【0149】
これにより、帯域941別に、滞留キュー長を伸張させることができる。
【0150】
(15)上記(13)のコアスイッチCは、回線に接続され、複数の保持部からのパケット300を回線に送信する回線送信部1602を有し、回線送信部1602は、複数の保持部のうち第1保持部よりも帯域が小さい第2保持部に蓄積されたパケット300を入力順に回線に送信する。
【0151】
これにより、帯域941が小さい保持部に滞留するパケット300ほど優先的に送信されるため、結果的に複数フロー間で帯域を公平制御することができる。
【0152】
(16)パケット300を転送する転送装置の一例であるエッジスイッチEは、たとえば、実施例1に示したように、複数の通信装置(たとえば、サーバーSやコアスイッチC)の各々と通信可能に接続される複数の通信部(たとえば、インターフェース部104)と、フローを特定するフロー特定情報(たとえば、受信インターフェース221および送信元アドレス222)とフローごとに異なる帯域計測番号223とを対応付けた対応情報(たとえば、フロー表202)と、帯域計測番号223ごとに帯域230が加算される帯域情報(たとえば、帯域表203)と、を記憶する記憶部と、対応情報を参照して、複数の通信部のいずれかからの判定対象パケットに含まれているフロー特定情報に基づいて、判定対象パケットの帯域計測番号223を特定し、帯域情報において判定対象パケットの帯域計測番号223に対応する帯域230に、判定対象パケットのサイズ(たとえば、1250Byte)を加算し、サイズが加算された加算後の帯域230を判定対象パケットに記録するフロー判定部111と、フロー判定部111によってフローが判定された判定対象パケットの宛先アドレスに基づいて、宛先アドレスで特定される特定の通信装置(たとえば、コアスイッチC)に接続される特定の通信部を決定する転送先決定部112と、を有する。
【0153】
これにより、判定対象パケットの転送先のコアスイッチCは、転送されてくる判定対象パケットの記録帯域を用いて、フロー判定および滞留キュー長の伸縮制御を行うことができる。
【0154】
(17)上記(16)のエッジスイッチEにおいて、フロー判定部111は、所定時間単位で帯域情報の帯域をリセットする。これにより、帯域230の過剰な増加を抑制することができ、フローごとに帯域230を均等に分散することができる。
【0155】
(18)上記(16)のエッジスイッチEにおいて、対応情報(たとえば、フロー表202)は、帯域230を重み付けする帯域記録係数224を対応付けており、フロー判定部111は、対応情報を参照して、フロー特定情報に基づいて、判定対象パケットの帯域計測番号および帯域記録係数を特定し、帯域情報において判定対象パケットの帯域計測番号223に対応する帯域に、判定対象パケットのサイズに判定対象パケットの帯域記録係数224を乗じた値を加算し、サイズが加算された加算後の帯域230を判定対象パケットに記録する。
【0156】
これにより、フロー別に帯域230を重み付けすることができる。たとえば、帯域記録係数224の値が小さいほどそのパケットが送信されやすくなり通信コストが上昇する。
【0157】
(19)上記(18)のエッジスイッチEでは、対応情報において、第1帯域計測番号223に対応する第1帯域記録係数224と、第1帯域計測番号223とは異なる第2帯域計測番号223に対応する第2帯域記録係数224と、が異なる。
【0158】
これにより、帯域記録係数224の差異により、フローごとに通信コストが異なるように設定することができる。
【0159】
(20)転送システムは、上記(16)のエッジスイッチEと、上記(1)のコアスイッチCと、を有する。これにより、ネットワークのエッジスイッチEが、ネットワーク外部から受信したパケット300をフローに分別し、フロー個別に帯域を計測し、パケット300に帯域を記録する。コアスイッチCは、パケット300を転送するにあたり、パケット300の記録帯域を参照し、記録帯域が小さなパケットを優先して送信する。
【0160】
これにより、コアスイッチCにおいて回線帯域よりも該当回線へ送信すべきトラフィックの合計帯域の方が大きい場合に、記録帯域が大きなパケットを廃棄することができる。結果として帯域の大きなフローのパケット300が優先して廃棄されるので、結果的に複数フロー間で帯域を公平制御できる。
【符号の説明】
【0161】
101 制御部
102 パケット処理部
104 インターフェース部
110 パケットバッファー
111 フロー判定部
112 転送先決定部
113 受信部
114 送信部
201 フロー判定処理部
202 フロー表
203 帯域表
204 帯域リセット部
221 受信インターフェース
222 送信元アドレス
223 帯域計測番号
224 帯域記録係数
230 帯域
300 パケット
801 制御部
802 パケット処理部
804 インターフェース部
810 パケットバッファー
812 転送先決定部
813 受信部
814 送信部
901 送信キュー
902 回線送信部
903 入力判定部
904 廃棄優先度表
941 帯域
942 廃棄キュー長
1102 フロー表
1502 フロー表
1602 回線送信部
1603 入力判定部
1604 キュー番号表
1642 送信キュー番号
1803 入力判定部
1804 ランダム廃棄優先度表
1842 廃棄確定キュー長
1843 ランダム廃棄キュー長
1844 ランダム廃棄確率
C コアスイッチ
E エッジスイッチ
S サーバー