以下、添付図面を参照しながら、本発明に係る無線通信システムおよび無線通信方法の一実施形態を詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。また、各実施形態は、内容を矛盾させない範囲で、適宜組み合わせることができる。
本実施形態に係る無線通信システムは、複数のアクセスポイントと、前記アクセスポイントが使用する周波数チャネルの割り当てを行う制御装置とを備えた無線通信システムにおいて、制御装置は、アクセスポイントが送信するデータのデータ転送速度を予測する。また、制御装置は、複数のアクセスポイント間の干渉関係を検出する。次に、制御装置は、予測したデータ転送速度と、アクセスポイント間の干渉関係とに基づいて、複数のアクセスポイント間の干渉データ量を算出する。そして、制御装置は、干渉データ量に基づいて、複数のアクセスポイントに対して、周波数チャネルを割り当てる。これにより、無線通信ネットワークにおいて、最適な無線チャネルを割り当てることにより無線通信性能の劣化を防止することができる。
本実施形態に係る無線通信システムは、制御装置と、複数の転送装置と、複数のアクセスポイントとで主要に構成され、各アクセスポイントに対して最適な周波数チャネルを割り当てることができる無線通信システムである。
まず、図23〜図25を用いて、本実施形態に係るOpenFlow技術について説明する。図23は、OpenFlowの制御部と転送部について説明する図である。
図23に示すように、OpenFlowでは、これまで1つのネットワーク装置の内部に存在していた経路制御の機能(Control Plane)とデータ転送の機能(Data Plane)とを、それぞれ別の装置に分離し、OpenFlowコントローラと呼ばれる制御装置が複数の転送装置(OpenFlowスイッチ)の動作を一括して管理する。ネットワーク管理者は各スイッチの動作を記述した「フローテーブル」(flow table)を作成し、OpenFlowコントローラがこれをOpenFlowプロトコルによって送信し、各OpenFlowスイッチはフローテーブルに基づいてデータの転送や破棄、宛先の書き換えなどを実行する。フローテーブルに記述する条件として利用できる情報には、OpenFlowスイッチの物理ポートの番号や送信元/宛先MACアドレス、VLAN ID、MPLSラベル、送信元/宛先IPアドレス、TCP/UDPのポート番号などがあり、レイヤ1(物理層)からレイヤ4(トランスポート層)まで幅広く対応している。各レイヤの情報を組み合わせて条件を記述するといった高度な制御も可能である。
また、ネットワーク中の各OpenFlowスイッチには、OpenFlowコントローラが各OpenFlowスイッチを識別するためのDatapath IDと呼ばれる64bitの識別子が割り当てられる。また、OpenFlowスイッチは、条件(ヘッダフィールド)にマッチしたパケットに対して、アクションで指定された動作を行う。ヘッダフィールド、アクションおよび統計情報の組をフローエントリーと呼ぶ。このフローエントリーは、OpenFlowコントローラにより生成され、OpenFlowプロトコルによって、OpenFlowスイッチへと送られる。送られたフローエントリーはOpenFlowスイッチ中のフローテーブルに格納される。なお、フローエントリーの詳細については後述する。
図24は、OpenFlowのヘッダフィールドについて説明する図である。図24に示すように、例えば、ヘッダフィールドは12種類のフィールドで(OpenFlow V1.0の場合)、受信したパケットを識別するための条件として用いられる。フロー識別に使用しないフィールドにはワイルドカードを指定することで、任意のフィールドのみを条件として用いることができる。例えば、「受信ポート番号が1であり、且つ宛先MACアドレスがFF:FF:FF:FF:FF:FF」や「IPパケットであり、その送信元IPアドレスが192.168.1.1」である、などといった条件を指定することができる。図24の例では、フィールドは、Ingress port(受信ポート)、Ethernet(登録商標) src addess(送信元MACアドレス)、Ethernet dst addess(宛先MACアドレス)、Ethernet type(プロトコル種別)、VLAN id(VLAN ID)、VLAN priority(VLAN PCP値)、IP src address(IP送信元アドレス)、IP dst address(IP宛先アドレス)、IP protocol number(プロトコル番号)、IP ToS bits(ToS値)、Transport src port(送信元ポート番号)、Transport dst port(宛先ポート番号)の12種類が例示されている。
図25は、OpenFlowのアクションについて説明する図である。図25に示すように、アクションは、ヘッダフィールドにマッチしたパケットの処理を指定するものである。図25の例は、仕様で規定されているアクションであり、例えば、1つのフローに対して、複数のアクションを指定することも可能である。例えば、「宛先IPアドレスを書き換えた上での指定のポートからの出力」や、「指定のポートから出力させた後、さらに別のポートからも出力」といった動作を指定できる。また、図25の例では、Forward(パケットを転送する)、Enqueue(指定のキューに入れる)、Drop(パケットを破棄する)、Modify−Field(指定のフィールドを書き換える)の4種類が例示されている。Forwardアクションには、出力先のポート番号が指定される。また、OpenFlowスイッチが実際に持つポートの他に、特殊な用途に用いるための論理ポートが定義されている。Modify−Fieldアクションでは、フィールドの書き換えが定義されている。ルータ機能を実現する際に必要となるMACアドレスの書き換えや、NAT機能を実現する際のIPアドレス、TCP/UDPポート番号の書き換えなどを行うことができる。
図23で示したように、OpenFlowスイッチは、OpenFlowコントローラから制御されている。OpenFlowコントローラとOpenFlowスイッチとの間は、TCPまたはTLS(Transport Layer Security)を用いて接続されている。OpenFlowコントローラとOpenFlowスイッチ間の接続のために、別途レガシーネットワークを用意して、その上でTCP/TLSコネクションを張る構成が一般的である。どちらからコネクションの開設を行うかは仕様中に規定されていないが、現状ではスイッチ側から行う実装が一般的である。このTCP/TLSコネクションを用いて、OpenFlowコントローラとOpenFlowスイッチ間の通信に用いられるのがOpenFlowプロトコルである。OpenFlowプロトコルには、OpenFlowメッセージが定義されている。
本実施形態において使用するOpenFlowメッセージとしては、例えば、以下を例示することができる。
(Packet Inメッセージ)
フローテーブル中にマッチするフローがなかった場合、受信パケットをOpenFlowコントローラへと送るために用いられる。このメッセージで送られるパケットを元にフローを作成するなど、OpenFlow特有の処理を実現するために欠かせないメッセージである。
(Packet Outメッセージ)
Packet InでOpenFlowコントローラに送られてきたパケットを本来の宛先に送るために、OpenFlowスイッチ側へと送り返す際に用いられる。また、OpenFlowコントローラが独自に作ったパケットを出力させる際にも用いられる。
(Flow Modメッセージ)
OpenFlowコントローラが作ったフローをOpenFlowスイッチへと送るために用いられる。その際に、フローを設定してから一定時間後に消すためのハードタイムアウトと、フローが参照されない時間が一定時間経過した後に消すためのアイドルタイムアウトの、2種類のタイムアウト値を設定できる。
(Stats Request/Replyメッセージ)
統計情報を取得するために用いられる。OpenFlowコントローラから統計情報を取得するStats Requestメッセージを要求し、OpenFlowスイッチはStats Requestメッセージに対する応答であるStats Replyメッセージを送信する。具体的には、OpenFlowコントローラから各アクセスポイントのデータ転送量の送信要求(Stats Request)をOpenFlowスイッチに送信し、OpenFlowスイッチからStats Requestメッセージに対する応答であるStats Replyメッセージを受信して、受信したStats Replyメッセージを解析し、各アクセスポイントのデータ転送量を取得する。
本実施形態では、以上で説明したようなOpenFlowメッセージを例示することができる。
(第1の実施形態)
次に、図1を用いて、第1の実施形態に係る無線通信システム1の全体システム構成例について説明する。図1は、第1の実施形態に係る無線通信システムの全体システム構成の一例を示す図である。
図1に示すように、無線通信システム1は、OpenFlowコントローラ(制御装置)10と、Gateway20と、複数のOpenFlowスイッチ(転送装置)30a、30bと、複数のアクセスポイント40A〜40Dと、複数の無線端末(無線通信端末、例えば、スマートフォン、タブレットPCなど)50a〜50fと、無線通信エリア60a〜60dと、通信網(インターネット網)70とを備える。以下、OpenFlowスイッチ30a、30bを区別する必要がない場合には、OpenFlowスイッチ30と表記する。また、アクセスポイント40A〜40Dを区別する必要がない場合には、アクセスポイント40と表記する。また、無線端末50a〜50fを区別する必要がない場合には、無線端末50と表記する。また、無線通信エリア60a〜60dを区別する必要がない場合には、無線通信エリア60と表記する。なお「アクセスポイント」は、例えば、無線LANアクセスポイント(wireless LAN access point)を示し、以下、「アクセスポイント」を「AP」とも表記する。また、制御装置は、OpenFlow技術で用いられるOpenFlowコントローラであり、転送装置は、OpenFlow技術で用いられるOpenFlowスイッチである。なお、「OpenFlowコントローラ」は請求項に記載の「制御装置」に対応し、「OpenFlowスイッチ」は請求項に記載の「転送装置」に対応する。
図1に示すアクセスポイント40A〜40Dは、複数の周波数チャネルが使用可能である。アクセスポイント40A〜40Dの無線通信エリア60a〜60d内には、アクセスポイント40と接続する無線端末50が存在する。例えば、アクセスポイント40Aに対して、無線端末50aが存在し、アクセスポイント40Bに対して、複数の無線端末50b、50cが存在し、アクセスポイント40Cに対して、複数の無線端末50d、50eが存在し、アクセスポイント40Dに対して、無線端末50fが存在している。複数の無線端末50は、例えば、無線LAN規格、IEEE802.11.gによりアクセスポイント40と接続し、OpenFlowスイッチ30及びGateway20を介して、例えば、通信網(インターネット網)70を経由して各種の通信を行う。
図1の例において、OpenFlowコントローラ10は、GateWay20を介してOpenFlowスイッチ30と接続され、IPアドレスが192.168.1.2であることを示している。また、GateWay20は、IPアドレスが192.168.1.1であることを示している。また、OpenFlowスイッチ30aは、IPアドレスが192.168.1.3であり、アクセスポイント40Aとポート2により接続され、アクセスポイント40Bとポート4により接続されていることを示している。
また、アクセスポイント40Aは、IPアドレスが192.168.1.5であり、MACアドレスが00−01−02−03−04−10であり、隣のAP40CのMACアドレスが00−01−02−03−04−11、及び隣のAP40BのMACアドレスが00−01−02−03−04−12であることを示している。なお、図1において、「隣のAP」を「隣AP」と表記しているが、両方とも同義である。以下、同様である。
また、アクセスポイント40Bは、IPアドレスが192.168.1.7であり、MACアドレスが00−01−02−03−04−12であり、隣のAP40AのMACアドレスが00−01−02−03−04−10、及び隣のAP40CのMACアドレスが00−01−02−03−04−11であることを示している。
また、OpenFlowスイッチ30bは、IPアドレスが192.168.1.4であり、アクセスポイント40Cとポート3により接続され、アクセスポイント40Dとポート5により接続されていることを示している。
また、アクセスポイント40Cは、IPアドレスが192.168.1.6であり、MACアドレスが00−01−02−03−04−11であり、隣のAP40AのMACアドレスが00−01−02−03−04−10、隣のAP40BのMACアドレスが00−01−02−03−04−12、及び隣のAP40DのMACアドレスが00−01−02−03−04−13であることを示している。
また、アクセスポイント40Dは、IPアドレスが192.168.1.8であり、MACアドレスが00−01−02−03−04−13であり、隣のAP40CのMACアドレスが00−01−02−03−04−11であることを示している。
なお、図1の例において、隣のAP(隣AP)とは、アクセスポイント(AP)40の無線通信エリア60が重複しているAPのことを示す。例えば、アクセスポイント40Aでは、アクセスポイント40B、40Cと無線通信エリア60が重複している。また、アクセスポイント40Bでは、アクセスポイント40A、40Cと無線通信エリア60が重複している。また、アクセスポイント40Cでは、アクセスポイント40A、40B、40Dと無線通信エリア60が重複している。また、アクセスポイント40Dでは、アクセスポイント40Cと無線通信エリア60が重複している。
なお、図1では、OpenFlowコントローラ10と接続されるOpenFlowスイッチ30の台数が2台である場合を例示しているが、これに限らず、OpenFlowスイッチ30の台数は任意である。また、OpenFlowスイッチ30と接続されるアクセスポイント40の台数が2台である場合を例示しているが、これに限らず、アクセスポイント40の台数は任意である。また、アクセスポイント40と接続される無線端末50の台数が1〜2台である場合を例示しているが、これに限らず、無線端末50の台数は任意である。
次に、図2を用いて、OpenFlowコントローラ10、Gateway20、OpenFlowスイッチ30、アクセスポイント40及び無線端末50の機能について説明する。図2は、OpenFlowコントローラ、Gateway、OpenFlowスイッチ、アクセスポイント及び無線端末の機能構成の一例を示すブロック図である。
まず、OpenFlowコントローラ10の機能構成の一例について説明する。図2に示すように、OpenFlowコントローラ10は、I/F部101と、通信部102と、記憶部103と、検出部104と、解析判断部105と、算出部106と、予測部107と、割当部108と、制御部109とを有する。上記各部については、これらの一部又は全部がソフトウェア(プログラム)であってもよいし、ハードウェア回路であってもよい。また、上記各部のうちの一部がOpenFlowコントローラ(制御装置)10に搭載される形態であってもよい。
I/F部101は、外部装置等と通信するためのインタフェースである。I/F部101は、例えば、Gateway20を介してOpenFlowスイッチ30と接続する。また、I/F部101は、Gateway20及びOpenFlowスイッチ30を介して各アクセスポイント40と接続する。
通信部102は、制御部109の制御の下、複数のOpenFlowスイッチ30a、30b及び複数のアクセスポイント40A〜40Dと通信し、例えば、複数のアクセスポイント40A〜40Dから接続リクエストを受信し、接続リクエストに対する応答を送信する。具体的には、通信部102は、各アクセスポイント40から接続リクエストを受信した後に、例えば、接続リクエストに対して応答する場合には、UDPプロトコルを用いて「接続」を各アクセスポイント40に対して応答し、全てのアクセスポイント40と接続する。すなわち、接続レスポンスをUDPメッセージ部として送信し、各アクセスポイント40と接続する。
また、通信部102は、各アクセスポイント40からUDPプロトコルを用いて、自身のMACアドレスと隣のアクセスポイント40のMACアドレスを受信する。すなわち、通信部102は、各アクセスポイント40から自身のMACアドレスと隣のアクセスポイント40のMACアドレスをUDPメッセージ部として受信する。
また、通信部102は、制御部109の制御の下、UDPプロトコルを用いて、Flow Modメッセージを用いて、OpenFlowスイッチ30にフローエントリーを送信する。
また、通信部102は、制御部109の制御の下、「pingコマンド」を各アクセスポイントに送信し、各アクセスポイントが実施したOpenFlowコントローラ10との間の「ping」動作の実施結果である「pingパケット」を受信する。すなわち、通信部102は、「pingコマンド」をUDPメッセージ部として各アクセスポイント40から受信する。
また、通信部102は、OpenFlowスイッチ30からPacket Inメッセージを用いて、pingパケットの内容を受信する。
また、通信部102は、制御部109の制御の下、周期的に、Stats RequestメッセージをOpenFlowスイッチ30に送信し、OpenFlowスイッチ30からStats Replyメッセージを受信する。具体的には、通信部102は、周期的に各アクセスポイント40のデータ転送量の送信要求をOpenFlowスイッチ30に送信し、OpenFlowスイッチ30から送信要求の応答である各アクセスポイントのデータ転送量を受信する。
また、通信部102は、制御部109の制御の下、後述する割当部108が各アクセスポイント40に対して割り当てた周波数チャネルを各アクセスポイント40に送信する。すなわち、UDPプロトコルを用いて、各アクセスポイント40に周波数チャネル割当結果を送信して、最適な周波数チャネルの割り当てを指定する。
記憶部103は、制御部109の制御の下、各種の情報を記憶する。記憶部103は、例えば、自身のIPアドレス、MACアドレスなどを記憶する。
また、記憶部103は、制御部109の制御の下、通信部102で受け付けた各アクセスポイント40のIPアドレス、MACアドレス、隣のアクセスポイント40のMACアドレスなどを記憶する。
また、記憶部103は、解析判断部105で解析して取得した各OpenFlowスイッチ30の各ポートのデータ転送量(各アクセスポイント40のデータ転送量)を記憶する。
また、記憶部103は、後述する予測部107が予測した各アクセスポイント40が送信するデータのデータ転送速度を記憶する。また、記憶部103は、後述する算出部106が算出した複数のアクセスポイント40間の干渉データ量を記憶する。
検出部104は、複数のアクセスポイント40間の干渉関係を検出する。具体的には、検出部104は、自らのMACアドレスおよび他のアクセスポイントのMACアドレスに基づいて、各アクセスポイント40間の干渉関係を検出する。すなわち、検出部104は、例えば、各アクセスポイント40の間に干渉関係があるか否かを検出する。検出部104は、干渉関係の検出結果を記憶部103、解析判断部105に受け渡す。なお、干渉関係の検出方法については後述する。
解析判断部105は、OpenFlowスイッチ30を介して各アクセスポイント40から受信したPacket Inメッセージを解析し、各アクセスポイントのIPアドレス、各アクセスポイント40のMACアドレス及びOpenFlowスイッチ30の接続ポートを抽出(後述する図7参照)し、各アクセスポイント40とOpenFlowスイッチ30の接続関係を判断する。解析判断部105は、判断した各アクセスポイント40とOpenFlowスイッチ30の接続関係を算出部106に受け渡す。
また、解析判断部105は、検出部104で検出した各アクセスポイント40間の干渉関係に基づいて、各アクセスポイント40間で干渉関係が発生する虞があるか否かを判断する。具体的には、解析判断部105は、検出部104が各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出した結果である、後述する図6を参照して、各アクセスポイント40間で干渉関係が発生する虞があるか否かを判断する。
また、解析判断部105は、OpenFlowスイッチ30から各アクセスポイント40のデータ転送量を周期的に取得する。具体的には、解析判断部105は、OpenFlowスイッチ30からStats Requestメッセージに対する応答であるStats Replyメッセージを受信して、受信したStats Replyメッセージを解析し、各OpenFlowスイッチ30の各ポートのデータ転送量(各アクセスポイント40のデータ転送量)を取得する。解析判断部105は、取得した各OpenFlowスイッチ30の各ポートのデータ転送量を記憶部103、算出部106に受け渡す。
算出部106は、予測したデータ転送速度と、アクセスポイント40間の干渉関係とに基づいて、複数のアクセスポイント40間の干渉データ量を算出する。
算出部106は、各アクセスポイント40が送信するデータのデータ転送速度を下記式(1)により算出する。
データ転送速度XN=TN時刻からTN+1時刻までの間のデータ転送速度=(TN+1時刻のデータ転送量−TN時刻のデータ転送量)/(TN+1時刻−TN時刻)・・・(1)
(式中、XNはTN時刻からTN+1時刻までの間のデータ転送速度を表し、TN、TN+1は時刻を表し、Nは1以上の整数を表す。)
なお上記式(1)のTN、及びTN+1は、例えば、差が一定期間となるように定められる。すなわち、具体的には、TN、及びTN+1は、例えば、100秒ごとに(TN+1−TN=100)定められる。
また、算出部106は、後述する予測部107が予測した各アクセスポイント40が送信するデータのデータ転送速度(予測したデータ転送速度)と、検出部104が検出した各アクセスポイント40間の干渉関係とに基づいて、複数のアクセスポイント40間の干渉データ量(Sum値)を算出する。すなわち、算出部106は、後述するように、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、Sum値を算出する。Sum値は、OpenFlow無線通信ネットワークの中で、干渉関係が発生する場合には、干渉関係が発生する全てのアクセスポイント40間の予測したデータ転送速度の和を示すものである。具体的には、Sum値は、図1に示した干渉関係おいて、例えば、以下のように算出される。
Sum値=(アクセスポイント40Aの予測したデータ転送速度+アクセスポイント40Bの予測したデータ転送速度)+(アクセスポイント40Aの予測したデータ転送速度+アクセスポイント40Cの予測したデータ転送速度)+(アクセスポイント40Bの予測したデータ転送速度+アクセスポイント40Cの予測したデータ転送速度)+(アクセスポイント40Cの予測したデータ転送速度+アクセスポイント40Dの予測したデータ転送速度)
そして、算出部106は、算出した干渉データ量(Sum値)を割当部108に受け渡す。
予測部107は、アクセスポイント40が送信するデータのデータ転送速度を予測する。また、予測部107は、データ転送速度を、アクセスポイント40のデータ転送量に基づいて予測する。
また、予測部107は、下記式(2)により、アクセスポイント40が送信するデータのデータ転送速度を予測データ転送速度として予測する。
データ転送速度XN+1=W×(TN時刻からTN+1時刻までの間のデータ転送速度)+(1−W)×(TN−1時刻からTN時刻までの間のデータ転送速度)・・・(2)
(式中、XN+1はTN+1時刻からTN+2時刻までの間のデータ転送速度を表し、TN−1、TN、TN+1、TN+2は時刻を表し、Nは1以上の整数を表し、Wは0<W<1の範囲を表す。)
なお上記式(2)のTN−1、TN、TN+1、及びTN+2は、例えば、差が一定期間となるように定められる。すなわち、具体的には、TN、及びTN+1は、例えば、100秒ごとに(TN+2−TN+1=TN+1−TN=TN−TN−1=100)定められる。
割当部108は、各アクセスポイント40が電波干渉を起こさないように、算出部106で算出した干渉データ量(Sum値)に基づいて、複数のアクセスポイント40に対して、周波数チャネルを割り当てる。すなわち、割当部108は、干渉データ量(Sum値)が最小となるように、複数のアクセスポイント40に対して、周波数チャネルを割り当てる。
割当部108は、予測した各アクセスポイント40のデータのデータ転送速度と、各アクセスポイント40の間の干渉関係に基づいて、UDPプロトコルを用いて、電波干渉を防ぐため、例えば、IEEE802.11.gの場合は、周波数チャネルを5チャネル以上の間隔をあけて、各アクセスポイントに対して、例えば、1ch/6ch/11chの内の1つの周波数チャネルを割り当てる。なお、周波数チャネルを割り当てる間隔は、例えば、(1ch/7ch/12ch)、(1ch/8ch/13ch)、(2ch/7ch/12ch)、(3ch/8ch/13ch)などでもよい。
また、割当部108は、干渉データ量(Sum値)が最小となるように全てのアクセスポイント40に周波数チャネルを割り当てる。
制御部109は、OpenFlowコントローラ10の全体を制御する。また、制御部109は、上記の各機能部の処理を統括的に制御する。
次に、Gateway20の機能の一例について説明する。まず、Gateway20は、ネットワーク上で、媒体やプロトコルが異なるデータを相互に変換して通信を可能にする機器である。Gateway20は、例えば、OSI(Open Systems Interconnection)参照モデルの全階層を認識し、通信媒体や伝送方式の違いを吸収して異機種間の接続を可能とする機能を有する。また、Gateway20は、例えば、ウィルスチェック処理を行う機能を有することもできる。Gateway20がウィルスチェック処理機能を有することで、例えば、各通信端末側でウィルスのパターンファイルを管理する必要がない。
次に、OpenFlowスイッチ30の機能構成の一例について説明する。図2に示すように、OpenFlowスイッチ30は、I/F部301と、通信部302と、記憶部303と、取得部304と、制御部305とを有する。上記各部については、これらの一部又は全部がソフトウェア(プログラム)であってもよいし、ハードウェア回路であってもよい。また、上記各部のうちの一部がOpenFlowスイッチ(転送装置)30に搭載される形態であってもよい。
I/F部301は、外部装置等と通信するためのインタフェースである。I/F部301は、例えば、Gateway20を介してOpenFlowコントローラ10と接続する。また、I/F部301は、アクセスポイント40と接続する。
通信部302は、制御部305の制御の下、OpenFlowコントローラ10及び複数のアクセスポイント40A〜40Dと通信する。
通信部302は、OpenFlowコントローラ10からFlow Modメッセージを用いて、フローエントリーを受信し、記憶部303に受け渡す。
また、通信部302は、例えば、各アクセスポイント40から、「pingパケット」を受信し、OpenFlowコントローラ10に送信する。すなわち、通信部302は、制御部305の制御の下、記憶部303に記憶されているフローテーブル中のフローエントリーに基づいて、Packet Inメッセージを用いて、pingパケットの内容をOpenFlowコントローラ10に送信する。
また、通信部302は、OpenFlowコントローラ10から周期的に、Stats Requestメッセージを受信する。そして、通信部302は、制御部305の下、Stats Requestメッセージを受信すると、Stats ReplyメッセージをOpenFlowコントローラ10に返信する。つまり、通信部302は、制御部305の制御の下、OpenFlowスイッチ30の各ポートのデータ転送量をPacket Inメッセージを用いて、OpenFlowコントローラ10に送信する。
また、通信部302は、OpenFlowコントローラ10からの送信要求に基づき、各アクセスポイント40のデータ転送量を周期的にOpenFlowコントローラ10に対して送信する。
記憶部303は、各種の情報を記憶する。記憶部303は、例えば、自身のIPアドレスなどを記憶する。記憶部303は、例えば、フローエントリーを記憶する。このフローエントリーは、OpenFlowコントローラ10により生成され、OpenFlowプロトコルを使って、OpenFlowスイッチ30へと送信されるものである。すなわち、OpenFlowコントローラ10は、Flow Modメッセージを用いて、フローエントリーをOpenFlowスイッチ30に対して送信し、OpenFlowスイッチ30は通信部302を介して受け付けたフローエントリーを記憶部303に記憶する。
なお、記憶部303は、新たにフローエントリーを受け付けた場合、既に記憶部303に記憶されているフローエントリーに追加、更新する。
ここで、図3を用いて、フローエントリーについて説明する。図3は、OpenFlowスイッチのフローエントリーの一例について説明する図である。図3に示すように、フローエントリーは、ヘッダフィールド(マッチ条件)、アクションおよび統計情報の組を示す情報である。
ヘッダフィールド(マッチ条件)は、受信したパケットを識別するための条件として用いられる。
アクションは、ヘッダフィールドにマッチしたパケットの処理を指定する。例えば、1つのフローに対して、複数のアクションを指定することも可能である。例えば、「宛先IPアドレスを書き換えた上での指定のポートからの出力」や、「指定のポートから出力させた後、さらに別のポートからも出力」といった動作を指定できる。
統計情報は、「同じフローエントリーに従って流れるフレームが、無線ネットワーク内にどのくらいあるか」が書き込まれている。例えば、無線ネットワーク上に流れる同種のフレームの数、その合計トラフィック量が何バイトあるかなどの情報である。よって、本実施形態では、フローエントリーの情報を用いて、容易にトラフィック量を検出することが可能である。
なお、SNMP(Simple Network Management Protocol:ネットワーク管理プロトコル)は、SNMPパケットの漏えいを防ぐセキュリティメカニズムがないため(例えば、SNMPv1及びSNMPv2cの場合)、本実施形態のように、キュアチャネル(OpenFlowスイッチ30−OpenFlowコントローラ10間の通信インタフェース)を用いて、フローエントリーの情報を転送するほうが安全性を高くできる。
また、SNMPの場合には、エージェントのIPアドレスと、SNMPマネージャのIPアドレスとを一致させるように事前に設定する必要がある。そのため、本実施形態のように、エージェントのIPアドレスと、SNMPマネージャのIPアドレスとを一致させるように事前に設定しないほうが手間をかける必要がない。
図3の例では、ヘッダフィールド(マッチ条件)は、Ethernet src address(送信元MACアドレス)が00−01−02−03−04−10であり、Ethernet dst address(宛先MACアドレス)が00−01−02−03−04−20であり、IP src addresss(IP送信元アドレス)が192.168.1.5であり、IP dst addresss(IP宛先アドレス)が192.168.1.2であり、Ethernet type(プロトコル種別)がUDPであることを示している。また、アクションは、Controller(Packet Inとして、コントローラへと送信)であることを示している。なお、統計情報の記載については省略する。
図2に戻って説明する。取得部304は、アクセスポイント40のデータ転送量を周期的に取得し、通信部302を介して取得したデータ転送量を周期的にOpenFlowコントローラ10に対して送信する。具体的には、取得部304は、OpenFlowコントローラ10から周期的に、Stats Requestメッセージを受信し、制御部305の下、各ポートのデータ転送量(各アクセスポイント40のデータ転送量)を取得する。そして、取得部304は、制御部305の下、Stats Requestメッセージに対する応答であるStats ReplyメッセージをOpenFlowコントローラ10に返信する。なお、Stats ReplyメッセージにはOpenFlowスイッチ30の各ポートのデータ転送量の情報が含まれている。
制御部305は、OpenFlowスイッチ30の全体を制御する。また、制御部305は、上記の各機能部の処理を統括的に制御する。
次に、アクセスポイント40A、40Bの機能構成の一例について説明する。図2に示すように、アクセスポイント40A、40Bは、I/F部401a、bと、通信部402a、bと、記憶部403a、bと、設定部404a、bと、制御部405a、bとを有する。上記各部については、これらの一部又は全部がソフトウェア(プログラム)であってもよいし、ハードウェア回路であってもよい。また、上記各部のうちの一部がアクセスポイント40に搭載される形態であってもよい。以下では、アクセスポイント40A、40Bの機能構成は同様であるため、アクセスポイント40A、40Bを区別せずに、アクセスポイント40と表記し、各機能部を、I/F部401、通信部402、記憶部403、設定部404、制御部405と表記する。
I/F部401は、外部装置等と通信するためのインタフェースである。I/F部401は、例えば、OpenFlowスイッチ30と接続する。また、I/F部401は、例えば、OpenFlowスイッチ30及びGateWay20を介してOpenFlowコントローラ10と接続する。具体的には、I/F部401は、制御部405の制御の下、UDPプロトコル(User Datagram Protocol)を用いてOpenFlowコントローラ10のIPアドレスを取得し、取得したIPアドレスを用いて、OpenFlowコントローラ10に接続リクエストを送信し、OpenFlowコントローラ10と接続する。
通信部402は、無線通信エリア60内にある複数の無線端末50と、例えば、無線LANにより接続し、各種の通信を行う。具体的には、通信部402は、複数の無線端末50との間でデータの送受信を行う。
また、通信部402は、OpenFlowコントローラ10及びOpenFlowスイッチ30と通信する。通信部402は、制御部405の制御の下、例えば、OpenFlowコントローラ10からUDPプロトコルを用いて、「pingコマンド」を受信し、OpenFlowコントローラ10との「ping」動作を実施した結果である「pingパケット」をOpenFlowスイッチ30に対して送信する。
また、通信部402は、制御部405の制御の下、例えば、OpenFlowコントローラ10のIPアドレスを用いてOpenFlowコントローラ10に接続リクエストを送信する。すなわち、通信部402は、UDPプロトコルを用いて、OpenFlowコントローラ10に接続リクエストを送信する。そして、通信部402は、接続リクエストに対する応答である、UDPプロトコルを用いた「接続」を受信し、I/F部401を介してOpenFlowコントローラ10と接続する。つまり、通信部402は、制御部405の制御の下、例えば、UDPメッセージ部を利用し、OpenFlowコントローラとの間で必要な情報を送受信する。
また、通信部402は、制御部405の制御の下、周期的に自身のMACアドレスを含んだビーコンフレームを送信すると共に、他のアクセスポイントのMACアドレスを含んだビーコンフレームを受信し、自身のMACアドレスおよび他のアクセスポイントのMACアドレスをOpenFlowコントローラ10に送信する。具体的には、通信部402は、制御部405の制御の下、周期的にbeaconフレームを送信し、他のアクセスポイント40からのbeaconフレームを受信する。なお、ビーコン信号には、アクセスポイント(無線LANアクセスポイント)のESSID(Extended Service Set Identifier)やMACアドレス、電界強度などの情報が含まれている。このようにして取得したMACアドレスを、通信部402は、制御部405の制御の下、UDPプロトコルを用いて、自身のMACアドレスと隣のアクセスポイント40のMACアドレスをOpenFlowコントローラ10に送信する。
また、通信部402は、制御部405の制御の下、OpenFlowコントローラ10から最適な周波数チャネルの割り当てを指定した周波数チャネル割当結果を受信する。
記憶部403は、各種の情報を記憶する。記憶部403は、例えば、自身のIPアドレス、MACアドレスなどを記憶する。
また、記憶部403は、隣のアクセスポイント(AP)40のMACアドレスなどを記憶する。具体的には、記憶部403は、例えば、他のアクセスポイント40のMACアドレスを含んだbeacon(ビーコン)フレームを通信部402を介して受信した場合には、送信元のアクセスポイント40を隣のアクセスポイント40と判断し、隣のアクセスポイントのMACアドレスとして記憶する。
また、記憶部403は、通信部402を介して、OpenFlowコントローラ10から受信した、最適な周波数チャネルの割り当てを指定した周波数チャネル割当結果を記憶する。
設定部404は、OpenFlowコントローラ10にて割り当てられた周波数チャネルの割当結果を通信部402を介して受け付けて、自信の周波数チャネルを指定された周波数チャネルに設定する。
制御部405は、アクセスポイント40の全体を制御する。また、制御部405は、上記の各機能部の処理を統括的に制御する。
次に、無線端末50a、50bの機能構成の一例について説明する。図2に示すように、無線端末50a、50bは、通信部501a、501bと、制御部502a、502bとを有する。上記各部については、これらの一部又は全部がソフトウェア(プログラム)であってもよいし、ハードウェア回路であってもよい。また、上記各部のうちの一部が無線端末50に搭載される形態であってもよい。以下では、無線端末50a、50bの機能構成は同様であるため、無線端末50a、50bを区別せずに、無線端末50と表記し、各機能部を、通信部501、制御部502と表記する。
通信部501は、アクセスポイント40と通信する。通信部501は、様々な無線通信規格に対応可能である。通信部501は、アクセスポイント40と、例えば、無線LAN規格、IEEE802.11.gにより接続し、各種の通信を行う。また、通信部501は、アクセスポイント40と接続し、OpenFlowスイッチ30及びGateway20を介して、例えば、通信網(インターネット網)70を経由して各種の通信を行う。
制御部502は、無線端末50の全体を制御する。また、制御部502は、上記の各機能部の処理を統括的に制御する。
なお、上記で説明したOpenFlowコントローラ10及びOpenFlowスイッチ30の各機能構成については、無線端末50が担うようにしてもよいし、無線端末50に各機能部が搭載される形態であってもよい。
次に、図4を用いて、無線通信システム1の処理動作について説明する。図4は、無線通信システムの基本的な処理動作の一例を示すフローチャート図である。以下、各ステップについて説明する。
[ステップS1]
まず、本実施形態の無線通信システム1の起動に際し、OpenFlowプロトコルをサポートしたOpenFlowコントローラ10、OpenFlowスイッチ30の起動処理を行う(ステップS1)。そして、全てのOpenFlowスイッチ30と、OpenFlowコントローラ10との接続処理を完了する。
[ステップS2]
次に、各アクセスポイント40は、OpenFlowスイッチ30とそれぞれI/F部401、301とを介して接続する(ステップS2)。この際、静的IP(インターネット・プロトコル)アドレス或は、DHCP(動的ホスト構成プロトコル)により割り当てられたIPアドレスを用いて、OpenFlow無線通信ネットワークに加入する。すなわち、各アクセスポイント40は、UDPプロトコル(User Datagram Protocol)を用いてIPアドレスを取得し、OpenFlowコントローラ10と接続する。
具体的には、各アクセスポイント40は、OpenFlowコントローラ10のIPアドレスを用いて、OpenFlowコントローラ10に接続リクエストを送信する。OpenFlowコントローラ10は、各アクセスポイント40から接続リクエストを受信した後に、受信した接続リクエストに応答するか否かを判断する。OpenFlowコントローラ10は、接続リクエストに対して応答する場合には、OpenFlowコントローラ10は「接続」を各アクセスポイント40に対して応答し、各アクセスポイント40と接続する。OpenFlowコントローラ10は、接続リクエストに対して応答しない場合には、OpenFlowコントローラ10は「拒否」を各アクセスポイント40に対して応答し、各アクセスポイント40と接続しない。
さらに具体的には、OpenFlowコントローラ10と全てのOpenFlowスイッチ30が起動された後、例えば、図1に示すように、アクセスポイント40Aは、OpenFlowスイッチ30aのポート2と接続し、アクセスポイント40Bは、OpenFlowスイッチ30aのポート4と接続する。また、アクセスポイント40Cは、OpenFlowスイッチ30bのポート3と接続し、アクセスポイント40Dは、OpenFlowスイッチ30bのポート5と接続する。その後、各アクセスポイント40は、アクセスポイント40AのIPアドレス(192.168.1.5)、アクセスポイント40BのIPアドレス(192.168.1.7)、アクセスポイント40CのIPアドレス(192.168.1.6)、アクセスポイント40DのIPアドレス(192.168.1.8)と、図1の例のように、IPアドレスを割り当て、OpenFlow無線通信ネットワークに加入する。
次に、各アクセスポイント40は、UDPプロトコルを用いて、OpenFlowコントローラ10に接続リクエストを送信する。すなわち、後述の図5に示す接続リクエストをUDPメッセージ部として送信する。OpenFlowコントローラ10は、各アクセスポイント40から接続リクエストを受信した後に、例えば、接続リクエストに対して応答する場合には、UDPプロトコルを用いて「接続」を各アクセスポイント40に対して応答し、全てのアクセスポイント40と接続する。すなわち、後述の図5に示す接続レスポンスをUDPメッセージ部として送信する。この処理動作により、OpenFlowコントローラ10は、各アクセスポイント40と接続する。
本実施形態においては、各アクセスポイント40とOpenFlowコントローラ10との通信は、UDPプロトコルを用いて送受信することが1つの特徴である。なお、UDPプロトコルとは、IPプロトコルをコンテナとして運ばれる上位層プロトコルでOSI(Open Systems Interconnection)の第4層のトランスポート層に相当する機能を持っている。2つの装置間の論理的な通信を実行する機能を持っているが、通信手順は単純になっていて相手をアドレスで特定して単純に送受信するだけになっている。つまり、相手との間の論理的な通信路を確立する手順を必要としないので、複雑な手順が無く、単純な送受信となっている。その代わり、誤りチェックや再送手順が無いので、高信頼な通信が必要な場合には、アプリケーション側でそれを組み込む必要がある。
ここで、図5を用いて、UDPプロトコルの基本フレームフォーマットについて説明する。図5は、UDPプロトコルの基本フレームフォーマットの一例を説明する図である。
図5に示すように、UDPプロトコルの基本フレームフォーマットは、イーサネット(登録商標)ヘッダ部(14バイト)、IPヘッダ部(20バイト)、UDPヘッダ部(8バイト)、UDPメッセージ部(サイズはデータによって異なる)から構成される。実際のUDP部は比較的単純な構造となっている。これがUDPプロトコルの特徴であり、セッションを張る手順が無いので送る相手を特定して単純に送受信するだけになっている。UDP部分のデータの信頼性確保のためにUDP部分にチェックサムが設けられているが、全体の信頼性をチェックするため、チェックサム用だけの仮想的なヘッダを考慮してチェックサムを計算する。このチェックサムのために、間違った相手との通信をする確率を減らすことができる。
ここで、UDPヘッダ部の各フィールドについて説明する。発信元ポート番号は、UDPの送信側のポート番号である。宛先ポート番号は、受信側のポート番号である。UDPデータ長は、UDPヘッダ部とUDPデータ部の合計バイト数である。チェックサムは、仮想ヘッダとUDPヘッダ、データ部を含めたチェックサムの計算範囲で計算したチェックサムである。但し、IPプロトコル区分の前は00Hの固定である。データは、UDPで送受信されるデータ部そのもので、任意のデータとすることが可能である。このようにして指定したポートとの間で、データ部が転送されることになるが、データ部の内容については全くの自由なので、ポート毎に通信する相手同士で内容の取り決めをすれば自由に使うことができる。これを使って組み込みシステムなどの制御をインターネット経由で実現することが可能になる。
また、UDPメッセージ部のサイズはデータによって異なるため、データサイズは0バイト長から任意の長さである。本実施形態でのUDPメッセージ部の使用例としては、例えば、接続リクエスト、接続レスポンス、拒否レスポンス、自身のMACアドレスおよび隣のAPのMACアドレス、pingコマンド、周波数の指定チャネル番号などに使用する。
[ステップS3]
図4に戻って説明を続ける。各アクセスポイント40とOpenFlowスイッチ30とが接続した後、各アクセスポイント40は、周期的にbeaconフレームを送信し、他のアクセスポイントからのbeaconフレームを受信する。なお、ビーコン信号には、アクセスポイント(無線LANアクセスポイント)40のESSID(Extended Service Set Identifier)やMACアドレス、電界強度などの情報が含まれている。各アクセスポイント40は、他のアクセスポイント40からのbeaconフレームを受信する場合には、送信元のアクセスポイント40を隣のアクセスポイント40として判断し、隣のアクセスポイント40のMACアドレスを記憶する。そして、各アクセスポイント40は、UDPプロトコルを用いて、自身のMACアドレスと隣のアクセスポイント40のMACアドレスをOpenFlowコントローラ10に送信する。すなわち、図5で説明したように、自身のMACアドレスと隣のアクセスポイント40のMACアドレスをUDPメッセージ部としてOpenFlowコントローラ10に対して送信する。OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスおよび隣のアクセスポイント40のMACアドレスに基づいて、各アクセスポイント40間の干渉関係を検出する(ステップS3)。
ここで、図6を用いて、各アクセスポイント40間の干渉関係の検出方法について説明する。図6は、OpenFlowコントローラが受信した各アクセスポイントの自身のMACアドレスと隣のアクセスポイントのMACアドレスを説明する図である。
図6の例では、アクセスポイント40Aの自身のMACアドレスが00−01−02−03−04−10、隣APのMACアドレスが00−01−02−03−04−11、00−01−02−03−04−12であることを示している。また、アクセスポイント40Bの自身のMACアドレスが00−01−02−03−04−12、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−11であることを示している。また、アクセスポイント40Cの自身のMACアドレスが00−01−02−03−04−11、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−12、00−01−02−03−04−13であることを示している。また、アクセスポイント40Dの自身のMACアドレスが00−01−02−03−04−13、隣APのMACアドレスが00−01−02−03−04−11であることを示している。
OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出する。すなわち、図6を参照して、アクセスポイント40Aは、アクセスポイント40B及びアクセスポイント40Cとの間に干渉関係があると検出する。アクセスポイント40Bは、アクセスポイント40A及びアクセスポイント40Cとの間に干渉関係があると検出する。アクセスポイント40Cは、アクセスポイント40A、アクセスポイント40B及びアクセスポイント40Dとの間に干渉関係があると検出する。アクセスポイント40Dは、アクセスポイント40Cとの間に干渉関係があると検出する。
つまり、本実施形態の無線通信システム1のOpenFlow無線通信ネットワークにおいて、アクセスポイント40Aとアクセスポイント40Bとの間で干渉が発生する虞がある。アクセスポイント40Aとアクセスポイント40Cとの間で干渉が発生する虞がある。アクセスポイント40Bとアクセスポイント40Cとの間で干渉が発生する虞がある。アクセスポイント40Cとアクセスポイント40Dとの間で干渉が発生する虞がある。そこで、OpenFlowコントローラ10は、これらの4つの干渉関係が発生する虞があると判断する。
上述したように、各アクセスポイント40は、UDPプロトコルを用いて、自身のMACアドレスと隣のアクセスポイントのMACアドレスをOpenFlowコントローラ10に送信する。OpenFlowコントローラ10は、各アクセスポイント40自身のMACアドレスおよび隣のアクセスポイント40のMACアドレスに基づいて、各アクセスポイント40に対して、隣のアクセスポイント40として検出されたアクセスポイント40との間に干渉関係があると判断する。
このように、本実施形態では、各アクセスポイント(通信拠点)40間の干渉関係を検出することが可能となる。
[ステップS4]
図4に戻って説明を続ける。各アクセスポイント40間の干渉関係を検出した後、OpenFlowコントローラ10は、Flow Modメッセージを用いて、OpenFlowスイッチ30にフローエントリーを追加する(ステップS4)。
[ステップS5]
次に、OpenFlowスイッチ30にフローエントリーを追加した後、OpenFlowコントローラ10は、UDPプロトコルを用いて、「pingコマンド」を各アクセスポイント40に要求する。すなわち、OpenFlowコントローラ10は、図5に示した「pingコマンド」をUDPメッセージ部として各アクセスポイント40に対して送信する。そして、各アクセスポイント40は、要求されたとおり、OpenFlowコントローラ10との「ping」動作を実施し、実施した結果のpingパケットをOpenFlowスイッチ30に送信する。OpenFlowスイッチ30は、記憶部303に記憶されているフローテーブル中のフローエントリーに基づいて、Packet Inメッセージを用いて、pingパケットの内容をOpenFlowコントローラ10に送信する。OpenFlowコントローラ10は、受信したPacket Inメッセージを解析し、各アクセスポイント40のIPアドレス、MACアドレス及びOpenFlowスイッチ30の接続ポートを抽出し、各アクセスポイント40とOpenFlowスイッチ30との接続関係を判断する(ステップS5)。
本実施形態においては、OpenFlowコントローラ10は、「pingコマンド」を各アクセスポイント40に要求する。そして、アクセスポイント40Aとアクセスポイント40Bは、pingパケットをOpenFlowスイッチ30aに送信し、アクセスポイント40Cとアクセスポイント40Dは、pingパケットをOpenFlowスイッチ30bに送信する。次に、OpenFlowコントローラ10は、OpenFlowスイッチ30a、30bから受信したPacket Inメッセージを解析し、各アクセスポイント40とOpenFlowスイッチ30のポート接続関係を検出し、各アクセスポイント40とOpenFlowスイッチ30との接続関係を判断する。
ここで、図7を用いて、各アクセスポイント40の接続関係について説明する。図7は、各アクセスポイントの接続関係の一例について説明する図である。
図7に示したのは、OpenFlowコントローラ10が、OpenFlowスイッチ30a、30bから受信したPacket Inメッセージを解析した結果である。アクセスポイント40Aは、IPアドレスが192.168.1.5であり、MACアドレスが00−01−02−03−04−10であり、OpenFlowスイッチ30aのポート2に接続していることを示している。また、アクセスポイント40Bは、IPアドレスが192.168.1.7であり、MACアドレスが00−01−02−03−04−12であり、OpenFlowスイッチ30aのポート4に接続していることを示している。
また、アクセスポイント40Cは、IPアドレスが192.168.1.6であり、MACアドレスが00−01−02−03−04−11であり、OpenFlowスイッチ30bのポート3に接続していることを示している。また、アクセスポイント40Dは、IPアドレスが192.168.1.8であり、MACアドレスが00−01−02−03−04−13であり、OpenFlowスイッチ30bのポート5に接続していることを示している。
[ステップS6]
図4に戻って説明を続ける。各アクセスポイント40とOpenFlowスイッチ30との接続関係を判断した後、OpenFlowコントローラ10は、周期的に、Stats RequestメッセージをOpenFlowスイッチ30に送信する。OpenFlowスイッチ30は、Stats Requestメッセージを受信すると、Stats ReplyメッセージをOpenFlowコントローラ10に返信する。OpenFlowコントローラ10は、受信したStats Replyメッセージを解析し、各OpenFlowスイッチ30の各ポートのデータ転送量を取得する。
ここで、OpenFlowコントローラ10は、例えば、100秒ごとに(TN+1−TN=100)、Stats RequestメッセージをOpenFlowスイッチ30に送信すると仮定する。また、OpenFlowコントローラ10では、Stats Replyメッセージを解析し、各OpenFlowスイッチ30の各ポートのデータ転送量を取得した結果が図8に示した結果であると仮定する。
図8は、各OpenFlowスイッチの各ポートのデータ転送量を取得した結果の一例を示す図である。図8の例では、OpenFlowスイッチ30aのポート2におけるT1時刻のデータ転送量(kb)は、アップロードで8562kb、ダウンロードで10267kbであり、T2時刻のデータ転送量(kb)は、アップロードで10683kb、ダウンロードで14751kbであり、T3時刻のデータ転送量(kb)は、アップロードで12498kb、ダウンロードで17629kbであることを示している。また、OpenFlowスイッチ30aのポート4におけるT1時刻のデータ転送量(kb)は、アップロードで57036kb、ダウンロードで247762kbであり、T2時刻のデータ転送量(kb)は、アップロードで73492kb、ダウンロードで271649kbであり、T3時刻のデータ転送量(kb)は、アップロードで90624kb、ダウンロードで315721kbであることを示している。
また、OpenFlowスイッチ30bのポート3におけるT1時刻のデータ転送量(kb)は、アップロードで3761kb、ダウンロードで4618kbであり、T2時刻のデータ転送量(kb)は、アップロードで5028kb、ダウンロードで6271kbであり、T3時刻のデータ転送量(kb)は、アップロードで6508kb、ダウンロードで8135kbであることを示している。また、OpenFlowスイッチ30bのポート5におけるT1時刻のデータ転送量(kb)は、アップロードで69865kb、ダウンロードで309578kbであり、T2時刻のデータ転送量(kb)は、アップロードで84671kb、ダウンロードで350281kbであり、T3時刻のデータ転送量(kb)は、アップロードで101682kb、ダウンロードで413579kbであることを示している。
上記の図8に示した、取得した各OpenFlowスイッチ30の各ポートのデータ転送量と、抽出して判断した各アクセスポイント40とOpenFlowスイッチ30とのポート接続関係を用いて、各アクセスポイント40のデータ転送速度を上記の算出部106で説明したように上記式(1)を用いて算出する(ステップS6)。
図9は、各アクセスポイントのデータ転送速度を算出した結果の一例を示す図である。図9の例では、アクセスポイント40Aは、OpenFlowスイッチ30aのポート2に接続されており、T1時刻からT2時刻までの間のデータ転送速度(kb/s)は、アップロードで21kb/s、ダウンロードで45kb/sであり、T2時刻からT3時刻までの間のデータ転送速度(kb/s)は、アップロードで18kb/s、ダウンロードで29kb/sであり、データ転送量は、ダウンロードで17629kbであることを示している。
また、アクセスポイント40Bは、OpenFlowスイッチ30aのポート4に接続されており、T1時刻からT2時刻までの間のデータ転送速度(kb/s)は、アップロードで165kb/s、ダウンロードで239kb/sであり、T2時刻からT3時刻までの間のデータ転送速度(kb/s)は、アップロードで171kb/s、ダウンロードで441kb/sであり、データ転送量は、ダウンロードで315721kbであることを示している。
また、アクセスポイント40CはOpenFlowスイッチ30bのポート3に接続されており、T1時刻からT2時刻までの間のデータ転送速度(kb/s)は、アップロードで13kb/s、ダウンロードで17kb/sであり、T2時刻からT3時刻までの間のデータ転送速度(kb/s)は、アップロードで15kb/s、ダウンロードで19kb/sであり、データ転送量は、ダウンロードで8135kbであることを示している。
また、アクセスポイント40DはOpenFlowスイッチ30bのポート5に接続されており、T1時刻からT2時刻までの間のデータ転送速度(kb/s)は、アップロードで148kb/s、ダウンロードで407kb/sであり、T2時刻からT3時刻までの間のデータ転送速度(kb/s)は、アップロードで170kb/s、ダウンロードで633kb/sであり、データ転送量は、ダウンロードで413579kbであることを示している。
[ステップS7]
図4に戻って説明を続ける。各アクセスポイント40のデータ転送速度を算出した後、OpenFlowコントローラ10は、算出された各アクセスポイント40のデータ転送速度に基づいて、各アクセスポイント40が次回に送信するデータのデータ転送速度を上記の予測部107で説明したように上記式(2)を用いて予測する(ステップS7)。なお、本実施形態では、上記式(2)中のWは、0.8としてデータのデータ転送速度を予測した。すなわち、図9の結果と下記式(3)を用いて、データのデータ転送速度を予測した。
データ転送速度XN+1=TN+1時刻からTN+2時刻までの間のデータ転送速度=0.8×(TN時刻からTN+1時刻までの間のデータ転送速度)+(1−0.8)×(TN−1時刻からTN時刻までの間のデータ転送速度)・・・(3)
図10は、各アクセスポイントが次回に送信するデータのデータ転送速度を予測した一例を示す図である。図10の例では、アクセスポイント40Aは、OpenFlowスイッチ30aのポート2に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで19kb/s、ダウンロードで32kb/sであることを示している。
また、アクセスポイント40Bは、OpenFlowスイッチ30aのポート4に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで170kb/s、ダウンロードで400kb/sであることを示している。
また、アクセスポイント40Cは、OpenFlowスイッチ30bのポート3に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで14kb/s、ダウンロードで18kb/sであることを示している。
また、アクセスポイント40Dは、OpenFlowスイッチ30bのポート5に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで165kb/s、ダウンロードで588kb/sであることを示している。
このように、本実施形態では、各アクセスポイント(通信拠点)が次回に送信するデータのデータ転送速度を予測することが可能となる。
[ステップS8]
図4に戻って説明を続ける。各アクセスポイント40のデータのデータ転送速度を予測した後、OpenFlowコントローラ10は、各アクセスポイント40に対して最適な周波数チャネルを割り当てる(ステップS8)。
OpenFlowコントローラ10は、各アクセスポイント40が電波干渉を起こさないように、例えば、IEEE802.11.gの場合は、周波数チャネルを5チャネル以上の間隔をあける必要がある。本実施形態においては、例えば、電波干渉を防ぐため、各アクセスポイント40には、1ch/6ch/11chの中の1つを割り当てると仮定する。OpenFlowコントローラ10は、予測した各アクセスポイント40のデータのデータ転送速度と、各アクセスポイント40の間の干渉関係に基づいて、UDPプロトコルを用いて、各アクセスポイントに対して1ch/6ch/11chの内の1つの周波数チャネルを割り当てる。すなわち、図5を用いて説明したように、「指定チャネル番号」をUDPメッセージ部として送信する。なお、周波数チャネルを割り当てる間隔は、例えば、(1ch/7ch/12ch)、(1ch/8ch/13ch)、(2ch/7ch/12ch)、(3ch/8ch/13ch)などでもよい。
ここで、各アクセスポイント40に対して最適な周波数チャネルを割り当てる方法について説明する。図6を用いて説明したように、OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出する。その結果、アクセスポイント40Aとアクセスポイント40Bとの間で干渉が発生する虞がある。アクセスポイント40Aとアクセスポイント40Cとの間で干渉が発生する虞がある。アクセスポイント40Bとアクセスポイント40Cとの間で干渉が発生する虞がある。アクセスポイント40Cとアクセスポイント40Dとの間で干渉が発生する虞がある。このように、4つの干渉関係が発生する虞があると検出した。
本実施形態のOpenFlowコントローラ10は、上記の4つの干渉関係が発生する虞があると判断した上で、全てのアクセスポイント40のチャネル割当の組合せごとに、OpenFlow無線通信ネットワークの「Sum」を、以下のように算出する。なお、Sumとは、各アクセスポイント40間で干渉関係が発生する時の予測したデータ転送速度を示し、以下では、「Sum値(干渉データ量)」と表記する。
具体的には、例えば、アクセスポイント40Aは1chに割り当て、アクセスポイント40Bは1chに割り当て、アクセスポイント40Cは1chに割り当て、アクセスポイント40Dは1chに割り当てるとした場合には、上記の4つの干渉関係が発生すると仮定する。この場合、上記の図10に示した予測したデータ転送速度を用いて、Sum値(干渉データ量)は以下のように算出される。
Sum値=(アクセスポイント40Aの予測したデータ転送速度+アクセスポイント40Bの予測したデータ転送速度)+(アクセスポイント40Aの予測したデータ転送速度+アクセスポイント40Cの予測したデータ転送速度)+(アクセスポイント40Bの予測したデータ転送速度+アクセスポイント40Cの予測したデータ転送速度)+(アクセスポイント40Cの予測したデータ転送速度+アクセスポイント40Dの予測したデータ転送速度)
Sum値=(19+32+170+400)+(19+32+14+18)+(170+400+14+18)+(14+18+165+588)=2091
また、例えば、アクセスポイント40Aは1chに割り当て、アクセスポイント40Bは1chに割り当て、アクセスポイント40Cは11chに割り当て、アクセスポイント40Dは1chに割り当てるとした場合には、上記の4つの干渉関係のうちでアクセスポイント40Aとアクセスポイント40Bとの間だけで干渉関係が発生すると仮定する。この場合、上記の図10に示した予測したデータ転送速度を用いて、Sum値(干渉データ量)は以下のように算出される。
Sum値=アクセスポイント40Aの予測したデータ転送速度+アクセスポイント40Bの予測したデータ転送速度
Sum値=19+32+170+400=621
また、例えば、アクセスポイント40Aは1chに割り当て、アクセスポイント40Bは6chに割り当て、アクセスポイント40Cは11chに割り当て、アクセスポイント40Dは1chに割り当てるとした場合には、上記の4つの干渉関係のうち全ての干渉関係は発生しないと仮定する。この場合、上記の図10に示した予測したデータ転送速度を用いて、Sum値(干渉データ量)は以下のように算出される。
Sum値=0
上記で説明したように、OpenFlowコントローラ10は、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、Sum値(干渉データ量)を算出する。このSum値(干渉データ量)は、OpenFlow無線通信ネットワークの中で、仮に干渉関係が発生する場合には、干渉関係が発生する全てのアクセスポイント40間の予測したデータ転送速度の和を示す。つまり、Sum値(干渉データ量)が大きいほど、干渉関係が発生する場合にOpenFlow無線通信ネットワークの中での干渉データ量が多くなることを示している。そのため、Sum値(干渉データ量)の最小値が得られる周波数チャネルを割り当てる組合せが、最適な周波数チャネル割り当てとなる。
図11は、各アクセスポイントに割り当てた周波数チャネルとSum値との関係の一例を示す図である。図11の例では、例えば、一番上段は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てるとした場合、Sum値は2091であることを示している。以下、図11に示した例は、すべて同様である。
図11の例において、Sum値=0となるのは、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル11chを割り当てる場合と、の4通りの周波数チャネルを割り当てる組合せが存在することになる。
本実施形態においては、上記の4通りの周波数チャネルを割り当てる組合せの中から、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる組合せを選択することとする。
[ステップS9〜S10]
よって、本実施形態でのOpenFlowコントローラ10は、上記の周波数チャネルを割り当てる組合せの結果に基づいて、UDPプロトコルを用いて、各アクセスポイント40に周波数チャネル割当結果を送信して、最適な周波数チャネルの割り当てを指定する(ステップS9)。そして、各アクセスポイント40は、周波数チャネル割当結果を受信して、指定された周波数チャネルに設定する(ステップS10)。
以上、本実施形態における無線通信システム1の基本的な処理動作の一例である。
次に、図12を用いて、OpenFlowコントローラ10の処理動作について説明する。図12は、OpenFlowコントローラの処理動作の一例を示すフローチャート図である。
最初に、OpenFlowコントローラ10を起動し、OpenFlowコントローラ10は、OpenFlowスイッチ30と接続処理を行う(ステップS11)。次に、OpenFlowコントローラ10は、各アクセスポイント40から接続リクエストを受信する(ステップS12)。OpenFlowコントローラ10は、受信した接続リクエストに応答するか否かを判断する(ステップS13)。接続リクエストに応答しない場合(ステップS13:No)、OpenFlowコントローラ10は、処理を終了する。接続リクエストに応答する場合(ステップS13:Yes)、OpenFlowコントローラ10は、「接続」を各アクセスポイント40に対して応答し、アクセスポイント40と接続する(ステップS14)。
次に、OpenFlowコントローラ10は、各アクセスポイント40とOpenFlowスイッチ30とが接続した後、各アクセスポイント40から自身のMACアドレスと隣のアクセスポイント40のMACアドレスを受信する。そして、OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出する(ステップS15)。
次に、OpenFlowコントローラ10は、Flow Modメッセージを用いて、OpenFlowスイッチ30にフローエントリーを追加する(ステップS16)。次に、OpenFlowコントローラ10は、UDPプロトコルを用いて、「pingコマンド」を各アクセスポイント40に要求する(ステップS17)。その後、各アクセスポイント40は、要求されたとおり、OpenFlowコントローラ10との「ping」動作を実施し、実施した結果のpingパケットをOpenFlowスイッチ30に送信する。そして、OpenFlowスイッチ30は、記憶部303に記憶されているフローテーブル中のフローエントリーに基づいて、Packet Inメッセージを用いて、pingパケットの内容をOpenFlowコントローラ10に送信する。OpenFlowコントローラ10は、受信したPacket Inメッセージを解析し、各アクセスポイント40のIPアドレス、MACアドレス及びOpenFlowスイッチ30の接続ポートを抽出し、各アクセスポイント40とOpenFlowスイッチ30とのポート接続関係を判断する(ステップS18)。
次に、OpenFlowコントローラ10は、周期的に、Stats RequestメッセージをOpenFlowスイッチ30に送信する(ステップS19)。OpenFlowコントローラ10は、OpenFlowスイッチ30からStats Replyメッセージを受信し、OpenFlowコントローラ10は、受信したStats Replyメッセージを解析し、各OpenFlowスイッチ30の各ポートのデータ転送量(各アクセスポイント40のデータ転送量)を取得する(ステップS20)。そして、OpenFlowコントローラ10は、取得した各OpenFlowスイッチ30の各ポートのデータ転送量(各アクセスポイント40のデータ転送量)と、検出した各アクセスポイント40とOpenFlowスイッチ30とのポート接続関係を用いて、各アクセスポイント40のデータ転送速度を算出する(ステップS21)。
次に、OpenFlowコントローラ10は、算出された各アクセスポイント40のデータ転送速度に基づいて、各アクセスポイント40が次回に送信するデータのデータ転送速度を予測する(ステップS22)。次に、OpenFlowコントローラ10は、各アクセスポイント40に対して最適な周波数チャネルを割り当てる(ステップS23)。そして、OpenFlowコントローラ10は、周波数チャネルを割り当てる組合せの結果に基づいて、UDPプロトコルを用いて、各アクセスポイント40に周波数チャネル割当結果を送信して、最適な周波数チャネルの割り当てを指定する(ステップS24)。そして、処理を終了する。
次に、図13を用いて、アクセスポイント40の処理動作について説明する。図13は、アクセスポイントの処理動作の一例を示すフローチャート図である。
最初に、各アクセスポイント40は、OpenFlowスイッチ30とそれぞれI/F部401、301とを介して接続する(ステップS31)。アクセスポイント40は、DHCP(動的ホスト構成プロトコル)により割り当てられたIPアドレス(IPアドレスを取得し)を用いて、OpenFlow無線通信ネットワークに加入する(ステップS32)。
次に、アクセスポイント40は、OpenFlowコントローラ10のIPアドレスを取得(ステップS33)して、取得したIPアドレスを用いて、OpenFlowコントローラ10に接続リクエストを送信する(ステップS34)。アクセスポイント40は、OpenFlowコントローラ10から接続リクエストに対する応答を受信し、接続リクエストが拒否されたか否かを判断する(ステップS35)。つまり「接続」または「拒否」であるか否かを判断する。受信した応答が「拒否」の場合(ステップS35:Yes)、処理を終了する。受信した応答が「接続」の場合(ステップS35:No)、アクセスポイント40は、OpenFlowコントローラ10と接続する(ステップS36)。
次に、アクセスポイント40は、周期的にbeacon(ビーコン)フレームを送信し、他のアクセスポイントからのbeacon(ビーコン)フレームを受信する(ステップS37)。次に、アクセスポイント40は、UDPプロトコルを用いて、自身のMACアドレスと隣のアクセスポイント40のMACアドレスをOpenFlowコントローラ10に送信する(ステップS38)。
次に、アクセスポイント40は、OpenFlowコントローラ10から要求されたとおり、OpenFlowコントローラ10との「ping」動作を実施し、実施した結果の「pingパケット」をOpenFlowスイッチ30に送信する(ステップS39)。次に、アクセスポイント40は、OpenFlowコントローラ10から周波数チャネル割当結果を受信する(ステップS40)。アクセスポイント40は、受信した周波数チャネル割当結果の指定に基づいて、周波数チャネルを設定する(ステップS41)。そして、処理を終了する。
以上で説明したように、本実施形態によれば、OpenFlowネットワークにおいて、アクセスポイント40に対して最適な周波数チャネルを割り当てることにより無線通信性能の劣化を防止することができる、という有利な効果を達成できる。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態では、第1の実施形態と比較して、OpenFlowスイッチ30bに接続する新規のアクセスポイント40Eが後から追加されることが異なる。以下、具体的に説明する。
図14を用いて、第2の実施形態に係る無線通信システム1aの全体システム構成例について説明する。図14は、第2の実施形態に係る無線通信システムの全体システム構成の一例を示す図である。第2の実施形態では、第1の実施形態と同様の構成については同一の符号を付し、上述の第1の実施形態と重複する部分については適宜に説明を省略する。
図14に示すように、無線通信システム1aは、OpenFlowコントローラ10と、Gateway20と、複数のOpenFlowスイッチ30a、30bと、複数のアクセスポイント40A〜40Eと、複数の無線端末(無線通信端末、例えば、スマートフォン、タブレットPCなど)50a〜50gと、無線通信エリア60a〜60eと、通信網(インターネット網)70とを備える。以下、OpenFlowスイッチ30a、30bを区別する必要がない場合には、OpenFlowスイッチ30と表記する。また、アクセスポイント40A〜40Eを区別する必要がない場合には、アクセスポイント40と表記する。また、無線端末50a〜50gを区別する必要がない場合には、無線端末50と表記する。また、無線通信エリア60a〜60eを区別する必要がない場合には、無線通信エリア60と表記する。
なお「アクセスポイント」は、例えば、無線LANアクセスポイント(wireless LAN access point)を示し、以下、「アクセスポイント」を「AP」とも表記する。
OpenFlowコントローラ10の機能、構成及び処理、Gateway20の機能、構成及び処理、複数のOpenFlowスイッチ30a、30bの機能、構成及び処理、複数のアクセスポイント40A〜40Eの機能、構成及び処理、複数の無線端末(無線通信端末、例えば、スマートフォン、タブレットPCなど)50a〜50gの機能、構成及び処理は、第1の実施形態と同様である。
図14に示す、後から新規に追加されるアクセスポイント40Eは、複数の周波数チャネルが使用可能である。アクセスポイント40Eの無線通信エリア60e内には、例えば、アクセスポイント40Eに対して、無線端末50gが存在している。無線端末50g、例えば、無線LAN規格、IEEE802.11.gによりアクセスポイント40Eと接続し、OpenFlowスイッチ30b及びGateway20を介して、例えば、通信網(インターネット網)70を経由して各種の通信を行う。
なお、図14では、アクセスポイント40Eと接続される無線端末50gの台数が1台である場合を例示しているが、これに限らず、無線端末50の台数は任意である。
図14の例において、後から追加されるアクセスポイント40Eは、IPアドレスが192.168.1.9であり、MACアドレスが00−01−02−03−04−14であり、隣のAP40BのMACアドレスが00−01−02−03−04−12、及び隣のAP40DのMACアドレスが00−01−02−03−04−13であることを示している。
なお、図14の例において、隣のAPとは、アクセスポイント(AP)の無線通信エリア60が重複しているAPのことを示す。例えば、アクセスポイント40Eでは、アクセスポイント40B、40Dと無線通信エリア60が重複している。
まず、アクセスポイント40EをOpenFlow無線通信ネットワークに後から新規に追加する前の処理動作は、第1の実施形態の図4に示すステップS1、図12に示すステップS11〜S14、図13に示すステップS31〜S36と同様である。OpenFlowコントローラ10は、各アクセスポイント40間の干渉関係(図6)及び、予測した各アクセスポイント40が次回に送信するデータのデータ転送速度(図10)に基づいて、例えば、アクセスポイント40Aに1chを割り当て、アクセスポイント40Bに6chを割り当て、アクセスポイント40Cに11chを割り当て、アクセスポイント40Dに1chを割り当てると仮定する。このような仮定の下に、OpenFlowコントローラ10は、各アクセスポイントに最適な周波数チャネルを割り当てて指定する。そして、各アクセスポイントは、指定された周波数チャネルに設定する。
次に、アクセスポイント40EをOpenFlow無線通信ネットワークに追加した後、図4に示すステップS2〜S3、図12に示すステップS15の処理を行う。
ここで、図15を用いて、各アクセスポイント40間の干渉関係の検出方法について説明する。図15は、OpenFlowコントローラが受信した各アクセスポイントの自身のMACアドレスと隣のアクセスポイントのMACアドレスを説明する図である。
図15の例では、アクセスポイント40Aの自身のMACアドレスが00−01−02−03−04−10、隣APのMACアドレスが00−01−02−03−04−11、00−01−02−03−04−12であることを示している。また、アクセスポイント40Bの自身のMACアドレスが00−01−02−03−04−12、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−11、00−01−02−03−04−14であることを示している。また、アクセスポイント40Cの自身のMACアドレスが00−01−02−03−04−11、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−12、00−01−02−03−04−13であることを示している。また、アクセスポイント40Dの自身のMACアドレスが00−01−02−03−04−13、隣APのMACアドレスが00−01−02−03−04−11、00−01−02−03−04−14であることを示している。そして、後から追加したアクセスポイント40Eの自身のMACアドレスが00−01−02−03−04−14、隣APのMACアドレスが00−01−02−03−04−12、00−01−02−03−04−13であることを示している。
OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出する。すなわち、図15を参照して、アクセスポイント40Aは、アクセスポイント40B及びアクセスポイント40Cとの間に干渉関係があると検出する。アクセスポイント40Bは、アクセスポイント40A及びアクセスポイント40Cとの間に干渉関係があると検出する。アクセスポイント40Cは、アクセスポイント40A、アクセスポイント40B及びアクセスポイント40Dとの間に干渉関係があると検出する。アクセスポイント40Dは、アクセスポイント40Cとの間に干渉関係があると検出する。上記の第1の実施形態で示した、4つの干渉関係があると検出した以外に、アクセスポイント40Bとアクセスポイント40Eとの間で干渉関係がある。アクセスポイント40Dとアクセスポイント40Eとの間で干渉関係がある。という新たな2つの干渉関係があると検出する。
次に、各アクセスポイント40間の干渉関係を検出した後、図4に示すステップS4〜S7、図12に示すステップS16〜S22、図13に示すステップS37〜S39の処理を行う。図16は、各アクセスポイントが次回に送信するデータのデータ転送速度を予測した一例を示す図である。
図16の例では、アクセスポイント40Aは、OpenFlowスイッチ30aのポート2に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで21kb/s、ダウンロードで35kb/sであることを示している。
また、アクセスポイント40Bは、OpenFlowスイッチ30aのポート4に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで164kb/s、ダウンロードで383kb/sであることを示している。
また、アクセスポイント40Cは、OpenFlowスイッチ30bのポート3に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで15kb/s、ダウンロードで20kb/sであることを示している。
また、アクセスポイント40Dは、OpenFlowスイッチ30bのポート5に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで153kb/s、ダウンロードで419kb/sであることを示している。
また、アクセスポイント40Eは、OpenFlowスイッチ30bのポート2に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで83kb/s、ダウンロードで137kb/sであることを示している。
次に、図4に示すステップS8、図12に示すステップS23の処理を行う。OpenFlowコントローラ10は、上記の第1の実施形態で説明したように、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、干渉データ量(Sum値)を算出する。そして、OpenFlowコントローラ10は、算出した干渉データ量(Sum値)の中で最小値が得られる周波数チャネルを割り当てる組合せを抽出する。第1の実施形態と同様に、本実施形態の場合も、最適な周波数チャネル割当の組合せが複数存在するが、本実施形態では無駄なオーバーハンドを実施しなくても良いという条件の下で、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当て、アクセスポイント40Eに周波数チャネル11chを割り当てる組合せを選択することとする。なお、第1の実施形態で割り当てたアクセスポイント40A〜40Dの周波数チャネルは変更していない。
以上で説明したように、本実施形態によれば、OpenFlow無線通信ネットワークに対して、新たなアクセスポイント40Eを追加し、それまでの他のアクセスポイント40A〜40Dに割り当てられた周波数チャネルが不明な場合でも、全てのアクセスポイント40A〜40Eに対して最適な周波数チャネルを割り当てることができるため、無線通信性能の劣化を防止することができる、という有利な効果を達成できる。
(第3の実施形態)
次に、第3の実施形態について説明する。第3の実施形態は、第1の実施形態の変形例であり、手動で周波数チャネルを変更する場合の一例である。以下、具体的に説明する。
第3の実施形態に係る無線通信システム1の全体システム構成例は、第1の実施形態の図1と同様である。よって、説明を省略する。
OpenFlowコントローラ10の機能、構成及び処理、Gateway20の機能、構成及び処理、複数のOpenFlowスイッチ30a、30bの機能、構成及び処理、複数のアクセスポイント40A〜40Dの機能、構成及び処理、複数の無線端末(無線通信端末、例えば、スマートフォン、タブレットPCなど)50a〜50fの機能、構成及び処理は、第1の実施形態と同様である。
第1の実施形態で説明した、図1に示す無線通信システム1の全体システム構成において、所定時間経過した後、例えば、アクセスポイント40Aの周波数チャネルを手動で変更する場合の一例について説明する。
まず、アクセスポイント40EをOpenFlow無線通信ネットワークに後から追加する前の処理動作は、第1の実施形態の図4に示すステップS1、図12に示すステップS11〜S14、図13に示すステップS31〜S36と同様である。OpenFlowコントローラ10は、各アクセスポイント40間の干渉関係(図6)及び、予測した各アクセスポイント40が次回に送信するデータのデータ転送速度(図10)に基づいて、例えば、アクセスポイント40Aに1chを割り当て、アクセスポイント40Bに6chを割り当て、アクセスポイント40Cに11chを割り当て、アクセスポイント40Dに1chを割り当てると仮定する。このような仮定の下に、OpenFlowコントローラ10は、各アクセスポイントに最適な周波数チャネルを指定する。そして、各アクセスポイントは、指定された周波数チャネルに設定する。
その後、所定時間経過した後に、例えば、アクセスポイント40Aの周波数チャネルを1chから6chに変更すると仮定する。
図4に示すステップS6〜S7の処理を行って、各アクセスポイント40が次回に送信するデータのデータ転送速度を予測して、図10に示した、各アクセスポイント40のデータ転送速度を更新する。
図17は、更新した後の各アクセスポイント40が次回に送信するデータのデータ転送速度を予測した一例を示す図である。図17の例では、アクセスポイント40Aは、OpenFlowスイッチ30aのポート2に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで127kb/s、ダウンロードで217kb/sであることを示している。
また、アクセスポイント40Bは、OpenFlowスイッチ30aのポート4に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで164kb/s、ダウンロードで383kb/sであることを示している。
また、アクセスポイント40Cは、OpenFlowスイッチ30bのポート3に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで47kb/s、ダウンロードで62kb/sであることを示している。
また、アクセスポイント40Dは、OpenFlowスイッチ30bのポート5に接続されており、T3時刻からT4時刻までの間のデータ転送速度(kb/s)は、アップロードで56kb/s、ダウンロードで93kb/sであることを示している。
次に、図4に示すステップS8、図12に示すステップS23の処理を行う。OpenFlowコントローラ10は、上記の第1の実施形態で説明したように、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、Sum値(干渉データ量)を算出する。そして、OpenFlowコントローラ10は、算出したSum値(干渉データ量)の中で最小値が得られる周波数チャネルを割り当てる組合せを抽出する。
図18は、各アクセスポイントに割り当てた周波数チャネルとSum値との関係の一例を示す図である。図18の例では、例えば、一番上段は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てるとした場合、Sum値(干渉データ量)は2258であることを示している。以下、図18に示した例は、すべて同様である。
図18の例において、Sum値=0となるのは、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル11chを割り当てる場合と、アクセスポイント40Aに周波数チャネル6chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる場合と、アクセスポイント40Aに周波数チャネル6chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる場合と、の4通りの周波数チャネルを割り当てる組合せが存在することになる。
本実施形態においては、上記の4通りの周波数チャネルを割り当てる組合せの中から、無駄なオーバーハンドを実施しなくても良いという条件の下で、アクセスポイント40Aに周波数チャネル6chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てる組合せを選択することとする。なお、本実施形態において、最初に割り当てたアクセスポイント40C、40Dの周波数チャネルは変更していない。
以上の説明したように、本実施形態によれば、OpenFlow無線通信ネットワークに対して、周波数チャネルを手動で変更する場合でも、全てのアクセスポイント40A〜40Dに対して最適な周波数チャネルを割り当てることができるため、無線通信性能の劣化を防止することができる、という有利な効果を達成できる。
(第4の実施形態)
次に、第4の実施形態について説明する。第4の実施形態では、第1の実施形態と比較して、各アクセスポイント40間の干渉関係がないように周波数チャネルを割り当てられない場合(Sum値=0とならない場合)であることが異なる。以下、具体的に説明する。
図19を用いて、第4の実施形態に係る無線通信システム1bの全体システム構成例について説明する。図19は、第4の実施形態に係る無線通信システムの全体システム構成の一例を示す図である。第4の実施形態では、第1の実施形態の図1と同様の構成については同一の符号を付し、上述の第1の実施形態と重複する部分については適宜に説明を省略する。
OpenFlowコントローラ10の機能、構成及び処理、Gateway20の機能、構成及び処理、複数のOpenFlowスイッチ30a、30bの機能、構成及び処理、複数のアクセスポイント40A〜40Dの機能、構成及び処理、複数の無線端末(無線通信端末、例えば、スマートフォン、タブレットPCなど)50a〜50fの機能、構成及び処理は、第1の実施形態と同様である。
第1の実施形態と異なるのは、アクセスポイント40Dの無線通信エリア60dがアクセスポイント40A、40B、40Cと重複している。すなわち、各アクセスポイント40間の干渉関係が多く存在する場合である。
図19の例において、アクセスポイント40Aは、IPアドレスが192.168.1.5であり、MACアドレスが00−01−02−03−04−10であり、隣のAP40CのMACアドレスが00−01−02−03−04−11、隣のAP40BのMACアドレスが00−01−02−03−04−12、及び隣のAP40BのMACアドレスが00−01−02−03−04−13であることを示している。
また、アクセスポイント40Bは、IPアドレスが192.168.1.7であり、MACアドレスが00−01−02−03−04−12であり、隣のAP40AのMACアドレスが00−01−02−03−04−10、隣のAP40CのMACアドレスが00−01−02−03−04−11、及び隣のAP40BのMACアドレスが00−01−02−03−04−13であることを示している。
また、アクセスポイント40Cは、IPアドレスが192.168.1.6であり、MACアドレスが00−01−02−03−04−11であり、隣のAP40AのMACアドレスが00−01−02−03−04−10、隣のAP40BのMACアドレスが00−01−02−03−04−12、及び隣のAP40DのMACアドレスが00−01−02−03−04−13であることを示している。
また、アクセスポイント40Dは、IPアドレスが192.168.1.8であり、MACアドレスが00−01−02−03−04−13であり、隣のAP40AのMACアドレスが00−01−02−03−04−10、隣のAP40CのMACアドレスが00−01−02−03−04−11、及び隣のAP40BのMACアドレスが00−01−02−03−04−12であることを示している。
まず、アクセスポイント40をOpenFlow無線通信ネットワークに追加した後、図4に示すステップS2〜S3、図12に示すステップS14の処理を行う。
ここで、図20を用いて、各アクセスポイント40間の干渉関係の検出方法について説明する。図20は、OpenFlowコントローラが受信した各アクセスポイントの自身のMACアドレスと隣のアクセスポイントのMACアドレスを説明する図である。
図20の例では、アクセスポイント40Aの自身のMACアドレスが00−01−02−03−04−10、隣APのMACアドレスが00−01−02−03−04−11、00−01−02−03−04−12、隣APのMACアドレスが00−01−02−03−04−13であることを示している。また、アクセスポイント40Bの自身のMACアドレスが00−01−02−03−04−12、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−11、00−01−02−03−04−13であることを示している。また、アクセスポイント40Cの自身のMACアドレスが00−01−02−03−04−11、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−12、00−01−02−03−04−13であることを示している。また、アクセスポイント40Dの自身のMACアドレスが00−01−02−03−04−13、隣APのMACアドレスが00−01−02−03−04−10、00−01−02−03−04−11、00−01−02−03−04−12であることを示している。
OpenFlowコントローラ10は、各アクセスポイント40の自身のMACアドレスと隣のアクセスポイント40のMACアドレスとに基づいて、各アクセスポイント40間の干渉関係を検出する。すなわち、図20を参照して、アクセスポイント40Aは、アクセスポイント40B、アクセスポイント40C、及びアクセスポイント40Dとの間に干渉関係があると検出する。アクセスポイント40Bは、アクセスポイント40A、アクセスポイント40C、及びアクセスポイント40Dとの間に干渉関係があると検出する。アクセスポイント40Cは、アクセスポイント40A、アクセスポイント40B、及びアクセスポイント40Dとの間に干渉関係があると検出する。アクセスポイント40Dは、アクセスポイント40A、アクセスポイント40B、及びアクセスポイント40Cとの間に干渉関係があると検出する。すなわち、本実施形態では、6つの干渉関係があると検出される。
次に、各アクセスポイント40間の干渉関係の検出した後、図4に示すステップS4〜S10の処理を行う。すなわち、各アクセスポイントが次回に送信するデータのデータ転送速度を予測する。本実施形態では、予測した結果が第1の実施形態の図10で示した、各アクセスポイントが次回に送信するデータのデータ転送速度であると仮定する。
次に、図4に示すステップS8、図12に示すステップS23の処理を行う。OpenFlowコントローラ10は、上記の第1の実施形態で説明したように、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、干渉データ量(Sum値)を算出する。そして、OpenFlowコントローラ10は、算出した干渉データ量(Sum値)の中で最小値が得られる周波数チャネルを割り当てる組合せを抽出する。
本実施形態では、無線環境が大変混雑している場合には、同一周波数チャネル内でトータル通信量が多いほど、アクセスポイント40にとって、他のアクセスポイント40の干渉を受ける可能性が高くなることを考慮して、各アクセスポイント40の予測したデータのデータ転送速度に基づいて、データ通信量が多い(予測したデータのデータ転送速度が速い)アクセスポイント40を他のアクセスポイント40から干渉しないように周波数チャネルを割り当てるようにすることで、無線通信性能の劣化を防ぐことができる。
図21は、各アクセスポイントに割り当てた周波数チャネルとSum値との関係の一例を示す図である。なお、図21の例では、算出結果を一部省略している。
図21の例では、例えば、一番上段は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てるとした場合、Sum値(干渉データ量)は4218であることを示している。以下、図21に示した例は、すべて同様である。
図21の例において、Sum値=0となる周波数チャネルの割り当ての組合せは存在しない。そこで、Sum値が最小となる周波数チャネルの割り当ての組合せを抽出する。Sum値が最小となる組合せ(Sum値=83)は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル11chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる場合と、の2通りの周波数チャネルを割り当てる組合せが存在することになる。
本実施形態においては、上記の2通りの周波数チャネルを割り当てる組合せの中から、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる組合せを選択することとする。
OpenFlowコントローラ10は、周波数チャネルを割り当てる組合せの結果に基づいて、UDPプロトコルを用いて、各アクセスポイント40に周波数チャネル割当結果を送信して、最適な周波数チャネルの割り当てを指定する。そして、各アクセスポイント40は、受信した周波数チャネル割当結果の指定に基づいて、周波数チャネルを設定する。
以上で説明したように、本実施形態によれば、OpenFlowネットワークにおいて、各アクセスポイント40間の干渉関係がないように周波数チャネルを割り当てられない場合であってもアクセスポイント40に対して最適な周波数チャネルを割り当てることにより無線通信性能の劣化を防止することができる、という有利な効果を達成できる。
(第4の実施形態の変形例)
次に、第4の実施形態の変形例について説明する。上記の第4の実施形態では、予測した結果が第1の実施形態の図10で示した、各アクセスポイントが次回に送信するデータのデータ転送速度であると仮定した。本変形例では、予測した結果が上記の第3の実施形態の図17で示した、各アクセスポイントが次回に送信するデータのデータ転送速度に変化したと仮定する。
次に、図4に示すステップS8、図12に示すステップS23の処理を行う。OpenFlowコントローラ10は、上記の第1の実施形態で説明したように、全てのアクセスポイント40の周波数チャネル割り当ての組合せごとに、干渉データ量(Sum値)を算出する。そして、OpenFlowコントローラ10は、算出した干渉データ量(Sum値)の中で最小値が得られる周波数チャネルを割り当てる組合せを抽出する。
本変形例では、各アクセスポイント40の予測データ転送速度の変化に基づいて、順次に各アクセスポイント40に最適な周波数チャネルを割り当てるようにすることで、無線通信性能の劣化を防ぐことができる。また、上記式(2)で説明したように、TN−1時刻からTN時刻までの間のデータ転送速度に基づいて、TN+1時刻のデータ転送速度を予測する(前の情報を十分に参考にする)ことによって、一時的にデータ転送速度を上げる場合でも無駄なオーバーハンドを実施しなくてもよい、という有利な効果を奏する。
図22は、各アクセスポイントに割り当てた周波数チャネルとSum値との関係の一例を示す図である。なお、図22の例では、算出結果を一部省略している。
図22の例では、例えば、一番上段は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル1chを割り当て、アクセスポイント40Cに周波数チャネル1chを割り当て、アクセスポイント40Dに周波数チャネル1chを割り当てるとした場合、Sum値は3447であることを示している。以下、図22に示した例は、すべて同様である。
図22の例において、Sum値=0となる周波数チャネルの割り当ての組合せは存在しない。そこで、Sum値が最小となる周波数チャネルの割り当ての組合せを抽出する。Sum値が最小となる組合せ(Sum値=258)は、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル6chを割り当て、アクセスポイント40Cに周波数チャネル11chを割り当て、アクセスポイント40Dに周波数チャネル11chを割り当てる場合と、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる場合と、の2通りの周波数チャネルを割り当てる組合せが存在することになる。
本実施形態においては、上記の2通りの周波数チャネルを割り当てる組合せの中から、無駄なオーバーハンドを実施しなくても良いという条件の下で、アクセスポイント40Aに周波数チャネル1chを割り当て、アクセスポイント40Bに周波数チャネル11chを割り当て、アクセスポイント40Cに周波数チャネル6chを割り当て、アクセスポイント40Dに周波数チャネル6chを割り当てる組合せを選択することとする。なお、本変形例において、最初に割り当てたアクセスポイント40Cの周波数チャネルだけを変更している。
以上で説明したように、本変形例によれば、OpenFlowネットワークにおいて、各アクセスポイント40間の干渉関係がないように周波数チャネルを割り当てられない場合であって、かつ各アクセスポイントの予測データ転送速度が変化する場合であってもアクセスポイント40に対して最適な周波数チャネルを割り当てることにより無線通信性能の劣化を防止することができる、という有利な効果を達成できる。
以上、本発明に係る各実施形態について説明したが、本発明は、上述の各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
また、上述した各実施形態の無線通信システム1、1a、1bで実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
なお、本実施形態のOpenFlowコントローラ10と、Gateway20と、複数のOpenFlowスイッチ30と、複数のアクセスポイント40と、複数の無線端末50とで構成されたシステム構成は一例であり、用途や目的に応じて様々なシステム構成例があることは言うまでもない。