説明

通信システム、制御装置、パケット転送方法およびプログラム

【課題】コストの増大やノード(スイッチ)側の構成変更を伴わずに、異なるサブネット間の通信を可能とする。
【解決手段】制御装置(コントローラ)は、制御対象のノードに接続されたホストの情報を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備える。制御装置は、前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させ、前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システム、制御装置、パケット転送方法およびプログラムに関し、特に、ノードを集中制御する制御装置が設けられている通信システム、その制御装置、パケット転送方法およびプログラムに関する。
【背景技術】
【0002】
近年、オープンフロー(OpenFlow)という技術が提案されている(特許文献1、非特許文献1、2参照)。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献2に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチングルール(ヘッダフィールド)と、フロー統計情報(Counters)と、処理内容を定義したインストラクション(Instructions)と、の組が定義される(図11参照)。
【0003】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチングルール(図11のヘッダフィールド参照)を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報(カウンタ)を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容(指定ポートからのパケット送信、フラッディング、廃棄等)を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対してエントリ設定の要求、即ち、受信パケットの処理内容の決定の要求を送信する。オープンフロースイッチは、要求に対応するフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2008/095010号
【非特許文献】
【0005】
【非特許文献1】Nick McKeownほか7名、“OpenFlow: Enabling Innovation in Campus Networks”、[online]、[平成23(2011)年5月26日検索]、インターネット〈URL: http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献2】“OpenFlow Switch Specification” Version 1.1.0 Implemented (Wire Protocol 0x02) [平成23(2011)年5月26検索]、インターネット〈URL:http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明によって与えられたものである。上記のようなオープンフローを用いたネットワークにおいて、外部ネットワークとの境界やその内部の仮想ノードとして、IPv4(Internet Protocol version 4)ルータやIPv6(Internet Protocol version 6)ルータを配置したいという要請がある。
【0007】
例えば、特定の(オープンフロー)スイッチをIPv6ルータとして動作させる場合、図12に示すように、(オープンフロー)コントローラに、OSPFv3(Open Shortest Path First version 3)、BGP4+(Border Gateway Protocol version 4+)等により動的に更新される経路表を用いてルーティングを行うルータエミュレーション機構を搭載し、(オープンフロー)コントローラ内部で、経路表の更新を行いつつ、ルータ相当の動作を実現するフローエントリを作成することが考えられる。しかしながら、この方法では、コントローラに完全なルータエミュレーション機構を実装する必要があり、その開発コストが高くなってしまうという問題点がある。
【0008】
さらに、上記方式では、オープンフロースイッチの方も、図11のパケットヘッダを用いたルックアップ機能に加えて、IPv6ヘッダに対応させる必要があり、この点でも装置開発、および、装置コストが増大してしまう可能性がある。
【0009】
本発明は、上記した事情に鑑みてなされたものであってその目的とするところは、オープンフローネットワークに接続された異なるサブネットに所属する複数のホストに対し、その実装コストを増大させずに実現できるサブネット間通信機能を提供することにある。
【課題を解決するための手段】
【0010】
本発明の第1の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させ、前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する制御装置を含む通信システムが提供される。
【0011】
本発明の第2の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させ、前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する制御装置が提供される。
【0012】
本発明の第3の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置が、前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させるステップと、前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させるステップと、前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御するステップと、を含む、異なるサブネットに属するホスト間のパケット転送方法が提供される。本方法は、前記ノードを制御する制御装置という、特定の機械に結びつけられている。
【0013】
本発明の第4の視点によれば、制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置を構成するコンピュータに、前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる処理と、前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させる処理と、前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0014】
本発明によれば、コストの増大やノード(スイッチ)側の構成変更を伴わずに、オープンフローネットワークに接続された異なるサブネットに所属する複数のホストに対し、サブネット間通信機能を提供することが可能となる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施形態の概要を説明するための図である。
【図2】本発明の一実施形態の動作概要を説明するためのシーケンス図である。
【図3】本発明の第1の実施形態の構成を表したブロック図である。
【図4】本発明の第1の実施形態のコントローラのポートDBに保持される情報の例である。
【図5】本発明の第1の実施形態のコントローラのホストDBに保持される情報の例である。
【図6】本発明の第1の実施形態の全体の動作を表したシーケンス図である。
【図7】本発明の第1の実施形態のコントローラの動作(ルータ要請受信時)を表した流れ図である。
【図8】本発明の第1の実施形態のコントローラの動作(近隣要請受信時)を表した流れ図である。
【図9】本発明の第1の実施形態のコントローラの動作(ユーザパケット受信時)を表した流れ図である。
【図10】本発明の第1の実施形態のコントローラの動作(近隣広告受信時)を表した流れ図である。
【図11】非特許文献2のフローエントリの構成を表した図である。
【図12】背景技術を説明するための図である。
【発明を実施するための形態】
【0016】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以下の説明における「近隣要請(Neighbor Solicitation)」、「近隣広告(Neighbor Advertisement)」、「ルータ要請(Router Solicitation)」、「ルータ広告(Router Advertisement)」、「リダイレクト(Redirect)」等の用語は、RFC2461に規定されている。
【0017】
本発明は、図1に示すように、フローテーブル21と、パケット処理部22とを備え、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノード20と、前記ノード20からの要求に応じて前記ノード20に前記処理規則(以下、「フローエントリ」)の設定または所定のパケットの送信を指示するコントローラ10(上記「制御装置」に相当。)とを含む構成にて実現できる。より具体的には、コントローラ10は、前記ノード20に接続されたホストのグローバルアドレスと、リンクローカルアドレスと、MAC(Media Access Control)アドレス等のリンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部17と、前記ノード20に、ホストからの近隣要請に応答させる近隣探索処理部18と、を備える。また、コントローラ10は、IPv6ルータにおけるOSPFv3、BGP4+等の処理を行い、経路表14を更新するルーティングプロトコル処理部13を備え、パケット処理部15を介して、ノード20とOSPFv3、BGP4+等の制御パケットの送受信を行って経路表14を更新しているものとする。
【0018】
なお、ノード20は、非特許文献1、2のオープンフロースイッチまたはその互換製品により実現することが可能である。
【0019】
図2は、上記本発明の一実施形態の動作概要を説明するためのシーケンス図である。図2において、ホストと、宛先ホストは、異なるサブネットに属しているものとする。
【0020】
図2を参照すると、まず、ホストから新規に宛先ホスト宛のユーザパケットを受信すると(図2のS001)、ノード20は、フローテーブル21から、受信したユーザパケットに適合する照合規則(マッチングルール)を持つフローエントリを検索する。
【0021】
ここでは、ホストから受信したパケットは、新規のユーザパケットであるため、ノード20のフローテーブル21には、受信パケットに適合するフローエントリは存在しない。そこで、ノード20は、コントローラ10に対して、受信パケットに適合するフローエントリの設定を要求する(図2のPacket−In;S002)。
【0022】
前記Packet−Inを受信したコントローラ10は、ホスト情報記憶部17を参照して(図2のS003)、ノードに、宛先ホストのリンクレイヤアドレスが設定されたパケットを、宛先ホストへ転送させるフローエントリを設定する(図2のS004)。
【0023】
コントローラ10は、ホスト情報記憶部17を参照して、ノード20から、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる(図2のS005−1、S005−2)。
【0024】
前記ノード20は、前記リダイレクト要請を受信したホストから、前記第2のホストのリンクローカルアドレスに対する近隣要請を受信すると(図2のS006−1)、コントローラ10に転送する(図2のS006−2)。
【0025】
コントローラ10は、ホスト情報記憶部17を参照して(図2のS007)、前記近隣要請に対して、前記ノード20に、前記宛先ホストのリンクレイヤアドレスを応答させる(図2のS008−1、S008−002;近隣広告)。
【0026】
その後、ホストからの宛先ホストのリンクレイヤアドレスを持つユーザパケットが受信されると、ノード10は、前記フローエントリに従って、パケットを宛先ホストに転送する(図2のS009−1、S009−2)。以上により、コントローラ10は、前記ノードに、異なるサブネットに属するホスト間のパケットを転送させる。
【0027】
以上のように、本実施形態では、ノード(スイッチ)の構成に変更を加えずに、異なるサブネットに属するホスト間の通信が可能になる。
【0028】
続いて、本発明をより具体的に説明すべく、本発明の第1の実施形態について図面を参照して詳細に説明する。図3は、本発明の第1の実施形態の構成を表したブロック図である。図3を参照すると、フローテーブル21と、パケット処理部22とを備えるノード20を制御するコントローラ100の詳細構成が示されている。
【0029】
コントローラ100は、経路表を記憶する経路表記憶部101と、ルーティングプロトコル処理部102と、ノード20に設定した処理規則(フローエントリ)を格納したフローエントリデータベース(フローエントリDB)103と、パケット処理部104と、パケット処理部104から入力された内容に基づいて、フローエントリを生成するフローエントリ生成部105と、前記生成されたフローエントリのフローエントリDB103への登録や、ノード20への設定を行うフローエントリ管理部106と、制御メッセージ処理部107と、ノード20との通信を行うノード通信部108と、ノード20に備えられたポートについての情報を記憶するポートデータベース(ポートDB)109と、ノード20にルータ広告処理を行わせるルータ広告処理部110と、指定されたノードに対して近隣要請を行ってその結果をホストデータベース(ホストDB)112に記憶すると共に、近隣要請を受信した際にホストデータベース(ホストDB)112もしくはポートデータベース(ポートDB)109を検索し、その検索結果に基づき近隣広告を行う近隣探索処理部111と、を備えて構成される。
【0030】
ルーティングプロトコル処理部102は、パケット処理部104、制御メッセージ処理部107およびノード通信部108を介して、ノード20と、OSPFv3、BGP4+、RIPng(RIP Next Generation)等の制御パケットの送受信を行って経路表14を更新する。
【0031】
パケット処理部104は、ノード通信部108および制御メッセージ処理部107を介してノードから受信したパケットをルーティングプロトコル処理部102、ルータ広告処理部110または近隣探索処理部111に引き渡し、これら各部から出力されたパケットをノード通信部108および制御メッセージ処理部107を介してノード20に出力させる。また、パケット処理部104は、受信したユーザパケットを次ホップに転送させるためのフローエントリの作成をフローエントリ生成部105に指示する。
【0032】
ルータ広告処理部110は、定期的にノード20に対しルータ広告の送信を依頼すると共に、ノード20を介してホストからルータ要請を受信した場合、ポートDB109を参照して、ルータ要請を行ったホストが、サブネット越えパケット転送の対象ホストであるか否かを確認した上で、ノード20を介してルータ広告を行う。
【0033】
近隣探索処理部111は、ノード20を介して、各ホストのアドレス解決を行って、ホストDB112に登録する。また、近隣探索処理部111は、ノード20を介して、近隣要請を受信した際にポートDB109およびホストDB112を検索し、解決を要請されたアドレスが登録済みの場合、ノード20を介して隣接広告を行う。さらに、パケット処理部104から入力されたパケットのグローバルIPアドレスとリンクローカルIPアドレスがホストDB112に登録済みである場合、近隣探索処理部111は、パケット処理部104に対し、前記リンクローカルIPアドレスに対応するMACアドレスを宛先とするパケットを転送させるフローエントリの生成を要請するとともに、ノード20を介して、パケット送信元のホストに、該当リンクローカルIPアドレスへのリダイレクトを要求する。
【0034】
なお、前記ルータ要請、ルータ広告、近隣要請、近隣広告及びリダイレクト要求は、ICMPv6(Internet Control Message Protocol for IPv6)として規定されたメッセージを用いることができる。
【0035】
さらに、制御メッセージ処理部107は、ノード20から受信した制御メッセージを解析して、必要な処理を行うメッセージ解析・処理部1071と、ノード20に送信するメッセージを生成するメッセージ生成部1072とを備えて構成される。
【0036】
なお、図3の構成中、ノード20に設定したフローエントリを保持する必要が無い場合、フローエントリDB103は省略することが可能である。また、ルーティングプロトコル処理部102は、経路表記憶部101に静的に経路を設定する場合、省略することが可能である。さらに、ポートDB109やホストDB112は、コントローラ100からアクセス可能であればよく、別の外部装置に設けることも可能である。
【0037】
図4は、ポートDB109に保持される情報を模式的に表した図である。図4の例では、ノード20のうち、サブネット越えのパケット転送の対象ホストが接続されているポート#1、#19について、それぞれ対応するプレフィックス、グローバルIPアドレス、リンクローカルIPアドレス、MACアドレスが記憶されている。例えば、あるパケットを受信したノード20のポート番号が#1である場合、当該パケットは、サブネット越えのパケット転送の対象ホストから受信したパケットであることが分かるようになっている。そして、ポートDB109に保持されている情報を用いてルータ広告や近隣広告処理が行われる。
【0038】
図5は、ホストDB112に保持される情報を模式的に表した図である。図5の例では、近隣検索処理部111が収集したサブネット越えのパケット転送の対象ホストについて、それぞれ対応するグローバルIPアドレス、MACアドレス、リンクローカルIPアドレス、(ノード20の)ポート番号が記憶されている。例えば、ノード20が受信したユーザパケットの宛先グローバルIPアドレスが「2001:db8:2::8」である場合、近隣検索処理部111は、経路表を参照して、ノード20の宛先ポートから近隣要請メッセージを送出させることにより、宛先ホストから近隣広告メッセージを受信し、そのMACアドレス「00:00:00:00:02:08」を収集する。そして、パケット処理部104に対し、該当MACアドレス「00:00:00:00:02:08」を宛先とするパケットを該当ポート#19から転送させるフローエントリの生成を要請するとともに、ノード20を介して、パケット送信元のホストに、該当リンクローカルIPアドレス「fe80::2:8」へのリダイレクトを要求する。
【0039】
上記のようなコントローラ100は、非特許文献1、2のオープンフローコントローラに、少なくとも上記経路表記憶部101、ルーティングプロトコル処理部102、ポートDB109、ルータ広告処理部110、近隣探索処理部111およびホストDB112を追加し、パケット処理部104に上述した処理を行わせることにより実現することが可能である。
【0040】
また、上記コントローラ100の各部(処理手段)は、コントローラ100を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【0041】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図6は、本発明の第1の実施形態の全体の動作を表したシーケンス図である。以下の説明では、図5に示したように、ノード20のポート#1に接続されたホスト(グローバルIPアドレス=2001:db8:1::8)が、ノード20のポート#19に接続されたホスト(グローバルIPアドレス=2001:db8:2::8、以下、「宛先ホスト」)に宛ててパケットを送信する例を挙げて、説明する。
【0042】
図6を参照すると、まず、ホストからノード20に宛ててルータ要請(Router Solicitation)が送信される(図6のルータ要請)。前記ルータ要請を受信したノード20は、フローテーブル21から、前記ルータ要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ100に、フローエントリの作成を依頼する(図6のPacket−In(ルータ要請))。
【0043】
図7は、前記ルータ要請を受信したコントローラ100の動作を表した流れ図である。図7を参照すると、まず、ノード20からルータ要請を受信すると、コントローラ100は、ルータ要請を受信したポートがポートDB109に登録されているか否かを確認する(ステップS001)。前記検索の結果、ポートDB109に該当するエントリが無い場合、処理を終了する(ステップS002のNo)。
【0044】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS002のYes)、コントローラ100は、該当するエントリのプレフィックスと、アドレス情報を読み出し(ステップS003)、これらの情報を用いてノード20にルータ広告(Router Advertisement)を送信させる(ステップS004)。例えば、ノード20のポート#1からルータ要請を受信している場合は、コントローラ100は、図4のノード#1のエントリを読み出し、ノード20に、プレフィックス「2001:db8:1::/64」等を含むルータ広告を送信させる。
【0045】
この結果、図6に示すように、コントローラ100からノード20に対してルータ広告の送信が指示される(図6のPacket−Out(ルータ広告))。ノード20は、前記ルータ広告の送信指示に基づいて、ホストに対し、ルータ広告を行う(図6のルータ広告)。
【0046】
次に、ホストからノード20に宛てて近隣要請(Neighbor Solicitation)が送信される(図6の近隣要請)。前記近隣要請を受信したノード20は、フローテーブル21から、前記近隣要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ100に、フローエントリの作成を依頼する(図6のPacket−In(近隣要請))。
【0047】
図8は、前記近隣要請を受信したコントローラ100の動作を表した流れ図である。図8を参照すると、まず、ノード20から近隣要請を受信すると、コントローラ100は、近隣要請を受信したポートがポートDB109に登録されているか否かを確認する(ステップS101)。前記検索の結果、ポートDB109に該当するエントリが無い場合、処理を終了する(ステップS102のNo)。
【0048】
一方、前記検索の結果、該当するエントリが見つかった場合(ステップS102のYes)、コントローラ100は、該当するエントリのアドレス情報を読み出し(ステップS103)、近隣要請のターゲットアドレス(TA)が前記受信ポートのグローバルIPアドレスもしくはリンクローカルIPアドレスと一致しているか否かを確認する(ステップS104)。ここで、ターゲットアドレス(TA)が前記受信ポートのグローバルIPアドレスもしくはリンクローカルIPアドレスと一致している場合(ステップS104のYes)、コントローラ100は、ノード20に、近隣広告(Neighbor Advertisement)を送信させる(ステップS113)。
【0049】
一方、ターゲットアドレス(TA)が前記受信ポートのグローバルIPアドレスおよびリンクローカルIPアドレスのいずれとも一致していない場合(ステップS104のNo)、コントローラ100は、ターゲットアドレス(TA)がリンクローカルアドレスであるか否かを確認する(ステップS105)。ここで、ターゲットアドレス(TA)がリンクローカルアドレスでない場合(ステップS105のNo)、コントローラ100は、処理を終了する。
【0050】
一方、ターゲットアドレス(TA)がリンクローカルアドレスである場合、コントローラ100は、ホストDB112から、当該リンクローカルアドレスを持つエントリを検索する(ステップS106)。前記検索の結果、ホストDB112に該当するエントリが無い場合(ステップS107のNo)、コントローラ100は、ノード20に、全ポートから、当該リンクローカルアドレスをターゲットアドレスとする近隣要請を送信させる(ステップS108)。前記近隣要請の結果、近隣応答を受信できた場合(ステップS109のYes)、コントローラ100は、その内容をホストDB112に登録する(ステップS110)。なお、前記近隣要請の結果、近隣応答を受信できなかった場合(ステップS109のNo)、コントローラ100は、処理を終了する。
【0051】
ホストDB112に該当リンクローカルアドレスを持つエントリが存在する場合(ステップS107のYes)または上記ステップS108の近隣要請の結果、該当リンクローカルアドレスを持つホストから応答が得られている場合、コントローラ100は、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致しているか否かを確認する(ステップS111)。なお、前記確認の結果、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致する場合(ステップS111のYes)、コントローラ100は、処理を終了する。
【0052】
一方、該当エントリの登録ポート番号が、近隣要請の受信ポートと番号と一致していない場合(ステップS111のNo)、コントローラ100は、該当エントリのMACアドレスを読み出し(ステップS112)、ノード20に、近隣広告として送信させる(ステップS113へ)。
【0053】
この結果、図6に示すように、コントローラ100からノード20に対して近隣広告の送信が指示される(図6のPacket−Out(近隣広告))。ノード20は、前記近隣広告の送信指示に基づいて、ホストに対し、近隣広告を行う(図6の近隣広告)。
【0054】
次に、ホストからノード20に宛てて宛先ホストを宛先とするユーザパケットが送信される(図6のユーザパケット(Data))。前記ユーザパケットを受信したノード20は、フローテーブル21から、前記ユーザパケットに対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ100に、フローエントリの作成を依頼する(図6のPacket−In(Data))。
【0055】
図9は、ユーザパケットを受信したコントローラ100の動作を表した流れ図である。図9を参照すると、まず、ノード20からユーザパケットを受信すると、コントローラ100は、ユーザパケットが自装置のポートアドレス宛てであるか否かを確認する(ステップS301)。ここで、ユーザパケットがルーティングプロトコル処理部102で処理される制御パケットであるなど、自装置のポートアドレス宛てである場合(ステップS301のYes)、コントローラ100は、終端処理を実行する(ステップS302)。前記終端処理では、受信した制御パケットを用いた経路表の更新処理等が行われる。
【0056】
ユーザパケットが自装置のポートアドレス宛てで無い場合(ステップS301のNo)、コントローラ100は、次に、ホストDB112から、前記ユーザパケットのグローバルIPアドレスを持つエントリを検索する(ステップS303)。
【0057】
ここで、ホストDB112に、前記ユーザパケットのグローバルIPアドレスを持つエントリが存在しない場合(ステップS304のNo)、コントローラ100は、経路表から、前記グローバルIPアドレスを持つエントリを検索する(ステップS305)。前記検索の結果、経路表に、前記グローバルIPアドレスの宛先ポートが登録されていない場合(ステップS306のNo)、コントローラ100は、宛先不達(ICMPv6 Unreachable)メッセージを生成し(ステップS307)、ノード20に、ユーザパケットの送信元ホストに対して送信させる(ステップS308)。
【0058】
一方、経路表に、前記グローバルIPアドレスの宛先ポートが登録されている場合(ステップS306のYes)、コントローラ100は、ノード20の当該宛先ポートから該当グローバルIPアドレスをターゲットアドレスとする近隣要請メッセージを送信させる(ステップS309)。
【0059】
この結果、図6に示すように、コントローラ100からノード20に対して、宛先ホスト宛の近隣要請の送信が指示される(図6のPacket−Out(近隣要請))。ノード20は、前記近隣広告の送信指示に基づいて、宛先ホストに対し、近隣要請を行う(図6の近隣要請)。
【0060】
前記近隣要請を受けたホストは、ノード20に対して、近隣広告を応答する。前記近隣広告を受信したノード20は、フローテーブル21から、前記近隣広告に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ100に、フローエントリの作成を依頼する(図6のPacket−In(近隣広告))。
【0061】
図10は、前記近隣広告を受信したコントローラ100の動作を表した流れ図である。図10を参照すると、まず、ノード20から近隣広告を受信すると、コントローラ100は、ホストDB112から該当MACアドレスを持つエントリを検索する(ステップS201)。前記検索の結果、ホストDB112に該当するエントリが無い場合(ステップS202のNo)、コントローラ100は、ホストDB112に当該近隣広告を受けた内容を新規エントリとして登録する(ステップS204)。また、ホストDB112に該当するエントリが存在する場合(ステップS202のYes)、コントローラ100は、近隣広告の内容に基づいて、ホストDB112の該当エントリを更新する(ステップS203)。
【0062】
以上のように、コントローラ100のホストDB112の更新が行われる。その後、コントローラは、図6に示すように、ノード20へのフローエントリの設定(図6のFlowMod)以下の処理を行う。
【0063】
具体的には、図9のステップS312以下の処理が行われる。ホストDB112の該当エントリにリンクローカルアドレスが登録されている場合(ステップS312のYes)、コントローラ100は、前記ステップS303で検索されたホストDB112のエントリまたはステップS311で登録されたエントリを参照して、宛先ホストへのパケット転送を実現するフローエントリを生成し(ステップ313)、ノード20に設定する(ステップ314;Flow Mod(Add))。
【0064】
その後、コントローラ100は、ホストに対する前記リンクローカルアドレスへのリダイレクトを要求するメッセージを生成し(ステップS315)、ノード20に送信を指示する(ステップS316;図6のPacket−Out(リダイレクト要求))。
【0065】
前記リダイレクト要求の転送指示を受けたノード20は、図6に示すように、ホストに対して、リダイレクト要求を送信する(図6のリダイレクト要求)。
【0066】
前記リダイレクト要求を受けたホストは、ノード20に対して、前記リダイレクト要求にて指定されたリンクローカルアドレスについて近隣要請を送信する(図6の近隣要請)。前記近隣要請を受信したノード20は、フローテーブル21から、前記近隣要請に対応するフローエントリを検索するが、該当するフローエントリが見つからないため、コントローラ100に、フローエントリの作成を依頼する(図6のPacket−In(近隣要請))。
【0067】
前記近隣要請を受信したコントローラは、図8に示した流れ図に従って、ステップS104からステップS105、S106、S107、S111、S112へと進み、ノード20に近隣広告の送信を指示する(図6のPacket−Out(近隣広告))。
【0068】
近隣広告の送信指示を受けたノードは、ホストに対し、近隣広告を送信する(図6の近隣広告)。その後、ホストは、ノード20に対し、前記近隣広告を受けた内容に基づいて、宛先ホストのMACアドレスが設定されたユーザパケットを送信する。
【0069】
前記ノード20は、図9のステップS314、図6のFlow Modで設定されたフローエントリに従ってパケットの転送を実施する。
【0070】
以上のように、ノードの構成を変えることなく、あるホストから送信されたパケットを他のサブネットワークに属する宛先ホストに転送させることが可能となる。
【0071】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態に示したノードやそのポートの数は、あくまで、本発明の理解を助けるために示した例であり、これらの数に限定されない。
【0072】
また例えば、上記した実施形態では、宛先ホストのリンクローカルIPアドレスの取得方法については説明を省略したが、例えば、DAD(Duplicate Address Detection)プロセスの中で取得し、MACアドレスをキーにグローバルIPアドレスとの対応を取るようにすれば良い。また、ホスト間あるいはホストとノード間の近隣要請や近隣広告から取得する方法も採用可能である。
【0073】
さらには、所定のルールで生成したアドレスを宛先ホストのリンクローカルIPアドレスとして、用いることも可能である。この場合、リンクローカルIPアドレスの重複は、コントローラ100の近隣検索処理部がDADプロセスに反応して近隣広告を行うなどして回避することができる。また、ルーティングプロトコル処理部102は、経路表記憶部101に静的に経路を設定する場合、省略する構成も採用可能である。
【0074】
また、上記した実施形態では、コントローラ100の内部に、経路表記憶部101やルーティングプロトコル処理部102が配置されているものとして説明したが、コントローラ10とは別の装置に、経路表記憶部101やルーティングプロトコル処理部102が設けられている構成も採用可能である。
【0075】
また、上記した実施形態では、コントローラ100が1つのノード20を制御するものとして説明したが、コントローラ100が複数のノード20をIPv6ルータのように動作させることも可能である。この場合、図4のポートDB、および、図5のホストDBに、ノードID(DataPathID)を追加することで対応可能である。
【0076】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による通信システム参照)
[第2の形態]
第1の形態において、
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記制御装置は、前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する通信システム。
[第3の形態]
第1または第2の形態において、
前記制御装置は、さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む通信システム。
[第4の形態]
第1から第3いずれか一の形態において、
前記近隣探索処理部は、前記第2のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第2のホストに対して、近隣要請を行なって、前記第2のホストのリンクレイヤアドレスを取得する通信システム。
[第5の形態]
第1から第4いずれか一の形態において、
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する通信システム。
[第6の形態]
第1から第4いずれか一の形態において、
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う通信システム。
[第7の形態]
(上記第2の視点による制御装置参照)
[第8の形態]
第7の形態において、
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する制御装置。
[第9の形態]
第7または第8の形態において、
さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む制御装置。
[第10の形態]
第7から第9いずれか一の形態において、
前記近隣探索処理部は、前記第2のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第2のホストに対して、近隣要請を行なって、前記第2のホストのリンクレイヤアドレスを取得する制御装置。
[第11の形態]
第7から第10いずれか一の形態において、
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する制御装置。
[第12の形態]
第7から第10いずれか一の形態において、
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う制御装置。
[第13の形態]
(上記第3の視点によるパケット転送方法参照)
[第14の形態]
(上記第4の視点によるプログラム参照)
【0077】
なお、上記第13、第14の形態は、上記第1、第7の形態と同様に、派生する形態に展開することが可能である。
【0078】
本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲(クレーム)の枠内において、種々の開示要素の多様な組み合せないし選択が可能である。
【符号の説明】
【0079】
10、100 コントローラ
12、105 フローエントリ生成部
13、102 ルーティングプロトコル処理部
14 経路表
15、104 パケット処理部
17 ホスト情報記憶部
18、111 近隣探索処理部
20 ノード
21 フローテーブル
22 パケット処理部
101 経路表記憶部
103 フローエントリDB
106 フローエントリ管理部
107 制御メッセージ処理部
108 ノード通信部
109 ポートDB
110 ルータ広告処理部
112 ホストDB
1071 メッセージ解析・処理部
1072 メッセージ生成部

【特許請求の範囲】
【請求項1】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、
前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、
前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させ、
前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する制御装置を含む通信システム。
【請求項2】
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記制御装置は、前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する請求項1の通信システム。
【請求項3】
前記制御装置は、さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む請求項1または2の通信システム。
【請求項4】
前記近隣探索処理部は、前記第2のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第2のホストに対して、近隣要請を行なって、前記第2のホストのリンクレイヤアドレスを取得する請求項1から3いずれか一の通信システム。
【請求項5】
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する請求項1から4いずれか一の通信システム。
【請求項6】
前記制御装置は、さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う請求項1から4いずれか一の通信システム。
【請求項7】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備え、
前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させ、
前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させ、
前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する制御装置。
【請求項8】
前記ノードは、受信パケットと照合する照合規則と、前記照合規則に適合するパケットに適用する処理内容とを含む処理規則に従って動作するノードであり、
前記ノードに前記処理規則を設定し、または、前記ノードに所定のパケットを送信させることにより、前記ノードを制御する請求項7の制御装置。
【請求項9】
さらに、
前記ノードによって接続された異なるサブネット間を接続する通信装置として前記所定の経路表を更新するルーティングプロトコル処理部を含む請求項7または8の制御装置。
【請求項10】
前記近隣探索処理部は、前記第2のホストのリンクレイヤアドレスが前記ホスト情報記憶部に登録されていない場合、前記第2のホストに対して、近隣要請を行なって、前記第2のホストのリンクレイヤアドレスを取得する請求項7から9いずれか一の制御装置。
【請求項11】
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に登録されているポートから転送された近隣要請に応答する請求項7から10いずれか一の制御装置。
【請求項12】
さらに、
前記ノードのポートのうち、前記サブネット間のパケット転送の対象となるホストが接続されたポートについて、サブネット情報を管理するポート情報記憶部を備え、
前記ポート情報記憶部に保持されている情報を用いて、ルータ広告を行う請求項7から10いずれか一の制御装置。
【請求項13】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置が、
前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させるステップと、
前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させるステップと、
前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御するステップと、
を含む、異なるサブネットに属するホスト間のパケット転送方法。
【請求項14】
制御対象のノードに接続されたホストのグローバルアドレスと、リンクローカルアドレスと、リンクレイヤアドレスとの対応関係を記憶するホスト情報記憶部と、
前記ノードに、前記ホストからの近隣要請に対して応答させる近隣探索処理部と、を備えた制御装置を構成するコンピュータに、
前記ノードが第1のホストから所定の経路表に登録された第2のホスト宛てのパケットを受信した際に、前記ノードから、前記第1のホストに対し、前記第2のホストのリンクローカルアドレスを含んだリダイレクト要請を送信させる処理と、
前記第1のホストからの前記第2のホストのリンクローカルアドレスに対する近隣要請に対して、前記ノードに、前記第2のホストのリンクレイヤアドレスを応答させる処理と、
前記第2のホストのリンクレイヤアドレスが設定されたパケットを前記第2のホストに転送するよう前記ノードを制御する処理と、
を実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2013−48364(P2013−48364A)
【公開日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願番号】特願2011−186095(P2011−186095)
【出願日】平成23年8月29日(2011.8.29)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】