ネットワーク装置及び送信フレームの制御方法
【課題】既存のネットワーク機器をそのまま利用しながらフレームの廃棄を許容しない複数のトラフィックの輻輳制御を可能にする。
【解決手段】フレームの送受信を行う複数のポートと、前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、を備える。
【解決手段】フレームの送受信を行う複数のポートと、前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータネットワークでフレームを転送する装置及び方法に関し、特に、トラフィックの輻輳を制御する技術の改良に関する。
【背景技術】
【0002】
コンピュータネットワークを実現するイーサネット(登録商標)は、データをフレームという単位に分割して送受信し、中継装置等の通信系路上でのフレーム廃棄を許容する標準規格となっている。フレーム廃棄によるデータ損失を許容しないアプリケーションに対しては、拡張規格としてIEEE802.3xにフロー制御用のPAUSEフレームが規定されている。フロー制御は送信側と受信側を結ぶリンクに対して行われる。リンクの受信側で、輻輳等の理由でフレームを正しく受信できないと想定される場合、リンクの受信側から送信側にPAUSEフレームを送信する。PAUSEフレームを受信したリンクの送信側ではフレーム送信を一時停止する。これらリンクの送信側及び受信側での処理により、リンクのフロー制御が行われ、リンクの受信側でフレームを受信できないことによるフレーム廃棄を防ぐ。
【0003】
一方、サーバの高密度化や、Local Area Network(LAN)に用いられるイーサネットの高速化を背景として、これまでLANとは別に構築されていたストレージアクセスのためのStorage Area Network(SAN)を、イーサネットを用いて構築してLANに統合し、ネットワークインタフェースやケーブル、ネットワーク機器を削減して運用の効率化をはかるLAN/SAN統合の動きが加速している。また、サーバ仮想化の進展により、1台の物理サーバ上で複数の仮想マシンを稼動させ、1つのLANを複数のネットワークで共用する環境が一般化している。これらの環境では物理的に1本のイーサネットケーブル上に性質や要求の異なる複数のトラフィックを流す必要がある。これらのトラフィックを論理的に区別する手法としてIEEE802.1Qに規定されるVirtual LAN (VLAN)が広く普及している。VLANでは各フレームにVLANタグを付加し、VLANタグに含まれる優先度およびVLAN IDでトラフィックを区別する。VLANを用いることで1本の物理的なリンクを論理的に分割して用いることが可能となる。
【0004】
LAN/SAN統合におけるストレージアクセスのトラフィックはフレーム廃棄を許容しない。しかしながら、PAUSEによるフロー制御は物理的なリンク単位で行うため、VLANにより論理的に分割されたリンクのいずれかで輻輳が発生してPAUSEフレームが送信されて送信が一時停止されると、同じ物理的なリンクを共有する他の論理的なリンクを流れるトラフィックのフレーム送信も一時停止してしまう。すなわち、複数のトラフィックで1つのリンクを共有するため、一部トラフィックでの輻輳が他のトラフィックの通信を妨げるという問題が生じる。
【0005】
これに対する従来技術として、論理的なリンク毎に独立したPAUSEフレームを規定する手法が知られている(例えば、特許文献1および非特許文献1)。
【0006】
特許文献1には「複数の入出力ポートから入力する伝送フレームの輻輳を検出する輻輳検出手段と、前記輻輳検出手段が輻輳を検出した入出力ポートにPAUSEフレームを送出するPAUSEフレーム送出手段とを備えたネットワークスイッチを有する輻輳制御システムにおいて、前記伝送フレームの代わりに仮想LAN情報を付加した拡張伝送フレームと、前記PAUSEフレームの代わりに前記PAUSEフレームに仮想LAN情報を付加した拡張PAUSEフレームとを使用し、前記PAUSEフレーム送出手段の代わりに前記拡張PAUSEフレームを前記入出力ポートに送出する拡張PAUSEフレーム送出手段を設けたことを特徴とする。」と記載されている。さらに「特に、前記仮想LAN情報をIEEE802.3x規格のVLANタグのVLAN−ID値とすることを特徴とする。或いは、前記仮想LAN情報をIEEE802.3x規格のVLANタグのプライオリティ値とすることを特徴とする。」と記載されている。
【0007】
また、非特許文献1では、IEEE802.1QbbとしてVLANタグのプライオリティ毎のPAUSE指示を含む拡張したPAUSEフレームおよび当該PAUSEフレームを用いた論理的なリンク毎のフロー制御を規定している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2007−174152号公報
【非特許文献】
【0009】
【非特許文献1】IEEE P802.1Qbb/D2.3, "IEEE Draft Standard for Local and Metropolitan Area Networks - Virtual Bridged Local Area Networks - Amendment: Priority-based Flow Control", Publication No.5570060, Issue date Sept. 9 2010
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記特許文献1および非特許文献1の処理では、リンクの送信側と受信側の双方がそれぞれ対応する必要があるため、既存の設備を全面的に置き換えまたは改造することが必要となる。
【0011】
また、上記特許文献1では、IEEEの標準規格として規定されているPAUSEおよびVLANを組み合わせたものであるが、これらを組み合わせた処理について、上記標準には規定されていないため、既存の装置にそのまま適用することはできず、また、上記特許文献1の技術を利用した装置も広範に利用可能な状況ではない。
【0012】
一方、上記非特許文献1は現在策定中の標準規格であり、将来的に対応する装置が増えると考えられるが、非特許文献1の技術で扱うことが可能な論理的なリンクの数は8までという制限がある。これは仮想マシンの増加やトラフィックの優先度制御を考慮すると不十分であり、8を超えた数のトラフィックを流す場合は、1つの論理的なリンク内を複数のトラフィックが流れる状況が生じ、先に挙げた一部トラフィックでの輻輳が他のトラフィックの通信を妨げるという問題は解決できない。
【0013】
したがって、上記従来技術では、標準規格に準拠し、技術導入時に必要な機器の変更が最小限で、フレーム廃棄を許容しない複数のトラフィックを扱い、かつ8を超える多数のトラフィックに対応可能な輻輳制御を行うことができないという課題があった。
【課題を解決するための手段】
【0014】
本発明は、フレームの送受信を行う複数のポートと、前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、を備える。
【発明の効果】
【0015】
したがって、本発明によれば、既存のネットワーク機器をそのまま利用しながらフレームの廃棄を許容しない複数のトラフィックの輻輳制御が可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態を示し、ネットワークシステムの構成の一例を示すブロック図である。
【図2】本発明の実施形態を示し、フレーム転送装置のネットワークシステムの構成の一例を示すブロック図である。
【図3】本発明の実施形態を示し、転送ポート管理表の一例を示す図である。
【図4】本発明の実施形態を示し、トラフィック設定表の一例を示す図である。
【図5】本発明の実施形態を示し、キュー設定表の一例を示す図である。
【図6】本発明の実施形態を示し、トラフィック履歴表の一例を示す図である。
【図7】本発明の実施形態を示し、帯域割当表の一例を示す図である。
【図8】本発明の実施形態を示し、輻輳トラフィック推定部における制限帯域計算処理の一例を示すフローチャートである。
【図9】本発明の実施形態を示し、輻輳トラフィック推定部における制限帯域補正処理の一例を示すフローチャートである。
【図10A】本発明の実施形態を示し、送信フレーム選択部における送信帯域計算処理の一例を示すフローチャートで、前半部である。
【図10B】本発明の実施形態を示し、送信フレーム選択部における送信帯域計算処理の一例を示すフローチャートで、後半部である。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【0018】
図1は、本発明の実施形態を示し、ネットワークシステムの構成の一例を示すブロック図である。
【0019】
<システムおよびハードウェアの構成>
図1は本実施形態におけるネットワークシステムの構成を説明するブロック図である。図1において、ネットワークシステムはフレーム転送装置1の入出力ポート112−1にケーブル115−1を介して接続されたノード117−1、および、入出力ポート112−nにケーブル115−nを介して接続されたノード117−mから構成される。なお、ノード117−1〜117−mは物理計算機やネットワーク装置あるいはストレージ装置等で構成される。また、フレーム転送装置1は、n個の入出力ポート112−1〜112−nを有する。以下では、入出力ポートの総称を112とし、ケーブルの総称を115とし、ノードの総称を117とする。
【0020】
本実施形態におけるネットワークシステムはノード117−1とノード117−mの間でケーブル115−1およびケーブル115−nとフレーム転送装置1を介したイーサネット(登録商標)による通信を実現する。ノード117−1〜ノード117−mはイーサネットに準拠した入出力ポートを有し、PAUSEフレームによるフロー制御をサポートしたネットワークノードであり、例えばネットワークインタフェースカードを装着した計算機や、ルータ装置、スイッチ装置等のネットワーク機器等である。ケーブル115はイーサネットによる通信に適合するケーブルである。フレーム転送装置1はイーサネットフレームを転送するブリッジの機能を持つネットワーク装置である。
【0021】
イーサネットについてはIEEE 802.3に規定されており、ブリッジ機能はIEEE 802.1DおよびIEEE 802.1Qに規定されている。本実施形態においては、フレーム転送装置1は、ブリッジ機能に加えて、イーサネットに関して、PAUSEフレームによるフロー制御、特にIEEE 802.3bd及びIEEE 802.1Qbbに規定されるPFC(Priority-based Flow Control)を対象として、ノード117−1〜ノード117−mの間で交換されるイーサネットフレームに関して、MAC(Media Access Control)アドレスやVLAN ID(Virtual Local Area Network Identifier)、TCP(Transmission Control Protocol)ポート番号等で区別される論理的なトラフィックに対して輻輳制御機能を提供する。ただし、本発明はイーサネットに限定されるものではなく、例えばFibreChannelにおけるBuffer−to−Bufferクレジット等、受信側の状態について送信側に通知するフロー制御の機能を持ったプロトコルであれば、本実施形態で説明する輻輳制御方法を適用可能である。なお、本実施形態において、ノードは117−1〜117−mのm台の場合で説明を行うが、ノードの個数は任意であり、例えば、より多くのノードを用意してケーブルによりフレーム転送装置1とそれぞれ接続し、より多くのノード間でフレーム転送装置1を介した通信をできるようにしてもよい。
【0022】
以下、他の図や図1の他の部分においても構成要素の数が限定されないことを同様の点線によって表現するものとする。また、本実施形態ではフレーム転送装置1およびノード117−1および117−mは物理的にそれぞれ異なる装置として実施した場合を説明するが、本発明の実施形態はこれに限定されるものではない。例えば、仮想マシンを稼動させる仮想化ソフトウェアを用いて物理的に同一装置内で複数の仮想マシンにより実施してもよい。仮想化ソフトウェアによる仮想化の実施ではケーブル115−1〜ケーブル115−mは共有メモリやメモリ間コピー等に置き換えられる。仮想化ソフトウェアを用いた仮想マシンによる実施により、柔軟な接続関係の変更や、ハードウェアの利用効率を高めること等が可能となる。
【0023】
続いて、図1を用いてフレーム転送装置1内部のハードウェア構成を説明する。フレーム転送装置1は、演算処理装置101、記憶装置102、入出力装置103、ネットワークインタフェース104−1〜ネットワークインタフェース104−nより構成され、共有バス106を通して互いに接続されている。本実施形態において、フレーム転送装置1はネットワークインタフェース104−1〜104−nがそれぞれケーブル115−1およびケーブル115−nに接続され、ノード117−1〜ノード117−mとイーサネットフレームを交換して、ノード117−1とノード117−mの間の通信を中継する。
【0024】
演算処理装置101はCentral Processing Unit(CPU)に代表される演算処理装置であり、記憶装置102上に展開されたプログラム(ソフトウェア)を実行する。なお、演算処理装置101を物理的または論理的に複数のCPUにより構成してよい。記憶装置102は演算処理装置101によって実行されるプログラムならびに当該プログラムが実行されることによって作成されるデータまたは読み込まれるデータおよび設定等を格納する。
【0025】
記憶装置102は例えばメモリ、ハードディスク、もしくは光ディスク等のデータやプログラムを保持可能な記憶媒体を含む装置(遠隔地に設置され、ネットワークインタフェース104−1もしくは104−n、入出力装置103等を通して通信される装置を含む)、またはこれらを組み合わせたもので構成される。記憶装置102に格納されるプログラムには、全体制御プログラム107(図1においては、プログラムを「PGM」と記述、以下同様)、ポート制御プログラム108−1〜108−nが含まれる。また、記憶装置に格納されるデータの一例としてはキュー部110、転送ポート管理表300、トラフィック設定表400、キュー設定表500、トラフィック履歴表600、帯域割当表700が含まれる。これらの詳細については後述するが、以下の説明においてデータの格納場所が明示されていないデータの保存・保持・記憶・記録・格納等の書き込みや参照・取り出し等の読み出しは記憶装置102に対して行うものとする。
【0026】
上記記憶装置102のプログラムはフレーム転送装置1を制御するための機能に関して論理的に区別したものであり、例えばすべてを1つのプログラムとして構成して処理させてもよいし、細分化して複数のスレッドやプロセス等に分離して実行したりしてもよい。なお、記憶装置102にはフレーム転送装置1を制御するためのプログラムにより作成された他のデータが格納されてもよい。本実施形態では記憶装置102にフレーム転送装置1を制御するためのプログラムが展開され、演算処理装置101により実行される。
【0027】
入出力装置103は、フレーム転送装置1に対して情報の入出力を行う装置である。入出力装置103は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ、またはスピーカー等の機器、またはフレーム転送装置1にはこれらの機器に接続可能なインタフェースを備えて、フレーム転送装置1にこれらの機器を接続して機能させる形態をとってもよい。また、入出力装置103には信号ケーブルまたは電波及び赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。
【0028】
フレーム転送装置1は、入出力装置103によって、フレーム転送装置1のユーザまたは管理者からの指示を受けたり、結果を出力したりすることが可能となる。ネットワークインタフェース104−1および104−nは、イーサネットフレームの送信および受信を行う入出力ポート112−1〜112−nを備え、演算処理装置101の指示により、ポート制御プログラム108−1および108−nによってそれぞれ制御され、他の機器とイーサネットフレームによる通信を行う。以下、これらの入出力ポート112と当該入出力ポート112を制御するポート制御プログラム108をまとめてポートと呼ぶ。
【0029】
また、共有バス106はフレーム転送装置1の各構成要素間の通信を行うためのものであるが、本発明は共有バスに限定されるものではない。各構成要素間で必要な通信を行えるようになっていれば、共有バスを用いる以外の方法によって接続されてもよい。例えば、各構成要素間を直接接続することのよって、要素間の接続を最適化し、処理に必要な消費電力を減らしたり、処理効率を上げたりすることが可能となる。
【0030】
<システムおよびハードウェアの変形例>
なお、本発明において、フレーム転送装置1の構成要素の個数は図1に限定されるものではなく、例えば入出力装置103を2つ用意して冗長化したり、機能分担したりしてもよい。また、本発明は、記憶装置102に格納したプログラムに格納したプログラムによって実現される機能のうち、一部または全部の機能をハードウェアとして実装してもよい。ハードウェアとして実装することにより、例えば処理の高速化や低消費電力化が可能となる。また、仮想マシンのように、当該ハードウェアが備える機能をプログラムとして実現してもよい。ハードウェアが備える機能をプログラムとして実現することによって、例えば、設置スペースを削減したり、管理を単純化したりできる。また、プログラムによって実現される機能の構成は後述する構成に限るものではなく、複数の機能が統合される構成、または1つの機能が複数に分割される構成でもよい。また、各機能によって実行される処理の順序についても、後述する順序に限るものではなく、処理の依存関係が許すならば、並列で同時に実行したり、順序を入れ替えて実行したりしてもよい。例えば、並列実行することによって処理時間を短縮したり、順序を入れ替えることによって待ち時間を減らしたりすることが可能となる。
【0031】
<ソフトウェアの構成>
図2はフレーム転送装置1におけるソフトウェア構成を説明するブロック図である。なお、図において、四角はフレーム転送装置1で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報または指示・指令が伝えられることを示す。処理ブロック間で伝えられる情報または指示・指令の内容は以下で説明する。
【0032】
フレーム転送装置1におけるソフトウェアは全体制御プログラム107、ポート制御プログラム108−1〜108−n(以下、制御プログラム108−1〜108−nのうちのいずれかを表す場合は「ポート制御プログラム108」と記述する。複数ある他のコンポーネントについても同様)、キュー110、入出力ポート112−1〜112−nの送受信機能から構成される。なお、入出力ポート112−1〜112−nの送受信機能はハードウェアで構成してもよい。フレーム転送装置1全体は、入出力ポート112−1にてイーサネットフレームを受信して、キュー110に格納し、その内容をポート制御プログラム108−1で解析し、解析結果から全体制御プログラム107にて当該イーサネットフレームを転送すべきポートを決定し、キュー110に格納している当該イーサネットフレームを転送すべきと決定されたポートの入出力ポート112−nから出力することによりイーサネットブリッジとして機能する。
【0033】
全体制御プログラム107は設定受付部207、輻輳検出部208、PAUSE送信ポート・時間決定部209、トラフィック設定部210および格納キュー選択部211、トラフィック履歴管理部212より構成され、複数のポートにまたがる可能性のある処理およびフレーム転送装置1全体の制御を行う。
【0034】
ポート制御プログラム108−1〜108−nは、割当帯域管理部213、輻輳トラフィック推定部(輻輳推定部)214、送信フレーム選択部215、送信停止タイマー(送信停止部)216、PAUSEフレーム作成部217、キュー制御部218、入出力制御部219およびフレーム解析部220より構成され、当該ポートに関連する入出力ポート112−1の制御およびキュー110の制御を行う。キュー110は論理的に分割されたキューである論理キュー221−1〜221−iにより構成され、入出力ポート112−1〜112−nから入出力されるイーサネットフレームを一時的に保持する。
【0035】
なお、論理キュー221−1〜221−iは、1つのイーサネットフレームについて、イーサネットフレームの内容や入出力されるポート等に基づいて、後述する格納キュー選択部211が分類したトラフィックに対応する。もちろん、論理キュー211の数は図2に示すような3に限定されるものではなく、例えば論理キューの数を1としてすべてのトラフィックのイーサネットフレームを格納してもよいし、論理キューの数を3より大きくしてより細かくトラフィックの種類毎などに分類して格納してもよい。また、論理キュー221−1〜221−iの総称を論理キュー221とする。
【0036】
また、格納キュー選択部211が行うトラフィックの分類は、1つのイーサネットフレームが複数のトラフィックに同時に分類される処理でもよく、その場合、1つのイーサネットフレームが複数の論理キュー221に格納されることとなる。この場合、記憶装置102上の表現としては、複数の論理キュー221に同一のイーサネットフレームをコピーして記憶装置102の制御を簡素化してもよい。あるいは、複数の論理キュー221で同一の記憶装置102を参照するようにしてメモリを節約してもよい。
【0037】
1つのイーサネットフレームが複数のトラフィックに同時に分類されることで、例えばポートに接続されたノードで複数の仮想マシンが稼動する場合や、フレーム転送装置1のポートにブリッジが接続され、当該ブリッジに複数のノードが接続された場合にマルチキャストフレームの転送を簡素化できる。
【0038】
入出力ポート112−1〜112−nはフレーム送信部224およびフレーム受信部225から構成され、当該ポートに接続されたノード117とイーサネットフレームを送受信する。以下の説明では、当該ポートにおけるノードとの接続をリンクと呼び、リンクを通してイーサネットフレームが当該ノードと送受信できる状態にあるものとして説明する。
【0039】
また、本実施形態では、トラフィックはVLAN IDや優先度情報、送信元や宛先等の通信経路等により区別される、ネットワークを流れる情報を示す。そして、イーサネットフレームまたはフレームは、トラフィックに流すデータの単位を表す。
【0040】
<ソフトウェアの構成:事前準備>
続いて、図2の各構成要素間で送受信される支持・指令および情報について、フレーム転送装置1によるイーサネットフレームの転送を例に説明する。まず、イーサネットフレームの転送に先立って、設定受付部207は入出力装置103またはネットワークインタフェース104−1〜104−nを介してフレーム転送装置1のユーザまたは管理者から入力された情報にしたがって、記憶装置102に各種の設定を格納する。
【0041】
具体的には、設定受付部207へ入力された情報にしたがって、トラフィック設定部210からトラフィック設定表400と、キュー設定表500の内容を設定し、設定受付部207へ入力された情報とトラフィック設定部210のキュー設定表500の内容にしたがって、割当帯域管理部213を通して帯域割当管理表700の内容を格納する。
【0042】
これらはフレーム転送装置1の製造時に予め記憶装置102に格納しておいてもよい。なお、トラフィック設定表400、キュー設定表500、帯域割当管理表700を含め、以下の説明において用いる表の具体的な内容については後ほど説明する。キュー制御部218はキュー設定表500に従ってキュー110に論理キュー221の作成・削除等の初期設定を指示し、論理キュー221を使用できるように準備する。
【0043】
<ソフトウェアの構成:受信時の処理>
以下、まず、フレーム転送装置1で行われるイーサネットフレーム受信時の処理を説明する。イーサネットフレームはフレーム受信部225で受信されると、イーサネットフレームの情報をフレーム解析部220が解析し、フレーム解析部220がPAUSEフレームでない場合は転送すべきフレームとして格納キュー選択部211に解析結果を通知する。
【0044】
フレーム解析部220が格納キュー選択部211に通知する解析結果は、送信先MACアドレス、VLAN ID、Priority等の、格納キュー選択部211がトラフィックとして分類するために必要な情報である。これらの情報は、送信するイーサネットフレームに関連づけられた情報である。
【0045】
格納キュー選択部211では、フレーム解析部220より通知された解析結果とトラフィック設定部210のトラフィック設定表400を用いて当該イーサネットフレームのトラフィックID405(図4参照)を決定し、当該トラフィックID405と当該イーサネットフレームが入力されたポートを表すポートID303(図3参照)およびトラフィック設定部210のキュー設定表500(図5参照)から当該イーサネットフレームを格納する論理キューのID503を決定する。そして、格納キュー選択部211がフレーム解析部220より通知された解析結果と転送ポート管理表300を用いて当該イーサネットフレームを転送するポートID303を決定する。
【0046】
格納キュー選択部211は決定されたポートのキュー制御部218と入出力制御部219に対してフレーム受信部225の当該イーサネットフレームを当該論理キューのID503に格納するよう指示する。当該指示に従って、入出力制御部219は当該イーサネットフレームを当該論理キューに伝え、キュー制御部218は当該イーサネットフレームを当該論理キュー221に格納する。
【0047】
また、格納キュー選択部211はトラフィック履歴管理部212に、当該イーサネットフレームのトラフィックIDとポートIDとフレームサイズを通知する。トラフィック履歴管理部212では格納キュー選択部211から通知された情報を現時刻とともにトラフィック履歴表600(図6参照)に保存する。トラフィック履歴表600への保存時に古い時刻のエントリを削除する等によりトラフィック履歴表600が使用するメモリサイズを節約してもよい。
【0048】
以上により、リンクで受信されたイーサネットフレームが転送すべきフレームの場合、当該イーサネットフレームが適切な論理キューに格納される。このとき、格納キュー選択部211は、送信先MACアドレス、VLAN ID、Priority等のフレームの種類に応じてトラフィックを分類し、分類結果に応じた論理キュー221へ当該フレームを格納する。
【0049】
<ソフトウェアの構成:送信時の処理>
続いて、各ポートの論理キュー221−1〜221−iからイーサネットフレームを送信する処理について述べる。割当帯域管理部213は帯域割当管理表700(図7参照)の内容を輻輳トラフィック推定部214および送信フレーム選択部215に通知する。
【0050】
送信フレーム選択部215は、割当帯域管理部213から通知された帯域割当管理表700の内容および輻輳トラフィック推定部214が通知する制限帯域と、キュー制御部218から通知された各論理キュー221の使用量と、送信停止タイマー216のタイマー値にしたがって、論理キュー(例えば221−1)のイーサネットフレームを送信する。送信フレーム選択部215による送信すべきイーサネットフレームの選択方法については送信帯域計算処理として図10A、図10Bで後述する。
【0051】
送信フレーム選択部215による論理キュー221−1等からのイーサネットフレームの送信は、具体的には、格納キュー選択部211がキュー制御部218と入出力制御部219に対して論理キュー221−1のイーサネットフレームを読み出してリンクに送信するよう指示する。当該指示に従って、キュー制御部218は当該イーサネットフレームを当該論理キューから取り出してフレーム送信部224に送るよう論理キュー221−1に指示し、入出力制御部219はフレーム送信部224に論理キュー221−1から送られた当該イーサネットフレームを入出力ポート112−1に接続されたリンクに対して送信するように指示する。
【0052】
また、入出力制御部219は送信したイーサネットフレームの情報を、具体的には属する論理キュー221−1〜221−iのキューIDと当該イーサネットフレームのフレームサイズを輻輳トラフィック推定部214に通知する。輻輳トラフィック推定部214は、フレーム解析部220から通知されたPriority毎のPAUSEフレーム受信状況、割当帯域管理部213から通知された帯域割当管理表の内容、キュー制御部218から通知された論理キュー221−1〜221−iの使用量および入出力制御部219から通知された送信するイーサネットフレームの情報と、送信停止タイマー216を参照して得たPriority毎の変数であるPAUSE状態に基づいて、各論理キュー221からイーサネットフレームの制限帯域を計算して送信フレーム選択部215に通知する。
【0053】
輻輳トラフィック推定部214における制限帯域の計算方法については制限帯域計算処理として図8で後述する。以上により、論理キューからイーサネットフレームがリンクに送信される。
【0054】
なお、イーサネットフレームの転送(ブリッジ)については、IEEE 802.1DおよびIEEE 802.1Qとして標準化されており、これらの技術を適宜用いることができる。
【0055】
<ソフトウェアの構成:PAUSE受信>
続いて、図2におけるPAUSEフレームの扱いについて述べる。PAUSEフレームを受信した場合および送信する場合のフレーム転送装置1における処理について説明する。まず、PAUSEフレームを受信した時のフレーム転送装置1が実行する処理について説明する。イーサネットフレーム受信時は、フレーム解析部220の解析により、当該イーサネットフレームがPAUSEフレームであることが検出される。
【0056】
PAUSEフレームは転送すべきフレームではないのでフレーム解析部220は格納キュー選択部211に通知せず、PAUSEフレームの内容にしたがって各Priorityで一時停止すべき時間を計算し、送信停止タイマー216に指示する。そして、フレーム解析部220は輻輳トラフィック推定部214に対してPriority毎にPAUSEフレームの受信状況を通知する。
【0057】
具体的には、フレーム解析部220は輻輳トラフィック推定部214にPAUSEフレームにより指示された時間を通知する。送信停止タイマー216は格納キュー選択部211より指示されたPriority毎の時間にタイマー値をセットする。送信停止タイマー216は一定時間毎に設定された各タイマー値を0になるまで減じる。送信停止タイマー216は、PAUSEフレームにより指示された時間がPAUSE状態の解除を意味する0の場合は0をセットする。送信フレーム選択部215は送信停止タイマー216を参照し、特定のPriorityの送信タイマーが0より大きい場合は当該Priorityに属するイーサネットフレームを含む論理キュー221からの送信を停止する。
【0058】
以上により、PAUSEフレームに指定された時間だけ、当該リンクに対するフレーム転送装置1からのフレーム送信が入出力ポート112毎に一時停止され、PAUSEフレームによる輻輳制御が実現される。
【0059】
<ソフトウェアの構成:PAUSE送信>
次に、フレーム転送装置1がPAUSEフレームをリンクへ送信する場合の処理について説明する。PAUSEフレームの送信は当該リンクが輻輳状態となり、ノード117から送信されたフレームをフレーム転送装置1で正しく受信できない恐れがある場合に行う。本実施形態においては、フレーム転送装置1のポート制御プログラム108が受信するフレームを格納する論理キュー221の使用量が停止閾値(例えば、確保したキュー容量の8割)を超えた場合に、ノード117から送信されたフレームを受信できない恐れがあると判定して、当該論理キュー221に格納されるフレームを送信しているリンクに送信を停止させるPAUSEフレームを送信する。
【0060】
フレーム転送装置1は、当該論理キュー221の使用量が再開閾値(例えば、確保したキュー容量の5割)を下回った場合に受信できない恐れが消滅したと判定して、当該リンクへの送信を再開させるPAUSE解除フレームを接続されているリンクに送信する。
【0061】
図2において、キュー制御部218は論理キュー(例えば、221−1)の使用量を輻輳検出部208に通知する。輻輳検出部208はキュー制御部218から通知された論理キューの使用量が停止閾値を越えたもしくは再開閾値を下回ったことを検知すると、PAUSE送信ポート・時間決定部209に通知する。
【0062】
PAUSE送信ポート・時間決定部209は、トラフィック履歴管理部212のトラフィック履歴表600とトラフィック設定部210のトラフィック設定表400、キュー設定表500を参照して、当該論理キュー221に格納されるイーサネットフレームが入力されている(1または複数の)ポートを検索する。PAUSE送信ポート・時間決定部209は検索したポートのPAUSEフレーム作成部217に、当該論理キュー221のPriorityと、当該Priorityでの送信を一時停止させる時間を通知する。なお、当該論理キュー221に複数のPriorityに属するフレームを格納するなど、当該論理キューのPriorityが一意に定まらない場合は、複数のPriorityに関して同様の検索をPAUSE送信ポート・時間決定部209が行う。また、前記検索を行う代わりにすべてのポートや当該論理キューの所属するVLANに参加しているポートを対象として、検索に必要な時間を節約してもよい。
【0063】
送信を一時停止させる時間については、停止閾値を越えた場合は最大値である65535(単位は512ビットを送信する時間)とし、再開閾値を下回った場合は0とする。本発明では、停止閾値を越えた場合の送信を一時停止させる時間が前記の65535に限るものではなく、例えば論理キュー221の空き容量や当該論理キューからの送出量、演算処理装置101の使用量等に基づいてさらに細かく時間設定をして送信再開PAUSEフレーム(またはPAUSE解除フレーム)の送出を抑制するなどしてもよい。
【0064】
PAUSEフレーム作成部217は、PAUSE送信ポート・時間決定部209からの指示を、当該Priorityの時間として埋め込んだPAUSEフレームを作成し、フレーム送信部224に通知する。
【0065】
PAUSEフレーム作成部217では、PAUSE送信ポート・時間決定部209から指示された時間をPriority毎に記憶し、送信停止タイマー216と同様に0になるまで一定時間毎に前記指示され時間から1を減じ、各Priorityでの送信を一時停止させる時間の現在の値を参照可能にする。また、PAUSEフレーム作成部217では、PAUSE送信ポート・時間決定部209から指示されたPriority以外のPriorityに関しても一時停止させる時間を埋め込んだPAUSEフレームを作成できるようにする。
【0066】
入出力ポート112のフレーム送信部224では、ポート制御プログラム108のPAUSEフレーム作成部217から通知されたPAUSEフレームを、接続されたリンクに対して送出する。なお、PAUSEフレームについて直接フレーム送信部224による送出は行わず、いったんPAUSEフレーム用に用意した論理キュー221に格納し、送信フレーム選択部215で他の論理キュー221より優先してフレームを送出するという方法にし、送出されるフレームの管理を一元化してもよい。
【0067】
以上により、当該リンクでのフレーム転送装置1によるフレームの受信が一時停止され、PAUSEフレームによる輻輳制御が実現される。
【0068】
なお、PAUSEフレームのフォーマットや一時停止時間等については、IEEE 802.3xおよびIEEE 802.3bd、IEEE 802.1Qbbとして標準化されており、本実施形態による説明があれば当業者によるPAUSE機能の実施は困難ではない。
【0069】
<ソフトウェアの構成のバリエーション>
図2においては、受信フレームをそのまま論理キュー221に格納する形での実施を説明したが、本発明はこれに限るものではなく、例えば入力バッファ、出力バッファのようにバッファを記憶装置102に設置してイーサネットフレームを格納し、格納キュー選択部211による論理キューの選択や送信フレーム選択部215による送信フレーム選択の処理を平準化してもよい。また、フレーム解析部220においてPAUSEフレームでない場合は転送すべきフレームとしたが、例えばPAUSEフレーム以外のフレームであっても転送する必要のないLLDPフレームの取り扱いや、VLANタグの付加または除去等、一般にイーサネットスイッチやL2スイッチと呼ばれるネットワーク機器で行われる拡張を施してもよい。また、本実施形態ではトラフィックの分類に、送信元MACアドレス、送信先MACアドレス、VLAN ID、Priorityを用いたが、本発明におけるトラフィックの分類はこれに限定されるものではなく、例えば、入力されたポートや、イーサネットフレームに含まれる情報であるEtherType、IP(Internet Protocol)アドレス、TCPのポート番号等を加え、各情報単独または複数の情報を組み合わせてトラフィックを決定する形で用いて行ってもよい。たとえばTCPのポート番号やIPアドレスの情報を用いることで、特定アプリケーションのトラフィックを区別して輻輳制御を行うことができるようになる。
【0070】
<表の説明>
続いて、図2の説明に用いた表である、転送ポート管理表300、トラフィック設定表400、キュー設定表500、トラフィック履歴表600、帯域割当管理表700の具体的な内容について例を用いて説明する。なお、これらの表は記憶装置102に保存される。
【0071】
図3に転送ポート管理表の例を示す。転送ポート管理表300は、MACアドレス301、VLANID302、ポートID303を含むエントリで構成される。MACアドレス301はイーサネットにおけるエンティティを識別するためのアドレスである。VLAN ID302は、IEEE 802.1Qにて規定される、イーサネットフレームにおけるVLANの識別子で、異なるVLAN IDを持つフレームを別のVLANとして扱うために用いられるものである。ポートID303は複数あるポート(入出力ポートおよび対応するポート制御プログラムを表す)のうちの1つを識別するための識別子である。
【0072】
格納キュー選択部211では転送ポート管理表300を用いて、フレーム解析部220から通知された解析結果のうちの送信先MACアドレスがMACアドレス301で、同じくVLAN IDがVLANID302と両方ともに一致するエントリを検索し、該当するエントリのポートID303を対象として決定する。格納キュー選択部211では転送ポート管理表300に前記一致するエントリが複数あった場合は複数のポートを対象として決定する。一方、前記一致するエントリが見つからなかった場合はVLAN IDが一致する全ポートを対象とする。
【0073】
転送ポート管理表300はIEEE 802.1QにおけるFiltering Databaseに対応する。転送ポート管理表300はフレームの情報と照合して当該フレームを転送すべきポートを決定する機能を持てば、必ずしも図3に挙げた情報に基づかなくてもかまわない。例えば、入力ポートを識別するポートIDと転送先のポートID303の対応表といった構成も考えられ、VLAN IDを省いた構成(IEEE 802.1Dに規定されるブリッジ機能)としてもよい。また、転送ポート管理表300は入力されたフレームの送信元MACアドレスとVLAN IDおよびポートIDの組み合わせをエントリとして追加し、一定時間使用しなかったエントリを削除するMAC学習により保守する。なお、本発明においてはこれに限るものではなく、例えば、固定的なエントリを作成し、MAC学習の処理を省いてもよい。
【0074】
図4にトラフィック設定表の例を示す。トラフィック設定表400は、送信元アドレス401、送信先アドレス402、VLANID403、Priority404、トラフィックID405を含むエントリで構成される。送信元アドレス401は送信元のMACアドレス、送信先アドレス402は送信先のMACアドレスを格納する。VLANID403およびPriority404はIEEE 802.1Q で規定されるVLAN IDおよびPCPの値をそれぞれ表す。トラフィックID405は論理的に区別して扱うトラフィックの識別子を格納する。
【0075】
格納キュー選択部211ではトラフィック設定表400を用いて、フレーム解析部220から通知された解析結果のうちの対象フレームの送信先MACアドレスと送信先アドレス402を、送信元MACアドレスと送信元アドレス401を、VLAN IDとVLANID403を、PriorityとPriority404をそれぞれ照合し、すべて一致したエントリのトラフィックID405を取得し、転送ポート管理表300およびキュー設定表500と併せて対象フレームの格納すべき論理キューを決定する。
【0076】
したがって、トラフィック設定表400ではトラフィックの分類に用いる情報と、一致した場合のトラフィックIDを対応付ける役割を担う。そのため、先に例示したようにトラフィックの分類に用いる情報は例えばEtherTypeなどでもよく、本発明ではトラフィック設定表400に含まれる情報は図4に限定されるものではない。一致するエントリが見つからず対象トラフィックが確定しない場合は、あらかじめ定められたトラフィックID(例えば0)を用いる。
【0077】
図5にキュー設定表500の例を示す。キュー設定表500はトラフィックID501、ポートID502、キューID503を含むエントリで構成される。トラフィックID501は図4に示したトラフィック設定表400のトラフィックID405と同様、論理的に区別して扱うトラフィックの識別子を格納する。ポートID502は図3の転送ポート管理表300のポートID303と同様にポートを区別するための識別子を格納する。キューID503はキュー110における論理キュー221−1〜221−iを区別するための識別子を表す。格納キュー選択部211では転送ポート管理表300およびトラフィック設定表400の結果をキュー設定表500と照合し、トラフィックID501とトラフィックID405、および、ポートID502とポートID303の双方が方一致するエントリを検索し、対象フレームを格納する論理キューを検索されたエントリのキューID503から決定する。
【0078】
格納キュー選択部211ではフレーム解析部220から通知された解析結果と、転送ポート管理表300、トラフィック設定表400およびキュー設定表500を用いて、対象フレームを格納する論理キュー221を決定する。そのため、これら3種の表は必ずしも別に保存される必要はなく、フレーム解析部220から通知された解析結果から対象フレームを格納する論理キュー221を決定できればよい。例えば、転送ポート管理表300、トラフィック設定表400およびキュー設定表500を1つの表としてまとめることでデータ構造を簡素化することができる。
【0079】
図6にトラフィック履歴表の例を示す。トラフィック履歴表600は、トラフィックID601、ポートID602、時刻603、フレームサイズ604を含むエントリで構成される。トラフィックID601は図4、図5のトラフィックID405、トラフィックID501と同様、論理的に区別して扱うトラフィックの識別子を格納する。ポートID602は図3、図5のポートID303およびポートID502と同様、ポートを区別するための識別子を格納する。時刻603は当該エントリが作成された時刻を表す値で、例えばある時点からの経過秒数を用いることができるがこれに限定されるものではない。例えば、一定周期でカウントアップされるカウンタを用いることもでき、この場合、ハードウェア実装の簡素化が期待できる。フレームサイズ604は対象とするイーサネットフレームのフレームサイズを表す。フレームサイズ604として格納する情報はフレームサイズに限定するものではなく、大まかなフレーム送信量を把握できればよい。例えば、フレームサイズ604として1を格納して処理を単純化してもよい。
【0080】
PAUSE送信ポート・時間決定部209では、トラフィック履歴表600を用いて対象トラフィックが入力されているポートを決定する。そのため、トラフィック履歴表600は対象トラフィックの入力ポートを調査可能であればよく、図6に示す形式に限定されるものではなく、例えば、各トラフィックIDと入力のあったポート番号といった形式でもよい。形式を変更することでトラフィック履歴表600に必要なメモリ量を削減したりアクセス時間を削減したりできる。またエントリは追加のみでなく、例えば時刻603を現時刻と比較して一定時間経過したもの、フレームサイズ604が一定値より小さいもの等を削除したり参照時に除外したりしてもよい。このような対象エントリの限定により、例えば論理キュー221の輻輳に与える影響の大きなポートからのフレーム入力を抑制して他の通信に関しては制限せずに通すといった柔軟な輻輳制御がイーサネットフレーム受信時に可能となる。
【0081】
図7に帯域割当管理表の例を示す。帯域割当管理表700はキューID701と割当帯域702を含むエントリで構成される。キューID701は図5のキューID503と同様、キュー110における論理キュー221を区別するための識別子を格納する。割当帯域702は当該論理キュー221からリンクに対して送信する保証帯域を格納する。割当帯域702は絶対的な送信帯域のほか、送信帯域の比のような形で指定してもよい。帯域割当管理表700を用いることで各論理キュー221からリンクに対して送信する際に保証すべき帯域を参照することが可能となる。
【0082】
以上に説明した表のデータ構造は必ずしも表である必要はなく、例えばハッシュや2分木等でもよい。ハッシュを用いることで一致するエントリの検索時間短縮が期待できる。また、それぞれの照合は完全一致に限るものではなく、例えば部分一致等、与えられた情報に基づいて対象とするエントリを決定できればよい。例えば部分一致を用いることにより、表に必要なメモリ容量を削減することができる。
【0083】
続いて、輻輳トラフィック推定部214における制限帯域計算処理および送信フレーム選択部215における送信帯域計算処理についてフローチャートを用いて説明する。なお以下の説明において、変数に格納された値は当該変数名により表すこととする。
【0084】
<輻輳トラフィック推定部の処理>
図8は輻輳トラフィック推定部214で行う制限帯域計算処理の一例を説明するフローチャートである。輻輳トラフィック推定部214は、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDによりトラフィックを区別したうえで各トラフィックの送信帯域を計算する。そして、輻輳を引き起こすトラフィックを推定し、当該トラフィックが輻輳の要因と推定される場合には当該トラフィックの送信帯域を減らす。
【0085】
このため、輻輳トラフィック推定部214は、フレーム解析部220から通知されたPAUSEフレーム受信状況と、割当帯域管理部213から通知された帯域割当管理表の内容と、キュー制御部218から通知された論理キューの使用量と、入出力制御部219から通知された送信したイーサネットフレームの情報と、送信停止タイマー216を参照して得たPriority毎のPAUSE状態(タイマー値が0なら非PAUSE状態、それ以外ならPAUSE状態)を用いて、各トラフィックで送信可能な制限帯域を制限帯域計算処理により計算して送信フレーム選択部215に通知する。
【0086】
制限帯域計算処理は一定時間毎(例えば0.01秒毎)に繰り返して行う。なお、本発明では制限帯域計算処理実行の契機は一定周期に限るものではなく、例えば、PAUSEフレームの受信を制限帯域計算処理実行の契機としてもよいし、時間間隔をトラフィックの流量等に応じて変更してもよい。なお、以下の説明は、PFCの1つのPriorityに対する処理を対象としており、当該PriorityのPAUSEフレームにより当該Priorityに属する全トラフィックの送信が停止されるものとして説明する。これはPFCではない一般のPAUSEで当該リンクを流れる全トラフィックの送信が停止されるのと同様である。なお、PFCにおける複数のPriorityに対応するには、制限帯域計算処理をPriority毎に当該Priorityに属するトラフィックを対象として行う。以下の説明中で「トラフィック」は対象Priorityに属するトラフィックを、「キュー」は当該トラフィックのイーサネットフレームが格納されている論理キュー221をそれぞれ表す。また「保証帯域」は帯域割当管理表の内容である各トラフィックの割当帯域702を表す変数である。「累積送信量」は入出力制御部219から通知された送信済みのイーサネットフレームの情報を用いてトラフィック毎にこれまで転送したフレームサイズの合計値を保存する変数である。すなわち、各トラフィックの累積送信量は入出力制御部219から通知されるたびに加算していく。また変数「制限帯域」、「前回の制限帯域」の初期値は変数「保証帯域」の値とする。
【0087】
輻輳トラフィック推定部214は、制限帯域計算処理が開始状態S801から開始されると、ステップS802に進む。
【0088】
ステップS802では輻輳トラフィック推定部214が送信停止タイマー216を参照して取得したPAUSE状態であるか否かを判定し、真(PAUSE中)であればステップS803に進み、偽ならステップS804に進む。ステップS803では輻輳トラフィック推定部214が変数「PAUSE状態」を参照し、前回PAUSE状態ではなく今回PAUSE状態となった、すなわちPAUSEが開始されたか否かを判定し、真ならステップS805に進み、偽であればステップS818に進む。
【0089】
ステップS805では、輻輳トラフィック推定部214が変数「PAUSE間隔」を変数「前回のPAUSE間隔」に保存し、変数「PAUSE開始時刻」を変数「前回のPAUSE時刻」に保存し、変数「PAUSE開始時刻」に現在の時刻を代入し、変数「PAUSE間隔」にPAUSE開始時刻から前回のPAUSE時刻を減じた時間を代入し、ステップS806に進む。
【0090】
ステップS806では、輻輳トラフィック推定部214が各トラフィックについて変数「累積転送量」の値を変数「前回の累積転送量」に代入し、変数「累積送信量」の値を変数「累積転送量」に代入し、ステップS807に進む。ステップS807では、輻輳トラフィック推定部214が「前回のPAUSE間隔」および「PAUSE間隔」が有意であることを判定し、真ならステップS808に進み、偽ならステップS817に進む。なお、ステップS807における「有意」は、値が、変数が未定義値でなく、かつ、一定値(例えば0.05秒)より大きいこと表す。これは、PAUSE間隔が初期状態であったり、誤差といえるほど小さかったりした場合に後述する制限帯域補正処理を行わないようにするためである。
【0091】
ステップS808では、輻輳トラフィック推定部214が変数「帯域制限トラフィック数」と「帯域制限強化トラフィック数」にそれぞれ0を代入し、ステップS809に進む。ステップS809では、各トラフィックについて、ステップS810からステップS811までを繰り返す。
【0092】
ステップS810では、輻輳トラフィック推定部214が後述する図9の制限帯域補正処理を実行して、ステップS811に進む。ステップS811では、輻輳トラフィック推定部214がステップS809からの繰り返し処理を各トラフィックについて終了したら、ステップS812に進む。
【0093】
ステップS812では輻輳トラフィック推定部214が変数「帯域制限トラフィック数」が正であるか否かを判定し、真ならステップS813に進み、偽ならステップS817に進む。ステップS813では輻輳トラフィック推定部214が変数「帯域制限強化トラフィック数」が0であるか否かを判定し、真ならステップS814に進み、偽ならステップS817に進む。
【0094】
ステップS814では、輻輳トラフィック推定部214がトラフィックを選択し、帯域制限を実施し、ステップS817に進む。このステップS814におけるトラフィック選択の例として、輻輳トラフィック推定部214が、変数「トラフィック番号」(初期値は0)を参照し、対応するトラフィックの変数「前回の送信量」が正なら当該トラフィックを選択し、そうでなければトラフィック番号に1を加えて次のトラフィックを調べる。そして、輻輳トラフィック推定部214は、トラフィック番号がトラフィックの数以上となった場合は0に戻す。本発明においてステップS814におけるトラフィック選択は前述の方法に限定されるものではなく、例えばランダムにトラフィックを選択するようにして処理を単純化してもよい。また、複数のトラフィックを順番に選択してもよい。さらに、例えば送信履歴に基づいて、直近にイーサネットフレームを多く送信しているトラフィックから優先して選択するようにしてもよい。また、ステップS814における帯域制限は、選択したトラフィックの変数「新しい制限帯域」に、例えば、
(2×保証帯域+実効帯域)/3
を代入する。各トラフィックの実効帯域は後述の制限帯域補正処理で計算される。なお、ステップS814における「新しい制限帯域」の計算式は、制限帯域を保証帯域から実効帯域に近づけるためのものであり、本発明はこれに限るものではない。例えば、より保証帯域に近づけるようにして、帯域制限を緩やかにしてもよい。
【0095】
次に、ステップS802の判定でPAUSE中でない場合のステップS804では、輻輳トラフィック推定部214が、現在の時刻と変数「PAUSE開始時刻」の差が一定時間(例えば変数「PAUSE間隔」の2倍)より大きいか否かを判定し、真ならステップS815に進み、偽ならステップS818に進む。
【0096】
ステップS815では、輻輳トラフィック推定部214が帯域制限を緩和して、ステップS816に進む。ここで、ステップS815における帯域制限の緩和は、各トラフィックについて、「新しい制限帯域」として、例えば、
(前回の制限帯域+保証帯域)/2
を代入する。なお、ステップS815における「新しい制限帯域」の計算式は、制限帯域を保証帯域に近づけるものであり、本発明はこれに限定されるものではない。例えば、より保証帯域に近づけるようにして、帯域制限の緩和幅を大きくしてもよい。
【0097】
次に、ステップS816では、輻輳トラフィック推定部214が変数「PAUSE間隔」を大きくしてステップS817に進む。ここで、ステップS816はステップS815が実行される頻度を減らすために行うもので、帯域制限の緩和を緩やかにする効果がある。変数「PAUSE間隔」を大きくする例としては、PAUSE間隔に
(PAUSE間隔×2)
を代入するなどが考えられるが、本発明は必ずしもこれに限定されるものではなく、例えば定数値を足すなどでもよい。また、ステップS816を省略して処理を簡素化してもよい。
【0098】
次に、ステップS817では、輻輳トラフィック推定部214が各トラフィックについて、変数「前回の制限帯域」に変数「制限帯域」の値を代入し、変数「制限帯域」に「新しい制限帯域」の値を代入し、ステップS818に進む。ステップS818では輻輳トラフィック推定部214が送信停止タイマー216を参照して得たPAUSE状態を変数「PAUSE状態」に保存し、終了状態819に進む。終了状態819では制限帯域計算処理を終了する。
【0099】
以上の処理によって、輻輳トラフィック推定部214は、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDに基づいてトラフィックを区別したうえで各トラフィックの送信帯域を計算する。そして、輻輳を引き起こすトラフィックを推定し、当該推定されたトラフィックの送信帯域を減らして制限することが可能となる。そして、PAUSEを解除する際には、帯域制限を徐々に緩和することで保証帯域に戻すことができる。
【0100】
図9は輻輳トラフィック推定部214で行う制限帯域計算処理のステップS810で実行される制限帯域補正処理の一例を示すフローチャートである。
【0101】
制限帯域補正処理では輻輳トラフィック推定部214が、1つのトラフィックに関して制限帯域の値を補正する。したがって、制限帯域補正処理における変数はトラフィック毎に値を保持する。
【0102】
輻輳トラフィック推定部214は制限帯域補正処理が開始状態S901から開始されると、ステップS902に進む。ステップS902では変数「新しい制限帯域」に変数「保証帯域」の値を代入してステップS903に進む。ステップS903では、輻輳トラフィック推定部214が、変数「前回の送信量」に変数「送信量」の値を代入し、変数「送信量」に変数「累積転送量」から変数「前回の累積転送量」を減じたものを代入し、ステップS904に進む。
【0103】
ステップS904では、輻輳トラフィック推定部214は、変数「実効帯域」に
(送信量/PAUSE間隔)
を代入し、ステップS905に進む。ステップS905では、輻輳トラフィック推定部214が、「保証帯域」より「制限帯域」が小さい、すなわち帯域制限されているか否かを判定し、真ならステップS906に進み、偽なら終了状態913に進む。
【0104】
ステップS906では、輻輳トラフィック推定部214が、変数「前回の制限帯域」より「制限帯域」が小さい、すなわち帯域制限を前回強化したか否かを判定し、真ならステップS907に進み、偽ならステップS911に進む。
【0105】
ステップS907では、輻輳トラフィック推定部214が、「前回のPAUSE間隔」より「PAUSE間隔」が大きい、すなわちPAUSE間隔が拡大しているか否かを判定し、真ならステップS908に進み、偽ならステップS909に進む。ステップS908では、輻輳トラフィック推定部214が帯域制限を強化してステップS910に進む。ステップS908における帯域制限の強化は、例えば、「新しい制限帯域」に、
(前回の制限帯域+2×実効帯域)/3
を代入することで行う。ただし、この計算式は、制限帯域を小さくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に実効帯域を代入することとして、帯域制限の強化の幅を大きくしてもよい。
【0106】
ステップS910では輻輳トラフィック推定部214が、変数「帯域制限強化トラフィック数」を1増やし、ステップS912に進む。一方、ステップS909では、輻輳トラフィック推定部214は帯域制限を緩和してステップS911に進む。ステップS909における帯域制限の緩和は、例えば「新しい制限帯域」に、
(2×前回の制限帯域−実効帯域)
を代入することで行う。ただし、この計算式は、制限帯域を大きくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に保証帯域を代入することとしてもよい。
【0107】
ステップS911では輻輳トラフィック推定部214が、帯域制限を緩和してステップS912に進む。ここで、ステップS911における帯域制限の緩和は、例えば「新しい制限帯域」に、
(制限帯域×1.01)
を代入することで行う。ただし、ただし、この計算式は、制限帯域を大きくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に保証帯域を代入することとしてもよい。また、ステップ909を省略し、ステップ911にて制限帯域を大きくする処理を行ってステップ数を減らしてもよい。ステップS912では輻輳トラフィック推定部214が変数「帯域制限トラフィック数」を1増やし、終了状態913に進む。終了状態913では制限帯域補正処理を終了する。
【0108】
なお、図8に示した制限帯域計算処理において、各トラフィックの制限帯域が保証帯域より大きい場合は制限帯域に保証帯域を代入し、また制限帯域が実効帯域より小さい場合は制限帯域に実効帯域を代入することで、制限帯域の範囲を限定する。
【0109】
なお、本発明では、制限帯域の下限は実効帯域に限定されるものではなく、例えば制限帯域を0として対象トラフィックの送信を停止してもよい。また、帯域制限緩和の計算時のみ保証帯域を大きくしたり、帯域制限の計算時のみ実効帯域を小さくしたりして制限帯域の変化を大きくしてもよい。
【0110】
以上に説明した制限帯域計算処理により、輻輳トラフィック推定部214はトラフィック毎の制限帯域を計算して送信フレーム選択部215に通知し、フレーム転送装置1はトラフィック毎の送信帯域を制限する。
【0111】
制限帯域計算処理の要点は以下のようなものである。PAUSE開始時は輻輳が発生したことを意味するので、図8に示した制限帯域計算処理で帯域制限が強化されたトラフィックがなければ(ステップS813が真)、適当なトラフィックを選択して帯域制限を行う(ステップS814)。そして、図9に示した制限帯域補正処理では前記帯域制限の結果、PAUSE間隔が拡大していれば(ステップS907が真)、当該帯域制限が輻輳緩和に効果があったとみなして当該帯域制限を強化し(ステップS908)、拡大していなければ当該帯域制限の効果がないとみなして当該帯域制限を緩和する(ステップS909)。
【0112】
なお、PAUSEにより一時停止している時間も含めた実効的な送信帯域(ステップS904の実効帯域)は、当該トラフィックで使用できた帯域の実績とみなせるので、実効帯域を下限として帯域制限を行ってもよい。また、PAUSEがしばらく来ない場合(ステップS804が真)や帯域制限の強さが変化していない場合(ステップS906が偽)、帯域制限をしていたトラフィックで利用可能な帯域が変化した可能性も考慮して輻輳状態が緩和されたとみなして帯域制限を緩和してもよい(ステップS815およびステップS911)。
【0113】
すなわち、本発明では、PAUSEでフロー制御されるリンクについて、PAUSEフレーム受信側(すなわち制御対象のフローの送信側)において、PAUSEの間隔の変化から輻輳状態の変化(間隔拡大は輻輳緩和、間隔縮小は輻輳激化)を検出する。そして、当該リンクに送信するトラフィックのうち、当該トラフィックの送信帯域制限(送信の抑制)により輻輳緩和(PAUSE間隔の拡大)が検出される場合に、当該トラフィックが輻輳の原因であると推定する。また、PAUSEフレーム受信時に、適当なトラフィックを選択して送信を抑制してみて輻輳が緩和されるか否かを試し、輻輳が緩和されれば送信抑制を強化する。逆に輻輳が緩和されなければ送信抑制を緩和して他のトラフィックの送信を抑制してみるという試行錯誤により輻輳の原因と推定されるトラフィックを探索する。そして輻輳の原因であると推定されたトラフィックの送信を抑制することで、当該リンクのPAUSE発生を抑制して通信速度を改善する。本発明では制限帯域計算処理が輻輳制御の対象となるトラフィック数の制限要因を含まないため、必要に応じて対象トラフィック数を増減することができる。また、輻輳の原因と推定されるトラフィックの探索では、2分木探索にならって複数のトラフィックを選択して送信抑制して輻輳の状態変化を確認し、輻輳緩和が確認された複数のトラフィックの中でさらに一部トラフィックを選択して送信抑制を行うような、段階的な探索を行ってもよい。本発明の実施は、2分木探索のほか、リスト探索、木探索、グラフ探索など、一般に探索アルゴリズム、検索アルゴリズムと呼ばれる考え方を用いても行うことができる。なお、本発明における前述した送信の抑止は、一部トラフィック以外のトラフィックの送信促進により、相対的に当該一部トラフィックの送信を抑制してもよい。また本発明は送信の抑制よる輻輳の抑制に限るものではなく、一部トラフィックの帯域変更による輻輳状態の変化に基づいて、目的とする輻輳状態、例えば、あらかじめ定めたPAUSEフレームの受信間隔となるように各トラフィックの送信帯域を変更してもよい。
【0114】
<送信フレーム選択部の処理>
図10A、図10Bは送信フレーム選択部215における送信帯域計算処理を説明するフローチャートである。送信フレーム選択部215では、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDによりトラフィックを区別したうえで各トラフィックを送信する量を計算する。このため、送信フレーム選択部215は、割当帯域管理部213から通知された帯域割当管理表700の内容および輻輳トラフィック推定部214から通知された各トラフィックの制限帯域、キュー制御部218から通知された各論理キューの使用量、送信停止タイマー216を参照して得たPriority毎のPAUSE状態(タイマー値が0なら非PAUSE状態、それ以外ならPAUSE状態)を用いて、各トラフィックの送信帯域を送信帯域計算処理により計算する。そして、送信フレーム選択部215は、計算された前記送信帯域内でフレームが送信されるようにキュー制御部218および入出力制御部219を制御する。
【0115】
前記送信帯域計算処理は一定時間毎(例えば0.01秒毎)に繰り返して行う。なお、本発明では送信帯域計算処理実行の契機は一定周期に限るものではなく、例えば、PAUSEフレーム受信を送信帯域計算処理実行の契機としてもよいし、時間間隔をトラフィックの流量等に応じて変更してもよい。以下、送信帯域計算処理を説明するが、処理の中で帯域とサイズ(量)を相互変換する必要がある場合、帯域は送信帯域計算処理を実行する時間間隔でサイズを割ることで求められ、サイズは帯域に送信帯域計算処理をかけることで求められる。以下の説明では、これらの変換方法への言及は明示的には行わないが、必要に応じて行うものとする。
【0116】
なお、サイズの単位の例としてはバイトまたはビット、帯域の単位の例としてはbps(ビット毎秒)とし、1バイトは8ビットとするが、本発明で用いる単位はこれに限らず、例えばオクテット、バイト毎秒等を用いてもよい。また、以下の説明中で「トラフィック」は対象Priorityに属するトラフィックを、「キュー」は当該トラフィックのイーサネットフレームが格納されている論理キュー221をそれぞれ表す。なお、送信帯域計算処理において、変数「制限帯域」は輻輳トラフィック推定部214から通知された各トラフィックの制限帯域を保持するものとし、変数「割当帯域」は割当帯域管理部213から通知された帯域割当管理表に基づいて各トラフィックに保証する帯域を保持するものとし、変数「キューの使用量」はキュー制御部218から通知された各論理キュー221の使用量を各トラフィックについて保持するものとし、各トラフィックについての変数はそれぞれのトラフィックで異なる値を保持できるものとする。
【0117】
送信フレーム選択部215は送信帯域計算処理が開始状態S1001から開始されると、ステップS1002に進む。ステップS1002では、送信フレーム選択部215が各トラフィックの変数「送信帯域」に変数「制限帯域」をそれぞれ代入し、ステップS1003に進む。ステップS1003では、変数「合計割当帯域」に全トラフィックの「割当帯域」の合計値を代入し、ステップS1004に進む。ステップS1004では、ステップS1005からステップS1030までの処理を繰り返す。
【0118】
ステップS1005では、各トラフィックについて、ステップS1006からステップS1012までの処理を繰り返す。ステップS1006では、送信フレーム選択部215が、変数「キューの使用量」を、前回送信帯域計算処理を実行してからの経過時間で割った値を変数「最大送信帯域」に代入し、ステップS1007に進む。
【0119】
ステップS1007では、送信フレーム選択部215が、変数「要求帯域」に変数「最大送信帯域」の値を代入し、ステップS1008に進む。ステップS1008では、送信フレーム選択部215が、当該トラフィックがPAUSE状態であるか否かを判定し、真の場合はステップS1009に進み、偽の場合はステップS1010に進む。ステップS1009では、送信フレーム選択部215が、変数「要求帯域」に0を代入しステップS1010に進む。
【0120】
ステップS1010では、送信フレーム選択部215は、変数「制限帯域」が変数「保証帯域」より小さく(すなわち帯域制限されており)変数「送信帯域」が変数「最大送信帯域」より小さいか否かを判定し、真ならステップS1011に進み、偽ならステップS1012に進む。ステップS1011では、変数「要求帯域」に変数「送信帯域」を設定し、ステップS1012に進む。
【0121】
ステップS1012では、送信フレーム選択部215がステップS1005からの繰り返し処理が終了したら、ステップS1013に進む。
【0122】
ステップS1013では、送信フレーム選択部215が変数「最大送信帯域」が0より大きいトラフィックが1トラフィックのみで、かつ当該トラフィックの変数「制限帯域」が変数「保証帯域」より小さい(すなわち帯域制限されている)か否かを判定し、真ならステップS1014に進み、偽ならステップS1015に進む。ステップS1014では、送信フレーム選択部215が各トラフィックについて、変数「要求帯域」に変数「最大送信帯域」を代入し、ステップS1015に進む。ステップS1015では、変数「合計余剰帯域」、変数「合計不足帯域」、変数「合計割当済帯域」にそれぞれ0を代入し、ステップS1016に進む。
【0123】
ステップS1016では、送信フレーム選択部215が各トラフィックについて、ステップS1017からステップS1022までの処理を繰り返す。ステップS1017では、変数「分割帯域」に変数「送信帯域」の値を設定し、ステップS1018に進む。ステップS1018では、送信フレーム選択部215が変数「要求帯域」が変数「分割帯域」より小さいか否かを判定し、真ならステップS1019に進み、偽ならステップS1020に進む。ステップS1019では、変数「合計余剰帯域」に(分割帯域−要求帯域)を加え、ステップS1021に進む。
【0124】
ステップS1020では、変数「合計不足帯域」に(要求帯域−分割帯域)を加え、ステップS1021に進む。ステップS1021では、変数「合計割当済帯域」に分割帯域の値を加え、ステップS1022に進む。ステップS1022では、送信フレーム選択部215がステップS1016からの繰り返し処理が終了したら、図10BのステップS1023に進む。図10BのステップS1023では、変数「合計余剰帯域」に
(合計割当帯域 − 合計割当済帯域)
を加え、ステップS1024に進む。ステップS1024では、送信フレーム選択部215が、変数「合計不足帯域」および変数「合計余剰帯域」が十分小さいか否かを判定し、真なら終了状態1031に進み、偽ならステップS1025に進む。なお、ステップS1024における「十分小さい」とは例えば1bps以下等、分配するに足らない帯域や制御可能な最小帯域等を表す。本発明では、これに限ることなく、例えばステップS1024における判定を若干緩め(大き目)にして、繰り返し回数を削減してもよい。
【0125】
ステップS1025では、送信フレーム選択部215が、各トラフィックについて、ステップS1026からステップS1029までを繰り返す。ステップS1026では、送信フレーム選択部215が、要求帯域が分割帯域より小さい否かを判定し、真ならステップS1027に進み、偽ならステップS1028に進む。ステップS1027では、変数「送信帯域」に要求帯域を代入し、ステップS1029に進む。
【0126】
ステップS1028では送信フレーム選択部215が、変数「送信帯域」に
(合計余剰帯域×(要求帯域−分割帯域)/合計不足帯域)
を代入し、ステップS1029に進む。なお、ステップS1028における計算式は、合計余剰帯域の分配例を表しており、本発明はこれに限るものではない。例えば、1つのトラフィックに合計余剰帯域をすべて与え、他のトラフィックへの分配を0とし、処理を簡素化してもよい。
【0127】
ステップS1029では、送信フレーム選択部215が、ステップS1025からの繰り返し処理が終了したら、ステップS1030に進む。ステップS1030では、ステップS1004からの繰り返し処理が終了したら、終了状態1031に進む。終了状態1031では送信帯域計算処理を終了する。
【0128】
送信帯域計算処理の要点は以下の通りである。送信フレーム選択部215は、各トラフィックについて、送信帯域に制限帯域を代入して(ステップS1002)、以下を繰り返すことで送信帯域を調整する。送信フレーム選択部215は、要求帯域をPAUSE状態であれば0とし(ステップS1009)、そうでなければ論理キュー221のフレーム送信に必要な帯域(最大送信帯域)とする(ステップS1007)。ただし、帯域が制限されており、要求帯域が送信帯域より大きい場合は、要求帯域は送信帯域とする(ステップS1011)。ただし、送信しようとしている(すなわちキューにフレームのある)トラフィックが、帯域制限された1トラフィックのみの場合は(ステップS1013)、要求帯域はキューのフレーム送信に必要な帯域(最大送信帯域)とする(ステップS1014)。そして、送信帯域と要求帯域を比べて、不足分及び余剰分を計算し(ステップS1016)、不足のトラフィックに余剰分を再分配する(1025)。不足分及び余剰分が予め設定した一定値以下となって十分小さくなったら、余剰分の再分配を終了する(1024)。以上を繰り返す(ステップS1030)。
【0129】
すなわち、本発明では、他のトラフィックがあり、かつ帯域制限されている場合には制限帯域を超えないように送信帯域を設定し、それ以外の場合は最大送信帯域を上限帯域にして、保証帯域を各トラフィックに保証しつつ、各トラフィックで使用していない余剰帯域を帯域が不足しているトラフィックに再配分して、送信帯域を決定する。本発明では送信帯域計算処理が送信対象となるトラフィック数の制限要因を含まないため、必要に応じて対象トラフィック数を増減することができる。
【0130】
<変形例>
なお、図2の説明でPFCにおける処理を前提として説明したが、本発明はPFCを前提としない実施形態も可能である。その場合も図2の構成や処理は同一で、PFCにおいて1つのpriorityを用いると限定し、フレームの形式はIEEE 802.3xに規定されるPAUSEフレームとする。この場合、本発明はIEEE 802.3xに規定されるPAUSEをサポートしたイーサネットに適用可能となる。
【0131】
また、本発明はPAUSEの頻度(間隔)に基づいて送信する際のフレーム選択を変更することを含むため、図2で説明したようなフレーム転送装置でなくとも、1つ以上のネットワークインタフェースを持っていれば、実施可能である。このような実施形態を用いることで、計算機用のNIC(ネットワークインタフェースカード)や仮想マシンの仮想ネットワークインタフェースに対して本発明を実施することが可能となる。また、フレーム転送装置においてもポート単位で本発明を実施することも可能である。
【0132】
<まとめ>
以上のように、本発明のフレーム転送装置1によれば、リンクの送信先となるノード117からPAUSEフレームを受信した場合、PAUSEフレームで指定された時間までフレームの送信を一時停止し、送信先のノード117で輻輳の原因となっている論理トラフィックを推定する。そして、フレーム転送装置1は、当該ノード117への送信再開時には、輻輳の原因として推定された論理トラフィックの送信を抑制し、他の論理トラフィックを優先して送信する。これにより、送信先のノード117がPAUSEフレームを再度送信するのを防ぐことで当該ノード117の論理トラフィックが他の論理トラフィックに与える影響を抑制することができる。これらはすべてPAUSEによるフロー制御に基づいているため、確実な通信を保証できる。
【0133】
そして、本発明のフレーム転送装置1では、前記従来例のようにノード117は既存の構成のままでよく、新たな機能を付加する必要がないため導入コストを抑制できる。さらに、本発明のフレーム転送装置1では、前記従来例の非特許文献1のように、扱うことが可能な論理トラフィックの数が8以下に制限されることはなく、任意の数の論理トラフィックを制御することが可能となる。これにより、マルチコアプロセッサ等を利用した仮想化システムなどでは、仮想マシンの数がネットワークインタフェースの数に制約を受けることがなくなって、可用性を向上させることが可能となる。
【産業上の利用可能性】
【0134】
以上のように、本発明は論理トラフィックを転送する装置や計算機及びネットワークシステムに適用することができる。
【符号の説明】
【0135】
1 フレーム転送装置
101 演算処理装置
102 記憶装置
103 入出力装置
104−1〜104−n ネットワークインタフェース
107 全体制御プログラム
108−1〜108−n ポート制御プログラム
110 キュー
112−1〜112−n 入出力ポート
117−1〜117−m ノード
207 設定受付部
208 輻輳検出部
209 PAUSE送信ポート・時間決定部
210 トラフィック設定部
211 格納キュー選択部
212 トラフィック履歴管理部
213 割当帯域管理部
214 輻輳トラフィック推定部
215 送信フレーム選択部
216 送信停止タイマー
217 PAUSEフレーム作成部
218 キュー制御部
219 入出力制御部
220 フレーム解析部
221−1〜221−i 論理キュー
224 フレーム送信部
225 フレーム受信部
【技術分野】
【0001】
本発明は、コンピュータネットワークでフレームを転送する装置及び方法に関し、特に、トラフィックの輻輳を制御する技術の改良に関する。
【背景技術】
【0002】
コンピュータネットワークを実現するイーサネット(登録商標)は、データをフレームという単位に分割して送受信し、中継装置等の通信系路上でのフレーム廃棄を許容する標準規格となっている。フレーム廃棄によるデータ損失を許容しないアプリケーションに対しては、拡張規格としてIEEE802.3xにフロー制御用のPAUSEフレームが規定されている。フロー制御は送信側と受信側を結ぶリンクに対して行われる。リンクの受信側で、輻輳等の理由でフレームを正しく受信できないと想定される場合、リンクの受信側から送信側にPAUSEフレームを送信する。PAUSEフレームを受信したリンクの送信側ではフレーム送信を一時停止する。これらリンクの送信側及び受信側での処理により、リンクのフロー制御が行われ、リンクの受信側でフレームを受信できないことによるフレーム廃棄を防ぐ。
【0003】
一方、サーバの高密度化や、Local Area Network(LAN)に用いられるイーサネットの高速化を背景として、これまでLANとは別に構築されていたストレージアクセスのためのStorage Area Network(SAN)を、イーサネットを用いて構築してLANに統合し、ネットワークインタフェースやケーブル、ネットワーク機器を削減して運用の効率化をはかるLAN/SAN統合の動きが加速している。また、サーバ仮想化の進展により、1台の物理サーバ上で複数の仮想マシンを稼動させ、1つのLANを複数のネットワークで共用する環境が一般化している。これらの環境では物理的に1本のイーサネットケーブル上に性質や要求の異なる複数のトラフィックを流す必要がある。これらのトラフィックを論理的に区別する手法としてIEEE802.1Qに規定されるVirtual LAN (VLAN)が広く普及している。VLANでは各フレームにVLANタグを付加し、VLANタグに含まれる優先度およびVLAN IDでトラフィックを区別する。VLANを用いることで1本の物理的なリンクを論理的に分割して用いることが可能となる。
【0004】
LAN/SAN統合におけるストレージアクセスのトラフィックはフレーム廃棄を許容しない。しかしながら、PAUSEによるフロー制御は物理的なリンク単位で行うため、VLANにより論理的に分割されたリンクのいずれかで輻輳が発生してPAUSEフレームが送信されて送信が一時停止されると、同じ物理的なリンクを共有する他の論理的なリンクを流れるトラフィックのフレーム送信も一時停止してしまう。すなわち、複数のトラフィックで1つのリンクを共有するため、一部トラフィックでの輻輳が他のトラフィックの通信を妨げるという問題が生じる。
【0005】
これに対する従来技術として、論理的なリンク毎に独立したPAUSEフレームを規定する手法が知られている(例えば、特許文献1および非特許文献1)。
【0006】
特許文献1には「複数の入出力ポートから入力する伝送フレームの輻輳を検出する輻輳検出手段と、前記輻輳検出手段が輻輳を検出した入出力ポートにPAUSEフレームを送出するPAUSEフレーム送出手段とを備えたネットワークスイッチを有する輻輳制御システムにおいて、前記伝送フレームの代わりに仮想LAN情報を付加した拡張伝送フレームと、前記PAUSEフレームの代わりに前記PAUSEフレームに仮想LAN情報を付加した拡張PAUSEフレームとを使用し、前記PAUSEフレーム送出手段の代わりに前記拡張PAUSEフレームを前記入出力ポートに送出する拡張PAUSEフレーム送出手段を設けたことを特徴とする。」と記載されている。さらに「特に、前記仮想LAN情報をIEEE802.3x規格のVLANタグのVLAN−ID値とすることを特徴とする。或いは、前記仮想LAN情報をIEEE802.3x規格のVLANタグのプライオリティ値とすることを特徴とする。」と記載されている。
【0007】
また、非特許文献1では、IEEE802.1QbbとしてVLANタグのプライオリティ毎のPAUSE指示を含む拡張したPAUSEフレームおよび当該PAUSEフレームを用いた論理的なリンク毎のフロー制御を規定している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2007−174152号公報
【非特許文献】
【0009】
【非特許文献1】IEEE P802.1Qbb/D2.3, "IEEE Draft Standard for Local and Metropolitan Area Networks - Virtual Bridged Local Area Networks - Amendment: Priority-based Flow Control", Publication No.5570060, Issue date Sept. 9 2010
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記特許文献1および非特許文献1の処理では、リンクの送信側と受信側の双方がそれぞれ対応する必要があるため、既存の設備を全面的に置き換えまたは改造することが必要となる。
【0011】
また、上記特許文献1では、IEEEの標準規格として規定されているPAUSEおよびVLANを組み合わせたものであるが、これらを組み合わせた処理について、上記標準には規定されていないため、既存の装置にそのまま適用することはできず、また、上記特許文献1の技術を利用した装置も広範に利用可能な状況ではない。
【0012】
一方、上記非特許文献1は現在策定中の標準規格であり、将来的に対応する装置が増えると考えられるが、非特許文献1の技術で扱うことが可能な論理的なリンクの数は8までという制限がある。これは仮想マシンの増加やトラフィックの優先度制御を考慮すると不十分であり、8を超えた数のトラフィックを流す場合は、1つの論理的なリンク内を複数のトラフィックが流れる状況が生じ、先に挙げた一部トラフィックでの輻輳が他のトラフィックの通信を妨げるという問題は解決できない。
【0013】
したがって、上記従来技術では、標準規格に準拠し、技術導入時に必要な機器の変更が最小限で、フレーム廃棄を許容しない複数のトラフィックを扱い、かつ8を超える多数のトラフィックに対応可能な輻輳制御を行うことができないという課題があった。
【課題を解決するための手段】
【0014】
本発明は、フレームの送受信を行う複数のポートと、前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、を備える。
【発明の効果】
【0015】
したがって、本発明によれば、既存のネットワーク機器をそのまま利用しながらフレームの廃棄を許容しない複数のトラフィックの輻輳制御が可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態を示し、ネットワークシステムの構成の一例を示すブロック図である。
【図2】本発明の実施形態を示し、フレーム転送装置のネットワークシステムの構成の一例を示すブロック図である。
【図3】本発明の実施形態を示し、転送ポート管理表の一例を示す図である。
【図4】本発明の実施形態を示し、トラフィック設定表の一例を示す図である。
【図5】本発明の実施形態を示し、キュー設定表の一例を示す図である。
【図6】本発明の実施形態を示し、トラフィック履歴表の一例を示す図である。
【図7】本発明の実施形態を示し、帯域割当表の一例を示す図である。
【図8】本発明の実施形態を示し、輻輳トラフィック推定部における制限帯域計算処理の一例を示すフローチャートである。
【図9】本発明の実施形態を示し、輻輳トラフィック推定部における制限帯域補正処理の一例を示すフローチャートである。
【図10A】本発明の実施形態を示し、送信フレーム選択部における送信帯域計算処理の一例を示すフローチャートで、前半部である。
【図10B】本発明の実施形態を示し、送信フレーム選択部における送信帯域計算処理の一例を示すフローチャートで、後半部である。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【0018】
図1は、本発明の実施形態を示し、ネットワークシステムの構成の一例を示すブロック図である。
【0019】
<システムおよびハードウェアの構成>
図1は本実施形態におけるネットワークシステムの構成を説明するブロック図である。図1において、ネットワークシステムはフレーム転送装置1の入出力ポート112−1にケーブル115−1を介して接続されたノード117−1、および、入出力ポート112−nにケーブル115−nを介して接続されたノード117−mから構成される。なお、ノード117−1〜117−mは物理計算機やネットワーク装置あるいはストレージ装置等で構成される。また、フレーム転送装置1は、n個の入出力ポート112−1〜112−nを有する。以下では、入出力ポートの総称を112とし、ケーブルの総称を115とし、ノードの総称を117とする。
【0020】
本実施形態におけるネットワークシステムはノード117−1とノード117−mの間でケーブル115−1およびケーブル115−nとフレーム転送装置1を介したイーサネット(登録商標)による通信を実現する。ノード117−1〜ノード117−mはイーサネットに準拠した入出力ポートを有し、PAUSEフレームによるフロー制御をサポートしたネットワークノードであり、例えばネットワークインタフェースカードを装着した計算機や、ルータ装置、スイッチ装置等のネットワーク機器等である。ケーブル115はイーサネットによる通信に適合するケーブルである。フレーム転送装置1はイーサネットフレームを転送するブリッジの機能を持つネットワーク装置である。
【0021】
イーサネットについてはIEEE 802.3に規定されており、ブリッジ機能はIEEE 802.1DおよびIEEE 802.1Qに規定されている。本実施形態においては、フレーム転送装置1は、ブリッジ機能に加えて、イーサネットに関して、PAUSEフレームによるフロー制御、特にIEEE 802.3bd及びIEEE 802.1Qbbに規定されるPFC(Priority-based Flow Control)を対象として、ノード117−1〜ノード117−mの間で交換されるイーサネットフレームに関して、MAC(Media Access Control)アドレスやVLAN ID(Virtual Local Area Network Identifier)、TCP(Transmission Control Protocol)ポート番号等で区別される論理的なトラフィックに対して輻輳制御機能を提供する。ただし、本発明はイーサネットに限定されるものではなく、例えばFibreChannelにおけるBuffer−to−Bufferクレジット等、受信側の状態について送信側に通知するフロー制御の機能を持ったプロトコルであれば、本実施形態で説明する輻輳制御方法を適用可能である。なお、本実施形態において、ノードは117−1〜117−mのm台の場合で説明を行うが、ノードの個数は任意であり、例えば、より多くのノードを用意してケーブルによりフレーム転送装置1とそれぞれ接続し、より多くのノード間でフレーム転送装置1を介した通信をできるようにしてもよい。
【0022】
以下、他の図や図1の他の部分においても構成要素の数が限定されないことを同様の点線によって表現するものとする。また、本実施形態ではフレーム転送装置1およびノード117−1および117−mは物理的にそれぞれ異なる装置として実施した場合を説明するが、本発明の実施形態はこれに限定されるものではない。例えば、仮想マシンを稼動させる仮想化ソフトウェアを用いて物理的に同一装置内で複数の仮想マシンにより実施してもよい。仮想化ソフトウェアによる仮想化の実施ではケーブル115−1〜ケーブル115−mは共有メモリやメモリ間コピー等に置き換えられる。仮想化ソフトウェアを用いた仮想マシンによる実施により、柔軟な接続関係の変更や、ハードウェアの利用効率を高めること等が可能となる。
【0023】
続いて、図1を用いてフレーム転送装置1内部のハードウェア構成を説明する。フレーム転送装置1は、演算処理装置101、記憶装置102、入出力装置103、ネットワークインタフェース104−1〜ネットワークインタフェース104−nより構成され、共有バス106を通して互いに接続されている。本実施形態において、フレーム転送装置1はネットワークインタフェース104−1〜104−nがそれぞれケーブル115−1およびケーブル115−nに接続され、ノード117−1〜ノード117−mとイーサネットフレームを交換して、ノード117−1とノード117−mの間の通信を中継する。
【0024】
演算処理装置101はCentral Processing Unit(CPU)に代表される演算処理装置であり、記憶装置102上に展開されたプログラム(ソフトウェア)を実行する。なお、演算処理装置101を物理的または論理的に複数のCPUにより構成してよい。記憶装置102は演算処理装置101によって実行されるプログラムならびに当該プログラムが実行されることによって作成されるデータまたは読み込まれるデータおよび設定等を格納する。
【0025】
記憶装置102は例えばメモリ、ハードディスク、もしくは光ディスク等のデータやプログラムを保持可能な記憶媒体を含む装置(遠隔地に設置され、ネットワークインタフェース104−1もしくは104−n、入出力装置103等を通して通信される装置を含む)、またはこれらを組み合わせたもので構成される。記憶装置102に格納されるプログラムには、全体制御プログラム107(図1においては、プログラムを「PGM」と記述、以下同様)、ポート制御プログラム108−1〜108−nが含まれる。また、記憶装置に格納されるデータの一例としてはキュー部110、転送ポート管理表300、トラフィック設定表400、キュー設定表500、トラフィック履歴表600、帯域割当表700が含まれる。これらの詳細については後述するが、以下の説明においてデータの格納場所が明示されていないデータの保存・保持・記憶・記録・格納等の書き込みや参照・取り出し等の読み出しは記憶装置102に対して行うものとする。
【0026】
上記記憶装置102のプログラムはフレーム転送装置1を制御するための機能に関して論理的に区別したものであり、例えばすべてを1つのプログラムとして構成して処理させてもよいし、細分化して複数のスレッドやプロセス等に分離して実行したりしてもよい。なお、記憶装置102にはフレーム転送装置1を制御するためのプログラムにより作成された他のデータが格納されてもよい。本実施形態では記憶装置102にフレーム転送装置1を制御するためのプログラムが展開され、演算処理装置101により実行される。
【0027】
入出力装置103は、フレーム転送装置1に対して情報の入出力を行う装置である。入出力装置103は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ、またはスピーカー等の機器、またはフレーム転送装置1にはこれらの機器に接続可能なインタフェースを備えて、フレーム転送装置1にこれらの機器を接続して機能させる形態をとってもよい。また、入出力装置103には信号ケーブルまたは電波及び赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。
【0028】
フレーム転送装置1は、入出力装置103によって、フレーム転送装置1のユーザまたは管理者からの指示を受けたり、結果を出力したりすることが可能となる。ネットワークインタフェース104−1および104−nは、イーサネットフレームの送信および受信を行う入出力ポート112−1〜112−nを備え、演算処理装置101の指示により、ポート制御プログラム108−1および108−nによってそれぞれ制御され、他の機器とイーサネットフレームによる通信を行う。以下、これらの入出力ポート112と当該入出力ポート112を制御するポート制御プログラム108をまとめてポートと呼ぶ。
【0029】
また、共有バス106はフレーム転送装置1の各構成要素間の通信を行うためのものであるが、本発明は共有バスに限定されるものではない。各構成要素間で必要な通信を行えるようになっていれば、共有バスを用いる以外の方法によって接続されてもよい。例えば、各構成要素間を直接接続することのよって、要素間の接続を最適化し、処理に必要な消費電力を減らしたり、処理効率を上げたりすることが可能となる。
【0030】
<システムおよびハードウェアの変形例>
なお、本発明において、フレーム転送装置1の構成要素の個数は図1に限定されるものではなく、例えば入出力装置103を2つ用意して冗長化したり、機能分担したりしてもよい。また、本発明は、記憶装置102に格納したプログラムに格納したプログラムによって実現される機能のうち、一部または全部の機能をハードウェアとして実装してもよい。ハードウェアとして実装することにより、例えば処理の高速化や低消費電力化が可能となる。また、仮想マシンのように、当該ハードウェアが備える機能をプログラムとして実現してもよい。ハードウェアが備える機能をプログラムとして実現することによって、例えば、設置スペースを削減したり、管理を単純化したりできる。また、プログラムによって実現される機能の構成は後述する構成に限るものではなく、複数の機能が統合される構成、または1つの機能が複数に分割される構成でもよい。また、各機能によって実行される処理の順序についても、後述する順序に限るものではなく、処理の依存関係が許すならば、並列で同時に実行したり、順序を入れ替えて実行したりしてもよい。例えば、並列実行することによって処理時間を短縮したり、順序を入れ替えることによって待ち時間を減らしたりすることが可能となる。
【0031】
<ソフトウェアの構成>
図2はフレーム転送装置1におけるソフトウェア構成を説明するブロック図である。なお、図において、四角はフレーム転送装置1で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報または指示・指令が伝えられることを示す。処理ブロック間で伝えられる情報または指示・指令の内容は以下で説明する。
【0032】
フレーム転送装置1におけるソフトウェアは全体制御プログラム107、ポート制御プログラム108−1〜108−n(以下、制御プログラム108−1〜108−nのうちのいずれかを表す場合は「ポート制御プログラム108」と記述する。複数ある他のコンポーネントについても同様)、キュー110、入出力ポート112−1〜112−nの送受信機能から構成される。なお、入出力ポート112−1〜112−nの送受信機能はハードウェアで構成してもよい。フレーム転送装置1全体は、入出力ポート112−1にてイーサネットフレームを受信して、キュー110に格納し、その内容をポート制御プログラム108−1で解析し、解析結果から全体制御プログラム107にて当該イーサネットフレームを転送すべきポートを決定し、キュー110に格納している当該イーサネットフレームを転送すべきと決定されたポートの入出力ポート112−nから出力することによりイーサネットブリッジとして機能する。
【0033】
全体制御プログラム107は設定受付部207、輻輳検出部208、PAUSE送信ポート・時間決定部209、トラフィック設定部210および格納キュー選択部211、トラフィック履歴管理部212より構成され、複数のポートにまたがる可能性のある処理およびフレーム転送装置1全体の制御を行う。
【0034】
ポート制御プログラム108−1〜108−nは、割当帯域管理部213、輻輳トラフィック推定部(輻輳推定部)214、送信フレーム選択部215、送信停止タイマー(送信停止部)216、PAUSEフレーム作成部217、キュー制御部218、入出力制御部219およびフレーム解析部220より構成され、当該ポートに関連する入出力ポート112−1の制御およびキュー110の制御を行う。キュー110は論理的に分割されたキューである論理キュー221−1〜221−iにより構成され、入出力ポート112−1〜112−nから入出力されるイーサネットフレームを一時的に保持する。
【0035】
なお、論理キュー221−1〜221−iは、1つのイーサネットフレームについて、イーサネットフレームの内容や入出力されるポート等に基づいて、後述する格納キュー選択部211が分類したトラフィックに対応する。もちろん、論理キュー211の数は図2に示すような3に限定されるものではなく、例えば論理キューの数を1としてすべてのトラフィックのイーサネットフレームを格納してもよいし、論理キューの数を3より大きくしてより細かくトラフィックの種類毎などに分類して格納してもよい。また、論理キュー221−1〜221−iの総称を論理キュー221とする。
【0036】
また、格納キュー選択部211が行うトラフィックの分類は、1つのイーサネットフレームが複数のトラフィックに同時に分類される処理でもよく、その場合、1つのイーサネットフレームが複数の論理キュー221に格納されることとなる。この場合、記憶装置102上の表現としては、複数の論理キュー221に同一のイーサネットフレームをコピーして記憶装置102の制御を簡素化してもよい。あるいは、複数の論理キュー221で同一の記憶装置102を参照するようにしてメモリを節約してもよい。
【0037】
1つのイーサネットフレームが複数のトラフィックに同時に分類されることで、例えばポートに接続されたノードで複数の仮想マシンが稼動する場合や、フレーム転送装置1のポートにブリッジが接続され、当該ブリッジに複数のノードが接続された場合にマルチキャストフレームの転送を簡素化できる。
【0038】
入出力ポート112−1〜112−nはフレーム送信部224およびフレーム受信部225から構成され、当該ポートに接続されたノード117とイーサネットフレームを送受信する。以下の説明では、当該ポートにおけるノードとの接続をリンクと呼び、リンクを通してイーサネットフレームが当該ノードと送受信できる状態にあるものとして説明する。
【0039】
また、本実施形態では、トラフィックはVLAN IDや優先度情報、送信元や宛先等の通信経路等により区別される、ネットワークを流れる情報を示す。そして、イーサネットフレームまたはフレームは、トラフィックに流すデータの単位を表す。
【0040】
<ソフトウェアの構成:事前準備>
続いて、図2の各構成要素間で送受信される支持・指令および情報について、フレーム転送装置1によるイーサネットフレームの転送を例に説明する。まず、イーサネットフレームの転送に先立って、設定受付部207は入出力装置103またはネットワークインタフェース104−1〜104−nを介してフレーム転送装置1のユーザまたは管理者から入力された情報にしたがって、記憶装置102に各種の設定を格納する。
【0041】
具体的には、設定受付部207へ入力された情報にしたがって、トラフィック設定部210からトラフィック設定表400と、キュー設定表500の内容を設定し、設定受付部207へ入力された情報とトラフィック設定部210のキュー設定表500の内容にしたがって、割当帯域管理部213を通して帯域割当管理表700の内容を格納する。
【0042】
これらはフレーム転送装置1の製造時に予め記憶装置102に格納しておいてもよい。なお、トラフィック設定表400、キュー設定表500、帯域割当管理表700を含め、以下の説明において用いる表の具体的な内容については後ほど説明する。キュー制御部218はキュー設定表500に従ってキュー110に論理キュー221の作成・削除等の初期設定を指示し、論理キュー221を使用できるように準備する。
【0043】
<ソフトウェアの構成:受信時の処理>
以下、まず、フレーム転送装置1で行われるイーサネットフレーム受信時の処理を説明する。イーサネットフレームはフレーム受信部225で受信されると、イーサネットフレームの情報をフレーム解析部220が解析し、フレーム解析部220がPAUSEフレームでない場合は転送すべきフレームとして格納キュー選択部211に解析結果を通知する。
【0044】
フレーム解析部220が格納キュー選択部211に通知する解析結果は、送信先MACアドレス、VLAN ID、Priority等の、格納キュー選択部211がトラフィックとして分類するために必要な情報である。これらの情報は、送信するイーサネットフレームに関連づけられた情報である。
【0045】
格納キュー選択部211では、フレーム解析部220より通知された解析結果とトラフィック設定部210のトラフィック設定表400を用いて当該イーサネットフレームのトラフィックID405(図4参照)を決定し、当該トラフィックID405と当該イーサネットフレームが入力されたポートを表すポートID303(図3参照)およびトラフィック設定部210のキュー設定表500(図5参照)から当該イーサネットフレームを格納する論理キューのID503を決定する。そして、格納キュー選択部211がフレーム解析部220より通知された解析結果と転送ポート管理表300を用いて当該イーサネットフレームを転送するポートID303を決定する。
【0046】
格納キュー選択部211は決定されたポートのキュー制御部218と入出力制御部219に対してフレーム受信部225の当該イーサネットフレームを当該論理キューのID503に格納するよう指示する。当該指示に従って、入出力制御部219は当該イーサネットフレームを当該論理キューに伝え、キュー制御部218は当該イーサネットフレームを当該論理キュー221に格納する。
【0047】
また、格納キュー選択部211はトラフィック履歴管理部212に、当該イーサネットフレームのトラフィックIDとポートIDとフレームサイズを通知する。トラフィック履歴管理部212では格納キュー選択部211から通知された情報を現時刻とともにトラフィック履歴表600(図6参照)に保存する。トラフィック履歴表600への保存時に古い時刻のエントリを削除する等によりトラフィック履歴表600が使用するメモリサイズを節約してもよい。
【0048】
以上により、リンクで受信されたイーサネットフレームが転送すべきフレームの場合、当該イーサネットフレームが適切な論理キューに格納される。このとき、格納キュー選択部211は、送信先MACアドレス、VLAN ID、Priority等のフレームの種類に応じてトラフィックを分類し、分類結果に応じた論理キュー221へ当該フレームを格納する。
【0049】
<ソフトウェアの構成:送信時の処理>
続いて、各ポートの論理キュー221−1〜221−iからイーサネットフレームを送信する処理について述べる。割当帯域管理部213は帯域割当管理表700(図7参照)の内容を輻輳トラフィック推定部214および送信フレーム選択部215に通知する。
【0050】
送信フレーム選択部215は、割当帯域管理部213から通知された帯域割当管理表700の内容および輻輳トラフィック推定部214が通知する制限帯域と、キュー制御部218から通知された各論理キュー221の使用量と、送信停止タイマー216のタイマー値にしたがって、論理キュー(例えば221−1)のイーサネットフレームを送信する。送信フレーム選択部215による送信すべきイーサネットフレームの選択方法については送信帯域計算処理として図10A、図10Bで後述する。
【0051】
送信フレーム選択部215による論理キュー221−1等からのイーサネットフレームの送信は、具体的には、格納キュー選択部211がキュー制御部218と入出力制御部219に対して論理キュー221−1のイーサネットフレームを読み出してリンクに送信するよう指示する。当該指示に従って、キュー制御部218は当該イーサネットフレームを当該論理キューから取り出してフレーム送信部224に送るよう論理キュー221−1に指示し、入出力制御部219はフレーム送信部224に論理キュー221−1から送られた当該イーサネットフレームを入出力ポート112−1に接続されたリンクに対して送信するように指示する。
【0052】
また、入出力制御部219は送信したイーサネットフレームの情報を、具体的には属する論理キュー221−1〜221−iのキューIDと当該イーサネットフレームのフレームサイズを輻輳トラフィック推定部214に通知する。輻輳トラフィック推定部214は、フレーム解析部220から通知されたPriority毎のPAUSEフレーム受信状況、割当帯域管理部213から通知された帯域割当管理表の内容、キュー制御部218から通知された論理キュー221−1〜221−iの使用量および入出力制御部219から通知された送信するイーサネットフレームの情報と、送信停止タイマー216を参照して得たPriority毎の変数であるPAUSE状態に基づいて、各論理キュー221からイーサネットフレームの制限帯域を計算して送信フレーム選択部215に通知する。
【0053】
輻輳トラフィック推定部214における制限帯域の計算方法については制限帯域計算処理として図8で後述する。以上により、論理キューからイーサネットフレームがリンクに送信される。
【0054】
なお、イーサネットフレームの転送(ブリッジ)については、IEEE 802.1DおよびIEEE 802.1Qとして標準化されており、これらの技術を適宜用いることができる。
【0055】
<ソフトウェアの構成:PAUSE受信>
続いて、図2におけるPAUSEフレームの扱いについて述べる。PAUSEフレームを受信した場合および送信する場合のフレーム転送装置1における処理について説明する。まず、PAUSEフレームを受信した時のフレーム転送装置1が実行する処理について説明する。イーサネットフレーム受信時は、フレーム解析部220の解析により、当該イーサネットフレームがPAUSEフレームであることが検出される。
【0056】
PAUSEフレームは転送すべきフレームではないのでフレーム解析部220は格納キュー選択部211に通知せず、PAUSEフレームの内容にしたがって各Priorityで一時停止すべき時間を計算し、送信停止タイマー216に指示する。そして、フレーム解析部220は輻輳トラフィック推定部214に対してPriority毎にPAUSEフレームの受信状況を通知する。
【0057】
具体的には、フレーム解析部220は輻輳トラフィック推定部214にPAUSEフレームにより指示された時間を通知する。送信停止タイマー216は格納キュー選択部211より指示されたPriority毎の時間にタイマー値をセットする。送信停止タイマー216は一定時間毎に設定された各タイマー値を0になるまで減じる。送信停止タイマー216は、PAUSEフレームにより指示された時間がPAUSE状態の解除を意味する0の場合は0をセットする。送信フレーム選択部215は送信停止タイマー216を参照し、特定のPriorityの送信タイマーが0より大きい場合は当該Priorityに属するイーサネットフレームを含む論理キュー221からの送信を停止する。
【0058】
以上により、PAUSEフレームに指定された時間だけ、当該リンクに対するフレーム転送装置1からのフレーム送信が入出力ポート112毎に一時停止され、PAUSEフレームによる輻輳制御が実現される。
【0059】
<ソフトウェアの構成:PAUSE送信>
次に、フレーム転送装置1がPAUSEフレームをリンクへ送信する場合の処理について説明する。PAUSEフレームの送信は当該リンクが輻輳状態となり、ノード117から送信されたフレームをフレーム転送装置1で正しく受信できない恐れがある場合に行う。本実施形態においては、フレーム転送装置1のポート制御プログラム108が受信するフレームを格納する論理キュー221の使用量が停止閾値(例えば、確保したキュー容量の8割)を超えた場合に、ノード117から送信されたフレームを受信できない恐れがあると判定して、当該論理キュー221に格納されるフレームを送信しているリンクに送信を停止させるPAUSEフレームを送信する。
【0060】
フレーム転送装置1は、当該論理キュー221の使用量が再開閾値(例えば、確保したキュー容量の5割)を下回った場合に受信できない恐れが消滅したと判定して、当該リンクへの送信を再開させるPAUSE解除フレームを接続されているリンクに送信する。
【0061】
図2において、キュー制御部218は論理キュー(例えば、221−1)の使用量を輻輳検出部208に通知する。輻輳検出部208はキュー制御部218から通知された論理キューの使用量が停止閾値を越えたもしくは再開閾値を下回ったことを検知すると、PAUSE送信ポート・時間決定部209に通知する。
【0062】
PAUSE送信ポート・時間決定部209は、トラフィック履歴管理部212のトラフィック履歴表600とトラフィック設定部210のトラフィック設定表400、キュー設定表500を参照して、当該論理キュー221に格納されるイーサネットフレームが入力されている(1または複数の)ポートを検索する。PAUSE送信ポート・時間決定部209は検索したポートのPAUSEフレーム作成部217に、当該論理キュー221のPriorityと、当該Priorityでの送信を一時停止させる時間を通知する。なお、当該論理キュー221に複数のPriorityに属するフレームを格納するなど、当該論理キューのPriorityが一意に定まらない場合は、複数のPriorityに関して同様の検索をPAUSE送信ポート・時間決定部209が行う。また、前記検索を行う代わりにすべてのポートや当該論理キューの所属するVLANに参加しているポートを対象として、検索に必要な時間を節約してもよい。
【0063】
送信を一時停止させる時間については、停止閾値を越えた場合は最大値である65535(単位は512ビットを送信する時間)とし、再開閾値を下回った場合は0とする。本発明では、停止閾値を越えた場合の送信を一時停止させる時間が前記の65535に限るものではなく、例えば論理キュー221の空き容量や当該論理キューからの送出量、演算処理装置101の使用量等に基づいてさらに細かく時間設定をして送信再開PAUSEフレーム(またはPAUSE解除フレーム)の送出を抑制するなどしてもよい。
【0064】
PAUSEフレーム作成部217は、PAUSE送信ポート・時間決定部209からの指示を、当該Priorityの時間として埋め込んだPAUSEフレームを作成し、フレーム送信部224に通知する。
【0065】
PAUSEフレーム作成部217では、PAUSE送信ポート・時間決定部209から指示された時間をPriority毎に記憶し、送信停止タイマー216と同様に0になるまで一定時間毎に前記指示され時間から1を減じ、各Priorityでの送信を一時停止させる時間の現在の値を参照可能にする。また、PAUSEフレーム作成部217では、PAUSE送信ポート・時間決定部209から指示されたPriority以外のPriorityに関しても一時停止させる時間を埋め込んだPAUSEフレームを作成できるようにする。
【0066】
入出力ポート112のフレーム送信部224では、ポート制御プログラム108のPAUSEフレーム作成部217から通知されたPAUSEフレームを、接続されたリンクに対して送出する。なお、PAUSEフレームについて直接フレーム送信部224による送出は行わず、いったんPAUSEフレーム用に用意した論理キュー221に格納し、送信フレーム選択部215で他の論理キュー221より優先してフレームを送出するという方法にし、送出されるフレームの管理を一元化してもよい。
【0067】
以上により、当該リンクでのフレーム転送装置1によるフレームの受信が一時停止され、PAUSEフレームによる輻輳制御が実現される。
【0068】
なお、PAUSEフレームのフォーマットや一時停止時間等については、IEEE 802.3xおよびIEEE 802.3bd、IEEE 802.1Qbbとして標準化されており、本実施形態による説明があれば当業者によるPAUSE機能の実施は困難ではない。
【0069】
<ソフトウェアの構成のバリエーション>
図2においては、受信フレームをそのまま論理キュー221に格納する形での実施を説明したが、本発明はこれに限るものではなく、例えば入力バッファ、出力バッファのようにバッファを記憶装置102に設置してイーサネットフレームを格納し、格納キュー選択部211による論理キューの選択や送信フレーム選択部215による送信フレーム選択の処理を平準化してもよい。また、フレーム解析部220においてPAUSEフレームでない場合は転送すべきフレームとしたが、例えばPAUSEフレーム以外のフレームであっても転送する必要のないLLDPフレームの取り扱いや、VLANタグの付加または除去等、一般にイーサネットスイッチやL2スイッチと呼ばれるネットワーク機器で行われる拡張を施してもよい。また、本実施形態ではトラフィックの分類に、送信元MACアドレス、送信先MACアドレス、VLAN ID、Priorityを用いたが、本発明におけるトラフィックの分類はこれに限定されるものではなく、例えば、入力されたポートや、イーサネットフレームに含まれる情報であるEtherType、IP(Internet Protocol)アドレス、TCPのポート番号等を加え、各情報単独または複数の情報を組み合わせてトラフィックを決定する形で用いて行ってもよい。たとえばTCPのポート番号やIPアドレスの情報を用いることで、特定アプリケーションのトラフィックを区別して輻輳制御を行うことができるようになる。
【0070】
<表の説明>
続いて、図2の説明に用いた表である、転送ポート管理表300、トラフィック設定表400、キュー設定表500、トラフィック履歴表600、帯域割当管理表700の具体的な内容について例を用いて説明する。なお、これらの表は記憶装置102に保存される。
【0071】
図3に転送ポート管理表の例を示す。転送ポート管理表300は、MACアドレス301、VLANID302、ポートID303を含むエントリで構成される。MACアドレス301はイーサネットにおけるエンティティを識別するためのアドレスである。VLAN ID302は、IEEE 802.1Qにて規定される、イーサネットフレームにおけるVLANの識別子で、異なるVLAN IDを持つフレームを別のVLANとして扱うために用いられるものである。ポートID303は複数あるポート(入出力ポートおよび対応するポート制御プログラムを表す)のうちの1つを識別するための識別子である。
【0072】
格納キュー選択部211では転送ポート管理表300を用いて、フレーム解析部220から通知された解析結果のうちの送信先MACアドレスがMACアドレス301で、同じくVLAN IDがVLANID302と両方ともに一致するエントリを検索し、該当するエントリのポートID303を対象として決定する。格納キュー選択部211では転送ポート管理表300に前記一致するエントリが複数あった場合は複数のポートを対象として決定する。一方、前記一致するエントリが見つからなかった場合はVLAN IDが一致する全ポートを対象とする。
【0073】
転送ポート管理表300はIEEE 802.1QにおけるFiltering Databaseに対応する。転送ポート管理表300はフレームの情報と照合して当該フレームを転送すべきポートを決定する機能を持てば、必ずしも図3に挙げた情報に基づかなくてもかまわない。例えば、入力ポートを識別するポートIDと転送先のポートID303の対応表といった構成も考えられ、VLAN IDを省いた構成(IEEE 802.1Dに規定されるブリッジ機能)としてもよい。また、転送ポート管理表300は入力されたフレームの送信元MACアドレスとVLAN IDおよびポートIDの組み合わせをエントリとして追加し、一定時間使用しなかったエントリを削除するMAC学習により保守する。なお、本発明においてはこれに限るものではなく、例えば、固定的なエントリを作成し、MAC学習の処理を省いてもよい。
【0074】
図4にトラフィック設定表の例を示す。トラフィック設定表400は、送信元アドレス401、送信先アドレス402、VLANID403、Priority404、トラフィックID405を含むエントリで構成される。送信元アドレス401は送信元のMACアドレス、送信先アドレス402は送信先のMACアドレスを格納する。VLANID403およびPriority404はIEEE 802.1Q で規定されるVLAN IDおよびPCPの値をそれぞれ表す。トラフィックID405は論理的に区別して扱うトラフィックの識別子を格納する。
【0075】
格納キュー選択部211ではトラフィック設定表400を用いて、フレーム解析部220から通知された解析結果のうちの対象フレームの送信先MACアドレスと送信先アドレス402を、送信元MACアドレスと送信元アドレス401を、VLAN IDとVLANID403を、PriorityとPriority404をそれぞれ照合し、すべて一致したエントリのトラフィックID405を取得し、転送ポート管理表300およびキュー設定表500と併せて対象フレームの格納すべき論理キューを決定する。
【0076】
したがって、トラフィック設定表400ではトラフィックの分類に用いる情報と、一致した場合のトラフィックIDを対応付ける役割を担う。そのため、先に例示したようにトラフィックの分類に用いる情報は例えばEtherTypeなどでもよく、本発明ではトラフィック設定表400に含まれる情報は図4に限定されるものではない。一致するエントリが見つからず対象トラフィックが確定しない場合は、あらかじめ定められたトラフィックID(例えば0)を用いる。
【0077】
図5にキュー設定表500の例を示す。キュー設定表500はトラフィックID501、ポートID502、キューID503を含むエントリで構成される。トラフィックID501は図4に示したトラフィック設定表400のトラフィックID405と同様、論理的に区別して扱うトラフィックの識別子を格納する。ポートID502は図3の転送ポート管理表300のポートID303と同様にポートを区別するための識別子を格納する。キューID503はキュー110における論理キュー221−1〜221−iを区別するための識別子を表す。格納キュー選択部211では転送ポート管理表300およびトラフィック設定表400の結果をキュー設定表500と照合し、トラフィックID501とトラフィックID405、および、ポートID502とポートID303の双方が方一致するエントリを検索し、対象フレームを格納する論理キューを検索されたエントリのキューID503から決定する。
【0078】
格納キュー選択部211ではフレーム解析部220から通知された解析結果と、転送ポート管理表300、トラフィック設定表400およびキュー設定表500を用いて、対象フレームを格納する論理キュー221を決定する。そのため、これら3種の表は必ずしも別に保存される必要はなく、フレーム解析部220から通知された解析結果から対象フレームを格納する論理キュー221を決定できればよい。例えば、転送ポート管理表300、トラフィック設定表400およびキュー設定表500を1つの表としてまとめることでデータ構造を簡素化することができる。
【0079】
図6にトラフィック履歴表の例を示す。トラフィック履歴表600は、トラフィックID601、ポートID602、時刻603、フレームサイズ604を含むエントリで構成される。トラフィックID601は図4、図5のトラフィックID405、トラフィックID501と同様、論理的に区別して扱うトラフィックの識別子を格納する。ポートID602は図3、図5のポートID303およびポートID502と同様、ポートを区別するための識別子を格納する。時刻603は当該エントリが作成された時刻を表す値で、例えばある時点からの経過秒数を用いることができるがこれに限定されるものではない。例えば、一定周期でカウントアップされるカウンタを用いることもでき、この場合、ハードウェア実装の簡素化が期待できる。フレームサイズ604は対象とするイーサネットフレームのフレームサイズを表す。フレームサイズ604として格納する情報はフレームサイズに限定するものではなく、大まかなフレーム送信量を把握できればよい。例えば、フレームサイズ604として1を格納して処理を単純化してもよい。
【0080】
PAUSE送信ポート・時間決定部209では、トラフィック履歴表600を用いて対象トラフィックが入力されているポートを決定する。そのため、トラフィック履歴表600は対象トラフィックの入力ポートを調査可能であればよく、図6に示す形式に限定されるものではなく、例えば、各トラフィックIDと入力のあったポート番号といった形式でもよい。形式を変更することでトラフィック履歴表600に必要なメモリ量を削減したりアクセス時間を削減したりできる。またエントリは追加のみでなく、例えば時刻603を現時刻と比較して一定時間経過したもの、フレームサイズ604が一定値より小さいもの等を削除したり参照時に除外したりしてもよい。このような対象エントリの限定により、例えば論理キュー221の輻輳に与える影響の大きなポートからのフレーム入力を抑制して他の通信に関しては制限せずに通すといった柔軟な輻輳制御がイーサネットフレーム受信時に可能となる。
【0081】
図7に帯域割当管理表の例を示す。帯域割当管理表700はキューID701と割当帯域702を含むエントリで構成される。キューID701は図5のキューID503と同様、キュー110における論理キュー221を区別するための識別子を格納する。割当帯域702は当該論理キュー221からリンクに対して送信する保証帯域を格納する。割当帯域702は絶対的な送信帯域のほか、送信帯域の比のような形で指定してもよい。帯域割当管理表700を用いることで各論理キュー221からリンクに対して送信する際に保証すべき帯域を参照することが可能となる。
【0082】
以上に説明した表のデータ構造は必ずしも表である必要はなく、例えばハッシュや2分木等でもよい。ハッシュを用いることで一致するエントリの検索時間短縮が期待できる。また、それぞれの照合は完全一致に限るものではなく、例えば部分一致等、与えられた情報に基づいて対象とするエントリを決定できればよい。例えば部分一致を用いることにより、表に必要なメモリ容量を削減することができる。
【0083】
続いて、輻輳トラフィック推定部214における制限帯域計算処理および送信フレーム選択部215における送信帯域計算処理についてフローチャートを用いて説明する。なお以下の説明において、変数に格納された値は当該変数名により表すこととする。
【0084】
<輻輳トラフィック推定部の処理>
図8は輻輳トラフィック推定部214で行う制限帯域計算処理の一例を説明するフローチャートである。輻輳トラフィック推定部214は、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDによりトラフィックを区別したうえで各トラフィックの送信帯域を計算する。そして、輻輳を引き起こすトラフィックを推定し、当該トラフィックが輻輳の要因と推定される場合には当該トラフィックの送信帯域を減らす。
【0085】
このため、輻輳トラフィック推定部214は、フレーム解析部220から通知されたPAUSEフレーム受信状況と、割当帯域管理部213から通知された帯域割当管理表の内容と、キュー制御部218から通知された論理キューの使用量と、入出力制御部219から通知された送信したイーサネットフレームの情報と、送信停止タイマー216を参照して得たPriority毎のPAUSE状態(タイマー値が0なら非PAUSE状態、それ以外ならPAUSE状態)を用いて、各トラフィックで送信可能な制限帯域を制限帯域計算処理により計算して送信フレーム選択部215に通知する。
【0086】
制限帯域計算処理は一定時間毎(例えば0.01秒毎)に繰り返して行う。なお、本発明では制限帯域計算処理実行の契機は一定周期に限るものではなく、例えば、PAUSEフレームの受信を制限帯域計算処理実行の契機としてもよいし、時間間隔をトラフィックの流量等に応じて変更してもよい。なお、以下の説明は、PFCの1つのPriorityに対する処理を対象としており、当該PriorityのPAUSEフレームにより当該Priorityに属する全トラフィックの送信が停止されるものとして説明する。これはPFCではない一般のPAUSEで当該リンクを流れる全トラフィックの送信が停止されるのと同様である。なお、PFCにおける複数のPriorityに対応するには、制限帯域計算処理をPriority毎に当該Priorityに属するトラフィックを対象として行う。以下の説明中で「トラフィック」は対象Priorityに属するトラフィックを、「キュー」は当該トラフィックのイーサネットフレームが格納されている論理キュー221をそれぞれ表す。また「保証帯域」は帯域割当管理表の内容である各トラフィックの割当帯域702を表す変数である。「累積送信量」は入出力制御部219から通知された送信済みのイーサネットフレームの情報を用いてトラフィック毎にこれまで転送したフレームサイズの合計値を保存する変数である。すなわち、各トラフィックの累積送信量は入出力制御部219から通知されるたびに加算していく。また変数「制限帯域」、「前回の制限帯域」の初期値は変数「保証帯域」の値とする。
【0087】
輻輳トラフィック推定部214は、制限帯域計算処理が開始状態S801から開始されると、ステップS802に進む。
【0088】
ステップS802では輻輳トラフィック推定部214が送信停止タイマー216を参照して取得したPAUSE状態であるか否かを判定し、真(PAUSE中)であればステップS803に進み、偽ならステップS804に進む。ステップS803では輻輳トラフィック推定部214が変数「PAUSE状態」を参照し、前回PAUSE状態ではなく今回PAUSE状態となった、すなわちPAUSEが開始されたか否かを判定し、真ならステップS805に進み、偽であればステップS818に進む。
【0089】
ステップS805では、輻輳トラフィック推定部214が変数「PAUSE間隔」を変数「前回のPAUSE間隔」に保存し、変数「PAUSE開始時刻」を変数「前回のPAUSE時刻」に保存し、変数「PAUSE開始時刻」に現在の時刻を代入し、変数「PAUSE間隔」にPAUSE開始時刻から前回のPAUSE時刻を減じた時間を代入し、ステップS806に進む。
【0090】
ステップS806では、輻輳トラフィック推定部214が各トラフィックについて変数「累積転送量」の値を変数「前回の累積転送量」に代入し、変数「累積送信量」の値を変数「累積転送量」に代入し、ステップS807に進む。ステップS807では、輻輳トラフィック推定部214が「前回のPAUSE間隔」および「PAUSE間隔」が有意であることを判定し、真ならステップS808に進み、偽ならステップS817に進む。なお、ステップS807における「有意」は、値が、変数が未定義値でなく、かつ、一定値(例えば0.05秒)より大きいこと表す。これは、PAUSE間隔が初期状態であったり、誤差といえるほど小さかったりした場合に後述する制限帯域補正処理を行わないようにするためである。
【0091】
ステップS808では、輻輳トラフィック推定部214が変数「帯域制限トラフィック数」と「帯域制限強化トラフィック数」にそれぞれ0を代入し、ステップS809に進む。ステップS809では、各トラフィックについて、ステップS810からステップS811までを繰り返す。
【0092】
ステップS810では、輻輳トラフィック推定部214が後述する図9の制限帯域補正処理を実行して、ステップS811に進む。ステップS811では、輻輳トラフィック推定部214がステップS809からの繰り返し処理を各トラフィックについて終了したら、ステップS812に進む。
【0093】
ステップS812では輻輳トラフィック推定部214が変数「帯域制限トラフィック数」が正であるか否かを判定し、真ならステップS813に進み、偽ならステップS817に進む。ステップS813では輻輳トラフィック推定部214が変数「帯域制限強化トラフィック数」が0であるか否かを判定し、真ならステップS814に進み、偽ならステップS817に進む。
【0094】
ステップS814では、輻輳トラフィック推定部214がトラフィックを選択し、帯域制限を実施し、ステップS817に進む。このステップS814におけるトラフィック選択の例として、輻輳トラフィック推定部214が、変数「トラフィック番号」(初期値は0)を参照し、対応するトラフィックの変数「前回の送信量」が正なら当該トラフィックを選択し、そうでなければトラフィック番号に1を加えて次のトラフィックを調べる。そして、輻輳トラフィック推定部214は、トラフィック番号がトラフィックの数以上となった場合は0に戻す。本発明においてステップS814におけるトラフィック選択は前述の方法に限定されるものではなく、例えばランダムにトラフィックを選択するようにして処理を単純化してもよい。また、複数のトラフィックを順番に選択してもよい。さらに、例えば送信履歴に基づいて、直近にイーサネットフレームを多く送信しているトラフィックから優先して選択するようにしてもよい。また、ステップS814における帯域制限は、選択したトラフィックの変数「新しい制限帯域」に、例えば、
(2×保証帯域+実効帯域)/3
を代入する。各トラフィックの実効帯域は後述の制限帯域補正処理で計算される。なお、ステップS814における「新しい制限帯域」の計算式は、制限帯域を保証帯域から実効帯域に近づけるためのものであり、本発明はこれに限るものではない。例えば、より保証帯域に近づけるようにして、帯域制限を緩やかにしてもよい。
【0095】
次に、ステップS802の判定でPAUSE中でない場合のステップS804では、輻輳トラフィック推定部214が、現在の時刻と変数「PAUSE開始時刻」の差が一定時間(例えば変数「PAUSE間隔」の2倍)より大きいか否かを判定し、真ならステップS815に進み、偽ならステップS818に進む。
【0096】
ステップS815では、輻輳トラフィック推定部214が帯域制限を緩和して、ステップS816に進む。ここで、ステップS815における帯域制限の緩和は、各トラフィックについて、「新しい制限帯域」として、例えば、
(前回の制限帯域+保証帯域)/2
を代入する。なお、ステップS815における「新しい制限帯域」の計算式は、制限帯域を保証帯域に近づけるものであり、本発明はこれに限定されるものではない。例えば、より保証帯域に近づけるようにして、帯域制限の緩和幅を大きくしてもよい。
【0097】
次に、ステップS816では、輻輳トラフィック推定部214が変数「PAUSE間隔」を大きくしてステップS817に進む。ここで、ステップS816はステップS815が実行される頻度を減らすために行うもので、帯域制限の緩和を緩やかにする効果がある。変数「PAUSE間隔」を大きくする例としては、PAUSE間隔に
(PAUSE間隔×2)
を代入するなどが考えられるが、本発明は必ずしもこれに限定されるものではなく、例えば定数値を足すなどでもよい。また、ステップS816を省略して処理を簡素化してもよい。
【0098】
次に、ステップS817では、輻輳トラフィック推定部214が各トラフィックについて、変数「前回の制限帯域」に変数「制限帯域」の値を代入し、変数「制限帯域」に「新しい制限帯域」の値を代入し、ステップS818に進む。ステップS818では輻輳トラフィック推定部214が送信停止タイマー216を参照して得たPAUSE状態を変数「PAUSE状態」に保存し、終了状態819に進む。終了状態819では制限帯域計算処理を終了する。
【0099】
以上の処理によって、輻輳トラフィック推定部214は、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDに基づいてトラフィックを区別したうえで各トラフィックの送信帯域を計算する。そして、輻輳を引き起こすトラフィックを推定し、当該推定されたトラフィックの送信帯域を減らして制限することが可能となる。そして、PAUSEを解除する際には、帯域制限を徐々に緩和することで保証帯域に戻すことができる。
【0100】
図9は輻輳トラフィック推定部214で行う制限帯域計算処理のステップS810で実行される制限帯域補正処理の一例を示すフローチャートである。
【0101】
制限帯域補正処理では輻輳トラフィック推定部214が、1つのトラフィックに関して制限帯域の値を補正する。したがって、制限帯域補正処理における変数はトラフィック毎に値を保持する。
【0102】
輻輳トラフィック推定部214は制限帯域補正処理が開始状態S901から開始されると、ステップS902に進む。ステップS902では変数「新しい制限帯域」に変数「保証帯域」の値を代入してステップS903に進む。ステップS903では、輻輳トラフィック推定部214が、変数「前回の送信量」に変数「送信量」の値を代入し、変数「送信量」に変数「累積転送量」から変数「前回の累積転送量」を減じたものを代入し、ステップS904に進む。
【0103】
ステップS904では、輻輳トラフィック推定部214は、変数「実効帯域」に
(送信量/PAUSE間隔)
を代入し、ステップS905に進む。ステップS905では、輻輳トラフィック推定部214が、「保証帯域」より「制限帯域」が小さい、すなわち帯域制限されているか否かを判定し、真ならステップS906に進み、偽なら終了状態913に進む。
【0104】
ステップS906では、輻輳トラフィック推定部214が、変数「前回の制限帯域」より「制限帯域」が小さい、すなわち帯域制限を前回強化したか否かを判定し、真ならステップS907に進み、偽ならステップS911に進む。
【0105】
ステップS907では、輻輳トラフィック推定部214が、「前回のPAUSE間隔」より「PAUSE間隔」が大きい、すなわちPAUSE間隔が拡大しているか否かを判定し、真ならステップS908に進み、偽ならステップS909に進む。ステップS908では、輻輳トラフィック推定部214が帯域制限を強化してステップS910に進む。ステップS908における帯域制限の強化は、例えば、「新しい制限帯域」に、
(前回の制限帯域+2×実効帯域)/3
を代入することで行う。ただし、この計算式は、制限帯域を小さくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に実効帯域を代入することとして、帯域制限の強化の幅を大きくしてもよい。
【0106】
ステップS910では輻輳トラフィック推定部214が、変数「帯域制限強化トラフィック数」を1増やし、ステップS912に進む。一方、ステップS909では、輻輳トラフィック推定部214は帯域制限を緩和してステップS911に進む。ステップS909における帯域制限の緩和は、例えば「新しい制限帯域」に、
(2×前回の制限帯域−実効帯域)
を代入することで行う。ただし、この計算式は、制限帯域を大きくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に保証帯域を代入することとしてもよい。
【0107】
ステップS911では輻輳トラフィック推定部214が、帯域制限を緩和してステップS912に進む。ここで、ステップS911における帯域制限の緩和は、例えば「新しい制限帯域」に、
(制限帯域×1.01)
を代入することで行う。ただし、ただし、この計算式は、制限帯域を大きくするためのものであり、本発明ではこれに限らない。例えば、「新しい制限帯域」に保証帯域を代入することとしてもよい。また、ステップ909を省略し、ステップ911にて制限帯域を大きくする処理を行ってステップ数を減らしてもよい。ステップS912では輻輳トラフィック推定部214が変数「帯域制限トラフィック数」を1増やし、終了状態913に進む。終了状態913では制限帯域補正処理を終了する。
【0108】
なお、図8に示した制限帯域計算処理において、各トラフィックの制限帯域が保証帯域より大きい場合は制限帯域に保証帯域を代入し、また制限帯域が実効帯域より小さい場合は制限帯域に実効帯域を代入することで、制限帯域の範囲を限定する。
【0109】
なお、本発明では、制限帯域の下限は実効帯域に限定されるものではなく、例えば制限帯域を0として対象トラフィックの送信を停止してもよい。また、帯域制限緩和の計算時のみ保証帯域を大きくしたり、帯域制限の計算時のみ実効帯域を小さくしたりして制限帯域の変化を大きくしてもよい。
【0110】
以上に説明した制限帯域計算処理により、輻輳トラフィック推定部214はトラフィック毎の制限帯域を計算して送信フレーム選択部215に通知し、フレーム転送装置1はトラフィック毎の送信帯域を制限する。
【0111】
制限帯域計算処理の要点は以下のようなものである。PAUSE開始時は輻輳が発生したことを意味するので、図8に示した制限帯域計算処理で帯域制限が強化されたトラフィックがなければ(ステップS813が真)、適当なトラフィックを選択して帯域制限を行う(ステップS814)。そして、図9に示した制限帯域補正処理では前記帯域制限の結果、PAUSE間隔が拡大していれば(ステップS907が真)、当該帯域制限が輻輳緩和に効果があったとみなして当該帯域制限を強化し(ステップS908)、拡大していなければ当該帯域制限の効果がないとみなして当該帯域制限を緩和する(ステップS909)。
【0112】
なお、PAUSEにより一時停止している時間も含めた実効的な送信帯域(ステップS904の実効帯域)は、当該トラフィックで使用できた帯域の実績とみなせるので、実効帯域を下限として帯域制限を行ってもよい。また、PAUSEがしばらく来ない場合(ステップS804が真)や帯域制限の強さが変化していない場合(ステップS906が偽)、帯域制限をしていたトラフィックで利用可能な帯域が変化した可能性も考慮して輻輳状態が緩和されたとみなして帯域制限を緩和してもよい(ステップS815およびステップS911)。
【0113】
すなわち、本発明では、PAUSEでフロー制御されるリンクについて、PAUSEフレーム受信側(すなわち制御対象のフローの送信側)において、PAUSEの間隔の変化から輻輳状態の変化(間隔拡大は輻輳緩和、間隔縮小は輻輳激化)を検出する。そして、当該リンクに送信するトラフィックのうち、当該トラフィックの送信帯域制限(送信の抑制)により輻輳緩和(PAUSE間隔の拡大)が検出される場合に、当該トラフィックが輻輳の原因であると推定する。また、PAUSEフレーム受信時に、適当なトラフィックを選択して送信を抑制してみて輻輳が緩和されるか否かを試し、輻輳が緩和されれば送信抑制を強化する。逆に輻輳が緩和されなければ送信抑制を緩和して他のトラフィックの送信を抑制してみるという試行錯誤により輻輳の原因と推定されるトラフィックを探索する。そして輻輳の原因であると推定されたトラフィックの送信を抑制することで、当該リンクのPAUSE発生を抑制して通信速度を改善する。本発明では制限帯域計算処理が輻輳制御の対象となるトラフィック数の制限要因を含まないため、必要に応じて対象トラフィック数を増減することができる。また、輻輳の原因と推定されるトラフィックの探索では、2分木探索にならって複数のトラフィックを選択して送信抑制して輻輳の状態変化を確認し、輻輳緩和が確認された複数のトラフィックの中でさらに一部トラフィックを選択して送信抑制を行うような、段階的な探索を行ってもよい。本発明の実施は、2分木探索のほか、リスト探索、木探索、グラフ探索など、一般に探索アルゴリズム、検索アルゴリズムと呼ばれる考え方を用いても行うことができる。なお、本発明における前述した送信の抑止は、一部トラフィック以外のトラフィックの送信促進により、相対的に当該一部トラフィックの送信を抑制してもよい。また本発明は送信の抑制よる輻輳の抑制に限るものではなく、一部トラフィックの帯域変更による輻輳状態の変化に基づいて、目的とする輻輳状態、例えば、あらかじめ定めたPAUSEフレームの受信間隔となるように各トラフィックの送信帯域を変更してもよい。
【0114】
<送信フレーム選択部の処理>
図10A、図10Bは送信フレーム選択部215における送信帯域計算処理を説明するフローチャートである。送信フレーム選択部215では、論理キュー221から読み出されてリンクへ送信されるイーサネットフレームについて、キューIDによりトラフィックを区別したうえで各トラフィックを送信する量を計算する。このため、送信フレーム選択部215は、割当帯域管理部213から通知された帯域割当管理表700の内容および輻輳トラフィック推定部214から通知された各トラフィックの制限帯域、キュー制御部218から通知された各論理キューの使用量、送信停止タイマー216を参照して得たPriority毎のPAUSE状態(タイマー値が0なら非PAUSE状態、それ以外ならPAUSE状態)を用いて、各トラフィックの送信帯域を送信帯域計算処理により計算する。そして、送信フレーム選択部215は、計算された前記送信帯域内でフレームが送信されるようにキュー制御部218および入出力制御部219を制御する。
【0115】
前記送信帯域計算処理は一定時間毎(例えば0.01秒毎)に繰り返して行う。なお、本発明では送信帯域計算処理実行の契機は一定周期に限るものではなく、例えば、PAUSEフレーム受信を送信帯域計算処理実行の契機としてもよいし、時間間隔をトラフィックの流量等に応じて変更してもよい。以下、送信帯域計算処理を説明するが、処理の中で帯域とサイズ(量)を相互変換する必要がある場合、帯域は送信帯域計算処理を実行する時間間隔でサイズを割ることで求められ、サイズは帯域に送信帯域計算処理をかけることで求められる。以下の説明では、これらの変換方法への言及は明示的には行わないが、必要に応じて行うものとする。
【0116】
なお、サイズの単位の例としてはバイトまたはビット、帯域の単位の例としてはbps(ビット毎秒)とし、1バイトは8ビットとするが、本発明で用いる単位はこれに限らず、例えばオクテット、バイト毎秒等を用いてもよい。また、以下の説明中で「トラフィック」は対象Priorityに属するトラフィックを、「キュー」は当該トラフィックのイーサネットフレームが格納されている論理キュー221をそれぞれ表す。なお、送信帯域計算処理において、変数「制限帯域」は輻輳トラフィック推定部214から通知された各トラフィックの制限帯域を保持するものとし、変数「割当帯域」は割当帯域管理部213から通知された帯域割当管理表に基づいて各トラフィックに保証する帯域を保持するものとし、変数「キューの使用量」はキュー制御部218から通知された各論理キュー221の使用量を各トラフィックについて保持するものとし、各トラフィックについての変数はそれぞれのトラフィックで異なる値を保持できるものとする。
【0117】
送信フレーム選択部215は送信帯域計算処理が開始状態S1001から開始されると、ステップS1002に進む。ステップS1002では、送信フレーム選択部215が各トラフィックの変数「送信帯域」に変数「制限帯域」をそれぞれ代入し、ステップS1003に進む。ステップS1003では、変数「合計割当帯域」に全トラフィックの「割当帯域」の合計値を代入し、ステップS1004に進む。ステップS1004では、ステップS1005からステップS1030までの処理を繰り返す。
【0118】
ステップS1005では、各トラフィックについて、ステップS1006からステップS1012までの処理を繰り返す。ステップS1006では、送信フレーム選択部215が、変数「キューの使用量」を、前回送信帯域計算処理を実行してからの経過時間で割った値を変数「最大送信帯域」に代入し、ステップS1007に進む。
【0119】
ステップS1007では、送信フレーム選択部215が、変数「要求帯域」に変数「最大送信帯域」の値を代入し、ステップS1008に進む。ステップS1008では、送信フレーム選択部215が、当該トラフィックがPAUSE状態であるか否かを判定し、真の場合はステップS1009に進み、偽の場合はステップS1010に進む。ステップS1009では、送信フレーム選択部215が、変数「要求帯域」に0を代入しステップS1010に進む。
【0120】
ステップS1010では、送信フレーム選択部215は、変数「制限帯域」が変数「保証帯域」より小さく(すなわち帯域制限されており)変数「送信帯域」が変数「最大送信帯域」より小さいか否かを判定し、真ならステップS1011に進み、偽ならステップS1012に進む。ステップS1011では、変数「要求帯域」に変数「送信帯域」を設定し、ステップS1012に進む。
【0121】
ステップS1012では、送信フレーム選択部215がステップS1005からの繰り返し処理が終了したら、ステップS1013に進む。
【0122】
ステップS1013では、送信フレーム選択部215が変数「最大送信帯域」が0より大きいトラフィックが1トラフィックのみで、かつ当該トラフィックの変数「制限帯域」が変数「保証帯域」より小さい(すなわち帯域制限されている)か否かを判定し、真ならステップS1014に進み、偽ならステップS1015に進む。ステップS1014では、送信フレーム選択部215が各トラフィックについて、変数「要求帯域」に変数「最大送信帯域」を代入し、ステップS1015に進む。ステップS1015では、変数「合計余剰帯域」、変数「合計不足帯域」、変数「合計割当済帯域」にそれぞれ0を代入し、ステップS1016に進む。
【0123】
ステップS1016では、送信フレーム選択部215が各トラフィックについて、ステップS1017からステップS1022までの処理を繰り返す。ステップS1017では、変数「分割帯域」に変数「送信帯域」の値を設定し、ステップS1018に進む。ステップS1018では、送信フレーム選択部215が変数「要求帯域」が変数「分割帯域」より小さいか否かを判定し、真ならステップS1019に進み、偽ならステップS1020に進む。ステップS1019では、変数「合計余剰帯域」に(分割帯域−要求帯域)を加え、ステップS1021に進む。
【0124】
ステップS1020では、変数「合計不足帯域」に(要求帯域−分割帯域)を加え、ステップS1021に進む。ステップS1021では、変数「合計割当済帯域」に分割帯域の値を加え、ステップS1022に進む。ステップS1022では、送信フレーム選択部215がステップS1016からの繰り返し処理が終了したら、図10BのステップS1023に進む。図10BのステップS1023では、変数「合計余剰帯域」に
(合計割当帯域 − 合計割当済帯域)
を加え、ステップS1024に進む。ステップS1024では、送信フレーム選択部215が、変数「合計不足帯域」および変数「合計余剰帯域」が十分小さいか否かを判定し、真なら終了状態1031に進み、偽ならステップS1025に進む。なお、ステップS1024における「十分小さい」とは例えば1bps以下等、分配するに足らない帯域や制御可能な最小帯域等を表す。本発明では、これに限ることなく、例えばステップS1024における判定を若干緩め(大き目)にして、繰り返し回数を削減してもよい。
【0125】
ステップS1025では、送信フレーム選択部215が、各トラフィックについて、ステップS1026からステップS1029までを繰り返す。ステップS1026では、送信フレーム選択部215が、要求帯域が分割帯域より小さい否かを判定し、真ならステップS1027に進み、偽ならステップS1028に進む。ステップS1027では、変数「送信帯域」に要求帯域を代入し、ステップS1029に進む。
【0126】
ステップS1028では送信フレーム選択部215が、変数「送信帯域」に
(合計余剰帯域×(要求帯域−分割帯域)/合計不足帯域)
を代入し、ステップS1029に進む。なお、ステップS1028における計算式は、合計余剰帯域の分配例を表しており、本発明はこれに限るものではない。例えば、1つのトラフィックに合計余剰帯域をすべて与え、他のトラフィックへの分配を0とし、処理を簡素化してもよい。
【0127】
ステップS1029では、送信フレーム選択部215が、ステップS1025からの繰り返し処理が終了したら、ステップS1030に進む。ステップS1030では、ステップS1004からの繰り返し処理が終了したら、終了状態1031に進む。終了状態1031では送信帯域計算処理を終了する。
【0128】
送信帯域計算処理の要点は以下の通りである。送信フレーム選択部215は、各トラフィックについて、送信帯域に制限帯域を代入して(ステップS1002)、以下を繰り返すことで送信帯域を調整する。送信フレーム選択部215は、要求帯域をPAUSE状態であれば0とし(ステップS1009)、そうでなければ論理キュー221のフレーム送信に必要な帯域(最大送信帯域)とする(ステップS1007)。ただし、帯域が制限されており、要求帯域が送信帯域より大きい場合は、要求帯域は送信帯域とする(ステップS1011)。ただし、送信しようとしている(すなわちキューにフレームのある)トラフィックが、帯域制限された1トラフィックのみの場合は(ステップS1013)、要求帯域はキューのフレーム送信に必要な帯域(最大送信帯域)とする(ステップS1014)。そして、送信帯域と要求帯域を比べて、不足分及び余剰分を計算し(ステップS1016)、不足のトラフィックに余剰分を再分配する(1025)。不足分及び余剰分が予め設定した一定値以下となって十分小さくなったら、余剰分の再分配を終了する(1024)。以上を繰り返す(ステップS1030)。
【0129】
すなわち、本発明では、他のトラフィックがあり、かつ帯域制限されている場合には制限帯域を超えないように送信帯域を設定し、それ以外の場合は最大送信帯域を上限帯域にして、保証帯域を各トラフィックに保証しつつ、各トラフィックで使用していない余剰帯域を帯域が不足しているトラフィックに再配分して、送信帯域を決定する。本発明では送信帯域計算処理が送信対象となるトラフィック数の制限要因を含まないため、必要に応じて対象トラフィック数を増減することができる。
【0130】
<変形例>
なお、図2の説明でPFCにおける処理を前提として説明したが、本発明はPFCを前提としない実施形態も可能である。その場合も図2の構成や処理は同一で、PFCにおいて1つのpriorityを用いると限定し、フレームの形式はIEEE 802.3xに規定されるPAUSEフレームとする。この場合、本発明はIEEE 802.3xに規定されるPAUSEをサポートしたイーサネットに適用可能となる。
【0131】
また、本発明はPAUSEの頻度(間隔)に基づいて送信する際のフレーム選択を変更することを含むため、図2で説明したようなフレーム転送装置でなくとも、1つ以上のネットワークインタフェースを持っていれば、実施可能である。このような実施形態を用いることで、計算機用のNIC(ネットワークインタフェースカード)や仮想マシンの仮想ネットワークインタフェースに対して本発明を実施することが可能となる。また、フレーム転送装置においてもポート単位で本発明を実施することも可能である。
【0132】
<まとめ>
以上のように、本発明のフレーム転送装置1によれば、リンクの送信先となるノード117からPAUSEフレームを受信した場合、PAUSEフレームで指定された時間までフレームの送信を一時停止し、送信先のノード117で輻輳の原因となっている論理トラフィックを推定する。そして、フレーム転送装置1は、当該ノード117への送信再開時には、輻輳の原因として推定された論理トラフィックの送信を抑制し、他の論理トラフィックを優先して送信する。これにより、送信先のノード117がPAUSEフレームを再度送信するのを防ぐことで当該ノード117の論理トラフィックが他の論理トラフィックに与える影響を抑制することができる。これらはすべてPAUSEによるフロー制御に基づいているため、確実な通信を保証できる。
【0133】
そして、本発明のフレーム転送装置1では、前記従来例のようにノード117は既存の構成のままでよく、新たな機能を付加する必要がないため導入コストを抑制できる。さらに、本発明のフレーム転送装置1では、前記従来例の非特許文献1のように、扱うことが可能な論理トラフィックの数が8以下に制限されることはなく、任意の数の論理トラフィックを制御することが可能となる。これにより、マルチコアプロセッサ等を利用した仮想化システムなどでは、仮想マシンの数がネットワークインタフェースの数に制約を受けることがなくなって、可用性を向上させることが可能となる。
【産業上の利用可能性】
【0134】
以上のように、本発明は論理トラフィックを転送する装置や計算機及びネットワークシステムに適用することができる。
【符号の説明】
【0135】
1 フレーム転送装置
101 演算処理装置
102 記憶装置
103 入出力装置
104−1〜104−n ネットワークインタフェース
107 全体制御プログラム
108−1〜108−n ポート制御プログラム
110 キュー
112−1〜112−n 入出力ポート
117−1〜117−m ノード
207 設定受付部
208 輻輳検出部
209 PAUSE送信ポート・時間決定部
210 トラフィック設定部
211 格納キュー選択部
212 トラフィック履歴管理部
213 割当帯域管理部
214 輻輳トラフィック推定部
215 送信フレーム選択部
216 送信停止タイマー
217 PAUSEフレーム作成部
218 キュー制御部
219 入出力制御部
220 フレーム解析部
221−1〜221−i 論理キュー
224 フレーム送信部
225 フレーム受信部
【特許請求の範囲】
【請求項1】
フレームの送受信を行う複数のポートと、
前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、
前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、
を備えたことを特徴とするネットワーク装置。
【請求項2】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記一時停止の指令を受信する間隔が拡大するもしくは指定した間隔となるように、前記トラフィックの送信帯域を変更することを特徴とするネットワーク装置。
【請求項3】
請求項1に記載のネットワーク装置であって、
前記制御部は、
予め設定した順序に従って前記送信帯域を変更するトラフィックを選択することを特徴とするネットワーク装置。
【請求項4】
請求項1に記載のネットワーク装置であって、
前記一時停止の指令は、PAUSEフレームであることを特徴とするネットワーク装置。
【請求項5】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記トラフィックの送信帯域を制限したときに、前記一時停止の指令を受信する間隔が拡大した場合には、当該トラフィックを輻輳の原因として推定することを特徴とするネットワーク装置。
【請求項6】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記トラフィックに設定された保証帯域と、前記トラフィックの上限帯域と、前記トラフィックの要求帯域とから、前記分類されたトラフィックについて、前記保証帯域が前記上限帯域より大きい場合は前記上限帯域を、それ以外の場合には前記保証帯域とする割当帯域を計算することを特徴とするネットワーク装置。
【請求項7】
請求項6に記載のネットワーク装置であって、
前記制御部は、
前記トラフィック毎に前記フレームを分類し、
前記割当帯域が前記要求帯域より大きい場合には、余剰帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には余剰帯域を0として計算し、前記保証帯域が前記上限帯域より大きくかつ前記要求帯域が前記割当帯域より大きい場合には、不足帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には不足帯域を0として計算し、前記余剰帯域の全トラフィックの合計値として合計余剰帯域を計算し、前記不足帯域の全トラフィックの合計値として合計不足帯域を計算し、前記合計余剰帯域を前記不足帯域が0でないトラフィックに分配する分配帯域を計算し、前記記分配帯域を前記割当帯域に加算し、前記加算された前記割当帯域に基づいて前記合計不足帯域または前記合計余剰帯域が一定値以下となるまで前記余剰帯域と不足帯域と合計余剰帯域及び合計不足帯域の計算を繰り返すことを特徴とするネットワーク装置。
【請求項8】
プロセッサとメモリとフレームの送受信を行う複数のポートとを備えたネットワーク装置で送信するフレームの輻輳を抑制する送信フレームの制御方法であって、
受信したフレームに対応する通信経路に関する情報を含むトラフィックを決定し、前記トラフィック毎に前記フレームを分類する第1のステップと、
前記受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止する第2のステップと、
前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記トラフィック毎の送信帯域を変更する第3のステップと、
を含むことを特徴とする送信フレームの制御方法。
【請求項9】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記一時停止の指令を受信する間隔が拡大するもしくは指定した間隔となるように、前記トラフィックの送信帯域を変更することを特徴とする送信フレームの制御方法。
【請求項10】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
予め設定した順序に従って前記送信帯域を変更するトラフィックを選択することを特徴とする送信フレームの制御方法。
【請求項11】
請求項8に記載の送信フレームの制御方法であって、
前記一時停止の指令は、PAUSEフレームであることを特徴とする送信フレームの制御方法。
【請求項12】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記トラフィックの送信帯域を制限したときに、前記一時停止の指令を受信する間隔が拡大した場合には、当該トラフィックを輻輳の原因として推定することを特徴とする送信フレームの制御方法。
【請求項13】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記トラフィックに設定された保証帯域と、前記トラフィックの上限帯域と、前記トラフィックの要求帯域とから、前記分類されたトラフィックについて、前記保証帯域が前記上限帯域より大きい場合は前記上限帯域を、それ以外の場合には前記保証帯域とする割当帯域を計算することを特徴とする送信フレームの制御方法。
【請求項14】
請求項13に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記割当帯域が前記要求帯域より大きい場合には、余剰帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には余剰帯域を0として計算し、前記保証帯域が前記上限帯域より大きくかつ前記要求帯域が前記割当帯域より大きい場合には、不足帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には不足帯域を0として計算し、前記余剰帯域の全トラフィックの合計値として合計余剰帯域を計算し、前記不足帯域の全トラフィックの合計値として合計不足帯域を計算し、前記合計余剰帯域を前記不足帯域が0でないトラフィックに分配する分配帯域を計算し、前記分配帯域を前記割当帯域に加算し、前記加算された前記割当帯域に基づいて前記合計不足帯域または前記合計余剰帯域が一定値以下となるまで前記余剰帯域と不足帯域と合計余剰帯域及び合計不足帯域の計算を繰り返すことを特徴とする送信フレームの制御方法。
【請求項1】
フレームの送受信を行う複数のポートと、
前記ポートを介して受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止し、
前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記フレームに対応する通信経路に関するトラフィック毎の送信帯域を変更する制御部と、
を備えたことを特徴とするネットワーク装置。
【請求項2】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記一時停止の指令を受信する間隔が拡大するもしくは指定した間隔となるように、前記トラフィックの送信帯域を変更することを特徴とするネットワーク装置。
【請求項3】
請求項1に記載のネットワーク装置であって、
前記制御部は、
予め設定した順序に従って前記送信帯域を変更するトラフィックを選択することを特徴とするネットワーク装置。
【請求項4】
請求項1に記載のネットワーク装置であって、
前記一時停止の指令は、PAUSEフレームであることを特徴とするネットワーク装置。
【請求項5】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記トラフィックの送信帯域を制限したときに、前記一時停止の指令を受信する間隔が拡大した場合には、当該トラフィックを輻輳の原因として推定することを特徴とするネットワーク装置。
【請求項6】
請求項1に記載のネットワーク装置であって、
前記制御部は、
前記トラフィックに設定された保証帯域と、前記トラフィックの上限帯域と、前記トラフィックの要求帯域とから、前記分類されたトラフィックについて、前記保証帯域が前記上限帯域より大きい場合は前記上限帯域を、それ以外の場合には前記保証帯域とする割当帯域を計算することを特徴とするネットワーク装置。
【請求項7】
請求項6に記載のネットワーク装置であって、
前記制御部は、
前記トラフィック毎に前記フレームを分類し、
前記割当帯域が前記要求帯域より大きい場合には、余剰帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には余剰帯域を0として計算し、前記保証帯域が前記上限帯域より大きくかつ前記要求帯域が前記割当帯域より大きい場合には、不足帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には不足帯域を0として計算し、前記余剰帯域の全トラフィックの合計値として合計余剰帯域を計算し、前記不足帯域の全トラフィックの合計値として合計不足帯域を計算し、前記合計余剰帯域を前記不足帯域が0でないトラフィックに分配する分配帯域を計算し、前記記分配帯域を前記割当帯域に加算し、前記加算された前記割当帯域に基づいて前記合計不足帯域または前記合計余剰帯域が一定値以下となるまで前記余剰帯域と不足帯域と合計余剰帯域及び合計不足帯域の計算を繰り返すことを特徴とするネットワーク装置。
【請求項8】
プロセッサとメモリとフレームの送受信を行う複数のポートとを備えたネットワーク装置で送信するフレームの輻輳を抑制する送信フレームの制御方法であって、
受信したフレームに対応する通信経路に関する情報を含むトラフィックを決定し、前記トラフィック毎に前記フレームを分類する第1のステップと、
前記受信したフレームが一時停止の指令のときには、前記ポートからの前記フレームの送信を所定時間まで一時的に停止する第2のステップと、
前記所定時間を経過した後には、前記一時停止の指令を受信する間隔の変化に応じて前記トラフィック毎の送信帯域を変更する第3のステップと、
を含むことを特徴とする送信フレームの制御方法。
【請求項9】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記一時停止の指令を受信する間隔が拡大するもしくは指定した間隔となるように、前記トラフィックの送信帯域を変更することを特徴とする送信フレームの制御方法。
【請求項10】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
予め設定した順序に従って前記送信帯域を変更するトラフィックを選択することを特徴とする送信フレームの制御方法。
【請求項11】
請求項8に記載の送信フレームの制御方法であって、
前記一時停止の指令は、PAUSEフレームであることを特徴とする送信フレームの制御方法。
【請求項12】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記トラフィックの送信帯域を制限したときに、前記一時停止の指令を受信する間隔が拡大した場合には、当該トラフィックを輻輳の原因として推定することを特徴とする送信フレームの制御方法。
【請求項13】
請求項8に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記トラフィックに設定された保証帯域と、前記トラフィックの上限帯域と、前記トラフィックの要求帯域とから、前記分類されたトラフィックについて、前記保証帯域が前記上限帯域より大きい場合は前記上限帯域を、それ以外の場合には前記保証帯域とする割当帯域を計算することを特徴とする送信フレームの制御方法。
【請求項14】
請求項13に記載の送信フレームの制御方法であって、
前記第3のステップは、
前記割当帯域が前記要求帯域より大きい場合には、余剰帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には余剰帯域を0として計算し、前記保証帯域が前記上限帯域より大きくかつ前記要求帯域が前記割当帯域より大きい場合には、不足帯域を前記割当帯域と前記要求帯域との差分とし、それ以外の場合には不足帯域を0として計算し、前記余剰帯域の全トラフィックの合計値として合計余剰帯域を計算し、前記不足帯域の全トラフィックの合計値として合計不足帯域を計算し、前記合計余剰帯域を前記不足帯域が0でないトラフィックに分配する分配帯域を計算し、前記分配帯域を前記割当帯域に加算し、前記加算された前記割当帯域に基づいて前記合計不足帯域または前記合計余剰帯域が一定値以下となるまで前記余剰帯域と不足帯域と合計余剰帯域及び合計不足帯域の計算を繰り返すことを特徴とする送信フレームの制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【公開番号】特開2013−26680(P2013−26680A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−156939(P2011−156939)
【出願日】平成23年7月15日(2011.7.15)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願日】平成23年7月15日(2011.7.15)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]