JP2012195836A - データ通信システムにおける通信装置および通信制御方法 - Google Patents

データ通信システムにおける通信装置および通信制御方法 Download PDF

Info

Publication number
JP2012195836A
JP2012195836A JP2011059400A JP2011059400A JP2012195836A JP 2012195836 A JP2012195836 A JP 2012195836A JP 2011059400 A JP2011059400 A JP 2011059400A JP 2011059400 A JP2011059400 A JP 2011059400A JP 2012195836 A JP2012195836 A JP 2012195836A
Authority
JP
Japan
Prior art keywords
frame
nak
unit
sequence number
pdu
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
Application number
JP2011059400A
Other languages
English (en)
Inventor
Masahiro Shigihara
正博 鴫原
Toru Takamichi
透 高道
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011059400A priority Critical patent/JP2012195836A/ja
Publication of JP2012195836A publication Critical patent/JP2012195836A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Detection And Prevention Of Errors In Transmission (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

【課題】ラウンドトリップ遅延時間RTTの変化および可変長フレームに起因するスループット低下を回避できる通信装置および通信制御方法を提供する。
【解決手段】送信データに当該シーケンス番号を有するヘッダを付加したフレームを送信バッファ部に格納し、送信フレームのヘッダに送信側トランザクション識別子を付加して受信側端末へ送信し、送信フレームに対して受信側端末からNAKを受信したとき、当該NAKに送信時のシーケンス番号と送信側トランザクション識別子とが含まれているならば、送信側トランザクション識別子を更新したフレームを受信側端末へ再送信し、送信側トランザクション識別子を更新した後で受信側端末から受信したNAKにシーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する。
【選択図】図5

Description

本発明はデータの送受信をおこなうデータ通信システムに係り、特に高伝送レートで高品質なデータの送受信を提供する通信装置および通信制御方法に関する。
パケット通信では、高い信頼性を得るために、パケットに誤りが発生した際、誤りがあったパケットを自動的に再送する技術(Automatic Repeat reQuest:ARQ)が提供されている。ただし、ARQはデータの信頼性を確保できるものの、誤り訂正処理などの他の誤り制御技術と比較して、再送区間のラウンドトリップ遅延時間(以下、RTT(Round Trip Time)と称す。)を要するためにスループットが低下する場合がある。
パケットの再送信をおこなう代表的なプロトコルとしてTCP(Transmission Control Protocol)が知られている。TCPには、パケットロスが発生した際、RTO(Retransmission Time Out)を待つことなく再送を要求する高速再転送(Fast Retransmission)がある。以下、図1を参照してTCPにおける高速再転送の例を簡単に説明する。
図1において、送信側の端末10から受信側の端末20へパケットが転送されるものとする。ここで、S(k)(kはシーケンス番号:SEQ)は送信パケット、A(k)はACK(Acknowledgement)パケットである。受信側は、受信パケットにロスあるいは誤りが無い場合、ACKパケットへ、次に受信すべきシーケンス番号(SEQ)を設定し、送信側へ送信する。これにより送信側へパケットの転送が正常に行われていることが通知される。
ここでパケットS(5)g−1に誤りが発生したとする。この場合、受信側の端末20は送信側の端末10にパケットの再送を要求するため、同じ内容のACKパケットA(5)g−2を3回送信する。以下、同内容のACKパケットを3回送信することを「重複ACK」と称す。送信側の端末10は、受信側の端末20からの重複ACK(A(5)g−2)を検出するとパケットS(5)の再送信を開始する。この重複ACK(A(5)g−2)により、RTOを待つことなく再送を開始することが可能となり、スループットを向上させることができる。
しかしながら、この高速再転送では、重複ACK(同一のACK3回分)を受信する必要があるため、再送を開始までに遅延g−3が生じる。また、重複ACKのうち1パケットに誤り/ロスが発生(A(5)g−4−3)すると、送信側端末10は再送を開始することができない。したがって、送信型端末10はRTOg−5だけ待機した後に再送を開始することとなり、スループットが劣化する問題がある。
この問題を解決する方式として、NAK(Negative Acknowledgement)によりパケットの再送を要求する方式が提案されている(特許文献1参照)。次に、図2を参照して、特許文献1の方式について簡単に説明する。なお特許文献1では、再送するプロトコル・データ・ユニット(PDU)をフレームとしているが、これはTCPのパケットと同義である。
図2は、特許文献1に開示されたGBN(Go Back N)-ARQ方式によるフレーム再送信の動作例である。GBN−ARQ方式は、誤りが発生した場合、誤りが発生した箇所まで遡って再度フレームを送信する方式である。図2において、Gi(i=1〜6)はフレーム番号iのフレームをGBNモードで送信したことを示す。Ai,Niは帰還路の情報を表し、Aiはフレーム番号iに対するACKを、Niはフレーム番号iに対するNAKを表す。図中の○印は伝送路で誤りが生じなかったことを、×印は伝送路で誤りが生じたことを表す。図2では、すでに番号2と4と5のフレームが未確認の状態で、これらのフレームのGBNモードによる回復過程が示されている。
まず、送信側では帰還路からN2(i=2)g−11を受信すると、i=2であるフレームG2g−12まで遡ってフレームを再送する。但し、番号iのフレームを再送してからのRTTに相当するフレーム数(RTF−1)の帰還路では、受信側で未確認な番号iに対する再送要求が受信されているので(再送した番号iに対するレスポンスがまだ届かないので)、これを無視する。この例ではRTF=4であり、N2(i=2)g−11を受信した後、RTF−1内に受信したN2g−13が無視させることになる。
受信側では、番号i(i=2)が未確認のうちはN2(NAK(i),i=2)を帰還路に送信し続ける(g−14)とともに、それ以外の未確認番号が生じたらこの番号を記憶する(例えば、番号jの次に2回以上の受信誤りを検出した後、番号j+3を受信したら番号j+1とj+2が未確認となる)。
受信側でNAKにより再送されたフレームを正しく受信し、受信側に未確認番号がある場合、その番号を設定したNAKを送信側へ送信する(N5g−15)。もっとも新しいi番号のフレームまで正しく受信し、再送要求するフレーム番号がない場合はACK(i)を帰還路に送信する。こうして受信側で未確認な番号iが受信できるまで、NAK(i)を帰還路に送信し続ける。
この時、例えば、n回目の送信で帰還路情報が送信側で正しく受信されない確率は、1ブロックの帰還路情報の誤り率のほぼn乗になる。従って、番号を帰還路情報に付加することによって誤り率が高々数倍増大しても、帰還路へのNAK(i)の送信回数が増えるほど誤り率を急激に下げることができる。帰還路情報に誤りが発生した時、送信側がフレームを送信してからレスポンスを受信するまでの時間(RTT)が経過するが、帰還路情報が未確認番号を表示しているので同期外れになることはない。また、通信中チャネル切り換えが発生してRTTが変化しても、同様の理由により同期外れにならない。このようにNAKを正常なフレームを受信するまで送信することでRTOを待つことなくスループットを向上させることができる。
特公平07‐079332号公報
しかしながら、上記したNAKによるパケット再送要求方式では、送信側で保持しているRTF(以降、送信RTFと称す)の値と現実のRTT(以降、現実RTTと称す)との間に差が生じると、次のような問題が発生する。以下、図3を参照して現実RTTと送信RTFの差による問題を示す。
図3(A)は、現実RTTg−21が送信RTFの時間g−20より小さい場合(現実RTT<(送信RTF−1)×FT)の例であり、図3(B)は、現実RTTg−25が送信RTFの時間g−20より大きい場合(現実RTT>(送信RTF−1)×FT)の例である。なおFT(Frame Time)は1フレーム送信するのにかかる時間である。図3(A)の場合、g−23およびg−24以外のNAK2(N2)が全て無視されるため、NAK無視による再送遅延g−22が発生する。図3(B)の場合、無視すべきg−27、g−28のNAKを無視することが出来ず、NAK誤認による誤再送g−26が発生する。このように、現実RTTと送信RTFとの間に差が生じると、遅延あるいは無駄な再送が発生しスループットが低下する。
また、可変長フレームの場合にも誤再送または再送遅延によりスループットが低下する。その理由は、送信RTFが送信側のRTTに相当するフレーム数としているため、フレーム長が一定でない可変フレーム長の場合にはフレーム毎にFTが変わり(送信RTF−1)×FTが変化する。このために、送信RTFと現実RTTとの間に差が発生し、同様にスループット低下の問題が生じてしまう。
そこで本発明の目的は、ラウンドトリップ遅延時間RTTの変化および可変長フレームに起因するスループット低下を回避でき、NAKを用いた高速再転送を達成できる通信装置および通信制御方法を提供することにある。
本発明による通信装置は、受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を格納する送信バッファ手段と、前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信する送信手段と、前記送信したPDUに対して前記受信側の通信装置から異常受信応答(NAK)を受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する制御手段と、を有することを特徴とする。
本発明による通信制御方法は、受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置における通信制御方法であって、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を送信バッファ手段に格納し、送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、前記送信したPDUに対して前記受信側の通信装置から異常受信応答(NAK)を受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、ことを特徴とする。
本発明によれば、ラウンドトリップ遅延時間RTTの変化および可変長フレームに起因するスループット低下を回避できNAKを用いた高速再転送を達成できる。
図1はTCPにおける高速再転送のシーケンス図である。 図2は特許文献1におけるNAKを使用した再送のシーケンス図である。 図3は背景技術での誤再送および再送遅延を説明するためのシーケンス図である。 図4は本発明の第1実施形態による通信装置を適用した端末装置のブロック構成図である。 図5は第1実施形態における通信制御動作を説明するためおシーケンス図である。 図6は、図5における送信側処理A−1を説明するためのフレーム構成を示すファーマット図である。 図7は、図5における受信側処理B−1を説明するためのフレーム構成を示すファーマット図である。 図8は、図5における送信側処理A−3を説明するためのフレーム構成を示すファーマット図である。 図9は、図5における受信側処理B−2を説明するためのフレーム構成およびNAKテーブルの構成を示すファーマット図である。 図10は、図5における受信側処理B−6を説明するためのフレーム構成およびNAKテーブルの構成を示すファーマット図である。 図11は、図5における送信側処理A−9を説明するためのフレーム構成を示すファーマット図である。 図12は、図4におけるACK/NAK生成処理部103の処理動作を示すフローチャートである。 図13は、図4におけるトランザクション識別子付与部114の動作を示したフローチャートである。 図14は、図4におけるフレーム識別部111の処理動作を示したフローチャートである。 図15(A)は送信側端末10におけるフレーム識別部が保持する各変数の値の一例を示した模式図であり、図15(B)は受信側端末20におけるフレーム識別部が保持する各変数の値の一例を示した模式図である。 図16は、図4におけるフレーム識別部111のNAKテーブル登録処理の一例を示した模式図である。 図17は、図5においてシーケンス番号が一巡した場合のXID更新有無を示したシーケンス図である。 図18は本発明の第2実施形態による通信装置を適用した端末装置のブロック構成図である。 図19は第2実施形態における通信制御動作を説明するためおシーケンス図である。 図20は、図19に示す処理C−1およびC−2を説明するためのフレームフォーマット図である。 図21は、第2実施形態におけるACK/NAK生成処理部203の処理動作を示すフローチャートである。
本発明によれば、送信側端末が送信フレームおよびACK/NAKフレームのヘッダにシーケンス番号に加えてトランザクション識別子を付加し、受信側の端末がNAKで要求した再送フレーム以外のフレームを受信する度に、同じ内容のNAKを送信側へ送信する。送信側端末は、受信側から受信したNAKフレームのトランザクション識別子から当該NAKに対して再送機能を適用すべきか否かを判断し、適用済みのNAKであれば当該NAKを廃棄する。再送機能を適用する場合には、トランザクション識別子の更新を行い、NAKのシーケンス番号から特定される再送フレームのヘッダに更新されたトランザクション識別子を付与して受信側端末へ送信する。このようにして送信側端末は、RTTを使用することなくNAKの識別が可能となり、フレーム誤り/ロスから回復することができる。以下図面を参照しながら本発明の実施形態について詳細に説明する。
1.第1実施形態
1.1)構成
図4に示すように、本発明の第1実施形態による通信装置は、端末10および20が具備するネットワークインタフェースカードNIC(Network Interface Card)に適用されている。端末10と端末20とはそれぞれのNICを通して回線1および回線2により相互に接続されているものとする。ここでは、回線1を通して端末10から端末20へ信号が送信され、回線2を通して端末20から端末10へ信号が送信される。NICとしては一般的によく知られているイーサネットNIC(イーサネット(Ethernet)は登録商標、以下同じ。)を例示するので、以下、パケットはフレームとして説明される。また端末10と端末20とは同じ内部構成を有するので、以下、端末10の構成について説明する。
端末10に設けられたNIC12は他ブロック11に接続され、NIC12を通して端末20と回線1および回線2で接続される。他ブロック11はCPU(Central Processing Unit)等の上位ブロックであり、外部へデータを送信するためにデータをNIC12へ出力し、外部からのデータをNIC12経由で入力する。
本実施形態を適用したNIC12は、内部インタフェース部100、ヘッダ付与部101、送信バッファ部102、ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105、送信部106、受信部108、ヘッダ誤り訂正部109、フレーム誤り検出部110、フレーム識別部111、送信バッファ制御部112、および、受信バッファ部113を有する。
内部インタフェース部100は、他ブロック11から送信用のデータを入力し、ヘッダ付与部101へ出力する。また、読み出し可能なデータが受信バッファ113にある場合、受信バッファ113からデータを入力し他ブロック11へ出力する。
ヘッダ付与部101は内部インタフェース部100からデータを入力し、シーケンス番号を含むフレームヘッダを付与したデータをフレームとして送信バッファ102へ出力する。また、送信バッファ102からのバッファ空き情報を入手し、空きサイズが閾値を超えた場合、内部インタフェース部100へデータ出力の停止を要求する。なお、ヘッダには、再送に使用するタイプ、フラグ、シーケンス番号以外にあて先アドレス、送信元アドレス等のフレームの送信に必要な情報が付加される。
送信バッファ部102は、ヘッダ付与部101、ACK/NAK生成部103および送信バッファ制御部112に接続する。送信バッファ部102は、ヘッダ付与部101から入力したフレームをフレームに付与されているシーケンス番号に従い保存する。また、送信バッファ部102は、読出し可能なフレームが存在する場合には即読出してACK/NAK生成部103へ出力し、ACK/NAK生成部103から読出し停止の指示がある場合にはフレームの読出しを停止する。さらに、送信バッファ制御部112からの再送信指示に従い、当該再送信フレームを再度読出しACK/NAK生成部103へ出力する。また、送信バッファ部102は、送信バッファ制御部112からの指示により、送信バッファ上にあるフレームの削除を行う。
ACK/NAK生成部103は、送信バッファ部102、トランザクション識別子付与部114およびフレーム識別部111に接続する。ACK/NAK生成部103は、フレーム識別部111からACK/NAK生成指示があると、送信バッファ部102へフレームの読出し停止を指示し、フレーム識別部111からのACK/NAK生成指示に従いACKまたはNAKを生成する。フレーム識別部111からACK/NAK生成指示がない場合、送信バッファ部102へフレームの読出し停止を解除し、送信バッファ部102から入力したフレームをトランザクション識別子付与部114へ出力する。なお、ACK/NAK生成指示には、次に受信すべきフレームのシーケンス番号およびそのフレームに付与されていたトランザクション識別子の情報が含まれ、生成するACK/NAKに、次に受信すべきフレームのシーケンス番号とトランザクション識別子とを付与する。
トランザクション識別子付与部114は、ACK/NAK生成部103、ヘッダ誤り訂正符号付与部104およびフレーム識別部111に接続する。トランザクション識別子付与部114は、フレーム識別部111から入力した再送/更新指示により、ACK/NAK生成部103から入力したフレームが再送フレームであるか否かを知る。再送フレームである場合、トランザクション識別子を更新・付与し当該フレームをヘッダ誤り訂正符号付与部104へ出力する。再送フレームでない場合、現在保持しているトランザクション識別子を付与し当該入力フレームをヘッダ誤り訂正符号付与部104へ出力する。なお、再送/更新指示には、NAKに設定されている再送を要求するフレームのシーケンス番号およびそのフレームに付与されていたトランザクション識別子の情報が含まれる。
ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114とフレーム誤り検出符号付与部105とに接続する。ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114からフレームを入力すると、当該入力フレームのヘッダ部に対する誤り訂正符号を計算し、ヘッダの一部として当該フレームに付与する。また、ヘッダ誤り訂正符号付与部104は、ヘッダ誤り訂正符号を付与したフレームをフレーム誤り検出符号付与部105へ出力する。ヘッダ誤り訂正符号としては、一般的によく用いられるハミング、RS、BCH符号などを使用する。
フレーム誤り検出符号付与部105は、ヘッダ誤り訂正符号付与部104と送信部106とに接続する。フレーム誤り検出符号付与部105は、ヘッダ誤り訂正符号付与部104からフレームを入力すると、当該入力フレームに対する誤り検出符号を計算し、当該フレームに付与する。また、フレーム誤り検出符号付与部105は、フレーム誤り検出符号を付与したフレームを送信部106へ出力する。フレームの誤り検出としては、一般的によく用いられるCRC符号などを使用する。
送信部106はフレーム誤り検出符号付与部105に接続し、回線1を通して端末20に接続する。送信部106はフレーム誤り検出符号付与部105からフレームを入力し、フレームの符号化、スクランブル、シリアライズを行い、回線1を介して送信する。送信部106はイーサネットでいうPCS、PMA、PMD相当の送信機能を持つ。
受信部108はヘッダ誤り訂正部109に接続し、回線2を通して端末20に接続する。受信部108は、回線2を介して受信した信号をデシリアライズ、デスクランブル、復号化し、フレームとしてヘッダ誤り訂正部109へ出力する。受信部108はイーサネットでいうPCS、PMA、PMD相当の受信機能を持つ。
ヘッダ誤り訂正部109は受信部108とフレーム誤り検出部110とに接続する。ヘッダ誤り訂正部109は、受信部108からフレームを入力すると、当該入力フレームのヘッダ部に対する誤り訂正を行い、訂正結果と当該ヘッダ誤り訂正済みフレームをフレーム誤り検出部110へ出力する。
フレーム誤り検出部110はヘッダ誤り訂正部109とフレーム識別部111とに接続する。フレーム誤り検出部110は、ヘッダ誤り訂正部109からフレームを入力すると、当該フレームの誤り検出を行い、誤り検出結果と、ヘッダ誤り訂正結果と、当該フレームおよび当該フレーム長とをフレーム識別部111へ出力する。
フレーム識別部111は、フレーム誤り検出部110、送信バッファ制御部112、ACK/NAK生成部103、トランザクション識別子付与部114および受信バッファ部113に接続する。フレーム識別部111は、フレーム誤り検出部110からヘッダ誤り訂正結果、フレーム誤り検出結果、フレームおよびフレーム長を入力すると、ヘッダ誤り訂正結果、フレーム誤り検出結果およびフレームヘッダの内容に応じて処理を行う。
具体的には、受信フレームがACK/NAKの場合、当該フレームヘッダに設定されているトランザクション識別子から適用すべきACK/NAKを判断し、適用する場合、再送/更新指示を送信バッファ制御部112およびトランザクション識別子付与部114へ出力する。受信フレームがACK/NAKフレーム以外の場合、当該フレームヘッダに設定されているシーケンス番号とトランザクション識別子を抽出し、当該フレームのフレーム誤り検出結果が「誤り有」の場合には、NAK生成指示を抽出したシーケンス番号とトランザクション識別子と一緒にACK/NAK生成部103へ出力し、当該フレームを廃棄する。フレーム誤り検出結果が「誤り無し」の場合、抽出したシーケンス番号が次に受信すべきシリアル番号であるか比較し、異なる場合、NAK生成指示を次に受信すべきシリアル番号と抽出したトランザクション識別子と一緒に、ACK/NAK生成部103へ出力し、受信バッファ部113へ出力する。抽出したシーケンス番号が次に受信すべきシリアル番号と一致する場合、ACK生成指示を、抽出したシーケンス番号にフレーム長を加算した番号と抽出したトランザクション識別子とを一緒に、ACK/NAK生成部103へ出力し、また当該フレームを受信バッファ部113へ出力する。
送信バッファ制御部112は、フレーム識別部111と送信バッファ部102とに接続する。送信バッファ制御部112は、再送/更新指示をフレーム識別部111から入力すると、その内容が再送指示である場合には送信バッファ102へシーケンス番号と再送指示を出力する。更新指示の場合には、送信バッファ102内の当該フレームを削除するため、送信バッファ102へシーケンス番号と更新指示を出力する。
受信バッファ部113はフレーム識別部111と受信バッファ部113とに接続する。受信バッファ部113は、フレーム識別部111からフレームを入力すると、当該フレームをシーケンス番号に従って保存する。また、フレーム識別部111からフレームの廃棄指示があると当該フレームを廃棄する。さらに、受信バッファ部113は、読出し可能なフレームが存在する場合には内部インタフェース部100へ通知し、内部インタフェース部100からのフレーム読出し指示に従いフレームを読出し内部インタフェース部100へ出力する。なお、フレームの読出しはシーケンス番号順に行われる。
以上、端末10におけるNIC12の構成を述べたが、本発明に関連しない構成要素は省略されている。上記構成以外にも、たとえばコネクションの確立手段、再送信タイマ手段なども当然有している。
なお、ACK/NAK生成部103、フレーム識別部111、送信バッファ制御部112およびトランザクション識別子付与部114の機能は、NIC12の制御手段としてプログラム制御プロセッサ上で図示しないメモリに格納されたプログラムを実行することにより実現することも可能である。
1.2)動作
次に、図4〜図14を参照しながら、本実施形態による通信装置の動作について説明する。ここでは、端末10から端末20へデータの転送を行うものとして説明する。
図5は誤り発生時の端末間伝送シーケンスを示しているが、ここでは説明の便宜上、ACKを受信せずに送信できる受信ウインドウサイズを4フレーム分とし、フレーム長を1とし、再送回数を2回までとしている。また、図5では、送信フレームF(5)0および再送信フレームF(5)1でフレーム誤り/ロスが発生し、またNAKフレームN(5)1でフレームロスが発生し、これらフレーム誤り/ロスから回復するまでのシーケンスを示している。図中の“F(*)#”は送信/再送信フレームを表し、“N(*)#”および“A(*)#”はNAKおよびACKをそれぞれ表す。これらの記号において“*”はフレームに付与されるシーケンス番号であり、“#”は当該フレームのトランザクション識別子を表す。なお、本実施形態ではシーケンス番号の初期値を‘5’、トランザクション識別子の初期値‘0’として説明する。以下、図5に示す送信側端末10の処理A−1〜A−10および受信側端末20の処理B−1〜B−6のうち代表的な処理を図6〜図11を参照しながら順を追って説明する。
1.2.1)送信側処理A−1
まず、端末10のNIC12が他ブロック11から送信データを入力して送信部106から送信フレームF(5)0を端末20へ送信するまでの処理動作A−1を説明する。
図6(A)はNIC12が他ブロック11から入力する送信データを示し、ヘッダ情報g−40はデータg−41を送信するのに必要な情報であり、ここではイーサネットを例示しているので、宛先アドレス、送信元アドレスおよびType/LengthなどMACヘッダ情報である。
<ヘッダ付与>
端末10と端末20との間でコネクションが確立し、他ブロック11から図6(A)に示す送信データが内部インタフェース部100に与えられると、内部インタフェース部100はヘッダ付与部101からの送信データ受け取り停止指示が有効でない限り、送信データをヘッダ付与部101へ出力する。なお、ヘッダ付与部101から送信データ受け取り停止指示が有効である場合、内部インタフェース部100は送信データの停止要求を他ブロック11へ出力する。送信データがヘッダ付与部101に与えられると、ヘッダ付与部101は、送信バッファ部102からフレーム出力停止指示が無い限り、送信データに再送ヘッダg−42を付与する(図6(B)参照)。送信バッファ部102のフレーム出力停止指示が有効であれば、ヘッダ付与部101は送信データ受け取り停止指示を内部インタフェース部100へ出力する。
図6(B)に示すように、再送ヘッダg−42はタイプ、フラグおよびシーケンス番号で構成される。タイプは再送ヘッダを識別するのに使用するため任意の値(イーサネットでは2バイト分)を設定する。フラグは、SN、NAK、ACK、RTの4ビットで構成し、フレームの識別に使用する。初回フレーム送信時は、SNフラグに‘1’を設定し、再送時のフレームにはRTに‘1’を設定する。また、受信側端末20でACK、NAKを送信する際に、各々のビットに‘1’を設定する。
なお、図5に示す処理A−1の時点で、ヘッダ付与部101は、SN=1、ACK=0、NAK=0、RT=0を設定する。シーケンス番号は、一般的な再送制御では、送信フレームを特定するために使用されるが、本実施形態では、その他に送信バッファにおけるフレームの先頭アドレスをも示す。すなわち、当該フレームのシーケンス番号と当該フレーム長の和が次フレームのシーケンス番号であると共に、送信バッファ部102へフレームを保存する際の先頭アドレスともなる。このシーケンス番号をもとに送信バッファおよび受信バッファの読出しおよび書き込み制御が行われる。
ヘッダ付与部101により再送ヘッダg−42が付与されたフレームは送信バッファ部102へ出力される。
<送信バッファ保存>
図6(C)は送信バッファ部102に保存されたフレームと当該フレームの先頭アドレスおよびシーケンス番号の関係を示した図である。図中のSR、srd、src、SW、swrは、送信バッファ部102においてフレームの保存・読出し制御に使用されるアドレスである。なお、srcは通常srdと一緒にカウントされ、初回読出しが終了したアドレスを示す。SRはACKを受信していないフレームの先頭アドレス、srdは送信バッファ部102からフレームを読出す間のアドレス、SWは次に送信バッファ部102に保存されるフレームの先頭アドレス、swrは送信バッファ部102にフレームを書き込みする間のアドレスである。この時点での各値は、SR=3d−3、srd=src=5d−5、SW=6d−6、swr=7d−7である。また図6(B)のフレームに付与されるシーケンス番号g−48=5d−5である。
図6(B)に示すフレームF(5)g−49が与えられると、送信バッファ部102は、図6(B)に示す再送ヘッダg−42のシーケンス番号g−48(ここでは値‘5’)に従って、図6(C)に示すようにフレームF(5)g−49をアドレスd−5へ保存する。つまり、シーケンス番号g−48の値とバッファ内アドレスd−5とが等しい値となる。なお、フレームの書き込み中はswrを使用し、1フレーム分の書き込みが終了する毎にSWにswrを代入することで、バッファの書き込みアドレスを更新していく。フレームF(5)の書き込みが終了すると、SWには値‘6’が設定される。送信バッファ部102は、読出し可能なフレームが存在する場合、当該フレームの読出しを行い、ACK/NAK生成部103へ出力する。図6(C)の場合、srd(値5d−5)<SW(値6d−6)であるため、読出し可能なフレームと判断され、srd(値5d−5)〜SW(値6d−6)までのフレームが自動的に読み出されることになる。なお、srd=SWの条件の場合、読出し可能なフレームはないと判断する。ACK/NAK生成部103から読出し停止指示が与えられると、送信バッファ部102は読出し停止指示が解除されるまでフレームの読出しを停止する。
<ACK/NAK生成>
フレームF(5)g−49が与えられると、ACK/NAK生成部103は、フレーム識別部111から、ACK/NAK生成指示がない限り、当該フレームをトランザクション識別子付与部114へ出力する(図12のステップS50、S51、S56を参照)。ただし、ここでは図5に示すような端末10から端末20への片方向通信であるから、端末10のACK/NAK生成部103がACK/NAKを生成することはない。
<トランザクション識別子の付与>
図6(D)に示すフレームF(5)g−49を送信バッファ部102からACK/NAK生成部103を通して入力したトランザクション識別子付与部114はトランザクション識別子XIDの付与を行い、図6(E)に示すフレームF(5)g−50を出力する。以下、トランザクション識別子付与部114の動作を図13を参照しながら説明する。
図13において、フレームF(5)g−49がトランザクション識別子付与部114に与えられると(ステップS70の「有」)、トランザクション識別子付与部114は、フレームF(5)g−49の初回フレーム送信を示すSNフラグが‘1’であるか否かをチェックする(ステップS71)。
この時点ではフレームF(5)g−49のSNフラグ=1であるから(ステップS71の「一致」)、トランザクション識別子付与部114はフレーム識別部111から再送指示があるか否かをチェックする(ステップS72)。
この時点でフレーム識別部111から再送指示はないので(ステップ72の「無」)、トランザクション識別子付与部114は当該フレームF(5)g−49のシーケンス番号(SEQ)と一つ前のフレームに設定されていたシーケンス番号(PRE_SEQ)とを比較する(ステップS78)。PRE_SEQ<SEQを満たさない場合(ステップS78の「偽」)、図6(C)においてシーケンス番号が一巡しているため、現在のトランザクション識別子XIDを更新する(ステップS74)。トランザクション識別子XIDの更新は、後述する受信側端末20におけるフレーム識別部111の処理ステップS07(図14参照)で、当該フレームが未受信であるかどうかを判断する際に必要となる。
この時点で図6(C)で示すようにPRE_SEQ=4、SEQ=5であるから、トランザクション識別子付与部114は、図6(E)のg−51で示すように、トランザクション識別子XID=0を当該フレームへ付与し(ステップS75)、またPRE_SEQの値を更新する(ステップS76)。こうしてトランザクション識別子XID=0を付与したフレームF(5)g−50(すなわち、F(5)0)をヘッダ誤り訂正符号付与部104へ出力する(ステップS77)。
なお、後述するように、図5におけるA−4処理においてフレーム識別部111から“再送指示、RCV_SEQ、RCV_XID”を含む再送指示が与えられた場合には(ステップS72の「有」)、トランザクション識別子付与部114はフレームF(5)に設定されている再送を示すRTフラグ=‘1’であり、且つ当該フレームの“シーケンス番号”とRCV_SEQが一致する場合には(ステップS73の「真」)、トランザクション識別子XIDをRCV_XIDに1を加算した値に更新して(ステップS74)、当該フレームに付与し(ステップS75)、ヘッダ誤り訂正符号付与部104へ出力する(ステップS77)。ステップS73において一致しない場合は(ステップS73の「偽」)、フレーム識別部111で保持しているXIDを当該フレームのトランザクション識別子XIDとして付与する(ステップS75)。以上のステップS73〜S75については、A−4処理のところで改めて説明する。
<誤り訂正、検出>
図4および図6に戻って、こうして図6(E)に示すフレームF(5)g−50が与えられると、ヘッダ誤り訂正符号付与部104は図6(E)に示すフレームF(5)g−50の宛先アドレス〜Type/Length領域前までの領域に対する誤り訂正符号を計算し、Type/Length領域の前にその計算結果を付与した後(図6(F)のg−53)、当該フレームをフレーム誤り検出符号付与部105へ出力する。
図6(F)に示すフレームF(5)g−52が与えられると、フレーム誤り検出符号付与部105は、図6(F)に示すフレームF(5)g−52の宛先アドレス〜データまでの領域に対する誤り検出符号を計算し、フレームの末尾に付与した後(図6(G)のg−55)、当該フレームを送信部106へ出力する。
<送信>
こうして送信部106は、図6(G)に示すフレームF(5)g−54(すなわち、図5のF(5)0)を符号化、スクランブリング、シリアライズし、回線1を介して端末20へ送信する。
以上、送信側では、上記の動作を図5における処理A−2、A−5、A−6、A−8、A−10で同様に行う。なお、処理A−6において、ACKを受信することなく送信できるウインドウサイズ(値4)に達するため、処理受信側のB−5のNAK(N(5)1)を受信するまでフレーム送信を停止する。
1.2.2)受信側処理B−1
次に、図5の受信側処理B−1について説明するが、上述したように端末20に設けられたNICは図4に示す送信側端末10のNIC12と同じ内部構成を有するので、以下、図4のNIC12を参照しながら、受信側処理B−1、すなわちデータ部に誤りがあるフレームF(5)0を受信してからNAK(N(5)0)を送信するまでの処理動作を説明する。
<受信>
図7(A)に示すように、受信側端末20のNICにおける受信部108は受信フレームF(5)0を受信すると、受信フレームデータをデシリアライズ、デスクランブリング、復号化し、ヘッダ誤り訂正部109へ出力する。
<誤り訂正、検出>
受信部108からフレームF(5)0を入力すると、ヘッダ誤り訂正部109は宛先アドレスからヘッダ誤り訂正符号領域前までのヘッダ誤りを当該フレームに付与されているヘッダ誤り訂正符号を使用して訂正する。また、ヘッダ誤り訂正部109は訂正済み当該フレームと訂正完了/訂正未完了示す誤り訂正結果をフレーム誤り検出部110へ出力する。
フレーム誤り検出部110は、ヘッダ誤り訂正済みフレームF(5)0と訂正結果を入力すると、宛先アドレスからデータまでのフレーム誤りを当該フレームに付与されているフレーム誤り検出符号を使用して検出する。さらに、フレーム誤り検出部110は当該フレーム長をカウントする。ただし、フレーム長のカウントは、送信バッファと受信バッファのアドレスの整合をとるため、当該フレームに含まれるXIDとフレーム誤り検出符号とを除いて行う。そして、フレーム誤り検出部110は、図7(B)のg−60、g−61およびg−62に示すように、誤り訂正結果、誤り検出結果およびフレーム長LENを当該フレームに含めてフレーム識別部111へ出力する。
<フレーム識別>
図14において、ステップS30〜S34は送信側におけるフレーム識別部111の処理フロー、ステップS03〜S23は受信側におけるフレーム識別部111の処理フローである。ステップS00〜S02は送受信両側で行われる処理である。
フレーム識別部111は、フレームの識別、管理を行うため、NAKテーブルと以下の変数を使用する。
・NEXT_SEQ:受信側の変数であり、次に受信すべきシーケンス番号である。
・NHED_SEQ:受信側の変数であり、NAKテーブル上に登録された受信済み先頭フレームのシーケンス番号である。
・NNAK_SEQ:受信側の変数であり、NAKテーブル上に登録されたNEXT_SEQの次に要求すべきフレームのシーケンス番号である。
・REG_SXID:送信側の変数であり、受信したフレームに付与されているトランザクション識別子と比較することで、送信側で適用すべきACK/NAKを判定する際に使用する。
・REG_RXID:受信側の変数であり、受信したフレームに付与されているトランザクション識別子と比較することで、受信側で受信済みフレームであるかを判定する際に使用する。
・RCV_SEQ:当該受信フレームに含まれるシーケンス番号である。
・RCV_XID:当該受信フレームに含まれるトランザクション識別子である。
・LEN:受信した当該フレームのフレーム長である。本実施形態は、説明を容易にするためLEN=1としているが、実際には、MACのフレーム長である64バイト〜1518バイト設定される。
NAKテーブルは、受信側で、NEXT_SEQ以降のシーケンス番号を含むフレームを受信バッファ部113上で管理するために使用される。受信側では、このNAKテーブルにより既受信フレーム/未受信フレームを判断し、NEXT_SEQの次に受信すべきシーケンス番号を管理する。
図15は、送信側端末10および受信側端末20にそれぞれ設けられたフレーム識別部111における図5の送信側処理A−1〜A−10と受信側処理B−1〜B−6における上記各変数の値と受信フレームおよび送信フレームとを示している。図5の処理B−1時点での各変数は、図15(A)のB−1よりNEXT_SEQ=5、REG_RXID=0、RCV_SEQ=5、RCV_XID=0であり、その他の値はNULLである。
図14に戻って、フレーム識別部111は、図7(B)に示すフレームを入力すると、ヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。ヘッダ誤りが完了していない場合、当該フレームを削除する(ステップS01)。ヘッダ誤り訂正が完了している場合、フレーム識別部111は当該フレームに付与されているフラグの確認を行う(ステップS02)。
図7(B)に示すフレームF(5)0のフラグには、SN=1、ACK=0、NAK=0、RT=0が設定されているため、受信したフレームが初回送信フレームであると識別できる。なお、フラグのACKまたはNAKに1が設定されている場合、当該フレームがACK/NAKであると判断する。
続いて、当該フレームに設定されているシーケンス番号RCV_SEQが、NEXT_SEQの値と一致するか確認を行う(ステップS03)。図5の処理B−1において、RCV_SEQとNEXT_SEQとは一致するため、次に、フレーム識別部111は、REG_RXIDの値を更新し(ステップS21)、当該フレームに誤りが無いか否かをチェックする(ステップS04)。図5の処理B−1では、フレームF(5)0に誤りが含まれているため、フレーム識別部111は、(NEXT_SEQ)のシーケンス番号を含むNAK生成指示をACK/NAK生成部103へ出力し(ステップS05)、当該フレームを廃棄する(ステップS06)。
<ACK/NAK生成>
ACK/NAK生成部103は、図7(C)に示すNEXT_SEQのシーケンス番号を含むNAK生成指示を入力すると、NAK生成指示に従いNAKを生成し、トランザクション識別子付与部114へ出力する(図12におけるステップS50、S52、S57参照)。このときフレームに付与されるフラグはSN=0、ACK=0、NAK=1、RT=0であり、シーケンス番号には‘5’が、XIDには‘0’がそれぞれ設定される。なお、送信バッファ部102からの読出しフレームが有る場合、ACK/NAK生成部103は読出し停止指示を送信バッファ部102へ出力し、フレーム識別部111からのACK/NAK生成指示に従い、ACKまたはNAKを生成してトランザクション識別子付与部114へ出力する(図12のステップS50、S51、S53、S54、S55、S56参照)。
<トランザクション識別子付与>
図13に示すように、トランザクション識別子付与部114は、図7(D)に示すNAK(N(5)0)を入力すると(ステップS70)、NAK(N(5)0)のSNフラグが1であるかをチェックする(ステップS71)。NAK(N(5)0)のSNフラグは0であることから、送信/再送信フレームでないと判断し、トランザクション識別子付与部114は当該NAKをヘッダ誤り訂正符号付与部104へ出力する(ステップS77)。
<誤り訂正、検出>
ヘッダ誤り訂正符号付与部104は、トランザクション識別子付与部114からNAK(N(5)0)を入力すると、図7(D)に示すNAK(N(5)0)の宛先アドレス〜Type/Length領域前までの領域に対する誤り訂正符号を計算し、Type/Length領域の前にその計算結果を付与した後(図7(E)のg−53)、当該フレームをフレーム誤り検出符号付与部105へ出力する。
図7(E)に示すNAK(N(5)0)を入力すると、フレーム誤り検出符号付与部105は当該NAK(N(5)0)の宛先アドレス〜パディングまでの領域に対する誤り検出符号を計算し、フレームの末尾に付与した後(図7(F)のg−55)、当該フレームを送信部106へ出力する。
<送信>
送信部106は、図7(F)に示すNAK(N(5)0)を入力すると、フレームデータを符号化、スクランブリングおよびシリアライズし、回線2を介して端末10へ送信する。
1.2.3)送信側処理A−3
次に、図5の処理A−3、すなわち端末10がNAK(N(5)0)を受信してから再送フレームF(5)1を送信するまでの処理動作を説明する。
まず、NAK(N(5)0)を受信部108で受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理<受信>および<誤り訂正、検出>に関しては、送信側でも前述の処理B−1と同様であるから省略する。
<フレーム識別>
図14において、フレーム識別部111は、フレーム誤り検出部110から、NAK(N(5)0)、当該NAKヘッダの誤り訂正結果、当該NAKの誤り検出結果および当該NAKフレーム長を入力すると、ヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。なお、図5の処理A−3時点での各変数は、図15(A)のA−3欄よりREG_SXID=0、RCV_SEQ=5、RCV_XID=0、LEN=1であり、その他の値はNULLである。処理A−3でNAK(N(5)0)には誤りがないためヘッダ誤り訂正が完了している(ステップS00の「完了」)。
次に、フレーム識別部111は、当該フレームに付与されているフラグの確認を行う(ステップS02)。NAK(N(5)0)のフラグには、SN=0、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームがNAKであると識別できる(ステップS02のACK/NAK)。
続いて、当該フレームに設定されているトランザクション識別子(以降RCV_XID)が次に適用すべきACK/NAKに付与されるトランザクション識別子(以降REG_SXID)と、以下の条件4を満たすか否かをチェックする(ステップS30)。
RCV_XID≧REG_SXID ・・・(条件4)
条件4を満たさない場合(ステップS30の「偽」)、当該ACK/NAKは適用済みと判断し無視(廃棄)する。この時点ではREG_SXID=0、RCV_XID=0であるから条件4を満たす(ステップS30の「真」)。
次にフラグからACK/NAKの識別を行う(ステップS31)。N(5)0にはNAK=1のフラグが設定されているため、当該フレームよりRCV_SEQ、RCV_XIDを抽出し、図8(A)に示す再送指示を送信バッファ制御部112とトランザクション識別子付与部114へ出力する(ステップS34)。この時点でRCV_SEQ=5、RCV_XID=0である。続いて、RCV_XIDに1を加算した値をREG_SXIDに設定して更新する(ステップS33)。この時点でREG_SXID=1となる。
なお、本実施形態では、REG_SXIDの更新にRCV_XIDを使用しているが、トランザクション識別子付与部114で保持しているXIDを使用しても良い。
<送信バッファ制御>
図8(A)に示す再送指示が送信バッファ制御部112に与えられると、送信バッファ制御部112は、再送指示と再送フレームの先頭アドレスを示すRCV_SEQ(値5)を送信バッファ部102へ出力する。
送信バッファ部102は、再送指示および再送フレームの先頭アドレスを示すRCV_SEQ(値5)を入力すると、RCV_SEQのアドレス(5d−5)に保存されているフレームから読出しを開始する。また、このとき、初回読出しが終了しているフレームに対して、再送フレームであることを示すRT=1のフラグを付与する。
図5の処理A−3の時点で、送信バッファ部102内の各アドレスは、図8(B)に示すように、SRはACK/NAKを受けていないので、図6と同じ値3d−3であり、srdとsrcはフレームF(6)0が送信されているため値7d−7であり、SWは値7d−7、swrは値8d−8である。ここで、送信バッファ部102が再送指示とRCV_SEQ(値5)を受けると、図8(C)に示すように、srd(値7d−7)およびSR(値3d−3)の値を受信したRCV_SEQ(値5d−5)に設定し、アドレスsrdからフレームの読出しを開始する。また、src=srdになるまで、読み出されたフレームのRTフラグに1を設定する。なお、アドレスSR=5d−5に更新されることで、それ以前のフレームF(3)およびフレームF(4)は送信バッファ部102上から削除される。
<ACK/NAK生成>
再度読み出されたフレームF(5)がACK/NAK生成部103に与えられると、ACK/NAK生成部103は、上述した処理A−1と同様にフレーム識別部111からACK/NAK生成指示がない場合には当該フレームをトランザクション識別子付与部114へ出力する。(図12のステップS50、S51、S56)。
<トランザクション識別子付与>
図13において、図8(D)に示すフレームF(5)がトランザクション識別子付与部114に与えられ(ステップS70、S71)、さらにフレーム識別部111から“再送指示、RCV_SEQ、RCV_XID”を含む再送指示が与えられると(ステップS72)、トランザクション識別子付与部114はフレームF(5)に設定されているRTフラグ(再送を示す)が‘1’であり且つ当該フレームの“シーケンス番号”とRCV_SEQが一致するか否かチェックする(ステップS73)。RT=1かつRCV_SEQ=SEQであれば(ステップS73の「真」)、RCV_XIDに1を加算した値をトランザクション識別子(XID)g−65として図8(E)のg−65のように当該フレームへ付与し(ステップS74、S75)、ヘッダ誤り訂正符号付与部104へ出力する(ステップS77)。一致しない場合は(ステップS73の「偽」)、フレーム識別部111で保持しているXIDを付与する(ステップS75)。図5の処理A−3の時点では、RCV_SEQ(値5)、RCV_XID(値0)、フレームF(5)のシーケンス番号は値5、RTフラグは値1であるから、XID=1となる。
<誤り訂正、検出および送信>
ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、図5の処理A−1と同様の処理であり再送フレームF(5)1が回線1を介して端末20へ送信される。以上、送信側では上記の動作を図5における処理A−7でも同様に行う。
1.2.4)受信側処理B−2
次に、図5の処理B−2、すなわち端末20がフレームF(6)0を受信してからNAKフレームN(5)0を送信するまでの処理動作を説明する。
図5の受信側処理B−2において、フレームF(6)0を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理<受信>および<誤り訂正、検出>は前述の処理B−1と同様であるから説明は省略する。
<フレーム識別>
図14において、フレーム識別部111は、フレームF(6)0、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、ヘッダ誤り訂正が完了しているか否かをチャックする(ステップS00)。フレームF(6)0には誤りが無いため、ヘッダ誤り訂正結果は完了(訂正の必要がない)となる。なお、図5の処理B−2時点での各変数は図15(B)のB−2欄よりNEXT_SEQ=5、REG_RXID=0、RCV_SEQ=6、RCV_XID=0、LEN=1であり、その他の値はNULLである。
次にフレーム識別部111は、当該フレームに付与されているフラグの確認を行う(ステップS02)。図9(A)に示すフレームF(6)0のフラグには、SN=1、ACK=0、NAK=0、RT=0が設定されているため、受信したフレームが初回送信フレームであると識別できる(ステップS02のSN)。したがって、フレーム識別部111は、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックする(ステップS03)。図5の受信側処理B−2の時点で、当該フレームのRCV_SEQは値6、NEXT_SEQは値5であるから、不一致となる(ステップS03の「不一致」)。
次にフレーム識別部111は、RCV_SEQ、RCV_XIDが以下の条件1を満たすか否かをチェックする(ステップS07)。
RCV_SEQ<NEXT_SEQ 且つ
RCV_XID==REG_RXID ・・・(条件1)
条件1を満たす場合(ステップS07の「真」)、受信フレームは既に受信しているフレームとなるため無視(廃棄)し、NAK生成指示をACK/NAK生成部103へ出力する(ステップS05)。図5の処理B−2の時点で条件1は満たされないため(ステップS07の「偽」)、フレーム識別部111は当該フレームF(6)0がNAKテーブルに登録済みであるか否かをチェックする(ステップS08)。図5の処理B−2の時点で、NAKテーブルには登録がないので、当該フレームF(6)0をNAKテーブルに登録する(ステップS09)。NAKテーブルへの登録は、受信フレームのシーケンス番号(RCV_SEQ)をNHED_SEQへ、シーケンス番号(RCV_REQ)+受信フレーム長(LEN)をNNAK_SEQへ設定することで行う。この時点では、RCV_SEQ=6、LEN=1であるため、図9(B)に示すNHED_SEQ(1)には値6d−6、NNAK_SEQ(1)には値7d−7が登録される。
次にフレーム識別部111は、NEXT_SEQを含むNAK生成指示をACK/NAK生成部103へ出力する(ステップS10)。ここで出力されるNAK指示は図5の処理B−1で供給されたNAK指示と同一の指示となる。
次にフレーム識別部111は、当該フレームに誤りの有無をチェックする(ステップS11)。フレームF(6)0には誤りが無いため、当該フレームからRCV_XID、ヘッダ誤り訂正結果、フレーム誤り検出結果およびLENを削除した図9(C)に示すフレームF(6)とNEXT_SEQとを受信バッファ部113へ出力する(ステップS12)。なお、誤りがある場合、当該フレームを廃棄する(ステップS06)。
次に、ステップS09におけるNAKテーブルへの登録方法について図16を用いて詳しく説明する。
<NAKテーブルへの登録>
図16(A)〜(G)は、NAKテーブルへ、受信フレームのRCV_SEQおよびRCV_SEQ+LENをNHED_SEQ(p)とNNAK_SEQ(p)として登録する際の処理を示した図であり、F(w)は登録すべきフレームであり、F(x)、F(y)は既に登録されているフレームである。また左のNAKテーブルは(A)〜(G)におけるNAKテーブルのF(w)登録前後の状態をそれぞれ示す。テーブル内のH(p)はNHED_SEQ(p)であり、N(p)はNNAK_SEQ(p)である。
図16における参照記号d−99は受信側で次に受信すべきシーケンス番号(NEXT_SEQ)であり、d−100〜d−107は受信フレームのシーケンス番号(RCV_SEQ)または受信フレームのシーケンス番号(RCV_SEQ)に受信フレーム長(LEN)を加算した番号である。
まず、登録無のNAKテーブルにフレームF(w)を登録する場合、図16(A)のように、フレームF(w)のRCV_SEQd−102を、NHED_SEQ(1)に、RCV_SEQ+LENd−103を、NNAK_SEQ(1)へ登録する。
次に図16(B)のように、登録済みフレームF(x)があり、フレームF(x)のシーケンス番号d−102とフレームF(w)のRCV_SEQ+LENとが一致する場合、フレームF(w)のRCV_SEQd−101をNHED_SEQ(1)に設定してNHED_SEQ(1)を更新する。
次に図16(C)のように、登録済みフレームF(x)があり、フレームF(x)のシーケンス番号+LENd−103とフレームF(w)のRCV_SEQとが一致する場合、フレームF(w)のRCV_SEQ+LENd−104をNNAK_SEQ(1)に設定してNNAK_SEQ(1)を更新する。
次に図16(D)のように、登録済みフレームF(x)があり、フレームF(x)のシーケンス番号d−102とフレームF(w)のRCV_SEQ+LENd−101とが一致しない場合、フレームF(x)のシーケンス番号d−102をNHED_SEQ(2)へ、またフレームF(x)のシーケンス番号+LENd−103をNNAK_SEQ(2)に設定し、フレームF(w)のRCV_SEQd−100をNHED_SEQ(1)へ、フレームF(w)のRCV_SEQ+LENd−101をNNAK_SEQ(1)に登録する。
次に図16(E)のように、登録済みフレームF(x)があり、フレームF(x)のシーケンス番号d−102とフレームF(x)のシーケンス番号+LENd−103とが、フレームF(w)のRCV_SEQまたRCV_SEQ+LENと一致しない場合、フレームF(w)のRCV_SEQd−106をNHED_SEQ(2)に設定し、また、フレームF(w)のRCV_SEQ+LENd−107をNNAK_SEQ(2)に登録する。
次に図16(F)のように、登録済みフレームF(x)とフレームF(y)があり、フレームF(x)のシーケンス番号+LENd−103とフレームF(w)のRCV_SEQとが一致し、またフレームF(y)のシーケンス番号d−106とフレームF(w)のRCV_SEQ+LENとが一致する場合、フレームF(x)のシーケンス番号d−102をNHED_SEQ(1)に設定し、また、フレームF(y)のシーケンス番号+LENd−107をNNAK_SEQ(1)設定し、NHED_SEQ(1)、NNAK_SEQ(1)を更新する。また、NHED_SEQ(2)、NNAK_SEQ(2)をNAKテーブル上から削除する。
次に図16(G)のように、登録済みフレームF(x)とフレームF(y)があり、フレームF(x)のシーケンス番号+LENd−103とフレームF(w)のRCV_SEQとが一致せず、またフレームF(y)のシーケンス番号d−106とフレームF(w)のRCV_SEQ+LENとが一致しない場合、フレームF(y)のシーケンス番号d−106をNHED_SEQ(3)へ、またフレームF(y)のシーケンス番号+LENd−107をNNAK_SEQ(3)に設定し、フレームF(w)のRCV_SEQd−104をNHED_SEQ(2)へ、フレームF(w)のRCV_SEQ+LENd−105をNNAK_SEQ(3)に登録する。
このように、NAKテーブルは、当該フレームが未登録である場合、SEQの若い順に登録し、NHED_SEQとNNAC_SEQとが同じ値になる行を統合することで、登録数を抑えることが出来る。なお、図14内で使用されるNHED_SEQとNNAC_SEQとは、図9(B)に示すp=1の行に登録されたNHED_SEQ(1)、NNAC_SEQ(1)になる。
<受信バッファ>
図9(C)に示すフレームF(6)とNEXT_SEQとが受信バッファ部113に与えられると、受信バッファ部113はフレームF(6)内のRCV_SEQに従い当該フレームF(6)を保存する。
図9(D)におけるRR、rrd、RW、rwrは、送信バッファ部102と同様に受信バッファ部113内でのフレームの保存・読出し制御に使用されるアドレスを示している。RRは読出しが完了していないフレームの先頭アドレス、rrdは受信バッファ部113からフレームを読出す間のアドレス、RWは次に受信バッファ部113へ保存されるフレームの先頭アドレス、rwrは受信バッファ部113へフレームを書き込みする間のアドレスである。この時点での各値は、RR=rrd=RW=rwr=5d−5である。与えられたフレームF(6)のRCV_SEQは値6であることから、受信バッファ部113上のアドレスrwrに値6d−6を設定し、アドレスd−6から当該フレームF(6)を保存する。受信フレームF(6)保存後の、受信バッファ部113上の各アドレスは、図9(E)に示すように、RR=rrd=RW=5d−5、rwr=7d−7となる。また、保存終了後、アドレスRWにNEXT_SEQを代入し、アドレスRWを更新し、更新したアドレスRWとアドレスRRを内部インタフェース部100へ出力する。受信バッファ部113上のd−6はNAKリストのNHED_SEQ(1)であり、d−7は、NAKリストのNNAK_SEQ(1)となる。受信バッファ部113からのフレーム読出しは、RR<RWの条件が満たされるとき読出しが開始される。RWはACK/NAKを返信する際に更新され、その値はNEXT_SEQとなる。rrdとRRは受信バッファ部113からフレームを読み出す毎に更新される。
<読み出し>
更新されたアドレスRWとアドレスRRが内部インタフェース部100に与えられると、内部インタフェース部100は、受信したアドレスが、以下の条件2を満たすか否かをチェックする。
RR<RW ・・・(条件2)
図5の処理B−2において、RR=5、WR=5であり、条件2を満たさないため、受信バッファ部113内に読出し可能なフレームがないと判断し読出し処理を行わない。なお、条件2が満たされた場合、内部インタフェース部100は受信バッファ部113へ読出し指示を出力し、受信バッファ部113から読み出されたフレームを他ブロック11へと出力する。
<送信>
なお、図4におけるACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B−1と同様の処理であり、NAK(N(5)0)を回線2を介して端末10へ送信する。
以上、受信側では上記の動作を図5における処理B−4および処理B−5でも同様に行う。
1.2.5)送信側処理A−4
次に、図5の処理A−4、すなわち端末10がNAK(N(5)0)を受信した際の処理動作を説明する。
図5の処理A−4において、NAK(N(5)0)を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理は前述の処理B−1と同様であるから説明は省略する。
図14において、フレーム誤り検出部110からNAK(N(5)0)、当該NAKヘッダの誤り訂正結果、当該NAK誤り検出結果および当該NAKフレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。図5の処理A−4ではNAK(N(5)0)には誤りが無いため、ヘッダ誤り訂正が完了(訂正の必要がないため)している。図5の処理A−4時点での各変数は、図15(A)のA−4欄よりREG_SXID=1、RCV_SEQ=5、RCV_XID=0、LEN=1であり、その他の値はNULLである。
次に、フレーム識別部111は、当該フレームに付与されているフラグの確認を行う(ステップS02)。NAK(N(5)0)のフラグには、SN=0、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームがNAKであると識別できる。 次に、フレーム識別部111は、当該フレームに設定されているRCV_XIDとREG_SXIDとが、上述した条件4を満たすか否かをチェックする(ステップS30)。この時点で、REG_SXID=1、RCV_XID=0であり、条件4を満たさない。よって、フレーム識別部111は当該NAK(N(5)0)が、既に適用済みであると判断し無視(廃棄)する。
1.2.6)受信側処理B−3
次に、図5の処理B−3において、端末20がフレームF(6)1を受信してからNAKフレームN(5)1を送信するまでの処理動作を説明する。
図5の処理B−3でフレームF(6)1を受信部108が受信してから、フレーム誤り検出部110でフレーム誤りを検出するまでの処理は前述のB−1での処理と同様である。
図14において、フレームF(6)1、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。フレームF(6)1には誤りが無いため、ヘッダ誤り訂正結果は完了(訂正の必要が無い)となる。図5の処理B−3時点での各変数は、図15(B)のB−3欄より、NEXT_SEQ=5、NHED_SEQ=6、NNAK_SEQ=7、REG_RXID=0、RCV_SEQ=6、RCV_XID=1、LEN=1であり、その他の値はNULLである。
次にフレーム識別部111は当該フレームに付与されているフラグの確認を行う(ステップS02)。フレームF(6)1のフラグには、SN=1、ACK=0、NAK=0、RT=1が設定されているため、受信したフレームが再送フレームであると識別できる。
次に、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックする(ステップS03)。図5の処理B−3の時点で、当該フレームのRCV_SEQは値6であり、NEXT_SEQは値5であるため、不一致となる。
次にフレーム識別部111はRCV_SEQ、RCV_XIDが上述した条件1を満たすか否かをチェックする(ステップS07)。条件1を満たす場合、受信フレームは既に受信しているフレームとなるため、無視(廃棄)してNAK生成指示をACK/NAK生成部103へ出力する(ステップS05)。図5の処理B−3の時点で条件1は満たされないため、フレーム識別部111は当該フレームF(6)0がNAKテーブルに登録済みであるか否かをチェックする(ステップS08)。図5の処理B−3の時点ではNAKテーブルに登録があるため、フレーム識別部111は、次にNAK生成指示をACK/NAK生成部103へ出力する(ステップS10)。本NAK指示には、NEXT_SEQ(値5)とRCV_XID(値1)とが設定される。以降の処理ステップS11、S12の説明は、図5の処理B−2で説明したとおりであるからここでは省略する。
また、ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B−1と同様であり、NAK(N(5)1)を回線2を介して端末10へ送信する。
1.2.7)受信側処理B−6
次に、図5の処理B−6において、端末20がフレームF(5)2を受信してから、ACKフレームA(9)2を送信するまでの処理動作をを説明する。
図5の処理B−6でフレームF(5)2を受信部108が受信してからフレーム誤り検出部110でフレーム誤りを検出するまでの処理は、前述のB−1での処理と同様である。
<フレーム識別>
図14において、フレームF(5)2、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。フレームF(5)2には誤りが無いため、ヘッダ誤り訂正結果は、完了(訂正の必要が無い)となる。図5の処理B−6時点での各変数は、図15(B)のB−6欄より、NEXT_SEQ=5、NHED_SEQ=6、NNAK_SEQ=9、REG_RXID=0、RCV_SEQ=5、RCV_XID=2、LEN=1であり、その他の値はNULLである。
次にフレーム識別部111は、当該フレームに付与されているフラグの確認を行う(ステップS02)。図10(A)に示すフレームF(5)2のフラグには、SN=1、ACK=0、NAK=0、RT=1が設定されているため、受信したフレームが再送フレームであると識別できる。
次に、当該フレームに設定されているシーケンス番号RCV_SEQがNEXT_SEQの値と一致するか否かをチェックする(ステップS03)。図5の処理B−6の時点で、当該フレームのRCV_SEQは値5でありNEXT_SEQは値5であるから、一致する。
次にフレーム識別部111は現在のトランザクションであるRCV_XID(値2)をREG_RXIDに保持する(ステップS21)。ステップS21の後、フレーム誤りの有無を確認する(ステップS04)。受信したフレームF(5)2には誤りがないため、次の処理ステップS13へ進む。なお、誤りがある場合、NEXT_SEQ、REG_RXIDを含むNAK生成指示をACK/NAK生成部103へ出力し(ステップS05)、当該フレームを廃棄する(ステップS06)。
受信したフレームF(5)2には誤りがない場合(ステップS04の「無」)、NAKテーブル上にNNAK_SEQの登録があるか否かをチェックする(ステップS13)。図5の処理B−6の時点で、NAKテーブル上にNNAK_SEQの登録があるため(ステップS13の「有」)、次の処理ステップS15へ進む。なお、無い場合(ステップS13の「無」)、当該受信フレーム以降フレーム誤り/ロスが発生していないため、現状のNEXT_SEQに当該フレーム長(LEN)を加算してNEXT_SEQを更新した後(ステップS14)、NEXT_SEQ、RCV_XIDを含むACK生成指示をACK/NAK生成部103へ出力し(ステップS24)、当該フレームを受信バッファ部113へ出力する(ステップS12)。
NAKテーブル上にNNAK_SEQの登録がある場合(ステップS13の「有」)、フレーム識別部111は、既に受信しているフレームと受信したフレームとの間に未受信のフレームがないかどうかを判断するため、以下の条件3を満たすか否かをチェックする(ステップS15)。
NHED_SEQ==NEXT_SEQ+LEN ・・・(条件3)
図5の処理B−6の時点で、NHED_SEQ=6、NEXT_SEQ=5、LEN=1であることから条件3を満たすので、次のステップS18の処理を行う。なお、条件3を満たさない場合には、既に受信しているフレームと受信したフレームとの間に未受信のフレームがあるため、現状のNEXT_SEQに当該フレーム長(LEN)を加算してNEXT_SEQを更新した後(ステップS16)、更新したNEXT_SEQ、RCV_XIDを含むNAK生成指示をACK/NAK生成部103へ出力し(ステップS17)、当該フレームとNEXT_SEQを受信バッファ部113へ出力する(ステップS12)。
条件3を満たす場合(ステップS15の「一致」)、フレーム識別部111は、現状のNEXT_SEQにNAKテーブル上NNAK_SEQ(1)を代入してNEXT_SEQを更新した後(ステップS18)、図10(B)に示すようにNAKテーブルからNHED_SEQ(1)とNNAK_SEQ(1)を削除してNAKテーブルを更新する(ステップS19)。ステップS19のNAKテーブル更新では、NHED_SEQ(p)=NHED_SEQ(p+1)およびNNAC_SEQ(p)=NNAC_SEQ(p+1)の処理を行う。
図5の処理B−6では、NAKテーブルの更新によりNAKテーブル上にNNAK_SEQの登録が無くなるため、更新したNEXT_SEQ、RCV_XIDを含むACK生成指示をACK/NAK生成部103へ出力し(ステップS22)、当該フレームとNEXT_SEQを受信バッファ部113へ出力する(ステップS12)。
なお、ステップ19実施後、NAKテーブル上にNNAK_SEQの登録ある場合、更新したNEXT_SEQ、RCV_XIDを含むNAK生成指示をACK/NAK生成部103へ出力し(ステップS23)、当該フレームを受信バッファ部113へ出力する(ステップS12)。
<受信バッファ>
図10(C)に示すフレームF(5)とNEXT_SEQとが受信バッファ部113に与えられると、受信バッファ部113はフレームF(5)内のRCV_SEQに従い、当該フレームF(5)を保存する。図10(D)においてRR、rrd、RW、rwrは、受信バッファ部113内でフレームの保存・読出し制御に使用されるアドレスを示している。RRは読出しが完了していないフレームの先頭アドレス、rrdは受信バッファ部113からフレームを読出す間のアドレス、RWは次に受信バッファ部113へ保存されるフレームの先頭アドレス、rwrは受信バッファ部113へフレームを書き込みする間のアドレスである。この時点での各値は、RR=rrd=RW=5d−5、rwr=9d−9である。与えられたフレームF(5)のRCV_SEQは値5であることから、受信バッファ部113上のアドレスrwrを5d−5に設定し、値5d−5から当該フレームF(5)を保存する。また、保存終了後、アドレスRWにNEXT_SEQを代入し、アドレスRWを更新する。
受信フレームF(5)保存後の受信バッファ部113上の各アドレスは、図10(E)に示すように、RR=rrd=5d−5、RW=9d−9、rwr=6d−6となる。受信バッファ部113からのフレーム読出しは、RR<RWの条件が満たされるときに開始される。RWはACK/NAKを返信する際に更新され、その値はNEXT_SEQとなる。rrdとRRは受信バッファ部113からフレームを読み出す毎に更新される。
<読み出し>
更新されたアドレスRWとアドレスRRが内部インタフェース部100に与えられると、内部インタフェース部100は受信したアドレスが上述した条件2を満たすか否かをチェックする。図5の処理B−6において、RR=5、RW=9であり、条件2を満たすため、受信バッファ部113内に読出し可能なフレームが有ると判断し、受信バッファ部113へ読出し指示を出力する。これによって受信バッファ部113から読み出されたフレームが他ブロック11へ出力される。
<送信>
ACK/NAK生成部103、トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106の処理は、図5の処理B−1と同様であり、ACK(A(9)2)を回線2を介して端末10へ送信する。
1.2.8)送信側処理A−9
次に、図5の処理A−9において、端末10がACK(A(9)2)を受信した際の処理動作を説明する。
図5の処理A−9でACK(A(9)2)を受信部108が受信してからフレーム誤り検出部110でフレーム誤り検出するまでの処理は前述のB−1での処理と同様である。
<フレーム識別>
図14において、フレーム誤り検出部110からACK(A(9)2)、当該ACKヘッダの誤り訂正結果、当該ACKの誤り検出結果および当該ACKフレーム長を入力すると、フレーム識別部111はヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。処理A−9では、ACK(A(9)2)に誤りが無いためヘッダ誤り訂正が完了(訂正の必要がないため)している。図5の処理A−9時点での各変数は、図15(A)のA−9欄より、REG_SXID=2、RCV_SEQ=9、RCV_XID=2、LEN=1であり、その他の値はNULLである。
次に、フレーム識別部111は当該フレームに付与されているフラグの確認を行う(ステップS02)。ACK(A(9)2)のフラグには、SN=0、ACK=1、NAK=0、RT=0が設定されているため、受信したフレームがACKであることが識別できる。したがって、ステップS02の後、フレーム識別部111は当該フレームに設定されているRCV_XIDとREG_SXIDが上述した条件4を満足するか否かをチェックする(ステップS30)。この時点で、REG_SXID=2、RCV_XID=2であるから一致する(ステップS30の「真」)。よって、当該ACK(A(9)2)は、未適用済みであると判断する。その後、フレーム識別部111は、受信したACKの含まれるRCV_SEQ、RCV_XIDが適用された更新指示を送信バッファ制御部112とトランザクション識別子付与部114へ出力する(ステップS32)。
<送信バッファ制御>
図11(A)に示す更新指示が送信バッファ制御部112に与えられると、送信バッファ制御部112は更新指示とRCV_SEQ(値9)とを送信バッファ部102へ出力する。更新指示とRCV_SEQ(値9)とが送信バッファ部102に与えられると、送信バッファ部102はアドレスsrdと受信したRCV_SEQとを比較し、値の大きい方をsrdに設定し、フレームの読出しを開始する。また、このとき、アドレスsrcが受信したRCV_SEQより小さい場合には、同様にsrcの値も更新する。図5の処理A−9の時点で、送信バッファ部102内の各アドレスは、図11(B)に示すように、SR=5d−5、srd=7d−7、src=9d−9、swr=SW=11d−11である。ここで、送信バッファ部102が更新指示とRCV_SEQ(値9)を受けると、図8(C)に示すように、srd(値7d−7)およびSR(値5d−5)の値を受信したRCV_SEQ(値9)に設定し、アドレスsrdからフレームの読出しを開始する。なお、アドレスSR=9d−9に更新されるため、それ以前のフレームF(5)、フレームF(6)、フレームF(7)およびフレームF(8)は送信バッファ部102上から削除される。
<ACK/NAK生成>
読み出されたフレームF(9)がACK/NAK生成部103に与えられると、ACK/NAK生成部103は、処理A−1と同様に、フレーム識別部111からACK/NAK生成指示がない場合には当該フレームをトランザクション識別子付与部114へ出力する(図12のステップS50、S51、S56)。
<トランザクション識別子付与>
図13において、フレームF(9)がトランザクション識別子付与部114に与えられ、さらに、フレーム識別部111から“更新指示、RCV_SEQ、RCV_XID”を含む更新指示が与えられると、トランザクション識別子付与部114は、再送指示でないので、当該フレームF(9)のシーケンス番号(SEQ)と一つ前のフレームに設定されていたシーケンス番号(PRE_SEQ)とを比較する(ステップS78)。図5の処理A−9の時点で、PRE_SEQは6、SEQは9であるから、トランザクション識別子付与部114は現状のトランザクション識別子(XID)である‘2’を当該フレームへ付与する(ステップS75)。また、PRE_SEQの値を更新し(ステップS76)、XIDを付与した当該フレームF(9)2をヘッダ誤り訂正符号付与部104へ出力する(ステップS77)。
<送信>
ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、図5の処理A−1と同様の処理を行い、再送フレームF(5)1を回線1を介して端末20へ送信する。
以上のように動作することで、図5において発生したフレーム誤りおよびロスから回復することが出来る。
1.3)効果
上述したように、本発明の第1実施形態によれば、トランザクション識別子を付与し、再送が発生する毎にトランザクション識別子を更新しているので、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。
さらに、本実施形態では、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームの範囲をシーケンス番号で管理しているので、シーケンス番号とバッファアドレスの対応テーブルをもつ必要がない。このため、RTTが大きいネットワークで送受信バッファサイズが増加した場合でも、シーケンス番号とバッファアドレス対応テーブルの規模が大きくなることがなく長距離(高RTT)においても規模を抑えた再送制御により高品質なデータ通信が可能となる。
また、本実施形態では、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、フレームロス/誤りが発生した後に受信した正常フレームを保存する。したがって、再送信時に他のフレームにロス/誤りが発生しても再々送を防ぐことができ、スループットを向上させる効果もある。
さらに、本実施形態では、トランザクション識別子を付与し再送が発生する毎にトランザクション識別子を更新する以外に、シーケンス番号が一巡する毎にトランザクション識別子を更新しているので、シーケンス番号が一巡した際も、既に受信済みのフレームであるか否かの識別が可能となり、フレーム識別誤りによるフレーム廃棄を防ぐことが出来るため、スループットを向上させる効果がある。言い換えれば、この更新を行わない場合、シーケンス番号が一回りしてしまうと、上述した条件1が満たされるため、受信バッファ部113へ保存すべきフレームを廃棄することになる。
たとえば、図17はシーケンス番号が値10で一巡する例であり、図17(A)はトランザクション識別子(XID)を更新しない場合、図17(B)は更新した場合のシーケンスである。
図17(A)において、フレームF(10)0にロスが発生した後、受信側でフレームF(0)0を受信すると、受信側の各変数はNEXT_SEQ=10、REG_RXID=0であるため、条件1が満たされ、SEQ=0以降のフレームを受信済みフレームと判断し廃棄してしまう。
これに対して、図17(B)では、シーケンス番号が一巡する際にXIDを更新するため、フレームF(10)0にロスが発生した後、受信側でフレームF(0)1を受信しても条件1が満たされない。従ってフレームF(0)1以降の廃棄を防ぐことができる。このように図17(B)では、F(10)2を受信した時点で、F(0)1〜F(2)1は受信済みであるためACK(A(3)2)が返信されるのに対し、図17(A)ではF(0)0〜F(2)0を廃棄したためACK(A(0)1)を返信することになる。
なお、上記実施形態では、端末10から端末20へのフレーム送信であったが、その逆においても同様の手順で送信を行うことができる。また、データリンク層での再送制御としてイーサネットNICを例としているが、データの再送信を行う方式であればすべてに適用することができる。また、上述の実施形態ではヘッダ誤り訂正符号を使用しヘッダ情報を保護しているが、ヘッダ情報の誤りを確認できれば良いため、ヘッダ誤り訂正符号付与部104およびヘッダ誤り訂正部109としてフレーム誤り検出符号付与104およびフレーム誤り検出部110のような誤り検出符号を使用してもよい。
2.第2実施形態
2.1)構成
本発明の第2実施形態による通信装置は、図4に示す内部構成と基本的に同じであるが、ネットワークインタフェースカード(NIC)12における再送ヘッダ処理とACK/NAK生成103およびフレーム識別部111での処理とが異なっている。そこで、図4におけるACK/NAK生成部103をACK/NAK生成部203とし、フレーム識別部111をフレーム識別部211として、第2実施形態におけるACK/NAK生成部203とフレーム識別部211の説明を行う。その他のブロックおよび機能は図4と同じであるから同じ参照番号を付して説明は省略する。
図18に示すように、本実施形態を適用したNIC12aにおけるACK/NAK生成部203は、送信バッファ部102、トランザクション識別子付与部114およびフレーム識別部211に接続する。ACK/NAK生成部203は、後述するように、ACK/NAK用のシーケンス番号(AN_SEQ)領域とACK/NAK用のトランザクション識別子(AN_XID)領域を再送ヘッダに追加する。フレーム識別部211からのACK/NAK生成要求と送信バッファ部102からの読出しフレームが競合する場合、ACK/NAK情報を読み出してフレームに相乗り(piggyback)させる。
フレーム識別部211は、フレーム誤り検出部110、送信バッファ制御部112、ACK/NAK生成部203および受信バッファ部113に接続する。フレーム識別部211は、フレーム誤り検出部110からヘッダ誤り訂正結果、フレーム誤り検出結果、フレーム長およびフレームを入力すると、ヘッダ誤り訂正結果、フレーム誤り検出結果およびフレームヘッダの内容に応じて処理を行う。ヘッダ誤り訂正結果が「誤り無し」の場合は後述の処理を行い、「誤り有」の場合は当該フレームを廃棄する。受信フレームのACK/NAKフラグが1の場合、当該フレームヘッダに設定されているACK/NAK用シーケンス番号(AN_SEQ)とACK/NAK用トランザクション識別子(AN_XID)から適用すべきACK/NAKを判断し、適用する場合には再送/更新指示を送信バッファ制御部112とトランザクション識別子付与部104へ出力する。受信フレームのSNフラグが1の場合、当該フレームヘッダに設定されているシーケンス番号(RCV_SEQ)とトランザクション識別子(RCV_XID)を抽出し、当該フレームのフレーム誤り検出結果が「誤り有」の場合にはNAK生成指示を抽出したRCV_SEQとRCV_XIDと一緒にACK/NAK生成部203へ出力し当該フレームを廃棄する。「誤り無し」の場合には、抽出したRCV_SEQとRCV_XIDが次に受信すべきシーケンス番号であるか比較し、一致しない場合はNAK生成指示を次に受信すべきシリアル番号と抽出したトランザクション識別子と一緒にACK/NAK生成部203へ出力し、当該フレームを受信バッファ部113へ出力する。抽出したRCV_SEQとRCV_XIDが次に受信すべきシーケンス番号と一致する場合には、ACK生成指示を抽出したRCV_SEQとRCV_XIDと一緒にACK/NAK生成部203へ出力し、当該フレームを受信バッファ部113へ出力する。受信フレームのACK/NAKのいずれかのフラグとSNのフラグが1である場合には上述の処理を同時に行う。
2.2)動作
次に、第2実施形態におけるACK/NAK生成部203とフレーム識別部211の動作について説明する。
図19は、実施例2における誤り発生時の双方向端末間伝送シーケンスを示した図であり、説明の便宜上、ACKを受信せずに送信できるサイズを示す受信ウインドウサイズを4フレーム分としている。また、再送回数も1回まで行うこととする。また、端末10から端末20へ送信されるフレームF(5)0および端末20から端末10へ送信されるフレームf(13)0A(7)0でフレーム誤りまたはフレームロスが発生しており、これらフレーム誤り/ロスから回復するまでのシーケンスも示している。
図19において、“F(*)#”は、端末10から端末20への送信/再送信フレームを表し、“N(*)#”、および“A(*)#”は、端末20から端末10へのACK/NAKを表す。“f(*)#”は、端末20から端末10への送信/再送信フレームを表し、“n(*)#”、および“a(*)#”は、端末10から端末20へのACK/NAKを表す。また、‘*’はフレームに付与されるシーケンス番号であり、‘#’は当該フレームのトランザクション識別子を表す。F(*)#a(*)#、F(*)#n(*)#、f(*)#A(*)#、f(*)#N(*)#は、ACK/NAKの情報を相乗り(ピギーバック)させたフレームである。
本実施形態では、図19のC−1、C−2以外の処理動作は、図5に示した第1実施形態と同様となるため、図19のC−1におけるACK/NAK生成部203と図19のC−2におけるフレーム識別部211の動作について説明する。なお、端末10から端末20方向のシーケンス番号の初期値を値5、トランザクション識別子の初期値を値0として、端末20から端末10方向のシーケンス番号の初期値を値12、トランザクション識別子の初期値を値0とする。
<処理C−1;ACK/NAK生成>
まず、図19の処理C−1において、端末20のNIC12aで送信フレームf(12)0とNAK指示N(5)0とが競合した際のACK/NAK生成処理部203の処理動作を図20および図21を参照しながら説明する。
図21において、端末20のNIC12aのACK/NAK生成部203が送信バッファ部102から読出しフレームf(12)0を入力すると(ステップS90)、ACK/NAK生成部203は図20(A)に示すようにACK/NAK用のシーケンス番号(AN_SEQ)領域g−70とACK/NAK用のトランザクション識別子(AN_XID)領域g−71を再送ヘッダに追加する(ステップS91)。
続いて、ACK/NAK生成部203はフレーム識別部211からのACK/NAK生成指示の有無をチェックする(ステップS94)。図19の処理C−1の時点では、NAK生成指示があるためNAKフラグに1を設定し、NAK生成指示に含まれるNEXT_SEQ(値5)を再送ヘッダのAN_SEQ領域へ、RCV_XID(値0)をAN_XID領域へそれぞれ設定し(ステップS95)、NAK情報を付与した当該フレームをトランザクション識別子付与部114へ出力する(ステップS96)。なお、ACK/NAKの生成指示がない場合には、ACK/NAK情報を付与せずに当該フレームをトランザクション識別子付与部114へ出力する(ステップS96)。
送信バッファ部102から読出しフレームがなく、NAKの生成指示がACK/NAK生成部203に与えられると(ステップS90の「無」、ステップS92の「有」)、ACK/NAK生成部203はACK/NAK用のシーケンス番号(AN_SEQ)領域とACK/NAK用のトランザクション識別子(AN_XID)領域とを再送ヘッダに追加した後、NAKフラグに1を設定し、NAK生成指示に含まれるNEXT_SEQを再送ヘッダのAN_SEQ領域へ、RCV_XID(またはREG_RXID)をAN_XID領域へ設定し(ステップS93)、NAK情報を付与した当該フレームをトランザクション識別子付与部114へ出力する。ACK指示の場合には、ACKフラグに1を設定し、上記と同様の処理を行う。
トランザクション識別子付与部114、ヘッダ誤り訂正符号付与部104、フレーム誤り検出符号付与部105および送信部106は、第1実施形態において説明した処理を実行し、図20(B)に示すフレームを対向側の端末10へ送信する。
<処理C−2;フレーム識別>
図19の処理C−2において、端末10のNIC12aでNAK情報を含む送信フレームf(12)0N(5)0を受信した際のフレーム識別部211の処理動作を説明する。フレーム識別部211の処理フローは図14に示す処理フローとほぼ同じであるが、図14のステップS20が異なっている。
図14において、図20(C)に示すACK/NAK情報を含むフレームf(12)0N(5)0、ヘッダ誤り訂正結果、フレーム誤り検出結果および当該フレーム長(LEN)を入力すると、フレーム識別部211はヘッダ誤り訂正が完了しているか否かをチェックする(ステップS00)。f(12)0N(5)0には誤りがないのでヘッダ誤り訂正結果は完了(訂正の必要が無い)となる。なお、図19の処理C−2時点での各変数は、NEXT_SEQ=12、REG_RXID=0、RCV_SEQ=12、RCV_XID=0、AN_SEQ=5、AN_XID=0、LEN=1であり、その他の値はNULLである。
次にフレーム識別部211は、当該フレームに付与されているフラグの確認を行う(ステップS02)。図20(C)に示すフレームf(12)0N(5)0のフラグにはSN=1、ACK=0、NAK=1、RT=0が設定されているため、受信したフレームが初回送信フレームでNAK情報を含んでいることがわかる。ここで、送信側処理と受信側処理が分岐される。すなわち、当該フレームから抽出したAN_SEQ=5、AN_XID=0に従ったステップS30〜S33の送信処理と、抽出したRCV_SEQ、RCV_XIDおよびLENに従ったステップS03、S21、S04、S13、S14、S24、S12の受信処理と、が並列で実行される。なお、フレーム識別部211におけるその他処理の内容は上述した第1実施形態と同様である。フレーム識別部211は、上記の処理を行い、再送指示を送信バッファ制御部112とトランザクション識別子付与部114に出力し、またACK生成指示をACK/NAK生成部203へ出力する。
2.3)効果
このように、第2実施形態によれば、ACK/NAK生成部203がACK/NAK用のシーケンス番号(AN_SEQ)領域とACK/NAK用のトランザクション識別子(AN_XID)領域とを再送ヘッダに追加しているので、ACK/NAK生成部203でACK/NAK生成要求と読出しフレームとが競合した場合でも、ACK/NAK情報を読み出しフレーム相乗りさせることができる。これによって双方向通信においてもACK/NAKフレームのオーバヘッドを抑え、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。
3.第3実施形態
上述した第1および第2実施形態では、Go Back N−ARQ方式による再送制御を基本動作としているが、図4のNIC12あるいは図18のNIC12aにおける送信バッファ部102の読出し処理動作を以下のように変更することで、Selective Repeat−ARQ方式による再送制御として動作させることも可能である。
本発明の第3実施形態を適用したNICの送信バッファ部を送信バッファ部202とすれば、その読み出し処理は次のように行われる。
送信バッファ部202は、再送指示と再送フレームの先頭アドレスを示すRCV_SEQを入力すると、RCV_SEQ値をアドレスSRとsrdアドレスに設定し、srdアドレスのフレームを1フレーム分読み出す。また、このとき読出しフレームに対して再送フレームであることを示すRT=1のフラグを付与する。1フレーム読出し後、送信バッファ部202は、初回読出しが完了しているアドレスを示すsrcを読出しアドレスsrdに設定し、送信バッファ部202上に保存されている未送信フレームの読出しを行う。
このように、送信バッファ部202でRCV_SEQで指定される再送指示があるフレームのみを再度送信することで、Selective Repeat−ARQ方式による再送制御として動作させることができる。Selective Repeat−ARQ方式による再送制御は、誤りのあるフレームのみを再送するため、再送効率がGo Back N−ARQ方式に比べて良くスループットを向上させる効果がある。
4.効果
上述したように、本発明の各実施形態による通信装置は次のような効果を奏する。
第1に、トランザクション識別子を付与し、再送が発生する毎にトランザクション識別子を更新しているので、RTTの変化および可変長フレームによる誤再送または未再送を防ぐことができ、スループットを向上させることができる。
第2に、シーケンス番号をバッファのアドレスとし、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、シーケンス番号とバッファアドレスの対応テーブルをもつ必要が無く、RTTが大きいネットワークで送受信バッファサイズが増加した場合でもシーケンス番号とバッファアドレス対応テーブルの規模が大きくならない。したがって、長距離(高RTT)においても規模を抑えた再送制御により高品質な回線を適用できる。
さらに、NAKテーブルにより受信済みフレームのシーケンス番号を管理しているので、フレームロス/誤りが発生した後に受信した正常フレームを保存し、再送信時に他のフレームにロス/誤りが発生しても再々送を防ぐことができる。
さらに、再送が発生する毎およびシーケンス番号が一巡する毎にトランザクション識別子を更新することで、シーケンス番号が一巡した際においても既に受信済みのフレーム否かの識別が可能となりフレーム識別誤りによるフレーム廃棄を防ぐことが出来る。
また、送信フレーム用のシーケンス番号およびトランザクション番号の領域とACK/NAK用のシーケンス番号領域およびトランザクション識別子(AN_XID)領域とを同じ再送ヘッダに追加しACK/NAK情報を送信フレーム相乗りさせることができるために、双方向通信においてACK/NAKフレームのオーバヘッドを抑え、RTTの変化および可変長フレームによる誤再送または再送遅延を防ぎスループットを向上させる効果がある。
本発明は、パケット通信システムにおける通信端末、たとえば情報通信端末や携帯通信端末などに適用可能である。
1、2 回線
10、20 端末
11 他ブロック
12 NIC(Network Interface Card)
100 内部インタフェース部
101 ヘッダ付与部
102 送信バッファ部
103 実施例1のACK/NAK生成部
114 トランザクション識別子付与部
104 ヘッダ誤り訂正符号付与部
105 フレーム誤り検出符号付与部
106 送信部
108 受信部
109 ヘッダ誤り訂正部
110 フレーム誤り検出部
111 実施例1のフレーム識別部
112 送信バッファ制御部
113 受信バッファ部
203 ACK/NAK生成部
211 フレーム識別部
g−1 誤りが発生したパケット
g−2、g−4 重複ACK
g−3 誤り発生から再送要求が伝わるまでの遅延時間
g−5 再送タイムアウトにより再送が開始されるまでの時間
g−11、g−14、g−15 NAKフレーム
g−12 NAKによって再送される再送フレーム
g−13 無視されるNAKフレーム
g−20 送信側で保持するRTT時間
g−21、g−25 現実RTT時間
g−23、g−24、g−27、g−28 適用されたNAKフレーム
g−22 NAKフレームが無視されることによって発生する遅延時間
g−26 NAKフレーム誤認による誤再送
A−1〜A−10 送信側イベント
B−1〜B−6 受信側イベント
g−40 MACヘッダ
g−41 MACクライアントデータ
g−42 再送ヘッダ
g−48 シーケンス番号(SEQ)
g−49 送信バッファにて保存、読出されるフレーム
g−50 トランザクション識別子付与部114からの出力フレーム
g−51 トランザクション識別子(XID)
g−52 ヘッダ誤り訂正符号付与部104の出力フレーム
g−53 ヘッダ誤り訂正符号付与部104で付与されたヘッダ誤り訂正符号
g−54 フレーム誤り検出符号付与部105からの出力フレーム
g−55 フレーム誤り検出符号付与部105で付与されたフレーム誤り検出符号
d−3〜d−11、d−99〜d−107 送受信バッファ内アドレス
g−60 ヘッダ誤り訂正部109で付与されるヘッダ誤り訂正結果
g−61 フレーム誤り検出部110で付与されるフレーム誤り検出結果
g−62 フレーム誤り検出部110で付与される当該フレーム長
g−65 更新されたトランザクション識別子(XID)
g−70 ACK/NAK用のシーケンス番号(AN_SEQ)領域
g−71 ACK/NAK用のトランザクション識別子(AN_XID)領域
C−1 送信イベント
C−2 受信イベント

