JP2004187010A - データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents
データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 Download PDFInfo
- Publication number
- JP2004187010A JP2004187010A JP2002351735A JP2002351735A JP2004187010A JP 2004187010 A JP2004187010 A JP 2004187010A JP 2002351735 A JP2002351735 A JP 2002351735A JP 2002351735 A JP2002351735 A JP 2002351735A JP 2004187010 A JP2004187010 A JP 2004187010A
- Authority
- JP
- Japan
- Prior art keywords
- data
- data packet
- output
- request signal
- packet
- 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.)
- Withdrawn
Links
- 238000004891 communication Methods 0.000 title claims abstract description 217
- 238000003672 processing method Methods 0.000 title claims description 10
- 238000012545 processing Methods 0.000 claims description 150
- 238000000034 method Methods 0.000 claims description 116
- 230000005540 biological transmission Effects 0.000 claims description 108
- 238000001514 detection method Methods 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 19
- 238000005259 measurement Methods 0.000 claims 1
- 239000000872 buffer Substances 0.000 abstract description 178
- 230000008569 process Effects 0.000 description 62
- 238000012546 transfer Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 8
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 7
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Landscapes
- Maintenance And Management Of Digital Transmission (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
【課題】バーストエラーが長期間発生した場合でも、データを途切れずに再生させること。
【解決手段】送信側通信装置のデータ処理装置102において、第1のバッファ203と第2のバッファ204を設け、第2のバッファ204には1度以上転送したデータパケットを保存しておく。通信コントローラ103が再送を断念したと判断されるならば第2のバッファ204からデータパケットを転送し、さもなければ第1のバッファ203からデータパケットを転送する。通信コントローラ103が再送を断念したかどうかは、送信側通信装置の通信コントローラ103からのデータ要求信号の時間間隔を測定し、その時間間隔が指定された値以上かどうかで判定する。
【選択図】 図2
【解決手段】送信側通信装置のデータ処理装置102において、第1のバッファ203と第2のバッファ204を設け、第2のバッファ204には1度以上転送したデータパケットを保存しておく。通信コントローラ103が再送を断念したと判断されるならば第2のバッファ204からデータパケットを転送し、さもなければ第1のバッファ203からデータパケットを転送する。通信コントローラ103が再送を断念したかどうかは、送信側通信装置の通信コントローラ103からのデータ要求信号の時間間隔を測定し、その時間間隔が指定された値以上かどうかで判定する。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、通信装置、データ伝送方式および通信システムにおける層構造での再送制御方法等に関し、特にバーストエラーが発生しうる伝送路上で有効な技術に関するものである。
【0002】
【従来の技術】
通信処理をOSI参照モデルに従うと、物理層/データリンク層/トランスポート層などの階層構造に分けられる。物理層は、実際にデータ伝送を行う通信媒体のことである。通信媒体の例としては、より対線、光ファイバー、無線、赤外線、電話線、電力線などがある。
【0003】
データリンク層は、通信媒体で直接接続された機器間で通信するための制御を行う。具体的には、データの識別やエラー検出、転送などを行う。データリンク層は、さらにMAC(Media Access Control−媒体アクセス制御)副層とLLC(Logical Link Control−論理リンク制御)副層に分かれる。MAC副層は、通信媒体の違いを吸収する役割を持ち、LLC副層は、論理的なインタフェースを提供する役割を持つ。MAC副層は、一般的に、物理層の特性に依存した仕様となっている。
【0004】
データリンクの例としては、Ethernet(R)、FDDI(FiberDistributed Data Interface)、ATM(Asynchronous Transfer Mode)、IEEE1394などがある。データリンク層は、通信コントローラとして全てをハードウェアで実現されている場合が多いが、一部ソフトウェアとの連動において実現されている場合もある。
【0005】
トランスポート層は、エンド−エンド間のデータ伝送の管理を行う。例えば、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるように保証する、などの役割を持つ。これは、エンド−エンド間のデータ伝送において、データが誤ったりまたは失われたり、伝送遅延時間のゆらぎが発生したり、データの到着順序が入れ替わることがあるためである。
【0006】
トランスポート層における、データ誤りの対処方法として、1.何もしない、2.ARQ(Automatic Repeat Request−自動再送要求)、3.FEC(Forward Error Correcting−順方向誤り訂正)等が代表的である。
【0007】
1.は、ネットワーク経路上でデータが誤ったり失われたりしても何もしない。1.の例としては、UDP(User Datagram Protocol)がある(例えば、非特許文献1参照)。UDPは、プロトコルが単純で遅延が少ないため、映像や音声など高速性が求められるアプリケーションに向く。
【0008】
2.のARQは、受信側からの応答確認によって再送制御を行うことで、ネットワーク経路上でデータが誤ったり失われたりしても、必要なデータを再度送信し、データ伝送を確実に行う方法である。送信側は、データをある単位に区切って順序番号を付け、また、誤りを検出できるようにCRC(Cyclic Redundancy Check)を付加する。2.の例としては、TCP(Transmission Control Protocol)がある(例えば、非特許文献1参照)。TCPは、データ伝送の信頼性が高く、LANトラフィックのような信頼性が要求されるアプリケーションに向く。
【0009】
3.のFECは、送信側からデータを送信するときに、冗長性を持たせることで、たとえ一部のデータが誤ったり失われたりしても、受信側で正しく受信された残りのデータから完全なデータを再現する方法である。3の例としては、UDP上に簡易的な信頼性を組み込んだRUDP(Reliable User Data Protocol)というプロトコルがある(例えば、非特許文献2参照)。FECは、送信側から一方向のデータ伝送であるため、逆方向のデータ伝送がなく、伝送遅延時間はほぼ一定になるという利点がある。そのため、電話など伝送遅延時間が一定であることが求められるアプリケーションに向く。
【0010】
実際の通信システムはもう少し複雑で、トランスポート層より低い層でARQやFECを行うことがある。例えば、無線LANの802.11では、MAC副層に相当するプロトコルが、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)と呼ばれるデータ伝送手順になっており、送信側がデータを送信すると、受信側はACK(positive Acknowledge−肯定確認応答)やNACK(Negative Acknowledgement−否定確認応答)を返し、ARQを行っている。
【0011】
また、電力線通信のHomePlugでは、たたみ込み符号やリード・ソロモン符号などを用いたFECを行っている。いずれにせよ、データリンク層以下を受け持つ通信コントローラが、物理層である伝送路の特性に応じて、ARQやFECを行っている。ARQやFECは、とりわけ伝送路の誤り率が悪いときに、実施されることが多い。伝送路の誤り率を改善して、信頼性のある伝送路を上位層に提供するためである。
【0012】
しかしながら、通信コントローラがARQやFECを行っても、バーストエラーなどの伝送路の誤りに対する耐性能力には限界がある。そのため、トランスポート層が、データリンク層とは独立して、再度ARQを行うことは意味がある。
【0013】
また、本特許に関連する先行特許文献として次のようなものがある。OSI参照モデルのレイヤ3からレイヤ2へ送られる情報に対してレイヤ2が確認形のデータ転送を行うデータ再送方法において、レイヤ2からレイヤ3に対してデータ転送の成功もしくは失敗を通知し、レイヤ3はレイヤ2に対して情報を再送する通信プロトコルを備えた再送方法がある(例えば、特開平10−136053号公報参照)。ここで、レイヤ2はMAC層(または通信コントローラ)、レイヤ3はトランスポート層に対応すると考えられる。
【0014】
【特許文献1】
特開平10−136053号公報
【0015】
【非特許文献1】
竹下隆史ほか著、「マスタリングTCP/IP 入門編 第2版」、オーム社出版、1998年、第5章「TCPとUDP」
【0016】
【非特許文献2】
Jonathan Davidson/James Peters著、シスコシステムズ監修、「VoIP 基本ガイド」、Cisco Press出版、2001年、p199−201「転送プロトコル」
【0017】
【発明が解決しようとする課題】
しかしながら、上述した従来技術においては下記の問題がある。データが誤ったり失われたりしても何もしない方法では、データが確実に届く保証がないため、信頼性に欠ける。ネットワーク経路上の誤り特性BER(Bit ErrorRate)が十分良い時には問題はないが、ネットワーク経路上ではランダムエラーやバーストエラーが発生すると考えられるため、誤り特性BERが悪くなると、映像や音声はノイズがのったり途切れたりすることになる。
【0018】
ARQを行う方法は、データ伝送の信頼性は高くなるが、再送に伴って伝送遅延時間の増大や伝送遅延時間のゆらぎが発生するため、映像や音声などのアプリケーションに適用しづらいという問題がある。また、確認応答のために、アプリケーションデータを伝送する方向とは逆方向のデータ伝送が発生する。つまり、逆方向のデータ伝送に伴って、伝送遅延時間が増大することになる。映像や音声などのアプリケーションでは、許容される伝送遅延時間が制限されており、伝送遅延時間の増大は問題になると考えられる。
【0019】
また、確認応答そのものが、ネットワーク経路上で失われたりすることもある。この場合、一定の時間だけ待っても確認応答が来なければ、データが喪失されたと判断して、もう一度同じデータを送信する、などの処理を行うが、タイムアウトまでの遅延時間が問題になることが考えられる。
【0020】
FECを行う方法は、受信側にデータが確実に届いたかどうかの保証はないが、受信側で多少のエラーならば回復できるため、ある程度の信頼性を付加するものと考えられる。しかし、FECを有効に機能させるためには、大きな冗長性を持たせなければならない。とりわけ、FECを十分に機能させるために、必要な帯域が元の帯域と比べて2倍から数倍となってしまうこともある。伝送路の帯域を必要以上に占有することになりかねず、伝送効率が悪くなる。したがって、映像のような帯域の広いアプリケーションに適用することは難しい。加えて、バーストエラーが発生した場合には、FECはほとんど効果がない。
【0021】
また、データリンク層としてARQやFECまたはその両方を行う通信コントローラは、伝送路の誤り率を改善して、信頼性のある伝送路を上位層に提供している。しかし、通信コントローラが行う再送の回数は上限が決められており、この回数だけ再送を行ってもなお受信エラーが発生した場合、通信コントローラは送信を断念する。この回数(最大再送リトライ回数)は、伝送路の特性などに基づいて通信コントローラが決めている。最大再送リトライ回数を超えるような長いバーストエラーが発生した場合、通信コントローラは送信を断念するため、データは受信側に届かないことになる。このような場合、トランスポート層で再度ARQを行うことはもちろん可能である。しかし、さきほど述べたように逆方向のデータ伝送遅延が発生して、全体として伝送遅延時間の増大につながる。アプリケーションによっては伝送遅延時間の増大は問題になる。可能ならば、一方向のデータ伝送のみで、対応することが望まれる。
【0022】
以上述べたように、映像や音声などのアプリケーションに求められるような伝送特性、すなわち、伝送遅延時間を短く、信頼性を確保して伝送することは、一般的に難しい。本発明が解決しようとする課題は、上記の課題であり、特にバーストエラーが発生しうるような伝送路上で有効である。
【0023】
また特開平10−136053号公報では、レイヤ2からレイヤ3に対して、データ送信の可否を通知する。従って、レイヤ2からレイヤ3に対して、データ送信の可否が通知されない場合には、適用することができない。また、たとえレイヤ2からレイヤ3に対してデータ送信の可否が通知されたとしても、レイヤ3が連続的にデータを伝送しているとき、送信に失敗したデータを特定する情報が明示的に与えられない限り、レイヤ3はどのデータを再送すべきなのかを知ることができない。
【0024】
この発明は上述の問題点を解決するためになされたもので、この発明の目的は、通信コントローラが再送を断念するような長いバーストエラーが発生しても、データを途切れなく再生させることが可能なデータ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体を提供することである。
【0025】
【課題を解決するための手段】
通信装置は、データ処理装置と通信コントローラとを含む。尚、データ処理装置は、装置で無く同等の構成手段を有するデータ処理手段であっても良い。データ処理装置は、通信コントローラからのデータ要求信号に従って、次に送信すべきデータを通信コントローラに転送するが、このデータ処理装置は、データを転送した後も、以前に転送したデータを指定された量だけ保存する記憶手段を備える。
【0026】
さらに、このデータ処理装置は、通信コントローラが再送を断念したことを判断する手段を備える。データ処理装置は、通信コントローラが再送を断念したと判断した時に、以前に転送したデータを保存するバッファからデータを再度転送する。したがって、送信側の通信装置は、通信コントローラが再送を断念したときでも、データ処理装置が以前に送信したデータと同じデータを再度送信することにより、受信側の通信装置でデータを途切れなく受信することができる。
【0027】
通信コントローラが再送を断念したかどうかを判断する手段であるが、2つの方法が考えられる。一つ目は、通信コントローラからのデータ要求信号の発生する時間間隔を測定する方法である。伝送路が正常な状態であれば、通信コントローラからのデータ要求信号はほぼ一定の時間間隔で発生する。伝送路に異常が発生すると、通信コントローラが再送を継続している間、データ要求信号は発生しなくなる。したがって、通信コントローラからのデータ要求信号の発生する時間間隔を測定し、指定された値と比較することによって、通信コントローラが再送を断念したかどうかを判断できる。
【0028】
二つ目は、通信コントローラから直接状態を取得して判断する方法である。通信コントローラから状態を取得して、通信コントローラが再送を断念したかどうかを判断できる。さらにこの場合、通信コントローラから破棄されたデータを特定する情報が明示的に与えられていなくても、データ処理装置は、時刻情報から破棄されたデータを推測することができる。
【0029】
データ処理装置は、破棄されたと推測されるデータより古いデータを、再送の対象外と判断して、それらを消去することで、効率よく再送できる。いずれの場合でも、受信側通信装置のデータ処理装置は、同じデータを2度以上受信することがあるため、同じデータを受信した時は、そのデータを破棄する処理が必要である。これは、送信側通信装置のデータ処理装置で、データパケットの先頭にデータパケットを識別するシーケンス番号を付加し、受信側通信装置のデータ処理装置でデータパケットのシーケンス番号を監視することで、実現する。
【0030】
その結果、通信コントローラが再送を断念するような長いバーストエラーが発生しても、受信側通信装置はデータを途切れなく再生することができる。
【0031】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態を説明する。ここでは、詳細な処理手順をソフトウェアの形態で説明しているが、これはハードウェアでも実現可能である。
【0032】
又、先に説明した従来技術等で層構造との関連において説明している。実施例に先の説明と関連させて、上位層・下位層と事例的に記述しているが、データ処理装置、通信コントローラ等は、必ずしも層構造になっている必要性は無い。
【0033】
<第1の実施の形態>
第1の実施の形態として、通信コントローラからエラー信号が通知されない場合の実施例を述べる。図1に、本発明の第1の実施の形態と後述の第2の実施の形態に係るデータ伝送システムの構成を示す。システムとしては、アイソクロナスデータ生成装置100、送信側通信装置装置101、伝送路110、アイソクロナスデータ再生装置120、受信側通信装置121から構成される。
【0034】
送信側通信装置101は、データ処理装置102と、通信コントローラ103、物理層104とを含む。受信側通信装置121は、データ処理装置122と、通信コントローラ123、物理層124とを含む。
【0035】
アイソクロナスデータ生成装置100は、映像や音声など同期型のデータの発生元となる装置である。例えばDVDプレーヤーやチューナーなどに相当する。
【0036】
アイソクロナスデータ再生装置120は、映像や音声などの同期側データを表示または再生する装置である。例えば、TVやスピーカーなどに相当する。アイソクロナス(Isochronous)データとは、単位時間あたり一定量発生するデータのことである。
【0037】
アイソクロナスデータ生成装置100で生成されたアイソクロナスデータは、送信側通信装置101のデータ処理装置102と通信コントローラ103と物理層104を経由して伝送路110上に送出される。伝送路110上を流れるアイソクロナスデータは、受信側通信装置121の物理層124と通信コントローラ123とデータ処理装置122を経由して、アイソクロナスデータ再生装置120で再生される。
【0038】
データ処理装置は、エンド−エンド間のデータ伝送路の管理を行う。具体的には、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるよう保証する、などを行う。
【0039】
通信コントローラは、データリンク層の役割を提供する。すなわち、MAC副層においては、通信媒体の違いを吸収し、LLC副層においては論理的なインタフェースを提供する。さらに、伝送路の誤り率を改善するために、MACレベルのARQを行う。具体的には、送信側の通信コントローラが受信側の通信コントローラの確認応答を受けて、再送制御を行う。
【0040】
物理層は、データの電気信号を伝送路に合わせた形に変換する。具体的には、変復調、デジタル−アナログ変換、信号増幅などを行う。
【0041】
送信側通信装置101において、データ処理装置102から通信コントローラ103へデータを転送するときには、一方的にデータを転送し続けることはなく、フローコントロールが行われるのが一般的である。すなわち、通信コントローラ103が送信を完了するまで、または、通信コントローラ103のバッファに空きができるまで、データ転送を中断する仕組みである。具体的には、通信コントローラ103がデータ要求信号、ビジー信号、割り込み信号など、これらのいずれかの信号を用いてデータ処理装置102へ通知する。
【0042】
データ要求信号で通知する場合は、通信コントローラ103は送信完了またはバッファに空きが出るとデータ要求信号を出力する。データ処理装置は、データ要求信号を検出すると次のデータを転送する。
【0043】
ビジー信号で通知する場合は、通信コントローラ103は送信中またはバッファが満杯である場合にビジー信号を出力する。データ処理装置は、ビジー信号を検出している間はデータを転送せず、ビジー信号が解除されると次のデータを転送する。
【0044】
割り込み信号で通知する場合は、通信コントローラ103が送信を完了するまたはバッファに空きが出ると割り込みをかける。データ処理装置は、割り込みを検出すると割り込みハンドラが起動され通信コントローラから割り込み要因をリードし、送信完了割り込みならば次のデータを転送する。
【0045】
これらの信号は名称こそ異なるが、いずれも通信コントローラからデータ処理装置に対してデータを要求するという点で同じ機能を果たす。本明細書では、これらの信号をまとめてデータ要求信号とする。
【0046】
図2に、本発明の実施の形態に係る送信側通信装置のデータ処理装置102の構成を示す。データ処理装置102は、アイソクロナスI/F部201と、データパケット生成部202と、第1のバッファ203と、第2のバッファ204とを含む記憶部205と、データパケット出力部206と、レジスタ207と、タイマー208と、計時部209と比較部210とデータ要求信号検出部212とを含む判定部211とを含む。
【0047】
データ処理装置102は、アイソクロナスI/F部201を介して、アイソクロナスデータ生成装置100からアイソクロナスデータを入力する。データ処理装置102は、アイソクロナスデータを単位時間あたり一定量入力し続ける。
【0048】
データパケット生成部202で、入力されたアイソクロナスデータをアセンブルまたはフラグメンテーションして、適当な長さのデータパケットを生成する。生成されたデータパケットは第1のバッファ203にまず蓄えられる。第2のバッファ204には、一度以上通信コントローラ103に転送したデータパケットを指定された量だけ保存しておく。
【0049】
データパケット出力部206は、通信コントローラ103からデータ要求信号を検出すると、第1のバッファ203もしくは第2のバッファ204からデータパケットを転送する。どちらのバッファからデータパケットを転送するかは、判定部211にて決定される。
【0050】
計時部209は、データ要求信号を検出すると、その時の時刻(タイマー208の値)を保存し、前回のデータ要求信号が発生した時刻との差(経過時間)を計算する。この経過時間が二つのデータ要求信号間の時間間隔となる。
【0051】
比較部210において、その時間間隔がレジスタ207に保存されている所定の値と比較してそれと等しいか、あるいはより大きいかが判定される。実施例の所定の値は、予め決められた固定値、あるいはそれまでに検出されたデータ要求信号の時間間隔より統計的に導き出せる値等である。
【0052】
上記比較は、時間比較であるが、単位時間の計数を比較する等、経過を比較する同一概念の他の手法で実現しても良い。又、所定の値は、経験的、実験的に、あるいは設計的要素に定める時間・計数等で表した基準値である。
【0053】
判定部211は、時間間隔が、レジスタ207に保存されている指定された値より大きければ通信コントローラ103が再送を断念したと判断して、第2のバッファ204からデータパケットを転送するようにデータパケット出力部206へ指示を出す。
【0054】
第1のバッファ203からデータパケットを転送するとき、転送されたデータパケットは第2のバッファ204へ移される。第2のバッファ204からデータパケットを転送するとき、転送されたデータパケットは第2のバッファ204に留まる。第1のバッファおよび第2のバッファは指定された量のデータパケットしか保存できないため、バッファが満杯になった場合、第2のバッファの最も古いデータパケットから順に捨てられる。
【0055】
一度、第2のバッファ204からデータパケットを転送し始めると、第2のバッファ204に蓄えられているデータパケットを転送し続ける。第2のバッファ204からデータパケットを転送している間は、データ要求信号の時間間隔が指定された値よりも小さくても、第2のバッファ204からデータパケットを転送する。これは、第2のバッファ204にあるすべてのデータパケットを転送するまで継続される。第2のバッファ204からデータパケットを転送している間に、再度データ要求信号の時間間隔が指定された値よりも大きいことを検出すると、第2のバッファ204の一番古いデータパケットからもう一度転送し始める。第2のバッファ204にあるすべてのデータパケットを転送し終えると、その後は、データ要求信号の時間間隔に応じて第1のバッファ203または第2のバッファ204からデータパケットを転送する。
【0056】
ここで、第2のバッファのサイズは、通信コントローラ103の持つバッファのサイズよりも大きくなければならない。第2のバッファのサイズが、通信コントローラ103の持つバッファのサイズよりも小さければ、通信コントローラ103が再送を断念したフレームの一部を失ってしまい、アイソクロナスデータを途切れなく再生することができなくなるからである。第2のバッファのサイズは、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。例えば、第2のバッファのサイズをレジスタ207によって書き換えられるようにする。第2のバッファのサイズを0に設定すると、本発明の効果を無効にすることができる。
【0057】
また、第1のバッファのサイズも、アプリケーションに依存するため、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。アプリケーションによって、必要とされる伝送帯域や最大許容遅延が異なるためである。第1のバッファのサイズを調整することで、アプリケーションの種類に応じた伝送が可能となる。例えば、第1のバッファのサイズを小さくすると、より早くバッファが満杯になり、第2のバッファの最も古いデータパケットから順に捨てられるため、必然的に再送回数が減ることになる。その結果、不必要に何度も再送されるといったことがなくなる。伝送帯域が狭く、最大許容遅延が小さいアプリケーションに対しては、第1のバッファのサイズを小さく設定すればよい。逆に、伝送帯域が広く、最大許容遅延が大きいアプリケーションに対しては、第1のバッファのサイズを大きく設定すればよい。
【0058】
図3に、データ要求信号の発生する様子を示す。
(1)伝送路上にバーストエラーが発生せず、通信コントローラ103が順調に送信している間は、データ要求信号はほぼ一定の間隔で出力される。
【0059】
(2)しかし、バーストエラーが発生すると、通信コントローラ103が再送制御を行い、しばらくの間データ要求信号が出力されなくなる。
【0060】
(3)(4)(5)一定時間が経過してなおバーストエラーが続いた場合、通信コントローラ103が再送を断念し、次の新しいデータを要求するため、データ要求信号を出力する。通信コントローラ103が持つバッファの分だけ、データ要求信号を出力すると考えられる。この間、すなわち、通信コントローラ103が再送を継続している間、データ要求信号の発生が一時的に止まる。
【0061】
従って、データ要求信号が発生する時間間隔を測定し、その時間間隔がある値以上になれば、通信コントローラ103が再送を断念したと、判断することができる。この値は、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計する。例えば、この値をレジスタ207によって書き換えられるようにする。
【0062】
図4に、送信側通信装置のデータ処理装置102と受信側通信装置のデータ処理装置122のバッファ占有率について説明する。なお、送信側通信装置のデータ処理装置102のバッファは第1のバッファのことである。
【0063】
(I)はバーストエラーが発生していない時のバッファの状態である。
送信側通信装置のデータ処理装置102のバッファにアイソクロナスデータが単位時間あたり一定量の割合で入力される。通信コントローラ103が順調にデータレームを送信している間は、送信側通信装置のデータ処理装置102のバッファにはほとんどデータパケットがたまらない。これは、伝送路の帯域の方がアイソクロナスデータの帯域よりも広いためである。伝送路の帯域は、伝送エラーによるリカバリ(FECやARQ)を考慮して、アイソクロナスデータの帯域よりも広くとるのが一般的である。受信側通信装置のデータ処理装置122のバッファからはアイソクロナスデータが単位時間あたり一定量の割合で出力される。受信側通信装置のデータ処理装置122は、いったん再生を開始し始めると、再生を開始し始めた時点のバッファ占有率のままほぼ一定に推移する。
【0064】
(II)はバーストエラーが発生した時のバッファの状態である。
バーストエラーが発生して、伝送路上にデータが流れなくなると、送信側通信装置のデータ処理装置102のバッファにデータパケットがたまってくる。バッファから出力されないにもかかわらず、アイソクロナスデータが入力され続けるからである。受信側通信装置のデータ処理装置122のバッファは逆に空になっていく。バッファに入力されないにもかかわらず、アイソクロナスデータが出力され続けるからである。送信側通信装置のデータ処理装置102のバッファが満杯になるか、受信側通信装置のデータ処理装置122のバッファが空にならない限り、アイソクロナスデータは途切れずに再生される。
【0065】
以上のように、バーストエラーが発生してもデータ処理装置のバッファの容量が許す限りの時間ならば、途切れずに再生することができる。従って、本来ならば、バーストエラーに耐えられる時間は、データ処理装置のバッファの容量によって決まる、と言ってよい。
【0066】
しかしながら、通信コントローラが再送を断念するまでの時間が、データ処理装置のバッファの容量が許す限りの時間より短い場合を考える。たとえ、データ処理装置に十分な容量のバッファがあったとしても、通信コントローラが早々に再送を断念すると、結果として、アイソクロナスデータの再生が途切れることになる。アイソクロナスデータを途切れずに再生させるためには、送信側通信装置のデータ処理装置102に図2のような工夫をもうける。
【0067】
すなわち、図3で示した(3)(4)(5)のタイミングにおいて、送信側通信装置のデータ処理装置102は通信コントローラ103が再送を断念したと判断して、第2のバッファ204から以前に転送したデータパケットと同じデータパケットを再度転送する。それ以外の場合は、第1のバッファ203から新しいデータパケットを転送する。このようにすると、アイソクロナスデータを途切れずに再生させることができる。
【0068】
本発明の目的は、通信コントローラが定めている最大再送リトライ回数、すなわち、再送を断念するまでの時間を超えて、バーストエラーが発生した場合でも、データ処理装置に工夫をもうけることによって、アイソクロナスデータを途切れずに再生させることができる、簡便な手法を提供することである。
【0069】
以下、詳細な処理手順をソフトウェアの形態で説明する。
図5に、第1のバッファと第2のバッファの実施例を示す。
【0070】
(I)は、第1のバッファと第2のバッファを異なるアドレス空間で実現した例である。この例では、第1のバッファから第2のバッファへパケットの移動(コピー)が必要である。データの移動(コピー)を行うと、バスが一定時間占有されることになる。可能ならばデータの移動(コピー)を不要にすることが望ましい。
【0071】
(II)は、第1のバッファと第2のバッファを同一のアドレス空間で実現した例である。この例では、データの移動(コピー)が不要である。これは一般的なリングバッファ方式のFIFOを拡張することで実現可能である。
【0072】
以下の事例では、記憶部をリングバッファ方式のFIFO(first infirst outのメモリ)で構成した例を開示しているが、記憶部は、FIFOあるいはリングバッファに固定したメモリ処理に限定せずランダムメモリであっても良い。
【0073】
図6に、一般的なリングバッファ方式のFIFOを示す。リングバッファは配列で実現され、読み出しポインタ(rd)と、書き込みポインタ(wr)を持つ。バッファに書き込む時は、バッファ内の書き込みポインタ(wr)の指す場所へデータパケットを書き込み、書き込みポインタ(wr)をインクリメントする。バッファが満杯の状態で、バッファに書き込むと、どのように処理すべきか決まっていないが、一つの例としては、一番古いデータパケットを捨てて、新しいデータパケットを書き込むようにする。バッファから読み出す時は、バッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出し、読み出しポインタ(rd)をインクリメントする。バッファが空の状態で、バッファから読み出すと、どのように処理すべきか決まっていないが、一つの例としては、無効なデータパケットを返す。
【0074】
読み出しポインタ(rd)と書き込みポインタ(wr)は、どちらも、インクリメントした結果の値が配列の長さ(len)に等しくなれば0に戻る。以後、繰り返し記載しないが、ポインタをインクリメントする時は必ず0に戻すような処理を追加する。
【0075】
図7に、拡張したリングバッファ方式のFIFOを示す。リングバッファは同じく配列で実現され、読み出しポインタ(rd)と、読み出しポインタ2(rd2)と、書き込みポインタ(wr)を持つ。読み出しポインタ(rd)と読み出しポインタ2(rd2)との間の領域が、第2のバッファである。配列内のそれ以外の領域が第1のバッファである。このように、第1のバッファと第2のバッファはまとめて、同一アドレス空間上に存在できる。
【0076】
バッファに書き込む時は、バッファ内の書き込みポインタ(wr)の指す場所へデータパケットを書き込む。バッファから読み出す時は2通りある。第1のバッファから読み出す時は、バッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出す。第2のバッファから読み出す時は、バッファ内の読み出しポインタ(rd2)の指す場所からデータパケットを読み出す。
【0077】
以下、拡張したリングバッファ方式のFIFOを使って、本発明の実施例を詳しく説明する。図8に、以降の処理手順の説明に出てくる変数名の説明と初期値を示す。各変数は、あらかじめ図8に示されている初期値に初期化されているものとする。
【0078】
図9に、送信側通信装置のデータ処理装置における、下位層(通信コントローラ)とのインタフェース処理手順を示す。下位層(通信コントローラ)からデータ要求信号を検出すると、S101に処理が移る。S102にて、判断ルーチンが実行される。判断ルーチンでは、下位層(通信コントローラ)が再送を断念したかどうかが判定され、再送を断念した場合にはtrueが、さもなければfalseが返る。
【0079】
S103にて、拡張したリングバッファ方式のFIFOから読み出しが実行される。S103の引数として、S102の判断ルーチンの返値を渡す。S103では、引数を手がかりに、第1のバッファから読み出すか、第2のバッファから読み出すかを決定する。いずれか適切なバッファから読み出しされ、データパケットを返す。
【0080】
S104で、S103の返値のデータパケットが無効であるかどうかチェックし、データパケットが無効ならば何もせずにS106で終了する。データパケットが有効ならば、S105にてデータパケットを下位層(通信コントローラ)に転送する。その後、S106で終了する。
【0081】
図10に、第1の実施の形態に係る判断ルーチンの処理手順を示す。S201で判断ルーチンを開始する。S202で現在時刻を取得して一時変数currentに保存する。現在時刻はタイマー206から取得できる。なお、現在時刻は0以上の値で表されるものとする。
【0082】
S203で返値retにfalseを代入する。S204でこの判断ルーチンが初回呼び出しかどうかを判定する。初回呼び出しかどうかは、last_timerが負であるかどうかで判定できる(なぜなら、初回呼び出し時のみlast_timerは初期値の−1がセットされており、それ以降はlast_timerには0以上の値が入るため。)。
【0083】
初回呼び出しならばS207に移り、さもなければS205に移る。S205で、前回にこの判断ルーチンが呼ばれた時刻と現在時刻との差current−last_timerを計算し、それが指定された値(period)以上かどうかを判定する。指定された値以上ならばS206に移り、さもなければS207に移る。
【0084】
S206で返値retにtrueを代入する。S207で先に取得した現在時刻(一時変数currentに格納されている)を変数last_timerに保存する。S208で終了し、返値retを返す。
【0085】
図11に、拡張したリングバッファ方式のFIFOから読み出しの処理手順を示す。S401で処理が開始される。この時、引数にtrueまたはfalseが与えられる。
【0086】
S402で返値pktにnullを代入する。nullとは無効なデータパケットのことである。S403で引数がtrueかどうを判定し、trueならばS404へ移り、さもなければS405へ移る。S404で後述する処理Aを実行する。
【0087】
S405で第2のバッファから読み出し中であるかどうかを判定し、第2のバッファから読み出し中であるならばS406へ移り、さもなければS407へ移る。第2のバッファから読み出し中であるかどうかは、読み出しポインタ3(rd3)が0以上かどうかで判定できる。
【0088】
S406で後述する処理Bを実行する。S407で後述する処理Cを実行する。S404の処理A、S406の処理B、S407の処理Cが完了すると、S408で拡張したリングバッファ方式のFIFOから読み出しを終了し、返り値pktを返す。
【0089】
以下、図12を用いて処理Aの手順について説明する。S421で第2のバッファが空かどうか判定し、第2のバッファが空ならばS422へ移り、さもなければS423へ移る。第2のバッファが空かどうかは、読み出しポインタ2(rd2)が読み出しポインタ(rd)と等しいかどうかで判定できる。S422で後述する処理Cを実行する。
【0090】
S423で読み出しポインタ3(rd3)に読み出しポインタ2(rd2)を代入する。なお、読み出しポインタ2(rd2)は常に0以上である。
【0091】
S424で後述する処理Bを実行する。S424の処理B、S422の処理Cが完了すると処理Aは終了する。
【0092】
以下、図13を用いて処理Bの手順について説明する。なお、処理Bは第2のバッファから読み出しを行う。S441でバッファ内の読み出しポインタ3(rd3)の指す場所からデータパケットを読み出し、pktに代入する。S442で読み出しポインタ3(rd3)をインクリメントする。
【0093】
S443で第2のバッファからデータパケットをすべて読み出したかどうかを判定し、すべて読み出したならばS444に移り、さもなければ処理Bを終了する。第2のバッファからデータパケットをすべて読み出したかどうかは、読み出しポインタ3(rd3)が読み出しポインタ(rd)に等しくなったかどうかで判定できる。
【0094】
S444で読み出しポインタ3(rd3)に−1を代入する。その後、処理Bを終了する。
【0095】
以下、図14を用いて処理Cの手順について説明する。なお、処理Cは第1のバッファから読み出しを行う。
【0096】
S461で第1のバッファが空かどうか判定し、空ならば処理Cを終了し、さもなければS462に移る。第1のバッファが空かどうかは、emptyを見ることで判定できる。
【0097】
S462でバッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出し、pktに代入する。S463で読み出しポインタ(rd)をインクリメントする。
【0098】
S464で第2のバッファにデータパケットがたまっているかどうかを判定し、データパケットがたまっていればS465へ移り、さもなければS466へ移る。第2のバッファにデータパケットがたまっているというのは、第2のバッファに指定された量(len2)のデータパケットがある、ということである。第2のバッファにデータパケットがたまっているかどうかは、extentionが0であるかどうかで判定できる。
【0099】
S465で読み出しポインタ2(rd2)をインクリメントする。S466でextentionを1減らす。S467でfullにfalseを代入する。
【0100】
S468で第1のバッファが空になったかどうかを判定し、空になったらばS469に移り、さもなければ処理Cを終了する。第1のバッファが空になったかどうかは、読み出しポインタ(rd)が書き込みポインタ(wr)と等しくなったかどうかで判定できる。
【0101】
S469でemptyにtrueを代入する。その後、処理Cを終了する。
図15に、送信側通信装置のデータ処理装置における、上位層(アイソクロナスデータ生成装置)とのインタフェース処理手順を示す。上位層(アイソクロナスデータ生成装置)からアイソクロナスデータが入力され、1データパケット(pkt)が生成された時点で、S501に処理が移る。
【0102】
S501では引数としてデータパケット(pkt)が与えられる。S502でバッファが満杯であるかどうかを判定し、満杯ならばS503に移り、さもなければS504に移る。バッファが満杯であるかどうかはfullを見て判定できる。
【0103】
S503でバッファ内の最も古いデータパケットを1つ捨てる。具体的には読み出しポインタ(rd)と読み出しポインタ2(rd2)をそれぞれインクリメントする。S504でバッファ内の書き込みポインタ(wr)の指す場所にデータパケットを書き込む。S505で書き込みポインタ(wr)をインクリメントする。S506でemptyにfalseを代入する。
【0104】
S507でバッファが満杯になったかどうかを判定し、満杯になったならばS508に移り、さもなければS509に移る。バッファが満杯になったかどうかは書き込みポインタ(wr)が読み出しポインタ2(rd2)と等しくなったかどうかで判定できる。
【0105】
S508でfullにtrueを代入する。S509で終了する。
図16に本発明が想定している通信コントローラの送信ブロックの実施例を示す。通信コントローラの役割は、データパケットを通信フレーム化してデータフレームを送信することを伝送媒体の特性に応じて制御を行うものであるが、ここでは再送機能を有するものとする。
【0106】
再送機能(ARQ)にはいくつかの方式があるが、中でも誤ったデータフレームだけ再送するSR−ARQ(Selective Repeat ARQ)と呼ばれるタイプの方式が最も効率がよい。ここではSR−ARQタイプの再送方式を実施する例を示す。
【0107】
通信コントローラ103は、データパケット入力部301、内部メモリ302、内部メモリ管理部303、再送制御部304、物理層I/F305、データフレーム生成部306、データ要求信号出力部307、エラー信号出力部308、データフレーム送信部309と、から構成される。SR−ARQタイプの再送方式では、FIFOでは実現できないため、任意の場所にアクセスできる内部メモリが必要である。そのため、内部メモリに書き込みする位置、読み出しする位置を決定する制御部が必要である。
【0108】
内部メモリ管理部303は、内部メモリの状態を管理し、内部メモリに空きがあれば、データ要求信号出力部307を通してデータ要求信号を出力し、上位層(データ処理装置)にデータを受け付ける準備ができていることを通知する。
【0109】
上位層(データ処理装置)はデータ要求信号を検出すると、次に送信すべきデータパケットを通信コントローラに転送する。通信コントローラは、データパケット入力部301を通じて受け取ったデータパケットを、データフレーム化していったん内部メモリ302に書き込む。内部メモリ302に書き込む位置は、内部メモリ管理部303によって決定される。
【0110】
通信コントローラは、物理層I/F305を通じて物理層への制御あるいは状態センスを行い、送信タイミングを待って、内部メモリに保持されているデータフレームを物理層へ転送する。
【0111】
物理層は伝送媒体を通じてデータを送信する。その後、物理層は受信側通信装置からACKまたはNACKを受信する。
【0112】
再送制御部304は、物理層I/F305を通じてACKまたはNACKを受け取り、どのデータフレームが届き、どのデータフレームが届かなかったのかを判定する。受信側通信装置からACKまたはNACKを受信しなかった場合、一定時間待った後タイムアウトとする。タイムアウトが発生するとNACKと同等の処理を行うのが一般的である。届いたデータフレームについては、内部メモリ302から破棄される。届かなかったデータフレームは再送の対象となる。
【0113】
再送制御部304は、ACKまたはNACKを受け取り、内部メモリ管理部303に対して、再送の対象となるデータフレームを通知する。内部メモリ管理部303は、内部メモリの状態と、再送制御部304からの情報をもとに、読み出し位置を決定する。再送制御については、最大再送リトライ回数が設けられているのが一般的である。
【0114】
最大再送リトライ回数分繰り返し再送して、なおNACKまたはタイムアウトが発生した場合、内部メモリに留まっているデータフレームを破棄し、上位層(データ処理装置)に対して新しいデータを要求する。この時、通信コントローラは、エラー信号を出力し、最大再送リトライ回数オーバーによるデータフレーム破棄が発生したことを、上位層(データ処理装置)に明示的に伝達する手段を持ってもよい。データフレーム破棄ある場合の処理は、第2の実施の形態で述べる。
【0115】
実際の通信コントローラは、ここで説明した機能以外にも受信ブロック、ビーコンの送受信やホストインタフェースなどさまざまな機能があるが、本発明とは関連性が低いため、これ以上の説明はしない。
【0116】
以上で、送信側通信装置のデータ処理装置の上位層(アイソクロナスデータ生成装置)および下位層(通信コントローラ)とのインタフェース処理手順が示された。このようにすると、図3における(3)(4)(5)のタイミングで、第2のバッファから以前に転送したデータパケットと同じデータパケットを再度転送し、それ以外の場合は、第1のバッファから新しいデータパケットを転送することができる。従って、通信コントローラが早々に再送を断念しても、データ処理装置のバッファが許す限りアイソクロナスデータを途切れずに再生させることができる。
【0117】
なお、受信側通信装置のデータ処理装置について補足説明する。受信側通信装置のデータ処理装置では、同じデータパケットを複数回受信することがあるため、同じデータパケットを受信した場合は破棄する手順が必要である。
【0118】
また、通信コントローラがデータの順序性を保証していない場合は、受信側データ処理装置でデータを順に並べ替える手順が必要となる。これらは、送信側通信装置のデータ処理装置で、データパケットのヘッダ部にシーケンス番号を付けることで解決される。シーケンス番号はデータパケット毎に1ずつインクリメントされながら付加される。
【0119】
従って、受信側通信装置のデータ処理装置でシーケンス番号を見ることで、以前に受信したデータパケットと同じデータパケットであるかどうか、また、データパケットの正しい順序がわかる。これらは従来技術で実現されており、ここではこれ以上の説明はしない。
【0120】
以上説明したように第1の実施の形態における送信側通信装置101のデータ処理装置102では、通信コントローラ103から出力されてくるデータ要求信号が検出されてからの経過時間が、指定された値period以上の場合に、第2のバッファ204に記憶されている以前に出力されたデータパケットが通信コントローラ103に再度転送される。このため、通信コントローラ103で再送を断念したデータパケットであっても、データ処理装置102でリカバリできる。その結果、伝送路110の通信状態が悪く、バーストエラーが発生する場合であっても、受信側通信装置121に連続するデータパケットを送信することができ、アイソクロナスデータ再生装置120で、連続するデータを途切れることなく再生することができる。
【0121】
また、第2のバッファには、通信コントローラ103に1度でも転送されたデータパケットが予め定められた数(len2)だけ記憶するようにしたので、予め定められた数だけ前に出力されたデータパケットを再度転送することができる。
【0122】
さらに、データ要求信号が検出されてからの経過時間が比較される、指定された値periodを、通信コントローラ103が再送を継続してもなお送信できず再送を断念したと判断することができる期間としたので、通信コントローラ103からデータ要求信号以外の信号を受信することなく、通信コントローラ103で送信を失敗したか成功したかの判定をすることができる。
【0123】
さらに、データ要求信号を検出してからの経過時間が、それまでに受信されたデータ要求信号の受信時刻に基づき定まる時間間隔、すなわち、直前に算出されたデータ要求信号の時間間隔、または、これまでに算出されたデータ要求信号の時間間隔の平均と比較するようにしたので、データ要求信号が検出される時間間隔の変化から、通信コントローラ103で送信を失敗したことを判定することができる。
【0124】
<第2の実施の形態>
第2の実施の形態として、通信コントローラからエラー信号が通知される場合の実施例を述べる。ここでエラー信号とは、通信コントローラがその再送処理において、最大再送リトライ回数を超えてもなお正常に送信できず、通信コントローラがデータフレームを破棄する時に出力される信号である。
【0125】
エラー信号には、データ処理装置にとって、破棄されたデータパケットを特定できる情報は含まれていないものとする。しかし、データ処理装置に工夫を設けることによって、エラー信号の発生した時刻を見て、その時刻から破棄されたデータパケットを推定し、それ以降のデータパケットのみを再送することができる。
【0126】
時刻から破棄されたデータパケットを推定する方法についてであるが、まずデータ処理装置において、通信コントローラへ転送したパケットの時刻を、データパケットと関連付けて保存しておく。
【0127】
通信コントローラへ転送されたデータパケットは、通信コントローラにおいて最大再送リトライ回数に達するまで再送が継続される。通信コントローラが再送を継続する時間はほぼ一定であるとみなせる。この再送継続時間は、あらかじめデータ処理装置に設定されているものとする。
【0128】
データ処理装置は、エラー信号を検出すると、それが発生した時刻から再送継続時間を減ずる。この値と、通信コントローラへデータパケットを転送した時刻を比較することにより、破棄されたデータパケットを推定する。
【0129】
図17に、エラー信号がある場合のデータ処理装置の構成図を示す。アイソクロナスI/F部401、データパケット生成部402、第1のバッファ403、第2のバッファ404、データパケット出力部407、レジスタ408と、タイマー409については、図2の同名ブロックと同じであるため再度説明しない。記憶部406は、第1のバッファと第2のバッファの他に、転送時刻記憶部405を持つ。
【0130】
転送時刻記憶部405には、データパケット出力部407が通信コントローラ103へデータパケットを転送した時の時刻を保存する。転送時刻記憶部405は、時刻を第2のバッファ404に蓄えられるデータパケットと対応付けて保存する。同じデータパケットを複数回転送する場合は、最後に転送した時刻だけを保存する。
【0131】
決定部412は、破棄パケット推定部410と、再送対象外パケット消去部411と、エラー信号検出部413とを含む。
【0132】
破棄パケット推定部410は、エラー信号が発生した時刻を保存し、その時刻から、あらかじめレジスタ408に設定されている再送継続時間を減算し、破棄されたと推定されるデータパケットを推定する。
【0133】
再送対象外データパケット消去部411は、第2のバッファ404に蓄えられているデータパケットのうち、破棄パケット推定部410で破棄されたと推定されたデータパケットより古いデータパケットを消去する。
【0134】
決定部412は、データ要求信号に従い第1のバッファまたは第2のバッファのどちらからデータパケットを転送するかの決定をする。
【0135】
以下、エラー信号がある場合の詳細な処理手順をソフトウェアの形態で説明する。
【0136】
基本的には、第1の実施例で述べた処理手順をそのまま使用できる。さらに、エラー信号がある場合には、エラー信号が発生した時刻を取得し、破棄されたデータパケットを推定し、第2のバッファに蓄えられているデータパケットの中から、破棄されたと推定されるデータパケットより古いデータパケットを再送の対象外として削除する手順を追加する。
【0137】
図18に、エラー信号を検出した時の処理で使用される、変数名の説明と初期値を示す。各変数は、あらかじめ図18に示されている初期値に初期化されているものとする。
【0138】
図18の変数retrytimeが再送継続時間である。この値は、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。レジスタ408に記憶される。
【0139】
図19に、エラー信号を検出した時の処理を示す。エラー信号を検出するとS601に処理が移る。S602で現在時刻を取得する(current)。現在時刻はタイマー409から取得する。
【0140】
S603で破棄されたデータパケットを推定する。正確には、破棄されたと推測されるデータパケットを転送した時刻を計算する。これは現在時刻から決められた再送期間を減ずることで得られる(losttime←current−retrytime)。
【0141】
S604で第2のバッファが空かどうかを判定し、第2のバッファが空ならばS608で処理を終了する。さもなければS605に移る。
【0142】
S605で第2のバッファの先頭データパケットが再送の対象から外せるかどうかを判定する。具体的には、第2のバッファの先頭データパケットを最後に転送した時刻(sendout[rd2])が、S603で求めた時刻(losttime)より古いかどうかを比較する。古ければ再送の対象から外せると判定する。S605で第2のバッファの先頭データパケットが再送の対象から外せると判定されれば、S606に移る。さもなければS608にて処理を終了する。
【0143】
S606で読み出しポインタ2(rd2)をインクリメントする。これは、第2のバッファの先頭データパケットを1つ削除することを意味する。S607でextentionを1減らす。再びS604に戻り、第2のバッファが空でない限り、以上の手順を繰り返す。
【0144】
図19の処理手順により、エラー信号があった場合に、その時刻から破棄されたデータパケットを推定し、それ以降のデータパケットのみを再送することができる。
【0145】
図20に、第2の実施の形態に係る判断ルーチンの処理手順を示す。これは、図9におけるS102の処理である。S301で判断ルーチンを開始する。
【0146】
S302で通信コントローラから再送状態を取得する。これは、通信コントローラからの特定の信号(たとえば、図16のエラー信号に相当するようなもの)をリードする、などの方法で取得する。
【0147】
S303で通信コントローラが送信を失敗したかどうかを判断し、送信を失敗したと判断されればS304に移り、さもなければS305に移る。S304で返値retにtrueを代入する。S305で返値retにfalseを代入する。S306で終了し、返値retを返す。
【0148】
以上説明したように、第2の実施の形態における送信側通信装置101のデータ処理装置102は、エラー信号の検出時刻に基づき、第2のバッファに記憶されている、以前に出力したデータパケットの中から、再度転送すべきデータパケットを決定して転送する。このため、通信コントローラ103で送信されなかったフレームに対応するデータパケットを再度転送することができる。このため、伝送路110にバーストエラーが発生して、通信コントローラ103で送信できないフレームが発生したとしても、そのフレームに対応するデータパケットが再度通信コントローラ103に転送される。このため、アイソクロナスデータ再生装置120では、アイソクロナスデータを途切れることなく再生することができる。
【0149】
また、データ処理装置102は、エラー信号が検出された時刻と予め定められた再送期間(再送継続時間retrytime)とから通信コントローラ103で破棄されたフレームに対応するデータパケットが出力された時刻が求められる。このため、通信コントローラ103からエラー信号を受信するだけで、通信コントローラ103で送信されずに破棄されたフレームに対応するデータパケットを特定することができる。
【0150】
<第3の実施の形態>
図21に、本発明の第1、第2の実施の形態におけるデータ処理装置を装置で無く同等の手段として再度見直して実装した場合の通信装置の構成を念の為示している。各構成要素はデータ処理手段を除き実施の形態で説明した図1と同じである。しかしながらデータ処理手段は実施の形態で説明したデータ処理装置の各手段を同等に実現できるものであり、ハードウェアまたはソフトウェアで実現される。
【0151】
システムとしては、アイソクロナスデータ生成装置100、通信装置501、伝送路110、受信装置504から構成される。通信装置501は、データ処理手段502と、通信コントローラ103、物理層104とを含む。
【0152】
受信側通信装置521は、データ処理手段522と、通信コントローラ123、物理層124とを含む。
【0153】
アイソクロナスデータ生成装置100は、映像や音声など同期型のデータの発生元となる装置である。例えばDVDプレーヤーやチューナーなどに相当する。アイソクロナスデータ再生装置120は、映像や音声などの同期型データを表示または再生する装置である。例えば、TVやスピーカーなどに相当する。アイソクロナス(Isochronous)データとは、単位時間あたり一定量発生するデータのことである。
【0154】
アイソクロナスデータ生成装置100で生成されたアイソクロナスデータは、通信装置501のデータ処理手段502と通信コントローラ103と物理層104を経由して伝送路110上に送出される。伝送路110上を流れるアイソクロナスデータは、受信側通信装置521の物理層124と通信コントローラ123とデータ処理手段522を経由して、アイソクロナスデータ再生装置120で再生される。
【0155】
データ処理手段は、エンド−エンド間のデータ伝送路の管理を行う。具体的には、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるよう保証する、などを行う。
【0156】
通信コントローラは、データリンク層の役割を提供する。すなわち、MAC副層においては、通信媒体の違いを吸収し、LLC副層においては論理的なインタフェースを提供する。さらに、伝送路の誤り率を改善するために、MACレベルのARQを行う。具体的には、送信側の通信コントローラが受信側の通信コントローラの確認応答を受けて、再送制御を行う。
【0157】
物理層は、データの電気信号を伝送路に合わせた形に変換する。具体的には、変復調、デジタル−アナログ変換、信号増幅などを行う。
【0158】
通信装置501において、データ処理手段502から通信コントローラ103へデータを転送するときには、一方的にデータを転送し続けることはなく、フローコントロールが行われるのが一般的である。すなわち、通信コントローラ103が送信を完了するまで、または、通信コントローラ103のバッファに空きができるまで、データ転送を中断する仕組みである。具体的には、通信コントローラ103がデータ要求信号、ビジー信号、割り込み信号など、これらのいずれかの信号を用いてデータ処理手段502へ通知する。
【0159】
データ要求信号で通知する場合は、通信コントローラ103は送信完了またはバッファに空きが出るとデータ要求信号を出力する。データ処理手段は、データ要求信号を検出すると次のデータを転送する。
【0160】
ビジー信号で通知する場合は、通信コントローラ103は送信中またはバッファが満杯である場合にビジー信号を出力する。データ処理手段は、ビジー信号を検出している間はデータを転送せず、ビジー信号が解除されると次のデータを転送する。
【0161】
割り込み信号で通知する場合は、通信コントローラ103が送信を完了するまたはバッファに空きが出ると割り込みをかける。データ処理手段は、割り込みを検出すると割り込みハンドラが起動され通信コントローラから割り込み要因をリードし、送信完了割り込みならば次のデータを転送する。
【0162】
これらの信号は名称こそ異なるが、いずれも通信コントローラからデータ処理手段に対してデータを要求するという点で同じ機能を果たす。本明細書では、これらの信号をまとめてデータ要求信号とする。
【0163】
更に、第1・第2の実施例を方法の角度でまとめ直すと以下のようになる。図22に、データ処理方法のパケット出力を行なうための手順を示す。
【0164】
上記データの処理手順は、データ処理装置の実施例として図9と連携したフローチャートを用いて既に詳細に説明済みである。ここで改めて整理すれば、データ処理方法は、まずデータを受信するとS701にて処理を開始する。S702にてデータパケットを生成して、生成したデータパケットをS703にて記憶手段に記憶して、S704にて終了する。
【0165】
また、データ要求信号を検出するとS710にて処理を開始する。S711にてデータ要求信号を検出した時刻と前回のデータ要求信号を検出した時刻から経過時間を計時する。S712にて経過時間が所定の条件を満たすか否かの判定を行う。
【0166】
S713にて、S712の判定結果を基に、記憶手段に記憶されていて以前に出力されたデータパケットを出力するか、もしくは、記憶手段に記憶されていて以前に出力していないデータパケットを出力するかの処理を行う。S714にて処理を終了する。
【0167】
図23に、エラー信号の検出がある場合のデータ処理方法のパケット出力を行なうための手順を示す。上記データ処理手順は、データ処理装置の実施例として図9と連携したフローチャートを用いて、既に説明済みである。
【0168】
ここで改めて整理すれば、データ処理方法は、まずデータを受信するとS801にて処理を開始する。S802にてデータパケットを生成して、生成したデータパケットをS803にて記憶手段に記憶して、S804にて終了する。
【0169】
また、データ要求信号を検出するとS810にて処理を開始する。S811にてエラー信号が発生したかどうか、その有無を判定する。S812にてS811の判定結果を基に、記憶手段に記憶されていて以前に出力されたデータパケットを出力するか、もしくは、記憶手段に記憶されていて以前に出力していないデータパケットを出力するかの処理を行う。S813にて、データパケットを出力した時刻を記憶手段に記憶する。時刻はデータパケットに関連付けられて記憶される。S814にて処理を終了する。
【0170】
また、エラー信号を検出するとS820にて処理を開始する。S821にてエラー信号を検出した時刻を測定する。S822にて、エラー信号を検出した時刻から再送継続時間を減算し、破棄されたデータパケットを推定する。S823にて、S822で推定したデータパケットより古いデータパケットを再送対象外のパケットとして消去する。S824にて処理を終了する。その後、データ要求信号を検出すると、S810からS814までの処理に従い、データパケットを出力する。
【0171】
尚、記述した方法をプログラムでソフト化可能であり、それらを記録し、コンピュータで読取可能な媒体の形成も可能である。
【0172】
(1) 本発明の他の局面によれば、データ処理装置は、データをパケット化してデータパケットを生成するデータパケット生成手段と、
前記生成されたデータパケットを生成された順に記憶する記憶手段と、
データ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを生成された順に読出して出力するデータパケット出力手段と、
データ要求信号を検出してからの経過時間を計時する計時手段と、
前記計時手段により計時された経過時間が所定の条件を満たすか否かを判定する判定手段とを備え、
前記データパケット出力手段は、判定手段による判定結果に基づいて前記記憶手段に記憶されたデータパケットを読出す順を変更する。
【0173】
(2) 前記判定手段は、今回データ要求信号が検出された時刻と前回データ要求信号が検出された時刻との時間間隔が、所定の条件を満たすか否かを判定する。
【0174】
(3) 前記判定手段は、今回検出されたデータ要求信号と前回検出されたデータ要求信号との時間間隔を予め定められた所定の値と比較する比較手段を含む。
【0175】
(4) 前記記憶手段は、未だ出力されていないデータパケットを記憶する第1の記憶手段と、少なくとも1度は出力されたデータパケットを記憶する第2の記憶手段とを含み、
前記データパケット出力手段は、前記比較手段により時間間隔が前記所定の値よりも等しいかまたは大とされた場合に、前記第2の記憶手段に記憶されたデータパケットから読出して出力する。
【0176】
(5) 前記判定手段は、前記比較手段により時間間隔がそれまでに検出されたデータ要求信号の検出時刻に基づき定まる時間間隔と比較する比較手段を含む。
【0177】
(6) 前記記憶手段は、未だ出力されていないデータパケットを記憶する第1の記憶手段と、少なくとも1度は出力されたデータパケットを記憶する第2の記憶手段とを含み、
前記出力手段は、前記判定手段により時間間隔がそれまでに検出されたデータ要求信号の検出時刻に基づき定まる時間間隔よりも大とされた場合に、前記第2の記憶手段に記憶されたデータパケットから読出して出力する。
【0178】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図1】データ伝送システムの構成図である。
【図2】第1の実施の形態に係るデータ処理装置の構成図である。
【図3】データ要求信号の発生する様子を描いた図である。
【図4】データ処理装置のバッファの動作を描いた図である。
【図5】第1のバッファと第2のバッファの実施例である。
【図6】一般的なリングバッファ方式のFIFOを示した図である。
【図7】拡張したリングバッファ方式のFIFOを示した図である。
【図8】変数名の説明と初期値を示した図である。
【図9】送信側通信装置のデータ処理装置の下位層(通信コントローラ)とのインタフェース処理手順を示した図である。
【図10】第1の実施の形態に係る判断ルーチン処理手順を示した図である。
【図11】拡張したリングバッファ方式のFIFOから読み出し処理手順を示した図である。
【図12】図11のステップS404で実行される処理Aの流れを示す図である。
【図13】図11のステップS406または図12のステップS424で実行される処理Bの流れを示す図である。
【図14】図11のステップS407または図12のステップS422で実行される処理Cの流れを示す図である。
【図15】送信側通信装置のデータ処理装置の上位層(アイソクロナスデータ生成装置)とのインタフェース処理手順を示した図である。
【図16】通信コントローラの送信ブロックの構成を示した図である。
【図17】第2の実施の形態に係るデータ処理装置の構成図である。
【図18】第2の実施の形態に係る変数名の説明と初期値を示した図である。
【図19】第2の実施の形態に係る破棄信号を検出した時の処理を示した図である。
【図20】第2の実施の形態に係る判断ルーチン処理手順を示した図である。
【図21】通信装置の構成図である。
【図22】データ処理方法の手順を示した図である。
【図23】エラー信号の検出がある場合のデータ処理方法の手順を示した図である。
【符号の説明】
100 アイソクロナスデータ生成装置、101 送信側通信装置、102 データ処理装置、103、123 通信コントローラ、104、124 物理層、110 伝送路、120 アイソクロナスデータ再生装置、121 受信側通信装置、122 データ処理装置、201、401 アイソクロナスI/F部、202、402 データパケット生成部、203、403 第1のバッファ、204、404 第2のバッファ、205、406 記憶部、206、407 データパケット出力部、207、408 レジスタ、208、409 タイマー、209 計時部、210 比較部、211 判定部、212 データ要求信号検出部、301 データパケット入力部、302 内部メモリ、303 内部メモリ管理部、304 再送制御部、305 物理層I/F、306 データフレーム生成部、307 データ要求信号出力部、308 エラー信号出力部、309データフレーム送信部、405 転送時刻記憶部、410 破棄パケット推定部、411 再送対象外パケット消去部、412 決定部、413 エラー信号検出部、501 通信装置、502、522 データ処理手段、521 受信側通信装置。
【発明の属する技術分野】
本発明は、通信装置、データ伝送方式および通信システムにおける層構造での再送制御方法等に関し、特にバーストエラーが発生しうる伝送路上で有効な技術に関するものである。
【0002】
【従来の技術】
通信処理をOSI参照モデルに従うと、物理層/データリンク層/トランスポート層などの階層構造に分けられる。物理層は、実際にデータ伝送を行う通信媒体のことである。通信媒体の例としては、より対線、光ファイバー、無線、赤外線、電話線、電力線などがある。
【0003】
データリンク層は、通信媒体で直接接続された機器間で通信するための制御を行う。具体的には、データの識別やエラー検出、転送などを行う。データリンク層は、さらにMAC(Media Access Control−媒体アクセス制御)副層とLLC(Logical Link Control−論理リンク制御)副層に分かれる。MAC副層は、通信媒体の違いを吸収する役割を持ち、LLC副層は、論理的なインタフェースを提供する役割を持つ。MAC副層は、一般的に、物理層の特性に依存した仕様となっている。
【0004】
データリンクの例としては、Ethernet(R)、FDDI(FiberDistributed Data Interface)、ATM(Asynchronous Transfer Mode)、IEEE1394などがある。データリンク層は、通信コントローラとして全てをハードウェアで実現されている場合が多いが、一部ソフトウェアとの連動において実現されている場合もある。
【0005】
トランスポート層は、エンド−エンド間のデータ伝送の管理を行う。例えば、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるように保証する、などの役割を持つ。これは、エンド−エンド間のデータ伝送において、データが誤ったりまたは失われたり、伝送遅延時間のゆらぎが発生したり、データの到着順序が入れ替わることがあるためである。
【0006】
トランスポート層における、データ誤りの対処方法として、1.何もしない、2.ARQ(Automatic Repeat Request−自動再送要求)、3.FEC(Forward Error Correcting−順方向誤り訂正)等が代表的である。
【0007】
1.は、ネットワーク経路上でデータが誤ったり失われたりしても何もしない。1.の例としては、UDP(User Datagram Protocol)がある(例えば、非特許文献1参照)。UDPは、プロトコルが単純で遅延が少ないため、映像や音声など高速性が求められるアプリケーションに向く。
【0008】
2.のARQは、受信側からの応答確認によって再送制御を行うことで、ネットワーク経路上でデータが誤ったり失われたりしても、必要なデータを再度送信し、データ伝送を確実に行う方法である。送信側は、データをある単位に区切って順序番号を付け、また、誤りを検出できるようにCRC(Cyclic Redundancy Check)を付加する。2.の例としては、TCP(Transmission Control Protocol)がある(例えば、非特許文献1参照)。TCPは、データ伝送の信頼性が高く、LANトラフィックのような信頼性が要求されるアプリケーションに向く。
【0009】
3.のFECは、送信側からデータを送信するときに、冗長性を持たせることで、たとえ一部のデータが誤ったり失われたりしても、受信側で正しく受信された残りのデータから完全なデータを再現する方法である。3の例としては、UDP上に簡易的な信頼性を組み込んだRUDP(Reliable User Data Protocol)というプロトコルがある(例えば、非特許文献2参照)。FECは、送信側から一方向のデータ伝送であるため、逆方向のデータ伝送がなく、伝送遅延時間はほぼ一定になるという利点がある。そのため、電話など伝送遅延時間が一定であることが求められるアプリケーションに向く。
【0010】
実際の通信システムはもう少し複雑で、トランスポート層より低い層でARQやFECを行うことがある。例えば、無線LANの802.11では、MAC副層に相当するプロトコルが、CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)と呼ばれるデータ伝送手順になっており、送信側がデータを送信すると、受信側はACK(positive Acknowledge−肯定確認応答)やNACK(Negative Acknowledgement−否定確認応答)を返し、ARQを行っている。
【0011】
また、電力線通信のHomePlugでは、たたみ込み符号やリード・ソロモン符号などを用いたFECを行っている。いずれにせよ、データリンク層以下を受け持つ通信コントローラが、物理層である伝送路の特性に応じて、ARQやFECを行っている。ARQやFECは、とりわけ伝送路の誤り率が悪いときに、実施されることが多い。伝送路の誤り率を改善して、信頼性のある伝送路を上位層に提供するためである。
【0012】
しかしながら、通信コントローラがARQやFECを行っても、バーストエラーなどの伝送路の誤りに対する耐性能力には限界がある。そのため、トランスポート層が、データリンク層とは独立して、再度ARQを行うことは意味がある。
【0013】
また、本特許に関連する先行特許文献として次のようなものがある。OSI参照モデルのレイヤ3からレイヤ2へ送られる情報に対してレイヤ2が確認形のデータ転送を行うデータ再送方法において、レイヤ2からレイヤ3に対してデータ転送の成功もしくは失敗を通知し、レイヤ3はレイヤ2に対して情報を再送する通信プロトコルを備えた再送方法がある(例えば、特開平10−136053号公報参照)。ここで、レイヤ2はMAC層(または通信コントローラ)、レイヤ3はトランスポート層に対応すると考えられる。
【0014】
【特許文献1】
特開平10−136053号公報
【0015】
【非特許文献1】
竹下隆史ほか著、「マスタリングTCP/IP 入門編 第2版」、オーム社出版、1998年、第5章「TCPとUDP」
【0016】
【非特許文献2】
Jonathan Davidson/James Peters著、シスコシステムズ監修、「VoIP 基本ガイド」、Cisco Press出版、2001年、p199−201「転送プロトコル」
【0017】
【発明が解決しようとする課題】
しかしながら、上述した従来技術においては下記の問題がある。データが誤ったり失われたりしても何もしない方法では、データが確実に届く保証がないため、信頼性に欠ける。ネットワーク経路上の誤り特性BER(Bit ErrorRate)が十分良い時には問題はないが、ネットワーク経路上ではランダムエラーやバーストエラーが発生すると考えられるため、誤り特性BERが悪くなると、映像や音声はノイズがのったり途切れたりすることになる。
【0018】
ARQを行う方法は、データ伝送の信頼性は高くなるが、再送に伴って伝送遅延時間の増大や伝送遅延時間のゆらぎが発生するため、映像や音声などのアプリケーションに適用しづらいという問題がある。また、確認応答のために、アプリケーションデータを伝送する方向とは逆方向のデータ伝送が発生する。つまり、逆方向のデータ伝送に伴って、伝送遅延時間が増大することになる。映像や音声などのアプリケーションでは、許容される伝送遅延時間が制限されており、伝送遅延時間の増大は問題になると考えられる。
【0019】
また、確認応答そのものが、ネットワーク経路上で失われたりすることもある。この場合、一定の時間だけ待っても確認応答が来なければ、データが喪失されたと判断して、もう一度同じデータを送信する、などの処理を行うが、タイムアウトまでの遅延時間が問題になることが考えられる。
【0020】
FECを行う方法は、受信側にデータが確実に届いたかどうかの保証はないが、受信側で多少のエラーならば回復できるため、ある程度の信頼性を付加するものと考えられる。しかし、FECを有効に機能させるためには、大きな冗長性を持たせなければならない。とりわけ、FECを十分に機能させるために、必要な帯域が元の帯域と比べて2倍から数倍となってしまうこともある。伝送路の帯域を必要以上に占有することになりかねず、伝送効率が悪くなる。したがって、映像のような帯域の広いアプリケーションに適用することは難しい。加えて、バーストエラーが発生した場合には、FECはほとんど効果がない。
【0021】
また、データリンク層としてARQやFECまたはその両方を行う通信コントローラは、伝送路の誤り率を改善して、信頼性のある伝送路を上位層に提供している。しかし、通信コントローラが行う再送の回数は上限が決められており、この回数だけ再送を行ってもなお受信エラーが発生した場合、通信コントローラは送信を断念する。この回数(最大再送リトライ回数)は、伝送路の特性などに基づいて通信コントローラが決めている。最大再送リトライ回数を超えるような長いバーストエラーが発生した場合、通信コントローラは送信を断念するため、データは受信側に届かないことになる。このような場合、トランスポート層で再度ARQを行うことはもちろん可能である。しかし、さきほど述べたように逆方向のデータ伝送遅延が発生して、全体として伝送遅延時間の増大につながる。アプリケーションによっては伝送遅延時間の増大は問題になる。可能ならば、一方向のデータ伝送のみで、対応することが望まれる。
【0022】
以上述べたように、映像や音声などのアプリケーションに求められるような伝送特性、すなわち、伝送遅延時間を短く、信頼性を確保して伝送することは、一般的に難しい。本発明が解決しようとする課題は、上記の課題であり、特にバーストエラーが発生しうるような伝送路上で有効である。
【0023】
また特開平10−136053号公報では、レイヤ2からレイヤ3に対して、データ送信の可否を通知する。従って、レイヤ2からレイヤ3に対して、データ送信の可否が通知されない場合には、適用することができない。また、たとえレイヤ2からレイヤ3に対してデータ送信の可否が通知されたとしても、レイヤ3が連続的にデータを伝送しているとき、送信に失敗したデータを特定する情報が明示的に与えられない限り、レイヤ3はどのデータを再送すべきなのかを知ることができない。
【0024】
この発明は上述の問題点を解決するためになされたもので、この発明の目的は、通信コントローラが再送を断念するような長いバーストエラーが発生しても、データを途切れなく再生させることが可能なデータ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体を提供することである。
【0025】
【課題を解決するための手段】
通信装置は、データ処理装置と通信コントローラとを含む。尚、データ処理装置は、装置で無く同等の構成手段を有するデータ処理手段であっても良い。データ処理装置は、通信コントローラからのデータ要求信号に従って、次に送信すべきデータを通信コントローラに転送するが、このデータ処理装置は、データを転送した後も、以前に転送したデータを指定された量だけ保存する記憶手段を備える。
【0026】
さらに、このデータ処理装置は、通信コントローラが再送を断念したことを判断する手段を備える。データ処理装置は、通信コントローラが再送を断念したと判断した時に、以前に転送したデータを保存するバッファからデータを再度転送する。したがって、送信側の通信装置は、通信コントローラが再送を断念したときでも、データ処理装置が以前に送信したデータと同じデータを再度送信することにより、受信側の通信装置でデータを途切れなく受信することができる。
【0027】
通信コントローラが再送を断念したかどうかを判断する手段であるが、2つの方法が考えられる。一つ目は、通信コントローラからのデータ要求信号の発生する時間間隔を測定する方法である。伝送路が正常な状態であれば、通信コントローラからのデータ要求信号はほぼ一定の時間間隔で発生する。伝送路に異常が発生すると、通信コントローラが再送を継続している間、データ要求信号は発生しなくなる。したがって、通信コントローラからのデータ要求信号の発生する時間間隔を測定し、指定された値と比較することによって、通信コントローラが再送を断念したかどうかを判断できる。
【0028】
二つ目は、通信コントローラから直接状態を取得して判断する方法である。通信コントローラから状態を取得して、通信コントローラが再送を断念したかどうかを判断できる。さらにこの場合、通信コントローラから破棄されたデータを特定する情報が明示的に与えられていなくても、データ処理装置は、時刻情報から破棄されたデータを推測することができる。
【0029】
データ処理装置は、破棄されたと推測されるデータより古いデータを、再送の対象外と判断して、それらを消去することで、効率よく再送できる。いずれの場合でも、受信側通信装置のデータ処理装置は、同じデータを2度以上受信することがあるため、同じデータを受信した時は、そのデータを破棄する処理が必要である。これは、送信側通信装置のデータ処理装置で、データパケットの先頭にデータパケットを識別するシーケンス番号を付加し、受信側通信装置のデータ処理装置でデータパケットのシーケンス番号を監視することで、実現する。
【0030】
その結果、通信コントローラが再送を断念するような長いバーストエラーが発生しても、受信側通信装置はデータを途切れなく再生することができる。
【0031】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態を説明する。ここでは、詳細な処理手順をソフトウェアの形態で説明しているが、これはハードウェアでも実現可能である。
【0032】
又、先に説明した従来技術等で層構造との関連において説明している。実施例に先の説明と関連させて、上位層・下位層と事例的に記述しているが、データ処理装置、通信コントローラ等は、必ずしも層構造になっている必要性は無い。
【0033】
<第1の実施の形態>
第1の実施の形態として、通信コントローラからエラー信号が通知されない場合の実施例を述べる。図1に、本発明の第1の実施の形態と後述の第2の実施の形態に係るデータ伝送システムの構成を示す。システムとしては、アイソクロナスデータ生成装置100、送信側通信装置装置101、伝送路110、アイソクロナスデータ再生装置120、受信側通信装置121から構成される。
【0034】
送信側通信装置101は、データ処理装置102と、通信コントローラ103、物理層104とを含む。受信側通信装置121は、データ処理装置122と、通信コントローラ123、物理層124とを含む。
【0035】
アイソクロナスデータ生成装置100は、映像や音声など同期型のデータの発生元となる装置である。例えばDVDプレーヤーやチューナーなどに相当する。
【0036】
アイソクロナスデータ再生装置120は、映像や音声などの同期側データを表示または再生する装置である。例えば、TVやスピーカーなどに相当する。アイソクロナス(Isochronous)データとは、単位時間あたり一定量発生するデータのことである。
【0037】
アイソクロナスデータ生成装置100で生成されたアイソクロナスデータは、送信側通信装置101のデータ処理装置102と通信コントローラ103と物理層104を経由して伝送路110上に送出される。伝送路110上を流れるアイソクロナスデータは、受信側通信装置121の物理層124と通信コントローラ123とデータ処理装置122を経由して、アイソクロナスデータ再生装置120で再生される。
【0038】
データ処理装置は、エンド−エンド間のデータ伝送路の管理を行う。具体的には、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるよう保証する、などを行う。
【0039】
通信コントローラは、データリンク層の役割を提供する。すなわち、MAC副層においては、通信媒体の違いを吸収し、LLC副層においては論理的なインタフェースを提供する。さらに、伝送路の誤り率を改善するために、MACレベルのARQを行う。具体的には、送信側の通信コントローラが受信側の通信コントローラの確認応答を受けて、再送制御を行う。
【0040】
物理層は、データの電気信号を伝送路に合わせた形に変換する。具体的には、変復調、デジタル−アナログ変換、信号増幅などを行う。
【0041】
送信側通信装置101において、データ処理装置102から通信コントローラ103へデータを転送するときには、一方的にデータを転送し続けることはなく、フローコントロールが行われるのが一般的である。すなわち、通信コントローラ103が送信を完了するまで、または、通信コントローラ103のバッファに空きができるまで、データ転送を中断する仕組みである。具体的には、通信コントローラ103がデータ要求信号、ビジー信号、割り込み信号など、これらのいずれかの信号を用いてデータ処理装置102へ通知する。
【0042】
データ要求信号で通知する場合は、通信コントローラ103は送信完了またはバッファに空きが出るとデータ要求信号を出力する。データ処理装置は、データ要求信号を検出すると次のデータを転送する。
【0043】
ビジー信号で通知する場合は、通信コントローラ103は送信中またはバッファが満杯である場合にビジー信号を出力する。データ処理装置は、ビジー信号を検出している間はデータを転送せず、ビジー信号が解除されると次のデータを転送する。
【0044】
割り込み信号で通知する場合は、通信コントローラ103が送信を完了するまたはバッファに空きが出ると割り込みをかける。データ処理装置は、割り込みを検出すると割り込みハンドラが起動され通信コントローラから割り込み要因をリードし、送信完了割り込みならば次のデータを転送する。
【0045】
これらの信号は名称こそ異なるが、いずれも通信コントローラからデータ処理装置に対してデータを要求するという点で同じ機能を果たす。本明細書では、これらの信号をまとめてデータ要求信号とする。
【0046】
図2に、本発明の実施の形態に係る送信側通信装置のデータ処理装置102の構成を示す。データ処理装置102は、アイソクロナスI/F部201と、データパケット生成部202と、第1のバッファ203と、第2のバッファ204とを含む記憶部205と、データパケット出力部206と、レジスタ207と、タイマー208と、計時部209と比較部210とデータ要求信号検出部212とを含む判定部211とを含む。
【0047】
データ処理装置102は、アイソクロナスI/F部201を介して、アイソクロナスデータ生成装置100からアイソクロナスデータを入力する。データ処理装置102は、アイソクロナスデータを単位時間あたり一定量入力し続ける。
【0048】
データパケット生成部202で、入力されたアイソクロナスデータをアセンブルまたはフラグメンテーションして、適当な長さのデータパケットを生成する。生成されたデータパケットは第1のバッファ203にまず蓄えられる。第2のバッファ204には、一度以上通信コントローラ103に転送したデータパケットを指定された量だけ保存しておく。
【0049】
データパケット出力部206は、通信コントローラ103からデータ要求信号を検出すると、第1のバッファ203もしくは第2のバッファ204からデータパケットを転送する。どちらのバッファからデータパケットを転送するかは、判定部211にて決定される。
【0050】
計時部209は、データ要求信号を検出すると、その時の時刻(タイマー208の値)を保存し、前回のデータ要求信号が発生した時刻との差(経過時間)を計算する。この経過時間が二つのデータ要求信号間の時間間隔となる。
【0051】
比較部210において、その時間間隔がレジスタ207に保存されている所定の値と比較してそれと等しいか、あるいはより大きいかが判定される。実施例の所定の値は、予め決められた固定値、あるいはそれまでに検出されたデータ要求信号の時間間隔より統計的に導き出せる値等である。
【0052】
上記比較は、時間比較であるが、単位時間の計数を比較する等、経過を比較する同一概念の他の手法で実現しても良い。又、所定の値は、経験的、実験的に、あるいは設計的要素に定める時間・計数等で表した基準値である。
【0053】
判定部211は、時間間隔が、レジスタ207に保存されている指定された値より大きければ通信コントローラ103が再送を断念したと判断して、第2のバッファ204からデータパケットを転送するようにデータパケット出力部206へ指示を出す。
【0054】
第1のバッファ203からデータパケットを転送するとき、転送されたデータパケットは第2のバッファ204へ移される。第2のバッファ204からデータパケットを転送するとき、転送されたデータパケットは第2のバッファ204に留まる。第1のバッファおよび第2のバッファは指定された量のデータパケットしか保存できないため、バッファが満杯になった場合、第2のバッファの最も古いデータパケットから順に捨てられる。
【0055】
一度、第2のバッファ204からデータパケットを転送し始めると、第2のバッファ204に蓄えられているデータパケットを転送し続ける。第2のバッファ204からデータパケットを転送している間は、データ要求信号の時間間隔が指定された値よりも小さくても、第2のバッファ204からデータパケットを転送する。これは、第2のバッファ204にあるすべてのデータパケットを転送するまで継続される。第2のバッファ204からデータパケットを転送している間に、再度データ要求信号の時間間隔が指定された値よりも大きいことを検出すると、第2のバッファ204の一番古いデータパケットからもう一度転送し始める。第2のバッファ204にあるすべてのデータパケットを転送し終えると、その後は、データ要求信号の時間間隔に応じて第1のバッファ203または第2のバッファ204からデータパケットを転送する。
【0056】
ここで、第2のバッファのサイズは、通信コントローラ103の持つバッファのサイズよりも大きくなければならない。第2のバッファのサイズが、通信コントローラ103の持つバッファのサイズよりも小さければ、通信コントローラ103が再送を断念したフレームの一部を失ってしまい、アイソクロナスデータを途切れなく再生することができなくなるからである。第2のバッファのサイズは、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。例えば、第2のバッファのサイズをレジスタ207によって書き換えられるようにする。第2のバッファのサイズを0に設定すると、本発明の効果を無効にすることができる。
【0057】
また、第1のバッファのサイズも、アプリケーションに依存するため、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。アプリケーションによって、必要とされる伝送帯域や最大許容遅延が異なるためである。第1のバッファのサイズを調整することで、アプリケーションの種類に応じた伝送が可能となる。例えば、第1のバッファのサイズを小さくすると、より早くバッファが満杯になり、第2のバッファの最も古いデータパケットから順に捨てられるため、必然的に再送回数が減ることになる。その結果、不必要に何度も再送されるといったことがなくなる。伝送帯域が狭く、最大許容遅延が小さいアプリケーションに対しては、第1のバッファのサイズを小さく設定すればよい。逆に、伝送帯域が広く、最大許容遅延が大きいアプリケーションに対しては、第1のバッファのサイズを大きく設定すればよい。
【0058】
図3に、データ要求信号の発生する様子を示す。
(1)伝送路上にバーストエラーが発生せず、通信コントローラ103が順調に送信している間は、データ要求信号はほぼ一定の間隔で出力される。
【0059】
(2)しかし、バーストエラーが発生すると、通信コントローラ103が再送制御を行い、しばらくの間データ要求信号が出力されなくなる。
【0060】
(3)(4)(5)一定時間が経過してなおバーストエラーが続いた場合、通信コントローラ103が再送を断念し、次の新しいデータを要求するため、データ要求信号を出力する。通信コントローラ103が持つバッファの分だけ、データ要求信号を出力すると考えられる。この間、すなわち、通信コントローラ103が再送を継続している間、データ要求信号の発生が一時的に止まる。
【0061】
従って、データ要求信号が発生する時間間隔を測定し、その時間間隔がある値以上になれば、通信コントローラ103が再送を断念したと、判断することができる。この値は、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計する。例えば、この値をレジスタ207によって書き換えられるようにする。
【0062】
図4に、送信側通信装置のデータ処理装置102と受信側通信装置のデータ処理装置122のバッファ占有率について説明する。なお、送信側通信装置のデータ処理装置102のバッファは第1のバッファのことである。
【0063】
(I)はバーストエラーが発生していない時のバッファの状態である。
送信側通信装置のデータ処理装置102のバッファにアイソクロナスデータが単位時間あたり一定量の割合で入力される。通信コントローラ103が順調にデータレームを送信している間は、送信側通信装置のデータ処理装置102のバッファにはほとんどデータパケットがたまらない。これは、伝送路の帯域の方がアイソクロナスデータの帯域よりも広いためである。伝送路の帯域は、伝送エラーによるリカバリ(FECやARQ)を考慮して、アイソクロナスデータの帯域よりも広くとるのが一般的である。受信側通信装置のデータ処理装置122のバッファからはアイソクロナスデータが単位時間あたり一定量の割合で出力される。受信側通信装置のデータ処理装置122は、いったん再生を開始し始めると、再生を開始し始めた時点のバッファ占有率のままほぼ一定に推移する。
【0064】
(II)はバーストエラーが発生した時のバッファの状態である。
バーストエラーが発生して、伝送路上にデータが流れなくなると、送信側通信装置のデータ処理装置102のバッファにデータパケットがたまってくる。バッファから出力されないにもかかわらず、アイソクロナスデータが入力され続けるからである。受信側通信装置のデータ処理装置122のバッファは逆に空になっていく。バッファに入力されないにもかかわらず、アイソクロナスデータが出力され続けるからである。送信側通信装置のデータ処理装置102のバッファが満杯になるか、受信側通信装置のデータ処理装置122のバッファが空にならない限り、アイソクロナスデータは途切れずに再生される。
【0065】
以上のように、バーストエラーが発生してもデータ処理装置のバッファの容量が許す限りの時間ならば、途切れずに再生することができる。従って、本来ならば、バーストエラーに耐えられる時間は、データ処理装置のバッファの容量によって決まる、と言ってよい。
【0066】
しかしながら、通信コントローラが再送を断念するまでの時間が、データ処理装置のバッファの容量が許す限りの時間より短い場合を考える。たとえ、データ処理装置に十分な容量のバッファがあったとしても、通信コントローラが早々に再送を断念すると、結果として、アイソクロナスデータの再生が途切れることになる。アイソクロナスデータを途切れずに再生させるためには、送信側通信装置のデータ処理装置102に図2のような工夫をもうける。
【0067】
すなわち、図3で示した(3)(4)(5)のタイミングにおいて、送信側通信装置のデータ処理装置102は通信コントローラ103が再送を断念したと判断して、第2のバッファ204から以前に転送したデータパケットと同じデータパケットを再度転送する。それ以外の場合は、第1のバッファ203から新しいデータパケットを転送する。このようにすると、アイソクロナスデータを途切れずに再生させることができる。
【0068】
本発明の目的は、通信コントローラが定めている最大再送リトライ回数、すなわち、再送を断念するまでの時間を超えて、バーストエラーが発生した場合でも、データ処理装置に工夫をもうけることによって、アイソクロナスデータを途切れずに再生させることができる、簡便な手法を提供することである。
【0069】
以下、詳細な処理手順をソフトウェアの形態で説明する。
図5に、第1のバッファと第2のバッファの実施例を示す。
【0070】
(I)は、第1のバッファと第2のバッファを異なるアドレス空間で実現した例である。この例では、第1のバッファから第2のバッファへパケットの移動(コピー)が必要である。データの移動(コピー)を行うと、バスが一定時間占有されることになる。可能ならばデータの移動(コピー)を不要にすることが望ましい。
【0071】
(II)は、第1のバッファと第2のバッファを同一のアドレス空間で実現した例である。この例では、データの移動(コピー)が不要である。これは一般的なリングバッファ方式のFIFOを拡張することで実現可能である。
【0072】
以下の事例では、記憶部をリングバッファ方式のFIFO(first infirst outのメモリ)で構成した例を開示しているが、記憶部は、FIFOあるいはリングバッファに固定したメモリ処理に限定せずランダムメモリであっても良い。
【0073】
図6に、一般的なリングバッファ方式のFIFOを示す。リングバッファは配列で実現され、読み出しポインタ(rd)と、書き込みポインタ(wr)を持つ。バッファに書き込む時は、バッファ内の書き込みポインタ(wr)の指す場所へデータパケットを書き込み、書き込みポインタ(wr)をインクリメントする。バッファが満杯の状態で、バッファに書き込むと、どのように処理すべきか決まっていないが、一つの例としては、一番古いデータパケットを捨てて、新しいデータパケットを書き込むようにする。バッファから読み出す時は、バッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出し、読み出しポインタ(rd)をインクリメントする。バッファが空の状態で、バッファから読み出すと、どのように処理すべきか決まっていないが、一つの例としては、無効なデータパケットを返す。
【0074】
読み出しポインタ(rd)と書き込みポインタ(wr)は、どちらも、インクリメントした結果の値が配列の長さ(len)に等しくなれば0に戻る。以後、繰り返し記載しないが、ポインタをインクリメントする時は必ず0に戻すような処理を追加する。
【0075】
図7に、拡張したリングバッファ方式のFIFOを示す。リングバッファは同じく配列で実現され、読み出しポインタ(rd)と、読み出しポインタ2(rd2)と、書き込みポインタ(wr)を持つ。読み出しポインタ(rd)と読み出しポインタ2(rd2)との間の領域が、第2のバッファである。配列内のそれ以外の領域が第1のバッファである。このように、第1のバッファと第2のバッファはまとめて、同一アドレス空間上に存在できる。
【0076】
バッファに書き込む時は、バッファ内の書き込みポインタ(wr)の指す場所へデータパケットを書き込む。バッファから読み出す時は2通りある。第1のバッファから読み出す時は、バッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出す。第2のバッファから読み出す時は、バッファ内の読み出しポインタ(rd2)の指す場所からデータパケットを読み出す。
【0077】
以下、拡張したリングバッファ方式のFIFOを使って、本発明の実施例を詳しく説明する。図8に、以降の処理手順の説明に出てくる変数名の説明と初期値を示す。各変数は、あらかじめ図8に示されている初期値に初期化されているものとする。
【0078】
図9に、送信側通信装置のデータ処理装置における、下位層(通信コントローラ)とのインタフェース処理手順を示す。下位層(通信コントローラ)からデータ要求信号を検出すると、S101に処理が移る。S102にて、判断ルーチンが実行される。判断ルーチンでは、下位層(通信コントローラ)が再送を断念したかどうかが判定され、再送を断念した場合にはtrueが、さもなければfalseが返る。
【0079】
S103にて、拡張したリングバッファ方式のFIFOから読み出しが実行される。S103の引数として、S102の判断ルーチンの返値を渡す。S103では、引数を手がかりに、第1のバッファから読み出すか、第2のバッファから読み出すかを決定する。いずれか適切なバッファから読み出しされ、データパケットを返す。
【0080】
S104で、S103の返値のデータパケットが無効であるかどうかチェックし、データパケットが無効ならば何もせずにS106で終了する。データパケットが有効ならば、S105にてデータパケットを下位層(通信コントローラ)に転送する。その後、S106で終了する。
【0081】
図10に、第1の実施の形態に係る判断ルーチンの処理手順を示す。S201で判断ルーチンを開始する。S202で現在時刻を取得して一時変数currentに保存する。現在時刻はタイマー206から取得できる。なお、現在時刻は0以上の値で表されるものとする。
【0082】
S203で返値retにfalseを代入する。S204でこの判断ルーチンが初回呼び出しかどうかを判定する。初回呼び出しかどうかは、last_timerが負であるかどうかで判定できる(なぜなら、初回呼び出し時のみlast_timerは初期値の−1がセットされており、それ以降はlast_timerには0以上の値が入るため。)。
【0083】
初回呼び出しならばS207に移り、さもなければS205に移る。S205で、前回にこの判断ルーチンが呼ばれた時刻と現在時刻との差current−last_timerを計算し、それが指定された値(period)以上かどうかを判定する。指定された値以上ならばS206に移り、さもなければS207に移る。
【0084】
S206で返値retにtrueを代入する。S207で先に取得した現在時刻(一時変数currentに格納されている)を変数last_timerに保存する。S208で終了し、返値retを返す。
【0085】
図11に、拡張したリングバッファ方式のFIFOから読み出しの処理手順を示す。S401で処理が開始される。この時、引数にtrueまたはfalseが与えられる。
【0086】
S402で返値pktにnullを代入する。nullとは無効なデータパケットのことである。S403で引数がtrueかどうを判定し、trueならばS404へ移り、さもなければS405へ移る。S404で後述する処理Aを実行する。
【0087】
S405で第2のバッファから読み出し中であるかどうかを判定し、第2のバッファから読み出し中であるならばS406へ移り、さもなければS407へ移る。第2のバッファから読み出し中であるかどうかは、読み出しポインタ3(rd3)が0以上かどうかで判定できる。
【0088】
S406で後述する処理Bを実行する。S407で後述する処理Cを実行する。S404の処理A、S406の処理B、S407の処理Cが完了すると、S408で拡張したリングバッファ方式のFIFOから読み出しを終了し、返り値pktを返す。
【0089】
以下、図12を用いて処理Aの手順について説明する。S421で第2のバッファが空かどうか判定し、第2のバッファが空ならばS422へ移り、さもなければS423へ移る。第2のバッファが空かどうかは、読み出しポインタ2(rd2)が読み出しポインタ(rd)と等しいかどうかで判定できる。S422で後述する処理Cを実行する。
【0090】
S423で読み出しポインタ3(rd3)に読み出しポインタ2(rd2)を代入する。なお、読み出しポインタ2(rd2)は常に0以上である。
【0091】
S424で後述する処理Bを実行する。S424の処理B、S422の処理Cが完了すると処理Aは終了する。
【0092】
以下、図13を用いて処理Bの手順について説明する。なお、処理Bは第2のバッファから読み出しを行う。S441でバッファ内の読み出しポインタ3(rd3)の指す場所からデータパケットを読み出し、pktに代入する。S442で読み出しポインタ3(rd3)をインクリメントする。
【0093】
S443で第2のバッファからデータパケットをすべて読み出したかどうかを判定し、すべて読み出したならばS444に移り、さもなければ処理Bを終了する。第2のバッファからデータパケットをすべて読み出したかどうかは、読み出しポインタ3(rd3)が読み出しポインタ(rd)に等しくなったかどうかで判定できる。
【0094】
S444で読み出しポインタ3(rd3)に−1を代入する。その後、処理Bを終了する。
【0095】
以下、図14を用いて処理Cの手順について説明する。なお、処理Cは第1のバッファから読み出しを行う。
【0096】
S461で第1のバッファが空かどうか判定し、空ならば処理Cを終了し、さもなければS462に移る。第1のバッファが空かどうかは、emptyを見ることで判定できる。
【0097】
S462でバッファ内の読み出しポインタ(rd)の指す場所からデータパケットを読み出し、pktに代入する。S463で読み出しポインタ(rd)をインクリメントする。
【0098】
S464で第2のバッファにデータパケットがたまっているかどうかを判定し、データパケットがたまっていればS465へ移り、さもなければS466へ移る。第2のバッファにデータパケットがたまっているというのは、第2のバッファに指定された量(len2)のデータパケットがある、ということである。第2のバッファにデータパケットがたまっているかどうかは、extentionが0であるかどうかで判定できる。
【0099】
S465で読み出しポインタ2(rd2)をインクリメントする。S466でextentionを1減らす。S467でfullにfalseを代入する。
【0100】
S468で第1のバッファが空になったかどうかを判定し、空になったらばS469に移り、さもなければ処理Cを終了する。第1のバッファが空になったかどうかは、読み出しポインタ(rd)が書き込みポインタ(wr)と等しくなったかどうかで判定できる。
【0101】
S469でemptyにtrueを代入する。その後、処理Cを終了する。
図15に、送信側通信装置のデータ処理装置における、上位層(アイソクロナスデータ生成装置)とのインタフェース処理手順を示す。上位層(アイソクロナスデータ生成装置)からアイソクロナスデータが入力され、1データパケット(pkt)が生成された時点で、S501に処理が移る。
【0102】
S501では引数としてデータパケット(pkt)が与えられる。S502でバッファが満杯であるかどうかを判定し、満杯ならばS503に移り、さもなければS504に移る。バッファが満杯であるかどうかはfullを見て判定できる。
【0103】
S503でバッファ内の最も古いデータパケットを1つ捨てる。具体的には読み出しポインタ(rd)と読み出しポインタ2(rd2)をそれぞれインクリメントする。S504でバッファ内の書き込みポインタ(wr)の指す場所にデータパケットを書き込む。S505で書き込みポインタ(wr)をインクリメントする。S506でemptyにfalseを代入する。
【0104】
S507でバッファが満杯になったかどうかを判定し、満杯になったならばS508に移り、さもなければS509に移る。バッファが満杯になったかどうかは書き込みポインタ(wr)が読み出しポインタ2(rd2)と等しくなったかどうかで判定できる。
【0105】
S508でfullにtrueを代入する。S509で終了する。
図16に本発明が想定している通信コントローラの送信ブロックの実施例を示す。通信コントローラの役割は、データパケットを通信フレーム化してデータフレームを送信することを伝送媒体の特性に応じて制御を行うものであるが、ここでは再送機能を有するものとする。
【0106】
再送機能(ARQ)にはいくつかの方式があるが、中でも誤ったデータフレームだけ再送するSR−ARQ(Selective Repeat ARQ)と呼ばれるタイプの方式が最も効率がよい。ここではSR−ARQタイプの再送方式を実施する例を示す。
【0107】
通信コントローラ103は、データパケット入力部301、内部メモリ302、内部メモリ管理部303、再送制御部304、物理層I/F305、データフレーム生成部306、データ要求信号出力部307、エラー信号出力部308、データフレーム送信部309と、から構成される。SR−ARQタイプの再送方式では、FIFOでは実現できないため、任意の場所にアクセスできる内部メモリが必要である。そのため、内部メモリに書き込みする位置、読み出しする位置を決定する制御部が必要である。
【0108】
内部メモリ管理部303は、内部メモリの状態を管理し、内部メモリに空きがあれば、データ要求信号出力部307を通してデータ要求信号を出力し、上位層(データ処理装置)にデータを受け付ける準備ができていることを通知する。
【0109】
上位層(データ処理装置)はデータ要求信号を検出すると、次に送信すべきデータパケットを通信コントローラに転送する。通信コントローラは、データパケット入力部301を通じて受け取ったデータパケットを、データフレーム化していったん内部メモリ302に書き込む。内部メモリ302に書き込む位置は、内部メモリ管理部303によって決定される。
【0110】
通信コントローラは、物理層I/F305を通じて物理層への制御あるいは状態センスを行い、送信タイミングを待って、内部メモリに保持されているデータフレームを物理層へ転送する。
【0111】
物理層は伝送媒体を通じてデータを送信する。その後、物理層は受信側通信装置からACKまたはNACKを受信する。
【0112】
再送制御部304は、物理層I/F305を通じてACKまたはNACKを受け取り、どのデータフレームが届き、どのデータフレームが届かなかったのかを判定する。受信側通信装置からACKまたはNACKを受信しなかった場合、一定時間待った後タイムアウトとする。タイムアウトが発生するとNACKと同等の処理を行うのが一般的である。届いたデータフレームについては、内部メモリ302から破棄される。届かなかったデータフレームは再送の対象となる。
【0113】
再送制御部304は、ACKまたはNACKを受け取り、内部メモリ管理部303に対して、再送の対象となるデータフレームを通知する。内部メモリ管理部303は、内部メモリの状態と、再送制御部304からの情報をもとに、読み出し位置を決定する。再送制御については、最大再送リトライ回数が設けられているのが一般的である。
【0114】
最大再送リトライ回数分繰り返し再送して、なおNACKまたはタイムアウトが発生した場合、内部メモリに留まっているデータフレームを破棄し、上位層(データ処理装置)に対して新しいデータを要求する。この時、通信コントローラは、エラー信号を出力し、最大再送リトライ回数オーバーによるデータフレーム破棄が発生したことを、上位層(データ処理装置)に明示的に伝達する手段を持ってもよい。データフレーム破棄ある場合の処理は、第2の実施の形態で述べる。
【0115】
実際の通信コントローラは、ここで説明した機能以外にも受信ブロック、ビーコンの送受信やホストインタフェースなどさまざまな機能があるが、本発明とは関連性が低いため、これ以上の説明はしない。
【0116】
以上で、送信側通信装置のデータ処理装置の上位層(アイソクロナスデータ生成装置)および下位層(通信コントローラ)とのインタフェース処理手順が示された。このようにすると、図3における(3)(4)(5)のタイミングで、第2のバッファから以前に転送したデータパケットと同じデータパケットを再度転送し、それ以外の場合は、第1のバッファから新しいデータパケットを転送することができる。従って、通信コントローラが早々に再送を断念しても、データ処理装置のバッファが許す限りアイソクロナスデータを途切れずに再生させることができる。
【0117】
なお、受信側通信装置のデータ処理装置について補足説明する。受信側通信装置のデータ処理装置では、同じデータパケットを複数回受信することがあるため、同じデータパケットを受信した場合は破棄する手順が必要である。
【0118】
また、通信コントローラがデータの順序性を保証していない場合は、受信側データ処理装置でデータを順に並べ替える手順が必要となる。これらは、送信側通信装置のデータ処理装置で、データパケットのヘッダ部にシーケンス番号を付けることで解決される。シーケンス番号はデータパケット毎に1ずつインクリメントされながら付加される。
【0119】
従って、受信側通信装置のデータ処理装置でシーケンス番号を見ることで、以前に受信したデータパケットと同じデータパケットであるかどうか、また、データパケットの正しい順序がわかる。これらは従来技術で実現されており、ここではこれ以上の説明はしない。
【0120】
以上説明したように第1の実施の形態における送信側通信装置101のデータ処理装置102では、通信コントローラ103から出力されてくるデータ要求信号が検出されてからの経過時間が、指定された値period以上の場合に、第2のバッファ204に記憶されている以前に出力されたデータパケットが通信コントローラ103に再度転送される。このため、通信コントローラ103で再送を断念したデータパケットであっても、データ処理装置102でリカバリできる。その結果、伝送路110の通信状態が悪く、バーストエラーが発生する場合であっても、受信側通信装置121に連続するデータパケットを送信することができ、アイソクロナスデータ再生装置120で、連続するデータを途切れることなく再生することができる。
【0121】
また、第2のバッファには、通信コントローラ103に1度でも転送されたデータパケットが予め定められた数(len2)だけ記憶するようにしたので、予め定められた数だけ前に出力されたデータパケットを再度転送することができる。
【0122】
さらに、データ要求信号が検出されてからの経過時間が比較される、指定された値periodを、通信コントローラ103が再送を継続してもなお送信できず再送を断念したと判断することができる期間としたので、通信コントローラ103からデータ要求信号以外の信号を受信することなく、通信コントローラ103で送信を失敗したか成功したかの判定をすることができる。
【0123】
さらに、データ要求信号を検出してからの経過時間が、それまでに受信されたデータ要求信号の受信時刻に基づき定まる時間間隔、すなわち、直前に算出されたデータ要求信号の時間間隔、または、これまでに算出されたデータ要求信号の時間間隔の平均と比較するようにしたので、データ要求信号が検出される時間間隔の変化から、通信コントローラ103で送信を失敗したことを判定することができる。
【0124】
<第2の実施の形態>
第2の実施の形態として、通信コントローラからエラー信号が通知される場合の実施例を述べる。ここでエラー信号とは、通信コントローラがその再送処理において、最大再送リトライ回数を超えてもなお正常に送信できず、通信コントローラがデータフレームを破棄する時に出力される信号である。
【0125】
エラー信号には、データ処理装置にとって、破棄されたデータパケットを特定できる情報は含まれていないものとする。しかし、データ処理装置に工夫を設けることによって、エラー信号の発生した時刻を見て、その時刻から破棄されたデータパケットを推定し、それ以降のデータパケットのみを再送することができる。
【0126】
時刻から破棄されたデータパケットを推定する方法についてであるが、まずデータ処理装置において、通信コントローラへ転送したパケットの時刻を、データパケットと関連付けて保存しておく。
【0127】
通信コントローラへ転送されたデータパケットは、通信コントローラにおいて最大再送リトライ回数に達するまで再送が継続される。通信コントローラが再送を継続する時間はほぼ一定であるとみなせる。この再送継続時間は、あらかじめデータ処理装置に設定されているものとする。
【0128】
データ処理装置は、エラー信号を検出すると、それが発生した時刻から再送継続時間を減ずる。この値と、通信コントローラへデータパケットを転送した時刻を比較することにより、破棄されたデータパケットを推定する。
【0129】
図17に、エラー信号がある場合のデータ処理装置の構成図を示す。アイソクロナスI/F部401、データパケット生成部402、第1のバッファ403、第2のバッファ404、データパケット出力部407、レジスタ408と、タイマー409については、図2の同名ブロックと同じであるため再度説明しない。記憶部406は、第1のバッファと第2のバッファの他に、転送時刻記憶部405を持つ。
【0130】
転送時刻記憶部405には、データパケット出力部407が通信コントローラ103へデータパケットを転送した時の時刻を保存する。転送時刻記憶部405は、時刻を第2のバッファ404に蓄えられるデータパケットと対応付けて保存する。同じデータパケットを複数回転送する場合は、最後に転送した時刻だけを保存する。
【0131】
決定部412は、破棄パケット推定部410と、再送対象外パケット消去部411と、エラー信号検出部413とを含む。
【0132】
破棄パケット推定部410は、エラー信号が発生した時刻を保存し、その時刻から、あらかじめレジスタ408に設定されている再送継続時間を減算し、破棄されたと推定されるデータパケットを推定する。
【0133】
再送対象外データパケット消去部411は、第2のバッファ404に蓄えられているデータパケットのうち、破棄パケット推定部410で破棄されたと推定されたデータパケットより古いデータパケットを消去する。
【0134】
決定部412は、データ要求信号に従い第1のバッファまたは第2のバッファのどちらからデータパケットを転送するかの決定をする。
【0135】
以下、エラー信号がある場合の詳細な処理手順をソフトウェアの形態で説明する。
【0136】
基本的には、第1の実施例で述べた処理手順をそのまま使用できる。さらに、エラー信号がある場合には、エラー信号が発生した時刻を取得し、破棄されたデータパケットを推定し、第2のバッファに蓄えられているデータパケットの中から、破棄されたと推定されるデータパケットより古いデータパケットを再送の対象外として削除する手順を追加する。
【0137】
図18に、エラー信号を検出した時の処理で使用される、変数名の説明と初期値を示す。各変数は、あらかじめ図18に示されている初期値に初期化されているものとする。
【0138】
図18の変数retrytimeが再送継続時間である。この値は、通信コントローラ103に依存するので、コンフィグアブル、すなわちソフトウェアによって設定可能であるように設計することが望ましい。レジスタ408に記憶される。
【0139】
図19に、エラー信号を検出した時の処理を示す。エラー信号を検出するとS601に処理が移る。S602で現在時刻を取得する(current)。現在時刻はタイマー409から取得する。
【0140】
S603で破棄されたデータパケットを推定する。正確には、破棄されたと推測されるデータパケットを転送した時刻を計算する。これは現在時刻から決められた再送期間を減ずることで得られる(losttime←current−retrytime)。
【0141】
S604で第2のバッファが空かどうかを判定し、第2のバッファが空ならばS608で処理を終了する。さもなければS605に移る。
【0142】
S605で第2のバッファの先頭データパケットが再送の対象から外せるかどうかを判定する。具体的には、第2のバッファの先頭データパケットを最後に転送した時刻(sendout[rd2])が、S603で求めた時刻(losttime)より古いかどうかを比較する。古ければ再送の対象から外せると判定する。S605で第2のバッファの先頭データパケットが再送の対象から外せると判定されれば、S606に移る。さもなければS608にて処理を終了する。
【0143】
S606で読み出しポインタ2(rd2)をインクリメントする。これは、第2のバッファの先頭データパケットを1つ削除することを意味する。S607でextentionを1減らす。再びS604に戻り、第2のバッファが空でない限り、以上の手順を繰り返す。
【0144】
図19の処理手順により、エラー信号があった場合に、その時刻から破棄されたデータパケットを推定し、それ以降のデータパケットのみを再送することができる。
【0145】
図20に、第2の実施の形態に係る判断ルーチンの処理手順を示す。これは、図9におけるS102の処理である。S301で判断ルーチンを開始する。
【0146】
S302で通信コントローラから再送状態を取得する。これは、通信コントローラからの特定の信号(たとえば、図16のエラー信号に相当するようなもの)をリードする、などの方法で取得する。
【0147】
S303で通信コントローラが送信を失敗したかどうかを判断し、送信を失敗したと判断されればS304に移り、さもなければS305に移る。S304で返値retにtrueを代入する。S305で返値retにfalseを代入する。S306で終了し、返値retを返す。
【0148】
以上説明したように、第2の実施の形態における送信側通信装置101のデータ処理装置102は、エラー信号の検出時刻に基づき、第2のバッファに記憶されている、以前に出力したデータパケットの中から、再度転送すべきデータパケットを決定して転送する。このため、通信コントローラ103で送信されなかったフレームに対応するデータパケットを再度転送することができる。このため、伝送路110にバーストエラーが発生して、通信コントローラ103で送信できないフレームが発生したとしても、そのフレームに対応するデータパケットが再度通信コントローラ103に転送される。このため、アイソクロナスデータ再生装置120では、アイソクロナスデータを途切れることなく再生することができる。
【0149】
また、データ処理装置102は、エラー信号が検出された時刻と予め定められた再送期間(再送継続時間retrytime)とから通信コントローラ103で破棄されたフレームに対応するデータパケットが出力された時刻が求められる。このため、通信コントローラ103からエラー信号を受信するだけで、通信コントローラ103で送信されずに破棄されたフレームに対応するデータパケットを特定することができる。
【0150】
<第3の実施の形態>
図21に、本発明の第1、第2の実施の形態におけるデータ処理装置を装置で無く同等の手段として再度見直して実装した場合の通信装置の構成を念の為示している。各構成要素はデータ処理手段を除き実施の形態で説明した図1と同じである。しかしながらデータ処理手段は実施の形態で説明したデータ処理装置の各手段を同等に実現できるものであり、ハードウェアまたはソフトウェアで実現される。
【0151】
システムとしては、アイソクロナスデータ生成装置100、通信装置501、伝送路110、受信装置504から構成される。通信装置501は、データ処理手段502と、通信コントローラ103、物理層104とを含む。
【0152】
受信側通信装置521は、データ処理手段522と、通信コントローラ123、物理層124とを含む。
【0153】
アイソクロナスデータ生成装置100は、映像や音声など同期型のデータの発生元となる装置である。例えばDVDプレーヤーやチューナーなどに相当する。アイソクロナスデータ再生装置120は、映像や音声などの同期型データを表示または再生する装置である。例えば、TVやスピーカーなどに相当する。アイソクロナス(Isochronous)データとは、単位時間あたり一定量発生するデータのことである。
【0154】
アイソクロナスデータ生成装置100で生成されたアイソクロナスデータは、通信装置501のデータ処理手段502と通信コントローラ103と物理層104を経由して伝送路110上に送出される。伝送路110上を流れるアイソクロナスデータは、受信側通信装置521の物理層124と通信コントローラ123とデータ処理手段522を経由して、アイソクロナスデータ再生装置120で再生される。
【0155】
データ処理手段は、エンド−エンド間のデータ伝送路の管理を行う。具体的には、データ伝送の信頼性を高める、伝送遅延時間を一定に保つ、データの到着順序を送信元と同じになるよう保証する、などを行う。
【0156】
通信コントローラは、データリンク層の役割を提供する。すなわち、MAC副層においては、通信媒体の違いを吸収し、LLC副層においては論理的なインタフェースを提供する。さらに、伝送路の誤り率を改善するために、MACレベルのARQを行う。具体的には、送信側の通信コントローラが受信側の通信コントローラの確認応答を受けて、再送制御を行う。
【0157】
物理層は、データの電気信号を伝送路に合わせた形に変換する。具体的には、変復調、デジタル−アナログ変換、信号増幅などを行う。
【0158】
通信装置501において、データ処理手段502から通信コントローラ103へデータを転送するときには、一方的にデータを転送し続けることはなく、フローコントロールが行われるのが一般的である。すなわち、通信コントローラ103が送信を完了するまで、または、通信コントローラ103のバッファに空きができるまで、データ転送を中断する仕組みである。具体的には、通信コントローラ103がデータ要求信号、ビジー信号、割り込み信号など、これらのいずれかの信号を用いてデータ処理手段502へ通知する。
【0159】
データ要求信号で通知する場合は、通信コントローラ103は送信完了またはバッファに空きが出るとデータ要求信号を出力する。データ処理手段は、データ要求信号を検出すると次のデータを転送する。
【0160】
ビジー信号で通知する場合は、通信コントローラ103は送信中またはバッファが満杯である場合にビジー信号を出力する。データ処理手段は、ビジー信号を検出している間はデータを転送せず、ビジー信号が解除されると次のデータを転送する。
【0161】
割り込み信号で通知する場合は、通信コントローラ103が送信を完了するまたはバッファに空きが出ると割り込みをかける。データ処理手段は、割り込みを検出すると割り込みハンドラが起動され通信コントローラから割り込み要因をリードし、送信完了割り込みならば次のデータを転送する。
【0162】
これらの信号は名称こそ異なるが、いずれも通信コントローラからデータ処理手段に対してデータを要求するという点で同じ機能を果たす。本明細書では、これらの信号をまとめてデータ要求信号とする。
【0163】
更に、第1・第2の実施例を方法の角度でまとめ直すと以下のようになる。図22に、データ処理方法のパケット出力を行なうための手順を示す。
【0164】
上記データの処理手順は、データ処理装置の実施例として図9と連携したフローチャートを用いて既に詳細に説明済みである。ここで改めて整理すれば、データ処理方法は、まずデータを受信するとS701にて処理を開始する。S702にてデータパケットを生成して、生成したデータパケットをS703にて記憶手段に記憶して、S704にて終了する。
【0165】
また、データ要求信号を検出するとS710にて処理を開始する。S711にてデータ要求信号を検出した時刻と前回のデータ要求信号を検出した時刻から経過時間を計時する。S712にて経過時間が所定の条件を満たすか否かの判定を行う。
【0166】
S713にて、S712の判定結果を基に、記憶手段に記憶されていて以前に出力されたデータパケットを出力するか、もしくは、記憶手段に記憶されていて以前に出力していないデータパケットを出力するかの処理を行う。S714にて処理を終了する。
【0167】
図23に、エラー信号の検出がある場合のデータ処理方法のパケット出力を行なうための手順を示す。上記データ処理手順は、データ処理装置の実施例として図9と連携したフローチャートを用いて、既に説明済みである。
【0168】
ここで改めて整理すれば、データ処理方法は、まずデータを受信するとS801にて処理を開始する。S802にてデータパケットを生成して、生成したデータパケットをS803にて記憶手段に記憶して、S804にて終了する。
【0169】
また、データ要求信号を検出するとS810にて処理を開始する。S811にてエラー信号が発生したかどうか、その有無を判定する。S812にてS811の判定結果を基に、記憶手段に記憶されていて以前に出力されたデータパケットを出力するか、もしくは、記憶手段に記憶されていて以前に出力していないデータパケットを出力するかの処理を行う。S813にて、データパケットを出力した時刻を記憶手段に記憶する。時刻はデータパケットに関連付けられて記憶される。S814にて処理を終了する。
【0170】
また、エラー信号を検出するとS820にて処理を開始する。S821にてエラー信号を検出した時刻を測定する。S822にて、エラー信号を検出した時刻から再送継続時間を減算し、破棄されたデータパケットを推定する。S823にて、S822で推定したデータパケットより古いデータパケットを再送対象外のパケットとして消去する。S824にて処理を終了する。その後、データ要求信号を検出すると、S810からS814までの処理に従い、データパケットを出力する。
【0171】
尚、記述した方法をプログラムでソフト化可能であり、それらを記録し、コンピュータで読取可能な媒体の形成も可能である。
【0172】
(1) 本発明の他の局面によれば、データ処理装置は、データをパケット化してデータパケットを生成するデータパケット生成手段と、
前記生成されたデータパケットを生成された順に記憶する記憶手段と、
データ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを生成された順に読出して出力するデータパケット出力手段と、
データ要求信号を検出してからの経過時間を計時する計時手段と、
前記計時手段により計時された経過時間が所定の条件を満たすか否かを判定する判定手段とを備え、
前記データパケット出力手段は、判定手段による判定結果に基づいて前記記憶手段に記憶されたデータパケットを読出す順を変更する。
【0173】
(2) 前記判定手段は、今回データ要求信号が検出された時刻と前回データ要求信号が検出された時刻との時間間隔が、所定の条件を満たすか否かを判定する。
【0174】
(3) 前記判定手段は、今回検出されたデータ要求信号と前回検出されたデータ要求信号との時間間隔を予め定められた所定の値と比較する比較手段を含む。
【0175】
(4) 前記記憶手段は、未だ出力されていないデータパケットを記憶する第1の記憶手段と、少なくとも1度は出力されたデータパケットを記憶する第2の記憶手段とを含み、
前記データパケット出力手段は、前記比較手段により時間間隔が前記所定の値よりも等しいかまたは大とされた場合に、前記第2の記憶手段に記憶されたデータパケットから読出して出力する。
【0176】
(5) 前記判定手段は、前記比較手段により時間間隔がそれまでに検出されたデータ要求信号の検出時刻に基づき定まる時間間隔と比較する比較手段を含む。
【0177】
(6) 前記記憶手段は、未だ出力されていないデータパケットを記憶する第1の記憶手段と、少なくとも1度は出力されたデータパケットを記憶する第2の記憶手段とを含み、
前記出力手段は、前記判定手段により時間間隔がそれまでに検出されたデータ要求信号の検出時刻に基づき定まる時間間隔よりも大とされた場合に、前記第2の記憶手段に記憶されたデータパケットから読出して出力する。
【0178】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図1】データ伝送システムの構成図である。
【図2】第1の実施の形態に係るデータ処理装置の構成図である。
【図3】データ要求信号の発生する様子を描いた図である。
【図4】データ処理装置のバッファの動作を描いた図である。
【図5】第1のバッファと第2のバッファの実施例である。
【図6】一般的なリングバッファ方式のFIFOを示した図である。
【図7】拡張したリングバッファ方式のFIFOを示した図である。
【図8】変数名の説明と初期値を示した図である。
【図9】送信側通信装置のデータ処理装置の下位層(通信コントローラ)とのインタフェース処理手順を示した図である。
【図10】第1の実施の形態に係る判断ルーチン処理手順を示した図である。
【図11】拡張したリングバッファ方式のFIFOから読み出し処理手順を示した図である。
【図12】図11のステップS404で実行される処理Aの流れを示す図である。
【図13】図11のステップS406または図12のステップS424で実行される処理Bの流れを示す図である。
【図14】図11のステップS407または図12のステップS422で実行される処理Cの流れを示す図である。
【図15】送信側通信装置のデータ処理装置の上位層(アイソクロナスデータ生成装置)とのインタフェース処理手順を示した図である。
【図16】通信コントローラの送信ブロックの構成を示した図である。
【図17】第2の実施の形態に係るデータ処理装置の構成図である。
【図18】第2の実施の形態に係る変数名の説明と初期値を示した図である。
【図19】第2の実施の形態に係る破棄信号を検出した時の処理を示した図である。
【図20】第2の実施の形態に係る判断ルーチン処理手順を示した図である。
【図21】通信装置の構成図である。
【図22】データ処理方法の手順を示した図である。
【図23】エラー信号の検出がある場合のデータ処理方法の手順を示した図である。
【符号の説明】
100 アイソクロナスデータ生成装置、101 送信側通信装置、102 データ処理装置、103、123 通信コントローラ、104、124 物理層、110 伝送路、120 アイソクロナスデータ再生装置、121 受信側通信装置、122 データ処理装置、201、401 アイソクロナスI/F部、202、402 データパケット生成部、203、403 第1のバッファ、204、404 第2のバッファ、205、406 記憶部、206、407 データパケット出力部、207、408 レジスタ、208、409 タイマー、209 計時部、210 比較部、211 判定部、212 データ要求信号検出部、301 データパケット入力部、302 内部メモリ、303 内部メモリ管理部、304 再送制御部、305 物理層I/F、306 データフレーム生成部、307 データ要求信号出力部、308 エラー信号出力部、309データフレーム送信部、405 転送時刻記憶部、410 破棄パケット推定部、411 再送対象外パケット消去部、412 決定部、413 エラー信号検出部、501 通信装置、502、522 データ処理手段、521 受信側通信装置。
Claims (15)
- データをパケット化してデータパケットを生成するデータパケット生成手段と、
前記生成されたデータパケットを記憶する記憶手段と、
データ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するデータパケット出力手段と、
データ要求信号を検出してからの経過時間を計時する計時手段と、
前記計時手段により計時された経過時間が所定の条件を満たすか否かを判定する判定手段とを備え、
前記判定手段により経過時間が所定の条件を満たすと判定された場合、以前に出力したデータパケットを出力することを特徴とするデータ処理装置。 - 前記判定手段は、前記計時手段により計時された経過時間を予め定められた所定の値と比較する比較手段を含むことを特徴とする、請求項1に記載のデータ処理装置。
- 前記判定手段は、前記比較手段により経過時間が前記所定の値よりも等しいかまたは大とされた場合に前記所定の条件を満たすと判定することを特徴とする、請求項2に記載のデータ処理装置。
- 前記判定手段は、前記計時手段により計時された経過時間をそれまでに検出されたデータ要求信号の検出時刻に基づき定まる時間間隔と比較する比較手段を含むことを特徴とする、請求項1に記載のデータ処理装置。
- 前記判定手段は、前記比較手段により前記経過時間が前記時間間隔よりも大とされた場合に前記所定の条件を満たすと判定することを特徴とする、請求項4に記載のデータ処理装置。
- データをパケット化してデータパケットを生成するデータパケット生成手段と、
前記生成されたデータパケットを記憶する記憶手段と、
データ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するデータパケット出力手段と、
エラー信号が検出されたことに応じて、該エラー信号の検出時刻に基づき以前に出力したデータパケットの中から出力するデータパケットを決定する決定手段とを備え、
前記データパケット出力手段は、前記エラー信号が検出された場合、前記決定手段により決定されたデータパケットを出力することを特徴とするデータ処理装置。 - 前記記憶手段は、前記出力手段によりデータパケットが送信された時刻を該データパケットに対応付けて記憶し、
前記決定手段は、前記エラー信号が検出された時刻と、前記データパケットに対応付けられた時刻と、予め定められた再送期間とに基づき以前に出力したデータパケットの中から出力するデータパケットを決定することを特徴とする、請求項6に記載のデータ処理装置。 - データをパケット化してデータパケットを出力するデータ処理手段と、前記データ処理手段から出力されるデータパケットを通信フレーム化してデータフレームを送信する通信コントローラとを含む通信装置であって、
前記データ処理手段は、
データをパケット化してデータパケットを生成するパケット生成手段と、
前記生成されたデータパケットを記憶する記憶手段と、
前記通信コントローラから出力されてくるデータ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して前記通信コントローラに出力するデータパケット出力手段と、
データ要求信号を検出してからの経過時間を計時する計時手段と、
前記計時手段により計時された経過時間が所定の条件を満たすか否かを判定する判定手段とを備え、
前記データパケット出力手段は、前記判定手段により経過時間が所定の条件を満たすと判定された場合、以前に出力したデータパケットを出力し、
前記通信コントローラは、
前記データ処理手段に対してデータパケットの出力を要求するデータ要求信号を出力するデータ要求信号出力手段と、
前記データ処理手段から出力されてくるデータパケットを受信するデータパケット受信手段と、
データパケットを通信フレーム化してデータフレームを生成するデータフレーム生成手段と、
前記生成されたデータフレームを送信するデータフレーム送信手段とを備えることを特徴とする通信装置。 - データをパケット化してデータパケットを出力するデータ処理手段と、前記データ処理手段から出力されるデータパケットを通信フレーム化してデータフレームを送信する通信コントローラとを含む通信装置であって、
前記データ処理手段は、
データをパケット化してデータパケットを生成するデータパケット生成手段と、
前記生成されたデータパケットを記憶する記憶手段と、
前記通信コントローラから出力されてくるデータ要求信号を検出するデータ要求信号検出手段と、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するデータパケット出力手段と、
前記通信コントローラからデータフレームが送信されなかったことを示すエラー信号が検出されたことに応じて、該エラー信号の検出時刻に基づき以前に出力したデータパケットの中から出力するデータパケットを決定する決定手段とを備え、
前記データパケット出力手段は、前記エラー信号が検出された場合、前記決定手段により決定されたデータパケットを出力し、
前記通信コントローラは、
前記データ処理手段に対してデータパケットの出力を要求するデータ要求信号を出力するデータ要求信号出力手段と、
前記データ処理手段から出力されるるデータパケットを受信するデータパケット受信手段と、
前記受信されたデータパケットを通信フレーム化してデータフレームを生成するデータフレーム生成手段と、
前記生成されたデータフレームを送信するデータフレーム送信手段と、
前記データフレームを送信できなかった場合に、前記データ処理手段にエラー信号を出力するエラー信号出力手段とを備えたことを特徴とする、通信装置。 - データ要求信号によりデータパケットを出力する方法であって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ要求信号を検出するステップと、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
データ要求信号を検出してからの経過時間を計時するステップと、
前記計時ステップにより計時された経過時間が所定の条件を満たすか否かを判定するステップを有し、
前記データパケット出力ステップは、前記判定ステップにより経過時間が所定の条件を満たすと判定された場合、以前に出力されたデータパケットを出力することを特徴とする、データ処理方法。 - エラー信号の検出によりデータパケットを出力する方法であって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ送信要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
出力したデータパケットが送信されなかったことを示すエラー信号が検出されたことに応じて、該エラー信号の検出時刻に基づき以前に出力したデータパケットの中から出力するデータパケットを決定するステップとを有し、
前記データパケット出力ステップは、前記エラー信号が検出された場合に前記決定ステップにより決定されたデータパケットを出力することを特徴とする、データ処理方法。 - データ要求信号によりデータパケットを出力するステップを有するプログラムであって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ要求信号を検出するステップと、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
データ要求信号を検出してからの経過時間を計時するステップと、
前記計時ステップにより計時された経過時間が所定の条件を満たすか否かを判定するステップとを有し、
前記データパケット出力ステップは、前記判定ステップにより経過時間が所定の条件を満たすと判定された場合、以前に出力されたデータパケットを出力することを特徴とする、データ処理プログラム。 - エラー信号の検出によりデータパケットを出力するステップを有するプログラムであって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ送信要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
出力したデータパケットが送信されなかったことを示すエラー信号が検出されたことに応じて、該エラー信号の検出時刻に基づき以前に出力したデータパケットの中から出力するデータパケットを決定するステップとを有し、
前記データパケット出力ステップは、前記エラー信号が検出された場合に前記決定ステップにより決定されたデータパケットを出力することを特徴とする、データ処理プログラム。 - データ要求信号によりデータパケットを出力するステップを有するプログラムを記録した媒体であって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ要求信号を検出するステップと、
データ要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
データ要求信号を検出してからの経過時間を計時するステップと、
前記計時ステップにより計時された経過時間が所定の条件を満たすか否かを判定するステップとを有し、
前記データパケット出力ステップは、前記判定ステップにより経過時間が所定の条件を満たすと判定された場合、以前に出力されたデータパケットを出力するデータ処理プログラムを、記録したコンピュータ読取可能な記録媒体。 - エラー信号の検出によりデータパケットを出力するステップを有するプログラムを記録した媒体であって、
データをパケット化したデータパケットを生成するステップと、
前記生成されたデータパケットを記憶手段に記憶するステップと、
データ送信要求信号の検出に応じて、前記記憶手段からデータパケットを読出して出力するステップと、
出力したデータパケットが送信されなかったことを示すエラー信号が検出されたことに応じて、該エラー信号の検出時刻に基づき以前に出力したデータパケットの中から出力するデータパケットを決定するステップとを有し、
前記データパケット出力ステップは、前記エラー信号が検出された場合に前記決定ステップにより決定されたデータパケットを出力するデータ処理プログラムを、記録したコンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002351735A JP2004187010A (ja) | 2002-12-03 | 2002-12-03 | データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002351735A JP2004187010A (ja) | 2002-12-03 | 2002-12-03 | データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004187010A true JP2004187010A (ja) | 2004-07-02 |
Family
ID=32753563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002351735A Withdrawn JP2004187010A (ja) | 2002-12-03 | 2002-12-03 | データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004187010A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006028138A1 (ja) * | 2004-09-09 | 2006-03-16 | Matsushita Electric Industrial Co., Ltd. | 媒体確保スケジュールを調整する調整方法 |
JP2009522873A (ja) * | 2005-12-29 | 2009-06-11 | インターデイジタル テクノロジー コーポレーション | H−arq支援arq動作のための方法およびシステム |
JP2011514083A (ja) * | 2008-03-07 | 2011-04-28 | 聯發科技股▲ふん▼有限公司 | Harqワイヤレスネットワークに用いるバッファ管理の協力計時器と再伝送計数器 |
JP2011166508A (ja) * | 2010-02-10 | 2011-08-25 | Yamaha Corp | 映像送信装置 |
JP2016149638A (ja) * | 2015-02-12 | 2016-08-18 | 日本電気株式会社 | 通信装置、通信方法、および通信プログラム |
CN111160975A (zh) * | 2019-12-30 | 2020-05-15 | 中国移动通信集团黑龙江有限公司 | 一种目标用户确定方法、装置、设备及计算机存储介质 |
-
2002
- 2002-12-03 JP JP2002351735A patent/JP2004187010A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006028138A1 (ja) * | 2004-09-09 | 2006-03-16 | Matsushita Electric Industrial Co., Ltd. | 媒体確保スケジュールを調整する調整方法 |
JP2009522873A (ja) * | 2005-12-29 | 2009-06-11 | インターデイジタル テクノロジー コーポレーション | H−arq支援arq動作のための方法およびシステム |
JP2011514083A (ja) * | 2008-03-07 | 2011-04-28 | 聯發科技股▲ふん▼有限公司 | Harqワイヤレスネットワークに用いるバッファ管理の協力計時器と再伝送計数器 |
JP2011166508A (ja) * | 2010-02-10 | 2011-08-25 | Yamaha Corp | 映像送信装置 |
JP2016149638A (ja) * | 2015-02-12 | 2016-08-18 | 日本電気株式会社 | 通信装置、通信方法、および通信プログラム |
CN111160975A (zh) * | 2019-12-30 | 2020-05-15 | 中国移动通信集团黑龙江有限公司 | 一种目标用户确定方法、装置、设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5694993B2 (ja) | 通信装置及び通信方法 | |
US7746786B2 (en) | Retransmission control method and device | |
US7505412B2 (en) | Transmission control method and system | |
KR101596143B1 (ko) | 네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어 | |
JP4558515B2 (ja) | 伝送エラー制御方法及び伝送エラー制御デバイス | |
KR100772528B1 (ko) | 유/무선 네트워크에서 효율적인 패킷 재전송 방법 및 장치 | |
KR100750170B1 (ko) | 통신 네트워크에서 데이터 프레임을 효율적으로 전송하는방법 및 장치 | |
WO2007058457A1 (en) | Method and apparatus for efficiently retransmitting data in wireless network environment | |
WO1998012844A1 (fr) | Emetteur-recepteur de paquets et recepteur de paquets | |
JP2008530903A (ja) | ハンドシェークなしの再伝送プロトコル | |
CN101162972A (zh) | 在数据通信系统中确定数据传输状态的方法 | |
JP2007116204A (ja) | データ送信装置とデータ受信装置及びデータ送受信方法 | |
JP2006287925A (ja) | エラー回復機構およびそれを備えるネットワーク要素 | |
JP2004187010A (ja) | データ処理装置、通信装置、データ処理方法、データ処理プログラム、データ処理プログラムを記録したコンピュータ読取可能な記録媒体 | |
JP4244159B2 (ja) | 受信装置、通信システムおよびプログラム | |
BR112012031591B1 (pt) | método em um dispositivo sem fio para transmitir um pacote, e dispositivo sem fio | |
JP4033860B2 (ja) | データ通信方法及びデータ送信装置 | |
WO2022266964A1 (zh) | 基于低功耗蓝牙的数据传输方法、装置、设备及存储介质 | |
JP2003304273A (ja) | パケット中継装置、パケット中継プログラム、およびパケット中継方法 | |
KR101012549B1 (ko) | 트래픽 특성에 따른 패킷의 집합 통신 방법 및 장치 | |
KR100639987B1 (ko) | 무선랜 mac 시스템에 있어서의 폴링 기반 고속 mac송수신 방법 및 그 장치 | |
JP4625119B2 (ja) | 移動通信システム、移動端末及びネットワーク側対向装置 | |
SE512310C3 (sv) | Foerfarande anordning basstationssystem och radioenhet foer att behandla dataramar i ett paketdataradiosystem | |
JPH06152569A (ja) | 通信処理装置 | |
JP2002281034A (ja) | 情報転送装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |