(57)【要約】【課題】コントローラからのパケット転送情報の形式に対応していないスイッチを、コントローラにより制御可能とする。【解決手段】スイッチは、ＩＰアドレスとネクストホップＩＰアドレスとの対応付けと、ＩＰアドレスとＭＡＣアドレスとの対応付けとに基づいてパケットの転送を行う。変換装置は、コントローラからスイッチへ送信される、パケットの転送先となる宛先ＩＰアドレスと宛先ＭＡＣアドレスとを含むパケット転送情報の追加指示を受信した場合に、ネクストホップＩＰアドレスとして用いる擬似ＩＰアドレスを取得し、宛先ＩＰアドレスと擬似ＩＰアドレスとの第１の対応付け、及び、擬似ＩＰアドレスと宛先ＭＡＣアドレスとの第２の対応付けを生成し、第１の対応付け及び第２の対応付けの追加指示を、スイッチに送信する。【選択図】図１４
2017130722.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰアドレスとネクストホップＩＰアドレスとの対応付けと、ＩＰアドレスとＭＡＣアドレスとの対応付けと、に基づいてパケットの転送を行うスイッチへコントローラから送信される、パケットの転送先となる宛先ＩＰアドレスと宛先ＭＡＣアドレスとを含むパケット転送情報の追加指示を受信した場合に、
ネクストホップＩＰアドレスとして用いる擬似ＩＰアドレスを取得し、
前記宛先ＩＰアドレスと前記擬似ＩＰアドレスとの第１の対応付け、及び、前記擬似ＩＰアドレスと前記宛先ＭＡＣアドレスとの第２の対応付けを生成し、
前記第１の対応付け及び前記第２の対応付けの追加指示を、前記スイッチに送信する、
制御部を備える、
変換装置。
【請求項２】
前記擬似ＩＰアドレスとして使用可能なＩＰアドレスを記憶する記憶部をさらに備え、
前記制御部は、前記記憶部に記憶されるＩＰアドレスのうち、未使用のＩＰアドレスから前記擬似ＩＰアドレスを選択する、
請求項１に記載の変換装置。
【請求項３】
前記制御部は、
前記第１の対応付けを第１の記憶部に格納し、
前記第２の対応付けを第２の記憶部に格納し、
前記コントローラから前記スイッチに送信される、前記パケット転送情報の削除指示を受信した場合には、前記第１の対応付け及び前記第２の対応付けに基づいて、前記第１の対応付け及び前記第２の対応付けの削除指示を作成し、前記スイッチに送信する、
請求項１又は２に記載の変換装置。
【請求項４】
前記制御部は、前記コントローラから前記スイッチに送信される、前記パケット転送情報の削除指示を受信した際に、前記第１の記憶部において、前記擬似ＩＰアドレスと、前記宛先ＩＰアドレスとは異なるＩＰアドレスと、の対応付けが記憶されている場合には、前記第１の対応付けの削除指示を前記スイッチに送信し、前記第２の対応付けの削除指示は作成しない、
請求項３に記載の変換装置。
【請求項５】
コンピュータが、
ＩＰアドレスとネクストホップＩＰアドレスとの対応付けと、ＩＰアドレスとＭＡＣアドレスとの対応付けと、に基づいてパケットの転送を行うスイッチへコントローラから送信される、パケットの転送先となる宛先ＩＰアドレスと宛先ＭＡＣアドレスとを含むパケット転送情報の追加指示を受信した場合に、
ネクストホップＩＰアドレスとして用いる擬似ＩＰアドレスを取得し、
前記宛先ＩＰアドレスと前記擬似ＩＰアドレスとの第１の対応付け、及び、前記擬似ＩＰアドレスと前記宛先ＭＡＣアドレスとの第２の対応付けを生成し、
前記第１の対応付け及び前記第２の対応付けの追加指示を、前記スイッチに送信する、
変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変換装置及び変換方法に関する。
【背景技術】
【０００２】
図１は、ＳＤＮネットワークの一例を示す図である。ＳＤＮ（Software Defined Networking）ネットワークは、ソフトウェアによるネットワーク制御が可能なネットワークア
ーキテクチャを有する。ＳＤＮでは、ネットワークの構築、設定等が一元的に行われる。ＳＤＮネットワークは、スイッチ９と、スイッチ９を制御するコントローラ３とを含む。コントローラ３とスイッチ９とは、ユーザデータが通過するデータプレーンとは切り離されたコントロールプレーンにおいて、通信を行う。
【０００３】
コントロールプレーンのプロトコルの一つに、ＯｐｅｎＦｌｏｗがある。各スイッチ９は、例えば、ＯｐｅｎＦｌｏｗによる制御信号に従って、データプレーンを制御する。すなわち、図１に示されるスイッチ９は、ＯｐｅｎＦｌｏｗに対応するスイッチである。
【０００４】
スイッチ９は、フローテーブルを保持しており、フローテーブルに従ってデータプレーンの処理を行う。フローテーブルのエントリは、フローエントリと称される。フローエントリは、コントローラ３から通知されて、各スイッチ９のフローテーブルに設定される。
【０００５】
コントローラ３から各スイッチ９にフローエントリが通知される際に用いられるメッセージは、ＦｌｏｗＭｏｄと称される。図１には、ＦｌｏｗＭｏｄによってコントローラ３から各スイッチ９に通知される、パケット転送に係る情報を含むフローエントリの一例が示されている。パケット転送に係る情報とは、パケット転送の際に用いられる、又は、参照される情報のことを指す。パケット転送に係る情報を、以降、パケット転送情報と称する。
【０００６】
フローエントリは、「Ｍａｔｃｈ」と、「Ｉｎｓｔｒｕｃｔｉｏｎ」の項目を含む。「Ｍａｃｔｈ」には、条件が定義される。「Ｉｎｓｔｒｕｃｔｉｏｎ」には、「Ｍａｔｃｈ」に定義される条件に合致する場合に実行する処理が定義される。
【０００７】
図１に示されるフローエントリの「Ｍａｃｔｈ」の、「OFPXMT_OFB_ETH_TYPE=0x0800」は、イーサネット（登録商標）のフレームのタイプフィールドの値が０ｘ０８００（ＩＰｖ４）であることを示す。「OFPXMT_OFB_IPv4_DST=［宛先ＩＰアドレス］」は、パケットの宛先ＩＰアドレスが、［宛先ＩＰアドレス］であることを示す。
【０００８】
図１に示されるフローエントリの「Ｉｎｓｔｒｕｃｔｉｏｎ」の、「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_SRC, Value=［自ＭＡＣアドレス］)」は、フレームの送信元ＭＡＣアドレスを［自ＭＡＣアドレス］で指定されるＭＡＣアドレスに設定することを示す。「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_DST, Value=［宛先ＭＡＣアドレス］)」は、フレームの宛先ＭＡＣアドレスを［宛先ＭＡＣアドレス］で指定されるＭＡＣアドレスに設定することを示す。「OFPAT_OUTPUT(port=［出力先ポート番号］)」は、フレームを［出力
先ポート番号］で指定されるポートから出力することを示す。
【０００９】
すなわち、図１に示されるフローエントリは、宛先ＩＰアドレスが［宛先ＩＰアドレス］であるＩＰｖ４パケットを、送信元ＭＡＣアドレスを［自ＭＡＣアドレス］、宛先ＭＡＣアドレスを［宛先ＭＡＣアドレス］に設定して、［出力先ポート番号］から出力する、ことを示す。通常、「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_SRC, Value=［自ＭＡＣア
ドレス］)」における［自ＭＡＣアドレス］には、「OFPAT_OUTPUT(port=［出力先ポート
番号］)」におけるスイッチ９の［出力先ポート番号］に相当するポートのＭＡＣアドレ
スが指定される。「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_DST, Value=［宛先ＭＡＣア
ドレス］)」における［宛先ＭＡＣアドレス］には、ネクストホップのＭＡＣアドレスが
指定される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２０１１／０３０８８９号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、スイッチがコントローラ３から通知されるフローエントリの形式に対応していない場合には、スイッチは、コントローラ３から通知されるフローエントリを理解することができず、コントローラ３の制御下に置くことができない。フローエントリの形式に対応していないスイッチには、例えば、ＯｐｅｎＦｌｏｗをサポートしていないスイッチ（ルータ等）や、ＯｐｅｎＦｌｏｗをサポートしているものの、コントローラ３のフローエントリに、テーブルの形式が対応していないスイッチがある。ＯｐｅｎＦｌｏｗでは、使用されるフローテーブルの数等、制御に用いられるテーブルの構成が、各機器の設定に依存しており、コントローラ、各スイッチによって異なることがある。例えば、コントローラ３は１つのフローテーブルで制御を行っているものの、スイッチは複数のフローテーブルを用いて制御を行っている場合には、コントローラ３のフローエントリの形式にスイッチが対応しないこととなる。
【００１２】
図２は、コントローラ３のフローエントリの形式に対応していないスイッチにおけるパケットの転送処理の一例を示す図である。スイッチ２は、コントローラ３のフローエントリの形式に対応していないスイッチである。ＯｐｅｎＦｌｏｗに対応していないスイッチ２では、ルーティングテーブル及びＡＲＰ（Address Resolution Protocol）テーブルが
備えられる。
【００１３】
ルーティングテーブルは、ＩＰアドレス（ネットワークアドレス）、出力ポート、ネクストホップのＩＰアドレスの対応付けを保持するテーブルである。ネクストホップとは、スイッチ２と同じサブネットに存在するレイヤ３のネットワーク機器のことである。ＡＲＰテーブルは、ＩＰアドレスとＭＡＣアドレスとの対応付けを保持するテーブルである。スイッチ２がＯｐｅｎＦｌｏｗに対応しコントローラ３のフローエントリの形式には対応していないスイッチである場合には、ルーティングテーブルに相当するフローテーブル＃０とＡＲＰテーブルに相当するフローテーブル＃１とを保持することが多い。
【００１４】
スイッチ２がパケットを転送する場合には、レイヤ２レベルでパケットの次の経由先装置を指定するため、ネクストホップのＭＡＣアドレスが宛先ＭＡＣアドレスとして用いられる。
【００１５】
したがって、スイッチ２のパケットの転送処理は、以下の通りとなる。（１）スイッチ２は、受信パケットの宛先ＩＰアドレスをキーとしてルーティングテーブルを検索し、出力ポートと、ネクストホップのＩＰアドレスとを取得する。（２）スイッチ２は、ネクストホップのＩＰアドレスをキーとして、ＡＲＰテーブルを検索し、ネクストホップのＭＡＣアドレスを宛先ＭＡＣアドレスとして取得する。
【００１６】
スイッチ２から出力される際に、パケットの宛先ＭＡＣアドレス、送信元ＭＡＣアドレスは、それぞれ、ネクストホップのＭＡＣアドレス、スイッチ２のＭＡＣアドレスに書き
換えられる。
【００１７】
図３は、ＯｐｅｎＦｌｏｗに対応するもののコントローラ３のフローエントリの形式には対応していないスイッチ２のフローエントリの一例を示す図である。図３に示される例では、スイッチ２は、ルーティングテーブルに相当するフローテーブル＃０とＡＲＰテーブルに相当するフローテーブル＃１とを保持する。
【００１８】
図３のフローテーブル＃０のフローエントリの「Ｍａｔｃｈ」の「OFPXMT_OFB_ETH_TYPE=0x0800」、「OFPXMT_OFB_IPv4_DST=［宛先ＩＰアドレス］」によって、宛先ＩＰアドレスが［宛先ＩＰアドレス］であるＩＰｖ４パケットが定義されている。「Ｉｎｓｔｒｕｃｔｉｏｎ」の「Instruction Type=OFPIT_WRITE_METADATA」、「metadata=［ネクストホップＩＰアドレス］」によって、パケットのメタデータに［ネクストホップＩＰアドレス］を書き込むことが指示されている。ｍｅｔａｄａｔａは、「Ｍａｔｃｈ」のフィールドの一つである。「Ｉｎｓｔｒｕｃｔｉｏｎ」の「Instruction Type=OFPIT_GOTO_TABLE」、
「Table ID=1」によって、フローテーブル＃１を参照することが指示されている。
【００１９】
図３のフローテーブ＃１のフローエントリの「Ｍａｔｃｈ」の「OFPIT_OFB_METADATA=
［ネクストホップＩＰアドレス］」によって、ｍｅｔａｄａｔａに［ネクストホップＩＰアドレス］が設定されているパケットが定義されている。「Ｉｎｓｔｒｕｃｔｉｏｎ」では、送信元ＭＡＣアドレスを［自ＭＡＣアドレス］に、宛先ＭＡＣアドレスを［宛先ＭＡＣアドレス］に設定して、［出力先ポート番号］のポートから出力することが指示されている。
【００２０】
すなわち、図３に示されるフローテーブル＃０、＃１は、宛先ＩＰアドレスが［宛先ＩＰアドレス］であるＩＰｖ４パケットを、送信元ＭＡＣアドレスを［自ＭＡＣアドレス］、宛先ＭＡＣアドレスを［宛先ＭＡＣアドレス］に設定して、［出力先ポート番号］から出力する、ことを示す。
【００２１】
図１に示されるコントローラ３のフローエントリと、図３に示されるスイッチ２のフローエントリとを比較すると、［宛先ＩＰアドレス］、［自ＭＡＣアドレス］、［宛先ＭＡＣアドレス］、［出力先ポート番号］は、コントローラ３のフローエントリに含まれている。しかしながら、［ネクストホップＩＰアドレス］は、コントローラ３のフローエントリには含まれておらず、不足している。そのため、スイッチ２にコントローラ３から図１に示されるフローエントリが通知されたとしても、スイッチ２は、ネクストホップＩＰアドレスを取得できず、フローテーブル＃０、＃１のエントリを作成することができない。
【００２２】
図４は、ＯｐｅｎＦｌｏｗをサポートしていないスイッチ２のルーティングテーブル及びＡＲＰテーブルの一例を示す図である。スイッチ２がＯｐｅｎＦｌｏｗをサポートしていないスイッチである場合には、スイッチ２は、ルーティングテーブルとＡＲＰテーブルとを保持する。
【００２３】
図４には、ルーティングテーブルとＡＲＰテーブルとのパケットの転送に用いられるエントリが示されている。パケットの転送に用いられるルーティングテーブルとＡＲＰテーブルとのエントリは、ネクストホップＩＰアドレスによって、紐づけされている。
【００２４】
図１に示されるコントローラ３のフローエントリと、図４に示されるスイッチ２のルーティングテーブルとＡＲＰテーブルとのエントリとを比較すると、［宛先ＩＰアドレス］、［宛先ＭＡＣアドレス］、［出力先ポート番号］は、コントローラ３のフローエントリに含まれている。しかしながら、［ネクストホップＩＰアドレス］は、コントローラ３のフローエントリには含まれていない。したがって、コントローラ３から通知されるフロー
エントリは、スイッチ２にとっては、情報が不足していることがわかる。
【００２５】
本発明の一態様は、コントローラからのパケット転送情報の形式に対応していないスイッチを、コントローラにより制御可能とする変換装置及び変換方法を提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明の態様の一つは、変換装置である。変換装置は、コントローラからスイッチへ送信される、パケット転送情報の追加指示を受信する。スイッチは、ＩＰアドレスとネクストホップＩＰアドレスとの対応付けと、ＩＰアドレスとＭＡＣアドレスとの対応付けと、に基づいてパケットの転送を行う。パケット転送情報には、パケットの転送先となる宛先ＩＰアドレスと宛先ＭＡＣアドレスとが含まれる。変換装置は、コントローラからスイッチへ送信されるパケット転送情報の追加指示を受信した場合に、ネクストホップＩＰアドレスとして用いる擬似ＩＰアドレスを取得し、宛先ＩＰアドレスと擬似ＩＰアドレスとの第１の対応付け、及び、擬似ＩＰアドレスと宛先ＭＡＣアドレスとの第２の対応付けを生成し、第１の対応付け及び第２の対応付けの追加指示を、スイッチに送信する制御部を備える。
【発明の効果】
【００２７】
開示の変換装置及び変換方法によれば、コントローラからのパケット転送情報の形式に対応していないスイッチを、コントローラにより制御可能とする。
【図面の簡単な説明】
【００２８】
【図１】ＳＤＮネットワークの一例を示す図である。
【図２】コントローラのフローエントリの形式に対応していないスイッチにおけるパケットの転送処理の一例を示す図である。
【図３】ＯｐｅｎＦｌｏｗに対応するもののコントローラのフローエントリの形式には対応していないスイッチのフローエントリの一例を示す図である。
【図４】ＯｐｅｎＦｌｏｗをサポートしていないスイッチのルーティングテーブル及びＡＲＰテーブルの一例を示す図である。
【図５】第１実施形態に係る通信ネットワークの構成例を示す図である。
【図６】ＯＦエージェントのハードウェア構成の一例を示す図である。
【図７】ＯＦエージェントの機能構成の一例を示す図である。
【図８Ａ】制御部の、パケット転送情報を含むフローエントリを含むＦｌｏｗＭｏｄ情報を受信した場合の処理である。
【図８Ｂ】制御部の、パケット転送情報を含むフローエントリを含むＦｌｏｗＭｏｄ情報を受信した場合の処理である。
【図９】擬似ＩＰアドレス生成処理のフローチャートの一例である。
【図１０Ａ】ＯＦエージェントにおける処理のシーケンスの一例を示す図である。
【図１０Ｂ】ＯＦエージェントにおける処理のシーケンスの一例を示す図である。
【図１１】具体例における環境設定を示す図である。
【図１２】具体例において、コントローラからスイッチに送信されるフローエントリの一例を示す図である。
【図１３】具体例における擬似ＩＰアドレス生成処理の一例を示す図である。
【図１４】ルーティングテーブル及びＡＲＰテーブルのエントリ作成処理の一例を示す図である。
【図１５】スイッチがＯｐｅｎＦｌｏｗをサポートしていない場合のＣＬＩ作成処理の一例を示す図である。
【図１６】スイッチがＯｐｅｎＦｌｏｗをサポートしているもののコントローラのフローエントリの形式に対応していない場合の、ルーティングテーブルのエントリの追加のためのフローエントリ作成処理の一例を示す図である。
【図１７】スイッチがＯｐｅｎＦｌｏｗをサポートしているもののコントローラのフローエントリの形式に対応していない場合の、ＡＲＰテーブルのエントリの追加のためのフローエントリ作成処理の一例を示す図である。
【発明を実施するための形態】
【００２９】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００３０】
＜第１実施形態＞
図５は、第１実施形態に係る通信ネットワークの構成例を示す図である。通信ネットワーク１００は、ＯＦエージェント１、スイッチ２、コントローラ３、ルータ４、ネットワーク機器５を含む。スイッチ２は、コントローラ３のフローエントリの形式に対応していない、レイヤ３を処理可能なスイッチである。スイッチ２は、ルーティングテーブル及びＡＲＰテーブル、又は、それらに相当するフローテーブルを有する。ルータ４は、ＯｐｅｎＦｌｏｗをサポートしておらず、コントローラ３の制御対象ではない。ネットワーク機器５は、例えば、ＰＣ等の端末である。スイッチ２、ルータ４、ネットワーク機器５はデータプレーンにおいて接続されている。
【００３１】
ＯＦエージェント１は、コントロールプレーンにおいて、コントローラ３とスイッチ２との間に存在し、コントローラ３とスイッチ２とに接続する。ＯＦエージェント１は、コントローラ３が送信したフローエントリを、スイッチ２が制御可能な形式のフローエントリ又はＣＬＩ（Command Line Interface）に変換する。上述のように、コントローラ３から通知されるパケット転送情報を含むフローエントリには、ネクストホップのＩＰアドレスが含まれていないため、コントローラ３のフローエントリの形式に対応していないスイッチ２に通知するフローエントリ又はＣＬＩを作成できないという問題がある。
【００３２】
第１実施形態では、ＯＦエージェント１は、コントローラ３からパケット転送情報を含むフローエントリを受信した場合には、ネクストホップＩＰアドレスを擬似的に生成する。ＯＦエージェント１は、擬似的に生成したネクストホップＩＰアドレスを用いて、スイッチ２へ通知するフローエントリ又はＣＬＩを生成する。
【００３３】
なお、図５に示される例において、コントローラ３とスイッチ２とは、ＯＦエージェント１の存在を認識していない。また、第１実施形態において、スイッチ２とＯＦエージェント１間は、ポイントツーポイント接続であるとする。
【００３４】
＜装置構成＞
図６は、ＯＦエージェント１のハードウェア構成の一例を示す図である。ＯＦエージェント１は、例えば、レイヤ２スイッチ、レイヤ３スイッチ、汎用のコンピュータ、又は、専用のコンピュータである。図６では、ＯＦエージェント１が汎用コンピュータであることを想定したハードウェア構成が示されている。ＯＦエージェント１は、ＣＰＵ（Central Processing Unit）１０１、記憶装置１０２、入力装置１０３、出力装置１０４、通信
装置１０５、通信ポート１０６を備える。ＣＰＵ  １０１、記憶装置１０２、入力装置１０３、出力装置１０４、通信装置１０５はバスによって電気的に接続される。ＯＦエージェント１は、「変換装置」の一例である。
【００３５】
記憶装置１０２は、主記憶装置１０２Ａと補助記憶装置１０２Ｂを含む。主記憶装置１０２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）を含む。ＲＡＭは、例えば、ＤＲＡＭ（Dynamic RAM）、ＳＲＡＭ（Static RAM）、ＳＤＲＡＭ（Synchronous  DRAM）、のような半導体メモリである。主記憶装置１０２ＡのＲＡＭは、ＣＰＵ  
１０１に、ＲＯＭや補助記憶装置１０２Ｂに格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。
【００３６】
補助記憶装置１０２Ｂは、例えば、ＯＳ（Operating System）、フローエントリ変換プログラム、その他アプリケーションプログラム、各プログラムの実行に際してＣＰＵ  １０１が使用するデータを格納する。補助記憶装置１０２Ｂは、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、又はハードディスクドライブ（Hard Disk Drive）等の不揮発性の記憶媒体である。フローエントリ変換プログラムは、コントローラ３からのパケット転送情報を含むフローエントリをスイッチ２の制御可能な形式に変換するためのプログラムである。
【００３７】
入力装置１０３は、例えば、キーボード、マウス等のポインティングデバイスを含む。入力装置１０３から入力されたデータは、ＣＰＵ  １０１に出力される。
【００３８】
ＣＰＵ  １０１は、主記憶装置１０２ＡのＲＯＭ、又は、補助記憶装置１０２Ｂに保持されたＯＳやプログラムをＲＡＭにロードして実行することによって、様々な処理を実行する。ＣＰＵ  １０１は、複数であってもよい。ＣＰＵ  １０１は、「制御部」の一例である。
【００３９】
出力装置１０４は、ＣＰＵ  １０１の処理の結果を出力する。出力装置１０４は、ディスプレイ、プリンタを含む。
【００４０】
通信装置１０５は、例えば、光ケーブル、ＬＡＮ（Local Area Network）ケーブル等の有線のネットワーク回線等の通信ポート１０６と接続し、通信ポート１０６から入力される電気信号をパケット（ビット列）に変換する回路である。なお、第１実施形態では、ＯＦエージェント１は、コントローラ６、スイッチ２とそれぞれ異なる通信ポート１０６で接続している。
【００４１】
なお、図６に示されるＯＦエージェント１のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて、適宜、構成要素の省略や置換、追加が可能である。例えば、ＯＦエージェント１は、可搬記録媒体駆動装置を備え、ＳＤカード等の可搬記録媒体を補助記憶装置の一つとして使用してもよい。
【００４２】
なお、スイッチ２、コントローラ３のハードウェア構成は、ＯＦエージェント１とほぼ同様である。スイッチ２は、例えば、ルータ、レイヤ３スイッチ、ＳＤＮスイッチである。コントローラ３は、例えば、専用又は汎用のコンピュータである。スイッチ２及びコントローラ３は、少なくともＣＰＵ、主記憶装置、補助記憶装置、通信装置、通信ポートを備える。各ハードウェア構成要素については、概要はＯＦエージェント１と同様であり、説明を省略する。スイッチ２は、「スイッチ」の一例である。コントローラ３は、「コントローラ」の一例である。
【００４３】
図７は、ＯＦエージェント１の機能構成の一例を示す図である。ＯＦエージェント１は、機能構成として、インタフェース制御部１１、ＯＦ制御部１２、ＣＬＩ/ＯＦ制御部１
３、制御部１４、擬似ＩＰアドレス制御部１５、擬似ＩＰアドレステーブル１６、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９を備える。これらは、ＣＰＵ  １０１が補助記憶装置１０２Ｂに格納されるフローエントリ変換プログラムを実行することによって達成される機能である。
【００４４】
インタフェース制御部１１は、インタフェースから入力されたパケットをＯＦ制御部１２又はＣＬＩ/ＯＦ制御部１３に振り分ける。第１実施形態では、ＯＦエージェント１は
、コントローラ３とスイッチ２とを異なる通信ポート１０６で接続する。例えば、インタフェース制御部１１は、ＯＦ制御部１２及びＣＬＩ／ＯＦ制御部１３それぞれと、使用するインタフェースとの対応付けを取得している。インタフェース制御部１１は、ＯＦ制御部１２、ＣＬＩ/ＯＦ制御部１３から入力されるパケットについては、それぞれに対応付
けられている使用インタフェースに出力する。また、インタフェース制御部１１は、各インタフェースによって受信されたパケットを、例えば、レイヤ４情報に従って、ＯＦ制御部１２又はＣＬＩ/ＯＦ制御部１３のいずれに出力するか決定する。レイヤ４情報は、例
えば、ＴＣＰ（Transmission Control Protocol）／ＵＤＰ（User Datagram Protocol）
のポート番号である。
【００４５】
ＯＦ制御部１２は、コントローラ３からスイッチ２に送信されるＯｐｅｎＦｌｏｗメッセージを解析して、ＯｐｅｎＦｌｏｗメッセージの内容を制御部１４に出力する。例えば、コントローラ３からスイッチ２に送信されたＦｌｏｗＭｏｄの場合には、ＯＦ制御部１２は、ＦｌｏｗＭｏｄに含まれるコマンドとフローエントリとを取り出して、ＦｌｏｗＭｏｄ情報として、制御部１４に出力する。
【００４６】
また、スイッチ２がＯｐｅｎＦｌｏｗに対応しているスイッチである場合には、ＯＦ制御部１２には、スイッチ２からコントローラ３に送信されるＯｐｅｎＦｌｏｗメッセージの内容が、制御部１４から入力される。ＯＦ制御部１２は、制御部１４からの入力内容を含む、コントローラ３のサポートする形式のＯｐｅｎＦｌｏｗのメッセージを生成して、インタフェース制御部１１に出力する。
【００４７】
制御部１４は、ＯＦ制御部１２又はＣＬＩ／ＯＦ制御部１３から入力されるＯｐｅｎＦｌｏｗメッセージの内容に応じた処理を行う。ＯｐｅｎＦｌｏｗメッセージが、コントローラ３からスイッチ２に送信されたＦｌｏｗＭｏｄである場合には、制御部１４には、ＦｌｏｗＭｏｄに含まれているコマンドとフローエントリとを含むＦｌｏｗＭｏｄ情報が入力される。ＦｌｏｗＭｏｄに含まれるコマンドには、エントリの追加、変更、削除等がある。
【００４８】
制御部１４は、コントローラ３からスイッチ２に通知されるＦｌｏｗＭｏｄ情報に、フローエントリの追加のコマンドと、パケット転送情報を含むフローエントリとが含まれる場合には、擬似ＩＰアドレス制御部１５に、擬似ＩＰアドレス取得要求を出力し、擬似ＩＰアドレスを取得する。ＦｌｏｗＭｏｄ情報に含まれるフローエントリにパケット転送情報が含まれることは、例えば、フローエントリ内に出力ポートを指定する記述「ＯＦＰＡＴ＿ＯＵＴＰＵＴ」があることによって判定される。
【００４９】
制御部１４は、取得した擬似ＩＰアドレスを用いて、ルーティングテーブル１８とＡＲＰテーブル１７とのエントリを作成する。制御部１４は、作成したルーティングテーブル１８及びＡＲＰテーブル１７のエントリに相当するＣＬＩ又はフローテーブルのスイッチ２への送信要求を、ＣＬＩ／ＯＦ制御部１３に出力する。
【００５０】
制御部１４は、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９の管理を行う。制御部１４は、擬似ＩＰアドレスを用いてＡＲＰテーブル１７、ルーティングテーブル１８のエントリを作成した場合には、作成したエントリをＡＲＰテーブル１７、ルーティングテーブル１８に追加する。また、制御部１４は、フローテーブル１８に、ＦｌｏｗＭｏｄ情報に含まれているフローエントリを追加する。
【００５１】
制御部１４は、コントローラ３からスイッチ２に通知される、フローエントリの削除のコマンドとパケット転送情報を含むフローエントリとを含むＦｌｏｗＭｏｄ情報の入力を受ける場合がある。この場合には、制御部１４は、ＡＲＰテーブル１７、ルーティングテ
ーブル１８、フローテーブル１９それぞれの該当のエントリを削除する。また、制御部１４は、ＡＲＰテーブル１７、ルーティングテーブル１８の削除対象のエントリについての削除要求をＣＬＩ／ＯＦ制御部１３に出力する。また、制御部１４は、ＡＲＰテーブル１７のエントリの削除によって使用されなくなった擬似ＩＰアドレスの解放要求を擬似ＩＰアドレス制御部１５に通知する。
【００５２】
ただし、ＡＲＰテーブル１７のエントリについては、ルーティングテーブル１８に削除対象のエントリと同じ擬似ＩＰアドレスを有するエントリが存在する場合には、ＡＲＰテーブル１７のエントリは削除されない。
【００５３】
擬似ＩＰアドレス制御部１５は、制御部１４からの擬似ＩＰアドレス取得要求に従って、擬似ＩＰアドレスを取得する。擬似ＩＰアドレスは、ネクストホップのＩＰアドレスとみなして用いられる、実体の存在しないＩＰアドレスである。擬似ＩＰアドレスとして使用可能なＩＰアドレスは、スイッチ２のポートごとに、擬似ＩＰアドレステーブル１６にプールされている。スイッチ２はレイヤ３以上の装置であるので、ポートごとにネットワークアドレスが異なるためである。擬似ＩＰアドレス制御部１５は、要求対象のポートに対応する擬似ＩＰアドレステーブル１６から未使用の擬似ＩＰアドレスを選択し、制御部１４に通知する。
【００５４】
ＣＬＩ／ＯＦ制御部１３は、制御部１４から入力される要求に応じて、スイッチ２に通知するＣＬＩ又はフローエントリを生成し、インタフェース制御部１１に出力する。ＣＬＩ／ＯＦ制御部１３は、予め、スイッチ２に通知するＣＬＩ又はフローエントリのフォーマットを保持しており、フォーマットに制御部１４から通知される情報を埋め込んで、スイッチ２に通知するＣＬＩ又はフローエントリを生成する。
【００５５】
また、スイッチ２がＯｐｅｎＦｌｏｗに対応している場合には、ＣＬＩ／ＯＦ制御部１３には、スイッチ２からコントローラ３に送信されるＯｐｅｎＦｌｏｗメッセージがインタフェース制御部１１から入力される。ＣＬＩ／ＯＦ制御部１３は、スイッチ２から送信されたＯｐｅｎＦｌｏｗメッセージを解析して、ＯｐｅｎＦｌｏｗメッセージの内容を制御部１４に出力する。制御部１４は、ＣＬＩ／ＯＦ制御部１３から入力された内容に応じた処理を行い、処理結果をＯＦ制御部１２に出力する。
【００５６】
擬似ＩＰアドレステーブル１６は、主記憶装置１０２Ａ又は補助記憶装置１０２Ｂのいずれに記憶されてもよい。擬似ＩＰアドレステーブル１６は、スイッチ２のポートごとに作成される。擬似ＩＰアドレステーブル１６は、エントリに、他の装置によって使用されていないＩＰアドレスと、ＩＰアドレスの使用状態とを含む。ＩＰアドレスの使用状態は、例えば、「未使用」と「使用中」とがある。擬似ＩＰアドレステーブル１６内のＩＰアドレスが擬似ＩＰアドレスとして選択されると、選択されたＩＰアドレスの使用状態は、擬似ＩＰアドレス制御部１５によって、「未使用」から「使用中」に変更される。擬似ＩＰアドレステーブル１６内のＩＰアドレスが擬似ＩＰアドレスとして使用されなくなると、該ＩＰアドレスの使用状態は、擬似ＩＰアドレス制御部１５によって、「使用中」から「未使用」に変更される。擬似ＩＰアドレステーブル１６は、「記憶部」の一例である。
【００５７】
ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９は、主記憶装置１０２Ａ又は補助記憶装置１０２Ｂのいずれに格納されてもよい。ＡＲＰテーブル１７は、ＩＰアドレスとＭＡＣアドレスとの対応付けを保持する。ルーティングテーブル１８は、ＩＰアドレスと、出力ポートと、ネクストホップＩＰアドレスとの対応付けを保持する。ＡＲＰテーブル１７内のＩＰアドレス、及び、ルーティングテーブル１８内のネクストホップＩＰアドレスは、擬似ＩＰアドレスである。フローテーブル１９は、フローエントリを保持する。
【００５８】
ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９は、スイッチ２に保持されるものと同じデータ構造であり、コントローラ３から通知されるフローエントリにしたがって作成、更新される。したがって、結果的に、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９は、スイッチ２のＡＲＰテーブル、ルーティングテーブル、フローテーブルと同じ内容となる。ＡＲＰテーブル１７は、「第２の記憶部」の一例である。ルーティングテーブル１８は、「第１の記憶部」の一例である。
【００５９】
＜処理の流れ＞
図８Ａ及び図８Ｂは、制御部１４の、パケット転送情報を含むフローエントリを含むＦｌｏｗＭｏｄ情報を受信した場合の処理である。図８Ａに示される処理は、制御部１４に、ＯＦ制御部１２からＦｌｏｗＭｏｄ情報が入力されると開始される。なお、図８Ａ及び図８Ｂに示される処理の主体は、フローエントリ変換プログラムを実行するＣＰＵ  １０１であるが、便宜上、機能構成の一つである制御部１４を主体として説明する。
【００６０】
ＯＰ１では、制御部１４は、ＦｌｏｗＭｏｄ情報を取得する。ＯＰ２では、制御部１４は、ＦｌｏｗＭｏｄ情報が追加のコマンドとパケット転送情報を含むフローエントリとを含むか否かを判定する。ＦｌｏｗＭｏｄ情報が追加のコマンドとパケット転送情報を含むフローエントリとを含む場合には（ＯＰ２：ＹＥＳ）、処理がＯＰ３に進む。ＦｌｏｗＭｏｄ情報が追加のコマンドとパケット転送情報を含むフローエントリとを含むものでない場合には（ＯＰ２：ＮＯ）、処理がＯＰ１０に進む。追加のコマンドとパケット転送情報を含むフローエントリとを含むＦｌｏｗＭｏｄは、「追加指示」の一例である。
【００６１】
ＯＰ３では、制御部１４は、擬似ＩＰアドレス取得要求を擬似ＩＰアドレス制御部１５に出力する。ＯＰ４では、制御部１４は、擬似ＩＰアドレス制御部１５から、擬似ＩＰアドレスを取得する。
【００６２】
ＯＰ５では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれているフローエントリをフローテーブル１９に追加する。
【００６３】
ＯＰ６では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれているフローエントリと擬似ＩＰアドレスとから、ルーティングテーブル１８のエントリを作成し、ルーティングテーブル１８に追加する。追加されるルーティングテーブル１８のエントリは、例えば、フローエントリに含まれる宛先ＩＰアドレスと、フローエントリに含まれる出力ポートと、ネクストホップＩＰアドレスとしての擬似ＩＰアドレスとの対応付けである。ＯＰ６において作成されるルーティングテーブル１８のエントリは、「第１の対応付け」の一例である。
【００６４】
ＯＰ７では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれているフローエントリと擬似ＩＰアドレスとから、ＡＲＰテーブル１７のエントリを作成し、ＡＲＰテーブル１７に追加する。追加されるＡＲＰテーブル１７のエントリは、例えば、擬似ＩＰアドレスと、フローエントリに含まれる宛先ＭＡＣアドレスとの対応付けである。ＯＰ７において作成されるＡＲＰテーブル１７のエントリは、「第２の対応付け」の一例である。
【００６５】
ＯＰ８では、制御部１４は、ＯＰ６において追加されたルーティングテーブル１８のエントリの送信要求をＣＬＩ／ＯＦ制御部１３に出力する。ＯＰ９では、制御部１４は、ＯＰ７において追加されたＡＲＰテーブル１７のエントリの送信要求をＣＬＩ／ＯＦ制御部１３に出力する。これによって、ＣＬＩ／ＯＦ制御部１３によって、ルーティングテーブル１８及びＡＲＰテーブル１７のエントリに相当するＣＬＩ又はフローエントリが作成され、スイッチ２に通知される。その後、図８Ａに示される処理が終了する。
【００６６】
ＯＰ１０では、制御部１４は、ＦｌｏｗＭｏｄ情報が削除又は変更のコマンドとパケット転送情報を含むフローエントリとを含むか否かを判定する。ＦｌｏｗＭｏｄ情報が削除又は変更のコマンドとパケット転送情報を含むフローエントリとを含む場合には（ＯＰ１０：ＹＥＳ）、処理が図８ＢのＯＰ１１に進む。ＦｌｏｗＭｏｄ情報が追加又は変更のコマンドとパケット転送情報を含むフローエントリとを含むものでない場合には（ＯＰ１０：ＮＯ）、制御部１４がＦｌｏｗＭｏｄ情報の内容に応じた処理を行い、図８Ａに示される処理が終了する。
【００６７】
図８Ｂに示される処理は、ＦｌｏｗＭｏｄ情報が削除又は変更のコマンドとパケット転送情報を含むフローエントリとを含む場合の処理である。ＯＰ１１では、制御部１４は、削除又は変更対象のルーティングテーブル１８のエントリを特定し、該エントリについての削除指示の送信要求をＣＬＩ／ＯＦ制御部１３に出力する。ＯＰ１２では、制御部１４は、該当のエントリをルーティングテーブル１８から削除する。削除対象のルーティングテーブル１８のエントリは、ＩＰアドレスが、ＦｌｏｗＭｏｄ情報に含まれるフローエントリ内の宛先ＩＰアドレスとして指定されているアドレスに合致するエントリである。
【００６８】
ＯＰ１３では、制御部１４は、ＯＰ１２において削除したルーティングテーブル１８のエントリと同じ擬似ＩＰアドレスをネクストホップＩＰアドレスとして用いるエントリがあるか否かを判定する。削除されたルーティングテーブル１８のエントリと同じ擬似ＩＰアドレスをネクストホップＩＰアドレスとして用いるエントリがない場合は（ＯＰ１３：ＮＯ）、処理がＯＰ１４に進む。
【００６９】
削除されたルーティングテーブル１８のエントリと同じ擬似ＩＰアドレスをネクストホップＩＰアドレスとして用いるエントリがある場合は（ＯＰ１３：ＹＥＳ）、処理がＯＰ１７に進む。この場合には、該当の擬似ＩＰアドレスに関するＡＲＰテーブル１７のエントリは削除できないためである。
【００７０】
ＯＰ１４では、制御部１４は、削除又は変更対象のＡＲＰテーブル１７のエントリを特定し、該エントリについての削除指示の送信要求をＣＬＩ／ＯＦ制御部１３に出力する。ＯＰ１５では、制御部１４は、該当のエントリをＡＲＰテーブル１７から削除する。削除対象のＡＲＰテーブル１７のエントリは、ＩＰアドレスが、ＯＰ１２において削除されたルーティングテーブル１８のエントリのネクストホップＩＰアドレスとして用いられる擬似ＩＰアドレスに合致するエントリである。又は、削除対象のＡＲＰテーブル１７のエントリは、ＦｌｏｗＭｏｄ情報に含まれるフローエントリにおいて、宛先ＭＡＣアドレスとして指定されるＭＡＣアドレスを有するエントリである。
【００７１】
ＯＰ１６では、ＯＰ１５において削除されたＡＲＰテーブル１７のエントリに含まれる擬似ＩＰアドレスが、使用されなくなったので、制御部１４は、擬似ＩＰアドレス制御部１５に、該当の擬似ＩＰアドレスの解放要求を出力する。擬似ＩＰアドレスの解放要求を受けると、擬似ＩＰアドレス制御部１５は、該当の擬似ＩＰアドレスの使用状態を「使用中」から「未使用」に変更する。
【００７２】
ＯＰ１７では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれるフローエントリに合致するフローエントリをフローテーブル１９から削除する。
【００７３】
ＯＰ１８では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれるコマンドが変更であるか否かを判定する。ＦｌｏｗＭｏｄ情報に含まれるコマンドが変更である場合には（ＯＰ１８：ＹＥＳ）、処理が図８ＡのＯＰ３に進む。ＦｌｏｗＭｏｄ情報に含まれるコマンドが変更でない、すなわち、削除である場合には（ＯＰ１８：ＮＯ）、図８Ｂに示される処理
が終了する。
【００７４】
図８Ａ及び図８Ｂに示される処理は、一例であって、処理の実行順等は、適宜入れ替わってもよい。例えば、図８ＡのＯＰ５、ＯＰ６、ＯＰ７はどのような順で実行されてもよい。例えば、図８ＡのＯＰ７とＯＰ８との順番が入れ替わってもよい。例えば、図８ＢのＯＰ１１とＯＰ１２との処理は、実行順が入れ替わってもよい。例えば、図８ＢのＯＰ１４とＯＰ１５の処理は、実行順が入れ替わってもよい。
【００７５】
なお、図８Ａ及び図８Ｂの処理では、ＦｌｏｗＭｏｄ情報に含まれるコマンドが変更である場合には、フローエントリの削除処理（図８Ｂ、ＯＰ１１〜ＯＰ１７）の次にフローエントリの追加の処理（図８Ａ、ＯＰ３〜ＯＰ９）が行われる。ただし、ＦｌｏｗＭｏｄ情報に含まれるコマンドが変更である場合の処理はこれに限定されない。スイッチ２の仕様によっては、制御部１４は、フローエントリを削除せずに、直接変更させるように、ＡＲＰテーブルエントリ変更指示送信要求又はルーティングテーブルエントリ変更指示送信要求を、ＣＬＩ／ＯＦ制御部１３に出力してもよい。
【００７６】
図９は、擬似ＩＰアドレス生成処理のフローチャートの一例である。図９に示される処理は、制御部１４から擬似ＩＰアドレス制御部１５に対して、擬似ＩＰアドレス取得要求が入力されると（例えば、図８ＡのＯＰ３）開始される。なお、図９に示される処理の主体は、フローエントリ変換プログラムを実行するＣＰＵ  １０１であるが、便宜上、機能構成の一つである擬似ＩＰアドレス制御部１５を主体として説明する。
【００７７】
ＯＰ２１では、擬似ＩＰアドレス制御部１５は、ＦｌｏｗＭｏｄ情報に含まれるフローエントリ内の［宛先ＭＡＣアドレス］の値を取得する。
【００７８】
ＯＰ２２では、擬似ＩＰアドレス制御部１５は、取得した宛先ＭＡＣアドレスをキーにして、ＡＲＰテーブル１７を検索し、取得した宛先ＭＡＣアドレスがＡＲＰテーブル１７に登録済みであるか否かを判定する。取得した宛先ＭＡＣアドレスがＡＲＰテーブル１７に既に登録済みである場合には（ＯＰ２２：ＹＥＳ）、処理がＯＰ２３に進む。取得した宛先ＭＡＣアドレスがＡＲＰテーブル１７に登録されていない場合には（ＯＰ２２：ＮＯ）、処理がＯＰ２４に進む。
【００７９】
ＯＰ２３の処理は、フローエントリ内の宛先ＭＡＣアドレスがＡＲＰテーブル１７に登録済みである場合の処理である。ＯＰ２３では、擬似ＩＰアドレス制御部１５は、ＡＲＰテーブル１７において宛先ＭＡＣアドレスに対応付けて登録されているＩＰアドレスを擬似ＩＰアドレスとして選択する。
【００８０】
ＯＰ２４及びＯＰ２５の処理は、フローエントリ内の宛先ＭＡＣアドレスがＡＲＰテーブル１７に登録されていない場合の処理である。ＯＰ２４では、擬似ＩＰアドレス制御部１５は、フローエントリ内の出力ポートに対応する擬似ＩＰアドレステーブル１６から未使用状態のＩＰアドレスを擬似ＩＰアドレスとして選択する。
【００８１】
ＯＰ２５では、擬似ＩＰアドレス制御部１５は、選択したＩＰアドレスの使用状態を「未使用」から「使用中」に変更する。
【００８２】
ＯＰ２６では、擬似ＩＰアドレス制御部１５は、擬似ＩＰアドレスとして選択したＩＰアドレスを、要求元である制御部１４に通知する。その後、図９に示される処理が終了する。
【００８３】
図１０Ａ及び図１０Ｂは、ＯＦエージェント１における処理のシーケンスの一例を示す
図である。図１０Ａ及び図１０Ｂは、コントローラ３からスイッチ２に送信されたＦｌｏｗＭｏｄに含まれるフローエントリについて、スイッチ２の制御可能な形式に変換して送信するまでの処理が示される。なお、ＯＦエージェント１において、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９は、いずれも空であることを前提とする。
【００８４】
Ｓ１では、インタフェース制御部１１が、コントローラ３からスイッチ２に送信されたＦｌｏｗＭｏｄを、コントローラ３と接続するインタフェースから受信する。Ｓ１で受信されるＦｌｏｗＭｏｄは、フローエントリの追加のコマンドと、パケット転送情報を含むフローエントリとを含むものとする。
【００８５】
Ｓ２では、インタフェース制御部１１は、受信したＦｌｏｗＭｏｄをＯＦ制御部１２に出力する。
【００８６】
Ｓ３では、ＯＦ制御部１２は、受信したＦｌｏｗＭｏｄから、コマンドとフローエントリとを取り出して、ＦｌｏｗＭｏｄ情報として、制御部１４に出力する。
【００８７】
Ｓ４では、制御部１４は、ＦｌｏｗＭｏｄ情報を受信し（図８Ａ、ＯＰ１）、追加のコマンドとパケット転送情報のフローエントリとが含まれるので（図８Ａ、ＯＰ２：ＹＥＳ）、擬似ＩＰアドレス制御部１５に擬似ＩＰアドレス取得要求を送信する。
【００８８】
Ｓ５では、擬似ＩＰアドレス制御部１５は、擬似ＩＰアドレステーブル１６から擬似ＩＰアドレスを選択する（図９、ＯＰ２１〜ＯＰ２４）。Ｓ６では、擬似ＩＰアドレス制御部１５は、擬似ＩＰアドレスを制御部１４に通知する（図９、ＯＰ２６）。
【００８９】
Ｓ７では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれるフローエントリと擬似ＩＰアドレスとに基づいて、ルーティングテーブル１８とＡＲＰテーブル１７とのエントリを作成する（図８Ａ、ＯＰ６、ＯＰ７）。
【００９０】
Ｓ８では、制御部１４は、ＦｌｏｗＭｏｄ情報に含まれるフローエントリをフローテーブル１９に追加する（図８Ａ、ＯＰ５）。図１０ＢのＳ９では、制御部１４は、作成したＡＲＰテーブル１７のエントリをＡＲＰテーブル１７に追加する（図８Ａ、ＯＰ７）。Ｓ１０では、制御部１４は、作成したルーティングテーブル１８のエントリをルーティングテーブル１８に追加する（図８Ａ、ＯＰ６）。
【００９１】
Ｓ１１では、制御部１４は、ＡＲＰテーブルのエントリに相当するＣＬＩ又はフローエントリの送信要求をＣＬＩ／ＯＦ制御部１３に通知する（図８Ａ、ＯＰ９）。
【００９２】
Ｓ１２では、ＣＬＩ／ＯＦ制御部１３は、制御部１４から通知されたＡＲＰテーブル１７のエントリについて、スイッチ２が制御可能な形式のＣＬＩ又はフローエントリ（ＦｌｏｗＭｏｄ）を作成する。Ｓ１３では、ＣＬＩ／ＯＦ制御部１３は、作成したＣＬＩ又はＦｌｏｗＭｏｄの送信要求をインタフェース制御部１１に出力する。Ｓ１４では、インタフェース制御部１１が、ＣＬＩ／ＯＦ制御部１３によって作成されたＣＬＩ又はＦｌｏｗＭｏｄを、スイッチ２と接続するインタフェースから出力する。
【００９３】
Ｓ１５では、制御部１４は、ルーティングテーブルのエントリに相当するＣＬＩ又はフローエントリの送信要求をＣＬＩ／ＯＦ制御部１３に通知する（図８Ａ、ＯＰ８）。Ｓ１６では、ＣＬＩ／ＯＦ制御部１３は、制御部１４から通知されたルーティングテーブル１８のエントリについて、スイッチ２が制御可能な形式のＣＬＩ又はフローエントリ（ＦｌｏｗＭｏｄ）を作成する。Ｓ１７では、ＣＬＩ／ＯＦ制御部１３は、作成したＣＬＩ又は
ＦｌｏｗＭｏｄの送信要求をインタフェース制御部１１に出力する。Ｓ１８では、インタフェース制御部１１が、ＣＬＩ／ＯＦ制御部１３によって作成されたＣＬＩ又はＦｌｏｗＭｏｄを、スイッチ２と接続するインタフェースから出力する。スイッチ２に送信される、ＣＬＩ又はＦｌｏｗＭｏｄは、「第１及び第２の対応付けの追加指示」の一例である。
【００９４】
＜具体例＞
図１１は、具体例における環境設定を示す図である。図１１では、スイッチ２は、コントローラ３からのフローエントリの形式に対応していないスイッチであることを前提とする。図１１には、スイッチ２の各ポートの設定情報、コントローラ３のルーティングテーブル及びＡＲＰテーブル（一部抜粋）、スイッチ２のネクストホップであるスイッチ２Ｘ、２Ｙの設定情報、各サブネットのネットワークアドレスが示されている。
【００９５】
図１２は、具体例において、コントローラ３からスイッチ２に送信されるフローエントリの一例を示す図である。図１２に示される例では、［宛先ＩＰアドレス］が２０２．０．０．０／２４に設定されている。２０２．０．０．０／２４は、ネクストホップスイッチ２Ｘの先に接続されるサブネットのネットワークアドレスである（図１１参照）。
【００９６】
図１２に示される例では、［宛先ＭＡＣアドレス］が３３３３．３３３３．３３３３に設定されている。ＭＡＣアドレス３３３３．３３３３．３３３３は、ネクストホップスイッチ２Ｘの、スイッチ２と接続するポートのＭＡＣアドレスである（図１１参照）。図１２に示される例では、［出力ポート］がポート＃１に指定されている。
【００９７】
すなわち、図１２に示されるフローエントリは、２０２．０．０．０／２４のサブネット宛てのパケットをルータ２Ｘの方向に転送させるためのものである。以降、具体例では、ＯＦエージェント１において、ＭＡＣアドレス３３３３．３３３３．３３３３のＡＲＰテーブル１７のエントリは、存在しないこととする。
【００９８】
図１３は、具体例における擬似ＩＰアドレス生成処理の一例を示す図である。擬似ＩＰアドレス制御部１５は、フローエントリによって［出力ポート］にポート＃１が指定されているので、ポート＃１の擬似ＩＰアドレステーブル１６を参照する。擬似ＩＰアドレス制御部１５は、ポート＃１の擬似ＩＰアドレステーブル１６から、使用状態が「未使用」のＩＰアドレス２０１．０．０．１０１を選択する（図９、ＯＰ２４）。擬似ＩＰアドレス制御部１５は、ポート＃１の擬似ＩＰアドレステーブル１６のＩＰアドレス２０１．０．０．１０１の使用状態を「使用中」に変更する（図９、ＯＰ２５）。
【００９９】
図１４は、ルーティングテーブル１８及びＡＲＰテーブル１７のエントリ作成処理の一例を示す図である。制御部１４は、フローエントリと擬似ＩＰアドレスとからルーティングテーブル１８及びＡＲＰテーブル１７のエントリを作成する（図８Ａ、ＯＰ６、ＯＰ７）。
【０１００】
ルーティングテーブル１８のエントリは、フローエントリから取得される［宛先ＩＰアドレス］と［出力ポート］に設定されている値と、ネクストホップのＩＰアドレスとしての擬似ＩＰアドレスと、を対応付けて作成される。図１４に示される例では、作成されるルーティングテーブル１８のエントリは、宛先ネットワークが２０２．０．０．０／２４、出力ポートがポート＃１、ネクストホップＩＰアドレスが２０１．０．０．１０１（擬似ＩＰアドレス）となる。
【０１０１】
ＡＲＰテーブル１７のエントリは、擬似ＩＰアドレスと、フローエントリから取得される［宛先ＭＡＣアドレス］の値と、を対応付けて作成される。図１４に示される例では、作成されるＡＲＰテーブル１７のエントリは、ＩＰアドレスが２０１．０．０．１０１（
擬似ＩＰアドレス）、ＭＡＣアドレスが３３３３．３３３３．３３３３となる。制御部１４は、作成したルーティングテーブル１８とＡＲＰテーブル１７とのエントリをＣＬＩ／ＯＦ制御部１３に出力する。
【０１０２】
図１５は、スイッチ２がＯｐｅｎＦｌｏｗをサポートしていない場合のＣＬＩ作成処理の一例を示す図である。ＣＬＩ／ＯＦ制御部１３は、ルーティングテーブル１８及びＡＲＰテーブル１７のエントリから、スイッチ２へ通知するＣＬＩを作成する（図１０Ｂ、Ｓ１２、Ｓ１６）。
【０１０３】
ルーティングテーブルにエントリを追加するためのＣＬＩのフォーマットは、例えば、「#ip route ［宛先ＩＰアドレス］［ネクストホップＩＰアドレス］［出力ポート］」である。ＡＲＰテーブルにエントリを追加するためのＣＬＩのフォーマットは、例えば、「#arp ［ネクストホップＩＰアドレス］［宛先ＭＡＣアドレス］」である。ＣＬＩ／ＯＦ
制御部１３は、これらのＣＬＩのフォーマットを保持しており、ＣＬＩフォーマットの所定の位置に値を設定することで、ＣＬＩを作成する。
【０１０４】
「#ip route ［宛先ＩＰアドレス］［ネクストホップＩＰアドレス］［出力ポート］」における［宛先ＩＰアドレス］には、作成されたルーティングテーブル１８のエントリの宛先ネットワークの値２０２．０．０．０／２４が設定される。［ネクストホップＩＰアドレス］には、作成されたルーティングテーブル１８のエントリのネクストホップＩＰアドレスの値２０１．０．０．１０１が設定される。［出力ポート］の指定は省略可能であるため、図１５では省略されている。［出力ポート］の指定が省略された場合には、スイッチ２は、ネクストホップのＩＰアドレスを参照して同様のネットワークアドレスを持つインタフェースを送信元として自動的に選択する。
【０１０５】
「#arp ［ネクストホップＩＰアドレス］［宛先ＭＡＣアドレス］」における［ネクス
トホップＩＰアドレス］には、作成されたＡＲＰテーブル１７のエントリのＩＰアドレスの値２０１．０．０．１０１が設定される。［宛先ＭＡＣアドレス］には、作成されたＡＲＰテーブル１７のエントリのＭＡＣアドレスの値３３３３．３３３３．３３３３が設定される。
【０１０６】
具体例において作成される、スイッチ２のルーティングテーブルにエントリを追加するためのＣＬＩは、「#ip route 202.0.0.0/24 201.0.0.101 e1」である。スイッチ２のＡ
ＲＰテーブルにエントリを追加するためのＣＬＩは、「#arp 201.0.0.101 3333.3333.3333」である。これらのＣＬＩによって、図１５に示されるもの同様のエントリが、スイッ
チ２のルーティングテーブル、ＡＲＰテーブルに追加される。
【０１０７】
なお、具体例では、エントリを追加する場合について説明されたが、エントリを削除する場合も、コントローラ３から通知されるフローエントリは追加の場合と同様であり、ＦｌｏｗＭｏｄに含まれるコマンドが「削除」となる。エントリを削除する場合のＣＬＩは、例えば、「#no ip route ［宛先ＩＰアドレス］［ネクストホップＩＰアドレス］［出
力ポート］」である。ＡＲＰテーブルにエントリを追加するためのＣＬＩは、例えば、「#no arp ［ネクストホップＩＰアドレス］［宛先ＭＡＣアドレス］」である。ＣＬＩ／ＯＦ制御部１３は、削除対象のＡＲＰテーブル１７及びルーティングテーブル１８のエントリから、ＡＲＰテーブル及びルーティングテーブルを削除するためのＣＬＩを作成する。なお、ＣＬＩは、スイッチ２の製造メーカー等によって異なり、図１５に示されるものに限定されない。
【０１０８】
図１６は、スイッチ２がＯｐｅｎＦｌｏｗをサポートしているもののコントローラ３のフローエントリの形式に対応していない場合の、ルーティングテーブルのエントリの追加
のためのフローエントリ作成処理の一例を示す図である。図１７は、スイッチ２がＯｐｅｎＦｌｏｗをサポートしているもののコントローラ３のフローエントリの形式に対応していない場合の、ＡＲＰテーブルのエントリの追加のためのフローエントリ作成処理の一例を示す図である。
【０１０９】
ＣＬＩ／ＯＦ制御部１３は、スイッチ２の制御可能なフローエントリのフォーマットを保持しており、該フローエントリのフォーマットの所定の位置に値を設定することで、スイッチ２の制御可能なフローエントリを作成する。
【０１１０】
図１６には、スイッチ２に通知される、ルーティングテーブル１８のエントリに相当するフローエントリが示される。スイッチ２に通知されるフローエントリの「Ｍａｔｃｈ」の「OFPXMT_OFB_IPV4_DST=202.0.0.0/24」における［宛先アドレス］である２０２．０．０．０／２４は、コントローラ３から通知されたフローエントリの「Ｍａｔｃｈ」の「OFPXMT_OFB_IPV4_DST=202.0.0.0/24」から取得される。「Ｉｎｓｔｒｕｃｔｉｏｎ」の「metadata=201.0.0.101」における［ネクストホップＩＰアドレス］である２０１．０．０．１０１は、擬似ＩＰアドレスから取得される。
【０１１１】
図１７には、スイッチ２に通知される、ＡＲＰテーブル１７のエントリに相当するフローエントリが示される。スイッチ２に通知されるフローエントリの「Ｍａｔｃｈ」の「OFPXMT_OFB_METADATA=201.0.0.101」における［ネクストホップＩＰアドレス］である２０
１．０．０．１０１は、擬似ＩＰアドレスから取得される。「Ｉｎｓｔｒｕｃｔｉｏｎ」の「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_SRC, Value=1111.1111.1111)」における[自
ＭＡＣアドレス]である１１１１．１１１１．１１１１は、コントローラ３から通知され
るフローエントリの「Ｉｎｓｔｒｕｃｔｉｏｎ」の「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_SRC, Value=1111.1111.1111)」から取得される。「Ｉｎｓｔｒｕｃｔｉｏｎ」の「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_DST, Value=3333.3333.3333)」における[宛先ＭＡ
Ｃアドレス]である３３３３．３３３３．３３３３は、コントローラ３から通知されるフ
ローエントリの「Ｉｎｓｔｒｕｃｔｉｏｎ」の「OFPAT_SET_FIELD(Type=OFPXMT_OFB_ETH_DST, Value=3333.3333.3333)」から取得される。
【０１１２】
なお、フローエントリを削除する場合には、ＣＬＩ／ＯＦ制御部１３は、削除対象のフローエントリに該当するルーティングテーブル１８及びＡＲＰテーブル１７のエントリに基づいて、スイッチ２へ通知されるフローエントリを作成する。作成されるフローエントリは、図１６、図１７に示されるものと同様であり、ＦｌｏｗＭｏｄのコマンドが「削除」となる。
【０１１３】
＜第１実施形態の作用効果＞
第１実施形態では、ＯＦエージェント１は、コントローラ３のフローエントリの形式に非対応なスイッチ２について、フローエントリの追加指示をＣＬＩ又はスイッチ２の制御可能なフローエントリの追加指示に変換する。変換の際に、ＯＦエージェント１は、ルーティングテーブルとＡＲＰテーブルとのリンクの役目を担うネクストホップＩＰアドレスを擬似的に生成する。これによって、コントローラ３のフローエントリの形式に非対応のスイッチ２はコントローラ３が指定する転送処理を行うことができ、コントローラ３のフローエントリの形式に非対応のスイッチ２をコントローラ３の制御下に置くことができる。
【０１１４】
ＯＦエージェント１は、擬似ＩＰアドレス用のＩＰアドレスとして、いずれの装置にも割り当てられていないＩＰアドレスをプールする。これによって、ＩＰアドレスの重複使用を抑制することができる。
【０１１５】
また、ＯＦエージェント１は、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９を保持しており、コントローラ３からのフローエントリの削除指示についても対応することができる。
【０１１６】
＜その他＞
第１実施形態では、ＯＦエージェント１は、単体の装置として説明された。ＯＦエージェント１は、例えば、ソフトウェアであり、スイッチ２に搭載されてもよい。すなわち、第１実施形態においてＯＦエージェント１が行う処理を、スイッチ２自身が行ってもよい。
【０１１７】
また、第１実施形態では、ＯＦエージェント１は、１対１でスイッチ２と接続するが、ＯＦエージェント１とスイッチ２とは、１対多で接続されてもよい。ＯＦエージェント１が複数のスイッチ２と接続する場合には、ＯＦエージェント１は、各スイッチ２について、擬似ＩＰアドレステーブル１６、ＡＲＰテーブル１７、ルーティングテーブル１８、フローテーブル１９を備えることになる。また、ＯＦエージェント１は、各スイッチ２の制御可能なＣＬＩまたはフローエントリのフォーマットを保持する。
【０１１８】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１１９】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１２０】
１        ＯＦエージェント
２        スイッチ
３        コントローラ
１１      インタフェース制御部
１２      ＯＦ制御部
１３      ＣＬＩ／ＯＦ制御部
１４      制御部
１５      擬似ＩＰアドレス制御部
１６      擬似ＩＰアドレステーブル
１７      ＡＲＰテーブル
１８      ルーティングテーブル
１９      フローテーブル
１０１    ＣＰＵ
１０２    記憶部
１０５    通信装置
【図１】
2017130722.tif 000003
【図２】
2017130722.tif 000004
【図３】
2017130722.tif 000005
【図４】
2017130722.tif 000006
【図５】
2017130722.tif 000007
【図６】
2017130722.tif 000008
【図７】
2017130722.tif 000009
【図８Ａ】
2017130722.tif 000010
【図８Ｂ】
2017130722.tif 000011
【図９】
2017130722.tif 000012
【図１０Ａ】
2017130722.tif 000013
【図１０Ｂ】
2017130722.tif 000014
【図１１】
2017130722.tif 000015
【図１２】
2017130722.tif 000016
【図１３】
2017130722.tif 000017
【図１４】
2017130722.tif 000018
【図１５】
2017130722.tif 000019
【図１６】
2017130722.tif 000020
【図１７】
2017130722.tif 000021