JP5880551B2 - 再送制御システム及び再送制御方法 - Google Patents

再送制御システム及び再送制御方法 Download PDF

Info

Publication number
JP5880551B2
JP5880551B2 JP2013516870A JP2013516870A JP5880551B2 JP 5880551 B2 JP5880551 B2 JP 5880551B2 JP 2013516870 A JP2013516870 A JP 2013516870A JP 2013516870 A JP2013516870 A JP 2013516870A JP 5880551 B2 JP5880551 B2 JP 5880551B2
Authority
JP
Japan
Prior art keywords
transfer
packet
data
retransmission
command
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
JP2013516870A
Other languages
English (en)
Other versions
JP2014515195A (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 JP2013516870A priority Critical patent/JP5880551B2/ja
Publication of JP2014515195A publication Critical patent/JP2014515195A/ja
Application granted granted Critical
Publication of JP5880551B2 publication Critical patent/JP5880551B2/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
    • 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
    • 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/12Protocol engines
    • 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

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)に関する。
パケット通信ネットワークでは、伝送中のパケットの廃棄や破壊が発生する可能性がある。一般的に、廃棄や破壊によるパケットの消失は、アプリケーション層あるいはトランスポート層で動作するプロトコルによって検知される。そして、そのようなプロトコルの制御により、消失したパケットの再送(retransmission)が行われ、送信されるべきデータの完全性が保証される。
具体的には、送信装置は受信装置にパケットを送信し、受信装置はパケットの受信を契機に確認応答(ACK:ACKnowledgement)パケットを送信装置に返信する。このACKパケットの受信をもって、送信装置は、送出パケットが受信装置に無事到達したことを認識する。一方、送信装置と受信装置との間のネットワーク上でパケットが消失した場合、送信装置は、当該パケットに応答するACKパケットを受け取らない。送信装置は、パケット送出後、所定の待ち時間以内にACKパケットを受け取らない場合、当該パケットを受信装置に再送する。尚、上記所定の待ち時間は、「再送タイムアウト(RTO:Retransmission Time Out)」と呼ばれている。また、このようなパケット再送制御を実施する送信装置は、ACKパケットを受け取るまで送出パケットを一時的に保管するための記憶領域を備えており、この記憶領域は、以下「再送バッファ」と参照される。
インターネットで用いられるTCP(Transmission Control Protocol)は、このようなパケット再送制御を行う代表的なトランスポート層のプロトコルである。
近年、データセンタなど、特定のシステムのネットワークに対して、TCPよりも高速に再送を行うための技術が提案されている。その理由は、次の通りである。データセンタのような環境では、数10μs〜数100μsのオーダでパケットが相手に届く。しかしながら、TCPの場合の再送間隔は数10ms〜数100msのオーダであり、通信遅延と比較して極めて大きい。データセンタ等における通信効率を向上させるためには、TCPよりも高速にパケット再送を行い、パケット再送までの待ち時間を減少させることが有効なのである。
そのような技術の例として、非特許文献1に示されるR2D2(Rapid and Reliable Data Data Delivery)が知られている。このR2D2は、PC(Personal Computer)やサーバに搭載されるネットワークインタフェースカード(NIC)に、転送済みのデータをバッファリングし、TCPよりも短い間隔でデータの再送を行う。
また、TCP等の通信処理機能をNICに搭載することにより通信性能を向上させる技術が、商用のNICに導入されてきている。そのような技術の例として、TOE(TCP Offload Engine)が挙げられる。
上記に関連する一般的な技術として、次のものが知られている。
特許文献1(特開2004−128786号公報)は、パケット再送制御装置を開示している。そのパケット再送制御装置は、CPUと、I/Oバスブリッジと、メモリと、ネットワークインタフェースとを備える。再送データは、パケットの形式で、すなわち、ヘッダ等が付加された状態で、メモリに格納される。このパケット再送制御装置は、メモリ上のパケットへのポインタを含んだ送信要求に従って、パケットをネットワークに転送する。より詳細には、I/Oバスブリッジに、DMAエンジン、送信要求キュー及び再送用FIFOが設けられる。再送用FIFOには、再送パケット(転送済みのパケット)に対する送信要求が蓄積される。
特許文献2(特開2005−192216号公報)は、オフロードエンジンシステムを開示している。このシステムは、システムメモリ及びネットワークと通信するオフロードエンジンを備える。オフロードエンジンは、ネットワークにおいて送信されるデータの再送を管理する。より詳細には、オフロードエンジンは、プロセッサと通信し、次のような再送処理を行う。オフロードエンジンは、再送データを識別し、システムメモリから再送データを検索し、検索された再送データを再送する。
特許文献3(特開2004−007354号公報)は、データ転送装置を開示している。当該技術によれば、アプリケーションがメモリのユーザ空間に保持するデータを、OSが管理するOS空間を介すことなく、直接に計算機が送受信する。
特許文献4(特開2008−158917号公報)は、ノード間転送制御装置を開示している。そのノード間転送制御装置は、ノード間のデータ転送を実行するデータ転送部と、データ転送を制御する転送制御部と、を備える。転送制御部は、データ転送におけるデータ転送経路の確保の要求を示す第1転送経路確保要求をCPUから受信して、確保を実行するノード間接続装置へ出力する。また、転送制御部は、ノード間接続装置からの確保の完了を示す転送経路確保完了通知と、確保の実行中にCPUがデータ転送における他の処理を実行した後に出力した第2転送経路確保要求とに基づいて、データ転送を指示する。データ転送部は、当該指示に基づいて、データ転送を実行する。
特開2004−128786号公報 特開2005−192216号公報 特開2004−007354号公報 特開2008−158917号公報
Berk Atikoglu, Mohammad Alizadeh, Jia Shuo Yue, Balaji Prabhakar, Mendel Rosenblum, "R2D2: RAPID AND RELIABLE DATA DELIVERY IN DATA CENTERS", Annual Meeting in Stanford University, May, 2010.
TCPよりも高速に再送制御を行う高速再送制御機能をネットワークインタフェース(NIC)に搭載することを考える。NIC上で再送制御を行う場合、再送バッファ用のメモリの配置に関して問題が発生する。ネットワークが高速になるにつれて再送バッファ用に大量のメモリが必要になるが、カードサイズや消費電力に制限のあるNICに大量のメモリを搭載することは現実的ではないからである。
その一方で、サーバやPC側(以下、ホスト側と参照される)には、メモリ領域の余裕が比較的ある。そこで、ホスト上のメモリを利用して高速再送制御を行うことが考えられる。但し、その場合であっても、ホスト側になるべく負荷をかけないことが望まれる。
本発明の1つの目的は、NIC上に大量のメモリを必要とせず、且つ、ホスト側にかかる負荷を抑制することができる高速再送制御技術を提供することにある。
本発明の1つの観点において、再送制御システムが提供される。その再送制御システムは、転送データが格納されるメモリと、ネットワークインタフェースとを備える。ネットワークインタフェースは、転送データを含む転送パケットを生成するパケット処理部と、メモリから転送データを読み出すDMAコントローラとを備える。転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、パケット処理部は、転送パケットのパケットヘッダを取得し、また、DMAコントローラによって読み出された転送データに上記取得したパケットヘッダを付加することにより転送パケットを生成する。
本発明の他の観点において、ネットワークインタフェースにおける再送制御方法が提供される。転送データは、ネットワークインタフェースとは別に設けられたメモリに格納される。ネットワークインタフェースは、メモリから転送データを読み出すDMAコントローラを備える。本発明に係る再送制御方法は、(A)転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、転送パケットのパケットヘッダを取得するステップと、(B)DMAコントローラによって、メモリから転送データを読み出すステップと、(C)DMAコントローラによって読み出された転送データに上記取得したパケットヘッダを付加することによって、転送パケットを生成するステップと、を含む。
本発明に係る高速再送制御技術は、NIC上に大量のメモリを必要とせず、且つ、ホスト側にかかる負荷を抑制することができる。
図1は、本発明の第1の実施の形態に係る再送制御システムの構成を示すブロック図である。 図2は、本発明の実施の形態におけるパケット送信処理を概略的に示すシーケンス図である。 図3は、本発明の実施の形態における1回目のパケット送信処理を示すシーケンス図である。 図4は、本発明の実施の形態におけるパケット再送処理を示すシーケンス図である。 図5Aは、図3及び図4で示されたパケット送信処理を統合的に示すシーケンス図である。 図5Bは、図3及び図4で示されたパケット送信処理を統合的に示すシーケンス図である。 図6は、本発明の実施の形態におけるACKパケット受信処理を示すシーケンス図である。 図7は、本発明の実施の形態におけるデータパケット受信処理を示すシーケンス図である。 図8は、図6及び図7で示されたパケット受信処理を統合的に示すシーケンス図である。 図9は、本発明の第2の実施の形態に係る再送制御システムの構成を示すブロック図である。 図10は、本発明の第3の実施の形態に係る再送制御システムの構成を示すブロック図である。 図11は、第3の実施の形態におけるパケット送信処理を説明するためのシーケンス図である。
添付図面を参照して、本発明の実施の形態を説明する。
1.第1の実施の形態
1−1.構成
図1は、本発明の第1の実施の形態に係る再送制御システム1の構成を示すブロック図である。再送制御システム1は、メモリ2、ネットワークインタフェース3、CPU4、及びこれらを相互に接続するホストバス5を備えている。
メモリ2には、転送データ(再送データも含む)が格納される。より詳細には、メモリ2には、再送バッファ201が確保される。例えば、再送バッファ201は、転送データとは別に、再送データだけを格納するバッファとして確保されてもよい。これは、例えば最近のOSのように、ユーザとOS(カーネル)でメモリ空間が異なっており、ユーザが通信を行う際に、データをカーネルのメモリ領域にコピーする必要がある際に、そのコピー先を再送バッファとすることに対応する。
あるいは、CPU4がデータ転送命令をネットワークインタフェース3に発行する際に、転送データが格納されているメモリ領域を再送バッファ201としてロックしてもよい。この場合、ネットワークインタフェース3からデータ転送完了の通知がなされるまで、データ内容の変更や、最近のOSでサポートされているようなハードディスクへのスワップアウトが禁止される。CPU4は、ネットワークインタフェース3から再送バッファ201のデータをアンロックする通知を受けると、再送バッファ201の領域をアンロックする。アンロックにより、そのメモリ領域のデータの変更や、ハードディスクへのスワップアウトが可能になる。この方式は、ユーザレベル通信のように、カーネルを経由せずに通信を行う場合に対応する。
ホストバス5は少なくとも、CPU4、メモリ2、ネットワークインタフェース3を相互に接続するためのバスである。
ネットワークインタフェース3は、ホストバスインタフェース301、命令キュー303、命令発行部305、タイマ307、再送命令キュー309、パケット処理部311、DMA(Direct Memory Access)コントローラ313、パケットヘッダ取得テーブル315、パケット送信部319、パケット受信部321、及び動作設定レジスタ323を備えている。
ホストバスインタフェース301は、ホストバス5を介して、CPU4やメモリ2と、ホストバス5に依存したデータ転送プロトコルに従ったデータの送受信を行う。ホストバス5に依存したデータ転送プロトコルとは、例えばホストバス5がPCI−Expressであれば、PCI−Expressの規格に準じた信号の送受信手順、タイミング、フォーマット、などを指す。
動作設定レジスタ323は、ネットワークインタフェース3が動作する上で必要なパラメータを設定するための領域である。動作設定レジスタ323は、少なくとも、同じデータを何回再送するかを示す再送上限回数と、その再送の間隔を示す再送間隔と、を設定する領域を備える。
命令キュー303は、CPU4によって発行される、転送データの転送を指示するデータ転送命令を格納するためのキューである。データ転送命令は、少なくとも、メモリ2の開始アドレスと、そのアドレスからどれだけの量のデータを転送するかを示すデータ転送サイズと、宛先ホストアドレスと、を含む。
尚、宛先ホストアドレスについては次の通りである。例えば、ネットワークがIPによってホストを識別する場合、通信相手のIPアドレスが宛先ホストアドレスとして用いられる。また、宛先ホストのネットワークインタフェース3がRDMA(Remote Direct Memory Access)に対応している場合、IPアドレスに加えて、宛先ホストのメモリ2の領域を示す転送先アドレスを組み合わせて用いてもよい。
再送命令キュー309は、データ再送を指示するデータ転送命令を格納するためのキューである。具体的には、再送命令キュー309には、命令発行部305によって命令キュー303から読み出された命令が、再送命令として格納される。また、再送処理の際には、命令発行部305によって再送命令キュー309から読み出された命令が、再度、再送命令として書き込まれる。再送命令キュー309に格納された命令は、当該命令によって転送されたパケットの宛先ホストからのACKパケットの受信に応答して、削除される。また、再送回数が、動作設定レジスタ323に設定された再送上限回数に達した場合、命令発行部305は、その命令を再送命令キュー309に書き戻さない。
タイマ307は、時刻をカウントするために用いられる。例えば、タイマ307は、再送制御システム1が起動してからの経過時刻を保持する。あるいは、ネットワークインタフェース3がCPU4とは異なる同期信号(クロック)で動作する場合には、タイマ307は、その同期信号のOn/Offの切り替え回数をカウントしてもよい。いずれにしても、実現したい再送間隔のオーダでの時刻カウントが可能である必要があり、この機能は、一般的なプロセッサにクロックカウンタという形で搭載されている。
命令発行部305は、命令キュー303あるいは再送命令キュー309に発行すべきデータ転送命令が存在している場合に、当該命令キューからデータ転送命令を読み出し、読み出したデータ転送命令をパケット処理部311に転送する。更に、当該データ転送命令の実行回数が再送上限回数に達していなければ、命令発行部305は、当該データ転送命令を再送命令キュー309に書き込む。
また、命令発行部305は、命令キュー303あるいは再送命令キュー309から命令を読み出し、パケット処理部311に当該命令を転送した際に、そのときの時刻をタイマ307から取得する。そして、命令発行部305は、当該命令を再送命令キュー309に書き込む際に、取得した時刻と当該命令の実行回数を同時に書き込む。そのため、再送命令キュー309には、命令そのものを書き込む領域のほかに、その命令が最後に実行された時刻と、実行回数を記録する領域が必要である。あるいは、ネットワークインタフェース3上にこれらの情報を記録する領域を設け、再送命令キュー309に格納されている命令と関連付けて情報を管理してもよい。また、命令に含まれる情報のみで命令を一意に識別することが困難な場合は、命令に命令シーケンス番号のような命令を一意に識別可能な情報を付与し、再送命令キュー309に書き込むことも考えられる。
また、命令発行部305は、再送命令キュー309に格納されている再送命令に関連付けられた時刻をチェックし、当該時刻とタイマ307が示す現在時刻との比較を行う。比較の結果、動作設定レジスタ323に設定された再送間隔以上の時間が経過していた場合、命令発行部305は、再送命令キュー309から当該再送命令を読み出し、読み出した再送命令をパケット処理部311に転送する。当該再送命令を再送命令キュー309に再度書き込む際には、命令発行部305は、新たにタイマ307から取得した時刻を共に書き込む。
尚、命令発行部305は、パケット処理部311に命令を転送した時刻順に、再送命令キュー309に再送命令を格納してもよい。この場合、命令発行部305は、再送命令キュー309の先頭の再送命令だけをチェックするだけで、再送間隔を超えた命令が存在するかどうかを確認することができる。データ転送命令の優先度などの重みに応じて、再送間隔を可変にする場合には、その重みごとに再送命令キュー309を分け、各再送命令キュー309に時刻順に命令を格納することが考えられる。また、単一の再送命令キュー309の場合でも、命令発行部305が再送命令キュー309に格納されている再送命令全てをチェックすることで、再送間隔を超えた命令が存在するかどうかを確認することができる。
パケット送信部319は、パケット処理部311が生成したパケットをネットワークに転送する機能ブロックである。
パケット受信部321は、ネットワークから受信したパケットをパケット処理部311に転送する機能ブロックである。
DMAコントローラ313は、メモリ2に対してデータの送受信を直接行う。DMAコントローラ313は、メモリ2から転送データを読み出すことができる。また、DMAコントローラ313は、メモリ2に受信データを書き込むことができる。
パケット処理部311は、大きく分けて2つの処理を実行する。
パケット処理部311による1つ目の処理は、転送パケットの構築(生成)である。つまり、パケット処理部311は、命令発行部305から受け取ったデータ転送命令に従って、転送データを含む転送パケットを構築(生成)し、その転送パケットをパケット送信部319に転送する。
パケット構築の際、パケット処理部311は、データ転送命令に含まれる開始アドレスとデータ転送サイズを参照して、DMAコントローラ313にデータ読み出し命令を発行する。これにより、パケット処理部311は、DMAコントローラ313を通して、転送データをメモリ2から読み出すことができる。また、パケット処理部311は、データ転送サイズ、宛先ホストアドレス、及び使用するネットワークプロトコルに応じたパケットヘッダを生成する。そして、パケット処理部311は、DMAコントローラ313を通して読み出した転送データにパケットヘッダを付加することにより、転送パケットを構築(生成)する。
ネットワークプロトコルに応じたパケットヘッダには、一般的に、宛先ホストアドレス、送信元ホストアドレス、パケットサイズ、などが含まれ、他にもネットワークプロトコルに応じた情報が格納される。これらについては、各ネットワークプロトコルの規格を参照すると、詳細な情報が得られる。
更に、パケットヘッダには、本実施の形態の再送制御機構を使用するパケットであることを示すフラグが含まれる。受信側ホストのネットワークインタフェースが、本実施の形態の再送制御機構を備えている場合、このフラグをチェックすることで、データを受信したことを示す通知を送信元ホストに出すことができる。受信側ホストのネットワークインタフェースが本実施の形態の再送制御機構に対応していない場合であっても、再送回数に上限を設けているため、同じデータが無限に再送されるということはない。また、上記のパケットヘッダの情報だけでパケットを一意に識別することが困難な場合は、再送制御機構が管理するパケットシーケンス番号をパケットに付与し、再送制御機構がパケットを一意に識別できるようにすることも考えられる。これらの、再送制御機構のために追加されるフラグやパケットシーケンス番号といった情報は、従来のネットワークプロトコルで定めるプロトコルヘッダの未使用フィールドや、新たに追加するフィールドに格納され得る。このパケットシーケンス番号は、1つのデータ転送命令に対して1つのパケットが対応する場合には、前述した命令シーケンス番号と同一でもよい。また、1つのデータ転送命令に対して複数のパケットが対応する場合には、異なるパケットシーケンス番号体系を用いることで、パケットを一意に識別することができる。
パケット処理部311は、パケットヘッダを新たに生成した場合、そのパケットヘッダをパケットヘッダ取得テーブル315に格納する。パケットヘッダ取得テーブル315におけるパケットヘッダの格納先アドレスは、パケットを一意に識別可能な情報を用いることにより生成される。パケットを一意に識別可能な情報の例として、データ転送命令から生成されるパケットヘッダの特定のフィールドの値を用いることや、パケットヘッダの一部、または全ての情報を用いてハッシュ値を生成し、このハッシュ値を用いることが考えられる。
パケット処理部311による2つ目の処理は、パケット受信部321がネットワークから受信した受信パケットを処理することである。ここで、受信パケットの種別に応じて、パケット処理部311の処理が異なってくる。
まず、受信パケットが、自ホストが送信したパケットを宛先ホストが受信したことを示すACKパケットである場合を考える。ACKパケットは、少なくとも、当該ACKパケットに対応する、自ホストが送信した転送パケットを一意に識別する情報を含む。例えば、自ホストが送信した転送パケットのパケットヘッダに含まれる宛先ホストアドレスと送信元ホストアドレスとが入れ替えられ、更に、パケットヘッダのどこかのフィールドにACKパケットであることを示すフラグが格納される。
ACKパケットを受信した場合、パケット処理部311は、このACKパケットに対応する転送パケットのパケットヘッダを、パケットヘッダ取得テーブル315から削除する。また、パケット処理部311は、命令発行部305に対して、ACKパケットを受信したことを、送信パケットを一意に識別する情報とともに通知する。命令発行部305は、この通知に応答して、再送命令キューから対応する再送命令を削除する。更に、パケット処理部311は、ACKパケットに対応するデータ転送命令に対応する再送バッファ201の領域をアンロックするための通知を、CPU4に出す。
次に、受信パケットが、ネットワークに接続された他のホストから送られてきたデータパケットである場合を考える。この場合、パケット処理部311は、受信パケットのパケットヘッダを解析してデータの受信先アドレスを取得し、DMAコントローラ313を使用して当該データをメモリ2あるいはCPU4へ転送する。また、本実施の形態の再送制御機構を備えたネットワークインタフェースから送信されたパケットであることを示すフラグが立っていた場合、パケット処理部311は、受信パケットに応答するACKパケットを生成し、生成したACKパケットをパケット送信部19に送信する。
パケットヘッダ取得テーブル315は、パケットヘッダを格納するためのメモリ領域である。各パケットヘッダは、パケットを一意に識別可能な情報をアクセスアドレスとして用いることによりアクセス可能である。パケットを一意に識別可能なアドレスの実現例の1つとして、ハッシュテーブルを用いる方法が考えられる。具体的には、データ転送命令や生成したパケットヘッダの情報を用いてハッシュ値を計算し、それをキーとしてテーブルにアクセスする。この場合、ハッシュ値を計算する機能がネットワークインタフェース3に必要となる。但し、パケットヘッダとデータ転送命令の双方からアドレスを生成可能なように、情報を選択することが望ましい。
尚、本実施の形態に係る再送制御機構は、常に有効にしておく必要は必ずしも無い。動作設定レジスタ323などを用いて、本実施の形態に係る再送制御機構のOn/Offを切り換えてもよい。
1−2.処理フロー
次に、本実施の形態に係る再送制御システム1の動作を説明する。
1−2−1.パケット送信
図2は、本実施の形態におけるパケット送信処理を概略的に示すシーケンス図である。パケット送信処理では、CPU4が、データ転送命令をネットワークインタフェース3に発行し、ネットワークインタフェース3が、メモリ2に格納された転送データをネットワークに送出する。
まず、CPU4は、転送データが格納されたメモリ2のメモリ領域をロックする(図2のステップS40)。
次に、CPU4は、データ転送命令をネットワークインタフェース3に発行する(図2のステップS41)。データ転送命令には、少なくとも、転送先ホストの識別情報、データの転送サイズ、データの転送元の情報が含まれる。
次に、ネットワークインタフェース3は、データ転送命令を参照して、メモリ2からデータを読み出す(図2のステップS31)。その後、ネットワークインタフェース3は、データ転送命令に基づいてパケットヘッダを取得し、パケットヘッダとデータとを組み合わせることによって転送パケットを生成し、生成したパケットをネットワークに送出する(図2のステップS33)。
図3は、ある転送パケットに関する1回目のパケット送信処理を示すシーケンス図であり、図2中のステップS31〜S33の内容を詳細に示している。
まず、命令発行部305は、転送データの1回目の転送を指示するデータ転送命令を、命令キュー303から読み出す(図3のステップS3051)。
次に、命令発行部305は、パケット処理部311に当該命令を発行する(図3のステップS3052)。
次に、命令発行部305は、タイマ307から時刻を取得し、取得した時刻と共に、当該命令を再送命令キュー309に書き込む(図3のステップS3053)。
パケット処理部311は、命令発行部305から受け取った命令を解釈する(図3のステップS3111)。パケット処理部311は、命令を解釈することで、少なくとも、転送データの格納領域を示すアドレス、送信先ホストの識別子、転送データサイズに関する情報を得る。
次に、パケット処理部311は、転送データの格納領域を示すアドレスと転送データサイズに基づいて、データ読み出し要求をDMAコントローラ313に発行する(図3のステップS3112)。データ読み出し要求は、メモリ2から当該転送データを読み出すことを要求する。
また、パケット処理部311は、DMAコントローラ313がメモリ2から転送データを読み出している間に、データ転送命令に基づいてパケットヘッダを生成する(図3のステップS3113)。
DMAコントローラ313は、メモリ2から読み出した転送データをパケット処理部311に転送する(図3のステップS3131)。
次に、パケット処理部311は、DMAコントローラ313によって読み出された転送データと、ステップS3113で生成したパケットヘッダとを組み合わせることによって、転送パケットを構築する。そして、パケット処理部311は、生成したパケットをパケット送信部319に出力する(図3のステップS3114)。
尚、DMAコントローラ313のデータの読み出しに要する時間が、パケットヘッダを構築する時間よりも短い場合には、データをDMAコントローラ313から受け取ってから、パケットヘッダを構築することや、DMAコントローラ313にデータ読み出し要求を発行する前にパケットヘッダを構築することも考えられる。
次に、パケット処理部311は、パケットを一意に識別する情報を生成し、パケットヘッダ取得テーブル315への格納先アドレスを生成する(図3のステップS3115)。
次に、パケット処理部311は、上記格納先アドレスを用いて、パケットヘッダをパケットヘッダ取得テーブル315に格納する(図3のステップS3116)。
尚、ステップS3114と、ステップS3115〜ステップS3116の処理は独立であるため、並行して実行することも可能である。
図4は、本実施の形態におけるパケット再送処理を示すシーケンス図である。尚、図3で示された処理と同じ処理に関しては、重複する説明を適宜省略する。
まず、命令発行部305は、再送命令キュー309に格納されているデータ転送命令(再送命令)が最後に実行された時刻と、タイマ307の現在時刻とを比較する。そして、命令発行部305は、それらの差が再送間隔を超えているような再送命令を再送命令キュー309から読み出す(図4のステップS3054)。
次に、命令発行部305は、パケット処理部311に再送命令を発行する(図4のステップS3052)。
また、当該再送命令の実行回数が上限に達していない場合、命令発行部305は、ステップS3054でタイマ307から取得した時刻とともに、再送命令を再送命令キュー309に再度書き込む(図4のステップS3056)。
パケット処理部311は、命令発行部305から受け取った再送命令を解釈し(図4のステップS3111)、DMAコントローラ313にデータ読み出し要求を出す(図4のステップS3112)。
DMAコントローラ313は、データ読み出し要求に対応した再送バッファ201から、転送データ(再送データ)を読み出し、そのデータをパケット処理部311に転送する(図4のステップS3131)。
一方、パケット処理部311は、データ転送命令に基づいて、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する(図4のステップS3117)。
次に、パケット処理部311は、そのアクセスアドレスを用いてパケットヘッダ取得テーブル315にアクセスし、パケットヘッダを取得する(図4のステップS3118)。つまり、パケット再送処理の場合、パケット処理部311は、パケットヘッダ取得テーブル315からパケットヘッダを読み出す。
次に、パケット処理部311は、DMAコントローラ313によって読み出された転送データと、ステップS3118で取得したパケットヘッダとを組み合わせることによって、転送パケットを構築する。そして、パケット処理部311は、生成したパケットをパケット送信部319に出力する(図4のステップS3114)。
図5A及び図5Bは、図3及び図4で示されたパケット送信処理を統合的に示すシーケンス図である。
まず、命令発行部305は、命令キュー303にデータ転送命令が格納されているかどうか判定する(図5AのステップF001)。
命令キュー303にデータ転送命令が格納されていない場合(図5AのステップF001;No)、命令発行部305は、再送命令キュー309に再送命令が格納されているかどうか判定する(図5AのステップF003)。
再送命令キュー309に再送命令が格納されていない場合(図5AのステップF003;No)、処理はステップF001に戻る。
再送命令キュー309に再送命令が格納されている場合(図5AのステップF003;Yes)、命令発行部305は、再送条件が満たす再送命令があるかどうかを判定する(図5AのステップF005)。具体的には、命令発行部305は、再送命令キュー309に格納されている再送命令の中で、再送間隔以上の期間、実行されていない命令があるかどうか判定する。
再送条件を満たす再送命令が存在しない場合(図5AのステップF005;No)、処理はステップF001に戻る。
命令キュー303に命令が格納されている場合(図5AのステップF001;Yes)、または、再送命令キュー309に再送条件を満たす再送命令が存在する場合(図5AのステップF005;Yes)、命令発行部305は、タイマ307から現在時刻を取得する(図5AのステップF007)。また、命令発行部305は、命令キュー303または再送命令キュー309から命令を読み出す(図5AのステップF009)。
なお、ステップF001の処理と、ステップF003、F005の処理を入れ替えることも可能である。つまり、命令発行部305は、再送命令キュー309のチェックを先に行い、続いて、命令キュー303のチェックを行ってもよい。
次に、命令発行部305は、読み出した命令を解釈する(図5AのステップF011)。また、パケット処理部311は、DMAコントローラ313を用いて、転送データをメモリ2から読み出す(図5AのステップF013)。
次に、パケット処理部311は、パケットを一意に識別する情報を生成し、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する(図5BのステップF015)。
処理中の命令が再送命令である場合(図5BのステップF017;Yes)、パケット処理部311は、ステップF015で生成したアクセスアドレスを用いてパケットヘッダ取得テーブル315へアクセスし、パケットヘッダを取得する(図5BのステップF021)。
一方、処理中の命令が再送命令ではない場合(図5BのステップF017;No)、パケット処理部311は、当該命令に基づいてパケットヘッダを構築する(図5BのステップF019)。
次に、パケット処理部311は、パケットヘッダを転送データに付加することによって転送パケットを構築する(図5BのステップF023)。そして、ネットワークインタフェース3は、転送パケットをネットワークに送出する。
処理中の命令が再送命令である場合(図5BのステップF025;Yes)、パケット処理部311は、再送命令の実行回数が上限に達しているかどうか判定する(図5BのステップF029)。
再送命令の実行回数が上限に達している場合(図5BのステップF029;Yes)、パケット処理部311は、パケットヘッダをパケットヘッダ格納テーブル315から削除する(図5BのステップF033)。
一方、再送命令の実行回数が上限に達していない場合(図5BのステップF029;No)、パケット処理部311は、実行した命令を、ステップF007で取得した時刻とともに、再送命令キュー309に格納する(図5BのステップF031)。
処理中の命令が再送命令でない場合(図5BのステップF025;No)、パケット処理部311は、パケットヘッダをパケットヘッダ取得テーブル315に登録する(図5BのステップF027)。そして、パケット処理部311は、実行した命令を、ステップF007で取得した時刻と共に、再送命令キュー309に格納する(図5BのステップF031)。
尚、ステップF027の処理と、ステップF017〜ステップF031の処理は独立であるため、順序を入れ替えることも可能である。また、ステップF007の処理と、ステップF009〜ステップF031の処理は独立であるため、順序を入れ替えることも可能である。
1−2−2.パケット受信
図6は、本実施の形態におけるACKパケット受信処理を示すシーケンス図である。
パケット受信部321は、ネットワークからパケットを受信すると、当該受信パケットをパケット処理部311に転送する(図6のステップS3211)。
次に、パケット処理部311は、パケット処理部321から受け取った受信パケットの種別を判定する(図6のステップS3119)。ここでは、受信パケットはACKパケットである。
次に、パケット処理部311は、ACKパケットに含まれる情報から、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する(図6のステップS3120)。上述の通り、ACKパケットには、ACKパケットに対応する送出パケットを一意に識別する情報が含まれるため、その情報からパケットヘッダ取得テーブル315に対する適切なアクセスアドレスを取得することができる。
次に、パケット処理部311は、上記のアクセスアドレスを参照して、ACKパケットに対応するパケットヘッダのエントリをパケットヘッダ取得テーブル315から削除する(図6のステップS3121)。
次に、パケット処理部311は、ACKパケットに含まれる情報から、再送命令キュー309に格納されている再送命令を識別する情報を生成する(図6のステップS3122)。
次に、パケット処理部311は、ACKパケットに対応する再送命令を削除するリクエストを、命令発行部305に出す(図6のステップS3123)。
次に、命令発行部305は、パケット処理部311からのリクエストに従って、再送命令キュー309に格納されている再送命令を削除する(図6のステップS3057)。
次に、パケット処理部311は、ACKパケットに対応するパケットの転送データが格納されている再送バッファ201の領域をアンロックするリクエストを、CPU4に出す(図6のステップS3127)。
次に、CPU4は、パケット処理部311からのリクエストに従って、再送バッファ201をアンロックする(図6のステップS4001)。
図7は、本実施の形態におけるデータパケット受信処理を示すシーケンス図である。尚、図6で示された処理と同じ処理に関しては、重複する説明を適宜省略する。
パケット受信部321は、ネットワークからパケットを受信すると、当該受信パケットをパケット処理部311に転送する(図7のステップS3211)。
次に、パケット処理部311は、パケット処理部321から受け取った受信パケットの種別を判定する(図7のステップS3119)。ここでは、受信パケットはデータパケットである。
次に、パケット処理部311は、受信先メモリ領域のアドレスとパケットヘッダに含まれるサイズを参照して、DMAコントローラ313にデータ転送リクエストを出す(図7のステップS3124)。受信先メモリ領域のアドレスは、ネットワークインタフェース3がRDMA通信に対応している場合には、パケットヘッダに含まれていることが多い。この場合、ネットワークインタフェース3自身で受信先メモリ領域のアドレスを管理する必要はない。一方、そうでない場合であっても、例えば、OSによって、ネットワークインタフェース3のドライバをロードした際などに、メモリ2の領域を割り当てられるため、そのメモリ領域の開始アドレスや、サイズ、使用状況などをネットワークインタフェース3で管理することで、受信先メモリ領域のアドレスを取得することができる。
DMAコントローラ313は、パケット処理部311からのリクエストに従って、受信データをメモリ2に転送する(図7のステップS3132)。
次に、パケット処理部311は、パケットヘッダに含まれる情報に基づいて、受信パケットに応答するACKパケットを生成する(図7のステップS3125)。ACKパケットには、少なくとも、ACKパケットであることを示すフラグと、送信側ホストでどのパケットを送信したのかを一意に識別するのに必要な情報を含む。
次に、パケット処理部311は、ACKパケットをパケット送信部319に転送し、パケット送信部319はネットワークにACKパケットを送出する(図7のステップS3126)。
図8は、図6及び図7で示されたパケット受信処理を統合的に示すシーケンス図である。
まず、パケット受信部321は、ネットワークからパケットを受信したかどうか判定する(図8のステップF101)。
パケット受信部321がネットワークからパケットを受信していない場合(図8のステップF101;No)、処理はステップF101に戻る。
パケット受信部321がネットワークからパケットを受信すると(図8のステップF101;Yes)、パケット処理部311は、受信パケットの種別を判定する(図8のステップF103)。
受信パケットがデータパケットである場合(図8のステップF103;データパケット)、パケット処理部311は、そのデータパケットが本実施の形態に係る再送制御システムに対応したものかどうか判定する(図8のステップF105)。
当該データパケットが本実施の形態に係る再送制御システムに対応していない場合(図8のステップF105;No)、ネットワークインタフェース3は、そのデータパケットを受信先メモリ領域に転送する(図8のステップF111)。
当該データパケットが本実施の形態に係る再送制御システムに対応している場合(図8のステップF105;Yes)、パケット処理部311は、パケットヘッダに含まれる情報に基づいてACKパケットを生成する(図8のステップF107)。そして、ネットワークインタフェース3は、生成したACKパケットをデータパケットの送信元に返信し(図8のステップF109)、また、受信データパケットを受信先メモリ領域に転送する(図8のステップF111)。
尚、ステップF107〜F109の処理と、ステップF111の処理は独立であるため、順序を入れ替えることも可能である。
一方、受信パケットがACKパケットである場合(図8のステップF103;ACKパケット)、パケット処理部311は、ACKパケットに含まれる情報に基づいて、パケットヘッダ取得テーブル315へのアクセスアドレスを生成する(図8のステップF113)。
次に、パケット処理部311は、ステップF113で生成したアクセスアドレスを用いて、パケットヘッダ取得テーブル315に格納されているパケットヘッダを削除する(図8のステップF115)。
また、パケット処理部311は、ACKパケットに含まれる情報に基づいて、再送命令キュー309に格納されている再送命令を一意に識別する情報を生成する(図8のステップF117)。尚、上記のステップF113で生成されたアドレスをそのまま利用可能である場合は、ステップF117を実行する必要はない。
次に、パケット処理部311は、ステップF117で生成した情報を用いて、再送命令キュー309に格納されている再送命令を削除する(図8のステップF119)。
次に、ネットワークインタフェース3は、受信したACKパケットに対応する転送パケットの転送データが格納されている再送バッファ201の領域をアンロックする(図8のステップF121)。
1−3.効果
以上に説明されたように、本実施の形態によれば、ネットワークインタフェース3とは異なるホスト側のメモリ2を利用することにより、高速再送制御が実現される。つまり、ネットワークインタフェース3上に大量のメモリを搭載しなくても、高速再送制御を実現することが可能である。
更に、本実施の形態に係る高速再送制御において、CPU4は一連の再送処理にはほとんど介在しない。従って、高速再送制御によってCPU4にかかる負荷が軽減される。本実施の形態に係る高速再送制御は、CPU4で稼動する他のアプリケーションに対して影響を与えない。
本実施の形態は、例えば、ネットワークで互いに接続されたPCやサーバから構成されるデータセンタなどのコンピュータシステムに適用可能である。
2.第2の実施の形態
図9は、本発明の第2の実施の形態に係る再送制御システム1の構成を示すブロック図である。第1の実施の形態と重複する説明は適宜省略される。
第2の実施の形態では、ネットワークインタフェース3の上記命令発行部305が、命令分割発行部325に置き換えられている。この命令分割発行部325は、必要に応じて、データ転送命令を複数に分割する。より詳細には、命令分割発行部325は、命令キュー303に格納されたデータ転送命令に含まれるデータサイズと、ネットワークのMTU(Maximum Transmission Unit)とを比較する。転送データのサイズがMTUを超えている場合、命令分割発行部325は、当該データ転送命令を複数に分割し、それら複数のデータ転送命令のそれぞれを個別にパケット処理部311に出力する。また、命令分割発行部325は、分割後のパケット転送命令を再送命令キュー309に書き込む。
このように、第2の実施の形態は、CPU4から発行されるデータ転送要求で指定される転送サイズが1つのパケットに収まらないような場合であっても、CPU4に負荷をかけることなく高速再送制御を実現可能である。
比較例として、上記の特許文献1や特許文献2の場合を考える。転送データのサイズがネットワークのMTUを超える場合、転送データを分割し、分割したデータそれぞれにパケットヘッダを付加する必要がある。そのため、転送データを別のメモリ領域にコピーする必要があるが、これはホスト側に負荷をかけるという問題点を生ずる。また、一般に、CPUの性能向上に比べて、メモリの性能向上の速度は遅く、データコピーの遅延も無視できない問題である。さらに、ホスト側のメモリ領域を余分に必要とするという問題点がある。
一方、本実施の形態によれば、データ転送命令が複数に分割される。また、パケットヘッダは、ネットワークインタフェース3において生成され、あるいは、管理される。そして、分割後のそれぞれのデータ転送命令に応答して、ネットワークインタフェース3において転送データとパケットヘッダとが組み合わされる。このとき、分割後のそれぞれのデータ転送命令に応答して、転送データをメモリ2から読み出すだけでよい。転送データの分割は不要であり、転送データを分割するために別の記憶領域にコピーする必要はない。従って、転送データのサイズがMTUを超えている場合であっても、CPU4に負荷をかけることなく、高速再送制御を実現可能である。
3.第3の実施の形態
図10は、本発明の第3の実施の形態に係る再送制御システム1の構成を示すブロック図である。既出の実施の形態と重複する説明は適宜省略される。
第3の実施の形態によれば、ネットワークインタフェース3に再送データ取得テーブル327が追加される。再送データ取得テーブル327は、再送バッファ201と同様に、再送データを格納するためのバッファである。
図11は、第3の実施の形態におけるパケット送信処理を説明するためのシーケンス図である。図11に示される処理は、図5AのステップF011とステップF013との間に挿入される。
命令発行部305は、読み出した命令を解釈する(図11のステップF011)。
パケット処理部311は、現在のデータ転送命令に対応する再送データが、再送データ取得テーブル327に存在するかどうか判定する(図11のステップF012a)。この判定に際し、パケット処理部311は、データ転送命令に基づいて、再送データ取得テーブル327へのアクセスアドレスを生成する。このアドレスは、再送データを一意に識別することができるものであり、パケットヘッダ取得テーブル315へのアクセスアドレスと同様となる。
再送データが再送データ取得テーブル327に存在する場合(図11のステップF012a;Yes)、パケット処理部311は、再送データ取得テーブル327から再送データを取得する(図11のステップF012b)。更に、パケット処理部311は、パケットヘッダ取得テーブル315からパケットヘッダを取得する(図11のステップF021)。ここで、再送データに対応するパケットヘッダは一意に定まるため、パケットヘッダ取得テーブル315へのアクセスアドレスは、ステップF012aにおける再送データ取得テーブル327へのアクセスアドレスと同一であってもよい。以降の処理は、図5BのF021以降の処理と同様である。ただし、図5BのステップF033の際に、再送データ取得テーブル327から再送データを削除する処理が追加される。
一方、再送データが再送データ取得テーブル327に存在しない場合(図11のステップF012a;No)、処理は、上記のステップF013に進む。
再送データ取得テーブル327の利用方法として、優先度の高いパケット、データサイズが小さいパケットなどを格納することが考えられる。再送データ取得テーブル327は、ネットワークインタフェース3に搭載されるため、再送バッファ201ほど大きな容量を確保することは困難であると考えられるが、再送バッファ201から再送データを読み出すよりも低遅延に再送データを取得することができる。そのため、優先度の高いパケットを格納することで、当該パケットについては、低遅延な再送を実現できる。また、容量の関係から、サイズの大きなパケットを再送データ取得テーブル327に格納すると、格納できるパケット数が少なくなる。そのため、サイズがある一定値以下の再送データを再送データ取得テーブル327に格納するようにすることで、多くのパケットを格納することが可能になる。また、一般に、通信遅延が問題となるのは、転送データサイズが小さい場合であり、この点でも再送データ取得テーブルにサイズの小さな再送データを格納することは理にかなっている。この場合、動作設定レジスタ323に、再送データ取得テーブル327を利用する最大データサイズを設定するといったことが必要になる。
再送データ取得テーブル327の容量が足りなくなった場合は、データサイズや優先度に関わらず、再送バッファ201が利用されるとよい。
再送データ取得テーブル327に再送データを書き込むタイミングの例として、図5AのステップF013にて、転送データをメモリ2から読み出すと同時に、その転送データを再送データ取得テーブル327に書き込むことが考えられる。その際、パケットの優先度やサイズに応じて再送データ取得テーブル327と再送バッファ201を使い分ける場合には、どちらを使用するか判定処理を行う。
再送データ取得テーブル327に格納されている再送データは、図5BのステップF033に加えて、図8のステップF115を実行する際にも削除される。
本実施の形態によれば、ネットワークインタフェース3に再送データ取得テーブル327を設けることで、より低遅延な再送処理を実現することが可能である。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
転送データが格納されるメモリと、
ネットワークインタフェースと
を備え、
前記ネットワークインタフェースは、
前記転送データを含む転送パケットを生成するパケット処理部と、
前記メモリから前記転送データを読み出すDMAコントローラと
を備え、
前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、前記パケット処理部は、前記転送パケットのパケットヘッダを取得し、また、前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することにより前記転送パケットを生成する
再送制御システム。
(付記2)
付記1に記載の再送制御システムであって、
前記ネットワークインタフェースは、パケットヘッダ取得テーブルを更に備え、
前記転送データの1回目の転送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記データ転送命令に基づいて前記転送パケットの前記パケットヘッダを生成し、前記生成したパケットヘッダを前記パケットヘッダ取得テーブルに登録する
再送制御システム。
(付記3)
付記2に記載の再送制御システムであって、
前記転送データの再送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを読み出す
再送制御システム。
(付記4)
付記2又は3に記載の再送制御システムであって、
前記転送パケットに応答するACKパケットを受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを削除する
再送制御システム。
(付記5)
付記1乃至4のいずれか一項に記載の再送制御システムであって、
前記ネットワークインタフェースは、
CPUによって発行される、前記転送データの転送を指示する前記データ転送命令が格納される命令キューと、
前記転送データの再送を指示する前記データ転送命令が格納される再送命令キューと、
前記命令キューあるいは前記再送命令キューから前記データ転送命令を読み出し、前記読み出したデータ転送命令を前記パケット処理部に出力し、且つ、前記読み出したデータ転送命令を前記再送命令キューに格納する命令発行部と
を更に備える
再送制御システム。
(付記6)
付記5に記載の再送制御システムであって、
前記転送パケットに応答するACKパケットを受け取った場合、前記命令発行部は、前記転送データの再送を指示する前記データ転送命令を前記再送命令キューから削除する
再送制御システム。
(付記7)
付記5又は6に記載の再送制御システムであって、
前記データ転送命令は、前記転送データのサイズを示し、
前記転送データのサイズがネットワークのMTU(Maximum Transmission Unit)を超える場合、前記命令発行部は、前記データ転送命令を複数に分割し、前記複数のデータ転送命令を個別に前記パケット処理部に出力する
再送制御システム。
(付記8)
ネットワークインタフェースにおける再送制御方法であって、
転送データは、前記ネットワークインタフェースとは別に設けられたメモリに格納され、
前記ネットワークインタフェースは、前記メモリから前記転送データを読み出すDMAコントローラを備え、
前記再送制御方法は、
前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、転送パケットのパケットヘッダを取得するステップと、
前記DMAコントローラによって、前記メモリから前記転送データを読み出すステップと、
前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することによって、前記転送パケットを生成するステップと
を含む
再送制御方法。
本出願は、2011年3月28日に出願された日本国特許出願2011−069826を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 再送制御システム
2 メモリ
201 再送バッファ
3 ネットワークインタフェース
301 ホストバスインタフェース
303 命令キュー
305 命令発行部
307 タイマ
309 再送命令キュー
311 パケット処理部
313 DMAコントローラ
315 パケットヘッダ取得テーブル
319 パケット送信部
321 パケット受信部
323 動作設定レジスタ
325 命令分割発行部
327 再送データ取得テーブル
4 CPU
5 ホストバス

