JP5585591B2 - パケット再送制御システム、方法、及びプログラム - Google Patents

パケット再送制御システム、方法、及びプログラム Download PDF

Info

Publication number
JP5585591B2
JP5585591B2 JP2011546071A JP2011546071A JP5585591B2 JP 5585591 B2 JP5585591 B2 JP 5585591B2 JP 2011546071 A JP2011546071 A JP 2011546071A JP 2011546071 A JP2011546071 A JP 2011546071A JP 5585591 B2 JP5585591 B2 JP 5585591B2
Authority
JP
Japan
Prior art keywords
packet
retransmission
control block
block
duplicate
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.)
Expired - Fee Related
Application number
JP2011546071A
Other languages
English (en)
Other versions
JPWO2011074454A1 (ja
Inventor
則夫 山垣
清久 市野
真人 安田
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 JP2011546071A priority Critical patent/JP5585591B2/ja
Publication of JPWO2011074454A1 publication Critical patent/JPWO2011074454A1/ja
Application granted granted Critical
Publication of JP5585591B2 publication Critical patent/JP5585591B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • H04L1/1883Time-out mechanisms using multiple timers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/323Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the physical layer [OSI layer 1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、パケット通信におけるパケット再送制御(packet retransmission control)に関する。特に、本発明は、パケット再送制御機能を有するプロトコルよりも下位レイヤにおいてもパケット再送制御を行う場合の技術に関する。
TCP(Transmission Control Protocol)は、インターネットにおいて広く利用されているプロトコルであり、OSI(Open Systems Interconnection)参照モデルの第四層(トランスポート層)に相当する。TCPは、端末間でコネクションを確立し、信頼性のある効率的な通信を提供する。これを実現するため、TCPにはいくつかの機能が備わっている。そのTCPの機能の1つとして、ネットワーク中でパケットロスが発生した場合に、送信端がロスしたパケットを受信端へ再度転送するパケット再送制御機能がある。具体的には、TCPのパケット再送制御機能としては、(A)高速再転送(Fast Retransmit)によるパケット再送と、(B)タイムアウトによるパケット再送がある。
TCPでは、受信端が正しい順序でパケットを受信すると、次に受け取るべきデータのシーケンス番号を送信端に通知する。つまり、正しい順序で受信したパケットのシーケンス番号を確認応答する「ACK(ACKnowledge)パケット」が送信端に返信される。ここで、同じシーケンス番号を確認応答するACKパケットは、以下「重複ACK(Duplicate ACK)パケット」と参照される。非特許文献1に記載されているように、Fast Retransmitによるパケット再送の場合、送信端は、重複ACKパケットを一般的には3つ受信すると、そのシーケンス番号から始まるパケットはロスした可能性が高いと判断し、当該パケットを再送する。
また、TCPは、再送タイムアウト(RTO:Retransmission Timeout)と呼ばれるパラメータを保持している。非特許文献2に記載されているように、RTOは、RTT(Round Trip Time)を基に算出される。タイムアウトによるパケット再送の場合、送信端は、パケットを転送してからRTOの時間が経過しても受信端からACKパケットが全く返信されない場合に、対応するパケットを再送する。
ここで、例として、データセンターのようなRTTが数10から数100マイクロ秒程度の非常に短いネットワークを考える。そのようなネットワークにおいて、RTOをマイクロ秒単位にまで短縮することができれば、ACKパケットの返信が無いために新規パケットを転送することができない期間を短縮することができる。これは、通信効率の向上につながる。
しかしながら、一般的に、TCPスタックはOS(Operating System)に実装されており、OSはソフトウェアで実装されているため、RTOを高精度に設定することができない。例えば、Linuxの単位時間(Jiffies)は10ミリ秒単位であるため、Linuxの標準的なTCPスタックは、RTOを10ミリ秒未満に短縮できない。TCPのRTOをマイクロ秒レベルまで短縮することができないため、データセンターのようなネットワークにおいて、TCPのスループットは低下する。
これを解決する方法の1つとして、非特許文献3に開示されているように、MAC(Media Access Control)層のような下位レイヤにおいてもパケット再送制御を行うことが提案されている。具体的には、TCP層よりも下位のMAC層において、マイクロ秒レベルのタイムアウト判定を行ってパケット再送制御を行う。これにより、OSやTCPスタックの構成を変えることなく、RTTの短いネットワークにおいても通信効率を向上させることができる。尚、MAC層等の第二層では一般的に、パケットではなくフレームという用語が用いられるが、ここでは両者を区別せずに用いることとする。
特許文献1には、無線環境を想定し、MAC層においてデータの再送処理の時間を計測し、再送処理時間を超えたパケット破棄して、当該パケットの再送を中止する場合等に、再送パケットを含む送受信パケットを保持するバッファメモリへのアクセスの衝突を避けるためのパケットデータ削除方法が開示されている。
特開2007−124496号公報
M. Allman, V. Paxson and E. Blanton, "TCP Congestion Control", IETF, RFC5681, pp.7−9, September 2009. V. Paxson and M. Allman, "Computing TCP’s Retransmission Timer", IETF, RFC2988, November 2000. T. Takamichi et al.,"100Gbps Ultra−High Speed MAC Technology −A Study on the Terabit−Class LAN NIC−", IEICE Technical Report, OSC2008−112, January 2009.
上述の通り、TCPのFast Retransmitの場合、一般的には3つの重複ACKパケットの受信をトリガとして、パケット再送が行われる。図1Aは、TCPのFast Retransmitによるパケット再送の一例を示している。図1Aでは、送信端からパケットP100〜P104が送信され、そのうちパケットP100に続くパケットP101がネットワーク中でロスしている。正常に受信されたパケットP100に対するACKパケットは、ACK100で表されている。また、ACK100と同じシーケンス番号を確認応答する3つの重複ACKパケットは、Duplicate ACK1〜3で表されている。3つ目の重複ACKパケットに応答して、TCPのFast Retransmitが起動し、送信端は、ACK100が要求するパケットP101を再送する。
図1Bは、MAC層のような下位レイヤにおいても、タイムアウトによるパケット再送が行われる場合を示している。図1B中、実線はTCPパケットを表し、点線は下位レイヤのパケットを表している。ここで、場合によっては、図1Bに示されるように、下位レイヤでのタイムアウトによるパケット再送よりも早く、TCPのFast Retransmitが起動する。その場合、TCPのFast RetransmitによってパケットP101が再送された後、下位レイヤにおいてパケットP101のタイムアウトが発生し、下位レイヤにおいてパケットP101が再送される。つまり、パケットP101の再送が重複する。このことは、ネットワーク帯域の浪費につながる。
例として、リンク伝送能力が10Gbpsであり、RTTが50マイクロ秒程度である、広帯域、低遅延のネットワークを考える。下位のMAC層におけるRTOは、RTTよりも大きな値に設定され、例えば、RTTの2倍の100マイクロ秒に設定される。その一方、1500byteのMACフレームの転送間隔は、1.2マイクロ秒程度(=1500×8bit/10Gbps)である。よって、TCPのFast Retransmitは、60マイクロ秒程度(≒RTT+3×1.2マイクロ秒)で起動する。この場合、下位レイヤでのタイムアウトによるパケット再送よりも早くTCPのFast Retransmitが起動し、パケットP101の再送が重複する。
本発明の1つの目的は、上位レイヤと下位レイヤの双方でパケット再送制御が実行される場合に、同一パケットの再送が重複することを防止する技術を提供することにある。
本発明の1つの観点において、パケット再送制御システムが提供される。そのパケット再送制御システムは、上位レイヤにおいてパケット再送制御を行うネットワーク制御ブロックと、その上位レイヤよりも下位である下位レイヤにおいて、上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うパケット再送制御ブロックと、を備える。ネットワーク制御ブロックは、同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合、パケット再送を行う。パケット再送制御ブロックは、同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われるか否かを判定する。同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われる場合、パケット再送制御ブロックは、下位レイヤにおける同一パケットの再送を禁止する。
本発明の他の観点において、パケット再送制御方法が提供される。そのパケット再送制御方法は、(A)上位レイヤにおいてパケット再送制御を行うことと、(B)その上位レイヤよりも下位である下位レイヤにおいて、上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うことと、を含む。上記(A)上位レイヤにおいてパケット再送制御を行うことは、(A1)同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合に、パケット再送を行うことを含む。上記(B)下位レイヤにおいてパケット再送制御を行うことは、(B1)同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われるか否かを判定することと、(C)同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われる場合、下位レイヤにおける同一パケットの再送を禁止することと、を含む。
本発明の更に他の観点において、パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが提供される。そのパケット再送制御処理は、(A)上位レイヤにおいてパケット再送制御を行うことと、(B)その上位レイヤよりも下位である下位レイヤにおいて、上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うことと、を含む。上記(A)上位レイヤにおいてパケット再送制御を行うことは、(A1)同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合に、パケット再送を行うことを含む。上記(B)下位レイヤにおいてパケット再送制御を行うことは、(B1)同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われるか否かを判定することと、(C)同一パケットの再送が上位レイヤにおいて下位レイヤよりも早く行われる場合、下位レイヤにおける同一パケットの再送を禁止することと、を含む。
本発明によれば、上位レイヤと下位レイヤの双方でパケット再送制御が実行される場合に、同一パケットの再送が重複することを防止することが可能となる。
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。
図1Aは、TCPのFast Retransmitによるパケット再送の一例を示している。 図1Bは、MAC層のような下位レイヤでのタイムアウトよりも早くTCPのFast Retransmitが起動する場合を示している。 図2は、本発明の第1の実施の形態に係るパケット再送制御システムの構成を示すブロック図である。 図3は、第1の実施の形態におけるパケット再送制御ブロックの構成を示すブロック図である。 図4は、第1の実施の形態におけるフロー情報記憶ブロックの一例を示す概念図である。 図5は、第1の実施の形態におけるパケット情報記憶ブロックの一例を示す概念図である。 図6は、第1の実施の形態における再送バッファの一例を示す概念図である。 図7は、第1の実施の形態におけるパケット送信時の処理を示すフローチャートである。 図8は、第1の実施の形態におけるパケット受信時の処理を示すフローチャートである。 図9は、第1の実施の形態におけるパケット解放処理を示すフローチャートである。 図10は、第1の実施の形態におけるタイムアウト発生時の処理を示すフローチャートである。 図11は、本発明の第2の実施の形態におけるパケット受信時の処理を示すフローチャートである。 図12は、第2の実施におけるタイムアウト発生時の処理を示すフローチャートである。 図13は、本発明の第3の実施の形態におけるフロー情報記憶ブロックの一例を示す概念図である。 図14は、第3の実施の形態におけるパケット情報記憶ブロックの一例を示す概念図である。 図15は、第3の実施の形態におけるパケット送信時の処理を示すフローチャートである。 図16は、第3の実施の形態におけるパケット受信時の処理を示すフローチャートである。 図17は、第3の実施の形態におけるパケット解放処理を示すフローチャートである。 図18は、本発明の更に他の実施の形態を示すブロック図である。 図19は、本発明の更に他の実施の形態を示すブロック図である。 図20は、本発明の更に他の実施の形態を示すブロック図である。
添付図面を参照して、本発明の実施の形態を説明する。
1.第1の実施の形態
1−1.構成
図2は、本発明の第1の実施の形態に係るパケット再送制御システムの構成を示すブロック図である。パケット再送制御システムは、ネットワークインタフェース装置1、プログラム処理装置2、及び制御プログラム3を備える。
プログラム処理装置2は、アプリケーションやネットワークプロトコルスタックを処理する。このプログラム処理装置2は、サーバやPCをはじめとするホストのCPU(Central Processing Unit)等により実現される。制御プログラム3は、プログラム処理装置2によって実行されるコンピュータプログラムであり、プログラム処理装置2の動作を制御する。
より詳細には、プログラム処理装置2は、制御プログラム3を実行することにより実現されるアプリケーション処理ブロック20及びネットワーク制御ブロック21を備えている。アプリケーション処理ブロック20は、ネットワーク通信を行うユーザーアプリケーションを処理する。アプリケーション処理ブロック20は、ネットワークデータの送受信の要求をネットワーク制御ブロック21に対して行う。
ネットワーク制御ブロック21は、例えば、ホストのCPUで動作するOS(Operating System)のカーネルプログラムの一部である。ネットワーク制御ブロック21は、TCP層などの上位レイヤにおけるパケット送受信処理、パケット再送制御、及び順序制御を行う。ここで、ネットワーク制御ブロック21は、所定の再送タイムアウトに基づくパケット再送だけでなく、高速再転送(Fast Retransmit)によるパケット再送も行う。すなわち、ネットワーク制御ブロック21は、重複ACKパケットを所定の回数(典型的には3回)受け取った場合、パケット再送を行う。
ネットワークインタフェース装置1は、例えば、サーバの拡張カードやオンボードで搭載されるNIC(Network Interface Card)である。ネットワークインタフェース装置1は、下位レイヤにおけるパケット送受信処理及びパケット再送制御を行う。より詳細には、ネットワークインタフェース装置1は、パケット送受信ブロック11及びパケット再送制御ブロック10を備えている。
パケット送受信ブロック11は、物理層やデータリンク層(MAC)の機能を持ち、パケット再送制御ブロック10から受け取ったパケットをネットワーク(出力回線)へ出力する。また、パケット送受信ブロック11は、ネットワーク(入力回線)からのパケットを受信し、それをパケット再送制御ブロック10へ出力する。このとき、チェックサムに対する巡回冗長検査(CRC:Cyclic Redundancy Check)等によりパケットエラーを検知した場合、パケット送受信ブロック11は、そのパケットエラーをパケット再送制御ブロック10に通知する。
パケット再送制御ブロック10は、ネットワーク制御ブロック21のネットワークプロトコルよりも下位のMAC層において、パケット再送制御を行う。ここで、下位レイヤであるMAC層における再送タイムアウトは、上位レイヤであるTCP層における再送タイムアウトよりも短く設定されている。つまり、パケット再送制御ブロック10は、TCPよりも短い再送タイムアウトでパケット再送制御を行う。更に、パケット再送制御ブロック10は、同一パケットの再送がTCP層においてMAC層よりも早く行われるか否かを判定する。同一パケットの再送がTCP層においてMAC層よりも早く行われる場合、パケット再送制御ブロック10は、MAC層における当該パケットの再送を禁止する。詳細は後述される。
図3は、パケット再送制御ブロック10の構成を示すブロック図である。パケット再送制御ブロック10は、パケット受信ブロック100、制御ブロック101、パケット送信ブロック102、フロー情報記憶ブロック103、パケット情報記憶ブロック104、及び再送バッファ105を備える。
パケット再送制御システムがネットワークにパケットを送信する際、パケット送信ブロック102は、その送信パケットをネットワーク制御ブロック21から受け取る。パケット送信ブロック102は、受け取った送信パケットに、MAC層独自のシーケンス番号等を含む内部ヘッダを付与する。そして、パケット送信ブロック102は、送信パケットをパケット送受信ブロック11に出力すると共に、送信パケットのコピーを制御ブロック101に出力する。また、パケット送信ブロック102は、制御ブロック101から送信パケット(MACにおける再送パケットや制御パケット(ACK、NACK))を受け取る場合もある。その場合、パケット送信ブロック102は、その送信パケットをパケット送受信ブロック11に出力する。
パケット再送制御システムがネットワークからパケットを受信すると、パケット受信ブロック100は、その受信パケットをパケット送受信ブロック11から受け取る。パケット受信ブロック100は、受信パケットの内部ヘッダの情報に基づいて、受信パケットの種別を分析する。パケットの種別としては、MACにおけるACKパケット、データが正常に受信できなかったことを示すNACK(Negative ACKnowledgement)パケット、TCPにおけるACKパケット、等が挙げられる。パケット受信ブロック100は、受信パケットの種別を他の必要な情報と共に、制御ブロック101に通知する。受信パケットがMACにおける制御パケット(ACK、NACK)でなければ、パケット受信ブロック100は、受信パケットから内部ヘッダを取り除いた後、当該受信パケットをネットワーク制御ブロック21に送る。MACにおける制御パケット(ACK、NACK)は、ネットワーク制御ブロック21には送られない。また、パケット送受信ブロック11から受信パケットにエラーがあることを通知された場合、パケット受信ブロック100はその旨を制御ブロック101に通知する。
フロー情報記憶ブロック103は、再送バッファ105に格納されているパケットが属するフローを管理するために用いられる。ここで“フロー”とは、TCPセッションを意味する。具体的には、フロー情報記憶ブロック103には、再送バッファ105に格納されているパケットが属するフロー毎の情報が格納されている。図4は、フロー情報記憶ブロック103の一例を示す概念図である。フロー情報記憶ブロック103に格納されているフロー毎の情報は、フロー識別情報、確認応答済シーケンス番号、重複ACK受信カウンタ、保持パケット数を含んでいる。フロー識別情報は、フロー(TCPセッション)を識別するための情報である。典型的には、フロー識別情報は、上位レイヤのヘッダ情報の一部からなる。例えば、IPヘッダの送信元アドレス、宛先アドレス、及びプロトコル番号、TCPヘッダの送信元ポート番号及び宛先ポート番号等が、フロー識別情報として用いられる。尚、簡単のため、図中では、フロー識別情報は“Flow #100”のように表記されている。確認応答済シーケンス番号は、TCPにおけるACKパケットによって既に確認応答されているシーケンス番号である。重複ACK受信カウンタは、上位のネットワーク制御ブロック21による重複ACKパケットの受信回数である。ここで、重複ACKパケットは、確認応答済シーケンス番号と同一のシーケンス番号を確認応答するACKパケットである。保持パケット数は、再送バッファ105に格納されている当該フローのパケット数である。
パケット情報記憶ブロック104には、再送バッファ105に格納されているパケットを管理するために用いられる。具体的には、パケット情報記憶ブロック104には、再送バッファ105に格納されているパケット毎の情報が格納されている。図5は、パケット情報記憶ブロック104の一例を示す概念図である。パケット情報記憶ブロック104に格納されているパケット毎の情報は、フロー識別情報、タイムアウトカウンタ、下位レイヤのシーケンス番号、上位レイヤのシーケンス番号、及び再送バッファポインタを含んでいる。フロー識別情報は、当該パケットが属するフローの識別情報であり、フロー情報記憶ブロック103におけるフロー識別情報と同じである。タイムアウトカウンタは、MAC層における再送タイムアウトを判定するために用いられるカウント値である。但し、再送タイムアウトの判定手法はカウンタだけに限られず、周知の様々な判定手法が可能である。その判定手法に応じて、タイムアウトカウンタの代わりに他のパラメータ(タイムスタンプ等)が用いられてもよい。下位レイヤのシーケンス番号は、MAC層で独自に割り当てられるシーケンス番号である。上位レイヤのシーケンス番号は、TCPにおけるシーケンス番号である。再送バッファポインタは、当該パケットが格納されている再送バッファ105中のアドレス値等のポインタである。
再送バッファ105は、下位レイヤにおけるパケット再送のために、送出パケットを一時的に格納するために用いられる。図6は、再送バッファ105の一例を示す概念図である。再送バッファ105は、既存の手法を用いて構成される。例えば図6では、バッファが固定長の領域に予め区切られ、パケットの先頭が必ず領域の先頭に来るようにパケットが格納される。この場合、パケット長の情報が必要になる。パケット長の情報は、パケット情報記憶ブロック104に格納されてもよいし、バッファ格納時に当該パケットの先頭に付与されてもよい。
フロー情報記憶ブロック103、パケット情報記憶ブロック104、及び再送バッファ105は、メモリ等の記憶装置で構成される。FPGA(Field−Programmable Gate Array)のような再構成可能なハードウェアデバイスでパケット再送制御ブロック10が実装される場合、そのデバイスに含まれる内部メモリが用いられてもよい。また、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、連想メモリ(CAM:Content Addressable Memory)等が用いられてもよい。
制御ブロック101は、MAC層におけるパケット再送制御を行う。ここで、下位レイヤであるMAC層における再送タイムアウトは、上位レイヤであるTCP層における再送タイムアウトよりも短く設定されている。つまり、制御ブロック101は、TCPよりも短い再送タイムアウトでパケット再送制御を行う。更に、制御ブロック101は、重複ACK受信カウンタ等を参照することによって、同一パケットの再送がTCP層においてMAC層よりも早く行われるか否かを判定する。同一パケットの再送がTCP層においてMAC層よりも早く行われる場合、制御ブロック101は、MAC層における当該パケットの再送を禁止し、再送バッファ105に格納されている当該パケットを解放する。
より詳細には、制御ブロック101は、重複判定ブロック1010及びタイムアウト制御ブロック1011を備えている。
パケット送信時、タイムアウト制御ブロック1011は、パケット送信ブロック102から送信パケットのコピーを受け取り、それを再送バッファ105に格納する。更に、タイムアウト制御ブロック1011は、当該送信パケットが属するフローを識別し、フロー識別情報に基いて、当該フローがフロー情報記憶ブロック103で管理されているかを確認する。当該フローが既に管理されている場合、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の該当エントリの保持パケット数を更新する。当該フローが未だ管理されていない場合、タイムアウト制御ブロック1011は、当該フローに関する新規エントリをフロー情報記憶ブロック103に追加する。更に、タイムアウト制御ブロック1011は、再送バッファ105中の書き込み先のアドレス値等を用いて、当該パケットに関する新規エントリをパケット情報記憶ブロック104に追加する。
パケット受信時、タイムアウト制御ブロック1011及び重複判定ブロック1010は、受信パケットの種別やフロー識別情報等の情報をパケット受信ブロック100から受け取る。
受信パケットがMAC層におけるACKパケットである場合、タイムアウト制御ブロック1011は、そのACKパケットが確認応答するパケットを、再送バッファ105から解放する。更に、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の該当エントリの保持パケット数を更新し、また、パケット情報記憶ブロック104中の該当エントリを削除する。
受信パケットがMAC層におけるNACKパケットである場合、タイムアウト制御ブロック1011は、再送バッファ105から対応するパケットを読み出し、そのパケットをパケット送信ブロック102に送る。更に、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中の当該パケットのエントリ情報を更新する。
受信パケットがMAC層における制御パケット以外である場合、タイムアウト制御ブロック1011は、その受信パケットに対するMAC層におけるACKパケットを生成し、生成したACKパケットをパケット送信ブロック102に送る。
受信パケットがTCP層におけるACKパケットである場合、重複判定ブロック1010は、フロー情報記憶ブロック103中の該当エントリの確認応答済シーケンス番号あるいは/及び重複ACK受信カウンタを更新する。
受信パケットにエラーがあることを通知された場合、タイムアウト制御ブロック1011は、その受信パケットに対するMAC層におけるNACKパケットを生成して、生成したNACKパケットをパケット送信ブロック102に送る。
更に、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中のタイムアウトカウンタを管理し、再送バッファ105に格納されているパケット毎にタイムアウトの判定を行う。あるパケットを送信してからRTOで規定される期間中に、MAC層におけるACKパケット又はNACKパケットが返信されなければ、タイムアウト制御ブロック1011は、当該パケットに関してタイムアウトが発生したと判定し、その旨を重複判定ブロック1010に通知する。
タイムアウト発生の通知を受けると、重複判定ブロック1010は、フロー情報記憶ブロック103中の該当エントリの重複ACK受信カウンタを参照する。そして、重複判定ブロック1010は、MAC層における当該パケットの再送がTCP層における同一パケットの再送と重複するか否かを判定する。具体的には、重複ACK受信カウンタが“所定の回数”以上である場合、重複判定ブロック1010は、「パケット再送が重複する」と判定する。ここで、上記“所定の回数”は、TCP層におけるFast Retransmitを発動させる重複ACKパケットの受信回数であり、典型的には3回である。一方、重複ACK受信カウンタが上記所定の回数未満の場合、重複判定ブロック1010は、「パケット再送は重複しない」と判定する。そして、重複判定ブロック1010は、判定結果をタイムアウト制御ブロック1011に通知する。
タイムアウト制御ブロック1011は、重複判定ブロック1010から判定結果を受け取る。パケット再送は重複しないと判定された場合、タイムアウト制御ブロック1011は、当該パケットの再送を行う。すなわち、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中の該当エントリの再送バッファポインタを参照して、再送バッファ105に格納されている当該パケットを読み出し、そのパケットをパケット送信ブロック102に送る。
一方、パケット再送が重複すると判定された場合、タイムアウト制御ブロック1011は、MAC層における当該パケットの再送を中止し、再送バッファ105に格納されている当該パケットを解放する。更に、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の該当エントリの保持パケット数を更新し、また、パケット情報記憶ブロック104中の該当エントリを削除する。
1−2.処理フロー
1−2−1.パケット送信時の処理
図7は、本実施の形態におけるパケット送信時の処理を示すフローチャートである。アプリケーションがパケットをネットワークに送信する際、その送信パケットは、アプリケーション処理ブロック20からネットワーク制御ブロック21を経由してパケット再送制御ブロック10に送られる。パケット再送制御ブロック10のパケット送信ブロック102は、その送信パケットを受信する(ステップA1)。
パケット送信ブロック102は、受け取った送信パケットに、MAC層における独自の内部ヘッダを付与する。その内部ヘッダは、MAC層における再送制御に必要な独自のシーケンス番号等を含み、それら情報は、タイムアウト制御ブロック1011から指示される。そして、パケット送信ブロック102は、当該送信パケットをパケット送受信ブロック11に送る。パケット送受信ブロック11は、当該送信パケットをネットワークに送信する(ステップA2)。
また、このときの送信パケットは、ネットワーク制御ブロック21から受け取ったものである(ステップA3;Yes)。この場合、パケット送信ブロック102は、送信パケットのコピーを制御ブロック101に送る(ステップA4)。制御ブロック101のタイムアウト制御ブロック1011は、パケット送信ブロック102から送信パケットのコピーを受け取り、それを再送バッファ105に格納する。更に、タイムアウト制御ブロック1011は、当該送信パケットのフロー識別情報や再送バッファ105中の書き込み先のアドレス値等を用いて、当該パケットに関する新規エントリをパケット情報記憶ブロック104に追加する(ステップA5)。
更に、タイムアウト制御ブロック1011は、当該送信パケットが属するフローに関するエントリがフロー情報記憶ブロック103に登録済みかどうかを確認する(ステップA6)。登録済みの場合(ステップA6;Yes)、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の該当エントリの保持パケット数を1だけ増加させる(ステップA7)。一方、未登録の場合(ステップA6;No)、タイムアウト制御ブロック1011は、当該フローに関する新規エントリをフロー情報記憶ブロック103に追加する(ステップA8)。
尚、後述される通り、MAC層における制御パケット(ACK、NACK)が送信される場合や、パケット再送が行われる場合もある。これらの場合、パケット送信ブロック102は、タイムアウト制御ブロック1011からパケットを受け取る(ステップA1)。パケット送信ブロック102は、受け取ったパケットをパケット送受信ブロック11に送り、パケット送受信ブロック11は、受け取ったパケットをネットワークに送信する(ステップA2)。このときの送信パケットは、ネットワーク制御ブロック21から受け取ったものではない(ステップA3;No)。この場合、パケット送信処理はそのまま終了する。
1−2−2.パケット受信時の処理
図8は、本実施の形態におけるパケット受信時の処理を示すフローチャートである。パケット送受信ブロック11は、ネットワークからパケットを受信する。パケット送受信ブロック11は、受信パケットのエラーチェックを行い、受信パケットにエラーが含まれるか否かを示すエラー検出信号と共に、受信パケットをパケット再送制御ブロック10に出力する。パケット再送制御ブロック10のパケット受信ブロック100は、その受信パケットとエラー検出信号を受け取る(ステップB1)。
パケット受信ブロック100は、エラー検出信号を参照し、受信パケットにエラーが含まれているか否かを確認する(ステップB2)。受信パケットにエラーが含まれている場合(ステップB2;Yes)、パケット受信ブロック100は、その旨を制御ブロック101のタイムアウト制御ブロック1011に通知する。タイムアウト制御ブロック1011は、その受信パケットに対するMAC層におけるNACKパケットを生成して、生成したNACKパケットをパケット送信ブロック102に送る(ステップB3)。NACKパケットは、パケット送信ブロック102からパケット送受信ブロック11に送られ、パケット送信元に返信される。
受信パケットにエラーが含まれていない場合(ステップB2;No)、パケット受信ブロック100は、受信パケットの内部ヘッダの情報に基づいて、受信パケットの種別を分析する(ステップB4)。パケットの種別としては、MAC層における制御パケット(ACKパケット、NACKパケット)、TCP層におけるACKパケット、それ以外の通常のデータパケット、等が挙げられる。パケット受信ブロック100は、受信パケットの種別を他の必要な情報と共に、制御ブロック101に通知する。ここで、必要な情報は、受信パケットのフロー識別情報、及びMAC層のシーケンス番号を含む。受信パケットがMAC層における制御パケットである場合、当該必要な情報は更に、当該制御パケットが確認応答又は否定応答しているMAC層のシーケンス番号を含む。受信パケットがTCP層におけるACKパケットである場合、当該必要な情報は更に、当該ACKパケットが確認応答しているシーケンス番号を含む。あるいは、パケット受信ブロック100は、受信パケットのヘッダ情報を抽出して、制御ブロック101に送ってもよい。
制御ブロック101のタイムアウト制御ブロック1011及び重複判定ブロック1010は、受信パケットの種別やフロー識別情報等の情報を受け取る。受信パケットがMAC層におけるACKパケットである場合(ステップB5;Yes)、タイムアウト制御ブロック1011は、そのACKパケットが確認応答しているシーケンス番号を取得する(ステップB6)。タイムアウト制御ブロック1011は、当該MAC層におけるシーケンス番号を示すエントリをパケット情報記憶ブロック104から検索する(ステップB7)。そして、タイムアウト制御ブロック1011は、検索の結果ヒットしたヒットエントリを参照して、パケット解放処理を行う(ステップB8)。
図9は、本実施の形態におけるパケット解放処理(ステップB8)を示すフローチャートである。タイムアウト制御ブロック1011は、ヒットエントリで示される再送バッファポインタを参照して、受信ACKパケットが確認応答しているパケットを再送バッファ105から解放する(ステップC1)。また、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104から当該ヒットエントリを削除する(ステップC2)。
更に、タイムアウト制御ブロック1011は、フロー識別情報に基いて、受信ACKパケットのフローに関するエントリを、フロー情報記憶ブロック103から検索する。そして、タイムアウト制御ブロック1011は、検索の結果ヒットしたヒットエントリ中の保持パケット数を1だけ減少させる(ステップC3)。この結果、保持パケット数が0になった場合(ステップC4;Yes)、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103から当該ヒットエントリを削除する(ステップC5)。それ以外の場合(ステップC4;No)、当該ヒットエントリは残ったままである。以上のようにして、パケット解放処理が行われる。
再度図8を参照して、受信パケットがMAC層におけるNACKパケットである場合(ステップB5;No、ステップB9;Yes)、タイムアウト制御ブロック1011は、そのNACKパケットが否定応答しているシーケンス番号を取得する(ステップB10)。更に、タイムアウト制御ブロック1011は、当該MAC層におけるシーケンス番号を示すエントリをパケット情報記憶ブロック104から検索する。そして、タイムアウト制御ブロック1011は、ヒットエントリで示される再送バッファポインタを参照して、NACKパケットが否定応答しているパケットを再送バッファ105から読み出し、当該パケットをパケット送信ブロック102に送る(ステップB11)。このようにして、当該パケットが再送される。タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中のヒットエントリで示されるタイムアウトカウンタを初期化する(ステップB12)。
受信パケットがMAC層における制御パケット以外である場合(ステップB9;No)、パケット受信ブロック100は、受信パケットから内部ヘッダを取り除いた後、当該受信パケットをネットワーク制御ブロック21に転送する(ステップB13)。また、タイムアウト制御ブロック1011は、その受信パケットに対するMAC層におけるACKパケットを生成し、生成したACKパケットをパケット送信ブロック102に送る(ステップB14)。そのACKパケットは、パケット送信ブロック102からパケット送受信ブロック11に送られ、パケット送信元に返信される。
その一方で、重複判定ブロック1010は、受信パケットがTCP層におけるACKパケットかどうかを調べる(ステップB15)。受信パケットがTCP層におけるACKパケットである場合(ステップB15;Yes)、重複判定ブロック1010は、そのACKパケットが確認応答しているTCPのシーケンス番号(以下、「最新シーケンス番号」と参照される)を取得する(ステップB16)。また、重複判定ブロック1010は、フロー識別情報に基いて、受信ACKパケットのフローに関するエントリを、フロー情報記憶ブロック103から検索する。そして、重複判定ブロック1010は、検索の結果ヒットしたヒットエントリ中の確認応答済シーケンス番号あるいは/及び重複ACK受信カウンタを更新する(ステップB17)。
ステップB17の詳細は、次の通りである。まず、重複判定ブロック1010は、上記ステップB16で得られた最新シーケンス番号を、ヒットエントリで示されている確認応答済シーケンス番号と比較する。最新シーケンス番号が確認応答済シーケンス番号と同じである場合、それは、今回の受信ACKパケットがTCP層における重複ACKパケットであり、その重複ACKパケットがパケット再送制御ブロック10から上位のネットワーク制御ブロック21に転送されることを意味する。従って、重複判定ブロック1010は、ヒットエントリ中の重複ACK受信カウンタを1だけ増加させる(インクリメントする)。一方、最新シーケンス番号が確認応答済シーケンス番号よりも新しい場合、重複判定ブロック1010は、ヒットエントリ中の確認応答済シーケンス番号を最新シーケンス番号で更新し、また、ヒットエントリ中の重複ACK受信カウンタを0に初期化する。尚、最新シーケンス番号が確認応答済シーケンス番号よりも古い場合、それは、パケットの到着順序が入れ替わったことを意味する。この場合、重複判定ブロック1010は、特に何も行わない。
尚、上記ステップB13はパケット受信ブロック100による処理であり、上記ステップB14はタイムアウト制御ブロック1011による処理であるため、これらステップB13とステップB14を並行して行ってもよい。また、上記ステップB14はタイムアウト制御ブロック1011による処理であり、上記ステップB15〜B17は重複判定ブロック1010による処理であるため、ステップB14とステップBB15〜B17を並行して行ってもよい。
1−2−3.タイムアウト発生時の処理
図10は、MAC層においてあるパケットに関してタイムアウトが発生した際の処理を示すフローチャートである。タイムアウトの判定については、当業者にとってよく知られているため、その詳細な説明は省略する。本実施の形態では、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104で管理されているタイムアウトカウンタやタイムスタンプの情報を用いて、再送バッファ105に格納されているパケット毎にタイムアウトの判定を行う。あるパケットに関してタイムアウトが検知された際、パケット情報記憶ブロック104中の当該パケットに関するエントリ(以下、「再送パケットエントリ」と参照される)へのアドレス値は既知となっている。
MAC層においてあるパケット(再送対象パケット)に関してタイムアウトが発生する(ステップD1)。タイムアウト制御ブロック1011は、タイムアウトの発生を、再送パケットエントリへのアドレス値と共に、重複判定ブロック1010に通知する。重複判定ブロック1010は、パケット情報記憶ブロック104中の再送パケットエントリで示されるフロー識別情報及びTCP層のシーケンス番号を取得する(ステップD2)。更に、重複判定ブロック1010は、そのフロー識別情報を示すエントリをフロー情報記憶ブロック103から検索し、ヒットエントリで示される確認応答済シーケンス番号及び重複ACK受信カウンタを取得する(ステップD3)。
重複判定ブロック1010は、上記ステップD2で得られたシーケンス番号と上記ステップD3で得られた確認応答済シーケンス番号とを比較する(ステップD4)。シーケンス番号と確認応答済シーケンス番号が同一ではない場合(ステップD4;No)、当該再送対象パケットは再送すべきものである。従って、重複判定ブロック1010は、「パケット再送」をタイムアウト制御ブロック1011に指示する。
一方、シーケンス番号と確認応答済シーケンス番号が同一である場合(ステップD4;Yes)、重複判定ブロック1010は、フロー情報記憶ブロック103中のヒットエントリで示される重複ACK受信カウンタを参照する(ステップD5)。重複ACK受信カウンタが“所定の回数(典型的には3回)”未満の場合(ステップD5;No)、重複判定ブロック1010は、「パケット再送は重複しない」と判定し、「パケット再送」をタイムアウト制御ブロック1011に指示する。一方、重複ACK受信カウンタが“所定の回数”以上の場合(ステップD5;Yes)、重複判定ブロック1010は、「パケット再送が重複する」と判定し、「パケット再送の中止」をタイムアウト制御ブロック1011に指示する。
「パケット再送の中止」を指示された場合、タイムアウト制御ブロック1011は、MAC層における再送対象パケットの再送を中止する(ステップD6)。そして、タイムアウト制御ブロック1011は、再送対象パケットに対して、図9で示された上述のパケット解放処理(ステップB8)を実施する。
一方、「パケット再送」を指示された場合、タイムアウト制御ブロック1011は、再送対象パケットの再送を行う(ステップD7)。すなわち、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中の再送パケットエントリで示される再送バッファポインタを参照して、再送バッファ105に格納されている再送対象パケットを読み出し、そのパケットをパケット送信ブロック102に送る。また、タイムアウト制御ブロック1011は、再送パケットエントリで示されるタイムアウトカウンタを初期化する(ステップD8)。
1−3.効果
以上に説明されたように、本実施の形態によれば、MAC層におけるタイムアウト発生に応答して、パケット再送制御ブロック10が、再送対象パケットが属するフローに関する重複ACK受信カウンタを参照する。その重複ACK受信カウンタが所定の回数以上である場合、上位のTCP層において、同一パケットに対するFast Retransmitが起動する、あるいは、既に起動していると考えられる。従って、パケット再送制御ブロック10は、MAC層におけるタイムアウトによるパケット再送を中止する。その結果、同一パケットの再送が重複することが防止される。このことは、ネットワーク帯域の浪費の抑制につながる。
また、MAC層におけるパケット再送の実行/中止は、MAC層におけるパケット再送制御ブロック10により決定され、その決定処理に必要な情報(例:重複ACK受信カウンタ)も全てパケット再送制御ブロック10において管理されている。従って、TCP層のような上位レイヤの機能を変更することなく、上記効果を得ることが可能である。
本実施の形態は、例えば、データセンター内のネットワークのように、広帯域、低遅延なネットワーク環境に適用される。
1−4.変形例
上記説明では、MAC層独自の内部ヘッダがパケットに付与されていた。しかしながら、MAC層独自の内部ヘッダがパケットに付与されなくてもよい。TCPヘッダのシーケンス番号等の情報がそのままMAC層の再送制御に利用されてもよい。
上記説明では、MAC層においてACKパケット及びNACKパケットが返信されていた。しかしながら、パケット正常受信時にACKパケットだけが返信されてもよい。
上記説明では、パケット送受信ブロック11に、物理層に加えて、MAC層のようなデータリンク層の機能が備わっている。しかしながら、MAC層のようなデータリンク層の機能は、パケット再送制御ブロック10に備わっていてもよい。その場合、データリンク層の機能は、パケット受信ブロック100、制御ブロック101、パケット送信ブロック102に適宜追加され、パケット送受信ブロック11には、物理層の機能のみが備わる。
上記説明では、パケット再送制御を行う上位レイヤがTCP層であり、パケット再送制御を行う下位レイヤがMAC層であったが、それに限られない。TCPと同様のパケット再送制御機能をもつプロトコルを上位レイヤプロトコルとし、それよりも下位層においてパケット再送制御を行うプロトコルを対象とすることも可能である。
上記説明では、パケット再送の中止判定の基準となる“所定の回数”は3回であったが、それに限られない。所定の回数は、上位レイヤのプロトコル設定に応じて適宜設定・変更することができる。
上位レイヤにて再送制御を持たないUDP(User Datagram Protocol)のような場合、フロー情報記憶ブロック103の確認応答済シーケンス番号や重複ACK受信カウンタ等は、不定値(don’t care)に設定される。
2.第2の実施の形態
第1の実施の形態では、パケット再送制御ブロック10が重複ACK受信カウンタを参照して必要に応じてパケット解放処理を行うトリガは、「MAC層におけるタイムアウト発生」であった。第2の実施の形態では、そのトリガは、「パケット再送制御ブロック10が、TCP層のACKパケットをネットワーク制御ブロック21に転送すること」である。つまり、第2の実施の形態では、上位レイヤのACKパケットが上位レイヤに送られる際に、パケット再送制御ブロック10は重複ACK受信カウンタを参照し、場合によってはパケット解放処理を行う。
第2の実施の形態における構成は、第1の実施の形態における構成(第1−1節、図2〜図6参照)と同様であり、重複する説明は適宜省略される。
パケット送信時の処理は、第1の実施の形態と同じである(第1−2−1節、図7参照)。
図11は、本実施の形態におけるパケット受信時の処理を示すフローチャートである。ステップB1〜B12は、第1の実施の形態と同じである。また、受信パケットがTCP層におけるACKパケットである場合、第1の実施の形態と同じようにステップB13〜B17が実行される。本実施の形態では、ステップB17の後に、更に、次のような処理が実行される。
ステップB17において重複ACK受信カウンタが更新された後、重複判定ブロック1010は、更新後の重複ACK受信カウンタを参照する(ステップD5)。更新後の重複ACK受信カウンタが“所定の回数(典型的には3回)”未満の場合(ステップD5;No)、パケット受信処理はそのまま終了する。
一方、更新後の重複ACK受信カウンタが“所定の回数”以上の場合(ステップD5;Yes)、重複判定ブロック1010は、フロー情報記憶ブロック103中のヒットエントリで示される確認応答済シーケンス番号を取得する。そして、重複判定ブロック1010は、その確認応答済シーケンス番号と同じ「上位レイヤのシーケンス番号」を示すエントリを、パケット情報記憶部ブロック104から検索する。つまり、重複判定ブロック1010は、確認応答済シーケンス番号と同じ「上位レイヤのシーケンス番号」を有するパケットが再送バッファ105に格納されているか否かを調べる(ステップB18)。
そのようなパケットが再送バッファ105に格納されている場合(ステップB18;Yes)、重複判定ブロック1010は、「将来、MAC層におけるタイムアウト発生時に、パケット再送が重複する」と判定する。従って、重複判定ブロック1010は、MAC層における当該パケットの再送を禁止する。具体的には、重複判定ブロック1010は、MAC層における当該パケットの再送が無くなるように、「当該パケットを予め解放すること」をタイムアウト制御ブロック1011に指示する。その指示に応答して、タイムアウト制御ブロック1011は、当該パケットに対して、図9で示された上述のパケット解放処理(ステップB8)を実施する。
一方、そのようなパケットが再送バッファ105に格納されていない場合(ステップB18;No)、パケット再送が重複する恐れは無い。従って、パケット受信処理はそのまま終了する。
図12は、本実施の形態におけるタイムアウト発生時の処理を示すフローチャートである。本実施の形態では、上述の通り、パケット受信時に、必要に応じてパケット解放処理があらかじめ実施されている。従って、MAC層におけるタイムアウト発生時にパケット再送を実行するか中止するかを判定し、パケット解放処理を実施する必要はない。図10で示された第1の実施の形態におけるフローと比較して、ステップD2〜D6及びパケット解放処理(ステップB8)が省略されている。その他のステップD1、D7及びD8は、第1の実施の形態と同じである。
以上に説明されたように、第2の実施の形態によれば、上位レイヤのACKパケットの受信時に、更新後の重複ACK受信カウンタが参照される。その結果、重複ACK受信カウンタが所定の回数(典型的には3回)になっていれば、その時点で、下位レイヤにおいてパケット解放処理が実行される。これによっても、同一パケットの再送が重複することが防止される。このことは、ネットワーク帯域の浪費の抑制につながる。また、第1の実施の形態と同様に、TCP層のような上位レイヤの機能を変更する必要はない。
MAC層におけるタイムアウトが発生する前にTCP層のFast Retransmitが起動した場合、そのFast Retransmitによる再送パケットも、再送バッファ105に格納される。既出の第1の実施の形態の場合、MAC層におけるタイムアウトが発生する前なので、その再送パケットと同じパケットが再送バッファ105に既に格納されており、結果として、同じ2個のパケットが再送バッファ105に格納されることになる。このことは、再送バッファ105の非効率な使用を意味する。一方、第2の実施の形態の場合、重複ACK受信カウンタが3回になった時点で、すなわち、TCP層のFast Retransmitが起動する時点で、既に格納されている同一パケットは解放される。従って、再送バッファ105を有効に活用することができる。
第1の実施の形態で説明されたものと同様な変形例も可能である。
3.第3の実施の形態
3−1.構成
第3の実施の形態では、フロー情報記憶ブロック103とパケット情報記憶ブロック104の構成が、既出の実施の形態と異なる。既出の実施の形態と重複する説明は適宜省略される。
図13は、第3の実施の形態におけるフロー情報記憶ブロック103の一例を示す概念図である。図13に示されるように、フロー情報記憶ブロック103中の各エントリは、既出の図4で示された情報に加えて、「先頭パケットへのポインタ」と「最後尾パケットへのポインタ」を含んでいる。先頭パケットは、再送バッファ105に格納されている該当フローのパケットのうち、最も早く格納されたパケットである。つまり、先頭パケットは、該当フローのパケットのうち、タイムアウトが最も早く起こり得るパケットである。「先頭パケットへのポインタ」は、パケット情報記憶ブロック104中の当該先頭パケットに関するパケットエントリへのポインタ(アドレス値等)である。一方、最後尾パケットは、再送バッファ105に格納されている該当フローのパケットのうち、最も遅く格納されたパケットである。つまり、最後尾パケットは、該当フローのパケットのうち、タイムアウトが最も遅く起こり得るパケットである。「最後尾パケットへのポインタ」は、パケット情報記憶ブロック104中の当該最後尾パケットに関するパケットエントリへのポインタ(アドレス値等)である。
図14は、第3の実施の形態におけるパケット情報記憶ブロック104の一例を示す概念図である。図14に示されるように、パケット情報記憶ブロック104中の各エントリは、既出の図5で示された情報に加えて、「双方向リスト作成ポインタ」を含んでいる。双方向リスト作成ポインタは、当該パケットと同一のフローに属するパケットに対し、先頭パケットから順に双方向リストを作成するためのポインタであり、パケット情報記憶ブロック104中の各パケットエントリへのポインタ(アドレス値等)である。先頭パケットから順にした双方向リストとは、上記先頭パケットから早く格納された順に並べた双方向リストを意味する。図14では、双方向リスト作成ポインタは、(<双方向リストの前のパケットに関するパケットエントリへのポインタ>,<双方向リストの次のパケットに関するパケットエントリへのポインタ>)のように表記されている。
3−2.処理フロー
3−2−1.パケット送信時の処理
図15は、本実施の形態におけるパケット送信時の処理を示すフローチャートである。ステップA1〜A8は、第1の実施の形態と同じである(第1−2−1節、図7参照)。上述の通り、ステップA5において、あるフローに属する送信パケットが、再送バッファ105に新たに格納され、また、その送信パケットに関する新規パケットエントリがパケット情報記憶ブロック104に追加される。また、ステップA7あるいはA8において、フロー情報記憶ブロック103中の該当フローに関するフローエントリが、更新あるいは新規作成される。その後、更に、次のような処理が実行される。
タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の該当フローに関するフローエントリを参照し、当該フローエントリで示されている「最後尾パケットへのポインタ」を取得する(ステップA9)。
次に、タイムアウト制御ブロック1011は、パケット情報記憶ブロック104中の双方向リスト作成ポインタを更新する(ステップA10)。具体的には、タイムアウト制御ブロック1011は、送信パケットに関する新規パケットエントリの双方向リスト作成ポインタを、(<ステップA9で得られた「最後尾パケットへのポインタ」>,<NULL>)に設定する。また、タイムアウト制御ブロック1011は、ステップA9で得られた最後尾パケットに関するエントリの双方向リスト作成ポインタを、(<前回と同じもの>,<送信パケットに関する新規パケットエントリへのポインタ>)に変更する。
その後、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の当該フローエントリで示されている「最後尾パケットへのポインタ」を更新する(ステップA11)。具体的には、「最後尾パケットへのポインタ」を「送信パケットに関する新規パケットエントリへのポインタ」に変更する。
3−2−2.パケット受信時の処理
図16は、本実施の形態におけるパケット受信時の処理を示すフローチャートである。ステップB1〜B12は、第1の実施の形態と同じである。また、受信パケットがTCP層におけるACKパケットである場合、第1の実施の形態と同じようにステップB13〜B17が実行される。本実施の形態では、ステップB17の後に、更に、次のような処理が実行される。
重複判定ブロック1010は、フロー情報記憶ブロック103中のヒットエントリで示される「先頭パケットへのポインタ」を取得する。そして、重複判定ブロック1010は、その「先頭パケットへのポインタ」を用い、パケット情報記憶ブロック104中の当該先頭パケットに関するパケットエントリを読み出す(ステップB20)。
重複判定ブロック1010は、読み出したパケットエントリに対応するパケットが既に確認応答されているかどうか調べる(ステップB21)。具体的には、重複判定ブロック1010は、読み出したパケットエントリで示される「上位レイヤのシーケンス番号」と、フロー情報記憶ブロック103中のヒットエントリで示される「確認応答済シーケンス番号」とを比較し、それにより、確認応答済みか否かを調べる。当該パケットが既に確認応答されている場合(ステップB21;Yes)、当該パケットに対するパケット解放処理(ステップB19)が行われる。
一方、当該パケットがまだ確認応答されていない場合(ステップB21;No)、重複判定ブロック1010は、当該パケットの「上位レイヤのシーケンス番号」が「確認応答済シーケンス番号」と同じかどうか調べる(ステップD4)。シーケンス番号と確認応答済シーケンス番号が同一ではない場合(ステップD4;No)、処理はステップB22に進む。一方、シーケンス番号と確認応答済シーケンス番号が同一である場合(ステップD4;Yes)、重複判定ブロック1010は、フロー情報記憶ブロック103中のヒットエントリで示される重複ACK受信カウンタを参照する(ステップD5)。重複ACK受信カウンタが“所定の回数(典型的には3回)”未満の場合(ステップD5;No)、処理はステップB22に進む。重複ACK受信カウンタが“所定の回数”以上の場合(ステップD5;Yes)、当該パケットに対するパケット解放処理(ステップB19)が行われる。
ステップB22では、重複判定ブロック1010は、パケット情報記憶ブロック103から読み出したパケットエントリ中の<双方向リストの次のパケットに関するパケットエントリへのポインタ>を参照する。そのポインタが<NULL>の場合、双方向リストに次パケットは存在しない(ステップB22;No)。この場合、パケット受信処理は終了する。それ以外の場合、双方向リストに次パケットは存在する(ステップB22;Yes)。この場合、重複判定ブロック1010は、そのポインタを用い、パケット情報記憶ブロック104中の当該次パケットに関するパケットエントリを読み出す。そして、処理は上記ステップB21に戻り、読み出したパケットエントリに関して同様の処理が繰り返される。
このように、本実施の形態によれば、受信パケットがTCP層におけるACKパケットである場合、当該フローの先頭パケットから最後尾パケットまで順番に、パケット解放処理の適否が判定される。パケット解放処理が適切であれば、当該パケットのパケット解放処理が実施される(ステップB19)。
図17は、本実施の形態におけるパケット解放処理(ステップB19)を示すフローチャートである。既出の図9で示されたパケット解放処理(ステップB8)と比較して、本実施の形態では、ステップC1とC2の間にステップC6が追加され、ステップC3とC4の間にステップC7が追加されている。その他は既出の実施の形態と同じである。
ステップC6では、解放したパケットに関するパケットエントリのパケット情報記憶ブロック104からの削除前に、双方向リストが更新される。具体的には、タイムアウト制御ブロック1011は、当該パケットエントリの双方向リストポインタを参照して、前のパケットに関するパケットエントリを読み出す。そして、タイムアウト制御ブロック1011は、前のパケットに関するパケットエントリ中の双方向リスト作成ポインタを、(<前回と同じもの>,<当該パケットエントリの双方向リストポインタの次パケットへのポインタ>)に変更する。また、タイムアウト制御ブロック1011は、当該パケットエントリの双方向リストポインタを参照して、次のパケットに関するパケットエントリを読み出す。そして、タイムアウト制御ブロック1011は、次のパケットに関するパケットエントリ中の双方向リスト作成ポインタを、(<当該パケットエントリの双方向リストポインタの前パケットへのポインタ>,<前回と同じもの>)に変更する。
ステップC7では、必要に応じて、フロー情報記憶ブロック103中の「先頭パケットへのポインタ」あるいは「最後尾パケットへのポインタ」が更新される。具体的には、解放したパケットが先頭パケットであった場合、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の「先頭パケットへのポインタ」を、ステップC6で得られた<当該パケットエントリの双方向リストポインタの次パケットへのポインタ>に更新する。また、解放したパケットが最後尾パケットであった場合、タイムアウト制御ブロック1011は、フロー情報記憶ブロック103中の「最後尾パケットへのポインタ」を、ステップC6で得られた<当該パケットエントリの双方向リストポインタの前パケットへのポインタ>に更新する。
3−2−3.タイムアウト発生時の処理
タイムアウト発生時の処理は、第2の実施の形態と同じである(図12参照)。
3−3.効果
第3の実施の形態によれば、第2の実施の形態と同様の処理が実現され、第2の実施の形態と同じ効果が得られる。更に、次の効果も得られる。
MAC層における制御パケット(ACK,NACK)が、何らかの理由により、ネットワーク中でロスした場合を考える。この場合、受信端がパケットを受信しているにもかかわらず、送信端がMAC層における制御パケットを受信できず、その結果、タイムアウトによるパケット再送が発生してしまう恐れがある。本実施の形態では、TCPのACKパケットが返信されたときに、TCPにおいて既に確認応答されているパケットの解放も行われる。つまり、TCPにおける確認応答が確認できた時点で、当該パケットは再送バッファ105から解放される。従って、再送バッファ105をより効率的に利用することができる。
3−4.変形例
第1の実施の形態で説明されたものと同様な変形例も可能である。
上記説明では、フロー情報記憶ブロック103では、双方向リストの先頭パケット及び最後尾パケットの両方が管理されている。しかしながら、先頭パケットと最後尾パケットのいずれか一方だけが管理されてもよい。パケットエントリにアクセスする際には、先頭あるいは最後尾から双方向リストを辿っていく。
また、図16において「ステップD4;No」あるいは「ステップD5;No」の場合、ステップB22に進まず、パケット受信処理は終了してもよい。これは、まだ確認応答されていないパケット以降のパケットも確認応答されていない可能性が高いためである。この場合、処理を高速化することができる。
4.その他の構成例
図18は、パケット再送制御システムの他の構成例を示している。図18において、パケット再送制御システムは、ネットワークインタフェース装置4、プログラム処理装置5、及び制御プログラム6を備える。ネットワークインタフェース装置4は、例えば、サーバの拡張カードやオンボードで搭載されるNICである。プログラム処理装置5は、サーバやPCをはじめとするホストのCPU等により実現される。本例では、ネットワークインタフェース装置4が、パケット送受信ブロック11を備え、プログラム処理装置5が、パケット再送制御ブロック10、ネットワーク制御ブロック21及びアプリケーション処理ブロック20を備えている。各ブロックの機能は、既出の実施の形態と同じである。
制御プログラム6は、プログラム処理装置5によって実行されるコンピュータプログラムであり、プログラム処理装置5の動作を制御する。プログラム処理装置5のパケット再送制御ブロック10、ネットワーク制御ブロック21及びアプリケーション処理ブロック20は、プログラム処理装置5が制御プログラム6(パケット再送制御プログラム)を実行することにより実現される。制御プログラム6(パケット再送制御プログラム)は、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
図19は、パケット再送制御システムの更に他の構成例を示している。図19において、パケット再送制御システムは、ネットワーク装置7を備える。本例では、ネットワーク装置7が、パケット送受信ブロック11、パケット再送制御ブロック10、ネットワーク制御ブロック21及びアプリケーション処理ブロック20を備えている。各ブロックの機能は、既出の実施の形態と同じである。各ブロックは、ネットワーク装置7のハードウェアにより実現される。
図20は、パケット再送制御システムの更に他の構成例を示している。図20において、パケット再送制御システムは、ネットワークインタフェース装置8、プログラム処理装置9、及び制御プログラム12を備える。ネットワークインタフェース装置8は、例えば、サーバの拡張カードやオンボードで搭載されるNICである。プログラム処理装置9は、サーバやPCをはじめとするホストのCPU等により実現される。本例では、ネットワークインタフェース装置8が、パケット送受信ブロック11、パケット再送制御ブロック10及びネットワーク制御ブロック21を備え、プログラム処理装置5が、アプリケーション処理ブロック20を備えている。各ブロックの機能は、既出の実施の形態と同じである。
制御プログラム12は、プログラム処理装置9によって実行されるコンピュータプログラムであり、プログラム処理装置9の動作を制御する。プログラム処理装置9のアプリケーション処理ブロック20は、プログラム処理装置9が制御プログラム12を実行することにより実現される。ネットワークインタフェース装置8のパケット送受信ブロック11、パケット再送制御ブロック10及びネットワーク制御ブロック21は、ハードウェアにより実現される。
図18〜図20で示された各構成は、既出の第1〜第3の実施の形態のいずれに適用されてもよい。このような構成によっても、既出の実施の形態と同じ効果が得られる。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
本出願は、2009年12月14日に出願された日本国特許出願2009−283353を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (8)

  1. 上位レイヤにおいてパケット再送制御を行うネットワーク制御ブロックと、
    前記上位レイヤよりも下位である下位レイヤにおいて、前記上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うパケット再送制御ブロックと
    を備え、
    前記ネットワーク制御ブロックは、同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合、パケット再送を行い、
    前記パケット再送制御ブロックは、同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われるか否かを判定し、
    前記同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われる場合、前記パケット再送制御ブロックは、前記下位レイヤにおける前記同一パケットの再送を禁止し、
    前記パケット再送制御ブロックは、
    パケット再送用のパケットが格納される再送バッファと、
    制御ブロックと、
    情報記憶ブロックと
    を備え、
    前記情報記憶ブロックに格納されている情報は、前記ネットワーク制御ブロックによる前記重複確認応答パケットの受信回数である重複受信回数を含み、
    前記パケット再送制御ブロックから前記ネットワーク制御ブロックに転送されるパケットが前記重複確認応答パケットである場合、前記制御ブロックは、前記重複受信回数をインクリメントし、
    前記制御ブロックは、所定のトリガに応答して前記重複受信回数を参照し、
    前記重複受信回数が前記所定の回数以上の場合、前記制御ブロックは、前記下位レイヤにおける前記同一パケットの再送を行わず、前記再送バッファに格納されている前記同一パケットを解放する
    パケット再送制御システム。
  2. 請求項に記載のパケット再送制御システムであって、
    前記情報記憶ブロックに格納されている前記情報は、更に、前記上位レイヤにおいて確認応答済みのシーケンス番号である確認応答済シーケンス番号を含み、
    前記パケット再送制御ブロックが前記上位レイヤにおける確認応答パケットを前記ネットワーク制御ブロックに転送する場合、前記制御ブロックは、前記転送される確認応答パケットが確認応答しているシーケンス番号である最新シーケンス番号を、前記確認応答済シーケンス番号と比較し、
    前記最新シーケンス番号が前記確認応答済シーケンス番号と同じである場合、前記制御ブロックは、前記転送される確認応答パケットが前記重複確認応答パケットであると判定し、前記重複受信回数をインクリメントし、
    前記最新シーケンス番号が前記確認応答済シーケンス番号よりも新しい場合、前記制御ブロックは、前記確認応答済シーケンス番号を前記最新シーケンス番号で更新し、また、前記重複受信回数を初期化する
    パケット再送制御システム。
  3. 請求項2に記載のパケット再送制御システムであって、
    前記所定のトリガは、前記下位レイヤにおいて前記同一パケットに関する再送タイムアウトが発生することであり、
    前記下位レイヤにおいて前記同一パケットに関する再送タイムアウトが発生した場合、前記制御ブロックは、前記重複受信回数を参照する
    パケット再送制御システム。
  4. 請求項に記載のパケット再送制御システムであって、
    前記重複受信回数が前記所定の回数未満の場合、前記制御ブロックは、前記下位レイヤにおける前記同一パケットの再送を行う
    パケット再送制御システム。
  5. 請求項に記載のパケット再送制御システムであって、
    前記所定のトリガは、前記パケット再送制御ブロックが前記上位レイヤにおける確認応答パケットを前記ネットワーク制御ブロックに転送することであり、
    前記上位レイヤにおける確認応答パケットが前記ネットワーク制御ブロックに転送され、前記重複受信回数が更新された後、前記制御ブロックは、前記重複受信回数を参照する
    パケット再送制御システム。
  6. 請求項に記載のパケット再送制御システムであって、
    前記下位レイヤにおいて前記同一パケットに関する再送タイムアウトが発生した場合、前記制御ブロックは、前記下位レイヤにおける前記同一パケットの再送を行う
    パケット再送制御システム。
  7. ネットワーク制御ブロックが、上位レイヤにおいてパケット再送制御を行うことと、
    パケット再送制御ブロックが、前記上位レイヤよりも下位である下位レイヤにおいて、前記上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うことと
    を含み、
    前記上位レイヤにおいてパケット再送制御を行うことは、同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合に、パケット再送を行うことを含み、
    前記下位レイヤにおいてパケット再送制御を行うことは、
    同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われるか否かを判定することと、
    前記同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われる場合、前記下位レイヤにおける前記同一パケットの再送を禁止することと
    を含み、
    前記パケット再送制御ブロックは、
    パケット再送用のパケットが格納される再送バッファと、
    制御ブロックと、
    情報記憶ブロックと
    を備え、
    前記情報記憶ブロックに格納されている情報は、前記ネットワーク制御ブロックによる前記重複確認応答パケットの受信回数である重複受信回数を含み、
    前記下位レイヤにおいてパケット再送制御を行うことは、
    前記パケット再送制御ブロックから前記ネットワーク制御ブロックに転送されるパケットが前記重複確認応答パケットである場合、前記制御ブロックが、前記重複受信回数をインクリメントすることと、
    前記制御ブロックが、所定のトリガに応答して前記重複受信回数を参照することと、
    前記重複受信回数が前記所定の回数以上の場合、前記制御ブロックが、前記下位レイヤにおける前記同一パケットの再送を行わず、前記再送バッファに格納されている前記同一パケットを解放することと
    を含む
    パケット再送制御方法。
  8. パケット再送制御処理をコンピュータに実行させるパケット再送制御プログラムが記録された記録媒体であって、
    前記パケット再送制御処理は、
    ネットワーク制御ブロックが、上位レイヤにおいてパケット再送制御を行うことと、
    パケット再送制御ブロックが、前記上位レイヤよりも下位である下位レイヤにおいて、前記上位レイヤよりも短い再送タイムアウトでパケット再送制御を行うことと
    を含み、
    前記上位レイヤにおいてパケット再送制御を行うことは、同一のシーケンス番号を通知する確認応答パケットである重複確認応答パケットを所定の回数受け取った場合に、パケット再送を行うことを含み、
    前記下位レイヤにおいてパケット再送制御を行うことは、
    同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われるか否かを判定することと、
    前記同一パケットの再送が前記上位レイヤにおいて前記下位レイヤよりも早く行われる場合、前記下位レイヤにおける前記同一パケットの再送を禁止することと
    を含み、
    前記パケット再送制御ブロックは、
    パケット再送用のパケットが格納される再送バッファと、
    制御ブロックと、
    情報記憶ブロックと
    を備え、
    前記情報記憶ブロックに格納されている情報は、前記ネットワーク制御ブロックによる前記重複確認応答パケットの受信回数である重複受信回数を含み、
    前記下位レイヤにおいてパケット再送制御を行うことは、
    前記パケット再送制御ブロックから前記ネットワーク制御ブロックに転送されるパケットが前記重複確認応答パケットである場合、前記制御ブロックが、前記重複受信回数をインクリメントすることと、
    前記制御ブロックが、所定のトリガに応答して前記重複受信回数を参照することと、
    前記重複受信回数が前記所定の回数以上の場合、前記制御ブロックが、前記下位レイヤにおける前記同一パケットの再送を行わず、前記再送バッファに格納されている前記同一パケットを解放することと
    を含む
    記録媒体。
JP2011546071A 2009-12-14 2010-12-08 パケット再送制御システム、方法、及びプログラム Expired - Fee Related JP5585591B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011546071A JP5585591B2 (ja) 2009-12-14 2010-12-08 パケット再送制御システム、方法、及びプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009283353 2009-12-14
JP2009283353 2009-12-14
PCT/JP2010/071996 WO2011074454A1 (ja) 2009-12-14 2010-12-08 パケット再送制御システム、方法、及びプログラム
JP2011546071A JP5585591B2 (ja) 2009-12-14 2010-12-08 パケット再送制御システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2011074454A1 JPWO2011074454A1 (ja) 2013-04-25
JP5585591B2 true JP5585591B2 (ja) 2014-09-10

Family

ID=44167211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011546071A Expired - Fee Related JP5585591B2 (ja) 2009-12-14 2010-12-08 パケット再送制御システム、方法、及びプログラム

Country Status (3)

Country Link
US (1) US8681618B2 (ja)
JP (1) JP5585591B2 (ja)
WO (1) WO2011074454A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130101598A (ko) * 2012-01-27 2013-09-16 한국전자통신연구원 중복응답 패킷 식별을 위한 패킷 처리장치 및 그 방법
JP6136830B2 (ja) * 2013-10-04 2017-05-31 富士通株式会社 干渉源の位置推定装置,位置推定方法及びプログラム
US9240939B2 (en) * 2013-10-22 2016-01-19 Cisco Technology, Inc. Detecting packet loss and retransmission in a network environment
WO2015067823A1 (en) * 2013-11-11 2015-05-14 Telefonaktiebolaget L M Ericsson (Publ) Discarding a duplicate protocol data unit associated with a data transmission via a first signaling radio bearer or a second signaling radio bearer
US10320711B2 (en) * 2014-01-31 2019-06-11 Signify Holding B.V. Real-time wireless multicast router
US10671721B1 (en) * 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10616266B1 (en) 2016-03-25 2020-04-07 Fireeye, Inc. Distributed malware detection system and submission workflow thereof
CN112204934B (zh) 2018-05-21 2023-10-17 三菱电机株式会社 通信装置、通信方法以及计算机可读取记录介质
CN111082898B (zh) 2018-10-19 2022-08-26 华为技术有限公司 一种报文处理方法和装置
WO2024039793A1 (en) * 2022-08-19 2024-02-22 Tesla, Inc. Transport protocol for ethernet

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09116597A (ja) * 1995-10-16 1997-05-02 Fujitsu Ltd ディジタル移動通信端末装置
JPH1146217A (ja) * 1997-07-28 1999-02-16 Nippon Telegr & Teleph Corp <Ntt> 無線パケット再送方法
JPH11177536A (ja) * 1997-12-08 1999-07-02 Mitsubishi Electric Corp 無線データリンク層の誤り制御方式
JP2004080413A (ja) * 2002-08-19 2004-03-11 Advanced Telecommunication Research Institute International 通信システム、通信装置及び通信方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8111698B2 (en) * 2005-03-31 2012-02-07 Alcatel Lucent Method of performing a layer operation in a communications network
WO2007043373A1 (ja) * 2005-10-03 2007-04-19 Matsushita Electric Industrial Co., Ltd. 通信装置
JP4760306B2 (ja) 2005-10-31 2011-08-31 ソニー株式会社 通信装置およびデータ削除方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09116597A (ja) * 1995-10-16 1997-05-02 Fujitsu Ltd ディジタル移動通信端末装置
JPH1146217A (ja) * 1997-07-28 1999-02-16 Nippon Telegr & Teleph Corp <Ntt> 無線パケット再送方法
JPH11177536A (ja) * 1997-12-08 1999-07-02 Mitsubishi Electric Corp 無線データリンク層の誤り制御方式
JP2004080413A (ja) * 2002-08-19 2004-03-11 Advanced Telecommunication Research Institute International 通信システム、通信装置及び通信方法

Also Published As

Publication number Publication date
JPWO2011074454A1 (ja) 2013-04-25
US8681618B2 (en) 2014-03-25
WO2011074454A1 (ja) 2011-06-23
US20110280240A1 (en) 2011-11-17

Similar Documents

Publication Publication Date Title
JP5585591B2 (ja) パケット再送制御システム、方法、及びプログラム
US10430374B2 (en) Selective acknowledgement of RDMA packets
CN104025525B (zh) 用于发送分组的方法和设备以及交换机装置
US6473425B1 (en) Mechanism for dispatching packets via a telecommunications network
US7596628B2 (en) Method and system for transparent TCP offload (TTO) with a user space library
US7580406B2 (en) Remote direct memory access segment generation by a network controller
US8416768B2 (en) Method and system for transparent TCP offload with best effort direct placement of incoming traffic
JP4504977B2 (ja) オフロードユニットを使用したtcp接続のためのデータ処理
US20050080928A1 (en) Method, system, and program for managing memory for data transmission through a network
US7496038B2 (en) Method for faster detection and retransmission of lost TCP segments
US9413788B1 (en) TCP offload send optimization
JP2004297742A (ja) 通信装置、通信制御方法及びプログラム
JP2002152308A (ja) データ通信システム、その通信方法及びその通信プログラムを記録した記録媒体
US20090183057A1 (en) OFFLOADING iSCSI WITHOUT TOE
JP2009533960A (ja) インターネットワーキングプロトコルを通じてのデータグラム破損を解決する方法
WO2023040949A1 (zh) 网络接口卡、消息发送方法和存储装置
US20200220952A1 (en) System and method for accelerating iscsi command processing
US11336297B2 (en) DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
US10461892B2 (en) Low latency communications
US11381505B2 (en) Acknowledgment storm detection
US20050286527A1 (en) TCP segment re-ordering in a high-speed TOE device
US7554917B1 (en) TCP retransmission and exception processing in high speed, low memory hardware devices
KR102337119B1 (ko) 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드
US20170265103A1 (en) Communication device, communication method, and non-transitory computer readable medium
Gomez et al. RFC 9006: TCP Usage Guidance in the Internet of Things (IoT)

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140707

R150 Certificate of patent or registration of utility model

Ref document number: 5585591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees