(57)【特許請求の範囲】
【請求項１】
転送規則に従いパケットを転送する転送装置群と接続され、
上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部と、
前記アドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するアドレス管理部と、
前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する転送規則設定部とを、備えた転送装置の制御装置。
【請求項２】
さらに、前記転送装置を介して受信した、上位層の宛先アドレスに対応する下位層のアドレスの問い合わせに対して、前記転送装置を介して予め用意した下位層アドレスを応答する下位層アドレス応答部を備える請求項１の転送装置の制御装置。
【請求項３】
前記転送装置のうち、外部と接続する転送装置のポート毎に、前記予め用意した下位層アドレスを対応付けたインターフェイス対応表を記憶するインターフェイス対応表記憶部を備え、
前記下位層アドレス応答部は、前記インターフェイス対応表記憶部を参照して、前記上位層のアドレスに対応する下位層のアドレスの問い合わせを受けた転送装置とそのポート情報に基づいて、前記応答する下位層アドレスを決定する請求項２の転送装置の制御装置。
【請求項４】
前記転送規則設定部は、さらに、前記インターフェイス対応表から前記転送対象のパケットを受信した転送装置とそのポートに対応する下位層のアドレスを検索し、前記転送対象のパケットの下位層の送信元アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する請求項３の転送装置の制御装置。
【請求項５】
前記転送規則設定部は、さらに、
前記転送対象のパケットを受信した転送装置から終点となる転送装置までの転送経路に沿って前記パケットを転送するための第２の転送規則を生成し、前記転送経路上の各転送装置に対して、前記第２の転送規則を設定する請求項１から４いずれか一の転送装置の制御装置。
【請求項６】
前記転送規則設定部は、前記第２の転送規則として、上位層の宛先アドレスもしくはそのプレフィックスを用いて転送対象のパケットを特定する転送規則を生成する請求項５の転送装置の制御装置。
【請求項７】
前記転送規則設定部は、前記第２の転送規則として、下位層の送信元アドレスを用いて転送対象のパケットを特定する転送規則を生成する請求項５の転送装置の制御装置。
【請求項８】
さらに、前記転送対象のパケットを受信した転送装置から、終点となる転送装置へと至る転送経路を計算する転送経路計算部を備える請求項１から７いずれか一の転送装置の制御装置。
【請求項９】
前記アドレス記憶部の上位層のアドレスと下位層のアドレスには、前記上位層のアドレスと下記層のアドレスを持つ外部装置と接続する転送装置とのそのポート情報が対応付けられており、
前記アドレス記憶部を参照して、前記転送対象のパケットの上位層の宛先アドレスから、前記終点となる転送装置およびポートを決定する請求項８の転送装置の制御装置。
【請求項１０】
前記アドレス管理部は、前記転送対象のパケットの上位層の送信元アドレスおよび下位層の送信元アドレスの組を、前記アドレス記憶部に登録する請求項１から９いずれか一の転送装置の制御装置。
【請求項１１】
前記アドレス管理部は、さらに、前記上位層のアドレスと下記層のアドレスを持つ外部装置と接続する転送装置とのそのポート情報を前記上位層のアドレスと下記層のアドレスに対応付けて前記アドレス記憶部に登録する請求項１０の転送装置の制御装置。
【請求項１２】
前記転送経路計算部は、さらに、前記終点となる転送装置を始点とし、前記転送対象の前記転送対象のパケットを受信した転送装置を終点とする逆方向の転送経路を計算し、
前記転送規則設定部は、さらに、
前記逆方向の転送経路に沿って前記パケットを転送するための第３の転送規則を生成し、前記逆方向の転送経路上の各転送装置に対して、前記第３の転送規則を設定する請求項８から１１いずれか一の転送装置の制御装置。
【請求項１３】
転送規則に従いパケットを転送する転送装置群と、
上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部と、
前記アドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するアドレス管理部と、
前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する転送規則設定部とを、備えた制御装置と、を含む通信システム。
【請求項１４】
転送規則に従いパケットを転送する転送装置群と接続された制御装置が、
上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するステップと、
前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定するステップとを、含む転送装置の制御方法。
【請求項１５】
転送規則に従いパケットを転送する転送装置群と接続された制御装置を構成するコンピュータに、
上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索する処理と、
前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する処理とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１１−２３１８２０号（２０１１年１０月２１日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラムに関し、転送ルールに従いパケットを転送する転送装置を制御する転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラムに関する。
【背景技術】
【０００２】
非特許文献１、２にオープンフロースイッチ（以下、「ＯＦＳ」）とオープンフローコントローラ（以下、「ＯＦＣ」）とを用いて通信を実現するオープンフローという通信システムが記載されている。以下に、ＯＦＳ、ＯＦＣの概略を述べる。
【０００３】
ＯＦＳは、受信パケットのヘッダ情報等と照合するマッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と処理内容（Ｉｎｓｔｒｕｃｔｉｏｎｓ）とを対応付けた転送規則（フローエントリ）を格納したフローテーブルと、コントローラとの通信用のセキュアチャネルとを備えた非特許文献２に仕様化されている転送装置である。ＯＦＣは、非特許文献２に記載されているオープンフロープロトコルを用いてセキュアチャネル上でＯＦＳと通信し、例えばＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）レベルでフローを制御する制御装置である。
【０００４】
ＯＦＳとＯＦＣは、例えば、次のように動作する。ＯＦＳに最初のパケット（Ｆｉｒｓｔ  ｐａｃｋｅｔ）が到着すると、ＯＦＳは、フローテーブルから、パケットのヘッダ情報を適合するマッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）を持つ転送規則（フローエントリ）を検索する。検索の結果、該当するフローエントリを発見できなかった場合、ＯＦＳは、セキュアチャネルを介してＯＦＣに対し、当該パケットを転送する。
【０００５】
ＯＦＣは、当該パケットのヘッダ情報に含まれる宛先、送信元情報に基づいて始点と終点となるＯＦＳを特定し、さらに、ネットワークトポロジー情報を参照して、前記パケットのパス（転送経路）を決定する。次に、ＯＦＣは、前記決定したパス（転送経路）上の各ＯＦＳに対して、それぞれのフローテーブルに当該パス（転送経路）に沿ったパケット転送を実行させる転送規則（フローエントリ）を設定する。２番目以降のパケットは、前記設定された転送規則（フローエントリ）により、当該パス（転送経路）上のＯＦＳからＯＦＳへと転送される。
【０００６】
図１８は、ＯＦＳのフローテーブルを模式的に表わした図である。同図に示すように、フローテーブル１００に格納される転送規則（フローエントリ）は、受信パケットのヘッダ情報等と照合するマッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と、前記マッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）に適合するパケットに適用する処理内容を定めたインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ、「Ａｃｔｉｏｎｓ」ともいう。）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）とによって構成される。
【０００７】
マッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）には、正確な値（Ｅｘａｃｔ）及びワイルドカード（Ｗｉｌｄ  ｃａｒｄ）を指定することが可能となっている。パケットのヘッダの所定のフィールドが、前記マッチフィールズ（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）との照合に用いられる。マッチ対象の情報としては、図１９に示すパケットヘッダのＭＡＣ  ＤＡ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ディスティネーションアドレス）、ＭＡＣ  ＳＡ（ＭＡＣ  ソースアドレス）、Ｅｔｈｅｒｎｅｔ（登録商標）  タイプ（ＴＰＩＤ）、ＶＬＡＮ  ＩＤ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  ＩＤ）、ＶＬＡＮ  ＴＹＰＥ（優先度）、ＩＰ  ＳＡ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ソースアドレス）、ＩＰ  ＤＡ  （ＩＰ  ディスティネーションアドレス）、ＩＰ  プロトコル、Ｓｏｕｒｃｅ  Ｐｏｒｔ（ＴＣＰ／ＵＤＰ  ソースポート、あるいは、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）  Ｔｙｐｅ）、Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ（ＴＣＰ／ＵＤＰ  ディスティネーションポート、あるいは、ＩＣＭＰ  Ｃｏｄｅ）のほか、ＯＦＳの入力ポート情報（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）やメタデータ等を指定可能となっている。
【０００８】
図２０は、転送規則（フローエントリ）のインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）フィールドに設定可能な処理内容の例である。ＯＵＴＰＵＴは、指定ポート（インタフェース）にパケットを出力する。ＳＥＴ＿ＶＬＡＮ＿ＶＩＤからＳＥＴ＿ＴＰ＿ＤＳＴは、パケットヘッダのフィールドを修正するアクションである。
【０００９】
また、ＯＦＳは、物理ポートのほか、仮想ポートへパケットを転送することもできる。図２１は、非特許文献２に例示されている仮想ポートの例である。ＩＮ＿ＰＯＲＴは、受信ポートからの送信を指示するための仮想ポート名である。ＮＯＲＭＡＬは、非オープンフローのパイプラインを用いたパケット処理を指示するための仮想ポート名である。ＦＬＯＯＤは、受信ポートを除く通信可能状態（Ｆｏｒｗａｒｄｉｎｇ  状態）のすべてのポートからの転送を指示するための仮想ポート名である。ＡＬＬは受信ポートを除くポートからの転送を指示するための仮想ポート名である。ＣＯＮＴＲＯＬＬＥＲは、パケットをカプセル化してコントローラに向けて送信することを指示するための仮想ポート名である。ＬＯＣＡＬは、パケットをスイッチ自身のローカルネットワークスタックに送信することを指示するための仮想ポート名である。
【００１０】
なお、転送規則（フローエントリ）のインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）フィールドに何も指定されていない場合、当該転送規則（フローエントリ）に適合したパケットはドロップ（廃棄）される。
【００１１】
図２２に、セキュアチャネルを介してＯＦＳとＯＦＣ間でやり取りされるメッセージを例示する。Ｆｌｏｗ−ｍｏｄは、ＯＦＣからＯＦＳに対して、転送規則（フローエントリ）の追加、変更、削除を行うためのメッセージである。Ｐａｃｋｅｔ−ｉｎは、ＯＦＳからＯＦＣに対して送られるメッセージで、転送規則（フローエントリ）にマッチしなかったパケットを送るために用いられる。Ｐａｃｋｅｔ−ｏｕｔは、ＯＦＣからＯＦＳに対して送られるメッセージで、ＯＦＳの任意のポートからＯＦＣが生成したパケットを出力するために用いられる。
【００１２】
また、図１８のフロー統計情報（Ｃｏｕｎｔｅｒｓ）は、アクティビティカウンタともいい、アクティブエントリ数、パケットルックアップ数、パケットマッチ数、フロー単位に、受信パケット数、受信バイト数、フローがアクティブな期間、ポート単位で受信パケット、送信パケット、受信バイト、送信バイト、受信ドロップ、送信ドロップ、受信エラー、送信エラー、受信フレームアラインメントエラー、受信オーバーランエラー、受信ＣＲＣエラー、コリジョン数を含む。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２３（２０１１）年１０月４日検索］、インターネット〈URL: http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０２）、［ｏｎｌｉｎｅ］、［平成２３（２０１１）年１０月４日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１４】
以下の分析は、本発明によって与えられたものである。同一の下位層ネットワーク上に存在する複数の端末は、それぞれ異なる下位層アドレス（例えば、ＭＡＣアドレス）を持っている必要がある。そのため、同一の下位層アドレスを持つ端末が複数ネットワークに存在する場合、そのネットワーク上での通信を正常に行うことが出来ないという問題点がある。
【００１５】
この点、非特許文献１、２には、上述したとおり、ＯＦＣからの制御により、きめ細かにパケットを特定しヘッダ書き換え等をなしうることが記載されているが、上記同一の下位層アドレスを持つ端末間の通信を実現できる構成は開示されていない。
【００１６】
本発明は、上記した事情に鑑みてなされたものであってその目的とするところは、下位層アドレスのユニーク性（一意性）が担保されていない環境下でも通信を実現できる転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明の第１の視点によれば、転送規則に従いパケットを転送する転送装置群と接続された制御装置であって、上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部と、前記アドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するアドレス管理部と、前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する転送規則設定部とを、備えた転送装置の制御装置が提供される。
【００１８】
本発明の第２の視点によれば、転送規則に従いパケットを転送する転送装置群と、上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部と、前記アドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するアドレス管理部と、前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する転送規則設定部とを、備えた制御装置と、を含む通信システムが提供される。
【００１９】
本発明の第３の視点によれば、転送規則に従いパケットを転送する転送装置群と接続された制御装置が、上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するステップと、前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定するステップとを、含む転送装置の制御方法が提供される。本方法は、転送規則に従いパケットを転送する転送装置を制御する制御装置という、特定の機械に結びつけられている。
【００２０】
本発明の第４の視点によれば、転送規則に従いパケットを転送する転送装置群と接続された制御装置を構成するコンピュータに、上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索する処理と、前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する処理とを実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００２１】
本発明によれば、下位層アドレスのユニーク性（一意性）が担保されていない環境下でも、端末間の通信を実現することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態の概略構成および動作を説明するための図である。
【図２】本発明の第１の実施形態の構成を表した図である。
【図３】本発明の第１の実施形態のコントローラ（制御装置）の構成を表わしたブロック図である。
【図４】本発明の第１の実施形態のコントローラ（制御装置）に保持されるアドレスデータベースに登録されるエントリの構成例を示す図である。
【図５】本発明の第１の実施形態のコントローラ（制御装置）に保持されるインターフェース対応表の一例を示す図である。
【図６】本発明の第１の実施形態のパケット受信時の処理の流れを示すフローチャートである。
【図７】本発明の第１の実施形態のＡＲＰパケット受信時の処理の流れを示すフローチャートである。
【図８】本発明の第１の実施形態におけるＡＲＰ要求パケット及びＡＲＰ応答パケットの授受の流れを模式的に示す図である。
【図９】本発明の第１の実施形態のパス構築処理の流れを示すフローチャートである。
【図１０】本発明の具体的な動作を説明するため、スイッチと端末の接続関係を模式的に表した図である。
【図１１】図１０の接続関係に対応するアドレスデータベースの構成例を示す図である。
【図１２】図１０の接続関係に対応するインターフェース対応表の構成例を示す図である。
【図１３】図１０における最短パスツリーの例を示す図である。
【図１４】本発明の第２の実施形態のパス構築処理の流れを示すフローチャートである。
【図１５】本発明の第３の実施形態のパス構築処理の流れを示すフローチャートである。
【図１６】図１０における逆方向の最短パスツリーの例を示す図である。
【図１７】本発明の第４の実施形態のコントローラが保持する経路表の一例を示す図である。
【図１８】非特許文献２のオープンフロースイッチが保持するフローテーブルの概略構成を示す図である。
【図１９】Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＰ／ＴＣＰパケットのヘッダを示す図である。
【図２０】非特許文献２の転送規則（フローエントリ）中に設定可能なインストラクション名とその説明を示す図である。
【図２１】非特許文献２のＯＦＳにパケット出力先として指示可能な仮想ポートとその説明を示す図である。
【図２２】非特許文献２のオープンフロープロトコルの代表的なメッセージとその説明を示す図である。
【発明を実施するための形態】
【００２３】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００２４】
本発明はその一実施形態において、図１に示すように、複数の転送装置１０Ａを制御する制御装置２０Ａにより実現できる。転送装置１０Ａは、上記した非特許文献１、２のＯＦＳのように転送規則に従いパケットを転送する通信装置である。
【００２５】
制御装置２０Ａは、上位層のアドレスと、下位層のアドレスとの対応関係を記憶するアドレス記憶部２６Ａと、前記アドレス記憶部を参照して、前記転送装置を介した転送対象のパケットの上位層の宛先アドレスから、対応する下位層アドレスを検索するアドレス管理部２５Ａと、前記転送対象のパケットの転送経路上のいずれかの転送装置に、前記転送対象のパケットの下位層の宛先アドレスフィールドに、前記検索した下位層のアドレスを書き込む処理を行わせる転送規則を設定する転送規則設定部２３Ａとを備えている。
【００２６】
制御装置２０Ａは、例えば、端末５０と通信先６０間の転送装置に、宛先ＩＰアドレスとして通信先６０のＩＰアドレスが設定されているパケットを端末５０から通信先６０側に転送する転送規則を設定する。さらに、制御装置２０Ａは、端末５０と通信先６０間の転送装置のうちのいずれか（図１では、右端の転送装置１０Ａ）に、パケットヘッダの宛先ＭＡＣアドレスフィールドに、通信先６０のＩＰアドレスに対応付けられている通信先６０のＭＡＣアドレス（ＸＸ:ＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ）を書き込む処理を行わせる。
【００２７】
以上により、下位層アドレスのユニーク性（一意性）が担保されていない環境下での端末５０から通信先６０へのパケット転送が実現される。なお、図１においては、転送装置１０ＡのＭＡＣアドレスは省略されているが、上記のように転送装置１０Ａは、宛先ＩＰアドレスを用いて転送対象のパケットを特定しているので、仮に転送装置１０ＡのＭＡＣアドレスが通信先のＭＡＣアドレスと同一であっても差し支えはない。但し、通信先６０から端末５０への逆方向の通信を実現するには、送信元のＭＡＣアドレスも書き換える必要がある。これについては、後述する各実施形態において詳細に説明する。
【００２８】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図２は、本発明の第１の実施形態の構成を表した図である。図２を参照すると、端末５０、５１間に配置された複数のスイッチ１０と、これら複数のスイッチ１０を制御するコントローラ２０とを含む構成が示されている。
【００２９】
スイッチ１０は、パケットを特定する照合規則と、適用する処理内容とを対応付けた転送規則（フローエントリ）に従いパケットを転送する、上述した転送装置１０Ａに相当する装置である。以下、本実施形態では、スイッチ１０として、非特許文献１のＯＦＳを用いるものとして説明するが、その他同等のパケット処理をなしうる通信装置を用いることが可能である。
【００３０】
コントローラ２０は、上述したスイッチ１０に転送規則を設定することにより、スイッチ１０を制御する、上述した制御装置２０Ａに相当する装置である。以下、本実施形態では、コントローラ２０として、非特許文献１のＯＦＣをベースにした装置を用いるものとして説明するが、その他同等の制御をなしうるサーバ等を用いることが可能である。
【００３１】
図３は、本発明の第１の実施形態のコントローラ（制御装置）の構成を表わしたブロック図である。図３を参照すると、スイッチ管理部３１と、ネットワーク中の各スイッチ１０と通信を行うセキュアチャネル（通信部）３２と、を備えた構成が示されている。
【００３２】
スイッチ管理部３１は、入力パケット処理部２１と、パス構築部２２と、転送規則設定部２３と、パケット送出部２４と、アドレスデータベース管理部（アドレスＤＢ管理部）２５と、アドレスデータベース（アドレスＤＢ）２６と、パス計算部２７と、トポロジー管理部２８と、ＡＲＰ代理応答部２９と、インターフェース対応表記憶部３０とを備えて構成される。
【００３３】
入力パケット処理部２１は、セキュアチャネル３２を介して、スイッチ１０からコントローラ２０へ送られてきたパケットが入力されるモジュールである。具体的には、入力パケット処理部２１は、入力パケットの種別を判別し、ＡＲＰ  Ｒｅｑｕｅｓｔパケット（ＡＲＰ要求パケット）であれば、ＡＲＰ代理応答部２９へ当該パケットを転送する。一方、入力パケットがそれ以外のパケットであれば、入力パケット処理部２１は、パス構築部２２へ当該パケットを転送する。また、入力パケット処理部２１は、入力パケットの入力スイッチ（送信元）、ポート、送信元ＭＡＣアドレスおよび送信元ＩＰアドレスの組を、アドレスＤＢ管理部２５へと送る。
【００３４】
パス構築部２２は、入力パケット処理部２１から送られてきたパケットに対して、アドレスＤＢ管理部２５に対し、問い合わせを行い、パケットの終点スイッチを決定し、パス計算部２７に対して、前記終点スイッチまでの最短パスの計算を依頼する。パス計算部２７から計算結果である最短パスを受信すると、パス構築部２２は、前記最短パスに沿ってパケットを転送させるための転送規則を生成し、転送規則設定部２３へと送る。
【００３５】
転送規則設定部２３は、セキュアチャネル３２を介して、パス構築部２２から送られてきた転送規則を各スイッチ１０へと送信する。この転送規則の送信には、上述した非特許文献２のＦｌｏｗ−ｍｏｄメッセージを用いることができる。
【００３６】
パケット送出部２４は、ＡＲＰ代理応答部２９の指示に従い、セキュアチャネル３２を介して、指定されたスイッチに対し、ＡＲＰ代理応答部２９から送られてきたパケットを指定のポートから出力するよう指示する。
【００３７】
アドレスＤＢ管理部２５は、アドレスＤＢ２６に、入力パケット処理部２１から送られてくる入力スイッチ、ポート、パケットの送信元ＭＡＣアドレス及び送信元ＩＰアドレスを含むエントリを登録する。また、アドレスＤＢ管理部２５は、パス構築部２２からの検索要求に対し、アドレスＤＢ２６を検索し、パス構築部２２に該当するエントリを応答する。
【００３８】
アドレスＤＢ２６は、少なくともスイッチ、ポート、パケットの送信元ＭＡＣアドレス及び送信元ＩＰアドレスを含むエントリを格納するデータベースである。図４は、アドレスＤＢ２６に登録されるエントリの構成例を示す図である。図４のスイッチフィールド８１およびポートフィールド８２は、ＭＡＣアドレスフィールド８３、ＩＰアドレスフィールド８４に記述されたアドレスを持つ端末がどのスイッチのどのポートの先に接続されているかを表している。ここでは、スイッチの識別に、非特許文献２のオープンフロープロトコルにおけるＤａｔａｐａｔｈ  ＩＤを用いている。例えば、図４の一番目のエントリは、Ｄａｔａｐａｔｈ  ＩＤが０ｘ１１であるスイッチの２番目のポートに、ＭＡＣアドレスＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ、ＩＰアドレス１９２．１６８．１．１を持つ端末が接続されていることを示している。このようなエントリを参照することにより、例えば、宛先ＩＰアドレスが１９２．１６８．１．１であるパケットの終点となるスイッチ及びそのポートと、接続先の端末のＭＡＣアドレスを特定することが可能となっている。
【００３９】
パス計算部２７は、転送経路計算部として機能し、パス構築部２２からの要求に従い、トポロジー管理部２８に格納されているネットワークトポロジー情報を元に、始点から終点までのパスを計算し、その結果をパス構築部２２へと返す。
【００４０】
トポロジー管理部２８は、コントローラ２０が管理するスイッチ群にて構成されるネットワークのトポロジー情報を管理しており、パス計算部２７に対しその情報を提供する。ここで、トポロジー情報とは、このネットワーク中に含まれるスイッチに関する情報と、スイッチ同士がどのように接続されているかを示す情報である。これらの情報は、管理者が事前に手動で格納してもよいし、各スイッチに情報交換を行わせるなどしてコントローラが自律的に収集した上で格納してもよい。
【００４１】
ＡＲＰ代理応答部２９は、入力パケット処理部２１から送られてきたＡＲＰ要求パケットに対してＡＲＰ応答パケットを作成し、パケット送出部２４へと送る。
【００４２】
インターフェース対応表記憶部３０は、ＡＲＰ代理応答部２９が作成するＡＲＰ応答中に含めるＭＡＣアドレスを、ＡＲＰ応答を出力するスイッチ、ポート毎に格納したテーブルであるインターフェース対応表を記憶する。図５は、コントローラ（制御装置）に保持されるインターフェース対応表の一例を示す図である。図５のスイッチフィールド９１には、スイッチを識別するための情報、例えば、上述したオープンフロープロトコルのＤａｔａｐａｔｈ  ＩＤ等が格納される。ポートフィールド９２にはポート番号が格納される。ＭＡＣアドレスフィールド９３には、当該スイッチのポートでＡＲＰ要求パケットを受信した場合に応答すべきＭＡＣアドレスが格納される。例えば図５の１番目のエントリは、Ｄａｔａｐａｔｈ  ＩＤが０ｘ１１であるスイッチの２番目のポートへ届いたＡＲＰ要求パケットに対して、ＭＡＣアドレスＡＡ：ＡＡ：ＡＡ：ＡＡ：ＡＡ：ＡＡを応答すべきことを示している。
【００４３】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図６は、スイッチ１０が新規パケットを受信し、これをコントローラ２０に転送した場合の動作の概略を表すフローチャートである。
【００４４】
外部接続ポートからパケットを受信したスイッチ１０は、自身のフローテーブルを参照し、受信パケットにマッチする転送規則（フローエントリ）を検索する。受信パケットにマッチする転送規則が存在した場合、当該転送規則中のアクションに記述された処理を、受信パケットに対して施す（図６には表示せず）。一方、対応するフローエントリがなかった場合、スイッチ１０は、セキュアチャネル経由で、コントローラ２０へと受信パケットを送信する（ステップＳ００１）。このコントローラ２０への受信パケットの送信には、上述した非特許文献２のＰａｃｋｅｔ−ｉｎメッセージを用いることができる。
【００４５】
スイッチから送られてきた受信パケットを受け取ったセキュアチャネル３２は、そのパケットを入力パケット処理部２１へと送る（ステップＳ００２）。
【００４６】
入力パケット処理部２１は、パケットを受信したスイッチ１０の識別子と、そのポート番号と、パケット中の送信元ＩＰアドレスと、送信元ＭＡＣアドレスとを、アドレスＤＢ管理部２５へと送る（ステップＳ００３）。
【００４７】
次に、アドレスＤＢ管理部２５は、アドレスＤＢ２６に、入力パケット処理部２１から送られてきたＩＰアドレスと同一のＩＰアドレスのエントリが存在するか否かを確認する（ステップＳ００４）。
【００４８】
入力パケット処理部２１から送られてきたＩＰアドレスと同一のＩＰアドレスのエントリが存在する場合、アドレスＤＢ管理部２５は、当該既存のエントリに、ステップＳ００３で送られてきたスイッチ１０の識別子と、そのポート番号と、パケット中の送信元ＭＡＣアドレスとを上書きする（ステップＳ００５）。
【００４９】
一方、アドレスＤＢ２６に、入力パケット処理部２１から送られてきたＩＰアドレスと同一のＩＰアドレスのエントリが存在しない場合、アドレスＤＢ管理部２５は、アドレスＤＢ２６に、ステップＳ００３で送られてきたスイッチ１０の識別子と、そのポート番号と、パケット中の送信元ＩＰアドレスと、送信元ＭＡＣアドレスとを含む新しいエントリを登録する（ステップＳ００６）。
【００５０】
なお、上記ステップＳ００３〜ステップＳ００６の処理は、アドレスＤＢ２６に、パケットを送信してきた端末のＩＰアドレスとＭＡＣアドレスの対応関係や、当該端末と接続するスイッチ１０とそのポートに関する情報を学習するフェーズである。これらの情報は、例えば管理者が予めこれらの情報を設定しておいてもよいし、管理システム等、他のシステムで生成した情報を利用するようにしてもよい。これらの場合、上記ステップＳ００３〜ステップＳ００６の処理を省略できる。
【００５１】
次に、入力パケット処理部２１は、受信パケットがＡＲＰ要求パケットである否かを確認する（ステップＳ００７）。ここで、受信パケットがＡＲＰ要求パケットであった場合、このパケットはＡＲＰ代理応答部２９へと送られ、ＡＲＰ代理応答処理が行われる（ステップＳ００８；図７参照）。
【００５２】
一方、受信パケットがＡＲＰ要求パケットでない場合、受信パケットは、パス構築部２２へと送られて、パス構築処理が行われる（ステップＳ００９；図９参照）。
【００５３】
続いて、図６のステップＳ００８におけるＡＲＰ代理応答処理の詳細について、図７を参照して詳細に説明する。
【００５４】
ＡＲＰ代理応答部２９は、入力パケット処理部２１から送られてきたＡＲＰ要求パケットがどのスイッチのどのポートから送られてきたのかを調べる（ステップＳ１０１）。ＡＲＰ要求パケットの送信元のスイッチやそのポートは、入力パケット処理部２１に問い合わせることで取得できる。また、入力パケット処理部２１が、ＡＲＰ代理応答部２９に対し、ＡＲＰ要求パケットとともにスイッチやそのポート情報を送信することとしてもよい。
【００５５】
次に、ＡＲＰ代理応答部２９は、ステップＳ１０１で調べた結果であるスイッチの識別子およびポート番号をキーに、インターフェース対応表記憶部３０のインターフェース対応表から該当エントリを検索し、対応するＭＡＣアドレスを取得する（ステップＳ１０２）。
【００５６】
次に、ＡＲＰ代理応答部２９は、ステップＳ１０２の検索結果であるＭＡＣアドレスを応答とするＡＲＰ応答パケットを作成し、パケット送出部２４へと送る（ステップＳ１０３）。
【００５７】
パケット送出部２４は、セキュアチャネル３２を介して、ステップＳ１０１で調べたスイッチに対し、ステップＳ１０１で調べたポートから、ステップＳ１０３で作成したＡＲＰ応答パケットの出力を指示するメッセージを出力する（ステップＳ１０４）。このＡＲＰ応答パケットの出力指示には、上述した非特許文献２のＰａｃｋｅｔ−ｏｕｔメッセージを用いることができる。
【００５８】
前記ＡＲＰ応答パケットの出力指示を受信したスイッチ１０は、指定されたポートからＡＲＰ応答パケットを出力する（ステップＳ１０５）。
【００５９】
図８は、ＡＲＰ要求パケットおよびＡＲＰ応答パケットの授受の流れを模式的に示した図である。端末５０が送信したＡＲＰ要求（パケット）４１を受信したスイッチ１０は、ＡＲＰ要求（パケット）を含んだＰａｃｋｅｔ−ｉｎメッセージ４２を、セキュアチャネル３２を通してコントローラ２０へと送信する。
【００６０】
コントローラ２０は、前記図７のステップＳ１０１〜Ｓ１０３の処理を実施する。さらに、コントローラ２０は、図７のステップＳ１０４において説明したように、ＡＲＰ応答（パケット）を含んだＰａｃｋｅｔ−ｏｕｔメッセージ４４をスイッチ１０へと送信する。
【００６１】
スイッチ１０は、図７のステップＳ１０５において説明したように、Ｐａｃｋｅｔ−ｏｕｔメッセージ４４に従い、ＡＲＰ応答（パケット）４４を指定のポートから出力する。
【００６２】
以上のようにしてネットワークに接続された端末からのＡＲＰ要求は、スイッチ１０によりコントローラ２０へと転送され、コントローラ内部のＡＲＰ代理応答部２９にて、インターフェース対応表に格納されたＭＡＣアドレスが応答される。
【００６３】
続いて、図６のステップＳ００９におけるパス構築部のパス構築処理の詳細について、図９を参照して詳細に説明する。図９を参照すると、パス構築部２２は、入力パケット処理部２１から送られてきた受信パケットの宛先ＩＰアドレスをキーに、アドレスＤＢ管理部２５を介してアドレスＤＢ２６を検索し、該当するＩＰアドレスを持つ端末が接続されているスイッチ（即ち、終点スイッチ）の識別子、ポート番号および該当するＩＰアドレスを持つ端末のＭＡＣアドレスを取得する（ステップＳ２０１）。
【００６４】
次にパス構築部２２は、ステップＳ２０１で得たスイッチの識別子、ポート番号をキーに、インターフェース対応表記憶部３０のインターフェース対応表から該当エントリを検索し、該当するスイッチ（即ち、終点スイッチ）のポートに割り当てられているＭＡＣアドレスを取得する（ステップＳ２０２）。
【００６５】
ステップＳ２０１で取得したＭＡＣアドレスは、図６のステップＳ００１〜Ｓ００６で説明したように、端末のＩＰアドレスとＭＡＣアドレスの対応関係を学習した結果から得られた送信先の端末のＭＡＣアドレスである。一方、ステップＳ２０２で取得したＭＡＣアドレスは、スイッチのポートに割り当てられたＭＡＣアドレスであり、本実施形態では、送信元のＭＡＣアドレスとして用いる。
【００６６】
パス構築部２２は、ステップＳ２０１で取得したＭＡＣアドレスを宛先に、ステップＳ２０２で取得したＭＡＣアドレスを送信元に、それぞれ書き換える処理を行わせる転送規則を生成し、転送規則設定部２３に出力する。そして、転送規則設定部２３は、セキュアチャネル３２を介して、ステップＳ２０１で検索したスイッチに対し、前記転送規則を送信する（ステップＳ２０３）。
【００６７】
次にパス計算部２７は、パス構築部２２からの要求に応じて、受信パケットをはじめに受け取ったスイッチを始点とし、ステップＳ２０１で得たスイッチを終点としたパス計算を行う（ステップＳ２０４）。
【００６８】
このパス計算は、トポロジー管理部２８にて保持しているネットワークトポロジー情報を元にダイクストラ法等を用いて行われる。ここでは、ダイクストラ法等を用いるものとして説明するが、他のパス計算アルゴリズムを用いてもよい。
【００６９】
パス構築部２２は、パス計算部２７の計算結果を受け取ると、前記パス上の各スイッチに、前記パスに沿って宛先ＩＰアドレスを持つパケットをそれぞれ転送させる転送規則を生成し、転送規則設定部２３に出力する。そして、転送規則設定部２３は、セキュアチャネル３２を介して、前記パス上の各スイッチに対して前記転送規則を送信する（ステップＳ２０５）。
【００７０】
以上の処理の流れについて、図１０〜図１３を用いて、より具体的に説明する。例えば、図１０のスイッチ１０（０ｘ２１）が、端末５１から、宛先ＩＰアドレスが１９２．１６８．Ｚ．１５であるパケットを受信した場合を考える。
【００７１】
図１１は、図１０の接続関係に対応するアドレスＤＢ２６の構成例を示す図である。図１１を参照すると、ＩＰアドレス１９２．１６８．Ｚ．１５を持つ端末は、スイッチ１０（０ｘ２５）のポート＃２に接続されている端末５５であり、この端末５５のＭＡＣアドレスはＺＺ：ＺＺ：ＺＺ：ＺＺ：ＺＺ：１５であることがわかる。
【００７２】
図１２は、図１０の接続関係に対応するインターフェース対応表の構成例を示す図である。次に図１２のインターフェース対応表を参照すると、スイッチ１０（０ｘ２５）のポート＃２に対応するＭＡＣアドレスは、ＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５  であることがわかる。
【００７３】
このとき、端末５１からのパケットを受信したスイッチ１０（０ｘ２１）が始点、スイッチ１０（０ｘ２５）が終点となる。ダイクストラ法を用いることで、図１３に示すようなスイッチ１０（０ｘ２１）を始点とし、スイッチ１０（０ｘ２３）を経由してスイッチ１０（０ｘ２５）へと到る最短パスツリーを計算することができる。
【００７４】
上記パスに沿ったパケット転送を行うため、スイッチ１０（０ｘ２１）に、宛先ＩＰアドレスが１９２．１６８．Ｚ．１５のパケットを、スイッチ１０（０ｘ２３）と接続するポート＃２に出力する転送規則が送信される。同様に、スイッチ１０（０ｘ２３）にはスイッチ１０（０ｘ２５）と接続するポート＃４に、宛先ＩＰアドレス１９２．１６８．Ｚ．１５のパケットを出力する転送規則が送信される。スイッチ１０（０ｘ２５）には、送信元ＭＡＣアドレスをＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５（スイッチ１０（０ｘ２５）のポート＃２のＭＡＣアドレス）、送信先ＭＡＣアドレスをＺＺ：ＺＺ：ＺＺ：ＺＺ：ＺＺ：１５へと書き換えを実施した後、端末５５と接続するポート＃２に宛先ＩＰアドレス１９２．１６８．Ｚ．１５へのパケットを出力する転送規則が送信される。
【００７５】
以上のように、スイッチ１０群を制御することにより、下位層のアドレスがユニークでなくとも、目的とする宛先までパケットを転送することが可能となる。
【００７６】
なお、上記した本実施形態では、上位層のアドレスをＩＰアドレスとし、下位層のアドレスをＭＡＣアドレスとして説明を行ったが、上位層アドレス、下位層アドレスのこの組合せに限られるものではない。例えば、上位層アドレスとして、ＩＰｖ６アドレスを用いてもよく、任意の上位層アドレス、下位層アドレスと用いても同様に実施可能である。また、上記した実施形態では、コントローラ２０がＡＲＰ代理応答部２９を備え、ＩＰアドレスに対応するＭＡＣアドレスを応答するものとして説明したが、その他上位層アドレスに対して下位層の上位層のアドレスの問い合わせに応答する上記ＡＲＰ代理応答部２９に相当する下位層アドレス応答部を備えても良い。
【００７７】
［第２の実施形態］
続いて、上記した第１の実施形態のパス構築処理（図９参照）に変更を加え、ＭＡＣアドレスの書き換えを先に行うようにした本発明の第２の実施形態について図面を参照して詳細に説明する。本発明の第２の実施形態は、上記した第１の実施形態と略同様の構成にて実現できるので、以下、その相違点を中心に説明する。
【００７８】
図１４は、本発明の第２の実施形態のパス構築処理の流れを示すフローチャートである。図９に示した第１の実施形態のパス構築処理の流れと比較すると、ステップＳ２０１、Ｓ２０２の処理は第１の実施形態と同様であり、ステップＳ２０３Ａ以降の処理が異なっている。
【００７９】
本実施形態では、パス構築部２２は、ステップＳ２０１で得たＭＡＣアドレス（送信先端末のＭＡＣアドレス）を宛先、ステップＳ２０２で得たＭＡＣアドレス（終点スイッチの出力ポートのＭＡＣアドレス）を送信元としたＭＡＣアドレスの書き換えを行う転送規則を生成し、転送規則設定部２３に出力する。そして、転送規則設定部２３は、セキュアチャネル３２を介して、受信パケットを入力したスイッチに対して前記転送規則を送信する（ステップＳ２０３Ａ）。
【００８０】
次に、パス計算部２７は、受信パケットの入力スイッチを始点、ステップＳ２０１で得たスイッチを終点とした最短パスを計算する（ステップＳ２０４Ａ）。
【００８１】
そして、パス構築部２２は、最短パス上の各スイッチについてそれぞれ、ステップＳ２０３Ａで書き換えた送信元ＭＡＣアドレスが設定されているパケットを最短パス上に沿って転送する転送規則を生成し、転送規則設定部２３に出力する。転送規則設定部２３は、最短パス上の各スイッチに対して、前記転送規則を送信する（ステップＳ２０５Ａ）。
【００８２】
以上の処理の流れについて、再度図１０〜図１３を用いて、より具体的に説明する。例えば、図１０のスイッチ１０（０ｘ２１）が、端末５１から、宛先ＩＰアドレスが１９２．１６８．Ｚ．１５であるパケットを受信した場合を考える。
【００８３】
図１１を参照すると、ＩＰアドレス１９２．１６８．Ｚ．１５を持つ端末は、スイッチ１０（０ｘ２５）のポート＃２に接続されている端末５５であり、この端末５５のＭＡＣアドレスはＺＺ：ＺＺ：ＺＺ：ＺＺ：ＺＺ：１５であることがわかる。
【００８４】
図１２は、図１０の接続関係に対応するインターフェース対応表の構成例を示す図である。次に図１２のインターフェース対応表を参照すると、スイッチ１０（０ｘ２５）のポート＃２に対応するＭＡＣアドレスは、ＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５であることがわかる。更にスイッチ１０（０ｘ２１）からスイッチ１０（０ｘ２５）までの最短パスツリーは、図１３のようになる。
【００８５】
図１４のステップＳ２０３Ａに示したように、本実施形態では、スイッチ１０（０ｘ２１）がコントローラから受信した転送規則に従い、ＩＰアドレス１９２．１６８．Ｚ．１５のパケットの送信元ＭＡＣアドレスをＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５と書き換え、送信先ＭＡＣアドレスをＺＺ：ＺＺ：ＺＺ：ＺＺ：ＺＺ：１５へと書き換える。そして、スイッチ１０（０ｘ２１）は、ポート＃２から、当該書き換え後のパケットを出力する。
【００８６】
そして、スイッチ１０（０ｘ２３）にはスイッチ１０（０ｘ２５）と接続するポート＃４に、送信元ＭＡＣアドレスがＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５のパケットを出力する転送規則が送信される。スイッチ１０（０ｘ２５）には、端末５５と接続するポート＃２に送信元ＭＡＣアドレスがＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２５のパケットを出力する転送規則が送信される。
【００８７】
以上のように、本実施形態では、終点のスイッチよりも前のスイッチにおいてＭＡＣ書き換えを行ない、パス上の後続するスイッチにおいて送信元ＭＡＣアドレスを参照してパケット転送を行うようにしている。また、この送信元ＭＡＣアドレスは、このネットワークにおいて外部の端末と接続するスイッチのポートの数だけになる（図１０の例でいえば５つ）。
【００８８】
第１の実施形態では、転送対象のパケットを特定するために、多くの異なる宛先ＩＰ  アドレスを取り扱う必要があったが、本実施形態では、送信元ＭＡＣアドレスでパケットを特定できるため、各スイッチに設定する転送規則の数を低減し、その検索処理を高速化することができる。
【００８９】
［第３の実施形態］
続いて、上記した第２の実施形態におけるパス構築処理を事前に行うようにした本発明の第３の実施形態について図面を参照して詳細に説明する。本発明の第３の実施形態は、実際に通信が行われる前にパスと対応する転送規則を設定する点で相違し、その他は、上記した第２の実施形態と略同様の構成にて実現できるので、以下、その相違点を中心に説明する。
【００９０】
上記した第２の実施形態では、パケットをスイッチ１０が受信した際に行われる一連の処理の中で、最短パスの計算を行ない（図１４のステップＳ２０４Ａ参照）、そのパス上のスイッチに、当該パスを実現する転送規則の設定を行なっていた（図１４のステップＳ２０５Ａ参照）。
【００９１】
本実施形態では、前記パスの逆方向のパスの構築処理を事前に行っておくことにより、パケット受信からパケット転送が可能となるまでの時間の削減を実現する。
【００９２】
図１５は、本発明の第３の実施形態のパス構築処理の流れを示すフローチャートである。図１５を参照すると、まず、パス構築部２２が、インターフェース対応表記憶部３０に記憶されたインターフェース対応表から処理済でないエントリをひとつ選択する（ステップＳ３０１）。
【００９３】
次に、パス構築部２２が、パス計算部２７に対し、ステップＳ３０１で選択したエントリ中のスイッチを終点とする逆方向の最短パスツリーの計算を依頼する（ステップＳ３０２）。
【００９４】
逆方向のパス計算結果を受け取ると、パス構築部２２は、ステップＳ３０２で計算した最短パスツリーに沿って、ステップＳ３０１で選択したエントリ中のＭＡＣアドレスを送信元とするパケットを転送する転送規則を作成し、転送規則設定部２３に出力する。転送規則設定部２３は、前記最短パス上の各スイッチに対し、前記転送規則を送信する（ステップＳ３０３）。
【００９５】
次に、パス構築部２２は、すべてのエントリに対して、逆方向のパスの計算と転送規則の送信が行われたかを調べ、行われていなければステップＳ３０１へ戻って、ステップＳ３０２、Ｓ３０３の処理を行う。一方、すべてのエントリに対して、逆方向のパスの計算と転送規則の送信が行われていれば、すべての処理を終了する。
【００９６】
なお、以上の説明では、逆方向のパスの計算と、転送規則の送信を行うものとして説明したが、順方向のパスの計算と、転送規則の送信も同様の手順で行うことができる。このような一連の処理を、コントローラ２０の起動時などに事前に行っておくことで、図９（図１４）のステップＳ２０３（Ｓ２０３Ａ）〜Ｓ２０５（Ｓ２０５Ａ）をその都度実行せずに済むことになる。
【００９７】
例えば、図１０の接続関係に対応する図１２のインターフェース対応表の一番目のエントリの場合、スイッチ０ｘ２１、ポート＃１のＭＡＣアドレスがＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２１となっている。図１６は、スイッチ０ｘ２１を終点とする逆方向の最短パスツリーであり、この最短パスツリーに沿ってパケットが転送されるよう転送規則が設定される。具体的には、スイッチ０ｘ２１は、ポート＃１へ、スイッチ０ｘ２２はポート＃１へ、スイッチ０ｘ２３はポート２へ、スイッチ０ｘ２４はポート１へ、スイッチ０ｘ２５はポート４へそれぞれ送信元ＭＡＣアドレスがＸＸ：ＸＸ：ＸＸ：ＸＸ：ＸＸ：２１であるパケットを転送する転送規則が設定される。
【００９８】
以上のように、本実施形態では、上述した第１、第２の実施形態と比較して、パスを事前に構築しておくようにしているため、パケット受信からパケット転送が可能となるまでの時間の削減することが可能となっている。
【００９９】
［第４の実施形態］
本発明の第１の実施形態では、図９のステップＳ２０１において、パス構築部２２が宛先ＩＰアドレスをキーにアドレスＤＢ２６の検索を行っている。宛先ＩＰアドレスを持つ端末がオープンフローネットワークに直接接続されていれば、この検索で対応するエントリが見つかるはずである。しかしながら、宛先ＩＰアドレスの端末がルータ装置などを介して接続されており、オープンフローネットワークに直接接続されていない場合、アドレスＤＢ２６から該当するエントリを検索できないことが考えられる。
【０１００】
続いて、このようなケースにも対応できるようにした本発明の第４の実施形態について図面を参照して詳細に説明する。本発明の第４の実施形態は、上記した第１〜第３の実施形態と略同様の構成にて実現できるので、以下、その相違点を中心に説明する。
【０１０１】
上記のようなケースに対応するために、本発明の第４の実施形態のコントローラは、図１７に示す経路表を図示省略する記憶手段に保持する。図９のステップＳ２０１において該当するエントリが存在しない場合、パス構築部２２は、宛先ＩＰアドレスに対するロンゲストプレフィックスマッチ検索をこの経路表に対して行い、次転送先を決定する。
【０１０２】
ここで、ロンゲストプレフィックスマッチ検索とは、検索により複数のエントリがマッチする場合、プレフィックス長が一番長いエントリを選択する検索手法である。例えば、宛先ＩＰアドレスが１９２．１６８．１１．１である場合、図１７の２番目のエントリと３番目のエントリがマッチするが、プレフィックス長が一番長い３番目のエントリが選択される。従って、その次転送先は１７２．１６．１．２５４となる。
【０１０３】
本実施形態では、この次転送先アドレスに対し、再度、アドレスＤＢ２６を参照し、下位層アドレスを決定する。以降の処理は、本発明の第１の実施形態における図９のステップＳ２０２以降と同じである。
【０１０４】
以上のように本実施形態によれば、宛先ＩＰアドレスを持つ端末がオープンフローネットワークに直接接続されていないようなケースにも対応することが可能となる。
【０１０５】
また、上記した第４の実施形態のような経路表を持つ場合、図９のステップＳ２０５を以下のように変更することができる。第１の実施形態では、図９のステップＳ２０５で送信される転送規則において、受信パケットとの照合する部分に宛先ＩＰアドレスを用いていた。この宛先ＩＰアドレスの代わりに、先の経路表検索で得られたエントリにおけるプレフィックス及びプレフィックス長を用いてもよい。例えば、宛先ＩＰアドレスが１９２．１６８．１１．１の場合、プレフィックス／プレフィックス長が１９２．１６８．１１．０／２４に適合するパケットを処理対象とする転送規則が生成される。この場合、宛先が１９２．１６８．１１．２であるパケットも同様に処理されることになり、スイッチのフローエントリ数を節約することができる。
【０１０６】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した各実施形態で示したスイッチ（転送装置）、コントローラ（制御装置）の数や接続関係は、本発明を簡単に説明するために示したものであり、適宜変更することが可能である。
【０１０７】
また、上記した各実施形態では関連技術であるオープンフローを参照しているが、本発明はオープンフローを用いることに限定されない。例えば、オープンフローに限らず、パケットの転送経路を制御装置が集中制御する通信アーキテクチャにも本発明を適用できる。
【０１０８】
なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１０９】
１０  スイッチ
１０Ａ  転送装置
２０  コントローラ
２０Ａ  制御装置
２１  入力パケット処理部
２２  パス構築部
２３  転送規則設定部
２３Ａ  転送規則設定部
２４  パケット送出部
２５  アドレスデータベース管理部（アドレスＤＢ管理部）
２５Ａ  アドレス管理部
２６  アドレスデータベース（アドレスＤＢ）
２６Ａ  アドレス記憶部
２７  パス計算部
２８  トポロジー管理部
２９  ＡＲＰ代理応答部
３０  インターフェース対応表記憶部
３１  スイッチ管理部
３２  セキュアチャネル（通信部）
５０〜５５  端末
６０  通信先
８１、９１  スイッチフィールド
８２、９２  ポートフィールド
８３、９３  ＭＡＣアドレスフィールド
８４  ＩＰアドレスフィールド
１００  フローテーブル
【図１】
0005994851.tif 000002
【図２】
0005994851.tif 000003
【図３】
0005994851.tif 000004
【図４】
0005994851.tif 000005
【図５】
0005994851.tif 000006
【図６】
0005994851.tif 000007
【図７】
0005994851.tif 000008
【図８】
0005994851.tif 000009
【図９】
0005994851.tif 000010
【図１０】
0005994851.tif 000011
【図１１】
0005994851.tif 000012
【図１２】
0005994851.tif 000013
【図１３】
0005994851.tif 000014
【図１４】
0005994851.tif 000015
【図１５】
0005994851.tif 000016
【図１６】
0005994851.tif 000017
【図１７】
0005994851.tif 000018
【図１８】
0005994851.tif 000019
【図１９】
0005994851.tif 000020
【図２０】
0005994851.tif 000021
【図２１】
0005994851.tif 000022
【図２２】
0005994851.tif 000023