コンピュータシステム、コントローラ、スイッチ、及び通信方法
【課題】オープンフロー技術を利用したコンピュータシステムの耐障害性を向上させる。
【解決手段】 本発明によるコンピュータシステムは、それぞれが、通信経路を算出し、通信経路上のスイッチ2に対して、フローエントリの設定を指示する複数のコントローラ1と、複数のコントローラ1の1つを経路決定者として指定し、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチ2とを具備する。
【解決手段】 本発明によるコンピュータシステムは、それぞれが、通信経路を算出し、通信経路上のスイッチ2に対して、フローエントリの設定を指示する複数のコントローラ1と、複数のコントローラ1の1つを経路決定者として指定し、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチ2とを具備する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステム、コントローラ、スイッチ及び通信方法に関し、特に、オープンフロー(プログラマブルフロー)技術を利用したコンピュータシステムの冗長化技術、及び通信方法に関する。
【背景技術】
【0002】
従来、パケットの送信元から送信先への経路の決定とパケット転送処理は、経路上の複数のスイッチが行っていた。近年、データセンターといった大規模ネットワークにおいては、故障による機器の停止や規模拡大のための機器の新規追加により、ネットワーク構成の変化が常に発生している。このため、ネットワークの構成の変化に即応し適切な経路を決定するという柔軟性が必要となってきた。しかし、スイッチにおける経路決定処理のプログラムは、外部から変更することができないため、ネットワーク全体を一元的に制御及び管理することはできなかった。
【0003】
一方、コンピュータネットワークにおいて、各スイッチの転送動作等を外部のコントローラによって一元的に制御する技術(オープンフロー)が、OpenFlow Consortiumによって提案されている(非特許文献1参照)。この技術に対応したネットワークスイッチ(以下、プログラマブルフロースイッチ(PFS)と称す)は、プロトコル種別やポート番号等の詳細な情報をフローテーブルに保持し、フローの制御と統計情報の採取を行うことができる。
【0004】
図1を参照して、オープンフローを利用したコンピュータシステムの構成及び動作を説明する。図1を参照して、本発明の関連技術によるコンピュータシステムは、プログラマブルフローコントローラ100(以下、PFC100と称す)、複数のプログラマブルスイッチ102−1〜102−n(以下、PFS102−1〜102−nと称す)を有するスイッチ群200、複数のホストコンピュータ103−1〜103−i(以下、ホスト103−1〜103−iと称す)を有するホスト群300を具備する。ただし、n、iは2以上の自然数である。以下、PFS102−1〜102−nを区別せずに総称する場合はPFS102と称し、ホスト103−1〜103−iを区別せずに総称する場合はホスト103と称して説明する。
【0005】
PFC100は、ホスト103間の通信経路の設定や、経路上におけるPFS102に対する転送動作(中継動作)等の設定を行う。この際、PFC100は、PFS102が保持するフローテーブルに、フロー(パケットデータ)を特定するルールと、当該フローに対する動作を規定するアクションとを対応付けたフローエントリを設定する。通信経路上のPFS102は、PFC100によって設定されたフローエントリに従って受信パケットデータの転送先を決定し、転送処理を行う。これにより、ホスト103は、PFC100によって設定された通信経路を利用して他のホスト103との間でパケットデータの送受信が可能となる。すなわち、オープンフローを利用したコンピュータシステムでは、通信経路を設定するPFC100と、転送処理を行うPFS102とを分離され、システム全体の通信を一元的に制御及び管理することが可能となる。
【0006】
図1を参照して、ホスト103−1からホスト103−iへパケット送信を行う場合、PFS102−1はホスト103−1から受け取ったパケット内にある送信先情報(ヘッダ情報)を参照し、PFS102−1内部で保持しているフローテーブルから当該ヘッダ情報に適合するエントリを探す。フローテーブルに設定されるエントリの内容については、例えば非特許文献1で規定されている。
【0007】
PFS102−1は、受信パケットデータについてのエントリがフローテーブルに記載されていない場合、当該パケットデータ(以下、ファーストパケットと称す)、又はファーストパケットのヘッダ情報をPFC101に転送する。PFS102−1からファーストパケットを受け取ったPFC101はパケット内に含まれている送信元ホストや送信先ホストという情報を元に経路400を決定する。
【0008】
PFC101は、経路400上の全てのPFS102に対して、パケットの転送先を規定するフローエントリの設定を指示する(フローテーブル更新指示を発行)。経路400上のPFS102は、フローテーブル更新指示に応じて、自身で管理しているフローテーブルを更新する。この後PFS102は、更新したフローテーブルに従い、パケットの転送を開始することで、PFC101が決定した経路400を経由して、宛先のホスト103−iへパケットが到達するようになる。
【0009】
一方、ネットワークにおける転送経路を1つの装置で集中制御するシステムが、例えば特開2009−153184(特許文献1参照)や特表2009−529811に記載されている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2009−153184
【特許文献2】特表2009−529811
【非特許文献】
【0011】
【非特許文献1】OpenFlow Switch Specification Version 0.9.0 (Wire Protocol 0x98) July 20, 2009
【発明の概要】
【発明が解決しようとする課題】
【0012】
PFC100で何らかの障害が発生した場合、PFC100は、経路上のPFS102に対するフローテーブルの更新を指示できない。この場合、ファーストパケットを受信したPFS102は自ら設定したタイムアウト時間までPFC101からのフローテーブルの更新指示を待ち続けてしまい、その間ホスト103間のパケット通信を行うことができない。又、PFC100が障害から復旧しない限り、ファーストパケットに対応する転送制御を行うことができない。
【0013】
このため、耐障害性の観点からPFC100を複数用意することが考えられるが、複数のPFCを利用した通信経路の構築(各PFSに対するフローテーブルの更新)の方法は、未だ確立されていない。このため、オープンフロー技術を利用したコンピュータシステムでは、PFCに発生した障害に対する耐性が低いという問題がある。
【0014】
従って、本発明による目的は、オープンフロー技術を利用したコンピュータシステムの耐障害性を向上させることにある。
【0015】
又、本発明による他の目的は、プログラマブルフローコントローラに障害が発生した場合でも、ファーストパケットに応じた通信経路の構築とパケットデータの転送処理を早期に実行することにある。
【課題を解決するための手段】
【0016】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【0017】
本発明によるコンピュータシステムは、それぞれが、通信経路を算出し、通信経路上のスイッチ(2)に対して、フローエントリの設定を指示する複数のコントローラ(1)と、複数のコントローラ(1)の1つを経路決定者として指定し、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチ(2)とを具備する。
【0018】
本発明による通信システムは、複数のコントローラ(1)のそれぞれが、通信経路を算出し、通信経路上のスイッチ(2)に対して、フローエントリの設定を指示するステップと、複数のコントローラ(1)の1つを経路決定者として指定するステップと、複数のスイッチ(2)が、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップとを具備する。
【発明の効果】
【0019】
本発明によれば、オープンフロー技術を利用したコンピュータシステムの耐障害性を向上させることができる。
【0020】
又、プログラマブルフローコントローラに障害が発生した場合でも、ファーストパケットに応じた通信経路の構築とパケットデータの転送処理を早期に実行することができる。
【図面の簡単な説明】
【0021】
【図1】図1は、従来技術によるコンピュータシステムの構成の一例を示す図である。
【図2】図2は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。
【図3】図3は、本発明によるプログラマブルフローコントローラの実施の形態における構成を示す図である。
【図4】図4は、本発明によるプログラマブルフローコントローラが保持するフローテーブルの一例を示す図である。
【図5】図5は、本発明によるプログラマブルフローコントローラが保持するトポロジ情報の一例を示す図である。
【図6】図6は、本発明によるプログラマブルフローコントローラが保持する通信経路情報の一例を示す図である。
【図7】図7は、本発明によるプログラマブルフロースイッチの実施の形態における構成を示す図である。
【図8】図8は、本発明によるプログラマブルフロースイッチが保持するフローテーブルの一例を示す図である。
【図9】図9は、本発明に係るプログラマブルフロー制御を説明するための図である。
【図10】図10は、本発明によるプログラマブルフロースイッチにおいて変更されたパケットデータの構造を示す図である。
【図11A】図11Aは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。
【図11B】図11Bは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。
【図12】図12は、本発明によるプログラマブルフロースイッチにおけるパケット転送動作の一例を示すフロー図である。
【図13】図13は、本発明による複数のプログラマブルフローコントローラによって算出された通信経路の一例を示す図である。
【発明を実施するための形態】
【0022】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【0023】
(コンピュータシステムの構成)
図2を参照して、本発明によるコンピュータシステムの構成を説明する。図2は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。本発明によるコンピュータシステムは、オープンフローを利用して通信経路の構築及びパケットデータの転送制御を行う。図2を参照して、本発明によるコンピュータシステムは、プログラマブルフローコントローラ1−1〜1−m(以下、PFC1−1〜1−mと称す)、複数のプログラマブルスイッチ2−1〜2−n(以下、PFS2−1〜2−nと称す)を有するスイッチ群20、複数のホストコンピュータ3−1〜3−i(以下、ホスト3−1〜3−iと称す)を有するホスト群30を具備する。ただし、m、n、iは2以上の自然数である。又、PFC1−1〜1−mを区別せずに総称する場合はPFC1と称し、PFS2−1〜2−nを区別せずに総称する場合はPFS2と称し、ホスト3−1〜3−iを区別せずに総称する場合はホスト3と称して説明する。
【0024】
ホスト3は、図示しないCPU、主記憶装置、及び外部記憶装置を備えるコンピュータ装置であり、外部記憶装置に格納されたプログラムを実行することで、他のホスト3との間で通信を行う。ホスト3間の通信は、スイッチ群20を介して行われる。ホスト3は、実行するプログラムに応じて、Webサーバ、ファイルサーバ、アプリケーションサーバ、あるいはクライアント端末等に例示される機能を実現する。例えば、ホスト3がWebサーバとして機能する場合、他のホスト3(例示:クライアント端末)の要求に従い、記憶装置(図示なし)内のHTML文書や画像データを他のホスト3(例示:クライアント端末)に転送する。
【0025】
PFC1は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路パケット転送処理を制御するスイッチ制御部11を備える。オープンフロー技術とは、コントローラ(ここではPFC1)が、ルーティングポリシー(フローエントリ:フロー+アクション)に従い、マルチレイヤ及びフロー単位の経路情報をPFS2に設定し、経路制御やノード制御を行う技術を示す(詳細は、非特許文献1を参照)。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるPFS2は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、END2ENDのフローとして通信を取り扱う。
【0026】
PFC1は、PFS2が保持するフローテーブル25にフローエントリ(ルール+アクション)を設定することで当該PFS2の動作(例えばパケットデータの中継動作や廃棄)を制御する。本発明によるPFC1は、PFC1自身に付与(又は予め設定された)識別子(以下、コントローラID17と称す)を加えたフローエントリを、経路上のPFS2に設定する。
【0027】
図3を参照して、PFC1の構成の詳細を説明する。図3は、本発明によるPFC1の構成を示す図である。PFC1は、CPU及び記憶装置を備えるコンピュータによって実現されることが好適である。PFC1では、図示しないCPUが記憶装置に格納されたプログラムを実行することで、図3に示すスイッチ制御部11、フロー管理部12、フロー生成部13の各機能が実現される。又、PFC1は、それぞれが図示しない記憶装置に格納されたフローテーブル14、トポロジ情報15、通信経路情報16、及びコントローラID17を備える。尚、コントローラID17は、予めPFC1毎にユニークに設定されていても良いし、PFS2からの通知されたコントローラID17が設定されても良い。
【0028】
スイッチ制御部11は、フローテーブル14に従ってPFS2毎にフローエントリ(ルール+アクション)の設定又は削除を行う。この際、スイッチ制御部11は、フローエントリ(ルール+アクション情報)にコントローラID17を対応付けてPFS2のフローテーブル25に設定する。又、PFS2に対するフローテーブルの更新(フローエントリの設定又は削除)は、通信経路上においてフローの宛先装置側から送信元装置に向かって順に行われる。PFS2は、設定された少なくとも1つのフローエントリ中から選択したフローエントリを参照し、受信パケットのヘッダ情報に応じたルールに対応するアクション(例えばパケットデータの中継や破棄)を実行する。ルール、アクションの詳細は後述する。
【0029】
図4は、PFC1が保持するフローテーブル14の構成の一例を示す図である。図4を参照して、フローテーブル14には、フローエントリを特定するためのフロー識別子141、当該フローエントリの設定対象(PFS2)を識別する識別子(対象装置142)、経路情報143、ルール144、アクション情報145、設定情報146、経路決定者識別子147が対応付けられて設定される。フローテーブル14には、PFC1の制御対象となる全てのPFS2に対して生成されたフローエントリ(ルール144+アクション情報145)が設定される。又、フローテーブル14には、フロー毎のQoSや暗号化に関する情報など、通信の扱い方が定義されても構わない。
【0030】
ルール144には、例えば、TCP/IPのパケットデータにおけるヘッダ情報に含まれる、OSI(Open Systems Interconnection)参照モデルのレイヤ1からレイヤ4のアドレスや識別子の組み合わせが規定される。例えば、図9に示すレイヤ1の物理ポート、レイヤ2のMACアドレス、レイヤ3のIPアドレス、レイヤ4のポート番号、VLANタグ(VLAN id)のそれぞれの組み合わせがルール144として設定される。尚、VLANタグには、優先順位(VLAN Priority)が付与されていても良い。
【0031】
ここで、ルール144に設定されるポート番号等の識別子やアドレス等は、所定の範囲で設定されても構わない。又、宛先や送信元のアドレス等を区別してルール144として設定されルことが好ましい。例えば、MAC宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルール144として設定される。更に、データ転送プロトコルを特定する識別子をルール144として設定してもよい。
【0032】
アクション情報145には、例えばTCP/IPのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクション情報145には、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【0033】
経路情報143は、フローエントリ(ルール144+アクション情報145)を適用する経路を特定する情報である。これは、後述する通信経路情報16に対応付けられた識別子である。
【0034】
設定情報146は、フローエントリ(ルール144+アクション情報145)が現在、通信経路上のPFS2に設定されているか否かを示す情報(「設定済み」又は「未設定」)を含む。設定情報146は、対象装置142や経路情報143に対応付けられているため、通信経路にフローエントリが設定されているか否かを確認できるとともに、通信経路上のPFS2毎にフローエントリが設定されているか否かを確認することができる。
【0035】
本発明によるフローテーブル14には、フローエントリ毎に経路決定者識別子147が設定される。本発明によるPFS2は、自身に設定された少なくとも1つのフローエントリの中から、パケット転送に利用するフローエントリを選択し、当該フローエントリを設定したPFC1を経路決定者に指定する。PFC1は、経路決定者識別子147として、経路決定者に指定されたか否かを示す情報をフローエントリ毎に記録する。例えば、経路決定者識別子147として、経路決定者として指定されたPFC1(自身)のコントローラID17が記録される。この場合、コントローラID17が対応付けられていないフローエントリ(ルール144+アクション145)は使用されず、他のPFC1が設定したフローエントリが使用されたものと確認できる。あるいは、PFS2から経路決定者として指定された場合、経路決定者識別子147として初期値(例えば“0”)と異なる値(例えば“1”)を設定してもよい。この場合、経路決定者として指定されない場合は、経路決定者識別子147が初期値を維持する。以上のように、本発明によるPFC1は、経路決定者識別子147を確認することで、自身が経路決定者か否かをフロー毎に確認できる。
【0036】
フロー管理部12は、フロー生成部13によって生成されたフロー(ルール144+アクション情報145)にフロー識別子141をつけて記憶装置に記録する。この際、フローエントリを適用する通信経路の識別子(経路情報143)やフローエントリを適用するPFS2の識別子(対象装置142)、及び経路決定者識別子147が、フローエントリ(ルール144+アクション情報145)に付されて記録される。ここで、フロー管理部12は、PFS2から経路決定者に指定された場合、自身が経路決定者に指定されたことを示す情報を経路決定者識別子147に設定する。
【0037】
又、フロー管理部12は、フローテーブル14を参照して、ファーストパケットのヘッダ情報に対応するフローエントリ(ルール144+アクション情報145)を抽出し、スイッチ制御部11に通知する。スイッチ制御部11は、通知されたフローエントリ(ルール144+アクション情報145)にコントローラIDを付加し、当該フローエントリに対応付けられた対象装置142(PFS2)に設定する。
【0038】
フロー生成部13は、PFS2から通知されたファーストパケットのヘッダ情報から通信経路を算出し、当該通信経路上のPFS2に設定するフローエントリ(ルール144+アクション情報145)を生成する。詳細には、フロー生成部13は、ファーストパケットのヘッダ情報から、送信元のホスト3と宛先のホスト3を特定し、トポロジ情報15を用いて通信経路を算出し、算出結果を通信経路情報16として記憶装置に記録する。ここでは、通信経路の端点となるホスト3と、通信経路上のPFS2及びそれぞれの接続関係が通信経路情報16として設定される。又、フロー生成部13は、通信経路情報16に基づいて通信経路上のPFS2に設定するフローエントリ(ルール144+アクション情報145)を設定する。
【0039】
図5は、本発明によるPFC1が保持するトポロジ情報15の一例を示す図である。トポロジ情報15は、PFS2やホスト3等の接続状況に関する情報を含む。具体的には、トポロジ情報15として、PFS2やホスト3を特定する装置識別子151に、当該装置のポート数152やポート接続先情報153が対応付けられて記憶装置に記録される。ポート接続先情報153は、接続相手を特定する接続種別(スイッチ/ノード/外部ネットワーク)や接続先を特定する情報(PFS2の場合はスイッチID、ホストの場合はMACアドレス、外部ネットワーク(例示:インターネット)の場合は外部ネットワークID)が含まれる。
【0040】
図6は、本発明によるPFC1が保持する通信経路情報の一例を示す図である。通信経路情報16は、通信経路を特定するための情報である。詳細には、通信経路情報16として、ホスト3や外部ネットワークインタフェース(図示なし)を端点として指定する端点情報161と、通過するPFS2とポートの対群を指定する通過スイッチ情報162と、付随情報163とが対応付けられて記憶装置に記録される。例えば、通信経路がホスト3間を接続する経路である場合、各ホスト3のMACアドレスが端点情報161として記録される。通過スイッチ情報162は、端点情報161で示される端点間の通信経路上に設けられるPFS2の識別子を含む。又、通過スイッチ情報162は、当該PFS2に設定されるフローエントリ(ルール144+アクション情報145)と当該PFS2とを対応づけるための情報を含んでも良い。付随情報163は、端点が変更された後の経路上のPFS2(通過スイッチ)に関する情報を含む。
【0041】
以上のような構成により、本発明によるPFC1は、PFS2からのファーストパケットの受信通知(フローエントリの設定要求)に応じて、当該パケットを転送させるためのフローエントリを生成するとともに、生成したフローエントリを、算出した通信経路上のPFS2に設定する。この際、設定するフローエントリには、PFC1に固有のコントローラID17が対応付けられている。
【0042】
図7は、本発明によるPFS2の実施の形態における構成を示す図である。PFS2は、PFC1によって設定(更新)されたフローテーブル25に従って受信パケットの処理方法(アクション)を決定する。PFS2は、転送処理部21、フロー設定部22、経路決定者設定部23、パケット修正部24を備える。転送処理部21、フロー設定部22、経路決定者設定部23、パケット修正部24は、ハードウェアで構成されても、CPUによって実行されるソフトウェアで実現してもどちらでも良い。
【0043】
PFS2の記憶装置には、図8に示すようなフローテーブル25が設定される。フローテーブル25は、PFC1によるフローエントリ設定指示(フローテーブル更新指示)に応じて、PFC1から送信されたフローエントリ(ルール144+アクション情報145)及びコントローラID17が対応付けられて設定される。コントローラID17により、フローテーブル25に設定されたフローエントリ(アクション情報145)がどのPFC1によって設定されたかを確認することができる。
【0044】
本発明では、同じルール144に対して複数のアクション情報145が設定され得る。このため、受信パケットに対する処理(アクション)を一義的に決めるための経路決定者識別子231が、処理に使用するフローエントリのルール144に対応付けられて設定される。本発明では、PFS2に設定されるフローエントリには設定元のコントローラID17が付されているため、コントローラID17を利用して、受信パケットに対するアクション(処理内容)を特定することが好ましい。従って、経路決定者識別子231は、使用するアクション情報145を設定したコントローラID17を特定する情報であることが好ましい。経路決定者識別子231によって、使用するアクション情報145のみならず、アクション情報145を設定したPFC1を特定することができる。
【0045】
又、経路決定者識別子231が付与されたフローエントリ(ルール144+アクション情報145)の使用回数が記録される回数情報232が、当該経路決定者識別子231又はルール144に対応付けられて設定されることが好ましい。回数情報232により、フローエントリの使用回数、すなわち、フローテーブル25に設定されたルール144に適合するパケットの受信回数や処理回数を確認することができる。
【0046】
転送処理部21は、フローテーブル25に設定されたフローエントリ(ルール144+アクション情報145)に従った転送先に受信パケットを転送する。本発明では、受信パケットのヘッダ情報に適合するルール144に対して複数のアクション情報145がフローテーブル25に設定されている場合がある。このため、本発明による転送処理部21は、経路決定者識別子231によって特定されたアクション情報145に従って転送処理を行う。
【0047】
転送処理部21は、受信パケットに対する処理(例えば転送処理)を実行すると、処理回数をカウントアップし、受信パケットに対応するフローエントリの回数情報232を更新する。
【0048】
フロー設定部22は、PFC1からのフローテーブル更新指示に応じて、PFC1から送信されるフローエントリ(ルール144+アクション情報145)をフローテーブル25に設定する。詳細には、フロー設定部22は、受信パケットに適合したフローエントリがフローテーブル25に設定されていない場合、すなわち、ファーストパケットを受信した場合、当該ファーストパケットをPFC1−1〜1−mに通知するとともに、フローテーブルの更新を要求する。又、PFC1−1〜1−mからのフローテーブルの更新指示を受けたフロー設定部22は、PFC1−1〜1−mからから送信されたフローエントリ(ルール144+アクション情報145)及びコントローラID17を自身のフローテーブル25に設定する。
【0049】
PFS2には、PFC1−1〜1−mのそれぞれからフローエントリが設定されため、PFS2のフローテーブル25には、ファーストパケットに適合するフローエントリが複数設定される。すなわち、同じルール144に対して複数の異なるアクション情報145が設定されることとなる。本発明では、コントローラID17により、設定されたフローエントリ(アクション情報145)がどのPFC1によって設定されたかを確認することができる。
【0050】
本発明による経路決定者設定部23は、ファーストパケットを受信した場合と、それ以外のパケットデータ(フローテーブル25に設定されているフローエントリに適合するパケットデータ)を受信した場合とで、その動作が異なる。すなわち、PFS2は、ファーストパケットを受信してからファーストパケットを次のノード(例えばPFS2)に転送するまでの間は、経路決定者選択モードとして動作し、その他の期間は通常モードとして動作する。
【0051】
先ず、経路決定者選択モードにおける経路決定者設定部23の動作を説明する。経路決定者設定部23は、ファーストパケットを通知(フローテーブル更新要求)した複数のPFC1−1〜1−mのうち、最初にフローテーブルの更新を自身に指示したPFC1を、経路決定者として指定する。この際、経路決定者設定部23は、経路決定者として指定したPFC1のコントローラID17に経路決定者識別子231を設定する。これにより、ルール144に適合するパケットデータに対するアクション情報145(処理方法)を経路決定者識別子231によって特定することができる。経路決定者設定部23は、経路決定者識別子231を設定したコントローラID17のPFC1に対し、経路決定者として指定する情報、及び経路決定者を設定したルール144を送信する。又、経路決定者の指定後、フロー設定部22は、PFC1からのフローテーブルの更新指示を無視(拒否)することが好ましい。
【0052】
次に、通常モードにおける経路決定者設定部23の動作を説明する。経路決定者設定部23は、受信パケットに含まれる経理決定者情報18と一致するコントローラID17に経路決定者識別子231を設定する。詳細には、経路決定者設定部23は、フローテーブル25に設定されたルール144に適合するパケットを受信した場合、当該パケットの受信回数(転送回数)を回数情報232で確認する。この際、ルール144に適合するパケットの受信が初回である場合、経路決定者設定部23は、受信パケットから抽出した経路決定者情報18に一致するコントローラIDが付加されたフローエントリ(アクション情報145)に、経路決定者識別子231を設定する。又、経路決定者の指定後(経路決定者識別子231の設定後)、フロー設定部22は、PFC1によって設定された他のフローエントリを削除することが好ましい。一方、受信回数が2回目以降である場合、経路決定者設定部23は、自身のフローテーブル25を参照し、経路決定者識別子231が付されたフローエントリ(アクション情報145)に従って、受信パケットの処理(例えば転送処理)を行う。
【0053】
パケット修正部24は、ファーストパケットを受信したPFS2において動作し、図10に示すように、ファーストパケット105に経路決定者情報18を追加して新たなパケットデータ90(以下、経路決定者情報付パケット90と称す)を作成する。転送処理部21は、ファーストパケットを送信する際、パケット修正部24によって生成された経路決定者情報付パケット90を転送する。
【0054】
転送処理部21によるファーストパケットの転送処理は、新しくフローエントリ(ルール144+アクション145)が設定され、経路決定者識別子231が設定されたことをトリガとして実施されることが好ましい。この際、転送処理部21は、パケット修正部24によって生成された経路決定者付パケット90を転送する。
【0055】
以上のように、本発明によるコンピュータシステムでは、複数のPFC3−1〜3−iによってフロー(パケット)を転送するための通信経路が構築されるため、PFC3−1〜3−iのいずれかに障害が発生してもパケット転送が可能となる。又、フローエントリ(ルール144+アクション情報145)には、PFC3毎に固有のコントローラID17が付与されている。このため、同じルール144に対して複数のアクション情報145が設定されていても、コントローラID17を使用決定者として指定することで、使用するアクション情報145を特定することができる。すなわち、複数のPFC3によってフローエントリが設定されてもPFS2が使用するフローエントリは常に1つとなるため、PFS2は、誤動作せずにパケットを転送することができる。
【0056】
又、本発明では、フローテーブルの更新が、宛先ホスト側のPFS2から送信元ホスト側のPFS2(ファーストパケットを受信したPFS2)に向かって順に行われる。このため、ファーストパケットを通知したPFS2のフローテーブル25が更新された時点で、送信元のホスト3から宛先のホスト3までの通信経路上の全てのPFS2のフローテーブル25が更新されたことになる。すなわち、ファーストパケットを通知したPFS2のフローテーブル25を最初に更新したPFC1は、複数のPFC1のうち、通信経路上の全てのPFS2のフローテーブル25を更新した最初のPFC1となる。
【0057】
(通信経路の構築及びパケット転送動作)
図11A、Bから図13を参照して、本発明によるコンピュータシステムにおける通信経路の構築動作の詳細を説明する。以下では、ホスト3−1からホスト3−iに対してパケットデータを送信し、それぞれの間の通信経路を構築する動作について説明する。又、ここでは、PFS2−1がホスト3−1からファーストパケットを受信するものとする。更に、PFC1−1のコントローラID17として“1011”が設定され、PFC1−2のコントローラID17として“1012”が設定され、以下同様に、PFC1−mのコントローラID17として“101m”が設定されるものとする。
【0058】
図11A、Bは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。図11を参照して、ホスト3−1からホスト3−i宛のパケットデータが送信され、ホスト3−1側で最も近いPFS2−1によって受信される(ステップS101)。
【0059】
PFS2−1はホスト3−1から受け取ったパケット内にあるヘッダ情報(送信先情報)を参照し、PFS2−1内部で保持しているフローテーブル25から該当エントリを探す(ステップS102)。ここで、ヘッダ情報に対応するフローエントリ(ルール144)がある場合、当該エントリで規定されたアクション情報145に基づいた転送先のノードに受信パケットを転送する(ステップS102No、S119)。
【0060】
一方、ヘッダ情報に対応するフローエントリがフローテーブル25にない場合、PFS2−1はファーストパケットを受信したと判定し、ファーストパケットの受信をPFC1−1〜1−mのそれぞれに通知する(ステップS102Yes、S103、S104)。この際、PFS2−1は、フローテーブルの更新要求とともにファーストパケット(又はヘッダ情報)をPFC1−1〜1−mに送信する。以下、PFS2−1を要求元PFS2−1と称して説明する。
【0061】
ファーストパケットの受信通知を受け付けたPFC1−1〜1−mのそれぞれは、当該フロー(パケット)に対する通信経路の算出、フローエントリの生成、及びPFS2に対するフローエントリの設定(フローテーブル25の更新)を行う(ステップS105〜S112)。詳細には、PFS2−1からファーストパケットを受け取ったPFC1−1は、パケット内に含まれている送信元ホストや宛先ホストのMACアドレスやIPアドレスなど、OpenFlowとして規定されている情報を元に経路を決定し、当該経路上のPFS2に設定するフローエントリを生成する(ステップS105)。
【0062】
PFC1−1は、生成したフローエントリにPFC1−1のコントローラID17“1011”を付与して、宛先ホスト側のPFS2−nから順にフローテーブル25の更新を行う(ステップS106〜S109)。詳細には、PFC1−1は、先ず、宛先のホスト3−iに最も近いPFS2−nに対してPFC1−1のコントローラID17“1011”を付与したフローエントリを送信する(ステップS106)。PFS2−nは、PFC1−1からのフローテーブルの更新指示に応じて、送信されたフローエントリを設定する(ステップS107)。同様に、PFC1−1は、算出した経路上を送信元側に方向に遡り、1つ前のPFS2に対して順にフローテーブルを更新し、最後に送信元のホスト3−1に最も近い要求元PFS2−1フローテーブルを更新する(ステップS108、S109)。
【0063】
フローエントリの更新処理は、他のPFC1−2〜1−mも同様に行う。例えば、PFC1−mは、生成したフローエントリにPFC1−mのコントローラID17“101m”を付与して、宛先ホスト側のPFS2−nから順にフローテーブル25の更新を行う(ステップS110〜S112)。又、PFC1−mは、算出した経路上を送信元側に方向に遡り、1つ前のPFS2に対して順にフローテーブルを更新し、最後に送信元のホスト3−1に最も近いPFS2−1フローテーブルを更新する。
【0064】
PFC1−1〜1−mによるPFS2に対するフローテーブルの更新処理は、それぞれ同期することなく独立的に実施される。このため、フローテーブルの更新順序は、図11A、Bに示す順とは限らない。又、ファーストパケットの受信通知を受け取るタイミングや経路計算開始時のタイミングの違いから、ネットワーク上の機器の状態が変化している可能性があり、必ずしも一致しているとは限らない。このため、PFC1−1〜1−mのそれぞれが算出した通信経路や、フローエントリの設定対象となるPFS2は異なる場合がある。
【0065】
PFC1−1〜1−mによるフローテーブルの更新処理により、PFS2には、1つのルールに対して複数(最大m個)のアクション情報145が設定される。ただし、それぞれのアクション情報145には、設定元のPFC1に対応するコントローラID17が対応付けられて記録される。
【0066】
ここで、PFC1−1〜1−mのいずれかによって要求元PFS2−1に対してフローエントリの設定指示(フローテーブルの更新指示)が出されると、要求元PFS2−1は、経路決定者を設定する(ステップS113)。ここでは、PFC1−1が最初に要求元PFS2−1のフローテーブル25を更新し、経路決定者として設定されるものとする。要求元PFS2−1は、PFC1−1によって設定されたフローエントリ(ルール144+アクション情報145)に経路決定者識別子231を対応付けて設定する。又、これ以降、要求元PFS2−1において、経路決定者として指定しないPFC1によるフローテーブルの更新指示は無視(拒否)される。
【0067】
要求元PFS2−1は、経路決定者識別子231を付与したフローエントリのコントローラID17に対応するPFC1を経路決定者に指定する(ステップS114)。例えば、PFC1−1を経路決定者に指定を指定する場合、PFC1−1に対して経路決定者を指定する情報(例えば経路決定者識別子231)とフローエントリを特定する情報(例えばルール144)を送信する。PFC1−1は、受信したルール144に対して、経路決定者を指定する情報(例えば経路決定者識別子231)を対応付けてフローテーブル14を更新する(ステップS115)。これにより、PFC1−1は、自身が設定し、制御及び管理可能なフロー及びその通信経路を確認することが可能となる。すなわち、PFC1−1は、自身の構築した通信経路を利用したフローの一元制御及び管理が可能となる。
【0068】
要求元PFS2−1は、ステップS114における経路決定者の指定の後、又はこれと同時的に他のPFC1(ここではPFC1−2〜1−m)に対して、経路決定者を通知する(ステップS116)。要求元PFS2−1は、PFC1−2〜1−mに対して経路決定者ではないことを示す情報とフローエントリを特定する情報(例えばルール144)を送信する。経路決定者として選択されなかったPFC1−2〜1−mは、自身のフローテーブル14から、PFS2−1から通知されたルール144を含むフローエントリを削除する(ステップS117)。又、経路決定者として選択されなかったPFC1−2〜1−mは、フローエントリの生成途中である場合、PFS2−1から通知されたルール144を含むフローエントリの生成を停止することが好ましい。このように、使用しないフローエントリの削除や、使用しないフローエントリの生成を中止することで、PFC1における記憶領域の無駄や処理負荷の増大を防止することができる。ただし、ステップS116及びS117の処理は省略してもよい。
【0069】
要求元PFS2−1は、経路決定者を設定(指定)すると、ファーストパケット105に経路決定者情報18を追加して経路決定者情報付パケット90を生成及び送信する(ステップS118)。この際、要求元PFS2−1は、経路決定者であるPFC1−1のコントローラID“1011”を経路決定者情報18としてファーストパケット105に追加して経路決定者情報付パケット90を生成する。そして、コントローラID“1011”が付されたアクション情報145に従った転送先に当該パケット90を転送する。
【0070】
経路決定者情報付パケット90を受信したPFS2は、経路決定者情報付パケット90のヘッダ情報に適合するルール144に対応する複数のアクション情報145から、経路決定者情報付パケット90内の経路決定者情報18と一致するコントローラID17が付加されたアクション情報145を抽出する。そしてPFS2は、抽出したアクション情報145に従った処理(ここでは転送処理)を行う。これにより、ファーストパケット105は、経路決定者(PFC1−1)によって設定された通信経路を経由して宛先のホスト3−iに送信される。
【0071】
経路決定者情報付パケット90を転送したPFS2は、経路決定者情報付パケット90に適合するルール144に対応するアクション情報145のうち、転送に利用しないアクション情報145を自身のフローテーブル25から削除することが好ましい。この場合、PFS2は、経路決定者によって設定されたフローエントリのみを使用できるため、要求元PFS2−1は、ファーストパケット以外のパケットに経路決定者情報18を含めて転送する必要はない。
【0072】
又、PFS2は、ルール144に適合するパケットの処理回数をカウントアップし、回数情報232を更新する。
【0073】
以降、PFS2は、受信パケットに適合するフローエントリに従ってパケットデータを転送する(ステップS119)。これにより、ホスト3−1からホスト3−iに対して送信されるパケットデータは、経路決定者(PFC1−1)によって各PFS2に設定されたアクション情報145に従って転送される。すなわち、ホスト3−1からホスト3−iに対して送信されるパケットデータは、経路決定者(PFC1−1)によって構築された通信経路を経由して宛先のホスト3−iに送信されることとなる。
【0074】
一方、何らかの障害により、経路決定者付パケット90内の経路決定者情報18に一致するコントローラID17が、PFS2のフローテーブル25に設定されていないことがある。このような問題を解決する転送処理方法を、図12を参照して説明する。図12は、本発明によるPFS2におけるパケット転送動作の一例を示すフロー図である。
【0075】
図12を参照して、PFS2は、受信パケットに適合するフローエントリ(ルール144+アクション情報145)の適用回数が、初回(1回目)か2日回目以降かを、回数情報232を参照して判定する(ステップS201)。受信パケットに適合するフローエントリ(ルール144+アクション情報145)に対応する回数情報232が“0”を示す場合、当該フローエントリの適用が初回であると判定される(ステップS201Yes)。すなわち、受信パケットがファーストパケット105を含む経路決定者情報付パケット90であると判定される。この場合、PFS2は、受信パケットに含まれる経路決定者情報18と、当該フローエントリに設定されたコントローラID17とを比較する(ステップS202)。
【0076】
ネットワークやPFS2に何らかの障害が発生した場合、受信パケット内の経路決定者情報18と一致するコントローラID17がフローテーブル25に設定されていないことがある。この場合、PFS2は、受信パケットに付加されている経路決定者情報18と同じコントローラID17が付与されたPFC1に対して、受信パケットを転送する(ステップS202No、S203)。PFC1は、PFS2から受け取ったパケットデータのヘッダ情報により送信元及び宛先のホスト3を特定し、通信経路の算出及びPFS2に設定するフローエントリ(ルール144+アクション情報145)の生成を行う。そして、PFC1は、通信経路上のPFS2に対してフローエントリの設定指示(フローテーブルの更新指示)を発行する(ステップS204)。受信パケットが通知されたPFC1は、ファーストパケットを通知したPFS2によって経路決定者に設定されている。この場合、障害が発生せず正常に動作している可能性が高いため、再度のフローテーブルの更新処理も失敗せずに実行され得る。
【0077】
以降、新たに設定されたフローエントリ(アクション情報145)に従って、受信パケットの転送処理を行う(ステップS205)。その後、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。
【0078】
一方、受信パケット内の経路決定者情報18と一致するコントローラID17がフローテーブル25に設定されている場合、当該コントローラID17に対応するアクション情報145に従って、受信パケットの転送処理が行われる(ステップS202Yes、S205)。その後、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。この際、PFS2は、経路決定者情報18と一致しないコントローラID17が付されたアクション情報145をフローテーブル25から削除する、あるいは、経路決定者識別子231をアクション情報145に対応付けて、以後使用するアクション情報145を特定する。
【0079】
ただし、受信パケットに付加されている経路決定者情報18と、フローテーブル25のエントリに追加されているコントローラID17が異なることはごく稀であり、何らかの障害が発生した場合に限られる。
【0080】
ステップS201において、 受信パケットに適合するフローエントリ(ルール144+アクション情報145)に対応する回数情報232が“0”以外を示す場合、当該フローエントリの適用が2回目以降であると判定される(ステップS201No)。すなわち、当該PFS2は、既にファーストパケット105を含む経路決定者情報付パケット90を受信しており、使用するフローエントリ(アクション情報145)を決定している。この場合、PFS2は、受信パケットに適合するルール144に対応するアクション情報145に従って、受信パケットの転送処理を行う(ステップS205)。例えば、経路決定者付パケット90に応じたアクション情報145の削除により、使用するアクション情報145のみがフローテーブルに記録されている場合、2回目以降の受信パケットは、当該パケットに対して一意に適合するフローエントリ(ルール144+アクション情報145)に従って処理(例えば転送処理)される。あるいは、経路決定者付パケット90に応じた経路決定者識別子231の付与により、使用するアクション情報145が特定されている場合、2回目以降の受信パケットは、当該パケットに適合するルール144に対応し、経路決定者識別子231が付されたアクション情報145に従って処理される。又、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。
【0081】
以上のように、要求元PFSにおいてパケット内に経路決定者情報18を付加し、通信経路上のPFS2において、経路決定者情報18とフローテーブル25内のコントローラIDとを比較することで、経路の整合性を判定することができる。これにより、何らかの障害により、通信経路上のPFS2にパケットに適合するフローエントリが設定されていない場合でも、再度フローエントリを設定することが可能となる。
【0082】
(耐障害性)
図13を参照して、本発明による効果について説明する。図13に示すように、ホスト3−1からホスト3−2に対してパケットデータを送信する場合、要求元PFS2−1からのファーストパケットの通知に応じて、3つのPFC1−1〜1−3によって3つの通信経路40、50、60が計算される。尚、通信経路40は、PFS2−1、2−2、2−3、2−5を経由する経路であり、通信経路50は、PFS2−1、2−4、2−5を経由する経路であり、通信経路60は、PFS2−1、2−6、2−5を経由する経路である。
【0083】
PFC1−1は、通信経路40上のPFS2−5から、PFS2−3、PFS2−2、要求元PFS2−1の順にフローテーブルを更新し、PFC1−2は、通信経路50上のPFS2−5から、PFS2−4、要求元PFS2−1の順にフローテーブルを更新し、PFC1−3は、通信経路60上のPFS2−5から、PFS2−6、要求元PFS2−1の順にフローテーブルを更新する。これらの更新処理は、上述のように独立的に行われる。要求元PFS2−1は、先に自身のフローテーブル25を更新したPFC1を経路決定者に指定し、経路決定者によって構築された通信経路を利用してホスト3−1〜ホスト3−2間の通信を行う。
【0084】
ここで、PFS2に設定されるフローエントリはPFC1を特定するためのコントローラID17“1011”が対応付けられているため、経路決定者をコントローラIDで指定することで、PFS2やPFC1は使用するフローエントリ(すなわち通信経路)を特定することができる。例えば、要求元PFS2−1において経路者決定者が指定するまでの間に、PFS2−5に対してPFC1−1〜1−3によるフローテーブルの更新指示がなされた場合、PFS2−5には、コントローラID17が“1011”、“1012、“1013”が付与された3つのアクション情報145が同一のルール144に対応付けられて設定される。このような場合でも、要求元PFS2−1による経路決定者情報付パケット90が通知されることで、PFS2−5は、コントローラID17“1011”に対応するフローエントリのみを残し、他のエントリを破棄することができる。このように、PFS2やPFC1に対する経路決定者の通知は、要求元PFS2−1が一元的に行うため、PFC1は、他のPFC1と通信することなく独立的なPFS2へのフローテーブルの更新処理のみで、矛盾なく通信経路を構築することができる。
【0085】
又、本発明では、経路決定者(使用するフローエントリ)を指定するPFS2を、フローエントリを設定する最後のPFS2としている。このため、要求元PFS2−1にフローエントリが設定された時点で、通信経路上の全てのPFS2にフローエントリが設定されていることとなる。
【0086】
以上のように、本発明によれば、複数のPFC1によって、パケットに対する処理を規定したフローエントリを設定し、先に構築された通信経路を利用してパケット転送を行っている。このため、複数のPFC1のうちいずれかに障害が発生しても他のPFC1によってフローエントリの設定(通信経路の構築)が可能となり耐障害性が向上する。又、構築された通信経路は、1つのPFC1によって設定されたアクション情報145に従うため、オープンフロー技術で提案されたフローの一元制御及び管理が可能となる。
【0087】
又、複数のPFC1のそれぞれは、独自にフローテーブルの更新指示を発行するため、コントローラ間で同期を取る必要がない。このため、コントロール間で同期を取るための待ち時間を必要としないため、経路構築までの時間を短縮することも可能となる。すなわち、本発明によれば、オープンフロー技術を利用したコンピュータシステムにおいて通信経路構築の時間を増加させることなく耐障害性を上げることが可能となる。
【0088】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。例えば、フローテーブルの更新制御は、通信経路の構築(転送先の設定)だけでなく、フローの転送停止や終了(破棄)といった他の制御に対して行われても良い。これにより、複数のコントローラからの指示を矛盾することなく実行することが可能となり、耐障害性が更に向上する。
【0089】
又、上述の実施の形態では、要求元PFS2によって指定された経路決定者が、ファーストパケットを利用して他のPFS2に通知されたが、これに限らず、PFC1−1〜1−mを利用して他のPFS2に通知されても良い。例えば、経路決定者としてPFC1−1が指定された場合、PFC1−1は、要求元PFS2からの経路決定者の通知に応じて、自身が設定したPFS2に経路決定者情報18を通知する。PFS2は、経路決定者情報18に一致するコントローラID17が付加されたアクション情報145のみを残し他を削除する。これにより、要求元PFS2から転送されたパケットは、PFC1−1によって構築された通信経路を介して宛先ホストに送信される。ただし、この場合、通信経路上のPFS2に対するフローエントリの削除や、使用するフローエントリの設定が完了するまで、ファーストパケットを転送できないため、上述の実施の形態に比べてパケット転送までの時間が長大化してしまう。
【0090】
又、本実施の形態では、最初に要求元PFS2にフローエントリを設定したPFC1を経路決定者として指定したが、これに限らず、2番目や3番目に設定したPFC1を経路決定者として指定しても構わない。又、算出した通信経路上の全てのPFS2にフローエントリを設定していれば、所定の条件を満たすPFC1を優先的に経路決定者として指定しても構わない。
【0091】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限らない。
【0092】
(付記1)
それぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示する複数のコントローラと、
前記複数のコントローラの1つを経路決定者として指定し、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチと
を具備する
コンピュータシステム。
【0093】
(付記2)
付記1に記載のコンピュータシステムにおいて、
前記通信経路上の全てのスイッチにフローエントリを設定したコントローラが、前記経路決定者として設定される
コンピュータシステム。
【0094】
(付記3)
付記1又は2に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定し、
前記複数のスイッチは、前記コントローラIDによって、前記経路決定者を特定する
コンピュータシステム。
【0095】
(付記4)
付記3に記載のコンピュータシステムにおいて、
前記複数のスイッチは、
前記経路決定者を指定し、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送する第1スイッチと、
前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行う第2スイッチと
を備える
コンピュータシステム。
【0096】
(付記5)
付記4に記載のコンピュータシステムにおいて、
前記第2スイッチは、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求する
コンピュータシステム。
【0097】
(付記6)
付記4又は5に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記第1スイッチは、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定する
コンピュータシステム。
【0098】
(付記7)
付記4から6のいずれか1項に記載のコンピュータシステムにおいて、
前記第1スイッチは、受信パケットに適合するフローエントリがない場合、フローエントリの設定を前記複数のコントローラに要求し、
前記複数のコントローラのそれぞれは、前記要求に応じて通信経路の算出及びフローエントリの設定を行う
コンピュータシステム。
【0099】
(付記8)
付記1から7のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【0100】
(付記9)
付記1から7のいずれか1項に記載のコンピュータシステムで利用されるスイッチ。
【0101】
(付記10)
複数のコントローラのそれぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示するステップと、
前記複数のコントローラの1つを経路決定者として指定するステップと、
複数のスイッチが、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと
を具備する
通信方法。
【0102】
(付記11)
付記10に記載の通信方法において、
前記経路設定者として指定するステップでは、通信経路上の全てのスイッチにフローエントリを設定したコントローラが、前記経路決定者として設定される
通信方法。
【0103】
(付記12)
付記10又は11に記載の通信方法において、
前記複数のコントローラのそれぞれが、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定するステップと、
前記複数のスイッチが、前記コントローラIDによって、前記経路決定者を特定するステップと
を更に具備する
通信方法。
【0104】
(付記13)
付記12に記載の通信方法において、
前記経路決定者として指定するステップは、
第1スイッチが、前記経路決定者を指定するステップと、
前記第1スイッチが、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送するステップと
を備え、
前記中継処理を行うステップは、第2スイッチが、前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行うステップを備える
通信方法。
【0105】
(付記14)
付記13に記載の通信方法において、
前記第2スイッチが、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求するステップを更に具備する
通信方法。
【0106】
(付記15)
付記13又は14に記載の通信方法において、
前記複数のコントローラのそれぞれが、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記経路決定者として指定するステップは、前記第1スイッチが、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定するステップを備える
通信方法。
【0107】
(付記16)
付記13から15のいずれか1項に記載の通信方法において、
前記第1スイッチが、受信パケットに適合するフローエントリがない場合、フローエントリの設定を前記複数のコントローラに要求するステップを更に具備し、
前記複数のコントローラのそれぞれは、前記要求に応じて通信経路の算出及びフローエントリの設定を行う
通信方法。
【符号の説明】
【0108】
1、1−1〜1−m:プログラマブルフローコントローラ(PFC)
2、2−1〜2−n:複数のプログラマブルスイッチ(PFS)
3、3−1〜3−i:ホストコンピュータ(ホスト)
11:スイッチ制御部
12:フロー管理部
13:フロー生成部
14:フローテーブル
15:トポロジ情報
16:通信経路情報
17:コントローラID
18:決定者情報
20:スイッチ群
21:転送処理部
22:フロー設定部
23:経路決定者設定部
24:パケット修正部
25:フローテーブル
30:ホスト群
40:通信経路
50:通信経路
60:通信経路
90:経路決定者情報付パケット
105:ファーストパケット
141:フロー識別子
142:対象装置
143:経路情報
144:ルール
145:アクション情報
146:設定情報
147:経路決定者識別子
151:装置識別子
152:ポート数
153:ポート接続先情報
161:端点情報
162:通過スイッチ情報
163:付随情報
231:経路決定者識別子
232:回数情報
【技術分野】
【0001】
本発明は、コンピュータシステム、コントローラ、スイッチ及び通信方法に関し、特に、オープンフロー(プログラマブルフロー)技術を利用したコンピュータシステムの冗長化技術、及び通信方法に関する。
【背景技術】
【0002】
従来、パケットの送信元から送信先への経路の決定とパケット転送処理は、経路上の複数のスイッチが行っていた。近年、データセンターといった大規模ネットワークにおいては、故障による機器の停止や規模拡大のための機器の新規追加により、ネットワーク構成の変化が常に発生している。このため、ネットワークの構成の変化に即応し適切な経路を決定するという柔軟性が必要となってきた。しかし、スイッチにおける経路決定処理のプログラムは、外部から変更することができないため、ネットワーク全体を一元的に制御及び管理することはできなかった。
【0003】
一方、コンピュータネットワークにおいて、各スイッチの転送動作等を外部のコントローラによって一元的に制御する技術(オープンフロー)が、OpenFlow Consortiumによって提案されている(非特許文献1参照)。この技術に対応したネットワークスイッチ(以下、プログラマブルフロースイッチ(PFS)と称す)は、プロトコル種別やポート番号等の詳細な情報をフローテーブルに保持し、フローの制御と統計情報の採取を行うことができる。
【0004】
図1を参照して、オープンフローを利用したコンピュータシステムの構成及び動作を説明する。図1を参照して、本発明の関連技術によるコンピュータシステムは、プログラマブルフローコントローラ100(以下、PFC100と称す)、複数のプログラマブルスイッチ102−1〜102−n(以下、PFS102−1〜102−nと称す)を有するスイッチ群200、複数のホストコンピュータ103−1〜103−i(以下、ホスト103−1〜103−iと称す)を有するホスト群300を具備する。ただし、n、iは2以上の自然数である。以下、PFS102−1〜102−nを区別せずに総称する場合はPFS102と称し、ホスト103−1〜103−iを区別せずに総称する場合はホスト103と称して説明する。
【0005】
PFC100は、ホスト103間の通信経路の設定や、経路上におけるPFS102に対する転送動作(中継動作)等の設定を行う。この際、PFC100は、PFS102が保持するフローテーブルに、フロー(パケットデータ)を特定するルールと、当該フローに対する動作を規定するアクションとを対応付けたフローエントリを設定する。通信経路上のPFS102は、PFC100によって設定されたフローエントリに従って受信パケットデータの転送先を決定し、転送処理を行う。これにより、ホスト103は、PFC100によって設定された通信経路を利用して他のホスト103との間でパケットデータの送受信が可能となる。すなわち、オープンフローを利用したコンピュータシステムでは、通信経路を設定するPFC100と、転送処理を行うPFS102とを分離され、システム全体の通信を一元的に制御及び管理することが可能となる。
【0006】
図1を参照して、ホスト103−1からホスト103−iへパケット送信を行う場合、PFS102−1はホスト103−1から受け取ったパケット内にある送信先情報(ヘッダ情報)を参照し、PFS102−1内部で保持しているフローテーブルから当該ヘッダ情報に適合するエントリを探す。フローテーブルに設定されるエントリの内容については、例えば非特許文献1で規定されている。
【0007】
PFS102−1は、受信パケットデータについてのエントリがフローテーブルに記載されていない場合、当該パケットデータ(以下、ファーストパケットと称す)、又はファーストパケットのヘッダ情報をPFC101に転送する。PFS102−1からファーストパケットを受け取ったPFC101はパケット内に含まれている送信元ホストや送信先ホストという情報を元に経路400を決定する。
【0008】
PFC101は、経路400上の全てのPFS102に対して、パケットの転送先を規定するフローエントリの設定を指示する(フローテーブル更新指示を発行)。経路400上のPFS102は、フローテーブル更新指示に応じて、自身で管理しているフローテーブルを更新する。この後PFS102は、更新したフローテーブルに従い、パケットの転送を開始することで、PFC101が決定した経路400を経由して、宛先のホスト103−iへパケットが到達するようになる。
【0009】
一方、ネットワークにおける転送経路を1つの装置で集中制御するシステムが、例えば特開2009−153184(特許文献1参照)や特表2009−529811に記載されている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2009−153184
【特許文献2】特表2009−529811
【非特許文献】
【0011】
【非特許文献1】OpenFlow Switch Specification Version 0.9.0 (Wire Protocol 0x98) July 20, 2009
【発明の概要】
【発明が解決しようとする課題】
【0012】
PFC100で何らかの障害が発生した場合、PFC100は、経路上のPFS102に対するフローテーブルの更新を指示できない。この場合、ファーストパケットを受信したPFS102は自ら設定したタイムアウト時間までPFC101からのフローテーブルの更新指示を待ち続けてしまい、その間ホスト103間のパケット通信を行うことができない。又、PFC100が障害から復旧しない限り、ファーストパケットに対応する転送制御を行うことができない。
【0013】
このため、耐障害性の観点からPFC100を複数用意することが考えられるが、複数のPFCを利用した通信経路の構築(各PFSに対するフローテーブルの更新)の方法は、未だ確立されていない。このため、オープンフロー技術を利用したコンピュータシステムでは、PFCに発生した障害に対する耐性が低いという問題がある。
【0014】
従って、本発明による目的は、オープンフロー技術を利用したコンピュータシステムの耐障害性を向上させることにある。
【0015】
又、本発明による他の目的は、プログラマブルフローコントローラに障害が発生した場合でも、ファーストパケットに応じた通信経路の構築とパケットデータの転送処理を早期に実行することにある。
【課題を解決するための手段】
【0016】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【0017】
本発明によるコンピュータシステムは、それぞれが、通信経路を算出し、通信経路上のスイッチ(2)に対して、フローエントリの設定を指示する複数のコントローラ(1)と、複数のコントローラ(1)の1つを経路決定者として指定し、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチ(2)とを具備する。
【0018】
本発明による通信システムは、複数のコントローラ(1)のそれぞれが、通信経路を算出し、通信経路上のスイッチ(2)に対して、フローエントリの設定を指示するステップと、複数のコントローラ(1)の1つを経路決定者として指定するステップと、複数のスイッチ(2)が、経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップとを具備する。
【発明の効果】
【0019】
本発明によれば、オープンフロー技術を利用したコンピュータシステムの耐障害性を向上させることができる。
【0020】
又、プログラマブルフローコントローラに障害が発生した場合でも、ファーストパケットに応じた通信経路の構築とパケットデータの転送処理を早期に実行することができる。
【図面の簡単な説明】
【0021】
【図1】図1は、従来技術によるコンピュータシステムの構成の一例を示す図である。
【図2】図2は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。
【図3】図3は、本発明によるプログラマブルフローコントローラの実施の形態における構成を示す図である。
【図4】図4は、本発明によるプログラマブルフローコントローラが保持するフローテーブルの一例を示す図である。
【図5】図5は、本発明によるプログラマブルフローコントローラが保持するトポロジ情報の一例を示す図である。
【図6】図6は、本発明によるプログラマブルフローコントローラが保持する通信経路情報の一例を示す図である。
【図7】図7は、本発明によるプログラマブルフロースイッチの実施の形態における構成を示す図である。
【図8】図8は、本発明によるプログラマブルフロースイッチが保持するフローテーブルの一例を示す図である。
【図9】図9は、本発明に係るプログラマブルフロー制御を説明するための図である。
【図10】図10は、本発明によるプログラマブルフロースイッチにおいて変更されたパケットデータの構造を示す図である。
【図11A】図11Aは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。
【図11B】図11Bは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。
【図12】図12は、本発明によるプログラマブルフロースイッチにおけるパケット転送動作の一例を示すフロー図である。
【図13】図13は、本発明による複数のプログラマブルフローコントローラによって算出された通信経路の一例を示す図である。
【発明を実施するための形態】
【0022】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【0023】
(コンピュータシステムの構成)
図2を参照して、本発明によるコンピュータシステムの構成を説明する。図2は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。本発明によるコンピュータシステムは、オープンフローを利用して通信経路の構築及びパケットデータの転送制御を行う。図2を参照して、本発明によるコンピュータシステムは、プログラマブルフローコントローラ1−1〜1−m(以下、PFC1−1〜1−mと称す)、複数のプログラマブルスイッチ2−1〜2−n(以下、PFS2−1〜2−nと称す)を有するスイッチ群20、複数のホストコンピュータ3−1〜3−i(以下、ホスト3−1〜3−iと称す)を有するホスト群30を具備する。ただし、m、n、iは2以上の自然数である。又、PFC1−1〜1−mを区別せずに総称する場合はPFC1と称し、PFS2−1〜2−nを区別せずに総称する場合はPFS2と称し、ホスト3−1〜3−iを区別せずに総称する場合はホスト3と称して説明する。
【0024】
ホスト3は、図示しないCPU、主記憶装置、及び外部記憶装置を備えるコンピュータ装置であり、外部記憶装置に格納されたプログラムを実行することで、他のホスト3との間で通信を行う。ホスト3間の通信は、スイッチ群20を介して行われる。ホスト3は、実行するプログラムに応じて、Webサーバ、ファイルサーバ、アプリケーションサーバ、あるいはクライアント端末等に例示される機能を実現する。例えば、ホスト3がWebサーバとして機能する場合、他のホスト3(例示:クライアント端末)の要求に従い、記憶装置(図示なし)内のHTML文書や画像データを他のホスト3(例示:クライアント端末)に転送する。
【0025】
PFC1は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路パケット転送処理を制御するスイッチ制御部11を備える。オープンフロー技術とは、コントローラ(ここではPFC1)が、ルーティングポリシー(フローエントリ:フロー+アクション)に従い、マルチレイヤ及びフロー単位の経路情報をPFS2に設定し、経路制御やノード制御を行う技術を示す(詳細は、非特許文献1を参照)。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるPFS2は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、END2ENDのフローとして通信を取り扱う。
【0026】
PFC1は、PFS2が保持するフローテーブル25にフローエントリ(ルール+アクション)を設定することで当該PFS2の動作(例えばパケットデータの中継動作や廃棄)を制御する。本発明によるPFC1は、PFC1自身に付与(又は予め設定された)識別子(以下、コントローラID17と称す)を加えたフローエントリを、経路上のPFS2に設定する。
【0027】
図3を参照して、PFC1の構成の詳細を説明する。図3は、本発明によるPFC1の構成を示す図である。PFC1は、CPU及び記憶装置を備えるコンピュータによって実現されることが好適である。PFC1では、図示しないCPUが記憶装置に格納されたプログラムを実行することで、図3に示すスイッチ制御部11、フロー管理部12、フロー生成部13の各機能が実現される。又、PFC1は、それぞれが図示しない記憶装置に格納されたフローテーブル14、トポロジ情報15、通信経路情報16、及びコントローラID17を備える。尚、コントローラID17は、予めPFC1毎にユニークに設定されていても良いし、PFS2からの通知されたコントローラID17が設定されても良い。
【0028】
スイッチ制御部11は、フローテーブル14に従ってPFS2毎にフローエントリ(ルール+アクション)の設定又は削除を行う。この際、スイッチ制御部11は、フローエントリ(ルール+アクション情報)にコントローラID17を対応付けてPFS2のフローテーブル25に設定する。又、PFS2に対するフローテーブルの更新(フローエントリの設定又は削除)は、通信経路上においてフローの宛先装置側から送信元装置に向かって順に行われる。PFS2は、設定された少なくとも1つのフローエントリ中から選択したフローエントリを参照し、受信パケットのヘッダ情報に応じたルールに対応するアクション(例えばパケットデータの中継や破棄)を実行する。ルール、アクションの詳細は後述する。
【0029】
図4は、PFC1が保持するフローテーブル14の構成の一例を示す図である。図4を参照して、フローテーブル14には、フローエントリを特定するためのフロー識別子141、当該フローエントリの設定対象(PFS2)を識別する識別子(対象装置142)、経路情報143、ルール144、アクション情報145、設定情報146、経路決定者識別子147が対応付けられて設定される。フローテーブル14には、PFC1の制御対象となる全てのPFS2に対して生成されたフローエントリ(ルール144+アクション情報145)が設定される。又、フローテーブル14には、フロー毎のQoSや暗号化に関する情報など、通信の扱い方が定義されても構わない。
【0030】
ルール144には、例えば、TCP/IPのパケットデータにおけるヘッダ情報に含まれる、OSI(Open Systems Interconnection)参照モデルのレイヤ1からレイヤ4のアドレスや識別子の組み合わせが規定される。例えば、図9に示すレイヤ1の物理ポート、レイヤ2のMACアドレス、レイヤ3のIPアドレス、レイヤ4のポート番号、VLANタグ(VLAN id)のそれぞれの組み合わせがルール144として設定される。尚、VLANタグには、優先順位(VLAN Priority)が付与されていても良い。
【0031】
ここで、ルール144に設定されるポート番号等の識別子やアドレス等は、所定の範囲で設定されても構わない。又、宛先や送信元のアドレス等を区別してルール144として設定されルことが好ましい。例えば、MAC宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルール144として設定される。更に、データ転送プロトコルを特定する識別子をルール144として設定してもよい。
【0032】
アクション情報145には、例えばTCP/IPのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクション情報145には、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【0033】
経路情報143は、フローエントリ(ルール144+アクション情報145)を適用する経路を特定する情報である。これは、後述する通信経路情報16に対応付けられた識別子である。
【0034】
設定情報146は、フローエントリ(ルール144+アクション情報145)が現在、通信経路上のPFS2に設定されているか否かを示す情報(「設定済み」又は「未設定」)を含む。設定情報146は、対象装置142や経路情報143に対応付けられているため、通信経路にフローエントリが設定されているか否かを確認できるとともに、通信経路上のPFS2毎にフローエントリが設定されているか否かを確認することができる。
【0035】
本発明によるフローテーブル14には、フローエントリ毎に経路決定者識別子147が設定される。本発明によるPFS2は、自身に設定された少なくとも1つのフローエントリの中から、パケット転送に利用するフローエントリを選択し、当該フローエントリを設定したPFC1を経路決定者に指定する。PFC1は、経路決定者識別子147として、経路決定者に指定されたか否かを示す情報をフローエントリ毎に記録する。例えば、経路決定者識別子147として、経路決定者として指定されたPFC1(自身)のコントローラID17が記録される。この場合、コントローラID17が対応付けられていないフローエントリ(ルール144+アクション145)は使用されず、他のPFC1が設定したフローエントリが使用されたものと確認できる。あるいは、PFS2から経路決定者として指定された場合、経路決定者識別子147として初期値(例えば“0”)と異なる値(例えば“1”)を設定してもよい。この場合、経路決定者として指定されない場合は、経路決定者識別子147が初期値を維持する。以上のように、本発明によるPFC1は、経路決定者識別子147を確認することで、自身が経路決定者か否かをフロー毎に確認できる。
【0036】
フロー管理部12は、フロー生成部13によって生成されたフロー(ルール144+アクション情報145)にフロー識別子141をつけて記憶装置に記録する。この際、フローエントリを適用する通信経路の識別子(経路情報143)やフローエントリを適用するPFS2の識別子(対象装置142)、及び経路決定者識別子147が、フローエントリ(ルール144+アクション情報145)に付されて記録される。ここで、フロー管理部12は、PFS2から経路決定者に指定された場合、自身が経路決定者に指定されたことを示す情報を経路決定者識別子147に設定する。
【0037】
又、フロー管理部12は、フローテーブル14を参照して、ファーストパケットのヘッダ情報に対応するフローエントリ(ルール144+アクション情報145)を抽出し、スイッチ制御部11に通知する。スイッチ制御部11は、通知されたフローエントリ(ルール144+アクション情報145)にコントローラIDを付加し、当該フローエントリに対応付けられた対象装置142(PFS2)に設定する。
【0038】
フロー生成部13は、PFS2から通知されたファーストパケットのヘッダ情報から通信経路を算出し、当該通信経路上のPFS2に設定するフローエントリ(ルール144+アクション情報145)を生成する。詳細には、フロー生成部13は、ファーストパケットのヘッダ情報から、送信元のホスト3と宛先のホスト3を特定し、トポロジ情報15を用いて通信経路を算出し、算出結果を通信経路情報16として記憶装置に記録する。ここでは、通信経路の端点となるホスト3と、通信経路上のPFS2及びそれぞれの接続関係が通信経路情報16として設定される。又、フロー生成部13は、通信経路情報16に基づいて通信経路上のPFS2に設定するフローエントリ(ルール144+アクション情報145)を設定する。
【0039】
図5は、本発明によるPFC1が保持するトポロジ情報15の一例を示す図である。トポロジ情報15は、PFS2やホスト3等の接続状況に関する情報を含む。具体的には、トポロジ情報15として、PFS2やホスト3を特定する装置識別子151に、当該装置のポート数152やポート接続先情報153が対応付けられて記憶装置に記録される。ポート接続先情報153は、接続相手を特定する接続種別(スイッチ/ノード/外部ネットワーク)や接続先を特定する情報(PFS2の場合はスイッチID、ホストの場合はMACアドレス、外部ネットワーク(例示:インターネット)の場合は外部ネットワークID)が含まれる。
【0040】
図6は、本発明によるPFC1が保持する通信経路情報の一例を示す図である。通信経路情報16は、通信経路を特定するための情報である。詳細には、通信経路情報16として、ホスト3や外部ネットワークインタフェース(図示なし)を端点として指定する端点情報161と、通過するPFS2とポートの対群を指定する通過スイッチ情報162と、付随情報163とが対応付けられて記憶装置に記録される。例えば、通信経路がホスト3間を接続する経路である場合、各ホスト3のMACアドレスが端点情報161として記録される。通過スイッチ情報162は、端点情報161で示される端点間の通信経路上に設けられるPFS2の識別子を含む。又、通過スイッチ情報162は、当該PFS2に設定されるフローエントリ(ルール144+アクション情報145)と当該PFS2とを対応づけるための情報を含んでも良い。付随情報163は、端点が変更された後の経路上のPFS2(通過スイッチ)に関する情報を含む。
【0041】
以上のような構成により、本発明によるPFC1は、PFS2からのファーストパケットの受信通知(フローエントリの設定要求)に応じて、当該パケットを転送させるためのフローエントリを生成するとともに、生成したフローエントリを、算出した通信経路上のPFS2に設定する。この際、設定するフローエントリには、PFC1に固有のコントローラID17が対応付けられている。
【0042】
図7は、本発明によるPFS2の実施の形態における構成を示す図である。PFS2は、PFC1によって設定(更新)されたフローテーブル25に従って受信パケットの処理方法(アクション)を決定する。PFS2は、転送処理部21、フロー設定部22、経路決定者設定部23、パケット修正部24を備える。転送処理部21、フロー設定部22、経路決定者設定部23、パケット修正部24は、ハードウェアで構成されても、CPUによって実行されるソフトウェアで実現してもどちらでも良い。
【0043】
PFS2の記憶装置には、図8に示すようなフローテーブル25が設定される。フローテーブル25は、PFC1によるフローエントリ設定指示(フローテーブル更新指示)に応じて、PFC1から送信されたフローエントリ(ルール144+アクション情報145)及びコントローラID17が対応付けられて設定される。コントローラID17により、フローテーブル25に設定されたフローエントリ(アクション情報145)がどのPFC1によって設定されたかを確認することができる。
【0044】
本発明では、同じルール144に対して複数のアクション情報145が設定され得る。このため、受信パケットに対する処理(アクション)を一義的に決めるための経路決定者識別子231が、処理に使用するフローエントリのルール144に対応付けられて設定される。本発明では、PFS2に設定されるフローエントリには設定元のコントローラID17が付されているため、コントローラID17を利用して、受信パケットに対するアクション(処理内容)を特定することが好ましい。従って、経路決定者識別子231は、使用するアクション情報145を設定したコントローラID17を特定する情報であることが好ましい。経路決定者識別子231によって、使用するアクション情報145のみならず、アクション情報145を設定したPFC1を特定することができる。
【0045】
又、経路決定者識別子231が付与されたフローエントリ(ルール144+アクション情報145)の使用回数が記録される回数情報232が、当該経路決定者識別子231又はルール144に対応付けられて設定されることが好ましい。回数情報232により、フローエントリの使用回数、すなわち、フローテーブル25に設定されたルール144に適合するパケットの受信回数や処理回数を確認することができる。
【0046】
転送処理部21は、フローテーブル25に設定されたフローエントリ(ルール144+アクション情報145)に従った転送先に受信パケットを転送する。本発明では、受信パケットのヘッダ情報に適合するルール144に対して複数のアクション情報145がフローテーブル25に設定されている場合がある。このため、本発明による転送処理部21は、経路決定者識別子231によって特定されたアクション情報145に従って転送処理を行う。
【0047】
転送処理部21は、受信パケットに対する処理(例えば転送処理)を実行すると、処理回数をカウントアップし、受信パケットに対応するフローエントリの回数情報232を更新する。
【0048】
フロー設定部22は、PFC1からのフローテーブル更新指示に応じて、PFC1から送信されるフローエントリ(ルール144+アクション情報145)をフローテーブル25に設定する。詳細には、フロー設定部22は、受信パケットに適合したフローエントリがフローテーブル25に設定されていない場合、すなわち、ファーストパケットを受信した場合、当該ファーストパケットをPFC1−1〜1−mに通知するとともに、フローテーブルの更新を要求する。又、PFC1−1〜1−mからのフローテーブルの更新指示を受けたフロー設定部22は、PFC1−1〜1−mからから送信されたフローエントリ(ルール144+アクション情報145)及びコントローラID17を自身のフローテーブル25に設定する。
【0049】
PFS2には、PFC1−1〜1−mのそれぞれからフローエントリが設定されため、PFS2のフローテーブル25には、ファーストパケットに適合するフローエントリが複数設定される。すなわち、同じルール144に対して複数の異なるアクション情報145が設定されることとなる。本発明では、コントローラID17により、設定されたフローエントリ(アクション情報145)がどのPFC1によって設定されたかを確認することができる。
【0050】
本発明による経路決定者設定部23は、ファーストパケットを受信した場合と、それ以外のパケットデータ(フローテーブル25に設定されているフローエントリに適合するパケットデータ)を受信した場合とで、その動作が異なる。すなわち、PFS2は、ファーストパケットを受信してからファーストパケットを次のノード(例えばPFS2)に転送するまでの間は、経路決定者選択モードとして動作し、その他の期間は通常モードとして動作する。
【0051】
先ず、経路決定者選択モードにおける経路決定者設定部23の動作を説明する。経路決定者設定部23は、ファーストパケットを通知(フローテーブル更新要求)した複数のPFC1−1〜1−mのうち、最初にフローテーブルの更新を自身に指示したPFC1を、経路決定者として指定する。この際、経路決定者設定部23は、経路決定者として指定したPFC1のコントローラID17に経路決定者識別子231を設定する。これにより、ルール144に適合するパケットデータに対するアクション情報145(処理方法)を経路決定者識別子231によって特定することができる。経路決定者設定部23は、経路決定者識別子231を設定したコントローラID17のPFC1に対し、経路決定者として指定する情報、及び経路決定者を設定したルール144を送信する。又、経路決定者の指定後、フロー設定部22は、PFC1からのフローテーブルの更新指示を無視(拒否)することが好ましい。
【0052】
次に、通常モードにおける経路決定者設定部23の動作を説明する。経路決定者設定部23は、受信パケットに含まれる経理決定者情報18と一致するコントローラID17に経路決定者識別子231を設定する。詳細には、経路決定者設定部23は、フローテーブル25に設定されたルール144に適合するパケットを受信した場合、当該パケットの受信回数(転送回数)を回数情報232で確認する。この際、ルール144に適合するパケットの受信が初回である場合、経路決定者設定部23は、受信パケットから抽出した経路決定者情報18に一致するコントローラIDが付加されたフローエントリ(アクション情報145)に、経路決定者識別子231を設定する。又、経路決定者の指定後(経路決定者識別子231の設定後)、フロー設定部22は、PFC1によって設定された他のフローエントリを削除することが好ましい。一方、受信回数が2回目以降である場合、経路決定者設定部23は、自身のフローテーブル25を参照し、経路決定者識別子231が付されたフローエントリ(アクション情報145)に従って、受信パケットの処理(例えば転送処理)を行う。
【0053】
パケット修正部24は、ファーストパケットを受信したPFS2において動作し、図10に示すように、ファーストパケット105に経路決定者情報18を追加して新たなパケットデータ90(以下、経路決定者情報付パケット90と称す)を作成する。転送処理部21は、ファーストパケットを送信する際、パケット修正部24によって生成された経路決定者情報付パケット90を転送する。
【0054】
転送処理部21によるファーストパケットの転送処理は、新しくフローエントリ(ルール144+アクション145)が設定され、経路決定者識別子231が設定されたことをトリガとして実施されることが好ましい。この際、転送処理部21は、パケット修正部24によって生成された経路決定者付パケット90を転送する。
【0055】
以上のように、本発明によるコンピュータシステムでは、複数のPFC3−1〜3−iによってフロー(パケット)を転送するための通信経路が構築されるため、PFC3−1〜3−iのいずれかに障害が発生してもパケット転送が可能となる。又、フローエントリ(ルール144+アクション情報145)には、PFC3毎に固有のコントローラID17が付与されている。このため、同じルール144に対して複数のアクション情報145が設定されていても、コントローラID17を使用決定者として指定することで、使用するアクション情報145を特定することができる。すなわち、複数のPFC3によってフローエントリが設定されてもPFS2が使用するフローエントリは常に1つとなるため、PFS2は、誤動作せずにパケットを転送することができる。
【0056】
又、本発明では、フローテーブルの更新が、宛先ホスト側のPFS2から送信元ホスト側のPFS2(ファーストパケットを受信したPFS2)に向かって順に行われる。このため、ファーストパケットを通知したPFS2のフローテーブル25が更新された時点で、送信元のホスト3から宛先のホスト3までの通信経路上の全てのPFS2のフローテーブル25が更新されたことになる。すなわち、ファーストパケットを通知したPFS2のフローテーブル25を最初に更新したPFC1は、複数のPFC1のうち、通信経路上の全てのPFS2のフローテーブル25を更新した最初のPFC1となる。
【0057】
(通信経路の構築及びパケット転送動作)
図11A、Bから図13を参照して、本発明によるコンピュータシステムにおける通信経路の構築動作の詳細を説明する。以下では、ホスト3−1からホスト3−iに対してパケットデータを送信し、それぞれの間の通信経路を構築する動作について説明する。又、ここでは、PFS2−1がホスト3−1からファーストパケットを受信するものとする。更に、PFC1−1のコントローラID17として“1011”が設定され、PFC1−2のコントローラID17として“1012”が設定され、以下同様に、PFC1−mのコントローラID17として“101m”が設定されるものとする。
【0058】
図11A、Bは、本発明によるコンピュータシステムの実施の形態における通信経路の構築処理(フローテーブル更新処理)及びパケット転送処理の動作を示すシーケンス図である。図11を参照して、ホスト3−1からホスト3−i宛のパケットデータが送信され、ホスト3−1側で最も近いPFS2−1によって受信される(ステップS101)。
【0059】
PFS2−1はホスト3−1から受け取ったパケット内にあるヘッダ情報(送信先情報)を参照し、PFS2−1内部で保持しているフローテーブル25から該当エントリを探す(ステップS102)。ここで、ヘッダ情報に対応するフローエントリ(ルール144)がある場合、当該エントリで規定されたアクション情報145に基づいた転送先のノードに受信パケットを転送する(ステップS102No、S119)。
【0060】
一方、ヘッダ情報に対応するフローエントリがフローテーブル25にない場合、PFS2−1はファーストパケットを受信したと判定し、ファーストパケットの受信をPFC1−1〜1−mのそれぞれに通知する(ステップS102Yes、S103、S104)。この際、PFS2−1は、フローテーブルの更新要求とともにファーストパケット(又はヘッダ情報)をPFC1−1〜1−mに送信する。以下、PFS2−1を要求元PFS2−1と称して説明する。
【0061】
ファーストパケットの受信通知を受け付けたPFC1−1〜1−mのそれぞれは、当該フロー(パケット)に対する通信経路の算出、フローエントリの生成、及びPFS2に対するフローエントリの設定(フローテーブル25の更新)を行う(ステップS105〜S112)。詳細には、PFS2−1からファーストパケットを受け取ったPFC1−1は、パケット内に含まれている送信元ホストや宛先ホストのMACアドレスやIPアドレスなど、OpenFlowとして規定されている情報を元に経路を決定し、当該経路上のPFS2に設定するフローエントリを生成する(ステップS105)。
【0062】
PFC1−1は、生成したフローエントリにPFC1−1のコントローラID17“1011”を付与して、宛先ホスト側のPFS2−nから順にフローテーブル25の更新を行う(ステップS106〜S109)。詳細には、PFC1−1は、先ず、宛先のホスト3−iに最も近いPFS2−nに対してPFC1−1のコントローラID17“1011”を付与したフローエントリを送信する(ステップS106)。PFS2−nは、PFC1−1からのフローテーブルの更新指示に応じて、送信されたフローエントリを設定する(ステップS107)。同様に、PFC1−1は、算出した経路上を送信元側に方向に遡り、1つ前のPFS2に対して順にフローテーブルを更新し、最後に送信元のホスト3−1に最も近い要求元PFS2−1フローテーブルを更新する(ステップS108、S109)。
【0063】
フローエントリの更新処理は、他のPFC1−2〜1−mも同様に行う。例えば、PFC1−mは、生成したフローエントリにPFC1−mのコントローラID17“101m”を付与して、宛先ホスト側のPFS2−nから順にフローテーブル25の更新を行う(ステップS110〜S112)。又、PFC1−mは、算出した経路上を送信元側に方向に遡り、1つ前のPFS2に対して順にフローテーブルを更新し、最後に送信元のホスト3−1に最も近いPFS2−1フローテーブルを更新する。
【0064】
PFC1−1〜1−mによるPFS2に対するフローテーブルの更新処理は、それぞれ同期することなく独立的に実施される。このため、フローテーブルの更新順序は、図11A、Bに示す順とは限らない。又、ファーストパケットの受信通知を受け取るタイミングや経路計算開始時のタイミングの違いから、ネットワーク上の機器の状態が変化している可能性があり、必ずしも一致しているとは限らない。このため、PFC1−1〜1−mのそれぞれが算出した通信経路や、フローエントリの設定対象となるPFS2は異なる場合がある。
【0065】
PFC1−1〜1−mによるフローテーブルの更新処理により、PFS2には、1つのルールに対して複数(最大m個)のアクション情報145が設定される。ただし、それぞれのアクション情報145には、設定元のPFC1に対応するコントローラID17が対応付けられて記録される。
【0066】
ここで、PFC1−1〜1−mのいずれかによって要求元PFS2−1に対してフローエントリの設定指示(フローテーブルの更新指示)が出されると、要求元PFS2−1は、経路決定者を設定する(ステップS113)。ここでは、PFC1−1が最初に要求元PFS2−1のフローテーブル25を更新し、経路決定者として設定されるものとする。要求元PFS2−1は、PFC1−1によって設定されたフローエントリ(ルール144+アクション情報145)に経路決定者識別子231を対応付けて設定する。又、これ以降、要求元PFS2−1において、経路決定者として指定しないPFC1によるフローテーブルの更新指示は無視(拒否)される。
【0067】
要求元PFS2−1は、経路決定者識別子231を付与したフローエントリのコントローラID17に対応するPFC1を経路決定者に指定する(ステップS114)。例えば、PFC1−1を経路決定者に指定を指定する場合、PFC1−1に対して経路決定者を指定する情報(例えば経路決定者識別子231)とフローエントリを特定する情報(例えばルール144)を送信する。PFC1−1は、受信したルール144に対して、経路決定者を指定する情報(例えば経路決定者識別子231)を対応付けてフローテーブル14を更新する(ステップS115)。これにより、PFC1−1は、自身が設定し、制御及び管理可能なフロー及びその通信経路を確認することが可能となる。すなわち、PFC1−1は、自身の構築した通信経路を利用したフローの一元制御及び管理が可能となる。
【0068】
要求元PFS2−1は、ステップS114における経路決定者の指定の後、又はこれと同時的に他のPFC1(ここではPFC1−2〜1−m)に対して、経路決定者を通知する(ステップS116)。要求元PFS2−1は、PFC1−2〜1−mに対して経路決定者ではないことを示す情報とフローエントリを特定する情報(例えばルール144)を送信する。経路決定者として選択されなかったPFC1−2〜1−mは、自身のフローテーブル14から、PFS2−1から通知されたルール144を含むフローエントリを削除する(ステップS117)。又、経路決定者として選択されなかったPFC1−2〜1−mは、フローエントリの生成途中である場合、PFS2−1から通知されたルール144を含むフローエントリの生成を停止することが好ましい。このように、使用しないフローエントリの削除や、使用しないフローエントリの生成を中止することで、PFC1における記憶領域の無駄や処理負荷の増大を防止することができる。ただし、ステップS116及びS117の処理は省略してもよい。
【0069】
要求元PFS2−1は、経路決定者を設定(指定)すると、ファーストパケット105に経路決定者情報18を追加して経路決定者情報付パケット90を生成及び送信する(ステップS118)。この際、要求元PFS2−1は、経路決定者であるPFC1−1のコントローラID“1011”を経路決定者情報18としてファーストパケット105に追加して経路決定者情報付パケット90を生成する。そして、コントローラID“1011”が付されたアクション情報145に従った転送先に当該パケット90を転送する。
【0070】
経路決定者情報付パケット90を受信したPFS2は、経路決定者情報付パケット90のヘッダ情報に適合するルール144に対応する複数のアクション情報145から、経路決定者情報付パケット90内の経路決定者情報18と一致するコントローラID17が付加されたアクション情報145を抽出する。そしてPFS2は、抽出したアクション情報145に従った処理(ここでは転送処理)を行う。これにより、ファーストパケット105は、経路決定者(PFC1−1)によって設定された通信経路を経由して宛先のホスト3−iに送信される。
【0071】
経路決定者情報付パケット90を転送したPFS2は、経路決定者情報付パケット90に適合するルール144に対応するアクション情報145のうち、転送に利用しないアクション情報145を自身のフローテーブル25から削除することが好ましい。この場合、PFS2は、経路決定者によって設定されたフローエントリのみを使用できるため、要求元PFS2−1は、ファーストパケット以外のパケットに経路決定者情報18を含めて転送する必要はない。
【0072】
又、PFS2は、ルール144に適合するパケットの処理回数をカウントアップし、回数情報232を更新する。
【0073】
以降、PFS2は、受信パケットに適合するフローエントリに従ってパケットデータを転送する(ステップS119)。これにより、ホスト3−1からホスト3−iに対して送信されるパケットデータは、経路決定者(PFC1−1)によって各PFS2に設定されたアクション情報145に従って転送される。すなわち、ホスト3−1からホスト3−iに対して送信されるパケットデータは、経路決定者(PFC1−1)によって構築された通信経路を経由して宛先のホスト3−iに送信されることとなる。
【0074】
一方、何らかの障害により、経路決定者付パケット90内の経路決定者情報18に一致するコントローラID17が、PFS2のフローテーブル25に設定されていないことがある。このような問題を解決する転送処理方法を、図12を参照して説明する。図12は、本発明によるPFS2におけるパケット転送動作の一例を示すフロー図である。
【0075】
図12を参照して、PFS2は、受信パケットに適合するフローエントリ(ルール144+アクション情報145)の適用回数が、初回(1回目)か2日回目以降かを、回数情報232を参照して判定する(ステップS201)。受信パケットに適合するフローエントリ(ルール144+アクション情報145)に対応する回数情報232が“0”を示す場合、当該フローエントリの適用が初回であると判定される(ステップS201Yes)。すなわち、受信パケットがファーストパケット105を含む経路決定者情報付パケット90であると判定される。この場合、PFS2は、受信パケットに含まれる経路決定者情報18と、当該フローエントリに設定されたコントローラID17とを比較する(ステップS202)。
【0076】
ネットワークやPFS2に何らかの障害が発生した場合、受信パケット内の経路決定者情報18と一致するコントローラID17がフローテーブル25に設定されていないことがある。この場合、PFS2は、受信パケットに付加されている経路決定者情報18と同じコントローラID17が付与されたPFC1に対して、受信パケットを転送する(ステップS202No、S203)。PFC1は、PFS2から受け取ったパケットデータのヘッダ情報により送信元及び宛先のホスト3を特定し、通信経路の算出及びPFS2に設定するフローエントリ(ルール144+アクション情報145)の生成を行う。そして、PFC1は、通信経路上のPFS2に対してフローエントリの設定指示(フローテーブルの更新指示)を発行する(ステップS204)。受信パケットが通知されたPFC1は、ファーストパケットを通知したPFS2によって経路決定者に設定されている。この場合、障害が発生せず正常に動作している可能性が高いため、再度のフローテーブルの更新処理も失敗せずに実行され得る。
【0077】
以降、新たに設定されたフローエントリ(アクション情報145)に従って、受信パケットの転送処理を行う(ステップS205)。その後、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。
【0078】
一方、受信パケット内の経路決定者情報18と一致するコントローラID17がフローテーブル25に設定されている場合、当該コントローラID17に対応するアクション情報145に従って、受信パケットの転送処理が行われる(ステップS202Yes、S205)。その後、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。この際、PFS2は、経路決定者情報18と一致しないコントローラID17が付されたアクション情報145をフローテーブル25から削除する、あるいは、経路決定者識別子231をアクション情報145に対応付けて、以後使用するアクション情報145を特定する。
【0079】
ただし、受信パケットに付加されている経路決定者情報18と、フローテーブル25のエントリに追加されているコントローラID17が異なることはごく稀であり、何らかの障害が発生した場合に限られる。
【0080】
ステップS201において、 受信パケットに適合するフローエントリ(ルール144+アクション情報145)に対応する回数情報232が“0”以外を示す場合、当該フローエントリの適用が2回目以降であると判定される(ステップS201No)。すなわち、当該PFS2は、既にファーストパケット105を含む経路決定者情報付パケット90を受信しており、使用するフローエントリ(アクション情報145)を決定している。この場合、PFS2は、受信パケットに適合するルール144に対応するアクション情報145に従って、受信パケットの転送処理を行う(ステップS205)。例えば、経路決定者付パケット90に応じたアクション情報145の削除により、使用するアクション情報145のみがフローテーブルに記録されている場合、2回目以降の受信パケットは、当該パケットに対して一意に適合するフローエントリ(ルール144+アクション情報145)に従って処理(例えば転送処理)される。あるいは、経路決定者付パケット90に応じた経路決定者識別子231の付与により、使用するアクション情報145が特定されている場合、2回目以降の受信パケットは、当該パケットに適合するルール144に対応し、経路決定者識別子231が付されたアクション情報145に従って処理される。又、該当フローエントリに対応する処理回数をカウントアップして回数情報232を更新する(ステップS206)。
【0081】
以上のように、要求元PFSにおいてパケット内に経路決定者情報18を付加し、通信経路上のPFS2において、経路決定者情報18とフローテーブル25内のコントローラIDとを比較することで、経路の整合性を判定することができる。これにより、何らかの障害により、通信経路上のPFS2にパケットに適合するフローエントリが設定されていない場合でも、再度フローエントリを設定することが可能となる。
【0082】
(耐障害性)
図13を参照して、本発明による効果について説明する。図13に示すように、ホスト3−1からホスト3−2に対してパケットデータを送信する場合、要求元PFS2−1からのファーストパケットの通知に応じて、3つのPFC1−1〜1−3によって3つの通信経路40、50、60が計算される。尚、通信経路40は、PFS2−1、2−2、2−3、2−5を経由する経路であり、通信経路50は、PFS2−1、2−4、2−5を経由する経路であり、通信経路60は、PFS2−1、2−6、2−5を経由する経路である。
【0083】
PFC1−1は、通信経路40上のPFS2−5から、PFS2−3、PFS2−2、要求元PFS2−1の順にフローテーブルを更新し、PFC1−2は、通信経路50上のPFS2−5から、PFS2−4、要求元PFS2−1の順にフローテーブルを更新し、PFC1−3は、通信経路60上のPFS2−5から、PFS2−6、要求元PFS2−1の順にフローテーブルを更新する。これらの更新処理は、上述のように独立的に行われる。要求元PFS2−1は、先に自身のフローテーブル25を更新したPFC1を経路決定者に指定し、経路決定者によって構築された通信経路を利用してホスト3−1〜ホスト3−2間の通信を行う。
【0084】
ここで、PFS2に設定されるフローエントリはPFC1を特定するためのコントローラID17“1011”が対応付けられているため、経路決定者をコントローラIDで指定することで、PFS2やPFC1は使用するフローエントリ(すなわち通信経路)を特定することができる。例えば、要求元PFS2−1において経路者決定者が指定するまでの間に、PFS2−5に対してPFC1−1〜1−3によるフローテーブルの更新指示がなされた場合、PFS2−5には、コントローラID17が“1011”、“1012、“1013”が付与された3つのアクション情報145が同一のルール144に対応付けられて設定される。このような場合でも、要求元PFS2−1による経路決定者情報付パケット90が通知されることで、PFS2−5は、コントローラID17“1011”に対応するフローエントリのみを残し、他のエントリを破棄することができる。このように、PFS2やPFC1に対する経路決定者の通知は、要求元PFS2−1が一元的に行うため、PFC1は、他のPFC1と通信することなく独立的なPFS2へのフローテーブルの更新処理のみで、矛盾なく通信経路を構築することができる。
【0085】
又、本発明では、経路決定者(使用するフローエントリ)を指定するPFS2を、フローエントリを設定する最後のPFS2としている。このため、要求元PFS2−1にフローエントリが設定された時点で、通信経路上の全てのPFS2にフローエントリが設定されていることとなる。
【0086】
以上のように、本発明によれば、複数のPFC1によって、パケットに対する処理を規定したフローエントリを設定し、先に構築された通信経路を利用してパケット転送を行っている。このため、複数のPFC1のうちいずれかに障害が発生しても他のPFC1によってフローエントリの設定(通信経路の構築)が可能となり耐障害性が向上する。又、構築された通信経路は、1つのPFC1によって設定されたアクション情報145に従うため、オープンフロー技術で提案されたフローの一元制御及び管理が可能となる。
【0087】
又、複数のPFC1のそれぞれは、独自にフローテーブルの更新指示を発行するため、コントローラ間で同期を取る必要がない。このため、コントロール間で同期を取るための待ち時間を必要としないため、経路構築までの時間を短縮することも可能となる。すなわち、本発明によれば、オープンフロー技術を利用したコンピュータシステムにおいて通信経路構築の時間を増加させることなく耐障害性を上げることが可能となる。
【0088】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。例えば、フローテーブルの更新制御は、通信経路の構築(転送先の設定)だけでなく、フローの転送停止や終了(破棄)といった他の制御に対して行われても良い。これにより、複数のコントローラからの指示を矛盾することなく実行することが可能となり、耐障害性が更に向上する。
【0089】
又、上述の実施の形態では、要求元PFS2によって指定された経路決定者が、ファーストパケットを利用して他のPFS2に通知されたが、これに限らず、PFC1−1〜1−mを利用して他のPFS2に通知されても良い。例えば、経路決定者としてPFC1−1が指定された場合、PFC1−1は、要求元PFS2からの経路決定者の通知に応じて、自身が設定したPFS2に経路決定者情報18を通知する。PFS2は、経路決定者情報18に一致するコントローラID17が付加されたアクション情報145のみを残し他を削除する。これにより、要求元PFS2から転送されたパケットは、PFC1−1によって構築された通信経路を介して宛先ホストに送信される。ただし、この場合、通信経路上のPFS2に対するフローエントリの削除や、使用するフローエントリの設定が完了するまで、ファーストパケットを転送できないため、上述の実施の形態に比べてパケット転送までの時間が長大化してしまう。
【0090】
又、本実施の形態では、最初に要求元PFS2にフローエントリを設定したPFC1を経路決定者として指定したが、これに限らず、2番目や3番目に設定したPFC1を経路決定者として指定しても構わない。又、算出した通信経路上の全てのPFS2にフローエントリを設定していれば、所定の条件を満たすPFC1を優先的に経路決定者として指定しても構わない。
【0091】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限らない。
【0092】
(付記1)
それぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示する複数のコントローラと、
前記複数のコントローラの1つを経路決定者として指定し、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチと
を具備する
コンピュータシステム。
【0093】
(付記2)
付記1に記載のコンピュータシステムにおいて、
前記通信経路上の全てのスイッチにフローエントリを設定したコントローラが、前記経路決定者として設定される
コンピュータシステム。
【0094】
(付記3)
付記1又は2に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定し、
前記複数のスイッチは、前記コントローラIDによって、前記経路決定者を特定する
コンピュータシステム。
【0095】
(付記4)
付記3に記載のコンピュータシステムにおいて、
前記複数のスイッチは、
前記経路決定者を指定し、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送する第1スイッチと、
前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行う第2スイッチと
を備える
コンピュータシステム。
【0096】
(付記5)
付記4に記載のコンピュータシステムにおいて、
前記第2スイッチは、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求する
コンピュータシステム。
【0097】
(付記6)
付記4又は5に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記第1スイッチは、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定する
コンピュータシステム。
【0098】
(付記7)
付記4から6のいずれか1項に記載のコンピュータシステムにおいて、
前記第1スイッチは、受信パケットに適合するフローエントリがない場合、フローエントリの設定を前記複数のコントローラに要求し、
前記複数のコントローラのそれぞれは、前記要求に応じて通信経路の算出及びフローエントリの設定を行う
コンピュータシステム。
【0099】
(付記8)
付記1から7のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【0100】
(付記9)
付記1から7のいずれか1項に記載のコンピュータシステムで利用されるスイッチ。
【0101】
(付記10)
複数のコントローラのそれぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示するステップと、
前記複数のコントローラの1つを経路決定者として指定するステップと、
複数のスイッチが、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと
を具備する
通信方法。
【0102】
(付記11)
付記10に記載の通信方法において、
前記経路設定者として指定するステップでは、通信経路上の全てのスイッチにフローエントリを設定したコントローラが、前記経路決定者として設定される
通信方法。
【0103】
(付記12)
付記10又は11に記載の通信方法において、
前記複数のコントローラのそれぞれが、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定するステップと、
前記複数のスイッチが、前記コントローラIDによって、前記経路決定者を特定するステップと
を更に具備する
通信方法。
【0104】
(付記13)
付記12に記載の通信方法において、
前記経路決定者として指定するステップは、
第1スイッチが、前記経路決定者を指定するステップと、
前記第1スイッチが、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送するステップと
を備え、
前記中継処理を行うステップは、第2スイッチが、前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行うステップを備える
通信方法。
【0105】
(付記14)
付記13に記載の通信方法において、
前記第2スイッチが、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求するステップを更に具備する
通信方法。
【0106】
(付記15)
付記13又は14に記載の通信方法において、
前記複数のコントローラのそれぞれが、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記経路決定者として指定するステップは、前記第1スイッチが、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定するステップを備える
通信方法。
【0107】
(付記16)
付記13から15のいずれか1項に記載の通信方法において、
前記第1スイッチが、受信パケットに適合するフローエントリがない場合、フローエントリの設定を前記複数のコントローラに要求するステップを更に具備し、
前記複数のコントローラのそれぞれは、前記要求に応じて通信経路の算出及びフローエントリの設定を行う
通信方法。
【符号の説明】
【0108】
1、1−1〜1−m:プログラマブルフローコントローラ(PFC)
2、2−1〜2−n:複数のプログラマブルスイッチ(PFS)
3、3−1〜3−i:ホストコンピュータ(ホスト)
11:スイッチ制御部
12:フロー管理部
13:フロー生成部
14:フローテーブル
15:トポロジ情報
16:通信経路情報
17:コントローラID
18:決定者情報
20:スイッチ群
21:転送処理部
22:フロー設定部
23:経路決定者設定部
24:パケット修正部
25:フローテーブル
30:ホスト群
40:通信経路
50:通信経路
60:通信経路
90:経路決定者情報付パケット
105:ファーストパケット
141:フロー識別子
142:対象装置
143:経路情報
144:ルール
145:アクション情報
146:設定情報
147:経路決定者識別子
151:装置識別子
152:ポート数
153:ポート接続先情報
161:端点情報
162:通過スイッチ情報
163:付随情報
231:経路決定者識別子
232:回数情報
【特許請求の範囲】
【請求項1】
それぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示する複数のコントローラと、
前記複数のコントローラの1つを経路決定者として指定し、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチと
を具備する
コンピュータシステム。
【請求項2】
請求項1に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定し、
前記複数のスイッチは、
前記経路決定者を指定し、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送する第1スイッチと、
前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行う第2スイッチと
を備える
コンピュータシステム。
【請求項3】
請求項2に記載のコンピュータシステムにおいて、
前記第2スイッチは、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求する
コンピュータシステム。
【請求項4】
請求項2又は3に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記第1スイッチは、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定する
コンピュータシステム。
【請求項5】
請求項1から4のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【請求項6】
請求項1から4のいずれか1項に記載のコンピュータシステムで利用されるスイッチ。
【請求項7】
複数のコントローラのそれぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示するステップと、
前記複数のコントローラの1つを経路決定者として指定するステップと、
複数のスイッチが、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと
を具備する
通信方法。
【請求項8】
請求項7に記載の通信方法において、
前記複数のコントローラのそれぞれが、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定するステップを更に具備し、
前記経路決定者として指定するステップは、
第1スイッチが、前記経路決定者を指定するステップと、
前記第1スイッチが、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送するステップと
を備え、
前記中継処理を行うステップは、第2スイッチが、前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行うステップを備える
通信方法。
【請求項9】
請求項8に記載の通信方法において、
前記第2スイッチが、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求するステップを更に具備する
通信方法。
【請求項10】
請求項8又は9に記載の通信方法において、
前記複数のコントローラのそれぞれが、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記経路決定者として指定するステップは、前記第1スイッチが、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定するステップを備える
通信方法。
【請求項1】
それぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示する複数のコントローラと、
前記複数のコントローラの1つを経路決定者として指定し、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行う複数のスイッチと
を具備する
コンピュータシステム。
【請求項2】
請求項1に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定し、
前記複数のスイッチは、
前記経路決定者を指定し、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送する第1スイッチと、
前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行う第2スイッチと
を備える
コンピュータシステム。
【請求項3】
請求項2に記載のコンピュータシステムにおいて、
前記第2スイッチは、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求する
コンピュータシステム。
【請求項4】
請求項2又は3に記載のコンピュータシステムにおいて、
前記複数のコントローラのそれぞれは、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記第1スイッチは、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定する
コンピュータシステム。
【請求項5】
請求項1から4のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【請求項6】
請求項1から4のいずれか1項に記載のコンピュータシステムで利用されるスイッチ。
【請求項7】
複数のコントローラのそれぞれが、通信経路を算出し、前記通信経路上のスイッチに対して、フローエントリの設定を指示するステップと、
前記複数のコントローラの1つを経路決定者として指定するステップと、
複数のスイッチが、前記経路決定者によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと
を具備する
通信方法。
【請求項8】
請求項7に記載の通信方法において、
前記複数のコントローラのそれぞれが、自身を特定するコントローラIDを付加したフローエントリを前記通信経路上のスイッチに設定するステップを更に具備し、
前記経路決定者として指定するステップは、
第1スイッチが、前記経路決定者を指定するステップと、
前記第1スイッチが、前記経路決定者を特定する経路決定者情報を受信パケットに含めて他のスイッチに転送するステップと
を備え、
前記中継処理を行うステップは、第2スイッチが、前記経路決定者情報に一致するコントローラIDが付加されたフローエントリに従って受信パケットの中継処理を行うステップを備える
通信方法。
【請求項9】
請求項8に記載の通信方法において、
前記第2スイッチが、前記経路決定者情報と一致するコントローラIDが付加されたフローエントリを保持しない場合、前記経路決定情報が示すコントローラに対し、受信パケットに対するフローエントリの設定を要求するステップを更に具備する
通信方法。
【請求項10】
請求項8又は9に記載の通信方法において、
前記複数のコントローラのそれぞれが、前記通信経路上のスイッチに対してフローエントリを設定する際、前記通信経路上のスイッチの中で前記第1スイッチを最後に設定し、
前記経路決定者として指定するステップは、前記第1スイッチが、自身が保持するフローテーブルに対し、前記複数のコントローラの中で最初にフローエントリを設定したコントローラを前記経路決定者に指定するステップを備える
通信方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11A】
【図11B】
【図12】
【図13】
【公開番号】特開2011−160363(P2011−160363A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−22539(P2010−22539)
【出願日】平成22年2月3日(2010.2.3)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願日】平成22年2月3日(2010.2.3)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]