(57)【特許請求の範囲】
【請求項１】
それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する方法であって、
前記下位レイヤにおいて輻輳を検知し、
前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知し、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定し、
前記設定時に、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定することを特徴とする輻輳制御方法。
【請求項２】
それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する輻輳制御装置であって、
前記下位レイヤにおいて輻輳を検知する検知部と、
前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、
前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルと、を備え、
前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定することを特徴とする輻輳制御装置。
【請求項３】
前記輻輳制御情報には、前記下位レイヤにおける前記出力レートを制御する対象の宛先アドレス情報が更に含まれ、
前記処理部は、前記輻輳の発生時に、前記上位レイヤにおいて前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションを、前記輻輳に関連する１つ以上の上位レイヤセッションとして選択することを特徴とする請求項２記載の輻輳制御装置。
【請求項４】
前記検知部は、前記下位レイヤにおいて前記輻輳の解消を検知し、
前記通知部は、前記輻輳の解消と、前記解消された輻輳に係る宛先アドレス情報とを前記下位レイヤから上位レイヤに通知し、
前記処理部は、前記上位レイヤにおいて、前記解消された輻輳に係る前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションの出力レートを、セッション単位で再設定することを特徴とする請求項３記載の輻輳制御装置。
【請求項５】
前記処理部は、前記輻輳発生時に、前記上位レイヤにおいて、前記下位レイヤの制御レートと、前記輻輳に関連する前記１つ以上の上位レイヤセッションの前記重みの合計に対する、前記輻輳に関連する各上位レイヤセッションの重みの割合とを用いて前記出力レートを計算し、
前記計算した出力レートとラウンドトリップタイムとを用いて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズを計算することを特徴とする請求項２〜４のいずれか１項記載の輻輳制御装置。
【請求項６】
前記処理部は、前記輻輳に関連する前記１つ以上の上位レイヤセッションが保持する制御レートの値が輻輳の解除を示す値の場合、前記上位レイヤの前記固有の輻輳制御を使用することを特徴とする請求項２〜５のいずれか１項に記載の輻輳制御装置。
【請求項７】
情報処理装置と上位装置とが中継装置で接続されており、固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式で通信を行なう通信システムであって、
前記情報処理装置は、
前記下位レイヤにおいて輻輳を検知する検知部と、
前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、
前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルと、を備え、
前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定することを特徴とする通信システム。
【請求項８】
コンピュータに、それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御させる輻輳制御プログラムであって、
前記プログラムは、該コンピュータに、
前記下位レイヤにおいて輻輳を検知させ、
前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知させ、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定させ、
前記設定時に、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定させることを特徴とする輻輳制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、輻輳制御方法、輻輳制御装置、通信システム及び輻輳制御プログラムに関する。
【背景技術】
【０００２】
クラウドデータセンタにおいては、複数のテナント（アプリケーションや情報処理装置）が同一のネットワーク資源を共有しているため、テナント間の品質制御が重要となる。このような品質制御の１つとして、輻輳発生時の輻輳制御がある。輻輳制御は、例えば、ＩＥＥＥ８０２．１Ｑａｕ  Congestion Notificationドラフト２．０（以降、ＩＥＥＥ８０２．１Ｑａｕと呼ぶ）に標準化されている。【０００３】
図２０は、ＩＥＥＥ８０２．１Ｑａｕにおける輻輳制御を模式的に示す図である。
図２０においては、サーバ１０１と情報処理装置（テナント）１０５とがスイッチ１０３を介して接続されており、太線の図面右向きの矢印で示すように、テナント１０５がサーバ１０１に送信を行なっている。
この状態において、下位レイヤであるレイヤ２において輻輳が発生すると、スイッチ１０３は、白抜きの図面左向きの矢印で示すように、ＩＥＥＥ８０２．１Ｑａｕに従って、送信元ノードである情報処理装置（テナント）１０５に、輻輳通知パケット１６１を送信する。この輻輳通知パケットには、出力レートを制御する対象の宛先ＩＰ（Internet Protocol）アドレス（以下、「対象宛先ＩＰアドレス」と呼ぶ）と、Ｌ２制御レートとが含まれる。以下、この２つをまとめて、「輻輳制御情報」とも呼ぶ。このＬ２制御レートは、輻輳を解消するためにスイッチ１０３が算出した、各送信元ノードが対象宛先ＩＰアドレスに出力する際の上限レートである。輻輳通知パケット１６１を受信した送信元ノード１０５は、自身が出力する出力レートを制御し、これにより輻輳が緩和される。【０００４】
このとき、送信元ノード１０５は、輻輳に影響を与えるフローの出力キューと、輻輳に影響を与えないフローの出力キューとを分けることで、出力レートを制御する。そして、輻輳に影響を与えるフローのみのレート制御を行ない、輻輳に影響を与えないフローに対してはレート制御を行なわない。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＩＥＥＥ８０２．１Ｑａｕ  Congestion Notificationドラフト２．０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図２０に図示した構成において、通信トラフィックがＴＣＰ（Transmission Control Protocol）通信の場合、輻輳発生時には、レイヤ２の輻輳制御と独立して、上位レイヤであるＴＣＰレイヤ（レイヤ４）においても輻輳制御が行なわれる。
ＴＣＰでは、シーケンス番号が重複したパケットの受信やＴＣＰ再送タイマの経過が検出されると輻輳が発生していると判断される。このとき、Ｌ４処理部１２１（図２２参照）は、ウィンドウサイズを減少させて出力レート制御を行ない、輻輳制御を実施する。このような輻輳制御はＴＣＰセッション単位で行なわれる。【０００７】
図２１は、ＴＣＰにおけるウィンドウサイズの制御を模式的に示す図である。時点ｔ１１において輻輳が発生すると、情報処理装置１０５に備えられ、レイヤ４を処理するレイヤ４（Ｌ４）処理部１２１は、ＴＣＰセッション＃１，＃２のウィンドウサイズを減少させる。時点ｔ１２において輻輳が解消されると、Ｌ４処理部１２１は、ＴＣＰセッション＃１，＃２のウィンドウサイズを増加させる。時点ｔ１３において再度輻輳が発生すると、Ｌ４処理部１２１は、ＴＣＰセッション＃１，＃２のウィンドウサイズを減少させる。【０００８】
このように、通信トラフィックがＴＣＰであり、レイヤ２においてもＩＥＥＥ８０２．１Ｑａｕに規定されているような輻輳制御を行なう場合、図２２に示すように、輻輳発生時にレイヤ２とレイヤ４の両方で輻輳制御が働く。これらの輻輳制御は、レイヤ２とレイヤ４とで別個に行なわれる。
図２２は、レイヤ２とレイヤ４とにおいて独立して行なう輻輳制御を模式的に示す図であり、（ａ）は出力レート、（ｂ）は輻輳制御処理を示す。【０００９】
図２２（ｂ）に示すように、情報処理装置１０５は、レイヤ２を処理するレイヤ２（Ｌ２）処理部１１１と、レイヤ４を処理するＬ４処理部１２１とを備える。
輻輳発生時には、レイヤ２の輻輳が先に検出され、Ｌ２処理部１１１のレート制御処理部１１７がレート制御を行なう。しかし、この時点では、レイヤ４では輻輳が未だ検知されていないため、Ｌ４処理部１２１は輻輳制御を行なわない。【００１０】
このため、レイヤ２の輻輳制御の開始から、レイヤ４の出力レートが制御されるまでに、図２２の（ａ）のグラフに示すようにタイムラグが発生する。その結果、レイヤ４の出力レートが制御されるまでに、レイヤ２から送出な可能レート以上でレイヤ４から、パケットが出力されるため、レイヤ２においてパケットロスが発生してしまう。
１つの側面では、本発明は、輻輳の発生時に、下位レイヤと上位レイヤ間の輻輳制御開始のタイムラグに起因するパケットロスを防止することを目的とする。【００１１】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
【課題を解決するための手段】
【００１２】
このため、この輻輳制御方法は、それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する方法であって、前記下位レイヤにおいて輻輳を検知し、前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知し、前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定し、前記設定時に、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定する。
【００１３】
また、この輻輳制御装置は、それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する輻輳制御装置であって、前記下位レイヤにおいて輻輳を検知する検知部と、前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルと、を備え、前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定する。
【００１４】
また、この通信システムは、情報処理装置と上位装置とが中継装置で接続されており、固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式で通信を行なう通信システムであって、前記情報処理装置は、前記下位レイヤにおいて輻輳を検知する検知部と、前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルと、を備え、前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定する。
【００１５】
また、この輻輳制御プログラムは、コンピュータに、それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御させる輻輳制御プログラムであって、前記プログラムは、該コンピュータに、前記下位レイヤにおいて輻輳を検知させ、前記輻輳の検知と、前記下位レイヤにおける制御レートを含む前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知させ、前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定させ、前記設定時に、前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定させる。
【発明の効果】
【００１６】
１実施形態によれば、輻輳の発生時に、下位レイヤと上位レイヤ間の輻輳制御開始のタイムラグに起因するパケットロスを防止できる。
【図面の簡単な説明】
【００１７】
【図１】実施形態の一例としての輻輳制御装置の機能構成を模式的に示す図である。
【図２】実施形態の一例としての輻輳制御装置のハードウェア構成を模式的に示す図である。
【図３】実施形態の一例としての輻輳制御装置が使用されるネットワーク構成の例を模式的に示す図である。
【図４】実施形態の一例としての輻輳制御装置のＬ４処理部の構成例を模式的に示す図である。
【図５】実施形態の一例としての輻輳制御装置における輻輳発生時の動作を模式的に示す図である。
【図６】実施形態の一例としての輻輳制御装置における輻輳発生時のレイヤ４のウィンドウ制御を模式的に示すグラフである。
【図７】実施形態の一例としての輻輳制御装置における輻輳解消時の動作を模式的に示す図である。
【図８】実施形態の一例としての輻輳制御装置におけるＴＣＰセッション追加時の動作を模式的に示す図である。
【図９】実施形態の一例としての輻輳制御装置におけるＴＣＰセッション削除時の動作を模式的に示す図である。
【図１０】実施形態の一例としての輻輳制御装置における処理を示すフローチャートであり、（ａ）は輻輳発生時、（ｂ）は輻輳解除時、（ｃ）はＴＣＰセッションの追加又は削除時のそれぞれの処理を示す。
【図１１】図３のネットワーク構成例において輻輳が発生していない状態を模式的に示す図である。
【図１２】図１１の例における処理を模式的に示す図であり、（ａ）はウィンドウサイズ、（ｂ）は出力レート、（ｃ）は輻輳制御装置を示す。
【図１３】図３のネットワーク構成例における輻輳発生時の状態を模式的に示す図である。
【図１４】図３のネットワーク構成例における輻輳通知後の状態を模式的に示す図である。
【図１５】図１４の例における輻輳制御処理を模式的に示す図であり、（ａ）はウィンドウサイズ、（ｂ）は出力レート、（ｃ）は輻輳制御装置を示す。
【図１６】図３のネットワーク構成例におけるＴＣＰセッション追加時の輻輳制御処理を模式的に示す図であり、（ａ）はウィンドウサイズ、（ｂ）は出力レート、（ｃ）は輻輳制御装置を示す。
【図１７】図３のネットワーク構成例におけるＴＣＰセッション削除時の輻輳制御処理を模式的に示す図であり、（ａ）はウィンドウサイズ、（ｂ）は出力レート、（ｃ）は輻輳制御装置を示す。
【図１８】図３のネットワーク構成例における輻輳解消時の状態を模式的に示す図である。
【図１９】図１８の例における処理を模式的に示す図であり、（ａ）はウィンドウサイズ、（ｂ）は出力レート、（ｃ）は輻輳制御装置を示す。
【図２０】ＩＥＥＥ８０２．１Ｑａｕの輻輳制御を模式的に示す図である。
【図２１】ＴＣＰにおけるウィンドウサイズの制御を模式的に示すグラフである。
【図２２】レイヤ２とレイヤ４とにおいて独立して行なう輻輳制御を模式的に示す図であり、（ａ）は出力レート、（ｂ）は輻輳制御処理を示す。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態を説明する。
(Ａ）構成
まず、実施形態の一例としての輻輳制御装置１の構成について説明する。
図１は、実施形態の一例としての輻輳制御装置１の機能構成を模式的に示す図である。
本輻輳制御装置１は、例えば、情報処理装置５５（図２参照）に備えられている。
【００１９】
輻輳制御装置１は、Ｌ２処理部１１と、Ｌ４処理部２１とを備える。
Ｌ２処理部１１（図中、Ｌ２とも図示する）は、レイヤ２（下位レイヤ）に関する輻輳処理を行なう。Ｌ２処理部１１は、スイッチ５３（図３参照）から輻輳通知パケット６１を受信する。この輻輳通知パケット６１には、出力レートを制御する対象の宛先ＩＰアドレス（以下、「対象宛先ＩＰアドレス」と呼ぶ）６３と、Ｌ２制御レート６５とが記載されている。このＬ２制御レートは、輻輳を解消するためにスイッチ５３が算出した、各送信元ノードが対象宛先ＩＰアドレスに出力する際の上限レートである。
【００２０】
Ｌ２処理部１１は、輻輳通知パケット６１を受信すると、ＩＥＥＥ８０２．１Ｑａｕに準拠したレイヤ２の輻輳制御を行なうと共に、後述するＬ４処理部２１に対して輻輳の発生を通知する。その際、Ｌ２処理部１１は、Ｌ４処理部２１に、対象宛先ＩＰアドレス６３を通知すると共に、Ｌ２制御レート６５もレート制御情報として通知する。
Ｌ２処理部１１は、送受信パケット制御部１３、輻輳制御部（通知部）１５、レート制御処理部（検知部）１７及び輻輳制御テーブル３３を備える。
【００２１】
送受信パケット制御部１３は、情報処理装置５５と、外部装置との間でやりとりされるパケット送受信に関わる制御を行なう。
輻輳制御部１５は、後述するレート制御処理部１７が、スイッチ５３（図３参照）から輻輳通知パケット６１を受信すると、レイヤ２において輻輳の発生を検知する。そして、輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に、輻輳の発生を通知する。その際、輻輳制御部１５は、ＴＣＰセッション制御部２３に、対象宛先ＩＰアドレス６３を通知すると共に、Ｌ２制御レート６５をレート制御情報として通知する。
【００２２】
また、レート制御処理部１７は、輻輳通知パケット６１内の制御対象宛先ＩＰアドレス６３と、Ｌ２制御レート６５とを、輻輳制御テーブル３３の対応するフィールド３４，３５（図５参照）に記載する。
なお、輻輳が解消されると、スイッチ５３は、輻輳通知パケット６１の送信を中止する。このため、輻輳制御部１５は、レート制御処理部１７がスイッチ５３（図３参照）から所定期間、輻輳通知パケット６１を受信していない場合、レイヤ２の輻輳が解消されたと判定する。この場合、輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に、輻輳の解除を通知する。その際、輻輳制御部１５は、制御解除対象の宛先ＩＰアドレスもＴＣＰセッション制御部２３に通知する。
【００２３】
輻輳が解消され、レート制御処理部１７は、輻輳制御テーブル３３内の対応するレコードを更新する。
レート制御処理部１７は、スイッチ５３（図３参照）から輻輳通知パケット６１を受信すると、ＩＥＥＥ８０２．１Ｑａｕに従って、送受信パケット制御部１３からの出力レートを、輻輳通知パケット６のＬ２制御レート６５で通知されている値に下げて、輻輳を解消する。
【００２４】
輻輳制御テーブル３３は、レイヤ２における輻輳制御のための情報を格納するテーブルである。輻輳制御テーブル３３は、図５に示すように、制御対象宛先ＩＰアドレス３４とＬ２制御レート３５との各フィールドを備える。
制御対象宛先ＩＰアドレス３４は、Ｌ２レイヤにおけるレート制御対象となる宛先ＩＰアドレスであり、スイッチ５３から送信される輻輳通知パケット６１内の制御対象宛先ＩＰアドレス６３の値が格納される。
【００２５】
Ｌ２制御レート３５は、Ｌ２レイヤにおいて輻輳を解消するための各送信元ノードが出力できる上限レートであり、スイッチ５３から送信される輻輳通知パケット６１内のＬ２制御レート６５の値が格納される。
図１に示すように、Ｌ４処理部２１（図中、Ｌ４とも図示する）は、レイヤ４（上位レイヤ）における輻輳処理を行なう。Ｌ４処理部２１は、ＴＣＰ標準の輻輳制御の開始前に、Ｌ２処理部１１からの通知に従って、各ＴＣＰセッションのウィンドウサイズを下げることにより、レイヤ４の出力レートを低下させ、タイムラグによるパケットロスの発生を阻止する。
【００２６】
Ｌ４処理部２１は、ＴＣＰセッション制御部（制御部）２３、ＴＣＰ処理部（処理部）２５、及びセッションアトリビュートテーブル（管理テーブル）４３を備える。
ＴＣＰセッション制御部２３は、レイヤ２の輻輳発生時に、Ｌ２処理部１１の輻輳制御部１５から通知された制御対象宛先ＩＰアドレス及びレート制御情報に基づいて、後述するセッションアトリビュートテーブル４３を更新する。詳細には、ＴＣＰセッション制御部２３は、後述するセッションアトリビュートテーブル４３のＬ２制御レート４８（図４参照）を、通知されたレート制御情報で更新する。更に、ＴＣＰセッション制御部２３は、各ＴＣＰセッションの重み割合を計算し、セッションアトリビュートテーブル４３の重み割合４７に記録する。なお、重み及び重み割合については後述する。
【００２７】
ＴＣＰ処理部２５は、各ＴＣＰセッションを処理する。図１の例では、ＴＣＰ処理部２５は、ＴＣＰセッション＃１〜＃ｎのｎ（ｎは１以上の自然数）個のＴＣＰセッションを同時に処理している。また、ＴＣＰ処理部２５は、レイヤ２の輻輳発生時に、セッションアトリビュートテーブル４３に従って、各ＴＣＰセッションのウィンドウサイズを下げて、パケットロスを防止する。この処理については後述する。
【００２８】
セッションアトリビュートテーブル４３は、各ＴＣＰセッションのアトリビュート値を格納しているテーブルである。セッションアトリビュートテーブル４３は、図４に示すように、セッションＩＤ４４、宛先ＩＰアドレス４５、重み４６、重み割合４７及びＬ２制御レート４８の各フィールドを備える。
セッションＩＤ４４は、ＴＣＰセッションを識別する情報を格納するフィールドである。図４の例では、セッションＩＤ４４にＴＣＰセッション名が記述されている。
【００２９】
宛先ＩＰアドレス４５は、ＴＣＰセッションの宛先ＩＰアドレスを示す。
重み４６は、前述のように、ＴＣＰセッション間の優先順位を設定するために使用される設定値である。優先順位の高いＴＣＰセッションには、重み４６に高い値が設定される。前述のように、デフォルト設定では、全てのＴＣＰセッションの重み４６が同じ値に設定されている。
【００３０】
重み割合４７は、各ＴＣＰセッションの重み４６の割合であり、例えば、以下の式に従って計算される。
重み割合＝各ＴＣＰセッションの重み／全ＴＣＰセッションの合計重み
Ｌ２制御レート４８は、Ｌ２レイヤにおける制御レートであり、Ｌ２処理部１１の輻輳制御部１５から通知されたレート制御情報の値を格納する。
【００３１】
ＴＣＰ処理部２５は、ＴＣＰセッション＃１〜＃ｎの処理にあたり、セッションアトリビュートテーブル４３の重み割合４７とＬ２制御レート４８とに基づいて、各ＴＣＰセッションのウィンドウサイズと出力レートとを計算する。ＴＣＰ処理部２５は、ウィンドウサイズと出力レートとを、例えば、以下の式に従って求める。
ウィンドウサイズ＝ＴＣＰセッション出力レート×ラウンドトリップタイム（Round Trip Time：ＲＴＴ）  …式（１）
ＴＣＰセッション出力レート＝レイヤ２における制御レート×重み割合          …式（２）
ここで、ＲＴＴとは、例えば、１パケットの往復時間であり、単位は秒（ｓ）である。
【００３２】
なお、セッションアトリビュートテーブル４３の重み４６には、例えばデフォルトでは、全ＴＣＰセッションに対して同じ重みの値が設定される。しかし、ユーザ等が、プロビジョニング（事前設定）に基づいて、ＴＣＰセッション毎に異なる値を設定してもよい。或いは、各ＴＣＰセッションの輻輳発生時点でのウィンドウサイズの比率により、各ＴＣＰセッションに対して重みを動的に設定してもよい。
【００３３】
図２は、実施形態の一例としての輻輳制御装置１のハードウェア構成を模式的に示す図である。
前述のように、実施形態の一例としての輻輳制御装置１は、例えば、情報処理装置５５に備えられている。
情報処理装置５５は、例えば、ＣＰＵ（Central Processing Unit）３、メモリ５、インタフェース（interface：Ｉ／Ｆ）７、ストレージ８及びバス９を備える。
【００３４】
ＣＰＵ３は、メモリ５やストレージ８等から不図示の輻輳制御プログラムを読み出し、輻輳制御装置１としての処理を実行するプロセッサである。
メモリ５は、ＣＰＵ３が演算や制御を行なうに際して、種々のデータやプログラムを一時的に格納する記憶領域である。また、メモリ５は、輻輳制御装置１が使用する輻輳制御テーブル３３を格納する輻輳制御テーブル格納部３１、及びセッションアトリビュートテーブル４３を格納するセッションアトリビュートテーブル格納部４１としても機能する。メモリ５は、例えばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などである。
【００３５】
Ｉ／Ｆ７は、情報処理装置５５と外部との接続に使用されるインタフェースであり、例えばネットワークＩ／Ｆボードなどである。
ストレージ８は、例えば、情報処理装置５５のオペレーティングシステム（Operating System）やプログラム、各種データを記憶しているストレージ装置である。例えば、ストレージ８は、ハードディスクドライブ（Hard Disk Drive：ＨＤＤ）やＳＳＤ（Solid State Drive）などの不揮発でも、他の記憶装置でもよい。
【００３６】
バス９は、ＣＰＵ３、メモリ５、Ｉ／Ｆ７、ストレージ８や、情報処理装置５５のその他の部品を内部的に接続している相互接続バスである。
図３は、実施形態の一例としての輻輳制御装置１が使用されるネットワーク構成の例を模式的に示す図である。
図３に示すように、それぞれ輻輳制御装置１を備えた情報処理装置５５−１〜５５−３（テナントＡ〜Ｃ）が、スイッチ５３を介して、サーバ５１に接続され、サーバ５１からサービスや環境等の提供を受けている。
【００３７】
図３のネットワーク構成において、サーバ５１とスイッチ５３間の最大レートは、例えば、１００メガビット／秒（Ｍｂ／ｓ）である。また、スイッチ５３と、各情報処理装置５５−１〜５５−３間の最大レートは、例えば、それぞれ１００Ｍｂ／ｓである。
サーバ５１は、テナントＡ〜Ｃにサービスや環境等を提供するために、各テナントに対応する仮想マシン（Virtual Machine：ＶＭ）５７−１〜５７−３を実行している。
【００３８】
なお、以下、情報処理装置を示す符号としては、複数の情報処理装置のうち１台を特定する必要があるときには符号５５−１〜５５−３を用いるが、任意の情報処理装置を指すときには符号５５を用いる。
また、以下、ＶＭを示す符号としては、複数のＶＭのうち１つを特定する必要があるときには符号５７−１〜５７−３を用いるが、任意のＶＭを指すときには符号５７を用いる。
【００３９】
スイッチ５３は、例えば、ＩＥＥＥ８０２．１Ｑａｕの輻輳制御に対応したスイッチであり、特定のリンクにおいて輻輳を検知すると、その発信元の情報処理装置５５（輻輳制御装置１）に対して輻輳通知を行なう。
次に、実施形態の一例としての輻輳制御装置１のＬ４（ＴＣＰレイヤ）処理部２１について詳細に説明する。
【００４０】
図４は、輻輳制御装置１のＬ４処理部２１の構成例を模式的に示す図である。
この図の例では、Ｌ４処理部２１において、例えば、ＴＣＰ処理部２５（図１参照）により、ＴＣＰセッション＃１とＴＣＰセッション＃２との２つのＴＣＰセッションが処理されている。
また、セッションアトリビュートテーブル４３の各フィールドには、これらのＴＣＰセッション＃１，＃２に対する値が設定されている。
【００４１】
これらのＴＣＰセッション＃１，＃２に対するセッションアトリビュートテーブル４３の重み割合４７とＬ２制御レート４８とが、ＴＣＰセッション制御部２３により設定（制御）される。
そして、セッションアトリビュートテーブル４３の重み４６、重み割合４７及びＬ２制御レート４８に基づいて、ＴＣＰ処理部２５が、セッション＃１，＃２のそれぞれの重み、重み割合及びＬ２制御レートを制御する。
（Ｂ）動作
次に、図面を参照して、実施形態の一例としての輻輳制御装置１の動作について説明する。
【００４２】
図５は、実施形態の一例としての輻輳制御装置１における輻輳発生時の動作を模式的に示す図である。
Ｌ２処理部１１のレート制御処理部１７が、スイッチ５３（図３参照）から輻輳通知パケット６１を受信すると、、輻輳制御テーブル３３を更新する。詳細には、レート制御処理部１７は、輻輳通知パケット６１に記載されている制御対象宛先ＩＰアドレス（「１０．０．０．１」）と、Ｌ２制御レート（１００Ｍｂ／ｓ）とを、輻輳制御テーブル３３の制御対象宛先ＩＰアドレス３５及びＬ２制御レート３５に登録する。
【００４３】
これと並行して、輻輳制御部１５は、輻輳の発生、制御対象宛先ＩＰアドレス及びレート制御情報としてのＬ２制御レートを、Ｌ４処理部２１のＴＣＰセッション制御部２３に通知する（図５の（１）参照）。
ＴＣＰセッション制御部２３は、通知されたセッションアトリビュートテーブル４３の制御対象宛先ＩＰアドレスに対応するＴＣＰセッションのレコードのＬ２制御レート４８を、通知されたレート制御情報に基づいて更新する（図５の（２）参照）。更に、ＴＣＰセッション制御部２３は、各ＴＣＰセッションの重み割合を計算し、セッションアトリビュートテーブル４３の重み割合４７に記録する。
【００４４】
次に、ＴＣＰ処理部２５は、セッションアトリビュートテーブル４３の値に基づいて、ＴＣＰセッション毎にウィンドウサイズを計算し、ウィンドウ制御を行なう。
このときの２つのＴＣＰセッション＃１，＃２のウィンドウサイズが、図６に示すように制御される。
図６は、実施形態の一例としての輻輳制御装置１における輻輳発生時のレイヤ４のウィンドウ制御を模式的に示すグラフである。図６の例は、ＴＣＰセッション＃１と＃２とで重み４６及びＲＴＴが等しい場合を示す。
【００４５】
このような処理を行なうことで、図６に示すように、レイヤ２におけるレート制御の開始と同時に、レイヤ２で制御されるレートでＴＣＰの出力レートも制御される。このため、パケットロスの発生を防ぐことが可能となる。
次に、図７を用いて輻輳解消時の輻輳制御装置１の動作について説明する。
図７は、実施形態の一例としての輻輳制御装置１における輻輳解消時の動作を模式的に示す図である。
【００４６】
例えば、前述の図５の状態において、Ｌ２処理部１１のレート制御処理部１７が、スイッチ５３から所定時間、輻輳通知パケット６１を受信しない場合、Ｌ２処理部１１の輻輳制御部１５は、レイヤ２の輻輳が解消されたと判定する。例えば、この所定時間は、ＩＥＥＥ８０２．１Ｑａｕに規定されている輻輳解除時間などである。そして、レート制御処理部１７は、レイヤ２のレート制御を解除する
このとき、レート制御処理部１７は、輻輳が解消されたと判定された宛先ＩＰアドレスの輻輳制御テーブル３３のエントリを削除する（図７の（３）参照）。
【００４７】
また、輻輳制御部１５は、レイヤ４処理部２１のＴＣＰセッション制御部２３に対して、輻輳解除通知と制御解除対象の宛先ＩＰアドレスの通知を行なう（図７の（１）参照）。
そして、Ｌ４処理部２１のＴＣＰセッション制御部２３は、制御解除対象の宛先ＩＰアドレスに該当する各ＴＣＰセッションの、セッションアトリビュートテーブル４３のＬ２制御レート４８の値を更新する（図７の（２）参照）。図７の例では、ＴＣＰセッション制御部２３は、例えば、Ｌ２制御レート４８に「０Ｍｂ／ｓ」を設定して、本実施形態に係るレイヤ４のレート制御を解除する。なお、Ｌ２制御レート４８に値「０Ｍｂ／ｓ」が設定されている場合、本実施形態に係るレイヤ４のレート制御を行なわないことを意味する。つまり、セッションアトリビュートテーブル４３のＬ２制御レート４８に値「０Ｍｂ／ｓ」を設定すると、本実施形態に係るレイヤ４のレート制御を解除し、ＴＣＰ標準のＷｉｎｄｏｗ制御を使用するように設定される。
【００４８】
次に、図８を用いて、新規ＴＣＰセッション追加時の輻輳制御装置１の動作を説明する。
図８は、ＴＣＰセッション追加時の輻輳制御装置の動作を模式的に示す図である。
例えば、前述の図７の状態において、図８に示すように、ＴＣＰセッション＃３が追加される。このＴＣＰセッション＃３の宛先ＩＰアドレスは、制御対象宛先ＩＰアドレスに一致する。このため、Ｌ４処理部２１のＴＣＰセッション制御部２３は、セッションアトリビュートテーブル４３に、ＴＣＰセッション＃３のエントリを追加する。その際、例えば、ＴＣＰセッション制御部２３は、新規ＴＣＰセッション＃３のＬ２制御レート４８を設定すると共に、重み４６に、既存のＴＣＰセッション＃１，＃２と同じ重み値を設定する。これに伴い、ＴＣＰセッション制御部２３は、ＴＣＰセッション＃１，＃２の重み割合４７を「１／２」から「１／３」に変更すると共に、ＴＣＰセッション＃３の重み割合４７に値「１／３」を設定する（図８の（１）参照）。
【００４９】
次に、図９を用いて、ＴＣＰセッションが削除された時の輻輳制御装置１の動作を説明する。
図９は、実施形態の一例としての輻輳制御装置１におけるＴＣＰセッション削除時の動作を模式的に示す図である。
例えば、前述の図８の状態において、図９に示すように、ＴＣＰセッション＃１が削除される。このＴＣＰセッション＃１の宛先ＩＰアドレスは、制御対象宛先ＩＰアドレスに一致する。このため、ＴＣＰセッション制御部２３は、セッションアトリビュートテーブル４３から、ＴＣＰセッション＃１のエントリを削除する。その際、例えば、ＴＣＰセッション制御部２３は、ＴＣＰセッション＃１の削除に伴い、残りのＴＣＰセッション＃２，＃３の重み割合４７を「１／３」から「１／２」に変更する（図９の（１）参照）。
【００５０】
上記図６〜図９の処理を、図１０にまとめる。
図１０は、実施形態の一例としての輻輳制御装置１の処理を示すフローチャートであり、（ａ）は輻輳発生時、（ｂ）は輻輳解除時、（ｃ）はＴＣＰセッションの追加又は削除時のそれぞれの処理を示す。
まず、図１０の（ａ）のフローを用いて輻輳発生時の処理を説明する。
【００５１】
Ｌ２レイヤにおいて輻輳が発生すると、ステップＳ１において、Ｌ２処理部１１のレート制御処理部１７が、スイッチ５３から輻輳通知パケット６１を受信する。
次に、ステップＳ３において、レイヤ２で輻輳が発生していると判定し、輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に、輻輳の発生を通知する。その際、輻輳制御部１５は、輻輳通知パケット６１に記載されている制御対象宛先ＩＰアドレス６３と、レート制御情報としてのＬ２制御レート６５とをＴＣＰセッション制御部２３に通知する。
【００５２】
また、レート制御処理部１７は、ステップＳ７において、輻輳制御テーブル３３を更新する。
次に、ステップＳ５において、Ｌ４処理部２１のＴＣＰセッション制御部２３は輻輳を検知する。ステップＳ９において、ＴＣＰセッション制御部２３は、制御対象宛先ＩＰアドレスに一致する全ＴＣＰセッションについて、セッションアトリビュートテーブル４３のＬ２制御レート４８の値を更新する。
【００５３】
次に、ステップＳ１１において、ＴＣＰ処理部２５は、セッションアトリビュートテーブル４３に基づいて、制御対象宛先ＩＰアドレスに一致する各ＴＣＰセッションのウィンドウサイズを変更し、ＴＣＰの出力レート制御を行なう。
次に、図１０の（ｂ）のフローを用いて輻輳解消時の処理を説明する。
輻輳が解消されると、スイッチ５３は、輻輳通知パケット６１の送信を中止する。このため、ステップＳ１３において、Ｌ２処理部１１のレート制御処理部１７は、所定時間、スイッチ５３から輻輳通知パケット６１を受信しない。
【００５４】
この場合、ステップＳ１５において、レイヤ２の輻輳が解消されたと判定し、Ｌ２処理部１１の輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に輻輳の解除を通知する。その際、輻輳制御部１５は制御解除対象の宛先ＩＰアドレスもＴＣＰセッション制御部２３に通知する。
また、レート制御処理部１７は、ステップＳ７において、輻輳制御テーブル３３を更新する。
【００５５】
また、ステップＳ１７において、Ｌ４処理部２１のＴＣＰセッション制御部２３は、輻輳の解除を検知する。ステップＳ１９において、ＴＣＰセッション制御部２３は、制御解除対象の宛先ＩＰアドレスに該当する全ＴＣＰセッションに対する、セッションアトリビュートテーブル４３のＬ２制御レート４８の値を更新する。
次に、ステップＳ２１において、ＴＣＰ処理部２５は、制御解除対象の宛先ＩＰアドレスに該当する各ＴＣＰセッションのウィンドウサイズを変更し、ＴＣＰの出力レート制御を解除する。
【００５６】
次に、図１０の（ｃ）のフローを用いてＴＣＰセッションの追加又は削除時の処理を説明する。
ステップＳ２３において、ＴＣＰセッションが追加又は削除されると、ステップＳ２５において、ＴＣＰセッション制御部２３は、追加削除されるセッションが制御対象宛先ＩＰアドレスに一致する場合に限り、制御対象宛先ＩＰアドレスに一致する全ＴＣＰセッションについて、セッションアトリビュートテーブル４３の重み割合４７とＬ２制御レート４８との値を更新する。
【００５７】
次に、ステップＳ２７において、ＴＣＰ処理部２５は、制御対象宛先ＩＰアドレスに一致する各ＴＣＰセッションのウィンドウサイズを変更する。
次に、具体例を用いて輻輳制御装置１の動作について説明する。
ここでは、図３を用いて前述したネットワーク構成を用いて説明を行なう。
図３のネットワーク構成例では、異なる３つのテナントＡ、テナントＢ及びテナントＣがサーバ５１上の各テナントのＶＭ５７−１〜５７−３と通信し、サービスや環境等の提供を受けている。前述のように、この構成例では、輻輳制御方法としてＩＥＥＥ８０２．１Ｑａｕが使用される。また、スイッチ５３と各ノードのリンクの速度は全て１００Ｍｂ／ｓである。
【００５８】
始めに、図１１に示すように、テナントＡとテナントＢとがそれぞれサーバ５１と通信を開始し、それぞれが出力レート５０Ｍｂ／ｓでサーバ５１に送信を行なう。
テナントＡとテナントＢとはそれぞれ、前述の輻輳制御装置１を備えている。しかし、簡潔を期するため、以降の説明では、テナントＡ内の輻輳制御装置１のみに注目する。
図１１の状態においては、図１２（ｃ）に示すように、テナントＡには２つのＴＣＰセッション＃１，＃２が存在する。通信の開始後、Ｌ４処理部２１のＴＣＰ処理部２５は、ＴＣＰセッション＃１，＃２の個々のウィンドウサイズを図１２（ａ）に示すように増加させて、それぞれの出力レートを図１２（ｂ）に示すように増やす。
【００５９】
この場合、テナントＡからの出力レートが５０Ｍｂ／ｓの時のＴＣＰセッション＃１，＃２の出力レートは、それぞれ以下の値となる。なお、ＲＴＴは、例えば、それぞれ１０ｍｓとする。
ＴＣＰセッション＃１の出力レート＝８×４０ＫＢ（ウィンドウサイズ）×０．０１ｓ（ＲＴＴ）＝３２Ｍｂ／ｓ
ＴＣＰセッション＃２の出力レート＝８×２２．５ＫＢ（ウィンドウサイズ）×０．０１ｓ（ＲＴＴ）＝１８Ｍｂ／ｓ
なお、上記各式において数値８を掛けているのは、バイトをビットに変換するためである。
【００６０】
また、セッションアトリビュートテーブル４３の重み４６はデフォルト設定のままであり、各ＴＣＰセッションの重み４６は「１」である。そのため、ＴＣＰセッション制御部２３は、ＴＣＰセッション＃１，＃２の重み割合４７に、それぞれ「１／２」を設定する。
次に、図１３に示すように、テナントＣが、５０Ｍｂ／ｓでサーバ５１との通信を開始すると、サーバ５１とスイッチ５３間のリンクの速度である１００Ｍｂ／ｓを越えるため、スイッチ５３上で輻輳が発生する。その結果、スイッチ５３は、各送信元ノード（テナントＡ〜Ｃ）に輻輳通知パケット６１を送信する。
【００６１】
例えば、スイッチ５３は、各ノードに対して、１００Ｍｂ／ｓの帯域を公平に分配した３３Ｍｂ／ｓで送信を行なうように、図１４に示すように、輻輳通知パケット６１で３３Ｍｂ／ｓのＬ２制御レートを通知する。
図１５は、図１４の輻輳通知後のテナントＡにおける輻輳制御処理を示す。図１５（ａ），（ｂ）に示すように、時点ｔ１において、輻輳が発生し、Ｌ２制御レートの出力レートが３３Ｍｂ／ｓに制限される。このとき、図１５（ｃ）に示すように、レイヤ２処理部１１の輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に対して、輻輳通知と、制御対象宛先ＩＰアドレスである「１０．０．０．１」と、レート制御情報として「３３Ｍｂ／ｓ」とを通知する。
【００６２】
レイヤ２処理部１１の輻輳制御部１５から輻輳通知を受け取ったＴＣＰセッション制御部２３は、宛先ＩＰアドレス４５が「１０．０．０．１」に一致するＴＣＰセッションを検索し、該当するＴＣＰセッションのＬ２制御レート４８の値を「３３Ｍｂ／ｓ」に更新する。
その後、ＴＣＰ処理部２５は、ＴＣＰセッション＃１，＃２のウィンドウサイズを以下のように変更する。
【００６３】
ＴＣＰセッション＃１の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／２（重み割合）＝１６．５Ｍｂ／ｓ
ＴＣＰセッション＃１のウィンドウサイズ＝１６．５Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝２０．６ＫＢ
ＴＣＰセッション＃２の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／２（重み割合）＝１６．５Ｍｂ／ｓ
ＴＣＰセッション＃２のウィンドウサイズ＝１６．５Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝２０．６ＫＢ
次に、テナントＡにおいてＴＣＰセッション＃３が追加される場合の処理を図１６に示す。
【００６４】
図１６（ａ），（ｂ）に示すように、時点ｔ２において、ＴＣＰセッション＃３が追加される。追加されたＴＣＰセッション＃３は、宛先ＩＰアドレスが「１０．０．０．１」であるため、制御対象のＴＣＰセッションである。
そのため、図１６（ｃ）に示すように、ＴＣＰセッション制御部２３は、宛先ＩＰアドレスが「１０．０．０．１」であるＴＣＰセッション＃１，＃２の重み割合４７の値を「１／３」に更新する。これに伴い、ＴＣＰ処理部２５は、ウィンドウサイズを再計算し、ＴＣＰセッション＃１〜＃３のウィンドウサイズを以下の値に変更する。
【００６５】
ＴＣＰセッション＃１の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／３（重み割合）＝１１Ｍｂ／ｓ
ＴＣＰセッション＃１のウィンドウサイズ＝１１Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝１３．８ＫＢ
ＴＣＰセッション＃２の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／３（重み割合）＝１１Ｍｂ／ｓ
ＴＣＰセッション＃２のウィンドウサイズ＝１１Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝１３．８ＫＢ
ＴＣＰセッション＃３の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／３（重み割合）＝１１Ｍｂ／ｓ
ＴＣＰセッション＃３のウィンドウサイズ＝１１Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝１３．８ＫＢ
次に、テナントＡにおいてＴＣＰセッション＃１が削除された場合の処理を図１７に示す。
【００６６】
図１７（ａ），（ｂ）に示すように、時点ｔ３において、ＴＣＰセッション＃１が削除される。削除されたＴＣＰセッション＃１は、宛先ＩＰアドレスが「１０．０．０．１」であるため、制御対象のＴＣＰセッションである。
そのため、図１７（ｃ）に示すように、ＴＣＰセッション制御部２３は、宛先ＩＰアドレスが「１０．０．０．１」であるＴＣＰセッション＃２，＃３の重み割合４７の値を「１／２」に更新する。これに伴い、ＴＣＰ処理部２５は、ウィンドウサイズを再計算し、ＴＣＰセッション＃２，＃３のウィンドウサイズを以下の値に変更する。
【００６７】
ＴＣＰセッション＃２の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／２（重み割合）＝１６．５Ｍｂ／ｓ
ＴＣＰセッション＃２のウィンドウサイズ＝１６．５Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝２０．６ＫＢ
ＴＣＰセッション＃３の出力レート＝３３Ｍｂ／ｓ（レイヤ２制御レート）×１／２（重み割合）＝１６．５Ｍｂ／ｓ
ＴＣＰセッション＃３のウィンドウサイズ＝１６．５Ｍｂ／ｓ×０．０１ｓ（ＲＴＴ）／８＝２０．６ＫＢ
次に、テナントＣの通信が終了し、輻輳が解消された状態を図１８に示す。
【００６８】
スイッチ５３における輻輳が解消されると、スイッチ５３は、送信元ノード（テナントＡ，Ｂ）に対して輻輳通知パケット６１の送信を中止する。
この場合、送信元ノード（テナントＡ，Ｂ）の輻輳制御装置１はレート制御を解除し、送信レートを再び増加させる。
図１９は、図１８に示した輻輳解除後のテナントＡにおける輻輳制御処理を示す。図１９（ａ），（ｂ）に示すように、ｔ４において、輻輳解除によってレイヤ２のレート制御が解除されると、輻輳制御部１５は、Ｌ４処理部２１のＴＣＰセッション制御部２３に対して、輻輳解除通知と制御解除対象ＩＰアドレスである「１０．０．０．１」とを通知する。
【００６９】
レイヤ２処理部１１の輻輳制御部１５から輻輳解除通知を受け取ったＴＣＰセッション制御部２３は、宛先ＩＰアドレス４５が「１０．０．０．１」に一致するＴＣＰセッションを検索し、該当するＴＣＰセッションのＬ２制御レート４８の値を「０Ｍｂ／ｓ」に更新する。
その後、ＴＣＰ処理部２５は、ＴＣＰセッション＃２，＃３のウィンドウサイズ及び出力レートを、図１９（ａ），（ｂ）に示すように個々に増加させる。
【００７０】
このように、実施形態の一例によれば、輻輳の発生時に、レイヤ２からレイヤ４に、輻輳の発生及びレイヤ２制御レート、及び宛先ＩＰアドレスを通知することにより、両レイヤ間の輻輳制御開始のタイムラグに起因するレイヤ２でのパケットロスを防止できる。
また、輻輳に関与するＴＣＰセッションのみのウィンドウサイズを下げることにより、輻輳に関与しない影響するＴＣＰセッションに影響を与えることなく、レイヤ２におけるパケットロスの発生を防ぐことができる。
【００７１】
これにより、輻輳に影響するＴＣＰセッションのみの出力レートの抑制が可能となり、輻輳に影響しないＴＣＰセッションのレートを低下させることがない。
（Ｃ）その他
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００７２】
例えば、上記の実施形態の例においては、セッションアトリビュートテーブル４３のＬ２制御レート４８に値「０Ｍｂ／ｓ」を設定することにより、レイヤ４のレート制御を解除し、ＴＣＰ標準の輻輳制御を使用するよう設定したが、これに限定されるものではない。例えば、Ｌ２制御レート４８に別の値を設定してレート制御の解除を指示してもよい。
なお、上記の各実施形態においては、情報処理装置５５のＣＰＵ３が、輻輳制御プログラムを実行することにより、図２のＬ２処理部１１、送受信パケット制御部１３、輻輳制御部１５、レート制御処理部１７、Ｌ４処理部２１、ＴＣＰセッション制御部２３、及びＴＣＰ処理部２５として機能する。
【００７３】
また、情報処理装置５５のメモリ５が、輻輳制御テーブル格納部３１及びセッションアトリビュートテーブル格納部４１として機能する。
なお、これらのＬ２処理部１１、送受信パケット制御部１３、輻輳制御部１５、レート制御処理部１７、Ｌ４処理部２１、ＴＣＰセッション制御部２３、及びＴＣＰ処理部２５としての機能を実現するための輻輳制御プログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置又は外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク、光ディスク、光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００７４】
Ｌ２処理部１１、送受信パケット制御部１３、輻輳制御部１５、レート制御処理部１７、Ｌ４処理部２１、ＴＣＰセッション制御部２３、及びＴＣＰ処理部２５としての機能を実現する際には、内部記憶装置（本実施形態では情報処理装置５５のメモリ５やストレージ８）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態では情報処理装置５５のＣＰＵ３）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００７５】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とを備えており、本実施形態においては、情報処理装置５５がコンピュータとしての機能を有している。
（Ｄ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する方法であって、
前記下位レイヤにおいて輻輳を検知し、
前記輻輳の検知と前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知し、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定することを特徴とする輻輳制御方法。
（付記２）
前記輻輳制御情報には前記下位レイヤにおける制御レートが含まれ、
前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理することを特徴とする付記１記載の輻輳制御方法。
（付記３）
前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、同じ重みを設定することを特徴とする付記２記載の輻輳制御方法。
（付記４）
前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、事前設定に基づいて静的に重みを設定することを特徴とする付記２記載の輻輳制御方法。
（付記５）
前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定することを特徴とする付記２記載の輻輳制御方法。
（付記６）
前記輻輳制御情報には、前記下位レイヤにおける前記出力レートを制御する対象の宛先アドレス情報が更に含まれ、
前記輻輳の発生時に、前記上位レイヤにおいて前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションを、前記輻輳に関連する１つ以上の上位レイヤセッションとして選択することを特徴とする付記２〜５のいずれか１項に記載の輻輳制御方法。
（付記７）
前記下位レイヤにおいて前記輻輳の解消を検知し、
前記輻輳の解消と、前記解消された輻輳に係る宛先アドレス情報とを前記下位レイヤから上位レイヤに通知し、
前記上位レイヤにおいて、前記解消された輻輳に係る前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションの出力レートを、セッション単位で再設定することを特徴とする付記６記載の輻輳制御方法。
（付記８）
前記輻輳発生時に、前記上位レイヤにおいて、前記下位レイヤの制御レートと、前記輻輳に関連する前記１つ以上の上位レイヤセッションの前記重みの合計に対する、前記輻輳に関連する各上位レイヤセッションの重みの割合とを用いて前記出力レートを計算し、
前記計算した出力レートとラウンドトリップタイムとを用いて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズを計算することを特徴とする付記２〜７のいずれか１項記載の輻輳制御方法。
（付記９）
前記輻輳に関連する前記１つ以上の上位レイヤセッションが保持する制御レートの値が輻輳の解除を示す値の場合、前記上位レイヤの前記固有の輻輳制御を使用することを特徴とする付記２〜８のいずれか１項に記載の輻輳制御方法。
（付記１０）
それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御する輻輳制御装置であって、
前記下位レイヤにおいて輻輳を検知する検知部と、
前記輻輳の検知と前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、を備えることを特徴とする輻輳制御装置。
（付記１１）
前記輻輳制御情報には前記下位レイヤにおける制御レートが含まれ、
前記上位レイヤにおいて、前記下位レイヤにおける前記制御レートと前記輻輳に関連する前記１つ以上の上位レイヤセッションの優先度を示す重みとを管理する管理テーブルを更に備えることを特徴とする付記１０記載の輻輳制御装置。
（付記１２）
前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、同じ重みを設定することを特徴とする付記１１記載の輻輳制御装置。
（付記１３）
前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、事前設定に基づいて静的に重みを設定することを特徴とする付記１１記載の輻輳制御装置。
（付記１４）
前記管理テーブルにおいて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれに対し、前記輻輳発生時点の前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズの比率に基づいて、動的に重みを設定することを特徴とする付記１１記載の輻輳制御装置。
（付記１５）
前記輻輳制御情報には、前記下位レイヤにおける前記出力レートを制御する対象の宛先アドレス情報が更に含まれ、
前記処理部は、前記輻輳の発生時に、前記上位レイヤにおいて前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションを、前記輻輳に関連する１つ以上の上位レイヤセッションとして選択することを特徴とする付記１１〜１４のいずれか１項に記載の輻輳制御装置。
（付記１６）
前記検知部は、前記下位レイヤにおいて前記輻輳の解消を検知し、
前記通知部は、前記輻輳の解消と、前記解消された輻輳に係る宛先アドレス情報とを前記下位レイヤから上位レイヤに通知し、
前記処理部は、前記上位レイヤにおいて、前記解消された輻輳に係る前記宛先アドレス情報に対応する１つ以上の上位レイヤセッションの出力レートを、セッション単位で再設定することを特徴とする付記１５記載の輻輳制御装置。
（付記１７）
前記処理部は、前記輻輳発生時に、前記上位レイヤにおいて、前記下位レイヤの制御レートと、前記輻輳に関連する前記１つ以上の上位レイヤセッションの前記重みの合計に対する、前記輻輳に関連する各上位レイヤセッションの重みの割合とを用いて前記出力レートを計算し、
前記計算した出力レートとラウンドトリップタイムとを用いて、前記輻輳に関連する前記１つ以上の上位レイヤセッションのそれぞれの出力サイズを計算することを特徴とする付記１１〜１６のいずれか１項記載の輻輳制御装置。
（付記１８）
前記処理部は、前記輻輳に関連する前記１つ以上の上位レイヤセッションが保持する制御レートの値が輻輳の解除を示す値の場合、前記上位レイヤの前記固有の輻輳制御を使用することを特徴とする付記１１〜１７のいずれか１項に記載の輻輳制御装置。
（付記１９）
情報処理装置と上位装置とが中継装置で接続されており、固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式で通信を行なう通信システムであって、
前記情報処理装置は、
前記下位レイヤにおいて輻輳を検知する検知部と、
前記輻輳の検知と前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知する通知部と、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定する処理部と、を備えることを特徴とする通信システム。
（付記２０）
コンピュータに、それぞれが固有の輻輳制御を行なう下位レイヤと上位レイヤとを含む通信方式において輻輳を制御させる輻輳制御プログラムであって、
前記プログラムは、該コンピュータに、
前記下位レイヤにおいて輻輳を検知させ、
前記輻輳の検知と前記輻輳に係る輻輳制御情報とを前記下位レイヤから前記上位レイヤに通知させ、
前記上位レイヤにおいて、前記輻輳に関連する１つ以上の上位レイヤセッションの出力レートをセッション単位で設定させることを特徴とする輻輳制御プログラム。
【符号の説明】
【００７６】
１    輻輳制御装置
３    ＣＰＵ
５    メモリ
１１  Ｌ２処理部
１３  送受信パケット制御部
１５  輻輳制御部（通知部）
１７  レート制御処理部（検知部）
２１  Ｌ４処理部
２３  ＴＣＰセッション制御部
２５  ＴＣＰ処理部（処理部）
３１  輻輳制御テーブル格納部
３３  輻輳制御テーブル
３４  制御対象宛先ＩＰアドレス（輻輳制御情報、宛先アドレス情報）
３５  Ｌ２制御レート（輻輳制御情報、制御レート）
４１  セッションアトリビュートテーブル格納部
４３  セッションアトリビュートテーブル
４４  セッションＩＤ
４５  宛先ＩＰアドレス
４６  重み
４７  重み割合
４８  Ｌ２制御レート
５１  サーバ（上位装置）
５３  スイッチ（中継装置）
５５  情報処理装置
６１  輻輳通知パケット
【図１】
0006015744.tif 000002
【図２】
0006015744.tif 000003
【図３】
0006015744.tif 000004
【図４】
0006015744.tif 000005
【図５】
0006015744.tif 000006
【図６】
0006015744.tif 000007
【図７】
0006015744.tif 000008
【図８】
0006015744.tif 000009
【図９】
0006015744.tif 000010
【図１０】
0006015744.tif 000011
【図１１】
0006015744.tif 000012
【図１２】
0006015744.tif 000013
【図１３】
0006015744.tif 000014
【図１４】
0006015744.tif 000015
【図１５】
0006015744.tif 000016
【図１６】
0006015744.tif 000017
【図１７】
0006015744.tif 000018
【図１８】
0006015744.tif 000019
【図１９】
0006015744.tif 000020
【図２０】
0006015744.tif 000021
【図２１】
0006015744.tif 000022
【図２２】
0006015744.tif 000023