(57)【要約】【課題】パケットの転送遅延を小さくする。【解決手段】制御装置が決定した処理ルールを用いてパケットを処理する複数の転送装置の１つとして動作する転送装置は、通信部、記憶部、制御部を備える。通信部は、処理ルールと処理ルールを適用するパケットの特徴情報の組み合わせを、特徴情報ごとに決定された値と共に通知する通知パケットを受信する。記憶部は、取得した組み合わせを、通知された値で特定される記憶領域に格納する。制御部は、通信部が受信したデータパケットに、データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、特定値を用いて記憶部の記憶領域に格納された処理ルールを読み出す。制御部は、前記データパケットを前記読み出した処理ルールを用いて処理する。【選択図】図２
2017158082.tif 000002
【特許請求の範囲】
【請求項１】
制御装置が決定した処理ルールを用いてパケットを処理する複数の転送装置の１つとして動作する転送装置であって、
前記処理ルールと前記処理ルールを適用するパケットの特徴情報の組み合わせを、前記特徴情報ごとに決定された値と共に通知する通知パケットを受信する通信部と、
前記組み合わせを、前記値で特定される記憶領域に格納する記憶部と、
前記通信部が受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて前記記憶部の記憶領域に格納された処理ルールを読み出し、前記データパケットを前記読み出した処理ルールを用いて処理する制御部
を備えることを特徴とする転送装置。
【請求項２】
前記制御部は、
前記データパケットに前記特定値が含まれていない場合、前記データパケットの特徴情報を用いて、前記データパケットの処理に適用する処理ルールを検索し、
前記データパケットの処理に適用する処理ルールに、前記データパケットの処理に適用する処理ルールの格納先を特定する値を前記特定値として前記データパケットに付加することが含まれている場合、前記データパケットに前記特定値を付加した他のデータパケットを生成し、
前記通信部は、前記他のデータパケットを、前記データパケットの処理に適用する処理ルールで指定された転送先に転送する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記制御部は、前記通信部が前記特定値を含む第１のデータパケットを受信し、かつ、前記第１のデータパケットの処理に適用する処理ルールに、前記第１のデータパケットから前記特定値を削除することが含まれている場合、前記特定値を前記第１のデータパケットから削除して第２のデータパケットを生成し、
前記通信部は、前記第１のデータパケットの処理に適用する処理ルールで指定された転送先に、前記第２のデータパケットを転送する
ことを特徴とする請求項１または２に記載の転送装置。
【請求項４】
ネットワーク中の複数の転送装置での通信を制御する制御装置であって、
前記ネットワークで転送されるパケットの特徴情報に対応付けて、前記複数の転送装置の各々について、前記特徴情報で識別されるパケットに適用する処理を表わす処理ルールを取得する取得部と、
前記複数の転送装置の各々に宛てて、当該転送装置に適用する処理ルールと当該処理ルールに対応する特徴情報とを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを生成する生成部と、
前記通知パケットを送信する送信部
を備えることを特徴とする制御装置。
【請求項５】
前記複数の転送装置の各々について、当該転送装置の接続先を表わすトポロジ情報を記憶する記憶部をさらに備え、
前記取得部は、
前記トポロジ情報を用いて、前記複数の転送装置のいずれでもない装置からデータパケットを受信し、かつ、前記データパケットを前記複数の転送装置中の第１の転送装置に転送する第２の転送装置を特定し、
前記第２の転送装置に適用する処理ルールに、前記第２の転送装置が前記データパケットに適用する処理ルールの格納先を特定する特定値を前記データパケットに追加することを含める
ことを特徴とする請求項４に記載の制御装置。
【請求項６】
前記取得部は、
前記トポロジ情報を用いて、前記複数の転送装置のいずれかから受信した受信パケットを、前記複数の転送装置のいずれでもない装置に転送する第３の転送装置を特定し、
前記第３の転送装置に適用する処理ルールに、前記第３の転送装置が使用した処理ルールの格納先を特定する特定値を前記受信パケットから削除することを含める
ことを特徴とする請求項５に記載の制御装置。
【請求項７】
複数の転送装置と、
前記複数の転送装置での通信を制御する制御装置
を備え、
前記制御装置は、前記複数の転送装置の各々に宛てて、当該転送装置が処理するパケットの特徴情報と、当該特徴情報を有するパケットに当該転送装置が行う処理を特定する処理ルールの組み合わせを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを送信し、
前記複数の転送装置の各々は、
前記制御装置から受信した通知パケットで通知された前記組み合わせを前記値で特定される記憶領域に格納し、
受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて記憶領域に格納された処理ルールを読み出し、
前記読み出した処理ルールを用いて前記データパケットを処理する
ことを特徴とする通信システム。
【請求項８】
ネットワーク中の複数の転送装置での通信を制御する制御装置は、前記複数の転送装置の各々に宛てて、当該転送装置が処理するパケットの特徴情報と、当該特徴情報を有するパケットに当該転送装置が行う処理を特定する処理ルールの組み合わせを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを送信し、
前記複数の転送装置の各々は、
前記制御装置から受信した通知パケットで通知された前記組み合わせを前記値で特定される記憶領域に格納し、
受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて記憶領域に格納された処理ルールを読み出し、
前記読み出した処理ルールを用いて前記データパケットを処理する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置の間での通信方法に関する。
【背景技術】
【０００２】
近年、ＳＤＮ(Software Defined Networking)に対応したシステムの研究や開発が進められており、様々なＳＤＮコントローラ、ＳＤＮスイッチなどが提供されている。また、コントローラとスイッチとの間の通信にＯｐｅｎＦｌｏｗプロトコルが使用されることがある。
【０００３】
図１は、ＳＤＮでの通信方法の例を説明する図である。図１の例では、ネットワーク中に、スイッチ１５（１５ａ〜１５ｃ）、コントローラ１０、アプリケーションサーバ５が含まれている。アプリケーションサーバ５は、ネットワーク中で送受信されるパケットの特徴を表わすサーチキーごとに、そのサーチキーを有するパケットに対してスイッチ１５が行う処理を決定する。アプリケーションサーバ５は、決定したパケットの処理ルールとサーチキーの組み合わせを、その組合せが適用されるスイッチ１５の識別情報に対応付けてコントローラ１０に通知する（矢印Ａ１）。コントローラ１０は、アプリケーションサーバ５から通知された情報を、サーチキーごとに、Ｆｌｏｗエントリデータベース（ＦｌｏｗエントリＤＢ）に格納する。さらに、コントローラ１０は、処理ルールとサーチキーの組み合わせを、その組合せが適用されるスイッチ１５に通知する（矢印Ａ２〜Ａ４）。すると、スイッチ１５ａ〜１５ｃの各々は、受信した処理ルールを、Ｆｌｏｗエントリテーブルの空き領域に格納する。図１では、Ｆｌｏｗエントリテーブル中の領域の指定に使用されるエントリ番号を、Ｆｌｏｗエントリテーブル中の各領域の右側に記載している。
【０００４】
例えば、コントローラ１０は、サーチキー＝ａのパケットに適用する情報を取得したとする。サーチキー＝ａのパケットは、スイッチ１５ａ〜１５ｃのいずれにも受信され、スイッチ１５ａ〜１５ｃのいずれでも転送処理の対象となるとする。この場合、矢印Ａ２〜Ａ４に示すように、スイッチ１５ａ〜１５ｃのいずれにも、サーチキー＝ａのパケットに対する各スイッチ１５での処理ルールがコントローラ１０から通知される。すると、スイッチ１５ａ〜１５ｃのいずれでも、サーチキー＝ａのパケットに適用する処理ルールがＦｌｏｗエントリテーブルに格納される。このとき、スイッチ１５ａ〜１５ｃのいずれでもエントリ番号＝１００のエントリが使用されたとする。
【０００５】
次に、コントローラ１０は、サーチキー＝ｃのパケットに適用する情報をアプリケーションサーバ５から取得したとする。サーチキー＝ｃのパケットは、スイッチ１５ｃで処理されるが、スイッチ１５ａとスイッチ１５ｂでは処理されないとする。この場合、コントローラ１０は、サーチキー＝ｃに関する処理ルールをスイッチ１５ｃに送信するが、スイッチ１５ａとスイッチ１５ｂには、サーチキー＝ｃに関する処理ルールを送信しない。処理ルールを受信したスイッチ１５ｃは、サーチキー＝ｃに関する処理ルールをエントリ番号＝１０１の領域に記録したとする。
【０００６】
その後、サーチキー＝ｂのパケットとサーチキー＝ｄのパケットについても、サーチキー＝ａのパケットと同様に処理ルールの決定や処理ルールの通知が行われたとする。スイッチ１５ａ〜１５ｃのいずれも、サーチキー＝ｂのパケットとサーチキー＝ｄのパケットを処理する場合、コントローラ１０は、スイッチ１５ａ〜１５ｃの各々に処理ルールを通知する。各スイッチ１５は、サーチキー＝ａのパケットに対する処理ルールと同様に、取得した処理ルールをＦｌｏｗエントリテーブルに格納する。このため、図１に示すように、スイッチ１５ａとスイッチ１５ｂでは、サーチキー＝ｂのパケットに対するルールがエントリ番号＝１０１に記録され、サーチキー＝ｄのパケットに対するルールがエントリ番号＝１０２に記録される。一方、スイッチ１５ｃでは、サーチキー＝ｂのパケットに対するルールがエントリ番号＝１０２に記録され、サーチキー＝ｄのパケットに対するルールがエントリ番号＝１０３に記録される。
【０００７】
スイッチ１５ａ〜１５ｃの各々は、パケットを受信すると、受信パケット中の情報をサーチキーと比較し、受信パケットの条件に当てはまるサーチキーに対応付けられた処理を、受信パケットに対して行う。
【０００８】
関連する技術として、転送経路中の複数のノードの各々が実行する処理を特定する複数の情報を付したパケットを受信したノードが、自装置に対応する識別情報に基づいて特定された処理を行う方法が提案されている（例えば、特許文献１）。さらに、コントローラが、ネットワークのトポロジに応じて計算された経路に固有の識別子をルールとし、所定の出力ポートからの出力をアクションとしたエントリを、通信が開始される前に各スイッチに登録する方法も提案されている（例えば、特許文献２）。この方法では、各スイッチは、自装置のテーブルに登録されたエントリのルールに適合する受信パケットに対して、エントリに定義されたアクションを行う。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１４−１９７８８８号
【特許文献２】国際公開第２０１２／０９６１３１号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＳＤＮスイッチは、パケットを受信すると、Ｆｌｏｗエントリテーブル中のサーチキーを受信パケットのアドレス等の情報と比較することにより、受信パケットの処理に使用可能な条件を検索する。このため、Ｆｌｏｗエントリテーブル中のエントリの数が大きくなるほど、各ＳＤＮスイッチでの検索処理にかかる時間が長くなる。さらに、転送経路中のＳＤＮスイッチの各々がＦｌｏｗエントリテーブルを検索すると、検索に時間がかかってしまう。しかし、背景技術で述べたように、複数のスイッチでの処理を特定する複数の情報をパケットに付すと、パケットの転送のために添付する情報のサイズが大きくなるため、パケット中に含められるデータ量が制限される結果、転送速度が低下するという問題もある。
【００１１】
本発明は、１つの側面として、パケットの転送遅延を小さくすることを目的とする。
【課題を解決するための手段】
【００１２】
ある態様にかかる転送装置は、制御装置が決定した処理ルールを用いてパケットを処理する複数の転送装置の１つとして動作し、通信部、記憶部、制御部を備える。通信部は、前記処理ルールと前記処理ルールを適用するパケットの特徴情報の組み合わせを、前記特徴情報ごとに決定された値と共に通知する通知パケットを受信する。記憶部は、前記組み合わせを、前記値で特定される記憶領域に格納する。制御部は、前記通信部が受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて前記記憶部の記憶領域に格納された処理ルールを読み出す。制御部は、前記データパケットを前記読み出した処理ルールを用いて処理する。
【発明の効果】
【００１３】
パケットの転送遅延が小さくなる。
【図面の簡単な説明】
【００１４】
【図１】ＳＤＮでの通信方法の例を説明する図である。
【図２】実施形態にかかる通信方法の例を説明する図である。
【図３】転送装置の構成の例を説明する図である。
【図４】制御装置の構成の例を説明する図である。
【図５】転送装置および制御装置のハードウェア構成の例を説明する図である。
【図６】システムの例を説明する図である。
【図７】インデックス値の決定方法の例を説明する図である。
【図８】通知パケットに含まれる情報の例を説明する図である。
【図９】Ｆｌｏｗエントリの配信方法の例を説明する図である。
【図１０】Ｆｌｏｗエントリテーブルの例を説明する図である。
【図１１】Ｆｌｏｗエントリの配信方法の例を説明する図である。
【図１２】Ｆｌｏｗエントリを配信する際の処理の例を説明するフローチャートである。
【図１３】通知パケットを受信した転送装置の処理の例を説明するフローチャートである。
【図１４】パケットのフォーマットの例を説明する図である。
【図１５】パケットの転送処理の例を説明する図である。
【図１６Ａ】パケットの転送処理の際に転送装置が行う処理の例を説明するフローチャートである。
【図１６Ｂ】パケットの転送処理の際に転送装置が行う処理の例を説明するフローチャートである。
【図１６Ｃ】パケットの転送処理の際に転送装置が行う処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
図２は、実施形態にかかる通信方法の例を説明する図である。図２の例では、ネットワーク中に、転送装置２０（２０ａ〜２０ｅ）と制御装置５０が含まれている。転送装置２０は、ＳＤＮスイッチとして動作し、制御装置５０はＳＤＮコントローラとして動作する。なお、制御装置５０は、アプリケーションサーバ５からＦｌｏｗエントリの情報を取得してもよく、また、制御装置５０自身がＦｌｏｗエントリの情報を算出してもよい。以下、転送装置２０がパケットに対して行う処理を指定する処理ルールとパケットに適用されるサーチキーの組み合わせを「Ｆｌｏｗエントリ」と記載することがある。また、サーチキーは、Ｆｌｏｗエントリ中の処理ルールを適用するパケットの特徴を表わす特徴情報である。例えば、サーチキーとして、宛先アドレス等のアドレス情報が用いられても良い。
【００１６】
制御装置５０は、ネットワーク中の転送装置２０の各々に対して、その転送装置２０での処理に使用されるＦｌｏｗエントリを、そのＦｌｏｗエントリを格納する領域を識別する識別情報と対応付けて通知する。ここで、Ｆｌｏｗエントリを格納する領域を識別する識別情報は、Ｆｌｏｗエントリが通知された転送装置２０に備えられているメモリ中で、通知対象のＦｌｏｗエントリの格納に使用される領域の特定に使用される情報である。以下の説明では、識別情報のことを「インデックス値」と記載することもある。例えば、Ｆｌｏｗエントリを格納する領域のインデックス値として、メモリ中のアドレスが指定されてもよい。各転送装置２０は、制御装置５０から通知されたＦｌｏｗエントリを、転送装置２０が備えるメモリ中で、通知対象のＦｌｏｗエントリに対応付けて通知されたインデックス値で特定される領域に格納する。
【００１７】
例えば、制御装置５０は、サーチキー＝ａに適用する処理ルールを含むＦｌｏｗエントリに対応付けて、そのＦｌｏｗエントリを格納する領域のインデックス値（ＩＤ）として、ＩＤ＝Ａを転送装置２０ａ、転送装置２０ｂ、転送装置２０ｅに通知したとする。すると、転送装置２０ａは、転送装置２０ａが備えるメモリ中のアドレス＝Ａから始まる領域に、通知されたＦｌｏｗエントリを格納する。転送装置２０ｂ、転送装置２０ｅも同様に、通知されたＦｌｏｗエントリを格納する。このため、転送装置２０ａ、転送装置２０ｂ、転送装置２０ｅにおいて、各転送装置２０のメモリのアドレス＝Ａから始まる領域には、サーチキー＝ａのパケットに適用する処理ルールを含むＦｌｏｗエントリが格納される。
【００１８】
その後、転送装置２０ａがパケットＰ１を受信したとする（矢印Ａ１１）。図２の例では、パケットＰ１は、サーチキー＝ａを含むパケットであるとする。すると、転送装置２０ａは、メモリ中のＦｌｏｗエントリとパケットＰ１中の情報を比較することにより、パケットＰ１の処理に、サーチキー＝ａを含むＦｌｏｗエントリを使用することを決定する。転送装置２０ａは、サーチキー＝ａのＦｌｏｗエントリをＩＤ＝Ａの領域に格納している。ここで、Ｆｌｏｗエントリは、サーチキーごとに制御装置５０で決定された領域に格納されるので、他の転送装置２０でもサーチキー＝ａを含むＦｌｏｗエントリはＩＤ＝Ａの領域に格納されていることになる。そこで、転送装置２０ａは、パケットＰ１に適用するＦｌｏｗエントリの格納されている領域のインデックス値を他の転送装置２０に通知するために、パケットＰ１にＩＤ＝Ａという情報を付加することにより、パケットＰ２を生成する。転送装置２０ａは、パケットＰ２を転送先の転送装置２０ｂに出力する（矢印Ａ１２）。
【００１９】
転送装置２０ｂは、パケットＰ２を受信すると、パケットの処理に使用するＦｌｏｗエントリの格納先のインデックス値がパケットＰ２に含まれていることを特定する。転送装置２０ｂは、パケットＰ２に、インデックス値＝Ａが含まれているので、メモリ中のインデックス値＝Ａで特定される領域に格納されているＦｌｏｗエントリを使用することを決定する。転送装置２０ｂは、選択したＦｌｏｗエントリに従って、パケットＰ２を転送装置２０ｅに転送する（矢印Ａ１３）。
【００２０】
転送装置２０ｅは、パケットＰ２を受信すると、転送装置２０ｂと同様に、パケットＰ２中のインデックス値で識別される領域に格納したＦｌｏｗエントリを使用することを決定する。ここで、転送装置２０ｅがエッジノードである場合、使用対象のＦｌｏｗエントリには、パケット中からインデックス値を除去することも含まれている。このため、転送装置２０ｅは、パケットＰ２からインデックス値を除去して、パケットＰ１を生成するとともに、生成したパケットＰ１を転送する（矢印Ａ１４）。
【００２１】
このように、実施形態にかかる制御装置５０は、他のサーチキーを含むＦｌｏｗエントリに対しても同様に、通知対象のＦｌｏｗエントリと、そのＦｌｏｗエントリを格納する領域のインデックス値を対応づけて、転送装置２０に通知する。このとき、制御装置５０は、各サーチキーのＦｌｏｗエントリの格納に使用される領域が他のＦｌｏｗエントリの格納領域と重複しないように、サーチキーごとに異なるインデックス値を決定する。一方、転送装置２０は、制御装置５０からの通知により指定された領域に、通知されたＦｌｏｗエントリを格納する。従って、特定のＦｌｏｗエントリは、そのＦｌｏｗエントリを用いた処理を行ういずれの転送装置２０でも、制御装置５０から指定されたインデックス値で識別される領域に格納される。ネットワーク中のエッジ側の転送装置２０は、パケットに適用するＦｌｏｗエントリを検索すると、検索結果をＩＤとして付加したパケットを他の転送装置２０に転送する。すると、ＩＤが付加されているパケットを受信した転送装置２０では、Ｆｌｏｗエントリを検索せずに、ＩＤで指定された領域のＦｌｏｗエントリを使用することを決定できる。このため、図２中の矢印Ｚで示す領域では、転送装置２０によってＦｌｏｗエントリの検索が行われずに、パケットの転送処理が行われる。従って、転送装置２０でのＦｌｏｗエントリの検索に伴う転送遅延を防止することができる。
【００２２】
＜装置構成とシステムの例＞
図３は、転送装置２０の構成の例を説明する図である。転送装置２０は、通信部２１、制御部３０、記憶部４０を備える。通信部２１は、受信部２２と送信部２３を有する。制御部３０は、更新部３１と転送処理部３２を有する。記憶部４０は、Ｆｌｏｗエントリテーブル４１を格納する。
【００２３】
受信部２２は、他の装置からパケットを受信し、送信部２３は、他の装置にパケットを送信する。受信部２２は、制御装置５０から受信したパケットを更新部３１に出力し、制御装置５０以外の装置から受信したパケットを転送処理部３２に出力する。更新部３１は、制御装置５０から通知された情報を用いて、Ｆｌｏｗエントリテーブル４１を更新する。Ｆｌｏｗエントリテーブル４１には、各Ｆｌｏｗエントリの格納領域に対して識別情報（インデックス値）が割り当てられている。更新部３１は、通知されたＦｌｏｗエントリを、そのＦｌｏｗエントリの格納先として通知されたインデックス値で識別される領域に格納する。
【００２４】
転送処理部３２は、パケットにインデックス値が含まれていない場合、Ｆｌｏｗエントリテーブル４１を検索して、パケットに適用するＦｌｏｗエントリを決定する。さらに、転送処理部３２は、適用するＦｌｏｗエントリが格納されている領域を識別するインデックス値を、転送対象のパケットに付加する。転送処理部３２は、インデックス値を付加したパケットを、送信部２３を介して転送する。一方、パケットにインデックス値が含まれている場合、転送処理部３２は、インデックス値で識別される領域に格納されているＦｌｏｗエントリを用いてパケットを処理する。
【００２５】
図４は、制御装置５０の構成の例を説明する図である。制御装置５０は、通信部５１、制御部６０、記憶部７０を備える。通信部５１は、受信部５２と送信部５３を有する。制御部６０は、取得部６１、決定部６２、通知生成部６３を有する。記憶部７０は、トポロジテーブル７１とＦｌｏｗエントリデータベース７２を格納する。トポロジテーブル７１には、ネットワーク中の装置のトポロジを表す情報が記録されている。トポロジテーブル７１には、ネットワークのエッジに位置する転送装置２０については、他のネットワークや端末と接続されているポートの情報も記録されている。トポロジテーブル７１は、例えば、ＬＬＤＰ（Link Layer Discovery Protocol）やＡＲＰ（Address Resolution Protocol）などのブロードキャストパケットを用いて、生成されてもよい。また、トポロジテーブル７１は、予め、オペレータなどから制御装置５０に設定されてもよい。Ｆｌｏｗエントリデータベース７２には、各転送装置２０に通知されるＦｌｏｗエントリの情報が格納される。
【００２６】
受信部５２は、他の装置からパケットを受信し、送信部５３は、他の装置にパケットを送信する。取得部６１は、ネットワーク中の各転送装置２０に通知するＦｌｏｗエントリを取得する。ネットワーク中にＦｌｏｗエントリを決定するアプリケーションサーバ５が含まれている場合、取得部６１は、受信部５２を介して、アプリケーションサーバ５からＦｌｏｗエントリを取得する。一方、ネットワーク中にＦｌｏｗエントリを決定するアプリケーションサーバ５が含まれていない場合、取得部６１は、トポロジテーブル７１を用いて、各転送装置２０に適用するＦｌｏｗエントリを生成する。
【００２７】
決定部６２は、ＦｌｏｗエントリをＦｌｏｗエントリデータベース７２に格納する際に使用する領域を決定するとともに、Ｆｌｏｗエントリに対応付ける識別情報（インデックス値）を決定する。通知生成部６３は、ネットワーク中の転送装置２０に対して、その転送装置２０が使用するＦｌｏｗエントリを、そのＦｌｏｗエントリに対応付ける識別情報とともに通知する通知パケットを生成する。
【００２８】
図５は、転送装置２０および制御装置５０のハードウェア構成の例を説明する図である。転送装置２０と制御装置５０のいずれも、中央演算処理装置１０１、記憶装置１０２、入出力装置１０５、バス１０６、通信デバイス１０７、ポート１０８（１０８ａ、１０８ｂ）を備える。中央演算処理装置１０１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路であり、記憶装置１０２に記憶されたプログラムを実行することができる。記憶装置１０２は、主記憶装置１０３と補助記憶装置１０４を備えていてもよい。主記憶装置１０３は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などのメモリとして実現され、補助記憶装置１０４は、ハードディスクなどで実現される。転送装置２０では、補助記憶装置１０４として、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）が使用されても良い。バス１０６は、中央演算処理装置１０１、記憶装置１０２、入出力装置１０５、通信デバイス１０７を、相互にデータの送受信が可能になるように接続する。入出力装置１０５は、キーボードやマウスなど、情報の入力に使用される任意の装置と、ディスプレイなど、データの出力に使用される任意の装置を含む。通信デバイス１０７は、ポート１０８を介して、接続先の装置との間での通信を行う。なお、転送装置２０と制御装置５０のいずれも、プログラムを記憶した可搬記憶媒体からのデータの入出力が可能な可搬記憶媒体駆動装置を備えていてもよい。また、図５の例では、ポート１０８を２つ図示しているが、制御装置５０や転送装置２０に備えられているポート１０８の数は任意である。
【００２９】
制御装置５０において、通信部５１は、通信デバイス１０７と中央演算処理装置１０１によって実現され、制御部６０は、中央演算処理装置１０１によって実現される。さらに、記憶装置１０２は記憶部７０として動作する。転送装置２０において、通信部２１は、通信デバイス１０７と中央演算処理装置１０１によって実現され、制御部３０は、中央演算処理装置１０１によって実現される。さらに、記憶装置１０２は記憶部４０として動作する。
【００３０】
図６は、システムの例を説明する図である。図６に示すシステムには、アプリケーションサーバ５、制御装置５０、転送装置２０（２０ｘ〜２０ｚ）、端末７（７ａ、７ｂ）が含まれる。制御装置５０は、転送装置２０ｘ〜２０ｚで行われる転送処理を制御する。端末７ａと端末７ｂは、転送装置２０ｘ〜２０ｚを介して互いに通信するものとする。さらに、アプリケーションサーバ５は、制御装置５０と同様に、ネットワーク中のトポロジ情報を保持しており、トポロジ情報を用いて、各転送装置２０で使用されるＦｌｏｗエントリを生成する。
【００３１】
＜実施形態＞
以下、図６に示すシステムにおいて行われる処理の例を、Ｆｌｏｗエントリの配信、転送処理、シミュレーション例に分けて詳しく説明する。以下の説明では、インデックス値の配信の際にＦｌｏｗＭｏｄメッセージ、転送装置２０間でのインデックス値の通知にＭＰＬＳ（Multi Protocol Label Switching）ヘッダが使用される場合を例として説明する。なお、インデックス値の通知方法や配信方法は、ＦｌｏｗＭｏｄメッセージやＭＰＬＳヘッダを用いる方法以外の任意の方法により転送装置２０に通知され得る。以下、端末７ａには、ＩＰａというＩＰ（Internet Protocol）アドレスが割り当てられており、端末７ｂには、ＩＰｂというアドレスが割り当てられているとする。
【００３２】
（Ａ）Ｆｌｏｗエントリの配信
図７は、インデックス値の決定方法の例を説明する図である。図７中のテーブルＴ１は、アプリケーションサーバ５で生成されるＦｌｏｗエントリの例である。アプリケーションサーバ５は、転送装置２０ｘ〜２０ｚの各々に対して、サーチキーとアクションの組み合わせとして、Ｆｌｏｗエントリを生成する。ここで、サーチキーは、処理対象のパケットの特定に使用される特定情報である。アクションは、サーチキーで特定されるパケットに対して、そのＦｌｏｗエントリを適用する転送装置２０が行う処理を表わす処理ルールである。図７の例では、転送装置２０ｘでの処理に使用されるＦｌｏｗエントリでは、宛先アドレスがＩＰａのパケットをポートＰｏ１から出力することが指定されている。同様に、転送装置２０ｙでの処理に使用されるＦｌｏｗエントリでは、宛先アドレスがＩＰａのパケットをポートＰｏ２から出力することが指定されている。さらに、転送装置２０ｚでの処理に使用されるＦｌｏｗエントリでは、宛先アドレスがＩＰａのパケットをポートＰｏ３から出力することが決められている。なお、宛先アドレスがＩＰａであるという条件がサーチキー＝ａであるとする。
【００３３】
アプリケーションサーバ５は、生成したＦｌｏｗエントリの情報を制御装置５０に送信する。制御装置５０の取得部６１は、受信部５２を介して、アプリケーションサーバ５から通知されたＦｌｏｗエントリを取得する。取得部６１は、取得したＦｌｏｗエントリの情報と、トポロジテーブル７１を用いて、エッジに位置する転送装置２０でのアクションとして、インデックス（ＩＤ）値を含むＭＰＬＳヘッダの処理を追加する。このとき、制御装置５０は、転送装置２０にパケットを転送した装置が制御装置５０の制御対象の転送装置２０であるかと、転送装置２０の転送先が転送元と同じネットワーク中の転送装置２０であるかによって追加する処理を決定する。
【００３４】
例えば、制御装置５０が制御するネットワークの入口側のエッジの転送装置２０は、端末７か制御装置５０の制御対象ではない装置からパケットを受信し、制御装置５０の制御対象の転送装置２０にパケットを転送している。図６、図７の例では、転送装置２０ｘは、端末７ｂからパケットを受信し、転送装置２０ｙに転送しているので、制御装置５０が制御するネットワークへの入口側の転送装置２０である。そこで、ネットワークの入り口側のエッジに位置する転送装置２０ｘに対して、取得部６１は、インデックス値（ＩＤ）を含むＭＰＬＳヘッダをパケットに追加することをアクションとして追加する。
【００３５】
一方、制御装置５０が制御するネットワークの出口側のエッジの転送装置２０は、制御装置５０の制御対象の転送装置２０からパケットを受信し、端末７か制御装置５０の制御対象ではない装置へパケットを送信している。図６、図７の例では、転送装置２０ｚは、転送装置２０ｙからパケットを受信するが端末７ａにパケットを送信するので、制御装置５０が制御するネットワークへの出口側の転送装置２０である。そこで、取得部６１は、インデックス値を含むＭＰＬＳヘッダをパケットから除去することを、転送装置２０ｚでのアクションとして追加する。
【００３６】
決定部６２は、Ｆｌｏｗエントリデータベース７２中で、取得部６１での処理後のＦｌｏｗエントリ情報を格納する領域を決定する。決定部６２は、Ｆｌｏｗエントリ情報を格納する領域に対応付けられたインデックス値を、各転送装置２０にＦｌｏｗエントリを通知する際に使用するインデックス値に決定する。例えば、決定部６２は、宛先アドレスがＩＰａ（サーチキー＝ａ）のときのＦｌｏｗエントリの情報をＦｌｏｗエントリデータベース７２中のインデックス値（ＩＤ）＝１００の領域に格納することを決定したとする。すると、図７のＦｌｏｗエントリデータベース７２に示すように、各転送装置２０に通知されるＦｌｏｗエントリの情報が格納される。
【００３７】
決定部６２によって、インデックス値が決定されると、通知生成部６３は、Ｆｌｏｗエントリの情報とインデックス値を含む通知パケットを、処理対象のＦｌｏｗエントリの情報の宛先となる転送装置２０に宛てて生成する。例えば、インデックス値＝１００のＦｌｏｗエントリは、転送装置２０ｘ〜２０ｚの各々での処理に使用される情報を含むので、通知生成部６３は、転送装置２０ｘ〜２０ｚの各々に宛てた通知パケットを生成する。なお、あるフローについては一部の転送装置２０についてだけＦｌｏｗエントリが生成される場合がある。この場合、通知生成部６３は、Ｆｌｏｗエントリが生成されている転送装置２０に対してだけ通知パケットを送信する。例えば、転送装置２０ｚと転送装置２０ｙを含むＦｌｏｗエントリが生成されているが転送装置２０ｘではそのフローの処理が行われないとする。このような場合、通知生成部６３は、転送装置２０ｚと転送装置２０ｙの各々に宛てた通知パケットを生成するが、転送装置２０ｘ宛ての通知パケットは生成しない。
【００３８】
図８は、通知パケットに含まれる情報の例を説明する図である。図８は、通知パケットのうち、Ｌ２ヘッダやＩＰヘッダの後に格納される情報要素の例を示している。図８は、通知パケットが、ＯｐｅｎｆｌｏｗのＦｌｏｗＭｏｄメッセージとして実現される場合の例である。通知パケットは、バージョン、タイプ、ｌｅｎｇｔｈ、ｘｉｄ、パケットマッチ情報、クッキーを含み、さらに、アクションの内容を含む。なお、クッキーフィールドは、パケットマッチ情報とアクションの格納に使用される領域の間の領域である。各情報要素の後のカッコ書きの値は、各要素の記述に使用されるビット数である。例えば、バージョン情報とタイプ情報は８ビットで記述される。
【００３９】
バージョンは、Ｏｐｅｎｆｌｏｗプロトコルのバージョン情報である。タイプはメッセージの種類を示す情報であり、図８の場合、ＦｌｏｗＭｏｄに指定されている。ｌｅｎｇｔｈはパケット長である。ｘｉｄは、通信セッションの特定に使用される情報である。パケットマッチ情報は、各Ｆｌｏｗエントリのサーチキーである。アクションの内容は、各Ｆｌｏｗエントリのアクションの情報であり、処理ルールに相当する。通知生成部６３は、クッキーフィールドに、インデックス値を含める。図８は、クッキーフィールドの６４ビットのうちの先頭側にインデックス値が含められる場合を例として示しているが、インデックス値が記録される領域はクッキーフィールド中の任意の領域である。ただし、クッキーフィールド中でインデックス値が含められている領域として、ネットワーク中の制御装置５０と各転送装置２０で同じ領域を認識しているものとする。
【００４０】
図９は、Ｆｌｏｗエントリの配信方法の例を説明する図である。図９を参照しながら、制御装置５０へのＦｌｏｗエントリの通知からＦｌｏｗエントリの配信までに行われる処理を時系列に沿って説明する。さらに、以下の説明では、処理を行っている装置を分かりやすくするために、符号の末尾に転送装置２０の符号の末尾と同じアルファベットを付けて記載することがある。例えば、更新部３１ｘは転送装置２０ｘ中の更新部３１を表わし、Ｆｌｏｗエントリテーブル４１ｘは転送装置２０ｘ中のＦｌｏｗエントリテーブル４１を表わす。さらに、図９では、装置間の接続に使用されているポート番号を、文字列Ｐｏと数字の組合せとして、接続線の近傍に記載している。なお、矢印Ａ２２〜Ａ２４は処理の順序を限定するものではなく、説明を分かりやすくするための記載に過ぎない。すなわち、矢印Ａ２２〜Ａ２４の処理は、実装に応じて、並行して行われても良く、また、順序が変更されても良い。
【００４１】
矢印Ａ２１に示すように、アプリケーションサーバ５から制御装置５０にＦｌｏｗエントリが通知される。ここでは、まず、サーチキー＝ａに対応付けられたＦｌｏｗエントリ（図７）が制御装置５０に通知されたとする。すると、制御装置５０中の決定部６２は、図７を参照しながら説明した処理により、サーチキー＝ａに対応付けられたＦｌｏｗエントリを、インデックス値（ＩＤ）＝１００に対応付けてＦｌｏｗエントリデータベース７２に記録する。なお、図９では図を見やすくするためにＦｌｏｗエントリデータベース７２中のアクションの詳細を省略しているが、Ｆｌｏｗエントリデータベース７２には図７に示す情報が格納されている。
【００４２】
矢印Ａ２２において、通知生成部６３は、転送装置２０ｘ宛の通知パケットを生成する。転送装置２０ｘ宛の通知パケットは、以下の情報を含み、図８に示すフォーマットを用いて生成される。
パケットマッチ情報    ：宛先ＩＰアドレス＝ＩＰａ（サーチキー＝ａ）
インデックス値（ＩＤ）：１００
アクションの内容１    ：インデックス値を含むＭＰＬＳヘッダを付加
アクションの内容２    ：ポートＰｏ１から出力
通知生成部６３は、生成した通知パケットを、送信部５３を介して、転送装置２０ｘに送信する。図９に示すように、転送装置２０ｘのポートＰｏ２が制御装置５０に接続されているので、通知パケットは、転送装置２０ｘのポートＰｏ２に到達する。
【００４３】
転送装置２０ｘ中の受信部２２ｘは、ポートＰｏ２を介して受信したパケットを更新部３１ｘに出力する。更新部３１ｘは、通知パケットを取得すると、Ｆｌｏｗエントリテーブル４１ｘ中のインデックス値＝１００で特定される領域に、通知パケット中のパケットマッチ情報とアクションの内容を格納する。さらに、更新部３１ｘは、オプションとして、インデックス値もＦｌｏｗエントリテーブル４１ｘに書き込んでも良い。図９には、Ｆｌｏｗエントリテーブル４１ｘのインデックス値＝１００の領域にサーチキー＝ａを含むＦｌｏｗエントリが格納されている様子を示している。なお、図９では図を見やすくするために、Ｆｌｏｗエントリテーブル４１についても、アクションの詳細は省略している。
【００４４】
矢印Ａ２３において、通知生成部６３は、転送装置２０ｙ宛に、以下の情報を含む通知パケットを生成する。
パケットマッチ情報    ：宛先ＩＰアドレス＝ＩＰａ（サーチキー＝ａ）
インデックス値（ＩＤ）：１００
アクションの内容      ：ポートＰｏ２から出力
通知生成部６３は、生成した通知パケットを、送信部５３を介して、転送装置２０ｙに送信する。なお、転送装置２０ｙのポートＰｏ１が制御装置５０に接続されているので、通知パケットは、転送装置２０ｙのポートＰｏ１に到達する。
【００４５】
転送装置２０ｙ中の更新部３１ｙは、受信部２２ｙを介して通知パケットを取得すると、Ｆｌｏｗエントリテーブル４１ｙ中のインデックス値＝１００で特定される領域に、通知パケットで通知された情報を格納する。このため、図９に示すように、Ｆｌｏｗエントリテーブル４１ｙのインデックス値＝１００の領域にサーチキー＝ａを含むＦｌｏｗエントリが格納される。
【００４６】
矢印Ａ２４において、通知生成部６３は、転送装置２０ｚ宛に、以下の情報を含む通知パケットを生成する。
パケットマッチ情報    ：宛先ＩＰアドレス＝ＩＰａ（サーチキー＝ａ）
インデックス値（ＩＤ）：１００
アクションの内容１    ：インデックス値を含むＭＰＬＳヘッダを削除
アクションの内容２    ：ポートＰｏ３から出力
通知生成部６３は、生成した通知パケットを、送信部５３を介して、転送装置２０ｚに送信する。なお、転送装置２０ｚのポートＰｏ２が制御装置５０に接続されているので、通知パケットは、転送装置２０ｚのポートＰｏ２に到達する。
【００４７】
転送装置２０ｚ中の更新部３１ｚは、受信部２２ｚを介して通知パケットを取得すると、Ｆｌｏｗエントリテーブル４１ｚ中のインデックス値＝１００で特定される領域に、通知パケットで通知された情報を格納する。このため、図９に示すように、Ｆｌｏｗエントリテーブル４１ｚのインデックス値＝１００の領域にサーチキー＝ａを含むＦｌｏｗエントリが格納される。
【００４８】
図１０は、Ｆｌｏｗエントリテーブル４１の例を説明する図である。図１０は、図９の矢印Ａ２２〜Ａ２４の処理により転送装置２０ｘ〜２０ｚで更新されたときのＦｌｏｗエントリテーブル４１の例を示している。
【００４９】
Ｆｌｏｗエントリテーブル４１ｘには、矢印Ａ２２で通知されたサーチキーとアクションが、インデックス値（ＩＤ）＝１００に対応付けて記録されている。なお、インデックス値がＦｌｏｗエントリテーブル４１ｘとして使用されているメモリ中のアドレスを示している場合は、Ｆｌｏｗエントリテーブル４１ｘには、インデックス値がデータとして記録されていなくても良い。
【００５０】
同様に、Ｆｌｏｗエントリテーブル４１ｙは、矢印Ａ２３で転送装置２０ｙに通知されたサーチキーとアクションが、インデックス値＝１００に対応付けて記録されている。さらに、Ｆｌｏｗエントリテーブル４１ｚは、矢印Ａ２４で転送装置２０ｚに通知されたサーチキーとアクションが、インデックス値＝１００に対応付けて記録されている。
【００５１】
図１１は、Ｆｌｏｗエントリの配信方法の例を説明する図である。制御装置５０は、図７〜図１０を参照しながら説明したようにサーチキー＝ａのＦｌｏｗエントリの情報を転送装置２０に配信した後も、他のサーチキーを含むＦｌｏｗエントリの配信処理を行う。例えば、サーチキー＝ｂの情報が、矢印Ａ３１に示すようにアプリケーションサーバ５から制御装置５０に通知されたとする。図９の処理の直後はインデックス値＝１０１が空いているので、制御装置５０中の決定部６２は、インデックス値＝１０１で識別される領域をサーチキー＝ｂのＦｌｏｗエントリに割り当てる。サーチキー＝ｂで特定されるフローに含まれるパケットが転送装置２０ｘ〜２０ｚの各々で処理される場合、通知生成部６３は、転送装置２０ｘ〜２０ｚの各々に通知パケットを送信する。
【００５２】
矢印Ａ３２の処理により、サーチキー＝ｂのＦｌｏｗエントリを含む通知パケットが転送装置２０ｘに送信されるので、Ｆｌｏｗエントリテーブル４１ｘのインデックス値＝１０１の領域にサーチキー＝ｂのＦｌｏｗエントリが格納される。同様に、サーチキー＝ｂのＦｌｏｗエントリを含む通知パケットが転送装置２０ｙに送信されると、Ｆｌｏｗエントリテーブル４１ｙのインデックス値＝１０１の領域にサーチキー＝ｂのＦｌｏｗエントリが格納される。さらに、サーチキー＝ｂのＦｌｏｗエントリを含む通知パケットが転送装置２０ｚに送信されると、Ｆｌｏｗエントリテーブル４１ｚのインデックス値＝１０１の領域にサーチキー＝ｂのＦｌｏｗエントリが格納される。
【００５３】
ネットワーク中の一部の転送装置２０では処理が行われないフローについては、制御装置５０は、そのフローを処理する転送装置２０に対してだけＦｌｏｗエントリを含む通知パケットを送信する。例えば、サーチキー＝ｃの情報がアプリケーションサーバ５から制御装置５０に通知されたとする。制御装置５０中の決定部６２は、未使用のインデックス値からインデックス値＝２００を、サーチキー＝ｃを含むＦｌｏｗエントリに割り当てる。サーチキー＝ｃのフローに含まれるパケットが転送装置２０ｘでは処理されないが、転送装置２０ｙと転送装置２０ｚでは処理されるとする。この場合、通知生成部６３は、転送装置２０ｙと転送装置２０ｚに通知パケットを送信する。
【００５４】
転送装置２０ｙの更新部３１ｙは、受信部２２ｙを介してサーチキー＝ｃのＦｌｏｗエントリを含む通知パケットを受信すると、Ｆｌｏｗエントリテーブル４１ｙのインデックス値＝２００の領域にサーチキー＝ｃのＦｌｏｗエントリを格納する。さらに、サーチキー＝ｃのＦｌｏｗエントリを含む通知パケットが転送装置２０ｚに送信されると、Ｆｌｏｗエントリテーブル４１ｚのインデックス値＝２００の領域にサーチキー＝ｃのＦｌｏｗエントリが格納される。
【００５５】
一方、転送装置２０ｘに対しては、サーチキー＝ｃのＦｌｏｗエントリを含む通知パケットが送信されない。また、インデックス値＝２００の領域は、サーチキー＝ｃを含むＦｌｏｗエントリの格納以外には使用されない。このため、転送装置２０ｘが備えるＦｌｏｗエントリテーブル４１ｘにおいては、図１１に示すように、インデックス値＝２００の領域は空き領域となる。
【００５６】
次に、サーチキー＝ｄを含むＦｌｏｗエントリが制御装置５０に通知されたとする。また、サーチキー＝ｄに当てはまるフローに含まれるパケットは、転送装置２０ｙでは処理されないが、転送装置２０ｘと転送装置２０ｚでは処理されるとする。この場合、通知生成部６３は、転送装置２０ｘと転送装置２０ｚに通知パケットを送信する。なお、サーチキー＝ｄを含むＦｌｏｗエントリに対するインデックス値は５００に設定されたとする。通知パケットを受信した各転送装置２０は、Ｆｌｏｗエントリテーブル４１中の通知パケットで指定されたインデックス値で特定される領域に、通知パケットの情報を記録する。このため、Ｆｌｏｗエントリテーブル４１ｘのインデックス値＝５００の領域と、Ｆｌｏｗエントリテーブル４１ｚのインデックス値＝５００の領域には、それぞれ、サーチキー＝ｄを含むＦｌｏｗエントリが格納される。一方、転送装置２０ｙにはサーチキー＝ｄを含むＦｌｏｗエントリは通知されないので、Ｆｌｏｗエントリテーブル４１ｙのインデックス値＝５００の領域は空き領域となる。
【００５７】
図１２は、Ｆｌｏｗエントリを配信する際の処理の例を説明するフローチャートである。制御装置５０は、アプリケーションサーバ５からＦｌｏｗエントリを取得する（ステップＳ１）。決定部６２は、通知されたＦｌｏｗエントリ中のサーチキーを用いて、Ｆｌｏｗエントリデータベース７２をサーチする（ステップＳ２）。Ｆｌｏｗエントリデータベース７２にサーチキーが含まれているかによって、決定部６２は、通知されたＦｌｏｗエントリが新規のエントリであるかを判定する（ステップＳ３）。Ｆｌｏｗエントリデータベース７２にサーチキーが含まれていない場合、決定部６２は、通知されたＦｌｏｗエントリは新規エントリであると判定する（ステップＳ３でＹｅｓ）。この場合、決定部６２は、Ｆｌｏｗエントリデータベース７２の空きエリアに、取得したＦｌｏｗエントリを格納する（ステップＳ４）。決定部６２は、エントリの格納に使用した位置を示すインデックス値を処理対象のエントリに付与する（ステップＳ５）。その後、通知生成部６３は、Ｆｌｏｗエントリの通知対象の転送装置２０に宛てて、Ｆｌｏｗエントリとインデックス値を含む通知パケットを生成し、送信部５３を介して通知パケットを配信する（ステップＳ７）。
【００５８】
一方、Ｆｌｏｗエントリデータベース７２にサーチキーが含まれている場合、決定部６２は、通知されたＦｌｏｗエントリは新規エントリではないと判定する（ステップＳ３でＮｏ）。この場合、決定部６２は、サーチキーを含むＦｌｏｗエントリの情報を更新する（ステップＳ６）。その後、通知生成部６３は、Ｆｌｏｗエントリの通知対象の転送装置２０に宛てて、Ｆｌｏｗエントリとインデックス値を含む通知パケットを生成し、送信部５３を介して通知パケットを配信する（ステップＳ７）。
【００５９】
図１３は、通知パケットを受信した転送装置２０の処理の例を説明するフローチャートである。転送装置２０の受信部２２は、通知パケットを受信する（ステップＳ１１）。更新部３１は、Ｆｌｏｗエントリテーブル４１中で通知パケット中のインデックス値により識別されるエリアに、Ｆｌｏｗエントリを格納する。
【００６０】
（Ｂ）転送処理
次に、Ｆｌｏｗエントリの配信後に行われるパケットの転送処理の例を説明する。
【００６１】
図１４は、パケットのフォーマットの例を説明する図である。Ｐ１１は端末７間での通信に使用されるデータパケットのフォーマットの例を示している。データパケットは、Ｌ２ヘッダ、ＩＰヘッダ、データを備える。
【００６２】
Ｐ１２は、ネットワーク中の転送装置２０間での転送対象となるパケットのフォーマットの例を示す。Ｐ１２に示すパケットは、Ｐ１１のパケットのＬ２ヘッダとＩＰヘッダの間にＭＰＬＳヘッダを挿入したパケットである。ＭＰＬＳヘッダは、Ｓｈｉｍラベルフィールド、ＥＸＰ（Experimental Use）フィールド、Ｓ（Bottom of Stack）フィールド、ＴＴＬ（Time to Live）フィールドを含む。ＥＸＰフィールドは、ＱｏＳ（Quality of Service）情報の格納に使用される。ＳフィールドはＭＰＬＳヘッダが複数続いているかを表わすフラグである。
【００６３】
転送装置２０は、Ｐ１１に示すようにＭＰＬＳヘッダの含まれていないパケットを受信すると、転送先が同じネットワーク中の転送装置２０の場合、受信パケットのＬ２ヘッダの後にＭＰＬＳヘッダを挿入する。このとき、転送装置２０は、ＭＰＬＳヘッダのＳｈｉｍラベルフィールドに、受信パケットに適用するＦｌｏｗエントリの格納に使用している領域のインデックス値を格納する。以下、図１５を参照しながらパケットの転送処理の際に行われる処理を時系列に沿って説明する。
【００６４】
図１５は、パケットの転送処理の例を説明する図である。以下の説明では、宛先ＩＰアドレスがＩＰａであるパケットが転送される場合を例とする。なお、宛先ＩＰアドレスがＩＰａであるという条件は、サーチキー＝ａであるものとする。
【００６５】
パケットＰ２１は、ＩＰａ宛のパケットである。パケットＰ２１は、送信元の端末７ｂから転送装置２０ｘに転送されたとする（矢印Ａ４１）。ここで、パケットＰ２１は、制御装置５０が制御しているネットワーク中の転送装置２０から転送装置２０ｘに転送されてきたパケットではないので、パケットＰ２１にはＭＰＬＳヘッダは含まれていない。このため、パケットＰ２１のフォーマットは、図１４のＰ１１と同様である。パケットＰ２１は、転送装置２０ｘのポートＰｏ３に到達する。
【００６６】
転送装置２０ｘ中の受信部２２ｘは、パケットＰ２１を受信すると、転送処理部３２ｘに出力する。転送処理部３２ｘは、Ｆｌｏｗエントリテーブル４１ｘ中のサーチキーとパケットＰ２１のアドレス情報などを比較することにより、パケットＰ２１の転送に適用するＦｌｏｗエントリを特定する。サーチの結果、転送処理部３２ｘは、Ｆｌｏｗエントリテーブル４１ｘ中のインデックス値＝１００に記録されているサーチキー＝ａのＦｌｏｗエントリ（図１０）を使用することを決定したとする。
【００６７】
端末７や他のネットワーク中の装置から受信したパケットの転送先が自装置と同じネットワーク中の転送装置２０である場合、Ｆｌｏｗエントリ中のアクションには、インデックス値を含むＭＰＬＳヘッダを受信パケットに付加することが含まれている。例えば、図１０のＦｌｏｗエントリテーブル４１ｘには、サーチキー＝ａのパケットの処理として、インデックス値を含むＭＰＬＳヘッダを転送対象のパケットに付加することと、付加処理後のパケットをポートＰｏ１から出力することが記録されている。そこで、転送処理部３２ｘは、Ｓｈｉｍラベルにインデックス値を格納したＭＰＬＳヘッダをパケットＰ２１のＬ２ヘッダの後に挿入することにより、パケットＰ２２を生成する。パケットＰ２２のフォーマットは、図１４のＰ１２と同様である。転送処理部３２ｘは、パケットＰ２２を、パケットＰ２２の出力ポートがポートＰｏ１であることを示す情報と共に、送信部２３ｘに出力する。送信部２３ｘは、入力されたパケットＰ２２を、ポートＰｏ１から出力する（矢印Ａ４２）。
【００６８】
ここで、転送装置２０ｘのポートＰｏ１は、転送装置２０ｙのポートＰｏ３に接続されている。このため、転送装置２０ｘから送信されたパケットＰ２２は、転送装置２０ｙのポートＰｏ３に到達する。
【００６９】
転送装置２０ｙ中の受信部２２ｙは、パケットＰ２２を受信すると、転送処理部３２ｙに出力する。転送処理部３２ｙは、パケットＰ２２にＭＰＬＳヘッダが含まれているかを判定する。パケットＰ２２には、ＭＰＬＳヘッダが含まれているので、転送処理部３２ｙは、ＭＰＬＳヘッダ中のＳｈｉｍラベルフィールドの値を抽出する。ＭＰＬＳヘッダ中のＳｈｉｍラベルフィールドには、パケットＰ２２の転送処理に使用するＦｌｏｗエントリが格納されている領域のインデックス値が格納されている。図１５の例では、ＭＰＬＳヘッダ中のＳｈｉｍラベルフィールドに、インデックス値（ＩＤ）＝１００という情報が含まれている。そこで、転送処理部３２ｙは、Ｆｌｏｗエントリテーブル４１ｙ中でインデックス値＝１００で識別される領域に格納されているＦｌｏｗエントリを参照する。Ｆｌｏｗエントリテーブル４１ｙのインデックス値＝１００で識別される領域には、サーチキー＝ａのＦｌｏｗエントリ（図１０）が格納されている。
【００７０】
自装置と同じネットワーク中の転送装置２０から受信したパケットの転送先が自装置と同じネットワーク中の転送装置２０である場合、パケット中のインデックス値は、転送先の転送装置２０でも使用される。このため、自装置と同じネットワーク中の転送装置２０から受信したパケットの転送先が自装置と同じネットワーク中の転送装置２０である場合、Ｆｌｏｗエントリ中のアクションには、ＭＰＬＳヘッダに関する処理は含まれない。例えば、図１０のＦｌｏｗエントリテーブル４１ｙのインデックス値＝１００の領域には、サーチキー＝ａのパケットをポートＰｏ２から出力することが記録されているが、ＭＰＬＳヘッダの処理は含まれていない。そこで、転送処理部３２ｙは、パケットＰ２２を、パケットＰ２２の出力ポートがポートＰｏ２であることを示す情報と共に、送信部２３ｙに出力する。送信部２３ｙは、入力されたパケットＰ２２を、ポートＰｏ２から出力する（矢印Ａ４３）。
【００７１】
転送装置２０ｙのポートＰｏ２は、転送装置２０ｚのポートＰｏ１に接続されている。このため、転送装置２０ｙのポートＰｏ２から送信されたパケットＰ２２は、転送装置２０ｚのポートＰｏ１に到達する。
【００７２】
転送装置２０ｚ中の受信部２２ｚは、パケットＰ２２を受信すると、転送処理部３２ｚに出力する。転送処理部３２ｚは、パケットＰ２２に含まれているＭＰＬＳヘッダからＳｈｉｍラベルフィールドの値を抽出する。ＭＰＬＳヘッダ中のＳｈｉｍラベルフィールドには、インデックス値（ＩＤ）＝１００という情報が含まれている。そこで、転送処理部３２ｚは、Ｆｌｏｗエントリテーブル４１ｚ中でインデックス値＝１００で識別される領域に格納されているＦｌｏｗエントリを参照する。Ｆｌｏｗエントリテーブル４１ｚのインデックス値＝１００で識別される領域には、サーチキー＝ａのＦｌｏｗエントリ（図１０）が格納されている。
【００７３】
自装置と同じネットワーク中の転送装置２０から受信したパケットの転送先が端末か自装置と異なるネットワーク中の装置である場合、パケット中のインデックス値は、転送先の装置では使用されない。このため、自装置と同じネットワーク中の転送装置２０から受信したパケットの転送先が端末か自装置と異なるネットワーク中の装置である場合、Ｆｌｏｗエントリ中のアクションには、ＭＰＬＳヘッダの削除が含まれる。例えば、図１０のＦｌｏｗエントリテーブル４１ｚには、サーチキー＝ａのパケットの処理として、インデックス値を含むＭＰＬＳヘッダを転送対象のパケットから削除することと、削除処理後のパケットをポートＰｏ３から出力することが記録されている。そこで、転送処理部３２ｚは、パケットＰ２２からインデックス値を格納したＭＰＬＳヘッダを削除することにより、パケットＰ２２をパケットＰ２１に戻す。転送処理部３２ｚは、パケットＰ２１を、パケットＰ２１の出力ポートがポートＰｏ３であることを示す情報と共に、送信部２３ｚに出力する。送信部２３ｚは、入力されたパケットＰ２１を、ポートＰｏ３から出力する（矢印Ａ４４）。
【００７４】
紙面の関係で図１５には図示していないが、転送装置２０ｚのポートＰｏ３は、端末７ａに接続されている（図６）。このため、転送装置２０ｚから送信されたパケットＰ２１は、パケットＰ２１の宛先である端末７ａに到達する。
【００７５】
なお、図１４、図１５を用いて、インデックス値がＭＰＬＳヘッダ中に含められている場合を例として説明したが、インデックス値の含め方は、ＭＰＬＳヘッダを用いた方法には限定されない。
【００７６】
図１６Ａ〜図１６Ｃは、パケットの転送処理の際に転送装置２０が行う処理の例を説明するフローチャートである。転送装置２０の受信部２２は、パケットを受信する（ステップＳ２１）。転送処理部３２は、受信部２２を介してパケットを取得すると、パケット中にインデックス値が含まれているかを判定する（ステップＳ２２）。
【００７７】
パケット中にインデックス値が含まれていない場合、転送装置２０は、制御装置５０によって制御されるネットワークへの入り口側のエッジに位置していることになる（ステップＳ２２でＮｏ）。そこで、転送処理部３２は、Ｆｌｏｗエントリテーブル４１のサーチキーと受信パケットを比較することにより、受信パケットに適用するＦｌｏｗエントリを求める（ステップＳ２６）。転送処理部３２は、受信パケットに適用可能なエントリが存在するかを判定する（ステップＳ２７）。転送処理部３２は、受信パケットに適用可能なエントリが存在する場合、受信パケットに適用するＦｌｏｗエントリ中のアクションに従って、受信パケットの転送先を求める（ステップＳ２７でＹｅｓ、ステップＳ２８）。さらに、転送処理部３２は、処理対象のパケットにインデックス値を含むヘッダを付加する（ステップＳ２９）。その後、送信部２３は、転送先に向けてパケットを送信する（ステップＳ３０）。
【００７８】
一方、ステップＳ２２において、パケット中にインデックス値が含まれている場合、転送装置２０は、制御装置５０によって制御されるネットワークのコア側か出口側のエッジに位置していることになる（ステップＳ２２でＹｅｓ）。そこで、転送処理部３２は、Ｆｌｏｗエントリテーブル４１中で、インデックス値により特定される領域を参照する（ステップＳ２３）。転送処理部３２は、参照した領域にエントリが存在するかを判定する（ステップＳ２４）。参照した領域にエントリが存在する場合、転送処理部３２は、受信パケットに適用するＦｌｏｗエントリ中のアクションに従って、受信パケットの転送先を求める（ステップＳ２４でＹｅｓ、ステップＳ２５）。さらに、転送処理部３２は、転送先が他網または端末であるかを判定する（ステップＳ３１）。ここで、「他網」は、制御装置５０によって制御されていない装置を含むネットワークである。転送先が他網の装置または端末７である場合、自装置が制御装置５０の制御対象となるネットワークの出口側のエッジに位置していることになる（ステップＳ３１でＹｅｓ）。他網の装置と端末７のいずれも、制御装置５０からインデックス値を通知されていないので、インデックス値を通知してもインデックス値を用いた検索処理を行わない。このため、転送処理部３２は、転送先が他網の装置または端末７である場合、パケットから、インデックス値を含むヘッダを削除する（ステップＳ３２）。その後、送信部２３は、ヘッダの削除後のパケットを転送先に向けて送信する（ステップＳ３３）。
【００７９】
転送先が他網の装置と端末７のいずれでもない場合、転送装置２０は、制御装置５０の制御対象となるネットワークのコア側に位置していることになる（ステップＳ３１でＮｏ）。この場合、転送先の転送装置２０においても、パケット中のインデックス値を用いた検索が行われるので、インデックス値はパケットから除去されない。送信部２３は、インデックス値を含むパケットを転送先に向けて送信する（ステップＳ３３）。
【００８０】
ステップＳ２４かステップＳ２７において、エントリが存在しないと判定された場合、転送処理部３２は、パケットを廃棄するかを判定する（ステップＳ３４）。パケットを廃棄しない場合、送信部２３は、パケットを制御装置５０に転送する（ステップＳ３４でＮｏ、ステップＳ３５）。一方、パケットを廃棄する場合、転送処理部３２は、パケットを廃棄して処理を終了する（ステップＳ３４でＹｅｓ、ステップＳ３６）。
【００８１】
このように、実施形態にかかる方法では、制御装置５０の制御対象となっている転送装置２０のうち、最初にパケットを受信した転送装置２０がＦｌｏｗエントリテーブル４１を検索して、処理対象のパケットにインデックス値を付す。このため、インデックス値を含むパケットを受信した転送装置２０では、Ｆｌｏｗエントリテーブル４１の検索を行わずに、インデックス値を用いて指定された領域に格納されているＦｌｏｗエントリを用いた処理を行うことができる。このため、パケットの処理に適用するＦｌｏｗエントリをＦｌｏｗエントリテーブル４１の検索により取得する場合に比べて、処理が早くなる。
【００８２】
（Ｃ）シミュレーション
以下、ネットワーク中で転送処理を行う装置が１００万のＦｌｏｗエントリを記憶している場合を例として、実施形態にかかる方法による転送処理時間を、実施形態にかかる方法が用いられない場合の転送処理時間と比較する。以下のシミュレーションでは、転送処理を行う装置がいずれも１００００ＭＩＰＳ（million instructions per second）のＣＰＵを用いているとする。この場合、制御部３０の処理は、１００００ＭＩＰＳのＣＰＵで行われるので、転送処理部３２での処理のプログラムの１ステップあたりにかかる時間Ｔｓｔは、以下の式から計算される。
Ｔｓｔ＝６命令×２クロック
＝１２／（１００００＊１０６）＝１．２（ナノ秒）  ・・・（１）
【００８３】
一方、実施形態にかかる転送装置２０を用いたネットワークと比較されるネットワーク中のスイッチ１５も、転送装置２０と同様に、プログラムの１ステップを１．２ナノ秒で処理するとする。
【００８４】
次に、ＣＰＵからのメモリへのアクセスにかかる時間を設定する。６４ビット幅のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）への１回のアクセスにかかる時間Ｔａｃは６０ナノ秒であるとする。すなわち、転送処理部３２がＦｌｏｗエントリテーブル４１中の情報を読み出すために１回アクセスすると、６０ナノ秒かかる。さらに、連続したデータを読み出す際に、６４ビット幅のＳＤＲＡＭからのデータの転送速度Ｖｔは（２）式の通りであるとする。
Ｖｔ＝６４ｂｉｔ×１３３ＭＨｚ＝８５１２Ｍ＝８．５Ｇｂｐｓ  ・・・（２）
ここで、各転送装置２０が保持しているＦｌｏｗエントリのサイズが５ワード（３２ビット）である場合、１つのＦｌｏｗエントリは１６０ビットである。すると、連続したデータ領域に格納されている１００万のＦｌｏｗエントリを転送する際にかかる時間Ｔｔｒは、式（３）で計算できる。
Ｔｔｒ＝１６０ｂｉｔ×１００万／８．５Ｇｂｐｓ
＝１８．８ミリ秒  ・・・（３）
【００８５】
さらに、１つのＦｌｏｗエントリのサーチにかかるプログラム処理のステップ数は１０ステップであるとする。すると、１００万エントリのサーチを行うためにかかる時間Ｔｓｒは、以下の式（４）で計算できる。
Ｔｓｒ＝（Ｔｓｔ×１０ステップ）×１００万（エントリ）
＝（１．２ナノ秒×１０）×１００万＝１２ミリ秒    ・・・（４）
このため、転送処理部３２がＦｌｏｗエントリテーブル４１から１００万のＦｌｏｗエントリを読み出して、サーチを行うためにかかる時間Ｔｔｏは、式（５）から求められる。
Ｔｔｏ＝Ｔａｃ＋Ｔｔｒ＋Ｔｓｔ
＝６０ナノ秒＋１２ミリ秒＋１８．８ミリ秒
＝３０．８ミリ秒                        ・・・（５）
【００８６】
実施形態にかかる方法が用いられる場合、ネットワークの入口側のエッジの転送装置２０では、Ｆｌｏｗエントリテーブル４１中のデータのサーチを行うため、パケットの転送にＴｔｏの時間がかかる。しかし、インデックス値を受け取った転送装置２０においては、予め処理対象のＦｌｏｗエントリとそのＦｌｏｗエントリの格納位置が特定されているため、指定されたインデックス値に格納されたデータを使用できる。このため、インデックス値を受け取った転送装置２０での転送処理にかかる時間Ｔｉｎは、インデックス処理に２ステップかかるとすると（６）式で表わされる。
Ｔｉｎ＝Ｔｓｔ×２＋Ｔａｃ
＝１．２ナノ秒×２＋６０ナノ秒＝  ６２．４ナノ秒・・・（６）
このため、制御装置５０の制御対象となっている転送装置２０を１０台連続で含む転送経路が用いられる場合、１０台の転送装置２０での転送処理にかかる時間の合計Ｔｓｕｍ１は、（７）式で表わされる。なお、（７）式ではインデックス値を用いた処理にかかる時間Ｔｉｎ≒０．０６マイクロ秒として計算している。
Ｔｓｕｍ１＝Ｔｔｏ＋Ｔｉｎ×９
＝３０．８（ミリ秒）＋０．０６マイクロ秒×９
≒３０．８（ミリ秒）                      ・・・（７）
一方、実施形態にかかる方法を用いない場合、各スイッチにおいて、Ｆｌｏｗエントリのサーチが行われるため、１０台のスイッチで転送処理を行うとかかる時間Ｔｓｕｍ２は（８）式で計算される。
Ｔｓｕｍ２＝Ｔｔｏ×１０＝３０．８（ミリ秒）×１０
＝３０８ミリ秒                          ・・・（８）
【００８７】
このように、実施形態にかかる転送方法を用いると、コア側の転送装置２０での転送処理にかかる時間と、制御装置５０が制御するネットワークからの出口側のエッジに位置する転送装置２０での転送処理にかかる時間は著しく短くなる。このため、制御装置５０が制御するネットワーク中での転送処理にかかる時間は、制御装置５０が制御するネットワークへの入口側のエッジに位置する転送装置２０での転送処理にかかる時間とほぼ同じ時間で済む。従って、実施形態にかかるシステムでの転送時間は、転送処理にかかる時間は、実施形態にかかる方法が用いられないシステムでの転送時間を、転送経路中で転送装置２０が連続している数で割った時間と同程度で済む。
【００８８】
Ｆｌｏｗエントリテーブル中のエントリの数は、大規模ネットワークだと１００万程度であるが、小規模ネットワークでも数千程度である。このため、実施形態にかかる転送装置２０を使用しない場合、Ｆｌｏｗエントリテーブル中のエントリの数が大きくなるほど、各ＳＤＮスイッチでの検索処理にかかる時間が長くなる。
【００８９】
一方、実施形態にかかる通信方法を用いると、ネットワークへの入口側のエッジに位置する転送装置２０以外ではＦｌｏｗエントリの検索が行われないので、転送装置２０でのＦｌｏｗエントリの検索に伴う転送遅延が防止される。特に、転送装置２０間での転送回数が多くなるほど、転送装置２０を用いることによる転送遅延の防止効果が大きくなる。
【００９０】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００９１】
アプリケーションサーバ５と制御装置５０は１つの装置で実現されても良い。アプリケーションサーバ５と制御装置５０が１つの装置で実現される場合、取得部６１は、トポロジテーブル７１を用いてパケットに適用するＦｌｏｗエントリを決定しても良い。
【００９２】
以上の説明で述べたパケットやテーブルのフォーマットは一例であり、実装に応じて変更され得る。例えば、インデックス値を表わすときに使用されるビット長が２０ビットよりも短い場合、Ｓｈｉｍラベルの一部がインデックス値の通知に使用されても良い。また、Ｆｌｏｗエントリテーブル４１やＦｌｏｗエントリデータベース７２には、インデックス値が記録されても良く、また、インデックス値がアドレス等を表わす値として使用されることによりインデックス値の記録が省略されても良い。
【００９３】
上述の実施形態に関し、さらに以下の付記を開示する。
（付記１）
制御装置が決定した処理ルールを用いてパケットを処理する複数の転送装置の１つとして動作する転送装置であって、
前記処理ルールと前記処理ルールを適用するパケットの特徴情報の組み合わせを、前記特徴情報ごとに決定された値と共に通知する通知パケットを受信する通信部と、
前記組み合わせを、前記値で特定される記憶領域に格納する記憶部と、
前記通信部が受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて前記記憶部の記憶領域に格納された処理ルールを読み出し、前記データパケットを前記読み出した処理ルールを用いて処理する制御部
を備えることを特徴とする転送装置。
（付記２）
前記制御部は、
前記データパケットに前記特定値が含まれていない場合、前記データパケットの特徴情報を用いて、前記データパケットの処理に適用する処理ルールを検索し、
前記データパケットの処理に適用する処理ルールに、前記データパケットの処理に適用する処理ルールの格納先を特定する値を前記特定値として前記データパケットに付加することが含まれている場合、前記データパケットに前記特定値を付加した他のデータパケットを生成し、
前記通信部は、前記他のデータパケットを、前記データパケットの処理に適用する処理ルールで指定された転送先に転送する
ことを特徴とする付記１に記載の転送装置。
（付記３）
前記制御部は、前記通信部が前記特定値を含む第１のデータパケットを受信し、かつ、前記第１のデータパケットの処理に適用する処理ルールに、前記第１のデータパケットから前記特定値を削除することが含まれている場合、前記特定値を前記第１のデータパケットから削除して第２のデータパケットを生成し、
前記通信部は、前記第１のデータパケットの処理に適用する処理ルールで指定された転送先に、前記第２のデータパケットを転送する
ことを特徴とする付記１または２に記載の転送装置。
（付記４）
ネットワーク中の複数の転送装置での通信を制御する制御装置であって、
前記ネットワークで転送されるパケットの特徴情報に対応付けて、前記複数の転送装置の各々について、前記特徴情報で識別されるパケットに適用する処理を表わす処理ルールを取得する取得部と、
前記複数の転送装置の各々に宛てて、当該転送装置に適用する処理ルールと当該処理ルールに対応する特徴情報とを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを生成する生成部と、
前記通知パケットを送信する送信部
を備えることを特徴とする制御装置。
（付記５）
前記複数の転送装置の各々について、当該転送装置の接続先を表わすトポロジ情報を記憶する記憶部をさらに備え、
前記取得部は、
前記トポロジ情報を用いて、前記複数の転送装置のいずれでもない装置からデータパケットを受信し、かつ、前記データパケットを前記複数の転送装置中の第１の転送装置に転送する第２の転送装置を特定し、
前記第２の転送装置に適用する処理ルールに、前記第２の転送装置が前記データパケットに適用する処理ルールの格納先を特定する特定値を前記データパケットに追加することを含める
ことを特徴とする付記４に記載の制御装置。
（付記６）
前記取得部は、
前記トポロジ情報を用いて、前記複数の転送装置のいずれかから受信した受信パケットを、前記複数の転送装置のいずれでもない装置に転送する第３の転送装置を特定し、
前記第３の転送装置に適用する処理ルールに、前記第３の転送装置が使用した処理ルールの格納先を特定する特定値を前記受信パケットから削除することを含める
ことを特徴とする付記５に記載の制御装置。
（付記７）
複数の転送装置と、
前記複数の転送装置での通信を制御する制御装置
を備え、
前記制御装置は、前記複数の転送装置の各々に宛てて、当該転送装置が処理するパケットの特徴情報と、当該特徴情報を有するパケットに当該転送装置が行う処理を特定する処理ルールの組み合わせを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを送信し、
前記複数の転送装置の各々は、
前記制御装置から受信した通知パケットで通知された前記組み合わせを前記値で特定される記憶領域に格納し、
受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて記憶領域に格納された処理ルールを読み出し、
前記読み出した処理ルールを用いて前記データパケットを処理する
ことを特徴とする通信システム。
（付記８）
前記複数の転送装置の各々は、
前記データパケットに前記特定値が含まれていない場合、前記データパケットの特徴情報を用いて、前記データパケットの処理に適用する処理ルールを検索し、
前記データパケットの処理に適用する処理ルールに、前記データパケットの処理に適用する処理ルールの格納先を特定する値を前記特定値として前記データパケットに付加することが含まれている場合、前記データパケットに前記特定値を付加した他のデータパケットを生成し、
前記他のデータパケットを、前記データパケットの処理に適用する処理ルールで指定された転送先に転送する
ことを特徴とする付記７に記載の通信システム。
（付記９）
前記複数の転送装置の各々は、
前記特定値を含む第１のデータパケットを受信し、かつ、前記第１のデータパケットの処理に適用する処理ルールに、前記第１のデータパケットから前記特定値を削除することが含まれている場合、前記特定値を前記第１のデータパケットから削除して第２のデータパケットを生成し、
前記第１のデータパケットの処理に適用する処理ルールで指定された転送先に、前記第２のデータパケットを転送する
ことを特徴とする付記７または８に記載の通信システム。
（付記１０）
ネットワーク中の複数の転送装置での通信を制御する制御装置は、前記複数の転送装置の各々に宛てて、当該転送装置が処理するパケットの特徴情報と、当該特徴情報を有するパケットに当該転送装置が行う処理を特定する処理ルールの組み合わせを、当該特徴情報ごとに決定した値で特定される記憶領域を当該転送装置での格納先に指定して通知する通知パケットを送信し、
前記複数の転送装置の各々は、
前記制御装置から受信した通知パケットで通知された前記組み合わせを前記値で特定される記憶領域に格納し、
受信したデータパケットに、前記データパケットの処理に適用する処理ルールの格納先を特定する特定値が含まれている場合、前記特定値を用いて記憶領域に格納された処理ルールを読み出し、
前記読み出した処理ルールを用いて前記データパケットを処理する
ことを特徴とする通信方法。
（付記１１）
前記複数の転送装置の各々は、
前記データパケットに前記特定値が含まれていない場合、前記データパケットの特徴情報を用いて、前記データパケットの処理に適用する処理ルールを検索し、
前記データパケットの処理に適用する処理ルールに、前記データパケットの処理に適用する処理ルールの格納先を特定する値を前記特定値として前記データパケットに付加することが含まれている場合、前記データパケットに前記特定値を付加した他のデータパケットを生成し、
前記他のデータパケットを、前記データパケットの処理に適用する処理ルールで指定された転送先に転送する
ことを特徴とする付記１０に記載の通信方法。
（付記１２）
前記複数の転送装置の各々は、
前記特定値を含む第１のデータパケットを受信し、かつ、前記第１のデータパケットの処理に適用する処理ルールに、前記第１のデータパケットから前記特定値を削除することが含まれている場合、前記特定値を前記第１のデータパケットから削除して第２のデータパケットを生成し、
前記第１のデータパケットの処理に適用する処理ルールで指定された転送先に、前記第２のデータパケットを転送する
ことを特徴とする付記１０または１１に記載の通信方法。
【符号の説明】
【００９４】
５  アプリケーションサーバ
７  端末
１０  コントローラ
１５  スイッチ
２０  転送装置
２１、５１  通信部
２２、５２  受信部
２３、５３  送信部
３０、６０  制御部
３１  更新部
３２  転送処理部
４０、７０  記憶部
４１  Ｆｌｏｗエントリテーブル
５０  制御装置
６１  取得部
６２  決定部
６３  通知生成部
７１  トポロジテーブル
７２  Ｆｌｏｗエントリデータベース
１０１  中央演算処理装置
１０２  記憶装置
１０３  主記憶装置
１０４  補助記憶装置
１０５  入出力装置
１０６  バス
１０７  通信デバイス
１０８  ポート
【図１】
2017158082.tif 000003
【図２】
2017158082.tif 000004
【図３】
2017158082.tif 000005
【図４】
2017158082.tif 000006
【図５】
2017158082.tif 000007
【図６】
2017158082.tif 000008
【図７】
2017158082.tif 000009
【図８】
2017158082.tif 000010
【図９】
2017158082.tif 000011
【図１０】
2017158082.tif 000012
【図１１】
2017158082.tif 000013
【図１２】
2017158082.tif 000014
【図１３】
2017158082.tif 000015
【図１４】
2017158082.tif 000016
【図１５】
2017158082.tif 000017
【図１６Ａ】
2017158082.tif 000018
【図１６Ｂ】
2017158082.tif 000019
【図１６Ｃ】
2017158082.tif 000020