Claims (10)

  1. 受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置であって、
    送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を格納する送信バッファ手段と、
    前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信する送信手段と、
    前記送信したPDUに対して前記受信側の通信装置から異常受信応答(NAK)を受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する制御手段と、
    を有することを特徴とする通信装置。
  2. 前記送信バッファ手段に格納される前記PDUの格納アドレスを当該PDUの前記シーケンス番号として用い、当該シーケンス番号に次に送信すべきPDUのPDU長を加算した値を当該次に送信すべきPDUのシーケンス番号として用いることを特徴とする請求項1に記載の通信装置。
  3. 前記次に送信すべきPDUのシーケンス番号が前記送信バッファ手段の格納容量の先頭アドレスを超えて一巡する場合には前記送信側トランザクション識別子を更新することを特徴とする請求項2に記載の通信装置。
  4. 正常受信応答(ACK)あるいはNAKの生成要求と前記送信バッファ手段からのPDU読出しとが競合する場合、当該PDUのヘッダに正常受信応答(ACK)あるいはNAK用のシーケンス番号およびトランザクション識別子を付加することを特徴とする請求項1−3のいずれか1項に記載の通信装置。
  5. 受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置における通信制御方法であって、
    送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を送信バッファ手段に格納し、
    送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、
    前記送信したPDUに対して前記受信側の通信装置から異常受信応答(NAK)を受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、
    前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、
    ことを特徴とする通信装置における通信制御方法。
  6. 前記送信バッファ手段に格納される前記PDUの格納アドレスを当該PDUの前記シーケンス番号として用い、当該シーケンス番号に次に送信すべきPDUのPDU長を加算した値を当該次に送信すべきPDUのシーケンス番号として用いることを特徴とする請求項5に記載の通信装置における通信制御方法。
  7. 前記次に送信すべきPDUのシーケンス番号が前記送信バッファ手段の格納容量の先頭アドレスを超えて一巡する場合には前記送信側トランザクション識別子を更新することを特徴とする請求項6に記載の通信装置における通信制御方法。
  8. 正常受信応答(ACK)あるいはNAKの生成要求と前記送信バッファ手段からのPDU読出しとが競合する場合、当該PDUのヘッダに正常受信応答(ACK)あるいはNAK用のシーケンス番号およびトランザクション識別子を付加することを特徴とする請求項5−7のいずれか1項に記載の通信装置における通信制御方法。
  9. 端末間で再送要求されたシーケンス番号のデータユニットを再送信する再送機能を有するデータ通信システムであって、
    送信側端末が、送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を送信バッファ手段に格納し、前記PDUのヘッダに送信側トランザクション識別子を付加して受信側端末へ送信し、
    前記受信側端末が、前記PDUを正常受信できなかった場合には、前記シーケンス番号および前記送信側トランザクション識別子含む異常受信応答(NAK)を前記送信側端末へ返信し、前記PDUを正常受信した場合には、次に受信すべきPDUのシーケンス番号および前記送信側トランザクション識別子含む正常受信応答(ACK)を前記送信側端末へ返信し、
    前記送信側端末が、前記NAKを受信したならば、前記送信側トランザクション識別子を更新したPDUを前記受信側端末へ再送信し、前記送信側トランザクション識別子を更新した後で前記受信側端末からNAKを受信した場合、当該受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、
    ことを特徴とするデータ通信システム。
  10. 受信側の通信装置から再送要求されたシーケンス番号のデータユニットを再送信する機能を有する通信装置におけるプログラム制御プロセッサを機能させるプログラムであって、
    送信すべきデータユニットに当該データユニットのシーケンス番号を有するヘッダを付加したプロトコルデータユニット(以下、PDUという。)を送信バッファ手段に格納し、
    送信手段が前記PDUのヘッダに送信側トランザクション識別子を付加して前記受信側の通信装置へ送信し、
    前記送信したPDUに対して前記受信側の通信装置から異常受信応答(NAK)を受信したとき、当該NAKに前記シーケンス番号と前記送信側トランザクション識別子とが含まれているならば、前記送信側トランザクション識別子を更新したPDUを前記受信側の通信装置へ再送信し、
    前記送信側トランザクション識別子を更新した後で前記受信側の通信装置から受信したNAKに前記シーケンス番号と更新する前の送信側トランザクション識別子とが含まれているならば当該NAKを無視する、
    ように前記プログラム制御プロセッサを機能させることを特徴とするプログラム。
