JP4872952B2 - Tcpバッファコピー分散並列処理装置、方法及びプログラム - Google Patents

Tcpバッファコピー分散並列処理装置、方法及びプログラム Download PDF

Info

Publication number
JP4872952B2
JP4872952B2 JP2008056535A JP2008056535A JP4872952B2 JP 4872952 B2 JP4872952 B2 JP 4872952B2 JP 2008056535 A JP2008056535 A JP 2008056535A JP 2008056535 A JP2008056535 A JP 2008056535A JP 4872952 B2 JP4872952 B2 JP 4872952B2
Authority
JP
Japan
Prior art keywords
buffer
copy
tcp
buffer copy
request
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
JP2008056535A
Other languages
English (en)
Other versions
JP2009213065A (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 JP2008056535A priority Critical patent/JP4872952B2/ja
Priority to US12/399,399 priority patent/US7822053B2/en
Publication of JP2009213065A publication Critical patent/JP2009213065A/ja
Application granted granted Critical
Publication of JP4872952B2 publication Critical patent/JP4872952B2/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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • 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/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、TCPバッファコピー分散並列処理装置、方法及びプログラムに関し、特に、マルチコア、マルチプロセッサ環境等の分散並列処理が可能な環境におけるTCPバッファコピー分散並列処理装置、方法及びプログラムに関する。
特許文献1において、高データレートのステートフルプロトコル処理が記載されている。特許文献1に記載の技術は、TCP等のステートフルなプロトコルにおいてメッセージを処理する方法である。本技術は、単一のフローに属するメッセージを異なる時間に複数のプロトコル処理コア間に分配して処理することによって高速にデータ処理を行う。
また、非特許文献1、2において、TCPデータの転送処理におけるボトルネック要因は、TCPのステートフルなプロトコル処理の部位ではなく、バッファコピー処理であるとの報告がなされている。
非特許文献1では、TCP処理のバイト転送当りの処理量のコストについて記載されている(p.27、Table1)。ユーザー空間からシステム空間へのメモリコピーは200マイクロ秒、TCPチェックサム処理は185マイクロ秒、ネットワークメモリコピーは386マイクロ秒となっている。このうち、TCPチェックサム処理及びネットワークメモリコピーは、ネットワークインタフェースカードによってハードウェアにオフロード処理されるのが一般的であるため、ボトルネックの要因から除外することができる。しかし、ユーザー空間とシステム空間の間のメモリコピーは、未だに大きなボトルネックとして残されている。
一方、非特許文献2においては、プロファイラによって、Linuxカーネルの処理の負荷が計測されている。ソケットからの64KByteの送信処理要求において、バッファコピー及びチェックサムの処理割合は34%であり、ソケットからの64KByteの受信処理要求において、バッファコピー及びチェックサムの処理割合は41%となっている。すなわち、プロトコル処理の割合と比較して、バッファコピー処理の割合が高くなっている。
特表2005−535226号公報 D.Clark、V.Jacobson、J.Romkey、and H.Salwen. An Analysis of TCP processing overhead. IEEE Communications、 June 1989. A.Foong et al.、 "TCP Performance Re−visited"、 IEEE Internatiional Symposium on Performance Analysis of Software and Systems、 March 2003. Jon Postel、"Transmission Control Protocol"、 RFC793 http://www.faqs.org/rfcs/rfc793.html
以下の分析は、本発明者によってなされたものである。特許文献1に記載の技術は、ステートフルなプロトコル処理のパケットプロセッシングのみの高速化に特化したものである。すなわち、特許文献1に記載の技術は、プロトコル処理後のパケットデータをアプリケーションストリームの形に再構築し、再構築したデータをアプリケーションバッファにコピーする場合を想定していない。
上記の非特許文献1、2の報告によると、プロトコル処理自体を特許文献1に記載の従来技術によって高速化したとしても、TCP受信パケットを受信し、再構築したデータをアプリケーションバッファにコピーするような系においては、アプリケーションバッファへのバッファコピー処理を高速化しない限り、システム全体としてのパフォーマンスを向上させることができない。したがって、プロトコル処理後のパケットデータをアプリケーションバッファにバッファコピーする処理の高速化が必要となる。このとき、以下に掲げる問題点を指摘することができる。
第1の問題点は、TCPの受信プロトコル処理後、再構築したTCPデータをアプリケーションバッファにコピーするような系では、TCPプロトコル処理のみをマルチコアで高速化してもシステムレベルでは性能が向上しない点である。その理由は、TCP受信処理のうち一番のボトルネック要因になる処理はTCPプロトコル処理ではなく、受信パケットのアプリケーションストリームへのバッファコピー処理だからである。
第2の問題点は、次の通りである。すなわち、従来のTCP処理では、到着順が対向ホストの送信順とは異なるアウトオブオーダーデータは、再構築可能となるまで受信パケットバッファに保留される。その後、再構築可能になったタイミングでバッファコピーを実施する際、再構築可能となった瞬間にバッファコピー処理が過負荷となり、システムの性能が低下する点である。その理由は、アウトオブオーダーデータの間を埋めるインオーダーデータの到着によって、アウトオブオーダーデータが再構築可能となったとき、すなわち、パケット到着のタイムスロットにおいて、アウトオブオーダーデータのコピー処理に加えて、データの間を埋めるインオーダーデータのバッファコピー処理も実施されるからである。
第3の問題点は、バッファコピー処理を複数ブロックに分散することにより高速化したとしても、アプリケーションストリームが揃った判定を正しく行うことが困難であるという点である。その理由は、例えば、バッファコピーが完了した値を積算してアプリケーションストリームが揃ったことを判定するだけでは、アウトオブオーダーデータの重なりが発生した場合には正しくバッファストリームが揃ったことを判定することができないからである。
第4の問題点は、バッファコピー処理を複数ブロックに分散して高速化した場合、アプリケーションストリームの最後に相当するバッファコピー処理が完了したとしても、アプリケーションストリームが揃ったことを判定することができない点である。その理由は、特定のTCPバッファコピー部の処理が過負荷となって処理時間が長くなることもあるため、必ずしもバッファコピーを要求した順にバッファコピー完了通知が送られてくるとは限らないからである。
そこで、TCPプロトコル処理後のパケットデータをアプリケーションストリームにバッファコピーする処理を高速化することが課題となる。
また、TCPプロトコル処理後のアウトオブオーダーデータが再構築可能となるのを待たずにバッファコピーをすることで、バッファコピー要求が過負荷にならないように均一化し、トータルの処理時間を削減することが課題となる。
さらに、TCPプロトコル処理後のバッファコピー処理を分散並列処理した場合に、受信アウトオブオーダーデータに重なりが発生したとしてもアプリケーションバッファの全ての領域に対してバッファコピー要求が発行されたことを検知可能とすることが課題となる。
また、TCPプロトコル処理後のバッファコピー処理を分散並列処理した場合において、動的に振り分け先を決定したときでも、全ての振り分け先のブロックのバッファコピー処理が完了したことを検知できるようにすることが課題となる。
本発明の第1の視点に係るTCPバッファコピー分散並列処理装置は、
TCP受信処理部と、
1又は2以上のTCPバッファコピー部と、
ソケット処理部と、
受信パケットバッファと、
アプリケーションバッファと、を備えるTCPバッファコピー分散並列処理装置であって、
前記受信パケットバッファ及びアプリケーションバッファが、前記TCP受信処理部、TCPバッファコピー部及びソケット処理部からアクセス可能な記憶領域として構成され、
前記TCP受信処理部が、パケットの受信処理とTCPプロトコル処理とを実施し、受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)と判定した場合には、該受信パケットを前記受信パケットバッファに設けたインオーダーキューに格納し、該受信パケットのTCPシーケンス番号に基づいて前記アプリケーションバッファにおけるコピー先の領域を決定し、該受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成し、前記TCPバッファコピー部のいずれかを選択して該バッファコピー要求を通知することによって受信パケットのバッファコピーを分散並列処理させるように構成され、受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定した場合には、該受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納するように構成されたことを特徴とする。
第1の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCP受信処理部が、アウトオブオーダーと判定した受信パケットの前記アプリケーションバッファにおけるコピー先が前記アプリケーションバッファに設けたコピー先領域に含まれる場合に限って、前記バッファコピー要求を生成し、前記TCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって受信パケットのバッファコピーを分散並列処理させるように構成されることが好ましい。
第2の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCP受信処理部、TCPバッファコピー部及びソケット処理部がいずれもイベントキューを備え、
要求送出側が要求受信側に設けたイベントキューに要求を追加することで要求を通知するように構成され、
要求受信側が自身に設けたイベントキューをポーリングしてイベントキューに要求が追加されている場合にはその要求を取り出して処理を行うように構成され、
前記TCP受信処理部、TCPバッファコピー部及びソケット処理部が、それぞれ非同期動作を行うように構成されることが好ましい。
第3の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCP受信処理部が、前記バッファコピー要求の通知先を前記TCPバッファコピー部の中からラウンドロビン(Round Robin)によって選択するように構成されることが好ましい。
第4の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPバッファコピー部が、バッファコピー処理を完了した場合には、コピーを実施したデータ長を含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
前記アプリケーションバッファが、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
前記ソケット処理部が、前記バッファコピー完了通知に含まれるコピーを実施したデータ長を積算し、積算された値が前記アプリケーションバッファにおけるコピー先領域の長さblenに達したか否かに基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されることが好ましい。
第5の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPバッファコピー部が、バッファコピー処理を完了した場合には、コピーを実施したデータ長とTCP受信処理部から通知された受信パケットのTCPプロトコル処理後のTCPパラメータrcv_nxtとを含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
前記アプリケーションバッファが、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
前記ソケット処理部が、前記バッファコピー完了通知に含まれるTCPパラメータrcv_nxtを参照し、その値に基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されることが好ましい。
第6の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPバッファコピー部のうちI番目(1≦I≦N)のものから前記ソケット処理部に通知された前記バッファコピー完了通知が、振り分けの周回回数を示すリンクシーケンス(Link Sequence)番号Lseq(I)を含み、
前記ソケット処理部が、前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたと判定し、かつ、判定に用いられたバッファコピー完了通知がラウンドロビンによる振り分けのうちI番目である場合には、以下の2条件
(a)Lseq(1)、・・・、Lseq(I−1)==Lseq(I)、
(b)Lseq(I+1)、・・・、Lseq(N)==Lseq(I)−1
が満たされたとき、前記TCPバッファコピー部のすべてのバッファコピー処理が完了したものと判定するように構成されることが好ましい。
第7の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPプロトコル処理部が、前記TCPバッファコピー部に備えたイベントキューの残量を参照し、前記TCPバッファコピー部の中からイベントキューの残量がより少ないものを前記バッファコピー要求の通知先として動的に選択するように構成されることが好ましい。
第8の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPバッファコピー部が、バッファコピー処理を完了した場合には、コピーを実施したデータ長を含むバッファコピー完了通知を前記ソケット処理部に通知し、
前記アプリケーションバッファが、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
前記ソケット処理部が、前記バッファコピー完了通知に含まれるコピーを実施したデータ長を積算し、積算された値が前記アプリケーションバッファにおけるコピー先領域の長さblenに達したか否かに基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されることが好ましい。
第9展開形態のTCPバッファコピー分散並列処理装置は、
前記TCPバッファコピー部が、バッファコピー処理を完了した場合には、コピーを実施したデータ長とTCP受信処理部から通知された受信パケットのTCPプロトコル処理後のTCPパラメータrcv_nxtとを含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
前記アプリケーションバッファが、アドレスbaddrから始まる長さblenの領域をコピー領域として備え、
前記ソケット処理部が、前記バッファコピー完了通知に含まれるTCPパラメータrcv_nxtを参照し、その値に基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されることが好ましい。
第10の展開形態のTCPバッファコピー分散並列処理装置は、
前記TCP受信処理部が、送出するバッファコピー要求が前記アプリケーションバッファのデータを埋める最後のデータを含むか否かをTCPパラメータrcv_nxtに基づいて判定し、前記アプリケーションバッファのデータを埋める最後のデータを含むものと判定した場合には、該バッファコピー要求の通知後、同一の振り分け周回においてまだ要求を通知していない全てのTCPバッファコピー部に対してその周回のリンクシーケンス番号を含むダミーのバッファコピー要求を送出するように構成され、
前記TCPバッファコピー部が、それぞれバッファコピー完了通知を前記ソケット処理部に通知し、
前記TCPバッファコピー部のうちI番目(1≦I≦N)のものから前記ソケット処理部に通知された前記バッファコピー完了通知が、振り分けの周回回数を示すリンクシーケンス番号Lseq(I)(1≦I≦N)を含み、
前記ソケット処理部が、前記バッファコピー完了通知に基づいて前記アプリケーションバッファの全ての領域へパケットデータコピーされたか否かを判定し、前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたと判定し、かつ、前記TCPバッファコピー部から通知されたバッファコピー完了通知のリンクシーケンス番号がいずれも等しい場合には、前記TCPバッファコピー部のバッファコピー処理が完了したと判定するように構成されることが好ましい。
本発明の第2の視点に係るTCPバッファコピー分散並列処理方法は、
TCPバッファコピー分散並列処理装置によって、受信パケットに対するTCPプロトコル処理を実施する工程と、
前記受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)か否かを判定する工程と、を含むTCPバッファコピー分散並列処理方法であって、
インオーダーと判定された場合には、前記受信パケットを受信パケットバッファに設けたインオーダーキューに格納する工程と、
前記受信パケットのTCPシーケンス番号に基づいてアプリケーションバッファにおけるコピー先の領域を決定する工程と、
前記受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成する工程と、
1又は2以上のTCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって前記受信パケットのバッファコピーを分散並列処理させる工程と、を含み、
前記受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定された場合には、前記受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納する工程を含むことを特徴とする。
本発明の第3の視点に係るTCPバッファコピー分散並列処理プログラムは、
コンピュータによって、受信パケットに対するTCPプロトコル処理と、
前記受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)か否かを判定する処理と、を実行させるTCPバッファコピー分散並列処理プログラムであって、
インオーダーと判定された場合には、前記受信パケットを受信パケットバッファに設けたインオーダーキューに格納する処理と、
前記受信パケットのTCPシーケンス番号に基づいてアプリケーションバッファにおけるコピー先の領域を決定する処理と、
前記受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成する処理と、
1又は2以上のTCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって前記受信パケットのバッファコピーを分散並列処理させる処理と、をコンピュータに実行させ、
前記受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定された場合には、前記受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納する処理をコンピュータに実行させることを特徴とする。
第1の効果として、TCP受信処理後のインオーダーデータのバッファコピー処理を複数のTCPバッファコピー部に分散して並列に実行させることによって、処理負荷の大きいTCPバッファコピー処理の処理時間を短縮することができる。また、TCP受信処理部、TCPバッファコピー部及びソケット処理部がイベントキューを介して非同期に動作することによって、TCP受信処理、バッファコピー処理及びソケット処理の間でパイプライン実行がなされるため、全体を一つのプロセスにおいて実行する場合と比較して高速なパケット処理が可能となる。
従来技術においては、アウトオブオーダーデータは、受信後に再構築可能となるまでアプリケーションバッファにコピーせずに待機させていた。したがって、インオーダーデータの再送によって格納されていたアウトオブオーダーデータが再構築可能になったときに、インオーダーデータとともに再構築可能になったアウトオブオーダーデータのバッファコピー要求も発行されることによってバッファコピー処理が過負荷になるという問題があった。本発明の第2の効果として、アウトオブオーダーデータの受信後、対応するコピー先がアプリケーションバッファの範囲内であるならばアウトオブオーダーデータが再構築可能となるのを待たずにバッファコピーを行うことによって、アウトオブオーダーデータのバッファコピー時における負荷の集中を回避することができる。
従来技術においては、バッファコピー処理が完了したデータ長を積算することによってアプリケーションバッファが埋められたか否かの判定を行っていた。本発明の第3の効果として、TCPパラメータであるrcv_nxtによってアプリケーションバッファが埋められたことを判定することで、受信アウトオブオーダーデータに重なりが発生した場合であっても、従来とは異なり、アプリケーションバッファの全ての領域に対してバッファコピー要求が発行されたことを判定することができる。
本発明の第4の効果として、TCPプロトコル処理後のバッファコピー処理を分散並列処理した場合において、動的に振り分け先を決定したときでも、全ての振り分け先のブロックのバッファコピー処理が完了したことを検知することができる。その理由は、TCPプロトコル処理部でアプリケーションバッファの最後のデータのコピー要求後、全てのTCPバッファコピー要求ブロックに対してバッファコピー要求が通知されていることが保証されているため、そのバッファコピー処理に対する完了通知の情報から全てのバッファコピー処理が完了したことを検知することが可能となるためである。
本発明の実施形態に係るTCPバッファコピー分散並列処理装置、方法及びプログラムは、TCPプロトコル処理後、インオーダーと判定されたパケットの有効データをアプリケーションバッファへコピー要求する際に、バッファコピー要求先を複数のTCPバッファコピー部のうちからラウンドロビンで選択してバッファコピー要求を送出することで、TCPプロトコル処理後のパケットデータのアプリケーションバッファへのバッファコピーを分散並列処理して性能向上を実現することが好ましい。
また、本発明の実施形態に係るTCPバッファコピー分散並列処理装置、方法及びプログラムは、TCPプロトコル処理後、アウトオブオーダーと判定されたパケットの有効データのコピー先がアプリケーションバッファの領域内であるなら、アウトオブオーダーデータが再構築可能になるのを待たずにアウトオブオーダーデータのバッファコピーを行うことによって、コピー処理の均一化を実現し処理時間の短縮を行うことが好ましい。
さらに、本発明の実施形態に係るTCPバッファコピー分散並列処理装置、方法及びプログラムは、アプリケーションバッファのデータが揃ったことを検知するため、TCPプロトコル処理部が管理しているTCPパラメータrcv_nxt及びバッファコピーの要求回数を管理するリンクシーケンス番号を、TCPバッファコピー部を経由してバッファコピー完了通知に付与して送付することによりアウトオブオーダーデータの重なりが発生している状態でもアプリケーションバッファが揃ったことを正しく検知することが好ましい。
また、本発明の実施形態に係るTCPバッファコピー分散並列処理装置、方法及びプログラムは、TCPプロトコル処理部がアプリケーションバッファの最後の領域に該当するデータのバッファコピー要求を送付した後、振り分けの周回でまだバッファコピー要求を送付していない全てのブロックに対してダミーのバッファコピー要求を通知することで、バッファコピーの分散先を動的に選択するような場合でも全てのブロックでのバッファコピー処理が完了したことを検知できることが好ましい。
(実施形態1)
次に、本発明の実施形態について図面を参照して詳細に説明する。図1を参照すると、本発明の実施形態に係るTCPバッファコピー分散並列処理装置10は、TCPパケットを受信してプロトコル処理を行うTCP受信処理部1と、受信パケットを受信パケットバッファからアプリケーションバッファにコピーするN個(N≧1)のTCPバッファコピー部21〜2Nと、ソケット処理を行うソケット処理部3と、アプリケーションが動作するアプリケーション部4と、受信パケットを格納する受信パケットバッファ5と、アプリケーションに渡すストリームデータを格納するアプリケーションバッファ6と、ネットワークインタフェース部1、TCPバッファコピー部21〜2N及びソケット処理部3の間でコマンド情報を交換するためのイベントキュー71、721〜72N、73を含む。
受信パケットバッファ5は、TCPのインオーダーデータを格納するインオーダーキュー51と、TCPのアウトオブオーダーデータを格納するアウトオブオーダーキュー52を備える。
TCPのインオーダーデータとは、受信したTCPパケットが対向ホストの送出順と同じ順番で受信されたと判断されたデータであり、ストリームに再構築可能なデータである。一方、TCPのアウトオブオーダーデータとは、中間経路で前のパケットが欠落したために、送出順とは異なる順で到着したデータであり、欠落した部分に相当するTCPデータを受信するまではストリームに再構築することができない。インオーダーキュー51は受信したTCPシーケンス番号からインオーダーデータと判断されたM個(M≧1)のパケットデータ511〜51Mを連結リスト構造で格納する。
アウトオブオーダーキュー52は、受信したTCPシーケンス番号からアウトオブオーダーデータと判断されたパケットデータ521、522をインオーダーキューと同様連結リスト構造で格納する。
インオーダーキュー51とアウトオブオーダーキュー52の構造を図5に示す。インオーダーキューのエントリのうち、バッファコピー要求を行っていない先頭のエントリは有効エントリのアドレスG1として管理される。また、インオーダーキューのエントリG2は要素として、次エントリの開始アドレスG21、ヘッダアドレスG22、データアドレスG23、有効データのアドレスG24、有効データ長G25、受信パケットのヘッダG26及びデータG27を有する。
次エントリの開始アドレスG21は、キューの次のエントリの先頭位置のアドレスを指し示す。ヘッダアドレスG22は、エントリG2に該当する受信パケットのヘッダ情報が格納されているアドレスを指し示す。データアドレスG23はエントリG2に該当する受信パケットのペイロード情報が格納されているアドレスを指し示す。有効データのアドレスG24は受信パケットのペイロードのうち、アプリケーションバッファ6にコピー可能な領域の先頭アドレスを指し示す。有効データ長G25は受信パケットのペイロードのうち、アプリケーションバッファ6にコピー可能な領域の長さを指し示す。ヘッダG26は受信パケットのヘッダ情報を格納する。データG27は受信パケットのペイロード情報を格納する。データG27はアプリケーションバッファ6へコピー可能な領域とコピー可能ではない領域を含む。コピー可能な領域は有効データのアドレスG24及び有効データ長G24によって指定される。
アウトオブオーダーキュー52のエントリG3は要素としてG31〜G37を含む。これらはインオーダーキュー51のエントリG2のG21〜G27と機能が同一であるため、説明を省略する。
アプリケーションバッファ6は、ソケット処理部3からアプリケーション部4へ渡すストリームデータを格納する。受信パケットバッファ5に格納されていた受信パケット511〜51Mは、TCP処理後、アプリケーションバッファ6のバッファ開始アドレスから始まる連続した領域61〜6Mにそれぞれコピーされる。コピーされたデータは、開始アドレスからバッファ長分の連続領域にストリームデータが揃った時点で、アプリケーション部4に渡される。
TCP受信処理部1は、ネットワークインタフェース部11と、パケット処理部12と、TCPプロトコル処理部13と、を備える。
ネットワークインタフェース部11は、対向ホストからパケットを受信し、受信パケットバッファにパケットデータを格納する。また、ネットワークインタフェース部11は、対向ホストにパケットを送出する。
パケット処理部12は、受信したパケットの整合性をチェックし、受信したパケットのセッション解決を行い、パケットのヘッダ情報を抽出する。また、パケット処理部12は送出パケットデータを生成する。
TCPプロトコル処理部13は、受信したパケットのTCPプロトコル処理を行うとともに、ACKパケットの生成処理を行う。TCPプロトコル処理においては、受信TCPパケットのシーケンス番号を参照し、受信パケットがインオーダーデータかアウトオブオーダーデータかの判定がなされる。インオーダーデータと判定された場合には、受信パケットの情報はインオーダーキュー51に追加され、アウトオブオーダーデータと判定された場合にはアウトオブオーダーキュー42に追加される。さらに、TCPプロトコル処理部13は、TCPバッファコピー部21〜2Nに対してTCPバッファコピー要求を生成する。
TCPバッファコピー部21〜2Nは、TCP受信処理部1からのバッファコピー要求を受信し、受信した情報に従って、受信パケットバッファ5からアプリケーションバッファ6へのコピー処理を実施する。また、TCPバッファコピー部21〜2Nは、コピー完了後に、ソケット処理部3に対してバッファコピー完了通知を行う。
ソケット処理部3は、アプリケーション部4からの要求を受信する以外に、TCPバッファコピー部21〜2Nからバッファコピー完了通知を受信してアプリケーションバッファ6のストリームデータが揃ったか否かを検知する。バッファ開始アドレスからバッファ長までのストリームデータが揃った時点で、ソケット処理部3はアプリケーション4に処理の完了を通知する。
アプリケーション部4は、ソケット処理部3に対してストリームの受信要求を生成する。その際、受信したいストリームデータの先頭アドレスとデータ長をソケット処理部3に通知する。ソケット処理部3からの完了通知受信を受信後、アプリケーション部4はストリームデータを操作することができるようになる。
次に、図1〜図4を参照して本実施形態の動作について詳細に説明する。まず、図1及び図2を参照して受信処理の動作について説明する。
アプリケーション部4は、対向ホストからのデータストリームを受信して処理を実行するプログラムである。アプリケーション部4は、データストリームを取得するため、ソケット処理部3に対して受信要求を発行する(ステップA1)。受信要求の例として、TCPソケットのrecvシステムコールが挙げられる。なお、recvシステムコールは、ストリームデータが揃うまでアプリケーション部が待機する同期式の通知方法であるが、ストリームデータが揃うまでの間にアプリケーション部4が他の処理を実行することができる非同期式の通知であっても良い。受信要求には、引数として、アプリケーションバッファ6のバッファ開始アドレスbaddrとバッファ長blenが含まれる。
TCP受信処理部1、TCPバッファコピー部21〜2N及びソケット処理部3はアプリケーション部4の受信要求を受け、対向ホストパケット受信時にTCP受信プロトコル処理(ステップA2)及び並列バッファコピーの処理(ステップA3)を行う。TCP受信プロトコル処理及び並列バッファコピーの詳細については後述する。並列バッファコピー処理によって、アプリケーション部4が要求していたストリームデータが揃った場合には、ソケット処理部3はアプリケーション部4に受信処理完了通知を通知し、受信処理が完了する(ステップA4)。
次に、図1及び図3を参照して、TCP受信プロトコル処理の動作について詳細に説明する。
ネットワークインタフェース部11において対向ホストからTCPパケットを受信後(ステップB1)、パケット処理部12は、受信パケットのヘッダからTCP及びIPのパラメータ情報を抽出し、受信パケットがいずれのTCPセッションに所属しているかを解析する(ステップB2)。
続いて、TCPプロトコル処理部13は、TCPの受信プロトコル処理を行う(ステップB3)。受信プロトコル処理の例として、rcv_nxt等のTCPパラメータの更新、TCPシーケンス番号から受信したパケットがインオーダーデータかアウトオブオーダーデータかの判定、受信パケットからデータストリームを再構築するために受信パケットのどこからどこまでの範囲が有効データなのかを示すパケットデータの有効アドレスと有効パケット長の決定、対向ホストに受信が完了したデータのシーケンス番号を伝えるACKパケットの生成等が挙げられる。
受信プロトコル処理後、その処理結果に基づいて、受信パケットがインオーダーデータかアウトオブオーダーデータかの判断処理を行う(ステップB4)。インオーダーデータである場合(ステップB4のYes)にはインオーダーキュー51に受信パケット情報を追加し(ステップB5)、アウトオブオーダーデータである場合(ステップB4のNo)にはアウトオブオーダーキュー52に受信パケット情報を追加する(ステップB6)。
また、インオーダーデータが再送パケットである場合には、受信したインオーダーデータによってアウトオブオーダーであったデータの欠落したデータが埋められ、再構築可能となるアウトオブオーダーデータが存在する場合がある。このようなアウトオブデータが存在する場合には、再構築可能となったアウトオブオーダーデータをアウトオブオーダーキューから削除してインオーダーキューに追加する(ステップB7)。
次に、図1及び図4を参照して、並列バッファコピー処理の動作について詳細に説明する。ソケット処理部3は、アプリケーション部4の処理開始要求を受けてTCPプロトコル処理部13に対して処理開始通知を発行する。TCPプロトコル処理部13は、TCPバッファコピー部に対してバッファコピー処理要求を発行する。TCPバッファコピー部21〜2Nは、バッファコピー処理要求を受けてバッファコピー処理を実行する。ソケット処理部3は、バッファコピー結果の確認を行い、データが揃った時点でアプリケーション部4に通知する。また、バッファコピー前の領域はTCPプロトコル処理部13によって解放処理を行う。
初めにソケット処理部3の動作について説明する。ソケット処理部3は、アプリケーション処理部1からの受信処理要求を受けるまで待機する(ステップC1)。ソケット処理部3は、アプリケーション部4からの受信要求を受けて、TCP受信処理部1に処理開始要求を発行する(ステップC2)。発行した処理要求は、イベントキュー71に格納される。処理開始要求発行後、ソケット処理部3は、TCPバッファコピー部21〜2Nからの通知が来るまで待機する(ステップC3)。TCPバッファコピー部21〜2Nの要求はイベントキュー73に格納される。イベントキュー73からバッファコピー完了通知を取得後(ステップC4)、バッファコピー前のパケットデータを解放するために、TCP受信処理部1へパケットバッファ解放要求を送出する(ステップC5)。また、バッファコピーにより、アプリケーション部4から受信要求のあったアプリケーションバッファ6の開始アドレスbaddrからバッファ長blenまでの領域が全て埋められたか否かを判定する(ステップC6)。アプリケーションバッファが埋められた場合(ステップC6のYes)にはアプリケーション部4に受信処理の完了を通知する(ステップC7)。それ以外の場合(ステップC6のNo)には、TCPバッファコピー部21〜2Nからの通知待ち(ステップC3)に戻る。アプリケーション部4への受信処理完了の通知方法は、例えばrecvシステムコールであれば関数を終了させることによって通知する方法が用いられる。非同期関数の場合には、アプリケーション部4に処理結果を取得する手段を用意しておき、アプリケーション部4が取得結果を定期的に要求し、受信処理完了時はその要求に対して完了した旨を通知するという方法が用いられる。
次に、TCPプロトコル処理部13のバッファコピー並列要求処理の動作について説明する。TCPプロトコル処理部13は、ソケット処理部3からの通知を格納するイベントキュー71を参照し、ソケット処理部3からの受信処理要求を受信する(ステップD1)。TCPプロトコル処理部13は、インオーダーと判定されたパケットが格納されているインオーダーキュー51の各有効エントリを順次処理する(ステップD2〜D7)。バッファコピー要求を送出していない状態ではインオーダーキュー51の全てのエントリが有効エントリである。一方、エントリ中の全データ領域のバッファコピー要求を送出したエントリは無効エントリとなる。無効エントリは、バッファコピーが完了してソケット処理部3からバッファコピー完了通知を取得した場合、インオーダーキューから削除される。TCPプロトコル処理部13は、有効エントリのアドレス情報を保持する。
TCPプロトコル処理部13はインオーダーキューの有効エントリの情報取得後、バッファコピー要求を生成する(ステップD3)。この時の要求フィールドは、コピー元アドレスとコピー先アドレス及びコピー長である。コピー元アドレスはインオーダーキューの有効エントリのパケットデータの有効アドレスであり、コピー先アドレスはアプリケーションバッファ6中の対応するアドレスである。また、コピー長はインオーダーキューの有効エントリのパケットデータの有効長である。
ここで、図1を参照してコピー先のアドレスについての具体例を挙げる。セッション開始後、最初のデータ群としてインオーダーキューにM個のパケット511〜51Mが到着したものとする。これらはリスト構造に基づいて、インオーダーキューに格納される。これらは、アプリケーションバッファ6において、バッファ開始アドレスbaddrから順に詰められてコピーされる。すなわち、次のようにコピーされる。
パケット511→コピー元:paddr(1)、コピー先:baddr(1)=baddr、コピー長:plen(1)
パケット512→コピー元:paddr(2)、コピー先:baddr(2)=baddr(1)+plen(1)、コピー長:plen(2)
・・・・
パケット51N→コピー元:paddr(M)、コピー先:baddr(M)=baddr(M−1)+plen(M−1)、コピー長:plen(M−1)
図1、図4のバッファコピー並列要求処理の動作の説明に戻る。TCPプロトコル処理部13は、バッファコピー要求のフィールドを決定してバッファコピー要求を生成後、要求先をTCPバッファコピー部21〜2Nの中から決定する(ステップD4)。バッファコピー要求先は、例えば、ラウンドロビンによって決定する。つまり、TCPバッファコピー部の要求先を21、22、…、2Nの順に決定する。TCPバッファコピー部2Nまで要求した後、再度、要求先をTCPバッファコピー部21から順に選択していく。
バッファコピー要求先決定後はイベントキュー721〜72Nのうち要求先に対応するキューに要求を追加する(ステップD5)。イベントキューに要求を追加後、インオーダーキュー51の次の有効エントリの情報を取得し(ステップD6)。インオーダーキューのエントリが残っているのであればアプリケーションバッファ6への全ての領域に対してバッファコピー要求を行うまでステップD3〜D6の処理を繰り返す(ステップD7)。
続いてTCPバッファコピー部21〜2Nの動作について説明する。TCPバッファコピー部21〜2Nは、それぞれ対応するイベントキュー721〜72Nを監視し、TCP受信処理部1からバッファコピー要求を受信し(ステップE1)、バッファコピー要求のコピー元、コピー先、そしてコピー長情報に従ってバッファコピー処理を実施する(ステップE2)。バッファコピー処理完了後、バッファコピー完了通知をソケット処理部3に通知する(ステップE3)。バッファコピー完了通知はバッファコピー要求と同じフィールドを含む。
次に、TCPプロトコル処理部13の受信バッファ解放処理の動作について説明する。本動作はバッファコピー後のコピー元の領域を解放するために必要とされる。TCPプロトコル処理部13は、イベントキュー71を監視し、TCPソケット処理部3からパケットバッファ解放要求を受信後(ステップF1)、パケットバッファ解放要求に対応するインオーダーキュー51のパケットデータを解放する(ステップF2)。
本実施形態の効果について説明する。本実施形態では、TCP受信処理後、バッファコピー処理要求を複数のTCPバッファコピー部21〜2Nに振り分けて通知することによりバッファコピー処理を並列に実行する。これにより処理負荷の大きいTCPバッファコピー処理の処理時間を並列度に応じて短縮することができるという利点がある。
また、TCP受信処理部1、TCPバッファコピー部21〜2N及びソケット処理部3はイベントキューを介して処理要求を通知することにより非同期に動作するようにしてもよい。これによって、TCP受信処理、バッファコピー処理及びソケット処理間のパイプライン実行が可能となるため、全体処理が一つのプロセスで実行される場合と比較して高速なパケット処理が可能となる。
(実施形態2)
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。図6は、本実施形態に係るTCPバッファコピー分散並列処理装置20の構成を示すブロック図である。本実施形態は、アウトオブオーダーデータの対応するコピー先がアプリケーションバッファ6の範囲内であるならばアウトオブオーダーデータが再構築可能になるのを待たずにバッファコピーを実施することによりパケット廃棄が発生した場合でも再構築処理時にバッファコピー要求が過負荷になり性能劣化することを防ぐというものである。
図6を参照すると、インオーダーキュー51にはパケット511〜51MのM個のパケットが格納されている。このときのM個のパケットは第1の実施形態によりアプリケーションバッファ6上の領域61〜6Mにコピーされる。さらに、アウトオブオーダーキューにパケット521が格納されており、このパケット521のシーケンス番号から求められたコピー先がアプリケーションバッファ6のバッファ開始アドレスbaddrからバッファ長blenまでの範囲内にあるならば、パケット521のデータはアプリケーションバッファ6上の領域6K(K≧1、K>M)にコピーされる。
本実施形態の動作について図面を参照して詳細に説明する。図7は、第2の実施形態の動作フローを示す。第2の実施形態は、第1の実施形態に対してステップD8〜D14の工程が追加されている。図7におけるステップD1〜D7、すなわち、本実施形態におけるTCPプロトコル処理部13の動作は、図4におけるステップD1〜D7と同一であるため、説明を省略する。第2の実施形態では、ステップD1〜D7までの処理によってインオーダーキューの全ての有効エントリのデータをコピー後、アウトオブオーダーキュー52のエントリについてもバッファコピー要求処理を実施する。そこで、本実施形態においては、アウトオブオーダーキュー52のバッファコピー要求処理を行っていないエントリのアドレスがアウトオブオーダーキューの有効エントリとして管理される。
TCPプロトコル処理部13は、アウトオブオーダーキュー52の有効エントリの情報を取得し(ステップD8)、有効エントリに該当するデータのコピー先がアプリケーションバッファ6の範囲内か否かを判定する(ステップD9)。
データのコピー先は、有効エントリに該当するパケットデータのTCPシーケンス番号から求める。ここで、有効パケットデータのTCPシーケンス番号がseq_o、有効長がlen_oであるものとする。アプリケーションバッファの先頭に該当するTCPシーケンス番号がseq_b、アプリケーションバッファ6の先頭アドレスがbaddr、バッファ長がblenであるすると、コピー先アドレスaddrは以下の関係式から求められる。
addr=baddr+seq_o−seq_b
また、このとき、(seq_o−seq_b)≦blenの関係式を満たさなければならない。この関係式が満たされない場合には、そのエントリのデータはアプリケーションバッファの範囲外と見なされる。
判定の結果、データコピー先がアプリケーションバッファの範囲外である場合(ステップD9のNo)にはアウトオブオーダーキュー52の次の有効エントリに処理を進める。
一方、範囲内である場合(ステップD9のYes)には、TCPバッファコピー部2に対しバッファコピー要求を生成する(ステップD10)。この要求のコピー元はアウトオブオーダーキューの処理中のエントリに対応する有効データの開始アドレスである。一方、コピー先はアプリケーションバッファの対応領域のアドレスaddr、コピー長は処理中エントリの有効データ長となる。
バッファコピー要求を生成後、要求先をTCPバッファコピー部21〜2Nの中から決定する(ステップD11)。本実施形態では、例えば、第1の実施形態と同様バッファコピー要求先をラウンドロビンによって決定することができる。つまり、要求先のTCPバッファコピー部を21、22、・・・、2Nの順に選択する。2Nまで要求した後、再度要求先を21から順に選択していく。
バッファコピー要求先決定後、イベントキュー721〜72Nのうち要求先に対応するキューに要求を追加する(ステップD12)。イベントキューに要求を追加後、アウトオブオーダーキュー51の次の有効エントリの情報を取得する(ステップD13)。アウトオブオーダーキューのエントリが残っている場合には、残りのエントリに対してステップD9〜D13の処理を繰り返す(ステップD14)。
本実施形態の効果について説明する、従来のTCP処理では、アウトオブオーダーデータを受信後ストリームが再構築可能になるまで、パケットデータは受信パケットバッファ5に格納されていた。この場合、インオーダーデータの再送により格納されていたアウトオブオーダーデータが再構築可能になったときに、1個分のパケット受信処理のタイムスロットでインオーダーデータに加えて再構築可能になったアウトオブオーダーデータのバッファコピー要求も発行されるため、バッファコピー処理要求がそのタイムスロットだけ過負荷になるという問題があった。そこで、本実施形態では、アウトオブオーダーデータ受信後、対応するコピー先がアプリケーションバッファの範囲内であるならばアウトオブオーダーデータが再構築可能になるのを待たずにバッファコピー要求を送出することで均一の処理時間でバッファコピーを行うものとした。これによって、アウトオブオーダーデータが再構築可能になった時のバッファコピー要求の負荷が集中することが回避される。
また、本実施形態において、次の点に留意すべきである。アウトオブオーダーデータのバッファコピー後における受信パケットバッファ5の解放処理では、解放処理によってパケットデータ自体は解放しても構わない。しかし、アウトオブオーダーデータのシーケンス番号を含む制御情報は何らかの形で保持しておく必要がある。そうしないと、TCPプロトコル処理部13にてアウトオブオーダーデータ範囲を考慮したTCPパラメータ更新(例えばrcv_nxtの更新)ができなくなるからである。
(実施形態3)
次に、本発明の第3の実施形態について説明する。図9は、本実施形態に係るTCPバッファコピー分散並列処理装置30の構成を示すブロック図である。第2の実施形態では受信したアウトオブオーダーデータを再構築可能になるのを待たずにアプリケーションバッファ6にコピーする方式であった。しかしながら、この場合、アプリケーションバッファ6のデータがいつ揃ったのかを判定することが困難となる。第1の実施形態のように、アプリケーションバッファ6にコピーされるのは常にインオーダーデータであることが保障されている場合には、バッファコピー完了通知に示されたコピー完了データ長を積算していくだけでデータが揃ったか否かを判断可能である。しかし、インオーダーデータに加えてアウトオブオーダーデータがコピーされるような条件下では、単にコピーされたデータ長を積算していくだけでは、アプリケーションバッファ6のデータが揃ったか否かを判定することができなくなる。
データがそろったか否かを判定することができないような例を図8に示す。図8はアウトオブオーダーデータがデータ再構築可能となる場合を示している。図8のCase1では、インオーダーのパケット1、パケット2、そしてアウトオブオーダーのパケット3が到着した状態を示す。Case2では、パケット2とパケット3との間にあたるデータ領域にインオーダーのパケット4が到着することによって、パケット3が再構築可能になった状態を示す。しかし、Case2では、パケット3とパケット4との間に重なりが生じている。この場合、TCPでは前のシーケンスから続いているデータが優先されるため、パケット3の情報はデータ重なり長dの分だけパケット4に上書きされる。このとき、コピー完了データ長の合計とアプリケーションバッファ6に揃ったデータ長の合計に重なり長dの分だけ不整合が生じる。したがって、ソケット処理部3が、バッファコピー完了通知に記載されたコピー完了データ長を積算していくことによってデータが揃ったか否かを判定する場合には、アプリケーションデータが揃ったことを検知することができなくなる。
第3の実施形態は、このような系で一般的に採用されている、バッファコピー完了通知に示されたコピー完了データ長を積算することによってアプリケーションデータが揃ったことを判定するという手段の代わりに、TCPプロトコル処理部13において管理されるTCPパラメータrcv_nxtの値をバッファコピー完了通知に含めることにより、アウトオブオーダーデータの重なりが生じた場合にも正確にアプリケーションデータが揃ったことを判定できるようにする。
図8はTCPプロトコル処理部13において管理されるTCPパラメータrcv_nxtを示す。TCPパラメータrcv_nxtはRFC793で規定されたパラメータであり、再構築可能な受信データの末尾のデータのシーケンス番号を示す。
図8を参照すると、Case1の場合には、パケット3が到着した時点でパケット2までが再構築可能となるのでrcv_nxtの値はパケット2の末尾を示している(rcv_nxt1)。一方、Case2の場合には、パケット4まで到着した時点でパケット3が再構築可能となるため、rcv_nxtの値はアウトオブオーダーデータであったパケット3の末尾を示している(rcv_nxt3)。
続いて第3の実施形態の構成について図面を参照して詳細に説明する。図9を参照すると、本発明の第3の実施形態に係るTCPバッファコピー分散並列処理装置30は、データ再構築情報管理部8を備える。
データ再構築情報管理部8は、TCPバッファコピー部21〜2Nから送付されたバッファコピー完了通知に含まれるN個のリンクシーケンス番号を保持する821〜82N、及び、TCPパラメータのrcv_nxt情報を管理するrcv_nxt管理部8を含む。リンクシーケンス番号は、TCPバッファコピー部21〜2Nへのバッファコピー要求の振り分けの周回数を管理する番号であり、TCP受信処理部1が全てのTCPバッファコピー部21〜2Nにバッファコピー要求を送信する毎に1ずつ増加する。
次に、第3の実施形態の動作について示す。図10を参照すると、第3の実施形態の動作は、TCPプロトコル処理部13のバッファコピー要求生成処理と、ソケット処理部3のアプリケーションバッファ6の全ての領域にデータがコピーされたか否かを判定する完了(Completion)判定処理と、に分けられる。
TCPプロトコル処理部13のバッファコピー要求生成処理の動作について説明する。バッファコピー要求生成処理は、第1及び第2の実施形態におけるステップD3(図4、図7)に相当する。本実施形態では、第1、第2の実施形態の動作に加えて、バッファコピー要求の生成時にリンクシーケンス番号を決定する(ステップD31)。リンクシーケンス番号はTCP受信処理部1からTCPバッファコピー部21〜2Nに対してのバッファコピー要求が一巡する度に1ずつ増加する。リンクシーケンス番号の生成後、バッファコピー要求を生成する(ステップD32)。要求フィールドは第1、第2の実施形態のフィールドに加えてリンクシーケンス番号及びTCPパラメータのrcv_nxtを含む。
バッファコピー要求生成前の処理及び要求生成後のTCPプロトコル処理部13の動作は図4、図7における動作と同一であるため、説明を省略する。
また、TCPバッファコピー部21〜2Nは、バッファコピー要求に付与されていたリンクシーケンス番号及びrcv_nxtパラメータをバッファコピー完了通知に付与してソケット処理部3に転送する。
次に、アプリケーションバッファの全ての領域に対するコピー処理の完了の判定方法について説明する。ソケット処理部3に転送されたバッファコピー完了通知のrcv_nxtの値が、アプリケーションバッファ6の末尾に達していない場合(ステップC61のNo)には、アプリケーションバッファ6の全ての領域に対するバッファコピー要求は通知されていないと判定する(ステップC66)。一方、末尾に達していた場合(ステップC61のYes)には、アプリケーションバッファ6の全ての領域に対するバッファコピー要求が通知されたものと判定し、そのリンクシーケンス番号を抽出する(ステップC62)。抽出されたリンクシーケンス番号をLseq(I)とする。リンクシーケンス番号の抽出後、以下の2つの条件に対して、リンクシーケンス番号の値を比較することによって、TCPバッファコピー部21〜2Nのコピー処理が完了したか否かを判定する(ステップC63)。
条件1:Lseq(1)、・・・、Lseq(I−1)の値がLseq(I)に等しいこと
条件2:Lseq(I+1)、・・・、Lseq(N)の値がLseq(I)−1に等しいこと。
上記の2条件のいずれも充足された場合(ステップC64のYes)、アプリケーションバッファの全ての領域へのコピー処理が完了したと判定される(ステップC65)。一方、それ以外の場合(ステップC64のNo)には、バッファコピーが完了していない領域があるため、完了していない領域の通知が送られてくるまで待機する。
以上の動作により、アプリケーションバッファ6の全ての領域へのコピーが完了(Completion)したかについて判定することができる。また、本実施形態により、アウトオブオーダーデータ到着後のインオーダーデータが、アウトオブオーダーデータと重なりを生じている場合でも、正確に完了の判定を行うことができる。
(実施形態4)
次に、第4の実施形態について説明する。第3の実施形態では、TCPのバッファコピーの振り分け方式がラウンドロビンであったため、完了判定を行うための各TCPバッファコピー部21〜2Nに対応するリンクシーケンス番号の期待値を予め知ることができた。しかし、バッファコピーの振り分け方式が、ラウンドロビンではなく任意である場合、又は、アプリケーションバッファ6の末尾の領域に対するバッファコピー要求が振り分けの周回の途中のブロックに対するものである場合には、従来の方式では、完了判定時の各TCPバッファコピー部に対応するリンクシーケンス番号の期待値を知ることができない。
そこで、本実施形態では、TCPプロトコル処理部13が、アプリケーションバッファ6の末尾に当たるデータを送信した後、最後の周回において、まだ振り分けていない振り分け先に対してダミーの要求を送信する。これによって、完了判定時に全てのTCPバッファコピー部に対応するリンクシーケンス番号の期待値が同一となることを保証する。したがって、ソケット処理部3は、全ての振り分け先に対応するリンクシーケンス番号が最後の周のリンクシーケンス番号に一致するのを判定するだけで、振り分け方式によらず、コピー処理が完了したか否かを判定することができる。
第4の実施形態の構成は第3の実施形態の構成(図9)と同一であるため、説明を省略する。
次に、第4の実施形態の動作について説明する。第4の実施形態のTCPプロトコル処理部13の動作は、第3の実施形態の動作のうち、バッファコピー要求先を決定する工程(ステップD4)及びバッファコピー要求先のイベントキューにバッファコピー要求を追加する工程(ステップD5)が異なる。図11は、これらのステップD4、D5において変更された内容を示す。バッファコピー要求先の決定時は、第3の実施形態におけるラウンドロビンによる決定とは異なり、イベントキュー721〜72Nの残量を取得して(ステップD41)、その残量が最も少ないイベントキューに対応するTCPバッファコピー部を振り分け先として決定する(ステップD42)。振り分け先に対応するイベントキューにバッファコピー要求を追加する(ステップD51)。ここでは、イベントキューの残量に基づいて、負荷が最も低いブロックを振り分け先として決定しているが、別の方式であってもよい。しかし、別の方式を採用する際は、振り分けの周回において、同じブロックに対して複数回振り分けてはならないという制約がある。したがって、一旦振り分けを実施した振り分け先は、他の全ての振り分け先に対して要求を出すまで、振り分け先として設定することができない。
次に、TCPプロトコル処理部13は、バッファコピー要求を行うパケットに該当するrcv_nxtの値がアプリケーションバッファ6の末尾に相当するか判定する(ステップD52)。末尾である場合(ステップD52のYes)、該当バッファコピー要求の通知後、まだ振り分けていない全ての振り分け先に対してダミーのバッファコピー要求を作成して対応するイベントキューに追加する。このダミーのバッファコピー要求は、コピー処理を実施しない要求であって、全ての振り分け先に対して同一のリンクシーケンス番号を通知するために実施される。以上が、本実施形態におけるTCPプロトコル処理部13の動作である。
次に、ソケット処理部3のアプリケーションバッファ6が埋まったことを判定する工程について説明する。第3の実施形態と異なる点は、点線で囲まれたステップC63’C64’である。第3の実施形態と異なり、第4の実施形態では、ダミーの要求も含めて全ての振り分け先に対してバッファコピー処理要求が通知されている。したがって、ソケット処理部3は、全ての領域に対するバッファコピー処理完了の判定条件としてN個のTCPバッファコピー部に対応する全てのリンクシーケンス番号が一致しているか否かを判定するだけでよい(ステップC63’)。判定結果が真である場合(ステップC64’のYes)、アプリケーションバッファ6のデータが全て埋められたものと判定する(ステップC65)。一方、それ以外の場合(ステップC64’のNo)には、まだ処理が終わっていないブロックがあるものと判定し、残りのブロックの通知が送られてくるまで待機する。
本実施形態によって、ラウンドロビン以外の振り分け方式であっても、アプリケーションバッファ6が埋められたか否かの判定を行うことができる。
次に、具体的な実施例を用いて、本発明の第1の実施形態の動作を説明する。図1を参照して説明する。対向ホストから送出されたM個のパケットが途中の通信経路において順序の入れ替えや廃棄がされることなく、TCP受信処理部1に到着したものとする。その際、パケットデータはネットワークインタフェース部11によって受信パケットバッファ5に書き込まれる。また、パケットデータはパケット処理部12によってチェックサムの確認が行われるとともにセッション検索によってM個のパケットが同一のセッションであると認識される。さらに、TCPプロトコル処理部13によってM個のパケットはインオーダーデータと認識されてインオーダーキュー51に追加される。そして、TCPプロトコル処理部13の処理の結果、M個のパケット511〜51Mのコピー先は61〜6Mと決定され、そのバッファコピー処理は1個目のパケットがTCPバッファコピー部21、2個目はTCPバッファコピー部22、M個目はTCPバッファコピー部2M(ただし、M>Nの場合)というようにラウンドロビンによって、バッファコピー先が振り分けられる。
これによって、インオーダーキュー51に格納されたM個のパケット511〜51Mが、それぞれアプリケーションバッファ6の61〜6Mに並列にコピーされる。
従来であれば、1個目のパケット511のパケットが61にコピーされるのを待って、512のパケットのコピー処理が開始されていた。しかし、本実施形態では、511のパケットのコピーの完了を待たずにパケット512のコピー処理を開始することによって、バッファコピーの際に要するメモリアクセス以外の処理時間を短縮し、トータルの処理時間を削減することができる。
次に、具体的な実施例に基づいて、第2の実施形態の動作について説明する。以下では、図6を参照しつつ説明する。対向ホストから送出されたM個のパケットが途中の通信経路において順序の入れ替えや廃棄がされることなく、TCP受信処理部1に到着し、続いて通信経路でデータシーケンスが飛んだ2個のパケットが到着したとする。その際、M+2個のパケットは、TCPプロトコル処理部13により処理され、M個のパケットがインオーダーデータと認識されてインオーダーキュー51にパケット511〜51Mとして追加され、後続の2個のパケットはアウトオブオーダーデータと認識されてアウトオブオーダーキュー52にパケット521、522として追加される。
第1の実施形態においては、アウトオブオーダーキュー52に格納されたパケットデータ521、522はインオーダーキューに格納されたパケットデータとアウトオブオーダーデータとの間を埋めるインオーダーデータが到着するまでバッファコピーされずアウトオブオーダーキュー52に保持される。間を埋めるインオーダーデータが到着した時点で、パケット521、522はアウトオブオーダーキュー52からインオーダーキュー51に追加され、TCPバッファコピー部21〜2Nによりコピー処理が実施される。
一方、第2の実施形態では、アウトオブオーダーパケット521のデータシーケンスがアプリケーションバッファ6のコピー範囲内部であれば、アウトオブオーダーパケット521がインオーダーキュー51によってTCPセグメントが再構築可能となるのを待たずに、TCPバッファコピー部21〜2Nによって、アウトオブオーダーキュー521からアプリケーションバッファ6の6Kの領域に対してバッファコピーされる。
これらのバッファコピー処理は、第1の実施形態と同様に複数のTCPバッファコピー部21〜2Nにバッファコピー要求が振り分けられることによって並列に実施される。したがって、インオーダーキュー51に格納されているM個のパケット511〜51M及びアウトオブオーダーキューに格納されているパケット521は、それぞれアプリケーションバッファ6の領域61〜6M及び6K(M<K)に並列にコピーされる。
従来であればアウトオブオーダーデータがインオーダーデータによりストリームとして再構築可能になった場合に、一個のパケット処理時間のタイムスロットにおいて、インオーダーデータとあわせてアウトオブオーダーデータのコピー処理も要求される。したがって、バッファコピー要求が特定の時間に集中し性能が低下するという問題があった。しかし、本実施形態ではアウトオブオーダーデータがコピー可能であれば、アプリケーションバッファ6にコピーしてしまうことによって、バッファコピー要求を均一化して性能の低下を回避することができる。
次に、具体的な実施例を用いて、本発明の第3の実施形態の動作について説明する。図9を参照して、説明する。TCPプロトコル処理部13は、バッファコピー要求を送出する際、ラウンドロビンで振り分け先を決定する。その際ラウンドロビン振り分けの1周目はTCPバッファコピー部21〜2Nに対してリンクシーケンス番号を1、1、1、・・・というように同一の番号を振り分け、2周目はTCPバッファコピー部21〜2Nに対してリンクシーケンス番号を2、2、2、・・・というように振り分ける。また、リンクシーケンス番号と併せて該当パケット処理後のTCPパラメータrcv_nxtの値を付与する。
TCPバッファコピー部21〜2Nは第1、第2の実施形態と同様に、バッファコピー処理を実施後、リンクシーケンス番号とrcv_nxtの値を付与したバッファコピー完了通知をソケット処理部3に送付する。
ソケット処理部3は、バッファコピー完了通知に付与されたrcv_nxtの値を参照し、該当する領域に対するrcv_nxtの値がアプリケーションバッファ6の末尾であるか否かを判定する。rcv_nxtの値が末尾である場合、その完了通知に付与されたリンクシーケンス番号Lseq(I)に対して以下の2条件に基づく判定を行う。
条件1:Lseq(1)、・・・、Lseq(I−1)==Lseq(I)
条件2:Lseq(I+1)、・・・、Lseq(N)==Lseq(I)−1
ここで具体的な事例を考える。並列度N=5、アプリケーションバッファ6の末尾に相当した時のブロック番号I=3、Lseq(I)=10とする。このとき、先に通知されたバッファコピー処理が全て完了済みであるとすると、ブロック番号1、2、3がラウンドロビンの最後の周であり、ブロック番号4、5が一つ前の周であると期待される。よって、以下の2条件によって、先に通知されたバッファコピー処理が完了済みであるかを判定する。
条件1:Lseq(1)=Lseq(2)=Lseq(3)=10
条件2:Lseq(4)=Lseq(5)=9
この条件が満たされた場合、アプリケーションバッファ6が全て埋められたものと判定する。満たされていない場合には、先に要求が発行されたバッファコピー処理がまだ完了していないため、完了するまで待機する。
従来は、バッファコピー処理が完了したデータ長を積算することでアプリケーションバッファ6が埋められたかを判定していた。しかし、本実施形態では、rcv_nxtを参照して判定することによって、従来の実施形態では判定することができなかったアウトオブオーダーパケットの重なりが発生した場合であっても、正しくアプリケーションバッファ6が埋められたことを判定することができる。
次に、本発明の第4の実施形態の動作について説明する。第3の実施形態では、バッファコピー処理の振り分け先をラウンドロビンで決定していた。本実施形態は、振り分け先のイベントキュー721〜72Nの深さを参照し、最もエントリが少ないキューを振り分け先として動的に決定する。また、本実施形態では、周回ごとに必ず全てのブロックに振り分ける必要がある。また、同一のブロックに同一周回で複数回振り分けるのは認められない。振り分け先の決定後、バッファコピー要求を送出する。このバッファコピー要求が、アプリケーションバッファ6の末尾に相当するデータのものである場合、まだその周回で振り分けていない全てのブロックに対してダミーのバッファコピー要求を送付する。この要求はバッファコピー処理を行わない要求であって、全てのブロックに同一のリンクシーケンス番号を送付するために行われる。
また、ソケット処理部3における、アプリケーションバッファ6のバッファコピー処理の完了の判定は、次のように行われる。すなわち、並列度N=5、アプリケーションバッファ6の末尾に相当した時のブロック番号をI=3、Lseq(I)=10とした場合、以下の条件に基づいて判定される。
条件:Lseq(1)=Lseq(2)=・・・=Lseq(5)=10
この条件が充足された場合、アプリケーションバッファ6が全て埋められたものと判定する。充足されない場合、先に要求が発行されたバッファコピー処理がまだ完了していないため、完了するまで待機する。
本実施形態の動作によって、振り分け方式がラウンドロビンでない方式においても、バッファコピー処理が全て完了したか否かを判定することができる。したがって、振り分け方式が静的ではないもの、例えばイベントキューの深さが低く負荷の低いブロックに対して動的に割り当てていく方式であっても、並列にバッファコピー処理を実現することができる。
以上の記載は実施例に基づいて行ったが、本発明は、上記実施例に限定されるものではない。
本発明の第1の実施形態の構成を示すブロック図である。 本発明の第1の実施形態の全体受信処理を示す流れ図である。 本発明の第1の実施形態のTCP受信プロトコル処理を示す流れ図である。 本発明の第1の実施形態の並列バッファコピー処理を示す流れ図である。 本発明の第1の実施形態のインオーダーキュー及びアウトオブオーダーキューの構造を示すブロック図である。 本発明の第2の実施形態の構成を示すブロック図である。 本発明の第2の実施形態のバッファコピー並列要求処理を示す流れ図である。 TCPパケットの到着時のデータの状態及びTCPパラメータの変化についての説明図である。 本発明の第3の実施形態の構成を示すブロック図である。 本発明の第3の実施形態のバッファコピー要求生成処理を示す流れ図である。 本発明の第4の実施形態のEventキュー処理を示す流れ図である。
符号の説明
1 TCP受信処理部
2、21〜2N TCPバッファコピー部
3 ソケット処理部
4 アプリケーション部
5 受信パケットバッファ
6 アプリケーションバッファ
8 データ再構築情報管理部
10、20、30 TCPバッファコピー分散並列処理装置
11 ネットワークインタフェース部
12 パケット処理部
13 TCPプロトコル処理部
51 インオーダーキュー
52 アウトオブオーダーキュー
61〜6M、6K アプリケーションバッファのコピー先領域
71、721〜72N、73 Eventキュー
81 rcv_nxt管理部
511〜51M インオーダーキューに格納済みのパケットデータ
521、522 アウトオブオーダーキューに格納済みのパケットデータ
821〜82N リンクシーケンス保持部
G1 インオーダーキューの有効エントリのアドレス
G2 インオーダーキューの有効エントリ
G3 アウトオブオーダーキューの有効エントリ
G21 インオーダーキューの次エントリの開始アドレス
G22 インオーダーキューのヘッダアドレス
G23 インオーダーキューのデータアドレス
G24 インオーダーキューの有効データのアドレス
G25 インオーダーキューの有効データ長
G26 インオーダーキューに格納されているヘッダデータ
G27 インオーダーキューに格納されているパケットデータ
G31 アウトオブオーダーキューの次エントリの開始アドレス
G32 アウトオブオーダーキューのヘッダアドレス
G33 アウトオブオーダーキューのデータアドレス
G34 アウトオブオーダーキューの有効データのアドレス
G35 アウトオブオーダーキューの有効データ長
G36 アウトオブオーダーキューに格納されているヘッダデータ
G37 アウトオブオーダーキューに格納されているパケットデータ

Claims (13)

  1. TCP受信処理部と、
    1又は2以上のTCPバッファコピー部と、
    ソケット処理部と、
    受信パケットバッファと、
    アプリケーションバッファと、を備えるTCPバッファコピー分散並列処理装置であって、
    前記受信パケットバッファ及びアプリケーションバッファは、前記TCP受信処理部、TCPバッファコピー部及びソケット処理部からアクセス可能な記憶領域として構成され、
    前記TCP受信処理部は、パケットの受信処理とTCPプロトコル処理とを実施し、
    受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)と判定した場合には、該受信パケットを前記受信パケットバッファに設けたインオーダーキューに格納し、該受信パケットのTCPシーケンス番号に基づいて前記アプリケーションバッファにおけるコピー先の領域を決定し、該受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成し、前記TCPバッファコピー部のいずれかを選択して該バッファコピー要求を通知することによって受信パケットのバッファコピーを分散並列処理させるように構成され、
    受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定した場合には、該受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納するように構成されたことを特徴とするTCPバッファコピー分散並列処理装置。
  2. 前記TCP受信処理部は、アウトオブオーダーと判定した受信パケットの前記アプリケーションバッファにおけるコピー先が前記アプリケーションバッファに設けたコピー先領域に含まれる場合に限って、前記バッファコピー要求を生成し、前記TCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって受信パケットのバッファコピーを分散並列処理させるように構成されたことを特徴とする、請求項1に記載のTCPバッファコピー分散並列処理装置。
  3. 前記TCP受信処理部、TCPバッファコピー部及びソケット処理部はいずれもイベントキューを備え、
    要求送出側は要求受信側に設けたイベントキューに要求を追加することで要求を通知するように構成され、
    要求受信側は自身に設けたイベントキューをポーリングしてイベントキューに要求が追加されている場合にはその要求を取り出して処理を行うように構成され、
    前記TCP受信処理部、TCPバッファコピー部及びソケット処理部は、それぞれ非同期動作を行うように構成されたことを特徴とする、請求項1又は2に記載のTCPバッファコピー分散並列処理装置。
  4. 前記TCP受信処理部は、前記バッファコピー要求の通知先を前記TCPバッファコピー部の中からラウンドロビン(Round Robin)によって選択するように構成されたことを特徴とする、請求項1ないし3のいずれか一に記載のTCPバッファコピー分散並列処理装置。
  5. 前記TCPバッファコピー部は、バッファコピー処理を完了した場合には、コピーを実施したデータ長を含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
    前記アプリケーションバッファは、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
    前記ソケット処理部は、前記バッファコピー完了通知に含まれるコピーを実施したデータ長を積算し、積算された値が前記アプリケーションバッファにおけるコピー先領域の長さblenに達したか否かに基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されたことを特徴とする、請求項1ないし4のいずれか一に記載のTCPバッファコピー分散並列処理装置。
  6. 前記TCPバッファコピー部は、バッファコピー処理を完了した場合には、コピーを実施したデータ長とTCP受信処理部から通知された受信パケットのTCPプロトコル処理後のTCPパラメータrcv_nxtとを含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
    前記アプリケーションバッファは、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
    前記ソケット処理部は、前記バッファコピー完了通知に含まれるTCPパラメータrcv_nxtを参照し、その値に基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されたことを特徴とする、請求項1ないし4のいずれか一に記載のTCPバッファコピー分散並列処理装置。
  7. 前記TCPバッファコピー部のうちI番目(1≦I≦N)のものから前記ソケット処理部に通知された前記バッファコピー完了通知は、振り分けの周回回数を示すリンクシーケンス(Link Sequence)番号Lseq(I)を含み、
    前記ソケット処理部は、前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたと判定し、かつ、判定に用いられたバッファコピー完了通知がラウンドロビンによる振り分けのうちI番目である場合には、以下の2条件
    (a)Lseq(1)、・・・、Lseq(I−1)==Lseq(I)、
    (b)Lseq(I+1)、・・・、Lseq(N)==Lseq(I)−1
    が満たされたとき、前記TCPバッファコピー部のすべてのバッファコピー処理が完了したものと判定するように構成されたことを特徴とする、請求項5又は6に記載のTCPバッファコピー分散並列処理装置。
  8. 前記TCPプロトコル処理部は、前記TCPバッファコピー部に備えたイベントキューの残量を参照し、前記TCPバッファコピー部の中からイベントキューの残量がより少ないものを前記バッファコピー要求の通知先として動的に選択するように構成されたことを特徴とする、請求項3に記載のTCPバッファコピー分散並列処理装置。
  9. 前記TCPバッファコピー部は、バッファコピー処理を完了した場合には、コピーを実施したデータ長を含むバッファコピー完了通知を前記ソケット処理部に通知し、
    前記アプリケーションバッファは、アドレスbaddrから始まる長さblenの領域をコピー先領域として備え、
    前記ソケット処理部は、前記バッファコピー完了通知に含まれるコピーを実施したデータ長を積算し、積算された値が前記アプリケーションバッファにおけるコピー先領域の長さblenに達したか否かに基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されたことを特徴とする、請求項8に記載のTCPバッファコピー分散並列処理装置。
  10. 前記TCPバッファコピー部は、バッファコピー処理を完了した場合には、コピーを実施したデータ長とTCP受信処理部から通知された受信パケットのTCPプロトコル処理後のTCPパラメータrcv_nxtとを含むバッファコピー完了通知を前記ソケット処理部に通知するように構成され、
    前記アプリケーションバッファは、アドレスbaddrから始まる長さblenの領域をコピー領域として備え、
    前記ソケット処理部は、前記バッファコピー完了通知に含まれるTCPパラメータrcv_nxtを参照し、その値に基づいて前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたか否かを判定するように構成されたことを特徴とする、請求項8に記載のTCPバッファコピー分散並列処理装置。
  11. 前記TCP受信処理部は、送出するバッファコピー要求が前記アプリケーションバッファのデータを埋める最後のデータを含むか否かをTCPパラメータrcv_nxtに基づいて判定し、前記アプリケーションバッファのデータを埋める最後のデータを含むものと判定した場合には、該バッファコピー要求の通知後、同一の振り分け周回においてまだ要求を通知していない全てのTCPバッファコピー部に対してその周回のリンクシーケンス番号を含むダミーのバッファコピー要求を送出するように構成され、
    前記TCPバッファコピー部は、それぞれバッファコピー完了通知を前記ソケット処理部に通知し、
    前記TCPバッファコピー部のうちI番目(1≦I≦N)のものから前記ソケット処理部に通知された前記バッファコピー完了通知は、振り分けの周回回数を示すリンクシーケンス番号Lseq(I)(1≦I≦N)を含み、
    前記ソケット処理部は、前記バッファコピー完了通知に基づいて前記アプリケーションバッファの全ての領域へパケットデータコピーされたか否かを判定し、前記アプリケーションバッファの全ての領域に対するコピー要求が通知されたと判定し、かつ、前記TCPバッファコピー部から通知されたバッファコピー完了通知のリンクシーケンス番号がいずれも等しい場合には、前記TCPバッファコピー部のバッファコピー処理が完了したと判定するように構成されたことを特徴とする、請求項9又は10に記載のTCPバッファコピー分散並列処理装置。
  12. TCPバッファコピー分散並列処理装置によって、受信パケットに対するTCPプロトコル処理を実施する工程と、
    前記受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)か否かを判定する工程と、を含むTCPバッファコピー分散並列処理方法であって、
    インオーダーと判定された場合には、前記受信パケットを受信パケットバッファに設けたインオーダーキューに格納する工程と、
    前記受信パケットのTCPシーケンス番号に基づいてアプリケーションバッファにおけるコピー先の領域を決定する工程と、
    前記受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成する工程と、
    1又は2以上のTCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって前記受信パケットのバッファコピーを分散並列処理させる工程と、を含み、
    前記受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定された場合には、前記受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納する工程を含むことを特徴とするTCPバッファコピー分散並列処理方法。
  13. コンピュータによって、受信パケットに対するTCPプロトコル処理と、
    前記受信パケットが対向ホストによって送信された順序と同一の順序で到着した(インオーダー、In−Order)か否かを判定する処理と、を実行させるTCPバッファコピー分散並列処理プログラムであって、
    インオーダーと判定された場合には、前記受信パケットを受信パケットバッファに設けたインオーダーキューに格納する処理と、
    前記受信パケットのTCPシーケンス番号に基づいてアプリケーションバッファにおけるコピー先の領域を決定する処理と、
    前記受信パケットを前記受信パケットバッファから前記アプリケーションバッファにコピーするバッファコピー要求を生成する処理と、
    1又は2以上のTCPバッファコピー部のいずれかを選択して前記バッファコピー要求を通知することによって前記受信パケットのバッファコピーを分散並列処理させる処理と、をコンピュータに実行させ、
    前記受信パケットが対向ホストによって送信された順序と異なる順序で到着した(アウトオブオーダー、Out−of−Order)と判定された場合には、前記受信パケットを前記受信パケットバッファに設けたアウトオブオーダーキューに格納する処理をコンピュータに実行させることを特徴とするTCPバッファコピー分散並列処理プログラム。
