(57)【特許請求の範囲】
【請求項１】
複数の端末間の通信経路をパケットペイロードに含まれるコンテンツに基づいて決定するコンテンツベーススイッチシステムであって、
コントローラと、
複数の端末間の通信を所定の通信プロトコルに基づいて中継し、前記複数の端末のいずれかの端末からデータを受信し、前記受信されたデータのパケットペイロードからコンテンツ情報を抽出し、前記抽出されたコンテンツ情報と端末のアドレス情報とを前記コントローラに送信し、前記コントローラから指定されるフロー情報を用いて宛先端末までのフローを設定する中継装置と、
前記複数の端末間を接続するネットワーク上に少なくとも１つ存在し、前記複数の端末及び前記中継装置のうちのいずれかからデータを受信し、外部から通知されたフロー情報の識別子と出力方路との対応表に従い宛先端末まで通信を行うスイッチと
を具備し、
前記コントローラは、前記中継装置及び前記スイッチの制御を行い、前記コンテンツ情報と前記宛先端末のアドレス情報とに基づいて転送経路を決定し、更に転送に使用するフロー情報を決定し、フロー情報と出力方路との対応表を転送経路上にあるスイッチの経路テーブルに設定し、前記決定されたフロー情報を前記中継装置に通知する
コンテンツベーススイッチシステム。
【請求項２】
請求項１に記載のコンテンツベーススイッチシステムであって、
前記複数の端末間の通信プロトコルがＴＣＰである場合に、
前記決定されたフロー情報の識別子は、
ＴＣＰの送信元ポート番号及び宛先ポート番号のうちの少なくとも一方と、
前記宛先端末のＩＰアドレスと
を含む
コンテンツベーススイッチシステム。
【請求項３】
請求項１又は２のいずれか一項に記載のコンテンツベーススイッチシステムであって、
前記決定されたフロー情報の識別子は、
通信の端点となる二つの端末に対応するＩＰアドレスのうちの少なくとも１つ
を含む
コンテンツベーススイッチシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のコンテンツベーススイッチシステムであって、
前記複数の端末間の通信プロトコルはＵＤＰである場合に、
前記決定されたフロー情報の識別子は、
ＵＤＰの送信元ポート番号及び宛先ポート番号のうちの少なくとも一方と、
前記宛先端末のＩＰアドレスと
を含む
コンテンツベーススイッチシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のコンテンツベーススイッチシステムであって、
前記中継装置は、前記決定されたフロー情報に基づいて、前記中継装置から前記宛先端末までの通信フローが新規のフローであると判断した場合に、前記決定されたフロー情報が示す通信フローと同一の通信フローを新規に確立して前記宛先端末までのデータを転送する
コンテンツベーススイッチシステム。
【請求項６】
請求項１乃至５のいずれか一項に記載のコンテンツベーススイッチシステムであって、
前記中継装置は、前記決定されたフロー情報に基づいて、前記中継装置から前記宛先端末までの通信フローが使用中のフローであると判断した場合に、既に確立済みのフローを使用して前記宛先端末との間のデータを転送する
コンテンツベーススイッチシステム。
【請求項７】
請求項１乃至６のいずれか一項に記載のコンテンツベーススイッチシステムであって、
前記中継装置は、
第1の通信コネクションにより、前記複数の端末のうちのいずれかの端末から前記中継装置が持つアドレスを宛先とした接続要求パケットを受信する第１のプロトコル終端部と、
前記接続要求パケットからアプリケーションレイヤのプロトコルペイロードを取り出し、前記プロトコルペイロードからコンテンツ情報を抽出するコンテンツ抽出部と、
第２の通信コネクションにより、前記スイッチと通信する前記第２のプロトコル終端部と、
前記第1の通信コネクションに関する情報として、送信元のＩＰアドレスと、前記中継装置側の宛先ＩＰアドレスと、前記コンテンツ情報と、に基づいて中継要求メッセージを作成し、前記中継要求メッセージを前記コントローラに送信し、前記コントローラから応答メッセージを受信する中継要求インタフェース部と、
前記応答メッセージで指定されるフロー情報が新規であれば、前記指定された宛先ＩＰアドレスとプロトコルポート情報とにしたがって、前記第２のプロトコル終端部に、前記第２の通信コネクションとして新規の通信コネクションを確立するように要求し、前記応答メッセージで指定されるフロー情報がＫｅｅｐ  Ａｌｉｖｅであれば、前記第２のプロトコル終端部に、前記第２の通信コネクションとして前記指定された宛先ＩＰアドレスとプロトコルポート情報とを使用しているコネクションを使用するように要求する
コンテンツベーススイッチシステム。
【請求項８】
請求項７に記載のコンテンツベーススイッチシステムであって、
前記コントローラは、
前記中継装置から前記中継要求メッセージを受信し、中継に使用するフロー情報が確定すると、前記中継装置に対して、前記確定したフロー情報を含む応答メッセージを返す中継要求インタフェース部と、
送信元情報と、宛先情報と、コンテンツ情報と、転送ポリシーと、を関連付けて格納するための転送ポリシーテーブルと、
宛先と、経路と、ＱｏＳ情報と、を関連付けて格納するためのフロー管理テーブルと、
前記中継要求メッセージに含まれる送信元情報と、宛先情報と、コンテンツ情報と、に基づいて、前記転送ポリシーテーブルを検索し、転送ポリシーを取得し、前記転送ポリシーに基づいて、宛先、経路、ＱｏＳ情報を決定し、前記転送ポリシーにおいてキープアライブを使用するか否か判断し、キープアライブを使用する場合は、同一の宛先、経路、ＱｏＳを適用しているパスを、前記宛先、前記経路、前記ＱｏＳ情報をキーとして前記フロー管理テーブルを検索し、同一のフローが存在するか否か判断し、同一のフローが存在した場合は、既存のフロー情報を取得し、同一のフローが存在しない場合、及びキープアライブを使用しない場合は、新規フローを割り当て、中継に使用するフロー情報を確定する経路判定部と、
前記新規フローを割り当てた場合は、前記新規フローのフロー情報に対応するフローエントリーを経路上のスイッチに対して設定する経路設定部と
を具備する
コンテンツベーススイッチシステム。
【請求項９】
請求項１乃至８のいずれか一項に記載のコンテンツベーススイッチシステムで使用される中継装置。
【請求項１０】
請求項１乃至８のいずれか一項に記載のコンテンツベーススイッチシステムで使用されるスイッチ。
【請求項１１】
請求項１乃至８のいずれか一項に記載のコンテンツベーススイッチシステムで使用されるコントローラ。
【請求項１２】
複数の端末間の通信経路をパケットペイロードに含まれるコンテンツに基づいて決定するコンテンツベーススイッチ方法であって、
中継装置により、複数の端末間の通信を所定の通信プロトコルに基づいて中継し、パケットペイロードからコンテンツ情報を抽出し、前記抽出されたコンテンツ情報と端末のアドレス情報とをコントローラに送信し、
前記複数の端末間を接続するネットワーク上に少なくとも１つ存在するスイッチにより、前記複数の端末及び前記中継装置のうちのいずれかからデータを受信し、
前記コントローラにより、前記中継装置及び前記スイッチの制御を行い、前記コンテンツ情報と前記宛先端末のアドレス情報とに基づいて転送経路を決定し、更に転送に使用するフロー情報を決定し、フロー情報と出力方路との対応表を転送経路上にあるスイッチの経路テーブルに設定し、前記決定されたフロー情報を前記中継装置に通知し、
前記中継装置により、前記コントローラから通信されたフロー情報を用いて宛先端末までのフローを設定し、
前記スイッチにより、前記コントローラから通知されたフロー情報の識別子を用いて宛先端末まで通信を行う
コンテンツベーススイッチ方法。
【請求項１３】
請求項１２に記載のコンテンツベーススイッチ方法であって、
前記複数の端末間の通信プロトコルがＴＣＰである場合に、
前記決定されたフロー情報の識別子は、
ＴＣＰの送信元ポート番号及び宛先ポート番号のうちの少なくとも一方と、
前記宛先端末のＩＰアドレスと
を含む
コンテンツベーススイッチ方法。
【請求項１４】
請求項１２又は１３のいずれか一項に記載のコンテンツベーススイッチ方法であって、
前記決定されたフロー情報の識別子は、
通信の端点となる二つの端末に対応するＩＰアドレスのうちの少なくとも１つ
を含む
コンテンツベーススイッチ方法。
【請求項１５】
請求項１２乃至１４のいずれか一項に記載のコンテンツベーススイッチ方法であって、
前記複数の端末間の通信プロトコルはＵＤＰである場合に、
前記決定されたフロー情報の識別子は、
ＵＤＰの送信元ポート番号及び宛先ポート番号のうちの少なくとも一方と、
前記宛先端末のＩＰアドレスと
を含む
コンテンツベーススイッチ方法。
【請求項１６】
請求項１２乃至１５のいずれか一項に記載のコンテンツベーススイッチ方法であって、
前記中継装置により、前記決定されたフロー情報に基づいて、前記中継装置から前記宛先端末までの通信フローが新規のフローであると判断された場合に、前記決定されたフロー情報が示す通信フローと同一の通信フローを新規に確立して前記宛先端末までのデータを転送する
コンテンツベーススイッチ方法。
【請求項１７】
請求項１２乃至１６のいずれか一項に記載のコンテンツベーススイッチ方法であって、
前記中継装置により、前記決定されたフロー情報に基づいて、前記中継装置から前記宛先端末までの通信フローが使用中のフローであると判断された場合に、既に確立済みのフローを使用して前記宛先端末との間のデータを転送する
コンテンツベーススイッチ方法。
【請求項１８】
請求項１２乃至１７のいずれか一項に記載のコンテンツベーススイッチ方法における中継装置、スイッチ及びコントローラのいずれかの動作を、計算機に実行させるためのプログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークトラヒックのデータ処理において、トラヒックのコンテンツに基づくスイッチ処理、ルーティング処理を行うコンテンツベーススイッチシステムに関する。
【背景技術】
【０００２】
特許文献１（特開２００６−２０３９０４号公報）には、コンテンツベースルータ、コンテンツベースネットワークに関する技術が開示されている。この技術では、入口ルータにおいて、データパケットのコンテンツを、格納されているサブスクリプション（ｓｕｂｓｃｒｉｐｔｉｏｎ）とマッチングする。そして、マッチした場合に、マッチしたサブスクリプションのサブスクライバー（ｓｕｂｓｃｒｉｂｅｒ）に対応した出口ルータを表すルーティングラベルをデータパケットに割り当てて、転送すべきコンテンツベースルータにデータパケットを送信する。なお、サブスクライバーとは、コンテンツを購読するユーザを示す。また、サブスクリプションとは、サブスクライバーが規定するクエリー（ｑｕｅｒｙ）情報、選択条件を示す。【０００３】
特許文献１に開示された技術では、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）と呼ばれるメタ言語で記述されたコンテンツデータとＸＭＬで記述されたサブスクリプションのデータとのマッチを取ることにより、配送先を決定する。【０００４】
コンテンツベースルータの実現方法としては、特許文献１に開示されているように、経路上の各ルータがＸＭＬ記述をＸＭＬクエリー（ｑｕｅｒｙ）と比較しながら、各ＸＭＬルータで処理を転送判定する方法や、コンテンツの宛先を判定した後にラベルをパケットに付加し、以降はラベルに基づいてルーティングを行う方法が挙げられる。【０００５】
コンテンツベースのルーティング処理に類似する処理として、通信データのメッセージ内容に基づいて宛先を判定する処理が行われる場合もある。例えば、ロードバランサ装置（Ｌｏａｄ  Ｂａｌａｎｃｅｒ：負荷分散装置）では、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）で利用されるＵＲＩ（Ｕｎｉｆｉｅｄ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）やＣｏｏｋｉｅと呼ばれる、ＨＴＴＰヘッダに含まれる識別子に基づいて宛先のサーバを選択する処理が行われている。但し、この処理では、ＵＲＩやＣｏｏｋｉｅの内容に基づいて宛先サーバを選択することはできるが、経路を指定することはできない。【０００６】
先に述べたロードバランサ装置では、ＨＴＴＰのリクエストメッセージに含まれるＵＲＩやＣｏｏｋｉｅの値に対してポリシーを適用することにより、最適な宛先を選択することができる。これにより、ＨＴＴＰ通信の場合は、サービスを提供するサーバを選択することができる。しかし、最適なサーバを選択できても、そのサーバまでの経路はＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ルーティングに従うため、どのようなネットワーク経路を通るかを指定することができない。また、ネットワーク経路だけでなく、どのような帯域を割り当てるかも指定することができない。そのため、特定のＵＲＩに対して広帯域の回線を利用して転送することは困難である。【０００７】
これを実現するためには、ＵＲＩやＣｏｏｋｉｅで宛先サーバを判定する処理と、その宛先サーバが決定してから、宛先サーバに接続する際に、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）を考慮した経路制御を行う処理が必要になる。しかしながら、この場合、ＵＲＩやＣｏｏｋｉｅから宛先を判断する処理と、宛先への接続に対してどのようなネットワーク経路を使用するかを判断する処理との２段階の処理のそれぞれにおいて、ポリシー指定が必要になり、処理が複雑になるという課題がある。【０００８】
一方、特許文献１に示すコンテンツベースネットワーク処理では、コンテンツに基づいてパケットにラベルが割り当てられ、ラベルに基づいてネットワーク上の中継処理が行われる。そのため、コンテンツベースルータが、コンテンツに応じてパケットにラベルを割り当てる際に、ラベルスイッチに対する転送ポリシーを指定することで、最適な経路を指定して中継することが可能になる。【０００９】
しかし、ラベルを用いた転送処理では、ラベルを解釈するためのラベルスイッチと呼ばれる中継装置が必要であるという課題がある。ラベルスイッチは、ラベルを解釈し、ラベルに基づいてスイッチ処理を行う。【００１０】
また、コンテンツを配送するトランスポートプロトコルとして、信頼性のあるＴＣＰを使用することを考えると、サブスクリプションのサブスクライバーに対応した出口ルータまでのＴＣＰコネクションを確立する処理と、ラベルを指定して転送を行う処理との２つの処理が必要になる。ＴＣＰコネクションを利用した転送のためにパケットにはＴＣＰ／ＩＰヘッダを付加しているので、そのヘッダに更にラベルを付加するのではなく、ＴＣＰ／ＩＰ形式のパケットのままで転送処理ができることが望ましい。【００１１】
関連する技術として、特許文献２（特開２００４−３０４４５６号公報）には、ネットワークシステム、同システムにおけるパス設定方法並びに同システムに用いられるネットワーク管理装置及びネットワーク装置に関する技術が開示されている。この技術では、ネットワーク管理装置は、定期的に、又は、所定のイベント発生時に、或るネットワーク装置間で提供するコンテンツ内容について特定の基準を満たす配送経路を予め算出・決定する。また、このネットワーク管理装置は、特定のコンテンツと当該コンテンツを配信するのに最適な計算済みの配送経路とを関連付けた対応表を作成し、作成された対応表をユーザによる要求コンテンツに応じたリクエストメッセージをネットワーク装置（エッジルータ）に送信する。ネットワーク装置（エッジルータ）は、上記リクエストメッセージを受信すると、当該メッセージ中の通過ノードリストを抽出し、当該通過ノードリストに基づいて、所定のパス設定シグナリング（パス設定メッセージ）を用いてＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）パスを設定（確立）する。【００１２】
また、特許文献３（特開２００７−０９６７４１号公報）には、ポートホッピング検出システム、帯域制御システム、ポートホッピング検出方法、及びプログラムに関する技術が開示されている。この技術では、ポートホッピングフロー検出装置が、受信した複数のフローのポートホッピングに関する情報を演算し、その演算結果と前記アプリケーション情報とを比較することによりポートホッピングを検出する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６−２０３９０４号公報
【特許文献２】特開２００４−３０４４５６号公報
【特許文献３】特開２００７−０９６７４１号公報
【発明の概要】
【００１４】
本発明の目的は、コンテンツベースのルーティング処理を効率的に行うため、コンテンツベースのパケット転送処理を行う際に、コンテンツに対する転送処理を、ラベルを用いずにＴＣＰ／ＩＰヘッダのみに基づいて転送するコンテンツベーススイッチシステムを提供することである。
【００１５】
本発明のコンテンツベーススイッチシステムは、複数の端末間の通信経路をパケットペイロードに含まれるコンテンツに基づいて決定するコンテンツベーススイッチシステムであって、中継装置と、スイッチと、コントローラとを具備する。中継装置は、複数の端末間の通信を所定の通信プロトコルに基づいて中継し、複数の端末のいずれかの端末からデータを受信し、受信されたデータのパケットペイロードからコンテンツ情報を抽出し、抽出されたコンテンツ情報と端末のアドレス情報とをコントローラに送信し、コントローラから指定されるフロー情報を用いて宛先端末までのフローを設定する。スイッチは、複数の端末間を接続するネットワーク上に少なくとも１つ存在し、複数の端末及び中継装置のうちのいずれかからデータを受信し、外部から通知されたフロー情報の識別子と出力方路との対応表に従い宛先端末まで通信を行う。コントローラは、中継装置及びスイッチの制御を行い、コンテンツ情報と端末のアドレス情報に基づいて転送経路を決定し、更に転送に使用するフロー情報を決定し、フロー情報と出力方路との対応表を転送経路上にあるスイッチの経路テーブルに設定し、決定されたフロー情報を中継装置に通知する。
【００１６】
本発明のコンテンツベーススイッチ方法は、複数の端末間の通信経路をパケットペイロードに含まれるコンテンツに基づいて決定するコンテンツベーススイッチ方法である。本発明のコンテンツベーススイッチ方法では、中継装置により、複数の端末間の通信を所定の通信プロトコルに基づいて中継し、パケットペイロードからコンテンツ情報を抽出し、抽出されたコンテンツ情報と端末のアドレス情報とをコントローラに送信する。また、複数の端末間を接続するネットワーク上に少なくとも１つ存在するスイッチにより、複数の端末及び中継装置のうちのいずれかからデータを受信する。また、コントローラにより、中継装置及びスイッチの制御を行い、コンテンツ情報と端末のアドレス情報に基づいて転送経路を決定し、更に転送に使用するフロー情報を決定し、フロー情報と出力方路との対応表を転送経路上にあるスイッチの経路テーブルに設定し、決定されたフロー情報を中継装置に通知する。また、中継装置により、コントローラから通信されたフロー情報を用いて宛先端末までのフローを設定する。また、スイッチにより、コントローラから通知されたフロー情報の識別子を用いて宛先端末まで通信を行う。
【００１７】
本発明に係るプログラムは、上記のコンテンツベーススイッチ方法における中継装置、スイッチ及びコントローラのいずれかの動作・処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１８】
本発明によれば、コンテンツベースネットワーク処理において、コンテンツに基づく宛先判定処理、ネットワークの経路判定処理と、ＴＣＰ／ＩＰ転送の制御処理を連携させることで、コンテンツベースのネットワーク転送処理の経路の最適化が実現できる。また、コントローラでネットワークの経路判定とフロー管理とを連携させることで、共有利用できるフローを判断できる。これにより、中継後の通信フローを集約することができ、ネットワークリソースや端末への処理負荷を低減することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明のコンテンツベーススイッチシステムの構成例を示す図である。
【図２】中継装置、スイッチ、及びネットワークコントローラの構成例を示す図である。
【図３Ａ】転送ポリシーテーブルの例を示す図である。
【図３Ｂ】フロー管理テーブルの例を示す図である。
【図４】実行マシン（コンピュータ）の構成例を示す図である。
【図５】中継要求を受信してから応答を返すまでのネットワークコントローラの動作を示すフローチャートである。
【図６】あるフローに関してフローが終了する場合のネットワークコントローラの動作を示すフローチャートである。
【図７】コンテンツに基づいたルーティングを行う場合のシーケンス図である。
【発明を実施するための形態】
【００２０】
＜第１実施形態＞
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図１に、本発明のコンテンツベーススイッチシステムの構成例を示す。
本発明のコンテンツベーススイッチシステムは、端末２１０（端末２１０−１〜端末２１０−Ｎ：Ｎは整数）と、端末２２０（端末２２０−１〜端末２２０−Ｎ）と、中継装置１０と、スイッチ２０（スイッチ２０−１〜スイッチ２０−６）と、ネットワークコントローラ３０を備える。
【００２１】
ここでは、端末２１０は、端末２１０−１〜端末２１０−Ｎの端末群に含まれる各端末を示す。また、端末２２０は、端末２２０−１〜端末２２０−Ｎの端末群に含まれる各端末を示す。また、スイッチ２０は、スイッチ２０−１〜スイッチ２０−６のスイッチ群に含まれる各スイッチを示す。
【００２２】
以下の説明では、端末２１０−１〜端末２１０−Ｎの各々を、端末２１０と称す。また、端末２２０−１〜端末２２０−Ｎの各々を、端末２２０と称す。また、スイッチ２０−１〜スイッチ２０−６の各々を、スイッチ２０と称す。
【００２３】
本発明のコンテンツベーススイッチシステムは、端末２１０と、端末２２０との間の中継処理を提供する。
【００２４】
端末２１０と端末２２０との間のネットワークには、中継装置１０とスイッチ２０が接続されている。
【００２５】
また、中継装置１０及びスイッチ２０は、ネットワークコントローラ３０に接続されている。ネットワークコントローラ３０は、ネットワーク機器を制御するコントローラであり、中継装置１０及びスイッチ２０を集中的に管理する。
【００２６】
なお、本発明では、端末及びスイッチの台数は任意の数であり、図示した数に限定されない。
【００２７】
図２に、中継装置１０、スイッチ２０、及びネットワークコントローラ３０の構成例を示す。
【００２８】
中継装置１０は、プロトコル終端部１１と、コンテンツ抽出部１２と、プロトコル終端部１３と、中継要求インタフェース部１４と、プロトコルポート指示部１５を備える。
【００２９】
中継装置１０は、第１の通信回線６０と第２の通信回線７０に接続され、第１の通信回線６０と第２の通信回線７０の間の中継を行う。
【００３０】
プロトコル終端部１１は、第１の通信回線６０を介して、外部に接続されている。また、プロトコル終端部１１は、コンテンツ抽出部１２に接続されている。
【００３１】
コンテンツ抽出部１２は、プロトコル終端部１１と、プロトコル終端部１３と、中継要求インタフェース部１４に接続されている。
【００３２】
プロトコル終端部１３は、コンテンツ抽出部１２に接続されている。また、プロトコル終端部１３は、第２の通信回線７０を介して、スイッチ２０に接続されている。
【００３３】
中継要求インタフェース部１４は、コンテンツ抽出部１２と、制御回線８１を介して、ネットワークコントローラ３０に接続されている。
【００３４】
プロトコルポート指示部１５は、プロトコル終端部１３と、中継要求インタフェース部１４に接続されている。
【００３５】
スイッチ２０は、フローテーブル２１と、スイッチ処理部２２と、スイッチインタフェース部２３を備える。
【００３６】
フローテーブル２１は、ＭＡＣヘッダ、ＩＰヘッダ、レイヤ４ヘッダから得られる情報をフローの識別情報として登録し、そのフローに対する出力情報（出力回線やヘッダ書き換え等のアクション情報）を格納するエントリーを備える。
【００３７】
［フローの例］
フローとは、所定の規則（ルール）に適合するパケットに対して行うべき所定の処理（アクション）を定義したものである。フローのルールは、ＭＡＣフレームのヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、フローのルールとして使用可能である。
【００３８】
フローの詳細については、以下の文献に記載されている。“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  ０．９．０（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ９８）  Ｊｕｌｙ  ２０，  ２００９  Ｃｕｒｒｅｎｔ  Ｍａｉｎｔａｉｎｅｒ：  Ｂｒａｎｄｏｎ  Ｈｅｌｌｅｒ（ｂｒａｎｄｏｎｈ＠ｓｔａｎｆｏｒｄ．ｅｄｕ）”  ＜ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ０．９．０．ｐｄｆ＞
【００３９】
スイッチ処理部２２は、フローテーブル２１に指示された経路設定に基づいて、特定のインタフェースからインタフェースへスイッチングを行い、更に指定された制御内容に応じてＱｏＳ、帯域の制御を行う。ここでは、スイッチ処理部２２は、スイッチインタフェース部２３のスイッチングを行う。
【００４０】
スイッチインタフェース部２３は、複数の回線を収容する。ここでは、スイッチインタフェース部２３には、第２の通信回線７０を介して、中継装置１０のプロトコル終端部１３に接続されているものと、他のスイッチ２０又は端末２２０に接続されているものがある。これらは、ハードウェアとして異なる別々のインタフェースでも良いし、物理ポートが異なるだけの同一のインタフェースでも良い。
【００４１】
ネットワークコントローラ３０は、中継要求インタフェース部３１と、経路判定部３２と、プロトコルポート管理部３３と、経路設定部３４を備える。
【００４２】
中継要求インタフェース部３１は、制御回線８１を介して、中継装置１０の中継要求インタフェース部１４に接続されている。
【００４３】
経路判定部３２は、中継要求インタフェース部３１と、プロトコルポート管理部３３と、経路設定部３４に接続されている。また、経路判定部３２は、転送ポリシーテーブルを保持する。転送ポリシーテーブルについては後述する。
【００４４】
プロトコルポート管理部３３は、中継要求インタフェース部３１と経路判定部３２に接続されている。また、プロトコルポート管理部３３は、フロー管理テーブルを保持する。フロー管理テーブルについては後述する。
【００４５】
経路設定部３４は、制御回線８２を介して、スイッチ２０のフローテーブル２１の設定／更新を行う。
【００４６】
［転送ポリシーテーブルの例］
図３Ａに、ネットワークコントローラ３０の経路判定部３２が保持する転送ポリシーテーブルの例を示す。転送ポリシーテーブルは、中継装置１０から要求のあった、中継対象トラヒックのアドレス情報、コンテンツ情報に基づいて、転送のためのポリシーＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）、ＱｏＳパラメータ情報を取得するために用いられる。ここでは、転送ポリシーテーブルは、送信元アドレス、宛先アドレス（仮想宛先アドレス）、コンテンツルール、ポリシーＩＤならびに転送ＱｏＳパラメータを格納している。経路判定部３２は、転送ポリシーテーブルから、送信元アドレスと宛先アドレス（仮想宛先アドレス）、コンテンツルールに対応する転送ポリシーとして、ポリシーＩＤならびに転送ＱｏＳパラメータを取得できる。なお、経路判定部３２は、ポリシーＩＤをインデックスとして、ルーティングの転送ポリシーを取得することができるものとする。
【００４７】
［フロー管理テーブルの例］
図３Ｂに、ネットワークコントローラ３０のプロトコルポート管理部３３が保持するフロー管理テーブルの例を示す。フロー管理テーブルは、ポリシーＩＤによって指定された転送フローに関する情報を格納する。ここでは、フロー管理テーブルは、宛先アドレス、経路、ＱｏＳパラメータ、ポリシーＩＤ、フロー情報、ＫｅｅｐＡｌｉｖｅ情報を格納している。ＫｅｅｐＡｌｉｖｅ情報は、「Ｋｅｅｐ  Ａｌｉｖｅ（キープアライブ）」を使用するか否かを示す情報である。なお、「Ｋｅｅｐ  Ａｌｉｖｅ」とは、ネットワーク上で、接続が有効であることを確認するために定期的に行われる通信である。ここでは、「Ｋｅｅｐ  Ａｌｉｖｅ」の指定があれば「ｔｒｕｅ（真）」、指定がなければ「ｆａｌｓｅ（偽）」とする。経路判定部３２は、このフロー管理テーブルを参照することにより、宛先アドレスまでの指定経路、ＱｏＳパラメータ、ポリシーＩＤを指定した場合のフロー情報を取得できる。
【００４８】
［実行マシン（コンピュータ）の構成例］
図４は、本発明のコンテンツベーススイッチシステムの各処理部が実行されるマシン（コンピュータ）の構成の一例を示している。
【００４９】
中継装置１０、スイッチ２０、及びネットワークコントローラ３０の各々がコンピュータ５０である場合、これらの各処理部は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５１、メモリ５２、二次記憶装置５３、ネットワークインタフェース５４の組み合わせにより実現される。
【００５０】
ＣＰＵ５１は、各種ソフトウェア・プログラム（コンピュータ・プログラム）を実行することにより、中継装置１０、スイッチ２０、ネットワークコントローラ３０の全体的な動作を司る。より具体的には、本実施形態において、ＣＰＵ５１は、メモリ５２、二次記憶装置５３から、又はネットワークインタフェース５４を介して、プロトコル終端部、コンテンツ抽出部、経路判定部、経路設定部、プロトコルポート管理部等の機能・処理を実現するためのソフトウェア・プログラムを取得し、適宜実行する。メモリ５２及び二次記憶装置５３は、ＣＰＵ５１やネットワークインタフェース５４から受け取ったデータを記憶し、ＣＰＵ５１からの要求に応じて、記憶されているデータを提供する。ネットワークインタフェース５４は、中継装置１０と、スイッチ２０と、ネットワークコントローラ３０の間のネットワークを構成する通信回線に接続される。
【００５１】
なお、ＣＰＵ５１は、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）や、マイクロコントローラ、あるいは同様の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等でも良い。但し、実際には、これらの例に限定されない。
【００５２】
メモリ５２は、ＣＰＵ５１が直接読み書きできるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や、電源投入時に最初に読み込まれるプログラムの記憶等に使われるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、又はＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、あるいはフラッシュメモリ等の半導体記憶装置である。ここでは、メモリ５２は、主記憶装置（メインメモリ）を示す。但し、実際には、これらの例に限定されない。
【００５３】
二次記憶装置５３は、コンピュータ内外でデータやプログラムを格納する補助記憶装置である。ここでは、二次記憶装置５３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の外部記憶装置（ｓｔｏｒａｇｅ）を示す。また、二次記憶装置５３は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）とその駆動装置（ドライブ）や、メモリカード等の記憶媒体（メディア）等でも良い。但し、実際には、これらの例に限定されない。
【００５４】
ネットワークインタフェース５４の例として、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。また、ネットワークインタフェース５４が利用する通信回線の例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。但し、実際には、これらの例に限定されない。
【００５５】
［中継処理］
以下に、端末２１０から端末２２０へと中継処理の際の各機能の動作について説明する。
【００５６】
ここでは、図１において、端末２１０−１からあるサービスを提供する他の端末に対して接続する場合を考える。このとき、端末２１０−１からは中継装置１０が持つアドレス（仮想アドレスの場合もあり）を宛先としたパケットを送信し、ＴＣＰ接続を試みる。この接続要求は、図２における第１の通信コネクションに相当し、プロトコル終端部１１においてＴＣＰの終端処理がされる。
【００５７】
プロトコル終端部１１は、ＴＣＰの終端処理により、アプリケーションレイヤのプロトコルペイロードを取り出す。アプリケーションレイヤのプロトコルの例としては、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  ＴｒａｎｓｆｅｒＰｒｏｔｏｃｏｌ）やＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等が挙げられる。
【００５８】
次に、コンテンツ抽出部１２は、このプロトコルペイロードからコンテンツ情報を抽出する。このとき、コンテンツ情報は文字列であり、この文字列は予め指定されている。コンテンツ抽出部１２は、プロトコルペイロードから、予め指定された文字列にしたがってコンテンツ情報を抽出する。コンテンツ情報の例として、ＨＴＴＰの場合は、リクエストメッセージに含まれるＵＲＩ（Ｕｎｉｆｉｅｄ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）やＣｏｏｋｉｅ文字列が挙げられる。あるいは、ＸＭＬ（ｅＸｔｅｎｄｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されたタグ情報が挙げられる。
【００５９】
ここでは、例としてコンテンツ抽出部１２がコンテンツ情報としてＵＲＩ文字列を抽出した場合について説明する。この場合、中継要求インタフェース部１４は、第１の通信コネクションに関する情報として、送信元のＩＰアドレス、中継装置側の宛先ＩＰアドレスと共に、コンテンツ抽出部１２で抽出されたＵＲＩ文字列を参照して、中継要求メッセージを作成する。また、中継要求インタフェース部１４は、制御回線８１を経由して、この中継要求メッセージをネットワークコントローラ３０に送信する。
【００６０】
ネットワークコントローラ３０において、中継要求インタフェース部３１は、制御回線８１を経由して中継要求メッセージを受信すると、この中継要求メッセージを経路判定部３２に通知する。経路判定部３２は、転送ポリシーに基づいて、この中継要求メッセージの転送経路を判定する。
【００６１】
上記の転送ポリシーは、図３Ａの転送ポリシーテーブルに例示したものとする。この例では、送信元アドレスが任意（ａｎｙ）で、宛先ＩＰアドレスが「１３３．２０２．１．１」で、ＵＲＩが「ｆｏｏ．ｃｏｍ」にマッチする場合には、「１番」のエントリーにマッチし、転送ポリシーＩＤが「１０１」で、ＱｏＳパラメータが「１０Ｍｂｐｓ」であることがわかる。経路判定部３２は、ポリシーＩＤに関連付けられた転送ノードを選択する。具体的には、経路判定部３２は、ポリシーＩＤ１０１に対応する経路を経路判定ロジックによって選択する。ここでは、スイッチ２０−１、スイッチ２０−２、スイッチ２０−３、スイッチ２０−４を経由して端末２２０−１に到達する経路が選択されたとする。左記のスイッチは、図１上の表現では、スイッチＡ、Ｂ、Ｃ、Ｄを通過する経路になる。また、宛先端末２２０−１のＩＰアドレスが「１０．１．２．１」であるとする。
【００６２】
次に、経路判定部３２は、プロトコルポート管理部３３に対して、転送ポリシー判定により得られた宛先、経路、ポリシー情報を渡して、プロトコルポート管理部３３内のフロー管理テーブルを検索する。ここで既に同じ条件のフローが登録されていなければ、新規にプロトコルポート番号を割り当てる。ＴＣＰの場合は、ＴＣＰの送信元ポート番号と宛先ポート番号を割り当てる。なお、一般的に、宛先ポート番号は、サーバのサービスポート番号を表しており、ＨＴＴＰやＳＭＴＰ等のサービス毎に固定値をとる。送信元ポート番号は、コネクションを特定できるように、動的に割り当てられる。一般的には、予約済みポート（Ｒｅｇｉｓｔｅｒｅｄ  Ｐｏｒｔ）や動的／プライベートポート（Ｄｙｎａｍｉｃ  ａｎｄ／ｏｒ  Ｐｒｉｖａｔｅ  Ｐｏｒｔ）である１０２４番以上（６５５３５番以下）の範囲からポート番号が払い出されて使用される。
【００６３】
また、経路判定部３２は、プロトコルポート管理部３３内のフロー管理テーブルを検索し、同じ条件のフローが登録されていて、更に「Ｋｅｅｐ  Ａｌｉｖｅ」の指定があれば、そのフローを利用することが可能であると判断する。
【００６４】
このようにして、経路判定部３２は、中継要求に対してどのフローを使用するかを決定する。次に、経路判定部３２は、中継要求インタフェース部３１に対して、宛先端末のＩＰアドレスとプロトコルポート情報を返す。ＴＣＰを使う場合のプロトコルポート情報は、ＴＣＰの送信元ポート番号、宛先ポート番号になる。中継要求インタフェース部３１は、応答メッセージとして、これらの情報を中継装置１０に送信する。
【００６５】
中継装置１０の中継要求インタフェース部１４は、ネットワークコントローラ３０からの応答メッセージを受信すると、プロトコルポート指示部１５にその応答メッセージを渡す。プロトコルポート指示部１５は、その応答メッセージに基づいて、第２の通信コネクションを選択する。プロトコルポート指示部１５は、応答メッセージで指定されるフロー情報が新規であれば、指定された宛先ＩＰアドレスとプロトコルポート情報にしたがって、プロトコル終端部１３に新規の第２の通信コネクションを確立するように要求する。例えば、プロトコルポート指示部１５は、応答メッセージで指定されるフロー情報が「Ｋｅｅｐ  Ａｌｉｖｅ」であれば、指定された宛先ＩＰアドレスとプロトコルポート情報を使用しているコネクションを使用するように指定する。
【００６６】
プロトコルポート指示部１５によるコネクションの指定については、Ｕｎｉｘ（登録商標）系のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の場合では、アドレスならびにプロトコルポート番号からソケットＩＤを検索し、そのソケットＩＤを指定することで、データの中継が可能になる。なお、ソケットとは、ＩＰアドレスと、ＩＰアドレスのサブ（補助）アドレスであるポート番号を組み合わせたネットワークアドレスのことである。
【００６７】
また、プロトコルポート指示部１５は、新規コネクションにおいて、ＯＳが自動でポート番号を割り当てないように指定するためには、ｂｉｎｄ（）システムコールで、送信元ポート番号情報とソケットを関連付け、更にそのソケットを指定してｃｏｎｎｅｃｔ（）システムコールを用いる。プロトコルポート指示部１５は、これらのコマンドにより、ＴＣＰのポート番号を指定した新規のコネクションを設定でき、このソケットＩＤを指定することで、ネットワークコントローラ３０が割り当てたプロトコルポート番号を使用した中継処理を実現できる。
【００６８】
また、経路設定部３４は、ネットワークコントローラ３０の経路判定部３２で決定した経路を、経路上のスイッチ２０−１、スイッチ２０−２、スイッチ２０−３、スイッチ２０−４に設定する。ここでは、経路設定部３４は、スイッチ２０のフローテーブル２１に、フローエントリーを書き込む。例えば、経路設定部３４は、フロー管理テーブル１に相当するフローの場合は、「送信元ＩＰアドレス＝１０．０．０．１、宛先ＩＰアドレス＝１０．１．２．１、ＴＣＰの送信元ポート（ｓｐ：ｓｏｕｒｃｅ  ｐｏｒｔ）＝２００１、宛先ポート（ｄｐ：ｄｅｓｔｉｎａｔｉｏｎ  ｐｏｒｔ）＝８０」というフローに対して入出力ポートを指定するフローエントリーを設定する。
【００６９】
図５、図６を参照して、ネットワークコントローラ３０の処理のうち、本発明に関係する箇所について説明する。
【００７０】
［要求受信］
図５は、中継装置１０からの中継要求を受信してから応答を返すまでのネットワークコントローラ３０の処理を示している。
【００７１】
（１）ステップＳ１１
ネットワークコントローラ３０において、中継要求インタフェース部３１は、中継装置１０からの中継要求メッセージを受信すると、経路判定部３２に通知する。経路判定部３２は、中継要求メッセージに含まれる送信元情報と、宛先情報と、コンテンツ情報に基づいて、経路判定部３２内の転送ポリシーテーブルを検索し、転送ポリシーを取得する。
【００７２】
（２）ステップＳ１２
経路判定部３２は、得られた転送ポリシーに基づいて、宛先、経路、ＱｏＳ情報を決定する。
【００７３】
（３）ステップＳ１３
経路判定部３２は、得られた転送ポリシーにおいて、「Ｋｅｅｐ  Ａｌｉｖｅ」を使用するか否か判断する。
【００７４】
（４）ステップＳ１４
経路判定部３２は、得られた転送ポリシーにおいて、「Ｋｅｅｐ  Ａｌｉｖｅ」を使用する場合は、プロトコルポート管理部３３内のフロー管理テーブルを検索し、利用可能なフローがあるかどうかを探す。具体的には、経路判定部３２は、同一の宛先、経路、ＱｏＳを適用しているパスを、これらの情報をキーとしてフロー管理テーブルを検索する。
【００７５】
（５）ステップＳ１５
経路判定部３２は、同一のフローが存在するか否か判断する。
【００７６】
（６）ステップＳ１６
経路判定部３２は、同一のフローが存在した場合は、既存のフロー情報を取得する。
【００７７】
（７）ステップＳ１７
一方、経路判定部３２は、同一のフローが存在しない場合は、既にあるフローの再利用ができないので、新規フローを割り当てる。また、経路判定部３２は、ステップＳ１３において、「Ｋｅｅｐ  Ａｌｉｖｅ」を使用しない場合も新規フローを割り当てる。
【００７８】
（８）ステップＳ１８
経路判定部３２は、新規フローを割り当てた場合は、そのフロー情報に対応するフローエントリーを経路設定部３４から経路上の１つ以上のスイッチ２０に対して設定する。
【００７９】
（９）ステップＳ１９
経路判定部３２は、以上の処理により、中継に使用するフロー情報が確定すると、中継要求インタフェース部３１に、フロー情報を含む応答メッセージを通知する。中継要求インタフェース部３１は、中継装置１０に対して応答メッセージを送信する。
【００８０】
［フロー終了通知］
図６は、中継装置１０において、あるフローに関してフローが終了する場合の、ネットワークコントローラ３０の処理を示している。
【００８１】
（１）ステップＳ２１
ネットワークコントローラ３０において、中継要求インタフェース部３１は、中継装置１０からフロー終了メッセージを受け取ると、経路判定部３２に通知する。経路判定部３２は、フロー終了メッセージからフロー情報を取得する。
【００８２】
（２）ステップＳ２２
次に、経路判定部３２は、プロトコルポート管理部３３内のフロー管理テーブルを参照し、宛先までの経路を特定し、経路上のスイッチ２０のフローエントリー削除要求を出す。なお、スイッチ２０のフローエントリーがエージング処理（ａｇｉｎｇ）により自動的に削除される場合は、明示的にスイッチ２０のフローエントリー削除要求を出さないようにすることも可能である。エージング処理とは、機器の本来の性能を出すための慣らしをすることである。
【００８３】
（３）ステップＳ２３
更に、経路判定部３２は、プロトコルポート管理部３３に対して、未使用となったポート番号を返却する。具体的には、経路判定部３２は、ＴＣＰのフローの場合は、動的に割り当てていたＴＣＰの送信元ポート番号を解放し、新規割当に使用可能とする。
【００８４】
（４）ステップＳ２４
最後に、経路判定部３２は、プロトコルポート管理部３３内のフロー管理テーブルからフロー情報を削除する。
【００８５】
以上により、中継処理が完了したフローについて、ネットワークコントローラ３０ならびにスイッチ２０から、関連する制御情報（テーブルエントリー、ポート番号等）を削除する。
【００８６】
ネットワークコントローラ３０からスイッチ２０内のフローテーブル２１を操作する具体的な方式としては、「Ｏｐｅｎｆｌｏｗ」（ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／）等が挙げられる。「Ｏｐｅｎｆｌｏｗ」の場合、ネットワークコントローラ３０の経路設定部３４が「Ｏｐｅｎｆｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ」に対応し、制御回線８２が「Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ」に対応する。
【００８７】
＜第２実施形態＞
以下に、本発明の第２実施形態について説明する。
本発明の第２実施形態では、プロトコルポート管理部３３内のフロー管理テーブルがＴＣＰのポート番号を指定せずにＩＰアドレスのみでフローを指定する場合を示す。
【００８８】
ネットワークコントローラ３０の経路判定部３２は、転送ポリシーテーブルに基づいてコンテンツに対する宛先ならびに経路を判定する。ここで、経路判定部３２は、経路ならびに宛先を一意に特定するための宛先ＩＰアドレスを割り振る。経路判定部３２は、同一の端末２２０に対して複数の宛先ＩＰアドレスを対応付けるものとし、異なる経路を識別するために異なる宛先ＩＰアドレスを割り振る。
【００８９】
次に、経路判定部３２は、プロトコルポート管理部３３内のフロー管理テーブルにフロー情報を登録する。本実施形態では、経路判定部３２は、ＴＣＰのポート番号を管理しないので、「ｔｃｐ  ｓｐ」を指定しない。なお、「ｔｃｐ  ｓｐ」は、ＴＣＰの送信元ポート（ｓｐ）を示す。また、経路判定部３２は、宛先ＩＰアドレスを空きアドレスから任意に割り振り、端末の実際のＩＰアドレスに対応付ける。
【００９０】
ネットワークコントローラ３０は、中継装置１０のＩＰアドレスを送信元ＩＰアドレスとし、前記割り当てたＩＰアドレスを宛先とするフローについて、転送するスイッチのフローエントリーを設定する。ネットワークコントローラ３０は、送信元ＩＰアドレスが「１０．０．３．１」で、コンテンツから求めた宛先端末が２２０−４でその宛先ＩＰアドレスが「１０．２．２．１」だとすると、中継装置１０（「１０．０．３．１」）と端末２２０−４（「１０．２．２．１」）との間の転送を行うために、当該フローについて、選択された経路上にあるスイッチ２０のフローテーブル２１にフローエントリーを設定する。例えば、ネットワークコントローラ３０は、スイッチ２０−１、２０−５、２０−６、２０−４のそれぞれに（「１３３．２０２．１０．１」、「１０．２．２．１」）の組み合わせのＩＰヘッダを持つパケットを対象フローとするフローエントリーを設定する。なお、端末が複数のＩＰアドレスを処理できない場合は、経路上のいずれかのスイッチにおいてＩＰアドレスを変換して、端末２２０−４に対しては、実際のＩＰアドレスで到達できるようにしても良い。
【００９１】
中継装置１０は、ネットワークコントローラ３０からＴＣＰのポート番号を指定していない応答メッセージを受け取ると、端末２２０−４に対して、ＴＣＰのポート番号を自律的に割り当てて接続を行う。このとき、中継装置１０は、宛先ＩＰアドレスとして、前述の応答メッセージで指定された「１０．２．２．１」を使う。
【００９２】
このコネクションに関する通信データは、ネットワークコントローラ３０からスイッチ２０に対して設定されたフローエントリーに従い、中継装置１０から端末２２０−４まで転送され、結果的に端末２１０−２から端末２２０−４まで、コンテンツ内容に基づくルーティングでの転送が実現される。
【００９３】
使用するプロトコルがＴＣＰではなくＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）の場合でもポート番号を管理することで同様の処理が実現できる。
【００９４】
なお、上記の各実施形態は、組み合わせて実施することも可能である。例えば、本発明のコンテンツベーススイッチシステムにおいて、上記の各実施形態に対応する機能を選択できるようにしても良い。
【００９５】
＜実施例１＞
図７に、端末２１０−１から端末２２０−１までの転送において、中継装置１０ならびにネットワークコントローラ（コントローラ）３０においてコンテンツに基づいたルーティングを行う場合のシーケンス図を示す。
【００９６】
（１）ステップＳ１０１
端末２１０−１は、中継装置１０に向けてデータを送信する。ここで、トランスポートとしてＴＣＰを使った場合を想定する。すると、端末２１０−１からは、中継装置１０のＩＰアドレス、あるいは宛先端末群を代表する仮想ＩＰアドレスに向けてＴＣＰ接続を行う。ＴＣＰ接続は、「３ｗａｙ  ｈａｎｄｓｈａｋｅ」と呼ばれるシーケンスによって行われ、端末２１０−１と中継装置１０の間で制御パケット（ＳＹＮ、ＳＹＮ−ＡＣＫ、ＡＣＫ）の通信が行われる。端末２１０−１は、コネクションが確立すると、中継装置１０に向けて、コンテンツ情報を含む通信データを送信する。
【００９７】
（２）ステップＳ１０２
中継装置１０は、ＴＣＰ終端によって抽出したコンテンツ情報ならびに端末２１０−１のＩＰアドレス情報を含む中継要求メッセージをネットワークコントローラ３０に対して送信し、コンテンツ内容に基づくメッセージルーティング処理を依頼する。
【００９８】
（３）ステップＳ１０３
ネットワークコントローラ３０は、図５を用いて説明した処理シーケンスに基づいてフロー情報の取得、ルーティング判定（経路判定）ならびにスイッチ２０の設定を行う。ネットワークコントローラ３０は、ルーティング判定として、送信元ＩＰアドレス、コンテンツ内容と転送ポリシーを比較（照合）することで、どのような転送ポリシーを適用するかを判定する。ここでは、ネットワークコントローラ３０は、宛先端末２２０−１の特定、端末までの経路の特定、転送の際のＱｏＳパラメータの特定を行う。例えば、ネットワークコントローラ３０は、ＨＴＴＰのリクエストデータに含まれるＵＲＩをコンテンツ内容とする場合は、ＵＲＩ文字列と転送ポリシーを比較することで、宛先端末ならびに転送経路を決定する。更に、ネットワークコントローラ３０は、得られた宛先、経路、ＱｏＳ情報を基にフロー管理テーブルを参照して、転送に用いるフロー情報を取得する。フロー情報は、中継装置１０から宛先端末２２０までのＴＣＰ接続で用いられる通信ポート情報を含む。
【００９９】
（４）ステップＳ１０４
ネットワークコントローラ３０は、得られたフロー情報を基に、経路上のスイッチ２０−１に対してフローエントリーを設定し、スイッチ２０−１において該当フローのデータが入力した際に入出力ポート間でスイッチング処理を行えるようにする。
【０１００】
（５）ステップＳ１０５
同様に、ネットワークコントローラ３０は、得られたフロー情報を基に、経路上のスイッチ２０−２に対してフローエントリーを設定し、スイッチ２０−２において該当フローのデータが入力した際に入出力ポート間でスイッチング処理を行えるようにする。図７には、スイッチが２台のみ記載されているが、実際には、ネットワークコントローラ３０は、判定した経路に応じて複数のスイッチに対して経路を設定する。
【０１０１】
（６）ステップＳ１０６
ネットワークコントローラ３０は、以上の設定が終わると、中継要求メッセージに対する応答メッセージを中継装置１０に対して送信する。
【０１０２】
（７）ステップＳ１０７
中継装置１０は、ネットワークコントローラ３０からの応答メッセージで指定されたフロー情報に基づき、新規、あるいは既存のＴＣＰコネクションを利用して端末２２０−１までの通信路を確立する。新規のＴＣＰコネクションを利用する場合は、中継装置１０から端末２２０−１に対して指定されたＴＣＰポート番号を使う。具体的には、中継装置１０は、Ｕｎｉｘ（登録商標）系のＯＳでは、ｓｏｃｋｅｔ（）システムコールでソケットディスクリプタを取得し、ｂｉｎｄ（）システムコールで、ソケットディスクリプタのローカルアドレスとして、ネットワークコントローラ３０から指定された送信元ポート番号を指定する。これにより、中継装置１０は、ＴＣＰ／ＩＰスタックが送信元ポート番号を自律的に割り当てるのではなく、指定された値を用いることができるようになる。更に、中継装置１０は、ｃｏｎｎｅｃｔ（）システムコールを用いて宛先端末２２０−１のＩＰアドレスとサービスを示すＴＣＰの宛先ポート番号を指定する。これにより、ネットワークコントローラ３０が指定したフロー情報を持つＴＣＰコネクションが中継装置１０と端末２２０−１との間に確立される。通信経路が確立すると、中継装置１０は、ステップＳ１０１で受信して保持していた通信メッセージを宛先である端末２２０−１に送信する。
【０１０３】
（８）ステップＳ１０８
中継装置１０は、端末２１０−１と端末２２０−１との間のメッセージ及び通信データを中継する。以降において、端末２１０−１と端末２２０−１との間のメッセージ及び通信データは、端末２１０−１、中継装置１０との間の第１のＴＣＰコネクションと、中継装置１０と端末２２０−１との間の第２のＴＣＰコネクションを使って中継される。ＨＴＴＰのＧＥＴリクエストの場合では、端末２１０−１からのＧＥＴリクエストが中継装置１０を介して端末２２０−１に送信される。逆に、端末２２０−１からのレスポンスメッセージ、ならびにＧＥＴで指定され取得されたファイル等のコンテンツの転送は、ネットワークコントローラ３０から中継装置１０を介して端末２１０−１に送信される。以上により、端末２１０−１と端末２２０−１との間でコンテンツに基づくルーティング処理が実現できる。
【０１０４】
（９）ステップＳ１０９
最後に、端末２１０−１と端末２２０−１間の通信が終了すると、中継装置１０は、該当フローが終了したことをネットワークコントローラ３０に対して通知する。ネットワークコントローラ３０は、フロー終了通知メッセージを受け取ると、フロー管理テーブルから該当フローの情報を削除すると共に、該当フローで使用していたＴＣＰのポート番号を未使用とし、再度利用できるようにする。
【０１０５】
本発明では、中継装置１０は、ネットワークコントローラ３０から通知されたフローを特定する情報（ＴＣＰのポート番号）を使用してデータを転送している。そのため、フロー情報（ＴＣＰのポート番号）そのものは、経路（パス）を明示的には表していない。すなわち、フロー情報は、ＴＣＰコネクションで通過する経路を指定しない。
【０１０６】
また、本発明では、ＭＰＬＳラベルを用いずＴＣＰ／ＩＰヘッダの形式のままで転送ができる。
【０１０７】
また、本発明では、中継装置１０は、フローの識別子をネットワークコントローラ３０から通知してもらい、そのフロー識別子を使って中継装置１０が通信をする。すなわち、中継装置１０が自律的に新規のフロー識別子を割り当てるのではなく、ネットワークコントローラ３０がフロー識別子を割り当てる。
【０１０８】
以上のように、本発明のコンテンツベーススイッチシステムは、複数の端末間の通信経路をパケットペイロードに含まれるコンテンツに基づいて決定するコンテンツベーススイッチの処理システムであって、複数の端末間の通信を所定の通信プロトコルに基づいて中継し、パケットペイロードからコンテンツ情報を抽出する中継装置と、複数の端末間を接続する１つ以上のスイッチと、中継装置ならびにスイッチの制御機能を備えるコントローラを備える。
【０１０９】
中継装置は、端末から受信したデータのパケットペイロードから抽出したコンテンツ情報と端末のアドレス情報をコントローラに送信する。
【０１１０】
コントローラは、コンテンツ情報と端末のアドレス情報に基づいて転送経路を決定する。更に、コントローラは、転送に使用するフロー情報を決定する。また、コントローラは、フロー情報と出力方路との対応表を転送経路上にあるスイッチの経路テーブルに設定する。また、コントローラは、決定されたフロー情報を中継装置に通知する。
【０１１１】
中継装置は、コントローラから通知されたフロー情報の識別子を用いて宛先端末まで通信を行う。
【０１１２】
複数の端末間の通信プロトコルがＴＣＰである場合に、コントローラから中継装置に通知されるフロー情報の識別子として、ＴＣＰの送信元ポート番号と宛先ポート番号のいずれかもしくは両方と、宛先端末のＩＰアドレスとを含む。
【０１１３】
あるいは、コントローラから中継装置に通知されるフロー情報の識別子として、通信の端点となる二つの端末に対応するＩＰアドレスのうちの少なくとも１つを含む。
【０１１４】
また、複数の端末間の通信プロトコルがＵＤＰである場合に、コントローラから中継装置に通知されるフロー情報の識別子として、ＵＤＰの送信元ポート番号と宛先ポート番号のいずれかもしくは両方と、宛先端末のＩＰアドレスとを含む。
【０１１５】
中継装置は、中継装置から宛先端末までの通信において、コントローラが決定するフロー情報が新規フローである場合に、決定されたフロー情報と同一のフロー（ＩＰ、ＵＤＰ、ＴＣＰ等）を新規に確立して宛先端末までのデータを転送する。
【０１１６】
中継装置から宛先端末までの通信において、コントローラにより決定されたフロー情報が使用中フローを割り当てた場合に、中継装置が既に確立済みのフローを使用して宛先端末との間のデータを転送する。
【０１１７】
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１１８】
なお、本出願は、日本出願番号２００９−２２１４５４に基づく優先権を主張するものであり、日本出願番号２００９−２２１４５４における開示内容は引用により本出願に組み込まれる。
【図１】
0005621778.tif 000002
【図２】
0005621778.tif 000003
【図３Ａ】
0005621778.tif 000004
【図３Ｂ】
0005621778.tif 000005
【図４】
0005621778.tif 000006
【図５】
0005621778.tif 000007
【図６】
0005621778.tif 000008
【図７】
0005621778.tif 000009