JP2011059400A 2011-03-17 2011-03-17 データ通信システムにおける通信装置および通信制御方法 Withdrawn JP2012195836A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011059400A JP2012195836A (ja) 2011-03-17 2011-03-17 データ通信システムにおける通信装置および通信制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011059400A JP2012195836A (ja) 2011-03-17 2011-03-17 データ通信システムにおける通信装置および通信制御方法

Publications (1)

Publication Number Publication Date
JP2012195836A true JP2012195836A (ja) 2012-10-11

Family

ID=47087328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011059400A Withdrawn JP2012195836A (ja) 2011-03-17 2011-03-17 データ通信システムにおける通信装置および通信制御方法

Country Status (1)

Country Link
JP (1) JP2012195836A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107566275A (zh) * 2017-10-18 2018-01-09 中南大学 数据中心网络中基于延时差异性的多路径传输方法
WO2020196958A1 (ko) * 2019-03-28 2020-10-01 라인플러스 주식회사 네트워크 상태 변환에 따른 효율적인 전송 복원 방법 및 시스템
CN113287273A (zh) * 2019-01-21 2021-08-20 罗伯特·博世有限公司 用于在改变传输配置的情况下运行主通信装置的方法
CN117171083A (zh) * 2023-06-07 2023-12-05 沐曦集成电路(南京)有限公司 基于nak的自适应修复pcie接口互连链路的系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107566275A (zh) * 2017-10-18 2018-01-09 中南大学 数据中心网络中基于延时差异性的多路径传输方法
CN107566275B (zh) * 2017-10-18 2019-12-03 中南大学 数据中心网络中基于延时差异性的多路径传输方法
CN113287273A (zh) * 2019-01-21 2021-08-20 罗伯特·博世有限公司 用于在改变传输配置的情况下运行主通信装置的方法
JP2022518727A (ja) * 2019-01-21 2022-03-16 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツング 伝送構成の変更を伴う一次通信装置を運転するための方法
WO2020196958A1 (ko) * 2019-03-28 2020-10-01 라인플러스 주식회사 네트워크 상태 변환에 따른 효율적인 전송 복원 방법 및 시스템
CN117171083A (zh) * 2023-06-07 2023-12-05 沐曦集成电路(南京)有限公司 基于nak的自适应修复pcie接口互连链路的系统
CN117171083B (zh) * 2023-06-07 2024-05-03 沐曦集成电路(南京)有限公司 基于nak的自适应修复pcie接口互连链路的系统

