(57)【要約】  本発明によるコンピュータシステムにおいて、ホストは、トランスポート層においてＴＣＰ層より上位のプロトコル情報を、ＴＣＰヘッダのオプション領域に含めたパケットを送信する。オープンフローコントローラは、プロトコル情報に応じた転送先を規定したフローエントリをスイッチに設定する。オープンフロースイッチは、受信パケットのＴＣＰヘッダに含まれるプロトコル情報に適合するフローエントリに従った転送先に、受信パケットを転送する。これにより、コンピュータシステムの適応度が高まる。
2012120990.tif 000002
【特許請求の範囲】
【請求項１】
オープンフローコントローラと、
前記オープンフローコントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うオープンフロースイッチと、
前記オープンフロースイッチに接続されたホストと
を具備し、
前記ホストは、トランスポート層においてＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）層より上位のプロトコル情報をＴＣＰヘッダのオプション領域に含めたパケットを送信し、
前記オープンフローコントローラは、前記プロトコル情報に応じた転送先を規定したフローエントリをスイッチに設定し、
前記オープンフロースイッチは、受信パケットのＴＣＰヘッダに含まれる前記プロトコル情報に適合するフローエントリに従った転送先に、前記受信パケットを転送する
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムにおいて、
前記プロトコル情報は、ターゲットとなる宛先ホストを特定するｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ネームを含み、
前記オープンフローコントローラは、前記ホストと前記宛先ホストとを結ぶ経路上のスイッチに対し、前記ｉＳＣＳＩネームに応じた転送先を規定したフローエントリを設定する
コンピュータシステム。
【請求項３】
請求項２に記載のコンピュータシステムにおいて、
前記ｉＳＣＳＩネームは、イニシエータネームのみ、又はターゲットネームのみを含む
コンピュータシステム。
【請求項４】
請求項１から３のいずれか１項に記載のコンピュータシステムにおいて、
前記プロトコル情報は、ＴＣＰヘッダにおけるオプション領域に格納される
コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載のコンピュータシステムにおいて、
前記宛先ホストは論理ディスクである
コンピュータシステム。
【請求項６】
請求項１から５のいずれか１項に記載のコンピュータシステムにおいて前記ホストとして利用されるサーバ。
【請求項７】
請求項１から５のいずれか１項に記載のコンピュータシステムにおいて利用されるオープンフローコントローラ。
【請求項８】
請求項１から５のいずれか１項に記載のコンピュータシステムにおいて利用されるオープンフロースイッチ。
【請求項９】
ホストが、トランスポート層においてＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）層より上位のプロトコル情報をＴＣＰヘッダに含めたパケットを送信するステップと、
オープンフローコントローラが、前記プロトコル情報に応じた転送先を規定したフローエントリをスイッチに設定するステップと、
前記オープンフローコントローラによって設定されたフローエントリに適合する受信パケットに対し、前記フローエントリで規定された中継動作を行うオープンフロースイッチが、受信パケットのＴＣＰヘッダに含まれるプロトコル情報に適合するフローエントリに従った転送先に、前記受信パケットを転送するステップと
を具備する
通信方法。
【請求項１０】
請求項９に記載の通信方法において、
前記プロトコル情報は、ターゲットとなる宛先ホストを特定するｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ネームを含み、
前記オープンフローコントローラは、前記ホストと前記宛先ホストとを結ぶ経路上のスイッチに対し、前記ｉＳＣＳＩネームに応じた転送先を規定したフローエントリを設定する
通信方法。
【請求項１１】
請求項１０に記載の通信方法において、
前記ｉＳＣＳＩネームは、イニシエータネームのみ、又はターゲットネームのみを含む
通信方法。
【請求項１２】
請求項９から１１のいずれか１項に記載の通信方法において、
前記パケットを送信するステップは、前記ホストが、前記プロトコル情報をＴＣＰヘッダにおけるオプション領域に格納して前記パケットを生成するステップを備える
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、通信方法に関し、特に、オープンフロープロトコルを利用したコンピュータシステムにおけるフロー制御方法に関する。
【背景技術】
【０００２】
コンピュータの発展に伴い、高速で大容量な補助記憶装置の需要は高まる一方である。特に大規模なコンピュータを扱う場合などは、記憶装置を集合させたストレージ（ディスクアレイ）をＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ；記憶領域ネットワーク）に接続して利用する形態が多数利用されている。【０００３】
ＳＡＮの中でもｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）を用いたＳＡＮは、装置コストが比較的安価なことと、既設のインフラを有効活用できることから今後ますます発展する市場として注目されている。【０００４】
ｉＳＣＳＩを利用したＳＡＮに関する技術が、例えば特開２００５−１５１４３７に記載されている（特許文献１参照）。特許文献１に記載のシステムでは、ＳＣＳＩコマンドがカプセル化されたことを示す情報をＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットのヘッダに格納し、これを参照することで、ＳＣＳＩコマンドを抽出しなくてもＳＣＳＩコマンドがカプセル化されたパケットか否かを判断できる。【０００５】
ｉＳＣＳＩでは、ＳＣＳＩプロトコルの下層でＴＣＰ／ＩＰの技術を利用していることから、発明者は、ｉＳＣＳＩを利用したシステムにオープンフロープロトコルを適用することで、適応度（柔軟性）の高いフロー制御が可能となるものと予想している。【０００６】
ここでオープンフロープロトコルとは、ＯｐｅｎＦｌｏｗ  Ｃｏｎｓｏｒｔｉｕｍによって提案されているフロー単位で経路制御を行う方法である（非特許文献１参照）。オープンフロープロトコルでは、ＭＡＣアドレス、ＩＰアドレス、ポート番号などの組み合わせによって決定される、ある点からある点への一連の通信を「フロー」と定義する。オープンフロープロトコルを利用した場合、送り元と送り先の情報で画一的に経路を決定するのではなく、フロー毎に経路を変更することが可能となる。またその経路も隣接する機器同士だけでなく、Ｅｎｄ  ｔｏ  Ｅｎｄ（終端から終端）で管理が行われる。【０００７】
しかし現在、オープンフロープロトコルを利用したスイッチ（以下、オープンフロースイッチと称す）は、ＯＳＩ参照モデルにおけるレイヤ１からレイヤ４のＴＣＰ層までしか扱うことができず、その上のｉＳＣＳＩ層は扱えない。ｉＳＣＳＩ層もＯＳＩ参照モデルではレイヤ４にあたるが、ＴＣＰ層より上のレイヤなので従来のオープンフロースイッチでは認識することができない。このため、現在のオープンフローシステムでは、ｉＳＣＳＩ層のＳＣＳＩネーム（イニシエータネームや、ターゲットネーム）を活用したフロー制御を行うことができない。【０００８】
より柔軟にフロー制御を行うためには、オープンフロースイッチがｉＳＣＳＩ層の情報を扱えると良い。特にオープンフロースイッチがｉＳＣＳＩネームを扱えると、ｉＳＣＳＩネームに応じたフロー制御ができるので有用性が高い。その一方、ｉＳＣＳＩネームを利用してフロー制御ができない場合、イニシエータやターゲット別にフロー制御することができなくなるため、適応度の高いネットワークの構築や、ＳＡＮにおける論理ディスクの効率的な利用が困難となる。【０００９】
一方、ＴＣＰを利用したフロー制御に関する技術が、例えば特開２００６−１２９４８７（特許文献２参照）や特開平１１−２３９１６３（特許文献３参照）に記載されている。特許文献２には、ＴＣＰパケットのオプションフィールドを利用してサーバと接続する端末機を区別するシステムが記載されている。又、特許文献３には、ＬＡＮ間のフロー制御をスイッチによって行われる技術が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−１５１４３７
【特許文献２】特開２００６−１２９４８７
【特許文献３】特開平１１−２３９１６３
【非特許文献】
【００１１】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．０．０  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０１）    Ｄｅｃｅｍｂｅｒ  ３１，  ２００９
【発明の概要】
【００１２】
以上のことから、本発明の目的は、コンピュータシステムの適応度を高めることにある。
【００１３】
本発明の他の目的は、ＴＣＰ層よりも上位のプロトコルに応じたフロー制御が可能なコンピュータシステムを提供することにある。
【００１４】
本発明によるコンピュータシステムは、オープンフローコントローラと、オープンフローコントローラによって設定されたフローエントリに適合する受信パケットに対し、当該フローエントリで規定された中継動作を行うオープンフロースイッチと、オープンフロースイッチに接続されたホストとを具備する。ホストは、トランスポート層においてＴＣＰ層より上位のプロトコル情報を、ＴＣＰヘッダのオプション領域に含めたパケットを送信する。オープンフローコントローラは、プロトコル情報に応じた転送先を規定したフローエントリをスイッチに設定する。オープンフロースイッチは、受信パケットのＴＣＰヘッダに含まれるプロトコル情報に適合するフローエントリに従った転送先に、受信パケットを転送する。
【００１５】
本発明による通信方法は、ホストが、トランスポート層においてＴＣＰ層より上位のプロトコル情報をＴＣＰヘッダに含めたパケットを送信するステップと、オープンフローコントローラが、プロトコル情報に応じた転送先を規定したフローエントリをスイッチに設定するステップと、オープンフローコントローラによって設定されたフローエントリに適合する受信パケットに対し、オープンフロースイッチが、受信パケットのＴＣＰヘッダに含まれるプロトコル情報に適合するフローエントリに従った転送先に、受信パケットを転送するステップとを具備する。
【００１６】
本発明によれば、コンピュータシステムの適応度を高めることができる。
【００１７】
又、ＴＣＰ層よりも上位のプロトコルに応じたフロー制御が可能となる。
【図面の簡単な説明】
【００１８】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態の記述から、より明らかになる。
【図１】図１は、本発明によるコンピュータシステムの構成の一例を示す図である。
【図２】図２は、本発明によるイニシエータ又はターゲットによって生成及び転送されるパケットの構造の一例を示す図である。
【図３】図３は、一般的なＴＣＰパケットのデータデザインを示す図である。
【図４Ａ】図４Ａは、本発明によるＴＣＰヘッダのオプション領域に格納されたｉＳＣＳＩ情報のデータデザインの一例を示す図である。
【図４Ｂ】図４Ｂは、本発明によるＴＣＰヘッダのオプション領域に格納されたｉＳＣＳＩ情報のデータデザインの他の一例を示す図である。
【図４Ｃ】図４Ｃは、本発明によるＴＣＰヘッダのオプション領域に格納されたｉＳＣＳＩ情報のデータデザインの他の一例を示す図である。
【図５】図５は、本発明によるオープンフローコントローラの構成の一例を示す図である。
【図６】図６は、本発明によるオープンフローコントローラにおいて設定される経路情報の構造の一例を示す図である。
【図７】図７は、本発明によるオープンフローコントローラにおいて設定及び管理されるフローテーブルの構造の一例を示す図である。
【図８】図８は、本発明によるオープンフローコントローラにおいて設定されるフローエントリ（ルール＋アクション）の一例を示す図である。
【図９】図９は、本発明によるオープンフロースイッチの構成の一例を示す図である。
【図１０】図１０は、本発明によるコンピュータシステムにおけるパケット転送動作の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。又、同様な構成が複数ある場合は、符号に追番を付して説明し、複数の構成を区別せずに説明する場合は、追番のない符号を付して説明する。
【００２０】
（概要）
本発明によるイニシエータは、レイヤ４（トランスポート層）においてＴＣＰ層よりも上位のプロトコル情報（例えばｉＳＣＳＩネーム）をＴＣＰヘッダのオプション領域に格納したパケットデータ（パケット）を転送する。オープンフローコントローラ（以下、コントローラと称す）は、ＴＣＰ層よりも上位のプロトコル情報をルールとしたフローエントリを、オープンフロースイッチ（以下、スイッチと称す）に設定する。オープンフロースイッチ（以下、スイッチと称す）は、受信パケットのＴＣＰヘッダを参照し、当該ヘッダに適合するフローエントリで規定された転送先に当該受信パケットを転送する。これにより、本発明によるコンピュータシステムは、ＴＣＰ層よりも上位のプロトコル情報によって規定されるフローを制御することが可能となり、適応度（柔軟性）の高いフロー制御を実現する。以下の実施例では、プロトコル情報としてｉＳＣＳＩネームを利用してフロー制御を行うコンピュータシステムについて説明する。
【００２１】
（コンピュータシステムの構成）
図１から図９を参照して、本発明によるコンピュータシステムの構成の一例を説明する。図１は、本発明によるコンピュータシステムの構成の一例を示す図である。図１を参照して、本発明によるコンピュータシステムは、サーバ１００（ホスト）、ストレージ２００（記憶装置、ホスト）、コントローラ３００、複数のスイッチ４０−１〜４０−４によって形成されるスイッチネットワーク４００を具備する。例えば、サーバ１００とストレージ２００は、回線６００（例えばＥｔｈｅｒｎｅｔ（登録商標）  ＬＡＮ）で接続されたスイッチネットワーク４００を介して接続されることで、ＳＡＮを構成する。
【００２２】
サーバ１００は、イニシエータ１０１−１、１０１−２、・・・を備えるコンピュータ装置である。イニシエータ１０１−１、１０１−２、・・・のそれぞれは、ソフトウェア、ハードウェア、あるいは両者の組合せにより実現できる。イニシエータ１０１は、ネットワークカード（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ  ＮＩＣ）などのＳＣＳＩデバイスドライバを備えるｉＳＣＳＩイニシエータに例示される。イニシエータ１０１は、ＳＣＳＩコマンドやＳＣＳＩデータをＴＣＰパケットにカプセル化してターゲット２０１に送信する。この際、イニシエータ１０１は、レイヤ４においてＴＣＰ層よりも上位のプロトコル情報をＴＣＰヘッダのオプション領域に格納したパケットをターゲット２０１に転送する。
【００２３】
ストレージ２００は、ターゲット２０１−１、２０１−２、・・・を備える記憶装置である。ターゲット２０１−１、２０１−２、・・・のそれぞれは、ソフトウェア、ハードウェア、あるいは両者の組合せにより実現できる。例えば、ターゲットは、論理ディスクなどのストレージデバイスである。ターゲット２０１は、ＳＣＳＩコマンドに対するレスポンスをＴＣＰパケットにカプセル化してイニシエータ１０１に送信する。この際、ターゲット２０１は、レイヤ４においてＴＣＰ層よりも上位のプロトコル情報をＴＣＰヘッダのオプション領域に格納したパケットをイニシエータ１０１に転送する。
【００２４】
図２は、本発明によるイニシエータ又はターゲットによって生成及び転送されるパケット構造の一例を示す図である。ここでは、ｉＳＣＳＩプロトコルに従ったパケットの構造について例示する。図２を参照して、パケット１１０は従来のパケットであり、パケット２１０は、本発明によるイニシエータ１０１又はターゲット２０１によって生成及び転送されるパケットである。パケット１１０は、レイヤ２のヘッダを持つＰＤＵ（Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）であり、ＳＣＳＩ層以上（ＴＣＰ層より上位）のデータ領域１１１、ｉＳＣＳＩ層のヘッダ領域１１２（以下、ｉＳＣＳＩ層ヘッダ１１２と称す）、ＴＣＰ層のヘッダ領域１１３（以下、ＴＣＰ層ヘッダ１１３と称す）、ＩＰ層以下のヘッダ領域１１４（以下、ＩＰ層ヘッダ１１４と称す）を備える。イニシエータ１０１又はターゲット２０１は、従来パケット１１０ではｉＳＣＳＩ層ヘッダ１１２に格納するはずのｉＳＣＳＩプロトコルに関する情報（ｉＳＣＳＩ情報１１５、例示：ＳＣＳＩネーム）を、ＴＣＰ層ヘッダ１１３に格納し、パケット２１０として転送する。この際、パケット１１０におけるｉＳＣＳＩ層ヘッダ１１２とデータ領域１１１は、パケット２１０においてｉＳＣＳＩ層以上（ＴＣＰ層より上位）のデータ領域２１１として利用される。これにより、パケット２１０は、ｉＳＣＳＩ層以上（ＴＣＰ層より上位）のデータ領域２１１、ＴＣＰ層ヘッダ１１３ＩＰ層ヘッダ１１４を備えるＰＤＵとしてスイッチネットワーク４００に転送されることとなる。
【００２５】
ここで、ｉＳＣＳＩ情報１１５は、ｉＳＣＳＩノード（例えばイニシエータ１０１やターゲット２０１）の識別や管理のために利用されるｉＳＣＳＩネームが好適である。ｉＳＣＳＩネームは、ｉＳＣＳＩノードのロケーションに依存せず、ｉＳＣＳＩノードに対して固有に割り当てられている。ＳＣＳＩプロトコルでは、ＩＰドメイン名を使用したｉＳＣＳＩ  Ｑｕａｌｉｆｉｅｄ  ＮａｍｅとＩＥＥＥの６４ビットＥｘｔｅｎｄｅｄ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒを使用したＩＥＥＥ  ＥＵＩ−６４  Ｆｏｒｍａｔが利用される。例えば、ｉＳＣＳＩ情報１１５は、タイプ識別子“ｉｑｎ．”、ドメイン取得日、ドメイン名、ドメイン取得者が付与された文字列によって構成される。
【００２６】
図１に示す構成では、サーバ１００にはイニシエータ１０１のみが設けられているが、これに限らず、ターゲットの機能を持つ構成（例えばネットワークアダプタ）が設けられることが好ましい。又、図１に示す構成では、ストレージ２００にはターゲット２０１のみが設けられているが、これに限らず、イニシエータの機能を持つ構成（例えばネットワークアダプタ）が設けられることが好ましい。
【００２７】
図３は、一般的なＴＣＰパケットのデータデザインを示す図である。図３を参照して、ＴＣＰ層ヘッダ１１３は、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、ヘッダ長、コードビット（ＵＲＧ、ＡＣＫ、ＰＳＨ、ＲＳＴ、ＳＹＮ、ＦＩＮ）、ウィンドウサイズ、チェックサム、緊急ポインタ、オプション、データが格納されるフィールド有する。ここで、オプションが格納されるフィールド（以下、オプション領域と称す）は、通常、ＴＣＰ接続の特性を設定するために利用される１６０バイトから可変長のフィールドであるが、本発明では、ｉＳＣＳＩ情報１１５を格納する領域として利用される。ＴＣＰ層ヘッダ１１３のオプション領域には、ＴＣＰのコネクション毎にｉＳＣＳＩ情報１１５が格納されることが好ましい。
【００２８】
図４は、本発明によるＴＣＰヘッダのオプション領域に格納されたｉＳＣＳＩ情報１１５のデータデザインの一例を示す図である。図４Ａは、ｉＳＣＳＩ情報１１５としてイニシエータネームとターゲットネームを格納した場合のオプション領域のデータデザインを示す。図４Ｂは、ｉＳＣＳＩ情報１１５としてイニシエータネームのみを格納した場合のオプション領域のデータデザインを示す。図４Ｃは、ｉＳＣＳＩ情報１１５としてターゲットネームのみを格納した場合のオプション領域のデータデザインを示す。
【００２９】
オプション種別は、現在規定されていない“３０〜２５２”のいずれかを用いることが好適である。本実施例では“１５１”を利用することとする。
【００３０】
オプション長は、オプション種別とオプション長の領域も含めたオプション領域の全てのサイズであり、通常は５１２バイトである。オプション種別、オプション長はそれぞれ１バイトである。図４Ａを参照して、ｉＳＣＳＩ情報１１５として格納されるイニシエータネームとターゲットネームのそれぞれのサイズは２５５バイトである。ｉＳＣＳＩネーム（イニシエータネーム又はターゲットネーム）が２５５バイトに満たない場合、オプション長の終端から２５５バイト分の領域のうちｉＳＣＳＩネームが格納されない空き領域は“０ｘ００”によって埋められる（０パティング）。又、同様に、ｉＳＣＳＩネーム及び“０ｘ００”が格納された２５５バイト分の領域の終端から更に２５５バイト分の領域のうち、ｉＳＣＳＩネームが格納されない空き領域は“０ｘ００”によって埋められる。尚、イニシエータネーム、ターゲットネームのそれぞれが２５５バイトである場合、終端として０ｘ００は挿入されない。
【００３１】
図４Ｂを参照して、ｉＳＣＳＩ情報１１５として格納されるイニシエータネームのサイズは２５５バイトであり、空き領域（２５５バイト）は０ｘ００で埋められる。図４Ｃを参照して、ｉＳＣＳＩ情報１１５として格納されるターゲットネームのサイズは２５５バイトであり、空き領域（２５５バイト）は“０ｘ００”で埋められる。ｉＳＣＳＩネーム（イニシエータネーム又はターゲットネーム）が２５５バイトに満たない場合も同様に、空き領域はパディング“０ｘ００”で埋められる。尚、ｉＳＣＳＩネームは２種類両方とも格納するのが本実施例の動作である。
【００３２】
コントローラ３００は、セキュアチャネルネットワークである制御インタフェース５００を介して、複数のスイッチ４０−１〜４０−４のそれぞれに接続される。コントローラ３００は、オープンフロープロトコルに従って、複数のスイッチ４０−１〜４０−４のそれぞれにフローエントリを設定することで、複数のスイッチ４０−１〜４０−４のいずれかを介したサーバ１００−ストレージ２００間の通信フローを制御する。又、本発明によるコントローラ３００は、ＴＣＰ層の上層のプロトコル情報をルールとしたフローエントリをスイッチ４０に設定することで、例えば、イニシエータ−ターゲット間のフローを制御することができる。
【００３３】
コントローラ３００は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路の構築及びパケット転送処理を制御する。ここで、オープンフロー技術とは、コントローラ３００が、ルーティングポリシー（フローエントリ：フロー＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報を通信経路上のスイッチ４０に設定し、経路制御やノード制御を行う技術を示す（詳細は、非特許文献１を参照）。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるスイッチ４０は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、ＥＮＤ２ＥＮＤのフローとして通信を取り扱う。
【００３４】
図５を参照して、本発明に係るコントローラ３００の構成の詳細を説明する。コントローラ３００は、ＣＰＵ及び記憶装置を備えるコンピュータによって実現されることが好適である。コントローラ３００では、図示しないＣＰＵが記憶装置に格納されたプログラムを実行することで、図５に示す経路計算部３１、フロー制御部３２の各機能が実現される。又、コントローラ３００は、図示しない記憶装置に経路情報３３やフローテーブル３４を記録する。
【００３５】
又、コントローラ３００は、自身が制御するスイッチ４０の位置や接続状況に関する情報（物理トポロジ情報）を図示しないトポロジ情報として保持する。トポロジ情報は、例えば、スイッチ４０やホスト（例えば、サーバ１００やストレージ２００）のそれぞれのポート間の接続状況に関する情報を含む。
【００３６】
経路計算部３１は、スイッチ４０から通知されるファーストパケットのヘッダ情報と、図示しないトポロジ情報を用いて、当該パケットを転送するための通信経路を算出する。算出結果は、経路情報３３として図示しない記憶装置に記録される。ここでは、通信経路の端点となるノード（例えばイニシエータやターゲット）と、通信経路上のスイッチを特定する情報が設定される。
【００３７】
図６は、本発明によるオープンフローコントローラにおいて設定される経路情報３３の構造の一例を示す図である。図６を参照して、経路情報３３は、後述するフローエントリ（ルール＋アクション）を適用する通信経路を特定する情報であり、フローエントリに紐付けられたフロー識別子３４１に対応付けられて記録される端点情報３３１、通過スイッチ情報３３２、付随情報３３３を含む。端点情報３３１は、通信経路の端点となるノードを指定する情報である。通過スイッチ情報３３２は、通信経路上のスイッチ４０とスイッチ間の接続ポート対を指定する情報である。付随情報３３３は、端点が変更された場合、端点が変更された後の経路上のスイッチ４０（通過スイッチ）に関する情報を含む。例えば、通信経路がノード間を接続する経路である場合、通信経路の両端点となるノードのそれぞれのＭＡＣアドレス対が端点情報３３１として記録される。通過スイッチ情報３３２は、端点情報３３１で示される端点間の通信経路上に設けられるスイッチ４０の識別子（例えばＤａｔａＰａｔｈ  ＩＤ：ＤＰＩＤ）を含む。又、通過スイッチ情報３３２は、スイッチに設定されるフローエントリ（ルール＋アクション）と当該スイッチとを紐付けるための情報を含んでも良い。
【００３８】
フロー制御部３２は、Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙ  Ｍｅｓｓａｇｅによって、算出された通信経路上のスイッチ４０に対してフローエントリ（ルール＋アクション）の設定、変更、又は削除を行う。これにより、スイッチ４０は、受信パケットのヘッダ情報に応じたルールに対応するアクション（例えばパケットデータの中継や破棄）を実行する。フロー制御部３２は、スイッチ４０からのファーストパケットの通知に応じてスイッチ４０に対するフローエントリの設定を行う。フロー制御部３２における通信経路の設定、フローエントリの設定及び管理は、非特許文献１に記載のオープンフロープロトコルに準拠して行われるが、後述する動作の一部（例えばＴＣＰ層の上位にあるプロトコル情報をルールとする構成）については、当該プロトコルで規定されていない。
【００３９】
フローエントリに設定されるルールには、例えば、ＴＣＰ／ＩＰのパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組み合わせが規定される。例えば、レイヤ１の物理ポート、レイヤ２のＭＡＣアドレス、レイヤ３のＩＰアドレスやプロトコル、レイヤ４のポート番号、ＶＬＡＮタグ（ＶＬＡＮ  ｉｄ）のいずれかの組み合わせがルールとして設定される。
【００４０】
更に、本発明によるフロー制御部３２は、トランスポート層におけるＴＣＰ層の上位にあるプロトコル情報も、フローエントリで規定するルールとして設定する。例えば、ｉＳＣＳＩ層におけるｉＳＣＳＩネーム（イニシエータネーム、ターゲットネーム）が、単独で、あるいは上記のアドレスや識別子との組合せとして、ルールとして設定される。
【００４１】
フローエントリに設定されるアクションには、例えばＴＣＰ／ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先（例えばパケットの出力先ポート番号）が設定される。又、アクションとして、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【００４２】
スイッチ４０に設定される（又は設定された）フローエントリは、フロー制御部３２によってフローテーブル３４に記録され、コントローラ３００において管理される。図７は、本発明によるコントローラにおいて設定及び管理されるフローテーブル３４の構造の一例を示す図である。フローテーブル３４には、設定対象となるスイッチ４０の識別子（例えばＤＰＩＤ）を示す対象装置３４２と、当該スイッチ４０に設定されるフローエントリ３４０とが、フローエントリを特定するためのフロー識別子３４１に対応づけられて記録される。フローエントリ３４０には、ルール３４３及びアクション情報３４４が設定される。フロー制御部３２は、フローテーブル３４を参照することで、スイッチ４０にどのようなフローエントリ３４０が設定されているかを把握することができる。又、図４には図示しないが、フローテーブル３４は、対象装置３４２であるスイッチ４０にフローエントリ３４０を設定したか否かを示す情報が含まれても良い。
【００４３】
図８は、コントローラ３００（フロー制御部３２）によってスイッチ４０に設定されるフローエントリの一例を示す図である。本発明では、レイヤ４においてＴＣＰ層よりも上位のプロトコルの情報をルールとすることが可能である。図５に示す一例では、ＴＣＰ層の上位にあるｉＳＣＳＩ層のｉＳＣＳＩネームとＩＰアドレスとの組合せをルールとし、ルートＡを通信経路としてパケット転送することをアクションとしたフローエントリが、ルートＡ上のスイッチ４０−２、４０−４に設定される。詳細には、送信元ＩＰアドレス“１．０．０．２”、送信先ＩＰアドレス“１．０．０．２”、イニシエータネーム“ｉｑｎ．２０００−０１．ｃｏｍ．  ＡＢＣ：０１２３ａｂｃｄ”、ターゲットネーム“ｉｑｎ．２０００−０１．ｃｏｍ．  ＡＢＣ：０１：ｘｘｘｘ−ｘｘ”がルールとして規定され、“該当パケットをルートＡに転送するための出力先ポート番号に出力すること”がアクションとして規定される。
【００４４】
スイッチ４０は、コントローラ３００によって設定（更新）されたフローエントリに従って、受信パケットに対する処理方法（アクション）を決定する。受信パケットに対するアクションとして、例えば、他のスイッチ４０への転送やパケット破棄がある。
【００４５】
図９は、本発明によるスイッチ４０の構成の一例を示す図である。図６を参照して、スイッチ４０は、スイッチ処理部４１、フローテーブル４２、スイッチ制御部４３を備える。スイッチ処理部４１は、回線６００を収容し、収容した回線を介して転送されるパケットに対するスイッチ機能を実現する。スイッチ制御部４３は、制御インタフェース５００を介してコントローラ３００に接続され、コントローラ３００からの指示に応じてフローテーブル４２へのフローエントリの設定を制御する。スイッチ処理部４１は、フローテーブル４２に設定されたフローエントリに従って、受信パケットに対する処理を決定する。詳細には、スイッチ処理部４１は、受信パケットのヘッダ情報に適合するルールがフローテーブル４２に設定されている場合、当該ルールを含むフローエントリに規定されたアクションを実行する。一方、受信パケットのヘッダ情報に適合するルールがフローテーブル４２に設定されていない場合、スイッチ処理部４１は、当該パケットデータをファーストパケットとして、スイッチ制御部４３に通知する。スイッチ制御部４３は、ファーストパケットを、制御インタフェース５００を介してコントローラ３００に送信する。
【００４６】
ここで、本発明に係るスイッチ処理部４１は、非特許文献１に規定されたヘッダ情報だけではなく、ＴＣＰヘッダのオプション領域内の情報も、受信パケットに適合するフローエントリの検索に利用する。例えば、スイッチ処理部４１は、図２に示すパケット２１０を受信した場合、ＩＰ層以下ヘッダ１１４及びＴＣＰ層ヘッダ１１３のみならず、ＴＣＰ層ヘッダ１１３のオプション領域に格納されたｉＳＣＳＩ情報１１５を抽出し、フローテーブル４２に登録されたフローエントリ（のルール）と照合する。ここで、スイッチ処理部４１は、ｉＳＣＳＩ情報１１５に一致するプロトコル情報をルールとして規定したフローエントリがフローテーブル４２に存在した場合、当該フローエントリに従った転送先に、受信パケットを転送することができる。この場合、ｉＳＣＳＩ情報１１５に対応する通信経路に受信パケットが転送されることとなる。
【００４７】
あるいは、スイッチ処理部４１は、特定のプロトコルのヘッダ情報があったことを条件に、ＴＣＰ層ヘッダ１１３のオプション領域を参照し、ｉＳＣＳＩ情報１１５を確認してもよい。例えば、このようなｉＳＣＳＩ情報１１５の確認条件は、コントローラ３００によるフローエントリの登録とともに設定されることが好ましい。
【００４８】
以上のような構成により、本発明によるコンピュータシステムによれば、レイヤ４においてＴＣＰ層よりも上位のプロトコル（例えばｉＳＣＳＩプロトコル）によって特定されるイニシエータとターゲットとの間の通信制御（フロー制御）を、オープンフロープロトコルを利用して実現することが可能となる。例えば、特定のターゲットへの通信接続をコントローラ３００によって制御できるため、ターゲットが移動した場合のフローの変更を容易に行うことが可能となる。又、ターゲットの追加や拡張にも容易に対応することが可能となる。
【００４９】
（動作）  図１０を参照して、本発明によるコンピュータシステムのパケット転送動作の詳細を説明する。図１０は、本発明によるコンピュータシステムにおけるパケット転送動作の一例を示す図である。ここでは、一例として、図４Ａに示すＴＣＰヘッダを持つパケット２１０が、イニシエータ１０１−１からターゲット２０１−１に転送されるときの動作を説明する。
【００５０】
図１０を参照して、イニシエータ１０１は、イニシエータネームとターゲットネームをＴＣＰヘッダのオプション領域に格納したパケット２１０を転送する（ステップＳ１）。本発明では、ｉＳＣＳＩ層のイニシエータ１０１が転送データをＴＣＰ層に受け渡す際、オプション領域のデータを指定する。ここでは、図４Ａに示すデータデザインのｉＳＣＳＩ情報１１５（イニシエータネーム及びターゲットネーム）が、オプション領域のデータとして指定される。
【００５１】
イニシエータ１０１から転送されたパケット２１０は、先ずスイッチ４０−２に入力される。スイッチ４０−２は、受信したパケット２１０に適合するフローエントリが自身のフローテーブル４２に登録されているかを確認する。ここでは、パケット２１０のレイヤ１からレイヤ４のＴＣＰ層（オプション領域を含む）までのヘッダ情報が、フローテーブル４２に設定されたルールに適合するかが確認される。
【００５２】
パケット２１０についてのフローエントリがフローテーブル４２に登録されていない場合、スイッチ４０−２は、パケット２１０を、ファーストパケットとしてコントローラ３００に送信する（ステップＳ２）。
【００５３】
コントローラ３００は、通知されたパケット２１０のヘッダ情報に基づいてパケット２１０の転送経路を算出するとともに、スイッチ４０に設定するフローエントリをスイッチ４０に設定する（ステップＳ３、Ｓ４）。詳細には、コントローラ３００は、ＴＣＰヘッダにおけるオプション領域を参照し、ｉＳＣＳＩ情報１１５が格納されていることを確認する。これにより、コントローラ３００は、パケット２１０がｉＳＣＳＩプロトコルに従ったデータであることを認識する。次に、コントローラ３００は、パケット２１０に格納されたｉＳＣＳＩ情報１１５と他のヘッダ情報（例えばＩＰアドレスやＭＡＣアドレス）に基づいて特定した端点間の通信経路を算出する（ステップＳ３）。続いてコントローラ３００は、ｉＳＣＳＩ情報１１５と他のヘッダ情報との組合せをルールとし、算出した通信経路を転送することをアクションとしたフローエントリを、当該通信経路上のスイッチ４０に設定する（ステップＳ４）。
【００５４】
本一例では、通信経路の算出フェーズにおいて、経路長が一番短くなるよう、スイッチ４０−４を経由してストレージ２００へ到達する経路（ルートＡとする）が選択される。又、コントローラ３００は、この経路を、スイッチ側でパケット２１０の送信元ＩＰアドレスと送信先ＩＰアドレス、ＴＣＰヘッダにおけるオプション領域のイニシエータネームとターゲットネームの情報で識別するように規定する。この場合、例えば図８に示すように、“送信元ＩＰアドレスが１．０．０．１で、送信先ＩＰアドレスが１．０．０．２の場合、ＴＣＰオプション領域を参照し、イニシエータネームがｉｑｎ．２０００−０１．ｃｏｍ．ｎｅｃ：０１２３ａｂｃｄ、ターゲットネームがｉｑｎ．２０００−０１．ｃｏｍ．ｎｅｃ：０１：ｘｘｘｘ−ｘｘの場合にはルートＡへ送信する”ことを規定したフローエントリが、通信経路上のスイッチ４０−１、４０−２に設定される。ここでスイッチ４０に設定されるパケット２１０の出力先はスイッチによって異なり、例えば、算出された通信経路に送信するための出力先となるポート番号がアクションに規定される。
【００５５】
フローエントリの設定により、スイッチ４０−２、４０−４は、送信元ＩＰアドレスが１．０．０．１で、送信先ＩＰアドレスが１．０．０．２のパケットに対しオプション領域を参照してフローエントリとの照合を行うこととなる。
【００５６】
スイッチ４０−２は、コントローラ３００によって設定されたフローエントリに従い、パケット２１０をルートＡに出力する（ステップＳ５）。ここでは、スイッチ４０−２は、ルートＡ上のスイッチ４０−４に接続するポートからパケット２１０を出力する。スイッチ４０−４は、受信したパケット２１０の送信元ＩＰアドレスが“１．０．０．１”で、送信先ＩＰアドレスが“１．０．０．２”であるため、ＴＣＰヘッダのオプション領域を参照する。ここで、オプション領域にはイニシエータネームがｉｑｎ．２０００−０１．ｃｏｍ．ｎｅｃ：０１２３ａｂｃｄ、ターゲットネームがｉｑｎ．２０００−０１．ｃｏｍ．ｎｅｃ：０１：ｘｘｘｘ−ｘｘが含まれる。このため、スイッチ４０−４は、受信パケットがステップＳ４において設定されたフローエントリに適合すると判断し、当該フローエントリで規定されたルートＡにパケット２１０を出力する（ステップＳ６）。ここでは、スイッチ４０−４は、ルートＡ上のストレージ２００に接続するポートからパケット２１０を出力する。
【００５７】
ストレージ２００は、受信したパケット２１０パケットにおけるデータ領域２１１を参照してターゲットネームを確認し、対応するターゲット２０１に出力する（ステップＳ７）。あるいは、ストレージ２００は、受信したパケット２１０パケットにおけるＴＣＰ層ヘッダ１１３のオプション領域を参照してターゲットネームを確認してもよい。この場合、イニシエータ１０１は、データ領域２１１にターゲットネームを挿入しなくてもよいため、データ領域２１１の格納領域を従来のパケット１１０よりも大きくすることができる。
【００５８】
ここでは、パケット２１０に含まれるターゲットネーム“ｉｑｎ．２０００−０１．ｃｏｍ．ｎｅｃ：０１：ｘｘｘｘ−ｘｘ”を持つターゲット２０１−１に当該パケット２１０が送られる。
【００５９】
ターゲット２０１−１は、パケット２１０にＳＣＳＩコマンドが含まれる場合、レスポンスをパケットにカプセル化するとともに、上述と同様に自身のターゲットネームと送信元のイニシエーションネームをｉＳＣＳＩ情報１１５としてＴＣＰ層ヘッダ１１３に格納したパケット２１０を、サーバ１００宛てに送信する。パケット２１０の転送手順は、上述と同様であるため省略する。
【００６０】
以降、イニシエータ１０１−１とターゲット２０１−１との間において、コントローラ３００によって設定されたルートＡを経由してＴＣＰ／ＩＰパケット通信が行われることとなる。
【００６１】
以上のように、本発明によるコンピュータシステムでは、オープンフロープロトコルを利用してイニシエータやターゲット別にフローを制御することができるため、以下のような効果がある。
【００６２】
（１）イニシエータから見て、ターゲットとなる論理ディスクが複数存在する構成において、ターゲット別にフローを制御できる。
【００６３】
（２）スケーラブルな構成の場合において、ターゲットのＩＰアドレスが変更される場合（ターゲットとなる論理ディスクが物理的なストレージ間を移動した場合など）に、適応的にフローを制御できる。この際、コントローラ３００は、移動先の情報に応じて、新たな通信経路の算出及びフローエントリの設定を行うとともに、経路情報３３及びフローテーブル３４を参照して不要となった通信経路及びフローエントリを特定し、スイッチから削除する。
【００６４】
（３）同様に、スケーラブルな構成の場合において、イニシエータのＩＰアドレスが変更される場合（イニシエータが物理的なサーバ間を移動した場合など）に、適応的にフローを制御できる。
【００６５】
（４）ＬＡＮやＷＡＮといった、ｉＳＣＳＩ以外のパケットが流れるネットワークや、網目状になったネットワークを利用する場合でも適応的に経路を選択できる。
【００６６】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。例えば、上述の実施例ではｉＳＣＳＩネームとＩＰアドレスの組合せによってフローを区別して制御しているが、ＩＰアドレス以外にもＭＡＣアドレスやポート番号と組み合わせたルールによりフローを制御してもよい。
【００６７】
又、上述の実施例では、経路上のスイッチに対して転送先ポートを指定したフローエントリによるフロー制御を説明したがこれに限らない。本発明によるスイッチ４０は、ＴＣＰヘッダのオプション領域を参照してｉＳＣＳＩ情報１１５を識別することができるため、ｉＳＣＳＩ情報１１５を利用して転送先を決定することができる。このため、コントローラ３００は、全てのスイッチに、ファーストパケットに基づいて設定したフローエントリを全てのスイッチ４０（図１ではスイッチ４０−１〜４０−４）に設定することで、ｉＳＣＳＩネームに応じたフロー制御が可能となる。この場合、経路設定はコントローラ３００において行われ、経路選択はスイッチ４０において行われることとなる。尚、スイッチ４０において具体的にどういったポリシーで経路選択するかは実装によって変化して良い。
【００６８】
更に、サーバ１００、ストレージ２００はシステム内に複数設けられてもよく、スイッチ４０、イニシエータ１０１やターゲット２０１の数も上述の例に限らない。又、イニシエータ１０１やターゲット２０１はサーバやストレージに関わらず他の機能を実現するコンピュータ装置（ホスト）に搭載されても構わない。
【００６９】
尚、本出願は、日本出願番号２０１１−０５２１３０に基づき、日本出願番号２０１１−０５２１３０における開示内容は引用により本出願に組み込まれる。
【図１】
2012120990.tif 000003
【図２】
2012120990.tif 000004
【図３】
2012120990.tif 000005
【図４Ａ】
2012120990.tif 000006
【図４Ｂ】
2012120990.tif 000007
【図４Ｃ】
2012120990.tif 000008
【図５】
2012120990.tif 000009
【図６】
2012120990.tif 000010
【図７】
2012120990.tif 000011
【図８】
2012120990.tif 000012
【図９】
2012120990.tif 000013
【図１０】
2012120990.tif 000014
【国際調査報告】
2012120990.tif 000015
2012120990.tif 000016
2012120990.tif 000017
2012120990.tif 000018