JP2012015752A - 伝送装置、伝送プログラム及び伝送方法 - Google Patents
伝送装置、伝送プログラム及び伝送方法 Download PDFInfo
- Publication number
- JP2012015752A JP2012015752A JP2010149866A JP2010149866A JP2012015752A JP 2012015752 A JP2012015752 A JP 2012015752A JP 2010149866 A JP2010149866 A JP 2010149866A JP 2010149866 A JP2010149866 A JP 2010149866A JP 2012015752 A JP2012015752 A JP 2012015752A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data packet
- fec
- data
- protection range
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6306—Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
【課題】データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制すること。
【解決手段】伝送装置1は、受信部1a、更新部1b、生成部1c及び送信部1dを有する。受信部1aは、誤り訂正によりデータパケットを復元する誤り訂正用パケット又はデータパケットを受信する。データパケットには、誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれる。更新部1bは、受信部1aによりデータパケットが受信された順番に従ってデータパケットの保護範囲情報を更新する。生成部1cは、更新部1bによる保護範囲情報の更新に従って、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する。送信部1dは、更新部1bにより保護範囲情報が更新されたデータパケット及び生成部1cにより生成された誤り訂正用パケットを送信する。
【選択図】図1
【解決手段】伝送装置1は、受信部1a、更新部1b、生成部1c及び送信部1dを有する。受信部1aは、誤り訂正によりデータパケットを復元する誤り訂正用パケット又はデータパケットを受信する。データパケットには、誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれる。更新部1bは、受信部1aによりデータパケットが受信された順番に従ってデータパケットの保護範囲情報を更新する。生成部1cは、更新部1bによる保護範囲情報の更新に従って、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する。送信部1dは、更新部1bにより保護範囲情報が更新されたデータパケット及び生成部1cにより生成された誤り訂正用パケットを送信する。
【選択図】図1
Description
本発明は、伝送装置、伝送プログラム及び伝送方法に関する。
データを伝送するための各種の通信技術が知られている。一例として、P2P(Peer to Peer)やALM(Application Layer Multicast)などの通信方式により、映像や音声などのメディアデータ(media data)を伝送する場合を想定する。これらP2PやALMを用いる場合には、ノード(node)とも呼ばれる伝送装置がツリー(tree)状に配置された伝送システムが構築される。この伝送システムでは、ツリーの頂点に当たるノードから下位階層に割り当てられたノードへと順々にデータをリレー転送する。これにより、大規模なデータ配信を実現する。
かかるリレー転送を行う場合には、リレー遅延とも呼ばれる遅延が発生する。このリレー遅延は、ノード間における伝送ジッタ(jitter)を吸収するために、上位のノードから受信したデータパケットをバッファ(buffer)に蓄積した上で下位のノードへの転送を待機させることにより発生する。このため、リレー遅延は、階層数が増えるに従って遅延量も増大する。
このことから、リアルタイム伝送を行う場合には、データパケットが下位のノードへ可及的速やかに伝送されることが望まれる。このため、パケットロス(packet loss)による再送を抑制するエラー訂正技術が用いられる。一例としては、送信時に冗長なデータを付加した上で送信することにより、受信側で未到着となったデータを冗長なデータから復元するFEC(Forward Error Correction)が挙げられる。
これを説明すると、最上位のノードは、データパケットを伝送する場合にFECパケットを所定の間隔で挿入し、下位階層のノードへ伝送する。かかるFECパケットには、FECパケットが誤り訂正により保護する対象とするデータパケットの範囲を特定する保護範囲情報が含まれる。かかる保護範囲情報を参照することにより、下位階層のノードでは、データパケットが欠落した場合にそのデータパケットを保護対象とするFECパケットを用いてデータパケットを復元できる。
ここで、メディアデータがCBR(constant bit rate)、すなわち固定レートで転送される場合には、一定のデータパケットごとにFECパケットを挿入することにより、FECパケットの挿入間隔を一定とする。一方、メディアデータがVBR(Variable Bit Rate)、すなわち可変レートで転送される場合には、一定の時間間隔でFECパケットを挿入することにより、FECパケットの挿入間隔を可変とする。なぜなら、一定のデータパケット間隔でFECパケットを挿入すると、転送レートが低くなるほど伝送遅延が大きくなるからである。
しかしながら、上記の従来技術では、以下に説明するように、データパケットを可変レートで伝送する場合に伝送遅延が増大するという問題がある。
一例としては、誤り訂正用のパケットをロスした場合には、その誤り訂正用のパケットが保護するデータパケットの伝送遅延が増大する場合がある。図23及び図24は、FECパケットをロスした場合における伝送遅延の一例を説明するための図である。図23及び図24に示す例では、ノード#1、ノード#2、ノード#3の順にデータが転送される場合を想定する。図23及び図24に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス(sequence)番号またはFECパケットに付与されたシーケンス番号を図示している。図23及び図24に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとし、図23及び図24に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。なお、図23及び図24に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図23に示すように、ノード#1は、データパケット1〜4、FECパケット1、データパケット5〜7、FECパケット2の順にノード#2へ伝送する。このとき、ノード#1及びノード#2間でFECパケット1をロスした場合を想定する。この場合には、ノード#2は、ノード#1からデータパケット1〜4、データパケット5〜7、FECパケット2の順に受信する。
ここで、ノード#2は、FECパケット2を受信するTAの時点までFECパケット1が欠落したことを検知できない。なぜなら、ノード#2は、固定レートの場合のようにFECパケットの挿入間隔が一定でないため、FECパケット2に含まれる保護範囲情報を参照する他にFECパケット1のロスを検知する術がないからである。このように、ノード#2は、データパケット1〜4を受信した時点ではFECパケット1が欠落したことを検知できないので、FECパケット1が失われたまま各パケットをノード#3へ伝送する。
このとき、ノード#2及びノード#3の間でデータパケット1〜4のうちいずれかのデータパケットが欠落すると、ノード#3では、欠落したデータパケットを復元できない。図23に示す例で言えば、ノード#3は、ノード#2及びノード#3の間で欠落したデータパケット4を復元できない。この場合には、ノード#3は、データパケット4またはFECパケット1をノード♯2に再送させる必要がある。
図24に示すように、ノード#2は、FECパケット2を受信したTAの時点で始めてFECパケット1のロスを検知する。このとき、ノード#2は、既に受信しているデータパケット1〜4を用いてFECパケット1を生成するか、あるいはノード#1にFECパケット1を再送させることによりFECパケット1を取得した上でFECパケット1をノード#3へ送信する。一方、ノード#3は、ノード#2からFECパケット1を受信するまで待機し、ノード#2からFECパケット1を受信した時点で始めてデータパケット4を復元できる。
このように、ノード#2でFECパケット1をロスした場合には、その下位階層のノード#3でFECパケット1が保護するデータパケット4が欠落すると、TBからTCの期間、すなわち7パケット分の時間にわたってデータパケット4の伝送が遅延してしまう。
このような誤り訂正用のパケットのロスを迅速に検知するために、直前に送信したパケットのシーケンス番号及び優先度をそれ以降に送信するパケットに埋め込んだ上で送信するデータ送信装置を援用することが考えられる。一例として、上記のデータ送信装置を援用する場合には、直前に送信したFECパケットのシーケンス番号をそれ以降に送信するデータパケットに埋め込んで送信させることが想定される。
しかしながら、上記のデータ送信装置を援用した場合でも、データパケットまたは誤り訂正用のパケットの再送が発生すると、その後に伝送遅延が増大する場合がある。
図25は、再送による伝送遅延の拡大の一例を示す図である。図25に示す例では、ノード#1、ノード#2、ノード#3の順にデータが転送される場合を想定する。図25に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号またはFECパケットに付与されたシーケンス番号を図示している。図25に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとする。図25に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。図25に示すFECパケット3は、誤り訂正によりデータパケット8〜10を保護するものとする。図25に示すFECパケット4は、誤り訂正によりデータパケット11〜14を保護するものとする。なお、図25に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図25に示すように、上記のデータ送信装置を援用した場合には、ノード#2は、データパケット5を受信したTDの時点でデータパケット4のロスだけでなく、FECパケット1のロスを検知する。この場合には、FECパケットによる誤り訂正が不可能なため、ノード#2は、TDの時点でデータパケット4またはFECパケット1の再送要求をノード#1へ送信する。例えば、データパケット4の再送要求を行った場合には、ノード#2は、ノード#1及びノード#2間の往復遅延時間であるRTT(Round Trip Time)1が経過したTEの時点でデータパケット4の再送を受信する。その後、ノード#2は、再送により受信したデータパケット4及び先に受信していたデータパケット1〜3を用いてFECパケット1を再生成する。そして、ノード#2は、データパケット1〜3、データパケット5〜7、FECパケット2、データパケット8、データパケット4、FECパケット1・・・の順にノード#3へデータを送信する。
このとき、ノード#2及びノード#3の間でデータパケット3及びデータパケット4のロスが発生した場合を想定する。この場合には、ノード#3は、FECパケット1を受信したTFの時点でデータパケット3及びデータパケット4のロスを検知する。このノード#3の場合、FECパケットの誤り訂正能力を超える2つのパケットロスが発生しているので、ノード#3は、データパケット3またはデータパケット4の再送を受ける必要がある。このため、ノード#3は、FECパケット1を受信したTFの時点でデータパケット3またはデータパケット4の再送要求をノード#2へ送信する。
例えば、データパケット3の再送要求を行った場合には、ノード#3は、ノード#2及びノード#3間の往復遅延時間であるRTT2が経過したTGの時点でデータパケット3の再送を受信する。その後、ノード#3は、再送により受信したデータパケット3、先に受信していたデータパケット1〜2及びFECパケット1を用いてデータパケット4を復元する。
このように、異なるノード間で再送が繰り返し発生した場合には、RTT単位で伝送遅延が拡大することになる。図25に示す例で言えば、THからTJの期間、すなわち11パケット分の時間にわたってデータパケット4の伝送が遅延してしまう。
開示の技術は、上記に鑑みてなされたものであって、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制できる伝送装置、伝送プログラム及び伝送方法を提供することを目的とする。
本願の開示する伝送装置は、誤り訂正によりデータパケットを復元する誤り訂正用パケットまたはデータパケットのいずれかのパケットを受信する受信部を有する。前記受信部が受信するデータパケットには、前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれている。さらに、前記伝送装置は、前記受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新部を有する。さらに、前記伝送装置は、前記更新部による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成部を有する。さらに、前記伝送装置は、前記更新部により保護範囲情報が更新されたデータパケットおよび前記生成部により生成された誤り訂正用パケットを送信する送信部を有する。
本願の開示する伝送装置の一つの態様によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制できるという効果を奏する。
以下に、本願の開示する伝送装置、伝送プログラム及び伝送方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
図1は、実施例1に係る伝送装置の構成を示すブロック図である。図1に示す伝送装置1は、受信部1aと、更新部1bと、生成部1cと、送信部1dとを有する。
受信部1aは、誤り訂正によりデータパケットを復元する誤り訂正用パケットまたはデータパケットのいずれかのパケットを受信する。このデータパケットには、誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれている。
更新部1bは、受信部1aによりデータパケットが受信された順番にしたがってデータパケットの保護範囲情報を更新する。また、生成部1cは、更新部1bによる保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する。また、送信部1dは、更新部1bにより保護範囲情報が更新されたデータパケットおよび生成部1cにより生成された誤り訂正用パケットを送信する。
このように、本実施例に係る伝送装置1では、データパケットに付加された誤り訂正用パケットの保護範囲をデータパケットの受信順に変えて転送すると共にその保護範囲にしたがって新たに誤り訂正用パケットを生成して転送する。
このため、本実施例に係る伝送装置1では、誤り訂正用パケットをロスしたとしてもその誤り訂正用パケットにより保護されるデータパケットの再送が発生しない限りは、データパケットの受信を終えた段階で誤り訂正用パケットが再生成される。それゆえ、本実施例に係る伝送装置1では、誤り訂正用パケットがロスしたままの状態で下位階層の装置へデータ伝送が継続される可能性を低減でき、誤り訂正用パケットのロスに起因する伝送遅延の増大を抑制できる。また、本実施例に係る伝送装置1では、同一の誤り訂正用パケットに保護されていたデータパケットのうち一部のパケットの伝送順序が再送により乖離しても、誤り訂正用パケットの保護範囲を下位階層の伝送装置への伝送順序が近いもの同士に再編成できる。このため、異なる伝送装置間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。よって、本実施例に係る伝送装置1によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能になる。
[システム構成]
続いて、実施例2に係る伝送システムについて説明する。図2は、実施例2に係る伝送システムで実行されるリレー転送の一例を示す図である。図2の例では、P2P(Peer to Peer)やALM(Application Layer Multicast)などの通信方式により、映像や音声などのメディアデータ(media data)を伝送する場合を想定する。
続いて、実施例2に係る伝送システムについて説明する。図2は、実施例2に係る伝送システムで実行されるリレー転送の一例を示す図である。図2の例では、P2P(Peer to Peer)やALM(Application Layer Multicast)などの通信方式により、映像や音声などのメディアデータ(media data)を伝送する場合を想定する。
図2に示す伝送システムは、ノード(node)と呼ばれる伝送装置をツリー(tree)状に含んでなる。この伝送システムでは、ツリーの頂点に当たるノード#1を起点として、下位階層に割り当てられたノードへデータを順次受け渡すリレー転送を可変のビットレートで行う。
図2に示すように、ノード#1が配信するメディアデータは、ノード#2及びノード#3を経由して、ノード#5及びノード#6までリレー転送される。また、ノード#1が配信するメディアデータは、ノード#2及びノード#4を経由して、ノード#7及びノード#8までリレー転送される。また、ノード#1が配信するメディアデータは、ノード#9を経由して、ノード#10及びノード#11までリレー転送される。
ノード#1〜ノード#11は、通信機能を有する情報処理装置であれば伝送装置として採用できる。一例としては、パーソナルコンピュータ(personal computer)を始め、サーバ(server)などの固定端末の他、携帯電話機、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を適用することができる。他の一例としては、L3スイッチ(Layer 3 switch)、ルータ(router)、ルーティング(routing)機能を搭載するコンピュータなどのネットワーク(network)機器であってもかまわない。なお、以下では、ノード#1〜ノード#11を区別せずに説明を行う場合にはノードと総称する。
[RTPヘッダ]
ここで、図2の例では、メディアデータの伝送方式としてRTP(Realtime Transport Protocol)を採用する場合を説明するが、TCP(Transport Control Protocol)、UDP(User Datagram Protocol)などの他の伝送方式を採用してもよい。
ここで、図2の例では、メディアデータの伝送方式としてRTP(Realtime Transport Protocol)を採用する場合を説明するが、TCP(Transport Control Protocol)、UDP(User Datagram Protocol)などの他の伝送方式を採用してもよい。
図2に示すノード間でメディアデータとして伝送されるRTPパケットに付加されるRTPヘッダについて説明する。図3は、RTPヘッダの構造の一例を示す図である。図3に示す「V」は、バージョン(version)を示す2ビット(bit)のデータである。図3に示す「P」は、RTPパケットの最後にパディング(padding)されているバイト(byte)数を示す1ビットのデータである。図3に示す「X」は、RTPヘッダの直後に拡張ヘッダを有する否かを示すフラグである。なお、ここでは、拡張ヘッダは用いないものとする。図3に示す「CC」は、寄与送信元識別子であるCSRC(Contributing Source)が含まれる数を示す4ビットのデータである。
また、図3に示す「M」は、アプリケーションデータの境界を示すマーカビット(marker bit)である。例えば、MPEG(Moving Picture Experts Group)4で圧縮されたメディアデータの場合には、動画像の1フレーム中の最後のデータパケットのマーカビットが「1」とされる。図3に示す「PT」は、アプリケーションデータの符号化方式を示す7ビットのデータである。図3に示す「Sequence Number」は、メディアデータの配信元の装置により付与されたRTPパケットのシーケンス番号を示す7ビットのデータである。図3に示す「Time Stamp」は、データパケットの先頭バイトが送信された時刻を示す32ビットのデータである。図3に示す「SSRC(Synchrozination Source)」は、メディアデータの配信元を識別するための同期送信元識別子である。また、図3に示す「CSRC」は、データパケットを準備したホストを示す寄与送信元識別子であり、CCフィールドで指定された数だけ存在する。
[FECパケット]
図2に示すノードは、自装置の下位階層へメディアデータパケットを転送する場合に、FEC(Forward Error Correction)パケットを付加した上で自装置の下位階層のノードへデータを伝送するものとする。このFECパケットにより、下位階層側のノードでは、パケットロスがFECパケットにより復元可能なパケット数以内である限りは、上位階層側のノードにデータパケットを再送させずともよくなる。一例として、FECパケットの伝送にRFC2733を用いる場合には、少なくとも24パケットのRTPパケットにつき1パケットのFECパケットを付加することが好ましい。
図2に示すノードは、自装置の下位階層へメディアデータパケットを転送する場合に、FEC(Forward Error Correction)パケットを付加した上で自装置の下位階層のノードへデータを伝送するものとする。このFECパケットにより、下位階層側のノードでは、パケットロスがFECパケットにより復元可能なパケット数以内である限りは、上位階層側のノードにデータパケットを再送させずともよくなる。一例として、FECパケットの伝送にRFC2733を用いる場合には、少なくとも24パケットのRTPパケットにつき1パケットのFECパケットを付加することが好ましい。
図4は、FECパケットの構造の一例を示す図である。図4に示すように、FECパケットは、各RTPパケットのビット単位で排他論理和を求めることにより生成されたパリティ情報である「FEC Recovery」と、FECヘッダである「FEC Header」と、RTPヘッダである「RTP Header」とを含む。
図5は、FECヘッダの構造の一例を示す図である。図5に示す「SN Base」は、FECパケットの保護対象となるRTPパケットのシーケンス番号のオフセット番号を示す16ビットのデータである。図5に示す「length recovery」は、RTPパケットの長さのパリティ情報を示す16ビットのデータである。図5に示す「E」は、RTPヘッダの拡張を行っているか否かを示すフラグである。図5に示す「PT recovery」は、RTPパケットのPTビットのパリティ情報を示す7ビットのデータである。図5に示す「Mask」は、FECパケットの保護対象となるRTPパケットを示すフラグである。一例として、FECパケットの保護対象となるRTPパケットは、SN Baseから24パケットのうち、Maskビットでi番目のビットが“1”になっている場合、SN Base+i番目のデータパケットが保護対象となる。図5に示す「TS recovery」は、RTPパケットのTime Stampのパリティ情報を示す32ビットのデータである。
図6は、FECパケットのパリティ情報の生成要領を説明するための図である。図6に示すように、パリティ情報は、各RTPパケットのビット単位で排他的論理和(XOR:eXclusive OR)を算出することにより生成される。図6に示す例で言えば、FECパケットFのビットf1は、RTPパケット1の先頭ビットa1、RTPパケット2の先頭ビットb1、RTPパケット3の先頭ビットc1及びRTPパケット4の先頭ビットd1をそれぞれ加算することにより算出される。また、FECパケットFのビットf2は、RTPパケット1の先頭ビットa2、RTPパケット2の先頭ビットb2、RTPパケット3の先頭ビットc2及びRTPパケット4の先頭ビットd2をそれぞれ加算することにより算出される。同様にして、FECパケットFのビットf3から図示しないFECパケットFのビットfnが算出される。
[伝送装置の構成]
次に、本実施例に係る伝送装置の構成について説明する。図7は、実施例2に係る伝送装置の構成を示すブロック図である。なお、伝送装置10は、図7に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
次に、本実施例に係る伝送装置の構成について説明する。図7は、実施例2に係る伝送装置の構成を示すブロック図である。なお、伝送装置10は、図7に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
図7に示す伝送装置10は、パケット受信部11と、パケット送信部12と、再送通信部13と、バッファ14aと、作業用メモリ14bと、再生処理部15とを有する。さらに、伝送装置10は、FECパケット情報付加部16と、パケットロス判定部17と、FECパケット情報変更部18と、FECパケット生成制御部19とを有する。なお、図7に示した再生処理部15は、必ずしもノード#1〜ノード#11の全てのノードに設ける必要はない。また、図7に示したFECパケット情報付加部16は、最上位の階層とされるノード#1だけに設けることもできる。
パケット受信部11は、上位階層のノードから送信されるデータパケットまたはFECパケットのいずれかのパケットを受信する処理部である。
パケット送信部12は、データパケットまたはFECパケットを下位階層のノードへ送信する処理部である。一例としては、パケット送信部12は、バッファ14aに格納されたデータパケットおよびFECパケットをエンコード時のVBR(Variable Bit Rate)、すなわち可変レートで送信する。なお、ここでは、可変レートで転送する場合を説明したが、CBR(constant bit rate)、すなわち固定レートで転送することもできる。
再送通信部13は、上位階層のノードとの間で再送に関する通信を行う処理部である。一例としては、再送通信部13は、後述のパケットロス判定部17による指示に基づき、上位階層のノードへデータパケットの再送要求を行う。他の一例としては、再送通信部13は、上位階層のノードから再送されたデータパケットを受信する。
バッファ(buffer)14aは、パケット受信部11または再送通信部13により受信されたパケットを蓄積する記憶デバイスである。このバッファ14aは、ノード間における伝送ジッタ(jitter)を吸収するために用いられる。また、作業用メモリ14bは、後述のパケットロス判定部17、FECパケット情報変更部18及びFECパケット生成制御部19により使用されるメモリである。
これらバッファ14a及び作業用メモリ14bの一例としては、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などの半導体メモリ素子が採用される。なお、バッファ14aは、ハードディスク、光ディスクなどの記憶装置を採用することとしてもかまわない。
再生処理部15は、バッファ14aに格納されたデータパケットの再生処理を行う処理部である。一例として、メディアデータの圧縮符号化方式としてMPEGを用いる場合には、再生処理部は、データパケットをデコード(decode)するMPEGデコーダ(decoder)として機能する。再生処理部15は、デコードしたメディアデータを図示しない表示部及び音声出力部を介して再生する。なお、メディアデータの圧縮符号化方式は、必ずしもMPEGである必要はなく、他の符号化方式を用いることとしてもよい。
FECパケット情報付加部16は、メディアデータからパケット化されたデータパケットにFECパケット情報を付加する処理部である。このFECパケット情報には、FECパケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲、FECパケットに付与されるシーケンス番号、データパケットの受信順に付与される追加シーケンス番号が挙げられる。なお、FECパケット情報の付加は、図2に示すノード#2及びノード#9以降の下位階層のノードでは実行されない。
図8は、FECパケット情報付加部16により付加されるFECパケット情報の一例を示す図である。なお、図8の例では、FECパケット情報に該当する部分の塗りつぶしを網掛けにより図示している。図8に示すように、FECパケット情報付加部16は、FECパケットによるRTPパケットの保護範囲を保護対象とするRTPパケットの「CSRC」の後に「FEC Coverage」として付加する。また、FECパケット情報付加部16は、FECパケットのシーケンス番号を保護対象とするRTPパケットの「FEC Coverage」の後に「FEC Sequence Number」として付加する。さらに、FECパケット情報付加部16は、追加シーケンス番号を保護対象とするRTPパケットの「FEC Sequence Number」の後に「Additional Sequence Number」として付加する。
図9は、RTPパケットが含むFECパケット情報の一例を示す図である。図9に示す例では、パケットを模式化した小包にRTPパケットにFECパケット情報を図示している。図9に示す符号31は、メディアデータをパケット化する際にデータパケットに付与されたデータパケットのシーケンス番号を指す。図9に示す符号32は、各伝送装置でデータパケットの受信順に付与される追加シーケンス番号を指す。図9に示す符号33は、FECパケットによるRTPパケットの保護範囲を指す。また、図9に示す符号34は、FECパケットのシーケンス番号を指す。
図9に示す例では、RTPパケットのシーケンス番号が「1」であり、RTPパケットの追加シーケンス番号が「1」であることを示し、また、RTPパケットを保護するFECパケットのシーケンス番号が「1」であることを示す。さらに、図9に示す例では、FECパケットが保護対象とするRTPパケット数が「4」であることを示す。すなわち、幾つのRTPパケットから生成されたパリティ情報であるのかを示すことにもなる。
図7の説明に戻り、パケットロス判定部17は、パケット受信部11により受信されたFECパケット情報を用いて、データパケットのパケットロスを判定する処理部である。
このパケットロス判定部17は、パケット受信部11または再送通信部13によりパケットが受信される度に、作業用メモリ14b内に記憶されたデータパケットの受信回数を加算する更新を行う。すなわち、パケットロス判定部17は、作業用メモリ14bを用いて、最初にパケットを受信してから今回受信するまでのデータパケットの累積受信回数を計測する。これにより受信パケットの受信順序を判別する。
まず、パケット受信部11により再送ではない通常のデータパケットを受信した場合のパケットロスの判定要領について説明する。データパケットを受信した場合には、パケットロス判定部17は、最初の受信パケットであるか否かを判定する。このとき、最初の受信パケットであった場合には、パケットロス判定部17は、追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号などのFECパケット情報を作業用メモリ14bへ登録する。そして、パケットロス判定部17は、下位階層への伝送用とは別にFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する。
一方、最初の受信パケットではない場合には、パケットロス判定部17は、今回に受信したデータパケットのRTPヘッダに書き込まれている追加シーケンス番号と、1つ前に受信したデータパケットの追加シーケンス番号とが連番であるか否かを判定する。つまり、パケットロス判定部17は、前後に受信したデータパケットの追加シーケンス番号の差が1であるか否かを判定する。このように、追加シーケンス番号が連番であるか否かを判定することにより、パケットロスの有無が検知できる。
さらに、パケットロス判定部17は、作業用メモリ14bに記憶されたFECパケット情報を参照して、今回に受信したデータパケットと前回に受信したデータパケットのとの間でFECパケットの保護範囲及びシーケンス番号が同一であるか否かを判定する。このように、FECパケットの保護範囲及びシーケンス番号が同一であるか否かを判定することにより、後述のFECパケット情報変更部18により追加シーケンス番号だけを変更するのか、あるいはFECパケット情報も併せて変更するのかを判断できる。
このとき、追加シーケンス番号が連番であり、かつFECパケットの保護範囲及びシーケンス番号が同一である場合には、パケットロス判定部17は、今回に受信したデータパケットのXORを後述のFECパケット生成制御部19に算出させる。その後、パケットロス判定部17は、作業用メモリ14bに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する。そして、パケットロス判定部17は、今回までにXORが算出されたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達したか否かを判定する。この結果、FECパケットの保護範囲に到達した場合には、パケットロス判定部17は、それまでに算出されていたXORの算出結果を用いてFECパケットを生成するようにFECパケット生成制御部19に指示する。
また、追加シーケンス番号が連番であり、かつFECパケットの保護範囲及びシーケンス番号が同一でない場合には、パケットロス判定部17は、次のFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する。その後、パケットロス判定部17は、今回受信したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号などのFECパケット情報を作業用メモリ14bへ登録する。ここでのFECパケット情報の登録は、今回までに受信したデータパケットを保護していたFECパケットの次のFECパケットにより保護されているデータパケットに関するパケットロスを判定するために実行される。
また、追加シーケンス番号が連番ではなく、かつFECパケットの保護範囲及びシーケンス番号が同一である場合には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、今回に受信したデータパケットに書き込まれているFECパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する。一例として、FECパケットにより復元可能なパケット数が1つである場合には、パケットロス判定部17は、パケットロス数が2つ以上であるか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部13に送信させる。一例として、パケットロス数が2つである場合には、パケットロス判定部17は、FECパケットにより復元可能なパケット数「1」を残し、他のデータパケットの再送要求を再送通信部13に送信させる。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する。その後、パケットロス判定部17は、作業用メモリ14bに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する。
また、追加シーケンス番号が連番ではなく、かつFECパケットの保護範囲及びシーケンス番号が同一ではない場合には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、今回に受信したデータパケットに書き込まれているFECパケットの保護範囲の直前の保護範囲、すなわち作業用メモリ14bに記憶されている保護範囲において再送を要するパケット数をロスしているか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部13に送信させる。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する。その後、パケットロス判定部17は、作業用メモリ14bに記録されているFECパケット情報を今回に受信したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する。
次に、パケット受信部11によりFECパケットを受信した場合のパケットロスの判定要領について説明する。FECパケットを受信した場合には、パケットロス判定部17は、今回に受信したFECパケットにより保護されているデータパケットのシーケンス番号を取得する。ここで、パケットロス判定部17は、作業用メモリ14bに記憶された変更情報リストの中に、先に取得したデータパケットのシーケンス番号が登録されているか否かを判定する。なお、変更情報リストは、後述のFECパケット情報変更部18によりFECパケット情報が変更されたデータパケットのシーケンス番号が登録される。
このとき、変更情報リストの中にデータパケットのシーケンス番号が登録されていない場合には、パケットロス判定部17は、データパケットのシーケンス番号に対応するデータパケットをバッファ14aから検索する。一方、変更情報リストの中にデータパケットのシーケンス番号が登録されている場合には、パケットロス判定部17は、変更情報リストに登録されているデータパケットのシーケンス番号に対応するデータパケットをバッファ14aから検索する。この場合には、FECパケット情報が変更される前のデータパケットおよびFECパケット情報が変更された後の両方のデータパケットが抽出されることになる。
そして、パケットロス判定部17は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部13に送信させる。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する。
一方、再送を要するパケット数をロスしていない場合には、パケットロス判定部17は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する。このとき、パケットロスが存在する場合には、FECパケットによる復元が可能である。このため、パケットロス判定部17は、今回に受信したFECパケットを用いて、パケットロスしているデータパケットを後述のFECパケット生成制御部19に復元させる。その後、パケットロス判定部17は、作業用メモリ14bに記録されているFECパケット情報を今回に復元したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する。
FECパケット情報変更部18は、パケット受信部11および再送通信部13によりデータパケットが受信された順番にしたがってデータパケットのFECパケット情報を更新する処理部である。
一例としては、パケット受信部11によりデータパケットを受信した場合には、FECパケット情報変更部18は、パケットロス判定部17によりパケットロスが検知された場合に、FECパケット情報の変更を行う。このとき、前後のデータパケットにそれぞれ書き込まれているFECパケットの保護範囲及びシーケンス番号が同一であるか否かにより、FECパケット情報のうちいずれの項目の情報を変更するかが変わる。
このとき、FECパケットの保護範囲及びシーケンス番号が同一である場合には、FECパケット情報変更部18は、受信したデータパケットのRTPヘッダに書き込まれているFECパケット情報のうち追加シーケンス番号を変更する。つまり、FECパケット情報変更部18は、作業用メモリ14bに記憶された受信回数、すなわちデータパケットの受信順序を今回に受信したデータパケットのRTPヘッダに割り当てられた追加シーケンス番号の領域に書き込む。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する。
一方、FECパケットの保護範囲及びシーケンス番号が同一でない場合には、FECパケット情報変更部18は、次のような処理を行う。すなわち、FECパケット情報変更部18は、受信したデータパケットのRTPヘッダに書き込まれている追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号を変更する。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する。
このように、全てのFECパケット情報を変更する場合には、FECパケット情報変更部18は、今回に受信したデータパケットの受信順序をRTPヘッダに割り当てられた追加シーケンス番号の領域に書き込む。さらに、FECパケット情報変更部18は、作業用メモリ14bに記憶されているFECパケットの保護範囲及びFECパケットのシーケンス番号をデータパケットのRTPヘッダに書き込む。
他の一例としては、FECパケット情報変更部18は、後述のFECパケット生成制御部19によりデータパケットが復元された場合にも、復元したデータパケットの全てのFECパケット情報を変更する。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する。
更なる一例としては、FECパケット情報変更部18は、再送通信部13により再送のデータパケットが受信された場合にも、再送パケットの全てのFECパケット情報を変更する。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する。
FECパケット生成制御部19は、FECパケットの生成を制御する処理部である。一例としては、FECパケット生成制御部19は、パケットロス判定部17による指示に基づき、パケット受信部11により受信されたデータパケット、再送通信部13により受信された再送のデータパケットのXORを算出する。このとき、FECパケット生成制御部19は、XORの算出を終えたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達した場合には、それまでに算出したデータパケットのXORからFECパケットを生成する。他の一例としては、FECパケット生成制御部19は、パケット受信部11により受信されたFECパケットを用いて、FECパケットの保護範囲の中でパケットロスしているデータパケットを復元する。
なお、パケット受信部11、パケット送信部12、再送通信部13、再生処理部15、FECパケット情報付加部16、パケットロス判定部17、FECパケット情報変更部18及びFECパケット生成制御部19には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
[処理の流れ]
次に、本実施例に係る伝送装置の処理の流れについて説明する。図10〜図12は、実施例2に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部11または再送通信部13のいずれかでパケットが受信された場合に起動する処理である。
次に、本実施例に係る伝送装置の処理の流れについて説明する。図10〜図12は、実施例2に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部11または再送通信部13のいずれかでパケットが受信された場合に起動する処理である。
図10に示すように、上位階層のノードからパケットを受信すると、パケットロス判定部17は、受信パケットが再送ではない通常のデータパケットであるのか否かを判定する(ステップS101)。
このとき、受信パケットが通常のデータパケットである場合(ステップS101肯定)には、図10に示すステップS103〜S133までのデータパケット受信処理が実行される。また、受信パケットが通常のデータパケットではなくFECパケットである場合(ステップS101否定かつステップS102肯定)には、図11に示すステップS201〜S217のFECパケット受信処理が実行される。また、受信パケットが通常データパケットまたはFECパケットでもなく、再送パケットである場合には、(ステップS101否定かつステップS102否定)には、図12に示すステップS301〜S310の再送パケット受信処理が実行される。
まず、データパケット受信処理を説明する。受信パケットが通常のデータパケットである場合(ステップS101肯定)には、パケットロス判定部17は、データパケットのRTPヘッダに書き込まれているFECパケット情報を取得する(ステップS103)。例えば、パケットロス判定部17は、FECパケット情報として、追加シーケンス番号、FECパケットの保護範囲およびFECパケットのシーケンス番号を取得する。
続いて、パケットロス判定部17は、データパケットが最初の受信パケットであるか否かを判定する(ステップS104)。このとき、最初の受信パケットであった場合(ステップS104肯定)には、パケットロス判定部17は、次のような処理を実行する。すなわち、パケットロス判定部17は、追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号などのFECパケット情報を作業用メモリ14bへ登録する(ステップS105)。
そして、パケットロス判定部17は、下位階層への伝送用とは別にFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する(ステップS106)。続いて、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS107)。その上で、FECパケット生成制御部19は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ14aへ格納し(ステップS108)、処理を終了する。
一方、最初の受信パケットではない場合(ステップS104否定)には、パケットロス判定部17は、次のような処理を実行する。すなわち、パケットロス判定部17は、今回に受信したデータパケットのRTPヘッダに書き込まれている追加シーケンス番号と、1つ前に受信したデータパケットの追加シーケンス番号とが連番であるか否かを判定する(ステップS109)。
さらに、パケットロス判定部17は、今回に受信したデータパケットと前回に受信したデータパケットのとの間でFECパケットの保護範囲及びシーケンス番号が同一であるか否かを判定する(ステップS110およびステップS117)。
ここで、追加シーケンス番号が連番であり、かつFECパケットの保護範囲及びシーケンス番号が同一である場合(ステップS110肯定かつステップS117肯定)には、FECパケット生成制御部19は、次のような処理を実行する。すなわち、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS111)。
そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達したか否かを判定する(ステップS112)。続いて、FECパケットの保護範囲に到達した場合(ステップS112肯定)には、FECパケット生成制御部19は、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS113)。
その後、パケットロス判定部17は、作業用メモリ14bに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する(ステップS114)。そして、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットとともに今回生成したFECパケットをバッファ14aへ格納し(ステップS108)、処理を終了する。
また、追加シーケンス番号が連番であり、かつFECパケットの保護範囲及びシーケンス番号が同一でない場合(ステップS109肯定かつステップS110否定)には、パケットロス判定部17は、次のような処理を実行する。すなわち、パケットロス判定部17は、次のFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する(ステップS115)。
そして、パケットロス判定部17は、今回受信したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号などのFECパケット情報を作業用メモリ14bへ更新する(ステップS116)。その後、FECパケット生成制御部19は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ14aへ格納し(ステップS108)、処理を終了する。
また、追加シーケンス番号が連番ではなく、かつFECパケットの保護範囲及びシーケンス番号が同一である場合(ステップS109否定かつステップS117肯定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、今回に受信したデータパケットに書き込まれているFECパケットの保護範囲において所定数、例えば再送を要するパケット数がロスしているか否かを判定する(ステップS118)。なお、再送を要するパケット数をロスしていない場合(ステップS118否定)には、そのままステップS121の処理へ移行する。
このとき、再送を要するパケット数をロスしている場合(ステップS118肯定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部13に送信させる(ステップS119)。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する(ステップS120)。
そして、FECパケット情報変更部18は、受信したデータパケットのRTPヘッダに書き込まれているFECパケット情報のうち追加シーケンス番号を変更する(ステップS121)。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する(ステップS122)。
続いて、パケットロス判定部17は、作業用メモリ14bに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する(ステップS123)。そして、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS124)。その後、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットをバッファ14aへ格納し(ステップS108)、処理を終了する。
また、追加シーケンス番号が連番ではなく、かつFECパケットの保護範囲及びシーケンス番号が同一ではない場合(ステップS109否定かつステップS117否定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、今回に受信したデータパケットに書き込まれているFECパケットの保護範囲の直前の保護範囲において所定数、例えば再送を要するパケット数をロスしているか否かを判定する(ステップS125)。なお、再送を要するパケット数をロスしていない場合(ステップS125否定)には、そのままステップS128の処理へ移行する。
このとき、再送を要するパケット数をロスしている場合(ステップS125肯定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部13に送信させる(ステップS126)。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する(ステップS127)。
そして、FECパケット情報変更部18は、受信したデータパケットのRTPヘッダに書き込まれている追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号を変更する(ステップS128)。その上で、FECパケット情報変更部18は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する(ステップS129)。
その後、パケットロス判定部17は、作業用メモリ14bに記録されているFECパケット情報を今回に受信したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS130)。
続いて、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS131)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達したか否かを判定する(ステップS132)。
そして、FECパケットの保護範囲に到達した場合(ステップS132肯定)には、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS133)。その後、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットとともに今回生成したFECパケットをバッファ14aへ格納し(ステップS108)、処理を終了する。
また、FECパケットの保護範囲に到達していない場合(ステップS132否定)には、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットをバッファ14aへ格納し(ステップS108)、処理を終了する。
次に、図11を用いて、上述したFECパケット受信処理について説明する。FECパケットを受信した場合(ステップS102肯定)には、パケットロス判定部17は、今回に受信したFECパケットにより保護されているデータパケットのシーケンス番号を取得する(ステップS201)。
ここで、パケットロス判定部17は、作業用メモリ14bに記憶された変更情報リストの中に、先に取得したデータパケットのシーケンス番号が登録されているか否かを判定する(ステップS202)。
このとき、変更情報リストの中にデータパケットのシーケンス番号が登録されている場合(ステップS202肯定)には、パケットロス判定部17は、次のような処理を実行する。すなわち、パケットロス判定部17は、FECパケット情報が変更される前のデータパケットおよびFECパケット情報が変更された後の両方のデータパケットをバッファ14aから検索する(ステップS203)。
一方、変更情報リストの中にデータパケットのシーケンス番号が登録されていない場合(ステップS202否定)には、パケットロス判定部17は、データパケットのシーケンス番号に対応するデータパケットをバッファ14aから検索する(ステップS204)。
そして、パケットロス判定部17は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する(ステップS205)。
このとき、再送を要するパケット数をロスしている場合(ステップS205肯定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、パケットロスしたデータパケット、すなわち再送要求の対象とするパケットが作業用メモリ14bに記憶された再送待ちリストに登録されているか否かを判定する(ステップS206)。なお、再送待ちリストに登録されていない場合(ステップS206否定)には、そのまま処理を終了する。
そして、再送待ちリストに登録されている場合(ステップS206肯定)には、パケットロス判定部17は、次のような処理を実行する。すなわち、パケットロス判定部17は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部13に送信させる(ステップS207)。その上で、パケットロス判定部17は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録し(ステップS208)、処理を終了する。
一方、再送を要するパケット数をロスしていない場合(ステップS205否定)には、パケットロス判定部17は、次のような処理を行う。すなわち、パケットロス判定部17は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する(ステップS209)。
このとき、パケットロスが存在しない場合(ステップS209否定)には、そのまま処理を終了する。一方、パケットロスが存在する場合(ステップS209肯定)には、FECパケット生成制御部19は、今回に受信したFECパケットを用いて、パケットロスしているデータパケットを復元する(ステップS210)。
そして、FECパケット情報変更部18は、復元したデータパケットのRTPヘッダに書き込まれている追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号を変更する(ステップS211)。その上で、FECパケット情報変更部18は、復元したデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する(ステップS212)。
その後、パケットロス判定部17は、作業用メモリ14bに記録されているFECパケット情報を今回に復元したデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS213)。
続いて、FECパケット生成制御部19は、復元したデータパケットのXORを算出する(ステップS214)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達したか否かを判定する(ステップS215)。
そして、FECパケットの保護範囲に到達した場合(ステップS215肯定)には、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS216)。その後、FECパケット生成制御部19は、今回に復元したデータパケットとともに今回に生成したFECパケットをバッファ14aへ格納し(ステップS217)、処理を終了する。
また、FECパケットの保護範囲に到達していない場合(ステップS215否定)には、FECパケット生成制御部19は、今回に復元したデータパケットをバッファ14aへ格納し(ステップS217)、処理を終了する。
次に、図12を用いて、上述した再送パケット受信処理について説明する。再送のデータパケットを受信した場合(ステップS102否定)には、パケットロス判定部17は、再送のデータパケットのRTPヘッダに書き込まれているデータパケットのシーケンス番号を取得する(ステップS301)。
そして、パケットロス判定部17は、再送のデータパケットのシーケンス番号が作業用メモリ14bに記憶された再送待ちリストに登録されているか否かを判定する(ステップS302)。なお、再送待ちリストに登録されていない場合(ステップS302否定)には、そのまま処理を終了する。
そして、再送待ちリストに登録されている場合(ステップS302肯定)には、パケットロス判定部17は、再送を受けたデータパケットのシーケンス番号を再送待ちリストから削除する(ステップS303)。
そして、FECパケット情報変更部18は、再送されたデータパケットのRTPヘッダに書き込まれている追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号を変更する(ステップS304)。その上で、FECパケット情報変更部18は、再送されたデータパケットに付与されているシーケンス番号を作業用メモリ14b内の変更情報リストへ登録する(ステップS305)。
その後、パケットロス判定部17は、作業用メモリ14bに記録されているFECパケット情報を今回に再送されたデータパケットの追加シーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS306)。
続いて、FECパケット生成制御部19は、再送されたデータパケットのXORを算出する(ステップS307)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットの数が作業用メモリ14bに記憶されたFECパケットの保護範囲に到達したか否かを判定する(ステップS308)。
そして、FECパケットの保護範囲に到達した場合(ステップS308肯定)には、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS309)。その後、FECパケット生成制御部19は、今回に再送されたデータパケットとともに今回に生成したFECパケットをバッファ14aへ格納し(ステップS310)、処理を終了する。
また、FECパケットの保護範囲に到達していない場合(ステップS308否定)には、FECパケット生成制御部19は、今回に再送されたデータパケットをバッファ14aへ格納し(ステップS310)、処理を終了する。
[実施例2の効果]
上述してきたように、本実施例に係る伝送装置10は、FECパケットをロスしたとしてもそのFECパケットにより保護されるデータパケットの再送が発生しない限りは、データパケットの受信を終えた段階でFECパケットが再生成される。それゆえ、本実施例に係る伝送装置10では、FECパケットがロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、FECパケットのロスに起因する伝送遅延の増大を抑制できる。また、本実施例に係る伝送装置10では、同一のFECパケットに保護されていたデータパケットのうち一部のパケットの伝送順序が再送により乖離しても、FECパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。よって、本実施例に係る伝送装置10によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
上述してきたように、本実施例に係る伝送装置10は、FECパケットをロスしたとしてもそのFECパケットにより保護されるデータパケットの再送が発生しない限りは、データパケットの受信を終えた段階でFECパケットが再生成される。それゆえ、本実施例に係る伝送装置10では、FECパケットがロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、FECパケットのロスに起因する伝送遅延の増大を抑制できる。また、本実施例に係る伝送装置10では、同一のFECパケットに保護されていたデータパケットのうち一部のパケットの伝送順序が再送により乖離しても、FECパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。よって、本実施例に係る伝送装置10によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
さらに、本実施例に係る伝送装置10は、データパケットが受信された場合に、該データパケットに含まれる追加シーケンス番号を用いて、データパケットのパケットロスを判定する。そして、本実施例に係る伝送装置10は、パケットロスの判定結果に基づき、上位階層のノードへデータパケットの再送要求を行い、再送されたデータパケットを受信する。その上で、本実施例に係る伝送装置10は、再送により受信したデータパケットを含め、データパケットを受信した順番にしたがってデータパケットのFECパケット情報を更新する。このため、本実施例に係る伝送装置10では、データパケットを受信する度にパケットロスの有無を検知することができる。それゆえ、本実施例に係る伝送装置10によれば、データパケットの待機時間を低減しつつ、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
かかる効果を伝送例を挙げて説明する。図13は、実施例2に係る伝送装置によるデータ伝送の一例を示す図である。図13に示す例では、ノード#1からノード#2へデータが転送される場合を想定する。また、図13に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、追加シーケンス番号、FECパケットの保護範囲およびFECパケットに付与されたシーケンス番号を図示している。図13に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとし、図13に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。なお、図13に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図13に示すように、各データパケットには、ノード#1のFECパケット情報付加部16によりデータパケットの送信順に追加シーケンス番号が1つずつインクリメントされて付加される。さらに、各データパケットには、ノード#1のFECパケット情報付加部16によりFECパケットの保護範囲が付加される。一例としては、FECパケット1は、データパケット1〜4から生成されているので、FECパケット1が保護するパケット数「4」がデータパケット1〜4のFECパケットの保護範囲として付加される。さらに、各データパケットには、ノード#1のFECパケット情報付加部16によりFECパケットに付与されるシーケンス番号も付加される。なお、ノード#2以降のノードでは、FECパケット情報が既に付加されているので、FECパケット情報付加部16によるFECパケット情報の付加は実行されない。
このようにFECパケット情報を付加する場合には、データパケットごとに図10に示した「FEC Coverage」のフィールドにFECパケットの保護範囲(4,3,・・・)が付加されることになる。また、図8に示したFECパケットのRTPヘッダの「SN Base」及び「Mask」は、追加シーケンス番号を基に設定されるものとする。一例としては、FECパケット1の場合は、「SN Base:1、Mask:0xF00000」と設定する。この場合には、上位4bitが保護対象となる。ここでは、追加シーケンス番号を基に設定しているが、データパケットのシーケンス番号を用いて、「SN Base」及び「Mask」を設定することとしてもよい。
図13に示すように、ノード#1は、データパケット1〜4、FECパケット1、データパケット5〜7、FECパケット2の順にノード#2へ伝送する。このとき、ノード#1及びノード#2間でFECパケット1をロスした場合を想定する。この場合には、ノード#2は、ノード#1からデータパケット1〜4、データパケット5〜7、FECパケット2の順に受信する。
ここで、ノード#2は、データパケット1〜4を受信する度に各データパケットのXORを計算し、FECパケットの保護範囲「4」に到達したTKの時点でFECパケット1のパリティ情報の計算が完了する。そして、ノード#2は、ノード#1及びノード#2間におけるFECパケット1のロスの如何にかかわらず、FECパケット1を再生成して下位のノードへ送信できる。このため、FECパケット1のロスを検知せずとも、下位のノードへの転送できる。それゆで、本実施例では、FECパケット1がロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、FECパケットのロスに起因する伝送遅延の増大を抑制できる。
図14は、実施例2に係る伝送装置によるデータ伝送の一例を示す図である。図14に示す例では、ノード#1、ノード#2、ノード#3の順にデータが転送される場合を想定する。図14に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、追加シーケンス番号、FECパケットの保護範囲およびFECパケットに付与されたシーケンス番号を図示している。図14に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとする。図14に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。図14に示すFECパケット3は、誤り訂正によりデータパケット8〜10を保護するものとする。図14に示すFECパケット4は、誤り訂正によりデータパケット11〜14を保護するものとする。なお、図14に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図14に示すように、ノード#2は、データパケット5を受信したTDの時点で追加シーケンス番号「5」が前回に受信したデータパケット3の追加シーケンス番号「3」と連番でないため、データパケット4のロスを検知する。さらに、ノード#2は、今回に受信したデータパケット5のFECパケットの保護範囲とFECパケットのシーケンス番号がデータパケットとは異なるので、FECパケット1のロスを検知する。この場合には、FECパケットの誤り訂正能力を超えるパケットロスが発生しているので、ノード#2は、TLの時点でデータパケット4の再送要求をノード#1へ送信する。この再送要求を行ったデータパケット4は、ノード#1及びノード#2間の往復遅延時間であるRTT(Round Trip Time)1が経過したTMの時点でノード#2へ到達する。
ここで、ノード#2は、図25に示した従来技術のように、データパケット4の再送を受けてからデータパケット1〜4のXORを算出してFECパケット1を生成するようなことはしない。
すなわち、ノード#2は、データパケット5のFECパケット情報を変更する。この場合には、ノード#2は、データパケット5の追加シーケンス番号「5」をノード#2における受信順序「4」へ書き換える。さらに、ノード#2は、データパケット5のFECパケットの保護範囲「3」を作業用メモリ14bに記憶されたFECパケットの保護範囲「4」へ書き換える。さらに、ノード#2は、データパケット5のFECパケットのシーケンス番号「2」を作業用メモリ14bに記憶されたFECパケットのシーケンス番号「1」へ書き換える。
その上で、ノード#2は、データパケット1、データパケット2、データパケット3及びデータパケット5を用いて、FECパケット1を再生成する。このとき、データパケット5を受信したTLの時点では、既にデータパケット1〜データパケット3のXORは計算済みであるので、その計算結果とデータパケット5とのXORを計算することにより、FECパケット1を再生成できる。
このデータパケット5のFECパケット情報の変更に伴い、ノード#2は、データパケット4の再送を受けるまでに到着するデータパケット6〜データパケット8の追加シーケンス番号をそれぞれ1つずつ繰り上げる更新を行う。さらに、データパケット8を受信した段階でデータパケット6〜8のXORが算出されることにより、データパケット6を受信した際に作業用メモリ14bに登録されたFECパケットの保護範囲「3」を満たす。このため、ノード#2は、データパケット8のFECパケットの保護範囲「3」を作業用メモリ14bに記憶されたFECパケットの保護範囲「3」へ上書きする。さらに、ノード#2は、データパケット8のFECパケットのシーケンス番号「3」を作業用メモリ14bに記憶されたFECパケットのシーケンス番号「2」へ書き換える。その上で、ノード#2は、データパケット6〜8のXORの算出結果を用いて、FECパケット2を再生成する。
その後、ノード#2は、データパケット4の再送を受信した場合に、データパケット4の追加シーケンス番号「4」をノード#2における受信順序「8」へ書き換える。さらに、ノード#2は、データパケット4のFECパケットの保護範囲を「4」から「3」へ書き換える。さらに、ノード#2は、データパケット4のFECパケットのシーケンス番号を「1」から「3」へ書き換える。その上で、ノード#2は、データパケット4、データパケット9及びデータパケット10を用いて、FECパケット3を再生成する。
このようにしてFECパケット情報の変更およびFECパケットの再生成を行う。そして、ノード#2は、データパケット1〜3、データパケット5、FECパケット1、データパケット6〜8、FECパケット2、データパケット4、データパケット9〜10・・・の順にノード#3へデータを送信する。
このとき、ノード#2及びノード#3の間でデータパケット3及びデータパケット4のロスが発生した場合を想定する。このとき、図25に示した従来技術の場合には、ノード#3で更なる再送が発生する結果、THからTJの期間、すなわち11パケット分の時間にわたってデータパケット4の伝送が遅延する。
一方、本実施例の場合には、データパケット4がノード#2で受信順序が近傍であったデータパケット9及びデータパケット10との間でXORが計算されたFECパケット3へ編入されている。このため、データパケット3及びデータパケット4がロスした場合でも、FECパケット1及びFECパケット3の誤り訂正能力を超えない。それゆえ、ノード#3は、FECパケット1を用いてデータパケット3を復元するとともに、FECパケット3を用いてデータパケット4を復元できる。よって、データパケット4の伝送遅延は、TNからTPの期間、すなわち4パケット分の時間に軽減される。
このように、同一のFECパケット1に保護されていたデータパケット1〜4のうち一部のデータパケット4の伝送順序が再送により乖離しても、FECパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。
さて、上記の実施例2では、FECパケット情報として追加シーケンス番号をデータパケットに付加することによりパケットロスを迅速に検知する場合を説明したが、開示の装置はこれに限定されず、他の方法によりパケットロスを検知することもできる。そこで、実施例3では、FECパケットの保護範囲として、FECパケットが保護するデータパケットのシーケンス番号を付加することにより、パケットロスを検知する場合を説明する。
図15は、実施例3に係る伝送装置の構成を示すブロック図である。図15に示す伝送装置20は、図7に示した伝送装置10と比較して、FECパケット情報付加部21、パケットロス判定部22及びFECパケット情報変更部23の機能の一部が異なる。なお、以下では、図7に示した伝送装置10と対比しながら説明することとし、上記の実施例2と同様の機能を発揮するものついては同一の符号を付すとともにその説明を省略する。
FECパケット情報付加部21は、図7に示したFECパケット情報付加部16に比較して、追加シーケンス番号の代わりに、FECパケットの保護範囲として、FECパケットが保護するデータパケットのシーケンス番号を付加する点が異なる。
図16は、RTPパケットが含むFECパケット情報の一例を示す図である。図16に示す例では、パケットを模式化した小包にRTPパケットにFECパケット情報を図示している。図16に示す符号51は、メディアデータをパケット化する際にデータパケットに付与されたデータパケットのシーケンス番号を指す。図16に示す符号52は、FECパケットによるRTPパケットの保護範囲を指す。また、図16に示す符号53は、FECパケットのシーケンス番号を指す。
図16に示す例では、RTPパケットのシーケンス番号が「1」であり、また、RTPパケットを保護するFECパケットのシーケンス番号が「1」であることを示す。さらに、図16に示す例では、FECパケットがデータパケット1、データパケット2、データパケット3及びデータパケット4を保護することを示す。このように、FECパケットが保護するデータパケットのシーケンス番号を付与すれば、FECパケットが保護対象とするRTPパケット数が「4」であることも受信側のノードで特定できる。
パケットロス判定部22は、図7に示したパケットロス判定部17に比べ、今回に受信したデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲と、1つ前に受信したデータパケットのFECパケットの保護範囲とを比較する点が異なる。つまり、パケットロス判定部22は、今回に受信したデータパケットに書き込まれているデータパケットのシーケンス番号群と、前回に受信していたデータパケットに書き込まれているデータパケットのシーケンス番号群とを比較する。これら両者が同じである場合に、パケットロス判定部22は、この時点でのパケットロスはないものと判断する。一方、両者が同じでない場合には、パケットロスがあったものと判断する。
FECパケット情報変更部23は、図7に示したFECパケット情報変更部18に比較して、パケットロスが発生した場合、データパケットが復元された場合、再送のデータパケットを受信した場合に、FECパケット情報を変更する点は共通する。その一方で、FECパケット情報変更部23は、FECパケット情報を変更する場合に、FECパケットの保護範囲およびFECパケットのシーケンス番号の両方を常に変更する点が異なる。
[処理の流れ]
次に、本実施例に係る伝送装置の処理の流れについて説明する。図17〜図19は、実施例2に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部11または再送通信部13のいずれかでパケットが受信された場合に起動する処理である。
次に、本実施例に係る伝送装置の処理の流れについて説明する。図17〜図19は、実施例2に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部11または再送通信部13のいずれかでパケットが受信された場合に起動する処理である。
図17に示すように、上位階層のノードからパケットを受信すると、パケットロス判定部22は、受信パケットが再送ではない通常のデータパケットであるのか否かを判定する(ステップS401)。
このとき、受信パケットが通常のデータパケットである場合(ステップS401肯定)には、図17に示すステップS403〜ステップS424までのデータパケット受信処理が実行される。また、受信パケットが通常のデータパケットではなくFECパケットである場合(ステップS401否定かつステップS402肯定)には、図18に示すステップS501〜S513のFECパケット受信処理が実行される。また、受信パケットが通常データパケットまたはFECパケットでもなく、再送パケットである場合には、(ステップS401否定かつステップS402否定)には、図19に示すステップS601〜S609の再送パケット受信処理が実行される。
まず、データパケット受信処理を説明する。受信パケットが通常のデータパケットである場合(ステップS401肯定)には、パケットロス判定部22は、データパケットのRTPヘッダに書き込まれているFECパケット情報を取得する(ステップS403)。例えば、パケットロス判定部22は、FECパケット情報として、データパケットのシーケンス番号、FECパケットの保護範囲及びFECパケットのシーケンス番号を取得する。
続いて、パケットロス判定部22は、データパケットが最初の受信パケットであるか否かを判定する(ステップS404)。このとき、最初の受信パケットであった場合(ステップS404肯定)には、パケットロス判定部22は、次のような処理を実行する。すなわち、パケットロス判定部22は、FECパケットの保護範囲及びFECパケットのシーケンス番号などのFECパケット情報を作業用メモリ14bへ登録する(ステップS405)。
そして、パケットロス判定部22は、下位階層への伝送用とは別にFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する(ステップS406)。続いて、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS407)。その上で、FECパケット生成制御部19は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ14aへ格納し(ステップS408)、処理を終了する。
一方、最初の受信パケットではない場合(ステップS404否定)には、パケットロス判定部22は、次のような処理を実行する。すなわち、パケットロス判定部22は、今回に受信したデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲と、1つ前に受信したデータパケットのFECパケットの保護範囲とが一致するか否かを判定する(ステップS409)。ここでは、FECパケットの保護範囲として、データパケットのシーケンス番号群の突き合わせが実行される。
ここで、FECパケットの保護範囲が一致する場合(ステップS409肯定)には、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS410)。
そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットのシーケンス番号と、作業用メモリ14bに記憶されたFECパケットの保護範囲とが一致するか否かを判定する(ステップS411)。これら両者が一致した場合、すなわちFECパケットの保護範囲に到達した場合(ステップS411肯定)には、FECパケット生成制御部19は、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS412)。
その後、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットとともに今回生成したFECパケットをバッファ14aへ格納し(ステップS408)、処理を終了する。
また、FECパケットの保護範囲が一致しない場合(ステップS409否定)には、パケットロス判定部22は、次のような処理を実行する。すなわち、パケットロス判定部22は、作業用メモリ14bに記憶されている保護範囲において再送を要するパケット数をロスしているか否かを判定する(ステップS413)。
このとき、再送を要するパケット数をロスしている場合(ステップS413肯定)には、パケットロス判定部22は、次のような処理を行う。すなわち、パケットロス判定部22は、パケットロスしているデータパケットのシーケンス番号のうち小さいものから順に所定数のデータパケットの再送要求を再送通信部13に送信させる(ステップS414)。その上で、パケットロス判定部22は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録する(ステップS415)。
そして、FECパケット情報変更部23は、受信したデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲及びFECパケットのシーケンス番号を作業用メモリ14bに記憶されているものに変更する(ステップS416)。続いて、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS417)。
その後、パケットロス判定部22は、作業用メモリ14bに記録されているFECパケット情報を今回に受信したデータパケットのFECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS418)。
一方、再送を要するパケット数をロスしてしない場合(ステップS413否定)には、パケットロス判定部22は、作業用メモリ14bに記憶されている保護範囲においてパケットロスがあるか否かをさらに判定する(ステップS419)。
そして、保護範囲においてパケットロスがある場合(ステップS419肯定)には、FECパケット情報変更部23は、次のような処理を実行する。すなわち、FECパケット情報変更部23は、受信したデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲及びFECパケットのシーケンス番号を作業用メモリ14bに記憶されているものに変更する(ステップS420)。
続いて、FECパケット生成制御部19は、今回に受信したデータパケットのXORを算出する(ステップS421)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットのシーケンス番号と、作業用メモリ14bに記憶されたFECパケットの保護範囲とが一致するか否かを判定する(ステップS422)。これら両者が一致した場合、すなわちFECパケットの保護範囲に到達した場合(ステップS422肯定)には、FECパケット生成制御部19は、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS423)。
その後、FECパケット生成制御部19は、パケット受信部11により受信されたデータパケットとともに今回生成したFECパケットをバッファ14aへ格納し(ステップS408)、処理を終了する。
また、保護範囲においてパケットロスがない場合(ステップS419否定)には、パケットロス判定部22は、次のFECパケットの生成に使用するためのデータパケットを複製した上でバッファ14aへ格納する(ステップS424)。
次に、図18を用いて、上述したFECパケット受信処理について説明する。FECパケットを受信した場合(ステップS402肯定)には、パケットロス判定部22は、今回に受信したFECパケットにより保護されているデータパケットのシーケンス番号に対応するデータパケットをバッファ14aから検索する(ステップS501)。
そして、パケットロス判定部22は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する(ステップS502)。
このとき、再送を要するパケット数をロスしている場合(ステップS502肯定)には、パケットロス判定部22は、パケットロスしたデータパケットが作業用メモリ14bに記憶された再送待ちリストに登録されているか否かを判定する(ステップS503)。なお、再送待ちリストに登録されている場合(ステップS503否定)には、そのまま処理を終了する。
そして、再送待ちリストに登録されていない場合(ステップS503肯定)には、パケットロス判定部22は、次のような処理を実行する。すなわち、パケットロス判定部22は、パケットロスしているデータパケットのうちシーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部13に送信させる(ステップS504)。その上で、パケットロス判定部22は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ14b内に記憶された再送待ちリストへ登録し(ステップS505)、処理を終了する。
一方、再送を要するパケット数をロスしていない場合(ステップS502否定)には、パケットロス判定部22は、次のような処理を行う。すなわち、パケットロス判定部22は、今回に検索したデータパケットに書き込まれているFECパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する(ステップS506)。
このとき、パケットロスが存在する場合(ステップS506肯定)には、FECパケット生成制御部19は、今回に受信したFECパケットを用いて、パケットロスしているデータパケットを復元する(ステップS507)。
そして、FECパケット情報変更部23は、復元したデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲及びFECパケットのシーケンス番号を作業用メモリ14bに記憶されたものに変更する(ステップS508)。
その後、パケットロス判定部22は、作業用メモリ14bに記録されているFECパケット情報を今回に復元したデータパケットのFECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS509)。
続いて、FECパケット生成制御部19は、復元したデータパケットのXORを算出する(ステップS510)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットのシーケンス番号と、作業用メモリ14bに記憶されたFECパケットの保護範囲とが一致するか否かを判定する(ステップS511)。これら両者が一致した場合、すなわちFECパケットの保護範囲に到達した場合(ステップS511肯定)には、FECパケット生成制御部19は、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS512)。
その後、FECパケット生成制御部19は、今回に復元したデータパケットとともに今回に生成したFECパケットをバッファ14aへ格納し(ステップS513)、処理を終了する。
また、FECパケットの保護範囲に到達していない場合(ステップS511否定)には、FECパケット生成制御部19は、今回に復元したデータパケットをバッファ14aへ格納し(ステップS513)、処理を終了する。
次に、図19を用いて、上述した再送パケット受信処理について説明する。再送のデータパケットを受信した場合(ステップS402否定)には、パケットロス判定部22は、再送のデータパケットのRTPヘッダに書き込まれているデータパケットのシーケンス番号を取得する(ステップS601)。
そして、パケットロス判定部22は、再送のデータパケットのシーケンス番号が作業用メモリ14bに記憶された再送待ちリストに登録されているか否かを判定する(ステップS602)。なお、再送待ちリストに登録されていない場合(ステップS602否定)には、そのまま処理を終了する。
そして、再送待ちリストに登録されている場合(ステップS602肯定)には、パケットロス判定部22は、再送を受けたデータパケットのシーケンス番号を再送待ちリストから削除する(ステップS603)。
そして、FECパケット情報変更部23は、再送されたデータパケットのRTPヘッダに書き込まれているFECパケットの保護範囲及びFECパケットのシーケンス番号を作業用メモリ14bに記憶されているものに変更する(ステップS604)。
その後、パケットロス判定部22は、作業用メモリ14bに記録されているFECパケット情報を今回に再送されたデータパケットのFECパケットの保護範囲及びFECパケットのシーケンス番号へ更新する(ステップS605)。
続いて、FECパケット生成制御部19は、再送されたデータパケットのXORを算出する(ステップS606)。そして、FECパケット生成制御部19は、XORの算出を終えたデータパケットのシーケンス番号群と、作業用メモリ14bに記憶されたFECパケットの保護範囲とが一致するか否かを判定する(ステップS607)。これら両者が一致した場合、すなわちFECパケットの保護範囲に到達した場合(ステップS607肯定)には、FECパケット生成制御部19は、それまでに算出したデータパケットのXORからFECパケットを生成する(ステップS608)。
その後、FECパケット生成制御部19は、今回に復元したデータパケットとともに今回に生成したFECパケットをバッファ14aへ格納し(ステップS609)、処理を終了する。
また、FECパケットの保護範囲に到達していない場合(ステップS607否定)には、FECパケット生成制御部19は、今回に復元したデータパケットをバッファ14aへ格納し(ステップS608)、処理を終了する。
[実施例3の効果]
上述してきたように、本実施例に係る伝送装置20では、データパケットが受信された場合に、該データパケットに含まれるデータパケットのシーケンス番号を用いて、データパケットのパケットロスを判定する。また、本実施例に係る伝送装置20は、パケットロスの判定結果に基づき、上位階層のノードへデータパケットの再送要求を行い、再送されたデータパケットを受信する。また、本実施例に係る伝送装置20は、再送により受信したデータパケットを含め、データパケットが受信された順番にしたがってデータパケットのFECパケット情報を更新する。これにより、本実施例に係る伝送装置20によれば、RTPパケットなどのデータパケットのヘッダ情報の改変を最小限にしつつ、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
上述してきたように、本実施例に係る伝送装置20では、データパケットが受信された場合に、該データパケットに含まれるデータパケットのシーケンス番号を用いて、データパケットのパケットロスを判定する。また、本実施例に係る伝送装置20は、パケットロスの判定結果に基づき、上位階層のノードへデータパケットの再送要求を行い、再送されたデータパケットを受信する。また、本実施例に係る伝送装置20は、再送により受信したデータパケットを含め、データパケットが受信された順番にしたがってデータパケットのFECパケット情報を更新する。これにより、本実施例に係る伝送装置20によれば、RTPパケットなどのデータパケットのヘッダ情報の改変を最小限にしつつ、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
かかる効果を伝送例を挙げて説明する。図20は、実施例3に係る伝送装置によるデータ伝送の一例を示す図である。図20に示す例では、ノード#1からノード#2へデータが転送される場合を想定する。また、図20に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、FECパケットの保護範囲およびFECパケットに付与されたシーケンス番号を図示している。図20に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとし、図20に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。なお、図20に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図20に示すように、各データパケットには、ノード#1のFECパケット情報付加部16によりFECパケットの保護範囲が付加される。一例としては、FECパケット1は、データパケット1〜4から生成されているので、FECパケット1が保護するパケットのシーケンス番号「1,2,3,4」がデータパケット1〜4のFECパケットの保護範囲として付加される。さらに、各データパケットには、ノード#1のFECパケット情報付加部16によりFECパケットに付与されるシーケンス番号も付加される。なお、ノード#2以降のノードでは、FECパケット情報が既に付加されているので、FECパケット情報付加部21によるFECパケット情報の付加は実行されない。
このようにFECパケット情報を付加する場合には、各データパケットごとに図8に示した「FEC Coverage」のフィールドにFECの保護対象にあたるデータパケットのシーケンス番号、「FEC ID」フィールドにFECシーケンス番号が付加されることになる。なお、図8に示した「Additional Sequence Number」フィールドは本実施例では使用しない。また、FECパケットヘッダの「SN Base」、「Mask」は、データパケットのシーケンス番号を基に設定するものとする。例えば、FECパケット1の場合は、「SN Base:1、Mask:0xF00000」と設定する。この場合には、上位4bitが保護対象となる。
図20に示すように、ノード#1は、データパケット1〜4、FECパケット1、データパケット5〜7、FECパケット2の順にノード#2へ伝送する。このとき、ノード#1及びノード#2間でFECパケット1をロスした場合を想定する。この場合には、ノード#2は、ノード#1からデータパケット1〜4、データパケット5〜7、FECパケット2の順に受信する。
ここで、ノード#2は、データパケット1〜4を受信する度に各データパケットのXORを計算し、FECパケットの保護範囲「4」に到達したTQの時点でFECパケット1のパリティ情報の計算が完了する。そして、ノード#2は、ノード#1及びノード#2間におけるFECパケット1のロスの如何にかかわらず、FECパケット1を再生成して下位のノードへ送信できる。このため、FECパケット1のロスを検知せずとも、下位のノードへの転送できる。それゆで、本実施例では、FECパケット1がロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、FECパケットのロスに起因する伝送遅延の増大を抑制できる。
図21は、実施例3に係る伝送装置によるデータ伝送の一例を示す図である。図21に示す例では、ノード#1、ノード#2、ノード#3の順にデータが転送される場合を想定する。図21に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、FECパケットの保護範囲およびFECパケットに付与されたシーケンス番号を図示している。図21に示すFECパケット1は、誤り訂正によりデータパケット1〜4を保護するものとする。図21に示すFECパケット2は、誤り訂正によりデータパケット5〜7を保護するものとする。図21に示すFECパケット3は、誤り訂正によりデータパケット8〜10を保護するものとする。図21に示すFECパケット4は、誤り訂正によりデータパケット11〜14を保護するものとする。なお、図21に示す例では、FECパケットにより復元可能なパケット数を1つとする。
図21に示すように、ノード#2は、データパケット5を受信したTRの時点でデータパケット5の保護範囲「5,6,7」と、データパケット3の保護範囲「1,2,3,4」が一致しないので、データパケット4及びFECパケット1のロスを検知する。この場合には、FECパケットの誤り訂正能力を超えるパケットロスが発生しているので、ノード#2は、TRの時点でデータパケット4の再送要求をノード#1へ送信する。この再送要求を行ったデータパケット4は、ノード#1及びノード#2間の往復遅延時間であるRTT(Round Trip Time)1が経過したTSの時点でノード#2へ到達する。
ここで、ノード#2は、図25に示した従来技術のように、データパケット4の再送を受けてからデータパケット1〜4のXORを算出してFECパケット1を生成するようなことはしない。
すなわち、ノード#2は、データパケット4の再送をノード#1へ要求する。その後、データパケット1〜3のFECパケットの保護範囲を「1,2,3,4→1,2,3,5」と変更し、データパケット5のFECパケットの保護範囲を「5,6,7→1,2,3,5」と変更し、FECパケットのシーケンス番号を「FEC2→FEC1」と変更する。さらに、ノード#2は、データパケット1〜3と、データパケット5とを使用したFECパケット1を生成する。このとき、データパケット5を受信したTRの時点では、既にデータパケット1〜データパケット3のXORは計算済みであるので、その計算結果とデータパケット5とのXORを計算することにより、FECパケット1を再生成できる。この時のFECヘッダの「SN Base」は「1」、「Mask」は「0xE80000」となる。ノード#2は、FECパケット1の生成完了で、ノード#3への送信を開始する。
そして、ノード#2は、データパケット5のFECパケットの保護範囲とFECパケットのシーケンス番号を順次変更する。すなわち、ノード#2は、データパケット8のFECパケットの保護範囲を「8,9,10→6,7,8」と変更し、FECパケットのシーケンス番号を「FEC3→FEC2」と変更する。その上で、ノード#2は、データパケット6〜8を使用してFECパケット2を生成する。なお、受信したFECパケット2は不要であるので、破棄する。このとき、FECヘッダの「SN Base」は「6」、「Mask」は「0xE00000」となる。
その後、ノード#2は、再送されたデータパケット4を受信した場合に、直前に受信したデータパケット8の変更前のFECパケットの保護範囲「8,9,10」及びFECパケットのシーケンス番号「FEC3」から、データパケット10の受信まで待機する。その上で、ノード#2は、データパケット4のFECパケットの保護範囲を「1,2,3,4→4,9,10」に変更し、FECパケットのシーケンス番号を「FEC1→FEC3」に変更する。さらに、ノード#2は、データパケット9〜10のFECパケットの保護範囲を「8,9,10→4,9,10」と変更する。その後、ノード#2は、データパケット4、データパケット9〜10を使用したFECパケット3を生成するよう指示する。なお、この時のFECヘッダの「SN Base」は「4」、「Mask」は「0x860000」となる。
一方、本実施例の場合には、データパケット4がノード#2で受信順序が近傍であったデータパケット9及びデータパケット10との間でXORが計算されたFECパケット3へ編入されている。このため、データパケット3及びデータパケット4がロスした場合でも、FECパケット1及びFECパケット3の誤り訂正能力を超えない。それゆえ、ノード#3は、FECパケット1を用いてデータパケット3を復元するとともに、FECパケット3を用いてデータパケット4を復元できる。よって、データパケット4の伝送遅延は、TTからTUの期間、すなわち4パケット分の時間に軽減される。
このように、同一のFECパケット1に保護されていたデータパケット1〜4のうち一部のデータパケット4の伝送順序が再送により乖離しても、FECパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[応用例]
例えば、上記の実施例2では、FECの保護範囲を示す情報にFECパケットが保護するデータパケットの数を用いたが、開示の装置はこれに限定されない。一例としては、FECの保護対象にあたるメディアデータパケットのシーケンス番号、FECパケットまでの距離(FECパケットが何パケット後に存在するかを示す情報)を追加シーケンスに代用できる。
例えば、上記の実施例2では、FECの保護範囲を示す情報にFECパケットが保護するデータパケットの数を用いたが、開示の装置はこれに限定されない。一例としては、FECの保護対象にあたるメディアデータパケットのシーケンス番号、FECパケットまでの距離(FECパケットが何パケット後に存在するかを示す情報)を追加シーケンスに代用できる。
さらに、開示の装置では、FECパケットの復元可能パケット数、すなわち誤り訂正能力をRTPヘッダへ追加することもできる。これにより、パケットロスを検知した場合に上位階層のノードに再送要求を行うタイミングを決めることが可能になる。
[適用例]
例えば、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、パケット受信部11、パケット送信部12及び再送通信部13をそれぞれ別個の機能部としたが、これらの一部または全部を統合することとしてもよい。
例えば、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、パケット受信部11、パケット送信部12及び再送通信部13をそれぞれ別個の機能部としたが、これらの一部または全部を統合することとしてもよい。
[伝送プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図22を用いて、上記の実施例と同様の機能を有する伝送プログラムを実行するコンピュータの一例について説明する。
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図22を用いて、上記の実施例と同様の機能を有する伝送プログラムを実行するコンピュータの一例について説明する。
図22は、実施例4に係る伝送プログラムを実行するコンピュータの一例について説明するための図である。図22に示すように、実施例4におけるコンピュータ100は、操作部110aと、マイク110bと、スピーカ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD(Hard Disk Drive)170と、RAM(Random Access Memory)180と有する。これら110〜180の各部はバス140を介して接続される。
ROM160には、上記の実施例2で示したパケットロス判定部17と、FECパケット情報変更部18と、FECパケット生成制御部19と同様の機能を発揮する制御プログラムが予め記憶される。つまり、ROM160には、図22に示すように、パケットロスプログラム160aと、FECパケット情報変更プログラム160bと、FECパケット生成プログラム160cとが記憶される。これらのプログラム160a〜160cについては、図7に示した伝送装置の各構成要素と同様、適宜統合又は分離しても良い。なお、RAM160に格納される各データは、常に全てのデータがRAM160に格納される必要はなく、処理に必要なデータのみがRAM160に格納されれば良い。
そして、CPU150が、これらのプログラム160a〜160cをROM160から読み出して実行する。これによって、CPU150は、図22に示すように、各プログラム160a〜160cについては、パケットロス判定プロセス150a、FECパケット情報変更プロセス150b及びFECパケット生成制御プロセス150cとして機能するようになる。各プロセス150a〜150cは、図2に示したパケットロス判定部17と、FECパケット情報変更部18と、FECパケット生成制御部19とにそれぞれ対応する。なお、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
そして、CPU150は、RAM180を用いて、伝送プログラムを実行する。
なお、上記したデータ再現プログラムについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。
1 伝送装置
1a 受信部
1b 更新部
1c 生成部
1d 送信部
10 伝送装置
11 パケット受信部
12 パケット送信部
13 再送通信部
14a バッファ
14b 作業用メモリ
15 再生処理部
16 FECパケット情報付加部
17 パケットロス判定部
18 FECパケット情報変更部
19 FECパケット生成制御部
1a 受信部
1b 更新部
1c 生成部
1d 送信部
10 伝送装置
11 パケット受信部
12 パケット送信部
13 再送通信部
14a バッファ
14b 作業用メモリ
15 再生処理部
16 FECパケット情報付加部
17 パケットロス判定部
18 FECパケット情報変更部
19 FECパケット生成制御部
Claims (5)
- 誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信部と、
前記受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新部と、
前記更新部による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成部と、
前記更新部により保護範囲情報が更新されたデータパケットおよび前記生成部により生成された誤り訂正用パケットを送信する送信部と
を有することを特徴とする伝送装置。 - 前記データパケットには、前記パケットの送信元の装置によりデータパケットの送信順に付与される送信シーケンス番号がさらに書き込まれるものであって、
前記受信部によりデータパケットが受信された場合に、該データパケットに含まれる送信シーケンス番号を用いて、前記データパケットのパケットロスを判定する判定部と、
前記判定部によるパケットロスの判定結果に基づき、前記パケットの送信元の装置へデータパケットの再送要求を行う再送要求部と、
前記パケットの送信元の装置から再送されたデータパケットを受信する再送受信部とをさらに有し、
前記更新部は、
前記受信部および前記再送受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報および送信シーケンス番号を更新することを特徴とする請求項1に記載の伝送装置。 - 前記データパケットには、前記保護範囲情報として、前記パケットの送信元の装置により前記誤り訂正用パケットが保護するデータパケットのシーケンス番号がさらに書き込まれるものであって、
前記受信部によりデータパケットが受信された場合に、該データパケットに含まれるデータパケットのシーケンス番号を用いて、前記データパケットのパケットロスを判定する判定部と、
前記判定部によるパケットロスの判定結果に基づき、前記パケットの送信元の装置へデータパケットの再送要求を行う再送要求部と、
前記パケットの送信元の装置から再送されたデータパケットを受信する再送受信部とをさらに有し、
前記更新部は、
前記受信部および前記再送受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報に書き込まれているデータパケットのシーケンス番号を更新することを特徴とする請求項1に記載の伝送装置。 - コンピュータに、
誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信手順と、
前記受信手順によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新手順と、
前記更新手順による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成手順と、
前記更新手順により保護範囲情報が更新されたデータパケットおよび前記生成手順により生成された誤り訂正用パケットを送信する送信手順と
を実行させることを特徴とする伝送プログラム。 - コンピュータが、
誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信工程と、
前記受信工程によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新工程と、
前記更新工程による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成工程と、
前記更新工程により保護範囲情報が更新されたデータパケットおよび前記生成工程により生成された誤り訂正用パケットを送信する送信工程と
を実行することを特徴とする伝送方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010149866A JP2012015752A (ja) | 2010-06-30 | 2010-06-30 | 伝送装置、伝送プログラム及び伝送方法 |
| US13/169,161 US20120005549A1 (en) | 2010-06-30 | 2011-06-27 | Transfer apparatus, transfer program, and transfer method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010149866A JP2012015752A (ja) | 2010-06-30 | 2010-06-30 | 伝送装置、伝送プログラム及び伝送方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2012015752A true JP2012015752A (ja) | 2012-01-19 |
Family
ID=45400685
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010149866A Withdrawn JP2012015752A (ja) | 2010-06-30 | 2010-06-30 | 伝送装置、伝送プログラム及び伝送方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20120005549A1 (ja) |
| JP (1) | JP2012015752A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014116685A (ja) * | 2012-12-06 | 2014-06-26 | Toshiba Corp | 中継端末 |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
| US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
| GB2480308A (en) | 2010-05-13 | 2011-11-16 | Skype Ltd | Data recovery for encrypted packet streams at relay nodes using correction data |
| JP5677070B2 (ja) * | 2010-12-14 | 2015-02-25 | キヤノン株式会社 | 受信装置及び、受信装置による処理方法 |
| US8819513B2 (en) * | 2012-01-13 | 2014-08-26 | Microsoft Corporation | Lost real-time media packet recovery |
| US9667756B2 (en) * | 2012-06-05 | 2017-05-30 | Electronics And Telecommunications Research Institute | Apparatus and method for transmitting/receiving data in communication system |
| WO2014157857A1 (en) * | 2013-03-25 | 2014-10-02 | Samsung Electronics Co., Ltd. | Data communication method and apparatus using forward error correction |
| US9560172B2 (en) * | 2013-05-06 | 2017-01-31 | Alcatel Lucent | Stateless recognition of keep-alive packets |
| US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
| JP2016059012A (ja) * | 2014-09-12 | 2016-04-21 | 富士通株式会社 | 受信装置、送信装置およびデータ転送システム |
| WO2016048209A1 (en) * | 2014-09-26 | 2016-03-31 | Telefonaktiebolaget L M Ericsson (Publ) | Forward error correction in cellular networks |
| US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
| US9967056B1 (en) * | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
| US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
| US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
| US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
| US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
| US11916674B2 (en) * | 2021-03-31 | 2024-02-27 | Versa Networks, Inc. | Data packet traffic conditioning through a lossy data path with forward error correction |
| US11683126B2 (en) | 2021-03-31 | 2023-06-20 | Versa Networks, Inc. | Data packet traffic conditioning through multiple lossy data paths with forward error correction |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6850559B1 (en) * | 1999-06-28 | 2005-02-01 | At&T Corp. | System and methods for transmitting data |
| JP3476788B2 (ja) * | 2001-05-11 | 2003-12-10 | シャープ株式会社 | 通信方式ならびに送信装置、受信装置およびこれらを備えた通信システム |
| JP4411328B2 (ja) * | 2007-02-01 | 2010-02-10 | 株式会社日立製作所 | データ通信システム及びデータ通信方法 |
-
2010
- 2010-06-30 JP JP2010149866A patent/JP2012015752A/ja not_active Withdrawn
-
2011
- 2011-06-27 US US13/169,161 patent/US20120005549A1/en not_active Abandoned
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014116685A (ja) * | 2012-12-06 | 2014-06-26 | Toshiba Corp | 中継端末 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20120005549A1 (en) | 2012-01-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2012015752A (ja) | 伝送装置、伝送プログラム及び伝送方法 | |
| KR100458878B1 (ko) | Fec 코딩 방식에 기초한 가변길이 패킷 송수신 방법 | |
| JP3450771B2 (ja) | データ伝送方法,及びデータ送信装置 | |
| US9781028B2 (en) | Transcoding and dynamic error correction for content centric networks using a proxy server | |
| JP4173755B2 (ja) | データ伝送サーバ | |
| JP4454320B2 (ja) | 伝送装置、伝送制御プログラム、及び伝送方法 | |
| KR101286912B1 (ko) | 3차원 저장장치를 이용한 가변길이 패킷의 fec 인코딩 및 fec 디코딩 방법 | |
| JP2020502832A (ja) | データストリーミングの前方誤り訂正 | |
| JP5172405B2 (ja) | 無線通信装置、無線通信システム、プログラム、および無線通信方法 | |
| CN105306370B (zh) | 用于在多播网络中进行转发的方法和设备 | |
| US8856610B2 (en) | Computer readable storage medium storing error correction program and communication apparatus | |
| JP2022528172A (ja) | データストリーム伝送方法およびデバイス | |
| JP4869169B2 (ja) | データ送信装置およびデータ再送方法 | |
| CN101548510A (zh) | 用于发送传输流包的方法和设备 | |
| WO2013046698A1 (ja) | データ処理装置及びデータ処理方法 | |
| JP2005198055A (ja) | 受信装置および方法、プログラム、並びに記録媒体 | |
| KR100772528B1 (ko) | 유/무선 네트워크에서 효율적인 패킷 재전송 방법 및 장치 | |
| CN114765690A (zh) | 数据包传输方法及相关设备 | |
| JP6305398B2 (ja) | 送信機に関連する情報を用いたエラー回復のための方法及び装置 | |
| JP2013051565A (ja) | 通信端末装置、通信制御方法、及び通信制御プログラム | |
| KR101563779B1 (ko) | 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜 | |
| JP2003324496A (ja) | データ伝送方法,及びパケットデータ構造 | |
| JP2009188674A (ja) | 送信装置、受信装置、動画音声伝送品質評価方法および動画音声伝送品質評価プログラム | |
| JP2012151622A (ja) | 受信端末、パケットデータ受信方法、送信端末、送受信システム、中継端末およびパケットデータの中継方法 | |
| Ageneau et al. | Practical random linear coding for MultiPath TCP: MPC-TCP |
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: 20130903 |