Similar Documents

Publication Publication Date Title
US8842528B2 (en) System and method for improving transport protocol performance in communication networks having lossy links
US6711128B1 (en) System and method for improving transport protocol performance in communication networks having lossy links
US6389016B1 (en) Data communication system and method for transporting data
EP2493104B1 (en) Header compression data packet transmission method and device based on retransmission mechanism
JP3634800B2 (ja) パリティチェック結合を用いたハイブリッド自動再送要求を実施するシステム及び方法
US20080195912A1 (en) Method of communicatoin
US20110161777A1 (en) Reliable Packet Cut-Through
WO2011079777A1 (zh) 数据传输的方法和网络侧设备
CN106470497B (zh) 一种数据传输方法、无线链路控制发送及接收实体
US8812926B2 (en) Wireless communication apparatus, wireless communication control apparatus, wireless communication method, wireless communication program storage medium, wireless communication control method, and wireless communication control program storage medium
JP2012195836A (ja) データ通信システムにおける通信装置および通信制御方法
WO2021208694A1 (zh) 一种数据传输方法及网络设备
Maisuria et al. Overview of techniques for improving QoS of TCP over wireless links
US7366119B2 (en) Data receiving and transmitting method with coding type determination
JP5817387B2 (ja) 通信装置及び通信方法
US20220158771A1 (en) Method of enabling harq, network entity and computer program
JP2001168907A (ja) 通信装置
KR100918735B1 (ko) 이동통신 시스템에서 패킷 송수신 방법 및 장치
EP3432500A1 (en) Point-to-point transmitting method based on the use of an erasure coding scheme and a tcp/ip protocol
JP2013026820A (ja) 通信装置、通信方法、及び通信システム
Shagdar et al. Improving ECN-based TCP performance over wireless networks using a homogeneous implementation of EWLN
US20120131420A1 (en) Method and Apparatus for Non-uniform Redundancy Packet Error Correction
WO2023247005A1 (en) Receiver-agnostic scheme for reliable delivery of data over multipath
AU2013200946B2 (en) Wireless communication apparatus, wireless communication control apparatus, wireless communication method, wireless communication program, wireless communication control method, and wireless communication control program
CN117692387A (zh) 一种基于序号的点到点传输系统

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: 20140603