(57)【要約】【課題】低コストで通信プロトコル処理を高速に実行し、ＴＣＰコネクション管理のアルゴリズム更新や品質保証のための検証を容易にし得る通信装置等を提供する。【解決手段】ＴＣＰの通常の処理を行なうソフトウェアで実装されるＴＣＰ処理部７０７と、ＴＣＰパケットに対する高速受信処理を行なう高速通信アダプタに実装されるＴＯＥ部４０２が同一のＴＣＰコネクションを扱い、その間でＴＣＰコネクション情報の同期処理を行なうためのＴＣＰ情報同期部を具備する。ＴＣＰ情報同期部は、ＴＯＥ部からソフトウェア実装のＴＣＰ処理部７０７に対するＴＣＰコネクション情報の更新を行なう条件として、ＴＣＰ送信の送信データ長から算出した値を用い、更新処理においてはソフトウェア実装のＴＣＰ処理部７０７の受信処理を利用することでＴＣＰ処理を動作させる。【選択図】図７
2009088962.tif 000002
【特許請求の範囲】
【請求項１】
通信装置に取り付けられる、通信インタフェースとして機能する通信アダプタであって、
通信相手から送られてくるＴＣＰパケットを受信するＴＣＰ受信処理部と、
前記通信装置と前記ＴＣＰ受信処理部との間における、ＴＣＰコネクションに関する情報であるＴＣＰコネクション情報のやりとりを中継するＴＣＰ情報入出力部とを備え、
前記ＴＣＰ情報入出力部は、前記通信装置から渡されるＴＣＰコネクション情報を受け取って、前記ＴＣＰ受信処理部に渡し、
前記ＴＣＰ受信処理部は、前記ＴＣＰ情報入出力部から渡されたＴＣＰコネクション情報を用いて、通信相手から送られてくるＴＣＰパケットの受信と受信したＴＣＰパケットに対応するＴＣＰ確認応答処理とを行なうと共に、前記ＴＣＰパケットの受信に伴って変化したＴＣＰコネクション情報を前記ＴＣＰ情報入出力部に通知し、
前記ＴＣＰ情報入出力部は、前記ＴＣＰ受信処理部から通知されたＴＣＰコネクション情報を前記通信装置に出力する
ことを特徴とした通信アダプタ。
【請求項２】
前記通信アダプタはさらに、前記通信装置から通知される値と前記ＴＣＰ受信処理部が受信したＴＣＰパケットに含まれる受信確認応答番号とを比較し、その比較結果に基づいて、前記通信装置に対して割り込み信号を発生する割り込み制御部を備える
ことを特徴とする請求項１に記載の通信アダプタ。
【請求項３】
通信相手とＴＣＰ通信をする通信装置であって、
ＴＣＰ通信におけるコネクション管理と前記通信相手への送信処理とを行なうＴＣＰ処理部と、
前記通信相手から送られてくるＴＣＰパケットを受信する請求項１に記載の通信アダプタと、
前記ＴＣＰ処理部と前記通信アダプタにおけるＴＣＰコネクション情報を同期させる処理を行なうＴＣＰ情報同期部と
を備えることを特徴とする通信装置。
【請求項４】
前記ＴＣＰ情報同期部は、前記通信アダプタが管理するＴＣＰコネクション情報が変更された場合に、変更後のコネクション情報が予め決められた条件を満たしたときに、当該コネクション情報を前記ＴＣＰ処理部に反映させる同期処理を行なう
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記ＴＣＰ処理部は、前記通信相手から送られてくるＴＣＰパケットを受信する受信機能をもつインタフェース処理部を有する
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記ＴＣＰ情報同期部は、前記インタフェース処理部の前記受信機能を用いて、前記コネクション情報を前記ＴＣＰ処理部に反映させる
ことを特徴とする請求項５に記載の通信装置。
【請求項７】
前記ＴＣＰ情報同期部は、前記受信機能を用いる場合における前記通信アダプタが管理する受信順序番号を除き、前記コネクション情報を前記ＴＣＰ処理部に反映させる
ことを特徴とする請求項６に記載の通信装置。
【請求項８】
前記ＴＣＰ処理部は、ＴＣＰ送信処理の事前処理として、前記通信アダプタが管理する受信順序番号を取得したい旨の要求を前記ＴＣＰ情報同期部に送り、
前記ＴＣＰ情報同期部は、前記ＴＣＰ処理部からの前記要求に対して、前記通信アダプタが管理する受信順序番号を取得し、取得した受信順序番号を前記ＴＣＰ処理部に応答し、
前記ＴＣＰ処理部は、前記ＴＣＰ情報同期部からの応答を受けて、受信順序番号の値を更新する
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
前記ＴＣＰ情報同期部は、予め与えられた第１の値と前記通信アダプタが受信したＴＣＰパケットに含まれる受信確認応答番号から算出される第２の値とを比較することで、変更後のコネクション情報が予め決められた条件を満たしたか否かを判断する
ことを特徴とする請求項４に記載の通信装置。
【請求項１０】
前記ＴＣＰ処理部は、ＴＣＰ送信処理を行なう場合に、当該ＴＣＰ送信処理における送信データの最後の順序番号を、前記ＴＣＰ情報同期部に通知し、
前記ＴＣＰ情報同期部は、前記ＴＣＰ処理部から通知された順序番号から算出される値を前記第１の値として前記比較をする
ことを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記通信アダプタはさらに、受信したＴＣＰパケットを、当該ＴＣＰパケットの受信状況に応じて、異なる２つの出力先に出力する振り分け部を備える
ことを特徴とする請求項３に記載の通信装置。
【請求項１２】
前記通信装置はさらに、ＣＰＵと映像データを処理する映像処理部とを備え、
前記振り分け部は、異なる２つの出力先として、当該通信アダプタと前記ＣＰＵとを接続する第１のバス、および当該通信アダプタと前記映像処理部とを接続する第２のバスに、前記ＴＣＰパケットを出力する
ことを特徴とする請求項１１に記載の通信装置。
【請求項１３】
前記通信アダプタはさらに、前記通信装置から、受信したＴＣＰパケットの出力先とその出力先に連続して出力するデータ量である連続出力量の指定を受け付け、受け付けた指定に従って、前記ＴＣＰパケットを出力するＴＣＰパケット出力制御部を備える
ことを特徴とする請求項１２に記載の通信装置。
【請求項１４】
前記ＴＣＰパケット出力制御部は、前記通信装置から指定された連続出力量の出力が完了する前に、当該出力を中断する機能を備える
ことを特徴とする請求項１３に記載の通信装置。
【請求項１５】
通信相手とＴＣＰ通信をする通信装置による通信方法であって、
前記通信装置が備えるＣＰＵが、ＴＣＰ通信におけるコネクション管理と前記通信相手への送信処理とを行ない、
前記通信装置に取り付けられる通信アダプタが、前記通信相手から送られてくるＴＣＰパケットの受信処理を行なう
ことを特徴とする通信方法。
【請求項１６】
通信装置に取り付けられる、通信インタフェースとして機能する集積回路であって、
通信相手から送られてくるＴＣＰパケットを受信するＴＣＰ受信処理部と、
前記通信装置と前記ＴＣＰ受信処理部との間における、ＴＣＰコネクションに関する情報であるＴＣＰコネクション情報のやりとりを中継するＴＣＰ情報入出力部とを備え、
前記ＴＣＰ情報入出力部は、前記通信装置から渡されるＴＣＰコネクション情報を受け取って、前記ＴＣＰ受信処理部に渡し、
前記ＴＣＰ受信処理部は、前記ＴＣＰ情報入出力部から渡されたＴＣＰコネクション情報を用いて、通信相手から送られてくるＴＣＰパケットの受信と受信したＴＣＰパケットに対応するＴＣＰ確認応答処理とを行なうと共に、ＴＣＰパケットの受信に伴って変化したＴＣＰコネクション情報を前記ＴＣＰ情報入出力部に通知し、
前記ＴＣＰ情報入出力部は、前記ＴＣＰ受信処理部から通知されたＴＣＰコネクション情報を前記通信装置に出力する
ことを特徴とした集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して映像データを受信する際の通信技術に関し、特に通信プロトコルであるＴＣＰを利用した通信アダプタ、通信装置および通信方法に関する。
【背景技術】
【０００２】
従来のＴＣＰパケット通信装置として、ネットワーク伝送路の制御に関する下位レイヤの通信プロトコル処理だけを実行する低速処理用の通信アダプタと、上位レイヤも含めた通信プロトコル処理を高速に実行する高速処理用の通信アダプタとを実装する技術が開示されている（例えば、特許文献１参照）。ここで、低速処理用の通信アダプタは、ＴＣＰ／ＩＰ処理をホストＣＰＵでソフトウェアにより実現し、高速処理用の通信アダプタは、その通信アダプタ内に別途ＴＣＰ／ＩＰ処理を担当するハードウェアを実装する形態をとっている。
【特許文献１】特開平６−３０９２５１号公報（第１頁、第５図等）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来のＴＣＰパケット通信装置は、主に以下３点の特徴を有している。
【０００４】
（ａ）高速処理用の通信アダプタを実現する上で、ＴＣＰコネクション接続・切断用のパケット処理は、アルゴリズムが複雑な上に、そのアルゴリズム自体も新方式が提案されていく可能性が高いため、ハード化による実装は、レガシー問題を含めた相互接続性の観点でリスクが高い。これは、図１３において、高速通信アダプタ１３０１のみをハード化し、外付けメモリ１３０２がない場合に相当する（この場合の通信シーケンス図は、図１５を参照）。
【０００５】
（ｂ）ＴＣＰ／ＩＰ処理を高速化させる手段として、上記（ａ）で説明したようにハード化することによるリスクが高いため、高速処理用の通信アダプタ内部の構成として、専用のＣＰＵを具備させ、ソフトウェア処理で行なう形態が現実的である。これは、図１３に示すように、高速通信アダプタ１３０１と外付けメモリ１３０２を備える場合に相当する（この場合の通信シーケンス図は、図１４を参照）。
【０００６】
（ｃ）従来活用されてきたネットワーク技術としては、ＰＣアーキテクチャにおける強力なＣＰＵの元での実装が行なわれてきたため、上記（ａ）や（ｂ）のようなアプローチの必要性が少なかった。これに対して、近年のＤＬＮＡを中心とした家庭内における伝送規格への対応が求められ、家電機器のネットワーク化の必要性が増大し、従来の家電機器における限られたＣＰＵリソースおよびコスト制約の中で、高精細大容量の映像データを扱うための性能とのトレードオフを解決する必要性が高まってきている。
【０００７】
そして、上記従来のＴＣＰパケット通信装置において高速処理用の通信アダプタを実装する上では、以下２点の課題がある。
【０００８】
（１）高速処理用の通信アダプタに、専用のＣＰＵが必要となり、その処理のため、および、入力パケット最大速度と（ホストＣＰＵに対する）出力パケット最大速度の差を吸収するために、少なくとも数ＭＢの外付けメモリが必要となり、その結果コストがかかる。
【０００９】
（２）ＴＣＰコネクション接続・切断用などのコネクション管理のパケット処理を行なう処理部が、ホストＣＰＵと高速処理用の通信アダプタとに複数存在するため、アルゴリズムの更新や、品質保証のための検証が困難である。
【００１０】
本発明は、前記課題に鑑みてなされたものであり、低コストで通信プロトコル処理を高速に実行しながら、ＴＣＰコネクション管理のアルゴリズム更新や品質保証のための検証を容易にし得る通信装置等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明に係る通信装置は、特に、ＴＶなどの受像機への適用を目的とし、大容量の映像データを高速受信することに特化し、アルゴリズムが複雑なＴＣＰコネクション接続・切断用のコネクション管理処理およびデータ送信処理のみを低速処理用の通信アダプタ（即ち、ＴＣＰ処理をホストＣＰＵで動作するソフトウェア）で実施し、映像データなどを含んだペイロード伝送用のパケット受信処理のみを高速処理用の通信アダプタで実施する。
【００１２】
本構成によって、高速処理用の通信アダプタを外付けメモリなしで（即ち、低コストで）実現できる。
【００１３】
また、本発明に係る通信装置は、ホストＣＰＵと高速処理用の通信アダプタの両方でＴＣＰパケットを扱うＴＣＰ処理部を具備するが、これら２つのＴＣＰ処理部の間でＴＣＰコネクション情報を共有するため、それぞれが管理するＴＣＰコネクション情報を所定のタイミングで互いに通知しながら更新する。
【００１４】
さらに、本発明に係る通信アダプタは、ＴＣＰパケットの受信の度ではなく、予め動的に指定された条件のＴＣＰパケットを受信したときのみ、管理するＴＣＰコネクション情報をホストＣＰＵのＴＣＰ処理部に通知することができる機能を備える。
【００１５】
さらに、本発明に係る通信装置が備えるホストＣＰＵで動作するＴＣＰ処理部は、高速処理用の通信アダプタの通知条件として、ＴＣＰの確認応答を要求する送信データ番号（Ａｃｋ）を含む機能を備え、また、ＴＣＰ送信時において、高速処理用の通信アダプタで受信した受信順序情報（Ｓｅｑ）を事前処理として更新する機能を備える。
【００１６】
本構成によって、ＴＣＰコネクション情報の更新のために必要なホストＣＰＵ処理資源を抑制することが可能となる。
【００１７】
また、高速処理用の通信アダプタからホストＣＰＵで動作するＴＣＰ処理部にＴＣＰコネクション情報を更新する方法として、高速処理用の通信アダプタのドライバは、ＴＣＰパケットを生成して受信処理を行ない、その際にＳｅｑは更新値を設定しない機能を備える。
【００１８】
本構成によって、ＴＣＰコネクション情報をホストＣＰＵで動作するＴＣＰ処理部に更新するにあたり、関連する必要な処理、例えば輻輳制御処理、再送制御処理、コネクション切断処理を行なうことを可能とする。
【００１９】
さらに、本発明に係るＴＣＰパケット処理装置の高速処理用の通信アダプタは、受信したＴＣＰパケットのペイロードデータに対し、２つ以上の出力経路を持ち、例えばＣＰＵアクセスによる出力と、専用バスによる出力を可能とする。さらに、それらの連続出力量を指定可能とすることで、ＴＣＰペイロードデータの中の、ＨＴＴＰなどのより上位層のプロトコル解析と映像データ切り出し、そして専用バスによる出力を可能とする。
【００２０】
また、本発明は、通信相手とＴＣＰ通信をする通信装置による通信方法であって、前記通信装置が備えるＣＰＵが、ＴＣＰ通信におけるコネクション管理と前記通信相手への送信処理とを行ない、前記通信装置に取り付けられる通信アダプタが、前記通信相手から送られてくるＴＣＰパケットの受信処理を行なうことを特徴とする。
【００２１】
さらに、本発明は、上記通信アダプタにおける特徴的な構成手段を備える集積回路として実現することもできる。
【発明の効果】
【００２２】
本発明によれば、以下のような効果が期待できる。
【００２３】
（１）専用のＣＰＵ、外付けメモリが不要な低コストの高速受信処理用のＴＣＰ通信アダプタが実現できる。
【００２４】
（２）ＴＣＰコネクション接続・切断用などのコネクション管理のパケット処理を行なう処理部をホストＣＰＵで動作するソフトウェアに集約し、アルゴリズムの更新や、品質保証のための検証が容易となる。
【００２５】
（３）上記高速受信処理用のＴＣＰ通信アダプタから、ホストＣＰＵで動作するソフトウェアのＴＣＰ処理部へのＴＣＰコネクション情報の更新を、ＴＣＰ送信処理を行なう直線、および、その確認応答が完了するまでの限定期間のみとすることができ、ＣＰＵ処理資源への負荷を抑制することができる。
【００２６】
（４）受信したＴＣＰパケットに対し、その上位層であるＨＴＴＰにおいて、ＨＴＴＰヘッダと映像データを分離し、映像データを直接デジタルＴＶチューナに出力することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明に係る実施の形態について、図面を参照しながら説明する。なお、本発明について、以下の実施の形態および添付の図面を用いて説明を行なうが、これは例示を目的としており、本発明がこれらに限定されることを意図しない。
【００２８】
図１は、本実施の形態に係るネットワークシステムの構成の一例を示すブロック図である。図１に示すように、ネットワークシステム１００は、映像サーバ１０１およびＤＴＶ（Digital TV）１０３を備えており、それらはＩＰネットワーク１０２を介して互いに接続されている。なお、ＩＰネットワーク１０２には、上記以外の装置が接続されていてもよい。
【００２９】
上記のＤＴＶ１０３は、放送波によるデジタル放送を受信すると共に、ＩＰネットワーク１０２を介して映像サーバ１０１から映像データを含むＴＣＰパケットを取得する。これに対し、映像サーバ１０１は、ＤＴＶ１０３からの要求により、映像データを含むＴＣＰパケットをＤＴＶ１０３に送信する。より具体的に説明すると、ネットワークシステム１００において使用するプロトコルはＨＴＴＰであり、ＤＴＶ１０３は、ＧＥＴコマンドによって映像データの取得を要求し、映像サーバ１０１からＨＴＴＰ応答として複数のＴＣＰパケットを受信する。
【００３０】
図２は、一般的なＤＴＶのハードウェア構成の一例を示すブロック図である。図２に示すように、ＤＴＶ２００は、メインメモリ２０１、ＣＰＵ２０２、デジタルＲＦ２０３、デジタルＴＶチューナ２０４およびＡＶデコーダ２０５を備え、バス２０６によって相互に接続されている。
【００３１】
ＤＴＶ２００では、デジタルＲＦ２０３が受信したデジタル放送波がデジタルＴＶチューナ２０４に出力されて映像信号等に復調され、さらに、ＡＶデコーダ２０５において復調された映像信号等の復号化が行なわれている。さらに、ＤＴＶ２００では、ＣＰＵ２０２上で動作するソフトウェア（制御プログラム）によって、デジタルＲＦ２０３、デジタルＴＶチューナ２０４およびＡＶデコーダ２０５の各動作が制御されている。なお、図２に示すＤＴＶ２００には、必要な機能の全てを記載しているものではなく、本発明に関係するハードウェア構成のみを記載している。
【００３２】
上記のようなＤＴＶ２００は、ＴＣＰ／ＩＰによる広帯域映像受信の処理を通常の通信アダプタ（ＬＡＮコントローラ）を用いて行なうだけの十分な処理資源を持ち合わせていない。この課題を解決する手段として、高速通信アダプタを用いることができる。
【００３３】
図３は、上記図２に示すＤＴＶ２００に高速通信アダプタを付加したＤＴＶのハードウェア構成を示すブロック図である。
【００３４】
図３に示す高速通信アダプタ３０１は、バス２０６に接続されると共に、映像データを送信するための専用バス２０７を介して直接デジタルＴＶチューナ２０４に接続される。つまり、ＤＴＶ１０３では、高速通信アダプタ３０１がＩＰネットワーク１０２経由で受信した映像データを、ＣＰＵ２０２上で動作するプロトコル処理ソフトウェアで処理することなく、直接デジタルＴＶチューナ２０４に入力している。
【００３５】
上記のようなＤＴＶ１０３においては、ＣＰＵ２０２上で動作するソフトウェアで実装するＴＣＰ処理部と、ハードウェアで実装した高速通信アダプタ３０１のＴＣＰ処理部とを、同一のＴＣＰコネクションに対して連動して動作させることとなる。
【００３６】
図４は、上記図３における高速通信アダプタ３０１の機能構成を示すブロック図である。高速通信アダプタ３０１は、従来の通信アダプタ機能を有する汎用ＬＡＮ制御部４０１、ＴＣＰオフロード機能を有するＴＯＥ部４０２、およびＩＰネットワーク１０２を介して映像サーバ１０１から受信したＥｔｈｅｒフレームを振り分けて上記汎用ＬＡＮ制御部４０１とＴＯＥ部４０２に入力する振り分け部４０３とを備える。なお、説明の便宜上、Ｅｔｈｅｒフレームを例示したが、物理層・ＭＡＣ層をＥｔｈｅｒに限定するものではない。また、本発明に係る汎用ＬＡＮ制御部４０１における送受信については、以後、ＴＯＥ部４０２で受信するＴＣＰコネクションと同一のＴＣＰコネクションのコネクション制御および送信処理についてのみ言及する。
【００３７】
上記の高速通信アダプタ３０１では、ＣＰＵ２０２上で動作するソフトウェアで実現する（後述の）ＴＣＰ処理部によるコネクションに関する制御、およびＴＣＰパケットの送信制御は、汎用ＬＡＮ制御部４０１で担当し、広帯域映像データを含むＴＣＰパケットの受信処理はＴＯＥ部４０２で担当させることとする。
【００３８】
つまり、ＴＣＰコネクション管理であるＴＣＰコネクション確立・切断、およびＴＣＰ送信処理となる映像取得要求の送信などは汎用ＬＡＮ制御部４０１で行ない、ＴＣＰ処理はＣＰＵ２０２上で動作するソフトウェアによって制御する。一方、広帯域映像データを含むＴＣＰパケットの受信処理はＴＯＥ部４０２で行ない、ＴＣＰパケットの受信処理に伴うＴＣＰ確認応答の送信もＴＯＥ部４０２で行なう。
【００３９】
図５は、上記図４におけるＴＯＥ部４０２の機能構成を示すブロック図である。図５に示すように、ＴＯＥ部４０２は、割り込み制御部６０１、ＴＣＰ情報入出力部６０２、ＴＣＰパケット出力制御部６０３、ＣＰＵアクセス出力制御部６０４、ＴＣＰパケット受信処理部６０５および映像データ出力制御部６０６を備える。
【００４０】
割り込み制御部６０１は、ＣＰＵ２０２上で動作するソフトウェアから（ＣＰＵアクセスの後）、割り込み信号動作の条件が設定される。この条件には、ＴＯＥ部４０２にＴＣＰパケットが入力された事象、そのＴＣＰパケットに含まれるＴＣＰの確認応答番号（「Ａｃｋ」とも記す。）の値が設定値以下である事象などにおける条件が含まれる。なお、これらの事象全体、又は個別にその条件の有効又は無効を切り替えることが可能である。
【００４１】
ＴＣＰ情報入出力部６０２は、ＣＰＵ２０２上で動作するソフトウェアから（ＣＰＵアクセスの後）、ＴＯＥ動作のための初期値としてのＴＣＰ情報の設定、およびＴＣＰ送信によって変化したＴＣＰ情報の更新が行なわれ、また、ＴＣＰパケット受信処理部６０５でＴＣＰパケットを受信したことによって変化したＴＣＰ情報の取得が行なわれる。
【００４２】
ＴＣＰパケット出力制御部６０３は、ＣＰＵ２０２上で動作するソフトウェアから（ＣＰＵアクセスの後）、ＴＣＰパケット受信処理部６０５から渡されたＴＣＰパケットを、ＣＰＵアクセス出力制御部６０４又は映像データ出力制御部６０６の何れに渡すかについて通知（又は設定）を受け、この通知（設定）に従ってＴＣＰパケットを処理する。
【００４３】
ＣＰＵアクセス出力制御部６０４は、ＴＣＰパケット出力制御部６０３から渡されたＴＣＰパケットに対して、ＣＰＵ２０２上で動作するソフトウェアから、ＣＰＵアクセスによる読み出し又は書き込みを可能とする機能を提供する。
【００４４】
ＴＣＰパケット受信処理部６０５は、振り分け部４０３で振り分けられたＴＣＰパケットの受信処理を行なうと共に、必要に応じてＴＣＰの確認応答処理を行なう。また、受信したＴＣＰパケットから、ＴＣＰコネクション情報を取得してＴＣＰ情報入出力部６０２に対して更新するように指示する。
【００４５】
映像データ出力制御部６０６は、ＴＣＰパケット出力制御部６０３から渡されたＴＣＰパケットに対して、デジタルＴＶチューナ２０４に入力させるため、映像データを専用バス２０７に出力する。
【００４６】
図６は、ＣＰＵ２０２上で動作するソフトウェアの機能構成の一例を示す図である。なお、図６においては、本発明の説明に必要な部分のみを記載しているが、実際には他の様々なソフトウェア機能部が実装されている。
【００４７】
図６において、アプリケーション７０１は、ＤＴＶ１０３におけるＩＰネットワーク１０２を介した映像サーバ１０１から映像データを取得する処理と、画面表示に関する動作を制御するソフトウェアである。
【００４８】
プロトコル処理部７０２は、基本ソフトウェアであるＯＳ（オペレーティングシステム）の一部であり、ＴＣＰ処理部７０７、ＩＦ処理部７０８を少なくとも備える。また、ＴＣＰ処理部７０７は、更新条件通知部７０９、Ｓｅｑ更新部７１０を備える。
【００４９】
汎用ＬＡＮ制御部用ドライバ７０３は、ＴＣＰ処理部７０７が制御するＴＣＰパケットの送受信を行なうため、ＩＦ処理部７０８によりプロトコル処理部７０２と接続され、汎用ＬＡＮ制御部４０１を制御するソフトウェアである。
【００５０】
ＴＯＥ部用ドライバ７０４は、ＴＯＥ部４０２を制御するソフトウェアであり、ＴＣＰ処理部７０７、ＩＦ処理部７０８、アプリケーション７０１と接続している。この接続の詳細については後述する。なお、ＴＯＥ部用ドライバ７０４は、ＴＣＰ情報更新部７１１、ＴＣＰ情報管理部７１２、ＴＣＰ受信制御部７１３を備える。
【００５１】
デジタルＴＶチューナ用ドライバ７０５は、デジタルＴＶチューナ２０４の制御を行なうソフトウェアであり、ＡＶデコーダ用ドライバ７０６はＡＶデコーダ２０５の制御を行なうソフトウェアである。
【００５２】
なお、汎用ＬＡＮ制御部用ドライバ７０３と、ＴＯＥ部用ドライバ７０４は、実装上１つのドライバとして実装してもよい。特に、高速通信アダプタ３０１の汎用ＬＡＮ制御部４０１とＴＯＥ部４０２の割り込み信号が共有されてＣＰＵ２０２に入力される場合は、このような構成が有用である。
【００５３】
なお、更新条件通知部７０９、Ｓｅｑ更新部７１０およびＴＯＥ部用ドライバ７０４の３つをまとめたＴＣＰ情報同期部を構成することとしてもよい。この場合、ＴＣＰ処理部７０７においては、更新条件通知部７０９、Ｓｅｑ更新部７１０を実行するための呼び出しのみが行なわれ、ＴＯＥ部用ドライバ７０４内において、その実体が実装されて呼び出される形態とすることができる。
【００５４】
次に、上記のように構成されるＤＴＶ１０３における、映像サーバ１０１間との通信動作について、図面を参照しながら説明する。
【００５５】
図９は、本実施の形態に係る映像サーバ１０１−ＤＴＶ１０３間の通信における処理分担の様子を示す図である。図５では、上から下に向かう方向が時間の経過を示している。映像サーバ１０１の具体例としては、ＤＶＲ（Digital Video Recorder）がある。
【００５６】
図９の「ハード」に位置する処理は、上記のＴＯＥ部４０２で行なわれるＴＣＰ処理であり、図９の「ソフト」に位置する処理は、上記のＣＰＵ２０２上で動作するソフトウェアで行なわれるＴＣＰ処理である。図９に示す例では、主にＨＴＴＰによるコネクション管理、映像取得要求および映像データの送受信が行なわれている。図９における「ＨＴＴＰ  ＧＥＴ」はＨＴＴＰのコマンドの一種であり、ＤＴＶ１０３のソフトによってＴＣＰ送信される。なお、この「ＨＴＴＰ  ＧＥＴ」は、１つ又は複数のＴＣＰパケットで構成される。
【００５７】
図９において、映像取得要求である「ＨＴＴＰ  ＧＥＴ」を受信した映像サーバ１０１は、ＨＴＴＰ応答として映像データをＤＴＶ１０３に送信する。このＨＴＴＰ応答としての映像データは、１つ又は複数のＴＣＰパケットで構成され、一度に千個以上のＴＣＰパケットから構成されることもある。ＨＴＴＰ応答を構成するＴＣＰパケットの受信は、ＤＴＶ１０３においてハードで処理され、このＴＣＰパケット受信に対応する確認応答送信（Ａｃｋ送信）も、ハードによって行なわれる。
【００５８】
なお、映像データの取得が完了したのち、ＤＴＶ１０３は、ＴＣＰコネクションを切断する。ＤＴＶ１０３においてこのＴＣＰコネクションの切断に必要なＴＣＰパケットの送受信は、ソフトによって処理される。ただし、映像サーバ１０１からＴＣＰコネクション切断のためのＴＣＰパケット（ＦＩＮやＲＳＴ）が送られた場合、その受信はＤＴＶ１０３にとって予期できないため、少なくとも一度ハードによって受信される。この場合、そのＴＣＰパケットをソフトで処理させることでＴＣＰコネクション切断が可能となる。
【００５９】
以下では、上記のＤＴＶ１０３のさらに詳細な動作について説明する。
【００６０】
（１）コネクション確立
最初に、アプリケーション７０１は、映像サーバ１０１からの映像データ取得のためのＨＴＴＰ通信を可能とするため、映像サーバ１０１との間にＴＣＰコネクションを確立するよう、プロトコル処理部７０２に指示する。プロトコル処理部７０２は、通常のプロトコル処理の動作に準じ、ＴＣＰ処理部７０７によるＴＣＰコネクション確立を行なう。具体的には、ＴＣＰの「３Ｗａｙ−Ｈａｎｄｓｈａｋｅ」と呼ばれるＴＣＰパケットの送受信を、汎用ＬＡＮ制御部用ドライバ７０３を介して高速通信アダプタ３０１の汎用ＬＡＮ制御部４０１により実施する。
【００６１】
（２）ＴＯＥ初期設定
上記のＴＣＰコネクションが確立されると、アプリケーション７０１は、ＴＯＥ部用ドライバ７０４のＴＣＰ受信制御部７１３に対し、確立したＴＣＰコネクションがＴＯＥ部４０２で処理されるべきＴＣＰコネクションであることを通知する。これにより、ＴＣＰ受信制御部７１３は、ＴＣＰ情報管理部７１２に、該当するＴＣＰコネクションのＴＣＰコネクション情報の取得と、ＴＯＥ部４０２への初期設定を行なうよう指示する。また、ＴＣＰ受信制御部７１３は、ＴＯＥ部４０２のＴＣＰパケット出力制御部６０３にＣＰＵアクセス出力制御部６０４への出力モード（ＣＰＵアクセスモード）とするよう指示する。ＴＣＰ情報管理部７１２は、指定されたＴＣＰコネクション情報をＴＣＰ処理部７０７から取得し、高速通信アダプタ３０１の振り分け部４０３に該当するＴＣＰパケットをＴＯＥ部４０２に振り分けるように指示し、さらに、指定されたＴＣＰコネクションのＴＣＰコネクション情報の初期値をＴＯＥ部４０２のＴＣＰ情報入出力部６０２に設定する。
【００６２】
（３）映像データ取得要求送信とＴＣＰコネクション情報更新条件設定
次に、アプリケーション７０１は、映像データ取得要求となる「ＨＴＴＰ  ＧＥＴ」コマンドを送信するよう、プロトコル処理部７０２に指示する。これにより、プロトコル処理部７０２内のＴＣＰ処理部７０７は、「ＨＴＴＰ  ＧＥＴ」コマンドのＴＣＰパケットの順序番号とＴＣＰペイロード長から、更新条件に用いる確認応答番号を算出し、ＴＯＥ部用ドライバ７０４のＴＣＰ情報更新部７１１に通知する。
【００６３】
また、ＴＣＰ処理部７０７は、通常のプロトコル処理の動作に準じ、汎用ＬＡＮ制御部用ドライバ７０３を介して高速通信アダプタ３０１の汎用ＬＡＮ制御部４０１によりＴＣＰ送信処理を実施するように制御する。
【００６４】
ＴＣＰ情報更新部７１１は、通知された更新条件に従い、ＴＯＥ部４０２の割り込み制御部６０１に割り込み許可設定を行なう。この「割り込み許可設定」は、通知された更新条件としての確認応答番号を意味しており、割り込み制御部６０１がＴＣＰパケット受信処理部６０５で処理されるＴＣＰパケットの確認応答番号と比較して大きい場合に割り込み信号を出力する条件とする構成や、単にＴＣＰパケット受信処理部６０５がＴＣＰパケットの受信処理を行なった時という条件として、ＴＣＰ情報更新部７１１がＣＰＵアクセス出力制御部６０４からのＴＣＰパケットの読み出しによって判定する構成が実装可能である。
【００６５】
（４）映像データ受信準備処理と確認応答によるＴＣＰコネクション情報更新
以上により、映像サーバ１０１から、複数のＴＣＰパケットから構成される映像データを含むＨＴＴＰ応答が送信されると、これらのＴＣＰパケットは、振り分け部４０３によってＴＯＥ部４０２に振り分けられる。ＴＯＥ部４０２のＴＣＰパケット受信処理部６０５は、所定の条件、例えば、「正常な受信時において２つのＴＣＰパケットの受信に対して１つのＴＣＰ確認応答の送信を行なう」などの条件に基づいてＴＣＰ確認応答の送信を行なう。一方、順序入れ替えやパケット落ちを検出した場合、ＴＣＰパケット受信処理部６０５は、この条件を満たさない場合でもＴＣＰ確認応答の送信を行なう。
【００６６】
また、ＴＣＰパケット受信処理部６０５は、ＴＣＰ情報入出力部６０２に対して、受信したＴＣＰパケットの情報からＴＣＰコネクション情報を抽出して設定する。
【００６７】
割り込み制御部６０１は、上記の割り込み許可設定に従って割り込み信号を発行する。ＴＣＰ情報入出力部６０２は、ＴＣＰパケット受信処理部６０５が受信したＴＣＰパケットに従って、自身で管理するＴＣＰコネクション情報を更新する。ＴＣＰパケット受信処理部６０５で処理されたＴＣＰパケットは、ＴＣＰパケット出力制御部６０３がＣＰＵアクセスモードであることから、ＣＰＵアクセス出力制御部６０４に送られる。
【００６８】
ＴＣＰ情報更新部７１１は、割り込み信号を受けてＴＣＰコネクション情報をＴＣＰ処理部８０７に更新する。この際、ＴＣＰ処理部７０７がＴＣＰ受信機能を持つ場合、ＴＣＰパケットを生成して更新するＴＣＰコネクション情報を格納し、ＩＦ処理部７０８を経由して受信処理を行なうことでＴＣＰコネクション情報を格納し、かつ、その更新と同時に必要な輻輳制御や再送制御、コネクション管理処理を実行させることが可能となる。
【００６９】
上記のＴＯＥ部用ドライバ７０４において生成されるＴＣＰパケットのフォーマットの一例を図７に示す。図７に示すように、ＴＣＰパケット８００は、ＭＡＣヘッダ８０１、ＩＰヘッダ８０２およびＴＣＰヘッダ８０３から構成されるが、このＴＣＰパケット８００は、ペイロードデータ８０４を持っていない。また、ＴＣＰヘッダ８０３は、予め初期設定で管理される値以外としては、順序番号８０３０１、確認応答番号８０３０２、受信ウィンドウサイズ８０３０３があり、これらはＴＣＰ情報管理部７１２がＴＣＰ情報入出力部６０２から取得して格納する。
【００７０】
なお、ＴＣＰヘッダ８０３における「送信元ポート番号」および「宛先ポート番号」は、ＴＣＰコネクション毎に一意に決定される値であり、「Ｏｆｆｓｅｔ」は“５”（データ長：２０バイト）固定、「緊急ポインタ」は“０”固定であってもよい。また、ＴＣＰヘッダ８０３における「Ｆｌａｇ」は「Ａｃｋ」が「１」であればよく、その他は受信パケットに応じて設定してもよい。さらに、ＴＣＰヘッダ８０３における「Ｃｈｅｃｋｓｕｍ」は、以上のＴＣＰヘッダ８０３と、ＴＣＰコネクション毎に一意に決定される送信元ＩＰアドレスと宛先ＩＰアドレスから計算して格納する。この格納方法は、ＴＣＰの一般的なＣｈｅｃｋｓｕｍの算出方法に基づく。
【００７１】
なお、上記の更新のためのＴＣＰパケットには、受信順序番号（Ｓｅｑ）の更新値を格納せず、更新前の値を格納する。これは、上記のＴＣＰパケット８００の場合は、ペイロードデータ８０４を持たず、「Ｓｅｑ」の更新値を格納してＴＣＰ処理部７０７で受信処理をさせようとしても、正常に処理されないからである。この更新されない「Ｓｅｑ」に対する更新については後述する。
【００７２】
（５）映像データ受信処理
アプリケーション７０１は、「ＧＥＴコマンド」の送信の後、ＴＣＰ受信制御部７１３に対し、ＣＰＵアクセスによる読み出し要求を、その読み出し量（受信量）を指定して行なう。これにより、ＴＣＰ受信制御部７１３は、割り込み信号の発行を受けて、ＣＰＵアクセス出力制御部６０４から指定量を読み出し、アプリケーション７０１に応答する。
【００７３】
なお、アプリケーション７０１は、この読み出し量を映像データの開始位置を超えないように制御する。
【００７４】
なお、映像データの開始位置がＨＴＴＰ応答における最初のＴＣＰパケットに収まらず、分割された後のＴＣＰパケットから始まる場合、該当するＴＣＰパケットが未着の場合は、ＴＣＰ受信制御部７１３が待ち状態となり、アプリケーション７０１はその処理を待たされることになるため、その待ち処理を中断することも可能である。これは、ＴＣＰ受信制御部７１３に対する指示によって行なわれる。
【００７５】
なお、割り込み許可設定をＴＣＰ情報更新部７１１において判定して制御する場合、ＣＰＵアクセス出力制御部６０４からのＴＣＰヘッダの読み出しによってこの判定を行なう。
【００７６】
アプリケーション７０１は、受信したＨＴＴＰヘッダを解析することによって映像データの開始位置とその連続量とを取得し、ＴＣＰ受信制御部７１３に対して、専用バス２０７への出力とその開始位置、および連続出力量の指示を行なう。これにより、ＴＣＰ受信制御部７１３は、ＴＣＰパケット出力制御部６０３に、映像データ出力制御部６０６への出力を行なうモード（映像データ出力モード）に切り替えるよう指示する。なお、ＴＣＰ受信制御部７１３は、連続して出力するデータ量である連続出力量のデータ受信を完了するか、中断が発生した場合に、ＴＣＰパケット出力制御部６０３に対し、上記映像データ出力モードからＣＰＵアクセスモードに切り替えるように指示する。
【００７７】
また、ＴＣＰ受信制御部７１３は、映像データ出力制御部６０６に対し、映像データの開始位置と連続出力量とを指定する。これにより、映像データ出力制御部６０６にＴＣＰパケットが渡され、専用バス２０７に映像データが出力され、デジタルＴＶチューナ２０４に映像データが渡される。
【００７８】
なお、この映像データ出力モードにおいて指定された連続出力量の出力が完了するまでに、アプリケーション７０１がその出力を中断することもできる。これは、ＴＣＰ受信制御部７１３に対してその中断を指示し、ＴＣＰ受信制御部７１３が映像データ出力制御部６０６に対してその指示を行なうことによって実現される（図８参照）。
【００７９】
（６）継続要求送信
アプリケーション７０１は、最初に指定した映像データの取得が完了すると、続いて映像データの取得要求を送信する場合がある。この場合、アプリケーション７０１は、上記と同様に、プロトコル処理部７０２に対して「ＨＴＴＰ  ＧＥＴ」コマンドを送信するよう指示する。ここで、最初の動作と異なる点としては、ＴＣＰ処理部７０７は、その送信処理の事前処理として、Ｓｅｑ更新部７１０により、ＴＣＰ情報管理部７１２からＴＣＰコネクション情報の一つである受信順序番号（Ｓｅｑ）の取得を行ない、自身が管理するテーブルを更新する。これにより、上記のＴＣＰパケットを生成して受信させることで更新されないＳｅｑを更新することが可能となる。
【００８０】
図１０は、上記で説明したソフトウェアの処理を、ＴＯＥ部用ドライバ７０４とＴＣＰ処理部８０７に絞った動作のイメージを表した図である。更新条件通知部８０９およびＳｅｑ更新部８１０は、送信処理の中でその事前処理として実行される。また、ＴＯＥ部用ドライバ７０４からＴＣＰコネクション情報を更新するために生成されたＴＣＰパケットをＴＣＰ処理部８０７の受信Ｉ／Ｆで受け付け、通常の受信処理を行なうのと同様に動作させ、関連する輻輳制御や再送制御などの処理を行ない、ＴＣＰコネクション情報の更新を行なう。
【００８１】
この更新の様子を時系列に表わした図が図１１である。多くの時間を占める映像受信の区間のほとんどは、無更新区間となり、更新頻度が低いことが理解できる。
【００８２】
なお、本実施の形態において、ＴＯＥ部４０２が扱うＴＣＰコネクションの本数をわかりやすく１本として説明したが、上記説明動作を、複数のＴＣＰコネクションに対して適用可能であることは云うまでもない。
【００８３】
以上のように、本発明により、専用のＣＰＵ、外付けメモリが不要な低コストの高速受信処理用のＴＣＰ通信アダプタを用いることで、ＩＰネットワークを経由してＴＣＰによる広帯域映像データを受信して映像データを取得することが可能な低コストのＤＴＶを実現することが可能となる（図１２参照）。
【産業上の利用可能性】
【００８４】
本発明に係る通信アダプタおよび通信装置は、広帯域映像データを受信して映像出力するＤＴＶ端末として有用である。また、ＴＣＰを用いた高速受信装置等の用途にも応用が可能である。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の形態に係るネットワークシステムの構成の一例を示すブロック図である。
【図２】一般的なＤＴＶのハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施の形態に係るＤＴＶのハードウェア構成を示すブロック図である。
【図４】本発明の実施の形態に係る高速通信アダプタの機能構成を示すブロック図である。
【図５】本発明の実施の形態に係る高速通信アダプタにおけるＴＯＥ部の機能構成を示すブロック図である。
【図６】本発明の実施の形態に係るＤＴＶ上で動作するソフトウェアの機能構成を示すブロック図である。
【図７】本発明の実施の形態に係るＴＯＥ部用ドライバが生成するＴＣＰパケットのフォーマットの一例を示す図である。
【図８】本発明の実施の形態に係るＴＣＰパケット出力制御部が備える中断機能を説明するための図である。
【図９】本発明の実施の形態に係るＤＴＶにおける通信手順を高速通信アダプタ（ハード）とホストＣＰＵ（ソフト）で切り替える様子を示すイメージ図である。
【図１０】本発明の実施の形態に係るソフトウェアの機能構成におけるＴＯＥ部用ドライバとＴＣＰ処理部との間の接続動作の様子を示すイメージ図である。
【図１１】本発明の実施の形態に係る、上記図１０における接続動作の様子を時系列に示したイメージ図である。
【図１２】本発明の実施の形態に係る高速通信アダプタ３０１を備えた場合の効果を説明するための図である。
【図１３】従来のＤＴＶのハードウェア構成の一例を示すブロック図である。
【図１４】従来のＤＴＶにおいてソフトのみで通信手順を制御する様子を示す通信シーケンス図である。
【図１５】従来のＤＴＶにおいてハードのみで通信手順を制御する様子を示す通信シーケンス図である。
【符号の説明】
【００８６】
１０１    映像サーバ
１０２    ＩＰネットワーク
１０３    ＤＴＶ
２０１    メインメモリ
２０２    ホストＣＰＵ
２０３    デジタルＲＦ
２０４    デジタルＴＶチューナ
２０５    ＡＶデコーダ
２０６    バス
２０７    専用バス
３０１    高速通信アダプタ
４０１    汎用ＬＡＮ制御部
４０２    ＴＯＥ部
４０３    振り分け部
６０１    割り込み制御部
６０２    ＴＣＰ情報入出力部
６０３    ＴＣＰパケット出力制御部
６０４    ＣＰＵアクセス出力制御部
６０５    ＴＣＰパケット受信処理部
６０６    映像データ出力制御部
７０１    アプリケーション
７０２    プロトコル処理部
７０３    汎用ＬＡＮ制御部用ドライバ
７０４    ＴＯＥ部用ドライバ
７０５    デジタルＴＶチューナ用ドライバ
７０６    ＡＶデコーダ用ドライバ
７０７    ＴＣＰ処理部
７０８    ＩＦ処理部
７０９    更新条件通知部
７１０    Ｓｅｑ更新部
７１１    ＴＣＰ情報更新部
７１２    ＴＣＰ情報管理部
７１３    ＴＣＰ受信制御部
８００    ＴＣＰパケット
８０１    ＭＡＣヘッダ
８０２    ＩＰヘッダ
８０３    ＴＣＰヘッダ
８０４    ペイロードデータ（実際は含まず）
８０３０１    順序番号（Ｓｅｑ）
８０３０２    確認応答番号（Ａｃｋ）
８０３０３    受信ウィンドウサイズ（ＲＷｉｎ）
【図１】
2009088962.tif 000003
【図２】
2009088962.tif 000004
【図３】
2009088962.tif 000005
【図４】
2009088962.tif 000006
【図５】
2009088962.tif 000007
【図６】
2009088962.tif 000008
【図７】
2009088962.tif 000009
【図８】
2009088962.tif 000010
【図９】
2009088962.tif 000011
【図１０】
2009088962.tif 000012
【図１１】
2009088962.tif 000013
【図１２】
2009088962.tif 000014
【図１３】
2009088962.tif 000015
【図１４】
2009088962.tif 000016
【図１５】
2009088962.tif 000017