JP4757109B2 - データ通信プログラム - Google Patents

データ通信プログラム Download PDF

Info

Publication number
JP4757109B2
JP4757109B2 JP2006174106A JP2006174106A JP4757109B2 JP 4757109 B2 JP4757109 B2 JP 4757109B2 JP 2006174106 A JP2006174106 A JP 2006174106A JP 2006174106 A JP2006174106 A JP 2006174106A JP 4757109 B2 JP4757109 B2 JP 4757109B2
Authority
JP
Japan
Prior art keywords
retransmission buffer
connection
transmission data
data
communication
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
JP2006174106A
Other languages
English (en)
Other versions
JP2008005315A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006174106A priority Critical patent/JP4757109B2/ja
Priority to US11/812,658 priority patent/US8228799B2/en
Publication of JP2008005315A publication Critical patent/JP2008005315A/ja
Application granted granted Critical
Publication of JP4757109B2 publication Critical patent/JP4757109B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

この発明は、送信データを格納する再送バッファを備えたホストメモリから同じく送信データを格納する再送バッファを備えたネットワークハードウェアに送信データ転送し、送受信ホスト間もしくはネットワークハードウェア上に確立された仮想的な通信経路であるコネクションを通して送信データを通信先端末に送信するデータ通信プログラムに関する。
従来より、コンピュータ間の通信において信頼性を確保した通信を行う方法において、通信がエラーしたとき、もしくはエラーしたと考えられるときに、既に送ったデータを再転送する方法がある。この方法では、送信側に送信されたデータを再転送用に格納するための再送バッファが必要になる。
このようなコンピュータ間通信で広く使われているSocket−API(Application Program Interface)とTCP/IP(Transmission Control Protocol/Internet Protocol)による通信システムでは、この再送バッファをホストコンピュータのOS(Operating System)内部に設けることが一般的である。例えば、OS内の再転送バッファに再転送用のデータをプロセッサでコピーしておき、通信先端末からの通信確認がとれず再転送が必要となった場合には、OS内部の再転送用データを再転送する。
また、COE(Copy Offload Engine)方式では、このコピー動作を削減するZero−Copy通信を行う。このZero−Copy通信では、再転送バッファをNIC(Network Interface Card)内のメモリに置き、アプリケーションから送信する際にOS内メモリにコピーせず、NICメモリに直接データを転送して格納し、再転送が必要となった場合には、NICメモリ内部の再転送用データを再転送する。なお、NIC内メモリを再送バッファとして使うことは、NIC上でTCP/IP処理の一部またはすべてを行うTOE(TCP/IP Offload Engine)と呼ばれる方式でも使用可能な方法である。
特開2004−274376号公報
ところで、上記した再送バッファをホストコンピュータのOS(Operating System)内部に設ける通信方法では、OS内の再転送バッファにデータをプロセッサでコピーしてからネットワークカードにデータを転送するので、再転送バッファへのプロセッサのデータコピーの負荷が問題となって高速通信が実現しにくいという課題がある。
また、上記した再転送バッファをNIC(Network Interface Card)内のメモリに通信方法では、通信先端末によってはNICに大容量のメモリが必要になり、NICのコストダウンにとって大きな障壁になるという課題がある。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、ネットワークハードウェア内のメモリの使用量を抑制しつつ、通信の高速化を図ることを目的とする。
上述した課題を解決し、目的を達成するため、発明は、送信データを格納する再送バッファを備えたホストメモリから同じく送信データを格納する再送バッファを備えたネットワークハードウェアに前記送信データを転送し、送受信ホスト間もしくは当該ネットワークハードウェア上に確立された仮想的な通信経路であるコネクションを通して前記送信データを通信先端末に送信するデータ通信方法をコンピュータに実行させるデータ通信プログラムであって、前記コネクションごとに、前記通信先端末との間の応答時間を測定する測定手順と、前記測定手順によって測定された前記応答時間が所定の遅延閾値より大きいかを判定する判定手順と、前記判定手順によって前記応答時間が前記所定の遅延閾値より大きいと判定された場合には、送信データをホストメモリ内の再送バッファに格納し、前記応答時間が前記所定の遅延閾値より小さいと判定された場合には、前記送信データを前記ネットワークハードウェア内の再送バッファに格納する格納手順と、をコンピュータに実行させることを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記コネクションごとに、前記送信データによって使用される再送バッファの使用量をさらに測定し、前記判定手順は、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、前記測定手順によって測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、前記格納手順は、前記応答時間が前記所定の遅延閾値より大きいが、前記判定手順によって前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定された場合にも、前記コネクションの送信データを前記ネットワークハードウェア内の再送バッファに格納することを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記通信先端末からの確認応答のデータに付与されたシーケンス番号から現に送信しようとしているデータのシーケンス番号を引いた値に応じて、前記再送バッファの使用量を測定することを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記送信データの転送および格納を開始した後においても、前記応答時間を測定し、前記判定手順は、前記送信データの転送および格納を開始した後においても、前記測定手順によって測定された前記応答時間が所定の遅延閾値より大きいかを判定し、前記ホストメモリの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における前記応答時間が所定の遅延閾値より小さいと判定された場合には、当該コネクションにおける送信データの格納先を前記ネットワークハードウェア内の再送バッファに切り替え、前記ネットワークハードウェアの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における前記応答時間が所定の遅延閾値より大きいと判定された場合には、当該コネクションにおける送信データの格納先を前記ホストメモリ内の再送バッファに切り替える切替手順をさらに備えることを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記送信データの転送および格納を開始した後においても、前記再送バッファの使用量をさらに測定し、前記判定手順は、前記送信データの転送および格納を開始した後においても、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、前記測定手順によって測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、前記ホストメモリの再送バッファに格納が開始されているコネクションについて、前記応答時間が前記所定の遅延閾値より大きいが、転送および格納を開始した後における前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定されたコネクションについても、当該コネクションにおける送信データの格納先を前記ネットワークハードウェア内の再送バッファに切り替える切替手順をさらに備えることを特徴とする。
また、発明は、上記の発明において、前記切替手順は、前記送信データを前記ネットワークハードウェア内の再送バッファに格納されているコネクションと、前記送信データを前記ネットワークハードウェア内の再送バッファに格納されているコネクションとで、前記送信データの格納先を切り替える条件である切替条件が異なるようにして前記送信データの格納先を切り替えることを特徴とする。
また、発明は、上記の発明において、前記切替手順は、前記送信データを前記ネットワークハードウェア内の再送バッファに格納することを中止されて前記ホストメモリ内の再送バッファに格納されたコネクションを除いて、前記格納先を切り替えることを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記コネクションの確立時において、前記応答時間を測定することを特徴とする。
また、発明は、上記の発明において、前記測定手順は、前記コネクションの確立後において、前記応答時間を測定することを特徴とする。
また、発明は、上記の発明において、前記ネットワークハードウェア内の再送バッファによって格納可能なデータ容量を示す再送バッファ上限値を設定する上限値設定手順をさらに備え、前記格納手順は、前記上限値設定手順によって設定された前記再送バッファ上限値から現在使用されている前記ネットワークハードウェア内の再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、前記送信データを前記ネットワークハードウェア内の再送バッファに格納することを特徴とする。
発明によれば、コネクションごとに、通信先端末との間の応答時間を測定し、測定された応答時間が所定の遅延閾値より大きいかを判定し、応答時間が所定の遅延閾値より大きいと判定された場合には、送信データをホストメモリ内の再送バッファに格納し、応答時間が所定の遅延閾値より小さいと判定された場合には、送信データをネットワークハードウェア内の再送バッファに格納するので、応答時間が大きい(送信データをネットワークハードウェア内の再送バッファに格納することによる通信高速化の効果が薄い)コネクションについては、送信データをホストメモリ内の再送バッファに格納してネットワークハードウェア内のメモリの使用量を抑制し、一方、応答時間が小さい(送信データをネットワークハードウェア内の再送バッファに格納することによる通信高速化の効果が高い)コネクションについては、送信データをネットワークハードウェア内の再送バッファに格納して、通信の高速化を図る結果、ネットワークハードウェア内のメモリの使用量を抑制しつつ、通信の高速化を図ることが可能である。
また、発明によれば、コネクションごとに、送信データによって使用される再送バッファの使用量をさらに測定し、応答時間が所定の遅延閾値より大きいと判定したコネクションについて、測定された再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、応答時間が所定の遅延閾値より大きいが、再送バッファの使用量が所定の使用量閾値より小さいと判定された場合にも、コネクションの送信データをネットワークハードウェア内の再送バッファに格納するので、応答時間は長いが再送バッファの使用量は小さい(送信データをネットワークハードウェア内の再送バッファに格納することによる通信高速化の効果が高い)コネクションについては、送信データをネットワークハードウェア内の再送バッファに格納して、通信の高速化を図ることが可能である。
また、発明によれば、通信先端末からの確認応答のデータに付与されたシーケンス番号から現に送信しようとしているデータのシーケンス番号を引いた値に応じて、再送バッファの使用量を測定するので、シーケンス番号を用いて、精度良く再送バッファの使用量を測定することが可能である。
また、発明によれば、送信データの転送および格納を開始した後においても、応答時間を測定し、送信データの転送および格納を開始した後においても、測定された応答時間が所定の遅延閾値より大きいかを判定し、ホストメモリの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における応答時間が所定の遅延閾値より小さいと判定された場合には、そのコネクションにおける送信データの格納先を前記ネットワークハードウェア内の再送バッファに切り替え、ネットワークハードウェアの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における応答時間が所定の遅延閾値より大きいと判定された場合には、そのコネクションにおける送信データの格納先を前記ホストメモリ内の再送バッファに切り替えるので、送信データをネットワークハードウェア内の再送バッファに格納しているコネクションにおける応答時間が大きくなった場合には、送信データの格納先を切り替えて、ホストメモリ内の再送バッファに格納する結果、ネットワークハードウェア内のメモリの使用量を抑制することが可能である。
また、発明によれば、送信データの転送および格納を開始した後においても、再送バッファの使用量をさらに測定し、送信データの転送および格納を開始した後においても、応答時間が所定の遅延閾値より大きいと判定したコネクションについて、測定された再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、ホストメモリの再送バッファに格納が開始されているコネクションについて、応答時間が所定の遅延閾値より大きいが、転送および格納を開始した後における再送バッファの使用量が前記所定の使用量閾値より小さいと判定されたコネクションについても、そのコネクションにおける送信データの格納先をネットワークハードウェア内の再送バッファに切り替えるので、送信データをネットワークハードウェア内の再送バッファに格納しているコネクションにおける再送バッファの使用量が大きくなった場合には、送信データの格納先を切り替えて、ホストメモリ内の再送バッファに格納する結果、ネットワークハードウェア内のメモリの使用量を抑制することが可能である。
また、発明によれば、送信データをネットワークハードウェア内の再送バッファに格納されているコネクションと、送信データをネットワークハードウェア内の再送バッファに格納されているコネクションとで、送信データの格納先を切り替える条件である切替条件が異なるようにして送信データの格納先を切り替えるので、送信データをホストメモリ内の再送バッファに格納するように切り替える閾値と、送信データをネットワークハードウェア内の再送バッファに格納するように切り替える閾値が異なる結果、例えば、送信データをネットワークハードウェア内の再送バッファに格納する場合に通信速度が上がって再送バッファ量が増えることがあり、送信データを格納する再送バッファを切り替える条件が頻繁に起きるような場合でも、切り替えの頻度を適切に抑制しシステムの挙動を安定化させることが可能である。
また、発明によれば、送信データをホストメモリ内の再送バッファに格納することを中止されてネットワークハードウェア内の再送バッファに格納されたコネクションを除いて、格納先を切り替えるので、送信データを格納する再送バッファを切り替える条件が頻繁に起きるような場合でも、切り替えの頻度を適切に抑制しシステムの挙動を安定化させることが可能である。
また、発明によれば、コネクションの確立時において、応答時間を測定するので、例えば、ハンドシェイク時における通信先端末とのデータの送受信に応じて、簡略かつ精度良く応答時間を測定することが可能である。
また、発明によれば、コネクション確立後において、応答時間を測定するので、リアルタイムに精度良く応答時間を測定することが可能である。
また、発明によれば、ネットワークハードウェア内の再送バッファによって格納可能なデータ容量を示す再送バッファ上限値を設定し、設定された再送バッファ上限値から現在使用されているネットワークハードウェア内の再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、送信データをネットワークハードウェア内の再送バッファに格納するので、ネットワークハードウェア内のメモリの使用量を任意に設定することが可能である。
以下に添付図面を参照して、この発明に係るデータ通信プログラムの実施例を詳細に説明する。
以下の実施例では、実施例1に係る通信システムの概要および特徴、通信システムの構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[実施例1に係る通信システムの概要および特徴]
まず最初に、図1を用いて、実施例1に係る通信システムの概要および特徴を説明する。図1は、実施例1に係る通信システムの概要および特徴を説明するための図である。なお、以下の実施例1では、TCP/IP通信を適用した場合を説明し、受信側はパケットを受信すると受信確認応答を送信側に返し、送信側が受信確認応答を受け取ると、再送バッファ領域のうち確認応答がされたデータ領域部分を解放する。
実施例1の通信システム1では、送信データを格納するOS再送バッファ13dを備えたホストコンピュータ10から同じく送信データを格納するNIC再送バッファ24aを備えたNIC20に送信データを転送し、そのホストコンピュータ10上もしくはNIC20上に確立された仮想的な通信経路であるコネクションを通して送信データを通信先端末40に送信することを概要とする。そして、この通信システム1では、NIC20内のメモリの使用量を抑制しつつ、通信の高速化を図る点に主たる特徴がある。
この主たる特徴について説明すると、通信システム1は、図1に示すように、ホストコンピュータ10およびNIC(Network Interface Card)20から成っている。かかるホストコンピュータ10は、ホストメモリ10aに記憶されるアプリケーション(図1では、「アプリ」と記載)10bおよびOS(Operating System)10cで構成され、OS10c内部に再送用の送信データを格納するOS再送バッファ13dを備える。また、NIC20は、NICメモリ20aを備え、そのNICメモリ20a内に再送用の送信データを格納するNIC再送バッファ24aを備える。
そして、通信システム1のホストコンピュータ10は、ホストコンピュータ10上もしくはNIC20上に仮想的な通信経路(以下、コネクションという)の確立時において、コネクションごとに、通信端末40との間の応答時間であるRTT(Round Trip Time)を測定する。具体的には、ホストコンピュータ10は、アプリケーション10bのAPI(Application Program Interface)が通信に先立ってコネクションの確立をOS10cに指示すると、各コネクションが確立する時のRTTを測定する。
続いて、ホストコンピュータ10は、測定されたRTTが所定の閾値より大きいかを判定する。その結果、ホストコンピュータ10は、RTTが所定の閾値より大きいと判定された場合には、ホストコンピュータ内のOS再送バッファ13dへ送信データの格納を開始し、NIC20に送信データの転送を開始する(図1の(a)参照)。具体的には、ホストコンピュータ10は、RTTが所定の閾値より大きいと判定された場合には、アプリケーション10bのメモリ空間からOS再送バッファ13dに再転送用のデータをプロセッサでコピーし、OS10c内部のTCP/IPプロトコルスタックによってデータをパケット化し、そのパケット化されたデータをNIC20に転送することを開始する。その後、NIC20は、このパケット化されたデータをネットワーク30を介して通信先端末40に送信することを開始する(以上のように、OS再送バッファ13dへ送信データを格納しつつ、NIC20に送信データを転送することを「通常通信」という)。
一方、ホストコンピュータ10は、RTTが所定の閾値より小さいと判定された場合には、NIC20へ送信データの転送を開始し、その転送された送信データをNIC20内のNIC再送バッファ24aに格納させることを開始する(図1の(b)参照)。具体的には、ホストコンピュータ10は、RTTが所定の閾値より小さいと判定された場合には、送信データをOS10cによってアプリケーション10bのメモリ領域からNIC20内部のNIC再送バッファ24aに直接DMA(Direct Memory Access)転送し、また、OS10cがDMA転送データに対応するパケットヘッダを作成し、NIC20に転送することを開始する。その後、NIC20は、DMA転送されたデータとパケットヘッダを組み合わせてパケットを作成し、この作成されたパケットをネットワーク30を介して通信先端末40に送信することを開始する(以上のように、NIC20へ送信データを転送しつつ、送信データをNIC再送バッファ24aに格納することを「ゼロコピー通信」という)。
このように、通信システム1は、RTTが小さい送信データについては、NIC再送バッファ24aに格納してOSによるデータコピーを省略する結果、また再送バッファの使用量が大きい送信データについては、ホストメモリに格納してメモリの使用量を抑制する結果、上記した主たる特徴のごとく、ネットワークハードウェア内のメモリの使用量を抑制しつつ、通信の高速化を図ることが可能である。
[ホストコンピュータの構成]
次に、図2を用いて、図1に示したホストコンピュータ10の構成を説明する。図2は、実施例1に係るホストコンピュータ10の構成を示すブロック図である。同図に示すように、このホストコンピュータ10は、NIC制御IF11、制御部12、記憶部13を備え、NIC20と接続される。以下にこれらの各部の処理を説明する。
このうち、NIC制御IF11は、接続されるNIC20との間でやり取りする各種情報に関する通信を制御する手段である。具体的には、NIC制御IF11は、NIC20へ送信データを転送し、またNIC20から応答確認を受信する。
記憶部13は、制御部12による各種処理に必要なデータおよびプログラムを格納する格納手段であり、特に本発明に密接に関連するものとしては、RTT記憶部13a、コネクション記憶部13b、上限値記憶部13c、OS再送バッファ13dを備える。
このうち、RTT記憶部13aは、コネクションごとのRTTを記憶する手段である。具体的には、RTT記憶部13aは、図3に例示するように、後述するRTT測定部12bによって測定されるコネクション確立時における各コネクションのRTTを記憶する。
コネクション記憶部13bは、コネクションごとのRTTが閾値より大きいか小さいかの判定結果を記憶する手段である。具体的には、コネクション記憶部13bは、図4に例示するように、各コネクションのRTTが閾値よりも大きかったのか、小さかったのかを記憶する。なお、RTTが閾値よりも「大」の場合は、通常通信を行い、RTTが閾値よりも「小」の場合は、ゼロコピー通信を行う。
上限値記憶部13cは、NIC再送バッファ24aによって格納可能なデータ容量の上限値を記憶する手段である。具体的には、図示しない上限値設定部によって、NIC20の通信速度と、後述するコネクション判定部12cによって用いられるRTTの閾値との積の値以上が設定され、再送バッファの上限値として記憶する。
OS再送バッファ13dは、送信データを記憶する手段であり、具体的には、「通常通信」の場合には、後述する再送バッファ格納部12dによって送信データを格納される。
制御部12は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する処理部であり、特に本発明に密接に関連するものとしては、API呼び出し部12a、RTT測定部12b、コネクション判定部12c、再送バッファ格納部12d、データ転送部12eを備える。なお、RTT測定部12bは、特許請求の範囲に記載の「測定手段」に対応し、コネクション判定部12cは、特許請求の範囲に記載の「判定手段」に対応し、再送バッファ格納部12dは、特許請求の範囲に記載の「格納手段」に対応する。
このうち、API呼び出し部12aは、送信APIを呼び出し、データの送信をOS10cに指示する処理部であり、具体的には、アプリケーション10bのAPIによってデータの送信をOS10cに指示する。
RTT測定部12bは、コネクションごとに、通信端末40との間の応答時間であるRTT(Round Trip Time)を測定する処理部であり、具体的には、ホストコンピュータ10のアプリケーション10bが通信に先立ってコネクションの確立をOS10cに指示すると、各コネクションが確立する時のRTTを測定し、測定結果をRTT記憶部13aに記憶させる。
コネクション判定部12cは、コネクションごとに、RTTが所定の閾値より大きいかを判定する処理部である。具体的には、コネクション判定部12cは、RTT記憶部13aからコネクションごとのRTTを読み出し、その読み出されたコネクションごとのRTTが所定の閾値より大きいかを判定する。その結果、コネクション判定部12cは、RTTが所定の閾値より大きい場合には、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「通常通信動作」に設定する。一方、コネクション判定部12cは、RTTが所定の閾値より小さい場合には、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「ゼロコピー通信動作」に設定する。
再送バッファ格納部12dは、送信データを再送バッファに格納する処理部である。具体的には、再送バッファ格納部12dは、API呼び出し部12aによって送信APIが呼び出されると、コネクション記憶部13bからコネクションごとの判定結果を読み出し、RTTが所定の閾値より大きいコネクション(ゼロコピー不可のコネクション)である場合には、ホストコンピュータ10内のOS再送バッファ13dへ送信データの格納を開始し、格納された送信データをNIC20へ転送することを後述するデータ転送部12eに開始するように指示する。
一方、再送バッファ格納部12dは、RTTが所定の閾値より小さいコネクション(ゼロコピー可能なコネクション)である場合には、メッセージサイズおよびメモリの空きを考慮してゼロコピー通信を行うかを決定する。その結果、再送バッファ格納部12dは、ゼロコピー通信を行うと決定した場合には、後述するデータ転送部12eに送信データをNIC20へ転送することを開始するように指示し、通常通信を行うと決定した場合には、ホストコンピュータ内のOS再送バッファ13dへ送信データの格納を開始し、送信データをNIC20へ転送することを後述するデータ転送部12eに開始するように指示する。
ここで、メッセージサイズおよびメモリの空きを考慮してゼロコピー通信を行うかを判定する処理について、詳しく説明する。つまり、再送バッファ格納部12dは、RTTが所定の遅延閾値より大きいと判定したコネクションについて、メッセージサイズを測定し、コネクションにおける送信データのメッセージサイズが所定のサイズよりも大きい場合にのみ、ゼロコピー通信を行うことを決定する。また、再送バッファ格納部12dは、上限値記憶部13cからNIC再送バッファ24aによって格納可能なデータ容量の上限値を読み出し、その上限値から現在使用されているNIC内の再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、ゼロコピー通信を行うことを決定する。
データ転送部12eは、送信データをNIC20に転送する処理部である。具体的には、データ転送部12eは、送信データをNIC20へ転送することを開始する指示を受け付けると送信データをNIC20に転送する。
[NICの構成]
次に、図5を用いて、図1に示したNIC20の構成を説明する。図5は、実施例1に係るNIC20の構成を示すブロック図である。同図に示すように、このNIC20は、ホストコンピュータ制御IF21、通信制御IF22、制御部23、記憶部24を備え、ホストコンピュータ10およびネットワーク30と接続される。以下にこれらの各部の処理を説明する。
このうち、ホストコンピュータ制御IF21は、接続されるNIC20との間でやり取りする各種情報に関する通信を制御する手段である。具体的には、ホストコンピュータ制御IF21は、ホストコンピュータ10から送信データを受信し、またホストコンピュータ10へ応答確認を送信する。
通信制御IF22は、ネットワーク30を介して接続される通信先端末40との間でやり取りする各種情報に関する通信を制御する手段である。具体的には、通信制御IF22は、ネットワーク30を介して通信先端末40へ送信データを送信する。
記憶部24は、制御部23による各種処理に必要なデータおよびプログラムを格納する格納手段であり、特に本発明に密接に関連するものとしては、NIC再送バッファ24aを備える。このNIC再送バッファ24aは、送信データを記憶する手段であり、具体的には、RTTが所定の閾値より小さい場合には、後述する再送バッファ格納部23aによって送信データを格納される。
制御部12は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する処理部であり、特に本発明に密接に関連するものとしては、再送バッファ格納部23aおよびデータ送信部23bを備える。
このうち、再送バッファ格納部23aは、送信データをNIC再送バッファ24aに格納する処理部であり、具体的には、ホストコンピュータ10の再送バッファ格納部12dによってRTTが所定の閾値より小さいと判定され、ホストコンピュータ10から送信データを受信すると、その送信データをNIC再送バッファ24aに格納することを開始する。
データ送信部23bは、送信データを送信する処理部である。具体的には、データ送信部23bは、ゼロコピー通信において、NIC再送バッファ24aに送信データの格納した後に、送信データを送信先端末40に送信することを開始する。また通常通信において、データ送信部23bは、ホストコンピュータから転送された送信データを送信先端末40に送信することを開始する。
[通信処理]
次に、図6および図7を用いて、実施例1に係る通信システムによる通信処理を説明する。図6は、実施例1に係る通信システム1の通信処理を説明するためのシーケンス図であり、図7は、格納先設定処理を説明するためのフローチャートである。
図6に示すように、通信システム1のホストコンピュータ10は、アプリケーション10bが通信に先立ってコネクションの確立をOS10cに指示すると、コネクションごとに送信データの格納先を設定する処理を行う(ステップS101)。
ここで、図7を用いて、コネクションごとに送信データの格納先を設定する処理について詳しく説明する。ホストコンピュータ10のRTT測定部12bは、アプリケーション10bが通信に先立ってコネクションの確立をOS10cに指示すると(ステップS201)、各コネクションが確立する時のRTTを測定し、測定結果をRTT記憶部13aに記憶させる(ステップS202)。コネクション判定部12cは、RTT記憶部13aからコネクションごとのRTTを読み出し、その読み出されたコネクションごとのRTTが所定の閾値より大きいかを判定する(ステップS203)。その結果、コネクション判定部12cは、RTTが所定の閾値より大きい場合には(ステップS203肯定)、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「通常通信動作」に設定する(ステップS204)。一方、コネクション判定部12cは、RTTが所定の閾値より小さい場合には(ステップS203否定)、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「ゼロコピー通信動作」に設定する(ステップS205)。
図6の説明に戻ると、再送バッファ格納部12dは、API呼び出し部12aによって送信APIが呼び出されると(ステップS102)、コネクション記憶部13bからコネクションごとの判定結果を読み出し、ゼロコピー可能であるかを判定する。(ステップS103)、再送バッファ格納部12dは、RTTが所定の閾値より大きいコネクション(ゼロコピー不可のコネクション)である場合には(ステップS103否定)、OS再送バッファ13dへ送信データの格納を開始する(ステップS106)。そして、データ転送部12eは、格納された送信データをNIC20へ転送することを開始する(ステップS107)。その後、データ送信部23bは、送信データを送信先端末40に送信することを開始する(ステップS109)。なお、格納処理、転送処理、送信処理は、それぞれの処理が終了するまで継続する。
一方、再送バッファ格納部12dは、RTTが所定の閾値より小さいコネクション(ゼロコピー可能なコネクション)である場合には(ステップS103肯定)、メッセージサイズおよびメモリの空きを考慮してゼロコピー通信を行うかを決定する(ステップS104)。その結果、通常通信を行うと決定した場合には(ステップS104否定)、上記と同様に、OS再送バッファ13dへ送信データの格納を開始し(ステップS106)、格納された送信データをNIC20へ転送することを開始し(ステップS107)、その後、送信データを送信先端末40に送信することを開始する(ステップS109)。
一方、データ転送部12eは、ゼロコピー通信を行うと決定した場合には(ステップS104肯定)、送信データをNIC20へ転送することを開始する(ステップS105)。そして、NIC20の再送バッファ格納部23aは、ホストコンピュータ10から送信データを受信し、その送信データをNIC再送バッファ24aに格納することを開始する(ステップS108)。その後、データ送信部23bは、送信データを送信先端末40に送信することを開始する(ステップS109)。なお、格納処理、転送処理、送信処理は、それぞれの処理が終了するまで継続する。
[実施例1の効果]
上述してきたように、通信システム1は、コネクションごとに、通信先端末40との間の応答時間を測定し、測定された応答時間が所定の遅延閾値より大きいかを判定し、応答時間が所定の遅延閾値より大きいと判定された場合には、送信データをホストメモリ10a内の再送バッファに格納し、応答時間が所定の遅延閾値より小さいと判定された場合には、送信データをNIC20内の再送バッファに格納するので、応答時間が大きい(送信データをNIC20内の再送バッファに格納することによる通信高速化の効果が薄い)コネクションについては、送信データをホストメモリ10a内の再送バッファに格納してネットワークハードウェア内のメモリの使用量を抑制し、一方、応答時間が小さい(送信データをネットワークハードウェア内の再送バッファに格納することによる通信高速化の効果が高い)コネクションについては、送信データをネットワークハードウェア内の再送バッファに格納して、通信の高速化を図る結果、ネットワークハードウェア内のメモリの使用量を抑制しつつ、通信の高速化を図ることが可能である。
また、実施例1によれば、コネクションの確立時において、応答時間を測定するので、例えば、ハンドシェイク時における通信先端末とのデータの送受信に応じて、簡略かつ精度良く応答時間を測定することが可能である。
また、実施例1によれば、NIC20内の再送バッファによって格納可能なデータ容量を示す再送バッファ上限値を設定し、設定された再送バッファ上限値から現在使用されているNIC20内の再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、送信データをNIC20内の再送バッファに格納するので、NIC20内のメモリの使用量を任意に設定することが可能である。
また、実施例1によれば、応答時間が所定の遅延閾値より大きいと判定したコネクションについて、そのコネクションにおける送信データのメッセージサイズが所定のサイズよりも大きい場合にのみ、送信データをNIC20内の再送バッファに格納するので、メッセージサイズが非常に小さい(送信データをNIC20内の再送バッファに格納することによる通信高速化の効果が薄い)送信データについては、NIC20内の再送バッファに格納せず、一方、メッセージサイズが所定のサイズよりも大きい(送信データをNIC20内の再送バッファに格納することによる通信高速化の効果が高い)送信データについては、NIC20内の再送バッファに格納する結果、NIC20内のメモリの使用量を抑制することが可能である。
ところで、上記の実施例1では、コネクション確立時のRTTに応じて、送信データの格納先を設定していたが、本発明はこれに限定されるものではなく、コネクション確立後のRTTに応じて、送信データの格納先を設定するようにしてもよい。
そこで、以下の実施例2では、コネクション確立後のRTTに応じて、コネクションごとに送信データの格納先を設定する場合として、図8を用いて、実施例2に係る通信システムによる通信処理を説明する。図8は、実施例2に係る通信システムの通信処理を説明するためのシーケンス図である。
図8に示すように、ホストコンピュータ10は、アプリケーション10bが通信に先立ってコネクションの確立をOS10cに指示すると(ステップS301)、通常通信を開始する(ステップS302、ステップS303、ステップS310)。つまり、ホストコンピュータ10の再送バッファ格納部12eがOS再送バッファ13dへ送信データの格納を開始した後(ステップS302)、データ転送部12eは、格納された送信データをNIC20へ転送することを開始する(ステップS303)、NIC20のデータ送信部23bは、転送された送信データを送信先端末40に送信する(ステップS310)。
続いて、ホストコンピュータのRTT測定部12bは、通常通信時のRTTを測定する(ステップS304)。そして、コネクション判定部12cは、その測定されたRTTを用いて、格納先設定処理を上記の実施例1と同様に行う(ステップS305、図7参照)。
そして、再送バッファ格納部12dは、コネクション記憶部13bからコネクションごとの判定結果を読み出してゼロコピー通信が可能であるかを確認し(ステップS306)、RTTが所定の閾値より大きいコネクション(ゼロコピー不可のコネクション)である場合には(ステップS306否定)、通常通信を継続する(つまり、ステップS302、ステップS303、ステップS310がそれぞれ終了するまで継続する)。
一方、再送バッファ格納部12dは、RTTが所定の閾値より小さいコネクション(ゼロコピー可能なコネクション)である場合には(ステップS306肯定)、メッセージサイズおよびメモリの空きを考慮してゼロコピー通信を行うかを決定する(ステップS307)。その結果、再送バッファ格納部12dは、通常通信を行うと決定した場合には(ステップS307否定)、上記と同様、通常通信を継続する。
一方、データ転送部12eは、ゼロコピー通信を行うと決定した場合には(ステップS307肯定)、OS再送バッファにデータを格納すること(ステップS302、ステップS303、ステップS310で開始された処理)を中止して送信データをNIC20へ転送する(ステップS308)。そして、NIC20の再送バッファ格納部23aは、ホストコンピュータ10から送信データを受信し、その送信データをNIC再送バッファ24aに格納することを開始する(ステップS309)。その後、データ送信部23bは、送信データを送信先端末40に送信する(ステップS310)。なお、格納処理、転送処理、送信処理は、それぞれの処理が終了するまで継続する。
このように、コネクション確立後において、応答時間を測定するので、リアルタイムに精度良く応答時間を測定することが可能である。
ところで、上記の実施例2では、RTTに応じて、送信データの格納先を設定しているが、本発明はこれに限定されるものではなく、RTTとともに、再送バッファの使用量に応じて、送信データの格納先を設定するようにしてもよい。
そこで、以下の実施例3では、RTTとともに、再送バッファの使用量に応じて、コネクションごとに送信データの格納先を設定する場合として、図9〜図12を用いて、実施例3におけるホストコンピュータ10aの構成と、実施例3に係る通信システム1による通信処理とについて説明する。図9は、実施例3に係るホストコンピュータ10aの構成を示すブロック図であり、図10は、再送バッファ使用量の測定について説明するための図であり、図11は、コネクション判定処理の一例を説明するための図であり、図12は、格納先設定処理を説明するためのフローチャートである。
図9に示すように、ホストコンピュータ10aは、図2に示したホストコンピュータ10と比較して、制御部12が再送バッファ使用量測定部12fを新たに備え、記憶部13が再送バッファ使用量記憶部13eを新たに備える点が相違する。
かかるホストコンピュータ10aにおいて、再送バッファ使用量記憶部13eは、再送バッファの使用量を記憶する手段であり、具体的には、再送バッファ使用量測定部12fによって測定された再送バッファの使用量を記憶する。
再送バッファ使用量測定部12fは、コネクションごとに、送信データよって使用される再送バッファの使用量を測定する処理部であり、具体的には、コネクションごとに、通信速度と応答確認の遅延であるRTT(Round Trip Time)との積を算出して再送バッファの使用量を測定し、測定結果を再送バッファ使用量記憶部13eに記憶させる。
ここで、図10を用いて再送バッファの使用量を測定する処理を詳しく説明する。同図に示すように、例えば、所定のコネクションにおいて、通信速度が1GB/s(10Gbps)、応答確認の遅延(RTT)が200msである場合には、両者の積(200ms×1GB)である200MBを再送バッファの使用量として測定する。
また、実施例3におけるコネクション判定部12cは、RTTが所定の閾値より大きいかを判定し、RTTが所定の遅延閾値より大きいと判定したコネクションについて、再送バッファの使用量が所定の閾値より小さいかをさらに判定する処理部である。具体的には、コネクション判定部12cは、RTT記憶部13aからコネクションごとのRTTを読み出し、その読み出されたコネクションごとのRTTが所定の閾値より大きいと判定した後に、再送バッファ使用量記憶部13eからコネクションごとの再送バッファの使用量を読み出し、その読み出されたコネクションごとの再送バッファの使用量が所定の閾値より大きいかを判定する。
その結果、コネクション判定部12cは、再送バッファの使用量が所定の閾値より大きい場合には、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「通常通信動作」に設定する。また、コネクション判定部12cは、再送バッファの使用量が所定の閾値より小さい場合には、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、「ゼロコピー通信動作」に設定する。
ここで、図11を用いてコネクション判定処理の一例を説明する。同図に示すように、4通りの通信(CaseA〜D)を例にして説明する。かかる4通りの通信は、Bandwidth(通信速度)が10Gbpsと100Mbpsの場合で、それぞれRTTが1msと200msの場合のコネクションである。図11では、これらのコネクションあたりの再送バッファの使用量(Bandwidth×RTTの積=BT積)を4列目に示し、また、それぞれのコネクションが10Gbpsの物理帯域を使い切るだけの数だけあるとした場合に、全コネクションの再送バッファ量の合計を5列目に示す。
CaseAやCのコネクションについては、RTTが少ないので、ゼロコピー通信の対象にする。なお、こうしたRTTが小さい場合の通信は、クラスタ間やブレードサーバのブレード間の通信等で起こる。
また、CaseBのコネクションについては、RTTが大きく、かつ再送バッファ量が大きいので、ゼロコピー通信の対象から除外する。また、CaseDのコネクションについては、RTTが大きいが、再送バッファの使用量(BT積)が小さいので、ゼロコピー通信の対象とするが、たくさんのコネクションがある場合は、NIC再送バッファ24aに空きがある限りゼロコピーの対象にする。この場合、NIC再送バッファ24aに空きがなくなった時点で、新たなコネクションは通常通信とする。
次に、実施例3にかかる格納先設定処理について説明する。なお、通信処理は、図8と同様に行われるが、その詳細な説明を省略し、そのなかの格納先設定処理について説明する。実施例3の格納先設定処理は、図7に示した実施例1にかかる格納先設定処理と比較して、RTTが所定の閾値より大きいと判定した後に、再送バッファの使用量が閾値より大きいかをさらに判定する処理を新たに行う点が相違する。
すなわち、図12に示すように、RTT記憶部13aからコネクションごとのRTTを読み出し(ステップS401)、その読み出されたコネクションごとのRTTが所定の閾値より大きいと判定した後に(ステップS402肯定)、コネクション判定部12cは、再送バッファ使用量記憶部13eからコネクションごとの再送バッファの使用量を読み出し(ステップS403)、その読み出されたコネクションごとの再送バッファの使用量が所定の閾値より大きいかを判定する(ステップS404)。
その結果、コネクション判定部12cは、再送バッファの使用量が所定の閾値より大きい場合には(ステップS404肯定)、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、通常通信動作に設定する(ステップS405)。また、コネクション判定部12cは、再送バッファの使用量が所定の閾値より小さい場合には(ステップS404否定)、その判定結果をコネクション記憶部13bに記憶し、そのコネクションについて、ゼロコピー通信動作に設定する(ステップS406)。
このように、コネクションごとに、送信データによって使用される再送バッファの使用量をさらに測定し、応答時間が所定の遅延閾値より大きいと判定したコネクションについて、測定された再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、応答時間が所定の遅延閾値より大きいが、再送バッファの使用量が所定の使用量閾値より小さいと判定された場合にも、コネクションの送信データをNIC20内の再送バッファに格納するので、応答時間は長いが再送バッファの使用量は小さい(送信データをNIC20内の再送バッファに格納することによる通信高速化の効果が高い)コネクションについては、送信データをNIC20内の再送バッファに格納して、通信の高速化を図ることが可能である。
ところで、本発明では、送信データの転送および格納を開始した後に、送信データの格納先を切り替えるようにしてもよい。
そこで、以下の実施例4では、送信データの転送および格納を開始した後に、送信データの格納先を切り替える場合として、図13〜図15を用いて、実施例4におけるホストコンピュータ10bの構成と、実施例4に係る通信システム1による通信処理とについて説明する。図13は、実施例4に係るホストコンピュータ10bの構成を示すブロック図であり、図14は、実施例4に係る通信システムによる通信処理を説明するためのシーケンス図であり、図15は、切替処理を説明するためのフローチャートである。
図13に示すように、ホストコンピュータ10bは、図9に示したホストコンピュータ10aと比較して、制御部12が事後RTT測定部12g、事後再送バッファ使用量測定部12h、事後コネクション判定部12i、切替部12jを新たに備える点が相違する。
かかるホストコンピュータ10bにおいて、事後RTT測定部12gは、コネクションごとに送信データの転送および格納を開始した後のRTTを測定する手段であり、具体的には、測定した転送および格納を開始した後のRTTを測定してRTT記憶部13aに記憶する。
事後再送バッファ使用量測定部12hは、コネクションごとに送信データの転送および格納を開始した後の再送バッファの使用量を測定する手段であり、具体的には、測定した転送および格納を開始した後の再送バッファの使用量をバッファ使用量記憶部13eに記憶する。
事後コネクション判定部12iは、コネクションごとに、送信データの転送および格納を開始した後のRTTおよび再送バッファの使用量が所定の閾値より大きいかを判定する処理部である。具体的には、事後コネクション判定部12iは、事後RTT測定部12gによって測定された転送および格納後のRTTを読み出し、その転送および格納後のRTTが所定の閾値より大きいかを判定する。
一方、転送および格納後のRTTが所定の閾値より大きいと判定した場合には、事後コネクション判定部12iは、事後再送バッファ使用量測定部12hによって測定された転送および格納後の再送バッファの使用量を読み出し、その転送および格納後の再送バッファの使用量が所定の閾値より小さいかを判定する。
切替部12jは、コネクションについて、送信データの格納先を切り替える手段である。具体的には、事後コネクション判定部12iによって転送および格納後のRTTが所定の閾値より小さいと判定された場合には、切替部12jは、現在通常通信であるかを判定する。その結果、切替部12jは、現在通常通信である場合には、そのコネクションをゼロコピー通信に切り替える。また、切替部12jは、現在通常通信でない場合には、切り替えを行わずに、そのまま処理を終了する。
また、切替部12jは、事後コネクション判定部12iによって転送および格納後の再送バッファの使用量が所定の閾値より小さいと判定された場合には、現在通常通信であるかを判定する。その結果、切替部12jは、事後測定すると、現在通常通信である場合には、そのコネクションをゼロコピー通信に切り替える。また、切替部12jは、現在通常通信でない場合には、切り替えを行わずに、そのまま処理を終了する。
次に、実施例4にかかる通信システムによる通信処理について説明する。実施例4の通信処理は、図8に示した実施例2にかかる格納先設定処理と比較して、転送および格納を開始した後に送信データの格納先を切り替える点が相違する。
すなわち、図14に示すように、ホストコンピュータ10は、送信データの転送および格納を開始した後に(ステップS501〜ステップS510)、送信データの格納先の切替処理を行う(ステップS511)。
ここで、図15を用いて、切替処理について詳しく説明する。同図に示すように、事後コネクション判定部12iは、事後RTT測定部12gによって測定された転送および格納後のRTTを読み込み(ステップS601)、その転送および格納後のRTTが所定の閾値より大きいかを判定する(ステップS602)。その結果、事後コネクション判定部12iによって転送および格納後のRTTが所定の閾値より小さいと判定された場合には(ステップS602否定)、切替部12jは、現在通常通信であるかを判定する(ステップS607)。その結果、切替部12jは、現在通常通信である場合には(ステップS607肯定)、そのコネクションをゼロコピー通信に切り替える。また、切替部12jは、現在通常通信でない場合には(ステップS607否定)、切り替えを行わずに、そのまま処理を終了する。
一方、転送および格納後のRTTが所定の閾値より大きいと判定した場合には(ステップS602肯定)、事後コネクション判定部12iは、事後再送バッファ使用量測定部12hによって測定された転送および格納後の再送バッファの使用量を読み込み(ステップS603)、その転送および格納後の再送バッファの使用量が所定の閾値より大きいかを判定する(ステップS604)。その結果、事後コネクション判定部12iによって転送および格納後の再送バッファの使用量が所定の閾値より小さいと判定された場合には(ステップS604否定)、切替部12jは、現在通常通信であるかを判定する(ステップS607)。その結果、切替部12jは、現在通常通信である場合には(ステップS607肯定)、そのコネクションをゼロコピー通信に切り替える(ステップS608)。また、切替部12jは、現在通常通信でない場合には(ステップS607否定)、切り替えを行わずに、そのまま処理を終了する。
また、事後コネクション判定部12iによって転送および格納後の再送バッファの使用量が所定の閾値より大きいと判定された場合には(ステップS604肯定)、切替部12jは、現在ゼロコピー通信であるかを判定する(ステップS605)。その結果、切替部12jは、現在ゼロコピー通信である場合には(ステップS605肯定)、そのコネクションを通常通信に切り替える(ステップS606)。また、切替部12jは、現在ゼロコピー通信でない場合には(ステップS605否定)、切り替えを行わずに、そのまま処理を終了する。
このように、送信データの転送および格納を開始した後においても、応答時間を測定し、送信データの転送および格納を開始した後においても、測定された応答時間が所定の遅延閾値より大きいかを判定し、ホストメモリ10aの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における応答時間が所定の遅延閾値より小さいと判定された場合には、そのコネクションにおける送信データの格納先をNIC20内の再送バッファに切り替え、NIC20の再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における応答時間が所定の遅延閾値より大きいと判定された場合には、そのコネクションにおける送信データの格納先をホストメモリ10a内の再送バッファに切り替えるので、送信データをNIC20内の再送バッファに格納しているコネクションにおける応答時間が大きくなった場合には、送信データの格納先を切り替えて、ホストメモリ内の再送バッファに格納する結果、NIC20内のメモリの使用量を抑制することが可能である。
また、送信データの転送および格納を開始した後においても、再送バッファの使用量をさらに測定し、送信データの転送および格納を開始した後においても、応答時間が所定の遅延閾値より大きいと判定したコネクションについて、測定された再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、ホストメモリ10aの再送バッファに格納が開始されているコネクションについて、応答時間が所定の遅延閾値より大きいが、転送および格納を開始した後における再送バッファの使用量が所定の使用量閾値より小さいと判定されたコネクションについても、そのコネクションにおける送信データの格納先をNIC20内の再送バッファに切り替えるので、送信データをNIC20内の再送バッファに格納しているコネクションにおける再送バッファの使用量が大きくなった場合には、送信データの格納先を切り替えて、ホストメモリ10a内の再送バッファに格納する結果、NIC20内のメモリの使用量を抑制することが可能である。
ところで、本発明では、ゼロコピー通信から通常通信に切り替えられたことがあるコネクションについては、以後送信データの格納先を切り替えないようにしてもよい。
そこで、以下の実施例5では、ゼロコピー通信から通常通信に切り替えられたことがあるコネクションについては、送信データの格納先を切り替えない場合として、図16を用いて、実施例5における切替処理について説明する。図16は、実施例5に係る切替処理を説明するためのフローチャートである。
図16に示すように、実施例5の通信処理は、図15に示した実施例4にかかる切替処理と比較して、ゼロコピー通信から通常通信に切り替えられたことがあるコネクションについては、以後送信データの格納先を切り替えない点が相違する。
つまり、同図に示すように、事後コネクション判定部12iによって転送および格納後のRTTが所定の閾値より小さいと判定された場合(ステップS702否定)、または事後コネクション判定部12iによって転送および格納後の再送バッファの使用量が所定の閾値より小さいと判定された場合には(ステップS704否定)、切替部12jは、ゼロコピー通信から通常通信に切り替えられたことがあるかを判定する(ステップS707)。その結果、ゼロコピー通信から通常通信に切り替えられたことがない場合には(ステップS707否定)、切替部12jは、現在通常通信であるかを判定する(ステップS708)。その結果、切替部12jは、現在通常通信である場合には(ステップS708肯定)、そのコネクションをゼロコピー通信に切り替える(ステップS709)。また、切替部12jは、現在通常通信でない場合には(ステップS708否定)、切り替えを行わずに、そのまま処理を終了する。
また、切替部12jは、ゼロコピー通信から通常通信に切り替えられたことがある場合には(ステップS707肯定)、切替処理を行わずに処理を終了する。
このように、送信データをNIC20内の再送バッファに格納することを中止されてホストメモリ10a内の再送バッファに格納されたコネクションを除いて、格納先を切り替えるので、送信データを格納する再送バッファを切り替える条件が頻繁に起きるような場合でも、切り替えを適切に抑制しシステムの挙動を安定化させることが可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例6として本発明に含まれる他の実施例を説明する。
(1)切替時の閾値
また、上記の実施例では、コネクションを通常通信からゼロコピー通信へ、またはゼロコピー通信から通常通信へ切り替える場合には、同じ所定の閾値を用いる場合を説明したが、本発明はこれに限定されるものではなく、コネクションを通常通信からゼロコピー通信へ切り替える場合と、ゼロコピー通信から通常通信へ切り替える場合とでは、異なる閾値を用いるようにしてもよい。
具体的には、切替処理時の事後再送バッファ使用量測定部12hによって測定された転送および格納後の再送バッファの使用量を読み込んだ後に(図15のステップS603参照)、事後コネクション判定部12iは、コネクションについて、現在通常通信を行っているのか、またはゼロコピー通信を行っているのかを判定する。そして、事後コネクション判定部12iは、判定の結果、現在ゼロコピー通信である場合には、現在通常通信である場合よりも大きい閾値を用いて、転送および格納後の再送バッファの使用量がその閾値より大きいかを判定する(図15のステップS604参照)。
このように、送信データをNIC20内の再送バッファに格納されているコネクションと、送信データをNIC20内の再送バッファに格納されているコネクションとで、送信データの格納先を切り替える条件である切替条件が異なるようにして送信データの格納先を切り替えるので、送信データをホストメモリ10a内の再送バッファに格納するように切り替える閾値と、送信データをNIC20内の再送バッファに格納するように切り替える閾値が異なる結果、例えば、送信データをNIC20内の再送バッファに格納する場合に通信速度が上がって再送バッファ量が増えることがあり、送信データを格納する再送バッファを切り替える条件が頻繁に起きるような場合でも、切り替えの頻度を適切に抑制しシステムの挙動を安定化させることが可能である。
(2)再送バッファの上限値
また、上記の実施例では、通常通信を行っているコネクションと、ゼロコピー通信を行っているコネクションとでは、再送バッファの格納可能なデータ容量の上限値を異なるように、設定してもよい。
具体的には、再送バッファ格納部12dは、メッセージサイズおよびメモリの空きを考慮してゼロコピー通信を行うかを決定する場合に(図6のステップS104参照)、コネクションについて、RTTの判定でゼロコピー通信の許可がえられたのか、再送バッファの使用量の判定でゼロコピー通信の許可が得られたのかを判定する。そして、再送バッファ格納部12dは、判定の結果、再送バッファの使用量の判定でゼロコピー通信の許可が得られた場合には、RTTの判定でゼロコピー通信の許可がえられた場合よりも小さい上限値を用いて、ゼロコピー通信を行うことを決定する。
このように、RTTが所定の遅延閾値より大きいと判定したコネクションと、再送バッファの使用量が所定の使用量閾値より大きいと判定したコネクションとでは、再送バッファの上限値を異なるように、設定するので、RTTでゼロコピー通信の許可が得られた場合のNIC20上の再送バッファ量の上限と、再送バッファ量でゼロコピー通信の許可が得られた場合のNIC20の再送バッファ量の差の分だけ、RTTでゼロコピー通信の許可がえられたコネクションにとってはNIC20上の再送バッファに常に余裕があるように見える結果、RTTでゼロコピー通信の許可が得られるコネクションについては既にシステムが最大の通信速度で通信していても、新たなコネクションにゼロコピー通信を許可することが可能である。
(3)シーケンス番号
また、上記の実施例では、通信速度と応答時間であるRTT(Round Trip Time)との積を算出して再送バッファの使用量を測定する場合を説明したが、本発明はこれに限定されるものではなく、送信シーケンス番号および確認応答シーケンス番号を用いて再送バッファの使用量を測定するようにしてもよい。具体的には、図17に示すように、通信先端末からの確認応答のデータに付与されたシーケンス番号(例えば、「165」)から現に送信しようとしているデータのシーケンス番号(例えば、「162」)を引いた値を再送バッファの使用量として測定する。
このように、通信先端末からの確認応答のデータに付与されたシーケンス番号から現に送信しようとしているデータのシーケンス番号を引いた値に応じて、再送バッファの使用量を測定するので、シーケンス番号を用いて、精度良く再送バッファの使用量を測定することが可能である。
(4)TOE方式
また、上記の実施例では、通信システム1にCOE方式を適用する場合を説明したが、本発明はこれに限定されるものではなく、通信システム1にTOE方式を適用するようにしてもよい。つまり、送信データのプロトコル処理をホストコンピュータ10のOSが行う代わりに、NIC20が送信データのプロトコル処理を行う。
(5)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、API呼び出し部12aと再送バッファ測定部12bを統合してもよい。また、データ転送部12eは、ホストコンピュータとNICの両方にあってもよく、NIC上のデータ転送部はハードウェアで実現されていてもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(付記1)送信データを格納する再送バッファを備えたホストメモリから同じく送信データを格納する再送バッファを備えたネットワークハードウェアに前記送信データを転送し、送受信ホスト間もしくは当該ネットワークハードウェア上に確立された仮想的な通信経路であるコネクションを通して前記送信データを通信先端末に送信するデータ通信方法をコンピュータに実行させるデータ通信プログラムであって、
前記コネクションごとに、前記通信先端末との間の応答時間を測定する測定手順と、
前記測定手順によって測定された前記応答時間が所定の遅延閾値より大きいかを判定する判定手順と、
前記判定手順によって前記応答時間が前記所定の遅延閾値より大きいと判定された場合には、送信データをホストメモリ内の再送バッファに格納し、前記応答時間が前記所定の遅延閾値より小さいと判定された場合には、前記送信データを前記ネットワークハードウェア内の再送バッファに格納する格納手順と、
をコンピュータに実行させることを特徴とするデータ通信プログラム。
(付記2)前記測定手順は、前記コネクションごとに、前記送信データによって使用される再送バッファの使用量をさらに測定し、
前記判定手順は、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、前記測定手順によって測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、
前記格納手順は、前記応答時間が前記所定の遅延閾値より大きいが、前記判定手順によって前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定された場合にも、前記コネクションの送信データを前記ネットワークハードウェア内の再送バッファに格納することを特徴とする付記1に記載のデータ通信プログラム。
(付記3)前記測定手順は、前記通信先端末からの確認応答のデータに付与されたシーケンス番号から現に送信しようとしているデータのシーケンス番号を引いた値に応じて、前記再送バッファの使用量を測定することを特徴とする付記2に記載のデータ通信プログラム。
(付記4)前記測定手順は、前記送信データの転送および格納を開始した後においても、前記応答時間を測定し、
前記判定手順は、前記送信データの転送および格納を開始した後においても、前記測定手順によって測定された前記応答時間が所定の遅延閾値より大きいかを判定し、
前記ホストメモリの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における前記応答時間が所定の遅延閾値より小さいと判定された場合には、当該コネクションにおける送信データの格納先を前記ネットワークハードウェア内の再送バッファに切り替え、前記ネットワークハードウェアの再送バッファに格納が開始されているコネクションについて、転送および格納を開始した後における前記応答時間が所定の遅延閾値より大きいと判定された場合には、当該コネクションにおける送信データの格納先を前記ホストメモリ内の再送バッファに切り替える切替手順をさらに備ることを特徴とする付記1〜3のいずれか一つに記載のデータ通信プログラム。
(付記5)前記測定手順は、前記送信データの転送および格納を開始した後においても、前記再送バッファの使用量をさらに測定し、
前記判定手順は、前記送信データの転送および格納を開始した後においても、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、前記測定手順によって測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、
前記ホストメモリの再送バッファに格納が開始されているコネクションについて、前記応答時間が前記所定の遅延閾値より大きいが、転送および格納を開始した後における前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定されたコネクションについても、当該コネクションにおける送信データの格納先を前記ネットワークハードウェア内の再送バッファに切り替える切替手順をさらに備えることを特徴とする付記1〜3のいずれか一つに記載のデータ通信プログラム。
(付記6)前記切替手順は、前記送信データを前記ネットワークハードウェア内の再送バッファに格納されているコネクションと、前記送信データを前記ネットワークハードウェア内の再送バッファに格納されているコネクションとで、前記送信データの格納先を切り替える条件である切替条件が異なるようにして前記送信データの格納先を切り替えることを特徴とする付記4または5に記載のデータ通信プログラム。
(付記7)前記切替手順は、前記送信データを前記ネットワークハードウェア内の再送バッファに格納することを中止されて前記ホストメモリ内の再送バッファに格納されたコネクションを除いて、前記格納先を切り替えることを特徴とする付記4または5に記載のデータ通信プログラム。
(付記8)前記測定手順は、前記コネクションの確立時において、前記応答時間を測定することを特徴とする付記1〜3のいずれか一つに記載のデータ通信プログラム。
(付記9)前記測定手順は、前記コネクションの確立後において、前記応答時間を測定することを特徴とする付記1〜3のいずれか一つに記載のデータ通信プログラム。
(付記10)前記ネットワークハードウェア内の再送バッファによって格納可能なデータ容量を示す再送バッファ上限値を設定する上限値設定手順をさらに備え、
前記格納手順は、前記上限値設定手順によって設定された前記再送バッファ上限値から現在使用されている前記ネットワークハードウェア内の再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、前記送信データを前記ネットワークハードウェア内の再送バッファに格納することを特徴とする付記1〜3のいずれか一つに記載のデータ通信プログラム。
(付記11)前記上限値設定手順は、前記ネットワークハードウェアの通信速度と前記所定の閾値との積の値以上を前記再送バッファの上限値として設定することを特徴とする付記10に記載のデータ通信プログラム。
(付記12)前記上限値設定手順は、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションと、前記再送バッファの使用量が前記所定の使用量閾値より大きいと判定したコネクションとでは、前記再送バッファの上限値を異なるように、設定することを特徴とする付記10に記載のデータ通信プログラム。
(付記13)前記格納手順は、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、当該コネクションにおける送信データのメッセージサイズが所定のサイズよりも大きい場合にのみ、前記送信データを前記ネットワークハードウェア内の再送バッファに格納することを特徴とする付記1〜12のいずれか一つに記載のデータ通信プログラム。
(付記14)送信データを格納する再送バッファを備えたホストメモリから同じく送信データを格納する再送バッファを備えたネットワークハードウェアに送信データを転送し、ホストコンピュータ上もしくは当該ネットワークハードウェア上に確立された仮想的な通信経路であるコネクションを通して前記送信データを通信先端末に送信するデータ通信装置であって、
前記コネクションごとに、前記通信先端末との間の応答時間を測定する測定手段と、
前記測定手段によって測定された前記応答時間が所定の遅延閾値より大きいかを判定する判定手段と、
前記判定手段によって前記応答時間が前記所定の遅延閾値より大きいと判定された場合には、送信データをホストメモリ内の再送バッファに格納し、前記応答時間が前記所定の遅延閾値より小さいと判定された場合には、前記送信データを前記ネットワークハードウェア内の再送バッファに格納する格納手段と、
を備えたことを特徴とするデータ通信装置。
以上のように、本発明に係るデータ通信プログラムは送信データを格納する再送バッファを備えたホストメモリから同じく送信データを格納する再送バッファを備えたネットワークハードウェアに送信データ転送し、そのネットワークハードウェア上に確立された仮想的な通信経路であるコネクションを通して送信データを通信先端末に送信する場合に有用であり、特に、ネットワークハードウェア内のメモリの使用量を抑制しつつ、通信の高速化を図ることに適する。
実施例1に係る通信システムの概要および特徴を説明する。 実施例1に係るホストコンピュータ10の構成を示すブロック図である。 RTT記憶部13aによって記憶されるRTT測定値の一例を説明するための図である。 コネクション記憶部13bによって記憶される判定結果の一例を説明するための図である。 実施例1に係るNIC20の構成を示すブロック図である。 実施例1に係る通信システム1の通信処理を説明するためのシーケンス図である。 格納先設定処理を説明するためのフローチャートである。 実施例2に係る通信システムの通信処理を説明するためのシーケンス図である。 実施例3に係るホストコンピュータ10aの構成を示すブロック図である。 再送バッファ使用量の測定について説明するための図である。 コネクション判定処理の一例を説明するための図である。 実施例3に係る格納先設定処理を説明するためのフローチャートである。 実施例4に係るホストコンピュータ10bの構成を示すブロック図である。 実施例4に係る通信システムによる通信処理を説明するためのシーケンス図である。 実施例4に係る切替処理を説明するためのフローチャートである。 実施例5に係る切替処理を説明するためのフローチャートである。 シーケンス番号により再送バッファの使用量を測定することを説明するための図である。
符号の説明
1 通信システム
10 ホストコンピュータ
11 NIC制御IF
12 制御部
12a API呼び出し部
12b RTT測定部
12c コネクション判定部
12d 再送バッファ格納部
12e データ転送部
13 記憶部
13a RTT記憶部
13b コネクション記憶部
13c 上限値記憶部
13d OS再送バッファ
20 NIC
21 ホストコンピュータ制御IF
22 通信制御IF
23 制御部
23a 再送バッファ格納部
23b データ送信部
24 記憶部
24a NIC再送バッファ
30 ネットワーク
40 通信先端末

