以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明の通信システムの構成例を示すブロック図である。図1では、通信システム1がルータである場合を例にして説明する。以下、通信システム1をルータ1と記す場合がある。ルータ1は、ユーザが使用する端末装置20から受信したパケットをサーバ(図示略。)に送信する等のパケットの中継処理を行う。
ルータ1は、通信部12と、制御部11と、複数の通信インタフェース10a,10bとを備える。なお、個々の通信インタフェース10a,10bを区別しない場合には、通信インタフェース10と記す。また、図1では、2つの通信インタフェース10a,10bを図示しているが、通信インタフェース10の数は2つに限定されず、3つ以上であってもよい。
個々の通信インタフェース10a,10bは、互いに異なる無線通信ネットワークに対応している。例えば、通信インタフェース10aは、UTRAN(Universal Terrestrial Radio Access Network)の無線通信ネットワークに対応し、通信インタフェース10bは、WiMAX(Worldwide Interoperability for Microwave Access 、登録商標)の無線通信ネットワークに対応する。ただし、UTRANやWiMAXは例示であり、LTE(Long Term Evolution )等の他の規格の無線通信ネットワークに対応する通信インタフェース10が設けられていてもよい。
通信部12は、端末装置20から受信したパケットをサーバ(図示略。)に転送する。同様に、通信部12は、サーバから受信したパケットも端末装置20に転送するが、ここでは、端末装置20から受信したパケットをサーバに転送する時の動作を中心に説明する。
制御部11は、通信部12を制御する。例えば、制御部11は、オープンフローに従って通信部12を制御してもよい。例えば、通信部12は、フローエントリに合致しないパケットを受信した場合、そのパケットを制御部11に送り、そのパケットに対応するフローのフローエントリの生成を制御部11に要求し、制御部11は、要求に応じて生成したフローエントリを通信部12に設定し、通信部12にパケットを返す。通信部12は、そのフローエントリに従って、そのフローのパケットに対する処理を実行してもよい。この場合、通信部12は、オープンフローにおけるスイッチに相当し、制御部11は、オープンフローにおける制御装置に相当する。また、フローエントリは、通信部12の動作を規定したルールであるということができる。
制御部11は、端末装置20の通信のフローに関して、通信部12が少なくとも2つ以上の通信インタフェースからパケットを出力するように、通信部12を制御する。
なお、制御部11および通信部12は、例えば、通信プログラムに従って動作するコンピュータのCPUによって実現される。この場合、例えば、コンピュータのプログラム記憶装置等のプログラム記録媒体に通信プログラムを記憶させておく。そして、CPUがその通信プログラムを読み込み、通信プログラムに従って制御部11および通信部12として動作すればよい。
また、制御部11および通信部12が別々のハードウェアで実現されていてもよい。後述するように、制御部11がルータ1の外部に設けられている構成であってもよい。
図2は、通信部12が複数の通信インタフェース10からパケットを出力する例を示す模式図である。図2に示す例では、通信部12は、通信インタフェース10aからパケットを出力するとともに(ステップS1)、通信インタフェース10bからもパケットを出力する(ステップS2)。通信インタフェース10aから出力されたパケットは、例えば、UTRANの無線通信ネットワークを介して宛先(サーバ)に到達する。また、通信インタフェース10bから出力されたパケットは、例えば、WiMAXの無線通信ネットワークを介して宛先(サーバ)に到達する。
従って、ルータ1は、複数の無線通信ネットワークを同時に利用できる。そして、その結果、本発明によれば、複数の無線通信ネットワークを有効に利用できる。
一般的な通信装置では、1つの無線通信ネットワークを選択した場合、その無線通信ネットワークだけを用いて通信を行い、他の無線通信ネットワークを利用しない。これに対して、本実施形態では、ルータ1は、上記のように、複数の無線通信ネットワークを有効に利用できる。
図2に示す例において、通信インタフェース10a,10bから出力されるパケットは、同一フローのパケットであってもよく、あるいは、異なるフローのパケットであってもよい。また、端末装置20は、複数台存在していてもよい。制御部11がどのようなルール(フローエントリ)を生成するかに関しては、予め定められている。制御部11が通信部12を制御する具体的な態様については、後述の各実施形態で説明する。
次に、制御部11の配置の他の例について説明する。図3は、制御部11がルータ1の外部に設けられた構成例を示すブロック図である。図3に示すように、制御部11がルータ1の外部に設けられている構成であってもよい。図3に示す構成例では、制御部11は、例えば、データセンタ(図示略。)に配置される。ただし、図3に示す構成例では、通信部12と、制御部11とが通信を行う必要がある。ここで、通信部12と制御部11との通信が断となると、通信部12は、制御部11からの制御を受けられなくなってしまう。そのため、制御部11がルータ1に設けられる構成が好ましい。
また、図4は、ルータ1内の制御部11とは別に、ルータ1の外部に制御装置15を設けた構成例を示すブロック図である。図4に示すように、制御部11とは別にルータ1の外部に制御装置15が設けられていてもよい。制御装置15は、例えば、データセンタ(図示略。)に配置される。制御装置15は、制御部11がどのようなルール(フローエントリ)を生成すべきかを定めた情報(以下、この情報をルール生成情報と記す。)をルータ1内の制御部11に送信する。制御部11は、そのルール生成情報を受信し、ルール生成情報に基づいて、通信部12の動作を規定したルール(フローエントリ)を生成する。図4に示す構成によれば、一旦、制御装置15がルール生成情報を制御部11に送信すれば、その後、制御装置15と制御部11との通信が断となったとしても、制御部11は、フローエントリを生成することができる。なお、制御部11は、一部のフローエントリに関しては、ルール生成情報に依存せずに生成してもよい。
実施形態2.
図5は、本発明の第2の実施形態の通信システムの構成例を示すブロック図である。第1の実施形態における構成要素と同様の構成要素については、図1や図4と同一の符号を付し、詳細な説明を省略する。図5では、ルータ1が3つの通信インタフェース10a,10b,10cを備えている場合を例示しているが、通信インタフェース10の数は、2つであってもよく、あるいは、4つ以上であってもよい。本実施形態では、通信インタフェース10aがUTRANの無線通信ネットワークに対応し、通信インタフェース10aがWiMAXの無線通信ネットワークに対応し、通信インタフェース10cがLTEの無線通信ネットワークに対応している場合を例にして説明する。
また、図5では、3台の端末装置20a,20b,20cを図示しているが、端末装置20の台数は特に限定されない。なお、個々の端末装置20a〜20cを区別しない場合には、端末装置20と記す。
また、制御装置15は、制御部11がどのようなルール(フローエントリ)を生成すべきかを定めたルール生成情報を予め制御部11に送信し、制御部11はそのルール生成情報を受信する。そして、制御部11は、ルール生成情報に基づいてフローエントリを生成する。
なお、制御部11がどのようなルール(フローエントリ)を生成するかに関して、ルータ1の管理者が直接、制御部11に設定する態様であってもよい。この場合、制御装置15が設けられていなくてもよい。また、制御部11が、ルータ1の外部に設けられていてもよい。これらの点は、後述の第3の実施形態や第4の実施形態でも同様である。
通信部12は、フローエントリに合致しないパケット(すなわち、新たに発生したフローのパケット)をいずれかの端末装置20から受信した場合、そのパケットを制御部11に送り、そのパケットに対応する新たなフローのフローエントリの生成を制御部11に要求する。
制御部11は、その要求を通信部12から受けると、その新たなフローのパケットの出力先となる通信インタフェース10を決定する。そして、制御部11は、通信部12から送られたパケットのヘッダから定まるフローの識別情報を条件とし、決定した通信インタフェース10からパケットを出力することをアクションとして定めたフローエントリを生成し、通信部12にそのフローエントリを設定する。
制御部11は、例えば、ラウンドロビン方式を採用して、新たなフローのパケットの出力先となる通信インタフェース10を決定してもよい。例えば、制御部11は、新しいフローが発生する毎に、その新たなフローのパケットの出力先となる通信インタフェース10を、通信インタフェース10a、通信インタフェース10b、通信インタフェース10c、通信インタフェース10a、通信インタフェース10b、通信インタフェース10c、・・・の順に規則的に決定してもよい。以下の説明では、説明を簡単にするために、制御部11が、ラウンドロビン方式を採用して、フロー毎に、パケットの出力先となる通信インタフェース10を順番に割り当てる場合を例にして説明する。ただし、後述するように、制御部11は、ラウンドロビン方式以外の方法で、パケットの出力先となる通信インタフェース10を決定してもよい。
なお、フローのパケットの出力先となる通信インタフェース10を定めるということは、そのフローとその通信インタフェース10とを対応づけていることであると言うことができる。
図6は、第2の実施形態におけるルータ1の処理経過の例を示すフローチャートである。通信部12は、端末装置20からパケットを受信すると、そのパケットに合致するフローエントリが通信部12に設定されているか否かを判定する(ステップS11)。具体的には、通信部12は、受信したパケットのヘッダから特定されるフローの識別情報に合致するフローエントリが通信部12に設定されているか否かを判定する。
受信したパケットに合致するフローエントリが設定されていないということは、新たなフローが生じたことを意味する。この場合(ステップS11のNo)、通信部12は、そのパケットを制御部11に送り、その新たなフローに対するフローエントリの生成を要求する(ステップS12)。
すると、制御部11は、その新たなフローのパケットの出力先となる通信インタフェース10を決定する。本例では、制御部11は、ラウンドロビン方式によってフロー毎に通信インタフェース10を決定する。従って、前回のステップS13で、パケット出力先として通信インタフェース10aを決定していた場合、制御部11は、今回のステップS13では、パケット出力先として通信インタフェース10bを決定する。また、前回のステップS13で、パケット出力先として通信インタフェース10bを決定していた場合、制御部11は、今回のステップS13では、パケット出力先として通信インタフェース10cを決定する。また、前回のステップS13で、パケット出力先として通信インタフェース10cを決定していた場合、制御部11は、今回のステップS13では、パケット出力先として通信インタフェース10aを決定する。
そして、制御部11は、ステップS12で通信部12から受け取ったパケットのヘッダからフローの識別情報を特定し、そのフローの識別情報を条件として、決定した通信インタフェース10からパケットを出力することをアクションとして定めたフローエントリを生成する(ステップS13)。制御部11は、このフローエントリを通信部12に設定し、また、パケットを通信部12に返す。
制御装置15は、ステップS13における制御部11の動作を定めた情報を、ルール生成情報として、事前に制御部11に送信しておけばよい。
通信部12は、制御部11から返されたパケットを、ステップS13で設定されたフローエントリに従って送信する(ステップS14)。すなわち、通信部12は、そのパケットを、制御部11がパケット出力先として決定した通信インタフェース10から出力する。
また、受信したパケットに合致するフローエントリが設定されている場合(ステップS11のYes)、通信部12は、そのパケットをそのフローエントリに従って送信する(ステップS15)。
従って、新たに発生したフローに対してステップS13でフローエントリが設定された後、そのフローにおける後続のパケットを通信部12が受信した場合、通信部12は、そのフローエントリに従って、そのパケットを出力すればよい(ステップS15)。
個々の端末装置20がサーバ等と通信を行うことで複数のフローが発生する。仮に、端末装置1台当たりのフロー数がnであるとする。図5に示すように、3台の端末装置20a,20b,20cが存在しているとするとフロー数は3nとなる。これらのフローを発生順にフロー1、フロー2、・・・、フロー3nとする。図7は、通信部12が各フローのパケットを出力する例を示す模式図である。なお、個々のフローのフローエントリは既に設定されているものとする。
各フロー1,4,・・・,3n−2のパケットの出力先は、通信インタフェース10aであると規定される。従って、通信部12は、フロー1,4,・・・,3n−2のいずれかのパケットを端末装置20から受信した場合、そのパケットを通信インタフェース10aから出力する(ステップS21)。このパケットは、UTRANの無線通信ネットワークを介して宛先に到達する。
また、各フロー2,5,・・・,3n−1のパケットの出力先は、通信インタフェース10bであると規定される。従って、通信部12は、フロー2,5,・・・,3n−1のいずれかのパケットを端末装置20から受信した場合、そのパケットを通信インタフェース10bから出力する(ステップS22)。このパケットは、WiMAXの無線通信ネットワークを介して宛先に到達する。
また、各フロー3,6,・・・,3nのパケットの出力先は、通信インタフェース10cであると規定される。従って、通信部12は、フロー3,6,・・・,3nのいずれかにのパケットを端末装置20から受信した場合、そのパケットを通信インタフェース10cから出力する(ステップS23)。このパケットは、LTEの無線通信ネットワークを介して宛先に到達する。
従って、ルータ1は、複数のフローのパケットを、複数の無線通信ネットワークを同時に利用して、転送することができる。そのため、フローが多数発生する場合であっても、各フローのパケットを、フロー毎に複数の無線通信ネットワークに振り分けて転送することが可能となり、高速通信を実現できる。
第2の実施形態では、制御部11がパケットの出力先となる通信インタフェース10を決定する際にラウンドロビン方式を採用する場合を例にして説明した。ラウンドロビン方式を採用する場合、各通信インタフェース10a,10b,10cに振り分けられるフロー数は均等になる。制御部11は、パケットの出力先となる通信インタフェース10を他の態様で決定してもよい。
例えば、特定の通信インタフェース10の使用優先度を高くして、その特定の通信インタフェース10に対応付けられるフローを、他の通信インタフェース10に対応付けられるフローよりも多くなるように、制御部11がパケットの出力先となる通信インタフェース10を決定してもよい。例えば、通信インタフェース10aに対応する無線ネットワークの通信品質が他の無線ネットワークの通信品質に比べて高いということが分かっているとする。この場合、新たに生じたフローのパケットの出力先となる通信インタフェース10を制御部11が確率的に選択し、選択した通信インタフェース10をそのパケットの出力先として決定すればよい。そして、このとき、特定の通信インタフェース10aの選択確率を、通信インタフェース10b,10cそれぞれの選択確率よりも高く設定しておけばよい。
さらに、図8に示すように、ルータ1が、各通信インタフェース10a,10b,10cに対応する各無線通信ネットワークの通信品質を計測する通信品質計測部18を備える構成であってもよい。そして、制御部11は、通信品質計測部18によって計測された各無線通信ネットワークの通信品質に応じて、各無線通信ネットワークに対応する各通信インタフェース10a,10b,10cの選択確率を調整してもよい。例えば、通信品質計測部18による計測結果によって通信インタフェース10aに対応する無線通信ネットワークの通信品質が他の無線ネットワークよりも良好であることが分かった場合、制御部11は、通信インタフェース10aの選択確率を、通信インタフェース10b,10cそれぞれの選択確率よりも高く設定すればよい。なお、通信品質計測部18は、例えば、通信プログラムに従って動作するコンピュータのCPUによって実現される。また、通信品質計測部18は、他の構成要素とは別個のハードウェアとして実現されていてもよい。
また、図8に示す構成において、ある通信インタフェース10(ここでは、通信インタフェース10bとする。)に対応する無線通信ネットワークの通信品質が基準を満たさないことが明らかになったとする。この場合、制御部11は、通信インタフェース10bに対応付けられていた各フローのフローエントリを通信部12から削除してもよい。この結果、それらのフローのパケットを通信部12が端末装置20から受信した場合、通信部12は制御部11にフローエントリの生成を要求するが、このとき、制御部11は、パケットの出力先となる通信インタフェース10を、通信インタフェース10b以外から決定する。このような動作により、複数の通信ネットワークのうち、通信品質が基準を満たしている通信ネットワークに各フローを振り分けることができる。
実施形態3.
図9は、本発明の第3の実施形態の通信システムの構成例を示すブロック図である。第1の実施形態や第2の実施形態における構成要素と同様の構成要素については、図1、図4、図5と同一の符号を付し、詳細な説明を省略する。ただし、制御部11が生成するフローエントリの内容は、第2の実施形態とは異なる。
第2の実施形態と同様に、通信インタフェース10aがUTRANの無線通信ネットワークに対応し、通信インタフェース10aがWiMAXの無線通信ネットワークに対応し、通信インタフェース10cがLTEの無線通信ネットワークに対応している場合を例にして説明する。なお、第2の実施形態と同様に、通信インタフェース10の数は、2つであってもよく、あるいは、4つ以上であってもよい。
第2の実施形態と同様に、制御装置15は、ルール生成情報を予め制御部11に送信し、制御部11はそのルール生成情報を受信する。そして、制御部11は、ルール生成情報に基づいてフローエントリを生成する。
また、第3の実施形態では、端末装置20は、同一のフローの各パケットに対してそれぞれシーケンス番号を付加し、シーケンス番号を付加したパケットをルータ1の通信部12に送信する。シーケンス番号を付加する態様は特に限定されない。
通信部12は、フローエントリに合致しないパケット(すなわち、新たに発生したフローのパケット)を端末装置20から受信した場合、そのパケットに対応する新たなフローのフローエントリの生成を制御部11に要求する。
制御部11は、その要求を通信部12から受けると、その新たなフローに対応するフローエントリを生成する。具体的には、そのフローのパケットが各通信インタフェース10a,10b,10cから出力されることを規定したフローエントリを生成し、通信部12にそのフローエントリを設定する。このフローエントリが設定されることによって、フローにおける任意のパケットをパケットAとすると、パケットAは、通信インタフェース10a,10b,10cからそれぞれ出力されることになる。
以下、第3の実施形態におけるフローエントリの例を説明する。
第3の実施形態におけるフローエントリの一例として、以下のフローエントリが挙げられる。このフローエントリでは、通信部12から送られたパケットのヘッダから定まるフローの識別情報を条件とする。そして、このフローエントリでは、その条件に合致するパケットのコピーを作成することによって、その条件に合致するパケットと同一のパケットを通信インタフェース10の数(本例では3つ)と同数揃え、そのパケットをそれぞれ個々の通信インタフェース10a,10b,10cから出力することをアクションとして規定する。制御部11は、通信部12からのフローエントリの設定要求に応じて、このようなフローエントリを生成し、通信部12に設定してもよい。以下、このようなフローエントリを第1タイプのフローエントリと記す。
また、第3の実施形態におけるフローエントリの他の例として、以下のフローエントリが挙げられる。以下に示すフローエントリを第2タイプのフローエントリと記す。制御部11は、個々の通信インタフェース10a,10b,10c毎に、パケットを出力することを定めたフローエントリを別々に作成し、そのフローエントリの集合を第2タイプのフローエントリとする。また、通信部12は、第2タイプのフローエントリに属する各フローエントリのうち、通信インタフェース10aからパケットを出力することを定めたフローエントリを格納するテーブル(第1テーブルと記す。)と、通信インタフェース10bからパケットを出力することを定めたフローエントリを格納するテーブル(第2テーブルと記す。)と、通信インタフェース10cからパケットを出力することを定めたフローエントリを格納するテーブル(第3テーブルと記す。)とを備える。
第2タイプのフローエントリに属する各フローエントリの条件の記述は共通であり、通信部12から送られたパケットのヘッダから定まるフローの識別情報が条件として記述される。
そして、通信インタフェース10aからパケットを出力することを定めたフローエントリでは、条件に合致するパケットを通信インタフェース10aから出力するとともに、そのパケットのコピーを作成し、第2テーブルでもそのパケットに対応するフローエントリの検索を行うことがアクションとして記述される。制御部11は、このフローエントリを生成すると、通信部12の第1テーブルに設定する。
また、通信インタフェース10bからパケットを出力することを定めたフローエントリでは、条件に合致するパケットを通信インタフェース10bから出力するとともに、そのパケットのコピーを作成し、第3テーブルでもそのパケットに対応するフローエントリの検索を行うことがアクションとして記述される。制御部11は、このフローエントリを生成すると、通信部12の第2テーブルに設定する。
また、通信インタフェース10cからパケットを出力することを定めたフローエントリでは、条件に合致するパケットを通信インタフェース10cから出力することがアクションとして記述される。制御部11は、このフローエントリを生成すると、通信部12の第3テーブルに設定する。
上記のように第1テーブル、第2テーブルおよび第3テーブルに設定されるフローエントリの集合が、第2タイプのフローエントリに該当する。
第3の実施形態では、制御部11は、第1タイプのフローエントリを生成しても、第2タイプのフローエントリを生成してもよい。
図10は、第3の実施形態におけるルータ1の処理経過の例を示すフローチャートである。ここでは、まず、制御部11が第1タイプのフローエントリを生成する場合を例にして説明する。
通信部12は、端末装置20からパケットを受信すると、そのパケットに合致するフローエントリが通信部12に設定されているか否かを判定する(ステップS31)。受信したパケットに合致するフローエントリが設定されていなければ(ステップS31のNo)、通信部12は、そのパケットを制御部11に送り、そのパケットに対応する新たなフローのフローエントリの生成を要求する(ステップS32)。ステップS31,S32は、第2の実施形態におけるステップS11,S12(図6参照。)と同様の処理である。
ステップS32の後、制御部11は、通信部12からの要求に応じてフローエントリを生成し、そのフローエントリを通信部12に設定する(ステップS33)。このとき、制御部11は、ステップS32で受け取ったパケットを通信部12に返す。
本例では、制御部11が第1タイプのフローエントリを生成する。この場合、制御部11は、フローエントリ内の条件として、通信部12から送られたパケットのヘッダから定まるフローの識別情報を記述する。また、制御部11は、フローエントリ内のアクションとして、その条件に合致するパケットのコピーを作成することによって、その条件に合致するパケットと同一のパケットを通信インタフェース10の数と同数揃え、そのパケットをそれぞれ個々の通信インタフェース10から出力することを規定したアクションを記述する。制御部11は、ステップS33でこのフローエントリを生成し、通信部12に設定するとともに、パケットを通信部12に返す。
制御装置15は、ステップS33における制御部11の動作を定めた情報を、ルール生成情報として、事前に制御部11に送信しておけばよい。
通信部12は、制御部11から返されたパケットを、ステップS33で設定されたフローエントリに従って送信する(ステップS34)。図11は、ステップS34での通信部12の処理経過の例を示すフローチャートである。制御部11から返されたパケット(処理対象のパケット)は、ステップS33で設定したフローエントリの条件に合致する。従って、通信部12は、そのパケットのコピーを生成する(ステップS41)。本例では、通信インタフェース10a,10b,10cの数に合わせてパケットが3個になるように、パケットをコピーすればよい。
次に、通信部12は、3個のパケットのうち、1つのパケットを通信インタフェース10aから出力し(ステップS42)、他の1つのパケットを通信インタフェース10bから出力し(ステップS43)、残りの1つのパケットを通信インタフェース10cから出力する(ステップS44)。すなわち、通信部12は、同一のパケットを、通信インタフェース10a〜10cからそれぞれ出力する。
通信インタフェース10aから出力されたパケットは、UTRANの無線通信ネットワークを介して宛先に到達する。通信インタフェース10bから出力されたパケットは、WiMAXの無線通信ネットワークを介して宛先に到達する。通信インタフェース10cから出力されたパケットは、LTEの無線通信ネットワークを介して宛先に到達する。すなわち、宛先には、複数の同一パケットがそれぞれ異なる無線通信ネットワークを経由して到達する。
また、受信したパケットに合致するフローエントリが設定されている場合(ステップS31のYes)、通信部12は、そのパケットをそのフローエントリに従って送信する(ステップS35)。従って、新たに発生したフローに対してステップS33でフローエントリが設定された後、そのフローにおける後続のパケットを通信部12が受信した場合、通信部12は、そのフローエントリに従って、パケットを出力する(ステップS35)。ステップS35における通信部12のパケット出力動作は、ステップS34における動作(図11参照。)と同様である。
従って、同一フローにおける個々のパケットはいずれも、通信インタフェース10a〜10cからそれぞれ出力され、複数の同一パケットがそれぞれ異なる無線通信ネットワークを経由して宛先に到達する。
次に、制御部11が第2タイプのフローエントリを生成する場合を例にして説明する。以下の説明に関しても、図10を参照して説明する。
制御部11が第2タイプのフローエントリを生成する場合、通信部12は、端末装置20からパケットを受信すると、ステップS31(図10参照。)において、そのパケットに合致するフローエントリが通信部12の第1テーブルに設定されているか否かを判定する。
受信したパケットに合致するフローエントリが第1テーブルに設定されていなければ(ステップS31のNo)、通信部12は、そのパケットを制御部11に送り、そのパケットに対応する新たなフローに対するフローエントリの生成を要求する(ステップS32)。
続いて、制御部11は、通信部12からの要求に応じてフローエントリを生成し、そのフローエントリを通信部12に設定する(ステップS33)。このとき、制御部11は、ステップS32で受け取ったパケットを通信部12に返す。
本例では、制御部12は、第2タイプのフローエントリとして、3つのフローエントリを生成する。制御部11は、この3つのフローエントリのいずれにおいても、条件として、通信部12から送られたパケットのヘッダから定まるフローの識別情報を記述する。
また、通信インタフェース10aからパケットを出力することを規定するフローエントリ(1番目のフローエントリと記す。)では、制御部12は、アクションとして、条件に合致するパケットを通信インタフェース10aから出力するとともに、そのパケットのコピーを作成し、第2テーブルでもそのパケットに対応するフローエントリの検索を行うことを記述する。
また、通信インタフェース10bからパケットを出力することを規定するフローエントリ(2番目のフローエントリと記す。)では、制御部12は、アクションとして、条件に合致するパケットを通信インタフェース10bから出力するとともに、そのパケットのコピーを作成し、第3テーブルでもパケットに対応するフローエントリの検索を行うことを記述する。
また、通信インタフェース10cからパケットを出力することを規定するフローエントリ(3番目のフローエントリと記す。)では、制御部12は、アクションとして、条件に合致するパケットを通信インタフェース10cから出力することを記述する。
そして、制御部12は、1番目のフローエントリを制御部12の第1テーブルに設定し、2番目のフローエントリを制御部12の第2テーブルに設定し、3番目のフローエントリを制御部12の第3テーブルに設定するとともに、パケットを通信部12に返す。
通信部12は、制御部11から返されたパケットを、ステップS33で設定された第2タイプのフローエントリ(具体的には、1番目のフローエントリ、2番目のフローエントリおよび3番目のフローエントリ)に従って送信する(ステップS34)。図12は、第2タイプのフローエントリが生成される場合におけるステップS34での通信部12の処理経過の例を示すフローチャートである。通信部12は、最初に、第1テーブルに設定されたフローエントリに従って動作する。制御部11から返されたパケット(処理対象のパケット)は、第1テーブルに設定された1番目のフローエントリの条件に合致する。従って、通信部12は、1番目のフローエントリのアクションに従い、そのパケットのコピーを生成し(ステップS51)、そのパケットを通信インタフェース10aから出力する(ステップS52)。そして、通信部12は、コピーによって得たパケットに合致するフローエントリを第2テーブルから検索し、2番目のフローエントリを得る(ステップS53)。
通信部12は、その2番目のフローエントリに従って、そのパケットのコピーを生成し(ステップS54)、そのパケットを通信インタフェース10bから出力する(ステップS55)。そして、通信部12は、コピーによって得たパケットに合致するフローエントリを第3テーブルから検索し、3番目のフローエントリを得る(ステップS56)。
通信部12は、その3番目のフローエントリに従って、そのパケットを通信インタフェース10cから出力する(ステップS57)。
図12に示す動作においても、通信部12は、同一のパケットを、通信インタフェース10a〜10cからそれぞれ出力する。そして、宛先には、複数の同一パケットがそれぞれ異なる無線通信ネットワークを経由して到達する。
また、受信したパケットに合致するフローエントリが第1テーブルに設定されている場合(ステップS31のYes)、通信部12は、そのパケットをそのフローエントリに従って処理する(ステップS35)。本例では、制御部12は、ステップS35において、ステップS34(図12参照。)と同様の処理を行う。
従って、制御部11が第2タイプのフローエントリを生成する場合においても、同一フローにおける個々のパケットはいずれも、通信インタフェース10a〜10cからそれぞれ出力され、複数の同一パケットがそれぞれ異なる無線通信ネットワークを経由して到達する。
なお、上記の例では、第2タイプのフローエントリとして1番目から3番目までの3つのフローエントリを制御部11が生成し、通信部12がそれらのフローエントリに順番に従って処理を行う場合を説明した。第2タイプのフローエントリとして生成されるフローエントリの数は、パケットを出力する通信インタフェース10の数に合わせればよい。
第3の実施形態では、制御部11が第1タイプのフローエントリを生成する場合であっても、第2タイプのフローエントリを生成する場合であっても、通信部12は、各通信インタフェース10から同一のパケットを出力する。従って、いずれかの通信インタフェース10から出力されたパケットにパケットロスが生じたとしても、パケットの宛先(サーバ)は、他の通信インタフェースから出力された同一のパケットを受信し、処理を進めることができる。従って、本実施形態によれば、通信の信頼性を高めることができる。
図13は、複数の通信インタフェース10が同一のパケットを出力する状況を示す模式図である。図13内に番号とともに示した矩形はパケットを表し、また、その番号はパケットのシーケンス番号を示す。また、図13に示すパケットは、いずれも同一フローのパケットである。通信部12は、各通信インタフェース10a,10b,10cからそれぞれシーケンス番号が1である同一のパケットを出力する。通信部12は、他のシーケンス番号のパケットに関しても、各通信インタフェース10a,10b,10cからそれぞれ同一のパケットを出力する。また、図13において、破線で示したパケットは、宛先のサーバに到達するまでに消失したパケットである。例えば、図13に示すように、通信インタフェース10aから出力されたシーケンス番号1のパケットが消失したとしても、宛先のサーバは、通信インタフェース10bや通信インタフェース10cから出力された同一のパケット(シーケンス番号1のパケット)を受信することができる。このように、同一のパケットが別々の通信インタフェース10からそれぞれ出力され、その各パケットが異なる無線通信ネットワークを経由して宛先に到達する。従って、一部のパケットが消失したとしても、宛先となるサーバは、他の無線通信ネットワークを経由する同一パケットを受信できる。そのため、ルータ1は、パケットロスに伴うパケットの再送を行う必要がなく、通信の信頼性を向上させることができる。
次に、本実施形態において、パケットの宛先となるサーバの動作について説明する。図14は、パケットの宛先となるサーバの構成例を示すブロック図である。サーバ31は、複数の受信ポート32a,32b,32cと、受信部33と、処理部34とを備える。各受信ポート32a,32b,32cは、それぞれ、ルータ1の通信インタフェース10a,10b,10cに対応する。例えば、受信ポート32aは、通信インタフェース10aから出力されたパケットを受信し、受信ポート32bは、通信インタフェース10bから出力されたパケットを受信し、受信ポート32cは、通信インタフェース10cから出力されたパケットを受信する。受信部33は、受信ポート33が受信したパケットを、処理部34に伝達する。処理部34は、入力されたパケットに応じた処理を行う。
処理部34には、同一のパケットを重複して入力する必要はない。そこで、サーバ31は、例えば、以下に示す動作を行えばよい。各受信ポート32a,32b,32cは、それぞれ、パケットを受信すると、そのパケットを受信部33に送る。
受信部33は、同一のフローにおける各シーケンス番号のパケット毎に、受信ポート32a〜32cのいずれかで、既にパケットを受信しているか否かを管理する。初期状態では、各シーケンス番号のパケットに関し、「未受信」という情報を記憶する。例えば、任意のシーケンス番号(Pとする。)のパケットが、受信ポート32a〜32cのいずれかから送られたとする。すると、受信部33は、シーケンス番号Pのパケットに関して「未受信」であるか否かを判定し、「未受信」である場合には「受信済み」に更新し、そのシーケンス番号Pのパケットを処理部34に送る。一方、シーケンス番号Pのパケットが送られた場合、シーケンス番号Pのパケットに関して「受信済み」であるならば、受信部33は、そのシーケンス番号Pのパケットを破棄する。従って、受信部33は、受信ポート32a〜32cのいずれかから、最初にシーケンス番号Pのパケットを受信した場合のみ、そのパケットを処理部34に送り、2回目以降に送られたシーケンス番号Pのパケットに関しては破棄する。この結果、処理部34には、シーケンス番号Pのパケットは1個のみ送られる。よって、処理部34に同一パケットが重複して送られることを防ぐことができる。
また、サーバ31の動作は、上記の動作に限定されず、以下に示す動作を行ってもよい。受信部33は、パケットを受け取る受信ポートを、受信ポート32a〜32cの中から1つ定め、その受信ポート(ここでは、受信ポート32aとする。)は、受信したパケットを受信部33に送る。その他の受信ポート32b,32cは、受信したポートを受信部33に送らず、一時的にバッファに記憶し、一定時間経過後に削除する。受信部33は、受信ポート32aから送られたパケットを処理部34に送る。ただし、受信ポート32aから送られたパケットのうち、パケットロスに起因して欠如しているシーケンス番号を検出した場合、そのシーケンス番号のパケットを、他の受信ポート32b,32cのバッファ内から検索し、読み込む。そして、そのパケットも処理部34に送る。すなわち、受信部33は、受信ポート32aから送られたパケットを処理部34に送るとともに、消失したパケットを検出した場合、そのパケットを他の受信ポート32b,32cのバッファ内から読み込んで処理部34に送る。このような動作を行う場合にも、処理部34に同一パケットが重複して送られることを防ぐことができる。なお、受信部33に対してパケットを送る受信ポートは、例えば、対応する無線通信ネットワークの電波状況や通信の安定性に基づいて定めておけばよい。また、各受信ポート32a,32b,32cに対応する無線通信ネットワークの電波状況や通信の安定性を計測する計測手段(図示略)をサーバ31に設け、計測手段の計測結果に応じて、受信部33に対してパケットを送る受信ポートを受信部33が動的に変更してもよい。
実施形態4.
図15は、本発明の第4の実施形態の通信システムの構成例を示すブロック図である。第1ないし第3の実施形態における構成要素と同様の構成要素については、図1、図4、図5、図9等と同一の符号を付し、詳細な説明を省略する。ただし、制御部11が生成するフローエントリの内容は、第2の実施形態や第3の実施形態とは異なる。
図9では、3つの通信インタフェース10a,10b,10cを示しているが、通信インタフェース10の数は2つであってもよく、あるいは、4つ以上であってもよい。
第2の実施形態や第3の実施形態と同様に、制御装置15は、ルール生成情報を予め制御部11に送信し、制御部11はそのルール生成情報を受信する。そして、制御部11は、ルール生成情報に基づいてフローエントリを生成する。
第4の実施形態において、ルータ1は、制御部11、通信部12、複数の通信インタフェース10に加えて、ユーザ情報記憶部13を備える。
ユーザ情報記憶部13は、予め、ユーザの識別情報(以下、ユーザIDと記す。)に対応付けて、ユーザに関する情報を記憶する記憶装置である。本実施形態では、ユーザ情報記憶部13が、ユーザIDに対応付けて、ユーザが通常ユーザ、優遇ユーザ、特別優遇ユーザのいずれかであるかを記憶する場合を例にして説明する。なお、特別優遇ユーザ、優遇ユーザ、通常ユーザの順に、通信品質が高い無線通信ネットワークを利用できるものとする。
なお、ユーザ情報記憶部13は、ルータ1の外部に設けられていてもよい。
通信部12は、ユーザが使用する端末装置20との間で通信を確立する際に、その端末装置20と一対一に対応する仮想ポートを設定する。図15では、端末装置20aに対応する仮想ポート61、および、端末装置20bに対応する仮想ポート62を図示している。個々の仮想ポート61,62には、制御部11によって優先度が定められる。
また、通信インタフェース10a,10b,10cには、どの優先度の仮想ポートが受信したパケットを出力するのかが予め定められている。本例では、説明を簡単にするため、仮想ポートの優先度が“1”,“2”,“3”のいずれかに設定されるものとする。ここで、優先度“1”が最も高く、優先度“3”が最も低いものとする。ただし、優先度は、より細かく分類されていてもよい。
そして、通信インタフェース10aに対応する無線通信ネットワークは通信品質が非常に高く、通信インタフェース10aは、優先度“1”の仮想ポートが受信したパケットを出力するものとして定められているとする。また、通信インタフェース10bに対応する無線通信ネットワークは通信品質が高く、通信インタフェース10bは、優先度“2”の仮想ポートが受信したパケットを出力するものとして定められているとする。また、通信インタフェース10cに対応する無線通信ネットワークは通信品質が中程度であり、通信インタフェース10cは、優先度“3”の仮想ポートが受信したパケットを出力するものとして定められているものとする。
通信部12は、新たに端末装置20との間で通信を確立する際に、その端末装置20と一対一に対応する仮想ポートを設定するとともに、その端末装置20から、その端末装置20を使用するユーザのユーザIDを受信する。また、通信部12は、設定した仮想ポートに対して仮想ポート識別情報(仮想ポートの識別情報)を割り当てる。通信部12は、ユーザIDおよび仮想ポート識別情報を制御部11に送ることによって、その仮想ポートが端末装置20から受信するフローに対応するフローエントリの生成を制御部11に要求する。
制御部11は、ユーザIDをキーとしてユーザ情報記憶部13に記憶されたユーザの情報を参照し、そのユーザの情報に基づいて、仮想ポート識別情報が示す仮想ポートの優先度を決定する。そして、その優先度に基づいて、仮想ポートが受信するフローの出力先を特定し、フローエントリを生成する。
図16は、第4の実施形態におけるルータ1の処理経過の例を示すフローチャートである。ここでは、端末装置20aと通信部12との通信が確立する場合を例にして説明する。通信部12は、端末装置20aとの間で通信を確立する場合、端末装置20aに対応する仮想ポート61を設定するとともに(ステップS61)、端末装置20aからユーザIDを受信する(ステップS62)。また、通信部12は、設定した仮想ポート61に対して仮想ポート識別情報を割り当てる。
次に、通信部12は、そのユーザIDおよび、仮想ポート61の仮想ポート識別情報(以下、Qとする。)を制御部11に送ることによって、仮想ポート61が端末装置20aから受信するフローに対応するフローエントリの生成を制御部11に要求する(ステップS63)。
制御部11は、通信部12から送られたユーザIDをキーとしてユーザ情報記憶部13からユーザIDに対応するユーザの情報を検索し、そのユーザの情報に基づいて、仮想ポート識別情報が示す仮想ポート61の優先度を判定する(ステップS64)。例えば、ユーザIDに対応するユーザの情報が「特別優遇ユーザ」であれば、制御部11は、仮想ポート61の優先度を“1”とする。また、例えば、ユーザIDに対応するユーザの情報が「優遇ユーザ」であれば、制御部11は、仮想ポート61の優先度を“2”とする。また、例えば、ユーザIDに対応するユーザの情報が「通常ユーザ」であれば、制御部11は、仮想ポート61の優先度を“3”とする。本例では、制御部11は、仮想ポート61の優先度を“1”と判定した場合を例にして説明する。なお、「特別優遇ユーザ」等は、ユーザの情報の例示であり、制御部11は、ユーザに関する他の情報に基づいて、仮想ポートの優先度を判定してもよい。
ステップS64の次に、制御部11は、フローエントリの条件として、ステップS63で送られた仮想ポート識別情報“Q”を記述する。また、制御部11は、ステップS64で判定した仮想ポートの優先度に対応する通信インタフェース10を特定する。そして、制御部11は、その通信インタフェース10からパケットを出力することを規定したアクションを記述する。本例では、ステップS64で、仮想ポート61の優先度を“1”と判定しているので、通信インタフェース10aからパケットを出力することを規定したアクションを記述する。制御部11は、このように条件およびアクションを記述することによってフローエントリを生成し、通信部12に設定する(ステップS65)。このフローエントリは、条件に記述された仮想ポート識別情報によって特定される仮想ポートから受信したパケットに関して、アクションに記述した通り処理することを定めている。
ステップS65の後、通信部12は、条件として記述された仮想ポート識別情報“Q”によって特定される仮想ポート61がパケットを受信すると、フローエントリのアクションに従って、通信インタフェース10aからそのパケットを出力する(ステップS66)。このパケットは、通信インタフェース10aに対応する無線通信ネットワークを介して宛先のサーバに到達する。
本例では、端末装置20aと通信部12との通信が確立する場合を例にして説明したが、他の端末装置20bと通信部12との通信が確立する場合の動作も同様である。
本実施形態によれば、端末装置20を使用するユーザの属性に応じて、端末装置20から受信するパケットをどの無線通信ネットワークに向けて出力するかを制御することができる。
また、第4の実施形態では、端末装置20がユーザIDを通信部12に送信する場合を例にして示したが、端末装置20がユーザの情報(例えば、ユーザが「特別優遇ユーザ」であること等)を通信部12に送信してもよい。この場合、通信部12は、そのユーザの情報を制御部11に送り、制御部11は、そのユーザの情報に基づいて仮想ポートの優先度を判定すればよい。この場合、ユーザ情報記憶部13は、設けられていなくてもよい。
また、第1から第4までの各実施形態において、個々の通信インタフェース10に対応する無線通信ネットワークの通信品質が分かっている場合、制御部11は、フローのパケットの出力先となる通信インタフェース10を決定して、フローエントリを生成するときに、パケット出力先となる通信インタフェース10に対応する無線通信ネットワークの通信品質に応じた頻度で誤り訂正用パケットを挿入し、その誤り訂正用パケットもその通信インタフェース10から出力するアクションを規定してもよい。誤り訂正用パケットの挿入頻度は、パケットの出力先として決定した通信インタフェース10に対応する無線通信ネットワークの通信品質に応じて定めればよい。例えば、パケットロス率が高ければ、誤り訂正用パケットの挿入頻度を多くし、パケットロス率が低ければ、誤り訂正用パケットの挿入頻度を少なくすればよい。通信部12は、パケットから特定されるフローエントリに従って、そのパケットを通信インタフェース10から出力するとともに、そのフローエントリで規定された頻度で誤り訂正用パケットを生成し、その誤り訂正用パケットも同一の通信インタフェース10から出力する。通信部12は、誤り訂正用パケットを例えば、FEC(Forward Error Correction)によって生成してもよい。また、この場合、図8に示すように、通信品質計測部18が設けられ、通信品質計測部18が個々の通信インタフェース10に対応する無線通信ネットワークの通信品質を測定してもよい。
実施形態5.
図17は、本発明の第5の実施形態の通信システムの構成例を示すブロック図である。第5の実施形態の通信システムは、通信装置1と、制御装置15とを備える。第5の実施形態では、通信装置1がルータである場合を例にして説明する。ルータ1は、例えば、列車やバス等のように走行ルートが定められている乗り物に配置される。そして、ルータ1は、乗り物に乗車しているユーザが使用する端末装置20から受信したパケットをサーバ(図示略。)に送信する等のパケットの中継処理を行う。なお、後述するように、ルータ1は、自動車等のように走行ルートの自由度が高い乗り物に配置されてもよい。
ルータ1は、通信部12と、制御部11と、複数の通信インタフェース10a,10b,10cと、位置計測部51とを備える。個々の通信インタフェース10a,10b,10cは、互いに異なる無線通信ネットワークに対応している。既に説明したように、個々の通信インタフェース10a,10b,10cを区別しない場合には、通信インタフェース10と記す。また、図17では、3つの通信インタフェース10を図示しているが、通信インタフェース10の数は3つに限定されない。
通信部12は、端末装置20から受信したパケットをサーバ(図示略。)に転送する。第5の実施形態においても、通信部12が、端末装置20から受信したパケットをサーバに転送する時の動作を中心に説明する。
位置計測部51は、通信部12の現在の位置(換言すれば、ルータ1の現在の位置)を計測する。位置計測部51は、例えば、GPS(Global Positioning System)を用いて位置を計測するセンサである。位置計測部51は、定期的に、ルータ1の現在の位置を計測する。
制御部11は、通信部12を制御する。例えば、制御部11は、オープンフローに従って通信部12を制御してもよい。例えば、通信部12は、フローエントリに合致しないパケットを受信した場合、そのパケットを制御部11に送り、そのパケットに対応するフローのフローエントリの生成を制御部11に要求し、制御部11は、要求に応じて生成したフローエントリを通信部12に設定し、通信部12にパケットを返す。通信部12は、そのフローエントリに従って、そのフローのパケットに対する処理を実行する。
ただし、本実施形態では、制御部11は、通信部12に設定済みのフローエントリを更新する条件が満たされた場合、そのフローエントリを更新する。
ここで、通信部12に設定済みのフローエントリを更新する条件と、その条件が満たされたときのフローエントリの更新内容とを表す情報を更新情報と記す。更新情報は、制御装置15から制御部11に提供される。すなわち、制御装置15が更新情報を制御部11に送信し、制御部11が、その更新情報を受信する。そして、制御部11は、その更新情報に従って、条件が満たされたときにフローエントリを更新する。具体的には、更新情報では、フローエントリのアクションに記述される通信インタフェース10を更新する条件と、その条件が満たされたときに、フローエントリのアクションに記述する通信インタフェース10をどの通信インタフェース10に更新するかが定められている。さらに、この条件として、乗り物に配置されたルータ1が、異なる種類の無線通信ネットワークを跨いで基地局をハンドオーバする位置が少なくとも定められている。また、ハンドオーバの位置として、切り替え後の基地局よりも手前の位置を定めておけばよい。
列車やバス等の走行ルートは定められている。従って、その走行ルートの周辺に存在する様々な種類の無線通信ネットワークの基地局の位置も予め分かっている。そして、乗り物が走行ルートに沿って移動している場合、異なる種類の無線通信ネットワークを跨いで基地局をハンドオーバする必要が生じ得る。例えば、ある区間ではLTEの基地局と通信していたが、移動に伴いその基地局と離れるので、WiMAXの基地局にハンドオーバする必要があるといったことが生じ得る。この場合、更新情報において、フローエントリの更新条件として、WiMAXの基地局よりも手前の位置を定めておき、フローエントリのアクションの更新内容として、「WiMAXに対応する通信インタフェース10bからパケットを出力する。」という内容を定めておく。更新情報では、このような条件と更新内容の組み合わせを、ハンドオーバの必要な箇所毎に定めておく。
制御部11がフローエントリを更新することによって、通信部12は、パケットを出力する通信インタフェース10を切り替える。この結果、パケットは、フローエントリの更新前とは異なる無線通信ネットワークの基地局に送られ、異なる種類の無線通信ネットワークを跨るハンドオーバが実現される。
また、フローエントリの更新条件には、少なくとも、位置に関する条件が定められる。この更新条件として、位置とともに他の条件が定められていてもよいが、図17に示す例では、説明を簡単にするために、フローエントリの更新条件として、位置に関する条件のみが定められる場合を例にして説明する。位置以外の条件も用いる場合については後述する。
共通の走行ルートを移動する各乗り物に配置される各ルータ1には、共通の更新情報を提供すればよい。従って、制御装置15は、共通の走行ルートを移動する各乗り物に配置される各ルータ1に対して、共通の更新情報を送信すればよい。一旦、制御装置15が各ルータ1に対して更新情報を送信すれば、その後、制御装置15と制御部11との通信が断となったとしても、制御部11は、フローエントリを更新できる。
なお、各ルータ1の管理者が直接、制御部11に更新情報を設定してもよい。この場合、制御装置15は設けられていなくてもよい。ただし、この場合、管理者の設定操作の負担が大きいので、上記のように、共通の走行ルートを移動する各乗り物に配置される各ルータ1に対して、制御装置15が共通の更新情報を送信することが、より好ましい。
また、制御部11が、ルータ1の外部に設けられていてもよい。ただし、この場合、通信部12と制御部11との通信が断となると、通信部12は、制御部11からの制御を受けられなくなってしまう。そのため、制御部11がルータ1に設けられる構成が好ましい。
制御部11および通信部12は、例えば、通信プログラムに従って動作するコンピュータのCPUによって実現される。この場合、例えば、コンピュータのプログラム記憶装置等のプログラム記録媒体に通信プログラムを記憶させておく。そして、CPUがその通信プログラムを読み込み、通信プログラムに従って制御部11および通信部12として動作すればよい。また、制御部11および通信部12が別々のハードウェアで実現されていてもよい。
図18は、第5の実施形態におけるフローエントリ設定時の処理経過の例を示すフローチャートである。通信部12は、端末装置20からパケットを受信すると、そのパケットに合致するフローエントリが通信部12に設定されているか否かを判定する(ステップ71)。受信したパケットに合致するフローエントリが設定されていなければ(ステップS71のNo)、通信部12は、そのパケットを制御部11に送り、そのパケットに対応する新たなフローに対するフローエントリの生成を要求する(ステップS72)。ステップS71,S72は,第2の実施形態におけるステップS11,S12(図6参照。)と同様の処理である。
フローエントリの生成要求を受けると、制御部11は、位置計測部51によって計測されたルータ1の現在位置と、更新情報とを参照する。そして、制御部11は、現在位置が、フローエントリの更新条件に該当する位置同士(換言すれば、ハンドオーバを行う位置同士)の間のどの区間に該当するかを判定し、その区間において、パケットを出力する通信インタフェース10を特定する。また、制御部11は、ステップS72で通信部12から受け取ったパケットのヘッダからフローの識別情報を特定する。そして、制御部11は、そのフローの識別情報を条件として記述し、特定した通信インタフェース10からパケットを出力することをアクションとして記述することによってフローエントリを生成する(ステップS73)。制御部11は、このフローエントリを通信部12に設定し、また、パケットを通信部12に返す。
また、制御部11は、通信部12に設定したフローエントリと同一内容のフローエントリを保持し、通信部12に設定されているフローエントリを認識できるようにしておく。
ステップS73の後、通信部12は、制御部11から返されたパケットを、ステップS73で設定されたフローエントリに従って送信する(ステップS74)。すなわち、通信部12は、そのパケットを、制御部11がパケット出力先として決定した通信インタフェース10から出力する。
また、受信したパケットに合致するフローエントリが設定されている場合(ステップS71のYes)、通信部12は、そのパケットをそのフローエントリに従って送信する(ステップS75)。従って、新たに発生したフローに対してステップS73でフローエントリが設定された後、そのフローにおける後続のパケットを通信部12が受信した場合、通信部12は、そのフローエントリに従って、そのパケットを出力すればよい(ステップS75)。ステップS74,S75は、第2の実施形態におけるステップS14,S15(図6参照。)と同様の処理である。
次に、制御部11が、通信部12に設定したフローエントリを更新する動作について説明する。図19は、フローエントリを更新する動作の例を示すフローチャートである。位置計測部51は、ルータ1の現在の位置を計測する(ステップS81)。なお、位置計測部51は、ステップS81の処理を定期的に行う。
ステップS81の後、制御部11は、ステップS81で計測されたルータ1の位置を参照して、フローエントリの更新条件が満たされたか否かを判定する(ステップS82)。例えば、制御部11は、ステップS81で計測された位置を参照し、更新情報内で更新条件として定められた位置にルータ1が到達しているか否かを判定し、到達していれば更新条件が満たされていると判定し、到達していなければ更新条件が満たされていないと判定する。
更新条件が満たされていない場合(ステップS82のNo)、ルータ1は、次回のステップS81まで待機し、次回のステップS81の実行時に、ステップS81以降の処理を繰り返す。
更新条件が満たされている場合(ステップS82のYes)、制御部11は、その更新条件が満たされた場合の更新内容に従って、通信部12に設定しているフローエントリのアクションを更新する(ステップS83)。具体的には、制御部11は、フローエントリのアクションで規定されている通信インタフェース10を更新する。この結果、パケットが出力される通信インタフェース10が変更され、パケットは更新後の通信インタフェース10に対応する無線通信ネットワークの基地局に送信される。この結果、種類の異なる無線通信ネットワークを跨いでハンドオーバが実現される。
ステップS83の後、ルータ1は、次回のステップS81まで待機し、次回のステップS81の実行時に、ステップS81以降の処理を繰り返す。
この結果、フローエントリの更新条件が満たされる毎に、通信部12に設定されたフローエントリのアクションは更新され、ハンドオーバが実現される。
図20は、フローエントリの更新の具体例を示す模式図である。更新前に、通信部12に、図20(a)に示すフローエントリが設定されているとする。この状態で、フローAのパケットを通信部12が受信した場合、通信部12は、そのパケットを通信インタフェース10bから出力する。すると、そのパケットは、通信インタフェース10bに対応する無線通信ネットワークの基地局(K1とする。)を介して、宛先に到達する。
また、予め、図20(b)に示す更新情報が定められているとする。図20(b)に示す更新情報は、位置Xに到達したとういう条件が満たされたときに、フローエントリのアクションを「パケットを通信インタフェース10aから出力」という内容に更新することを意味している。
ステップS81で計測された位置に基づいて、ルータ1が位置Xに到達したと制御部11が判断した場合(ステップS82のYes)、制御部11は、図20(a)に示すフローエントリのアクションを「パケットを通信インタフェース10aから出力」に更新する。この結果、通信部12は、図20(c)に示すフローエントリが設定された状態となる。ここで、フローAのパケットを通信部12が受信した場合、通信部12は、そのパケットを通信インタフェース10aから出力する。すると、そのパケットは、通信インタフェース10aに対応する無線通信ネットワークの基地局(K2とする。)を介して、宛先に到達する。従って、基地局K1から基地局K2へのハンドオーバが実現されたことになる。
本実施形態によれば、種類の異なる無線通信ネットワークを跨るハンドオーバを適切な条件を契機に行える。
一般的なハンドオーバでは、通信中の基地局との距離が離れ、その基地局からの電波が弱くなったことを契機に、切り替え先の基地局を探索する。
これに対して、本発明では、フローエントリの更新条件を満たした時点で、フローエントリを更新することでハンドオーバを実現する。従って、通信中の基地局からの電波が弱くなる前であっても、早期にハンドオーバを実現することができる。また、種類の異なる無線通信ネットワークを跨るハンドオーバを実現することができる。
以下、第5の実施形態の変形例を説明する。
第5の実施形態において、ルータ1は、走行ルートが定められている乗り物のみに適用されるわけではない。ルータ1は、自動車等のように、走行ルートの自由度が高い乗り物に配置されていてもよい。この場合、例えば、自動車に設けられたナビゲーションシステムが目的地までの走行ルートを計算したときに、ルータ1の制御部11がその走行ルートの情報を制御装置15に送信する。制御装置15は、その走行ルートの情報を参照して、その走行ルートに応じた更新情報を導出し、その更新情報を制御部11に提供すればよい。この場合、制御装置15は、種々の無線通信ネットワークの基地局の位置の情報をデータベースとして保持し、そのデータベースを用いて、与えられた走行ルートに応じた更新情報を導出すればよい。
また、上記の説明では、説明を簡単にするため、更新情報において、フローエントリの更新条件として、位置に関する条件のみが定められた場合を例にして説明した。フローエントリの更新条件として、位置とともに他の条件が定められていてもよい。
例えば、フローエントリの更新条件として、「ルータ1が所定の位置に到達し、かつ、更新後の通信インタフェース10に対応する無線通信ネットワークの通信品質が所定の基準を満たしていること」等の条件が定められていてもよい。
この場合、図21に示すように、ルータ1は、例えば、通信品質計測部18を備える。通信品質計測部18は、各通信インタフェース10a,10b,10cに対応する各無線通信ネットワークの通信品質を計測する。
また、例えば、フローエントリの更新条件として、「ルータ1が所定の位置に到達し、かつ、更新後の通信インタフェース10に対応する無線通信ネットワークの基地局からの電波強度が所定値以上であること」等の条件が定められていてもよい。
この場合、通信品質計測部18は、通信品質として、各通信インタフェース10a,10b,10cに対応する各無線通信ネットワークの基地局からの電波強度を計測する。通信品質計測部18は、電波強度と、電波強度以外の通信品質とを計測してもよい。
制御部11は、ステップS82において、ルータ1の位置だけでなく、新たに使用しようとしている通信インタフェース10に対応する無線通信ネットワークの通信品質(例えば、電波強度)も参照して、フローエントリの更新条件が満たされているか否かを判定する。
さらに、制御部11は、位置の他に、少なくとも、天候、時間帯、曜日、日付、ルータ1の移動経路(換言すれば、通信部12の移動経路)近傍で開催されるイベントの有無の一部、または、全部を参照して、フローエントリの更新条件が満たされているか否かを判定してもよい。
この場合、例えば、天候、時間帯、曜日、日付、イベント開催の有無の一部または全部の組み合わせを定め、その組み合わせ毎に、更新情報を用意しておけばよい。更新情報の内容(条件の内容やフローエントリの更新内容)は、天候や時間帯等の組み合わせ毎に定めればよい。そして、制御装置15は、天候や時間帯等の種々の組み合わせ(例えば、「晴れ」かつ「夜間」かつ「土曜日」等の組み合わせ)毎に用意された更新情報をそれぞれ、制御部11に送信すればよい。
また、この場合、図21に示すように、ルータ1は、例えば、時刻計算部54と、天候計測部55とを備える。時刻計算部54は、定期的に、時刻、曜日、日付を算出する。天候計測部55は、天候を計測するセンサである。天候計測部55は、定期的に、ルータ1が配置された乗り物の周囲の天候を計測する。制御部11は、時刻計算部54や天候計測部55から得られた天候や時間帯等の組み合わせ(例えば、「晴れ」かつ「夜間」かつ「土曜日」等の組み合わせに対応する更新情報を用いて、フローエントリの更新条件が満たされているか否かを判定し、更新条件が満たされていれば、その更新情報で定められた更新内容に従って、フローエントリを更新する。
なお、イベントの有無に関する情報は、例えば、制御装置15に対して管理者が入力し、制御装置15が、イベントの有無、および、イベントが開催される場合には、イベントの開催場所、開催日時を制御部11に送信すればよい。
天候、時間帯、曜日、日付等によって、乗り物内で端末装置20を使用するユーザの数や、ルータ1の移動経路近傍で端末装置を使用する人数が変動すると考えられる。また、ルータ1の移動経路近傍で開催されるイベントの有無によっても、移動経路近傍で端末装置を使用する人数が変動すると考えられる。そして、このような人数の多寡は、無線通信ネットワークの通信品質に影響する。従って、天候、時間帯、曜日、日付、イベント開催の有無等の組み合わせ毎に更新情報を定めることによって、通信品質を考慮した、より適切なフローエントリ更新条件を定めることができる。
なお、通信品質計測部18および時刻計算部54は、例えば、通信プログラムに従って動作するコンピュータのCPUによって実現される。また、通信品質計測部18および時刻計算部54は、他の構成要素とは別個のハードウェアとして実現されていてもよい。
次に、本発明の概要について説明する。図22は、本発明の通信システムの概要を示すブロック図である。本発明の通信システムは、制御手段91と、パケット転送手段92と、複数の通信インタフェース93と、位置計測手段94とを備える。
パケット転送手段92(例えば、通信部12)は、パケットを転送する。
位置計測手段94(例えば、位置計測部51)は、パケット転送手段92の位置を計測する。
複数の通信インタフェース93(例えば、通信インタフェース10a,10b,10c)は、互いに異なる無線通信ネットワークに対応している。
制御手段91(例えば、制御部11)は、パケット転送手段92がパケットを出力すべき通信インタフェース93を規定したール(例えば、フローエントリ)を生成することによって、パケット転送手段92を制御する。
パケット転送手段92は、ルールに従って、パケットをルールで規定された通信インタフェース93から出力する。
制御手段91は、少なくとも、位置計測手段94によって計測された位置に基づいて、ルールで規定されている通信インタフェースを更新する。
そのような構成によって、種類の異なる無線通信ネットワークを跨るハンドオーバを適切な条件を契機に行うことができる。
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
(付記1)パケットを転送するパケット転送手段と、 前記パケット転送手段の位置を計測する位置計測手段と、互いに異なる無線通信ネットワークに対応する複数の通信インタフェースと、前記パケット転送手段がパケットを出力すべき通信インタフェースを規定したールを生成することによって、前記パケット転送手段を制御する制御手段とを備え、前記パケット転送手段は、前記ルールに従って、パケットを前記ルールで規定された通信インタフェースから出力し、制御手段は、少なくとも、前記位置計測手段によって計測された位置に基づいて、前記ルールで規定されている通信インタフェースを更新することを特徴とする通信システム。
(付記2)通信インタフェースに対応する無線通信ネットワークの通信品質を計測する通信品質計測手段を備え、制御手段は、少なくとも、位置計測手段によって計測された位置と、前記通信品質計測手段によって計測された無線通信ネットワークの通信品質とに基づいて、ルールで規定されている通信インタフェースを更新する付記1に記載の通信システム。
(付記3)制御手段は、位置計測手段によって計測された位置と、少なくとも、天候、時間帯、曜日、日付、パケット転送手段の移動経路近傍で開催されるイベントの有無の一部または全部とに基づいて、ルールで規定されている通信インタフェースを更新する付記1または付記2に記載の通信システム。
(付記4)制御手段は、ルールを更新する条件と、当該条件が満たされたときのルールの更新内容とを表す更新情報を提供する制御装置から前記更新情報を受信し、前記更新情報に従って、ルールで規定されている通信インタフェースを更新する付記1から付記3のうちのいずれかに記載の通信システム。
(付記5)パケット転送手段、位置計測手段、複数の通信インタフェース、および制御手段がルータに設けられ、前記ルータは、乗り物に設置される付記1から付記4のうちのいずれかに記載の通信システム。