(57)【特許請求の範囲】
【請求項１】
複数のポートを介して受信したフレームの種類を判定し、
判定した前記受信したフレームの種類がロスレストラフィックに関するフレームの場合に、前記複数のポートそれぞれの受信レートに基づいて、前記複数のポートのうち前記ロスレストラフィックを受信したポート以外のポートから輻輳を回避するための第一の輻輳通知メッセージを送信するポートを特定し、前記第一の輻輳通知メッセージを送信する
ことを特徴とする伝送方法。
【請求項２】
前記特定したポートに関連付けられたアドレスを宛先として前記第一の輻輳通知メッセージを、送信する
ことを特徴とする請求項１に記載の伝送方法。
【請求項３】
複数のポートを介して受信したフレームの種類を判定し、
判定した前記した受信フレームの種類がロスレストラフィックに関するフレームの場合に、前記複数のポートそれぞれに割り当てられたVLAN毎に対応した受信レートに基づいて前記複数のVLANのうち前記ロスレストラフィックを受信したVLAN以外のVLANから輻輳を回避するための第一の輻輳通知メッセージを送信するポートを特定し、前記第一の輻輳通知メッセージを送信する
ことを特徴とする伝送方法。
【請求項４】
ポートを介して他の装置から輻輳の回避を通知する第二の輻輳通知メッセージを受信した場合、
前記第二の輻輳通知メッセージを、前記受信レートに基づいて、前記第二の輻輳通知メッセージの宛先を書き換えて、送信することを特徴とする請求項１乃至３のうち何れかに記載の伝送方法。
【請求項５】
前記複数のポートのうち前記ロスレストラフィックに関するフレームを受信しているポートからロスレストラフィックの完了を通知するフレームを受信すると、前記第一の輻輳通知メッセージの送信を停止する、ことを特徴とする請求項１乃至４の何れかに記載の伝送方法。
【請求項６】
ＦＣｏＥ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）フレーム又は
ＦＩＰ（ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）フレームを受信
した場合、該当の宛て先に送信する前記第一の輻輳通知メッセージの送信を停止する、
ことを特徴とする請求項１乃至５のうち何れかに記載の伝送方法。
【請求項７】
フレームを送受信する１又は複数のポートと、
前記ポートの各々の受信レートを格納する統計情報収集部と、
前記複数のポートを介して受信したフレームの種類を判定するフレーム判定部と、
前記フレーム判定部で前記受信したフレームの種類がロスレストラフィックに関するフレームの場合に、前記受信レートに基づいて前記複数のポートのうち前記ロスレストラフィックを受信したポート以外のポートから輻輳を回避するための第一の輻輳通知メッセージを送信するポートを特定輻輳特定する制御部と、
前記制御部で特定したポートに第一の輻輳通知メッセージを送信する送信部
を有する装置。
【請求項８】
装置に実行させるプログラムであって、
前記装置は制御部を有し、
前記制御部により前記プログラムが実行されると、
複数のポートから受信したフレームの種類を判定し、前記受信したフレームの種類がロスレストラフィックに関するフレームの場合に、前記複数のポートそれぞれの受信レートに基づいて前記複数のポートのうち前記ロスレストラフィックを受信したポート以外のポートから輻輳を回避するための第一の輻輳通知メッセージを送信するポートを特定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送方法、装置及びプログラムに関する。
【背景技術】
【０００２】
インターネットや広域イーサネット（登録商標）・サービスの普及に伴って、データセンタの活用が広がっている。各種のコンピュータ及び通信装置等を設置し運用するデータセンタが知られている。
【０００３】
１０ギガビット・イーサネットに関する規格の１つに、ＩＥＥＥ８０２．１Ｑａｕ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ（ＣＮ）規格が知られている（例えば、非特許文献１参照）。この規格では、輻輳の生じているＬ２スイッチが輻輳の原因と考えられるサーバに対して輻輳通知メッセージ（Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｍｅｓｓａｇｅ：  ＣＮＭ）を送信し、ＣＮＭを受信したサーバが送信するトラフィック量を抑制する。これら以外にも様々な輻輳を解消する方法が提案されている（例えば、特許文献１、特許文献２及び特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＩＥＥＥ８０２．１Ｑａｕ
【特許文献】
【０００５】
【特許文献１】特開２００４−１０４４２７号公報
【特許文献２】特開２００７−２８２０３７号公報
【特許文献３】特開２００３−０９２５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、輻輳の原因となっている送信元が送信するフレームを受信するポートを特定する伝送方法、装置及びプログラムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によると、複数のポートを介して受信するフレームに基づいて輻輳を検出し、前記検出した輻輳の原因となるフレームを受信するポートを、前記複数のポートそれぞれのトラフィック量に基づいて特定する、ことを特徴とする伝送方法が提供される。
【０００８】
本発明の一実施形態によると、フレームを送受信する１又は複数のポートと、前記ポートの各々の受信レートを格納する統計情報収集部と、前記複数のポートを介して受信したフレームに基づいて、輻輳を検出する検出部と、前記検出した輻輳の原因となるフレームを受信するポートを、前記格納された受信レートに基づいて、特定する制御部と、を有する装置が提供される。
【０００９】
本発明の一実施形態によると、装置に実行させるプログラムであって、前記装置は制御部を有し、前記制御部により前記プログラムが実行されると、ポートを介して受信するフレームに基づいて、輻輳を検出させ、前記検出された輻輳の原因となるフレームを受信するポートを、各ポートの受信レートに基づいて決定させる、ことを特徴とするプログラムが提供される。
【発明の効果】
【００１０】
開示の伝送方法、装置及びプログラムによれば、フレームを解析せずに、輻輳の原因となっている送信元が送信するフレームを受信するポートを特定することができる。
【図面の簡単な説明】
【００１１】
【図１】データセンタの概略構成図の例を示す。
【図２】Ｅｔｈｅｒｎｅｔ（登録商標）フレームのフォーマットを示す。
【図３】輻輳通知メッセージ（ＣＮＭ）のフォーマットを示す。
【図４】従来の輻輳通知方法の概略を示す。
【図５】従来のスイッチがＣＮＭを生成するときの動作を示す図である。
【図６】従来のスイッチがＣＮＭを中継するときの動作を示す図である。
【図７】本発明の一実施形態による輻輳を回避する方法の概略を示す。
【図８】本発明の一実施形態によるスイッチのハードウェア構成図である。
【図９】本発明の一実施形態によるＣＮＭを生成するスイッチの機能ブロック図である。
【図１０】本発明の一実施形態によるＣＮＭを中継するスイッチの機能ブロック図である。
【図１１】ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＦＩＰ）フレームのフォーマットを示す。
【図１２】ＦＩＰシーケンスを示す。
【図１３】本発明の一実施形態によるロスレストラフィックの通信に先立ち輻輳を回避するスイッチの機能ブロック図である。
【図１４】本発明の一実施形態によるＶＬＡＮ毎に統計情報を記憶するＭＡＣテーブルの例を示す。
【図１５】本発明の一実施形態によるスイッチがＣＮＭを生成する方法を示すフローチャートである。
【図１６】本発明の一実施形態によるスイッチがＣＮＭを中継する方法を示すフローチャートである。
【図１７】本発明の一実施形態によるスイッチがロスレストラフィックの通信に先立ち輻輳を回避する方法を示すフローチャートである。
【図１８】本発明の一実施形態によるスイッチがロスレストラフィックの通信に先立ち輻輳を回避する別の方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施形態について説明する。
【００１３】
図１にデータセンタ１００の概略構成図を示す。
【００１４】
図１に示されるように、データセンタ１００には複数のラック１０６が設置され、各ラック１０６は複数のサーバ１０２及び複数のサーバ１０２が接続されるＴｏＲ（Ｔｏｐ  ｏｆ  Ｒａｃｋ）スイッチ１０４を搭載している。ＴｏＲ（Ｔｏｐ  ｏｆ  Ｒａｃｋ）スイッチ１０４は、多くの場合、Ｌ２スイッチである。各サーバ１０２は、各ラック１０６のＴｏＲスイッチ１０４、集約スイッチ１０８、セキュリティ機能を備えたルータ１１０を介して外部ネットワーク１１２に接続される。
【００１５】
ここで、上記のデータセンタのフレームロスを回避するために使用されるＣＮＭについて説明する。
【００１６】
まず、図２はＥｔｈｅｒｎｅｔフレームフォーマットを示す。図２中、２バイト（Ｂ）のＥｔｈｅｒＴｙｐｅ（ＥＴ）フィールドはＥｔｈｅｒｎｅｔフレームのフレーム種別を表す。例えば、ＥＴが０ｘ２２Ｅ７の場合にはＣＮＭフレーム、０ｘ８１００の場合にはＩＥＥＥ８０２．１Ｑ規格に準拠したＶＬＡＮタグ付きフレーム、０ｘ８９０６の場合にはＦＣｏＥ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）フレーム、０ｘ８９１４の場合にはＦＩＰ（ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）フレームであることを示す。
【００１７】
図３は、図２のＥＴに０ｘ２２Ｅ７が設定された場合、つまりＣＮＭのフレームフォーマットを示す。簡単のため、図３は図２のＴｙｐｅフィールド以降を示す。このようなＣＮＭを受信したサーバ１０２は、ＣＮＭに含まれるＱｕａｎｔｉｚｅｄ  Ｆｅｅｄｂａｃｋフィールドに格納された値に基づき、送信レートを抑制する。抑制率は最大で５０％である。
【００１８】
次に、図４を参照して従来の輻輳通知方法を説明する。図４は、複数のサーバ４０２Ａ〜Ｆ、それぞれ複数のサーバ４０２Ａ〜Ｃ又は４０２Ｄ〜Ｆを収容するスイッチ４０４Ａ、Ｂ、スイッチ４０４Ａ及びＢを集約するスイッチ４０８を示す。図４の構成で、スイッチ４０８が自身のフレームバッファ４１０で輻輳が生じていることを検出した場合を考える。このとき、フレームバッファ４１０から抽出したフレームの送信元がサーバ４０２Ｃならば、スイッチ４０８はサーバ４０２Ｃを宛先としてＣＮＭを生成し送信する。そして、ＣＮＭはスイッチ４０４Ａで中継され、サーバ４０２Ｃへ伝達される。
【００１９】
しかし、このようなフレームの抽出はフレームバッファに蓄積されていたフレームのうち所定数のフレーム又は所定の割合のフレームしか対象とせず、各サーバ４０２Ａ〜Ｆが送信しているトラフィック量や送信レートを考慮しない。したがって、サーバ４０２Ｃの送信レートは他のサーバ４０２Ａ、Ｂ、Ｄ〜Ｆに比べて低いかも知れない。このような場合には、ＣＮＭを受信したサーバ４０２Ｃによるトラフィックの抑制量が、他のサーバ４０２Ａ、Ｂ、Ｄ〜Ｆが送信するトラフィック量に比べて非常に少なく、スイッチ４０８で生じている輻輳を解消することができない可能性がある。
【００２０】
次に、上述の輻輳通知方法が各スイッチでどのように行われるかを詳しく説明する。図５は従来のスイッチがＣＮＭを生成するときの動作を示す図である。Ｌ２スイッチ５００は、図４の輻輳を検出したスイッチ４０８に対応する。Ｌ２スイッチ５００は、４つのポート１〜４、フレームバッファ５０２、ＭＡＣテーブル５０４、ＣＰＵ５０６、メモリ５０８を有する。
【００２１】
図５中、破線矢印で示されるように、ユーザデータを伝送するフレームは、複数のポート１〜３から入力され、フレームバッファ５０２に蓄積され、順次ポート４から送信されている。ＣＰＵ５０６は、フレームバッファ５０２に蓄積されているフレーム数を監視し、所定の閾値を超えると輻輳状態であると判定する。
【００２２】
輻輳状態であると判定した場合、ＣＰＵ５０６はＣＮＭを生成し、フレームバッファ５０２に蓄積することにより、ポートを介して送信する。ここで、ＣＮＭの宛先は、輻輳状態であると判定したときにフレームバッファ５０２から抽出したフレームの送信元アドレスに決定される。図５の例では、ＣＮＭの宛先アドレス（ＤＡ）はＣに決定され、太線矢印で示されるようにポート１を介してＣＮＭが送信される。
【００２３】
フレームの抽出は、フレームバッファ５０２に蓄積されていたフレームのうち、数フレームや十数フレームのような所定数のフレーム又は５％や１０％のような所定の割合のフレームを抽出することにより行われる。ＣＰＵ５０６は、これらの限られたフレームに含まれる送信元アドレスをＣＮＭの宛先アドレスとして設定する。
【００２４】
上述のように決定されたＣＮＭの宛先は、必ずしも他の送信元と比べて多くのトラフィックを送出しているとは言えない。輻輳状態の判定を行うときに、送出するトラフィック量の少ない送信元からのフレームがたまたまフレームバッファ５０２に蓄積されていた場合、その送信元がＣＮＭの宛先として選択されてしまうからである。このように、送出するトラフィック量の少ない送信元にＣＮＭを送信して、送出するトラフィック量を抑制させたとしても、スイッチ５００に流入するトラフィック量はあまり減少せず、輻輳を解消することができない。
【００２５】
また、従来の輻輳通知方法は、中継スイッチでも行われる。図６は、従来のスイッチがＣＮＭを中継するときの動作を示す図である。Ｌ２スイッチ６００は、図４のＣＮＭを中継するスイッチ４０４Ａに対応する。Ｌ２スイッチ６００は、４つのポート１〜４、フレームバッファ６０２、ＭＡＣテーブル６０４、ＣＰＵ６０６、メモリ６０８を有する。
【００２６】
図６中、ＣＮＭの流れは太線矢印で示される。Ｌ２スイッチ６００は、例えば図５で説明したように宛先アドレス（ＤＡ）＝Ｃを有するＣＮＭ６２０をポート４で受信する。受信されたＣＮＭは、通常のデータフレームと同様にフレームバッファ６０２に蓄積され、ＭＡＣ学習され、転送される。つまり、ポート４で受信されたＣＮＭ６２０は、宛先アドレス（ＤＡ）＝Ｃのまま、ポート１からＣＮＭ６２２として送信される。
【００２７】
このように、ＣＮＭを中継するスイッチ６００は受信したＣＮＭを単に転送するだけなので、ＣＮＭを生成するスイッチ５００で生じた問題が依然として存在する。
【００２８】
さらに、図５のＬ２スイッチ５００は自身の装置内の状況にのみ基づきＣＮＭを生成し、図６のＬ２スイッチ６００は受信したＣＮＭを単に転送するのみなので、多段接続されたスイッチを介して接続された送信元の状況を考慮していない。したがって、生成され転送されるＣＮＭの宛先は、本来ＣＮＭを送信すべき宛先、つまり送信トラフィック量が多く輻輳の原因となっている送信元と異なるという問題が起こり得る。
【００２９】
また、近年、データセンタではロスレストラフィックに対する要望が増してきている。例えば、ＦＣｏＥトラフィックは本来ロスレスのＦＣ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ）をフレームロスを前提とするＥｔｈｅｒｎｅｔ上で動作させるため、ロスレスのＥｔｈｅｒｎｅｔが求められる。従来のＣＮでは、図４、５等に関連して上述したように輻輳が発生した後に、ＣＮＭを送信することにより輻輳を回避しようとしている。しかし、輻輳が発生してから回避されるまでの間にフレームロスが生じてしまうという問題がある。
【００３０】
＜輻輳を回避する方法の概略＞
図７を参照して、本発明の一実施形態による輻輳を回避する方法の概略を説明する。図７の構成は図４の構成と同様である。図７は、複数のサーバ７０２Ａ〜Ｆ、それぞれ複数のサーバ７０２Ａ〜Ｃ又は７０２Ｄ〜Ｆを収容するスイッチ７０４Ａ、Ｂ、スイッチ７０４Ａ及びＢを集約するスイッチ７０８を示す。図７の構成で、スイッチ７０８が自身のフレームバッファ７１０で輻輳が生じていることを検出した場合を考える。
【００３１】
スイッチ７０８は自身のフレームバッファ７１０に蓄積されているフレーム数が所定の閾値Ｂｔｈよりも多くなると、輻輳状態であると判定し、ＣＮＭを生成し送信する。このとき、ＣＮＭの宛先は、フレームバッファ７１０から抽出したフレームの送信元アドレスとするのではなく、スイッチ７０８が有する各ポート（Ｐｏｒｔ１、２、４）の統計情報に基づき決定される。
【００３２】
つまり、スイッチ７０８は、検出した輻輳の原因となるフレームがどのポートから入力されたのかを特定する。このようにフレームを解析しなくても、輻輳の原因となるフレームが入力されたポートを特定することが出来る。
【００３３】
統計情報は、ポート毎のトラフィック量を表すものであればよい。例えば、トラフィック量は、単位時間あたりのフレーム数、ビット数又はバイト数等をカウントした受信レートであってもよい。或いは、スイッチの全てのポートの中での受信レートの順位、又は高／中／低等の分類であってもよい。
【００３４】
スイッチ７０８が統計情報を調べた結果、ポート１の受信レートがポート２、４よりも高かった場合、スイッチ７０８は、最も高い受信レートを有するポート１からＣＮＭを送信すべきであると決定し、ポート１に割り当てられているサーバ７０２Ａ、Ｂ、ＣをＣＮＭの宛先として決定する。
【００３５】
代替として、統計情報は、ポートに割り当てられたＭＡＣアドレス毎のトラフィック量を表してもよい。スイッチ７０８が統計情報を調べた結果、サーバ７０２ＣのＭＡＣアドレス（Ｃ）に関連する受信レートが他のＭＡＣアドレスのものよりも高かった場合、スイッチ７０８は、最も高い受信レートを有するＭＡＣアドレス（Ｃ）、つまりサーバ７０２ＣをＣＮＭの宛先として決定する。
【００３６】
このように、スイッチ７０８は、統計情報に基づいてＣＮＭの宛先を決定するので、実際に輻輳の原因となる多くのトラフィックを送出している送信元へＣＮＭを送信することができる。したがって、輻輳であると判定されたときにフレームバッファ内に存在していたフレームの送信元をＣＮＭの宛先とする場合に比べて、輻輳を確実に回避することができる。
【００３７】
＜ＣＮＭを生成する装置＞
次に、スイッチがＣＮＭをどのように生成するかを説明する。
【００３８】
図８は、本発明の一実施形態によるスイッチのハードウェア構成図である。
【００３９】
スイッチ８００は、シャーシ８０２と、シャーシに格納されるカード８０４〜８１２とを有する。
【００４０】
シャーシ８０２は、各カードを格納する筐体である。
【００４１】
ＩＦ(Interface)カード８０４は、特定のネットワークで通信を行う際の送受信処理を行うためのカードである。例えば、Ethernetに接続するための送受信処理を行うことが出来る。例えば、プロセッサ８１４やRAM８１６やROM８１８等が搭載されている。
【００４２】
ＳＷカード８０６は、パケットの交換(スイッチング)機能を有するカードである。
【００４３】
管理モジュール８０８は各カードを管理するための機能を有する。
【００４４】
電源モジュール８１０は、スイッチが動作するためのパワーの供給元である。
【００４５】
ファンモジュール８１２は、異常な温度上昇により部品が損傷してしまうのを防ぐための冷却機能を有する。
【００４６】
このようなカードを実装する装置でＣＮＭを生成することが出来る。
【００４７】
図９は、本発明の一実施形態によるＣＮＭを生成するスイッチの機能ブロック図である。図９は、本発明の一実施形態によるスイッチ８００の各カードに搭載されたプロセッサ８１４がメモリ８１６、８１８に格納されたプログラムを実行したときの機能を示す。
【００４８】
スイッチ８００は、ＩＦ（Ｉｎｔｅｒｆａｃｅ）機能部９１０とフレーム処理部９２０とスイッチ機能部９３０とを有する。
【００４９】
また、ＩＦ機能部９１０とフレーム処理部９２０はＩＦカード８０４のプロセッサ８１４がＲＡＭ８１６やＲＯＭ８１８に記憶されたプログラム等を実行することで実現する機能を示し、スイッチ機能部９３０は、ＳＷカード８０６のプロセッサ８１４がＲＡＭ８１６やＲＯＭ８１８に記憶されたプログラムを実行することで実行される機能を示す。
【００５０】
ＩＦ機能部９１０は、フレームの送受信処理を実行する。詳細には、ＩＦ機能部９１０は、受信部９１２と統計情報収集部９１４と送信部９１６とを有する。
【００５１】
受信部９１２は、各ポートから受信するフレームを受信フレームバッファ９２２に格納する。
【００５２】
統計情報収集部９１４は、各ポートから入力されるフレームをモニタし、統計情報を取得し、随時輻輳検出部９２４に通知する。統計情報とは例えば、単位時間当たりに該ポートを通過した受信フレーム数等で良い。
【００５３】
送信部９１６は、送信フレームバッファ９２６に格納されているフレームを該当するポートに出力する。
【００５４】
次に、フレーム処理部９２０は、フレームのフォーマットを変換する。詳細には、フレーム処理部９２０は、受信フレームバッファ９２２と輻輳検出部９２４と送信フレームバッファ９２６とを有する。
【００５５】
輻輳検出部９２４は、受信フレームバッファ９２２内のフレーム数が閾値を超えると、統計情報収集部９１４で収集される統計情報に基づいて決定するポートをポート情報付与部９３４に通知する。例えば、受信レートが１番高いポートをポート情報付与部９３４に通知する。
【００５６】
このように、輻輳検出部９２４は、受信フレームバッファ９２２のフレーム数によって、輻輳を検出し、更に、各ポートの受信レートによって、輻輳の原因となるフレームがどのポートから入力されているかを特定する。
【００５７】
また、輻輳検出部９２４は、輻輳を検出したことをＣＮＭ生成部９３６に通知する。
【００５８】
スイッチ機能部９３０は、受信フレームを出力するポートを決定し、ＭＡＣテーブル９３２とポート情報付与部９３４とＣＮＭ生成部９３６とを有する。
【００５９】
ＭＡＣテーブル９３２は、例えば、ポートとアドレスが対応付けられて記憶されている。
【００６０】
ポート情報付与部９３４は、受信フレームの宛先又は送信元を解析し、アドレスをキーとしてＭＡＣテーブル９３２を検索し、アドレスに対応するポート情報を得る。そして、得られたポート情報をフレームに付与し、送信フレームバッファ９２６に格納する。また、ポート情報付与部９３４は、輻輳が検出されると、輻輳検出部９２４により通知された受信レートの１番高いポートの情報をＣＮＭ生成部９３６で生成されるＣＮＭに付与し、送信フレームバッファ９２６に格納する。
【００６１】
また、ポート情報付与部９３４は、輻輳検出部９２４により通知された受信レートの１番高いポートに属するＭＡＣアドレスをＭＡＣテーブル９３２から検索し、ＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。
【００６２】
ＣＮＭ生成部９３６は、輻輳検出部９２４から輻輳が検出されたことを通知されると、輻輳通知メッセージとしてＣＮＭを生成する。ＣＮＭ生成部９３６は、生成したＣＮＭをポート情報付与部９３４に渡す。
【００６３】
送信部９１６は、送信フレームバッファ９２６に格納されたフレームを順次ポート情報が示すポートに出力する。
【００６４】
また、輻輳検出部９２４は、受信レートが１番高いポートに限らず、代替として、上位２つ又は５つなどのように、高い受信レートを有する所定数のポートを決定してもよい。或いは、所定値より高い受信レートを有する１又は複数のポートを決定してもよい。
【００６５】
更に代替として、ＭＡＣテーブル９３２は、ＭＡＣアドレス毎に統計情報を記憶していてもよい。ＭＡＣテーブル９３２に記憶される統計情報は、統計情報収集部９１４の保持する統計情報により例えば１分毎、１時間毎のように定期的に更新される。
【００６６】
この代替の例では、輻輳検出部９２４は、統計情報収集部９１４を参照してポートを決定する代わりに、ＭＡＣテーブル９３２に記憶されているＭＡＣアドレス毎の統計情報を比較し、最も高い受信レートを有するＭＡＣアドレスを決定してもよい。或いは、輻輳検出部９２４の代わりに、ポート情報付与部９３４が、ＭＡＣテーブル９３２を参照し、最も高い受信レートを有するＭＡＣアドレスを決定してもよい。
【００６７】
また、受信レートが１番高いＭＡＣアドレスに限らず、代替として、上位２つ又は５つなどのように、高い受信レートを有する所定数のＭＡＣアドレスを決定してもよい。或いは、所定値より高い受信レートを有するＭＡＣアドレスを決定してもよい。
【００６８】
このように、フレームを解析せずに輻輳の原因となっているポートを特定することが出来るので、フレーム解析中に生じうるフレームロスを防ぐことが出来る。
【００６９】
上述のようにＭＡＣテーブル９３２に統計情報を追加することにより、ポート情報付与部９３４は、ＭＡＣテーブル９３２を参照するだけで、ＣＮＭの宛先を決定することができる。したがって、統計情報をポートやＭＡＣアドレスと関連付ける新たなテーブルを設ける必要がない。
【００７０】
本実施形態によると、実際に輻輳を引き起こしているポートからＣＮＭを送信するので、確実に輻輳を回避することができる。
【００７１】
＜ＣＮＭを中継する装置＞
次に、スイッチがＣＮＭをどのように中継するかを説明する。
【００７２】
本発明の一実施形態によるＣＮＭを中継するスイッチのハードウェア構成図は図８に示したものと同様である。図８に示したスイッチ８００により、ＣＮＭを中継することが出来る。
【００７３】
図１０は、本発明の一実施形態によるＣＮＭを中継するスイッチの機能ブロック図である。図１０は、本発明の一実施形態によるスイッチ８００の各カードに搭載されたプロセッサ８１４がメモリ８１６、８１８に格納されたプログラムを実行したときの機能を示す。
【００７４】
図１０では、図９の機能ブロックに加えて、ＩＦ機能部９１０がＣＮＭ検出部９１７を有する。他の機能ブロックは図９と同様であり、ここでは重複する説明は省略する。
【００７５】
ＣＮＭ検出部９１７は各ポートから入力されるフレームをモニタし、ＣＮＭが受信されたことを検出する。ＣＮＭ検出部９１７は、ＣＮＭが受信されたことを輻輳検出部９２４に通知する。受信されたＣＮＭは、受信フレームバッファ９２２に格納される。
【００７６】
輻輳検出部９２４は、ＣＮＭ検出部９１７からＣＮＭが受信されたことを通知されると、統計情報収集部９１４で収集される統計情報に基づいて決定するポートをポート情報付与部９３４に通知する。例えば、受信レートが１番高いポートをポート情報付与部９３４に通知する。
【００７７】
このように、輻輳検出部９２４は、ＣＮＭが検出されると、各ポートの受信レートによって、輻輳の原因となるフレームがどのポートから入力されているかを特定する。
【００７８】
ポート情報付与部９３４は、輻輳検出部９２４により決定された受信レートの１番高いポートの情報を受信フレームバッファ９２２から読み出したＣＮＭに付与し、このＣＮＭを送信フレームバッファ９２６に格納する。
【００７９】
ここで、ポート情報付与部９３４は、ＭＡＣテーブルを検索し、輻輳検出部９２４により決定されたポートに属するＭＡＣアドレスを得る。そして、得られたＭＡＣアドレスが受信したＣＮＭに含まれていた宛先アドレスと異なる場合は、ポート情報付与部９３４は、ＣＮＭの宛先アドレスを輻輳検出部９２４により決定されたポートに属するＭＡＣアドレスに書き換える。
【００８０】
代替として、輻輳検出部９２４は、上述のように高い受信レートを有する所定数のポート、或いは所定値より高い受信レートを有する１又は複数のポートを決定してもよい。
【００８１】
更に代替として、ＭＡＣテーブル９３２は、上述のようにＭＡＣアドレス毎に統計情報を記憶していてもよい。
【００８２】
そして、上述のように宛先を書き換えられたＣＮＭは、他のフレームと同様に送信フレームバッファ９２６に蓄積され、送信部９１６によりポートを介して送信される。
【００８３】
このように、ＣＮＭを中継するスイッチにおいても、フレームを解析せずに輻輳の原因となっているポートを特定することが出来るので、フレーム解析中に生じうるフレームロスを防ぐことが出来る。
【００８４】
上述のように、スイッチ８００は、統計情報に基づいてＣＮＭの宛先を書き換えるので、実際に輻輳の原因となる多くのトラフィックを送出している送信元へＣＮＭを転送することができる。これにより、スイッチ８００は、他のスイッチが輻輳時にそのスイッチのフレームバッファ内のフレームに基づき生成したＣＮＭを受信した場合にも、実際に多くのトラフィックを送出している送信元へＣＮＭを転送することができる。つまり、スイッチ８００は、複数のスイッチが多段接続されたネットワークにおいても、輻輳の原因となっている送信元へＣＮＭを転送することができ、輻輳を確実に回避することができる。
【００８５】
さらに、本実施形態のスイッチ８００が多段接続されたネットワークでは、実際に輻輳を引き起こしている送信元を宛先とするようＣＮＭの宛先を繰り返し更新し続ける。したがって、単に受信したＣＮＭをそのまま転送する場合に比べて、輻輳を確実に回避することができる。
【００８６】
また、図９と図１０の機能の両方を１つのスイッチに備えるように構成しても良い。
【００８７】
＜ロスレストラフィックへの適用／ＦＩＰシーケンスの概要＞
図４、５等に関連して上述したように、従来のＣＮでは、輻輳が発生した後にＣＮＭを送信するので、輻輳が発生してから回避されるまでの間にフレームロスが生じてしまい、近年需要の増大しているロスレストラフィックを保証することができない。したがって、将来起こり得る輻輳を未然に回避することは非常に有用である。
【００８８】
本発明の実施形態は、ロスレストラフィックとしてＦＣｏＥを例にとって説明されるが、本発明の実施形態は他のいかなるロスレストラフィックにも適用できる。
【００８９】
通常、保証されるべきロスレストラフィックが送信される前に、そのロスレストラフィック固有の初期化プロトコルが実行される。例えば、ＦＣｏＥの場合にはＦＩＰが使用される。ＦＩＰフレームは、図２に示したＥｔｈｅｒｎｅｔフレームフォーマットに従って伝達され、ＥｔｈｅｒＴｙｐｅ（ＥＴ）フィールドは０ｘ８９１４に設定される。図１１は、図２のＥＴに０ｘ８９１４が設定された場合、つまりＦＩＰフレームのフレームフォーマットを示す。簡単のため、図１１は図２のＥｔｈｅｒＴｙｐｅフィールド以降を示す。
【００９０】
次に、図１２を参照してＦＩＰシーケンス１２００について説明する。ＦＩＰシーケンス１２００は、Ｅｎｏｄｅ１２０１とＦＣＦ（Ｆｉｂｅｒ  Ｆｏｒｗａｒｄｅｒ）１２０４との間で、Ｌ２スイッチ１２０２を介して実行される。Ｅｎｏｄｅ１２０１は、例えば図１のサーバ１０２、図４のサーバ４０２Ａ〜Ｆ又は図７のサーバ７０２Ａ〜Ｆに相当する。Ｌ２スイッチ１２０２はＦＣＦ機能を備えていても備えていなくてもよい。Ｌ２スイッチ１２０２がＦＣＦ機能を備えていない場合、ネットワーク内の他のスイッチがＦＣＦ機能を備えていればよい。
【００９１】
段階１２１０で、Ｅｎｏｄｅ１２０１は、ＦＣｏＥ又はＦＩＰトラフィックを送受信するＶＬＡＮを見付ける（ＶＬＡＮ  Ｄｉｓｃｏｖｅｒｙ）。この段階は任意である。段階１２１２で、Ｅｎｏｄｅ１２０１は、Ｅｔｈｅｒｎｅｔのマルチキャストを利用して、自身が接続することができＦＣＦ機能を備えたスイッチを検索する（ＦＩＰ  Ｄｉｓｃｏｖｅｒｙ）。これに対し、ＦＣＦ１２０４はユニキャストでＥｎｏｄｅ１２０１に対しＦＣＦ１２０４のＭＡＣアドレスを返す。次に、段階１２１４で、Ｅｎｏｄｅ１２０１は、ＦＣＦ１２０４から受信したＭＡＣアドレスを用いてＦＣＦ１２０４に接続し、ファブリックログイン及びファブリックディスカバリを行い、ＦＣＦ１２０４との仮想リンクを確立する（ＦＬＯＧＩ／ＦＤＩＳＣ）。ログインにより、ＦＣｏＥの初期化が終了する。
【００９２】
ＦＣｏＥの初期化後、段階１２１６で、ＦＣｏＥによるデータ通信が行われる。
【００９３】
そして、段階１２１８で、Ｅｎｏｄｅ１２０１は、ログアウトを実行してＦＣＦ１２０４との接続を終了する。
【００９４】
＜ロスレストラフィックへの適用／ＦＩＰフレームを検出する場合＞
次に、スイッチがロスレストラフィックの通信に先立ち、どのように輻輳を回避するかを説明する。本実施形態では、ロスレストラフィックとしてＦＣｏＥを例にとって説明するが、本発明の実施形態は他のいかなるロスレストラフィックにも適用できる。
【００９５】
本発明の一実施形態によるロスレストラフィックの通信に先立ち輻輳を回避するスイッチのハードウェア構成図は図８に示したものと同様である。図８に示したスイッチ８００により、ロスレストラフィックの通信に先立ち輻輳を回避することが出来る。
【００９６】
図１３は、本発明の一実施形態によるロスレストラフィックの通信に先立ち輻輳を回避するスイッチの機能ブロック図である。図１３は、本発明の一実施形態によるスイッチ８００の各カードに搭載されたプロセッサ８１４がメモリ８１６、８１８に格納されたプログラムを実行したときの機能を示す。
【００９７】
図１３では、図９の機能ブロックに加えて、ＩＦ機能部９１０がＦＩＰ／ＦＣｏＥ検出部９１８を有する。他の機能ブロックは図９と同様であり、ここでは重複する説明は省略する。
【００９８】
ＦＩＰ／ＦＣｏＥ検出部９１８は、各ポートから入力されるフレームをモニタし、ＦＩＰフレームが受信されたことを検出する。
【００９９】
各ポートから入力された全てのＦＩＰフレームは、受信フレームバッファ９２２へ転送される。次に、ＦＩＰフレームは、スイッチ機能部９３０により決定された出力されるポートの情報を付与され、送信フレームバッファ９２６に蓄積される。そして、ＦＩＰフレームは、送信フレームバッファ９２６へ転送され、送信部９１６により、他のフレームと同様にポートから順次送信される。
【０１００】
さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、受信されたＦＩＰフレームを解析する。具体的には、ＦＩＰ／ＦＣｏＥ検出部９１８は、図１１に示すＦＩＰフレームのＦＩＰ  ｐｒｏｔｏｃｏｌ  ｃｏｄｅ、ＦＩＰ  ｓｕｂｃｏｄｅ及びＦＩＰ  Ｄｅｓｃｒｉｐｔｏｒの各フィールドに設定された値に基づき、受信したＦＩＰフレームが図１２のどの段階のＦＩＰフレームであるかを判定する。例えば、ＦＩＰ  ｐｒｏｔｏｃｏｌ  ｃｏｄｅ＝０００１ｈ、ＦＩＰ  ｓｕｂｃｏｄｅ＝０１ｈ又は０２ｈの場合には、図１２の段階１２１２（ＦＩＰ  Ｄｉｓｏｃｖｅｒｙ）のＦＩＰフレームであると判定される。また、ＦＩＰ  ｐｒｏｔｏｃｏｌ  ｃｏｄｅ＝０００２ｈ、ＦＩＰ  ｓｕｂｃｏｄｅ＝０１ｈ又は０２ｈ、ＦＩＰ  Ｄｅｓｃｒｉｐｔｏｒ＝７の場合には、図１２の段階１２１４（ＦＬＯＧＩ／ＦＤＩＳＣ）のＦＩＰフレームであると判定される。
【０１０１】
ＦＩＰ／ＦＣｏＥ検出部９１８は、例えば受信されたＦＩＰフレームが図１２の段階１２１４（ＦＬＯＧＩ／ＦＤＩＳＣ）のＦＩＰフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１４（ＦＬＯＧＩ／ＦＤＩＳＣ）のＦＩＰフレームを渡すか、通知してもよい。
【０１０２】
ＣＮＭ生成部９３６は、ＦＩＰ／ＦＣｏＥ検出部９１８からの通知に応じてＣＮＭを生成し、生成したＣＮＭをポート情報付与部９３４に渡す。
【０１０３】
ポート情報付与部９３４は、受信フレームバッファ９２２又はＦＩＰ／ＦＣｏＥ検出部９１８から得たＦＩＰフレームの宛先及び送信元に指定されたＭＡＣアドレス以外のＭＡＣアドレスを、ＣＮＭ生成部９３６から渡されたＣＮＭの宛先に設定する。つまり、ＣＮＭの宛先は、ＦＩＰフレームを送受信していないＥｎｏｄｅ（サーバ等）のＭＡＣアドレスとなる。
【０１０４】
そして、上述のように生成されたＣＮＭは、他のフレームと同様に送信フレームバッファ９２６に蓄積され、ＭＡＣテーブル９３２に記憶されているポートとＭＡＣアドレスの関連付けに従って適切なポートから順次送信される。
【０１０５】
これらのＣＮＭを受信した各Ｅｎｏｄｅは送信するトラフィック量を抑制する。
【０１０６】
ロスレストラフィックの送受信が終了すると、つまり図１２の段階１２１６（ＦＣｏＥデータ通信）が終了すると、ＣＮＭ生成部９３６は次に説明するようにＣＮＭの生成を停止する。
【０１０７】
先ず、ＦＩＰ／ＦＣｏＥ検出部９１８は、図１２の段階１２１０〜１２１４のＦＩＰフレームの場合と同様の手順でＦＩＰフレームを検出及び解析する。
【０１０８】
ＦＩＰ／ＦＣｏＥ検出部９１８は、受信されたＦＩＰフレームが図１２の段階１２１８（ＦＬＯＧＯ）のＦＩＰフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１８（ＦＬＯＧＯ）のＦＩＰフレームを渡すか、通知してもよい。
【０１０９】
例えば、ＦＩＰ  ｐｒｏｔｏｃｏｌ  ｃｏｄｅ＝０００３ｈ、ＦＩＰ  ｓｕｂｃｏｄｅ＝０２ｈ、及びＦＩＰ  Ｄｅｓｃｒｉｐｔｏｒ＝９の場合には、図１２の段階１２１８（ＦＬＯＧＯ）のＦＩＰフレームであると判定される。
【０１１０】
ＦＬＯＧＯのＦＩＰフレームは、ＦＣｏＥデータ通信が終了していること、及びＦＩＰシーケンスが終了することを意味するので、ＣＮＭ生成部９３６はＣＮＭの生成を停止する。
【０１１１】
そして、それまでＣＮＭを受信していた各Ｅｎｏｄｅは、ＣＮＭを受信しなくなると、送信するトラフィック量の抑制を解除する。
【０１１２】
このように、ロスレストラフィックが実際に送受信される前に実行される所定のプロトコルに従うフレームを検出することにより、ロスレストラフィックが実際に送受信される前にネットワークの負荷を軽減し、十分な帯域を確保することができる。したがって、輻輳を未然に回避することができ、フレームロスを未然に防ぐことによりネットワークの信頼性を向上することができる。
【０１１３】
代替として、ＦＣＦ機能を備えていないスイッチのみが、ＣＮＭを生成してもよい。これにより、ＦＣＦ機能を備えたスイッチの負荷を軽減するとともに、ネットワークで送受信されるＣＮＭを最小限に抑え、ネットワークの信頼性を更に向上することができる。
【０１１４】
また、図９、図１０及び図１３の機能の全てを１つのスイッチに備えるように構成しても良い。
【０１１５】
＜ロスレストラフィックへの適用／ＦＣｏＥフレームを検出する場合＞
上述のＦＩＰフレームを検出する場合に追加して又はその代わりに、スイッチ８００は、ＦＣｏＥフレームを検出したときにＣＮＭを生成し送信してもよい。以下にＦＣｏＥフレームの検出をトリガにＣＮＭを生成する実施形態を説明する。
【０１１６】
本実施形態によるスイッチのハードウェア構成図及び機能ブロック図は、それぞれ図８及び図１３に示したものと同様であり、ここでは重複する説明は省略する。
【０１１７】
先ず、ＦＩＰ／ＦＣｏＥ検出部９１８は、各ポートから入力されるフレームをモニタし、ＦＣｏＥフレームが受信されたことを検出する。
【０１１８】
各ポートから入力された全てのＦＣｏＥフレームは、受信フレームバッファ９２２へ転送される。次に、ＦＣｏＥフレームは、スイッチ機能部９３０により決定された出力されるポートの情報を付与され、送信フレームバッファ９２６に蓄積される。そして、ＦＣｏＥフレームは、送信フレームバッファ９２６へ転送され、送信部９１６により、他のフレームと同様にポートから順次送信される。
【０１１９】
さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、受信されたＦＩＰフレームを解析する。具体的には、ＦＩＰ／ＦＣｏＥ検出部９１８は、図２に示すＥｔｈｅｒｎｅｔフレームのＥｔｈｅｒＴｙｐｅフィールドに０ｘ８９０６が設定されていた場合、図１２の段階１２１６（ＦＣｏＥデータ通信）のＦＣｏＥフレームであると判定する。
【０１２０】
ＦＩＰ／ＦＣｏＥ検出部９１８は、受信されたＦＣｏＥフレームが図１２の段階１２１６（ＦＣｏＥデータ通信）のＦＣｏＥフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１６（ＦＣｏＥデータ通信）のＦＣｏＥフレームを渡すか、通知してもよい。
【０１２１】
ＣＮＭ生成部９３６は、ＦＩＰ／ＦＣｏＥ検出部９１８からの通知に応じてＣＮＭを生成し、生成したＣＮＭをポート情報付与部９３４に渡す。
【０１２２】
ポート情報付与部９３４は、受信フレームバッファ９２２又はＦＩＰ／ＦＣｏＥ検出部９１８から得たＦＣｏＥフレームの宛先及び送信元に指定されたＭＡＣアドレス以外のＭＡＣアドレスを、ＣＮＭ生成部９３６から渡されたＣＮＭの宛先に設定する。つまり、ＣＮＭの宛先は、ＦＣｏＥフレームを送受信していないＥｎｏｄｅ（サーバ等）のＭＡＣアドレスとなる。
【０１２３】
そして、上述のように生成されたＣＮＭは、他のフレームと同様に送信フレームバッファ９２６に蓄積され、ＭＡＣテーブル９３２に記憶されているポートとＭＡＣアドレスの関連付けに従って適切なポートから順次送信される。
【０１２４】
これらのＣＮＭを受信した各Ｅｎｏｄｅは送信するトラフィック量を抑制する。
【０１２５】
ＣＮＭの生成及び送信を停止する手順は、ＦＩＰフレームを検出する場合と同様である。
【０１２６】
このように、ロスレストラフィックの送受信を検出することにより、ロスレストラフィックが実際に送受信されると直ちにネットワークの負荷を軽減し、十分な帯域を確保することができる。したがって、輻輳を未然に回避することができ、フレームロスを未然に防ぐことによりネットワークの信頼性を向上することができる。
【０１２７】
また、図９、図１０及び図１３の機能の全てを１つのスイッチに備えるように構成しても良い。
【０１２８】
＜ＶＬＡＮに基づくＣＮＭの生成＞
上述の実施形態では、ポート毎又はＭＡＣアドレス毎の統計情報に基づき、ＣＮＭの宛先ＭＡＣアドレスを決定した。本実施形態では、ＶＬＡＮ毎の統計情報がＭＡＣテーブルに追加して記憶される。
【０１２９】
本実施形態によるスイッチのハードウェア構成図及び機能ブロック図は、それぞれ図８及び図９に示したものと同様であり、ここでは重複する説明は省略する。また、本実施形態は、図１０、１３の機能ブロック図を有するスイッチに適用されてもよい。
【０１３０】
本実施形態では、図１４に示されるＭＡＣテーブルは図９に示されるＭＡＣテーブル９３２に対応する。ＭＡＣテーブル９３２はポート、ＶＬＡＮ（ＶＬＡＮ  ＩＤ）、そのＶＬＡＮに割り当てられたＭＡＣアドレス及びＶＬＡＮ毎の統計情報を記憶する。統計情報は、統計情報収集部９１４の保持する統計情報により、例えば１分毎、１時間毎のように定期的に更新される。
【０１３１】
図１４に示した例では、統計情報として単位［Ｂｙｔｅ／ｓｅｃ］により受信レートを記憶しているが、トラフィック量を表すものであればよく、例えば単位時間あたりのフレーム数又はビット数等、或いはスイッチの全てのＶＬＡＮの中での受信レートの順位であってもよい。
【０１３２】
図１４の例では、ポート毎の統計情報を比較すると、ポート１は６５（＝３０＋３５）ＭＢｙｔｅ／ｓｅｃ、ポート２は５５（＝５０＋５）ＭＢｙｔｅ／ｓｅｃであり、ポート１が最も受信レートが高い。したがって、上述のポート毎の統計情報に基づきＣＮＭを生成する実施形態では、輻輳検出部９２４は、統計情報収集部９１４の有する統計情報に基づき、ＣＮＭを送出すべきポートとしてポート１を選択する。ポート情報付与部９３４は、輻輳検出部９２４の選択したポート１に割り当てられたＭＡＣアドレス（Ａ、Ｂ、Ｃ）をＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。
【０１３３】
しかし、ＶＬＡＮ毎の受信レートを比較すると、ポート２に割り当てられたＶＬＡＮ  ＩＤ＝１を有するＶＬＡＮの受信レートが５０ＭＢｙｔｅ／ｓｅｃであり最も高い。本実施形態では、ポート情報付与部９３４は、図１４のＭＡＣテーブルからＶＬＡＮ  ＩＤ＝１を有するＶＬＡＮに割り当てられたＭＡＣアドレス（Ｄ）をＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。
【０１３４】
本実施形態によると、輻輳を回避するための更に高精度のトラフィック制御を実現することができる。また、ＣＮＭの宛先はＶＬＡＮ単位で選択されるので、ポート単位にＣＮＭを送信する場合よりも、送信するＣＮＭの数を低減することができる。これは、ネットワーク資源の有効活用に資する。
【０１３５】
本実施形態においても、フレームを解析せずに輻輳の原因となっているＶＬＡＮを特定することが出来るので、フレーム解析中に生じうるフレームロスを防ぐことが出来る。
【０１３６】
＜ＣＮＭを生成する方法＞
図１５を参照して、ＣＮＭを生成する方法を説明する。図１５は、本発明の一実施形態によるスイッチがＣＮＭを生成する方法を示すフローチャート１５００を示す。図１５に示す方法は、図８に示したハードウェア構成図及び図９に示した機能ブロック図により説明されたスイッチ８００により実行される。
【０１３７】
方法は、段階１５０２で開始する。
【０１３８】
段階１５０４で、輻輳検出部９２４は、受信フレームバッファ９１２を監視し、輻輳が生じているか否かを調べる。受信フレームバッファ９１２に蓄積されているフレームの数が所定の閾値より多い場合、輻輳検出部９２４は輻輳状態であると判定し、ポート情報付与部９３４及びＣＮＭ生成部９３６に輻輳状態であることを通知する。次に、方法は段階１５０６に進む。
【０１３９】
段階１５０６で、輻輳検出部９２４は、統計情報収集部９１４で収集された統計情報参照する。段階１５０８で、輻輳検出部９２４は、統計情報を比較し、最も高い受信レートを有するポートを選択し、ポート情報付与部９３４に通知する。
【０１４０】
次に、段階１５１０で、ポート情報付与部９３４は、ＭＡＣテーブル９３２を参照して、段階１５０８で輻輳検出部９２により選択されたポートに割り当てられたＭＡＣアドレスを調べる。
【０１４１】
段階１５１２で、ＣＮＭ生成部９３６は、ＣＮＭを生成し、ポート情報付与部９３４に渡す。ポート情報付与部９３４は、段階１５１０でＭＡＣテーブル９３２から得たＭＡＣアドレスを、ＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。また、ポート情報付与部９３４は、輻輳検出部９２３により選択されたポートの情報をＣＮＭに付与する。
【０１４２】
そして、段階１５１４で、ポート情報付与部９３４は、段階１５１２で宛先を設定しポート情報を付与したＣＮＭを送信フレームバッファ９２６に蓄積する。送信フレームバッファ９２６に蓄積されたＣＮＭは、他のフレームと同様に順次送信される。ここで、ＣＮＭの宛先は、統計情報に基づき決定された最も受信レートの高いポートに割り当てられたＭＡＣアドレスなので、ＣＮＭは最も高い受信レートを有するポートから送出されることになる。
【０１４３】
方法は段階１５１６で終了する。
【０１４４】
代替として、段階１５０６で、図９と関連して上述したように、高い受信レートを有する所定数のポート、所定値より高い受信レートを有する１又は複数のポートが決定されてもよい。
【０１４５】
更に代替として、図９と関連して上述したように、ＭＡＣテーブル９３２がＭＡＣアドレス毎に統計情報を記憶し、ＣＮＭの宛先及び送出すべきポートを決定するために用いられてもよい。
【０１４６】
＜ＣＮＭを中継する方法＞
図１６を参照して、ＣＮＭを中継する方法を説明する。図１６は、本発明の一実施形態によるスイッチがＣＮＭを中継する方法を示すフローチャートである。図１６に示す方法は、図８に示したハードウェア構成図及び図１０に示した機能ブロック図により説明されたスイッチ８００により実行される。
【０１４７】
方法は、段階１６０２で開始する。
【０１４８】
段階１６０４で、ＣＮＭ検出部９１７は、スイッチ８００の全てのポートを監視し、ＣＮＭが受信されたか否かを調べる。ＣＮＭ検出部９１７は、受信したフレームのＥｔｈｅｒＴｙｐｅフィールドが０ｘ２２Ｅ７であった場合に、ＣＮＭが受信されたと判定し、ＣＮＭが受信されたことを輻輳検出部９２４に通知する。受信されたＣＮＭは、受信フレームバッファ９２２に格納される。次に、方法は段階１６０６に進む。
【０１４９】
段階１６０６で、輻輳検出部９２４は、ＣＮＭ検出部９１７からＣＮＭが受信されたことを通知されると、統計情報収集部９１４から統計情報を得る。
【０１５０】
段階１６０８で、輻輳検出部９２４は、統計情報を比較し、最も高い受信レートを有するポートを選択し、ポート情報付与部９３４に通知する。例えば、輻輳検出部９２４は、受信レートが１番高いポートを選択する。
【０１５１】
段階１６１０で、ポート情報付与部９３４は、段階１６０８で輻輳検出部９２４により選択されたポートに割り付けられたＭＡＣアドレスと段階１６０４で受信したＣＮＭの宛先に設定されているＭＡＣアドレスを比較する。段階１６０８で選択されたポートに割り付けられたＭＡＣアドレスの中に、ＣＮＭの宛先に設定されているＭＡＣアドレスと同じＭＡＣアドレスがある場合には、方法は段階１６１２へ進む。同じＭＡＣアドレスがない場合には、方法は段階１６１８へ進む。
【０１５２】
段階１６１２で、ポート情報付与部９３４は、段階１６０４で受信したＣＮＭの宛先を変更しない。さらに、段階１６０８で決定されたポートに割り付けられたＭＡＣアドレスであって、段階１６０４で受信したＣＮＭの宛先に設定されているＭＡＣアドレス以外の差分のＭＡＣアドレスがある場合、ＣＮＭ生成部９３６は追加のＣＮＭを生成し、ポート情報付与部９３４は、これらの差分のＭＡＣアドレスを追加のＣＮＭに設定してもよい。次に、方法は段階１６１４へ進む。
【０１５３】
段階１６１８で、ポート情報付与部９３４は、段階１６０８で決定されたポートに割り付けられたＭＡＣアドレスを、ＭＡＣテーブル９３２から検索し、ＣＮＭの宛先として選択する。
【０１５４】
段階１６２０で、ポート情報付与部９３４は、段階１６０８で決定されたポートに割り付けられたＭＡＣアドレスに、段階１６０４で受信したＣＮＭの宛先を書き換える。このとき、ＣＮＭ生成部９３６は追加のＣＮＭを生成し、ポート情報付与部９３４は、段階１６０８で決定されたポートに割り付けられた全てのＭＡＣアドレスをこの追加のＣＮＭの宛先として設定してもよい。
【０１５５】
そして、段階１６１４で、ポート情報付与部９３４は、段階１６０４で受信したＣＮＭ（段階１６１２で宛先を書き換えなかったＣＮＭ）又は段階１６２０で宛先を書き換えたＣＮＭを送信フレームバッファ９２６に蓄積する。送信フレームバッファ９２６に蓄積されたＣＮＭは、他のフレームと同様に順次送信される。
【０１５６】
ここで、ＣＮＭの宛先は、統計情報に基づき決定された最も受信レートの高いポートに割り当てられたＭＡＣアドレスなので、ＣＮＭは最も高い受信レートを有するポートから送出されることになる。
【０１５７】
方法は段階１６１６で終了する。
【０１５８】
代替として、段階１６０８で、図９又は１０と関連して上述したように、高い受信レートを有する所定数のポート、所定値より高い受信レートを有する１又は複数のポートを決定が決定されてもよい。
【０１５９】
更に代替として、図９又は１０と関連して上述したように、ＭＡＣテーブル９３２がＭＡＣアドレス毎に統計情報を記憶し、ＣＮＭの宛先及び送出すべきポートを決定するために用いられてもよい。
【０１６０】
＜ＦＩＰフレームの検出をトリガにＣＮＭを生成する方法＞
図１７を参照して、スイッチがロスレストラフィックの通信に先立ち輻輳を回避する方法を説明する。図１７は、本発明の一実施形態によるスイッチが輻輳を回避する方法を示すフローチャートである。図１７に示す方法は、図８に示したハードウェア構成図及び図１３に示した機能ブロック図により説明されたスイッチ８００により実行される。
【０１６１】
本発明の実施形態は、ロスレストラフィックとしてＦＣｏＥを例にとって説明されるが、本発明の実施形態は他のいかなるロスレストラフィックにも適用できる。
【０１６２】
方法は、段階１７０２で開始する。
【０１６３】
段階１７０４で、ＦＩＰ／ＦＣｏＥ検出部９１８は、各ポートから入力されるフレームをモニタし、ＦＩＰフレームが受信されたか否かを調べる。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、図１３と関連して説明したように、ＦＩＰフレームを解析し、図１２の段階１２１４（ＦＬＯＧＩ／ＦＤＩＳＣ）のＦＩＰフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１４（ＦＬＯＧＩ／ＦＤＩＳＣ）のＦＩＰフレームを渡すか、通知してもよい。
【０１６４】
段階１７０６で、ポート情報付与部９３４は、スイッチ８００がＦＣＦ機能を備えているか否かを調べる。ＦＣＦ機能を備えている場合には、スイッチ８００の処理負荷を軽減するため、以降の段階を実行せずに、方法は段階１７２２で終了する。ＦＣＦ機能を備えていない場合には、方法は段階１７０８へ進む。
【０１６５】
段階１７０８で、ポート情報付与部９３４は、段階１７０４でＦＬＯＧＩ／ＦＤＩＳＣのＦＩＰフレームを受信したポート以外のポートを選択する。
【０１６６】
段階１７１０で、ポート情報付与部９３４は、ＭＡＣテーブル９３２を参照して、段階１７０８で選択したポートに割り当てられたＭＡＣアドレスを得る。
【０１６７】
段階１７１２で、ＣＮＭ生成部９３６は、ＦＩＰ／ＦＣｏＥ検出部９１８からの通知に応じてＣＮＭを生成し、生成したＣＮＭをポート情報付与部９３４に渡す。ポート情報付与部９３４は、段階１７１０で得たＭＡＣアドレスをＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。
【０１６８】
段階１７１４で、ポート情報付与部９３４は、ユーザにより設定された値に基づき、フィードバック値等のＣＮＭに含まれるパラメータを編集する。
【０１６９】
段階１７１６で、ポート情報付与部９３４は、ＣＮＭを送信フレームバッファ９２６へ転送する。送信フレームバッファ９２６に蓄積されたＣＮＭは、他のフレームと同様に順次送信される。
【０１７０】
段階１７１８で、ＦＩＰ／ＦＣｏＥ検出部９１８は、各ポートから入力されるフレームをモニタし、ＦＩＰフレームが受信されたか否かを調べる。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、図１３と関連して説明したようにＦＩＰフレームを解析し、図１２の段階１２１８（ＦＬＯＧＯ）のＦＩＰフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１８（ＦＬＯＧＯ）のＦＩＰフレームを渡すか、通知してもよい。
【０１７１】
段階１７２０で、ＣＮＭ生成部９３６はＣＮＭの生成を停止する。これにより、それまでＣＮＭを受信していた各Ｅｎｏｄｅは、ＣＮＭを受信しなくなると、送信するトラフィック量の抑制を解除する。
【０１７２】
方法は段階１７２２で終了する。
【０１７３】
＜ＦＣｏＥフレームの検出をトリガにＣＮＭを生成する方法＞
図１８を参照して、スイッチがロスレストラフィックの通信の開始後に輻輳を回避する方法を説明する。図１８は、本発明の一実施形態によるスイッチが輻輳を回避する別の方法を示すフローチャートである。図１８に示す方法は、図８に示したハードウェア構成図及び図１３に示した機能ブロック図により説明されたスイッチ８００により実行される。
【０１７４】
本発明の実施形態は、ロスレストラフィックとしてＦＣｏＥを例にとって説明されるが、本発明の実施形態は他のいかなるロスレストラフィックにも適用できる。
【０１７５】
方法は、段階１８０２で開始する。
【０１７６】
段階１８０４で、ＦＩＰ／ＦＣｏＥ検出部９１８は、各ポートから入力されるフレームをモニタし、図１３と関連して説明したようにＦＣｏＥフレームが受信されたか否かを調べる。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ＦＣｏＥフレームを解析し、図１２の段階１２１６（ＦＣｏＥデータ通信）のＦＣｏＥフレームであると判定した場合、ＣＮＭ生成部９３６に通知する。さらに、ＦＩＰ／ＦＣｏＥ検出部９１８は、ポート情報付与部９３４に段階１２１６（ＦＣｏＥデータ通信）のＦＣｏＥフレームを渡すか、通知してもよい。
【０１７７】
段階１８０６で、ポート情報付与部９３４は、スイッチ８００がＦＣＦ機能を備えているか否かを調べる。ＦＣＦ機能を備えている場合には、スイッチ８００の処理負荷を軽減するため、以降の段階を実行せずに、方法は段階１８１８で終了する。ＦＣＦ機能を備えていない場合には、方法は段階１８０８へ進む。
【０１７８】
段階１８０８で、ポート情報付与部９３４は、段階１８０４でＦＣｏＥフレームを受信したポート以外のポートを選択する。
【０１７９】
段階１８１０で、ポート情報付与部９３４は、ＭＡＣテーブル９３２を参照して、段階１８０８で選択したポートに割り当てられたＭＡＣアドレスを得る。
【０１８０】
段階１８１２で、ＣＮＭ生成部９３６は、ＦＩＰ／ＦＣｏＥ検出部９１８からの通知に応じてＣＮＭを生成し、生成したＣＮＭをポート情報付与部９３４に渡す。ポート情報付与部９３４は、段階１８１０で得たＭＡＣアドレスをＣＮＭ生成部９３６により生成されたＣＮＭの宛先として設定する。
【０１８１】
段階１８１４で、ポート情報付与部９３４は、ユーザにより設定された値に基づき、フィードバック値等のＣＮＭに含まれるパラメータを編集する。
【０１８２】
段階１８１６で、ポート情報付与部９３４は、ＣＮＭを送信フレームバッファ９２６へ転送する。送信フレームバッファ９２６に蓄積されたＣＮＭは、他のフレームと同様に順次送信される。
【０１８３】
方法は段階１８１８で終了する。
【０１８４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）  複数のポートを介して受信するフレームに基づいて輻輳を検出し、
前記検出した輻輳の原因となるフレームを受信するポートを、前記複数のポートそれぞれのトラフィック量に基づいて特定する、
ことを特徴とする伝送方法。
（付記２）  前記特定したポートから、前記検出した輻輳を通知する輻輳通知メッセージを送信する、
ことを特徴とする付記１記載の伝送方法。
（付記３）  前記特定したポートに関連付けられたアドレスを宛先とする輻輳通知メッセージを、前記特定したポートから送信させる、
ことを特徴とする付記１又は２に記載の伝送方法。
（付記４）  前記各ポートに割り当てられたＶＬＡＮそれぞれの受信レートに基づいて、前記検出した輻輳の原因となっているＶＬＡＮを決定する、
ことを特徴とする付記１乃至３の何れかに記載の伝送方法。
（付記５）  ポートを介して輻輳通知メッセージを受信し、
前記受信した輻輳通知メッセージの宛先を、前記特定したポートに関連付けられたアドレスに書き換える、
ことを特徴とする付記１乃至４何れかに記載の伝送方法。
（付記６）  前記ポートを介して受信したフレームの種類と前記受信レートに基づいて、前記輻輳通知メッセージを送信するポートを決定する、
ことを特徴とする付記１乃至５の何れかに記載の伝送方法。
（付記７）  受信したフレームの種類に基づいて決定したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記２乃至６の何れかに記載の伝送方法。
（付記８）  ＦＣｏＥ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）フレーム又はＦＩＰ（ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）フレームを受信したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記６又は７に記載の伝送方法。
（付記９）  フレームを送受信する１又は複数のポートと、
前記ポートの各々の受信レートを格納する統計情報収集部と、
前記複数のポートを介して受信したフレームに基づいて、輻輳を検出する検出部と、
前記検出した輻輳の原因となるフレームを受信するポートを、前記格納された受信レートに基づいて、特定する制御部と、
を有する装置。
（付記１０）  前記制御部は、前記特定したポートから、前記検出した輻輳を通知する輻輳通知メッセージを送信させる、
ことを特徴とする付記９記載の装置。
（付記１１）  前記制御部は、前記特定したポートに関連付けられたアドレスを宛先とする輻輳通知メッセージを、前記特定したポートから送信させる、
ことを特徴とする付記９又は１０に記載の装置。
（付記１２）  前記制御部は、前記各ポートに割り当てられたＶＬＡＮそれぞれの受信レートに基づいて、前記検出した輻輳の原因となっているＶＬＡＮを決定する、
ことを特徴とする付記９乃至１１の何れかに記載の装置。
（付記１３）  ポートを介して輻輳通知メッセージを受信する受信部、
を更に有し、
前記制御部は、前記受信した輻輳通知メッセージの宛先を、前記特定したポートに関連付けられたアドレスに書き換える、
ことを特徴とする付記９乃至１２何れかに記載の装置。
（付記１４）  前記制御部は、前記ポートを介して受信したフレームの種類と前記受信レートに基づいて、前記輻輳通知メッセージを送信するポートを決定する、
ことを特徴とする付記９乃至１３の何れかに記載の装置。
（付記１５）  前記制御部は、受信したフレームの種類に基づいて決定したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記１０乃至１４の何れかに記載の装置。
（付記１６）  前記制御部は、ＦＣｏＥ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）フレーム又はＦＩＰ（ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）フレームを受信したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記１４又は１５に記載の装置。
（付記１７）  装置に実行させるプログラムであって、
前記装置は制御部を有し、
前記制御部により前記プログラムが実行されると、
ポートを介して受信するフレームに基づいて、輻輳を検出させ、
前記検出された輻輳の原因となるフレームを受信するポートを、各ポートの受信レートに基づいて決定させる、
ことを特徴とするプログラム。
（付記１８）  前記制御部は、前記特定したポートから、前記検出した輻輳を通知する輻輳通知メッセージを送信する、
ことを特徴とする付記１７記載のプログラム。
（付記１９）  前記制御部は、前記特定したポートに関連付けられたアドレスを宛先とする輻輳通知メッセージを、前記特定したポートから送信させる、
ことを特徴とする付記１７又は１８に記載のプログラム。
（付記２０）  前記制御部は、前記各ポートに割り当てられたＶＬＡＮそれぞれの受信レートに基づいて、前記検出した輻輳の原因となっているＶＬＡＮを決定する、
ことを特徴とする付記１７乃至１９の何れかに記載のプログラム。
（付記２１）  前記制御部は、ポートを介して受信した輻輳通知メッセージの宛先を、前記特定したポートに関連付けられたアドレスに書き換える、
ことを特徴とする付記１７乃至２０何れかに記載のプログラム。
（付記２２）  前記制御部は、前記ポートを介して受信したフレームの種類と前記受信レートに基づいて、前記輻輳通知メッセージを送信するポートを決定する、
ことを特徴とする付記１７乃至２１の何れかに記載のプログラム。
（付記２３）  前記制御部は、受信したフレームの種類に基づいて決定したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記１８乃至２２の何れかに記載のプログラム。
（付記２４）  前記制御部は、ＦＣｏＥ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ）フレーム又はＦＩＰ（ＦＣｏＥ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）フレームを受信したポートからの前記輻輳通知メッセージの送信を停止する、
ことを特徴とする付記２２又は２３に記載のプログラム。
【符号の説明】
【０１８５】
１００  データセンタ
１０２  サーバ
１０４  ＴｏＲスイッチ
１０６  ラック
１０８  集約スイッチ
１１０  ルータ
１１２  外部ネットワーク
４０２Ａ〜Ｆ、７００２Ａ〜Ｆ  サーバ
４０４Ａ〜Ｂ、４０８、７０４Ａ〜Ｂ、７０８  スイッチ
５００、６００、８００  スイッチ
８０２  シャーシ
８０４  ＩＦカード
８０６  ＳＷカード
８０８  管理モジュール
８１０  電源モジュール
８１２  ファンモジュール
８１４  プロセッサ
８１６  ＲＡＭ
８１８  ＲＯＭ
９１０  ＩＦ機能部
９１２  受信部
９１４  統計情報収集部
９１６  送信部
９１７  ＣＮＭ検出部
９１８  ＦＩＰ／ＦＣｏＥ検出部
９２０  フレーム処理部
９２２  受信フレームバッファ
９２４  輻輳検出部
９２６  送信フレームバッファ
９３０  スイッチ機能部
９３２  ＭＡＣテーブル
９３６  ＣＮＭ生成部
【図１】
0006007595.tif 000002
【図２】
0006007595.tif 000003
【図３】
0006007595.tif 000004
【図４】
0006007595.tif 000005
【図５】
0006007595.tif 000006
【図６】
0006007595.tif 000007
【図７】
0006007595.tif 000008
【図８】
0006007595.tif 000009
【図９】
0006007595.tif 000010
【図１０】
0006007595.tif 000011
【図１１】
0006007595.tif 000012
【図１２】
0006007595.tif 000013
【図１３】
0006007595.tif 000014
【図１４】
0006007595.tif 000015
【図１５】
0006007595.tif 000016
【図１６】
0006007595.tif 000017
【図１７】
0006007595.tif 000018
【図１８】
0006007595.tif 000019