Claims (6)

  1. 転送データが格納されるメモリと、
    ネットワークインタフェースと
    を備え、
    前記ネットワークインタフェースは、
    前記転送データを含む転送パケットを生成するパケット処理部と、
    前記メモリから前記転送データを読み出すDMAコントローラと、
    を備え、
    前記パケット処理部は、前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、前記転送パケットのパケットヘッダを取得し、前記DMAコントローラによって前記メモリから読み出された前記転送データに前記取得したパケットヘッダを付加することにより前記転送パケットを生成する前記パケット処理部であって、
    前記ネットワークインタフェースは、
    CPUによって発行される、前記転送データの転送を指示する前記データ転送命令が格納される命令キューと、
    前記転送データの再送を指示する前記データ転送命令が格納される再送命令キューと、
    前記命令キューあるいは前記再送命令キューから前記データ転送命令を読み出し、前記読み出したデータ転送命令を前記パケット処理部に出力し、且つ、前記読み出したデータ転送命令を前記再送命令キューに格納する命令発行部と
    を更に備え、
    前記データ転送命令は、前記転送データのサイズを示し、
    前記命令発行部は、前記データ転送命令に基づいて、前記転送データのサイズがネットワークのMTU(Maximum Transmission Unit)を超えるか否かを判定し、判定の結果、前記転送データのサイズが前記ネットワークのMTUを超える場合、前記データ転送命令を複数に分割し、前記複数のデータ転送命令を個別に前記パケット処理部に出力する
    再送制御システム。
  2. 請求項1に記載の再送制御システムであって、
    前記ネットワークインタフェースは、パケットヘッダ取得テーブルを更に備え、
    前記転送データの1回目の転送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記データ転送命令に基づいて前記転送パケットの前記パケットヘッダを生成し、前記生成したパケットヘッダを前記パケットヘッダ取得テーブルに登録する
    再送制御システム。
  3. 請求項2に記載の再送制御システムであって、
    前記転送データの再送を指示する前記データ転送命令を受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを読み出す
    再送制御システム。
  4. 請求項2又は3に記載の再送制御システムであって、
    前記転送パケットに応答するACKパケットを受け取った場合、前記パケット処理部は、前記パケットヘッダ取得テーブルから前記転送パケットの前記パケットヘッダを削除する
    再送制御システム。
  5. 請求項1に記載の再送制御システムであって、
    前記転送パケットに応答するACKパケットを受け取った場合、前記命令発行部は、前記転送データの再送を指示する前記データ転送命令を前記再送命令キューから削除する
    再送制御システム。
  6. ネットワークインタフェースにおける再送制御方法であって、
    前記ネットワークインタフェースとは別に設けられたメモリに転送データが格納され、
    前記ネットワークインタフェースは、
    前記転送データを含む転送パケットを生成するパケット処理部と、
    前記メモリから前記転送データを読み出すDMAコントローラと、
    CPUによって発行される、前記転送データの転送を指示するデータ転送命令が格納される命令キューと、
    前記転送データの再送を指示する前記データ転送命令が格納される再送命令キューと、
    命令発行部と
    を備え、
    前記再送制御方法は、
    前記転送データの1回目の転送あるいは再送を指示するデータ転送命令に応答して、前記転送パケットのパケットヘッダを前記パケット処理部が取得するステップと、
    前記DMAコントローラが前記メモリから前記転送データを読み出すステップと、
    前記DMAコントローラによって読み出された前記転送データに前記取得したパケットヘッダを付加することによって、前記転送パケットを前記パケット処理部が生成するステップと、
    前記命令キューあるいは前記再送命令キューから前記データ転送命令を前記命令発行部が読み出すステップと、
    前記読み出されたデータ転送命令を前記命令発行部が前記パケット処理部に出力し、且つ、前記読み出したデータ転送命令を前記命令発行部が前記再送命令キューに格納するステップと、
    ここで、前記データ転送命令は、前記転送データのサイズを示し、
    前記データ転送命令に基づいて、前記転送データのサイズがネットワークのMTU(Maximum Transmission Unit)を超えるか否かを前記命令発行部が判定するステップと、
    前記判定するステップによる判定の結果、前記転送データのサイズが前記ネットワークのMTUを超える場合、前記命令発行部が、前記データ転送命令を複数に分割し、前記複数のデータ転送命令を個別に前記パケット処理部に出力するステップと
    を含む
    再送制御方法。
