以下に添付図面を参照して、本発明にかかる中継装置、受信装置、送信システム、通信システムおよび中継方法の実施の形態を詳細に説明する。
(実施の形態1)
(実施の形態1にかかる通信システム)
図1−1は、実施の形態1にかかる通信システムの一例を示す図(その1)である。図1−2は、実施の形態1にかかる通信システムの一例を示す図(その2)である。図1−1,図1−2に示す通信システム100は、リンクL1,L2(通信回線)を用いたリンクアグリゲーションによりデータフローを伝送する通信システムである。リンクL1,L2は、無線のリンクであってもよいし、有線のリンクであってもよい。
図1−1に示すように、通信システム100は、データ転送装置110と、回線終端装置121,122(中継装置)と、回線終端装置131,132と、データ転送装置140と、を含んでいる。データ転送装置110および回線終端装置121,122は、データフローの各パケット(送信パケット)をリンクL1,L2に振り分けて送信する送信システムである。
データ転送装置110にはデータフローが入力される。データ転送装置110は、入力されたデータフローの各パケットに、パケットの順序を示す順序情報を付加する順序付加部としての機能を有する。または、データ転送装置110には、順序情報が付加された各パケットが入力されてもよい。この場合は、データ転送装置110は、順序情報を付加する順序付加部としての機能を有していなくてもよい。
順序情報は、たとえば連番のSN(Sequence Number:シーケンス番号)である。また、データ転送装置110は、SNを付加した各パケットをリンクL1,L2に振り分ける振分部としての機能を有する。たとえば、データ転送装置110は、リンクL1,L2の各伝送速度などの情報を取得し、取得した情報に基づいて各パケットをリンクL1,L2に振り分ける。
図1−1に示す例では、データ転送装置110は、SNが「1」,「3」,「5」,「7」の各パケットをリンクL1に振り分け、SNが「2」,「4」,「6」,「8」の各パケットをリンクL2に振り分けている。データ転送装置110は、リンクL1に振り分けたパケットを回線終端装置121へ送信する。また、データ転送装置110は、リンクL2に振り分けたパケットを回線終端装置122へ送信する。データ転送装置110と回線終端装置121,122との間の通信は、有線であってもよいし無線であってもよい。
回線終端装置121,122は、それぞれリンクL1,L2に接続された送信器である。回線終端装置121は、データ転送装置110から送信された各パケットを自身のバッファ121aの末尾に順次格納する。また、回線終端装置121は、バッファ121aの先頭からパケットを順次読み出してリンクL1へ送出する。リンクL1へ送出された各パケットは回線終端装置131へ伝送される。
回線終端装置122は、データ転送装置110から送信された各パケットを自身のバッファ122aの末尾に順次格納する。そして、回線終端装置122は、バッファ122aの先頭からパケットを順次読み出してリンクL2へ送出する。リンクL2へ送出された各パケットは回線終端装置132へ伝送される。
回線終端装置131,132は、それぞれリンクL1,L2に対応して設けられた送信器であり、それぞれリンクL1,L2を終端する。回線終端装置131は、回線終端装置121から伝送されたパケットをデータ転送装置140へ転送する。回線終端装置132は、回線終端装置122から伝送されたパケットをデータ転送装置140へ転送する。
また、回線終端装置121,122のそれぞれは、パケットの廃棄条件を満たした場合に、それぞれバッファ121a,122aのパケットの一部を廃棄する。具体的には、回線終端装置121,122は、廃棄条件を満たした場合に、それぞれバッファ121a,122aの先頭以外に格納されているパケットの中から廃棄対象のパケットを選択する。
パケットの廃棄条件は、たとえばバッファ121a,122aの空き容量に基づく条件である。たとえば、パケットの廃棄条件は、バッファ121a,122aの空き容量が閾値未満になったことや、バッファ121a,122aの使用量が閾値以上になったことである。また、廃棄条件は、バッファ121a,122aの空き容量に基づく条件に限らない。たとえば、廃棄条件は、リンクL1,L2による伝送速度や、データ転送装置110から送信されるパケットのトラフィック量などに基づく条件であってもよい。
たとえば、リンクL2の伝送速度の低下がデータ転送装置110によって認識されると、データ転送装置110は、パケットのリンクL2への振り分け比率を減少させ、パケットのリンクL1への振り分け比率を増加させる。このとき、リンクL1,L2へのパケットの振り分け比率を変更するまでにはある程度の時間がかかる。このため、回線終端装置122のバッファ122aに蓄積されるパケットが多くなり、バッファ122aにおけるパケットの廃棄条件が満たされることが考えられる。
回線終端装置121,122は、選択したパケットをそれぞれバッファ121a,122aから廃棄する。また、バッファ121a,122aは、廃棄したパケットのSNを特定可能であり、パケットを廃棄することを示す廃棄情報を、廃棄対象のパケットより前にバッファ121a,122aに格納されているパケットに付加する。廃棄したパケットのSNを特定可能な廃棄情報は、たとえば廃棄したパケットのSNを含む情報である。または、廃棄したパケットのSNを特定可能な廃棄情報は、たとえば、廃棄したパケットのSNと、廃棄情報を付加するパケットのSNと、の差分を示す情報である。
図1−1に示す例では、回線終端装置122において、SNが「2」のパケットが送出された後、たとえばリンクL2の伝送速度が低下し、バッファ122aにはSNが「4」,「6」,「8」の各パケットが格納されている状態で廃棄条件が満たされたとする。この場合は、回線終端装置122は、バッファ122aの先頭以外に格納されているSNが「6」,「8」のパケットの中から廃棄対象のパケットを選択する。図1−1に示す例では、回線終端装置122はSNが「6」のパケットを廃棄対象として選択したとする。
また、回線終端装置122は、廃棄対象として選択したSNが「6」のパケットより前にバッファ122aに格納されたパケットはSNが「4」のパケットのみであるため、SNが「4」のパケットに廃棄情報101を付加する。廃棄情報101には、廃棄対象として選択したパケットのSNである「6」が含まれている。
または、廃棄情報101には、廃棄対象として選択したパケットのSNである「6」と、廃棄情報101を付加するパケットのSNである「4」と、の差分である「2」が含まれていてもよい。これにより、受信側において、SNが「4」のパケットを受信した場合に、受信したパケットのSNである「4」に、廃棄情報が示す差分である「2」を加えた「6」が、送信側で廃棄されたパケットのSNであると特定することができる。特にSNが大きくなる場合において、廃棄情報101にSNの差分を含めることで、SNそのものを廃棄情報101に含めるよりも廃棄情報101のサイズを小さくすることができる。
図1−1に示す例では、回線終端装置122は、SNが「6」のパケットを廃棄したため、SNが「2」のパケットのつぎに、SNが「4」,「8」の各パケットを順次読み出してリンクL2へ送出する。また、SNが「4」のパケットには、廃棄されたパケットのSNである「6」を含む廃棄情報101が付加されている。
一方、回線終端装置121は、バッファ121aのパケットを廃棄せずにリンクL1へ送出したとする。その結果、図1−2に示すように、データ転送装置140は、SNで「1」,「2」,「3」,「4」,「5」,「7」,「8」の順に各パケットを受信したとする。到着順序141はデータ転送装置140におけるパケットの到着順序である。
データ転送装置140は、パケットを受信するごとに、SNに基づいて各パケットが順序通りに到達しているか否かを判断し、順序通りに到達したと判断したパケットについては順次後段へ出力する。また、データ転送装置140は、順序通りに到達していないと判断したパケットについては、パケットの順序の入れ替わりの可能性を考慮してパケットの待ち合わせを行い、順序を整列して後段へ出力する。パケットの順序の入れ替わりは、たとえば、各パケットがリンクL1,L2に振り分けられ、リンクL1,L2における各伝送時間が異なることによって生じる。
図1−2に示す例では、データ転送装置140は、SNが「1」〜「5」の各パケットについては、SNが連続しているため順序通りに到達したと判断して後段へ出力する。また、データ転送装置140は、SNが「4」のパケットを受信した時点で、SNが「4」のパケットに付加された廃棄情報101に基づいて、SNが「6」のパケットが送信側で廃棄されたことを認識することができる。
このため、データ転送装置140は、SNが「5」のパケットのつぎに受信したパケットのSNが「7」でありSNの飛びが発生しているが、SNが「6」のパケットの待ち合わせを行わずにSNが「7」のパケットを後段へ出力することができる。これにより、送信側でパケットを廃棄した場合に、廃棄されたパケットの受信待ちを受信側で行うことを回避し、受信待ちによる遅延時間を低減することができる。また、廃棄情報を他のパケットに付加することで、廃棄情報を送信するためのパケットを生成して送信しなくても廃棄情報を送信することができる。このため、遅延時間を低減することができる。
なお、通信システム100について、リンクL1,L2を用いたリンクアグリゲーションによりデータフローを伝送する構成について説明したが、3つ以上のリンクを用いたリンクアグリゲーションによりデータフローを伝送する構成としてもよい。
また、通信システム100について、データ転送装置110からデータ転送装置140へデータフローを伝送する構成について説明したが、データ転送装置140からデータ転送装置110へもデータフローを伝送する構成としてもよい。
(実施の形態1にかかる送信装置)
図1−3は、実施の形態1にかかる送信装置の一例を示す図である。図1−3に示す送信装置150は、たとえば図1−1,図1−2に示した回線終端装置121,122のそれぞれに適用することができる。また、図1−1,図1−2に示した通信システム100において、データ転送装置140からデータ転送装置110へもデータフローを伝送する構成とする場合は、送信装置150を回線終端装置131,132のそれぞれに適用することもできる。ただし、送信装置150は、回線終端装置121,122や回線終端装置131,132に限らず、バッファに格納されたパケットを読み出して送信する各種の送信装置に適用することができる。
図1−3に示すように、送信装置150は、バッファ151と、選択部152と、付加部153と、廃棄部154と、送信部155と、を備えている。送信装置150には、パケットの順序を示す順序情報を含む各パケットが順次入力される。順序情報は、たとえば連番のSNである。
バッファ151は、送信装置150へ入力された各パケットを、入力された順に格納する。したがって、バッファ151には、送信装置150からの各パケットがSNの示す順序で格納される。バッファ151は、たとえばFIFO(First In First Out:先入れ先出し)のバッファである。図1−3に示す例では、SNが「1」〜「6」の各パケットがSNの小さい順にバッファ151に格納されている。
選択部152は、バッファ151に格納されているパケットの廃棄条件を満たした場合に、バッファ151の先頭以外に格納されているパケットの中から廃棄対象のパケットを選択する。図1−3に示す例では、選択部152は、SNが「2」〜「6」の各パケットの中から廃棄対象のパケットを1つ以上選択する。図1−3に示す例では、選択部152はSNが「4」のパケットを廃棄対象として選択したとする。選択部152は、選択した廃棄対象のパケットを付加部153および廃棄部154へ通知する。
廃棄条件は、たとえばバッファ151の空き容量に基づく条件である。たとえば、廃棄条件は、バッファ151の空き容量が閾値未満になったことや、バッファ151の使用量が閾値以上になったことである。また、廃棄条件は、バッファ151の空き容量に基づく条件に限らない。たとえば、廃棄条件は、送信部155による伝送速度や、送信装置150へ入力されるパケットのトラフィック量などに基づく条件であってもよい。
付加部153は、選択部152から通知された廃棄対象のパケットより前にバッファ151に格納されたパケットに廃棄情報153aを付加する。図1−3に示す例では、付加部153は、SNが「1」〜「3」の各パケットの少なくともいずれかに廃棄情報153aを付加する。図1−3に示す例では、付加部153は、SNが「2」のパケットに廃棄情報153aを付加したとする。
廃棄情報153aは、選択部152から通知された廃棄対象のパケットのSNである「4」を特定可能な情報であり、廃棄対象のパケットを廃棄することを示す情報である。廃棄対象のパケットのSNを特定可能な廃棄情報は、たとえば廃棄したパケットのSNを含む情報や、廃棄したパケットのSNと、廃棄情報を付加するパケットのSNと、の差分を示す情報などである。
以下の説明においては、廃棄情報153aには、廃棄対象のパケットのSNである「4」が含まれる場合について説明する。付加部153は、たとえば、SNが「2」のパケットのヘッダに廃棄情報を付加する。たとえば、パケットがイーサネットフレームである場合は、廃棄情報はイーサネットフレームのサブヘッダとして定義した領域に付加することができる。
廃棄部154は、選択部152から通知された廃棄対象のパケットをバッファ151から廃棄する。これにより、バッファ151の空き容量が増加する。図1−3に示す例では、廃棄部154は、SNが「4」のパケットをバッファ151から廃棄する。
送信部155は、バッファ151に格納されているパケットをバッファ151に格納された順に読み出して送信する。すなわち、送信部155は、バッファ151の先頭からパケットを順次読み出して送信する。送信部155は、無線によりパケットを送信する無線通信部であってもよいし、有線によりパケットを送信する有線通信部であってもよい。
たとえば、送信部155は、各パケットに含まれるSNに基づく順序整列を行う受信装置へパケットを送信する。順序整列は、たとえば、SNが示す順序となるように各パケットを整列し、整列した各パケットを出力する処理である。また、送信部155からパケットを受信する受信装置は、廃棄情報が付加されたパケットを受信すると、廃棄情報によって特定されるSNより後の順序を示すSNを含むパケットを、廃棄情報によって特定されるSNを含むパケットを待たずに出力する。
図1−3に示す例では、SNが「4」のパケットが廃棄部154によって廃棄されているため、送信部155は、SNが「1」〜「3」,「5」,「6」の各パケットを順次読み出して送信する。また、送信部155が送信するSNが「2」のパケットには廃棄情報153aが付加されている。
これにより、SNが「4」のパケットが送信側で廃棄されたことを、受信側においてSNが「4」のパケットの欠落が検知される前に受信側に通知することができる。すなわち、受信側の通信装置は、SNが「2」のパケットを受信した時点で、受信したパケットに付加された廃棄情報153aに基づいて、SNが「4」のパケットが送信側で廃棄されたことを認識することができる。これにより、受信側の通信装置は、SNが「4」のパケットの待ち合わせを行わずに、SNが「5」,「6」の各パケットの受信処理を行うことができる。これにより、受信待ちによる遅延時間を低減することができる。
(送信側のデータ転送装置の構成)
図2は、送信側のデータ転送装置の構成例を示す図である。図2に示すように、送信側のデータ転送装置110は、回線IF部210と、SN付加部220と、バッファ230と、振分部240と、回線IF部251,252と、を備えている。
回線IF部210は、データ転送装置110の前段の通信装置(たとえばユーザ装置)からのパケットを受信する。回線IF部210は、受信したパケットをSN付加部220へ出力する。SN付加部220は、回線IF部210から出力されたパケットにSNを付加する。SN付加部220によって付加されるSNは、パケットごとにたとえば1ずつ増加されていく。SN付加部220は、SNを付加したパケットをバッファ230の末尾に格納する。
振分部240は、バッファ230に格納されたパケットを先頭から順に読み出し、読み出したパケットをリンクL1,L2に振り分ける。振分部240は、リンクL1に振り分けたパケットを回線IF部251へ出力する。また、振分部240は、リンクL2に振り分けたパケットを回線IF部252へ出力する。回線IF部251は、振分部240から出力されたパケットを回線終端装置121へ送信する。回線IF部252は、振分部240から出力されたパケットを回線終端装置122へ送信する。
回線IF部210および回線IF部251,252のそれぞれは、たとえば有線や無線の通信インタフェースによって実現することができる。SN付加部220および振分部240は、たとえばファームウェアやDSP(Digital Signal Processor)などによって実現することができる。バッファ230は、たとえばRAM(Random Access Memory:ランダムアクセスメモリ)などのメモリによって実現することができる。
(送信側の回線終端装置の構成)
図3は、送信側の回線終端装置の構成例を示す図である。図3においては回線終端装置121の構成例について説明するが、回線終端装置122の構成例についても同様である。図3に示すように、回線終端装置121は、回線IF部310と、バッファ320と、バッファ制御部330と、廃棄情報付加部340と、回線IF部350と、を備えている。回線IF部310は、データ転送装置110から送信されたパケットを受信する。回線IF部310は、受信したパケットをバッファ320の末尾に格納する。
バッファ制御部330は、バッファ320の使用量を監視する。バッファ320の使用量は、たとえば、バッファ320の最大の記憶容量のうちの現在使用されている容量の比率である。バッファ制御部330は、バッファ320の使用量が閾値を超えると、バッファ320に格納されたパケットのうちの先頭以外のパケットの中から廃棄対象のパケットを選択する。
そして、バッファ制御部330は、廃棄対象として選択したパケットのSNを抽出する。バッファ制御部330は、抽出したSNを廃棄情報付加部340へ通知する。また、バッファ制御部330は、選択したパケットをバッファ320から廃棄(たとえば削除)する。これにより、バッファ320の空き容量が増加する。
廃棄情報付加部340は、バッファ制御部330からSNが通知されると、バッファ320に格納されたパケットのうちの、通知されたSNよりも小さなSNが付加されたパケットの中から廃棄情報を付加する通知パケットを選択する。これにより、廃棄したパケットより前に格納されていたパケットの中から通知パケットを選択することができる。廃棄情報付加部340は、選択した通知パケットに、バッファ制御部330から通知されたSNを含む廃棄情報を付加する。
回線IF部350は、バッファ320に格納されたパケットを先頭から順に読み出し、読み出したパケットをリンクL1により送出する。なお、回線終端装置122の回線IF部350は、読み出したパケットをリンクL2により送出する。
回線IF部310および回線IF部350のそれぞれは、たとえば有線や無線の通信インタフェースによって実現することができる。バッファ制御部330および廃棄情報付加部340のそれぞれは、たとえばファームウェアやDSPなどによって実現することができる。バッファ320は、たとえばRAMなどのメモリによって実現することができる。
図1−3に示したバッファ151は、たとえばバッファ320によって実現することができる。図1−3に示した選択部152および廃棄部154は、たとえばバッファ制御部330によって実現することができる。図1−3に示した付加部153は、たとえば廃棄情報付加部340によって実現することができる。図1−3に示した送信部155は、たとえば回線IF部350によって実現することができる。
(受信側の回線終端装置の構成)
図4は、受信側の回線終端装置の構成例を示す図である。図4においては回線終端装置131の構成例について説明するが、回線終端装置132の構成例についても同様である。図4に示すように、回線終端装置131は、回線IF部410と、バッファ420と、回線IF部430と、を備えている。
回線IF部410は、回線終端装置121からリンクL1により送信されたパケットを受信する。なお、回線終端装置132の回線IF部410は、回線終端装置122からリンクL2により送信されたパケットを受信する。回線IF部410は、受信したパケットをバッファ420の末尾に格納する。回線IF部430は、バッファ420に格納されたパケットを先頭から順に読み出す。そして、回線IF部430は、読み出したパケットをデータ転送装置140へ送信する。
(受信側のデータ転送装置の構成)
図5は、受信側のデータ転送装置の構成例を示す図である。図5に示すように、受信側のデータ転送装置140は、回線IF部511,512と、廃棄情報検出部520と、廃棄SN記憶部530と、整列部540と、待ち合わせバッファ550と、出力バッファ560と、回線IF部570と、を備えている。
回線IF部511は、回線終端装置131から送信されたパケットを受信する。回線IF部511は、受信したパケットを廃棄情報検出部520へ出力する。回線IF部512は、回線終端装置132から送信されたパケットを受信する。回線IF部512は、受信したパケットを廃棄情報検出部520へ出力する。
廃棄情報検出部520は、回線IF部511,512から出力されたパケットに含まれる廃棄情報を検出する。廃棄情報検出部520は、廃棄情報を検出した場合は、検出した廃棄情報に含まれるSNを廃棄SNとして廃棄SN記憶部530に記憶する。また、廃棄情報検出部520は、廃棄情報を検出した場合は、検出した廃棄情報をパケットから削除する。また、廃棄情報検出部520は、回線IF部511,512から出力されたパケットを整列部540へ出力する。
整列部540は、廃棄情報検出部520から出力されたパケットに付加されたSNを抽出し、抽出したSNに基づいて、データ転送装置140が受信した各パケットの順序整列を行う。具体的には、整列部540は、廃棄情報検出部520から出力されたパケットのSNが前回のSNより1だけ大きい場合は、パケットが正常に到着したと判断し、廃棄情報検出部520から出力されたパケットを出力バッファ560へ格納する。
また、整列部540は、廃棄情報検出部520から出力されたパケットのSNが前回のSNより2以上大きい場合は、正常に到着していないパケットがあると判断し、廃棄情報検出部520から出力されたパケットを待ち合わせバッファ550に格納する。ただし、整列部540は、廃棄情報検出部520から出力されたパケットのSNと、前回のSNとの間のSNが、廃棄SN記憶部530に記憶された廃棄SNと同じである場合は、パケットのSNが前回のSNより2以上大きい場合でもパケットを出力バッファ560に格納する。
また、整列部540は、廃棄SN記憶部530から出力されたパケットのSNが、前回のSNと、待ち合わせバッファ550に格納されたパケットのSNと、の間のSNである場合は、出力されたパケットを出力バッファ560に格納する。そして、整列部540は、待ち合わせバッファ550に格納されたパケットのSNが、出力バッファ560に格納したパケットのSNより1だけ大きい場合は、待ち合わせバッファ550に格納されたパケットを読み出して出力バッファ560に格納する。
回線IF部570は、出力バッファ560に格納されたパケットを先頭から順に読み出す。そして、回線IF部570は、読み出したパケットをデータ転送装置140の後段の通信装置(たとえばユーザ装置)へ送信する。
回線IF部511,512および回線IF部570のそれぞれは、たとえば有線や無線の通信インタフェースによって実現することができる。廃棄情報検出部520および整列部540のそれぞれは、たとえばファームウェアやDSPなどによって実現することができる。廃棄SN記憶部530、待ち合わせバッファ550および出力バッファ560は、たとえばRAMなどのメモリによって実現することができる。
(送信側のデータ転送装置による処理)
図6は、送信側のデータ転送装置による受信処理の一例を示すフローチャートである。送信側のデータ転送装置110は、たとえば以下の各ステップを実行する。まず、回線IF部210が、データ転送装置110の前段の通信装置からのパケットを受信したか否かを判断し(ステップS601)、パケットを受信するまで待つ(ステップS601:Noのループ)。パケットを受信すると(ステップS601:Yes)、SN付加部220が、受信されたパケットにSNを付加する(ステップS602)。
つぎに、SN付加部220が、SNをインクリメントする(ステップS603)。つぎに、SN付加部220が、ステップS602によってSNを付加したパケットをバッファ230の末尾に格納し(ステップS604)、ステップS601へ戻る。以上の各ステップにより、データ転送装置110は、パケットを受信した場合に、受信したパケットにSNを付加し、SNを付加したパケットをバッファ230に格納することができる。
図7は、送信側のデータ転送装置による送信処理の一例を示すフローチャートである。送信側のデータ転送装置110は、図6に示した受信動作とともに、たとえば以下の各ステップを実行する。まず、振分部240が、バッファ230にパケットが格納されているか否かを判断し(ステップS701)、バッファ230にパケットが格納されるまで待つ(ステップS701:Noのループ)。
ステップS701において、バッファ230にパケットが格納されると(ステップS701:Yes)、振分部240が、リンクL1,L2の中から、バッファ230の先頭に格納されたパケットの振分先のリンクを選択する(ステップS702)。たとえば、振分部240は、リンクL1,L2の各伝送速度に基づいて振分先のリンクを選択する。
つぎに、振分部240が、バッファ230の先頭に格納されたパケットを読み出す(ステップS703)。つぎに、振分部240が、回線終端装置121,122のうちのステップS702によって選択したリンクに対応する回線終端装置へ、ステップS703によって読み出したパケットを送信し(ステップS704)、ステップS701へ戻る。
ステップS704において、振分部240は、回線IF部251,252のうちの選択したリンクに対応する回線IF部へパケットを出力することによって、選択したリンクに対応する回線終端装置へパケットを送信する。以上の各ステップにより、データ転送装置110は、図6に示した受信処理によってバッファ230に格納されたパケットをリンクL1,L2に振り分けることができる。
(送信側の回線終端装置による処理)
図8は、送信側の回線終端装置による受信処理の一例を示すフローチャートである。ここでは回線終端装置121の受信処理について説明するが、回線終端装置122の受信処理についても同様である。回線終端装置121は、たとえば以下の各ステップを実行する。まず、回線IF部310が、データ転送装置110からのパケットを受信したか否かを判断し(ステップS801)、パケットを受信するまで待つ(ステップS801:Noのループ)。パケットを受信すると(ステップS801:Yes)、回線IF部310が、受信したパケットをバッファ320の末尾に格納する(ステップS802)。
つぎに、バッファ制御部330が、バッファ320の使用量が閾値を超過しているか否かを判断する(ステップS803)。バッファ320の使用量が閾値を超過していない場合(ステップS803:No)は、回線終端装置121は、ステップS801へ戻る。バッファ320の使用量が閾値を超過している場合(ステップS803:Yes)は、バッファ制御部330が、バッファ320に格納されたパケットのうちの先頭以外のパケットの中から廃棄対象のパケットを選択する(ステップS804)。
つぎに、バッファ制御部330が、ステップS804によって選択されたパケットに付加されたSNを抽出する(ステップS805)。つぎに、バッファ制御部330が、ステップS804によって選択したパケットをバッファ320から廃棄する(ステップS806)。つぎに、廃棄情報付加部340が、バッファ320に格納されたパケットのうちのステップS804によって選択された廃棄対象のパケットより前に格納されたパケットの中から、廃棄情報を付加する通知パケットを選択する(ステップS807)。
つぎに、廃棄情報付加部340が、ステップS805によって抽出されたSNを含む廃棄情報を、ステップS807によって選択した通知パケットに付加し(ステップS808)、ステップS801へ戻る。
以上の各ステップにより、回線終端装置121は、バッファ320の使用量が閾値を超過した場合にバッファ320のパケットを廃棄し、廃棄したパケットのSNを含む廃棄情報を、廃棄するパケットよりもSNの小さいパケットに付加することができる。
図9は、送信側の回線終端装置による送信処理の一例を示すフローチャートである。ここでは回線終端装置121の送信処理について説明するが、回線終端装置122の送信処理についても同様である。回線終端装置121は、図8に示した受信処理とともに、たとえば以下の各ステップを実行する。
まず、回線IF部350が、バッファ320にパケットが格納されているか否かを判断し(ステップS901)、バッファ320にパケットが格納されるまで待つ(ステップS901:Noのループ)。バッファ320にパケットが格納されると(ステップS901:Yes)、回線IF部350が、バッファ320の先頭に格納されたパケットを読み出す(ステップS902)。
つぎに、回線IF部350が、ステップS902によって読み出したパケットを送出し(ステップS903)、ステップS901へ戻る。以上の各ステップにより、回線終端装置121は、図8に示した受信処理によってバッファ320に格納されたパケットをリンクL1により送出することができる。
(受信側のデータ転送装置による処理)
図10は、受信側のデータ転送装置による受信処理の一例を示すフローチャートである。受信側のデータ転送装置140は、たとえば以下の各ステップを実行する。まず、回線IF部511,512が、回線終端装置131,132からのパケットを受信したか否かを判断し(ステップS1001)、パケットを受信するまで待つ(ステップS1001:Noのループ)。パケットを受信すると(ステップS1001:Yes)、廃棄情報検出部520が、ステップS1001において受信されたパケットに廃棄情報が付加されているか否かを判断する(ステップS1002)。
ステップS1002において、廃棄情報が付加されていない場合(ステップS1002:No)は、データ転送装置140は、ステップS1005へ移行する。廃棄情報が付加されている場合(ステップS1002:Yes)は、廃棄情報検出部520が、パケットに付加されていた廃棄情報に含まれるSNを廃棄SNとして廃棄SN記憶部530に記憶する(ステップS1003)。
つぎに、廃棄情報検出部520が、ステップS1001において受信されたパケットから廃棄情報を削除する(ステップS1004)。つぎに、整列部540が、ステップS1001において受信されたパケットのSNを抽出する(ステップS1005)。つぎに、整列部540が、ステップS1005によって抽出したSNが、到着予定SNと同じであるか否かを判断する(ステップS1006)。到着予定SNは、たとえばデータ転送装置140のメモリに記憶されている。到着予定SNの初期値は、データ転送装置110によって付加されるSNの初期値と同じである。
ステップS1006において、抽出されたSNが到着予定SNと同じである場合(ステップS1006:Yes)は、到着予定のパケットが正しく到着したと判断することができる。この場合は、整列部540が、到着予定SNをインクリメントする(ステップS1007)。つぎに、ステップS1007によってインクリメントされた到着予定SNが、ステップS1003によって記憶された廃棄SNと同じであるか否かを判断する(ステップS1008)。
ステップS1008において、到着予定SNが廃棄SNと同じである場合(ステップS1008:Yes)は、到着予定SNが示すパケットは送信側で廃棄されたと判断することができる。この場合は、整列部540は、ステップS1007へ戻って到着予定SNをインクリメントする。これにより、廃棄されたパケットのつぎのパケットのSNを到着予定SNとし、廃棄されたパケットの受信待ちを行わないようにすることができる。
ステップS1008において、到着予定SNが廃棄SNと同じでない場合(ステップS1008:No)は、到着予定SNが示すパケットは送信側で廃棄されていないと判断することができる。この場合は、整列部540が、ステップS1001において受信されたパケットを出力バッファ560の末尾に格納し(ステップS1009)、ステップS1001へ戻る。
ステップS1006において、抽出したSNが到着予定SNと同じでない場合(ステップS1006:No)は、到着予定のパケットが正しく到着しなかったと判断することができる。この場合は、整列部540が、抽出したSNが受信待ちSNと同じであるか否かを判断する(ステップS1010)。受信待ちSNは、たとえばデータ転送装置140のメモリに記憶されている。初期状態では、受信待ちSNはクリアされている。ステップS1010において、受信待ちSNがクリアされている場合は、抽出したSNが受信待ちSNと同じでないと判断される。
ステップS1010において、抽出したSNが受信待ちSNと同じでない場合(ステップS1010:No)は、抽出したSNと受信待ちSNとの間のSNの飛びが発生したと判断することができる。この場合は、整列部540は、飛びが発生したSNのパケットを待ち合わせるために、抽出したSNと受信待ちSNとの間のSNを受信待ちSNとしてデータ転送装置140のメモリに記憶する(ステップS1011)。
つぎに、整列部540が、所定時間を計時する受信待ちタイマを起動する(ステップS1012)。受信待ちタイマが計時する所定時間は、パケットの順序が入れ替わった可能性がある場合にパケットの待ち合わせを行う最大の時間である。つぎに、整列部540が、到着予定SNを、抽出したSN+1に設定する(ステップS1013)つぎに、整列部540が、ステップS1001において受信されたパケットを待ち合わせバッファ550の末尾に格納し(ステップS1014)、ステップS1001へ戻る。
ステップS1010において、抽出したSNが受信待ちSNと同じである場合(ステップS1010:Yes)は、過去に飛びが発生したSNのパケットが到着したと判断することができる。この場合は、整列部540は、ステップS1012によって起動された受信待ちタイマを解除する(ステップS1015)。
つぎに、整列部540が、ステップS1001において受信されたパケットを出力バッファの末尾に格納する(ステップS1016)。つぎに、整列部540が、待ち合わせバッファのパケットを読み出す(ステップS1017)。つぎに、整列部540が、ステップS1017によって読み出したパケットを出力バッファ560の末尾に格納し(ステップS1018)、ステップS1001へ戻る。
以上の各ステップにより、データ転送装置140は、受信した各パケットに含まれるSNに基づく順序整列を行い、順序整列を行った各パケットを出力バッファ560に順次格納することができる。また、データ転送装置140は、廃棄パケットとして通知されたSNについては、ステップS1007においてカウンタ(到着予定SN)を強制的に進めることで、廃棄されたパケットの受信待ちを行わないようにすることができる。
図11は、受信側のデータ転送装置によるタイマ管理処理の一例を示すフローチャートである。データ転送装置140は、図10に示した受信処理とともに、たとえば以下の各ステップを実行する。まず、整列部540が、図10に示したステップS1012によって受信待ちタイマが起動しているか否かを判断する(ステップS1101)。
ステップS1101において、受信待ちタイマが起動していない場合(ステップS1101:No)は、データ転送装置140は、ステップS1101へ戻る。受信待ちタイマが起動している場合(ステップS1101:Yes)は、整列部540が、受信待ちタイマが満了したか否かを判断する(ステップS1102)。
ステップS1102において、受信待ちタイマが満了していない場合(ステップS1102:No)は、データ転送装置140は、ステップS1101へ戻る。受信待ちタイマが満了した場合(ステップS1102:Yes)は、整列部540が、受信待ちSNをクリアする(ステップS1103)。
つぎに、整列部540が、待ち合わせバッファ550に格納されたパケットを読み出す(ステップS1104)。つぎに、整列部540が、ステップS1104によって読み出したパケットを出力バッファ560の末尾に格納し(ステップS1105)、ステップS1101へ戻る。以上の各ステップにより、データ転送装置140は、受信待ちのパケットが所定時間以上到着しなかった場合にパケットの待ち合わせを終了することができる。
図12は、受信側のデータ転送装置による送信処理の一例を示すフローチャートである。データ転送装置140は、図10,図11に示した各処理とともに、たとえば以下の各ステップを実行する。まず、回線IF部570が、出力バッファ560にパケットが格納されているか否かを判断し(ステップS1201)、出力バッファ560にパケットが格納されるまで待つ(ステップS1201:Noのループ)。
ステップS1201において、出力バッファ560にパケットが格納されると(ステップS1201:Yes)、回線IF部570が、出力バッファ560の先頭に格納されたパケットを読み出す(ステップS1202)。つぎに、回線IF部570が、ステップS1202によって読み出したパケットのSNを削除する(ステップS1203)。
つぎに、回線IF部570が、ステップS1203によってSNを削除したパケットをデータ転送装置140の後段の通信装置へ送信し(ステップS1204)、ステップS1201へ戻る。以上の各ステップにより、データ転送装置140は、図10に示した受信処理によって受信して整列した各パケットを後段の通信装置へ送信することができる。
このように、実施の形態1にかかる通信システム100によれば、送信バッファのパケットを廃棄する際に、廃棄対象は二番目以降のパケットとし、廃棄したパケットのSNを、廃棄したパケットより前のパケットに付加して受信側に通知することができる。これにより、受信側は、送信側で廃棄されたパケットの飛びを検知する前に、送信側で廃棄されたパケットのSNを認識することができる。このため、送信側で廃棄されたパケットの受信待ちを受信側で行うことを回避し、受信待ちによる遅延時間を低減することができる。
特に、リンクL1,L2が無線リンクである場合は、リンクL1,L2の伝送速度の変動が大きいため、送信バッファのパケット廃棄が発生しやすい。これに対して、通信システム100によれば、送信側で廃棄されたパケットの受信待ちを受信側で行うことを回避し、受信待ちによる遅延時間を低減することができる。
(実施の形態2)
実施の形態2においては、データ転送装置110からデータ転送装置140へ複数のデータフローが伝送される場合について説明する。実施の形態2にかかる通信システム100において、実施の形態1にかかる通信システム100と異なる部分について説明する。また、複数のデータフローの一例として、2つのデータフローf1,f2が伝送される場合について説明する。
(送信側のデータ転送装置の構成)
図13は、送信側のデータ転送装置の構成例を示す図である。図13において、図2に示した部分と同様の部分については同一の符号を付して説明を省略する。図13に示すように、実施の形態2にかかる送信側のデータ転送装置110は、図2に示したSN付加部220およびバッファ230に代えて、識別部260、SN付加部221,222およびバッファ231,232を備えている。
回線IF部210は、受信したパケットを識別部260へ出力する。識別部260は、回線IF部210から出力されたパケットのデータフロー(データフローf1またはデータフローf2)を識別する。たとえば、識別部260は、パケットのヘッダ情報に基づいてパケットのデータフローを識別する(他の識別部についても同様)。
ヘッダ情報としては、たとえば、イーサネットヘッダの送信元/宛先MACアドレス、プロトコル種別、IPヘッダの送信元/宛先IPアドレス、TCP/UDPプロトコル種別、TCPまたはUDPヘッダの送信元/宛先ポート番号などを挙げることができる。識別部260は、回線IF部210から出力されたパケットを、SN付加部221,222のうちの識別したデータフローに対応するSN付加部へ出力する。
SN付加部221,222は、それぞれデータフローf1,f2に対応するSN付加部である。SN付加部221,222のそれぞれは図2に示したバッファ230と同様である。また、SN付加部221,222は、互いに独立したSNをパケットに付加する。これにより、データ転送装置110が受信した各パケットに対して、データフローごとのSNを付加することができる。SN付加部221,222は、SNを付加したパケットをそれぞれバッファ231,232に格納する。
バッファ231,232は、それぞれデータフローf1,f2に対応するバッファである。振分部240は、バッファ231,232に格納されたパケットを読み出して回線IF部251,252へ出力する。なお、振分部240をデータフローf1,f2のそれぞれに対応して設けてもよい。
(送信側の回線終端装置の構成)
図14は、送信側の回線終端装置の構成例を示す図である。図14において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図14に示すように、実施の形態2にかかる送信側の回線終端装置121は、図3に示したバッファ320に代えて、識別部380およびバッファ321,322を備えている。また、回線終端装置121は、図3に示したバッファ制御部330および廃棄情報付加部340に代えて、バッファ制御部331,332および廃棄情報付加部341,342を備えている。回線終端装置122についても同様である。
回線IF部310は、受信したパケットを識別部380へ出力する。識別部380は、回線IF部310から出力されたパケットのデータフロー(データフローf1またはデータフローf2)を識別する。識別部380は、回線IF部310から出力されたパケットを、バッファ321,322のうちの識別したデータフローに対応するバッファの末尾に格納する。
バッファ321,322は、それぞれデータフローf1,f2に対応するバッファである。バッファ制御部331,332は、それぞれバッファ321,322に対応するバッファ制御部である。バッファ制御部331,332のそれぞれは、図3に示したバッファ制御部330と同様である。廃棄情報付加部341,342は、それぞれバッファ321,322に対応する廃棄情報付加部である。廃棄情報付加部341,342のそれぞれは、図3に示した廃棄情報付加部340と同様である。回線IF部350は、バッファ321,322に格納されたパケットを読み出して送出する。
(受信側のデータ転送装置の構成)
図15は、受信側のデータ転送装置の構成例を示す図である。図15において、図5に示した部分と同様の部分については同一の符号を付して説明を省略する。図15に示すように、実施の形態2にかかる受信側のデータ転送装置140は、図5に示した廃棄情報検出部520および廃棄SN記憶部530に代えて、識別部580、廃棄情報検出部521,522および廃棄SN記憶部531,532を備えている。また、データ転送装置140は、図5に示した整列部540、待ち合わせバッファ550および出力バッファ560に代えて、整列部541,542、待ち合わせバッファ551,552および出力バッファ561,562を備えている。
回線IF部511,512は、受信したパケットを識別部580へ出力する。識別部580は、回線IF部511,512から出力されたパケットのデータフロー(データフローf1またはデータフローf2)を識別する。識別部580は、回線IF部511,512から出力されたパケットを、廃棄情報検出部521,522のうちの識別した廃棄情報検出部へ出力する。
廃棄情報検出部521,522は、それぞれデータフローf1,f2に対応する廃棄情報検出部である。廃棄情報検出部521,522のそれぞれは図5に示した廃棄情報検出部520と同様である。廃棄情報検出部521,522は、検出した廃棄情報に含まれるSNを廃棄SNとしてそれぞれ廃棄SN記憶部531,532に記憶する。また、廃棄情報検出部521,522は、パケットをそれぞれ整列部541,542へ出力する。
整列部541,542は、それぞれデータフローf1,f2に対応する整列部である。整列部541,542のそれぞれは図5に示した整列部540と同様である。整列部541,542は、それぞれ飛びが発生したパケットについてはそれぞれ待ち合わせバッファ551,552に格納する。また、整列部541,542は、正常に到着したパケットについてはそれぞれ出力バッファ561,562に格納する。
待ち合わせバッファ551,552は、それぞれデータフローf1,f2に対応する待ち合わせバッファである。出力バッファ561,562は、それぞれデータフローf1,f2に対応する出力バッファである。回線IF部570は、出力バッファ561,562に格納されたパケットを読み出して送信する。
(送信側のデータ転送装置による処理)
図16は、送信側のデータ転送装置による受信処理の一例を示すフローチャートである。実施の形態2にかかる送信側のデータ転送装置110は、たとえば以下の各ステップを実行する。まず、回線IF部210が、データ転送装置110の前段の通信装置からのパケットを受信したか否かを判断し(ステップS1601)、パケットを受信するまで待つ(ステップS1601:Noのループ)。
ステップS1601において、パケットを受信すると(ステップS1601:Yes)、識別部260が、ステップS1601において受信されたパケットのデータフローを識別する(ステップS1602)。つぎに、データ転送装置110は、受信されたパケットに、ステップS1602によって識別されたデータフローに対応するSNを付加する(ステップS1603)。ステップS1603は、SN付加部221,222のうちの識別されたデータフローに対応するSN付加部によって実行される。
つぎに、SN付加部221,222のうちのデータフローに対応するSN付加部が、データフローに対応するSNをインクリメントする(ステップS1604)。つぎに、SN付加部221,222のうちのデータフローに対応するSN付加部が、ステップS1603によってSNを付加したパケットをデータフローに対応するバッファの末尾に格納し(ステップS1605)、ステップS1601へ戻る。ステップS1604において、データフローに対応するバッファは、バッファ231,232のうちの識別されたデータフローに対応するバッファである。
以上の各ステップにより、データ転送装置110は、パケットを受信した場合に、受信したパケットにデータフローごとにSNを付加し、SNを付加したパケットをデータフローに応じてバッファ231,232に格納することができる。
図17は、送信側のデータ転送装置による送信処理の一例を示すフローチャートである。実施の形態2にかかる送信側のデータ転送装置110は、図16に示した受信動作とともに、たとえば以下の各ステップを実行する。まず、振分部240が、データフローf1,f2の中からパケットを読み出すデータフローを選択する(ステップS1701)。
ステップS1701におけるデータフローの選択について説明する。たとえば、振分部240は、ステップS1701を実行するたびに、選択するデータフローを切り替える。または、振分部240は、各データフローの優先度などに基づいてデータフローを選択してもよい。以下のデータフローの選択についても同様である。
つぎに、振分部240が、バッファ231,232のうちのステップS1701によって選択したデータフローに対応するバッファにパケットが格納されているかを判断する(ステップS1702)。そして、振分部240は、バッファにパケットが格納されるまで待つ(ステップS1702:Noのループ)。パケットが格納されると(ステップS1702:Yes)、振分部240が、リンクL1,L2の中からパケットの振分先のリンクを選択する(ステップS1703)。たとえば、振分部240は、リンクL1,L2の各伝送速度に基づくラウンドロビンなどのアルゴリズムを用いてリンクを選択する。
つぎに、振分部240が、バッファ231,232のうちのステップS1701によって選択したデータフローに対応するバッファの先頭に格納されたパケットを読み出す(ステップS1704)。つぎに、振分部240が、回線終端装置121,122のうちのステップS1703によって選択したリンクに対応する回線終端装置へ、ステップS1704によって読み出したパケットを送信する(ステップS1705)。
そして、データ転送装置110は、ステップS1701へ戻る。ステップS1705において、振分部240は、回線IF部251,252のうちの選択したリンクに対応する回線IF部へパケットを出力することによって、選択したリンクに対応する回線終端装置へパケットを送信する。
以上の各ステップにより、データ転送装置110は、図16に示した受信処理によってバッファ231,232に格納された各データフローのパケットをリンクL1,L2に振り分けて送出することができる。
(送信側の回線終端装置による処理)
図18は、送信側の回線終端装置による受信処理の一例を示すフローチャートである。ここでは回線終端装置121の受信処理について説明するが、回線終端装置122の受信処理についても同様である。実施の形態2にかかる回線終端装置121は、たとえば以下の各ステップを実行する。まず、回線IF部310が、データ転送装置110からのパケットを受信したか否かを判断し(ステップS1801)、パケットを受信するまで待つ(ステップS1801:Noのループ)。
ステップS1801においてパケットを受信すると(ステップS1801:Yes)、識別部380が、ステップS1801において受信されたパケットのデータフローを識別する(ステップS1802)。つぎに、識別部380が、ステップS1801において受信されたパケットを、バッファ321,322のうちのステップS1802において識別したデータフローに対応するバッファの末尾に格納する(ステップS1803)。
つぎに、回線終端装置121は、バッファ321,322のうちのステップS1802において識別されたデータフローに対応するバッファの使用量が閾値を超過しているか否かを判断する(ステップS1804)。ステップS1804は、バッファ制御部331,332のうちのステップS1802において識別されたデータフローに対応するバッファ制御部によって行われる(ステップS1805〜S1807も同様)。
ステップS1805〜S1809は、図8に示したステップS804〜S808と同様である。ただし、ステップS1805〜S1809の各ステップは、ステップS1802において識別されたデータフローについて行われる。
以上の各ステップにより、回線終端装置121は、データフローごとに、バッファの使用量が閾値を超過した場合にバッファのパケットを廃棄し、廃棄したパケットのSNを含む廃棄情報を、廃棄するパケットよりもSNの小さいパケットに付加することができる。
図19は、送信側の回線終端装置による送信処理の一例を示すフローチャートである。ここでは回線終端装置121の送信処理について説明するが、回線終端装置122の送信処理についても同様である。実施の形態2にかかる回線終端装置121は、図18に示した受信処理とともに、たとえば以下の各ステップを実行する。
まず、回線IF部350が、データフローf1,f2の中からパケットを読み出すデータフローを選択する(ステップS1901)。つぎに、回線IF部350が、バッファ321,322のうちのステップS1901において選択したデータフローに対応するバッファにパケットが格納されているか否かを判断する(ステップS1902)。そして、回線IF部350は、バッファにパケットが格納されるまで待つ(ステップS1902:Noのループ)。
ステップS1902において、バッファにパケットが格納されると(ステップS1902:Yes)、回線IF部350が、データフローに対応するバッファの先頭に格納されたパケットを読み出す(ステップS1903)。つぎに、回線IF部350が、ステップS1903によって読み出したパケットを送出し(ステップS1904)、ステップS1901へ戻る。
以上の各ステップにより、回線終端装置121は、図18に示した受信処理によってデータフローごとにバッファ321,322に格納されたパケットをリンクL1へ送出することができる。
(受信側のデータ転送装置による処理)
図20は、受信側のデータ転送装置による受信処理の一例を示すフローチャートである。実施の形態2にかかる受信側のデータ転送装置140は、たとえば以下の各ステップを実行する。まず、回線IF部511,512が、回線終端装置131,132からのパケットを受信したか否かを判断し(ステップS2001)、パケットを受信するまで待つ(ステップS2001:Noのループ)。パケットを受信すると(ステップS2001:Yes)、識別部580が、ステップS2001において受信されたパケットのデータフローを識別する(ステップS2002)。
図20に示すステップS2003〜S2019は、図10に示したステップS1002〜S1018と同様である。ただし、ステップS2003〜S2019は、ステップS2002によって識別されたデータフローごとに行われる。また、図11に示したタイマ管理処理についてもステップS2002によって識別されたデータフローごとに行われる。
図21は、受信側のデータ転送装置による送信処理の一例を示すフローチャートである。実施の形態2にかかるデータ転送装置140は、図11,図20に示した各処理とともに、たとえば以下の各ステップを実行する。まず、回線IF部570が、データフローf1,f2の中からパケットを読み出すデータフローを選択する(ステップS2101)。
つぎに、回線IF部570が、出力バッファ561,562のうちのステップS2101において選択したデータフローに対応する出力バッファにパケットが格納されているか否かを判断する(ステップS2102)。そして、回線IF部570は、出力バッファにパケットが格納されるまで待つ(ステップS2102:Noのループ)。
ステップS2102において、パケットが格納されると(ステップS2102:Yes)、回線IF部570が、データフローに対応する出力バッファの先頭に格納されたパケットを読み出す(ステップS2103)。つぎに、回線IF部570が、ステップS2103によって読み出したパケットのSNを削除する(ステップS2104)。
つぎに、回線IF部570が、ステップS2104によってSNを削除したパケットをデータ転送装置140の後段の通信装置へ送信し(ステップS2105)、ステップS2101へ戻る。以上の各ステップにより、データ転送装置140は、図10に示した受信処理によって受信して整列した各パケットを後段の通信装置へ送信することができる。
このように、実施の形態2にかかる通信システム100によれば、データ転送装置110からデータ転送装置140へ複数のデータフローを伝送する場合でも、実施の形態1と同様に、受信待ちによる遅延時間を低減することができる。
(実施の形態3)
(実施の形態3にかかる通信システム)
図22−1は、実施の形態3にかかる通信システムの一例を示す図(その1)である。図22−2は、実施の形態3にかかる通信システムの一例を示す図(その2)である。図22−1,図22−2において、図1−1,図1−2に示した部分と同様の部分については同一の符号を付して説明を省略する。
図22−1に示す例では、回線終端装置122のバッファ122aには、SNが「4」,「6」,「8」の各パケットが格納されている。実施の形態3にかかる回線終端装置122は、廃棄条件を満たした場合に、バッファ122aに格納された各パケットのうちの末尾のパケットを廃棄対象のパケットとして選択する。図22−1に示す例では、SNが「8」のパケットが廃棄対象として選択される。また、回線終端装置122は、SNが「4」のパケットに廃棄情報101を付加したとする。
また、実施の形態3にかかる回線終端装置122は、符号2201に示すように、バッファ122aからのパケット廃棄が発生したことを示す廃棄通知情報をデータ転送装置110へ送信する。廃棄通知情報の送信は、たとえば制御用の通信路による制御メッセージによって行うことができる。
データ転送装置110は、回線終端装置122から廃棄通知情報を受信すると、以降、各パケットをリンクL1のみに振り分けるようにする。バッファ110aは、データ転送装置110のバッファ(たとえば図2に示したバッファ230)である。データ転送装置110のバッファ110aには、振り分け前の各パケットとして、SNが「7」,「9」,「10」,「11」の各パケットが格納されているとする。
データ転送装置110は、バッファ110aに格納された各パケットをリンクL1に振り分ける。これにより、回線終端装置122において廃棄されたパケットより後の各パケットについては、パケット廃棄が発生していないリンクL1によって伝送され、伝送による順序の入れ替えが発生しないことになる。
図22−2の到着順序141に示すように、データ転送装置140には、SNで「5」,「4」,「6」,「7」,「9」,「10」,「11」の順に各パケットが到着したとする。データ転送装置140は、SNが「4」のパケットの前にSNが「5」のパケットを受信したため、SNが「5」のパケットをバッファ(たとえば図5の待ち合わせバッファ550)に格納してSNが「4」のパケットの受信を待つ。
そして、データ転送装置140は、SNが「4」のパケットを受信すると、SNが「4」のパケットを出力し、つぎにSNが「5」のパケットを出力することで順序整列を行う。また、データ転送装置140は、SNが「4」に付加された廃棄情報に基づいて、送信側で廃棄されたSNが「8」のパケットについては受信待ちを行わない。
さらに、データ転送装置140は、SNが「8」より大きいSNのパケットについても、順序の入れ替えが発生しないため、パケットの飛びは伝送途中のロストによるものと判断することができる。このため、データ転送装置140は、廃棄情報に含まれるSNより大きいSNのパケットについては、整列処理を行わず、受信するごとに後段に出力することができる。
これにより、データ転送装置140は、送信側で廃棄されたパケットだけでなく、廃棄された後のパケットについても受信待ちを行わないようにすることができる。このため、パケットの受信待ちにする遅延時間をさらに低減することができる。
なお、回線終端装置122は、廃棄通知情報をデータ転送装置110へ送信し、送信した廃棄通知情報に対して応答信号をデータ転送装置110から受信してからバッファ122aの末尾のパケットを廃棄してもよい。データ転送装置110は、回線終端装置122から廃棄通知情報を受信すると、応答信号を回線終端装置122へ送信する。
また、データ転送装置110は、所定の条件を満たすと、各パケットをリンクL1のみに振り分ける状態を解除し、各パケットをリンクL1,L2に振り分ける状態に戻る。所定の条件は、たとえば、バッファ122aの使用量が閾値未満となることや、一定時間が経過することや、リンクL2の通信品質が改善して閾値を超えることなどである。
各パケットをリンクL1,L2に振り分ける状態に戻る場合は、データ転送装置110は、たとえばデータ転送装置140に対して制御メッセージを送信する。データ転送装置140は、データ転送装置110から制御メッセージを受信すると、パケットの順序整列の処理を再開する。
(送信側のデータ転送装置の構成)
図23は、送信側のデータ転送装置の構成例を示す図である。図23において、図2に示した部分と同様の部分については同一の符号を付して説明を省略する。図23に示すように、実施の形態3にかかるデータ転送装置110は、図2に示した構成に加えて取得部2310を備えている。
取得部2310は、回線終端装置121,122から、バッファからのパケット廃棄が発生したことを示す廃棄通知情報を取得する。取得部2310は、取得した廃棄通知情報を振分部240へ出力する。振分部240は、取得部2310から廃棄通知情報が出力されると、以降、バッファ230の各パケットを、リンクL1,L2のうちの廃棄通知情報の送信元とは異なるリンクL1に振り分けるようにする。
(送信側の回線終端装置の構成)
図24は、送信側の回線終端装置の構成例を示す図である。図24において、図3に示した部分と同様の部分については同一の符号を付して説明を省略する。図24に示すように、実施の形態3にかかる回線終端装置121(または回線終端装置122)は、図3に示した構成に加えて通知部2410を備えている。
バッファ制御部330は、廃棄条件を満たした場合に、バッファ320の末尾に格納されたパケットを廃棄対象として選択する。そして、バッファ制御部330は、パケット廃棄の発生を示す廃棄通知情報を通知部2410へ出力する。通知部2410は、バッファ制御部330から出力された廃棄通知情報をデータ転送装置110へ送信することで、回線終端装置121におけるパケット廃棄の発生をデータ転送装置110へバックプレッシャ通知する。
(受信側のデータ転送装置の構成)
実施の形態3にかかる受信側のデータ転送装置140の構成は、図5に示した構成と同様である。ただし、整列部540は、廃棄情報検出部520から出力されたパケットのSNが、廃棄SN記憶部530によって記憶されたSNより大きい場合は、廃棄情報検出部520から出力されたパケットを出力バッファ560に格納する。
(送信側のデータ転送装置による処理)
図25は、送信側のデータ転送装置による受信処理の一例を示すフローチャートである。実施の形態3にかかる送信側のデータ転送装置110は、図6に示した受信動作とともに、たとえば以下の各ステップを実行する。まず、振分部240が、バッファ230にパケットが格納されているか否かを判断し(ステップS2501)、バッファ230にパケットが格納されるまで待つ(ステップS2501:Noのループ)。
ステップS2501において、バッファ230にパケットが格納されると(ステップS2501:Yes)、取得部2310が、回線終端装置121,122のいずれかからの廃棄通知情報を取得したか否かを判断する(ステップS2502)。廃棄通知情報を取得していない場合(ステップS2502:No)は、データ転送装置110は、ステップS2503へ移行する。図25に示すステップS2503〜S2505は、図7に示したステップS702〜S704と同様である。
ステップS2502において、廃棄通知情報を取得した場合(ステップS2502:Yes)は、振分部240が、振り分け先のリンクを、リンクL1,L2のうちの廃棄通知情報の送信元のリンク以外のリンクから選択する(ステップS2506)。そして、データ転送装置110は、ステップS2504へ移行する。この場合は、振分部240は、ステップS2505において、ステップS2503によって選択したリンクに対応する回線終端装置へパケットを送信する。
以上の各ステップにより、データ転送装置110は、図6に示した受信処理によってバッファ230に格納されたパケットをリンクL1,L2に振り分けて送信することができる。また、回線終端装置121,122のいずれかでパケット廃棄が発生した場合は、パケット廃棄が発生していないリンクによりパケットを送信することができる。
通信システム100のリンクが3つ以上ある場合は、振分部240は、ステップS2503において、たとえば、廃棄通知情報の送信元のリンク以外の各リンクの中から、伝送速度が最も高いリンクを選択する。これにより、各パケットを送信するリンクを1つにすることによる伝送遅延を低減することができる。
(送信側の回線終端装置による処理)
図26は、送信側の回線終端装置による受信処理の一例を示すフローチャートである。ここでは回線終端装置121の受信処理について説明するが、回線終端装置122の受信処理についても同様である。実施の形態3にかかる回線終端装置121は、たとえば以下の各ステップを実行する。図26に示すステップS2601〜S2608は、図8に示したステップS801〜S808と同様である。
ただし、ステップS2604においては、バッファ制御部330は、バッファ320の末尾のパケットを廃棄対象のパケットとして選択する(ステップS2604)。ステップS2608のつぎに、通知部2410が、送信側のデータ転送装置110へ廃棄通知情報を送信し(ステップS2609)、一連の処理を終了する。
以上の各ステップにより、回線終端装置121は、バッファ320の使用量が閾値を超過した場合にバッファ320の末尾のパケットを廃棄し、廃棄したパケットのSNを含む廃棄情報を、廃棄するパケットよりもSNの小さいパケットに付加することができる。また、回線終端装置121は、廃棄したパケットのSNを含む廃棄通知情報をデータ転送装置110へ送信することができる。
(受信側のデータ転送装置による処理)
図27は、受信側のデータ転送装置による受信処理の一例を示すフローチャートである。実施の形態3にかかる受信側のデータ転送装置140は、たとえば以下の各ステップを実行する。図27に示すステップS2701〜S2705は、図10に示したステップS1001〜S1005と同様である。
ステップS2705のつぎに、整列部540が、ステップS2705において抽出したSNが廃棄SN記憶部530に記憶された廃棄SNより大きいか否かを判断する(ステップS2706)。抽出したSNが廃棄SNより大きい場合(ステップS2706:Yes)は、データ転送装置140は、ステップS2710へ移行する。抽出したSNが廃棄SNより大きくない場合(ステップS2706:No)は、データ転送装置140は、ステップS2707へ移行する。ステップS2707〜S2719は、図10に示したステップS1006〜S1018と同様である。
以上の各ステップにより、データ転送装置140は、送信側で廃棄されたパケットより後のパケットについて、整列処理を行わずに出力バッファ560に格納することができる。すなわち、データ転送装置140は、廃棄情報によって特定されるSNが示す順序以降のパケットを、整列処理を行わずに出力する。
このように、実施の形態3にかかる通信システム100によれば、実施の形態1にかかる通信システム100と同様の効果を得ることができる。また、送信側で廃棄されたパケットより後のパケットについても、整列処理を行わずに順次出力することができる。これにより、受信待ちによる遅延時間をさらに低減することができる。
特に、リンクL1,L2のいずれかの伝送速度が低下し、回線終端装置121,122のいずれかで輻輳状態が継続した場合に、受信側の整列処理を停止させることができるため、遅延時間を低減することができる。また、輻輳状態が継続した場合に、パケット廃棄が発生するごとに廃棄情報を送信することを回避することができる。
以上説明したように、中継装置、受信装置、送信システム、通信システムおよび中継方法によれば、遅延時間を低減することができる。
上述した各実施の形態に関し、さらに以下の付記を開示する。
(付記1)順序付けられた複数の送信パケットを、送信装置が複数の中継装置を介する複数の通信回線に振り分けて受信装置に送信する送信システムにおける前記中継装置であって、
前記順序付けられた複数の送信パケットのうちで前記中継装置に振り分けられたパケットを格納するバッファと、
前記バッファに格納されているパケットの廃棄条件を満たした場合に、前記バッファに格納されているパケットの中から廃棄対象のパケットを選択する選択部と、
前記選択部によって選択されたパケットの前記順序を特定可能であり前記選択されたパケットを廃棄することを示す廃棄情報を、前記選択されたパケットより順序が前のパケットに付加して送信する送信部と、
を備えることを特徴とする中継装置。
(付記2)前記廃棄条件は、前記バッファの空き容量に基づく条件であることを特徴とする付記1に記載の中継装置。
(付記3)前記送信部は、前記廃棄対象のパケットより前に前記バッファに格納されているパケットのヘッダに前記廃棄情報を付加することを特徴とする付記1または2に記載の中継装置。
(付記4)前記選択部は、前記バッファに格納されたパケットの中から前記順序が最初ではないパケットを廃棄対象として選択することを特徴とする付記1〜3のいずれか一つに記載の中継装置。
(付記5)前記廃棄情報は、前記選択されたパケットの前記順序を含む情報であることを特徴とする付記1〜4のいずれか一つに記載の中継装置。
(付記6)前記廃棄情報は、前記選択されたパケットの前記順序と、前記廃棄情報が付加されるパケットの前記順序と、の差分を示す情報を含むことを特徴とする付記1〜5のいずれか一つに記載の中継装置。
(付記7)前記送信部は、前記バッファから読み出したパケットを、受信する各パケットに含まれる前記順序になるように前記受信する各パケットを整列して出力し、前記廃棄情報によって特定される順序より後の順序を含むパケットを、前記特定される順序を含むパケットを待たずに出力する受信装置へ送信することを特徴とする付記1〜6のいずれか一つに記載の中継装置。
(付記8)順序付けられた複数の送信パケットを、送信装置が複数の中継装置を介する複数の通信回線に振り分けて受信装置に送信する送信システムにおける前記受信装置であって、
前記順序付けられた複数の送信パケットのうちの一部を振り分けられた前記中継装置において廃棄されたパケットの順序を特定可能な廃棄情報によって特定される順序より後の順序であるパケットを、前記特定される順序であるパケットを待たずに出力する出力部を備えることを特徴とする受信装置。
(付記9)順序付けられた複数の送信パケットを、送信装置が複数の中継装置を介する複数の通信回線に振り分けて受信装置に送信する送信システムにおいて、
前記複数の中継装置のそれぞれは、
前記順序付けられた複数の送信パケットのうちで前記中継装置に振り分けられたパケットを格納するバッファと、
前記バッファに格納されているパケットの廃棄条件を満たした場合に、前記バッファに格納されているパケットの中から廃棄対象のパケットを選択する選択部と、
前記選択部によって選択されたパケットの前記順序を特定可能であり前記選択されたパケットを廃棄することを示す廃棄情報を、前記選択されたパケットより順序が前のパケットに付加して送信する送信部と、
を備えることを特徴とする送信システム。
(付記10)前記選択部は、前記バッファの末尾に格納されているパケットを選択し、
前記送信装置は、前記複数の中継装置のうちのいずれかの中継装置によってパケットが廃棄される場合に、前記複数の中継装置のうちの前記いずれかの中継装置以外の中継装置のいずれかに前記複数のパケットを出力することを特徴とする付記9に記載の送信システム。
(付記11)前記送信装置は、前記いずれかの中継装置以外の中継装置のうちの、前記複数のリンクのうちの最も伝送速度が高いリンクに接続された中継装置に前記パケットを出力することを特徴とする付記10に記載の送信システム。
(付記12)前記送信部は、受信する各パケットを、前記受信する各パケットに含まれる前記順序になるように整列する整列処理を行って出力し、前記廃棄情報によって特定される順序以降のパケットを、前記整列処理を行わずに出力する受信装置へ送信することを特徴とする付記9〜11のいずれか一つに記載の送信システム。
(付記13)各パケットに前記順序を示す順序情報を付加する順序付加部を備え、
前記送信装置は、前記順序付加部によって順序情報が付加された各パケットを前記複数の中継装置に振り分けて出力することを特徴とする付記9〜12のいずれか一つに記載の送信システム。
(付記14)前記順序付加部は、前記各パケットに対してデータフローごとの順序を示す順序情報を付加することを特徴とする付記13に記載の送信システム。
(付記15)順序付けられた複数の送信パケットを、送信装置が複数の中継装置を介する複数の通信回線に振り分けて受信装置に送信する通信システムにおいて、
前記順序付けられた複数の送信パケットのうちで前記中継装置に振り分けられたパケットをバッファに格納し、前記バッファに格納されているパケットの廃棄条件を満たした場合に、前記バッファに格納されているパケットの中から廃棄対象のパケットを選択し、選択したパケットの前記順序を特定可能であり前記選択されたパケットを廃棄することを示す廃棄情報を、前記選択したパケットより順序が前のパケットに付加して送信する中継装置と、
前記中継装置によって送信されたパケットを受信し、受信する各パケットに含まれる前記順序になるように整列して前記受信する各パケットを出力し、前記廃棄情報によって特定される順序より後の順序のパケットを、前記特定される順序のパケットを待たずに出力する受信装置と、
を含むことを特徴とする通信システム。
(付記16)順序付けられた複数の送信パケットを、送信装置が複数の中継装置を介する複数の通信回線に振り分けて受信装置に送信する送信システムにおける前記中継装置の中継方法であって、
前記順序付けられた複数の送信パケットのうちで前記中継装置に振り分けられたパケットをバッファに格納し、
前記バッファに格納されているパケットの廃棄条件を満たした場合に、前記バッファに格納されているパケットの中から廃棄対象のパケットを選択し、
選択したパケットの前記順序を特定可能であり前記選択されたパケットを廃棄することを示す廃棄情報を、前記選択したパケットより順序が前のパケットに付加して送信することを特徴とする中継方法。