(57)【要約】【課題】通信装置の間で行われる通信内容に応じた通信制御を行うことで、通信媒体のリソースを効率的に利用する。【解決手段】一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信を行う通信装置であって、前記他の装置との間で通信する情報を生成すると共に通信条件に係る要求を出す情報処理部と、前記要求に基づいて、前記他の装置との通信に使用する通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用する通信インタフェースが通信に使用する通信パラメータを指定する判定部と、前記他の装置との通信に使用する通信インタフェースを、前記判定部が選択した通信インタフェースに切り替える切替部と、前記判定部が選択した通信インタフェースを介し、かつ前記判定部が指定した前記通信パラメータを用いて前記他の装置と通信を行う通信部と、を有する通信装置を提供する。【選択図】図３
2016086363.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信を行う通信装置であって、
前記他の装置との間で通信する情報を生成すると共に通信条件に係る要求を出す情報処理部と、
前記要求に基づいて、前記他の装置との通信に使用される通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用される通信インタフェースが通信に用いる通信パラメータを指定する判定部と、
前記他の装置との通信のために、前記判定部が選択した通信インタフェースに切り替える切替部と、
前記判定部が選択した通信インタフェースを介し、かつ前記判定部が指定した前記通信パラメータを用いて前記他の装置と通信を行う通信部と、
を有する通信装置。
【請求項２】
前記通信パラメータは、通信の伝送速度の上限を示す上限レートである、請求項１に記載の通信装置。
【請求項３】
前記通信部は、通信状況に応じて、前記他の通信装置との通信に使用される通信インタフェースの伝送レートを、前記判定部が指定した上限レートの範囲で自動的に変更することができる、請求項２に記載の通信装置。
【請求項４】
前記判定部が指定する前記通信パラメータを受け取る指定部を有し、
前記通信部は、前記指定部から指示を送ることにより前記通信パラメータを設定する設定部を更に含み、
前記指定部は、受け取った前記通信パラメータと、前記設定部に既に設定されている前記通信パラメータとを比較することで、前記設定部に前記指示を送るか否かを判断する、請求項１乃至３のいずれか一項に記載の通信装置。
【請求項５】
前記情報処理部は、前記他の通信装置に送信する送信データを生成し、又は、他の通信装置から受信する受信データを処理し、
前記要求は、前記情報の通信に必要な伝送レートであり、
前記情報処理部は、前記要求を、前記送信データのＴＣＰヘッダに含めることで行う、請求項１乃至４のいずれか一項に記載の通信装置。
【請求項６】
前記切替部は、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇ技術において使用されるＯｐｅｎＦｌｏｗスイッチである、請求項１乃至５のいずれか一項に記載の通信装置。
【請求項７】
前記判定部は、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇ技術において使用されるＯｐｅｎＦｌｏｗコントローラである、請求項１乃至６のいずれか一項に記載の通信装置。
【請求項８】
一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信する通信装置を制御する制御装置であって、
前記他の装置との間で情報を通信するための通信条件に係る要求を前記通信装置から取得する取得部と、
前記要求に基づいて、前記他の装置との通信に使用される通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用される通信インタフェースが通信に用いる通信パラメータを指定する判定部であって、前記通信装置に対し、選択した通信インタフェースを介し、かつ前記通信パラメータを用いて前記他の装置と通信を行わせるように、前記通信装置に指示する、判定部と、
を有する制御装置。
【請求項９】
一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信する通信装置を制御する制御方法であって、
前記他の装置との間で情報を通信するための通信条件に係る要求を前記通信装置から取得するステップと、
前記要求に基づいて、前記他の装置との通信に使用される通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用される通信インタフェースが通信に用いる通信パラメータを指定するステップと、
前記通信装置に対し、選択した通信インタフェースを介し、かつ前記通信パラメータを用いて前記他の装置と通信を行わせるように、前記通信装置に指示するステップと、
を有する制御方法。
【請求項１０】
一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信する通信装置を制御するコンピュータのプログラムであって、
コンピュータに、
前記他の装置との間で情報を通信するための通信条件に係る要求を前記通信装置から取得するステップと、
前記要求に基づいて、前記他の装置との通信に使用される通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用される通信インタフェースが通信に用いる通信パラメータを指定するステップと、
前記通信装置に対し、選択した通信インタフェースを介し、かつ前記通信パラメータを用いて前記他の装置と通信を行わせるように、前記通信装置に指示するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、制御装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
通信装置において、有線通信には主にＥｔｈｅｒｎｅｔ（登録商標）が用いられ、無線通信には移動通信網、又はＷｉ−Ｆｉ（登録商標）で知られる無線ＬＡＮが主に用いられている。
【０００３】
ＩＰ（Internet Protocol）網で伝送される通信トラフィックは年々増加しており、混雑／輻輳などの問題が顕著になってきている。有線／無線の各通信媒体技術は、データ量の増加に対応するために通信速度を向上させるための技術開発が進められている。例えば、移動通信網においては、３Ｇ、ＬＴＥ（Long Term Evolution）、ＬＴＥ−Ａｄｖａｎｃｅといった様々な技術が開発されている。
【０００４】
一方、年々増加する通信トラフィックに対応するために、通信速度の向上や無線帯域の確保に加えて、現状の通信媒体のリソースを最大限に使いきり、リアルタイム性などのデータ特性に合わせた効率的なデータ伝送を行うことが求められてきている。
【０００５】
このようなニーズに合わせて通信装置も進化しており、無線周波数を効率的に利用可能とするために、例えば、３Ｇ／ＬＴＥに加え、２．４ＧＨｚ帯の無線ＬＡＮ、及び５ＧＨｚ帯の無線ＬＡＮを用いた通信が可能な通信装置のように、複数の通信媒体に対応した通信装置が登場している。
【０００６】
しかしながら、複数の通信媒体に対応した通信装置であっても、例えば、無線ＬＡＮを用いた通信が可能であるにも関わらずＬＴＥを用いて通信を行ったり、比較的空いている５ＧＨｚ帯の無線ＬＡＮを用いた通信が可能であるにも関わらず、混在している２．４ＧＨｚ帯の無線ＬＡＮを用いて通信を行ったりというように、非効率な通信動作を行うことがあった。
【０００７】
ところで、近年、ＳＤＮ(Software-Defined Network)と呼ばれる概念が注目を集めている。ＳＤＮに関連する技術として、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇがある。ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇは、通信をエンド・ツー・エンドのフローと捉え、データの解析、転送先判断、及び決定制御を担うコントロールプレーンと、パケットの物理的な伝送を担うデータプレーンとを分離する技術である。
【０００８】
ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇは、コントロールプレーンの処理をつかさどるＯｐｅｎＦｌｏｗコントローラ(以下、「ＯＦＣ」と言う)が転送ルールを指示し、データプレーンの処理を担うＯｐｅｎＦｌｏｗスイッチ(以下、「ＯＦＳ」と言う)がＯＦＣからの指示に従ってパケットの転送を行う。より具体的には、ＯＦＣが追加及び書き換えを行うフローテーブルをＯＦＳに持たせ、ＯＦＳがフローテーブルに従ってパケットの転送を行う。
【０００９】
上記のＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた技術として、複数の物理ＮＩＣ（Network Interface Card）と、それぞれ異なる物理ＮＩＣと接続された複数の仮想スイッチと、複数の仮想スイッチを切り替える仮想ネットワークインタフェース装置とを接続し、仮想ネットワークインタフェース装置から送信されてきたパケットを解析して得られたパケットの送信先との通信結果に基づいて、前記仮想ネットワークインタフェース装置を第１の仮想スイッチと第２の仮想スイッチとのどちらに接続するかを選択する技術が提案されている（例えば、特許文献１参照）。
【００１０】
しかしながら、上記技術は、単に送信先に応じて送出先の物理ＮＩＣを切り替えるという動作のみを行うもので、端末双方の利用可能な通信媒体や通信媒体のキャパシティに応じて柔軟に最適制御を行うようになってはいない。
【００１１】
また、無線通信は有線通信と比較して多数の通信制御パラメータを有しており、通信制御パラメータにより、無線通信の動作に関する様々な制御を行うことが可能である。その制御は、予め指定された通信制御パラメータに従って動作する静的な制御か、又は、通信状況等に応じて動作が変更される動的な制御かのいずれかである。しかしながら、動的な制御であっても、通信装置が実行するアプリケーションとは独立した制御であり、当該アプリケーションに基づいた制御は行われていない。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
開示の技術は上記に鑑みてなされたもので、通信装置の間で行われる通信内容に応じた通信制御を行うことで、通信媒体のリソースを効率的に利用することを目的とする。
【課題を解決するための手段】
【００１３】
開示の技術の一態様の通信装置は、一つ以上の通信インタフェースを有し、前記一つ以上の通信インタフェースのうちいずれか一つの通信インタフェースを介して他の装置と通信を行う通信装置であって、前記他の装置との間で通信する情報を生成すると共に通信条件に係る要求を出す情報処理部と、前記要求に基づいて、前記他の装置との通信に使用する通信インタフェースを前記一つ以上の通信インタフェースから選択すると共に、前記他の装置との通信に使用する通信インタフェースが通信に使用する通信パラメータを指定する判定部と、前記他の装置との通信に使用する通信インタフェースを、前記判定部が選択した通信インタフェースに切り替える切替部と、前記判定部が選択した通信インタフェースを介し、かつ前記判定部が指定した前記通信パラメータを用いて前記他の装置と通信を行う通信部と、を有する。
【発明の効果】
【００１４】
開示の技術によれば、通信装置の間で行われる通信内容に応じた通信制御を行うことで、通信媒体のリソースを効率的に利用することができる通信装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態に係る通信システムの構成の一例を示す図である。
【図２】通信装置のハードウェア構成の一例を示す図である。
【図３】通信装置の機能ブロック構成の一例を示す図である。
【図４】通信装置に実装される通信機能を階層構造に分割したモデルで例示した図である。
【図５】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇの経路制御機能の概念を説明するための図である。
【図６】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇの経路制御機能の概念を説明するための図である。
【図７】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた通信装置の具体的な実装例を示す図である。
【図８】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた通信システムの具体的な動作の一例を示す図である。
【図９】フローエントリーを生成する処理手順の一例を示すフローチャートである。
【図１０】フローエントリーの設定例の一例を示す図である。
【図１１】ＯＦＳの処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して実施の形態について説明する。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
【００１７】
＜＜概要＞＞
図１は、実施の形態に係る通信システムの構成の一例を示す図である。本実施の形態に係る通信システムは、通信装置１ａ及び通信装置１ｂが、ネットワーク２ａ及びネットワーク２ｂのいずれかを用いて相互に信号を伝達することで通信を行う。なお、本実施の形態に係る通信システムは、二台の通信装置１及び二種類のネットワーク２から構成されているが、三台以上の通信装置１から構成されていてもよいし、一種類又は三種類以上のネットワーク２から構成されていてもよい。
【００１８】
ネットワーク２ａ及びネットワーク２ｂは、例えば、ＧＳＭ（登録商標）（Global System for Mobile communications）、ＧＰＲＳ（General Packet Radio Service）、ＷＣＤＭＡ（登録商標）（Wideband Code Division Multiple Access）、ＬＴＥ（Long Term Evolution）、無線ＬＡＮ、ＷｉＭＡＸ（登録商標）、又はＥｔｈｅｒｎｅｔ（登録商標）等であり、無線及び有線を問わない。また、ネットワーク２ａ及びネットワーク２ｂは、同一種類のネットワーク２であってもよいし、異なる種類のネットワーク２であってもよい。例えば、ネットワーク２ａはＷＣＤＭＡ方式の無線ネットワークを利用し、ネットワーク２ｂは無線ＬＡＮを利用するように、通信システムを構成することができる。
【００１９】
通信装置１ａ及び通信装置１ｂは、一種類以上のネットワーク２と接続することができる。本実施の形態における通信装置１ａ及び通信装置１ｂは、ネットワーク２ａ及びネットワーク２ｂの両方に接続することができるように構成されている。なお、通信装置１ａ及び通信装置１ｂは、デスクトップＰＣ、ノートＰＣ、タブレットＰＣ、プリンタ、ＭＦＰ(Multi Function Peripheral)、デジタルカメラ、ゲーム機、スマートフォン等とすることができる。ただし、通信機能を備えるものであれば、いかなる機器であってもよい。また、通信装置１ａ及び通信装置１ｂは、ノートＰＣ等の同じ機器であってもよいし、ノートＰＣとスマートフォン等の異なる機器であってもよい。
【００２０】
なお、本実施の形態において、通信装置１ａ及び通信装置１ｂのうち任意の通信装置１は「通信装置１」と記載し、ネットワーク２ａ及びネットワーク２ｂのうち任意のネットワーク２は、「ネットワーク２」と記載する。
【００２１】
ここで、本実施の形態における通信システムの動作について、通信装置１ａにインストールされたアプリケーションにより生成されたデータを、通信装置１ａから通信装置１ｂに送信する場合を想定して説明する。
【００２２】
まず、アプリケーションは、通信装置１ｂに送信するデータを生成すると共に、要求する伝送レート（以下、「要求伝送レート」という）を、通信装置１ａが有するネットワーク制御アプリケーションに対して通知する。
【００２３】
要求伝送レートとは、アプリケーションが要求する、データの送信に十分な伝送レートをいう。例えば、アプリケーションがデータの送信を行う際に、最大でも１Ｍｂｐｓの伝送レートがあれば十分であると判断する場合、アプリケーションは、１Ｍｂｐｓの要求伝送レートを通信装置１ａのネットワーク制御アプリケーションに通知する。なお、実効上のネットワーク２の伝送レートは、理論上のネットワーク２の伝送レートより低いことがあるため、アプリケーションは、例えば、一定の割合を付加した要求伝送レートをネットワーク制御アプリケーションに通知するようにしてもよい。
【００２４】
次に、アプリケーションから要求伝送レートの通知を受けた通信装置１ａのネットワーク制御アプリケーションは、ネットワーク２ａ及びネットワーク２ｂのうち、どちらのネットワーク２が要求伝送レートを満たす伝送レートを確保できるかを判断する。要求伝送レートを満たす伝送レートを確保できるネットワーク２は、ネットワーク２ａであると判断した場合、通信装置１ａのネットワーク制御アプリケーションは、ネットワークインタフェースに指示する伝送レート（以下、「上限伝送レート」という）が、要求伝送レート以上となるように設定する。通信装置１ａのネットワーク制御アプリケーションは、設定した上限伝送レートを通信装置１ａが有するネットワークインタフェースに指示する。ネットワークインタフェースは、ネットワーク２ａを介して、通信装置１ｂにデータを送信する。
【００２５】
ここで、上限伝送レートとは、ネットワークインタフェースが、ネットワーク２に送出するデータの伝送レートの上限であり、例えば、１Ｍｂｐｓの上限伝送レートが指定されたネットワークインタフェースは、伝送レートが１Ｍｂｐｓを超えることがないようにデータをネットワーク２に送出する。
【００２６】
なお、ネットワーク制御アプリケーションは、通信装置１に備えてもよいし、通信装置１と通信可能なサーバ等に備えるようにすることもできる。
【００２７】
＜＜ハードウェア構成＞＞
図２は、通信装置のハードウェア構成の一例を示す図である。通信装置１は、通信装置１全体を制御するためのＣＰＵ２０と、ＣＰＵ２０により読み出されるプログラムが記憶される記憶装置と、一以上の通信インタフェース２１と、これらの装置を互いに接続するバス２７とを有する。
【００２８】
記憶装置は、読み出し専用のＲＯＭ２２と、ＣＰＵ２０が各種処理を行う際の作業領域を提供するＲＡＭ２３と、アプリケーションや各種データ等を記憶するためのＨＤＤ２４とを備える。ここではＨＤＤ２４を使用しているが、例えばＳＳＤ(Solid State Drive)又はＮＶＲＡＭを用いてもよい。
【００２９】
通信インタフェース２１は、他の通信装置１等と有線又は無線により通信を行う。通信インタフェース２１は、例えば送信機および受信機を備える送受信モジュール等である。
【００３０】
入力装置２５は、例えば、操作パネル、タッチパネル、キーボード又はポインティングデバイス等であり、通信装置１に対する操作を受け付ける。
【００３１】
表示装置２６は、例えばディスプレイであり、通信装置１の動作結果等を表示する。
【００３２】
外部記憶媒体２９は、バス２７に接続され、アプリケーションや各種データ等を記憶する。外部記憶媒体２９に記憶されるアプリケーションは、ＣＰＵ２０によりＲＡＭ２４にロードされる。なお、外部記憶媒体２９とは、非一時的（non-transitory）な記憶媒体を言う。外部記憶媒体２９の例としては、磁気記憶媒体、光ディスク、光磁気記憶媒体、不揮発性メモリなどがある。
【００３３】
＜＜ソフトウェア構成＞＞
図３は、通信装置の機能ブロック構成の一例を示す図である。
【００３４】
通信装置１は、一以上の通信インタフェース２１と、一以上の通信インタフェース２１と内部インタフェース３２とを接続するスイッチ２８と、他の通信装置１と通信することで機能を実現する一以上の情報処理部３０と、一以上の情報処理部３０に接続される内部インタフェース３２と、一以上の通信インタフェース２１の各々に関する情報を取得する取得部３７と、通信に用いる通信インタフェース２１を制御するためにスイッチ２８に指示を送る判定部３８とを有する。
【００３５】
通信インタフェース２１は、パケットの送受信を行う通信部３５を有する。通信部３５は、更に、指定部３４から指示された上限伝送レートを設定する設定部３６を有する。スイッチ２８は、パケットを送信する通信インタフェース２１を切り替える切替部３３と、指定部３４とを有する。
【００３６】
これら各部は、通信装置１にインストールされた１以上のプログラムが、ＣＰＵ２０に実行させる処理により実現され得る。
【００３７】
情報処理部３０は、他の通信装置１に送信するパケットを生成すると共に要求伝送レートを指定し、指定した要求伝送レートをパケットに含めて内部インタフェース３２に出力する。情報処理部３０は、コンテンツの種類又はデータサイズ等に応じて要求伝送レートを指定するようにしてもよいし、予め固定された値を用いるようにしてもよい。また、情報処理部３０は、他の通信装置１からパケットを受信し、必要に応じて所定の処理を実行する。
【００３８】
内部インタフェース３２は、一以上の情報処理部３０とスイッチ２８とに接続され、一以上の情報処理部３０が出力したパケットをスイッチ２８へ転送し、スイッチ２８から受信したパケットを、所定の情報処理部３０へ転送する。
【００３９】
切替部３３は、内部インタフェース３２から受信したパケットを、判定部３８から指示された通信インタフェース２１に送信する。
【００４０】
指定部３４は、判定部３８から指示された通信インタフェース２１の設定部３６に対して、判定部３８から指定された上限伝送レートを指示する。なお、指定部３４は、当該設定部３６に指示した上限伝送レートを記憶しておき、記憶している上限伝送レートと、判定部３８から指定された上限伝送レートとを比較し、判定部３８から指定された上限伝送レートと、記憶している上限伝送レートとが一致する場合は、設定部３６に対し上限伝送レートを再度指示しないようにしてもよい。
【００４１】
通信部３５は、通信相手の通信装置１と、設定された上限伝送レートを超えないように通信を行う。なお、通信部３５は、通信インタフェース２１が設定可能な一以上の伝送レートを予め記憶しておく。この一以上の伝送レートは、例えば、無線規格ごとに定められている伝送レート、又は、通信インタフェース２１でパケットをシェーピングする際の動作条件等から決定される伝送レート等から定めるようにしてもよい。
【００４２】
また、通信部３５は、例えば他の通信装置１との間における通信状況を把握し、上限伝送レートの範囲内で、通信状況に応じて伝送レートを変更して通信を行うことができるようにしてもよい。通信部３５は、例えば、他の通信装置１からのパケットの応答時間、他の通信装置１から報告されるエラー状況、又は無線信号のＳＮ比等により、通信状況を把握するようにしてもよい。
【００４３】
更に、通信部３５は、通信の安定を確保するために、上限伝送レート又は予め定められた伝送レートで、伝送レートを固定して通信を行うことができるようにしてもよい。なお、伝送レートを固定して通信を行うとは、ＱｏＳ（Quality Of Service）等の機能により、一定の伝送レートが確保されるように通信することをいう。
【００４４】
設定部３６は、指定部３４から指示された上限伝送レートを通信部３５に設定する。なお、設定部３６は、例えば、通信インタフェース２１が公開するＡＰＩ（Application Programming Interface）である。
【００４５】
取得部３７は、通信インタフェース２１に設定可能な伝送レートに関する情報を、一以上の通信インタフェース２１の各々から収集して記憶する。また、取得部３７は、他の通信装置１が備える通信インタフェース２１が設定可能な伝送レートに関する情報も収集することができる。なお、取得部３７は、例えば、通信装置１の起動時に情報を収集するようにしてもよいし、通信インタフェース２１の構成変更が行われたときに情報を収集するようにしてもよい。
【００４６】
判定部３８は、取得部３７が収集した、各通信インタフェース２１に設定可能な伝送レートに関する情報と、情報処理部３０が指定した要求上限レートとに基づき、パケットを送信する通信インタフェース２１を、一以上の通信インタフェース２１の中から選択する。また、判定部３８は、取得部３７が収集した、各通信インタフェース２１に設定可能な伝送レートに関する情報と、情報処理部３０が指定した要求上限レートとに基づき、選択した通信インタフェース２１に設定する上限伝送レートを指定する。
【００４７】
一以上の通信インタフェース２１及び内部インタフェース３２は、その全部がコネクタとソフトウェアドライバとから構成される物理インタフェースであってもよい。また、その一部が、１つの物理インタフェースを複数に見せ掛ける、または複数の物理インタフェースを１つに見せ掛ける仮想インタフェースであってもよい。
【００４８】
スイッチ２８は、ソフトウェア処理で実装されるスイッチに限らず、物理的にパケットの転送先や受信元を切り替える物理スイッチを用いることもできるし、１つの物理スイッチを複数のスイッチとして、また、複数の物理スイッチを１つのスイッチとして扱う仮想スイッチを用いることもできる。
【００４９】
＜通信機能の説明＞
次に、通信装置１に実装される通信機能について説明する。
【００５０】
図４は、通信装置に実装される通信機能を階層構造に分割したモデルで例示した図である。このモデルは、ＯＳＩ(Open System Interconnection)参照モデルであり、第１層の物理層から第７層のアプリケーション層の７つの階層からなるモデルである。ＩＰパケットを交換する現状の通信方式の主流は、第３層のＩＰを共通資産とし、各階層で各インタフェースが定義され、個別に実装し、また、入れ替えを行うことができる水平分業モデルとなっている。ＩＰパケットベースのアプリケーションは、第４層のトランスポート層が規定するポートの概念で通信ピア同士のセッションを作り、各サービスのデータ通信を行っている。
【００５１】
サービスとしては、図４の第５層から第７層にかけて示されている、Ｗｅｂ、ＸＭＬ、Ｗｅｂサービス、メール、メッセージング、ファイル共有、ファイル転送等がある。これらのサービスを提供するアプリケーションは、第３層および第４層に示される、ＴＣＰ／ＩＰやＵＤＰ／ＩＰを使用している限り、それ以下の第１層や第２層の通信層を意識する必要はない。このため、Ｗｅｂやクラウドのサービス開発は、従来の電話交換網のような垂直統合モデルに比して加速することができている。通信装置１も、基本的には、ＩＰパケットベースの通信アプリケーションを開発するための一般的なハードウェア／ソフトウェア構成とすることができる。
【００５２】
通信装置１は、図２および図３に示したような一以上の通信インタフェース２１を備えるだけではなく、それらにパケットを振り分けるスイッチ２８を備える。そのスイッチ２８の一例として、ＯｐｅｎＦｌｏｗスイッチ（以下、「ＯＦＳ」という）を用いることができる。また、ＩＰパケット通信アプリケーションもインタフェースを経由してＯＦＳのポートに接続し、必要に応じてＯｐｅｎＦｌｏｗコントローラ（以下、「ＯＦＣ」という）も動作させることができる。
【００５３】
ＯＦＣは、ＯＦＳに対してＯｐｅｎＦｌｏｗプロトコルを使用して通信を行う。このＯｐｅｎＦｌｏｗプロトコルがもつポート状態通知やスイッチ制御機能等を、本実施の形態の通信装置１に活用することで、ＩＰパケット通信アプリケーションから独立した形で通信装置１の内部の仮想的な経路制御を柔軟に行うことができる。
【００５４】
ここで、図５および図６を参照して、通信装置１に実装可能なＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇの概念について説明しておく。サーバ等から送出されたＩＰパケットは、有線または無線通信における各中継装置を経由して目的の相手まで到達する。従来の方式では、図５（ａ）に示すように、各中継装置が経路制御を自立分散的に行い、パケットの転送先を決定している。すなわち、各ルータ５０が経路制御とパケット転送機能の両方を備え、各ルータ５０がパケットの転送先を決定する。このため、経路制御に関する情報は、各ルータ５０が自己学習し、他のルータへ通知されないので固定的なものとなる。また、各ルータ５０の機能については、機器ベンダーが開発した各種機能を利用しなければならず、カスタマイズすることはできない。
【００５５】
これに対し、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇでは、図５（ｂ）に示すように、ルータ５０における経路制御機能が分離され、ＯＦＣ５１にその機能が実装される。このため、各ルータ５０としての各ＯＦＳ５２は、パケット転送機能のみを備えることになる。経路制御に関する情報は、ＯＦＣ５１がすべて管理し、このＯＦＣ５１が、各ＯＦＳ５２の振る舞いを中央制御するので、より柔軟な制御が可能となっている。
【００５６】
このことは、図４に示したＯＳＩ参照モデルで言うと、第４層までの各種条件で自由に制御することが可能であることを示す。したがって、例えば、ＨＴＴＰ(HyperText Transfer Protocol)で一般的に使用されているＴＣＰポート８０番の通信であれば、経路を変えるという制御も可能となる。
【００５７】
図６に示す概念図を参照して、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇの具体的な仕組み等について説明する。この技術では、図６（ａ）に示すように、ＯＦＣ５１と複数のＯＦＳ５２、５３を用いる。ＯＦＣ５１は、経路制御等の複雑な処理を担当し、ＯＦＳ５２、５３は、データを送る単位であるフレームの転送等の単純な処理のみを担当する。
【００５８】
ＯＦＣ５１は、ＯＦＳ５２、５３がもつフローテーブルの情報の追加、削除、変更を指示する。ＯＦＳ５２、５３は、このフローテーブルの情報に従って、フレームを転送する等の処理を行う。
【００５９】
フローテーブルは、図６（ｂ）に示すように、フレームの制御ルールを表すフローエントリーを含む。そのフローエントリーを識別するための構成要素と、それに対応する条件、統計情報、処理という３種類の情報とが含まれる。構成要素は、互いに識別できるように「フローエントリー１」、「フローエントリー２」等が入力されるフィールドである。条件は、ヘッダフィールドであり、通信を識別し、特定するために、図６（ｃ）に示すような情報が入力されるフィールドである。
【００６０】
統計情報は、条件に適合した通信がどのくらい発生し、どの程度処理したかを管理するフィールドである。処理は、フレームに対する処理を定義するフィールドである。処理としては、例えば、転送(Forward)、指定したキューに入れる(Enqueue)、廃棄(Drop)、指定したフィールドの値を書き換える(Modify-Field)等を挙げることができる。また、特別なグループ向けに予め指定した処理を実行(Group)、タグの追加や取り外し(Push-Tag、Pop-Tag)等も挙げることができる。さらに詳細に指定することもでき、上記の転送では、すべての物理ポートに転送、カプセル化してコントローラに送る、等を指定することができる。
【００６１】
条件は、図６（ｃ）に示す４つの階層（レイヤ１〜４）の情報およびメタデータを挙げることができる。レイヤ１の情報としては、スイッチの物理ポート、レイヤ２の情報としては、宛先のＭＡＣアドレス、送信元のＭＡＣアドレス、イーサネット（登録商標）の種別、仮想ＬＡＮ(VLAN)のＩＤ、仮想ＬＡＮの優先度がある。レイヤ３の情報としては、宛先のＩＰアドレス、送信元のＩＰアドレス、プロトコル番号、ＩＰパケットの優先度(ToS)があり、レイヤ４の情報としては、送信元ＴＣＰ／ＵＤＰポート番号、宛先ＴＣＰ／ＵＤＰポート番号がある。また、レイヤ２、３には、次のルーティング先を識別するためのＭＰＬＳ(Multi-protocol Label Switching)ラベルやＭＰＬＳトラフィッククラスも含むことができる。
【００６２】
図７は、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた通信装置の具体的な実装例を示す図である。
【００６３】
通信装置１において主機能を提供するアプリケーションは、ＩＰパケット通信アプリケーションプログラム７２であり、図４に示したＯＳＩ参照モデルでは、第３層以上で実現されるものである。ここでは、３つのＩＰパケット通信アプリケーションプログラム７２が示されているが、サービスに応じて、１つもしくは２つであってもよいし、４つ以上のプログラムを実装していてもよい。
【００６４】
ＩＰパケット通信アプリケーションプログラム７２は、外部通信向けのＩＰアドレスを保持しており、他の通信装置１と通信を行う際は、このＩＰアドレスが使用される。ＩＰパケット通信アプリケーションプログラム７２は、図示しないＣＰＵにより実行されることで、図３に示した情報処理部３０として機能する。ＩＰパケット通信アプリケーションプログラム７２は、第２層以下を担うＩＰパケット通信内部インタフェース７３に接続され、このＩＰパケット通信内部インタフェース７３を使用してデータ通信を行う。このＩＰパケット通信内部インタフェース７３は、図３に示した内部インタフェース３２に相当するものである。
【００６５】
ＩＰパケット通信内部インタフェース７３は、図３に示したスイッチ２８、切替部３３及び指定部３４として機能するＯＦＳ７４のポートＰ０に接続されている。ＯＦＳ７４の他のポートＰ１、及びポートＰ２には、ＩＰパケット通信外部インタフェース７５が接続されている。ＩＰパケット通信外部インタフェース７５は、図３に示した通信インタフェース２１、通信部３５及び設定部３６として機能する。
【００６６】
通信装置１は、ＯＦＣプログラム７７と、ＯＦＣプログラム７７と通信するための専用のＯｐｅｎＦｌｏｗ外部インタフェース７８とを備えている。ＯＦＣプログラム７７は、ＣＰＵ２０により実行されて、図３に示した取得部３７及び判定部３８として機能する。
【００６７】
ＯＦＳ７４および他の通信装置１が備えるＯＦＳ７４とＯＦＣプログラム７７との間で通信を行う場合、外部とのデータ通信とは分離されたＴＣＰ／ＩＰでの通信を必要とする。このため、この通信では、外部とのデータ通信で使用するＩＰアドレスとは異なるＯｐｅｎＦｌｏｗチャネル用のＩＰアドレスが一般に使用される。ＯＦＳ７４および他の通信装置１が備えるＯＦＳ７４とＯＦＣプログラム７７とが近傍にある場合、ＤＨＣＰ等により適宜アサインした「192.168.0.1」のようなローカルアドレスを使用することができる。この場合、ＩＰｖ６のローカルアドレスを使用することもできる。通信装置１の中で動作するＯＦＳ７４とＯＦＣプログラム７７とは、「127.0.0.1」のような内部Ｌｏｏｐｂａｃｋアドレスを使用して通信を行うことができる。
【００６８】
通信装置１は、ＩＰパケット通信外部インタフェース７５に関する情報を取得する際、ＯＦＣプログラム７７を実行し、ＯｐｅｎＦｌｏｗ外部インタフェース７８等を使用して通信を行い、その情報を取得することができる。
【００６９】
これらインタフェースやスイッチ２８は、上記のように、すべてが物理インタフェースや物理スイッチであってもよいし、その一部又は全部が仮想インタフェースや仮想スイッチであってもよい。また、通信パフォーマンスを向上させるために、データプレーン部分がハードウェアアクセラレーションされている構成であってもよい。スイッチ２８は、ＮＡＴ(Network Address Translation)ルータのような、ローカルＩＰアドレスをグローバルＩＰアドレスに変換する機能をもつ構成とされていてもよい。
【００７０】
＜＜処理又は動作の説明＞＞
図８は、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた通信システムの具体的な動作の一例を示す図である。図８を用いて、ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈｉｎｇを用いた通信システムにおいて、通信装置１がどのように動作するのかを説明する。
【００７１】
通信装置１ａ、及び通信装置１ｂは、各々が近距離高速用無線インタフェース８０、中距離低速用無線インタフェース８１、及びＯｐｅｎＦｌｏｗチャネル用インタフェース８２を備えている。近距離高速用無線インタフェース８０及び中距離低速用無線インタフェース８１は、図７のＩＰパケット通信外部インタフェース７５に該当し、ＯｐｅｎＦｌｏｗチャネル用インタフェース８２は、図７のＯｐｅｎＦｌｏｗ外部インタフェースに該当する。
【００７２】
近距離高速用無線インタフェース８０ａは、近距離高速用無線インタフェース８０ｂと接続されている。中距離低速用無線インタフェース８１ａは、中距離低速用無線インタフェース８１ｂと接続されている。
【００７３】
図８の例では、ＯＦＣプログラム７７は、通信装置１ａに備えられている。ＯＦＣプログラム７７を通信装置１ａ及び通信装置１ｂの両方に備える構成としてもよいが、その場合は、通信装置１ａ及び通信装置１ｂのいずれか一方のＯＦＣプログラム７７は、その動作が無効になるように設定される。
【００７４】
ＯｐｅｎＦｌｏｗチャネル用インタフェース８２ａは、ＯｐｅｎＦｌｏｗチャネル用インタフェース８２ｂと接続されている。ＯＦＳ７４ａは、通信装置１ａの内部でＯＦＣプログラム７７と相互にパケットを伝送する。ＯＦＳ７４ｂは、ＯｐｅｎＦｌｏｗチャネル用インタフェース８２ｂを介して、ＯＦＣプログラム７７と相互にパケットを伝送する。なお、ＯｐｅｎＦｌｏｗチャネル用インタフェース８２ａ及びＯｐｅｎＦｌｏｗチャネル用インタフェース８２ｂは、通信の安定を確保するために、伝送レートを固定して通信を行うようにしてもよい。
【００７５】
なお、以下の図８を用いた説明において、ＩＰパケット通信アプリケーションプログラム７２ａがサーバとして動作し、ＩＰパケット通信アプリケーションプログラム７２ｂがクライアントとして動作すると仮定する。また、ＩＰパケット通信アプリケーションプログラム７２ａは、コンテンツを送信するために必要な要求伝送レートを予め把握しているものとする。また、コンテンツの送信には、ＴＣＰ／ＩＰを用いると仮定する。なお、近距離高速用無線インタフェース８０及び中距離低速用無線インタフェース８１を、まとめて「無線インタフェース」という。
【００７６】
まず、ＯＦＣプログラム７７は、ＯＦＳ７４ａ及びＯＦＳ７４ｂから、ＯＦＳ７４ａ及びＯＦＳ７４ｂが有する全てのポート（Ｐ０、Ｐ１、Ｐ２）に関する情報を収集する。全てのポートに関する情報には、各ポートに接続された無線インタフェースに設定可能な全ての伝送レートが含まれる。収集する方法は、ＯＦＣプログラム７７がＯＦＳ７４ａ及びＯＦＳ７４ｂに問い合わせるようにしてもよいし、ＯＦＳ７４ａ及びＯＦＳ７４ｂが自らＯＦＣプログラム７７に通知するようにしてもよい。
【００７７】
なお、現在のＯｐｅｎＦｌｏｗプロトコルの仕様では、ＯＦＳ７４からＯＦＣに通知可能なポートに関する情報の中に、無線インタフェースに関する情報が規定されていない。従って、ＯＦＳ７４ａ及びＯＦＳ７４ｂが、ＯＦＣプログラム７７に、無線インタフェースがサポートする伝送レートを通知する方法として、例えば、ＯｐｅｎＦｌｏｗプロトコルで定められているシンメトリックメッセージのベンダー拡張領域を使用する方法、又はＯｐｅｎＦｌｏｗプロトコルを使用せずに、独自のメッセージを規定して通知する方法等が考えられる。
【００７８】
次に、ＩＰパケット通信アプリケーションプログラム７２ａは、コンテンツの送信を開始する。ＩＰパケット通信アプリケーションプログラム７２ａは、ＩＰパケット通信アプリケーションプログラム７２ｂに向けたパケットを生成する。ＩＰパケット通信アプリケーションプログラム７２ａは、生成するパケットのＩＰヘッダにパケットの送信先である通信装置１ｂの宛先ＩＰアドレスを格納すると共に、ＴＣＰヘッダの予約領域に要求伝送レートを格納する。
【００７９】
ＩＰパケット通信アプリケーションプログラム７２ａは、生成したパケットをＩＰパケット内部インタフェース７３ａに送信する。ＩＰパケット内部インタフェース７３ａは、受信したパケットをＯＦＳ７４ａに送信する。
【００８０】
ＯＦＳ７４ａは、フローテーブルに格納されているフローエントリーを検索し、受信したパケットにマッチするフローエントリーが存在するかを確認する。
【００８１】
マッチするフローエントリーが存在する場合は、フローエントリーに従って処理を実行する。マッチするフローエントリーが存在しない場合は、ＯＦＳ７４ａはＯＦＣプログラム７７にフローエントリーを問い合わせ、ＯＦＣプログラム７７から返信されるフローエントリーに従って処理を実行する。
【００８２】
ＯＦＳ７４ａは、フローエントリーで指示されるパケットの送信先のポートに対する上限伝送レートが、ＯＦＳ７４ａのメモリに記憶されているかを確認する。記憶されていない場合、又は、記憶している上限伝送レートとフローエントリーで指示される上限伝送レートとが一致しない場合、ＯＦＳ７４ａは、送信先のポートに接続されている無線インタフェースに上限伝送レートを通知すると共に、送信先のポートにパケットを転送する。記憶している上限伝送レートとフローエントリーで指示される上限伝送レートとが一致する場合、ＯＦＳ７４ａは、送信先のポートに接続されている無線インタフェースに上限伝送レートを通知せずに、送信先のポートにパケットを転送する。
【００８３】
無線インタフェースは、ＯＦＳ７４ａから指定された上限伝送レートを超えないように、パケットを送出する。なお、無線装置ａの無線インタフェースは、無線の通信状況に応じて、指定された上限伝送レートの範囲内で、伝送レートを適宜変更して通信を行うことができるようにしてもよい。無線装置ａの無線インタフェースは、無線信号のＳＮ比、通信装置１ｂの無線インタフェースとの間で測定されるパケットの応答時間、又は無線装置ｂの無線インタフェースから通知されるエラー状況等により、無線の通信状況を把握するようにしてもよい。
【００８４】
通信装置１ｂのＯＦＳ７４ｂは、無線インタフェースを介して通信装置１ａからパケットを受信すると、フローテーブルに格納されているフローエントリーを検索し、受信したパケットにマッチするフローエントリーが存在するかを確認する。
【００８５】
マッチするフローエントリーが存在する場合は、フローエントリーに従い、受信したパケットをＯＦＳ７４ｂのポートＰ０に転送する。マッチするフローエントリーが存在しない場合は、ＯＦＳ７４ａはＯＦＣプログラム７７にフローエントリーを問い合わせ、ＯＦＣプログラム７７から返信されるフローエントリーに従い、受信したパケットをＯＦＳ７４ｂのポートＰ０に転送する。
【００８６】
ＩＰパケット内部インタフェース７３ｂは、ＯＦＳ７４ｂのポートＰ０を介して受信したパケットに含まれるＴＣＰヘッダを参照し、ＩＰパケット通信アプリケーションプログラム７２ｂにパケットを送信する。
【００８７】
＜ＯＦＣのフローエントリー生成処理＞
次に、図９及び図１０を用いて、ＯＦＣプログラム７７がフローエントリーを生成する処理について具体的に説明する。
【００８８】
図９は、フローエントリーを生成する処理手順の一例を示すフローチャートである。
【００８９】
ステップＳ２０１で、ＯＦＣプログラム７７は、ＯＦＳ７４からフローエントリーの問い合わせを受信すると、フローエントリーの問い合わせを送信したＯＦＳ７４が、コンテンツのパケットの送信元のＯＦＳ７４であるかを確認する。フローエントリーの問い合わせを送信したＯＦＳ７４が、コンテンツのパケットの送信元のＯＦＳ７４である場合、ステップＳ２０３に進み、フローエントリーの問い合わせを送信したＯＦＳ７４が、コンテンツのパケットの送信先のＯＦＳ７４である場合、ステップＳ２１３に進む。
【００９０】
なお、図８に示すＩＰパケット通信アプリケーションプログラム７２は、生成するパケットのＴＣＰヘッダの予約領域に要求伝送レートを格納するが、ＯｐｅｎＦｌｏｗプロトコルの規格では、フローエントリーを問い合わせる信号にＯＦＳ７４が受信したパケットを含めることができる。そのため、ＯＦＣは、フローエントリーの問い合わせに関する信号を受信することで、要求伝送レートを把握することができる。
【００９１】
ステップＳ２０３で、ＯＦＣプログラム７７は、マッチするフローエントリーが存在しないことに伴い、ＯＦＳからフローエントリーの決定を要求されているのか、又は、マッチするフローエントリーは存在するが、当該フローエントリーで指定される送信先のポートで通信出来ないことに伴い、ＯＦＳからフローエントリーの見直しを要求されているのかを判断する。フローエントリーの決定を要求されている場合は、ステップＳ２０５に進み、フローエントリーの見直しを要求されている場合は、ステップＳ２１１に進む。
【００９２】
ステップＳ２０５で、ＯＦＣプログラム７７は、パケットの送信元のＯＦＳ７４及びパケットの送信先のＯＦＳ７４が備える同一種類のポートの組み合わせの中で、双方のポートで共通に設定可能な伝送レートのうち、要求伝送レート以上の伝送レートで、かつ、最も要求伝送レートに近い伝送レートを有するポートが存在するかを確認する。存在する場合はステップＳ２０７に進み、存在しない場合はステップＳ２０９に進む。
【００９３】
ここで、同一種類のポートの組み合わせとは、例えば、近距離高速用無線インタフェース８０ａが接続されているポートと近距離高速用無線インタフェース８０ｂが接続されているポートとの組み合わせ、中距離低速用無線インタフェース８１ａが接続されているポートと中距離低速用無線インタフェース８１ｂが接続されているポートとの組み合わせのことをいう。
【００９４】
ステップＳ２０７で、ＯＦＣプログラム７７は、ステップＳ２０５で、存在すると判断したポートの各々に設定可能な伝送レートのうち、要求伝送レート以上で、かつ、最も要求伝送レートに近い伝送レートと、当該伝送レートを設定可能なポートとを、フローエントリーに設定する。続いて、ＯＦＣプログラム７７は、設定したフローエントリーを、コンテンツのパケットの送信元のＯＦＳ７４（ステップＳ２０１でフローエントリーの問い合わせを送信したＯＦＳ７４）に送信する。
【００９５】
ステップＳ２０９で、ＯＦＣプログラム７７は、パケットの送信元のＯＦＳ７４及びパケットの送信先のＯＦＳ７４が備える同一種類のポートの組み合わせの中で、双方のポートで最も高速なポート（設定可能な伝送レートが最も高速であるポート）を選択し、選択したポートと、当該ポートに設定可能な伝送レートのうち、最も高速である伝送レートとをフローエントリーに設定する。続いて、ＯＦＣプログラム７７は、設定したフローエントリーを、コンテンツのパケットの送信元のＯＦＳ７４（ステップＳ２０１でフローエントリーの問い合わせを送信したＯＦＳ７４）に送信する。
【００９６】
ステップＳ２１１で、ＯＦＣプログラム７７は、パケットの送信元のＯＦＳ７４及びパケットの送信先のＯＦＳ７４が備える同一種類のポートの組み合わせの中で、マッチしたフローエントリーに現在設定されているポート以外のポートのうち、設定可能な伝送レートが、当該フローエントリーに現在設定されているポートの次に低速であるポートと、当該ポートに設定可能な伝送レートのうち、要求伝送レート未満、かつ、最も高速である伝送レートとをフローエントリーに設定する。続いて、ＯＦＣプログラム７７は、設定したフローエントリーを、コンテンツのパケットの送信元のＯＦＳ７４（ステップＳ２０１でフローエントリーの問い合わせを送信したＯＦＳ７４）に送信する。
【００９７】
ステップＳ２１３で、ＯＦＣプログラム７７は、コンテンツのパケットをＩＰパケット通信アプリケーションに転送するため、ＩＰパケット通信内部インタフェース７３に接続されているポートをフローエントリーに設定する。なお、ＯＦＣプログラム７７は、上限伝送レートは指定しない。通信装置１の内部通信であるため、上限伝送レートを指定する必要がないためである。
【００９８】
図１０は、フローエントリーの設定例の一例を示す図である。まず、図１０を用いて、ステップＳ２０７、又はステップＳ２０９の処理の具体例を説明する。
【００９９】
図１０の例では、パケット送信元のＯＦＳ７４及びパケット送信先のＯＦＳ７４の各々のポート１がサポートする伝送レートは、高い順に、ｃｃＭｂｐｓ、ｅｅＭｂｐｓ、ｆｆＭｂｐｓである。また、パケット送信元のＯＦＳ７４及びパケット送信先のＯＦＳ７４の各々のポート２がサポートする伝送レートは、高い順に、ａａＭｂｐｓ、ｂｂＭｂｐｓ、ｃｃＭｂｐｓ、ｄｄＭｂｐｓである。
【０１００】
要求伝送レートが、ｂｂＭｂｐｓを超える場合、ステップＳ２０７又はステップＳ２０９の処理が行われる。フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート２及びａａＭｂｐｓである。
【０１０１】
要求伝送レートが、ｃｃＭｂｐｓを超えてｂｂＭｂｐｓ以下の場合、ステップＳ２０７の処理が行われる。フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート２及びｂｂＭｂｐｓである。
【０１０２】
要求伝送レートが、ｄｄＭｂｐｓを超えてｃｃＭｂｐｓ以下の場合、ステップＳ２０７の処理が行われる。図１０の例では、ポート１及びポート２の各々で、同一値であるｃｃＭｂｐｓの伝送レートを設定可能である。この場合、ＯＦＣプログラム７７は、最も低い伝送レートを設定可能なポートを選択するようにする。具体的に説明すると、ポート１に設定可能な最も低い伝送レートはｆｆＭｂｐｓであり、ポート２に設定可能な最も低い伝送レートはｄｄＭｂｐｓであるため、ＯＦＣプログラムはポート１を選択する。すなわち、フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート１及びｃｃＭｂｐｓである。
【０１０３】
要求伝送レートが、ｅｅＭｂｐｓを超えてｄｄＭｂｐｓ以下の場合、ステップＳ２０７の処理が行われる。フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート２及びｄｄＭｂｐｓである。
【０１０４】
要求伝送レートが、ｆｆＭｂｐｓを超えてｅｅＭｂｐｓ以下の場合、ステップＳ２０７の処理が行われる。フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート１及びｅｅＭｂｐｓである。
【０１０５】
要求伝送レートが、ｆｆＭｂｐｓ以下の場合、ステップＳ２０７の処理が行われる。フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート１及びｆｆＭｂｐｓである。
【０１０６】
次に、図１０を用いて、ステップＳ２１１の処理の具体例を説明する。例えば、要求伝送レートがｃｃＭｂｐｓを超えてｂｂＭｂｐｓ以下である場合に、ポート２からパケットを転送することが出来ないためにＯＦＳからフローエントリーの見直しを要求された場合、フローエントリーに設定されるポート及び上限伝送レートは、それぞれポート１及びｃｃＭｂｐｓである。
【０１０７】
＜ＯＦＳの処理＞
次に、ＯＦＳ７４の動作について具体的に説明する。
【０１０８】
図１１は、ＯＦＳの処理手順の一例を示すフローチャートである。
【０１０９】
ステップＳ３０１で、ＯＦＳ７４は、フローテーブルに格納されているフローエントリーを検索し、受信したパケットにマッチするフローエントリーが存在するかを確認する。マッチするフローエントリーが存在する場合はステップＳ３０３に進み、存在しない場合はステップＳ３１３に進む。
【０１１０】
ステップＳ３０３で、ＯＦＳ７４は、フローエントリーに設定されているポートに接続されているＩＦがＩＰパケット通信外部インタフェース７５であるかを確認する。ＩＰパケット通信外部インタフェース７５である場合はステップＳ３０５に進み、外部ＩＦではない場合（すなわち、ＩＰパケット通信内部インタフェース７３である場合）はステップＳ３０９に進む。
【０１１１】
ステップＳ３０５で、ＯＦＳ７４は、フローエントリーに設定されている上限伝送レートと、フローエントリーに設定されたポートに接続されたＩＰパケット通信外部インタフェース７５の設定部３６に指示されている上限伝送レートとが同一の値であるかを確認する。同一の値でない場合はステップＳ３０７に進み、同一の値である場合はステップＳ３０９に進む。
【０１１２】
ステップＳ３０７で、ＯＦＳ７４は、フローエントリーに設定されている上限伝送レートを、ＩＰパケット通信外部インタフェース７５の設定部３６に通知する。
【０１１３】
ステップＳ３０９で、ＯＦＳ７４は、ステップＳ３０１で受信したパケットを、フローエントリーで設定されたポートに転送する。
【０１１４】
ステップＳ３１１で、ＯＦＳ７４は、ステップＳ３０９でパケットを送信したポートに接続されたＩＰパケット通信外部インタフェース７５から、パケットが転送されたかどうかを確認する。パケットが転送された場合は処理を終了し、パケットが転送されない場合は、ステップＳ３１５に進む。なお、パケットが転送されたかどうかを確認する方法としては、例えば、ＯＦＳ７４は、パケットが転送されない場合にＩＰパケット通信外部インタフェース７５から通知を受けるようにしてもよい。なお、ＩＰパケット通信外部インタフェース７５からパケットが転送されない場合の要因としては、例えば、ＩＰパケット通信外部インタフェース７５の故障や、無線区間の輻輳等が挙げられる。
【０１１５】
ステップＳ３１３で、ＯＦＳ７４は、ＯＦＣプログラム７７に対し、マッチするフローエントリーが存在しない場合、ＯＦＣにフローエントリーの決定を要求する。なお、ステップＳ３１３の処理により、図９のステップＳ２０１の処理が起動され、ステップＳ２０７、ステップＳ２０９又はステップＳ２１３のいずれかの処理によってフローエントリーが作成されることになる。
【０１１６】
ステップＳ３１５で、ＯＦＳ７４は、ＯＦＣプログラム７７に対し、フローエントリーで指定される送信先のポートから通信が出来ないことを理由として、フローエントリーの見直しを要求する。なお、ステップＳ３１５の処理により、図９のステップＳ２０１の処理が起動され、ステップＳ２１１の処理によってフローエントリーが作成されることになる。
【０１１７】
＜実施形態の主な効果＞
以上説明したように、本実施の形態によれば、通信内容に応じた通信制御を行うことで、通信媒体のリソースを効率的に利用することができる通信装置１を提供することができる。
【０１１８】
また、本実施の形態によれば、通信装置１は、通信するコンテンツの内容に応じた要求伝送レートをアプリケーションから指定可能とし、要求伝送レートに応じて選択された通信インタフェース２１において、指定された伝送レートの範囲内で通信を行うようにしている。これにより、特に、通信媒体に周波数共有型である無線通信を利用した場合において、通信装置１の間で通信する際に消費する無線リソースを最小限とすることができ、その結果、周辺の通信装置の通信性能に与える影響を軽減させることができる。
【０１１９】
また、本実施の形態によれば、ＯＦＳ７４は、ＩＰパケット通信外部インタフェース７５に現在設定されている上限伝送レートと、フローエントリーに設定されている上限伝送レートとが同一の値であるかを確認し、異なる値である場合にのみ、ＩＰパケット通信外部インタフェース７５に上限伝送レートを設定するようにしている。これにより、不要な動作が行われることを防止し、ＩＰパケット通信外部インタフェース７５に対する負荷を軽減させることができる。
【０１２０】
また、本実施の形態によれば、ＩＰパケット通信外部インタフェース７５は、他の通信装置１との間における通信状況を把握し、上限伝送レートの範囲内で、通信状況に応じて伝送レートを変更して通信を行うことができるようにしている。これにより、通信媒体に周波数共有型である無線通信を利用した場合に、無線通信の通信状態が悪化した場合でも、周辺の通信装置の通信性能に与える影響を軽減させることができる。
【０１２１】
＜実施形態の補足＞
本実施の形態では、通信装置１の間で送受信されるパケットはＴＣＰ／ＩＰを用いた通信であるとして説明したが、ＴＣＰ／ＩＰに限らず、他のプロトコルも利用可能である。
【０１２２】
本実施の形態において、ＯＰＣプログラム７７は、通信装置１に備えてもよいし、通信装置１と通信可能なサーバ等に備えるようにすることもできる。
【０１２３】
本実施の形態において、通信部３５及びＩＰパケット通信外部インタフェース７５は、一時的に上限伝送レート又は予め定められた伝送レートを超えてパケットを送出することを許容するようにしてもよい。
【０１２４】
本発明は実施の形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。
【０１２５】
本実施の形態で述べたフローチャートは、矛盾の無い限り順序を入れ替えてもよい。
【０１２６】
本実施の形態の全部又は一部は、プログラムによって実装され得る。このプログラムは、外部記憶媒体２９に格納することができる。
【０１２７】
なお、本実施の形態において、要求伝送レートは、通信条件に係る要求の一例である。また、上限伝送レートは、通信パラメータの一例である。
【符号の説明】
【０１２８】
１  通信装置
２  ネットワーク
２１  通信インタフェース
２８  スイッチ
３０  情報処理部
３３  切替部
３４  指定部
３５  通信部
３６  設定部
３７  取得部
３８  判定部
７２  ＩＰパケット通信アプリケーションプログラム
７４  ＯＦＳ
７５  ＩＰパケット通信外部インタフェース
７７  ＯＦＣプログラム
【先行技術文献】
【特許文献】
【０１２９】
【特許文献１】再表２０１１／０８７０８５号公報
【非特許文献】
【０１３０】
【非特許文献１】ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．４．０
【図１】
2016086363.tif 000003
【図２】
2016086363.tif 000004
【図３】
2016086363.tif 000005
【図４】
2016086363.tif 000006
【図５】
2016086363.tif 000007
【図６】
2016086363.tif 000008
【図７】
2016086363.tif 000009
【図８】
2016086363.tif 000010
【図９】
2016086363.tif 000011
【図１０】
2016086363.tif 000012
【図１１】
2016086363.tif 000013