Claims (10)

  1. ネットワークインタフェース装置を介して情報処理装置に送信データを送信する処理をコンピュータに実行させるデータ通信プログラムであって、
    前記コンピュータと前記情報処理装置の間に設定されたコネクションごとに、前記コンピュータと前記情報処理装置との間の応答時間を測定する手順と、
    測定された前記応答時間が所定の遅延閾値より大きいかを判定する手順と、
    前記応答時間が前記所定の遅延閾値より大きいと判定された場合には、前記コンピュータで実行されるアプリケーションのメモリ空間にある送信データを、前記コンピュータで実行されるオペレーティングシステムのメモリ空間にある再送バッファにコピーし、該送信データを、前記情報処理装置に送信する前記ネットワークインタフェース装置に送信し、前記応答時間が前記所定の遅延閾値より小さいと判定された場合には、前記アプリケーションのメモリ空間にある送信データを前記ネットワークインタフェース装置が備える再送バッファに転送し、転送された該送信データを、前記情報処理装置に送信する前記ネットワークインタフェース装置に送信する手順と、
    前記コンピュータに実行させることを特徴とするデータ通信プログラム。
  2. 前記コネクションごとに、前記送信データによって使用される再送バッファの使用量をさらに測定し、
    前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、
    前記応答時間が前記所定の遅延閾値より大きいが、前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定された場合にも、前記アプリケーションのメモリ空間にある送信データを前記ネットワークインタフェース装置が備える前記再送バッファに転送し、転送された該送信データを、前記ネットワークインタフェース装置に送信する手順を前記コンピュータに実行させることを特徴とする請求項1に記載のデータ通信プログラム。
  3. 前記情報処理装置からの確認応答のデータに付与されたシーケンス番号から現に送信しようとしているデータのシーケンス番号を引いた値に応じて、前記再送バッファの使用量を測定する手順を前記コンピュータに実行させることを特徴とする請求項2に記載のデータ通信プログラム。
  4. 前記送信データの転送またはコピーを開始した後においても、前記応答時間を測定し、
    前記送信データの転送またはコピーを開始した後においても、測定された前記応答時間が所定の遅延閾値より大きいかを判定し、
    前記コンピュータで実行されるオペレーティングシステムのメモリ空間にある再送バッファにコピーが開始されているコネクションについて、コピーを開始した後における前記応答時間が所定の遅延閾値より小さいと判定された場合には、当該コネクションにおける送信データの転送先を前記ネットワークインタフェース装置が備える再送バッファに切り替え、前記ネットワークインタフェース装置が備える再送バッファに転送が開始されているコネクションについて、転送を開始した後における前記応答時間が所定の遅延閾値より大きいと判定された場合には、当該コネクションにおける送信データのコピー先を前記コンピュータで実行されるオペレーティングシステムのメモリ空間にある再送バッファに切り替える手順を前記コンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載のデータ通信プログラム。
  5. 前記送信データの転送またはコピーを開始した後においても、前記再送バッファの使用量をさらに測定し、
    前記送信データの転送またはコピーを開始した後においても、前記応答時間が前記所定の遅延閾値より大きいと判定したコネクションについて、測定された前記再送バッファの使用量が所定の使用量閾値より小さいかをさらに判定し、
    前記ホストメモリの再送バッファに転送またはコピーが開始されているコネクションについて、前記応答時間が前記所定の遅延閾値より大きいが、転送および格納を開始した後における前記再送バッファの使用量が前記所定の使用量閾値より小さいと判定されたコネクションについても、当該コネクションにおける送信データの転送先を前記ネットワークインタフェース装置が備える再送バッファに切り替える手順を前記コンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載のデータ通信プログラム。
  6. 前記送信データが、前記コンピュータで実行されるオペレーティングシステムのメモリ空間にある再送バッファにコピーされているコネクションと、前記送信データが、前記ネットワークインタフェース装置が備える再送バッファに転送されているコネクションとで、前記送信データの格納先を切り替える条件である切替条件が異なるようにして前記送信データの格納先を切り替える手順を前記コンピュータに実行させることを特徴とする請求項4または5に記載のデータ通信プログラム。
  7. 前記送信データを前記ネットワークインタフェース装置が備える再送バッファに転送することを中止されて前記コンピュータで実行されるオペレーティングシステムの再送バッファにコピーされたコネクションを除いて、前記転送先またはコピー先を切り替える手順を前記コンピュータに実行させることを特徴とする請求項4または5に記載のデータ通信プログラム。
  8. 前記コネクションの確立時において、前記応答時間を測定する手順を前記コンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載のデータ通信プログラム。
  9. 前記コネクションの確立後において、前記応答時間を測定する手順を前記コンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載のデータ通信プログラム。
  10. 前記ネットワークインタフェース装置が備える再送バッファによって格納可能なデータ容量を示す再送バッファ上限値を設定し
    設定された前記再送バッファ上限値から現在使用されている前記ネットワークインタフェース装置が備える再送バッファの容量を引いた値である再送バッファの空き容量が残存している場合にのみ、前記送信データを前記ネットワークインタフェース装置が備える再送バッファ再送バッファに格納する手順を前記コンピュータに実行させることを特徴とする請求項1〜3のいずれか一つに記載のデータ通信プログラム。
JP2006174106A 2006-06-23 2006-06-23 データ通信プログラム Expired - Fee Related JP4757109B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006174106A JP4757109B2 (ja) 2006-06-23 2006-06-23 データ通信プログラム
US11/812,658 US8228799B2 (en) 2006-06-23 2007-06-20 Data communication apparatus and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006174106A JP4757109B2 (ja) 2006-06-23 2006-06-23 データ通信プログラム

Publications (2)

Publication Number Publication Date
JP2008005315A JP2008005315A (ja) 2008-01-10
JP4757109B2 true JP4757109B2 (ja) 2011-08-24

Family

ID=38873527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006174106A Expired - Fee Related JP4757109B2 (ja) 2006-06-23 2006-06-23 データ通信プログラム

Country Status (2)

Country Link
US (1) US8228799B2 (ja)
JP (1) JP4757109B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5391449B2 (ja) * 2008-09-02 2014-01-15 ルネサスエレクトロニクス株式会社 記憶装置
JP5267107B2 (ja) * 2008-12-24 2013-08-21 住友電気工業株式会社 通信装置
US8397138B2 (en) * 2009-12-08 2013-03-12 At & T Intellectual Property I, Lp Method and system for network latency virtualization in a cloud transport environment
WO2011113378A2 (zh) * 2011-04-26 2011-09-22 华为技术有限公司 一种用户面缓冲器内存的恢复方法及装置
US9450780B2 (en) * 2012-07-27 2016-09-20 Intel Corporation Packet processing approach to improve performance and energy efficiency for software routers
US8917739B2 (en) * 2013-01-15 2014-12-23 Fluke Corporation Method and apparatus to dynamically sample NRT using a double-ended queue that allows for seamless transition from full NRT analysis to sampled NRT analysis
US10007695B1 (en) * 2017-05-22 2018-06-26 Dropbox, Inc. Replication lag-constrained deletion of data in a large-scale distributed data storage system
JP7321913B2 (ja) * 2019-12-10 2023-08-07 キヤノン株式会社 通信装置、制御方法およびプログラム
US11558316B2 (en) * 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11726666B2 (en) * 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11973696B2 (en) 2022-01-31 2024-04-30 Mellanox Technologies, Ltd. Allocation of shared reserve memory to queues in a network device
US12117948B2 (en) 2022-10-31 2024-10-15 Mellanox Technologies, Ltd. Data processing unit with transparent root complex
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11331265A (ja) * 1998-03-27 1999-11-30 Internatl Business Mach Corp <Ibm> 入出力バッファを使用するための方法及び装置
JP2001144829A (ja) * 1999-09-03 2001-05-25 Matsushita Electric Ind Co Ltd データ伝送装置、データ伝送システム及びデータ伝送方法
JP2002084338A (ja) * 2000-07-07 2002-03-22 Matsushita Electric Ind Co Ltd データ送信装置、データ受信装置、およびデータ通信システム
JP2004274376A (ja) * 2003-03-07 2004-09-30 Toshiba Corp 情報処理装置及び再送制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4214793B2 (ja) * 2003-02-19 2009-01-28 日本電気株式会社 無線通信システム、サーバ、基地局、移動端末及びそれらに用いる再送タイムアウト時間決定方法
US7512144B2 (en) * 2003-12-19 2009-03-31 Broadcom Corporation Method and system for transmission control protocol (TCP) retransmit processing
US7111092B1 (en) * 2004-04-16 2006-09-19 Cisco Technology, Inc. Buffer management technique for a hypertransport data path protocol
US20060209837A1 (en) * 2005-03-16 2006-09-21 Lee Jai Y Method and apparatus for dynamically managing a retransmission persistence
US7551638B2 (en) * 2005-03-31 2009-06-23 Intel Corporation Network interface with transmit frame descriptor reuse
US20060262738A1 (en) * 2005-05-17 2006-11-23 Lilian Fernandes Administering acknowledgment messages in the transmission control protocol
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11331265A (ja) * 1998-03-27 1999-11-30 Internatl Business Mach Corp <Ibm> 入出力バッファを使用するための方法及び装置
JP2001144829A (ja) * 1999-09-03 2001-05-25 Matsushita Electric Ind Co Ltd データ伝送装置、データ伝送システム及びデータ伝送方法
JP2002084338A (ja) * 2000-07-07 2002-03-22 Matsushita Electric Ind Co Ltd データ送信装置、データ受信装置、およびデータ通信システム
JP2004274376A (ja) * 2003-03-07 2004-09-30 Toshiba Corp 情報処理装置及び再送制御方法

Also Published As

Publication number Publication date
US8228799B2 (en) 2012-07-24
US20070297453A1 (en) 2007-12-27
JP2008005315A (ja) 2008-01-10

Similar Documents

Publication Publication Date Title
JP4757109B2 (ja) データ通信プログラム
US9442812B2 (en) Priming failover of stateful offload adapters
JP4430710B2 (ja) フェイルオーバおよび負荷分散
US7380019B2 (en) Path control method
JP4160642B2 (ja) ネットワークデータ転送方法
US8544025B2 (en) Efficient data transfer on local network connections using a pseudo socket layer
KR100927498B1 (ko) 부하 밸런싱된 네트워크 환경에서의 지능형 페일오버
EP1545088B1 (en) Method and apparatus for providing smart offload and upload of network data
US10601692B2 (en) Integrating a communication bridge into a data processing system
EP2692115B1 (en) Sctp endpoint migration
CN104782081B (zh) 用于转移套接字状态的系统以及用于迁移tcp连接的方法
JP2007200055A (ja) iSCSI通信制御方法とそれを用いた記憶システム
WO2024088353A1 (zh) 数据流的速率控制方法、智能网卡、云端设备及存储介质
US20080313363A1 (en) Method and Device for Exchanging Data Using a Virtual Fifo Data Structure
US9558149B2 (en) Dual system
JP6234236B2 (ja) 通信装置
JP3569149B2 (ja) 通信制御装置
CN115361443B (zh) 一种报文处理方法及系统
JP4415391B2 (ja) データをネットワークに送信する方法及び装置並びにデータをネットワークから受信する方法及び装置
JP2011018106A (ja) 通信プロトコル処理装置およびその方法
US7672239B1 (en) System and method for conducting fast offloading of a connection onto a network interface card
US8549345B1 (en) Methods and apparatus for recovering from a failed network interface card
US7839875B1 (en) Method and system for an efficient transport loopback mechanism for TCP/IP sockets
CN113411228A (zh) 一种网络状况的确定方法及服务器
JP2009199281A (ja) データ送信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110422

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110531

R150 Certificate of patent or registration of utility model

Ref document number: 4757109

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140610

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees