(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0018】
以下の実施の形態で示される数値、構成要素、構成要素の配置位置などは、一例であり、発明の範囲内において種々の変形や変更が可能である。
【0019】
(実施の形態)
図1は本発明の実施の形態にかかるシステム全体図である。
【0020】
図1に示すとおり、本発明のデバイスサーバシステム100は、デバイスサーバ1、通信端末2、アクセスポイント3、USBデバイス4(例えばプリンタ)およびUSBデバイス5(例えば外付けハードディスク)などの装置から構成されている。
【0021】
デバイスサーバ1は、USBインタフェースを備えると共に、ネットワーク(LAN)インタフェースとしては有線通信インタフェースと無線通信インタフェースの両方を備えている。また、デバイスサーバ1は、有線ケーブル10によって通信端末2と接続され、無線LAN12によってアクセスポイント3と接続される。さらにデバイスサーバ1は、USBデバイス4やUSBデバイス5とそれぞれ有線ケーブル13や有線ケーブル14によってローカル接続されている。通信端末2のユーザは、通信端末2が備えるアプリケーション(図示しない、USB仮想接続ツールとも呼ぶ)を用いてデバイスサーバ1に指示することにより、デバイスサーバ1にローカル接続しているUSBデバイス14または15をネットワーク越しに制御できる。
【0022】
通信端末2は、有線インタフェースを備えるものであり、例えば、ノートPCやタブレットやスマートフォンなどである。通信端末2は、USB仮想接続ツールも備えている。また、通信端末2は、本発明で必須ではないがUSBコネクタ、無線通信インタフェースなど等の各種インタフェースを備えていてもよい。
【0023】
本発明における通信端末2は、有線ケーブル10を通じてデバイスサーバ1と有線通信が可能であると共に、有線LAN11を経由してアクセスポイント3とも有線通信が可能である。なお、有線ケーブル10を通じての有線通信は、RNDIS(後で詳細に述べる)などを利用する通信である。有線LAN11を通じての有線通信は、例えばIEEE802.3規格などに適合するものにより実現される。
【0024】
アクセスポイント3は、有線インタフェースと無線インタフェースとを備える。
【0025】
アクセスポイント3は、無線LAN12によりデバイスサーバ1との間で無線通信を行い、有線LAN11により通信端末2との間で有線通信を行う。なお、無線通信は、例えばIEEE802.11規格などに適合する無線LANにより実現され、有線通信は、例えばIEEE802.3規格などに適合するものにより実現される。
【0026】
USBデバイス4は、有線ケーブル13(USBケーブル)でデバイスサーバ1とローカル接続されている。例えば、プリンタやスキャナなどである。
【0027】
USBデバイス5は、有線ケーブル14(USBケーブル)でデバイスサーバ1とローカル接続されている。例えば、外付けハードディスクなどである。
【0028】
通信経路R1は、通信端末2が有線ケーブル10(USBケーブル)を通じてデバイスサーバ1と有線通信を行う経路(以後、第一経路とも呼ぶ)である。
【0029】
通信経路R2は、通信端末2から有線LAN11を通じてアクセスポイント3に達し、さらにこのアクセスポイント3を介し無線LAN12を通じてデバイスサーバ1との間で無線通信を行う経路(以後、第二経路とも呼ぶ)である。
【0030】
図2は、本発明の実施の形態に係るデバイスサーバ1のハードウェア構成図である。
【0031】
図2に示すとおり、これらの装置は、CPU(Central Processing Unit)20、ROM(Read Only Memory)21、RAM(Random Access Memory)22、記憶装置23、USB1_I/F24、USB2_I/F25、WNIC(Wireless Network Interface Card)26、NIC(Network Interface Card)27および各構成部品間を接続している内部バス28などを備えている。
【0032】
CPU20は、ROM21に格納された制御プログラムを実行するプロセッサである。
【0033】
ROM21は、制御プログラム等を保持する読み出し専用記憶領域である。
【0034】
RAM22は、CPU20が制御プログラムを実行するときに使用するワークエリアとして用いられる記憶領域である。
【0035】
記憶装置23は、制御プログラム、制御情報、装置情報、または認証情報などを記憶する記憶領域である。
【0036】
USB1_I/F24は、USBインタフェースを備えている。例えば、USB規格に準拠するコネクタを有し、そのコネクタに接続されたUSBデバイスとの通信制御を行う。
【0037】
USB2_I/F25は、USBインタフェースを備えている。例えば、USB規格に準拠するコネクタを有し、そのコネクタに接続されたUSBデバイスとの通信制御を行う。
【0038】
また、USB1_I/F24およびUSB2_I/F25は、それぞれ複数のUSBコネクタを有してもよい。
【0039】
WNIC26は、無線通信を行う無線通信インタフェースを備えている。例えば、IEEE802.11a、b、g、n、ac規格等に適合する無線LANの通信インタフェースである。
【0040】
NIC27は、有線通信を行う有線通信インタフェースを備えている。例えば、IEEE802.3規格等に適合する有線LANの通信インタフェースである。
【0041】
内部バス28は、CPU20,ROM21、RAM22、記憶装置23、USB1_I/F24、USB2_I/F25、WNIC26、NIC27を電気的に接続し、信号のやりとりを行うバスである。
【0042】
図3は、本発明の実施の形態にかかるデバイスサーバ1の機能ブロック図である。
【0043】
図3に示すデバイスサーバ1は、USB1インタフェース部30、USB2インタフェース部31、無線インタフェース部32、第一仮想接続部33、制御部34、記憶部35、判断部36、バッファ部37、第二仮想接続部38などを備えている。
【0044】
USB1インタフェース部30は、有線ケーブル10を通じて通信端末2との間で有線通信を行い、通信端末2からの所定の指示を制御部34に伝えるなどする。所定の指示とは、通信端末2からデバイスサーバ1を介して、USBデバイス4やUSBデバイス5を直接に制御しているかのような指示である(以後、直結モードと呼ぶ。)。より詳しくは、通信端末2とUSBデバイス4やUSBデバイス5との通信は、通信端末2からUSBデバイス4やUSBデバイス5に対して指示した制御内容を制御部34が受信し、制御部34が第一仮想接続部33に通知することで行われる。その指示は、例えば、RNDIS(後で詳細に述べる)を利用し、通信端末2からデバイスサーバを介してUSBデバイス4やUSBデバイス5を制御できるものである。USB1インタフェース部30は、USB1_I/F24などにより実現される。
【0045】
USB2インタフェース部31は、少なくとも1以上のUSBコネクタを有し、有線ケーブル(13、14)を通じて、USBデバイス(4、5)との間で有線通信を行う。USB2インタフェース部31は、USBハブ装置のように複数のUSBデバイスをローカル接続でき、通信端末2のユーザが使用したいUSBデバイスを選択し、そのUSBデバイスを制御部34の指示に基づいて利用できるようにする。USB2インタフェース部31は、USB2_I/F25などにより実現される。
【0046】
無線インタフェース部32は、無線LAN12を通じてアクセスポイント3と無線通信を行い、さらにアクセスポイント3から有線LAN113を介し通信端末2との間で通信を行う。無線インタフェース部32によって、通信端末2のユーザは、USB仮想接続ツール上から指示して、有線LAN11およびアクセスポイント3を介しデバイスサーバ経由で、USBデバイスに接続・利用することもできる(以後、デバイスサーバモードと呼ぶ。)。無線インタフェース部32は、WNIC26などにより実現される。
【0047】
第一仮想接続部33は、制御部34の通知を基に、通信端末2からデバイスサーバを介してUSBデバイス4やUSBデバイス5を制御できる機能を実現する。具体的には、通信端末2のオペレーティングシステムが備えるネットワークドライバである、NDIS(Network Driver Interface Specification)を拡張したRNDIS(Remote NDIS)を利用して、通信端末2からデバイスサーバ1を介してUSBデバイス4やUSBデバイス5を制御する。ここで、RNDISは、USBなどの入出力バスを介してホストコンピューターのネットワークドライバとして動作する機能を備えており、仮想的にイーサネット(登録商標)越しにUSBデバイスを制御することを可能とするものである。第一仮想接続部33は、通信端末からのRNDISを用いた通信を受け、USBデバイスへ通信を転送するためUSB2インタフェース部31に送る。第一仮想接続部33は、CPU20,ROM21、RAM22、記憶装置23などにより実現される。
【0048】
制御部34は、通信端末2からの指示を受けて、その指示を基にUSB2インタフェース部31を通じてローカル接続しているUSBデバイスを制御するため、第一仮想接続部33、または第二仮想接続部38に通信端末2からの指示を通知する。
【0049】
また、制御部34は、通信端末2が有線ケーブル10を通じて通信しているとき、通信端末2とデバイスサーバ1との間の通信経路(第一経路)で障害が発生した旨の通知を判断部36から受けると、第一仮想接続部33に第一経路での通信を切断する旨の通知を行い、第二仮想接続部38に第二経路での通信を開始する旨の通知を行う。制御部34は、CPU20,ROM21、RAM22、記憶装置23などにより実現される。
【0050】
記憶部35は、通信端末2のユーザがUSB仮想接続ツールによってデバイスサーバ1に設定した各種パラメータを格納している。各種パラメータとは、例えば、「有線通信と無線通信の初期接続の優先度」や「バッファ部37の容量設定」などである。
【0051】
その他、デバイスサーバ1が通信のために一時的に格納するメモリーも備えている。記憶部35は、記憶装置23などにより実現される。
【0052】
判断部36は、通信端末2が有線ケーブル10を通じてデバイスサーバ1と通信している場合であって、通信端末2とデバイスサーバ1との通信経路で障害が発生したときに、制御部34にその旨を通知する。
【0053】
判断部36は、バッファ部37に所定のデータ量が格納されたか否か、またはバッファ部37に格納したデータが通信端末2とデバイスサーバ1にローカル接続しているUSBデバイスとの間の通信でやりとりすべきデータの終端であるか否かを監視し判断する。所定のデータ量が格納されている場合、および格納されたデータがデータの終端である場合は、制御部34に対して、バッファ部37に格納されたデータを、USB1インタフェース部30もしくはUSB2インタフェース部31または無線インタフェース部32に送信する旨の通知を行う。所定のデータ量が格納されていない場合は、通信端末2とUSBデバイス4やUSBデバイス5との間で通信されるデータをバッファ部37に格納する旨を制御部34に通知する。
【0054】
また、判断部36は、USB1インタフェース部30を経由した通信端末2との通信(例えばRNDISを利用した通信)が開始されたか否かを判断し、制御部34にその旨を通知する。判断部36は、CPU20,ROM21、RAM22、記憶装置23などにより実現される。
【0055】
バッファ部37は、記憶部35とは別個に確保されたメモリー領域で構成されており、通信端末2とUSBデバイス4やUSBデバイス5との間で行なわれる通信において所定のデータ量を格納する。所定のデータ量は、通信端末2のユーザがUSB仮想接続ツールによって記憶部35に設定してもよいし、工場出荷時に予め設定されていてもよい。バッファ部37は、記憶装置23などにより実現される。
【0056】
第二仮想接続部38は、制御部34からの通知を基に、通信端末2からアクセスポイント3および無線LAN12を通じ、デバイスサーバ1経由でUSBデバイス4やUSBデバイス5を制御できる機能を実現する。具体的には、通信端末2が備えるUSB仮想接続ツール上でユーザが、デバイスサーバ1にローカル接続しているUSBデバイスを選択し、使用できるものである。第二仮想接続部38を用いる通信経路R2は、通信経路R1と異なり、RNDISを利用しない。
【0057】
なお、第二仮想接続部38は、通信端末2とデバイスサーバ1がUSB1インタフェース部30を通して通信可能となった旨の通知を制御部34から受けて、代替経路として、制御部34の通知があればいつでも通信可能な通信経路を予め確保する。第二仮想接続部38は、CPU20,ROM21、RAM22、記憶装置23などにより実現される。
【0058】
つぎに、
図4は、本発明の実施の形態にかかるデバイスサーバ1と通信端末2が有線ケーブル10で接続され有線通信(通信経路R1)を行っている状況から、通信経路R2に切り替わって通信端末2との通信を継続する、システムの全体図である。
【0059】
ここで、通信経路R1は、通信端末2と有線ケーブル10でデバイスサーバと有線通信を行う経路(第一経路)である。通信経路R2は、通信端末2と有線LAN11でアクセスポイント3を介してデバイスサーバ1との間で無線通信を行う経路(第二経路)である。
【0060】
図4に示す状況は、デバイスサーバ1と通信端末2との通信経路R1で障害が発生した場合を示しており、これを受けてデバイスサーバ1は、通信端末2との間で行っている通信経路を通信経路R1から通信経路R2に切り替えを行う。
【0061】
図5は、本発明の実施の形態にかかるデバイスサーバ1が、通信端末2と第二経路で通信可能状態か否かの判断から第二経路で通信端末2と接続しUSBデバイスと通信を行うまでの一連のフローを示している。ここで、初期状態として、USB2インタフェース部31と、USBデバイス4やUSBデバイス5とは、有線ケーブル13、14により、既にそれぞれ通信可能である。
【0062】
ステップS401にて、判断部36は、通信端末2と無線インタフェース部32との間で第二経路を用いた無線通信が可能な状態か否かを判断する。通信可能な場合は、ステップS402に遷移する(ステップS401のYes)。通信可能でない場合は、処理を終了する(ステップS401のNo)。具体的には、判断部36は、無線インタフェース部32を通じてアクセスポイント3と無線通信が可能であり、かつアクセスポイント3と有線LAN11を通じて通信端末2と有線通信ができるか否かを判断する。
【0063】
ステップS402にて、判断部36は、通信端末2に接続された有線ケーブル10がUSB1インタフェース部30に物理的に接続しているか否かを判断する。接続していると判断した場合は、ステップS403に遷移する(ステップS402のYes)。接続していないと判断した場合は、ステップS409に遷移する(ステップS402のYes)。
【0064】
ステップS403にて、判断部36は、第一経路を用いて通信端末2とUSB1インタフェース部30との間で有線通信が可能な状態か否かを判断する。通信可能な場合は、ステップS404に遷移する(ステップS403のYes)。通信可能でない場合は、ステップS409に遷移する(ステップS403のNo)。具体的には、判断部36は、通信端末2が、USB1インタフェース部30に接続された有線ケーブル10とRNDISとを利用して有線通信ができるか否かで判断する。
【0065】
ステップS404にて、制御部34は、判断部36の通知を受けて、通信端末2とデバイスサーバ1にローカル接続しているUSBデバイスとの間を第一経路で通信する。
【0066】
ステップS405にて、制御部34は、通信端末2とデバイスサーバ1にローカル接続しているUSBデバイスとの間の通信でやりとりするデータをバッファ部37に格納するように制御する。
【0067】
ステップS406にて、判断部36は、バッファ部37に格納したデータが通信端末2とデバイスサーバ1にローカル接続しているUSBデバイスとの間の通信でやりとりすべきデータの終端であるか否かを判断する。終端である場合は、ステップS408に遷移する(ステップS406のYes)。このようにすれば、バッファ部37のデータ量(ユーザが設定したデータ量、または予め設定されたデータ量)が所定量に達していなくても、バッファ部37に格納されたデータは宛先ノード(USBデバイス)に即時、送信される。終端でない場合は、ステップS407に遷移する(ステップS406のNo)。
【0068】
ステップS407にて、判断部36は、バッファ部37に格納したデータ量が記憶部35に設定された所定のデータ量に達しているか否かを判断する。達している場合は、ステップS408に遷移する(ステップS407のYes)。達していない場合は、ステップS405を繰り返す(ステップS407のNo)。
【0069】
ステップS408にて、判断部36は、バッファ部37に格納しているデータから通信に必要なデータ量を送信する旨の通知を制御部34に行い、第一仮想接続部33を通じて通信端末2とUSBデバイスとの間で必要なデータ量を送信する。
【0070】
ステップS409にて、判断部36は、通信端末2と有線ケーブル10を通じてデバイスサーバ1と通信しているときに、第一経路で障害が発生したか否かを判断する。ここでいう障害とは、意図せぬ障害以外に、ユーザが通信端末2からケーブルを抜き第一経路による通信を停止した場合も含む。障害が発生した場合は、ステップS410に遷移する(ステップS409のYes)。障害が発生していない場合は、ステップS405に遷移する(ステップS409のNo)。
【0071】
ステップS410にて、判断部36は、直前の通信までバッファ部37に格納しているデータから通信に必要なデータ量を送信する旨の通知を制御部34に行い、デバイスサーバ1とUSBデバイスとの間の通信を行う。このようにすることで、通信端末2は、第一経路上に障害が発生しても、デバイスサーバ1から一定時間の通信がUSBデバイスと行われることにより、第二経路に切り替えて通信を開始するまでの時間を担保できる。その結果、通信端末2とUSBデバイスの間の通信が途切れることなく、スムーズな通信経路の切り替えが可能となる。
【0072】
ステップS411にて、判断部36は、第一経路で障害が発生したと判断(ステップS409のYes)すると、制御部34にその旨を通知する。判断部36からその通知を受けた制御部34は、第一仮想接続部33に第一経路での通信を切断する旨の通知を行い、第二仮想接続部38に第二経路を用いて通信を継続する旨の通知を行う。第二仮想接続部38は、無線インタフェース部32を通じて通信端末2と無線LAN12やアクセスポイント3を介し有線LAN12を通じて、通信を継続する。ここで、第二仮想接続部38は、第二経路を用いて通信が可能な状態(ステップS401のYes)であるので、制御部34の通知に基づいて第二経路での通信を即時に開始できる。
【0073】
(その他の実施形態)
その他の実施形態においては、デバイスサーバ1の記憶部35に、自身に接続されているUSBデバイス(14、15)のドライバを格納することが可能である。上述したように、本発明のデバイスサーバシステムでは、2つのモードが切り替わる際にドライバの再インストールは不要であるが、新たな通信端末(タブレット端末またはPC)がデバイスサーバにアクセスしUSBデバイスを利用するときには、デバイスのドライバが通信端末にインストールされていることが必須である。このとき、デバイスサーバがそのドライバプログラムを格納していると、デバイスのドライバをインターネットやデバイスの付属品を探す必要がなく、効率的に利用開始できる。デバイスサーバ1の制御部34は、判断部36による第一経路での通信が可能になった旨の通知を受けて、通信端末2に向けてUSBデバイスに対応したドライバを記憶部35から送信する。
【0074】
また、
図1および
図3における第二経路R2では、通信端末2有線LAN11を経由してアクセスポイント3とやりとりしていたが、通信端末2が無線通信インタフェースを持っていれば、直接アクセスポイント3とやりとりしてもよい。例えば、通信端末2のユーザが自席でUSBケーブルを使って(通信経路1で)デバイスサーバ1を経由しUSBデバイスを使用していたとする。会議などで通信端末を持って自席を離れると経路1は切断されるが、通信端末に備えられた無線通信インタフェースにより、アクセスポイント3に直接アクセスし、そこからデバイスサーバ1と通信し(通信経路2)、USBデバイスを引き続いて利用できる。この際、本発明のデバイスサーバシステムは、デバイスのドライバの再インストールは不要であり、デバイスを連続的に利用可能である。
【0075】
(まとめ)
上述したとおり、本発明は、
図1で説明した通信端末とデバイスサーバを介してローカル接続しているUSBデバイスとの間の通信において、デバイスサーバを利用する2つのモード(直結モードとデバイスサーバモード)での通信をスムーズに切り替え、さらに通信が途切れる時間を極力、抑えることができる。
【0076】
従来では、モードの切り替えにより、直前まで通信を行っていたUSBデバイスであってもデバイスのID番号が変更されていた。このように従来では、USBデバイスは新たなデバイスとしてデバイスの認識を行うために必要な既定の処理(プラグアンドプレイなど)に時間がかかり、モード切り替え時に通信が途絶えてしまっていた。本発明では、デバイスのID番号を変更する事無く、2つのモードを切り替えることができる。
【0077】
より具体的には、RNDISを利用して通信(第一経路)することで、通信端末2がデバイスサーバを介してUSBデバイスを直接に制御することになり、USBデバイスのID番号がモード切り替え時に変更されることはない。つまり、従来では、USBハブ装置が備えるUSBハブコントローラ(ハードウェアICチップ)が、通信端末2とUSBデバイスとの間に介在し、接続しているUSBデバイスごとに割り振るため、通信端末のOSはUSBデバイスを切り替えるたびに「新しいデバイス」としてデバイスの認識を行う必要があるが、RNDISを利用すれば、通信端末2のユーザが使用したいデバイスサーバ1にローカル接続しているUSBデバイスは、通信端末2から直接にUSBデバイスを制御しているので、デバイスのID番号が変わることはないのである。
【0078】
本発明は、上記記載のようにモードの切り替え時に接続中のUSBデバイスのID番号が変更されないでは無く、バッファ部を設けることにより、USB規格の各種データ転送方式にも対応しながらもスムーズなモード切り替えによる通信を実現する。