(57)【特許請求の範囲】
【請求項１】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、
前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、
前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させ、
前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する制御装置を含む通信システム。
【請求項２】
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記制御装置は、前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する請求項１の通信システム。
【請求項３】
前記制御装置は、さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む請求項１または２の通信システム。
【請求項４】
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する請求項３の通信システム。
【請求項５】
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う請求項３の通信システム。
【請求項６】
前記近隣探索処理部は、前記第２のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第２のホストに対して、近隣要請を行なって、前記第２のホストのリンクレイヤアドレスを取得する請求項１から５いずれか一の通信システム。
【請求項７】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、
前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、
前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させ、
前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する制御装置。
【請求項８】
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する請求項７の制御装置。
【請求項９】
さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む請求項７または８の制御装置。
【請求項１０】
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する請求項９の制御装置。
【請求項１１】
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う請求項９の制御装置。
【請求項１２】
前記近隣探索処理部は、前記第２のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第２のホストに対して、近隣要請を行なって、前記第２のホストのリンクレイヤアドレスを取得する請求項７から１１いずれか一の制御装置。
【請求項１３】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置が、
前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させるステップと、
前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させるステップと、
前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御するステップと、
を含む、異なるサブネットに属するホスト間のパケット転送方法。
【請求項１４】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置を構成するコンピュータに、
前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる処理と、
前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させる処理と、
前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、制御装置、パケット転送方法およびプログラムに関し、特に、ノードを集中制御する制御装置が設けられている通信システム、その制御装置、パケット転送方法およびプログラムに関する。
【背景技術】
【０００２】
近年、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（特許文献１、非特許文献１、２参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献２に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチングルール（ヘッダフィールド）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、処理内容を定義したインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）と、の組が定義される（図１１参照）。
【０００３】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチングルール（図１１のヘッダフィールド参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対してエントリ設定の要求、即ち、受信パケットの処理内容の決定の要求を送信する。オープンフロースイッチは、要求に対応するフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００８／０９５０１０号
【非特許文献】
【０００５】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２３（２０１１）年５月２６日検索］、インターネット〈URL: http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０２）  ［平成２３（２０１１）年５月２６検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の分析は、本発明によって与えられたものである。上記のようなオープンフローを用いたネットワークにおいて、外部ネットワークとの境界やその内部の仮想ノードとして、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）ルータやＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）ルータを配置したいという要請がある。
【０００７】
例えば、特定の（オープンフロー）スイッチをＩＰｖ６ルータとして動作させる場合、図１２に示すように、（オープンフロー）コントローラに、ＯＳＰＦｖ３（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔ  ｖｅｒｓｉｏｎ  ３）、ＢＧＰ４＋（Ｂｏｒｄｅｒ  Ｇａｔｅｗａｙ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４＋）等により動的に更新される経路表を用いてルーティングを行うルータエミュレーション機構を搭載し、（オープンフロー）コントローラ内部で、経路表の更新を行いつつ、ルータ相当の動作を実現するフローエントリを作成することが考えられる。しかしながら、この方法では、コントローラに完全なルータエミュレーション機構を実装する必要があり、その開発コストが高くなってしまうという問題点がある。
【０００８】
さらに、上記方式では、オープンフロースイッチの方も、図１１のパケットヘッダを用いたルックアップ機能に加えて、ＩＰｖ６ヘッダに対応させる必要があり、この点でも装置開発、および、装置コストが増大してしまう可能性がある。
【０００９】
本発明は、上記した事情に鑑みてなされたものであってその目的とするところは、オープンフローネットワークに接続された異なるサブネットに所属する複数のホストに対し、その実装コストを増大させずに実現できるサブネット間通信機能を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させ、前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する制御装置を含む通信システムが提供される。
【００１１】
本発明の第２の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させ、前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する制御装置が提供される。
【００１２】
本発明の第３の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置が、前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させるステップと、前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させるステップと、前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御するステップと、を含む、異なるサブネットに属するホスト間のパケット転送方法が提供される。本方法は、前記ノードを制御する制御装置という、特定の機械に結びつけられている。
【００１３】
本発明の第４の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置を構成するコンピュータに、前記ノードが第１のホストから所定の経路表に登録された第２のホスト宛てのパケットを受信した際に、前記ノードから、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる処理と、前記第１のホストからの前記第２のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第２のホストのリンクレイヤアドレスを応答させる処理と、前記第２のホストのリンクレイヤアドレスが設定されたパケットを前記第２のホストに転送するよう前記ノードを制御する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１４】
本発明によれば、コストの増大やノード（スイッチ）側の構成変更を伴わずに、オープンフローネットワークに接続された異なるサブネットに所属する複数のホストに対し、サブネット間通信機能を提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態の概要を説明するための図である。
【図２】本発明の一実施形態の動作概要を説明するためのシーケンス図である。
【図３】本発明の第１の実施形態の構成を表したブロック図である。
【図４】本発明の第１の実施形態のコントローラのポートＤＢに保持される情報の例である。
【図５】本発明の第１の実施形態のコントローラのホストＤＢに保持される情報の例である。
【図６】本発明の第１の実施形態の全体の動作を表したシーケンス図である。
【図７】本発明の第１の実施形態のコントローラの動作（ルータ要請受信時）を表した流れ図である。
【図８】本発明の第１の実施形態のコントローラの動作（近隣要請受信時）を表した流れ図である。
【図９】本発明の第１の実施形態のコントローラの動作（ユーザパケット受信時）を表した流れ図である。
【図１０】本発明の第１の実施形態のコントローラの動作（近隣広告受信時）を表した流れ図である。
【図１１】非特許文献２のフローエントリの構成を表した図である。
【図１２】背景技術を説明するための図である。
【発明を実施するための形態】
【００１６】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以下の説明における「近隣要請（Ｎｅｉｇｈｂｏｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）」、「近隣広告（Ｎｅｉｇｈｂｏｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）」、「ルータ要請（Ｒｏｕｔｅｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）」、「ルータ広告（Ｒｏｕｔｅｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）」、「リダイレクト（Ｒｅｄｉｒｅｃｔ）」等の用語は、ＲＦＣ２４６１に規定されている。
【００１７】
本発明は、図１に示すように、フローテーブル２１と、パケット処理部２２とを備え、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノード２０と、前記ノード２０からの要求に応じて前記ノード２０に前記処理規則（以下、「フローエントリ」）の設定または所定のパケットの送信を指示するコントローラ１０（上記「制御装置」に相当。）とを含む構成にて実現できる。より具体的には、コントローラ１０は、前記ノード２０に接続されたホストのグローバルアドレスと、リンクローカルアドレスと、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス等のリンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部１７と、前記ノード２０に、ホストからの近隣要請に応答させる近隣探索処理部１８と、を備える。また、コントローラ１０は、ＩＰｖ６ルータにおけるＯＳＰＦｖ３、ＢＧＰ４＋等の処理を行い、経路表１４を更新するルーティングプロトコル処理部１３を備え、パケット処理部１５を介して、ノード２０とＯＳＰＦｖ３、ＢＧＰ４＋等の制御パケットの送受信を行って経路表１４を更新しているものとする。
【００１８】
なお、ノード２０は、非特許文献１、２のオープンフロースイッチまたはその互換製品により実現することが可能である。
【００１９】
図２は、上記本発明の一実施形態の動作概要を説明するためのシーケンス図である。図２において、ホストと、宛先ホストは、異なるサブネットに属しているものとする。
【００２０】
図２を参照すると、まず、ホストから新規に宛先ホスト宛のユーザパケットを受信すると（図２のＳ００１）、ノード２０は、フローテーブル２１から、受信したユーザパケットに適合する照合規則（マッチングルール）を持つフローエントリを検索する。
【００２１】
ここでは、ホストから受信したパケットは、新規のユーザパケットであるため、ノード２０のフローテーブル２１には、受信パケットに適合するフローエントリは存在しない。そこで、ノード２０は、コントローラ１０に対して、受信パケットに適合するフローエントリの設定を要求する（図２のＰａｃｋｅｔ−Ｉｎ；Ｓ００２）。
【００２２】
前記Ｐａｃｋｅｔ−Ｉｎを受信したコントローラ１０は、ホスト情報記憶部１７を参照して（図２のＳ００３）、ノードに、宛先ホストのリンクレイヤアドレスが設定されたパケットを、宛先ホストへ転送させるフローエントリを設定する（図２のＳ００４）。
【００２３】
コントローラ１０は、ホスト情報記憶部１７を参照して、ノード２０から、前記第１のホストに対し、前記第２のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる（図２のＳ００５−１、Ｓ００５−２）。
【００２４】
前記ノード２０は、前記リダイレクト要請を受信したホストから、前記第２のホストのリンクローカルアドレスに対する近隣要請を受信すると（図２のＳ００６−１）、コントローラ１０に転送する（図２のＳ００６−２）。
【００２５】
コントローラ１０は、ホスト情報記憶部１７を参照して（図２のＳ００７）、前記近隣要請に対して、前記ノード２０に、前記宛先ホストのリンクレイヤアドレスを応答させる（図２のＳ００８−１、Ｓ００８−００２；近隣広告）。
【００２６】
その後、ホストからの宛先ホストのリンクレイヤアドレスを持つユーザパケットが受信されると、ノード１０は、前記フローエントリに従って、パケットを宛先ホストに転送する（図２のＳ００９−１、Ｓ００９−２）。以上により、コントローラ１０は、前記ノードに、異なるサブネットに属するホスト間のパケットを転送させる。
【００２７】
以上のように、本実施形態では、ノード（スイッチ）の構成に変更を加えずに、異なるサブネットに属するホスト間の通信が可能になる。
【００２８】
続いて、本発明をより具体的に説明すべく、本発明の第１の実施形態について図面を参照して詳細に説明する。図３は、本発明の第１の実施形態の構成を表したブロック図である。図３を参照すると、フローテーブル２１と、パケット処理部２２とを備えるノード２０を制御するコントローラ１００の詳細構成が示されている。
【００２９】
コントローラ１００は、経路表を記憶する経路表記憶部１０１と、ルーティングプロトコル処理部１０２と、ノード２０に設定した処理規則（フローエントリ）を格納したフローエントリデータベース（フローエントリＤＢ）１０３と、パケット処理部１０４と、パケット処理部１０４から入力された内容に基づいて、フローエントリを生成するフローエントリ生成部１０５と、前記生成されたフローエントリのフローエントリＤＢ１０３への登録や、ノード２０への設定を行うフローエントリ管理部１０６と、制御メッセージ処理部１０７と、ノード２０との通信を行うノード通信部１０８と、ノード２０に備えられたポートについての情報を記憶するポートデータベース（ポートＤＢ）１０９と、ノード２０にルータ広告処理を行わせるルータ広告処理部１１０と、指定されたノードに対して近隣要請を行ってその結果をホストデータベース（ホストＤＢ）１１２に記憶すると共に、近隣要請を受信した際にホストデータベース（ホストＤＢ）１１２もしくはポートデータベース（ポートＤＢ）１０９を検索し、その検索結果に基づき近隣広告を行う近隣探索処理部１１１と、を備えて構成される。
【００３０】
ルーティングプロトコル処理部１０２は、パケット処理部１０４、制御メッセージ処理部１０７およびノード通信部１０８を介して、ノード２０と、ＯＳＰＦｖ３、ＢＧＰ４＋、ＲＩＰｎｇ（ＲＩＰ  Ｎｅｘｔ  Ｇｅｎｅｒａｔｉｏｎ）等の制御パケットの送受信を行って経路表１４を更新する。
【００３１】
パケット処理部１０４は、ノード通信部１０８および制御メッセージ処理部１０７を介してノードから受信したパケットをルーティングプロトコル処理部１０２、ルータ広告処理部１１０または近隣探索処理部１１１に引き渡し、これら各部から出力されたパケットをノード通信部１０８および制御メッセージ処理部１０７を介してノード２０に出力させる。また、パケット処理部１０４は、受信したユーザパケットを次ホップに転送させるためのフローエントリの作成をフローエントリ生成部１０５に指示する。
【００３２】
ルータ広告処理部１１０は、定期的にノード２０に対しルータ広告の送信を依頼すると共に、ノード２０を介してホストからルータ要請を受信した場合、ポートＤＢ１０９を参照して、ルータ要請を行ったホストが、サブネット越えパケット転送の対象ホストであるか否かを確認した上で、ノード２０を介してルータ広告を行う。
【００３３】
近隣探索処理部１１１は、ノード２０を介して、各ホストのアドレス解決を行って、ホストＤＢ１１２に登録する。また、近隣探索処理部１１１は、ノード２０を介して、近隣要請を受信した際にポートＤＢ１０９およびホストＤＢ１１２を検索し、解決を要請されたアドレスが登録済みの場合、ノード２０を介して隣接広告を行う。さらに、パケット処理部１０４から入力されたパケットのグローバルＩＰアドレスとリンクローカルＩＰアドレスがホストＤＢ１１２に登録済みである場合、近隣探索処理部１１１は、パケット処理部１０４に対し、前記リンクローカルＩＰアドレスに対応するＭＡＣアドレスを宛先とするパケットを転送させるフローエントリの生成を要請するとともに、ノード２０を介して、パケット送信元のホストに、該当リンクローカルＩＰアドレスへのリダイレクトを要求する。
【００３４】
なお、前記ルータ要請、ルータ広告、近隣要請、近隣広告及びリダイレクト要求は、ＩＣＭＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  ＩＰｖ６）として規定されたメッセージを用いることができる。
【００３５】
さらに、制御メッセージ処理部１０７は、ノード２０から受信した制御メッセージを解析して、必要な処理を行うメッセージ解析・処理部１０７１と、ノード２０に送信するメッセージを生成するメッセージ生成部１０７２とを備えて構成される。
【００３６】
なお、図３の構成中、ノード２０に設定したフローエントリを保持する必要が無い場合、フローエントリＤＢ１０３は省略することが可能である。また、ルーティングプロトコル処理部１０２は、経路表記憶部１０１に静的に経路を設定する場合、省略することが可能である。さらに、ポートＤＢ１０９やホストＤＢ１１２は、コントローラ１００からアクセス可能であればよく、別の外部装置に設けることも可能である。
【００３７】
図４は、ポートＤＢ１０９に保持される情報を模式的に表した図である。図４の例では、ノード２０のうち、サブネット越えのパケット転送の対象ホストが接続されているポート＃１、＃１９について、それぞれ対応するプレフィックス、グローバルＩＰアドレス、リンクローカルＩＰアドレス、ＭＡＣアドレスが記憶されている。例えば、あるパケットを受信したノード２０のポート番号が＃１である場合、当該パケットは、サブネット越えのパケット転送の対象ホストから受信したパケットであることが分かるようになっている。そして、ポートＤＢ１０９に保持されている情報を用いてルータ広告や近隣広告処理が行われる。
【００３８】
図５は、ホストＤＢ１１２に保持される情報を模式的に表した図である。図５の例では、近隣検索処理部１１１が収集したサブネット越えのパケット転送の対象ホストについて、それぞれ対応するグローバルＩＰアドレス、ＭＡＣアドレス、リンクローカルＩＰアドレス、（ノード２０の）ポート番号が記憶されている。例えば、ノード２０が受信したユーザパケットの宛先グローバルＩＰアドレスが「２００１：ｄｂ８：２：：８」である場合、近隣検索処理部１１１は、経路表を参照して、ノード２０の宛先ポートから近隣要請メッセージを送出させることにより、宛先ホストから近隣広告メッセージを受信し、そのＭＡＣアドレス「００：００：００：００：０２：０８」を収集する。そして、パケット処理部１０４に対し、該当ＭＡＣアドレス「００：００：００：００：０２：０８」を宛先とするパケットを該当ポート＃１９から転送させるフローエントリの生成を要請するとともに、ノード２０を介して、パケット送信元のホストに、該当リンクローカルＩＰアドレス「ｆｅ８０：：２：８」へのリダイレクトを要求する。
【００３９】
上記のようなコントローラ１００は、非特許文献１、２のオープンフローコントローラに、少なくとも上記経路表記憶部１０１、ルーティングプロトコル処理部１０２、ポートＤＢ１０９、ルータ広告処理部１１０、近隣探索処理部１１１およびホストＤＢ１１２を追加し、パケット処理部１０４に上述した処理を行わせることにより実現することが可能である。
【００４０】
また、上記コントローラ１００の各部（処理手段）は、コントローラ１００を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００４１】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図６は、本発明の第１の実施形態の全体の動作を表したシーケンス図である。以下の説明では、図５に示したように、ノード２０のポート＃１に接続されたホスト（グローバルＩＰアドレス＝２００１：ｄｂ８：１：：８）が、ノード２０のポート＃１９に接続されたホスト（グローバルＩＰアドレス＝２００１：ｄｂ８：２：：８、以下、「宛先ホスト」）に宛ててパケットを送信する例を挙げて、説明する。
【００４２】
図６を参照すると、まず、ホストからノード２０に宛ててルータ要請（Ｒｏｕｔｅｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）が送信される（図６のルータ要請）。前記ルータ要請を受信したノード２０は、フローテーブル２１から、前記ルータ要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ１００に、フローエントリの作成を依頼する（図６のＰａｃｋｅｔ−Ｉｎ（ルータ要請））。
【００４３】
図７は、前記ルータ要請を受信したコントローラ１００の動作を表した流れ図である。図７を参照すると、まず、ノード２０からルータ要請を受信すると、コントローラ１００は、ルータ要請を受信したポートがポートＤＢ１０９に登録されているか否かを確認する（ステップＳ００１）。前記検索の結果、ポートＤＢ１０９に該当するエントリが無い場合、処理を終了する（ステップＳ００２のＮｏ）。
【００４４】
一方、前記検索の結果、該当するエントリが見つかった場合（ステップＳ００２のＹｅｓ）、コントローラ１００は、該当するエントリのプレフィックスと、アドレス情報を読み出し（ステップＳ００３）、これらの情報を用いてノード２０にルータ広告（Ｒｏｕｔｅｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）を送信させる（ステップＳ００４）。例えば、ノード２０のポート＃１からルータ要請を受信している場合は、コントローラ１００は、図４のノード＃１のエントリを読み出し、ノード２０に、プレフィックス「２００１：ｄｂ８：１：：／６４」等を含むルータ広告を送信させる。
【００４５】
この結果、図６に示すように、コントローラ１００からノード２０に対してルータ広告の送信が指示される（図６のＰａｃｋｅｔ−Ｏｕｔ（ルータ広告））。ノード２０は、前記ルータ広告の送信指示に基づいて、ホストに対し、ルータ広告を行う（図６のルータ広告）。
【００４６】
次に、ホストからノード２０に宛てて近隣要請（Ｎｅｉｇｈｂｏｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）が送信される（図６の近隣要請）。前記近隣要請を受信したノード２０は、フローテーブル２１から、前記近隣要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ１００に、フローエントリの作成を依頼する（図６のＰａｃｋｅｔ−Ｉｎ（近隣要請））。
【００４７】
図８は、前記近隣要請を受信したコントローラ１００の動作を表した流れ図である。図８を参照すると、まず、ノード２０から近隣要請を受信すると、コントローラ１００は、近隣要請を受信したポートがポートＤＢ１０９に登録されているか否かを確認する（ステップＳ１０１）。前記検索の結果、ポートＤＢ１０９に該当するエントリが無い場合、処理を終了する（ステップＳ１０２のＮｏ）。
【００４８】
一方、前記検索の結果、該当するエントリが見つかった場合（ステップＳ１０２のＹｅｓ）、コントローラ１００は、該当するエントリのアドレス情報を読み出し（ステップＳ１０３）、近隣要請のターゲットアドレス（ＴＡ）が前記受信ポートのグローバルＩＰアドレスもしくはリンクローカルＩＰアドレスと一致しているか否かを確認する（ステップＳ１０４）。ここで、ターゲットアドレス（ＴＡ）が前記受信ポートのグローバルＩＰアドレスもしくはリンクローカルＩＰアドレスと一致している場合（ステップＳ１０４のＹｅｓ）、コントローラ１００は、ノード２０に、近隣広告（Ｎｅｉｇｈｂｏｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）を送信させる（ステップＳ１１３）。
【００４９】
一方、ターゲットアドレス（ＴＡ）が前記受信ポートのグローバルＩＰアドレスおよびリンクローカルＩＰアドレスのいずれとも一致していない場合（ステップＳ１０４のＮｏ）、コントローラ１００は、ターゲットアドレス（ＴＡ）がリンクローカルアドレスであるか否かを確認する（ステップＳ１０５）。ここで、ターゲットアドレス（ＴＡ）がリンクローカルアドレスでない場合（ステップＳ１０５のＮｏ）、コントローラ１００は、処理を終了する。
【００５０】
一方、ターゲットアドレス（ＴＡ）がリンクローカルアドレスである場合、コントローラ１００は、ホストＤＢ１１２から、当該リンクローカルアドレスを持つエントリを検索する（ステップＳ１０６）。前記検索の結果、ホストＤＢ１１２に該当するエントリが無い場合（ステップＳ１０７のＮｏ）、コントローラ１００は、ノード２０に、全ポートから、当該リンクローカルアドレスをターゲットアドレスとする近隣要請を送信させる（ステップＳ１０８）。前記近隣要請の結果、近隣応答を受信できた場合（ステップＳ１０９のＹｅｓ）、コントローラ１００は、その内容をホストＤＢ１１２に登録する（ステップＳ１１０）。なお、前記近隣要請の結果、近隣応答を受信できなかった場合（ステップＳ１０９のＮｏ）、コントローラ１００は、処理を終了する。
【００５１】
ホストＤＢ１１２に該当リンクローカルアドレスを持つエントリが存在する場合（ステップＳ１０７のＹｅｓ）または上記ステップＳ１０８の近隣要請の結果、該当リンクローカルアドレスを持つホストから応答が得られている場合、コントローラ１００は、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致しているか否かを確認する（ステップＳ１１１）。なお、前記確認の結果、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致する場合（ステップＳ１１１のＹｅｓ）、コントローラ１００は、処理を終了する。
【００５２】
一方、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致していない場合（ステップＳ１１１のＮｏ）、コントローラ１００は、該当エントリのＭＡＣアドレスを読み出し（ステップＳ１１２）、ノード２０に、近隣広告として送信させる（ステップＳ１１３へ）。
【００５３】
この結果、図６に示すように、コントローラ１００からノード２０に対して近隣広告の送信が指示される（図６のＰａｃｋｅｔ−Ｏｕｔ（近隣広告））。ノード２０は、前記近隣広告の送信指示に基づいて、ホストに対し、近隣広告を行う（図６の近隣広告）。
【００５４】
次に、ホストからノード２０に宛てて宛先ホストを宛先とするユーザパケットが送信される（図６のユーザパケット（Ｄａｔａ））。前記ユーザパケットを受信したノード２０は、フローテーブル２１から、前記ユーザパケットに対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ１００に、フローエントリの作成を依頼する（図６のＰａｃｋｅｔ−Ｉｎ（Ｄａｔａ））。
【００５５】
図９は、ユーザパケットを受信したコントローラ１００の動作を表した流れ図である。図９を参照すると、まず、ノード２０からユーザパケットを受信すると、コントローラ１００は、ユーザパケットが自装置のポートアドレス宛てであるか否かを確認する（ステップＳ３０１）。ここで、ユーザパケットがルーティングプロトコル処理部１０２で処理される制御パケットであるなど、自装置のポートアドレス宛てである場合（ステップＳ３０１のＹｅｓ）、コントローラ１００は、終端処理を実行する（ステップＳ３０２）。前記終端処理では、受信した制御パケットを用いた経路表の更新処理等が行われる。
【００５６】
ユーザパケットが自装置のポートアドレス宛てで無い場合（ステップＳ３０１のＮｏ）、コントローラ１００は、次に、ホストＤＢ１１２から、前記ユーザパケットのグローバルＩＰアドレスを持つエントリを検索する（ステップＳ３０３）。
【００５７】
ここで、ホストＤＢ１１２に、前記ユーザパケットのグローバルＩＰアドレスを持つエントリが存在しない場合（ステップＳ３０４のＮｏ）、コントローラ１００は、経路表から、前記グローバルＩＰアドレスを持つエントリを検索する（ステップＳ３０５）。前記検索の結果、経路表に、前記グローバルＩＰアドレスの宛先ポートが登録されていない場合（ステップＳ３０６のＮｏ）、コントローラ１００は、宛先不達(ＩＣＭＰｖ６  Ｕｎｒｅａｃｈａｂｌｅ)メッセージを生成し（ステップＳ３０７）、ノード２０に、ユーザパケットの送信元ホストに対して送信させる（ステップＳ３０８）。
【００５８】
一方、経路表に、前記グローバルＩＰアドレスの宛先ポートが登録されている場合（ステップＳ３０６のＹｅｓ）、コントローラ１００は、ノード２０の当該宛先ポートから該当グローバルＩＰアドレスをターゲットアドレスとする近隣要請メッセージを送信させる（ステップＳ３０９）。
【００５９】
この結果、図６に示すように、コントローラ１００からノード２０に対して、宛先ホスト宛の近隣要請の送信が指示される（図６のＰａｃｋｅｔ−Ｏｕｔ（近隣要請））。ノード２０は、前記近隣広告の送信指示に基づいて、宛先ホストに対し、近隣要請を行う（図６の近隣要請）。
【００６０】
前記近隣要請を受けたホストは、ノード２０に対して、近隣広告を応答する。前記近隣広告を受信したノード２０は、フローテーブル２１から、前記近隣広告に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ１００に、フローエントリの作成を依頼する（図６のＰａｃｋｅｔ−Ｉｎ（近隣広告））。
【００６１】
図１０は、前記近隣広告を受信したコントローラ１００の動作を表した流れ図である。図１０を参照すると、まず、ノード２０から近隣広告を受信すると、コントローラ１００は、ホストＤＢ１１２から該当ＭＡＣアドレスを持つエントリを検索する（ステップＳ２０１）。前記検索の結果、ホストＤＢ１１２に該当するエントリが無い場合（ステップＳ２０２のＮｏ）、コントローラ１００は、ホストＤＢ１１２に当該近隣広告を受けた内容を新規エントリとして登録する（ステップＳ２０４）。また、ホストＤＢ１１２に該当するエントリが存在する場合（ステップＳ２０２のＹｅｓ）、コントローラ１００は、近隣広告の内容に基づいて、ホストＤＢ１１２の該当エントリを更新する（ステップＳ２０３）。
【００６２】
以上のように、コントローラ１００のホストＤＢ１１２の更新が行われる。その後、コントローラは、図６に示すように、ノード２０へのフローエントリの設定（図６のＦｌｏｗＭｏｄ）以下の処理を行う。
【００６３】
具体的には、図９のステップＳ３１２以下の処理が行われる。ホストＤＢ１１２の該当エントリにリンクローカルアドレスが登録されている場合（ステップＳ３１２のＹｅｓ）、コントローラ１００は、前記ステップＳ３０３で検索されたホストＤＢ１１２のエントリまたはステップＳ３１１で登録されたエントリを参照して、宛先ホストへのパケット転送を実現するフローエントリを生成し（ステップ３１３）、ノード２０に設定する（ステップ３１４；Ｆｌｏｗ  Ｍｏｄ（Ａｄｄ））。
【００６４】
その後、コントローラ１００は、ホストに対する前記リンクローカルアドレスへのリダイレクトを要求するメッセージを生成し（ステップＳ３１５）、ノード２０に送信を指示する（ステップＳ３１６；図６のＰａｃｋｅｔ−Ｏｕｔ（リダイレクト要求））。
【００６５】
前記リダイレクト要求の転送指示を受けたノード２０は、図６に示すように、ホストに対して、リダイレクト要求を送信する（図６のリダイレクト要求）。
【００６６】
前記リダイレクト要求を受けたホストは、ノード２０に対して、前記リダイレクト要求にて指定されたリンクローカルアドレスについて近隣要請を送信する（図６の近隣要請）。前記近隣要請を受信したノード２０は、フローテーブル２１から、前記近隣要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ１００に、フローエントリの作成を依頼する（図６のＰａｃｋｅｔ−Ｉｎ（近隣要請））。
【００６７】
前記近隣要請を受信したコントローラは、図８に示した流れ図に従って、ステップＳ１０４からステップＳ１０５、Ｓ１０６、Ｓ１０７、Ｓ１１１、Ｓ１１２へと進み、ノード２０に近隣広告の送信を指示する（図６のＰａｃｋｅｔ−Ｏｕｔ（近隣広告））。
【００６８】
近隣広告の送信指示を受けたノードは、ホストに対し、近隣広告を送信する（図６の近隣広告）。その後、ホストは、ノード２０に対し、前記近隣広告を受けた内容に基づいて、宛先ホストのＭＡＣアドレスが設定されたユーザパケットを送信する。
【００６９】
前記ノード２０は、図９のステップＳ３１４、図６のＦｌｏｗ  Ｍｏｄで設定されたフローエントリに従ってパケットの転送を実施する。
【００７０】
以上のように、ノードの構成を変えることなく、あるホストから送信されたパケットを他のサブネットワークに属する宛先ホストに転送させることが可能となる。  
【００７１】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態に示したノードやそのポートの数は、あくまで、本発明の理解を助けるために示した例であり、これらの数に限定されない。
【００７２】
また例えば、上記した実施形態では、宛先ホストのリンクローカルＩＰアドレスの取得方法については説明を省略したが、例えば、ＤＡＤ（Ｄｕｐｌｉｃａｔｅ  Ａｄｄｒｅｓｓ  Ｄｅｔｅｃｔｉｏｎ）プロセスの中で取得し、ＭＡＣアドレスをキーにグローバルＩＰアドレスとの対応を取るようにすれば良い。また、ホスト間あるいはホストとノード間の近隣要請や近隣広告から取得する方法も採用可能である。
【００７３】
さらには、所定のルールで生成したアドレスを宛先ホストのリンクローカルＩＰアドレスとして、用いることも可能である。この場合、リンクローカルＩＰアドレスの重複は、コントローラ１００の近隣検索処理部がＤＡＤプロセスに反応して近隣広告を行うなどして回避することができる。また、ルーティングプロトコル処理部１０２は、経路表記憶部１０１に静的に経路を設定する場合、省略する構成も採用可能である。
【００７４】
また、上記した実施形態では、コントローラ１００の内部に、経路表記憶部１０１やルーティングプロトコル処理部１０２が配置されているものとして説明したが、コントローラ１０とは別の装置に、経路表記憶部１０１やルーティングプロトコル処理部１０２が設けられている構成も採用可能である。
【００７５】
また、上記した実施形態では、コントローラ１００が１つのノード２０を制御するものとして説明したが、コントローラ１００が複数のノード２０をＩＰｖ６ルータのように動作させることも可能である。この場合、図４のポートＤＢ、および、図５のホストＤＢに、ノードＩＤ（ＤａｔａＰａｔｈＩＤ）を追加することで対応可能である。
【００７６】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点による通信システム参照）
［第２の形態］
第１の形態において、
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記制御装置は、前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する通信システム。
［第３の形態］
第１または第２の形態において、
前記制御装置は、さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む通信システム。
［第４の形態］
第１から第３いずれか一の形態において、
前記近隣探索処理部は、前記第２のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第２のホストに対して、近隣要請を行なって、前記第２のホストのリンクレイヤアドレスを取得する通信システム。
［第５の形態］
第１から第４いずれか一の形態において、
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する通信システム。
［第６の形態］
第１から第４いずれか一の形態において、
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う通信システム。
［第７の形態］
（上記第２の視点による制御装置参照）
［第８の形態］
第７の形態において、
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する制御装置。
［第９の形態］
第７または第８の形態において、
さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む制御装置。
［第１０の形態］
第７から第９いずれか一の形態において、
前記近隣探索処理部は、前記第２のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第２のホストに対して、近隣要請を行なって、前記第２のホストのリンクレイヤアドレスを取得する制御装置。
［第１１の形態］
第７から第１０いずれか一の形態において、
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する制御装置。
［第１２の形態］
第７から第１０いずれか一の形態において、
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う制御装置。
［第１３の形態］
（上記第３の視点によるパケット転送方法参照）
［第１４の形態］
（上記第４の視点によるプログラム参照）
【００７７】
なお、上記第１３、第１４の形態は、上記第１、第７の形態と同様に、派生する形態に展開することが可能である。
【００７８】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲（クレーム）の枠内において、種々の開示要素の多様な組み合せないし選択が可能である。
【符号の説明】
【００７９】
１０、１００  コントローラ
１２、１０５  フローエントリ生成部
１３、１０２  ルーティングプロトコル処理部
１４  経路表
１５、１０４  パケット処理部
１７  ホスト情報記憶部
１８、１１１  近隣探索処理部
２０  ノード
２１  フローテーブル  
２２  パケット処理部
１０１  経路表記憶部
１０３  フローエントリＤＢ
１０６  フローエントリ管理部
１０７  制御メッセージ処理部
１０８  ノード通信部
１０９  ポートＤＢ
１１０  ルータ広告処理部
１１２  ホストＤＢ
１０７１  メッセージ解析・処理部
１０７２  メッセージ生成部
【図１】
0005768600.tif 000002
【図２】
0005768600.tif 000003
【図３】
0005768600.tif 000004
【図４】
0005768600.tif 000005
【図５】
0005768600.tif 000006
【図６】
0005768600.tif 000007
【図７】
0005768600.tif 000008
【図８】
0005768600.tif 000009
【図９】
0005768600.tif 000010
【図１０】
0005768600.tif 000011
【図１１】
0005768600.tif 000012
【図１２】
0005768600.tif 000013