(57)【特許請求の範囲】
【請求項１】
通信インタフェースを備えた通信路切替装置であって、
受信したデータが無線通信を認証するための認証データであるか否かを判断する判断手段と、
他の通信装置と前記無線通信を行うための１つ以上の通信機能を実行するアプリケーション手段と、
前記アプリケーション手段に前記１つ以上の通信機能を実行させるためのデータを転送するデータ切替手段と、
前記データ切替手段により前記データを転送するための設定を行う制御手段と、
前記制御手段による設定に基づいて、前記データ切替手段から転送されたデータを、前記アプリケーション手段に転送する仮想デバイス手段と、
を含み、
前記判断手段が、前記通信路切替装置の外部から前記通信インタフェースを介して受信したデータが他の通信装置との無線通信を認証するための認証データであるか否かを判断し、
前記データ切替手段が、前記判断手段により、前記受信したデータが前記認証データであると判断されたときに、前記受信したデータを、前記制御手段によって設定された設定に基づいて前記仮想デバイス手段に転送し、
前記仮想デバイス手段が、前記判断手段で前記データが前記認証データであると判断された後に、前記データ切替手段から転送されたデータを、前記アプリケーション手段に送信する、
ことを特徴とする通信路切替装置。
【請求項２】
前記判断手段により前記データが前記認証データでないと判断されると、前記制御手段により、前記データを転送するための設定が行われているか否かを確認する確認手段をさらに含むことを特徴とする請求項１に記載の通信路切替装置。
【請求項３】
前記確認手段により前記データを転送するための設定が行われていることが確認されると、前記データ切替手段は、前記データを当該設定にしたがって転送することを特徴とする請求項２に記載の通信路切替装置。
【請求項４】
前記確認手段により前記データを転送するための設定が行われていないことが確認されると、前記データ切替手段は、前記制御手段に対し、前記データの処理方法を問い合わせることを特徴とする請求項３に記載の通信路切替装置。
【請求項５】
前記データ切替手段は、装置外のネットワークインタフェースから装置内の前記通信インタフェースを介して取得した前記データを転送することを特徴とする請求項１から４の何れか１項に記載の通信路切替装置。
【請求項６】
前記装置外のネットワークインタフェースとは異なる他の装置外のネットワークインタフェースを介して前記データ切替手段に接続され、自装置の動作を制御する自装置外の他の制御手段をさらに含むことを特徴とする請求項５に記載の通信路切替装置。
【請求項７】
通信インタフェースを備え、
受信したデータが無線通信を認証するための認証データであるか否かを判断する判断手段と、
他の通信装置と前記無線通信を行うための１つ以上の通信機能を実行するアプリケーション手段と、
前記アプリケーション手段に前記１つ以上の通信機能を実行させるためのデータを転送するデータ切替手段と、
前記データ切替手段により前記データを転送するための設定を行う制御手段と、
前記制御手段による設定に基づいて、前記データ切替手段から転送されたデータを、前記アプリケーション手段に転送する仮想デバイス手段と、
を含む通信路切替装置の制御方法であって、
前記判断手段が、前記通信路切替装置の外部から前記通信インタフェースを介して受信したデータが他の通信装置との無線通信を認証するための認証データであるか否かを判断し、
前記データ切替手段が、前記判断手段により、前記受信したデータが前記認証データであると判断されたときに、前記受信したデータを、前記制御手段によって設定された設定に基づいて前記仮想デバイス手段に転送し、
前記仮想デバイス手段が、前記判断手段で前記データが前記認証データであると判断された後に、前記データ切替手段から転送されたデータを、前記アプリケーション手段に送信する、
通信路切替装置の制御方法。
【請求項８】
通信インタフェースを備え、
受信したデータが無線通信を認証するための認証データであるか否かを判断する判断手段と、
他の通信装置と前記無線通信を行うための１つ以上の通信機能を実行するアプリケーション手段と、
前記アプリケーション手段に前記１つ以上の通信機能を実行させるためのデータを転送するデータ切替手段と、
前記データ切替手段により前記データを転送するための設定を行う制御手段と、
前記制御手段による設定に基づいて、前記データ切替手段から転送されたデータを、前記アプリケーション手段に転送する仮想デバイス手段と、
を含む通信路切替装置のコンピュータに、
前記判断手段が、前記通信路切替装置の外部から前記通信インタフェースを介して受信したデータが他の通信装置との無線通信を認証するための認証データであるか否かを判断する処理と、
前記データ切替手段が、前記判断手段により、前記受信したデータが前記認証データであると判断されたときに、前記受信したデータを、前記制御手段によって設定された設定に基づいて前記仮想デバイス手段に転送する処理と、
前記仮想デバイス手段が、前記判断手段で前記データが前記認証データであると判断された後に、前記データ切替手段から転送されたデータを、前記アプリケーション手段に送信する処理と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信路切替装置、通信路切替装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
通信ネットワークは、公衆回線等の広域通信、企業構内ＬＡＮ（Local Area Network）等の中規模エリア通信、及びオフィスの居室や会議室等でユーザ端末間を繋ぐ近距離通信に至るまで、インターネットプロトコル（ＩＰ：Internet Protocol）によるパケット通信化が進み、用途をあらゆる領域に拡大している。ＩＰパケットを伝送する媒体として、有線通信はＥｔｈｅｒｎｅｔ（登録商標）に略収束し、無線通信は遠距離が３Ｇ（Third Generation）／ＬＴＥ（Long Term Evolution）系、中距離から近距離までがＷｉ−Ｆｉ（Wireless Fidelity）の愛称で知られるＩＥＥＥ（The Institute of Electrical and Electronics Engineers ,Inc）８０２．１１無線ＬＡＮ系に略収束しつつある。
【０００３】
一方、近年Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ（ＳＤＮ）と呼ばれる概念が注目を集めている。文字通り、ソフトウェアによる記述でネットワークの動作を定義しようというもので、最も注目を集めている大きな構成技術要素として、ネットワークの仮想化と、その仮想化通信を制御する手法及びプロトコルの一つでありベンダに依存しないオープンな仕様であるＯｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇがある。
【０００４】
Ｏｐｅｎ  Ｆｌｏｗ（登録商標）とは、通信をエンド・ツー・エンドのフローとして捉え、そのフロー単位に経路制御、負荷分散、最適化等を行える技術で、ＯＮＦ（Open Networking Foundation）という非営利団体で標準化が進められている。具体的には、データ通信経路のスイッチングハブ（スイッチ）といった中継機器等において、自立分散的に各データパケットを解析して転送するのではなく、コントローラと呼ばれる機器等で各中継機器に対する集中制御を行うものである。
【０００５】
Ｏｐｅｎ  Ｆｌｏｗでは、データの解析・転送先判断及び決定制御部分であるコントロールプレーンと、単なるパケットの物理的な伝送を担う部分であるデータプレーンとを分離している。そして、前者を担うＯｐｅｎ  Ｆｌｏｗコントローラ（ＯＦＣ）が転送ルールを指示し、後者を担うＯｐｅｎ  Ｆｌｏｗスイッチ（ＯＦＳ）は、ＯＦＣの指示、具体的には、ＯＦＣが追加・書換を行うＯＦＳが持つフローテーブルにしたがって転送を行う。この仕組みを用いることで、前述のネットワーク仮想化を制御するためのツールとして活用できる。
【０００６】
ネットワーク仮想化、及びＯｐｅｎ  ＦｌｏｗといったＳＤＮ関連技術は、ＩＰ通信網の中でも通信負荷が集中するＷｅｂ／クラウド・データセンタ、及び通信キャリア・バックボーン等での活用が急拡大し、柔軟な最適化制御によって通信トラフィックの効率化やネットワーク機器の削減等、コスト及びエネルギーの低減等が実現されてきている。このような、Ｏｐｅｎ  Ｆｌｏｗと呼ばれる技術が既に知られている。
【０００７】
特許文献１には、コンピュータシステムの適応度を高めること、及びＴＣＰ（Transmission Control Protocol）層よりも上位のプロトコルに応じたフロー制御が可能なコンピュータシステムを提供することを目的として、ＴＣＰヘッダに上位のプロトコル情報を含めた通信方法等が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、同一のマシン内で、ＯＦＳをＮＩＣ（Network Interface Card）等のネットワークインタフェースと接続すると、ＯＦＳが、ＮＩＣが受信したデータをすべて横取りしてしまうことがある。その結果、ＯＦＳをＮＩＣ等のネットワークインタフェースに接続する以前は正常にデータを受信したり処理したりすることができていた他のサービス又はソフトウェアが、データを受信することができなくなり、従来ＮＩＣから特定のデータを取得して利用及び処理していたサービス又はソフトウェアを正常に処理することができなくなるという問題があった。
【０００９】
また、特許文献１に開示された技術では、通信データのヘッダを見たフロー制御を行っている。しかしながら、上記したＯＦＳをＮＩＣ等のネットワークインタフェースに接続する以前は正常にデータを受信したり処理したりすることができていた他のサービス又はソフトウェアが、データを受信したり処理したりすることができなくなり、サービス又はソフトウェアを正常に処理することができなくなるという問題は依然として解決されていない。
【００１０】
そこで、本発明は、上記従来技術の問題点に鑑みてなされたものであって、オープンフロースイッチ（ＯＦＳ）をネットワークインタフェースに接続しない状態で正常に実行されていたサービス又はソフトウェアを、ＯＦＳをネットワークインタフェースに接続した場合でも、正常に実行することが可能な通信路切替装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、請求項１に記載の本発明における通信路切替装置は、通信インタフェースを備えた通信路切替装置であって、受信したデータが無線通信を認証するための認証データであるか否かを判断する判断手段と、他の通信装置と前記無線通信を行うための通信機能を実行するアプリケーション手段と、前記アプリケーション手段に前記通信機能を実行させるためのデータを転送するデータ切替手段と、前記データ切替手段により前記データを転送するための設定を行う制御手段と、前記制御手段による設定に基づいて、前記データ切替手段から転送されたデータを、前記アプリケーション手段に転送する仮想デバイス手段と、を含み、前記判断手段が、前記通信路切替装置の外部から前記通信インタフェースを介して受信したデータが他の通信装置との無線通信を認証するための認証データであるか否かを判断し、
前記データ切替手段が、前記判断手段により、前記受信したデータが前記認証データであると判断されたときに、前記受信したデータを、前記制御手段によって設定された設定に基づいて前記仮想デバイス手段に転送し、
前記仮想デバイス手段が、前記判断手段で前記データが前記認証データであると判断された後に、前記データ切替手段から転送されたデータを、前記アプリケーション手段に送信する、
ことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、オープンフロースイッチ（ＯＦＳ）をネットワークインタフェースに接続しない状態で正常に実行されていたサービス又はソフトウェアを、ＯＦＳをネットワークインタフェースに接続した場合でも、正常に実行することが可能な通信路切替装置を得ることができる。
【図面の簡単な説明】
【００１３】
【図１】通信路切替装置に実装される通信機能を、階層構造に分割したモデルで例示した図である。
【図２】（ａ）従来の経路切替スイッチの構成、（ｂ）Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇの構成について説明する図である。
【図３】Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈにおいて保存されるフローテーブルの構成について説明する図である。
【図４】本実施形態の通信路切替装置の概略構成を示すハードウェアブロックの一例を示す図である。
【図５】本実施形態の通信路切替装置の概略構成を示す機能ブロックの一例を示す図である。
【図６】ＬＡＮ内のネットワーク構成の概要を示す具体例について説明する図である。
【図７】ＰＣを一例とする情報処理装置において、ＴＣＰやＩＰ等を使用して通信を行う際の処理について説明する図である。
【図８】ＤＩＸ  Ｅｔｈｅｒｎｅｔにおけるフレームフォーマットについて説明する図である。
【図９】一般的なＮＩＣがデータを受信したときにパケットがＯＳＩ参照モデルの各層をどのように流れるかを説明する図である。
【図１０】図９に、ＯＦＳ及びＯＦＣを追加したときにパケットがどのように流れるかを説明する図である。
【図１１】図１０に示す構成において、ＥＡＰｏＬパケットが仮想ＮＩＣを経由して特定のソフトウェア等へどのように流れるかを説明する図である。
【図１２】本実施形態の通信路切替装置の動作について説明するフロー図である。
【図１３】本実施形態の通信路切替装置の動作について説明するフロー図である。
【図１４】図１１に示す構成において、ＯＦＣとＯＦＳとの間に、ＮＩＣを挿入した構成を示す図である。
【発明を実施するための形態】
【００１４】
本実施形態の説明に入る前に、Ｏｐｅｎ  Ｆｌｏｗについて若干説明を行う。Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇは、通信をエンド・ツー・エンドのフローと捉え、データの解析、転送先判断、決定制御の部分であるコントロールプレーンと、パケットの物理的な伝送を担う部分であるデータプレーンとを分離する技術である。この技術では、コントロールプレーンの処理を司るＯｐｅｎ  Ｆｌｏｗ  コントローラ（ＯＦＣ）が転送先ルールを指示する。そして、データプレーンの処理を担うＯｐｅｎ  Ｆｌｏｗ  スイッチ（ＯＦＳ）が、ＯＦＣからの指示にしたがってパケットの転送を行う。詳細には、ＯＦＣが、ＯＦＳが持つフローエントリーに追加、書換を行い、ＯＦＳが、そのフローエントリーにしたがってパケットの転送を行う。
【００１５】
これらの概念やプロトコルをさらに詳細に説明するが、その前に、通信路切替装置に実装される通信機能を、階層構造に分割したモデルで例示したものについて説明する。図１は、通信路切替装置に実装される通信機能を、階層構造に分割したモデルで例示した図である。このモデルは、ＯＳＩ（Open System Interconnection）参照モデルであり、第１層の物理層から第７層のアプリケーション層の７つの階層からなるモデルである。
【００１６】
ＩＰパケットを交換する現状の通信方式の主流は、第３層のＩＰを共通資産とし、各階層で各インタフェースが定義され、個別に実装し、また、入れ替えを行うことができる水平分業モデルとなっている。ＩＰパケットベースのアプリケーションは、第４層のトランスポート層が規定するポートの概念で通信ピア同士のセッションを作り、各サービスのデータ通信を行っている。
【００１７】
サービスとしては、図１の第５層から第７層にかけて示されている、Ｗｅｂ、ＸＭＬ  Ｗｅｂサービス、メール、メッセージング、ファイル共有、ファイル転送等がある。これらのサービスを提供するアプリケーションは、第３層及び第４層に示される、ＴＣＰ／ＩＰやＵＤＰ（User Datagram Protocol）／ＩＰを使用している限り、それ以下の第１層や第２層の通信層を意識する必要はない。
【００１８】
このため、Ｗｅｂやクラウドのサービス開発は、従来の電話交換網のような垂直統合モデルに比して加速することができる。通信装置も、基本的には、図１に示したＩＰパケットベースの通信アプリケーションを開発するための一般的なハードウェア及びソフトウェア構成とすることができる。
【００１９】
ここから、通信装置に実装可能なＯｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇの概念について説明する。通信装置から送出されたＩＰパケットは、有線や無線通信における各中継装置を経由して目的の相手まで到達する。図２は、（ａ）従来の経路切替スイッチの構成、（ｂ）Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇの構成について説明する図である。従来の方式では、図２（ａ）に示すように、各中継装置が経路制御を自立分散的に行い、パケットの転送先を決定している。すなわち、中継装置としてのスイッチ２０が、経路制御とパケット転送機能との両方を備え、その両方の処理を実行している。
【００２０】
このため、経路制御に関する情報は、スイッチ２０が自己学習し、他のスイッチへ通知されないので固定的なものとなる。また、スイッチ２０の機能については、機器ベンダが開発した各種機能を利用しなければならず、カスタマイズすることはできない。
【００２１】
これに対し、Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇでは、図２（ｂ）に示すように、スイッチ２０における経路制御機能が分離され、ＯＦＣ２１にその機能が実装され、スイッチ２０としてのＯＦＳ２２には、パケットの転送機能のみが実装される。経路制御に関する情報は、ＯＦＣ２１がすべて管理し、このＯＦＣ２１が、各ＯＦＳ２２の振る舞いを中央制御するので、より柔軟な制御化が可能となる。
【００２２】
このことは、図１に示したＯＳＩ参照モデルでいうと、第４層までの各種条件で自由に制御することが可能であることを示す。したがって、ＨＴＴＰ（Hyper Text Transfer Protocol）で一般的に使用されるＴＣＰポート８０番の通信であれば、線路を変えるという制御も可能となる。
【００２３】
図３に示す概念図を参照して、Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈｉｎｇの具体的仕組みについて説明する。図３は、Ｏｐｅｎ  Ｆｌｏｗ  Ｓｗｉｔｃｈにおいて保存されるフローテーブルの構成について説明する図である。ＯＦＳ２２は、図３に示したフローテーブルの情報にしたがってフレームを転送する等の処理を行う。
【００２４】
フローテーブルは、図３に示すように、フレームの制御ルールを表すフローエントリーを含む。そのフローエントリーを識別するための構成要素と、それに対応する条件、統計情報、処理という３種類の情報とが含まれる。構成要素は、互いに識別できるように「フローエントリー１」、「フローエントリー２」等が入力されるフィールドである。条件は、ヘッダフィールドであり、通信を識別し、特定するために、後述する図８に示すような情報が入力されるフィールドである。
【００２５】
統計情報は、条件に適合した通信がどれくらい発生し、どの程度処理したかを管理するフィールドである。処理は、フレームに対する処理を定義するフィールドである。処理としては、例えば、転送する（Forward）、指定したキューに入れる（Enqueue）、廃棄する（Drop）、指定したフィールドの値を書き換える（Modify-Field）等を挙げることができる。また、特別なグループ向けに予め指定した処理を実行（Group）、タグの追加や取り外し（Push-Tag、Pop-Tag）等も挙げることができる。さらに詳細に指定することもでき、上記の「転送する」では、すべての物理ポートに転送、カプセル化してコントローラに送る、等を指定することができる。
【００２６】
次に、本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図中、同一又は相当する部分には同一の符号を付しており、その重複説明は適宜に簡略化乃至省略する。以下、本実施形態について説明するが、本実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下に説明する実施形態は、ＬＡＮに５台の情報処理装置（ＰＣ、タブレット、スマートフォン）が接続されている例について説明しているが、ＬＡＮに対して、任意の種類の任意の台数の情報処理装置が接続される構成であっても良い。
【００２７】
本発明は、ＯＦＳを装置外からデータを受信するネットワークインタフェースの一例であるＮＩＣと接続して使用する場合、ＯＦＣからのフローエントリー設定にしたがって仮想ＮＩＣにＯＦＳがパケットを転送する。そして、仮想ＮＩＣが、特定のデータを利用するサービス又はソフトウェアに対してソケット等を通じてデータの転送を行うことが特徴になっている。この本発明の特徴について、以下の図面を用いて具体的に解説する。
【００２８】
最初に、本実施形態の通信路切替装置の概略構成を示すハードウェアブロックについて説明する。図４は、本実施形態の通信路切替装置の概略構成を示すハードウェアブロックの一例を示す図である。
【００２９】
本実施形態の通信路切替装置は、ＣＰＵ（Central Processing Unit）４５１と、ＲＯＭ（Read Only Memory）４５２と、ＲＡＭ（Random Access Memory）４５３とから構成されている。また、本実施形態の通信路切替装置は、ＨＤＤ（Hard Disk Drive）４５４と、表示装置４５５と、入力装置４５６と、通信インタフェース４５８、４５９とから構成されている。
【００３０】
そして、ＣＰＵ４５１、ＲＯＭ４５２、ＲＡＭ４５３、ＨＤＤ４５４、表示装置４５５、入力装置、及び通信インタフェース４５８、４５９は、バス４６０を介して接続されている。
【００３１】
ＣＰＵ４５１は、通信路切替装置全体の動作を制御する。ＣＰＵ４５１は、通信路切替装置の動作を制御するソフトウェアプログラムをＲＯＭ４５２から読み出して、ＲＡＭ４５３を作業メモリにして実行する。ＲＯＭ４５２は不揮発性メモリであり、ブートプログラムや各種プログラム、データを格納している。ＲＡＭ４５３は、揮発性メモリであり、後述する通信インタフェースを介して入力されたデータを一時的に格納する。ＨＤＤ４５４は、大容量不揮発性記憶装置である。転送対象のデータ等を格納する。
【００３２】
入力装置４５６は、通信路切替装置の操作部であり、ユーザインターフェースとなる。ボタンやタッチパネル等の入力装置のほか、ＬＥＤ（Light Emitting Diode）やセンサ等が付いている場合もある。表示装置４５５は、ＬＣＤ（Liquid Crystal Display）ディスプレイ等から構成されており、入力装置４５６がタッチパネル構成である時は、ユーザインターフェースにもなるものである。
【００３３】
通信インタフェース４５８、４５９は、後述するように、Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ、Ｌ２や、ｎｌ８０２１１＿ｄｒｉｖｅｒ等を接続する。ここで、Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ、Ｌ２は、Ｅｔｈｅｒｎｅｔのパケットのようなものである。また、ｎｌ８０２１１＿ｄｒｉｖｅｒは、無線ＬＡＮ向けのＡＰＩ（Application Program Interface）を拡張した無線ＬＡＮのドライバである。
【００３４】
次に、本実施形態の通信路切替装置の概略構成を示す機能ブロックについて説明する。図５は、本実施形態の通信路切替装置の概略構成を示す機能ブロックの一例を示す図である。
【００３５】
本実施形態の通信路切替装置は、アプリケーション部５５１と、データ切替部５５２と、仮想デバイス部５５３と、制御部５５４と、判断部５５５と、確認部５５６とから構成されている。そして、アプリケーション部５５１、データ切替部５５２、仮想デバイス部５５３、制御部５５４、判断部５５５、及び確認部５５６は、バス５５７を介して接続されている。アプリケーション部５５１、データ切替部５５２、仮想デバイス部５５３、制御部５５４、判断部５５５は、ＲＯＭ４５２に書き込まれたプログラムをＣＰＵ４５１により実行することにより実現される。
【００３６】
アプリケーション部５５１は、所定の機能を実行するアプリケーションソフトウェアであり、一例として、Ｗｉ−Ｆｉ等の無線ＬＡＮ通信を行うために必要なドライバ（ソフトウェア）であるｎｌ８０２１１＿ｄｒｉｖｅｒが挙げられる。データ切替部５５２は、アプリケーション部５５１に所定の機能を実行させるためのデータを転送する機能を有し、一例として、パケットの転送等の命令情報であるフローエントリーが設定されたＯＦＳが挙げられる。仮想デバイス部５５３は、データ切替部５５２から転送されたデータを、アプリケーション部５５１に転送する機能を有する。一例として、ＮＩＣで受信したＥＡＰｏＬパケットを、アプリケーション部５５１へ転送する仮想ＮＩＣが挙げられる。
【００３７】
そして、ＥＡＰｏＬ（Extensible Authentication Protocol over LAN）とは、他の通信装置と無線通信を行うための認証に使用されるプロトコルである。そして、ＥＡＰｏＬパケットとは、ＥＡＰを拡張したプロトコルであり、ＥＡＰｏＬパケットもＥＡＰｏＬ（プロトコル）で使用されるパケットである。
【００３８】
制御部５５４は、アプリケーション部５５１が所定の機能を実行するデータを、データ切替部５５２に転送するよう設定する機能を有し、一例として、ＯＦＳに対してパケットの転送等の命令情報であるフローエントリーを設定するＯＦＣが挙げられる。判断部５５５は、データ切替部５５２で受信したデータが所定のデータであるか否かを判断する機能を有し、一例として、受信したデータがＥＡＰｏＬパケットであるか否かを判断する。確認部５５６は、データ切替部５５２で受信したデータが所定のデータでない場合、制御部５５４により、当該受信したデータを転送するための設定が行われているか否かを確認する機能を有する。一例として、ＯＦＳで受信したデータがＥＡＰｏＬパケットでない場合、ＯＦＳにおいて当該パケットを転送するためのフローエントリーが設定されているか否かを確認する。
【００３９】
次に、ＬＡＮ内のネットワーク構成の概要を示す具体例について説明する。図６は、ＬＡＮ内のネットワーク構成の概要を示す具体例について説明する図である。図６において、ＰＣ（Personal Computer）１  ４１とＰＣ２  ４２といったユーザ端末が、Ｌ２（Layer 2）スイッチ４６に有線で接続されている。また、タブレット型コンピュータ４４、スマートフォン４５、及びＰＣ３  ４３といったユーザ端末が、無線ＬＡＮ  ＡＰ（Access Point）４８に無線を介して接続されている。そして、Ｌ２スイッチ４６及び無線ＬＡＮ  ＡＰ４８は、Ｌ３スイッチ４７に有線で接続されている。
【００４０】
ここで、Ｌ２スイッチ４６は、上記したＯＳＩ参照モデルの第２層であるデータリンク層における有線通信の例であるＥｔｈｅｒｎｅｔを指す。また、Ｌ３スイッチ４７は、ＯＳＩ参照モデルの第３層であるネットワーク層におけるインターネットプロトコル（ＩＰ：Internet Protocol）によるパケット通信を指す。
【００４１】
次に、ＰＣを一例とする情報処理装置において、ＴＣＰやＩＰ等を使用して通信を行う際の処理について説明する。図７は、ＰＣを一例とする情報処理装置において、ＴＣＰやＩＰ等を使用して通信を行う際の処理について説明する図である。なお、図７においても、ＩＰ（Ｌ３）５０３、５０６やＥｔｈｅｒｎｅｔ（Ｌ２）５０４、５０５等の各々のブロックにおけるＬ（Layer）は、上記したＯＳＩ参照モデルを構成する各層に対応している。
【００４２】
図７において、右側のブロックがアプリケーションにおけるデータの送信処理を実行し、ケーブルや無線チャネルといったメディアを介して左側のブロックにおいてデータの受信処理が実行される。送信処理を実行するブロックにおいて、送信処理は、上位層であるアプリケーション層（Ｌ５〜）５０１から下位層であるＥｔｈｅｒｎｅｔ（Ｌ２）５０４へ向かう順番で処理が行われる。受信処理を実行するブロックにおいて、受信処理は、下位層であるＥｔｈｅｒｎｅｔ（Ｌ２）５０５から上位層であるアプリケーション層（Ｌ５〜）５０８に向かう順番で処理が行われる。
【００４３】
通常、アプリケーション（Ｌ５〜）５０１、５０８や、ＴＣＰ（Ｌ４）５０２、５０７、ＩＰ（Ｌ３）５０３、５０６といった上位層の処理は、ＣＰＵ（Central Processing Unit）やメモリ等を用いたソフトウェア処理で実行される。他方、より下位層の処理は、専用ハードウェアで実行されることが多い。しかし、ＰＣやサーバといった用途の違い等によって異なる場合もある。
【００４４】
次に、ＤＩＸ  Ｅｔｈｅｒｎｅｔにおけるフレームフォーマットについて説明する。図８は、ＤＩＸ  Ｅｔｈｅｒｎｅｔにおけるフレームフォーマットについて説明する図である。なお、Ｅｔｈｅｒｎｅｔフレームフォーマットには複数の形式が存在するが、ここでは代表的な１つのみを取り上げて説明する。
【００４５】
図８において、プリアンブル６１は、フレームフォーマットの最初に位置する。これは、ＬＡＮに接続されているインタフェースに対してフレームの開始を認識させ、同期を取るタイミングを与えるための信号である。ＤＩＸ  Ｅｔｈｅｒｎｅｔでは、サイズが８オクテット（６４ビット）のフィールドで、１と０とが交互に続き、最後のビット（６４ビット目）が１で終わる。
【００４６】
送信先アドレス６２は、サイズが６オクテット（４８ビット）のフィールドで、送信先となるステーションのインタフェースのＭＡＣ（Media Access Control）アドレスを設定する。複数のインタフェース宛のマルチキャスト・アドレスを設定することができる。送信元アドレス６３は、サイズが６オクテット（４８ビット）のフィールドで、フレームを送信したインタフェースのＭＡＣアドレスを設定することになっている。
【００４７】
タイプフィールド６４は、サイズが２オクテット（１６ビット）分のフィールドである。多重化／多重分離のために、次に続くデータフィールドに格納する上位層プロトコルを示す識別子を設定する。例えば、ＥＡＰｏＬであれば０ｘ８８８Ｅという数字が使用され、データフィールド６５には、ＥＡＰプロトコルのパケットが入る。また、ＩＰｖ（Internet Protocol version）４であれば０ｘ０８００という数字が使用され、データフィールド６５には、ＩＰｖ４プロトコルのパケットが入ることになる。
【００４８】
データフィールド６５には、最小４６オクテットから最大１５００オクテットまでといった可変長の情報を格納することができる。ＦＣＳ（Frame Check Sequence）６６は、フレームのエラーを検出するための４オクテットのフィールドである。送信先アドレス６２、送信元アドレス６３、タイプフィールド６４、データフィールド６５の各フィールドから計算したＣＲＣ（Cyclic Redundancy Check）値を設定する。受信側でも同様にＣＲＣ値を計算し、送信側のＦＣＳ６６の値と一致しない場合はエラーが発生したと判断し、そのフレームを破棄する。
【００４９】
次に、一般的なＮＩＣがデータを受信したときにパケットがＯＳＩ参照モデルの各層をどのように流れるかについて説明する。図９は、一般的なＮＩＣがデータを受信したときにパケットがＯＳＩ参照モデルの各層をどのように流れるかを説明する図である。ＮＩＣの一例である無線ＬＡＮカードがデータを受信した場合を具体例に挙げて説明する。なお、ＮＩＣとは、ネットワークインタフェースカードの略であるが、以後の説明において、ＮＩＣには、従来のハードウェアのインタフェースだけでなく、ソフトウェアのインタフェースも含まれる。
【００５０】
ＮＩＣ７０１が受信したデータは、Ｄｅｖｉｃｅ  ｄｒｉｖｅｒ（デバイスドライバ）やＬ２（ＯＳＩ参照モデルの第２層、レイヤ２）７０２においてパケットを作り出す処理が実行される。その後、Ｌ３（レイヤ３）７０３、及びＬ４（レイヤ４）７０４において処理が実行される。なお、Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ、Ｌ２  ７０２は、レイヤ２の処理を行うものであり、例えば、Ｅｔｈｅｒｎｅｔのパケットのようなものである。
【００５１】
また、例えば、ｈｏｓｔａｐｄ（Host Access Point Daemon）では、Ｌ２  ７０２におけるＥＡＰｏＬパケットを、ソケットを用いてｎｌ８０２１１＿ｄｒｉｖｅｒ７０５へ転送する。ここで、ｈｏｓｔａｐｄとは、無線ＬＡＮのアクセスポイント等のオープンソースソフトウェア実装をいう。また、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５とは、無線ＬＡＮ向けのＡＰＩを拡張した無線ＬＡＮのドライバである。
【００５２】
パケットがＬ３  ７０３及びＬ４  ７０４において処理が実行されたのと同時に、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５のように、Ｄｅｖｉｃｅ  ｄｒｉｖｅｒやＬ２  ７０２からのデータを必要とするソフトウェアがデータを受信して処理を実行する。そして、Ｄｅｖｉｃｅ  ｄｒｉｖｅｒやＬ２  ７０２から、Ｌ３  ７０３へ向かう処理と、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５へ向かう処理との振り分けは、図８に示したフレームフォーマットのタイプフィールド６４の値を使用することもある。
【００５３】
次に、図９に、ＯＦＳ及びＯＦＣを追加したときにパケットがどのように流れるかについて説明する。図１０は、図９に、ＯＦＳ及びＯＦＣを追加したときにパケットがどのように流れるかを説明する図である。すなわち、図９における構成に、ＯＦＳ８０１及びＯＦＣ８０２を追加している。
【００５４】
図１０に示すように、ＯＦＳ８０１を使用することにより、通信におけるパケットやフレーム等のデータは、点線の経路で示したＬ３  ７０３やｎｌ８０２１１＿ｄｒｉｖｅｒ７０５へは流れなくなる。そして、データは、実線の経路１で示したＯＦＳ８０１側にすべて流れてしまう。
【００５５】
例えば、Ｗｉ−Ｆｉ等の無線ＬＡＮの機能を果たすのに必要なドライバ（ソフトウェア）であるｎｌ８０２１１＿ｄｒｉｖｅｒ７０５をＯＦＳ８０１に接続する。そうすると、当該ドライバを動作させるのに必要な情報がすべてＯＦＳ８０１に流れてしまい、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５に渡らなくなってしまうのである。
【００５６】
一方、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５は、自身を動作させるのに必要な情報を何時でも受信できるよう待機状態にある。なお、上記したように、ＯＦＳ８０１は経路＠を介してＯＦＣ８０２によって制御される。
【００５７】
次に、図１０に示す構成において、ＥＡＰｏＬパケットが仮想ＮＩＣ（ｖｉｒｔｕａｌＮＩＣ）を経由して特定のソフトウェア等へどのように流れるかについて説明する。図１１は、図１０に示す構成において、ＥＡＰｏＬパケットが仮想ＮＩＣを経由して特定のソフトウェア等へどのように流れるかを説明する図である。
【００５８】
ここで、具体例として挙げるＥＡＰｏＬは、ＥＡＰを拡張したプロトコルであり、ＥＡＰｏＬパケットもＥＡＰｏＬ（プロトコル）で使用されるパケットである。以下、ＥＡＰｏＬパケットが、ＯＦＳ８０１、仮想ＮＩＣ９０１を経由してｎｌ８０２１１＿ｄｒｉｖｅｒ７０５に流れる構成について順に説明する。
【００５９】
まず、仮想ＮＩＣ９０１として、例えば、Ｌ２で動作する仮想的デバイスであるＴＡＰデバイスや、処理するパケットによっては、Ｌ３で動作する仮想的デバイスであるＴＵＮデバイスを使用する。そして、図３で説明したように、ＯＦＣ８０２は、経路＠を介して、ＯＦＳ８０１のフローテーブルに、ＯＦＳ８０１に入力されたデータをすべて仮想ＮＩＣ９０１に転送する旨のフローエントリーを設定する。さらに、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５のＥＡＰｏＬパケットを受信するインタフェース（例えば、ソケットインタフェース）に、仮想ＮＩＣ９０１から送信されるデータを受信するように設定を変更する。
【００６０】
これにより、ＥＡＰｏＬパケットは、まず、経路１によってＯＦＳ８０１にすべて流れる。そして、ＯＦＳ８０１は、入力されたＥＡＰｏＬパケットを経路２によってすべて仮想ＮＩＣ９０１に転送する。さらに、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５は、経路３によって仮想ＮＩＣ９０１から送信されるＥＡＰｏＬパケットを受信する。以上の流れによって、ＮＩＣ７０１で受信したＥＡＰｏＬパケットを、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５のように特定の機能を実行するアプリケーションソフトウェア等へ転送することができる。
【００６１】
次に、図１１のＥＡＰｏＬパケットの流れを説明する図を参照しつつ、本実施形態の通信路切替装置の動作について説明する。図１２及び図１３は、本実施形態の通信路切替装置の動作について説明するフロー図である。
【００６２】
図１２において、まず、ステップＳ１１１の処理において、通信路切替装置の初期化が行われる。そして、ステップＳ１１２の処理において、通信路切替装置を構成するすべての処理ブロックを動作可能な状態にする。さらに、ステップＳ１１３の処理において、ＯＦＣ８０２からＯＦＳ８０１に対して、必要があればフローエントリー（パケットの転送等の命令情報）を予め設定する。
【００６３】
図１３において、ステップＳ１２１の処理において通信路切替装置の初期化が行われると、ステップＳ１２２の処理において、パケットを受信したか否かが判断される。パケットを受信した（ＹＥＳ）と判断されると、ステップＳ１２３の処理へ移行し、パケットを受信していない（ＮＯ）と判断されると、パケットを受信するまで待機する。
【００６４】
パケットを受信すると、レイヤの下位層から処理されていく。ステップＳ１２３の処理では、図１１に示したＮＩＣ７０１からＬ２  ７０２の処理までを実行する。ステップＳ１２４の処理では、ＯＦＳ８０１がデータを受信する。ステップＳ１２５の処理では、受信したデータがＥＡＰｏＬパケットであるか否かが判断される。ＥＡＰｏＬパケットである（ＹＥＳ）と判断されると、ステップＳ１２６の処理へ移行し、ＥＡＰｏＬパケットでない（ＮＯ）と判断されると、ステップＳ１２９の処理へ移行する。
【００６５】
ステップＳ１２６の処理では、ＯＦＳ８０１がＥＡＰｏＬパケットを仮想ＮＩＣ９０１に転送する。ステップＳ１２７の処理では、仮想ＮＩＣ９０１がＥＡＰｏＬパケットをｎｌ８０２１１＿ｄｒｉｖｅｒ７０５に転送する。ステップＳ１２８の処理では、ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５がＥＡＰｏＬパケットを処理し、すべての処理を終了する。すなわち、ＥＡＰｏＬパケットであった場合、ＯＦＳ８０１のフローエントリーにしたがって、ＯＦＳ８０１→仮想ＮＩＣ９０１→ｎｌ８０２１１＿ｄｒｉｖｅｒ７０５の順にパケットを転送する。
【００６６】
ステップＳ１２９の処理では、ＯＦＣ８０２からＯＦＳ８０１に対してパケットを転送するためのフローエントリーが設定済であるか否かが確認される。設定済である（ＹＥＳ）と確認されると、ステップＳ１３０の処理へ移行し、設定済でない（ＮＯ）と確認されると、ステップＳ１３１の処理へ移行する。
【００６７】
ステップＳ１３０の処理では、設定されたフローエントリーにしたがってパケットを転送して処理を終了する。ステップＳ１３１の処理では、ＯＦＳ８０１がＯＦＣ８０２に対してパケットの処理方法を問い合わせて処理を終了する。ＯＦＳ８０１の実装方法によっては、ＯＦＣ８０２への問い合わせの後の処理や、フローエントリーがＯＦＳ８０１に予め設定されていない場合の処理がなされる。
【００６８】
次に、図１１に示す構成において、ＯＦＣとＯＦＳとの間に、ＮＩＣを挿入した構成について説明する。図１４は、図１１に示す構成において、ＯＦＣとＯＦＳとの間に、ＮＩＣを挿入した構成を示す図である。
【００６９】
図１４において、図１１で説明したＯＦＳ８０１とＯＦＣ８０２との間に、ＮＩＣ１０１が挿入されている。これにより、自装置である通信路切替装置１００を、自装置外に設けられたＯＦＣ８０２から制御することが可能となり、ＯＦＣ８０２をＯＦＳ８０１とは異なる装置として設けることができる。具体例として、通信路切替装置として無線ＬＡＮ  ＡＰのようなものを想定し、これを自装置外に設けられたＯＦＣ８０２によって制御することが考えられる。また、通信路切替装置１００が複数台設けられており、これら複数台の通信路切替装置１００−１、１００−２、・・・、１００−ｎを、外部に設けられた１個のＯＦＣ８０２からの命令によって制御するようにしても良い。
【００７０】
従来、ＯＦＳをＮＩＣに接続すると、Ｄｅｖｉｃｅ  ｄｒｉｖｅｒ、Ｌ２から直接、すべてのデータを奪ってしまう。これは、ＯＦＳをＬｉｎｕｘ（登録商標）のカーネルの動きの中にインストールして動作させる場合、Ｌ３、Ｌ４といったＩＰパケットの処理にデータが流れることを防止するためである。一方、無線ＬＡＮの上位レイヤの処理（ｎｌ８０２１１＿ｄｒｉｖｅｒ）を行う場合、Ｄｅｖｉｃｅ＿ｄｒｉｖｅｒ、Ｌ２からデータを受信することが多い。
【００７１】
しかしながら、上記したように、ＯＦＳがすべてのデータを奪ってしまうので、ｎｌ８０２１１＿ｄｒｉｖｅｒは、そのデータをコピーしたデータをＯＦＳから譲り受けることができない。そこで、ＯＦＳが奪ったデータを転送するためのルールをＯＦＣがＯＦＳに対して設定すると共に、仮想ＮＩＣからｎｌ８０２１１＿ｄｒｉｖｅｒにデータが渡るようｎｌ８０２１１＿ｄｒｉｖｅｒの設定を変更する。要するに、ＯＦＳにデータを通した後、仮想ＮＩＣにデータを経由させてから再びｎｌ８０２１１＿ｄｒｉｖｅｒにデータを渡すこととしている。これにより、ＯＦＳの内部の実装を変えずに、ｎｌ８０２１１＿ｄｒｉｖｅｒの設定を変えるだけで済むのである。
【００７２】
このように、本実施形態では、ＯＦＳとＮＩＣとの接続を維持した状態で、ＯＦＳに仮想ＮＩＣを接続し、ＯＦＳがＮＩＣから受信したデータのうち、特定のデータを仮想ＮＩＣへ転送するようＯＦＣがＯＦＳに対してフローエントリーを設定する。また、仮想ＮＩＣからｎｌ８０２１１＿ｄｒｉｖｅｒにデータが渡るようｎｌ８０２１１＿ｄｒｉｖｅｒの設定を変更する。そして、ＮＩＣ、ＯＦＳ、及び仮想ＮＩＣの順番でデータを転送し、仮想ＮＩＣから当該データを利用するサービス又はソフトウェアへデータの転送を行うこととしている。これにより、ＯＦＳとＮＩＣを接続した場合であっても、従来、ＮＩＣから特定のデータを取得して利用及び処理していたサービス又はソフトウェアにおいて正常な処理を実行することができる。
【００７３】
なお、図１２及び図１３に示した本実施形態に係る通信路切替装置の動作フローは、コンピュータ上のプログラムに実行させることもできる。すなわち、通信路切替装置を構成する制御部５５４に内蔵されているＣＰＵ４５１が、ＲＯＭ４５２等の記憶部に格納されたプログラムをロードする。そして、プログラムの各処理ステップが順次実行されることによって行われる。
【００７４】
本発明によれば、オープンフロースイッチ（ＯＦＳ）をネットワークインタフェースに接続しない状態で正常に実行されていたサービス又はソフトウェアを、ＯＦＳをネットワークインタフェースに接続した場合でも、正常に実行することが可能となる。これにより、従来技術では得られない有用な通信路切替装置、通信路切替装置の制御方法、及びプログラムを得ることができる。
【００７５】
以上、これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではない。すなわち、他の実施形態、追加、変更、削除等、当業者が想到することができる範囲内で変更することができ、何れの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００７６】
２０    スイッチ
２１、８０２    ＯＦＣ
２２、８０１    ＯＦＳ
４１    ＰＣ１
４２    ＰＣ２
４３    ＰＣ３
４４    タブレット型コンピュータ
４５    スマートフォン
４６    Ｌ２スイッチ
４７    Ｌ３スイッチ
４８    無線ＬＡＮ  ＡＰ
６１    プリアンブル
６２    送信先アドレス
６３    送信元アドレス
６４    タイプフィールド
６５    データフィールド
６６    ＦＣＳ
１００、１００−１，１００−２、・・・、１００−ｎ    通信路切替装置
１０１    ＮＩＣ
４５１    ＣＰＵ
４５２    ＲＯＭ
４５３    ＲＡＭ
４５４    ＨＤＤ
４５５    表示装置
４５６    入力装置
４５８、４５９    通信インタフェース
４６０、５５７    バス
５０１、５０８    アプリケーション（Ｌ５〜）
５０２、５０７    ＴＣＰ（Ｌ４）
５０３、５０６    ＩＰ（Ｌ３）
５０４、５０５    Ｅｔｈｅｒｎｅｔ（Ｌ２）
５５１    アプリケーション部
５５２    データ切替部
５５３    仮想デバイス部
５５４    制御部
５５５    判断部
５５６    確認部
７０１    ＮＩＣ
７０２    Ｄｅｖｉｃｅ  ｄｒｉｖｅｒ、Ｌ２
７０３    Ｌ３
７０４    Ｌ４
７０５    ｎｌ８０２１１＿ｄｒｉｖｅｒ
９０１    Ｖｉｒｔｕａｌ  ＮＩＣ
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】国際公開第２０１２／１２０９９０号
【図１】
0006631065.tif 000002
【図２】
0006631065.tif 000003
【図３】
0006631065.tif 000004
【図４】
0006631065.tif 000005
【図５】
0006631065.tif 000006
【図６】
0006631065.tif 000007
【図７】
0006631065.tif 000008
【図８】
0006631065.tif 000009
【図９】
0006631065.tif 000010
【図１０】
0006631065.tif 000011
【図１１】
0006631065.tif 000012
【図１２】
0006631065.tif 000013
【図１３】
0006631065.tif 000014
【図１４】
0006631065.tif 000015