JP6232604B2 - デバイスサーバとその制御方法 - Google Patents
デバイスサーバとその制御方法 Download PDFInfo
- Publication number
- JP6232604B2 JP6232604B2 JP2014023336A JP2014023336A JP6232604B2 JP 6232604 B2 JP6232604 B2 JP 6232604B2 JP 2014023336 A JP2014023336 A JP 2014023336A JP 2014023336 A JP2014023336 A JP 2014023336A JP 6232604 B2 JP6232604 B2 JP 6232604B2
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- data
- client
- isochronous
- buffer unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
- H04L47/225—Determination of shaping rate, e.g. using a moving window
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4045—Coupling between buses using bus bridges where the bus bridge performs an extender function
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Description
また、コンピュータにローカル接続されていた周辺機器は、IPネットワークが周辺機器の制御データの送受信に十分耐えるほど高速化した現在において、コンピュータとIPネットワークを介して周辺機器の制御が可能になっている。
このような状況下、IPネットワークを通じて、コンピュータの周辺機器であるUSB(Universal Serial Bus)デバイスを当該ネットワークに接続しているコンピュータから利用することのできるデバイスサーバシステムが知られている(特許文献1、非特許文献1を参照)。
特許文献2に開示された制御方法によれば、クライアントは、USBデバイスからの応答情報の遅延(受信待ち)によって、次のアイソクロナス転送要求の処理が停滞することがなくなるため、アイソクロナス出力転送で保証する最低限のデータ転送量を維持することができる。
しかし、特に無線LANの場合は電波状況によりネットワークのリンク切れやアグリゲーションの弊害によってネットワーク転送が滞り、クライアントによる数百ミリ秒の先読みだけでは担保できないことがある。
クライアントは、USBデバイスのステータスに関する応答をデバイスサーバ経由で受信するため、こうした回復不能でないエラーにも関わらず、クライアントはデバイスサーバとのセッションを切断してしまい、アイソクロナス転送は終了してしまう。
クライアントからアイソクロナス出力転送要求を受信すると、即座に無条件でクライアントに対して、デバイスに対するアイソクロナス出力転送の転送完了応答を返して、アイソクロナス出力転送データの先読みを行う。そして、受信した転送データをデータバッファ部に蓄積して、デバイスに対してアイソクロナス出力転送を行うことを保留する。データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部にバッファリングされた転送データを、予め決定された転送レートでデバイスに対してアイソクロナス出力転送を開始し、データバッファ部の保持データ量が下限閾値に到達した場合に、デバイスに対してアイソクロナス出力転送を行わない。
また、クライアントからアイソクロナス出力転送要求を受信するとは、クライアントから送信されたアイソクロナス出力転送データを含む出力転送要求をデバイスサーバが受信することを言い、無条件でクライアントに対して、デバイスに対するアイソクロナス出力転送の転送完了応答を返すとは、本来ならばUSBデバイスへアイソクロナス出力転送を行い、その転送成功応答(OK)を受け取ってから、クライアントに対して転送完了応答を返すところを、応答を待たずに即座にクライアントに対して転送完了応答を返すことを意味する。
以下の記述において、“転送完了応答”は、“デバイスに対するアイソクロナス出力転送の転送完了応答”のことを指す。
例えば、デバイスがUSBスピーカである場合、デバイスサーバにデータバッファ部を設けることにより、無線LAN使用時などでネットワーク環境が不安定になっても、ネットワーク環境が回復するまで、データバッファ部にバッファリングされた音声転送データをUSBスピーカに出力することにより、安定した音声出力を行うことができる。
(1)データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄
予め決定された転送レートでデバイスに対してアイソクロナス出力転送を行い、クライアントからアイソクロナス出力転送要求を受信すると、デバイスに対してアイソクロナス出力転送が完了した場合に、前記クライアントに応答が返せていない要求があれば、クライアントに対して転送完了応答を返し、受信した転送データをデータバッファ部に蓄積する。
(2)データバッファ部の保持データ量が中間閾値を下回った状態から始まり、上限閾値に到達する状態迄、或は、下限閾値に到達する状態迄
予め決定された転送レートでデバイスに対してアイソクロナス出力転送を行い、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して転送完了応答を返し、受信した転送データをデータバッファ部に蓄積する。
(3)データバッファ部の保持データ量が下限閾値に到達した状態から始まり、上限閾値に到達する状態迄
デバイスに対してアイソクロナス出力転送を行わず、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して転送完了応答を返し、受信した転送データをデータバッファ部に蓄積する。
ここで、上限閾値に到達するとは、保持データ量が上限閾値と一致するか、上限閾値を超えることを意味する。また、中間閾値を下回るとは、保持データ量が中間閾値と一致するか、中間閾値より少ない場合を意味する。
データバッファ部のバッファサイズは、バッファオーバフローを回避するために、上限閾値よりも大きく確保するべきである。そのため、上限閾値は、データバッファ部のバッファサイズに1未満の係数を乗じた値とするのが好ましい。
また、中間閾値は、上限閾値の10〜90%の値で、ネットワーク環境やデバイスの使用環境によって、ユーザが自由に設定可能な値である。通常、中間閾値は、上限閾値の60〜80%の値に設定される。中間閾値は、多段階に設けてもかまわない。多段階に設けることにより、きめ細かい動作の変更が可能になる。
また、下限閾値は、0(ゼロ)、或は、中間閾値より小さい値である。下限閾値は、データバッファ部が空の状態の値であり、0(ゼロ)とするのが好ましい。
デバイスサーバ側のデータバッファ部が溢れることを防ぐため、クライアント側にアイソクロナス出力転送の送信タイミングを調整させる。
これにより、オーディオデバイスからの出力音をフェードアウトさせることができる。
デバイスサーバのデータバッファ部が枯渇した場合、音飛び(大きなノイズ)が発生する事象が生じる。これは、音を再生中に急に無音状態になると、音の変化量が大きくなるためである。したがって、データバッファ部の保持データ量が所定の閾値を下回った時に、音飛びを回避するためのデータ加工を行う。
オーディオデバイスとのデータインタフェース仕様によるが、例えば、オーディオデータ列に1未満の係数である0.9,0.8,0.7を乗算することにより、オーディオデバイスからの出力音を小さくすることができる。
本発明のデバイスサーバの制御方法は、クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、クライアントからアイソクロナス出力転送要求を受信する転送要求受信ステップと、要求された転送データをデータバッファ部にバッファリングする転送データ保存ステップと、ローカル接続されたデバイスに対して予め決定された転送レートでアイソクロナス出力転送を行う出力転送ステップを備える。
転送データ保存ステップは、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して、転送完了応答を返し、受信した転送データをデータバッファ部に蓄積する。
また、出力転送ステップは、データバッファ部の保持データ量が上限閾値に到達した場合に、データバッファ部にバッファリングされた転送データを、デバイスに対してアイソクロナス出力転送を開始し、データバッファ部の保持データ量が下限閾値に到達した場合に、デバイスに対してアイソクロナス出力転送を行わない。
(1)データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄
転送要求受信ステップは、クライアントからアイソクロナス出力転送要求を受信すると、デバイスに対してアイソクロナス出力転送が完了した場合に、クライアントに応答が返せていない要求があれば、クライアントに対して転送完了応答を返す。
転送データ保存ステップは、受信した転送データをデータバッファ部に蓄積する。
出力転送ステップは、予め決定された転送レートでデバイスに対してアイソクロナス出力転送を行う。
(2)データバッファ部の保持データ量が中間閾値を下回った状態から始まり、上限閾値に到達する状態迄、或は、下限閾値に到達する状態迄
転送要求受信ステップは、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して転送完了応答を返す。
転送データ保存ステップは、受信した転送データをデータバッファ部に蓄積する。
出力転送ステップは、予め決定された転送レートでデバイスに対してアイソクロナス出力転送を行う。
(3)データバッファ部の保持データ量が下限閾値に到達した状態から始まり、上限閾値に到達する状態迄
転送要求受信ステップは、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して転送完了応答を返す。
転送データ保存ステップは、受信した転送データを前記データバッファ部に蓄積する。
出力転送ステップは、デバイスに対してアイソクロナス出力転送を行わない。
上記のステップを備えることにより、クライアント側にアイソクロナス出力転送の送信タイミングを調整させ、デバイスサーバ側のデータバッファ部が溢れるのを抑止する。
(A)USBデバイスドライバが発行したアイソクロナス出力転送データを受け取り、該アイソクロナス出力転送データをIPパケットに変換してネットワーク通信制御ドライバに引き渡す手段
(B)転送データ蓄積用バッファを生成する手段
(C)ネットワーク通信制御ドライバに対して、予め設定された転送レートでアイソクロナス出力転送データを引き渡せない場合、転送データ蓄積用バッファにアイソクロナス出力転送データを蓄積する手段
(D)ネットワーク通信制御ドライバに対して、アイソクロナス出力転送データを引き渡せる状態になった場合に、転送データ蓄積用バッファに蓄積された転送データを引き渡す手段
(a)USBデバイスドライバが発行したアイソクロナス出力転送データを受け取り、該アイソクロナス出力転送データをIPパケットに変換してネットワーク通信制御ドライバに引き渡す手段
(b)転送データ蓄積用バッファを生成する手段
(c)ネットワーク通信制御ドライバに対して、予め設定された転送レートでアイソクロナス出力転送データを引き渡せない場合、転送データ蓄積用バッファにアイソクロナス出力転送データを蓄積する手段
(d)ネットワーク通信制御ドライバに対して、アイソクロナス出力転送データを引き渡せる状態になった場合に、転送データ蓄積用バッファに蓄積された転送データを引き渡す手段
クライアント1は音楽データファイルを再生すると、無線ネットワーク4を介してデバイスサーバ2に音楽データがアイソクロナス出力転送される。デバイスサーバ2は内蔵されたデータバッファ部(図示せず)に転送データ(音楽データ)を保持し、バッファの保持データ量を判断して、スピーカ3に対して、転送データ(音楽データ)をアイソクロナス出力する。システムでは、クライアント1に搭載されているオーディオプレイヤーからネットワークを介してスピーカ3に対してオーディオデータ(音楽データ、音声データなど)をストリーミングデータとして転送する。この場合、一定時間あたりの最低限のデータ転送量を保証するアイソクロナス出力転送によって、オーディオデータが途切れることなくスピーカ3に転送される。
図2に示すデバイスサーバシステムでは、クライアント1からネットワーク4経由でデバイスサーバ2にローカル接続されているUSBデバイスのスピーカ3に対して転送データ(音楽データ)をアイソクロナス出力する。
ここで、ネットワーク4は、有線もしくは無線のネットワークである。図2では、クライアント1とデバイスサーバ2は1:1で接続されているが、それぞれ複数存在し、N:1、1:N、N:M(N,Mは2以上の自然数)で接続されるものでもよい。クライアント1とデバイスサーバ2との間の無線ネットワークは、アドホック接続でも無線アクセスポイントを介したインフラストラクチャー接続でも構わない。また、デバイスサーバ2にローカル接続されるUSBデバイスは2台以上でもよいが、USB規格に従って一度に1台のデバイスと通信できるのは1台のクライアントのみである。
クライアント1には、記憶部(図示せず)に格納され、実行時にメモリに搭載されるアプリケーションの一つであるオーディオプレイヤー11とUSB DACドライバ12とトンネリングドライバ13がソフトウェア部品として存在している。この他、ソフトウェア部品としては、図示しないOS(Operating System)、OSと同時に起動しそのまま常に起動している図示しない常駐モジュール、通信制御ドライバ(TCP/IP)14があり、制御に必要な各種データと共に記憶部に格納されている。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
デバイスサーバ2は、USBデバイスであるスピーカ3が接続されると、スピーカ3を認識して識別するためのUSBデバイス情報を受信する。受信したUSBデバイス情報に基づいて、スピーカ3とのデータ送受信に必要となるUSBコアドライバ22を生成し、スピーカ3を制御できる状態にする。
また、デバイスサーバ2は、受信したUSBデバイス情報をクライアント1に送信する。
また、トンネリングドライバ13は、クライアント1のメモリ上にバッファ領域を確保する(クライアントバッファ18)。無線LANのようにネットワークのリンク切れやアグリゲーションの弊害でネットワーク環境が不安定になり、クライアントからアイソクロナス出力転送要求が滞る状況になった場合でも、バッファ領域を転送データ蓄積用バッファとして利用し、USB DACドライバ12から渡されたパケットデータをバッファリングできる。これにより、アイソクロナス出力転送要求が滞る状況になった場合でも、データの欠損を防いで、アイソクロナス出力転送のネットワーク耐性を向上できる。
トンネリングドライバ23は、クライアント1からネットワーク4を介してIPパケットを受信すると、このIPパケットからUSBのデータ形式に準拠したパケットデータを取り出し(デカプセル化して)、USBコアドライバ22に送る。また、USBコアドライバ22からUSBのデータ形式に準拠したパケットデータを受け取って、IPパケットにカプセル化する。
また、トンネリングドライバ23は、デバイスサーバ2のメモリ上にバッファ領域を確保する(サーババッファ28)。データバッファ部に相当するサーババッファ28を確保することにより、アイソクロナス出力転送データの先読みが行え、受信した転送データをデータバッファ部に蓄積できる。データバッファ部の保持データ量を判断して、十分に保持データ量が蓄積された後に、USBデバイスに対してアイソクロナス出力転送を開始することにより、ネットワーク環境が不安定になりクライアントからアイソクロナス出力転送要求が滞る状況になった場合にも、USBデバイスに対してアイソクロナス転送で保証すべきデータ転送量を維持できる。
このような構成によって、クライアント1のUSB DACドライバ12と、スピーカ3のUSB DAC32との間でオーディオデータの安定した受け渡しが可能になり、オーディオデータがスピーカ3から再生できる。
状態B(BUFMID)とは、デバイスサーバ2のサーババッファ28が中間閾値にある状態である。
状態C(BUFHIG)とは、デバイスサーバ2のサーババッファ28が上限閾値に達した状態である。
クライアント1からアイソクロナス出力転送が開始された際の初期状態は、状態A(BUFLOW)である。その後アイソクロナス出力転送要求を受信することによりサーババッファ28の保持データ量が増加し、上限閾値に到達した場合に、状態A(BUFLOW)から状態C(BUFHIG)に遷移する。例えば、サーババッファ28のサイズが100とすると、上限閾値は90である。(以下、この状態Aから状態Cに遷移するまでを場合(3)と呼ぶ)
状態B(BUFMID)に遷移した後、クライアント1からのアイソクロナス出力転送要求量がバッファからデバイス側に出力される量より多く、再びサーババッファ28の保持データ量が増加し上限閾値に到達した場合に、状態B(BUFMID)から状態C(BUFHIG)に遷移する。また一方、状態B(BUFMID)に遷移した後、クライアント1からのアイソクロナス出力転送要求量よりバッファからデバイス側に出力される量より多い結果、サーババッファ28の保持データ量が空になる、すなわち0(ゼロ)になると(この場合、下限閾値を0に設定している)、状態B(BUFMID)から状態A(BUFLOW)に遷移する。(以下、状態Bから状態Cに遷移するまでと状態Bから状態Aに遷移するまでを場合(2)と呼ぶ)
バッファリングの動作は、上述の場合(1)から(3)によって切り替わる。
(1):サーババッファ28の保持データ量が上限閾値に到達した状態(状態C)から始まり、中間閾値(上限閾値の80%)以下になる状態(状態B)迄
予め決定された転送レートでスピーカ3に対してアイソクロナス出力転送を行い、クライアント1からアイソクロナス出力転送要求を受信すると、スピーカ3に対してアイソクロナス出力転送が完了した場合に、クライアント1に応答が返せていない要求があれば、クライアント1に対して転送完了応答を返し、受信した転送データをサーババッファ28に蓄積する。
(2):サーババッファ28の保持データ量が中間閾値(上限閾値の80%)以下になった状態(状態B)から始まり、上限閾値に到達する状態(状態C)迄、或は、保持データ量が下限閾値0(ゼロ)になる状態(状態A)迄
予め決定された転送レートでスピーカ3に対してアイソクロナス出力転送を行い、クライアント1からアイソクロナス出力転送要求を受信すると、即時にクライアント1に対して転送完了応答を返し、受信した転送データをサーババッファ28に蓄積する。
(3):サーババッファ28の保持データ量が下限閾値0(ゼロ)になった状態(状態A)から始まり、上限閾値に到達する状態(状態C)迄
スピーカ3に対してアイソクロナス出力転送を行わず、クライアント1からアイソクロナス出力転送要求を受信すると、即時にクライアント1に対して転送完了応答を返し、受信した転送データをサーババッファ28に蓄積する。
以降の説明において、データバッファはサーババッファ28に相当する。
受信処理は、クライアント1からアイソクロナス出力転送要求を受信した後、クライアント1に対して転送完了応答を返すために、転送成功応答パケットを作成し(S105)、転送成功応答パケットをキューに格納する(S106)。ここでいうキューとは、転送成功応答パケットの待ち行列のことであり、格納された転送成功応答パケットは後述するフローに従って順次クライアントへ返していくことになる。
データバッファの保持データ量がフル(上限閾値に到達)であれば、モードを状態A(BUFLOW)から状態C(BUFHIG)に変更して(S111)、USBデバイスのスピーカ3にデータバッファに蓄積されたデータをアイソクロナス出力転送する(S112)。
割り込み処理は、転送方式を判定し(S202)、転送方式がアイソクロナス出力転送要求以外であれば転送要求に応じた通常の処理を行う(S203)。
その後、データバッファの状態を判別する(S208)。判別の結果、データバッファの保持データ量(バッファリング量)が上限閾値の80%(中間閾値)以下であれば、モードを状態C(BUFHIG)から状態B(BUFMID)に変更する(S209)。
まず、図9は、従来のデバイスサーバのアイソクロナス出力転送データシーケンスを示している。図9のデータシーケンスでは、クライアント1がデバイスサーバ2とネットワーク4で接続され、デバイスサーバ2とUSBデバイスのスピーカ3がUSB接続されている状況下で、クライアント1からアイソクロナス出力転送要求が出された場合のデータシーケンスを示している。先ず、クライアント1からアイソクロナス出力転送要求(Isoc−out転送要求C1)があり、デバイスサーバ2のトンネリングドライバ23がそれを受けてUSBコアドライバ22にアイソクロナス出力転送要求(Isoc−out転送要求C2)を行う。USBコアドライバ22はスピーカ3に対してURB単位でアイソクロナス出力転送要求(Isoc−out転送要求C3)を行う。アイソクロナス出力転送が無事完了すると(C8)、転送応答(OK)C9がUSBコアドライバ22から出され、トンネリングドライバ23によってクライアント1に転送完了応答C10が送られる。
クライアントから送信されるアイソクロナス出力転送要求(Isoc−out転送要求)のオーディオデータがUSBコアドライバのキュー(Queue)に積みきれない場合(C13)、USBコアドライバは、エラーコード(EFBIG)をデバイスサーバに返す(C14)。
すなわち、従来のデバイスサーバでは、USBコアドライバ22のスケジューラがスケジューリングできないほどのアイソクロナス出力転送要求が出されると、USBコアドライバ22はエラー応答を返し、クライアント1はエラーを受けて、デバイスサーバ2との間の通信セッションを切断する。
しかし、ネットワークが不安定になった時間帯(40〜60ms)では、ネットワークデータ量が減少ないし0(ゼロ)になり、その代り、クライアント側バッファに転送データが蓄積され、クライアント側バッファ量は増加している。ネットワークデータ量が減少ないし0(ゼロ)になったことから、USBデバイス側への出力量も、ネットワークに流れるデータ量がそのまま出力量になり、減少ないし0(ゼロ)になっている。ネットワークが回復すると(70ms)、クライアント側バッファに蓄積されたデータがネットワークを流れる。
表2から、ネットワークが不安定になった時間帯(50〜60ms)には、USBデバイス側への出力量は0(ゼロ)となり、データの欠落が生じていることがわかる。
図6は、実施例1のデバイスサーバ2のアイソクロナス出力転送データシーケンスを示している。実施例1のデバイスサーバ2のアイソクロナス出力転送データシーケンスでは、上述した従来のデバイスサーバのアイソクロナス出力転送データシーケンス(図9)と異なり、デバイスサーバ2は、デバイスサーバ2のバッファに空きがある場合、クライアント1から送信されるアイソクロナス出力転送要求(Isoc−out転送要求)を受信すれば、すぐに転送完了応答(成功応答)をクライアント1に返信する(C1〜C8)。
クライアント1のOS(Operating System)によって異なるが、OSによってはアイソクロナス出力転送プロトコルで、応答が返ってきたタイミングに応じて次の要求を送り出す。すなわち、デバイスサーバ2側では、アイソクロナス出力転送データの先読みができることになる。なお、アイソクロナス出力転送プロトコルで応答が返ってきたとしても、応答は無視され、常に規定の時間で次の要求を送り出すOSもある。
デバイスサーバ2は、デバイスサーバ2のサーババッファ28が上限閾値に到達すると、場合(1)に遷移し、USBデバイスにデータ出力転送を始めるが、それとともにクライアント1に応答を返すタイミングを遅延させてもよい。上述したように、OSによってはアイソクロナス出力転送プロトコルで、応答が返ってきたタイミングに応じて次の要求を送り出すため、応答を返すタイミングを遅らせることで、デバイスサーバ2のサーババッファ28が溢れないように制御することができるからである。
表3に示すように、40msの時間経過から所定の転送レート(この場合は10)でUSBデバイス側へのデータ出力量を一定量に継続できていることがわかる。
このように、実施例1のデバイスサーバシステムの場合、ネットワークの混雑などでアイソクロナス転送のスケジューリングができない現象が発生した場合でも、アイソクロナス転送で保証すべきデータ転送量を維持できることがわかる。
図7では、クライアント1上のUSB DACドライバ12の出力データ量(クライアント上のトンネリングドライバ13の入力データ量)、ネットワークに流れるデータ量、USBデバイスに出力されるデータ量が、遅延によりどのように遷移するか示している。図7において、横軸単位は10msであり、縦軸はデータ量を示している。図7に示す例では、40msから60msにかけてネットワークに流れるデータの遅延、停滞が発生している。USBデバイスへは、ある程度データが溜まった後(40ms分の転送データが溜まった後)に送信を開始している。つまり、80msにおいて、40ms分の転送データ量が、一気にネットワークへ流れることになる。しかしデバイスサーバのバッファの存在によりUSBデバイスへの出力データ量は一定に保たれている。
2 デバイスサーバ
3 スピーカ
4 無線ネットワーク
5 USB接続ケーブル
Claims (12)
- クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、
クライアントからアイソクロナス出力転送要求を受信すると要求された転送データをバッファリングするデータバッファ部を備え、
クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、受信した転送データを前記データバッファ部に蓄積し、
前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部にバッファリングされた転送データを、予め決定された転送レートで前記デバイスに対してアイソクロナス出力転送を開始し、
前記データバッファ部の保持データ量が下限閾値に到達した場合に、前記デバイスに対してアイソクロナス出力転送を行わないことを特徴とするデバイスサーバ。 - クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバにおいて、
前記クライアントからアイソクロナス出力転送要求を受信すると要求された転送データをバッファリングするデータバッファ部を備え、下記(1)〜(3)の場合に応じて動作を切り替えることを特徴とするデバイスサーバ。
(1)前記データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄
予め決定された転送レートで前記デバイスに対してアイソクロナス出力転送を行うとともに、前記クライアントからアイソクロナス出力転送要求を受信すると、前記デバイスに対してアイソクロナス出力転送が完了した場合に、前記クライアントに応答が返せていない要求があれば、前記クライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、受信した転送データを前記データバッファ部に蓄積する。
(2)前記データバッファ部の保持データ量が中間閾値を下回った状態から始まり、上限閾値に到達する状態迄、或は、下限閾値に到達する状態迄
予め決定された転送レートで前記デバイスに対してアイソクロナス出力転送を行うとともに、前記クライアントからアイソクロナス出力転送要求を受信すると、無条件で前記クライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、受信した転送データを前記データバッファ部に蓄積する。
(3)前記データバッファ部の保持データ量が下限閾値に到達した状態から始まり、上限閾値に到達する状態迄
前記デバイスに対してアイソクロナス出力転送を行わず、前記クライアントからアイソクロナス出力転送要求を受信すると、無条件で前記クライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、受信した転送データを前記データバッファ部に蓄積する。 - 前記上限閾値は、前記データバッファ部のバッファサイズに1未満の係数を乗じた値であり、
前記中間閾値は、前記上限閾値の10〜90%の値であり、
前記下限閾値は、0(ゼロ)、或は、前記中間閾値より小さい値である、
ことを特徴とする請求項2に記載のデバイスサーバ。 - 前記データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄のとき、
前記クライアントに対して前記転送完了応答を送信するタイミングを遅延させ前記データバッファ部が溢れるのを抑止することを特徴とする請求項2又は3に記載のデバイスサーバ。 - 前記デバイスがオーディオデバイスであり、
前記データバッファ部の保持データ量が中間閾値を下回った状態から始まり、下限閾値に到達する状態迄で、かつ、前記データバッファ部の保持データ量がミュート設定閾値を下回った場合に、前記データバッファ部に残存している保持データであるオーディオデータ列に演算を行って、前記デバイスに対してアイソクロナス出力転送を行うことにより、オーディオデバイスからの出力音をフェードアウトさせることを特徴とする請求項2〜4の何れかに記載のデバイスサーバ。 - クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続されたデバイスサーバの制御方法であって、
クライアントからアイソクロナス出力転送要求を受信する転送要求受信ステップと、
要求された転送データをデータバッファ部にバッファリングする転送データ保存ステップと、
ローカル接続されたデバイスに対して予め決定された転送レートでアイソクロナス出力転送を行う出力転送ステップと、
前記転送データ保存ステップは、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、受信した転送データを前記データバッファ部に蓄積し、
前記出力転送ステップは、前記データバッファ部の保持データ量が上限閾値に到達した場合に、前記データバッファ部にバッファリングされた転送データを、前記デバイスに対してアイソクロナス出力転送を開始し、
前記データバッファ部の保持データ量が下限閾値に到達した場合に、前記デバイスに対してアイソクロナス出力転送を行わないことを特徴とするデバイスサーバ制御方法。 - クライアントとネットワークを介して接続され、アイソクロナス転送を行うデバイスがローカル接続され、かつクライアントからアイソクロナス出力転送要求を受信すると要求された転送データをバッファリングするデータバッファ部を備えるデバイスサーバの制御方法であって、下記(1)〜(3)の場合に応じて、転送要求受信ステップ、転送データ保存ステップ及び出力転送ステップの各ステップの処理を切り替えることを特徴とするデバイスサーバ制御方法。
(1)データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄
前記転送要求受信ステップは、前記クライアントからアイソクロナス出力転送要求を受信すると、前記デバイスに対してアイソクロナス出力転送が完了した場合に、前記クライアントに応答が返せていない要求があれば、前記クライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、
前記転送データ保存ステップは、受信した転送データを前記データバッファ部に蓄積し、
前記出力転送ステップは、予め決定された転送レートで前記デバイスに対してアイソクロナス出力転送を行う。
(2)データバッファ部の保持データ量が中間閾値を下回った状態から始まり、上限閾値に到達する状態迄、或は、下限閾値に到達する状態迄
前記転送要求受信ステップは、前記クライアントからアイソクロナス出力転送要求を受信すると、無条件で前記クライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、
前記転送データ保存ステップは、受信した転送データを前記データバッファ部に蓄積し、
前記出力転送ステップは、予め決定された転送レートで前記デバイスに対してアイソクロナス出力転送を行う。
(3)データバッファ部の保持データ量が下限閾値に到達した状態から始まり、上限閾値に到達する状態迄
前記転送要求受信ステップは、クライアントからアイソクロナス出力転送要求を受信すると、無条件でクライアントに対して、前記デバイスに対するアイソクロナス出力転送の転送完了応答を返し、
前記転送データ保存ステップは、受信した転送データを前記データバッファ部に蓄積し、
前記出力転送ステップは、前記デバイスに対してアイソクロナス出力転送を行わない。 - 前記上限閾値は、前記データバッファ部のバッファサイズに1未満の係数を乗じた値であり、
前記中間閾値は、前記上限閾値の10〜90%の値であり、
前記下限閾値は、0(ゼロ)、或は、前記中間閾値より小さい値である、
ことを特徴とする請求項7に記載のデバイスサーバ制御方法。 - 前記データバッファ部の保持データ量が上限閾値に到達した状態から始まり、中間閾値を下回る状態迄のとき、
前記クライアントに対して前記転送完了応答を送信するタイミングを遅延させるステップを更に備え、前記データバッファ部が溢れるのを抑止することを特徴とする請求項7又は8に記載のデバイスサーバ制御方法。 - 前記デバイスがオーディオデバイスであり、
前記データバッファ部の保持データ量が中間閾値を下回った状態から始まり、下限閾値に到達する状態迄で、かつ、前記データバッファ部の保持データ量がミュート設定閾値を下回った場合に、
前記出力転送ステップは、
前記データバッファ部に残存している保持データであるオーディオデータ列に演算を行って、前記デバイスに対してアイソクロナス出力転送を行い、オーディオデバイスからの出力音をフェードアウトさせることを特徴とする請求項7〜9の何れかに記載のデバイスサーバ制御方法。 - 請求項1〜5の何れかに記載のデバイスサーバと、ネットワークを介して接続され、デバイスサーバにローカル接続された前記デバイスに前記アイソクロナス転送を行うクライアントであって、
USBデバイスドライバが発行したアイソクロナス出力転送データを受け取り、該アイソクロナス出力転送データをIPパケットに変換してネットワーク通信制御ドライバに引き渡す手段と、
転送データ蓄積用バッファを生成する手段と、
ネットワーク通信制御ドライバに対して、予め設定された転送レートで前記アイソクロナス出力転送データを引き渡せない場合、前記転送データ蓄積用バッファに前記アイソクロナス出力転送データを蓄積する手段と、
ネットワーク通信制御ドライバに対して、前記アイソクロナス出力転送データを引き渡せる状態になった場合に、前記転送データ蓄積用バッファに蓄積された転送データを引き渡す手段と、
を備えることを特徴とするクライアント。 - 請求項1〜5の何れかに記載のデバイスサーバと、ネットワークを介して接続され、デバイスサーバにローカル接続された前記デバイスに前記アイソクロナス転送を行う前記クライアントに搭載されるデバイスサーバ制御プログラムであって、
コンピュータを、
USBデバイスドライバが発行したアイソクロナス出力転送データを受け取り、該アイソクロナス出力転送データをIPパケットに変換してネットワーク通信制御ドライバに引き渡す手段、
転送データ蓄積用バッファを生成する手段、
ネットワーク通信制御ドライバに対して、予め設定された転送レートで前記アイソクロナス出力転送データを引き渡せない場合、前記転送データ蓄積用バッファに前記アイソクロナス出力転送データを蓄積する手段、
ネットワーク通信制御ドライバに対して、前記アイソクロナス出力転送データを引き渡せる状態になった場合に、前記転送データ蓄積用バッファに蓄積された転送データを引き渡す手段、
として機能させるためのデバイスサーバ制御プログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014023336A JP6232604B2 (ja) | 2014-02-10 | 2014-02-10 | デバイスサーバとその制御方法 |
| US14/611,403 US9736076B2 (en) | 2014-02-10 | 2015-02-02 | Device server and control method thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014023336A JP6232604B2 (ja) | 2014-02-10 | 2014-02-10 | デバイスサーバとその制御方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2015152945A JP2015152945A (ja) | 2015-08-24 |
| JP6232604B2 true JP6232604B2 (ja) | 2017-11-22 |
Family
ID=53775964
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014023336A Active JP6232604B2 (ja) | 2014-02-10 | 2014-02-10 | デバイスサーバとその制御方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9736076B2 (ja) |
| JP (1) | JP6232604B2 (ja) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP6539874B2 (ja) * | 2016-03-29 | 2019-07-10 | サイレックス・テクノロジー株式会社 | デバイスサーバシステム |
| CN109558342A (zh) * | 2017-09-25 | 2019-04-02 | 精工爱普生株式会社 | 电子设备以及电子设备的控制方法 |
| CN112770356B (zh) * | 2021-01-06 | 2023-07-07 | 维沃移动通信有限公司 | 数据传输方法和电子设备 |
| US11722558B2 (en) * | 2021-02-23 | 2023-08-08 | Seagate Technology Llc | Server-side resource monitoring in a distributed data storage environment |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5687316A (en) * | 1994-07-29 | 1997-11-11 | International Business Machines Corporation | Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data |
| JPH11275445A (ja) * | 1998-03-20 | 1999-10-08 | Nec Corp | 画像入力装置 |
| JP4281144B2 (ja) | 1999-03-09 | 2009-06-17 | ソニー株式会社 | 伝送方法および伝送装置 |
| US7505455B1 (en) * | 1999-03-19 | 2009-03-17 | F5 Networks, Inc. | Optimizations for tunneling between a bus and a network |
| US20020183873A1 (en) | 2000-07-21 | 2002-12-05 | Haruyuki Miura | Recording device, reproducing device and recording/reproducing system |
| DE10291762B4 (de) * | 2001-04-25 | 2014-07-10 | Sony Corporation | Datenübertragungsverfahren und Datenübertragungsgerät zum Übertragen von Datenstromdaten |
| JP3726898B2 (ja) * | 2002-04-26 | 2005-12-14 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
| US6745264B1 (en) * | 2002-07-15 | 2004-06-01 | Cypress Semiconductor Corp. | Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data |
| US7069370B2 (en) * | 2003-01-31 | 2006-06-27 | Toshiba Corporation | USB memory storage apparatus with integrated circuit in a connector |
| JP2006072435A (ja) * | 2004-08-31 | 2006-03-16 | Hitachi Ltd | ストレージシステムおよびデータ記録方法 |
| US7149839B2 (en) * | 2004-12-03 | 2006-12-12 | Microsoft Corporation | Wireless USB hardware scheduling |
| JP2006217476A (ja) | 2005-02-07 | 2006-08-17 | Nec Electronics Corp | 通信方法、通信システム及び有線/無線ブリッジ装置 |
| JP2006254290A (ja) | 2005-03-14 | 2006-09-21 | Yaskawa Electric Corp | マスタ−スレーブ通信システムおよび通信方法 |
| US8065441B2 (en) * | 2005-08-19 | 2011-11-22 | Intel Corporation | Method and apparatus for supporting universal serial bus devices in a virtualized environment |
| JP2007088775A (ja) * | 2005-09-21 | 2007-04-05 | Oki Electric Ind Co Ltd | 無線通信システム、無線通信装置及び方法 |
| US7647446B2 (en) | 2006-10-03 | 2010-01-12 | Silex Technology, Inc. | Networked isochronous USB communication |
| JP4613328B2 (ja) | 2007-05-17 | 2011-01-19 | サイレックス・テクノロジー株式会社 | Usbデバイスサーバおよびusbデバイスサーバシステム |
| US20100198999A1 (en) * | 2009-02-05 | 2010-08-05 | Qualcomm Incorporated | Method and system for wireless usb transfer of isochronous data using bulk data transfer type |
| US8332557B2 (en) * | 2008-12-12 | 2012-12-11 | Qualcomm, Incorporated | System, apparatus, and method for broadcasting USB data streams |
| US8059687B2 (en) * | 2008-12-16 | 2011-11-15 | Intel Corporation | Algorithm for managing data loss in software demodulators |
| TWI423037B (zh) * | 2009-05-15 | 2014-01-11 | Etron Technology Inc | 一種提升於通用串列匯流排協定中傳輸同時型傳輸類型的封包之效率之方法與裝置 |
| JP2011065630A (ja) * | 2009-08-20 | 2011-03-31 | Renesas Electronics Corp | データ転送制御装置及びデータ転送制御方法 |
| WO2011088153A2 (en) * | 2010-01-12 | 2011-07-21 | Synerchip Usa Corp. | Video management and control in home multimedia network |
| JP5454224B2 (ja) * | 2010-02-25 | 2014-03-26 | ソニー株式会社 | 記憶装置および記憶システム |
| TWI439868B (zh) * | 2010-05-25 | 2014-06-01 | 凌陽創新科技股份有限公司 | 在雙等時性萬用序列匯流排(usb)之攝像系統及方法 |
| JP5646986B2 (ja) | 2010-12-24 | 2014-12-24 | キヤノンイメージングシステムズ株式会社 | クライアント装置、デバイス制御方法、およびデバイス制御システム |
| JP2012204880A (ja) * | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリ装置及びその制御方法 |
| US8335875B1 (en) * | 2011-06-24 | 2012-12-18 | Intel Corporation | System and method for performing isochronous data buffering |
| US8949815B2 (en) | 2013-05-31 | 2015-02-03 | Microsoft Corporation | Driver installation for targeted and non-present devices |
-
2014
- 2014-02-10 JP JP2014023336A patent/JP6232604B2/ja active Active
-
2015
- 2015-02-02 US US14/611,403 patent/US9736076B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US20150229570A1 (en) | 2015-08-13 |
| US9736076B2 (en) | 2017-08-15 |
| JP2015152945A (ja) | 2015-08-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6889126B2 (ja) | 転送制御装置、転送制御方法及びプログラム | |
| JP4564665B2 (ja) | 一般的なシリアルバスプロトコルの範囲を拡張する方法並びに装置 | |
| US8578045B2 (en) | Adaptive bandwidth utilization | |
| US8713336B2 (en) | Communication apparatus, power supply control method, display apparatus, communication method, and computer program product | |
| CN100461757C (zh) | 实时流媒体传输方法及系统 | |
| CN104834623B (zh) | 音频播放方法及装置 | |
| WO2021179304A1 (zh) | 自动调整视频直播码率的方法、视频传输装置和服务器 | |
| CN104219286B (zh) | 流媒体处理方法、装置、客户端、cdn节点服务器及终端 | |
| JP2013016096A (ja) | コントローラ及び転送スピード制御方法 | |
| WO2014187220A1 (en) | Electronic device, storage medium and file transferrting method | |
| CN104937891A (zh) | 用于在电子设备中控制业务的方法和装置 | |
| WO2014187219A1 (en) | Electronic device, storage medium and file transferrting method | |
| CN105594182A (zh) | 用于媒体流式传输的改善的请求取消方法 | |
| CN109660467B (zh) | 用于控制流量的方法和装置 | |
| JP2015152945A (ja) | デバイスサーバとその制御方法 | |
| US20150172733A1 (en) | Content transmission device, content playback device, content delivery system, control method for content transmission device, control method for content playback device, data structure, control program, and recording medium | |
| US20120166585A1 (en) | Apparatus and method for accelerating virtual desktop | |
| CN103716596B (zh) | 图像处理装置和图像处理方法 | |
| TWI233553B (en) | Bus system and bus interface for connection to a bus | |
| JP6129526B2 (ja) | 通信装置、通信方法およびプログラム | |
| TWI570567B (zh) | 用於進行等時資料緩衝的系統和方法 | |
| KR101341668B1 (ko) | 데이터 통신 링크를 통한 데이터 흐름 제어 | |
| JP6090751B2 (ja) | デバイスサーバとその制御方法 | |
| JP6233652B2 (ja) | デバイスサーバとその制御方法 | |
| CN103716650B (zh) | 服务器装置和信息处理方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170206 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20170206 |
|
| A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20170309 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170523 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170719 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170919 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170927 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6232604 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |