(57)【特許請求の範囲】
【請求項１】
処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部と、
受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部と、
前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーと、
前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに、前記ポリシーを登録するとともに、前記ポリシー管理部にて決定された暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するとともに、前記集約ツリーの前記探索したノードに前記処理規則を登録する処理規則集約部と、
前記処理規則集約部により作成された処理規則を格納する処理規則記憶部と、
前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、
を備えたパケット転送システム。
【請求項２】
前記処理規則集約部は、前記集約ツリーのポリシーを新たに登録したノードに対し親ノードに当たるノードに登録された処理規則を削除するとともに、前記パケット処理部に、前記処理規則記憶部から前記集約ツリーから削除した処理規則を削除させる請求項１のパケット転送システム。
【請求項３】
タイムアウトにより前記処理規則記憶部から前記処理規則を削除した場合、前記パケット処理部は、前記処理規則集約部に対して、処理規則を削除したことを通知し、
前記処理規則集約部は、前記通知された処理規則を前記集約ツリーから削除する請求項１または２のパケット転送システム。
【請求項４】
前記ポリシー記憶部と、前記ポリシー管理部と、前記集約ツリーと、前記処理規則集約部と、を備えた制御装置が、
前記処理規則記憶部および前記パケット処理部を備えた複数の転送装置毎に、前記処理規則を作成して配布する請求項１から３いずれか一のパケット転送システム。
【請求項５】
前記制御装置は、
前記ポリシー管理部に代えて、
前記複数の転送装置の構成情報および前記複数の転送装置を含んで構成されるネットワークトポロジに基づいて、パケットの転送経路を作成する経路作成部を備え、
前記転送経路作成部により作成されたパケットの転送経路を実現するマッチングキーを、前記処理規則集約部に入力して、前記転送装置毎に、処理規則を配布する請求項４のパケット転送システム。
【請求項６】
前記制御装置は、さらに、
前記複数の転送装置から前記処理規則を用いて記録したトラヒック情報を収集するトラヒック情報収集部を備え、
前記転送経路作成部は、前記収集したトラヒック情報に基づいて、パケットの転送経路を作成する請求項５のパケット転送システム。
【請求項７】
前記マッチングキーが、宛先ＩＰアドレス、送信元ＩＰアドレスのいずれかである請求項１から６いずれか一のパケット転送システム。
【請求項８】
処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部と、
受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部と、
前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーと、
前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに、前記ポリシーを登録するとともに、前記ポリシー管理部にて決定された暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するとともに、前記集約ツリーの前記探索したノードに前記処理規則を登録する処理規則集約部と、
前記処理規則集約部により作成された処理規則を格納する処理規則記憶部と、
前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、
を備えた制御装置。
【請求項９】
前記処理規則集約部は、前記集約ツリーの前記ポリシーを登録したノードに対し親ノードに当たるノードに登録された処理規則を削除するとともに、前記パケット処理部に、前記処理規則記憶部から前記集約ツリーから削除した処理規則を削除させる請求項８の制御装置。
【請求項１０】
処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部と、受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部と、前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーと、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに、前記ポリシーを登録するとともに、前記ポリシー管理部にて決定された暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するとともに、前記集約ツリーの前記探索したノードに前記処理規則を登録する処理規則集約部と、を備えた制御装置と接続され、
前記処理規則集約部により作成された処理規則を格納する処理規則記憶部と、
前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、を備えた転送装置。
【請求項１１】
処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーの前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーを記憶する記憶装置を備えたパケット転送システムにおける処理規則の作成方法であって、
前記ポリシーを、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに登録するステップと、
受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するステップと、
前記暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するステップと、を含む、
処理規則の作成方法。
【請求項１２】
処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーの前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーを記憶する記憶装置を備えたパケット転送システムに含まれるコンピュータに実行させるプログラムであって、
前記ポリシーを、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに登録する処理と、
受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定する処理と、
前記暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成する処理と、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１０−０６８９０２号（２０１０年３月２４日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、パケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラムに関し、特に、ポリシーに従ってフローを管理するコントロールプレーンと、通信処理を行うデータプレーンとを有するパケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラムに関する。
【背景技術】
【０００２】
特許文献１に複数のフローをまとめて１つのフロー束として扱うことが可能なパケット転送装置が開示されている。具体的には、同文献のパケット転送装置は、入力パケットのヘッダ情報から該入力パケットが属するフローを識別し、識別されたフローに個別または他の少なくとも１つのフローと共通のフロー束識別子を出力するフロー検出装置と、フロー束識別子と対応した複数の情報エントリを含む情報テーブルを備え、上記フロー検出装置から受信したフロー束識別子に基づいて、上記情報テーブルから１つの情報エントリを読み出し、所定の演算処理を行う制御装置とを有するとされている。【０００３】
非特許文献１、２には、同様に通信をエンドツーエンドのフローとして捉えるオープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献１、２参照）。オープンフローは、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。転送ノードとして機能するオープンフロースイッチは、制御装置と位置付けられるオープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１８２０４号公報
【非特許文献】
【０００５】
【非特許文献１】Nick McKeownほか７名、“OpenFlow: Enabling Innovation in Campus Networks”、［online］、［2010年2月15日検索］、インターネット〈URL：http://www.openflowswitch.org//documents/openflow-wp-latest.pdf〉
【非特許文献２】"OpenFlow Switch Specification" Version 0.9.0. (Wire Protocol 0x98) ［平成2010年2月15日検索］ 、インターネット〈URL：http://www.openflowswitch.org/documents/openflow-spec-v0.9.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１及び非特許文献１〜２の全開示内容はその引用をもって本書に繰込み記載する。
以下の分析は、本発明者によってなされたものである。
特許文献１にも指摘されているように、転送ノード、すなわちスイッチやルータがパケット転送等に用いる情報エントリの数が大きくなると、これらを保持するためのメモリの必要量が増えるとともに、その検索処理に時間が増大し、パケット転送処理能力が劣化するという問題点がある。【０００７】
また、上記フローエントリの増大は、ネットワークの障害やメンテナンスによるネットワークトポロジに変化が生じた際にも、その書き換え等に伴う管理負担が大きくなるという問題点を生じさせている。【０００８】
この点、特許文献１のパケット転送装置は、フロー束識別子を用いて帯域監視や統計情報収集を行うものであり、パケット処理に用いる情報エントリの数自体は削減されていない（同文献の段落００２３の「ルーティングテーブル」、図７参照）。【０００９】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、転送ノードが保持するパケット処理用のエントリの数を削減することのできるパケット転送システム、制御装置、転送装置、処理規則の作成方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の視点によれば、処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部と、受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部と、前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーと、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに、前記ポリシーを登録するとともに、前記ポリシー管理部にて決定された暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するとともに、前記集約ツリーの前記探索したノードに前記処理規則を登録する処理規則集約部と、前記処理規則集約部により作成された処理規則を格納する処理規則記憶部と、前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、を備えたパケット転送システムが提供される。【００１１】
本発明の第２の視点によれば、処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部と、受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部と、前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーと、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに、前記ポリシーを登録するとともに、前記ポリシー管理部にて決定された暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するとともに、前記集約ツリーの前記探索したノードに前記処理規則を登録する処理規則集約部と、前記処理規則集約部により作成された処理規則を格納する処理規則記憶部と、前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、を備えた制御装置が提供される。【００１２】
本発明の第３の視点によれば、上記した制御装置と接続され、前記制御装置により作成された処理規則を格納する処理規則記憶部と、前記処理規則集約部による前記集約ツリーへの処理規則の登録に従い、前記処理規則記憶部への処理規則の登録を実行するとともに、前記処理規則記憶部に格納された処理規則を参照してパケット処理を行うパケット処理部と、を備えた転送装置が提供される。【００１３】
本発明の第４の視点によれば、処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーの前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーを記憶する記憶装置を備えたパケット転送システムにおける処理規則の作成方法であって、前記ポリシーを、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに登録するステップと、受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するステップと、前記暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成するステップと、を含む、処理規則の作成方法が提供される。本方法は、入力パケットに適合する処理規則に従って当該入力パケットの処理を行うパケット転送システムという、特定の機械に結びつけられている。【００１４】
本発明の第５の視点によれば、処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーの前記マッチングキーとなる情報の長さに対応する深さを有し、ルートから分岐するノードとその階層がマッチングキーの値とマスク長を表し、個々のノードに処理規則またはポリシーを登録可能な集約ツリーを記憶する記憶装置を備えたパケット転送システムに含まれるコンピュータに実行させるプログラムであって、前記ポリシーを、前記集約ツリーの前記ポリシーのマッチングキーに対応するノードに登録する処理と、受信パケットについて、前記ポリシーを参照して、処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定する処理と、前記暫定マッチングキーに基づいて、前記集約ツリーをルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成する処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
本発明によれば、転送装置が保持する処理規則（フローエントリ）の数を削減することが可能となる。その理由は、集約ツリーを用いて、今後、作成されうる処理規則があることを意味する既存ポリシーのマッチングキーを包含しないとの条件下で、より短いマッチングキーを持つ処理規則を作成するように構成したためである。
【図面の簡単な説明】
【００１６】
【図１】本発明の概要を説明するための図である。
【図２】本発明で用いる集約ツリーの概略構成を表した図である。
【図３】本発明の第１の実施形態の構成を表したブロック図である。
【図４】本発明の第１の実施形態の動作説明に用いる簡略化された集約ツリーの構成を表した図である。
【図５】本発明の第１の実施形態における図４の集約ツリーへのポリシの登録処理の流れを表したフローチャートである。
【図６】本発明の第１の実施形態における図４の集約ツリーへの新規フローエントリの登録処理の流れを表したフローチャートである。
【図７】本発明の第１の実施形態の動作を段階的に説明するための図である。
【図８】図７の続図である。
【図９】図８の続図である。
【図１０】図９の続図である。
【図１１】図１０の続図である。
【図１２】本発明の第２の実施形態の構成を表したブロック図である。
【図１３】本発明の第３の実施形態の構成を表したブロック図である。
【発明を実施するための形態】
【００１７】
はじめに本発明の概要について説明する。以下、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。本発明は、図１に示すように、処理規則記憶部２１に記憶された処理規則の中から、受信パケットに適合するマッチングキーを持つ処理規則を参照してパケット処理を行うパケット処理部２２を含むデータプレーン１００Ｂと、前記処理規則を設定することにより、データプレーン１００Ｂを制御するコントロールプレーン１００Ａと、を有するパケット転送システムに適用できる。
【００１８】
より具体的には、コントロールプレーン１００Ａは、処理内容と、当該処理内容を適用するパケットを特定するためのマッチングキーと、を規定したポリシーを格納するポリシー記憶部１１と、前記ポリシー記憶部１１に格納されたポリシーを参照して、受信パケットに適用する処理内容と、当該処理内容を適用するパケットを特定するための暫定マッチングキーと、を決定するポリシー管理部１２と、前記ポリシー記憶部１１に格納されているポリシーまたは前記ポリシー管理部１２にて決定された処理規則をノードに登録可能なツリー構造を持つ集約ツリーを記憶する集約ツリー記憶部１３と、前記集約ツリー１３をルートからたどって、下位のノードにポリシーが登録されていないノードを探索し、当該ノードをマッチングキーとする処理規則を作成する処理規則集約部１４と、を含んで実現される。
【００１９】
図２は、マッチングキーとして、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ４）のＩＰアドレスを集約するために用いる集約ツリーの概略構成を示す図である。この場合、集約ツリーは、ＩＰアドレスの長さと同じ深さを持った２分木で構成され、ルートから辿ったノードの階層がマッチングキーとして用いるＩＰアドレスのマスク長を表し、各ノードがマッチングキーの値を表している。このような集約ツリーの個々のノードに処理規則またはポリシーを対応付けて管理する。
【００２０】
上記のような集約ツリーを用いて、処理規則に含まれるＩＰアドレスを上位ビットマスクで集約（アグリゲート）することにより、フローエントリの数を削減することができる。具体的には、以下のようにして、包含関係にある既存ポリシーとの調停を行う。
【００２１】
例えば、ポリシー記憶部１１に、Ｌｏｎｇｅｓｔ  Ｐｒｅｆｉｘ  Ｍａｔｃｈが必要な下記のエントリ（ポリシー）を持つＩＰルーティングテーブルが記憶されているものとする。
ポリシーＩＤ  ネットワークアドレス／マスク  送信先
１            １．１．１．０／２４          Ｐｏｒｔ０
２            １．１．０．０／１６          Ｐｏｒｔ１
【００２２】
この状態で、宛先ＩＰアドレス１．１．２．１を持つ未知のパケットを受信した場合を考える。Ｌｏｎｇｅｓｔ  Ｐｒｅｆｉｘ  Ｍａｔｃｈによると、前記未知のパケットは、ポリシーＩＤ２のエントリにマッチするため、Ｐｏｒｔ１へパケットを送信する処理内容を規定した処理規則が作成されてしまう。
【００２３】
例えばこの時、処理規則のマッチングキーを短くしようとして「１．１．０．０／１６」とすると、本来、ポリシーＩＤ１にマッチするフローのパケットが適切な宛先に送信できなくなってしまう（例えば、１．１．１．１のパケットがＰｏｒｔ１に送信されてしまう）。
【００２４】
そこで、本発明は、上述した集約ツリーを用いて、例えば、図２の集約ツリーのノード１−１（マッチングキーの上位ビットが０）と、ノード３−１（マッチングキーの上位ビットが０００）に、それぞれポリシーが登録されている状況において、マッチングキーが「００１１１１１・・・」である新しい受信パケットを受信した場合、処理規則集約部１４は、集約ツリーをルートから、ポリシー管理部１２より払い出された暫定マッチングキーの値に従い、ノード１−１、ノード２−１、ノード３−２・・・の順にたどっていき、下位のノードにポリシが登録されていないノード３−２に対応するマッチングキーを当該処理規則のマッチングキーとする（即ち、これ以上、下位のノードには降りない。）。このように、集約ツリーのＩＰアドレスに対応するノードに、既存ポリシーを登録した上で、下位のノードにポリシが登録されていない（つまり、既存のポリシーのマッチングキーを包含しない）ノードを探索することで、上記のような必要最小限の長さのマッチングキーを持つ処理規則を作成することが可能となる。
【００２５】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図３は、本発明の第１の実施形態の構成を表したブロック図である。
【００２６】
図３を参照すると、本発明の第１の実施形態のパケット転送システム１００は、フローを管理するコントロールプレーン１００Ａと、パケット転送を行うデータプレーン１００Ｂとから構成され、送信元装置２００から送信されるパケットを宛先装置３００に転送する。このようなパケット転送システムは、例えば、フロー単位でパケットの転送等を行うフローベーススイッチにより実現できる。
【００２７】
データプレーン１００Ｂは、フローエントリテーブル２１Ａと、パケット処理部２２Ａと、パケット入力部２３Ａと、パケット出力部２４Ａと、を含んで構成される。
【００２８】
パケット入力部２３Ａは送信元装置２００と接続されているポートであり、システムにとってフローの入り口となる。パケット出力部２４Ａは宛先装置３００と接続されているポートであり、システムにとってフローの出口となる。なお、図３では、パケット入力部２３Ａとパケット出力部２４Ａがそれぞれ１つあるものとしているが、パケット入力部とパケット出力部は複数存在し、それぞれが異なる送信元装置、宛先装置と接続されているものとする。
【００２９】
フローエントリテーブル２１Ａは、上述した処理規則記憶部２１に相当し、フローを特定するためのマッチングキーと、パケット処理内容とを対応付けたフローエントリ（処理規則）を格納するテーブルである。個々のフローエントリには、有効期限が設定されており、有効期限に示された期間、当該フローエントリに適合するパケットの受信が無い場合、パケット処理部２２Ａは、当該フローが終了したものとして（タイムアウト）、当該フローエントリを削除するものとする。このような仕組みとしては、非特許文献１、２のオープンフロースイッチにおいても採用されているものと同等のものを採用することができる。
【００３０】
パケット処理部２２Ａは、フローエントリテーブル２１Ａを参照して、受信パケットに適合するフローエントリを探し出し、そのパケット処理内容として定められた処理（上記複数のパケット出力部のうちの指定したパケット出力部からのパケット転送、廃棄、パケットヘッダの書き換え等）を実行する。パケット処理部２２Ａは、フローエントリテーブル２１Ａに、受信パケットに適合するフローエントリが無い場合、ポリシー管理部１２Ａに対して、受信パケットに適合するフローエントリの作成を要求する。パケット処理部２２Ａは、コントロールプレーン１００Ａからの指示に従って、フローエントリテーブル２１Ａへの新規フローエントリの登録を行う。また、パケット処理部２２Ａは、前記のように、有効期限に示された期間、当該フローエントリに適合するパケットの受信が無い場合、当該フローエントリを削除するとともに、削除したフローエントリをフロー集約部１４Ａに通知する。
【００３１】
なお、上記のように、各フローの開始パケット（適合するフローエントリが無いパケット）が、ポリシー管理部１２Ａに通知され、当該パケットのフローエントリが作成・フローエントリテーブル２１Ａに登録されることにより、同一フローのこれ以降のパケットの転送が実現される。
【００３２】
コントロールプレーン１００Ａは、図１のポリシー記憶部１１に相当するポリシーテーブル１１Ａと、ポリシー管理部１２Ａと、を含むポリシー管理レイヤと、図１の集約ツリー記憶部１３に相当するフロー集約ツリー１３Ａと、図１の処理規則集約部１４に相当するフロー集約部１４Ａと、を含むフロー集約レイヤとから構成される。
【００３３】
ポリシーテーブル１１Ａは、パケット処理部２２Ａからフローエントリの作成依頼を受けたパケットの内容から、パケットの転送先などの処理内容を決定するための情報が設定されたテーブルである。例えば、ルータやスイッチに保持されるルーティングテーブル等も、ポリシーテーブル１１Ａに相当する。
【００３４】
ポリシー管理部１２Ａは、ポリシーテーブル１１Ａに登録されているポリシーを管理するとともに、ポリシーテーブル１１Ａに変化が生じた場合、その内容をフロー集約レイヤに通知する機能を持つ。さらに、ポリシー管理部１２Ａは、パケット処理部２２Ａから、未知のパケットに対するフローエントリの作成依頼を受けた場合、ポリシーテーブル１１Ａを参照して、パケットの転送先などの処理内容と、当該未知のパケットの暫定マッチングキーをフロー集約部１４Ａに通知する。
【００３５】
フロー集約ツリー１３Ａは、パケットのマッチングキーとなる情報と対応する深さをもった２分木で構成され、ポリシーテーブル１１Ａに登録されているポリシーと、フローエントリテーブル２１Ａに登録されているフローエントリとを、それぞれツリーのノードに対応付けて登録可能なツリーである。
【００３６】
本実施形態では、説明を簡単にするために、図４に示すように、深さ４で、それぞれの階層がマスク長を表すフロー集約ツリーを用いるものとする。また、フロー集約ツリーは、マッチングキーの上位ｂｉｔから順に「０」または「１」で分岐し、より下位の階層へと分岐を繰り返す構造であるものとする。このようなフロー集約ツリー１３Ａを用いたポリシーと、フローエントリの管理については、後に図５〜図１１を用いて詳細に説明する。
【００３７】
フロー集約部１４Ａは、フロー集約ツリー１３Ａのポリシー管理部１２Ａから通知されたポリシーのマッチングキーに対応する位置にポリシーを登録する。また、フロー集約部１４Ａは、ポリシー管理部１２Ａにより暫定マッチングキーが決定されたフローエントリをフロー集約ツリー１３Ａのどのノードに登録するかを決定することにより、フローエントリテーブル２１Ａに登録すべきフローエントリを決定し、パケット処理部２２Ａにフローエントリテーブル２１Ａへの登録を指示する。さらに、フロー集約部１４Ａは、パケット処理部２２Ａから、フローエントリテーブル２１Ａからフローエントリが消滅したことを通知された場合、フロー集約ツリー１３Ａから該当するフローエントリを削除する。すなわち、フロー集約ツリー１３Ａには、フローエントリテーブル２１Ａに登録されているフローエントリと同じようにフローエントリが登録または削除されることになる。
【００３８】
なお、図１に示したパケット転送システム１００の各部（処理手段）は、パケット転送システム１００を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することができる。
【００３９】
続いて、本実施形態の動作について図面を参照して詳細に説明する。以下、［ポリシーの登録］、［フローエントリの登録］について、順を追って説明する。
【００４０】
［ポリシーの登録］
図５は、フロー集約部１４Ａにおけるポリシーの登録の流れを表したフローチャートである。先に説明したように、ポリシー管理部１２Ａが、ポリシーテーブル１１Ａに登録したポリシーの内容をフロー集約部１４Ａに通知すると（ステップＳ００１）、フロー集約部１４Ａは、フロー集約ツリー１３Ａのルートを起点として、ポリシーのマッチングキーに対応するノードまで進み、当該位置にポリシーを登録する（ステップＳ００２）。このとき、ポリシーについては、マッチングキーと用いるすべての情報（例えば、ＩＰアドレスならばマスク長まで含む。）が通知され、フロー集約ツリー１３Ａには、その内容・位置に登録が行われる。
【００４１】
次に、フロー集約部１４Ａは、前記ポリシーの登録の過程で、通過したノードにフローエントリが存在したか否かを確認する（ステップＳ００３）。前記確認の結果、通過したノードにフローエントリが存在しない場合、ポリシーの登録処理は終了となる。
【００４２】
一方、通過したノードにフローエントリが存在した場合、フロー集約部１４Ａは、フロー集約ツリー１３Ａから当該フローエントリを削除するとともに（ステップＳ００４）、パケット処理部２２Ａに対して、前記削除したフローエントリをフローエントリテーブル２１Ａから削除するよう要求する（ステップＳ００５）。以上により、ポリシーを優先することで、以降作成・登録されるフローエントリとの競合が解消される。なお、ここで、フローエントリテーブル２１Ａから削除されたフローエントリは、次のパケット受信時に、未知のパケットとしてポリシー管理部１２Ａにフローエントリの作成要求が行われることになる。
【００４３】
［フローエントリの登録］
図６は、フロー集約部１４Ａにおけるフローエントリの登録の流れを表したフローチャートである。先に説明したように、ポリシー管理部１２Ａがフローエントリの作成要求に応じて、ポリシーテーブル１１Ａを参照して作成したフローエントリの内容をフロー集約部１４Ａに通知すると（ステップＳ１０１）、フロー集約部１４Ａは、フロー集約ツリー１３Ａのルートを起点として、マッチングキーとして用いる情報に適合するノードの探索を開始する（ステップＳ１０２）。
【００４４】
まず、フロー集約部１４Ａは、現在位置より下層に、登録されたポリシーが存在するか否かを確認する（ステップＳ１０３）。ここで、現在位置より下層にポリシーが存在する場合、当該ポリシーとの競合を解消する必要があるため、フロー集約部１４Ａは、マッチングキーの１つ下位のビットを確認し、対応するノード側へフロー集約ツリー１３Ａを降りる処理を繰り返していく（ステップＳ１０６）。
【００４５】
前記フロー集約ツリー１３Ａを下位側へたどった結果、あるノードで、現在位置より下層にポリシーが存在しないと判定されると（ステップＳ１０３の「存在しない」）、フロー集約部１４Ａは、現在位置（前記判定時点のノード）に、ポリシー管理部１２Ａから通知された新規フローエントリを登録する（ステップＳ１０４）とともに、パケット処理部２２Ａに対して、フローエントリテーブル２１Ａに、前記新規フローエントリのマッチングキーを前記ノードの位置としたフローエントリを登録するよう要求する（ステップＳ１０５）。このように、フロー集約ツリー１３Ａをルートから一階層ずつ降りて、現在位置より下層にポリシーが存在しないかどうかを確認することにより、既存の他のポリシーと競合せず、しかも、最短の長さとなるマッチングキーを得ることができる。
【００４６】
図７〜図１１は、図４に示したフロー集約ツリー１３Ａに、新規ポリシー、新規フローエントリが登録される過程を説明するための図である。以降の説明においては、ポリシーテーブルに登録されたポリシーのマッチングキーおよびフローエントリテーブルに登録されたフローエントリのマッチングキーとして、ネットワークマスク付きの４ビット（Ｘ．Ｘ．Ｘ．Ｘ／Ｙ；Ｙはネットワークマスク長）の宛先アドレスを用い、図４の各階層の枝に対応付け可能となっているものとする。ただし、フロー集約ツリーのルートとなる最上位の枝には対応付けを実施しないものとする。
【００４７】
初期状態としては、図４に示すようにフロー集約ツリー１３Ａにフローエントリの登録が無く、また、フローエントリテーブル２１Ａにもフローエントリの登録が無い状態であるものとする。
【００４８】
上記状態から、ポリシーテーブル１１Ａに、以下のような２つのポリシーが登録されたとする。
（ａ）宛先アドレス＝０．０．０．０／１、処理内容＝Ａ（ポートＡから転送）
（ｂ）宛先アドレス＝１．１．０．０／３、処理内容＝Ｂ（ポートＢから転送）
【００４９】
図５を用いて説明したとおり、ポリシーテーブル１１Ａへのポリシー登録時は、ネットワークマスクまで指定された状態でフロー集約部１４Ａに通知される。フロー集約部１４Ａは、図５のフローチャートに従い、フロー集約ツリー１３Ａの最上位から指定されたネットワークマスクの階層まで降りて、ポリシーの登録位置を探索し、ポリシーを登録する。
【００５０】
図７は、上記（ａ）、（ｂ）のポリシーが登録された状態を表しており、ノード１−１にポリシー（ａ）が登録され、ノード３−７にポリシー（ｂ）が登録されている。
【００５１】
次に、パケット処理部２２Ａにて、下記のようなパケットを受信したとする。
宛先アドレス＝０．１．１．０
この時点は、フローエントリテーブル２１Ａに対応するフローエントリが登録されていないため、パケット処理部２２Ａは、ポリシー管理部１２Ａに対して、未知のパケットに対応するフローエントリの作成を依頼する。
【００５２】
前記フローエントリの作成依頼を受けたポリシー管理部１２Ａは、ポリシーテーブル１１Ａを参照して、宛先アドレス＝０．１．１．０に対応するポリシーを検索する。この結果、ポリシー（ａ）が合致することから、ポリシー管理部１２Ａは、宛先アドレス＝０．１．１．０を待つパケットについて、その処理内容をＡ（ポートＡから転送）とし、暫定マッチングキーを宛先アドレス＝０．１．１．０とするフローエントリを作成したことを通知する。
【００５３】
フロー集約部１４Ａが、図６のフローチャートに従い、図７のフロー集約ツリーを最上位から１階層ずつ降りていくと、図８に示すようにノード１−１の位置で、現在位置より下位にポリシーが登録されていないと判定する。
【００５４】
このとき、フロー集約部１４Ａがパケット処理部２２Ａに、フローエントリテーブル２１Ａへ登録させるフローエントリのマッチングキーは、（ｃ）宛先アドレス＝０．０．０．０／１となり、処理内容＝Ａ（ポートＡから転送）と組になって、フローエントリテーブル２１Ａに登録される。
【００５５】
また、このようにして作成されたフローエントリは、フロ集約ツリーの対応するノードにも登録される（図８参照）。
【００５６】
上記状態から、さらに、ポリシーテーブル１１Ａに、以下のようなポリシーが登録されたとする。
（ｄ）宛先アドレス＝０．１．０．０／３、処理内容＝Ａ（ポートＡから転送）
【００５７】
フロー集約部１４Ａは、上記ポリシー（ａ）、（ｂ）のときと同様に、図４のフローチャートに従い、フロー集約ツリー１３Ａの最上位から指定されたネットワークマスクの階層まで降りて、ポリシーの登録位置を探索し、ポリシーを登録する。
【００５８】
前記ポリシー（ｄ）の登録は、ノード１−１、ノード２−２、ノード３−３という経路を経て行われる。ノード１−１には、フローエントリ（ｃ）が登録されている。そこで、フロー集約部１４Ａは、図５のステップＳ００４のとおり、フロー集約ツリーからフロー（ｃ）を削除し、パケット処理部２２Ａに対し、フローエントリテーブル２１Ａから、フローエントリ（ｃ）の削除を要求する。これは、ポリシー（ｄ）のマッチングキーと、フローエントリ（ｃ）のマッチングキーとが競合している（フローエントリ（ｃ）のマッチングキーに包含されている）ため、フローエントリテーブル２１Ａにフローエントリ（ｃ）が登録されたままでは、パケット処理部が、以降、ポリシー（ｄ）に基づいて作成されたフローエントリと、フローエントリ（ｃ）とを識別することが出来なくなることを回避するためである。
【００５９】
以上の結果、図９に示すように、ノード３−３にポリシー（ｄ）が登録され、その親ノードに当たるノード１−１からフローエントリ（ｃ）が削除される。
【００６０】
ここで、フローエントリ（ｃ）に合致するはずだった宛先アドレスを０．１．１．０とするパケットが受信された場合、再度、パケット処理部２２Ａから、ポリシー管理部１２Ａに対して、フローエントリの作成依頼が行われ、フローエントリ（ｃ）を登録した時と同様の処理で、フローエントリの作成が行われる。
【００６１】
ただし、この時点では、上述のように、ポリシー（ｄ）がすでに登録されているため、ノード１−１で止まることなく、図１０に示すようにノード３−４の位置で、現在位置より下位にポリシーが登録されていないと判定されることになる。
【００６２】
このとき、フロー集約部１４Ａがパケット処理部２２Ａに、フローエントリテーブル２１Ａへ登録させるフローエントリのマッチングキーは、上記ノード３−４の位置に対応し、（ｃ’）宛先アドレス＝０．１．１．０／３となる。従って、マッチングキーを宛先アドレス＝０．１．１．０／３とし、処理内容をＡ（ポートＡから転送）とするフローエントリが、フローエントリテーブル２１Ａに登録される。
【００６３】
その後、さらに、パケット処理部２２Ａが下記のようなパケットを受信したとする。
（ｅ）宛先アドレス＝０．０．１．１
【００６４】
この場合も、上記フローエントリ（ｃ）やフローエントリ（ｃ’）の時と同様に、ポリシ（ａ）に基づき下位階層に向かって、現在位置より下位にポリシーが登録されていないノード２−１が探索される。この場合のフローエントリのマッチングキーは、上記ノード２−１の位置に対応し、（ｅ）宛先アドレス＝０．０．０．０／２となる。従って、マッチングキーを宛先アドレス＝０．０．０．０／２とし、処理内容をＡ（ポートＡから転送）とするフローエントリが、フローエントリテーブル２１Ａに登録される。
【００６５】
以上の結果、図１１に示すように、ノード２−１にフローエントリ（ｅ）が登録される。
【００６６】
以上のように、本実施形態によれば、登録するフローエントリのマッチングキーのマスク長を短くするとともに、登録するフローエントリの数の増加を抑えることが可能になるである。その理由は、フロー集約ツリーを辿って下位のノードにポリシーが存在しなくなるノードを探索し、当該ノードをマッチングキーとしたフローエントリを登録するようにしたためである。このようにすることにより、論理的にすべてのフローエントリが、ポリシーと包含関係を持たない形に集約される。
【００６７】
また、本実施形態では、新しいポリシーの登録時に、フロー集約ツリー上で、親ノードに当たるノードに登録されているフローエントリを削除しているため、必要以上に短いマスク長を持つフローエントリは削除した後、再設定されるようになっている。
【００６８】
また、本実施形態では、フローエントリテーブルに登録されているフローエントリは、必要最小限の数になるよう適宜整理される。その理由は、フローエントリを適宜削除することとしているためである。
【００６９】
［第２の実施形態］
続いて、本発明を非特許文献１、２のオープンフロースイッチと、オープンフローコントローラに適用した第２の実施形態について説明する。図１２は、本発明の第２の実施形態の構成を表した図である。
【００７０】
上記した第１の実施形態との相違点は、第１の実施形態のコントロールプレーン１００Ａが、経路作成部１５Ａを備えた制御装置１０１となり、第１の実施形態のデータプレーン１００Ｂが、転送装置１０２となっている点である。なお、図１２では、１台の転送装置１０２が示されているが、複数の転送装置が制御装置１０１によりそれぞれの受信パケットの処理のためのフローエントリが作成・配布される。その他、各部の構成は第１の実施形態と同様である。
【００７１】
本実施形態では、制御装置１０１の経路作成部１５Ａは、予め用意されたネットワークトポロジや各転送装置の構成情報（図示省略）に基づいて、オープンフロースイッチから受信したパケットの転送経路を作成して、当該経路を実現するフローエントリを作成する。作成したフローエントリは、ポリシーテーブル１１Ｂにポリシーとして登録されるとともに、フロー集約部１４Ａにも通知される。以降の動作は、上記第１の実施形態と同様であり、フロー集約ツリー１３Ａを用いた図５の処理によって、新しいポリシー（新規フローエントリ）が登録されたノードに対し、親ノードになるノードに登録されているフローエントリは削除され、転送装置１０２にも削除が指示される。同様に、新しいポリシー（新規フローエントリ）は、フロー集約ツリー１３Ａを用いた図６の処理によって適当なワイルドカードを持つフローエントリとして転送装置１０２に払い出される。以上のように、本発明は、非特許文献１、２のオープンフロースイッチと、オープンフローコントローラのように、制御装置が、多数の転送装置を制御し、パケットの転送経路の制御を行う構成にも適用することが可能である。
【００７２】
以上、本発明の好適な実施形態およびその具体的な動作を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
【００７３】
例えば、図１３に示すように、制御装置１０１Ａが、転送装置１０２にてフローエントリを用いて記録しているトラヒック情報を収集するトラヒック情報収集部１６Ａを備える構成とすることもできる。この場合、経路作成部１５Ａは、ネットワークトポロジから計算した最短ホップではなく、トラヒック情報収集部１６Ａから収集されたトラヒック状況を考慮した経路を作成することが可能になる。
【００７４】
また、上記した実施形態では、宛先アドレスをマッチングキーとする例を挙げて説明したが、送信元アドレスや宛先アドレスと送信元アドレスの双方をマッチングキーとすることも可能である。もちろん、ＩＰｖ４アドレスに限らず、ＩＰｖ６アドレスにも敵用意することが可能である。
【００７５】
また、上記した実施形態では、送信元装置２００から宛先装置３００にパケットを送るものとして説明したが、逆方向のフローにも本発明を適用することが可能であり、この場合も、逆方向のフローの処理規則（フローエントリ）を集約することが可能である。
【００７６】
その他、本発明は、フローエントリに代表される処理規則の作成とポリシー管理を行うコントロールプレーンと、作成された処理規則に従って受信パケットの処理を行うデータプレーンによって構成され、処理規則のマッチングキーを上位ビットマスクや下位ビットマスク等により集約できるシステム全般、例えば、ルーティングテーブルによりパケットの転送を行う転送装置が保持するルーティングテーブル上のエントリの削減にも適用可能である。
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００７７】
１１  ポリシー記憶部
１１Ａ、１１Ｂ  ポリシーテーブル
１２、１２Ａ  ポリシー管理部
１３  集約ツリー記憶部
１３Ａ  フロー集約ツリー
１４  処理規則集約部
１４Ａ  フロー集約部
１５Ａ  経路作成部
１６Ａ  トラヒック情報収集部
２１  処理規則記憶部
２１Ａ  フローエントリテーブル
２２、２２Ａ  パケット処理部
２３Ａ  パケット入力部
２４Ａ  パケット出力部
１００  パケット転送システム
１００Ａ  コントロールプレーン
１００Ｂ  データプレーン
１０１  制御装置
１０２  転送装置
２００  送信元装置
３００  宛先装置
【図１】
0005440691.tif 000002
【図２】
0005440691.tif 000003
【図３】
0005440691.tif 000004
【図４】
0005440691.tif 000005
【図５】
0005440691.tif 000006
【図６】
0005440691.tif 000007
【図７】
0005440691.tif 000008
【図８】
0005440691.tif 000009
【図９】
0005440691.tif 000010
【図１０】
0005440691.tif 000011
【図１１】
0005440691.tif 000012
【図１２】
0005440691.tif 000013
【図１３】
0005440691.tif 000014