JP2008056535A 2008-03-06 2008-03-06 Tcpバッファコピー分散並列処理装置、方法及びプログラム Expired - Fee Related JP4872952B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008056535A JP4872952B2 (ja) 2008-03-06 2008-03-06 Tcpバッファコピー分散並列処理装置、方法及びプログラム
US12/399,399 US7822053B2 (en) 2008-03-06 2009-03-06 Apparatus and method for TCP buffer copy distributed parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008056535A JP4872952B2 (ja) 2008-03-06 2008-03-06 Tcpバッファコピー分散並列処理装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009213065A JP2009213065A (ja) 2009-09-17
JP4872952B2 true JP4872952B2 (ja) 2012-02-08

Family

ID=41053520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008056535A Expired - Fee Related JP4872952B2 (ja) 2008-03-06 2008-03-06 Tcpバッファコピー分散並列処理装置、方法及びプログラム

Country Status (2)

Country Link
US (1) US7822053B2 (ja)
JP (1) JP4872952B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8665724B2 (en) * 2009-06-12 2014-03-04 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
US9065779B2 (en) 2009-06-12 2015-06-23 Wi-Lan Labs, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
WO2011068186A1 (ja) * 2009-12-03 2011-06-09 日本電気株式会社 パケット受信装置、パケット通信システム、パケット順序制御方法
WO2011083670A1 (ja) * 2010-01-07 2011-07-14 日本電気株式会社 パケット整列装置、受信装置、及びパケット整列方法
US8214448B2 (en) * 2010-04-20 2012-07-03 International Business Machines Corporation Optimized utilization of DMA buffers for incoming data packets in a network protocol
US20120020374A1 (en) * 2010-07-26 2012-01-26 Kenneth Jonsson Method and System for Merging Network Stacks
US9411868B2 (en) * 2013-08-23 2016-08-09 Morgan Stanley & Co. Llc Passive real-time order state replication and recovery
WO2015116075A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Copy message from application buffer to send buffer within kernel
CN105337896A (zh) * 2014-07-25 2016-02-17 华为技术有限公司 报文处理方法和装置
CN105468712A (zh) * 2015-11-20 2016-04-06 成都科来软件有限公司 一种数据存储兼容方法
US10547559B2 (en) * 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing
CN108418776B (zh) * 2017-02-09 2021-08-20 上海诺基亚贝尔股份有限公司 用于提供安全业务的方法和设备
EP3460500A1 (de) 2017-09-26 2019-03-27 Siemens Healthcare GmbH Medizinisches bildgebungsgerät zur kombinierten magnetresonanzbildgebung und bestrahlung und verfahren zur bestimmung der bestückung von shim-einheiten
US11444886B1 (en) * 2018-09-21 2022-09-13 Marvell Asia Pte Ltd Out of order packet buffer selection
CN114143268B (zh) * 2021-10-25 2024-02-06 航天恒星科技有限公司 基于tcp的报文接收方法及装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JP3441062B2 (ja) * 2000-04-11 2003-08-25 シャープ株式会社 デジタル信号処理装置
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
JP2002208981A (ja) * 2001-01-12 2002-07-26 Hitachi Ltd 通信方法
US8015303B2 (en) * 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7305493B2 (en) * 2002-11-27 2007-12-04 Intel Corporation Embedded transport acceleration architecture
US20050175012A1 (en) * 2004-02-06 2005-08-11 Telefonaktiebolaget L.M. Ericsson (Publ) System and method for transmitting and receiving data frames in a NAK-based window protocol
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine
US8116312B2 (en) * 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception

Also Published As

Publication number Publication date
US7822053B2 (en) 2010-10-26
JP2009213065A (ja) 2009-09-17
US20090225771A1 (en) 2009-09-10

Similar Documents

Publication Publication Date Title
JP4872952B2 (ja) Tcpバッファコピー分散並列処理装置、方法及びプログラム
CN109936510B (zh) 多路径rdma传输
TWI332150B (en) Processing data for a tcp connection using an offload unit
TWI306711B (en) Message context based tcp transmission
US7571247B2 (en) Efficient send socket call handling by a transport layer
EP1730919B1 (en) Accelerated tcp (transport control protocol) stack processing
US7617291B2 (en) System and method for supporting TCP out-of-order receive data using generic buffer
Laufer et al. Climb: Enabling network function composition with click middleboxes
AU2011265444B2 (en) Low latency FIFO messaging system
US20080059686A1 (en) Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US20200272579A1 (en) Rdma transport with hardware integration
JP2008085932A (ja) データ通信方法
CN102394880A (zh) 内容分发网络中的跳转响应处理方法和设备
JP2009237768A (ja) データ受信装置、データ受信方法およびデータ処理プログラム
CN113490927A (zh) 具有硬件集成和乱序放置的rdma输送
US20070291782A1 (en) Acknowledgement filtering
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
JPWO2010032533A1 (ja) ネットワークプロトコル処理システム、及びネットワークプロトコル処理方法
JP2019106697A (ja) 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス
JP2010045767A (ja) ネットワーク処理装置及びその処理方法
JP5880551B2 (ja) 再送制御システム及び再送制御方法
CN105144099B (zh) 通信***
JP4394710B2 (ja) 負荷制御装置及び方法及びプログラム
EP2383647A1 (en) Networking system call data division for zero copy operations
US20220217098A1 (en) Streaming communication between devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111012

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

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

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

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees