(57)【特許請求の範囲】
【請求項１】
フローエントリ構成の方法であって、
スイッチが、第１のサービスのデータパケットについての情報をコントローラにレポートするステップと、
前記スイッチが、前記コントローラが前記第１のサービスの前記データパケットについての前記情報とフローテーブル構造とに従って送出した前記第１のサービスのフローエントリを受信するステップであって、前記フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、前記複数のフローテーブルの各々がサポートするマッチフィールドは前記第１のサービスのマッチフィールドを含み、前記複数のフローテーブルの各々がサポートするアクションは前記第１のサービスのアクションを含む、ステップと、
前記スイッチが、予め構成されたサービスパスにおいて、前記第１のサービスの前記フローエントリとマッチする第１の目標サービスパスを決定するステップであって、前記第１の目標サービスパスのマッチフィールドは前記第１のサービスの前記マッチフィールドを含み、前記第１の目標サービスパスのアクションは前記第１のサービスの前記アクションを含む、ステップと、
前記スイッチが、前記サービスパスと前記スイッチのハードウェア転送チップのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するステップであって、前記目標ハードウェアフローテーブルは、前記第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
前記スイッチが、前記第１のサービスの前記フローエントリに従って、前記目標ハードウェアフローテーブルのフローエントリを構成するステップと、
を含む方法。
【請求項２】
前記スイッチが、予め構成されたサービスパスにおいて、前記第１のサービスの前記フローエントリとマッチする第１の目標サービスパスを決定する前記ステップは、
前記スイッチが、前記第１のサービスの前記フローエントリをソフトウェアフローテーブル中に構成するステップと、
前記スイッチが、前記ソフトウェアフローテーブルから、前記第１のサービスの前記データパケットとマッチする第１の目標フローエントリを取得し、前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリとマッチする前記第１の目標サービスパスを決定するステップであって、決定された前記第１の目標サービスパスのマッチフィールドは、前記第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された前記第１の目標サービスパスのアクションは、前記第１の目標フローエントリのアクション値に対応し且つ前記第１のサービスの前記データパケットの処理に用いられるアクションを含む、ステップと、
を含み、
前記スイッチが、前記第１のサービスの前記フローエントリに従って、前記目標ハードウェアフローテーブルのフローエントリを構成する前記ステップは、
前記スイッチが、前記第１の目標フローエントリに従って、前記目標ハードウェアフローテーブルの前記フローエントリを構成するステップ、
を含む、請求項１に記載の方法。
【請求項３】
前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリとマッチする前記第１の目標サービスパスを決定する前記ステップは、
２つ以上の第１のターゲットフローエントリが存在する場合、前記第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで前記複合フローエントリのマッチフィールド値は、前記第１のターゲットフローエントリにおいて前記入力ポートマッチフィールド及び前記パケットヘッダマッチフィールドに対応するマッチフィールド値であり、前記複合フローエントリのアクション値は、前記第１のターゲットフローエントリにおいて前記第１のサービスの前記データパケットの処理に用いられるアクション値であり、且つ、前記予め構成されたサービスパスにおいて、前記複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ前記複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、前記第１の目標サービスパスとして決定するステップと、
１つの第１の目標フローエントリが存在する場合、前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ前記第１の目標フローエントリの前記アクション値に対応するアクションを含む１つのサービスパスを、前記第１の目標サービスパスとして決定するステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記複数のフローテーブルの各々がサポートする前記マッチフィールド及び前記アクションは更に、第２のサービスのマッチフィールド及びアクションを含み、前記第２のサービスは、前記スイッチの前記ハードウェアフローテーブルがサポートしないサービスであり、
前記方法は更に、
前記スイッチが、前記第２のサービスのデータパケットについての情報を前記コントローラにレポートするステップと、
前記スイッチが、前記コントローラが前記第２のサービスの前記データパケットについての前記情報と前記フローテーブル構造とに従って送出した前記第２のサービスのフローエントリを受信し、前記第２のサービスの前記フローエントリを前記ソフトウェアフローテーブル中に構成するステップと、
を含む、請求項２又は３に記載の方法。
【請求項５】
前記第２のサービスの前記フローエントリを前記ソフトウェアフローテーブル中に構成する前記ステップの後に、更に、
前記スイッチが、前記ソフトウェアフローテーブルから、前記第２のサービスの前記データパケットとマッチする第２の目標フローエントリを取得するステップと、
前記スイッチが、前記予め構成されたサービスパスにおいて、前記第２の目標フローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された前記第２の目標サービスパスのマッチフィールドは、前記第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された前記第２の目標サービスパスのアクションは、前記第２の目標フローエントリのアクション値に対応し且つ前記第２のサービスの前記データパケットの処理に用いられるアクションを含む、ステップと、
前記スイッチが、前記第２の目標フローエントリに従って、前記第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここで前記サービスフローテーブルは完全マッチテーブルであり、前記サービスフローテーブルのマッチフィールドは全て前記第２の目標サービスパスのマッチフィールドであり、且つ、前記サービスフローエントリ中の第１のマッチフィールド値を前記第２の目標フローエントリ中のマッチフィールド値に構成し、前記サービスフローエントリ中の第２のマッチフィールド値を、前記第２のサービスの前記データパケットのパケットヘッダのヘッダフィールド値に構成し、前記サービスフローエントリ中のアクション値を前記第２の目標フローエントリの前記アクション値に構成するステップであって、前記第１のマッチフィールド値に対応するマッチフィールドは、前記第２の目標フローエントリ中の前記マッチフィールド値に対応するマッチフィールドに属し、前記第２のマッチフィールド値に対応するマッチフィールドは、前記第２の目標フローエントリ中の前記マッチフィールド値に対応する前記マッチフィールドに属さない、ステップと、
前記スイッチが、前記第２のサービスの後続のデータパケットを後で受信したとき、前記サービスフローテーブルにおいて前記後続のデータパケットとマッチするサービスフローエントリを検索し、発見された前記サービスフローエントリのアクションに従って前記後続のデータパケットを処理するステップと、
を含む、請求項４に記載の方法。
【請求項６】
前記サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定する前記ステップの前に、前記方法は更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップを含み、
複数の物理フローテーブルと、前記物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、前記複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうち前記ハードウェアフローテーブルに書き込まれる必要のあるアクションは、前記対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
前記サービスパスと前記物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含み、
前記スイッチが、前記サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定する前記ステップは、
前記スイッチが、前記第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、前記第１の物理フローテーブルを決定し、前記第１の物理フローテーブルと対応する前記目標ハードウェアフローテーブルとの対応関係に従って、前記目標ハードウェアフローテーブルを決定するステップ、
を含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
スイッチが第１のサービスのデータパケットについての情報をコントローラにレポートする前記ステップの前に、更に、
前記スイッチが、前記フローテーブル構造を前記コントローラにレポートするステップ、
を含む、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記フローテーブル構造は更に、前記複数のフローテーブルのタイプを含み、前記複数のフローテーブルの前記タイプは、ワイルドカードタイプである、
請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記スイッチは、オープンフロー（OpenFlow）プロトコルを用いて前記コントローラと通信し、前記複数のフローテーブルはOpenflowフローテーブルである、
請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記複数のフローテーブルの前記マッチフィールドは全て前記OpenFlowプロトコルがサポートするマッチフィールドであり、前記複数のフローテーブルの前記アクションは全て前記OpenFlowプロトコルがサポートするアクションである、
請求項９に記載の方法。
【請求項１１】
フローエントリ構成を実施する通信装置であって、前記通信装置はハードウェア転送チップに接続され、インタフェースユニット、データパケット処理ユニット及びハードウェアフローテーブル構成ユニットを備え、
前記インタフェースユニットは、第１のサービスのデータパケットについての情報をコントローラにレポートするように構成され、更に、前記コントローラが前記第１のサービスの前記データパケットについての前記情報とフローテーブル構造とに従って送出した前記第１のサービスのフローエントリを受信するように構成され、前記フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、前記複数のフローテーブルの各々がサポートするマッチフィールドは前記第１のサービスのマッチフィールドを含み、前記複数のフローテーブルの各々がサポートするアクションは前記第１のサービスのアクションを含み、
前記データパケット処理ユニットは、予め構成されたサービスパスにおいて、前記第１のサービスの前記フローエントリとマッチする第１の目標サービスパスを決定するように構成され、前記第１の目標サービスパスのマッチフィールドは前記第１のサービスの前記マッチフィールドを含み、前記第１の目標サービスパスのアクションは前記第１のサービスの前記アクションを含み、前記データパケット処理ユニットは、前記サービスパスと前記ハードウェア転送チップのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するように構成され、前記目標ハードウェアフローテーブルは、前記第１の目標サービスパスによってサポートされるサービスをサポートし、
前記ハードウェアフローテーブル構成ユニットは、前記第１のサービスの前記フローエントリに従って、前記目標ハードウェアフローテーブルのフローエントリを構成するように構成される、
通信装置。
【請求項１２】
前記データパケット処理ユニットが、予め構成されたサービスパスにおいて、前記第１のサービスの前記フローエントリとマッチする第１の目標サービスパスを決定するように構成されることは、
前記データパケット処理ユニットが、前記第１のサービスの前記フローエントリをソフトウェアフローテーブル中に構成し、前記ソフトウェアフローテーブルから、前記第１のサービスの前記データパケットとマッチする第１の目標フローエントリを取得し、前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリとマッチする前記第１の目標サービスパスを決定するように構成されることを含み、決定された前記第１の目標サービスパスのマッチフィールドは、前記第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された前記第１の目標サービスパスのアクションは、前記第１の目標フローエントリのアクション値に対応し且つ前記第１のサービスの前記データパケットの処理に用いられるアクションを含み、
前記ハードウェアフローテーブル構成ユニットは、前記第１の目標フローエントリに従って、前記目標ハードウェアフローテーブルの前記フローエントリを構成するように構成される、
請求項１１に記載の通信装置。
【請求項１３】
前記データパケット処理ユニットが、前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリとマッチする前記第１の目標サービスパスを決定するように構成されることは、
前記データパケット処理ユニットが、２つ以上の第１のターゲットフローエントリが存在する場合、前記第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで前記複合フローエントリのマッチフィールド値は、前記第１のターゲットフローエントリにおいて前記入力ポートマッチフィールド及び前記パケットヘッダマッチフィールドに対応するマッチフィールド値であり、前記複合フローエントリのアクション値は、前記第１のターゲットフローエントリにおいて前記第１のサービスの前記データパケットの処理に用いられるアクション値であり、且つ、前記予め構成されたサービスパスにおいて、前記複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ前記複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、前記第１の目標サービスパスとして決定するように構成されることを含み、
前記データパケット処理ユニットは、１つの第１の目標フローエントリが存在する場合、前記予め構成されたサービスパスにおいて、前記第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ前記第１の目標フローエントリの前記アクション値に対応するアクションを含む１つのサービスパスを、前記第１の目標サービスパスとして決定するように構成される、
請求項１２に記載の通信装置。
【請求項１４】
前記複数のフローテーブルの各々がサポートする前記マッチフィールド及び前記アクションは更に、第２のサービスのマッチフィールド及びアクションを含み、前記第２のサービスは、前記ハードウェア転送チップの前記ハードウェアフローテーブルがサポートしないサービスであり、
前記インタフェースユニットは更に、前記第２のサービスのデータパケットについての情報を前記コントローラにレポートし、前記コントローラが前記第２のサービスの前記データパケットについての前記情報と前記フローテーブル構造とに従って送出した前記第２のサービスのフローエントリを受信するように構成され、
前記データパケット処理ユニットは更に、前記インタフェースユニットによって受信される前記第２のサービスの前記フローエントリを、前記ソフトウェアフローテーブル中に構成するように構成される、
請求項１２又は１３に記載の通信装置。
【請求項１５】
前記通信装置は更にサービスフローテーブル構成ユニットを備え、
前記データパケット処理ユニットは更に、前記ソフトウェアフローテーブルから、前記第２のサービスの前記データパケットとマッチする第２の目標フローエントリを取得し、前記予め構成されたサービスパスにおいて、前記第２の目標フローエントリとマッチする第２の目標サービスパスを決定するように構成され、決定された前記第２の目標サービスパスのマッチフィールドは、前記第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された前記第２の目標サービスパスのアクションは、前記第２の目標フローエントリのアクション値に対応し且つ前記第２のサービスの前記データパケットの処理に用いられるアクションを含み、
前記サービスフローテーブル構成ユニットは、前記第２の目標フローエントリに従って、前記第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここで前記サービスフローテーブルは完全マッチテーブルであり、前記サービスフローテーブルのマッチフィールドは全て前記第２の目標サービスパスのマッチフィールドであり、且つ、前記サービスフローエントリ中の第１のマッチフィールド値を前記第２の目標フローエントリ中のマッチフィールド値に構成し、前記サービスフローエントリ中の第２のマッチフィールド値を前記第２のサービスの前記データパケットのパケットヘッダのヘッダフィールド値に構成し、前記サービスフローエントリ中のアクション値を前記第２の目標フローエントリ中の前記アクション値に構成するように構成され、前記第１のマッチフィールド値に対応するマッチフィールドは、前記第２の目標フローエントリ中の前記マッチフィールド値に対応するマッチフィールドに属し、前記第２のマッチフィールド値に対応するマッチフィールドは、前記第２の目標フローエントリ中の前記マッチフィールド値に対応するマッチフィールドに属さず、
前記データパケット処理ユニットは更に、前記第２のサービスの後続のデータパケットを後で受信したとき、前記サービスフローテーブルにおいて前記後続のデータパケットとマッチするサービスフローエントリを検索し、発見された前記サービスフローエントリのアクションに従って、前記後続のデータパケットを処理するように構成される、
請求項１４に記載の通信装置。
【請求項１６】
前記通信装置は更に対応関係構成ユニットを備え、
前記対応関係構成ユニットは、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するように構成され、
前記対応関係構成ユニットが、複数の物理フローテーブルと、前記物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するように構成されることであって、前記複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうち前記ハードウェアフローテーブルに書き込まれる必要のあるアクションは、前記対応するハードウェアフローテーブルのアクションに含まれることと、前記対応関係構成ユニットが、前記サービスパスと前記物理フローテーブルとの対応関係を構成するように構成されることであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれることと、を含み、
前記データパケット処理ユニットは、前記サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するように構成され、
前記データパケット処理ユニットが、前記第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、前記第１の物理フローテーブルと対応する前記目標ハードウェアフローテーブルとの対応関係に従って、前記目標ハードウェアフローテーブルを決定するように構成されることを含む、
請求項１１乃至１５のいずれか一項に記載の通信装置。
【請求項１７】
前記通信装置は、オープンフロー（OpenFlow）プロトコルを用いて前記コントローラと通信し、前記フローテーブルはOpenflowフローテーブルであり、
前記複数のフローテーブルの前記マッチフィールドは全て前記OpenFlowプロトコルがサポートするマッチフィールドであり、前記複数のフローテーブルの前記アクションは全て前記OpenFlowプロトコルがサポートするアクションである、
請求項１１乃至１６のいずれか一項に記載の通信装置。
【請求項１８】
コンピュータ操作命令を含む非一時的コンピュータ可読記憶媒体であって、前記コンピュータ操作命令は、通信装置のプロセッサに実行されると、前記通信装置に請求項１乃至１０のいずれか一項に記載の方法を実行させる、非一時的コンピュータ可読記憶媒体。
【請求項１９】
ハードウェア転送チップと、
請求項１１乃至１７のいずれか一項に記載の通信装置と、
を備えるスイッチ。
【請求項２０】
コントローラと、請求項１９に記載のスイッチとを備える通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信ネットワーク技術の分野に関し、特に、フローエントリ構成の方法、装置及びシステムに関する。
【背景技術】
【０００２】
オープンフロー（OpenFlow）ネットワークは、データ転送レイヤと制御レイヤの分離を実現するものであり、制御レイヤにコントローラ（Controller）を含み、転送レイヤにスイッチ（Switch）を含む。コントローラは、OpenFlowプロトコルを用いてスイッチを制御して、ネットワーク全体の集中制御を実現する。具体的には、コントローラは、OpenFlowプロトコルを用いて、フローエントリ（flow  entry）をスイッチに送信する。送信されるフローエントリは、マッチフィールド（match  field）値及びアクション（action）値を含む。マッチフィールド値は宛先ＭＡＣアドレスやイーサネットタイプ等であってよく、アクション値は、指定されたポートを通じてデータパケットが転送されたことを示すのに用いられる情報であってよい。スイッチは、受信したフローエントリをハードウェアフローテーブルに追加して、後でデータパケットを受信したときに、ハードウェアフローテーブルにおいてそのデータパケットとマッチするフローエントリを検索し、見つかったフローエントリのアクション値に従ってそのデータパケットを処理する。
【０００３】
従来技術では、ハードウェアフローテーブルは以下の方法を用いて構成される。
【０００４】
スイッチは、OpenFlowフローテーブル（例えば、テーブルT0、テーブルT1、テーブルT2）とスイッチのハードウェアフローテーブル（例えば、アクセス制御リスト（Access  Control  List、ACL）1、ACL2）との１対１の対応関係を記憶して、フローテーブル構造を生成する。生成されたフローテーブル構造は、各OpenFlowフローテーブル（flow  table）のフローテーブルタイプと、各OpenFlowフローテーブルによってサポートされるマッチフィールド及びアクションとを含む。スイッチは、生成されたフローテーブル構造をコントローラにレポートする。各OpenFlowフローテーブルによってサポートされるマッチフィールド及びアクションは、対応するハードウェアフローテーブルのマッチフィールド及びアクションを含む。
【０００５】
コントローラによって送信されたフローエントリは、コントローラの処理ロジックとスイッチによってレポートされたフローテーブル構造に従って生成される。コントローラの処理ロジックは、特定のサービスのための特定のテーブルのフローエントリを生成することである。例えば、テーブルT0及びテーブルT1のフローエントリがサービスAに対して生成され、テーブルT2のフローエントリがサービスBに対して生成される。
【０００６】
フローテーブル又はいくつかのフローテーブルの、コントローラによって送信されたフローエントリを受信すると、スイッチは、対応関係に従って、OpenFlowフローテーブルに対応するハードウェアフローテーブルにフローエントリを記憶する。例えば、テーブルT0のフローエントリが受信されると、フローエントリはリストACL1に記憶されて、ハードウェアフローテーブルによってサポートされるサービスを実現する。
【０００７】
例えば、サービスAを実現するには、マッチフィールド、in_port（入力ポート）、eth_type（イーサネットタイプ）、src_mac（送信元ＭＡＣアドレス）、dst  mac（宛先ＭＡＣアドレス）及びアクションoutput（ポート経由の転送）が必要となる。リストACL1には最初の３つのマッチフィールドが含まれ、リストACL2には最後の２つのマッチフィールドとoutputアクションが含まれ、リストACL1及びリストACL2がサービスAをサポートすることを示す。スイッチは、テーブルT0とリストACL1との対応関係と、テーブルT1とリストACL2との対応関係を記憶する。対応して、テーブルT0の生成されたマッチフィールドは最初の３つのマッチフィールドも含み、生成されたテーブルT1は最後の２つのマッチフィールドとoutputアクションを含み、そしてテーブルT0とテーブルT1がサービスAをサポートする。コントローラの処理ロジックは、サービスAについてテーブルT0及びテーブルT1のフローエントリを生成している。したがって、サービスAのパケットを処理するために用いられるフローエントリがスイッチに送出される。
【０００８】
一般に、異なるタイプのスイッチには異なるハードウェア転送チップがあり、異なるハードウェア転送チップで同じサービスをサポートするために用いられるハードウェアフローテーブルも異なる。例えば、ASICチップ１では、サービスAはACL1及びACL2によってサポートされ、ASICチップ２では、サービスAはACL3によってサポートされる。しかしながら、コントローラがフローエントリを生成するとき、ASICチップ１に基づくスイッチによってレポートされたテーブルT0及びテーブルT1が、サービスAによって必要とされるマッチフィールド及びアクションを含む場合、コントローラは、テーブルT0及びテーブルT1のフローエントリをスイッチに送信する。ASICチップ２に基づくスイッチによってレポートされたACL3に対応するテーブルT2が前述の条件を満たすが、レポートされたテーブルT0及びテーブルT1が上記の条件を満たすことができない場合、コントローラは、サービスAのパケットの処理に用いられるフローエントリをスイッチに送信することができない。
【０００９】
明らかに、ASICチップ１に基づくスイッチがサービスAを実現するためにテーブルT0及びテーブルT1を用いる場合、ASICチップ２に基づくスイッチはテーブルT2を用いてサービスAを実現する。コントローラの処理ロジックは、サービスAについてテーブルT0及びテーブルT1のフローエントリを生成しており、コントローラは、ASICチップ２に基づくスイッチに接続されている場合、サービスAに対応するフローエントリを生成又は送信することができない。もちろん、ASICチップ２に基づくスイッチは、サービスAを処理するフローエントリを構成することができないので、そのサービスAは処理することができない。
【００１０】
製造業者によって製造されたコントローラの処理ロジックは、通常異なるものであり、製造業者によって製造されるスイッチがベースとなるハードウェア転送チップも、通常異なるものである。したがって、スイッチとコントローラが接続されているときにサービスの一部を処理できないので、サービス処理の失敗確率が相対的に高くなってしまう。
【発明の概要】
【００１１】
本発明の実施形態は、フローエントリ構成の方法、装置及びシステムを提供する。これらは、スイッチがハードウェアフローテーブル中に、一部のサービスの処理に用いられるフローエントリを構成することができないという理由で、サービス処理の失敗確率が相対的に高くなるという従来技術の課題を解決するために用いられる。
【００１２】
第１の態様は、フローエントリ構成の方法を提供する。本方法は、
スイッチが、オープンフロー（OpenFlow）プロトコルを用いて、フローテーブル構造をコントローラにレポートするステップであって、フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在し、共通集合は、スイッチのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプである、ステップと、
スイッチが、コントローラがOpenFlowプロトコルを用いて送信したフローエントリを受信し、フローエントリをソフトウェアフローテーブル中に構成するステップであって、フローエントリは、コントローラによりフローテーブル構造とスイッチによってレポートされたデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む、ステップと、
スイッチが、ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
スイッチが、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップであって、第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
スイッチが、第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するステップと、
を含む。
【００１３】
第１の態様の第１の可能な実施方式では、スイッチによってレポートされる複数のOpenFlowフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、スイッチによってレポートされる複数のOpenFlowフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００１４】
第１の態様又は第１の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を含む。
【００１５】
第１の態様又は第１の態様の第１若しくは第２の可能な実施方式に関して、第３の可能な実施方式では、共通集合は更に、スイッチのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含み、データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含み、スイッチによりコントローラから受信されるフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。本方法は更に、
スイッチが、ソフトウェアフローテーブルから、第２のデータパケットとマッチする第２のフローエントリを取得し、第２のフローエントリのアクションに従って第２のデータパケットを処理するステップと、
を含む。
【００１６】
第１の態様の第３の可能な実施方式に関して、第４の可能な実施方式では、本方法は更に、
スイッチが、予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
スイッチが、第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、且つ、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を第２のフローエントリのアクション値として構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
スイッチが、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を含む。
【００１７】
第１の態様又は第１の態様の第１〜第４の可能な実施方式のいずれか１つに関して、第５の可能な実施方式では、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップの前に、本方法は更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップであって、サービスパスは第１の目標サービスパスを含む、ステップを含む。具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。スイッチが、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップは、具体的には、
スイッチが、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定するステップ、
を含む。
【００１８】
第２の態様は、フローエントリ構成の方法を提供する。本方法は、
通信装置が、オープンフロー（Openflow）プロトコルを用いて、フローテーブル構造をコントローラにレポートするステップであって、フローテーブル構造は、複数のOpenflowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在し、共通集合は、ハードウェア転送チップのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプであり、通信装置はハードウェア転送チップに接続される、ステップと、
通信装置が、コントローラがOpenFlowプロトコルを用いて送信したフローエントリを受信し、フローエントリをソフトウェアフローテーブル中に構成するであって、フローエントリは、コントローラによりフローテーブル構造と通信装置によってレポートされたデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む、ステップと、
通信装置が、ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
通信装置が、第１の目標サービスパスとハードウェア転送チップの第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップであって、第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
通信装置が、第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するステップと、
を含む。
【００１９】
第２の態様の第１の可能な実施方式では、通信装置によってレポートされる複数のOpenflowフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、通信装置によってレポートされる複数のOpenFlowフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００２０】
第２の態様又は第２の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を含む。
【００２１】
第２の態様又は第２の態様の第１若しくは第２の可能な実施方式に関して、第３の可能な実施方式では、共通集合は更に、ハードウェア転送チップのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含み、データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含み、通信装置によりコントローラから受信されるフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含む、本方法は更に、
通信装置が、ソフトウェアフローテーブルから、第２のデータパケットとマッチする第２のフローエントリを取得し、第２のフローエントリのアクションに従って第２のデータパケットを処理するステップ、
を含む。
【００２２】
第２の態様の第３の可能な実施方式に関して、第４の可能な実施方式では、本方法は更に、
通信装置が、予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
通信装置が、第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、且つ、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を第２のフローエントリのアクション値として構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
通信装置が、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を含む。
【００２３】
第２の態様又は第２の態様の第１〜第４の可能な実施方式のうちいずれか１つに関して、第５の可能な実施方式では、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップの前に、本方法は更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップであって、サービスパスは第１の目標サービスパスを含む、ステップを含む。具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。通信装置が、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップは、具体的には、
通信装置が、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定するステップ、
を含む。
【００２４】
第３の態様は、フローエントリ構成を実施する通信装置を提供する。本通信装置はハードウェア転送チップに接続され、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、インタフェースユニット、ソフトウェアフローテーブル構成ユニット、データパケット処理ユニット及びハードウェアフローテーブル構成ユニットを備える。ここで、
インタフェースユニットは、フローテーブル構造をコントローラにレポートするように構成され、フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在し、共通集合は、ハードウェア転送チップのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプであり、更に、データパケットについての情報をコントローラにレポートし、コントローラによって送信されたフローエントリを受信するように構成され、フローエントリは、コントローラによりフローテーブル構造とデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含み、
ソフトウェアフローテーブル構成ユニットは、インタフェースユニットによって受信されたフローエントリをソフトウェアフローテーブル中に構成するように構成され、
データパケット処理ユニットは、ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するように構成され、決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含み、データパケット処理ユニットは、第１の目標サービスパスとハードウェア転送チップの第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するように構成され、第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートし、
ハードウェアフローテーブル構成ユニットは、第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するように構成される。
【００２５】
第３の態様の第１の可能な実施方式では、インタフェースユニットによってレポートされる複数のOpenFlowフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、インタフェースユニットによってレポートされる複数のOpenFlowフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００２６】
第３の態様又は第１の態様の第３の可能な実施方式に関して、第２の可能な実施方式では、データパケット処理ユニットが、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする目標サービスパスを決定するように構成されることは、具体的には、
データパケット処理ユニットが、２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成されることを含む。データパケット処理ユニットは、１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成される。
【００２７】
第３の態様又は第３の態様の第１若しくは第２の可能な実施方式に関して、第３の可能な実施方式では、共通集合は更に、ハードウェア転送チップのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含み、データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含み、インタフェースユニットによりコントローラから受信されたフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含み、
データパケット処理ユニットは更に、ソフトウェアフローテーブルから第２のデータパケットとマッチする第２のフローエントリを取得するとき、第２のフローエントリのアクションに従って第２のデータパケットを処理するように構成される。
【００２８】
第３の態様の第３の可能な実施方式に関して、第４の可能な実施方式では、通信装置は更に、サービスフローテーブル構成ユニットを備える。ここで、
データパケット処理ユニットは更に、予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するように構成され、決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含み、
サービスフローテーブル構成ユニットは、第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成するように構成され、サービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を、第２のフローエントリのアクション値として構成するように構成され、第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さず、
データパケット処理ユニットは更に、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って、後続のデータパケットを処理するように構成される。
【００２９】
第３の態様又は第３の態様の第１〜第４の可能な実施方式のうちいずれか１つに関して、第５の可能な実施方式では、通信装置は更に、対応関係構成ユニットを備える。ここで、
対応関係構成ユニットは、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するように構成され、サービスパスは第１の目標サービスパスを含む。具体的には、対応関係構成ユニットが、複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するように構成されることを含む。複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる。対応関係構成ユニットは、サービスパスと物理フローテーブルとの対応関係を構成するように構成される。各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる。また、
データパケット処理ユニットが、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するように構成されることを含む。具体的には、データパケット処理ユニットが、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定するように構成されることを含む。
【００３０】
第４の態様は、フローエントリ構成を実施する通信装置を提供する。本装置は、プロセッサ及びメモリを備え、
メモリは、コンピュータ操作命令を記憶するように構成され、
プロセッサは、メモリに記憶されたコンピュータ操作命令を実行して、通信装置が、
オープンフロー（OpenFlow）プロトコルを用いて、フローテーブル構造をコントローラにレポートするステップであって、フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在し、共通集合は、ハードウェア転送チップのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプであり、通信装置はハードウェア転送チップに接続される、ステップと、
フローテーブル構造に従って生成されコントローラによりOpenFlowプロトコルを用いて送信されたフローエントリを受信し、フローエントリをソフトウェアフローテーブル中に構成するステップであって、フローエントリは、コントローラによりフローテーブル構造と通信装置によってレポートされたデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む、ステップと、
ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
第１の目標サービスパスとハードウェア転送チップの第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップであって、第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するステップと、
を実施するように構成される。
【００３１】
第４の態様の第１の可能な実施方式では、プロセッサはコンピュータ操作命令を実行する。具体的には、通信装置によってレポートされる複数のOpenFlowフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、レポートされる複数のOpenFlowフローテーブルのアクションは、全てOpenFlowプロトコルがサポートするアクションである。
【００３２】
第４の態様又は第４の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が、具体的には、
２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を実施するようにする。
【００３３】
第４の態様又は第４の態様の第１若しくは第２の可能な実施方式に関して、第３の可能な実施方式では、共通集合は更に、ハードウェア転送チップのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含み、データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含み、コントローラから受信されるフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含み、
プロセッサはコンピュータ操作命令を実行して、通信装置が更に、ソフトウェアフローテーブルから、第２のデータパケットとマッチする第２のフローエントリを取得し、第２のフローエントリのアクションに従って第２のデータパケットを処理するステップ、を実施するようにする。
【００３４】
第３の態様の第４の可能な実施方式に関して、第４の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が更に、
予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を第２のフローエントリのアクション値として構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を実施するようにする。
【００３５】
第４の態様又は第４の態様の第１〜第４の可能な実施方式のうちいずれか１つに関して、第５の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップであって、サービスパスは第１の目標サービスパスを含む、ステップ、を実施するようにする。具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。プロセッサはコンピュータ操作命令を実行して、通信装置が、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定することは、具体的には、
プロセッサはコンピュータ操作命令を実行して、通信装置が、具体的には、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定することを含む。
【００３６】
第５の態様は、フローエントリ構成方法を提供する。本方法は、
スイッチが、第１のサービスのデータパケットについての情報をコントローラにレポートするステップと、
スイッチが、コントローラが第１のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第１のサービスのフローエントリを受信するステップであって、フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、複数のフローテーブルの各々がサポートするマッチフィールドは、第１のサービスのマッチフィールドを含み、複数のフローテーブルの各々がサポートするアクションは第１のサービスのアクションを含む、ステップと、
スイッチが、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するステップであって、第１の目標サービスパスのマッチフィールドは第１のサービスのマッチフィールドを含み、目標サービスパスのアクションは第１のサービスのアクションを含む、ステップと、
スイッチが、サービスパスとスイッチのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するステップであって、目標ハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
スイッチが、第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップと、
を含む。
【００３７】
第５の態様の第１の可能な実施方式では、スイッチは、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、複数のフローテーブルはOpenflowフローテーブルである。
【００３８】
第５の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、複数のフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、複数のフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００３９】
第５の態様又は第５の態様の第１の若しくは第２の可能な実施方式に関して、第３の可能な実施方式では、スイッチが、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
スイッチが、第１のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
スイッチが、ソフトウェアフローテーブルから、第１のサービスのデータパケットとマッチする第１の目標フローエントリを取得し、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第１の目標サービスパスのアクションは、第１の目標フローエントリのアクション値のうち第１のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
を含む。スイッチが、第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップは、具体的には、
スイッチが、第１の目標フローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップ、
を含む。
【００４０】
第５の態様の第３の可能な実施方式に関して、第４の可能な実施方式では、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
２つ以上の第１のターゲットフローエントリが存在する場合、第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリのマッチフィールド値は、第１のターゲットフローエントリにおいて入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリのアクション値は、第１のターゲットフローエントリにおいて第１のサービスのデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１の目標フローエントリが存在する場合、予め構成されたサービスパスにおいて、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ第１の目標フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を含む。
【００４１】
第５の態様又は第５の態様の第１〜第４の可能な実施方式のうちいずれか１つに関して、第５の可能な実施方式では、複数のフローテーブルの各々がサポートするマッチフィールド及びアクションは更に、第２のサービスのマッチフィールド及びアクションを含み、第２のサービスは、スイッチのハードウェアフローテーブルがサポートしないサービスである。本方法は更に、
スイッチが、第２のサービスのデータパケットについての情報をコントローラにレポートするステップと、
スイッチが、コントローラが第２のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第２のサービスのフローエントリを受信し、第２のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
を含む。
【００４２】
第５の態様の第５の可能な実施方式に関して、第６の可能な実施方式では、第２のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップの後に、本方法は更に、
スイッチが、ソフトウェアフローテーブルから、第２のサービスのデータパケットとマッチする第２の目標フローエントリを取得するステップと、
スイッチが、予め構成されたサービスパスにおいて、第２の目標フローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第２の目標サービスパスのアクションは、第２の目標フローエントリのアクション値のうち第２のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
スイッチが、第２の目標フローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を第２の目標フローエントリ中のマッチフィールド値に構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のサービスのデータパケットのパケットヘッダのヘッダフィールド値に構成し、サービスフローエントリ中のアクション値を第２の目標フローエントリのアクション値に構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
スイッチが、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を含む。
【００４３】
第５の態様又は第５の態様の第１〜第６の可能な実施方式のうちいずれか１つに関して、第７の可能な実施方式では、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定するステップの前に、本方法は更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップ、を含む。具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。スイッチが、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定するステップは、具体的には、
スイッチが、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する目標ハードウェアフローテーブルとの対応関係に従って、目標ハードウェアフローテーブルを決定するステップ、
を含む。
【００４４】
第５の態様又は第５の態様の第１〜第７の可能な実施方式のうちいずれか１つに関して、第８の可能な実施方式では、スイッチが第１のサービスのデータパケットについての情報をコントローラにレポートするステップの前に、本方法は更に、スイッチが、フローテーブル構造をコントローラにレポートするステップ、を含む。
【００４５】
第５の態様又は第５の態様の第１〜第８の可能な実施方式のうちいずれか１つに関して、第９の可能な実施方式では、フローテーブル構造は更に、複数のフローテーブルのタイプを含み、複数のフローテーブルのタイプは、ワイルドカードタイプである。
【００４６】
第６の態様はフローエントリ構成方法を提供する。本方法は、
通信装置が、第１のサービスのデータパケットについての情報をコントローラに報告するステップと、
通信装置が、コントローラが第１のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第１のサービスのフローエントリを受信するステップであって、フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、複数のフローテーブルの各々がサポートするマッチフィールドは、第１のサービスのマッチフィールドを含み、複数のフローテーブルの各々がサポートするアクションは第１のサービスのアクションを含む、ステップと、
通信装置が、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するステップであって、第１の目標サービスパスのマッチフィールドは第１のサービスのマッチフィールドを含み、目標サービスパスのアクションは第１のサービスのアクションを含む、ステップと、
通信装置が、サービスパスと通信装置に接続されたハードウェア転送チップのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するステップであって、目標ハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
通信装置が、第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップと、
を含む。
【００４７】
第６の態様の第１の可能な実施方式では、通信装置は、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、フローテーブルはOpenflowフローテーブルである。複数のフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、複数のフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００４８】
第６の態様又は第６の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、通信装置が、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
通信装置が、第１のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
通信装置が、ソフトウェアフローテーブルから、第１のサービスのデータパケットとマッチする第１の目標フローエントリを取得し、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第１の目標サービスパスのアクションは、第１の目標フローエントリのアクション値のうち第１のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
を含む。通信装置が、第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップは、具体的には、通信装置が、第１の目標フローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップ、を含む。
【００４９】
第６の態様の第２の可能な実施方式に関して、第３の可能な実施方式では、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するステップは、具体的には、
２つ以上の第１のターゲットフローエントリが存在する場合、第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリのマッチフィールド値は、第１のターゲットフローエントリにおいて入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリのアクション値は、第１のターゲットフローエントリにおいて第１のサービスのデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１の目標フローエントリが存在する場合、予め構成されたサービスパスにおいて、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ第１の目標フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を含む。
【００５０】
第６の態様又は第６の態様の第１〜第３の可能な実施方式のうちいずれか１つに関して、第４の可能な実施方式では、複数のフローテーブルの各々がサポートするマッチフィールド及びアクションは更に、第２のサービスのマッチフィールド及びアクションを含み、第２のサービスは、スイッチのハードウェアフローテーブルがサポートしないサービスである。本方法は更に、
通信装置が、第２のサービスのデータパケットについての情報をコントローラにレポートするステップと、
通信装置が、コントローラが第２のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第２のサービスのフローエントリを受信し、第２のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
を含む。
【００５１】
第６の態様の第４の可能な実施方式に関して、第５の可能な実施方式では、第２のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップの後に、本方法は更に、
通信装置が、ソフトウェアフローテーブルから、第２のサービスのデータパケットとマッチする第２の目標フローエントリを取得するステップと、
通信装置が、予め構成されたサービスパスにおいて、第２の目標フローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第２の目標サービスパスのアクションは、第２の目標フローエントリのアクション値のうち第２のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
通信装置が、第２の目標フローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を第２の目標フローエントリ中のマッチフィールド値に構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のサービスのデータパケットのパケットヘッダのヘッダフィールド値に構成し、サービスフローエントリ中のアクション値を第２の目標フローエントリのアクション値に構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第２の目標フローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
通信装置が、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を含む。
【００５２】
第６の態様又は第６の態様の第１〜第５の可能な実施方式のうちいずれか１つに関して、第６の可能な実施方式では、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定するステップの前に、本方法は更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップ、を含む。具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。通信装置が、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って目標ハードウェアフローテーブルを決定するステップは、具体的には、
通信装置が、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと目標ハードウェアフローテーブルとの対応関係に従って、目標ハードウェアフローテーブルを決定するステップ、
を含む。
【００５３】
第６の態様又は第６の態様の第１〜第６の可能な実施方式のうちいずれか１つに関して、第７の可能な実施方式では、フローテーブル構造は更に、複数のフローテーブルのタイプを含み、複数のフローテーブルのタイプは、ワイルドカードタイプである。
【００５４】
第７の態様は、フローエントリ構成を実施する通信装置を提供する。通信装置はハードウェア転送チップに接続され、インタフェースユニット、データパケット処理ユニット及びハードウェアフローテーブル構成ユニットを備える。ここで、
インタフェースユニットは、第１のサービスのデータパケットについての情報をコントローラにレポートするように構成され、更に、コントローラが第１のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第１のサービスのフローエントリを受信するように構成され、フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、複数のフローテーブルの各々がサポートするマッチフィールドは、第１のサービスのマッチフィールドを含み、複数のフローテーブルの各々がサポートするアクションは第１のサービスのアクションを含み、
データパケット処理ユニットは、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するように構成され、第１の目標サービスパスのマッチフィールドは第１のサービスのマッチフィールドを含み、目標サービスパスのアクションは第１のサービスのアクションを含み、データパケット処理ユニットは、サービスパスとハードウェア転送チップのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するように構成され、目標ハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートし、
ハードウェアフローテーブル構成ユニットは、第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するように構成される。
【００５５】
第７の態様の第１の可能な実施方式では、通信装置は、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、フローテーブルはOpenflowフローテーブルである。複数のフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、複数のフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００５６】
第７の態様又は第７の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、データパケット処理ユニットが、予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するように構成されることは、具体的には、
データパケット処理ユニットが、第１のサービスのフローエントリをソフトウェアフローテーブル中に構成し、ソフトウェアフローテーブルから、第１のサービスのデータパケットとマッチする第１の目標フローエントリを取得し、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するように構成されることを含む。決定された第１の目標サービスパスのマッチフィールドは、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第１の目標サービスパスのアクションは、第１の目標フローエントリのアクション値のうち第１のサービスのデータパケットの処理に用いられるアクションを含む。また、
ハードウェアフローテーブル構成ユニットは、具体的には、第１の目標フローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するように構成される。
【００５７】
第７の態様の第２の可能な実施方式に関して、第３の可能な実施方式では、データパケット処理ユニットが、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする目標サービスパスを決定するように構成されることは、具体的には、
データパケット処理ユニットが、２つ以上の第１のターゲットフローエントリが存在する場合、第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリのマッチフィールド値は、第１のターゲットフローエントリにおいて入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリのアクション値は、第１のターゲットフローエントリにおいて第１のサービスのデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成されることを含む。また、データパケット処理ユニットは、１つの第１の目標フローエントリが存在する場合、予め構成されたサービスパスにおいて、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ第１の目標フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成される。
【００５８】
第７の態様又は第７の態様の第１〜第３の可能な実施方式のうちいずれか１つに関して、第４の可能な実施方式では、複数のフローテーブルの各々がサポートするマッチフィールド及びアクションは更に、第２のサービスのマッチフィールド及びアクションを含み、第２のサービスは、スイッチのハードウェアフローテーブルがサポートしないサービスであり、
インタフェースユニットは更に、第２のサービスのデータパケットについての情報をコントローラにレポートし、コントローラが第２のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第２のサービスのフローエントリを受信するように構成され、
データパケット処理ユニットは更に、インタフェースユニットによって受信される第２のサービスのフローエントリを、ソフトウェアフローテーブル中に構成するように構成される。
【００５９】
第７の態様又は第７の態様の第１〜第４の可能な実施方式のうちいずれか１つに関して、第５の可能な実施方式では、通信装置は更に、サービスフローテーブル構成ユニットを備える。ここで、
データパケット処理ユニットは更に、ソフトウェアフローテーブルから、第２のサービスのデータパケットとマッチする第２の目標フローエントリを取得し、予め構成されたサービスパスにおいて、第２の目標フローエントリとマッチする第２の目標サービスパスを決定するように構成され、決定された第２の目標サービスパスのマッチフィールドは、第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第２の目標サービスパスのアクションは、第２の目標フローエントリのアクション値のうち第２のサービスのデータパケットの処理に用いられるアクションを含み、
サービスフローテーブル構成ユニットは、第２の目標フローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を第２の目標フローエントリ中のマッチフィールド値に構成し、サービスフローエントリ中の第２のマッチフィールド値を第２のサービスのデータパケットのパケットヘッダのヘッダフィールド値に構成し、サービスフローエントリ中のアクション値を第２のフローエントリ中のアクション値に構成するように構成され、第１のマッチフィールド値に対応するマッチフィールドは、第２の目標フローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さず、
データパケット処理ユニットは更に、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って、後続のデータパケットを処理するように構成される。
【００６０】
第７の態様又は第７の態様の第１〜第５の可能な実施方式のうちいずれか１つに関して、第６の可能な実施方式では、本通信装置は更に、対応関係構成ユニットを備える。ここで、
対応関係構成ユニットは、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するように構成される。具体的には、対応関係構成ユニットが、複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するように構成されることを含む。複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる。対応関係構成ユニットは、サービスパスと物理フローテーブルとの対応関係を構成するように構成される。各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる。また、
データパケット処理ユニットは、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するように構成される。具体的には、データパケット処理ユニットが、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する目標ハードウェアフローテーブルとの対応関係に従って、目標ハードウェアフローテーブルを決定するように構成されることを含む。
【００６１】
第８の態様は、フローエントリ構成を実施する通信装置を提供する。本通信装置は、プロセッサ及びメモリを備え、
メモリは、コンピュータ操作命令を記憶するように構成され、
プロセッサは、メモリに記憶されたコンピュータ操作命令を実行して、通信装置が、
第１のサービスのデータパケットについての情報をコントローラにレポートするステップと、
コントローラが第１のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第１のサービスのフローエントリを受信するステップであって、フローテーブル構造は、複数のフローテーブルによってサポートされるマッチフィールド及びアクションを含み、複数のフローテーブルの各々がサポートするマッチフィールドは、第１のサービスのマッチフィールドを含み、複数のフローテーブルの各々がサポートするアクションは第１のサービスのアクションを含む、ステップと、
予め構成されたサービスパスにおいて、第１のサービスのフローエントリとマッチする第１の目標サービスパスを決定するステップであって、第１の目標サービスパスのマッチフィールドは第１のサービスのマッチフィールドを含み、目標サービスパスのアクションは第１のサービスのアクションを含む、ステップと、
サービスパスと通信装置に接続されたハードウェア転送チップのハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するステップであって、目標ハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする、ステップと、
第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップと、
を実施するように構成される。
【００６２】
第８の態様の第１の可能な実施方式では、通信装置は、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、フローテーブルはOpenflowフローテーブルである。複数のフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであり、複数のフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションである。
【００６３】
第８の態様又は第８の態様の第１の可能な実施方式に関して、第２の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が、具体的には、
第１のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
ソフトウェアフローテーブルから、第１のサービスのデータパケットとマッチする第１の目標フローエントリを取得し、予め構成されたサービスパスにおいて、第１の目標フローエントリとマッチする第１の目標サービスパスを決定するステップであって、決定された第１の目標サービスパスのマッチフィールドは、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第１の目標サービスパスのアクションは、第１の目標フローエントリのアクション値のうち第１のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
を実施するようにする。第１のサービスのフローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップは、具体的には、通信装置が、第１の目標フローエントリに従って、目標ハードウェアフローテーブルのフローエントリを構成するステップ、を含む。
【００６４】
第８の態様の第２の可能な実施方式に関して、第３の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が、具体的には、
２つ以上の第１のターゲットフローエントリが存在する場合、第１のターゲットフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリのマッチフィールド値は、第１のターゲットフローエントリにおいて入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリのアクション値は、第１のターゲットフローエントリにおいて第１のサービスのデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
１つの第１の目標フローエントリが存在する場合、予め構成されたサービスパスにおいて、第１の目標フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つ第１の目標フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップと、
を実施するようにする。
【００６５】
第８の態様又は第８の態様の第１〜第３の可能な実施方式のうちいずれか１つに関して、第４の可能な実施方式では、複数のフローテーブルの各々がサポートするマッチフィールド及びアクションは更に、第２のサービスのマッチフィールド及びアクションを含み、第２のサービスは、スイッチのハードウェアフローテーブルがサポートしないサービスであり、
プロセッサはコンピュータ操作命令を実行して、通信装置が、更に、
第２のサービスのデータパケットについての情報をコントローラにレポートするステップと、
コントローラが第２のサービスのデータパケットについての情報とフローテーブル構造とに従って送出した第２のサービスのフローエントリを受信し、第２のサービスのフローエントリをソフトウェアフローテーブル中に構成するステップと、
を実施するようにする。
【００６６】
第８の態様の第４の可能な実施方式に関して、第５の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が、更に、
ソフトウェアフローテーブルから、第２のサービスのデータパケットとマッチする第２の目標フローエントリを取得するステップと、
予め構成されたサービスパスにおいて、第２の目標フローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２の目標フローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、決定された第２の目標サービスパスのアクションは、第２の目標フローエントリのアクション値のうち第２のサービスのデータパケットの処理に用いられるアクションを含む、ステップと、
第２の目標フローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を第２の目標フローエントリ中のマッチフィールド値に構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のサービスのデータパケットのパケットヘッダのヘッダフィールド値に構成し、サービスフローエントリ中のアクション値を第２の目標フローエントリのアクション値に構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第２の目標フローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップ、又は、
予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップであって、決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む、ステップと、
第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を第１のフローエントリのマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を第２のデータパケットのパケットヘッダのヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を第２のフローエントリのアクション値として構成するステップであって、第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない、ステップと、
第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップと、
を実施するようにする。
【００６７】
第８の態様又は第８の態様の第１〜第５の可能な実施方式のうちいずれか１つに関して、第６の可能な実施方式では、プロセッサはコンピュータ操作命令を実行して、通信装置が、更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップ、を実施するようにする。サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップは、具体的には、
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップであって、複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる、ステップと、
サービスパスと物理フローテーブルとの対応関係を構成するステップであって、各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる、ステップと、
を含む。プロセッサはコンピュータ操作命令を実行して、通信装置が、サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って、目標ハードウェアフローテーブルを決定するようにする。具体的には、
プロセッサがコンピュータ操作命令を実行して、通信装置が、具体的には、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと目標ハードウェアフローテーブルとの対応関係に従って、目標ハードウェアフローテーブルを決定するようにすることを含む。
【００６８】
第９の態様は、スイッチを提供する。本スイッチは、
ハードウェア転送チップと、
第３の態様又は第３の態様の第１〜第５の可能な実施方式のうちいずれか１つに係る通信装置、又は、第４の態様又は第４の態様の第１〜第５の可能な実施方式のうちいずれか１つに係る通信装置、又は、第７の態様又は第７の態様の第１〜第６の可能な実施方式のうちいずれか１つに係る通信装置、又は、第８の態様又は第８の態様の第１〜第６の可能な実施方式のうちいずれか１つに係る通信装置と、
を備える。
【００６９】
第１０の態様は、コントローラと第９の態様に係るスイッチとを備える通信システムを提供する。
【００７０】
本発明の実施形態によれば、第１のサービスを実施するために複数のOpenFlowフローテーブルの全てが用いられてよい。したがって、コントローラの処理ロジックに従って、どのフローテーブルのフローエントリ又はどのフローテーブルが第１サービスに対して生成されたかに関係なく、フローエントリを正常に生成及び送信することができる。また、スイッチによって決定される第１の目標サービスパスは、第１のサービスのデータパケットのマッチフィールド値及びアクション値に対応するマッチフィールド及びアクションを含む。したがって、第１の目標サービスパスは第１のサービスをサポートする。更に、第１の目標サービスパスに対応するハードウェアフローテーブルが第１の目標サービスパスによってサポートされるサービスをサポートするので、第１の目標サービスパスに対応するハードウェアフローテーブルは、第１のサービスをサポートするハードウェアフローテーブルである。更に、スイッチは、ハードウェアフローテーブル中に、第１のサービスの実施に用いられるフローエントリを構成することができる。したがって、スイッチがどのコントローラに接続されるかに関係なく、スイッチは、ハードウェアフローテーブル中に、第１のサービスの実施に用いられるフローエントリを正常に構成することができ、結果として第１のサービスを正常に処理し、それによりサービス処理の失敗確率を低減することができる。
【図面の簡単な説明】
【００７１】
本発明の実施形態の技術的解決策をより明確に説明するために、以下、実施形態又は従来技術を説明するのに必要な添付の図面を簡単に紹介する。当然ながら、添付の図面は以下の説明において本発明の実施形態の一部を示すに過ぎない。当業者であれば、これらの添付の図面から創意工夫なく他の図面を更に導出できるであろう。
【図１−１】本発明の実施形態に係る通信システムのネットワーク構造の概略図である。
【図１−２】本発明の実施形態に係る通信システムのネットワーク構造の概略図である。
【図２】本発明の実施形態１に係る方法の概略フローチャートである。
【図３−１】本発明の実施形態２に係る通信装置２００の概略構造図である。
【図３−２】本発明の実施形態２に係る通信装置２００の概略構造図である。
【図４】本発明の実施形態３に係る通信装置３００の概略構造図である。
【図５】本発明の実施形態４に係るスイッチ４００の概略構造図である。
【図６】本発明の実施形態５に係る通信システム５００の概略構造図である。
【発明を実施するための形態】
【００７２】
以下、本発明の実施形態における技術的解決策を、本発明の実施形態において添付図面を参照しながら、明確且つ完全に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部であり全部ではない。当業者が創意工夫なく本発明の実施形態に基づいて得る他の実施形態は、全て本発明の保護範囲に包含されるものとする。
【００７３】
図１−１は、本発明の実施形態に係る通信システムのネットワーク構造の概略図である。通信システムは、スイッチ（スイッチ）１１０及びコントローラ（コントローラ）１２０を備える。スイッチ１１０は、オープンフロー（OpenFlow）プロトコルを用いて、コントローラ１２０と通信する。
【００７４】
図１−２に示されるように、スイッチ１１０は、上位層の通信装置１１０−１と、下位層のハードウェア転送チップ１１０−２とを含んでよい。ハードウェア転送チップ１１０−２は、具体的には、特定用途向け集積回路（Application  Specific  Integrated  Circuits，ASIC）チップであってよい。ハードウェア転送チップは、アクセス制御リスト（Access  Control  List，ACL）１とACL2のような、ハードウェアフローテーブルを含む。
【００７５】
本発明の実施形態で提供される方法、装置及びシステムは、ソフトウェア定義ネットワーク（software  defined  network、略してＳＤＮ）システムに適用される。ＳＤＮシステムは、コントローラ及びスイッチを含む。コントローラとスイッチとの間の通信に用いられるプロトコルは、OpenFlowプロトコルであってもよいし、プロプライエタリプロトコルや別の標準プロトコルであってもよい。コントローラがフローエントリを送出するために用いるフローテーブル構造は、スイッチによりコントローラに報告されてよく、或いはコントローラ上で予め構成されてもよい。
【００７６】
また、コントローラがOpenFlowプロトコルを用いてスイッチと通信する場合、フローテーブル構造は、OpenFlowフローテーブルによってサポートされるマッチフィールド及びアクションを含む。
以下、OpenFlowプロトコルが採用される例を用いて実施形態を詳述する。別のプロトコルが採用される実施方式は、OpenFlowプロトコルが採用される実施方式と同様であり、以下の実施形態における実施方式を参照することができ、その詳細な説明は省略する。
【００７７】
図２は、本発明の実施形態１に係る方法の概略フローチャートである。本発明の実施形態１に係る方法は、図１−１又は図１−２に示される通信システムに適用されてよい。
【００７８】
図２に示されるように、本発明の実施形態１に係る方法は、以下のステップを含む。
【００７９】
Ｓ１１０：スイッチ（図１−１に示されるスイッチ１１０）が、OpenFlowプロトコルを用いて、フローテーブル構造をコントローラ（図１−１に示されるコントローラ１２０）にレポートする。フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含む。複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在し、共通集合は、スイッチのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含む。複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプである。
【００８０】
フローテーブルのタイプがワイルドカードタイプである場合、フローテーブルの構造に従ってフローエントリを生成するとき、コントローラは、フローテーブルによってサポートされる任意の１以上のマッチフィールドを用いて、フローエントリを生成してよい。
【００８１】
例えば、テーブルT0はワイルドカードタイプであり、サポートされるマッチフィールドは６つのマッチフィールド（すなわちin_port、eth_type、src_mac、dst_mac、ip_src及びip_dst）を含む。そして、コントローラがテーブルT0に従って生成するフローエントリは、一部のマッチフィールドに対応するマッチフィールド値のみを含んでよい。例えば、生成されるフローエントリは、４つのマッチフィールドすなわちin_port、eth_type、src_mac及びdst_macの値を含む。或いは、テーブルT0の全てのマッチフィールドに対応するマッチフィールド値を含んでよい。
【００８２】
具体的には、スイッチへの接続を確立した後、コントローラは、フローテーブル機能要求メッセージ（table  stats  request）をスイッチに送信する。スイッチは、フローテーブル機能要求メッセージを受信した後に、コントローラにフローテーブル機能応答メッセージ（table  stats  reply）を返す。フローテーブル能力応答メッセージは、フローテーブル構造を搬送する。
【００８３】
複数のOpenFlowフローテーブルは、具体的には、テーブルT0（Table  0）やテーブルT1（Table  1）等を含んでよい。マッチフィールドは、具体的には、入力ポート（in_port）、イーサネットタイプ（eth_type）及び送信元ＭＡＣアドレス（src_mac）を含んでよい。アクションは、具体的には、ポートを介して転送すること（output）、送信元ＭＡＣアドレスを変更すること、宛先ＭＡＣアドレスを変更すること等を含んでよい。
【００８４】
例えば、第１のサービスは、具体的には、ＩＰに基づくレイヤ２転送サービスであってよく、ＩＰに基づくレイヤ２転送サービスを実現するには、マッチフィールドin_port、eth_type、src_mac及びdst  mac（宛先ＭＡＣアドレス）及びアクションoutputが必要となる。
【００８５】
スイッチのハードウェアフローテーブルが第１のサービスをサポートすることを決定するための基準は、スイッチの１以上のハードウェアフローテーブルが、第１のサービスを実現するのに必要なマッチフィールド及びアクションを含むことであってよい。例えば、第１のサービスを実現するには、マッチフィールドin_port、eth_type、src_mac及びdst  mac並びにアクションoutputが必要となる。スイッチの１つのハードウェアフローテーブルは、マッチフィールドin_portとeth_typeを含み、別のハードウェアフローテーブルはマッチフィールドsrc_macとdst  macとアクションoutputを含む。そして、スイッチのハードウェアフローテーブルが第１のサービスをサポートすると考えられてよい。また、第１のサービスを実現するために必要な一部のアクション、例えばマッチフィールドpop_vlan（マッチフィールドpop_vlanが第１のサービスを実現するために必要であることを前提とする）は、ハードウェアフローテーブル中に構成される必要はないかもしれないが、非ハードウェアフローテーブルタイプであるスイッチの別のハードウェアリソースによってサポートされる。この場合、第１のサービスを実現するために必要な各マッチフィールドがスイッチのハードウェアフローテーブルに含まれ、第１のサービスを実現するために必要なアクションのうちハードウェアフローテーブルに書き込まれる必要のある各アクションが、スイッチのハードウェアフローテーブルに含まれる場合、スイッチのハードウェアフローテーブルが第１サービスをサポートすると考えることができる。結論として、スイッチの１以上のハードウェアフローテーブルが、第１のサービスを実現するために必要なマッチフィールドを含み、第１のサービスを実現するために必要なアクションのうち１以上のハードウェアフローテーブルに書き込まれる必要のあるアクションを含む場合、１以上のハードウェアフローテーブルは、第１のサービスをサポートしてよい。
【００８６】
具体的な実施時には、スイッチによってレポートされる複数のOpenflowフローテーブルのマッチフィールドは全てOpenflowプロトコルがサポートするマッチフィールドであってよく、スイッチによってレポートされる複数のOpenflowフローテーブルのアクションは全てOpenflowプロトコルがサポートするアクションであってよい。留意すべきこととして、共通集合は、スイッチのハードウェアフローテーブルによってサポートされる１以上のサービスを実現するために用いられるマッチフィールド及びアクションを含んでよい。レポートされる複数のOpenflowフローテーブルの全てが、Openflowプロトコルがサポートする全てのマッチフィールドと全てのアクションを含む場合、つまり、共通集合がOpenFlowプロトコルがサポートする全てのマッチフィールドと全てのアクションを含む場合、スイッチのハードウェアフローテーブルによってサポートされるサービスで可能な限り多くのサービスを実現するために、共通集合に含まれるマッチフィールド及びアクションを用いることができる。
【００８７】
フローテーブル構造は、表１に示すものであってよい。
【表１】
0006490205.tif 000002
【００８８】
Ｓ１２０：スイッチが、コントローラがOpenFlowプロトコルを用いて送信したフローエントリを受信し、フローエントリをソフトウェアフローテーブル中に構成する。フローエントリは、コントローラによりフローテーブル構造とスイッチによってレポートされたデータパケットについての情報とに従って生成される。レポートされたデータパケットについての情報は、第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。
【００８９】
留意すべきこととして、Ｓ１１０が実行されるとき、スイッチのソフトウェアフローテーブル及びハードウェアフローテーブルは、フローエントリを含まないか、或いは受信されたデータパケットとマッチすることのできないデフォルトフローエントリのみを含む。
【００９０】
Ｓ１２０において、スイッチが、マッチするフローエントリがハードウェアフローテーブル又はソフトウェアフローテーブルに見つけることのできないデータパケットを受信する度に、スイッチは、コントローラから、データパケットとマッチするフローエントリを要求し、フローエントリをソフトウェアフローテーブル中に構成し、続くステップＳ１３０〜Ｓ１５０に従ってハードウェアフローテーブル中にフローエントリを構成する。
【００９１】
具体的な実施時には、ステップＳ１２０は、以下の実行プロセスのうち１以上を含む。
【００９２】
Ｓ１２０−１：スイッチが、１つのデータパケット（例えば第１のデータパケット）を受信する。
【００９３】
Ｓ１２０−２：スイッチが、第１に、スイッチのハードウェアフローテーブルにおいて、データパケットとマッチするフローエントリを検索する。
【００９４】
フローエントリが見つからない場合、ステップＳ１２０−３が実行される。フローエントリが見つかった場合、見つかったフローエントリのアクション値に従って、データパケットが処理される。
【００９５】
Ｓ１２０−３：次に、スイッチが、スイッチのソフトウェアフローテーブルにおいて、データパケットとマッチするフローエントリを検索する。
【００９６】
フローエントリが見つからない場合、ステップＳ１２０−４が実行される。フローエントリが見つかった場合、見つかったフローエントリのアクション値に従って、データパケットが処理される。
【００９７】
Ｓ１２０−４：スイッチが、コントローラから、データパケットとマッチするフローエントリを要求する。
【００９８】
具体的には、スイッチは、Packet  Inメッセージをコントローラに送信する。Packet  Inメッセージは、データパケットについての情報、例えばデータパケットの受信に用いられるポートの番号を含み、別の例では、データパケット自体又はデータパケットのパケットヘッダ情報を含む。コントローラは、Packet  Inメッセージを受信すると、フローテーブル構造及びデータパケットについての情報（例えば、データパケットのパケットヘッダ情報中のイーサネットタイプ、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、或いはデータパケットの受信に用いられるポートの番号）に従って、データパケットとマッチするフローエントリを生成し、生成されたフローエントリをFlow  modメッセージを用いてスイッチに送信する。
【００９９】
Ｓ１２０−５：スイッチが、受信されたフローエントリをソフトウェアフローテーブル中に構成する。
【０１００】
Ｓ１２０−１で受信されたデータパケットが第１のデータパケットである場合、Ｓ１２０−４において、第１のデータパケットとマッチするフローエントリが要求される。対応して、Ｓ１２０−５において、第１のデータパケットとマッチするフローエントリが、ソフトウェアフローテーブル中に構成される。
【０１０１】
第１のデータパケットとマッチする第１のフローエントリは、１つであっても２つ以上であってもよい。例えば、前述のＩＰに基づくレイヤ２転送サービスでは、表２−１に示されるように、T0のフローエントリのみが生成されてよい。或いは、表２−２Ａ及び表２−２Ｂに示されるように、T0のフローエントリとT1のフローエントリとが生成されてよい。
【表２】
0006490205.tif 000003
【表３】
0006490205.tif 000004
【表４】
0006490205.tif 000005
【０１０２】
留意すべきこととして、データパケットに対して、データパケットとマッチするフローエントリが２つ以上ある場合、表２−２Ａ及び表２−２Ｂに示されるように、フローエントリの一部（例えば、表２−２Ａに示すフローエントリ）がソフトウェアフローテーブル中に構成されている可能性がある。これは、以前にレポートされた別のデータパケットについてコントローラによって送出されたフローエントリが、フローエントリの一部を含むことを示す。次に、コントローラは、スイッチに対して構成されたフローエントリの一部を繰り返し送出しないことがある。したがって、フローエントリが、Ｓ１２０で第１のデータパケットとマッチするフローエントリの少なくとも１つを含むことは、以下の状況を含む。すなわち、第１のデータパケットとマッチする１つのフローエントリがある場合、コントローラによってスイッチに送信されたフローエントリに１つのフローエントリが含まれる。第１のデータパケットとマッチするフローエントリが２つ以上あるとき、２つ以上のフローエントリの一部がコントローラによってスイッチに以前に送信されている場合、コントローラは、２つ以上のフローエントリ中の他方のフローエントリのみを送信してよい。
【０１０３】
ＩＰに基づくレイヤ２転送サービス用にテーブルT0及びテーブルT1のフローエントリが生成される例では、ＩＰに基づくレイヤ２転送サービスの複数のデータパケットがＳ１２０でコントローラにレポートされた後に構成されるソフトウェアフローテーブルの例を、表３−１及び表３−２に示す。
【表５】
0006490205.tif 000006
【表６】
0006490205.tif 000007
【０１０４】
第１のサービスを実現するために、Ｓ１１０でレポートされた複数のOpenFlowフローテーブルの全てが用いられてよい。したがって、Ｓ１２０では、コントローラの処理ロジックに従って、どのフローテーブルのフローエントリ又はどのフローテーブルが第１サービスに対して生成されたかに関係なく、フローエントリを正常に生成することができる。
【０１０５】
留意すべきこととして、本発明の本実施形態におけるハードウェアフローテーブルは、ハードウェア形式のフローテーブルのことであり、具体的には、スイッチのハードウェア転送チップ内のフローテーブル、例えばACLリストであってよい。本発明の本実施形態におけるソフトウェアフローテーブルは、ソフトウェア形式のOpenFlowフローテーブルのことであり、具体的には、スイッチのメモリに記憶されたOpenFlowフローテーブルであってよい。同様に、プロプライエタリプロトコル又は別の標準プロトコルが実現に用いられる場合、ソフトウェアフローテーブルは、対応するプロトコルに準拠するフローテーブルである。
【０１０６】
Ｓ１３０：スイッチが、ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定する。
【０１０７】
以下、具体的な実施例を参照しながら具体的な実施方式を説明する。
【０１０８】
例えば、スイッチは、ポート２を通して第１のデータパケットを受信する。第１のデータパケットのヘッダフィールドでは、イーサネットタイプを0x800に、送信元ＭＡＣアドレスを0:0:0:0:0:3に、宛先ＭＡＣアドレスを0:0:0:0:0:4に、送信元ＩＰアドレスを192.168.0.1に、宛先ＩＰアドレスを192.168.0.2に、送信元ポート番号を6633に、宛先ポート番号を6589に指定する。
【０１０９】
スイッチは第１に、テーブルT0において第１のデータパケットとマッチするフローエントリを発見する。データパケットがポート２から受信されるので、テーブルT0の第２のフローエントリがマッチする。更に、テーブルT1において、テーブルT0の第２のフローエントリのアクション値“goto:1”に従って、第１のデータパケットとマッチするフローエントリが発見される。
【０１１０】
第１データパケットのeth  type（イーサネットタイプ）は0x800であるので、送信元ＭＡＣアドレスは0:0:0:0:0:3であり、宛先ＭＡＣアドレスは0:0:0:0:0:4であり、テーブルT1の第２のフローエントリがマッチする。データパケットは、テーブルT1の第２のフローエントリのアクション値“output:3”に従ってポート３を介して転送される。
【０１１１】
前述の実装時、第１サービスの第１データパケットとマッチする見つかった第１フローエントリは、テーブルT0の第２フローエントリとテーブルT1の第２フローエントリとを含む。
【０１１２】
第１のデータパケットとマッチするフローエントリを取得した後、スイッチは、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定する。
【０１１３】
各予め構成されたサービスパスは、各サービスパスに対応するサービスを実現するために必要なマッチフィールド及びアクションを含む。
【０１１４】
サービスパスの例を表４に示す。
【表７】
0006490205.tif 000008
【０１１５】
スイッチは、サービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定する。決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドの入力ポート（ingress  port）マッチフィールド及びパケットヘッダ（packet  headers）マッチフィールドを含む。第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む。入力ポートマッチフィールドは、受信したデータパケットがスイッチに入るためのポート番号（すなわち、スイッチがデータパケットを受信するポートの番号）を照合するために用いられる。パケットヘッダマッチフィールドは、受信したデータパケットのパケットヘッダ内のフィールドを照合するために用いられる。
【０１１６】
前述の例と同様に、第１のフローエントリが２つあり、含まれるマッチフィールド値に対応するマッチフィールドはin_port、eth_type、src_mac及びdst  macである。in_portは入力ポートマッチフィールドである。eth_type、src_mac及びdst  macに対応するマッチフィールド値は、第１のデータパケットのパケットヘッダ内のフィールドを照合するために用いられ、パケットヘッダマッチフィールドである。含まれるアクション値はgoto:1及びoutput:3である。goto:1は、次のテーブルが更に検索されることを示すために用いられ、output:3は、第１のデータパケットがポート３を介して転送されることを示すために用いられる。分かるように、output:3のみが、第1のデータパケットを処理するために用いられるアクション値である。
【０１１７】
留意すべきこととして、第１のフローエントリは、入力ポートマッチフィールド値を含まなくてもよい。対応して、第１の目標サービスパスのマッチフィールドは当然、入力ポートマッチフィールドを含まなくてもよい。
【０１１８】
更に留意すべきこととして、複数のフローテーブルのフローエントリを用いてサービスを実現する場合、マッチするフローエントリは、メタデータ（metadata）マッチフィールド値と、メタデータマッチフィールド値を照合するためのデータを生成するために用いられるメタデータアクションとを更に含むことができる。表５−１及び表５−２に示されるように、メタデータマッチフィールドはmetaであり、メタデータマッチフィールド値は0x2であり、メタデータマッチフィールド値を照合するためのデータを生成するために用いられるアクションはw_meta:0x2である。
【０１１９】
メタデータマッチフィールド値は、データパケットのパケットヘッダ情報を照合するために用いられるものではなく、入力ポートマッチフィールド及びパケットヘッダマッチフィールドと同等である。すなわち、メタデータマッチフィールドは、入力ポートマッチフィールド又はパケットヘッダマッチフィールドに属さない。メタデータアクションは、データパケットを処理するために用いられるものではなく、すなわち、データパケットを処理するために用いられるアクション値に対応するアクションではない。
【表８】
0006490205.tif 000009
【表９】
0006490205.tif 000010
【０１２０】
スイッチは、各サービスフローテーブルにおいて、マッチフィールドがin_port、eth_type、src_mac及びdst  macを含み且つアクションがoutputを含むサービスパスを、第１の目標サービスパスとして検索する。表４に示されるように、L2_L1T4S_IPv4IPv6Pathのマッチフィールドは、in_port、eth_type、src_mac及びdst  macを含み、L2_L1T4S_IPv4IPv6Pathのアクションはoutputを含む。したがって、L2_L1T4S_IPv4IPv6Pathが第１の目標サービスパスとして決定される。
【０１２１】
留意すべきこととして、１つの第１のフローエントリが存在しても、２つ以上の第１のフローエントリが存在してもよい。
【０１２２】
１つの第１のフローエントリが存在する場合、第１のフローエントリに含まれるマッチフィールド値に対応する各マッチフィールドは、入力ポートマッチフィールド又はパケットヘッダマッチフィールドに属し、含まれる各アクションは、第１のデータパケットの処理に用いられるアクションに属する。対応して、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み、且つアクションが第１のフローエントリのアクション値に対応するアクションを含むサービスパスが、予め構成されたサービスパスにおいて直接的に、第１の目標サービスパスとして決定されてよい。
【０１２３】
第１のフローエントリが２つ以上ある場合、スイッチは、第１のフローエントリが見つかった後、以下の方法に従って第１の目標サービスパスを決定して、決定の効率を改善することができる。
【０１２４】
Ａ１：スイッチは、第１のフローエントリを集約して、複合フローエントリを生成する。複合フローエントリによって含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち、入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリによって含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値である。
【０１２５】
Ａ２：スイッチは、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み、且つアクションが複合フローエントリのアクション値に対応するアクションを含むサービスパスを、第１の目標サービスパスとして決定してよい。
【０１２６】
Ｓ１４０：スイッチが、第１の目標サービスパスとハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応するハードウェアフローテーブルを決定する。第１の目標サービスパスに対応するハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする。
【０１２７】
具体的には、スイッチは、サービスパスとハードウェアフローテーブルとの対応関係を予め構成する。各サービスパスに対応するハードウェアフローテーブルは、各サービスパスがサポートするサービスをサポートする。例えば、各サービスパスは、対応するサービスパスによってサポートされるサービスを実現するために必要なマッチフィールド及びアクションを含む。表６に示されるように、サービスパスL2_L1T4S_IPv4IPv6は、ハードウェアフローテーブルACL3及びACL5に対応する。ACL3及びACL5は、ＩＰに基づきL2_L1T4S_IPv4IPv6によってサポートされるレイヤ２転送サービスを実現するために必要なマッチフィールド及びアクションを含む。
【表１０】
0006490205.tif 000011
【０１２８】
L2_L1T4S_IPv4IPv6Pathは、ステップＳ１３０で決定された目標サービスパスである。表６によれば、目標サービスパスに対応するハードウェアフローテーブルはACL3及びACL5であると決定されてよい。
【０１２９】
留意すべきこととして、スイッチは、サービスパスと対応するハードウェアフローテーブルとの対応関係を直接構成してよく、或いは、サービスパスと別の情報との対応関係や、別の情報とハードウェアフローテーブルとの対応関係を構成することにより、サービスパスと対応するハードウェアフローテーブルとの対応関係を間接的に構成してもよい。
【０１３０】
サービスパスをより簡便に構成するために、サービスパスとハードウェアフローテーブルとの対応関係は以下のように構成されてよい。
【０１３１】
Ｂ１：複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成する。複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる。
【０１３２】
留意すべきこととして、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のないアクションは、ハードウェアフローテーブルが配置されるスイッチの非ハードウェアフローテーブルタイプのハードウェアリソースによってサポートされ得るアクションを指す。
【０１３３】
Ｂ２：サービスパスと物理フローテーブルとの対応関係を構成する。各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる。
【０１３４】
具体的な実施方式では、各サービスパスのマッチフィールドは、対応する全ての物理フローテーブルのマッチフィールドのユニバーサルセットであってもよく、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションのユニバーサルセットであってもよい。
【０１３５】
この方法を採用することにより、異なるサービスパスにより各物理フローテーブルを用いることができる。したがって、複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とがＢ１で構成された後、様々なサービスを実現するためのサービスパスをＢ２で都合よく構成することができる。
【０１３６】
例えば、予め構成された物理フローテーブルL1はマッチフィールドeth_src及びeth_dstを含み、予め構成された物理フローテーブルT4Sは、マッチフィールドip_src及びip_dstを含み、且つアクションoutputを含む。サービスXを実現するには、マッチフィールドeth_src、eth_dst、ip_src及びip_dst並びにアクションoutputが必要となる。物理フローテーブルL1及びT4Sに従って、サービスXを実現するためのサービスパスYが生成されてよく、サービスパスYと物理フローテーブルL1との対応関係と、サービスパスYと物理フローテーブルT4Sとの対応関係が構成されてよい。
【０１３７】
対応して、ステップＳ１６０において、スイッチは、第１の目標サービスパスと物理フローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１の物理フローテーブルを決定し、第１の物理フローテーブルとハードウェアフローテーブルとの対応関係に従って、第１の物理フローテーブルに対応するハードウェアフローテーブルを決定する。
【０１３８】
Ｓ１５０：スイッチが、第１のフローエントリに従ってハードウェアフローテーブルのフローエントリを構成する。
【０１３９】
Ｓ１５０の具体的な実施は、以下を含んでよい。
【０１４０】
Ｃ１：新しいフローエントリをハードウェアフローテーブルに追加する。
【０１４１】
Ｃ２：追加されたフローエントリのマッチフィールド値として、第１のフローエントリのマッチフィールド値のうち、入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値を構成する。
【０１４２】
Ｃ３：第１のアクション値以外のアクション値を、追加されたフローエントリのアクション値として構成し、ここでアクション値及び第１のアクション値の各々は、第１のフローエントリのアクション値の範囲内であり、第１のデータパケットの処理に用いられるアクション値の範囲内である。第１のアクション値は、ハードウェアフローテーブルに含まれず、且つ、ハードウェアフローテーブルが配置されるスイッチの非ハードウェアフローテーブルタイプのハードウェアリソースによってサポートされるアクションに対応するアクション値である。
【０１４３】
留意すべきこととして、第１のフローエントリは第１のアクション値を含まなくてよい。
【０１４４】
ステップＳ１３０において、Ａ１及びＡ２の方法を用いて目標サービスパスを決定する場合、このステップでは、複合フローエントリのマッチフィールド値を、追加されたフローエントリのマッチフィールド値として直接構成することができ、複合フローエントリのアクション値のうち第１のアクション値以外の別のアクション値が、追加されたフローエントリのアクション値として構成される。
【０１４５】
表７−１に示されるように、スイッチは、第１のフローエントリのマッチフィールドin_port、eth_type、src_mac及びdst  macのマッチフィールド値をリストACL５中に構成する。表７−２に示されるように、第１のフローエントリのアクション値output:3がリストACL3中に構成される。
【表１１】
0006490205.tif 000012
【表１２】
0006490205.tif 000013
【０１４６】
ハードウェアフローテーブルが、第1のフローエントリのマッチフィールド値に対応するマッチフィールドよりも多くのマッチフィールドを有する場合、フローエントリ内の別のマッチフィールド値は、具体的な実施に従って、データパケットのヘッダフィールド内の対応する情報として構成されてよい。例えば、第1のフローエントリは送信元ＩＰアドレスを含まず、送信元ＩＰアドレスはデータパケットから抽出され、抽出された送信元ＩＰアドレスが、フローエントリのマッチフィールドsrc_ip（送信元IPアドレス）に対応する値として用いられる。或いは、フローエントリ内の別のマッチフィールド値がワイルドカードとして構成されてよい。
【０１４７】
本発明の実施形態１によれば、第１のサービスを実施するために複数のOpenFlowフローテーブルの全てが用いられてよい。したがって、コントローラの処理ロジックに従って、どのフローテーブルのフローエントリ又はどのフローテーブルが第１サービスに対して生成されたかに関係なく、フローエントリを正常に生成及び送信することができる。また、スイッチによって決定される第１の目標サービスパスは、第１のサービスのデータパケットのマッチフィールド値及びアクション値に対応するマッチフィールド及びアクションを含む。したがって、第１の目標サービスパスは第１のサービスをサポートする。更に、第１の目標サービスパスに対応するハードウェアフローテーブルが第１の目標サービスパスによってサポートされるサービスをサポートするので、第１の目標サービスパスに対応するハードウェアフローテーブルは、第１のサービスをサポートするハードウェアフローテーブルである。更に、スイッチは、ハードウェアフローテーブル中に、第１のサービスの実施に用いられるフローエントリを構成することができる。したがって、スイッチがどのコントローラに接続されるかに関係なく、スイッチは、ハードウェアフローテーブル中に、第１のサービスの実施に用いられるフローエントリを正常に構成することができ、結果として第１のサービスを正常に処理し、それによりサービス処理の失敗確率を低減することができる。
【０１４８】
場合によっては、第１フローエントリのアクション値は、ハードウェアフローテーブルに含まれず、且つハードウェアフローテーブルが配置されるスイッチの非ハードウェアフローテーブルタイプのハードウェアリソースによってサポートされるアクションに対応するアクション値、例えば、スイッチのポート上で属性構成を実行するために用いられるアクション値（例えばpop_vlan及びpush_vlan）を更に含む。対応して、スイッチは更に、スイッチのポート上で属性構成を実行するために用いられる第１のフローエントリ内のアクション値に従って、第１のフローエントリのoutputアクション値によって指定されるポートの属性を構成してよい（例えば、pop_vlanサービスの場合、ポートのVLAN1024の属性がタグなしに設定される）。
【０１４９】
本発明の実施形態１では、図１−２に示されるように、スイッチ（図１−２に示されるスイッチ１１０）は、上位層の通信装置（図１−２に示される通信装置１１０−１）と、下位層のハードウェア転送チップ（図１−２に示されるハードウェア転送チップ１１０−２）とを含んでよい。
【０１５０】
ステップＳ１１０，Ｓ１３０，Ｓ１４０は通信装置によって実行される。
【０１５１】
Ｓ１２０では、スイッチによって受信されたデータパケットは、ハードウェア転送チップのポートを介して受信され、ハードウェアフローテーブルを検索するアクションは、ハードウェア転送チップによって実行される。受信されたデータパケットとマッチするフローエントリがハードウェアフローテーブル内に見つからない場合、ハードウェア転送チップは、受信されたデータパケットを通信装置にレポートする。具体的には、ハードウェア転送チップは、ハードウェア転送チップと通信装置との間のネットワークアダプタチャネルを介して、受信されたデータパケットをレポートしてよい。Ｓ１２０において、ハードウェアフローテーブルを検索するアクション以外の他のアクションは、通信装置によって実行される。
【０１５２】
Ｓ１５０の具体的な実施は、以下のとおりであってよい。すなわち、通信装置が、第１のフローエントリに従って、ハードウェア転送チップのハードウェアフローテーブルのフローエントリを構成する。具体的には、ハードウェアフローテーブル上で構成を実行するために用いられるハードウェア転送チップのインタフェースを呼び出すことにより、フローエントリを構成することであってよい。ハードウェアフローテーブル中に構成される情報は、インタフェースのパラメータとして用いられ、ハードウェア転送テーブルに転送され、ハードウェアフローテーブル中に構成される。
【０１５３】
具体的な実施方式では、通信装置によって予め構成されたサービスパスは、通信装置に接続されたハードウェア転送チップのハードウェアフローテーブルによってサポートされるサービスの実現にのみ用いられる。対応するハードウェアフローテーブルは、ステップＳ１４０において、通信装置によりステップＳ１３０において照合された目標サービスパスについて明確に決定されてよい。この実施方式を採用することにより、通信装置が異なるハードウェア転送チップに接続されるために用いられる場合、異なるハードウェア転送チップのハードウェアフローテーブルによってサポートされるサービスに従って、対応するサービスパスと、サービスパスとハードウェアフローテーブルとの対応関係を構成する必要がある。
【０１５４】
別の具体的な実施方式では、通信装置によって予め構成されたサービスパスは、複数の異なるハードウェア転送チップのハードウェアフローテーブルによってサポートされるサービスを実現するために用いられてよい。この実施方式を採用することにより、通信装置が異なるハードウェア転送チップに接続されるために用いられる場合、異なるハードウェア転送チップのハードウェアフローテーブルによってサポートされるサービスに従って、サービスパスとハードウェアフローテーブルとの対応関係が構成されるならば、通信装置と異なるハードウェア転送チップとの接続をより都合よく実現することができる。
【０１５５】
本発明の実施形態１では、Ｓ１１０の共通集合は更に、スイッチのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含んでよい。ステップＳ１２０でレポートされるデータパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含んでよい。Ｓ１２０でコントローラによって送信されたフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含んでよい。
【０１５６】
対応して、本方法は更に、スイッチが、ソフトウェアフローテーブルから、第２のデータパケットとマッチする第２のフローエントリを取得し、第２のフローエントリのアクションに従って第２のデータパケットを処理するステップ、を含んでよい。この方法を採用することにより、スイッチのハードウェアフローテーブルは第２のサービスをサポートしていないが、スイッチは、ソフトウェアフローテーブルを検索する方式で第２のサービスのデータパケットを処理することができる。
【０１５７】
第２のフローエントリを取得するステップの後、本方法は更に、スイッチが、予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップ、を含んでよい。決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む。
【０１５８】
前述の第２の具体的な実施方式では、第２のデータパケットは第２のサービスに対応し、スイッチのハードウェアフローテーブルは第２のサービスをサポートしないので、第２の目標サービスパスは対応するハードウェアフローテーブルを有さない。したがって、第２の目標サービスパスとハードウェアフローテーブルとの対応関係を構成することができない。対応して、この場合、第２の目標サービスパスに対応するハードウェアフローテーブルを発見することができない。
【０１５９】
この場合では、第２のサービスに対応するデータパケットの後の処理の効率を向上するために、本発明の実施形態１では、本方法は更に以下を含んでよい。
【０１６０】
Ｄ１：スイッチが、第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成する。サービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドである。また、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を、第２のフローエントリのアクション値として構成する。第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない。
【０１６１】
Ｄ２：スイッチが、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて、後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理する。
【０１６２】
サービスフローテーブルが完全マッチテーブルであるということは、サービスフローテーブルのサービスフローエントリの各マッチフィールドは、ワイルドカードではなく対応するマッチフィールド値を有するので、サービスフローテーブルのフローエントリに含まれるマッチフィールド値の数は同じであることを意味する。したがって、テーブルの検索効率を向上させるために、ハッシュアルゴリズムを用いてテーブルを検索することができる。
【０１６３】
具体的な実施方式は以下のとおりであってよい。すなわち、スイッチが、後続のデータパケットを受信した後にＳ１２０−２を実行する（Ｓ１２０−２のデータパケットは具体的には後続のデータパケットである）。フローエントリが見つからない場合、サービスフローテーブルにおいて、後続のデータパケットとマッチするフローエントリが検索される。フローエントリが見つからない場合、ステップＳ１２０−３が実行される。フローエントリが見つかった場合、後続のデータパケットは、見つかったフローエントリのアクション値に従って処理される。また、スイッチによって別のサービスのデータパケットが受信されると、この具体的な実施方式においてデータパケットを処理することもできる。
【０１６４】
また、各データパケットに従ってコントローラによって送出された各フローエントリが、データパケットとマッチする全てのフローエントリを含む場合、スイッチは、データパケットとマッチする全ての受信フローエントリを直接用いることにより、予め構成されたサービスパスにおいて、データパケットとマッチするサービスパスを決定してもよい。２つの具体的な実施方式は以下のとおりである。
【０１６５】
具体的な実施方式１：フローエントリを搬送し且つコントローラによってスイッチに送信されるメッセージ（例えばFlow  modメッセージ）は更に、識別情報を含む。識別情報は、同じデータパケットに対応する全てのフローエントリを識別するために用いられ、具体的には、搬送されるフローエントリに対応するデータパケットの識別子であってよい。対応して、スイッチは、コントローラから受信されるフローエントリの中から、識別情報に従って、同じデータパケットに対応する全てのフローエントリを識別し、例えば、データパケットAに対応する全てのフローエントリを識別し、データパケットBに対応する全てのフローエントリを識別する。また、予め構成されたサービスパスにおいて、データパケットとマッチするサービスパスを決定する。
【０１６６】
具体的な実施方式２：コントローラは、異なるデータパケットとマッチする全てのフローエントリを、異なるメッセージに追加する。例えば、Flow  modメッセージ１に、データパケットAとマッチする全てのフローエントリを追加し、Flow  modメッセージ２に、データパケットBとマッチする全てのフローエントリを追加する。対応して、スイッチは、メッセージから、データパケットに対応する全てのフローエントリを取得し、予め構成されたサービスパスにおいて、データパケットとマッチするサービスパスを決定する。
【０１６７】
受信されたフローエントリを直接用いることにより、マッチするサービスパスを決定する方法については、前述のステップ１３０において、第１のフローエントリを用いてマッチした第１のターゲットサービスパスを決定する方法を参照する。マッチしたサービスパスが決定された後に、対応するハードウェアフローテーブルを決定し、ハードウェアフローテーブルエントリを構成する方式については、前述のステップ１４０〜１５０を参照し、これらについては再度説明しない。
【０１６８】
図３−１を参照する。本発明の実施形態２は通信装置２００を提供する。通信装置はハードウェア転送チップに接続され、オープンフロー（OpenFlow）プロトコルを用いてコントローラと通信し、インタフェースユニット２０１、ソフトウェアフローテーブル構成ユニット２０２、データパケット処理ユニット２０３及びハードウェアフローテーブル構成ユニット２０４を備える。
【０１６９】
インタフェースユニット２０１は、フローテーブル構造をコントローラにレポートするように構成される。フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在する。共通集合は、ハードウェア転送チップのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプである。インタフェースユニット２０１は更に、データパケットについての情報をコントローラにレポートし、コントローラによって送信されたフローエントリを受信するように構成される。フローエントリは、コントローラによりフローテーブル構造とデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。
【０１７０】
複数のOpenFlowフローテーブルのマッチフィールドは全てOpenFlowプロトコルがサポートするマッチフィールドであってよく、複数のOpenFlowフローテーブルのアクションは全てOpenFlowプロトコルがサポートするアクションであってよい。
【０１７１】
ソフトウェアフローテーブル構成ユニット２０２は、フローエントリをソフトウェアフローテーブル中に構成するように構成される。
【０１７２】
データパケット処理ユニットは、ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するように構成される。決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む。データパケット処理ユニットは、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するように構成される。第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする。留意すべきこととして、データパケット処理ユニット２０３によって処理される第１のデータパケットは、一般に、ハードウェア転送チップによって第１のデータパケット処理ユニットにレポートされる。具体的には、第１のデータパケットを受信した後、ハードウェア転送チップは第１に、ハードウェアフローテーブルにおいて第１のデータパケットとマッチするフローエントリを検索し、フローエントリが見つからなかった場合、第１のデータパケットを通信装置のデータパケット処理ユニット２０３にレポートする。
【０１７３】
１つの第１のフローエントリが存在しても、２つ以上の第１のフローエントリが存在してもよい。対応して、データパケット処理ユニット２０３が、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする目標サービスパスを決定するように構成されることは、具体的には、データパケット処理ユニット２０３が、２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、また、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成されることを含む。データパケット処理ユニット２０３は、１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するように構成される。
【０１７４】
ハードウェアフローテーブル構成ユニットは、第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するように構成される。
【０１７５】
また、共通集合は更に、ハードウェア転送チップのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含んでよい。データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含む。インタフェースユニット２０１によりコントローラから受信されたフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。対応して、データパケット処理ユニット２０３は更に、ソフトウェアフローテーブルから第２のデータパケットとマッチする第２のフローエントリを取得するとき、第２のフローエントリのアクションに従って第２のデータパケットを処理するように構成されてよい。
【０１７６】
具体的な実施方式では、図３−２に示されるように、通信装置は更に、サービスフローテーブル構成ユニット２０５を備えてよい。
【０１７７】
この具体的な実施方式では、データパケット処理ユニット２０３は更に、予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するように構成される。決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む。
【０１７８】
サービスフローテーブル構成ユニット２０５は、第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成するように構成される。サービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドである。また、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を、第２のフローエントリのアクション値として構成するように構成される。第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない。
【０１７９】
対応して、データパケット処理ユニット２０３は更に、第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って、後続のデータパケットを処理するように構成される。
【０１８０】
好ましくは、図３−２に示されるように、通信装置は更に、対応関係構成ユニット２０６を備えてよい。対応関係構成ユニット２０６は、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するように構成される。サービスパスは第１の目標サービスパスを含む。具体的には、対応関係構成ユニット２０６が、複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するように構成されることを含む。複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる。対応関係構成ユニット２０６は、サービスパスと物理フローテーブルとの対応関係を構成するように構成される。各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる。
【０１８１】
対応して、データパケット処理ユニット２０３は、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するように構成される。具体的には、データパケット処理ユニット２０３が、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定するように構成されることを含む。
【０１８２】
本発明の実施形態２に記載の機能ユニットは、実施形態１の通信装置によって実行される方法を実現するように構成されてよい。
【０１８３】
本発明の実施形態２によれば、第１のサービスを実施するために複数のOpenFlowフローテーブルの全てが用いられてよい。したがって、コントローラの処理ロジックに従って、どのフローテーブルのフローエントリ又はどのフローテーブルが第１サービスに対して生成されたかに関係なく、フローエントリを正常に生成及び送信することができる。また、通信装置によって決定される第１の目標サービスパスは、第１のサービスのデータパケットのマッチフィールド値及びアクション値に対応するマッチフィールド及びアクションを含む。したがって、第１の目標サービスパスは第１のサービスをサポートする。更に、第１の目標サービスパスに対応するハードウェアフローテーブルが第１の目標サービスパスによってサポートされるサービスをサポートするので、第１の目標サービスパスに対応するハードウェアフローテーブルは、第１のサービスをサポートするハードウェアフローテーブルである。  更に、通信装置は、ハードウェアフローテーブルにおいて、第１のサービスの実施に用いられるフローエントリを構成することができる。したがって、通信装置がどのコントローラに接続されるかに関わらず、通信装置は、ハードウェアフローテーブル中に第１のサービスの実施に用いられるフローエントリを正常に構成することができ、結果として第１のサービスを正常に処理し、それによりサービス処理の失敗確率を低減することができる。
【０１８４】
図４を参照する。本発明の実施形態３は、フローエントリ構成を実施する通信装置３００を提供する。通信装置３００は、プロセッサ３０１及びメモリ３０２を備える。
【０１８５】
メモリ３０２は、コンピュータ操作命令を記憶するように構成される。
【０１８６】
プロセッサ３０１は、メモリ３０２に記憶されたコンピュータ操作命令を実行して、通信装置が以下のステップを実施するように構成される。
オープンフロー（OpenFlow）プロトコルを用いて、フローテーブル構造をコントローラにレポートするステップ。フローテーブル構造は、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションと、複数のOpenFlowフローテーブルのタイプとを含み、複数のOpenFlowフローテーブルがサポートするマッチフィールド及びアクションには共通集合が存在する。共通集合は、ハードウェア転送チップのハードウェアフローテーブルによってサポートされる第１のサービスの実施に用いられるマッチフィールド及びアクションを含み、複数のOpenFlowフローテーブルのタイプは全てワイルドカードタイプであり、通信装置はハードウェア転送チップに接続される。
フローテーブル構造に従って生成されコントローラによりOpenFlowプロトコルを用いて送信されたフローエントリを受信し、フローエントリをソフトウェアフローテーブル中に構成するステップ。フローエントリは、コントローラによりフローテーブル構造と通信装置によってレポートされたデータパケットについての情報とに従って生成され、データパケットについての情報は第１のサービスの第１のデータパケットについての情報を含み、フローエントリは、第１のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。
ソフトウェアフローテーブルから、第１のデータパケットとマッチする第１のフローエントリを取得し、第１のフローエントリのアクション値に従って第１のデータパケットを処理し、予め構成されたサービスパスにおいて、第１のフローエントリとマッチする第１の目標サービスパスを決定するステップ。決定された第１の目標サービスパスのマッチフィールドは、第１のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第１の目標サービスパスのアクションは、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値に対応するアクションを含む。
第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するステップ。第１の目標サービスパスに対応する第１のハードウェアフローテーブルは、第１の目標サービスパスによってサポートされるサービスをサポートする。
第１のフローエントリに従って、第１のハードウェアフローテーブルのフローエントリを構成するステップ。
【０１８７】
具体的な実施方式では、プロセッサ３０１は、コンピュータ操作命令を実行して、具体的には、通信装置によってレポートされる複数のOpenFlowフローテーブルのマッチフィールドが全てOpenFlowプロトコルがサポートするマッチフィールドであり、レポートされる複数のOpenFlowフローテーブルのアクションが全てOpenFlowプロトコルがサポートするアクションであるようにしてよい。
【０１８８】
１つの第１のフローエントリが存在しても、２つ以上の第１のフローエントリが存在してもよい。対応して、プロセッサ３０１はコンピュータ操作命令を実行して、通信装置が、具体的には、以下のステップを実行できるようにしてよい。
２つ以上の第１のフローエントリが存在する場合、第１のフローエントリを集約して複合フローエントリを生成し、ここで複合フローエントリに含まれるマッチフィールド値は、第１のフローエントリのマッチフィールド値のうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドに対応するマッチフィールド値であり、複合フローエントリに含まれるアクション値は、第１のフローエントリのアクション値のうち第１のデータパケットの処理に用いられるアクション値であり、且つ、予め構成されたサービスパスにおいて、マッチフィールドが複合フローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが複合フローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップ。
１つの第１のフローエントリが存在する場合、予め構成されたサービスパスにおいて、マッチフィールドが第１のフローエントリのマッチフィールド値に対応するマッチフィールドを含み且つアクションが第１のフローエントリのアクション値に対応するアクションを含む１つのサービスパスを、第１の目標サービスパスとして決定するステップ。
【０１８９】
具体的な実施時には、共通集合は更に、ハードウェア転送チップのハードウェアフローテーブルによってサポートされない第２のサービスの実施に用いられるマッチフィールド及びアクションを含んでよい。データパケットについての情報は更に、第２のサービスの第２のデータパケットについての情報を含む。コントローラから受信されるフローエントリは更に、第２のデータパケットとマッチするフローエントリのうち少なくとも１つを含む。対応して、プロセッサ３０１はコンピュータ操作命令を実行して、通信装置が更に、ソフトウェアフローテーブルから、第２のデータパケットとマッチする第２のフローエントリを取得し、第２のフローエントリのアクションに従って第２のデータパケットを処理するステップ、を実行するようにする。
【０１９０】
更に、プロセッサ３０１は更に、コンピュータ操作命令を実行して、通信装置が更に、以下のステップを実行するようにしてよい。
予め構成されたサービスパスにおいて、第２のフローエントリとマッチする第２の目標サービスパスを決定するステップ。決定された第２の目標サービスパスのマッチフィールドは、第２のフローエントリのマッチフィールド値に対応するマッチフィールドのうち入力ポートマッチフィールド及びパケットヘッダマッチフィールドを含み、第２の目標サービスパスのアクションは、第２のフローエントリのアクション値のうち第２のデータパケットの処理に用いられるアクション値に対応するアクションを含む。
第２のフローエントリに従って、第２の目標サービスパスに対応するサービスフローテーブルのサービスフローエントリを構成し、ここでサービスフローテーブルは完全マッチテーブルであり、サービスフローテーブルのマッチフィールドは全て第２の目標サービスパスのマッチフィールドであり、また、サービスフローエントリ中の第１のマッチフィールド値を、第１のフローエントリの対応するマッチフィールド値として構成し、サービスフローエントリ中の第２のマッチフィールド値を、第２のデータパケットのパケットヘッダの対応するヘッダフィールド値として構成し、サービスフローエントリ中のアクション値を第２のフローエントリのアクション値として構成するステップ。第１のマッチフィールド値に対応するマッチフィールドは、第１のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属し、第２のマッチフィールド値に対応するマッチフィールドは、第２のフローエントリ中のマッチフィールド値に対応するマッチフィールドに属さない。
第２のサービスの後続のデータパケットを後で受信したとき、サービスフローテーブルにおいて後続のデータパケットとマッチするサービスフローエントリを検索し、発見されたサービスフローエントリのアクションに従って後続のデータパケットを処理するステップ。
【０１９１】
好ましくは、プロセッサ３０１は更にコンピュータ操作命令を実行して、通信装置が更に、サービスパスと対応するハードウェアフローテーブルとの対応関係を構成するステップを実行するようにする。サービスパスは第１の目標サービスパスを含む。具体的には、以下のステップを含む。
複数の物理フローテーブルと、物理フローテーブルとハードウェアフローテーブルとの対応関係とを構成するステップ。複数の物理フローテーブルはそれぞれ、サポートされるマッチフィールド及びアクションを含み、各物理フローテーブルのマッチフィールドは、対応するハードウェアフローテーブルのマッチフィールドに含まれ、各物理フローテーブルのアクションのうちハードウェアフローテーブルに書き込まれる必要のあるアクションは、対応するハードウェアフローテーブルのアクションに含まれる。
サービスパスと物理フローテーブルとの対応関係を構成するステップ。各サービスパスのマッチフィールドは、全ての対応する物理フローテーブルのマッチフィールドに含まれ、各サービスパスのアクションは、全ての対応する物理フローテーブルのアクションに含まれる。
【０１９２】
対応して、プロセッサ３０１がコンピュータ操作命令を実行して、通信装置が、第１の目標サービスパスと第１のハードウェアフローテーブルとの予め構成された対応関係に従って、第１の目標サービスパスに対応する第１のハードウェアフローテーブルを決定するようにすることは、具体的には、プロセッサ３０１がコンピュータ操作命令を実行して、通信装置が、具体的には、第１の目標サービスパスと対応する第１の物理フローテーブルとの対応関係に従って、第１の物理フローテーブルを決定し、第１の物理フローテーブルと対応する第１のハードウェアフローテーブルとの対応関係に従って、第１のハードウェアフローテーブルを決定するようにすること、を含む。
【０１９３】
本発明の実施形態３に記載のプロセッサ３０１は、コンピュータ操作命令を実行して、通信装置が、実施形態１の通信装置によって実行される方法を実施するようにする。
【０１９４】
本発明の実施形態３によれば、第１のサービスを実施するために複数のOpenFlowフローテーブルの全てが用いられてよい。したがって、コントローラの処理ロジックに従って、どのフローテーブルのフローエントリ又はどのフローテーブルが第１サービスに対して生成されたかに関係なく、フローエントリを正常に生成及び送信することができる。また、通信装置によって決定される第１の目標サービスパスは、第１のサービスのデータパケットのマッチフィールド値及びアクション値に対応するマッチフィールド及びアクションを含む。したがって、第１の目標サービスパスは第１のサービスをサポートする。更に、第１の目標サービスパスに対応するハードウェアフローテーブルが第１の目標サービスパスによってサポートされるサービスをサポートするので、第１の目標サービスパスに対応するハードウェアフローテーブルは、第１のサービスをサポートするハードウェアフローテーブルである。更に、通信装置は、ハードウェアフローテーブルにおいて、第１のサービスの実施に用いられるフローエントリを構成することができる。したがって、通信装置がどのコントローラに接続されるかに関わらず、通信装置は、ハードウェアフローテーブル中に第１のサービスの実施に用いられるフローエントリを正常に構成することができ、結果として第１のサービスを正常に処理し、それによりサービス処理の失敗確率を低減することができる。
【０１９５】
図５を参照する。本発明の実施形態４は、通信装置４０１及びハードウェア転送チップ４０２を備えるスイッチ４００を提供する。通信装置４０１はハードウェア転送チップ４０２に接続され、通信装置４０１はオープンフロー（OpenFlow）プロトコルを用いてコントローラと通信する。通信装置４０１は、具体的には、実施形態２によって提供される通信装置２００又は実施形態３によって提供される通信装置３００である。
【０１９６】
図６を参照する。本発明の実施形態５は、スイッチ５０１及びコントローラ５０２を備える通信システム５００を提供する。スイッチ５０１は、オープンフロー（OpenFlow）プロトコルを用いてコントローラ５０２と通信し、スイッチ５０１は、具体的には、実施形態４によって提供されるスイッチ４００である。
【０１９７】
当業者であれば、本明細書に開示された実施形態に記載された実施例と組み合わせて、ユニット及びアルゴリズムステップが、電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアの組み合わせによって実施されてよいことを認識することができるであろう。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の特定の適用及び設計制約条件に依存する。当業者であれば、特定の用途ごとに記載された機能を実施するために異なる方法を採用することができるが、その実施は本発明の範囲を超えていると考えるべきではない。
【０１９８】
当業者であれば、前述のシステム、装置及びユニットの詳細な作業プロセスについて、簡潔且つ簡単な説明のために、前述の方法の実施形態の対応するプロセスを参照することができることが理解できるであろう。ここでは詳細な説明を省略する。
【０１９９】
本願で提供されるいくつかの実施形態において、開示されたシステム、装置及び方法が他の方式で実施され得ることを理解されたい。例えば、記載された装置の実施形態は、例示に過ぎない。例えば、ユニット分割は論理的な機能分割に過ぎず、実際の実装では他の分割であってもよい。例えば、複数のユニット又はコンポーネントを組み合わせて、或いは統合して別のシステムとしてもよいし、一部の機能を無視してもよいし、実行しなくてもよい。また、表示又は議論された相互結合又は直接結合又は通信接続は、いくつかのインタフェースを介して実装されてよい。装置間又はユニット間の間接的結合又は通信接続は、電子的、機械的或いは他の形態で実施されてよい。
【０２００】
別個の部品として記載されたユニットは、物理的に分離していてもいなくてもよく、ユニットとして表示された部品は物理ユニットであってもなくてもよく、１つの位置にあってもよいし、複数のネットワークユニットに分散されてもよい。これらのユニットの一部又は全部は、実施形態の解決策の目的を達成するために実際の必要に応じて選択されてよい。
【０２０１】
また、本発明の実施形態における機能ユニットは、１つの処理ユニットに統合されてもよいし、各ユニットが物理的に単独で存在してもよいし、２つ以上のユニットが１つのユニットに統合されてもよい。
【０２０２】
機能がソフトウェア機能ユニットの形で実装され、独立した製品として販売或いは使用される場合、その機能はコンピュータ可読記憶媒体に記憶されてよい。そのような理解に基づき、本発明の技術的解決策は本質的に、或いは先行技術に寄与する部分や、技術的解決策の一部は、ソフトウェア製品の形態で実施することができる。ソフトウェア製品は、記憶媒体に記憶され、コンピュータ装置（パーソナルコンピュータ、サーバ、或いはネットワーク装置であってよい）に、本発明の実施形態で説明した方法のステップの全部又は一部を実行するよう指示するためのいくつかの命令を含む。上記の記憶媒体は、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ（ROM、Read-Only  Memory）、ランダムアクセスメモリ（RAM、Random  Access  Memory）、磁気ディスク、光ディスク等の、プログラムコードを記憶できる任意の媒体を含む。
【０２０３】
以上の説明は、本発明の特定の実施方式に過ぎず、本発明の保護範囲を限定するものではない。本発明に開示された技術的範囲内で当業者が容易に想到できる変形又は置換は、いかなるものも本発明の保護範囲に包含されるものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に属するものとする。
【図１−１】
0006490205.tif 000014
【図１−２】
0006490205.tif 000015
【図２】
0006490205.tif 000016
【図３−１】
0006490205.tif 000017
【図３−２】
0006490205.tif 000018
【図４】
0006490205.tif 000019
【図５】
0006490205.tif 000020
【図６】
0006490205.tif 000021