JP2013516870A 2011-03-28 2011-09-09 再送制御システム及び再送制御方法 Expired - Fee Related JP5880551B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013516870A JP5880551B2 (ja) 2011-03-28 2011-09-09 再送制御システム及び再送制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011069826 2011-03-28
JP2011069826 2011-03-28
PCT/JP2011/005076 WO2012131806A1 (en) 2011-03-28 2011-09-09 Retransmission control system and retransmission control method
JP2013516870A JP5880551B2 (ja) 2011-03-28 2011-09-09 再送制御システム及び再送制御方法

Publications (2)

Publication Number Publication Date
JP2014515195A JP2014515195A (ja) 2014-06-26
JP5880551B2 true JP5880551B2 (ja) 2016-03-09

Family

ID=46929652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013516870A Expired - Fee Related JP5880551B2 (ja) 2011-03-28 2011-09-09 再送制御システム及び再送制御方法

Country Status (2)

Country Link
JP (1) JP5880551B2 (ja)
WO (1) WO2012131806A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9692642B2 (en) 2014-02-26 2017-06-27 Red Hat, Inc. Offloading to a network interface card
US9680774B2 (en) 2014-02-26 2017-06-13 Red Hat, Inc. Network interface card offloading
KR102013494B1 (ko) * 2017-09-20 2019-10-21 주식회사대한송유관공사 배관 상태 모니터링 장치 및 방법
CN112261142B (zh) * 2020-10-23 2023-07-14 浪潮(北京)电子信息产业有限公司 一种rdma网络的数据重传方法、装置及fpga
CN113806108A (zh) * 2021-08-25 2021-12-17 海光信息技术股份有限公司 一种重传方法、内存控制器、处理器系统及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6298444A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ通信方式
JPS63308445A (ja) * 1987-06-10 1988-12-15 Matsushita Electric Ind Co Ltd 通信プロトコル制御装置
JP2745521B2 (ja) * 1988-02-23 1998-04-28 株式会社日立製作所 フレーム送信方法
JP3473975B2 (ja) * 1993-09-08 2003-12-08 株式会社日立製作所 ネットワークシステムおよびネットワークにおける通信方法
JP3196661B2 (ja) * 1996-09-27 2001-08-06 日本電気株式会社 データ送信装置
JP2004128786A (ja) * 2002-10-01 2004-04-22 Fujitsu Ltd パケット再送制御装置
JP4786575B2 (ja) * 2007-03-20 2011-10-05 富士通株式会社 コンピュータとネットワークインタフェースコントローラ間のデータ転送方法、プログラム及びネットワークインタフェースコントローラ

Also Published As

Publication number Publication date
JP2014515195A (ja) 2014-06-26
WO2012131806A1 (en) 2012-10-04

Similar Documents

Publication Publication Date Title
US20200065269A1 (en) NVMeoF Messages Between a Host and a Target
US11809367B2 (en) Programmed input/output mode
US20180081853A1 (en) Secure handle for intra-and inter-processor communications
US8671152B2 (en) Network processor system and network protocol processing method
TWI332150B (en) Processing data for a tcp connection using an offload unit
US7827325B2 (en) Device, system, and method of speculative packet transmission
US20210011785A1 (en) Methods and apparatus for correcting out-of-order data transactions between processors
US20070011358A1 (en) Mechanisms to implement memory management to enable protocol-aware asynchronous, zero-copy transmits
US20050080928A1 (en) Method, system, and program for managing memory for data transmission through a network
US9578132B2 (en) Zero copy data transfers without modifying host side protocol stack parameters
TW200814672A (en) Method and system for a user space TCP offload engine (TOE)
JP5880551B2 (ja) 再送制御システム及び再送制御方法
US9071525B2 (en) Data receiving apparatus, data receiving method, and program storage medium
US7788437B2 (en) Computer system with network interface retransmit
WO2021063160A1 (zh) 访问固态硬盘的方法及存储设备
JP2009213065A (ja) Tcpバッファコピー分散並列処理装置、方法及びプログラム
CN113490927A (zh) 具有硬件集成和乱序放置的rdma输送
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US20060004904A1 (en) Method, system, and program for managing transmit throughput for a network controller
US7404040B2 (en) Packet data placement in a processor cache
JP2019106697A (ja) 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス
CN114490463A (zh) 一种保序执行写请求的方法及网络设备
US11038856B2 (en) Secure in-line network packet transmittal
JP5911943B2 (ja) データの少なくとも一部が処理に利用可能であることの少なくとも1つのインジケーションの少なくとも部分的な提供
US7839875B1 (en) Method and system for an efficient transport loopback mechanism for TCP/IP sockets

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160118

R150 Certificate of patent or registration of utility model

Ref document number: 5880551

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees