JP2008148181A - Communication apparatus and communication control method - Google Patents

Communication apparatus and communication control method Download PDF

Info

Publication number
JP2008148181A
JP2008148181A JP2006335366A JP2006335366A JP2008148181A JP 2008148181 A JP2008148181 A JP 2008148181A JP 2006335366 A JP2006335366 A JP 2006335366A JP 2006335366 A JP2006335366 A JP 2006335366A JP 2008148181 A JP2008148181 A JP 2008148181A
Authority
JP
Japan
Prior art keywords
packet
buffer
data
information
address information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006335366A
Other languages
Japanese (ja)
Inventor
Masanori Goto
正徳 後藤
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 JP2006335366A priority Critical patent/JP2008148181A/en
Publication of JP2008148181A publication Critical patent/JP2008148181A/en
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To easily achieve overhead reduction in software. <P>SOLUTION: The disclosed method includes the steps of: generating address information containing information about an address of a first buffer for storing data to be transmitted and about a length of the data to be transmitted, and storing the generated information in a second buffer; copying the address information from the second buffer to a third buffer, adding a first control header and generating a first packet; copying the first packet from the third buffer to a fourth buffer within a communication apparatus without interposing a processor; copying the data to be transmitted from the first buffer to the fourth buffer without interposing the processor on the basis of the address information, adding a second control header, and generating a second packet; and transmitting the first packet and the second packet stored in the fourth buffer to a transmission destination terminal. Thus, information is copied without interposing the processor, so that the overhead of software can be reduced. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、通信制御技術に関し、より詳しくはソフトウェアのオーバーヘッドを低減するための通信技術に関する。   The present invention relates to a communication control technique, and more particularly to a communication technique for reducing software overhead.

複数の計算機をネットワークに接続する計算機システムにおいて、データを送信する際、途中でデータが欠損する場合がある。この場合、データが確実に送信されたか否か、ネットワーク上の信頼性を保証する機構が必要となる。例えば、受信したデータからエラーを検出した場合にはデータを破棄又は訂正したり、データが送信先に届いていない場合にはデータを再送したりすることによって、ネットワーク上の信頼性を保証する。この信頼性保証を実現する方式としては、ハードウェアによって実現する方式と、ソフトウェアによって実現する方式とに大別される。ハードウェアによって信頼性保証を実現する方式では、InfiniBand(登録商標)やFibreChannel等が用いられる。しかし、これらは、ハードウェアが複雑で、高価になってしまうという課題がある。   In a computer system in which a plurality of computers are connected to a network, data may be lost during transmission. In this case, a mechanism for guaranteeing reliability on the network as to whether or not the data has been reliably transmitted is required. For example, the reliability on the network is ensured by discarding or correcting the data when an error is detected from the received data, or retransmitting the data when the data does not reach the transmission destination. Methods for realizing this reliability guarantee are roughly divided into a method realized by hardware and a method realized by software. InfiniBand (registered trademark), FibreChannel, and the like are used as a method for realizing reliability assurance by hardware. However, these have the problem that the hardware is complicated and expensive.

一方、信頼性が保証されないハードウェア(例えば、イーサネット(登録商標)等)を用いる場合には、ソフトウェアによって通信の信頼性保証を実現する。ソフトウェアによって通信の信頼性保証を実現する方式では、TCP/IP(Transmission Control Protocol/Internet Protocol)等のプロトコルが広く用いられている。TCP/IP等では、データが届いた場合、送信先から送信元に確認応答(ACKパケット)を返すようになっており、所定の時間内にACKパケットが返ってこない場合には、データを再送して、通信の信頼性保証を実現する。なお、通信の信頼性は保証されないが、イーサネットは、InfiniBand等に比べ、安価になるという利点がある。しかし、以下で述べるように、ソフトウェアによって通信の信頼性保証を実現する従来の方式では、ソフトウェアのオーバーヘッドが大きくなるという問題がある。   On the other hand, in the case of using hardware whose reliability is not guaranteed (for example, Ethernet (registered trademark)), the reliability of communication is realized by software. Protocols such as TCP / IP (Transmission Control Protocol / Internet Protocol) are widely used as a method for realizing communication reliability assurance by software. In TCP / IP, etc., when data arrives, an acknowledgment (ACK packet) is returned from the transmission destination to the transmission source. If no ACK packet is returned within a predetermined time, the data is retransmitted. Thus, communication reliability is guaranteed. Although communication reliability is not guaranteed, Ethernet has the advantage of being cheaper than InfiniBand. However, as described below, the conventional method for realizing communication reliability guarantee by software has a problem that software overhead increases.

図1及び図2を用いて、ソフトウェアによって通信の信頼性保証を実現する従来の方式を簡単に説明する。図1に、従来のパケット送受信の処理概要を示す。図1において、送信側計算機と受信側計算機とは、例えばイーサネットで接続されているものとする。また、送信側計算機及び受信側計算機は、それぞれユーザプログラムとOS(Operating System)とNIC(Network Interface Card)とから構成される。なお、送信側計算機におけるユーザプログラム、OS及びNICをそれぞれ送信側ユーザプログラム、送信側OS及び送信側NICと呼ぶ。また、受信側計算機におけるユーザプログラム、OS及びNICをそれぞれ受信側ユーザプログラム、受信側OS及び受信側NICと呼ぶ。図1では、OSに実装されたTCP/IPプロトコルにより、通信の信頼性保証が実現されているものとする。   A conventional system for realizing communication reliability guarantee by software will be briefly described with reference to FIGS. 1 and 2. FIG. 1 shows an outline of conventional packet transmission / reception processing. In FIG. 1, it is assumed that the transmission side computer and the reception side computer are connected by, for example, Ethernet. Each of the transmission side computer and the reception side computer includes a user program, an OS (Operating System), and a NIC (Network Interface Card). The user program, OS, and NIC in the transmission side computer are referred to as a transmission side user program, a transmission side OS, and a transmission side NIC, respectively. In addition, the user program, OS, and NIC in the receiving computer are referred to as a receiving user program, a receiving OS, and a receiving NIC, respectively. In FIG. 1, it is assumed that communication reliability is guaranteed by the TCP / IP protocol implemented in the OS.

まず、従来のパケット送信の処理概要を説明する。送信側ユーザプログラムは、ユーザデータの送信を送信側OSに対して要求する(図1:ステップ(1))。この際、送信側ユーザプログラムは、送信すべきユーザデータが格納された領域を指すアドレス、ユーザデータの長さ及びエンドポイントを指定する。そして、送信側OSは、送信すべきユーザデータを送信側OSの内部バッファにコピーしてパケットフレームを生成する(ステップ(2))。この際、送信側OSは、制御ヘッダを付加する。   First, an outline of processing for conventional packet transmission will be described. The transmission-side user program requests the transmission-side OS to transmit user data (FIG. 1: step (1)). At this time, the transmission-side user program designates an address indicating an area in which user data to be transmitted is stored, a length of the user data, and an end point. Then, the transmission side OS copies the user data to be transmitted to the internal buffer of the transmission side OS to generate a packet frame (step (2)). At this time, the transmission side OS adds a control header.

図2(a)及び(b)に、イーサネット上で送受信されるパケットフレームのフォーマットの一例を示す。図2(a)は、イーサネット上で送受信されるパケットフレームの基本的なフォーマットの一例を示す。図2(a)において、パケットフレームは、イーサネットヘッダとデータ部とから構成されており、イーサネットヘッダには、送信先、送信元及びプロトコル種別の情報が含まれ、データ部には、データ部の先頭からユーザデータが含まれる。また、図2(a)の例では、送信先、送信元及びプロトコル種別を総称して制御ヘッダと呼ぶ。一方、図2(b)は、イーサネットヘッダのプロトコル種別に「IP」が設定された場合のパケットフレームのフォーマットの一例を示す。イーサネットヘッダとデータ部とから構成される点は図2(a)の例と同じであるが、データ部の先頭にIPヘッダとTCPヘッダとが含まれる点が図2(a)と異なる。また、図2(b)の例では、送信先、送信元、プロトコル種別、IPヘッダ及びTCPヘッダを総称して制御ヘッダと呼ぶ。なお、図2(b)は、TCPヘッダを含む場合の一例であり、TCP以外のプロトコルに関するヘッダを含む場合もある。   2A and 2B show an example of a format of a packet frame transmitted / received on the Ethernet. FIG. 2A shows an example of a basic format of a packet frame transmitted / received on the Ethernet. In FIG. 2A, a packet frame is composed of an Ethernet header and a data part. The Ethernet header includes information on a transmission destination, a transmission source, and a protocol type, and the data part includes a data part. User data is included from the beginning. In the example of FIG. 2A, the transmission destination, transmission source, and protocol type are collectively referred to as a control header. On the other hand, FIG. 2B shows an example of a packet frame format when “IP” is set as the protocol type of the Ethernet header. The point composed of the Ethernet header and the data part is the same as the example of FIG. 2A, but differs from FIG. 2A in that an IP header and a TCP header are included at the head of the data part. In the example of FIG. 2B, the transmission destination, transmission source, protocol type, IP header, and TCP header are collectively referred to as a control header. Note that FIG. 2B is an example in which a TCP header is included, and may include a header related to a protocol other than TCP.

送信側OSは、パケットフレームを生成した後、送信側NICにパケット送信要求を通知する。送信側NICは、送信側OSからの送信要求を受信すると、DMA転送により、送信側OSの内部バッファからパケットフレームを読み出す(ステップ(3))。そして、送信側NICは、パケットフレームを送信する(ステップ(4))。   After generating the packet frame, the transmission side OS notifies the transmission side NIC of the packet transmission request. When receiving the transmission request from the transmission side OS, the transmission side NIC reads the packet frame from the internal buffer of the transmission side OS by DMA transfer (step (3)). Then, the transmission side NIC transmits a packet frame (step (4)).

次に、従来のパケット受信の処理概要を説明する。受信側ユーザプログラムは、ユーザデータの受信を受信側OSに対して要求する(ステップ(5))。この際、受信側ユーザプログラムは、データ受信用バッファのアドレス、データの長さ及びエンドポイントを指定する。そして、受信側OSは、受信側NICからの受信通知を待つ。また、受信側NICは、パケットフレームを受信すると、DMA転送により、受信側OSの内部バッファにパケットフレームを書き込み、パケットフレームを受信した旨を受信側OSに通知する(ステップ(6))。受信側OSは、受信側NICから受信通知を受信すると、受信側OSの内部バッファに格納されたパケットフレームから制御ヘッダを除いたデータ(すなわち、ユーザデータ)をデータ受信用バッファにコピーする(ステップ(7))。   Next, an outline of conventional packet reception processing will be described. The receiving-side user program requests the receiving-side OS to receive user data (step (5)). At this time, the receiving-side user program specifies the address of the data reception buffer, the data length, and the end point. Then, the reception-side OS waits for a reception notification from the reception-side NIC. Further, when receiving the packet frame, the receiving side NIC writes the packet frame in the internal buffer of the receiving side OS by DMA transfer, and notifies the receiving side OS that the packet frame has been received (step (6)). When receiving the reception notification from the receiving-side NIC, the receiving-side OS copies the data (that is, user data) excluding the control header from the packet frame stored in the internal buffer of the receiving-side OS to the data receiving buffer (Step S1). (7)).

また、受信側OSは、ACKパケットフレームを生成して受信側OSの内部バッファに格納し、受信側NICにパケット送信要求を通知する(ステップ(8))。受信側NICは、受信側OSから送信要求を受信すると、DMA転送により、受信側OSの内部バッファからパケットフレーム(ACK)を読み出す(ステップ(9))。そして、受信側NICは、パケットフレーム(ACK)を送信する(ステップ(10))。送信側NICは、パケットフレーム(ACK)を受信すると、DMA転送により、送信側OSの内部バッファにパケットフレーム(ACK)を書き込み、パケットフレーム(ACK)を受信した旨を送信側OSに通知する(ステップ(11))。送信側OSは、送信側NICから受信通知を受信すると、ACKパケットフレームを確認する(ステップ(12))。送信側OSは、パケットフレームが問題なく送信先に到達したことを確認できたので、当該パケットフレームを送信側OSの内部バッファから削除する等の処理を実施する。   Also, the receiving side OS generates an ACK packet frame, stores it in the internal buffer of the receiving side OS, and notifies the receiving side NIC of the packet transmission request (step (8)). When receiving the transmission request from the receiving OS, the receiving NIC reads the packet frame (ACK) from the internal buffer of the receiving OS by DMA transfer (step (9)). Then, the receiving side NIC transmits a packet frame (ACK) (step (10)). Upon receiving the packet frame (ACK), the transmission side NIC writes the packet frame (ACK) in the internal buffer of the transmission side OS by DMA transfer, and notifies the transmission side OS that the packet frame (ACK) has been received ( Step (11)). When the transmission side OS receives the reception notification from the transmission side NIC, the transmission side OS confirms the ACK packet frame (step (12)). Since the transmission-side OS has confirmed that the packet frame has reached the transmission destination without any problem, the transmission-side OS performs processing such as deleting the packet frame from the internal buffer of the transmission-side OS.

以上のように、ソフトウェアによって通信の信頼性保証を実現する従来の方式では、ユーザプログラムとOSとの間において、ユーザデータのコピー(ステップ(2)及びステップ(7))が発生するので、ソフトウェアのオーバーヘッドが大きくなる。特に、大量のユーザデータを送信する場合には、コピー処理によるCPU(Central Processing Unit)負荷が大きくなる。近年、ネットワーク上の通信速度は大きく向上しているが、ソフトウェアのオーバーヘッドが大きいため、ネットワーク本来の性能を発揮できていない。   As described above, in the conventional method for guaranteeing communication reliability by software, a copy of the user data (step (2) and step (7)) is generated between the user program and the OS. Increases the overhead. In particular, when a large amount of user data is transmitted, a CPU (Central Processing Unit) load due to copy processing increases. In recent years, although the communication speed on the network has been greatly improved, the inherent performance of the network cannot be exhibited due to the large software overhead.

このような問題に対応する従来技術として、例えば、TOE(TCP Offload Engine)がある。TOEでは、コピー処理をNICで行うため、コピー処理によるCPU負荷を軽減させることができる。しかし、TOEは、ユーザプログラムを一切変更する必要はないが、OSをTOEに対応するように変更しなければならない。さらに、NICが複雑で、高価になってしまうという課題がある。   For example, there is a TOE (TCP Offload Engine) as a conventional technique for dealing with such a problem. In the TOE, since the copy process is performed by the NIC, the CPU load due to the copy process can be reduced. However, the TOE does not need to change the user program at all, but must change the OS to correspond to the TOE. Furthermore, there is a problem that the NIC is complicated and expensive.

さらに、上記問題に対応する他の従来技術として、例えば、RDMA(Remote Direct Memory Access)がある。RDMAは、NICがユーザデータを直接読み出すので、コピー処理を削減することができる。しかし、ユーザプログラムをRDMAに対応するように変更しなければならない。さらに、RDMAでは、通信の信頼性が保証されないため、NICに通信の信頼性を保証する機構を実装しなければならず、やはりNICが複雑で、高価になってしまうという課題がある。   Further, as another conventional technique for dealing with the above problem, for example, there is RDMA (Remote Direct Memory Access). In RDMA, since the NIC directly reads out user data, copy processing can be reduced. However, the user program must be changed to support RDMA. Furthermore, since the reliability of communication is not guaranteed in RDMA, a mechanism for ensuring the reliability of communication must be installed in the NIC, and there is still a problem that the NIC becomes complicated and expensive.

また、例えば、特開2005−100230号公報には、物理層、リンク層、トランスポート層及びアプリケーション層を備え、ホストとの間でシリアル伝送によりコマンド及びデータをパケット形式により転送するデバイス用のインターフェース装置であって、トランスポート層に設けられ、物理層及びリンク層を介してホストから受信されたコマンドパケット又はデータパケットを先入れ先出しにより格納する受信用FIFOと、データ転送中に受信用FIFOに格納されたコマンドを検出してコマンド検出信号を出力するコマンド検出回路と、アプリケーション層に設けられ、受信用FIFOのコマンド内容をロードする受信用タスクファイルレジスタと、トランスポート層に設けられ、パケット送信用のコマンド又はデータをロードする送信用タスクファイルレジスタと、トランスポート層に設けられ、送信用タスクファイルレジスタの内容を先入れ先出しで格納し、リンク層及び物理層を介してコマンドパケット又はデータパケットをホストに送信させる送信用FIFOと、データ転送中に、ホストから別のコマンドパケットを受信するための空き時間を生成する空き時間生成部と、空き時間にホストからコマンドパケットを受信した場合、データ転送を一時停止して受信コマンドを解読して処理を実行した後に、データ転送を再開する転送中コマンド処理部とを備えたインターフェース装置が開示されている。しかし、上記問題を解決するような技術は開示されていない。   Also, for example, Japanese Patent Laid-Open No. 2005-100230 discloses a device interface that includes a physical layer, a link layer, a transport layer, and an application layer, and transfers commands and data in a packet format with a host by serial transmission. A device that is provided in the transport layer and stores a command packet or a data packet received from the host via the physical layer and the link layer in a first-in first-out manner, and is stored in the reception FIFO during data transfer. A command detection circuit that detects a received command and outputs a command detection signal; a reception task file register that loads a command content of a reception FIFO provided in an application layer; and a transport layer that is provided for a packet transmission Load command or data A task file register for transmission and a transmission FIFO provided in the transport layer, storing the contents of the task file register for transmission in a first-in first-out manner, and transmitting a command packet or a data packet to the host via the link layer and the physical layer; During the data transfer, a free time generation unit that generates a free time for receiving another command packet from the host, and when a command packet is received from the host during the free time, the data transfer is suspended and the received command is An interface device is disclosed that includes an in-transfer command processing unit that resumes data transfer after decoding and executing processing. However, a technique that solves the above problem is not disclosed.

また、例えば、特表平10−505700号公報には、ローカルエリアネットワークとネットワーク周辺装置間をインタフェースするネットワーク装置であって、 物理ネットワークレイヤから、割込駆動のデータリンクレイヤを介し、周辺装置にサービスするアプリケーションレイヤにまで伸びるプロトコルスタックを具備し、 データリンクレイヤは、固有のダンプ/デバッグパケットヘッダによって起動され、パケットのデータ部内に含まれる専用のデバッグコマンドを解釈し、割込消勢モードにおいてダンプ/デバッグコマンドを実行するモジュールを有するネットワーク装置が開示されている。しかし、やはり上記問題を解決するような技術は開示されていない。
特開2005−100230号公報 特表平10−505700号公報
Also, for example, Japanese Patent Publication No. 10-505700 discloses a network device that interfaces between a local area network and a network peripheral device, from the physical network layer to the peripheral device via an interrupt-driven data link layer. With a protocol stack that extends to the serving application layer, the data link layer is activated by a unique dump / debug packet header, interprets dedicated debug commands contained in the data portion of the packet, and in interrupt deactivation mode A network device having a module for executing a dump / debug command is disclosed. However, no technology that solves the above problem is disclosed.
JP 2005-100230 A Japanese National Patent Publication No. 10-505700

このように、従来技術によれば、ソフトウェアによって通信の信頼性保証を実現する際に生じるソフトウェアのオーバーヘッドの低減を実現できる。しかし、従来技術では、NICが複雑で、高価になってしまうという問題がある。さらに、従来技術では、従来のOSをそのまま利用することはできないため、専用の構成に変更する必要がある。一般的に、OSを変更することは容易ではなく、手間及び知識が必要となってしまう。   As described above, according to the conventional technique, it is possible to reduce the overhead of software generated when the reliability of communication is ensured by software. However, the conventional technique has a problem that the NIC is complicated and expensive. Furthermore, in the prior art, since the conventional OS cannot be used as it is, it is necessary to change to a dedicated configuration. In general, it is not easy to change the OS, and labor and knowledge are required.

従って、本発明の目的は、ソフトウェアによって通信の信頼性保証を実現する際に生じるソフトウェアのオーバーヘッドの低減を簡便に実現するための技術を提供することである。   Therefore, an object of the present invention is to provide a technique for easily realizing a reduction in software overhead that occurs when the reliability of communication is ensured by software.

また、本発明の他の目的は、従来のOSを変更することなく、ソフトウェアによって通信の信頼性保証を実現する際に生じるソフトウェアのオーバーヘッドの低減を実現するための技術を提供することである。   Another object of the present invention is to provide a technique for realizing a reduction in software overhead that occurs when a communication reliability guarantee is realized by software without changing a conventional OS.

本発明の第1の態様に係る通信制御方法は、プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、送信すべきデータを格納する第1バッファのアドレス及び送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、アドレス情報を第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、第1パケットを第3バッファから通信装置内の第4バッファにプロセッサを介さずにコピーするコピー処理ステップと、アドレス情報に基づき、送信すべきデータを第1バッファから第4バッファにプロセッサを介さずにコピーすると共に、第2制御ヘッダを付加し、第2パケットを生成する第2パケット生成ステップと、第4バッファに格納された第1パケット及び第2パケットを送信先端末に送信する送信ステップとを含む。   A communication control method according to a first aspect of the present invention is a communication control method executed by a computer having a processor and a communication device, and includes an address of a first buffer for storing data to be transmitted and data to be transmitted. Address information including the length information, and storing the address information in the second buffer, copying the address information from the second buffer to the third buffer, adding a first control header, A first packet generating step for generating a packet; a copy processing step for copying the first packet from the third buffer to the fourth buffer in the communication device without using a processor; and data to be transmitted based on the address information. The second packet is copied from the first buffer to the fourth buffer without passing through the processor, and the second control header is added. It includes a second packet generating step of generating, and transmitting step of transmitting a first packet and a second packet stored in the fourth buffer to the destination terminal.

このようにすれば、例えば、大きなデータを送信する場合であっても、第3バッファにコピーされるのはアドレス情報であるため、コピー処理によるCPU負荷を低減することができる。また、送信すべきデータは、第1バッファから通信装置内の第4バッファにプロセッサ(例えば、CPU)を介さずにコピーされるため、CPUに負荷はかからない。さらに、通信装置(例えばNIC)は、通信の信頼性を保証する機構を持たないため、通信装置が複雑になることを抑えることができる。従って、ソフトウェアのオーバーヘッドの低減を簡便に実現できるようになる。   In this way, for example, even when a large amount of data is transmitted, since the address information is copied to the third buffer, the CPU load due to the copy process can be reduced. Further, since the data to be transmitted is copied from the first buffer to the fourth buffer in the communication device without passing through the processor (for example, CPU), no load is applied to the CPU. Furthermore, since the communication device (for example, NIC) does not have a mechanism for guaranteeing communication reliability, it is possible to prevent the communication device from becoming complicated. Therefore, it is possible to easily reduce the software overhead.

また、第2パケット生成ステップが、第1パケットをコピーして第2パケットに付加するステップを含むようにしても良い。このようにすれば、送信先端末は、第1パケットに対応する第2パケット又は第2パケットに対応する第1パケットを検出することができるようになる。   Further, the second packet generation step may include a step of copying the first packet and adding it to the second packet. In this way, the transmission destination terminal can detect the second packet corresponding to the first packet or the first packet corresponding to the second packet.

本発明の第2の態様に係る通信制御方法は、プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、送信すべきデータを格納する第1バッファのアドレス及び送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、アドレス情報を第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、第1パケットを第3バッファから通信装置内の第4バッファにプロセッサを介さずにコピーするコピー処理ステップと、アドレス情報に基づき、第1バッファから送信すべきデータをプロセッサを介さずに読み出し、第4バッファに格納された第1パケットの最後尾に付加して、統合パケットを生成する第2パケット生成ステップと、第4バッファに格納された統合パケットを送信先端末に送信する送信ステップとを含む。   A communication control method according to a second aspect of the present invention is a communication control method executed by a computer having a processor and a communication device, the address of a first buffer storing data to be transmitted and the data to be transmitted. Address information including the length information, and storing the address information in the second buffer, copying the address information from the second buffer to the third buffer, adding a first control header, A first packet generating step for generating a packet; a copy processing step for copying the first packet from the third buffer to the fourth buffer in the communication device without using a processor; and transmission from the first buffer based on the address information. Data to be read without going through the processor, added to the tail of the first packet stored in the fourth buffer, It includes a second packet generating step of generating a packet, and a transmission step of transmitting an integrated packet stored in the fourth buffer to the destination terminal.

このようにすれば、例えば、大きなデータを送信する場合であっても、第3バッファにコピーされるのはアドレス情報であるため、コピー処理によるCPU負荷を低減することができる。また、送信すべきデータは、第1バッファから通信装置内の第4バッファにプロセッサ(例えば、CPU)を介さずにコピーされるため、CPUに負荷はかからない。さらに、通信装置(例えばNIC)は、通信の信頼性を保証する機構を持たないため、通信装置が複雑になることを抑えることができる。従って、本発明の第1の態様と同様に、ソフトウェアのオーバーヘッドの低減を簡便に実現できるようになる。   In this way, for example, even when a large amount of data is transmitted, since the address information is copied to the third buffer, the CPU load due to the copy process can be reduced. Further, since the data to be transmitted is copied from the first buffer to the fourth buffer in the communication device without passing through the processor (for example, CPU), no load is applied to the CPU. Furthermore, since the communication device (for example, NIC) does not have a mechanism for guaranteeing communication reliability, it is possible to prevent the communication device from becoming complicated. Therefore, similarly to the first aspect of the present invention, it is possible to easily reduce the software overhead.

また、本発明の第1又は第2の態様において、コンピュータのオペレーティング・システムに対するデータ送信要求をフックするフック処理ステップをさらに含むようにしても良い。そして、フック処理ステップの後に、アドレス情報生成ステップを実施するようにしても良い。このようにすれば、例えばデータ送信要求の要求元である従来のプログラム及び従来のOSに対する変更が不要になる。従って、従来のOSを変更することなく、ソフトウェアのオーバーヘッドの低減を実現できるようになる。   The first or second aspect of the present invention may further include a hook processing step for hooking a data transmission request to the computer operating system. Then, the address information generation step may be performed after the hook processing step. In this way, for example, changes to the conventional program and the conventional OS that are the request source of the data transmission request become unnecessary. Therefore, software overhead can be reduced without changing the conventional OS.

さらに、本発明の第1又は第2の態様において、第1パケット生成ステップが、コンピュータのオペレーティング・システムにより実行されるようにしても良い。また、オペレーティング・システムにより、第1パケットの送信要求を通信装置に通知するステップをさらに含むようにしても良い。さらに、コピー処理ステップ、第2パケット生成ステップ及び送信ステップが、通信装置により実行されるようにしても良い。第1パケット生成ステップの処理は、従来のOSの処理と変わらないため、従来のOSが有する通信の信頼性保証機構(例えば、TCP/IPプロトコル)をそのまま利用することができる。   Furthermore, in the first or second aspect of the present invention, the first packet generation step may be executed by an operating system of a computer. The operating system may further include a step of notifying the communication device of a transmission request for the first packet. Further, the copy processing step, the second packet generation step, and the transmission step may be executed by the communication device. Since the processing of the first packet generation step is not different from the processing of the conventional OS, the communication reliability assurance mechanism (for example, TCP / IP protocol) that the conventional OS has can be used as it is.

本発明の第3の態様に係る通信制御方法は、プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、送信元端末からパケットを受信し、通信装置内の第1バッファに格納する受信ステップと、受信したパケットが、所定のアドレスの情報と所定のアドレスの示す領域に格納される特定のデータの長さの情報とを含む第1パケットである場合、当該第1パケットとの対応付けを表す情報と特定のデータとを含む第2パケットを既に受信しているか否か判定する第1判定ステップと、受信したパケットが、第2パケットである場合、当該第2パケットに対応する第1パケットを既に受信しているか否か判定する第2判定ステップと、第1判定ステップにおいて第2パケットを既に受信していると判定された場合、又は第2判定ステップにおいて第2パケットに対応する第1パケットを既に受信していると判定された場合、第2パケットに含まれる特定のデータを第1バッファから第2バッファにプロセッサを介さずにコピーし、第1パケットを第1バッファから第3バッファにプロセッサを介さずにコピーするコピー処理ステップと、第1パケットに含まれる所定のアドレスの情報と特定のデータの長さの情報とを第3バッファから第4バッファにコピーすると共に、第1パケットに対する確認応答を送信元端末に送信する応答ステップとを含む。   A communication control method according to a third aspect of the present invention is a communication control method executed by a computer having a processor and a communication device, which receives a packet from a transmission source terminal and stores it in a first buffer in the communication device. When the receiving step to store and the received packet is a first packet including information on a predetermined address and information on the length of specific data stored in an area indicated by the predetermined address, A first determination step for determining whether or not a second packet including information indicating the correspondence between the second packet and the specific data has already been received; and if the received packet is a second packet, the second packet corresponds to the second packet A second determination step for determining whether or not the first packet to be received has already been received, and when it is determined in the first determination step that the second packet has already been received, If it is determined in the second determination step that the first packet corresponding to the second packet has already been received, the specific data contained in the second packet is transferred from the first buffer to the second buffer without going through the processor. A copy processing step of copying and copying the first packet from the first buffer to the third buffer without going through the processor; and information on a predetermined address included in the first packet and information on the length of specific data. And a response step of copying an acknowledgment to the first packet to the transmission source terminal while copying from the third buffer to the fourth buffer.

このようにすれば、例えば、大きなデータを受信した場合であっても、第4バッファにコピーされるのは所定のアドレスの情報と特定のデータの長さの情報とであるため、コピー処理によるCPU負荷を低減することができる。また、特定のデータは、通信装置内の第1バッファから第2バッファにプロセッサ(例えば、CPU)を介さずにコピーされるため、CPUに負荷はかからない。さらに、通信装置(例えばNIC)は、通信の信頼性を保証する機構を持たないため、通信装置が複雑になることを抑えることができる。従って、ソフトウェアのオーバーヘッドの低減を簡便に実現できるようになる。   In this way, for example, even when large data is received, information to be copied to the fourth buffer is information on a predetermined address and information on the length of specific data. CPU load can be reduced. Further, the specific data is copied from the first buffer to the second buffer in the communication device without passing through the processor (for example, CPU), so that no load is applied to the CPU. Furthermore, since the communication device (for example, NIC) does not have a mechanism for guaranteeing communication reliability, it is possible to prevent the communication device from becoming complicated. Therefore, it is possible to easily reduce the software overhead.

また、本発明の第3の態様において、受信ステップ、第1判定ステップ、第2判定ステップ及びコピー処理ステップが、通信装置により実行されるようにしても良い。さらに、応答ステップが、コンピュータのオペレーティング・システムにより実行されるようにしても良い。応答ステップの処理は、従来のOSの処理と変わらないため、従来のOSが有する通信の信頼性保証機構(例えば、TCP/IPプロトコル)をそのまま利用することができる。   In the third aspect of the present invention, the reception step, the first determination step, the second determination step, and the copy processing step may be executed by the communication device. Further, the response step may be performed by a computer operating system. Since the response step processing is not different from the processing of the conventional OS, the communication reliability assurance mechanism (for example, TCP / IP protocol) of the conventional OS can be used as it is.

さらに、本発明の第3の態様において、第1パケットとの対応付けを表す情報が、対応する第1パケットをコピーした情報である場合もある。この場合、第1パケットに対応する第2パケット又は第2パケットに対応する第1パケットを検出することができるようになる。   Furthermore, in the third aspect of the present invention, the information indicating the association with the first packet may be information obtained by copying the corresponding first packet. In this case, the second packet corresponding to the first packet or the first packet corresponding to the second packet can be detected.

本発明の第4の態様に係る通信制御方法は、プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、送信元端末から、所定のアドレスの情報と所定のアドレスの示す領域に格納される特定のデータの長さの情報と特定のデータとを含む統合パケットを受信し、通信装置内の第1バッファに格納する受信ステップと、統合パケットに含まれる特定のデータを第1バッファから第2バッファにプロセッサを介さずにコピーし、統合パケットから特定のデータを除いたデータを第1パケットとして第1バッファから第3バッファにプロセッサを介さずにコピーするコピー処理ステップと、第1パケットに含まれる所定のアドレスの情報と特定のデータの長さの情報とを第3バッファから第4バッファにコピーすると共に、第1パケットに対する確認応答を送信元端末に送信する応答ステップとを含む。   A communication control method according to a fourth aspect of the present invention is a communication control method executed by a computer having a processor and a communication device, and includes information on a predetermined address and an area indicated by the predetermined address from a transmission source terminal. Receiving the integrated packet including the information on the length of the specific data stored in the data and the specific data, and storing the integrated packet in the first buffer in the communication device; and specifying the specific data included in the integrated packet in the first A copy processing step of copying data from the buffer to the second buffer without using a processor, and copying data obtained by removing specific data from the integrated packet as a first packet from the first buffer to the third buffer without using a processor; Copying information of a predetermined address and specific data length included in one packet from the third buffer to the fourth buffer In, and a response step of transmitting the acknowledgment for the first packet to the source terminal.

このようにすれば、例えば、大きなデータを受信した場合であっても、第4バッファにコピーされるのは所定のアドレスの情報と特定のデータの長さの情報とであるため、コピー処理によるCPU負荷を低減することができる。また、特定のデータは、通信装置内の第1バッファから第2バッファにプロセッサ(例えば、CPU)を介さずにコピーされるため、CPUに負荷はかからない。さらに、通信装置(例えばNIC)は、通信の信頼性を保証する機構を持たないため、通信装置が複雑になることを抑えることができる。従って、本発明の第3の態様と同様に、ソフトウェアのオーバーヘッドの低減を簡便に実現できるようになる。   In this way, for example, even when large data is received, information to be copied to the fourth buffer is information on a predetermined address and information on the length of specific data. CPU load can be reduced. Further, the specific data is copied from the first buffer to the second buffer in the communication device without passing through the processor (for example, CPU), so that no load is applied to the CPU. Furthermore, since the communication device (for example, NIC) does not have a mechanism for guaranteeing communication reliability, it is possible to prevent the communication device from becoming complicated. Therefore, similarly to the third aspect of the present invention, it is possible to easily reduce the software overhead.

また、本発明の第4の態様において、受信ステップ及びコピー処理ステップが、通信装置により実行されるようにしても良い。さらに、応答ステップが、コンピュータのオペレーティング・システムにより実行されるようにしても良い。   In the fourth aspect of the present invention, the reception step and the copy processing step may be executed by the communication device. Further, the response step may be performed by a computer operating system.

さらに、本発明の第3又は第4の態様において、コンピュータのオペレーティング・システムに対するデータ受信要求をフックし、第2バッファのアドレスを通信装置に通知するステップをさらに含むようにしても良い。さらに、第4バッファに格納された所定のアドレスの情報と特定のデータの長さの情報とを破棄するステップをさらに含むようにしても良い。このようにすれば、例えばデータ受信要求の要求元である従来のプログラム及び従来のOSに対する変更が不要になる。従って、従来のOSを変更することなく、ソフトウェアのオーバーヘッドの低減を実現できるようになる。   Furthermore, the third or fourth aspect of the present invention may further include the step of hooking a data reception request to the computer operating system and notifying the communication device of the address of the second buffer. Furthermore, a step of discarding information on a predetermined address and information on the length of specific data stored in the fourth buffer may be included. In this way, for example, changes to the conventional program and the conventional OS that are the request source of the data reception request become unnecessary. Therefore, software overhead can be reduced without changing the conventional OS.

なお、本発明に係る通信制御方法をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークを介してディジタル信号にて頒布される場合もある。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。   Note that a program for causing a computer to execute the communication control method according to the present invention can be created. The program can be a storage medium such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory, a hard disk, or the like. It is stored in a storage device. In some cases, digital signals are distributed over a network. Note that data being processed is temporarily stored in a storage device such as a computer memory.

本発明によれば、ソフトウェアによって通信の信頼性保証を実現する際に生じるソフトウェアのオーバーヘッドの低減を簡便に実現できる。   According to the present invention, it is possible to easily realize a reduction in software overhead that occurs when a communication reliability guarantee is realized by software.

また、本発明の他の側面によれば、従来のOSを変更することなく、ソフトウェアによって通信の信頼性保証を実現する際に生じるソフトウェアのオーバーヘッドの低減を実現できる。   In addition, according to another aspect of the present invention, it is possible to realize a reduction in software overhead that occurs when a communication reliability is ensured by software without changing a conventional OS.

[実施の形態1]
図3乃至図10を用いて本発明の第1の実施の形態を説明する。まず、図3に本発明の実施の形態に係るシステム概要を示す。図3において、計算機3Aと計算機3Bとは、例えばイーサネット等のインターフェース1で接続されている。なお、図3では、計算機3A及び計算機3Bの2台の例を示しているが、2台に限定するものではなく、例えばルータ等を介して3台以上の計算機3が接続される場合もある。本実施の形態では、計算機3Aと計算機3Bとが、インターフェース1を介してパケット通信を行う場面を想定する。
[Embodiment 1]
A first embodiment of the present invention will be described with reference to FIGS. First, FIG. 3 shows a system outline according to the embodiment of the present invention. In FIG. 3, a computer 3A and a computer 3B are connected by an interface 1 such as Ethernet. FIG. 3 shows two examples of the computer 3A and the computer 3B. However, the number is not limited to two. For example, three or more computers 3 may be connected via a router or the like. . In the present embodiment, it is assumed that the computer 3A and the computer 3B perform packet communication via the interface 1.

各計算機3は、ソフトウェアレベルとハードウェアレベルとに分かれており、ソフトウェアレベルには、ユーザデータの送受信を要求するユーザプログラム31と、ユーザプログラム31からの所定の命令をフックするフックライブラリ33と、OS35とが含まれ、ハードウェアレベルには、インターフェース1と接続し、パケットフレームの生成及び送受信を行うNIC37が含まれる。なお、図示していないが、ユーザプログラム31、フックライブラリ33及びOS35は記憶装置に格納されており、CPUにより実行される際には記憶装置からメインメモリに読み出される。   Each computer 3 is divided into a software level and a hardware level. In the software level, a user program 31 that requests transmission / reception of user data, a hook library 33 that hooks a predetermined instruction from the user program 31, and The OS 35 is included, and the hardware level includes an NIC 37 that is connected to the interface 1 to generate and transmit / receive packet frames. Although not shown, the user program 31, the hook library 33, and the OS 35 are stored in the storage device, and are read from the storage device to the main memory when executed by the CPU.

図4に、第1の実施の形態におけるNIC37の機能ブロック図を示す。第1の実施の形態におけるNIC37は、パケットフレームを格納するメモリバッファ371と、パケット送信時にパケットフレームの内容を判定する送信判定部372と、以下で詳細に述べるゼロコピーパケットフレームを生成するゼロコピーパケット構築部373と、DMA(Direct Memory Access)によりデータ転送を行うDMA処理部374と、メモリバッファ371に格納されたパケットフレームを送信する送信部375と、受信したパケットフレームをメモリバッファ371に格納する受信部376と、パケット受信時にパケットフレームの内容を判定する受信判定部377と、ゼロコピーパケットフレームに含まれるユーザデータをデータ受信用バッファへ書き込むようにDMA処理部374に通知するゼロコピーパケット処理部378とを有する。   FIG. 4 shows a functional block diagram of the NIC 37 in the first embodiment. The NIC 37 according to the first embodiment includes a memory buffer 371 for storing a packet frame, a transmission determination unit 372 that determines the contents of the packet frame at the time of packet transmission, and a zero copy that generates a zero copy packet frame described in detail below. A packet construction unit 373, a DMA processing unit 374 that performs data transfer by DMA (Direct Memory Access), a transmission unit 375 that transmits a packet frame stored in the memory buffer 371, and a received packet frame that is stored in the memory buffer 371 Receiving unit 376, receiving determination unit 377 for determining the contents of the packet frame when receiving the packet, and zero copy packet for notifying the DMA processing unit 374 to write the user data included in the zero copy packet frame to the data reception buffer Processing unit 3 And a 8.

第1の実施の形態におけるパケット送信の処理概要を図5乃至図7を用いて説明する。なお、送信側計算機におけるユーザプログラム31、フックライブラリ33、OS35及びNIC37をそれぞれ送信側ユーザプログラム、送信側フックライブラリ、送信側OS及び送信側NICと呼ぶ。また、受信側計算機におけるユーザプログラム31、フックライブラリ33、OS35、NIC37をそれぞれ受信側ユーザプログラム、受信側フックライブラリ、受信側OS、受信側NICと呼ぶ。   The outline of packet transmission processing in the first embodiment will be described with reference to FIGS. The user program 31, the hook library 33, the OS 35, and the NIC 37 in the transmission side computer are referred to as a transmission side user program, a transmission side hook library, a transmission side OS, and a transmission side NIC, respectively. In addition, the user program 31, the hook library 33, the OS 35, and the NIC 37 in the receiving computer are referred to as a receiving user program, a receiving hook library, a receiving OS, and a receiving NIC, respectively.

まず、送信側ユーザプログラムは、ユーザデータの送信を送信側OSに対して要求する(図5:ステップ(21))。送信側ユーザプログラムは、従来と同様に、送信すべきユーザデータが格納された領域を指すアドレス、ユーザデータの長さ及びエンドポイントを指定する。この際、本実施の形態では、送信側フックライブラリが、送信側ユーザプログラムから送信側OSに対する要求をフックし、以下のような処理を行う。すなわち、送信側フックライブラリは、送信側ユーザプログラムにより指定されたアドレス及び長さを含むアドレス情報を生成し、送信側フックライブラリの内部バッファに格納する(ステップ(22))。そして、送信側フックライブラリは、アドレス情報の送信を送信側OSに対して要求する。すなわち、送信側ユーザプログラムは、従来と同様にユーザデータの送信を要求しているが、送信側OSは、ユーザデータではなく、アドレス情報の送信を行うことになる。送信側OSは、アドレス情報を送信側OSの内部バッファにコピーしてパケットフレームを生成する(ステップ(23))。なお、ここでは、説明の便宜上、アドレス情報を含むパケットフレームをアドレス情報パケットフレームと呼ぶが、実際、送信側OSでは、従来のパケットフレームとアドレス情報パケットフレームとの区別はなく、いずれも同様に扱われる。   First, the transmission-side user program requests the transmission-side OS to transmit user data (FIG. 5: Step (21)). The transmission side user program designates the address indicating the area where the user data to be transmitted is stored, the length of the user data, and the end point as in the conventional case. At this time, in this embodiment, the transmission side hook library hooks a request to the transmission side OS from the transmission side user program, and performs the following processing. That is, the transmission side hook library generates address information including the address and length specified by the transmission side user program, and stores them in the internal buffer of the transmission side hook library (step (22)). Then, the transmission side hook library requests the transmission side OS to transmit address information. That is, the transmission-side user program requests transmission of user data as in the conventional case, but the transmission-side OS transmits address information instead of user data. The transmission side OS copies the address information to the internal buffer of the transmission side OS to generate a packet frame (step (23)). Here, for convenience of explanation, a packet frame including address information is referred to as an address information packet frame. However, in actuality, there is no distinction between a conventional packet frame and an address information packet frame on the transmission side OS, and both are the same. Be treated.

図6に、アドレス情報パケットフレームのフォーマットの一例を示す。図6の例では、アドレス情報パケットフレームは、制御ヘッダ(すなわち、送信先、送信元、プロトコル種別(IP)、IPヘッダ及びTCPヘッダ)とアドレス情報(すなわち、ユーザデータが格納された領域を指すアドレス及びユーザデータの長さ)とから構成される。ユーザデータの代わりにアドレス情報が設定される点が、従来のパケットフレーム(図2(b))と異なる。   FIG. 6 shows an example of the format of the address information packet frame. In the example of FIG. 6, the address information packet frame indicates a control header (that is, transmission destination, transmission source, protocol type (IP), IP header, and TCP header) and address information (that is, an area in which user data is stored). Address and user data length). The point that address information is set instead of user data is different from the conventional packet frame (FIG. 2B).

送信側OSは、アドレス情報パケットフレームを生成した後、送信側NICにパケット送信要求を通知する。送信側NICは、送信側OSからの送信要求を受信すると、DMA転送により、送信側OSの内部バッファからパケットフレームを読み出す(ステップ(24))。そして、送信側NICは、読み出したパケットフレームが、アドレス情報パケットフレームか否か判定する(ステップ(25))。なお、パケットフレームの中身をチェックするような処理は、従来と同様であるため、詳細な説明は省略する。もし、読み出したパケットフレームが従来のパケットフレームと判定された場合には、従来と同様に、送信側NICはパケットフレームを送信する。一方、読み出したパケットフレームがアドレス情報パケットフレームと判定された場合には、送信側NICは、DMA転送により、アドレス情報に含まれるアドレスの指す領域からユーザデータを読み出し、ゼロコピーパケットフレームを生成する(ステップ(26))。この際、送信側NICは、制御ヘッダ及び対応するアドレス情報パケットフレームのコピーを付加する。   After generating the address information packet frame, the transmission side OS notifies the transmission side NIC of a packet transmission request. Upon receiving the transmission request from the transmission side OS, the transmission side NIC reads the packet frame from the internal buffer of the transmission side OS by DMA transfer (step (24)). Then, the transmission side NIC determines whether or not the read packet frame is an address information packet frame (step (25)). Note that the processing for checking the contents of the packet frame is the same as in the prior art, and a detailed description thereof will be omitted. If the read packet frame is determined to be a conventional packet frame, the transmission side NIC transmits the packet frame as in the conventional case. On the other hand, when it is determined that the read packet frame is an address information packet frame, the transmitting-side NIC reads the user data from the area indicated by the address included in the address information by DMA transfer, and generates a zero copy packet frame. (Step (26)). At this time, the transmitting NIC adds a copy of the control header and the corresponding address information packet frame.

図7に、ゼロコピーパケットフレームのフォーマットの一例を示す。図7の例では、ゼロコピーパケットフレームは、制御ヘッダ(すなわち、送信先、送信元、プロトコル種別(専用番号)及びゼロコピー情報)と、対応するアドレス情報パケットフレームのコピー(すなわち、送信先、送信元、プロトコル種別(IP)、IPヘッダ、TCPヘッダ、ユーザデータが格納された領域を指すアドレス及びユーザデータの長さ)と、ユーザデータとから構成される。制御ヘッダに含まれるプロトコル種別には、ゼロコピーパケットフレームであることが分かるような専用番号を設定する。また、制御ヘッダに含まれるゼロコピー情報には、ゼロコピーパケットフレームの送受信において必要となる制御情報を設定する。例えば、イーサネットでは、送信できるパケットフレームのサイズには限りがあるため、大きなユーザデータを送信する場合には、複数のパケットフレームに分割して送信する必要がある。なお、従来のパケット送信においては送信側OSにより分割等が行われるが、本実施の形態では、送信側OSは、ユーザデータではなくアドレス情報(すなわち、小さなデータ)を送信することになるので、送信側OSによる分割は必要ないものとする。従って、本実施の形態では、送信側NICがユーザデータを複数のパケットフレームに分割し、複数のゼロコピーパケットフレームを送信する必要がある。この場合、ゼロコピーパケットフレームが全体の何番目に位置するかを示す情報(すなわち、シーケンス番号に相当する情報)を、ゼロコピー情報に設定する。なお、分割等の処理については本実施の形態の主要部ではないので、ここでは説明しない。   FIG. 7 shows an example of the format of the zero copy packet frame. In the example of FIG. 7, the zero copy packet frame includes a control header (that is, transmission destination, transmission source, protocol type (dedicated number) and zero copy information) and a corresponding copy of the address information packet frame (that is, transmission destination, A transmission source, a protocol type (IP), an IP header, a TCP header, an address indicating the area where user data is stored, and the length of user data) and user data. The protocol type included in the control header is set with a dedicated number indicating that it is a zero copy packet frame. Further, control information necessary for transmission / reception of a zero copy packet frame is set in the zero copy information included in the control header. For example, in Ethernet, the size of a packet frame that can be transmitted is limited. Therefore, when transmitting large user data, it is necessary to divide the packet frame into a plurality of packet frames. In conventional packet transmission, division or the like is performed by the transmission side OS. However, in this embodiment, the transmission side OS transmits address information (that is, small data) instead of user data. It is assumed that division by the transmission side OS is not necessary. Therefore, in this embodiment, it is necessary for the transmitting NIC to divide user data into a plurality of packet frames and transmit a plurality of zero copy packet frames. In this case, information indicating the position of the zero copy packet frame in the whole (that is, information corresponding to the sequence number) is set in the zero copy information. Note that processing such as division is not the main part of the present embodiment, and thus will not be described here.

送信側NICは、ゼロコピーパケットフレームを生成した後、アドレス情報パケットフレームとゼロコピーパケットフレームとを送信する(ステップ(27))。また、本実施の形態におけるパケット受信の処理概要については、後で説明するが、アドレス情報パケットフレームとゼロコピーパケットフレームとが受信側計算機に到達した場合、送信側NICは、受信側計算機からのパケットフレーム(ACK)を受信する(ステップ(28))。そして、送信側NICは、DMA転送により、送信側OSの内部バッファにパケットフレーム(ACK)を書き込み、パケットフレーム(ACK)を受信した旨を送信側OSに通知する(ステップ(29))。送信側OSは、送信側NICからの受信通知を受信すると、ACKパケットフレームを確認する(ステップ(30))。送信側OSは、パケットフレームが問題なく送信先に到達したことを確認できたので、当該パケットフレームを送信側OSの内部バッファから削除する等の処理を実施する。この際、送信側OSは、実際には、アドレス情報パケットフレームを内部バッファから削除することになる。   After generating the zero copy packet frame, the transmission side NIC transmits the address information packet frame and the zero copy packet frame (step (27)). Further, as will be described later, an outline of packet reception processing in this embodiment will be described later. When the address information packet frame and the zero copy packet frame arrive at the reception side computer, the transmission side NIC A packet frame (ACK) is received (step (28)). Then, the transmission side NIC writes the packet frame (ACK) in the internal buffer of the transmission side OS by DMA transfer, and notifies the transmission side OS that the packet frame (ACK) has been received (step (29)). When receiving the reception notification from the transmission side NIC, the transmission side OS confirms the ACK packet frame (step (30)). Since the transmission-side OS has confirmed that the packet frame has reached the transmission destination without any problem, the transmission-side OS performs processing such as deleting the packet frame from the internal buffer of the transmission-side OS. At this time, the transmission side OS actually deletes the address information packet frame from the internal buffer.

このようにすれば、送信側NICが、DMA転送により、ユーザデータを直接読み出すので、ソフトウェアレベルにおいて、ユーザデータのコピーは発生しない。また、送信側OSが、内部バッファにコピーするのはアドレス及び長さの情報だけであり、例えば、大量のユーザデータを送信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができる。さらに、送信側ユーザプログラム及び送信側OSを変更しなくても実現することができる。   In this way, since the transmission side NIC directly reads out the user data by DMA transfer, the user data is not copied at the software level. Further, the transmission side OS copies only the address and length information to the internal buffer. For example, even when a large amount of user data is transmitted, the CPU load due to the copy process can be minimized. Further, this can be realized without changing the transmission side user program and the transmission side OS.

次に、第1の実施の形態におけるパケット受信の処理概要を図8を用いて説明する。まず、受信側ユーザプログラムは、ユーザデータの受信を受信側OSに対して要求する(図8:ステップ(31))。受信側ユーザプログラムは、従来と同様に、データ受信用バッファのアドレス、データの長さ及びエンドポイントを指定する。この際、本実施の形態では、受信側フックライブラリが、受信側ユーザプログラムから受信側OSに対する要求をフックし、以下のような処理を行う。すなわち、受信側フックライブラリは、受信側ユーザプログラムにより指定されたデータ受信用バッファのアドレスを受信側NICに通知する(ステップ(32))。これにより、後で説明するが、受信側NICは、DMA転送により、ユーザデータをデータ受信用バッファに書き込むことができるようになる。また、受信側フックライブラリは、受信側フックライブラリの内部バッファに、アドレス情報を格納するための領域(以下、アドレス情報受信用バッファと呼ぶ)を確保する。後で説明するが、アドレス情報受信用バッファには、受信側OSによりアドレス情報がコピーされる。そして、受信側フックライブラリは、アドレス情報の受信を受信側OSに対して要求する。すなわち、受信側ユーザプログラムは、従来と同様にユーザデータの受信を要求しているが、受信側OSは、ユーザデータではなく、アドレス情報の受信を行うことになる。そして、受信側OSは、受信側NICからの受信通知を待つ。   Next, an outline of packet reception processing in the first embodiment will be described with reference to FIG. First, the receiving-side user program requests the receiving-side OS to receive user data (FIG. 8: Step (31)). The receiving side user program designates the address of the data receiving buffer, the length of the data, and the end point as in the conventional case. At this time, in this embodiment, the receiving side hook library hooks a request to the receiving side OS from the receiving side user program, and performs the following processing. That is, the receiving side hook library notifies the receiving side NIC of the address of the data receiving buffer designated by the receiving side user program (step (32)). Thereby, as will be described later, the receiving-side NIC can write user data to the data reception buffer by DMA transfer. The receiving hook library reserves an area for storing address information (hereinafter referred to as an address information receiving buffer) in the internal buffer of the receiving hook library. As will be described later, the address information is copied to the address information reception buffer by the receiving OS. Then, the receiving side hook library requests the receiving side OS to receive the address information. That is, the receiving-side user program requests reception of user data as in the conventional case, but the receiving-side OS receives address information instead of user data. Then, the reception-side OS waits for a reception notification from the reception-side NIC.

また、受信側NICは、パケットフレームを受信すると、受信したパケットフレームが、アドレス情報パケットフレーム、ゼロコピーパケットフレーム及びその他のパケットフレーム(すなわち、従来のパケットフレーム)のいずれかであるか判定する(ステップ(33))。もし、受信したパケットフレームが従来のパケットフレームと判定された場合には、従来通りの処理を実施する。一方、受信したパケットフレームがアドレス情報パケットフレーム又はゼロコピーパケットフレームと判定された場合、対応するゼロコピーパケットフレーム又は対応するアドレス情報パケットフレームを既に受信しているか判定する。まだ対応するゼロコピーパケットフレーム又は対応するアドレス情報パケットフレームを受信していなければ、以降の処理を保留する。なお、所定時間以上、対応するゼロコピーパケットフレーム又は対応するアドレス情報パケットフレームを受信しない場合には、受信済みのアドレス情報パケットフレーム又はゼロコピーパケットフレームを内部バッファから削除する。   Further, when the receiving side NIC receives the packet frame, the receiving side NIC determines whether the received packet frame is any one of an address information packet frame, a zero copy packet frame, and another packet frame (that is, a conventional packet frame) ( Step (33)). If the received packet frame is determined to be a conventional packet frame, the conventional processing is performed. On the other hand, when it is determined that the received packet frame is an address information packet frame or a zero copy packet frame, it is determined whether a corresponding zero copy packet frame or a corresponding address information packet frame has already been received. If the corresponding zero copy packet frame or the corresponding address information packet frame has not been received yet, the subsequent processing is suspended. When the corresponding zero copy packet frame or the corresponding address information packet frame is not received for a predetermined time or longer, the received address information packet frame or zero copy packet frame is deleted from the internal buffer.

一方、対応するゼロコピーパケットフレーム又は対応するアドレス情報パケットフレームを既に受信している場合には、受信側NICは、DMA転送により、ゼロコピーパケットフレームに含まれるユーザデータをデータ受信用バッファに書き込む(ステップ(34))。また、受信側NICは、DMA転送により、受信側OSの内部バッファにアドレス情報パケットフレームを書き込み、パケットフレームを受信した旨を受信側OSに通知する(ステップ(35))。受信側OSは、受信側NICから受信通知を受信すると、受信側OSの内部バッファに格納されたアドレス情報パケットフレームから制御ヘッダを除いたデータ(すなわち、アドレス情報)をアドレス情報受信用バッファにコピーする(ステップ(36))。   On the other hand, if the corresponding zero copy packet frame or the corresponding address information packet frame has already been received, the receiving side NIC writes the user data included in the zero copy packet frame to the data reception buffer by DMA transfer. (Step (34)). The receiving NIC writes the address information packet frame in the internal buffer of the receiving OS by DMA transfer, and notifies the receiving OS that the packet frame has been received (step (35)). When the reception side OS receives the reception notification from the reception side NIC, the reception side OS copies the data (that is, the address information) excluding the control header from the address information packet frame stored in the internal buffer of the reception side OS to the address information reception buffer. (Step (36)).

また、受信側OSは、ACKパケットフレームを生成して受信側OSの内部バッファに格納し、受信側NICにパケット送信要求を通知する(ステップ(37))。受信側NICは、受信側OSから送信要求を受信すると、DMA転送により、受信側OSの内部バッファからパケットフレーム(ACK)を読み出す(ステップ(38))。そして、受信側NICは、パケットフレーム(ACK)を送信する(ステップ(39))。   Also, the receiving side OS generates an ACK packet frame, stores it in the internal buffer of the receiving side OS, and notifies the receiving side NIC of the packet transmission request (step (37)). When receiving the transmission request from the receiving OS, the receiving NIC reads out the packet frame (ACK) from the internal buffer of the receiving OS by DMA transfer (step (38)). Then, the receiving side NIC transmits a packet frame (ACK) (step (39)).

また、受信側OSは、受信処理が完了するとユーザプログラムに完了応答を通知する。この際、本実施の形態では、受信側フックライブラリが、受信側OSからユーザプログラムに対する完了応答をフックし、以下のような処理を行う。すなわち、受信側フックライブラリは、アドレス情報受信用バッファに格納されたアドレス情報を破棄する(ステップ(40))。   In addition, when the receiving process is completed, the receiving OS notifies the user program of a completion response. At this time, in this embodiment, the receiving side hook library hooks a completion response to the user program from the receiving side OS, and performs the following processing. That is, the receiving side hook library discards the address information stored in the address information receiving buffer (step (40)).

このようにすれば、受信側NICが、DMA転送により、ユーザデータをデータ受信用バッファに直接書き込むので、ソフトウェアレベルにおいて、ユーザデータのコピーは発生しない。また、受信側OSが、内部バッファにコピーするのはアドレス及び長さの情報だけであり、例えば、大量のユーザデータを受信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができる。さらに、フックライブラリによりアドレス情報は破棄されるので、送信側ユーザプログラム及び送信側OSを変更しなくても実現することができる。   In this way, since the receiving NIC directly writes the user data to the data reception buffer by DMA transfer, the user data is not copied at the software level. Further, only the address and length information is copied to the internal buffer by the receiving-side OS. For example, even when a large amount of user data is received, the CPU load due to the copy process can be minimized. Furthermore, since the address information is discarded by the hook library, it can be realized without changing the transmission side user program and the transmission side OS.

次に、図5のような処理を実施するためのNIC37の処理をより詳細に説明する。図9に、NIC37の送信処理の処理フローを示す。まず、DMA処理部374は、送信側OSからパケット送信要求を受信すると(図9:ステップS1)、DMA転送により、送信側OSの内部バッファから、送信すべきパケットフレームを読み出し、メモリバッファ371に格納する(ステップS3)。送信判定部372は、メモリバッファ371を参照し、送信すべきパケットフレームの内容を判定する(ステップS5)。すなわち、送信すべきパケットフレームが、アドレス情報パケットフレームか否か判定する。もし、送信すべきパケットフレームが、アドレス情報パケットフレームでない場合(ステップS7:Noルート)、従来と同様に、送信部375は、パケットフレームを送信する(ステップS9)。そして、元の処理に戻る。   Next, the process of the NIC 37 for performing the process as shown in FIG. 5 will be described in more detail. FIG. 9 shows a processing flow of the NIC 37 transmission processing. First, when receiving a packet transmission request from the transmission side OS (FIG. 9: step S1), the DMA processing unit 374 reads a packet frame to be transmitted from the internal buffer of the transmission side OS by DMA transfer, and stores it in the memory buffer 371. Store (step S3). The transmission determination unit 372 refers to the memory buffer 371 and determines the content of the packet frame to be transmitted (step S5). That is, it is determined whether the packet frame to be transmitted is an address information packet frame. If the packet frame to be transmitted is not an address information packet frame (step S7: No route), the transmission unit 375 transmits the packet frame as in the conventional case (step S9). Then, the process returns to the original process.

一方、送信すべきパケットフレームが、アドレス情報パケットフレームである場合(ステップS7:Yesルート)、送信判定部372は、ゼロコピーパケットフレームを生成する旨の命令をゼロコピーパケット構築部373に対して出力する。そして、ゼロコピーパケット構築部373は、ユーザデータを読み出す旨の命令をDMA処理部374に対して出力する。DMA処理部374は、アドレス情報パケットフレームに含まれるアドレス情報に基づき、DMA転送により、データを読み出し、メモリバッファ371に格納する(ステップ11)。上で述べたように、アドレス情報には、ユーザデータが格納された領域を指すアドレスとユーザデータの長さが含まれるので、これらの情報を基にユーザデータを読み出す。そして、ゼロコピーパケット構築部373は、ユーザデータに制御ヘッダとアドレス情報パケットフレームのコピーとを付加し、ゼロコピーパケットフレームを生成する(ステップS13)。送信部375は、メモリバッファ371に格納されているアドレス情報パケットフレーム及びゼロコピーパケットフレームを送信する(ステップS15)。そして、元の処理に戻る。   On the other hand, when the packet frame to be transmitted is an address information packet frame (step S7: Yes route), the transmission determination unit 372 sends an instruction to the zero copy packet construction unit 373 to generate a zero copy packet frame. Output. Then, the zero copy packet construction unit 373 outputs a command for reading the user data to the DMA processing unit 374. The DMA processing unit 374 reads data by DMA transfer based on the address information included in the address information packet frame, and stores it in the memory buffer 371 (step 11). As described above, since the address information includes an address indicating the area where the user data is stored and the length of the user data, the user data is read based on these information. Then, the zero copy packet construction unit 373 adds a control header and a copy of the address information packet frame to the user data, and generates a zero copy packet frame (step S13). The transmission unit 375 transmits the address information packet frame and the zero copy packet frame stored in the memory buffer 371 (step S15). Then, the process returns to the original process.

次に、図8のような処理を実施するためのNIC37の処理をより詳細に説明する。図10に、NIC37の受信処理の処理フローを示す。まず、DMA処理部374は、受信側フックライブラリからデータ受信用バッファのアドレスを受信し、メモリバッファ371に格納する(図10:ステップS17)。また、受信部376は、パケットフレームを受信し、メモリバッファ371に格納する(ステップS19)。そして、受信判定部377は、メモリバッファ371を参照し、受信したパケットフレームの内容を判定する(ステップS21)。すなわち、受信したパケットフレームが、アドレス情報パケットフレーム、ゼロコピーパケットフレーム及びその他のパケットフレームのいずれであるか判定する。   Next, the process of the NIC 37 for performing the process as shown in FIG. 8 will be described in more detail. FIG. 10 shows a processing flow of the NIC 37 reception processing. First, the DMA processing unit 374 receives the address of the data reception buffer from the reception side hook library and stores it in the memory buffer 371 (FIG. 10: step S17). The receiving unit 376 receives the packet frame and stores it in the memory buffer 371 (step S19). Then, the reception determining unit 377 refers to the memory buffer 371 and determines the content of the received packet frame (step S21). That is, it is determined whether the received packet frame is an address information packet frame, a zero copy packet frame, or another packet frame.

もし、受信したパケットフレームが、アドレス情報パケットフレームである場合(ステップS23:Yesルート)、受信判定部377は、対応するゼロコピーパケットフレームを検索する旨の命令をゼロコピーパケット処理部378に対して出力する。ゼロコピーパケット処理部378は、アドレス情報パケットフレームとゼロコピーパケットフレームに含まれるアドレス情報パケットフレームのコピーとを比較し、対応するゼロコピーパケットフレームを受信しているか否か判定する(ステップS25)。まだ対応するゼロコピーパケットフレームを受信していなければ(ステップS25:Noルート)、端子Aを介してステップS19の処理に戻る。一方、対応するゼロコピーパケットフレームを受信している場合には(ステップS25:Yesルート)、ステップS33の処理に移行する。   If the received packet frame is an address information packet frame (step S23: Yes route), the reception determining unit 377 sends a command to the corresponding zero copy packet frame to the zero copy packet processing unit 378. Output. The zero copy packet processing unit 378 compares the address information packet frame with the copy of the address information packet frame included in the zero copy packet frame, and determines whether the corresponding zero copy packet frame is received (step S25). . If the corresponding zero copy packet frame has not been received yet (step S25: No route), the process returns to the process of step S19 via the terminal A. On the other hand, when the corresponding zero copy packet frame is received (step S25: Yes route), the process proceeds to step S33.

一方、受信したパケットフレームが、アドレス情報パケットフレームでなく(ステップS23:Noルート)、ゼロコピーパケットフレームである場合(ステップS27:Yesルート)、受信判定部377は、対応するアドレス情報パケットフレームを検索する旨の命令をゼロコピーパケット処理部378に対して出力する。ゼロコピーパケット処理部378は、アドレス情報パケットフレームとゼロコピーパケットフレームに含まれるアドレス情報パケットフレームのコピーとを比較し、対応するアドレス情報パケットフレームを受信しているか否か判定する(ステップS31)。まだ対応するアドレス情報パケットフレームを受信していなければ(ステップS31:Noルート)、端子Aを介してステップS19の処理に戻る。一方、対応するアドレス情報パケットフレームを受信している場合には(ステップS31:Yesルート)、ステップS33の処理に移行する。   On the other hand, when the received packet frame is not an address information packet frame (step S23: No route) but a zero copy packet frame (step S27: Yes route), the reception determination unit 377 displays the corresponding address information packet frame. An instruction to search is output to the zero copy packet processing unit 378. The zero copy packet processing unit 378 compares the address information packet frame with the copy of the address information packet frame included in the zero copy packet frame, and determines whether or not the corresponding address information packet frame is received (step S31). . If the corresponding address information packet frame has not been received yet (step S31: No route), the process returns to step S19 via the terminal A. On the other hand, when the corresponding address information packet frame is received (step S31: Yes route), the process proceeds to step S33.

また、受信したパケットフレームが、アドレス情報パケットフレームでなく(ステップS23:Noルート)、且つゼロコピーパケットフレームでもない場合(ステップS27:Noルート)、受信したパケットフレームは、従来のパケットフレームであるため、従来と同様の処理を行う。すなわち、DMA処理部374は、DMA転送により、受信したパケットフレームを受信側OSの内部バッファに書き込む(ステップS29)。   If the received packet frame is not an address information packet frame (step S23: No route) and is not a zero copy packet frame (step S27: No route), the received packet frame is a conventional packet frame. Therefore, the same processing as the conventional one is performed. That is, the DMA processing unit 374 writes the received packet frame in the internal buffer of the reception-side OS by DMA transfer (step S29).

また、対応するゼロコピーパケットフレームを受信している場合(ステップS25:Yesルート)又は対応するアドレス情報パケットフレームを受信している場合(ステップS31:Yesルート)、ゼロコピーパケット処理部378は、ゼロコピーパケットフレームに含まれるユーザデータ及びアドレス情報パケットフレームの書込命令をDMA処理部374に対して出力する。DMA処理部374は、メモリバッファ371に格納されたデータ受信用バッファのアドレスを基に、DMA転送により、ゼロコピーパケットフレームに含まれるユーザデータをデータ受信用バッファに書き込む(ステップS33)。また、DMA処理部374は、DMA転送により、アドレス情報パケットフレームを受信側OSの内部バッファに書き込む(ステップS35)。そして、元の処理に戻る。   When the corresponding zero copy packet frame is received (step S25: Yes route) or when the corresponding address information packet frame is received (step S31: Yes route), the zero copy packet processing unit 378 A write command for user data and address information packet frame included in the zero copy packet frame is output to the DMA processing unit 374. Based on the address of the data reception buffer stored in the memory buffer 371, the DMA processing unit 374 writes the user data included in the zero copy packet frame to the data reception buffer by DMA transfer (step S33). Further, the DMA processing unit 374 writes the address information packet frame in the internal buffer of the receiving-side OS by DMA transfer (step S35). Then, the process returns to the original process.

なお、受信側NICが、受信側フックライブラリからデータ受信用バッファのアドレスを受信する前に、送信側NICからパケットフレームが送信される場合があるが、その場合には、アドレス情報パケットフレームとゼロコピーパケットフレームとをメモリバッファ371で保持しておき、所定のタイミングでステップS33及びS35の処理を行うようにすれば良い。   Before the receiving NIC receives the address of the data reception buffer from the receiving hook library, a packet frame may be transmitted from the transmitting NIC. In this case, an address information packet frame and zero are transmitted. The copy packet frame may be held in the memory buffer 371, and the processes in steps S33 and S35 may be performed at a predetermined timing.

以上のように、本実施の形態によれば、送信側計算機及び受信側計算機のソフトウェアレベルにおいて、ユーザデータのコピーは発生しないので、例えば、大量のユーザデータを送受信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができ、通信速度の低下を防止することができる。また、従来のユーザプログラム31及びOS35をそのまま利用することができ、OS35の通信制御機能(例えば、パケット欠損時の再送等)もそのまま利用することができる。すなわち、ソフトウェアレベルでネットワーク上の信頼性が保証されるため、ハードウェアレベルにおいて、ネットワーク上の信頼性を保証する必要はない。   As described above, according to this embodiment, copy of user data does not occur at the software level of the transmission side computer and the reception side computer. For example, even when a large amount of user data is transmitted / received, the CPU by the copy process The load can be minimized, and a decrease in communication speed can be prevented. Further, the conventional user program 31 and the OS 35 can be used as they are, and the communication control function of the OS 35 (for example, retransmission when a packet is lost, etc.) can be used as it is. That is, since the reliability on the network is guaranteed at the software level, it is not necessary to guarantee the reliability on the network at the hardware level.

[実施の形態2]
次に図11乃至図16を用いて本発明の第2の実施の形態を説明する。本実施の形態におけるシステム構成は、基本的には図1に示したものと同じであるが、NIC37の代わりにNIC37bが処理を行う。
[Embodiment 2]
Next, a second embodiment of the present invention will be described with reference to FIGS. The system configuration in the present embodiment is basically the same as that shown in FIG. 1, but the NIC 37 b performs processing instead of the NIC 37.

図11に、第2の実施の形態におけるNIC37bの機能ブロック図を示す。第2の実施の形態におけるNIC37bは、メモリバッファ371と、送信判定部372と、統合パケットフレーム構築部373bと、DMA処理部374と、送信部375と、受信部376と、受信判定部377と、統合パケットフレーム処理部378bとを有する。統合パケットフレーム構築部373bは、パケット送信時に、以下で詳細に述べる統合パケットフレームを生成する。また、統合パケットフレーム処理部378bは、パケット受信時に、統合パケットフレームに含まれるユーザデータをデータ受信用バッファへ書き込むようにDMA処理部374に通知する。メモリバッファ371、送信判定部372、DMA処理部374、送信部375、受信部376及び受信判定部377は、基本的には第1の実施の形態と同じものである。   FIG. 11 is a functional block diagram of the NIC 37b according to the second embodiment. The NIC 37b in the second embodiment includes a memory buffer 371, a transmission determination unit 372, an integrated packet frame construction unit 373b, a DMA processing unit 374, a transmission unit 375, a reception unit 376, and a reception determination unit 377. And an integrated packet frame processing unit 378b. The integrated packet frame construction unit 373b generates an integrated packet frame described in detail below when transmitting a packet. Further, the integrated packet frame processing unit 378b notifies the DMA processing unit 374 to write the user data included in the integrated packet frame to the data reception buffer when receiving the packet. The memory buffer 371, transmission determination unit 372, DMA processing unit 374, transmission unit 375, reception unit 376, and reception determination unit 377 are basically the same as those in the first embodiment.

第2の実施の形態におけるパケット送信の処理概要を図12及び図13を用いて説明する。まず、送信側ユーザプログラムは、ユーザデータの送信を送信側OSに対して要求する(図12:ステップ(51))。送信側ユーザプログラムは、従来と同様に、送信すべきユーザデータが格納された領域を指すアドレス、ユーザデータの長さ及びエンドポイントを指定する。この際、第1の実施の形態と同様に、送信側フックライブラリが、送信側ユーザプログラムから送信側OSに対する要求をフックし、以下のような処理を行う。すなわち、送信側フックライブラリは、送信側ユーザプログラムにより指定されたアドレス及び長さを含むアドレス情報を生成し、送信側フックライブラリの内部バッファに格納する(ステップ(52))。そして、送信側フックライブラリは、アドレス情報の送信を送信側OSに対して要求する。すなわち、送信側ユーザプログラムは、従来と同様にユーザデータの送信を要求しているが、送信側OSは、ユーザデータではなく、アドレス情報の送信を行うことになる。送信側OSは、アドレス情報を送信側OSの内部バッファにコピーしてパケットフレームを生成する(ステップ(53))。   An outline of packet transmission processing in the second embodiment will be described with reference to FIGS. First, the transmission-side user program requests the transmission-side OS to transmit user data (FIG. 12: step (51)). The transmission side user program designates the address indicating the area where the user data to be transmitted is stored, the length of the user data, and the end point as in the conventional case. At this time, as in the first embodiment, the transmission-side hook library hooks a request to the transmission-side OS from the transmission-side user program, and performs the following processing. That is, the transmission side hook library generates address information including the address and length specified by the transmission side user program, and stores them in the internal buffer of the transmission side hook library (step (52)). Then, the transmission side hook library requests the transmission side OS to transmit address information. That is, the transmission-side user program requests transmission of user data as in the conventional case, but the transmission-side OS transmits address information instead of user data. The transmission side OS copies the address information to the internal buffer of the transmission side OS to generate a packet frame (step (53)).

送信側OSは、アドレス情報パケットフレームを生成した後、送信側NICにパケット送信要求を通知する。送信側NICは、送信側OSからの送信要求を受信すると、DMA転送により、送信側OSの内部バッファからパケットフレームを読み出す(ステップ(54))。そして、送信側NICは、読み出したパケットフレームが、アドレス情報パケットフレームか否か判定する(ステップ(55))。もし、読み出したパケットフレームが従来のパケットフレームと判定された場合には、従来と同様に、送信側NICはパケットフレームを送信する。一方、読み出したパケットフレームがアドレス情報パケットフレームと判定された場合、本実施の形態では、送信側NICは、DMA転送により、アドレス情報に含まれるアドレスの指す領域からユーザデータを読み出し、統合パケットフレームを生成する(ステップ(56))。送信側NICは、アドレス情報パケットフレームの最後尾にゼロコピー情報と読み出したユーザデータを付加し、統合パケットフレームを生成する。   After generating the address information packet frame, the transmission side OS notifies the transmission side NIC of a packet transmission request. When receiving the transmission request from the transmission side OS, the transmission side NIC reads the packet frame from the internal buffer of the transmission side OS by DMA transfer (step (54)). Then, the transmitting-side NIC determines whether or not the read packet frame is an address information packet frame (step (55)). If the read packet frame is determined to be a conventional packet frame, the transmission side NIC transmits the packet frame as in the conventional case. On the other hand, when it is determined that the read packet frame is an address information packet frame, in this embodiment, the transmission-side NIC reads user data from the area indicated by the address included in the address information by DMA transfer, and integrates the packet frame. Is generated (step (56)). The transmitting-side NIC adds zero copy information and the read user data to the end of the address information packet frame to generate an integrated packet frame.

図13に、統合パケットフレームのフォーマットの一例を示す。図13の例では、統合パケットフレームは、アドレス情報パケットフレーム(図6)と、ゼロコピー情報と、ユーザデータとから構成される。   FIG. 13 shows an example of the format of the integrated packet frame. In the example of FIG. 13, the integrated packet frame includes an address information packet frame (FIG. 6), zero copy information, and user data.

送信側NICは、統合パケットフレームを生成した後、統合パケットフレームを送信する(ステップ(57))。また、本実施の形態におけるパケット受信の処理概要については、後で説明するが、統合パケットフレームが受信側計算機に到達した場合、送信側NICは、受信側計算機からのパケットフレーム(ACK)を受信する(ステップ(58))。そして、送信側NICは、DMA転送により、送信側OSの内部バッファにパケットフレーム(ACK)を書き込み、パケットフレーム(ACK)を受信した旨を送信側OSに通知する(ステップ(59))。送信側OSは、送信側NICからの受信通知を受信すると、ACKパケットフレームを確認する(ステップ(60))。送信側OSは、パケットフレームが問題なく送信先に到達したことを確認できたので、当該パケットフレームを送信側OSの内部バッファから削除する等の処理を実施する。この際、送信側OSは、実際には、アドレス情報パケットフレームを内部バッファから削除することになる。   After generating the integrated packet frame, the transmitting side NIC transmits the integrated packet frame (step (57)). The packet reception processing outline in this embodiment will be described later. When the integrated packet frame arrives at the reception side computer, the transmission side NIC receives the packet frame (ACK) from the reception side computer. (Step (58)). Then, the transmission side NIC writes the packet frame (ACK) in the internal buffer of the transmission side OS by DMA transfer, and notifies the transmission side OS that the packet frame (ACK) has been received (step (59)). When the transmission side OS receives the reception notification from the transmission side NIC, the transmission side OS confirms the ACK packet frame (step (60)). Since the transmission-side OS has confirmed that the packet frame has reached the transmission destination without any problem, the transmission-side OS performs processing such as deleting the packet frame from the internal buffer of the transmission-side OS. At this time, the transmission side OS actually deletes the address information packet frame from the internal buffer.

第1の実施の形態では、アドレス情報パケットフレームとゼロコピーパケットフレームとの2つのパケットを送信したが、第2の実施の形態では、必要な情報を1つのパケット(統合パケットフレーム)にまとめて送信する。   In the first embodiment, two packets of an address information packet frame and a zero copy packet frame are transmitted. In the second embodiment, necessary information is collected into one packet (integrated packet frame). Send.

このようにすれば、送信側NICが、DMA転送により、ユーザデータを直接読み出すので、ソフトウェアレベルにおいて、ユーザデータのコピーは発生しない。また、送信側OSが、内部バッファにコピーするのはアドレス及び長さの情報だけであり、例えば、大量のユーザデータを送信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができる。さらに、送信側ユーザプログラム及び送信側OSを変更しなくても実現することができる。   In this way, since the transmission side NIC directly reads out the user data by DMA transfer, the user data is not copied at the software level. Further, the transmission side OS copies only the address and length information to the internal buffer. For example, even when a large amount of user data is transmitted, the CPU load due to the copy process can be minimized. Further, this can be realized without changing the transmission side user program and the transmission side OS.

次に、第2の実施の形態におけるパケット受信の処理概要を図14を用いて説明する。まず、受信側ユーザプログラムは、ユーザデータの受信を受信側OSに対して要求する(図14:ステップ(61))。受信側ユーザプログラムは、従来と同様に、データ受信用バッファのアドレス、データの長さ及びエンドポイントを指定する。この際、第1の実施の形態と同様に、受信側フックライブラリが、受信側ユーザプログラムから受信側OSに対する要求をフックし、以下のような処理を行う。すなわち、受信側フックライブラリは、受信側ユーザプログラムにより指定されたデータ受信用バッファのアドレスを受信側NICに通知する(ステップ(62))。これにより、後で説明するが、受信側NICは、DMA転送により、ユーザデータをデータ受信用バッファに書き込むことができるようになる。また、受信側フックライブラリは、受信側フックライブラリの内部バッファに、アドレス情報を格納するための領域(以下、アドレス情報受信用バッファと呼ぶ)を確保する。後で説明するが、アドレス情報受信用バッファには、受信側OSによりアドレス情報がコピーされる。そして、受信側フックライブラリは、アドレス情報の受信を受信側OSに対して要求する。すなわち、受信側ユーザプログラムは、従来と同様にユーザデータの受信を要求しているが、受信側OSは、ユーザデータではなく、アドレス情報の受信を行うことになる。そして、受信側OSは、受信側NICからの受信通知を待つ。   Next, an outline of packet reception processing in the second embodiment will be described with reference to FIG. First, the receiving-side user program requests the receiving-side OS to receive user data (FIG. 14: step (61)). The receiving side user program designates the address of the data receiving buffer, the length of the data, and the end point as in the conventional case. At this time, as in the first embodiment, the receiving-side hook library hooks a request for the receiving-side OS from the receiving-side user program, and performs the following processing. That is, the receiving side hook library notifies the receiving side NIC of the address of the data receiving buffer designated by the receiving side user program (step (62)). Thereby, as will be described later, the receiving-side NIC can write user data to the data reception buffer by DMA transfer. The receiving hook library reserves an area for storing address information (hereinafter referred to as an address information receiving buffer) in the internal buffer of the receiving hook library. As will be described later, the address information is copied to the address information reception buffer by the receiving OS. Then, the receiving side hook library requests the receiving side OS to receive the address information. That is, the receiving-side user program requests reception of user data as in the conventional case, but the receiving-side OS receives address information instead of user data. Then, the reception-side OS waits for a reception notification from the reception-side NIC.

また、受信側NICは、パケットフレームを受信すると、受信したパケットフレームが、統合パケットフレームか否か判定する(ステップ(63))。もし、受信したパケットフレームが、統合パケットフレームでなければ、従来通りの処理を実施する。一方、受信したパケットフレームが、統合パケットフレームである場合には、受信側NICは、DMA転送により、統合パケットフレームに含まれるユーザデータをデータ受信用バッファに書き込む(ステップ(64))。また、受信側NICは、DMA転送により、受信側OSの内部バッファに統合パケットフレームに含まれる制御ヘッダ及びアドレス情報(すなわち、アドレス情報パケットフレームの内容)を書き込み、パケットフレームを受信した旨を受信側OSに通知する(ステップ(65))。受信側OSは、受信側NICから受信通知を受信すると、受信側OSの内部バッファに格納されたアドレス情報パケットフレームから制御ヘッダを除いたデータ(すなわち、アドレス情報)をアドレス情報受信用バッファにコピーする(ステップ(66))。   Further, when receiving the packet frame, the receiving-side NIC determines whether or not the received packet frame is an integrated packet frame (step (63)). If the received packet frame is not an integrated packet frame, the conventional processing is performed. On the other hand, if the received packet frame is an integrated packet frame, the receiving-side NIC writes the user data included in the integrated packet frame to the data reception buffer by DMA transfer (step (64)). Also, the receiving NIC writes the control header and address information (that is, the contents of the address information packet frame) included in the integrated packet frame to the internal buffer of the receiving OS by DMA transfer, and receives the fact that the packet frame has been received. Notification is made to the side OS (step (65)). When the reception side OS receives the reception notification from the reception side NIC, the reception side OS copies the data (that is, the address information) excluding the control header from the address information packet frame stored in the internal buffer of the reception side OS to the address information reception buffer. (Step (66)).

また、受信側OSは、ACKパケットフレームを生成して受信側OSの内部バッファに格納し、受信側NICにパケット送信要求を通知する(ステップ(67))。受信側NICは、受信側OSから送信要求を受信すると、DMA転送により、受信側OSの内部バッファからパケットフレーム(ACK)を読み出す(ステップ(68))。そして、受信側NICは、パケットフレーム(ACK)を送信する(ステップ(69))。   Further, the receiving side OS generates an ACK packet frame, stores it in the internal buffer of the receiving side OS, and notifies the receiving side NIC of the packet transmission request (step (67)). When receiving the transmission request from the receiving OS, the receiving NIC reads out the packet frame (ACK) from the internal buffer of the receiving OS by DMA transfer (step (68)). Then, the receiving side NIC transmits a packet frame (ACK) (step (69)).

また、受信側OSは、受信処理が完了するとユーザプログラムに完了応答を通知する。この際、本実施の形態では、受信側OSからユーザプログラムに対する完了応答をフックし、以下のような処理を行う。すなわち、受信側フックライブラリは、アドレス情報受信用バッファに格納されたアドレス情報を破棄する(ステップ(70))。   In addition, when the receiving process is completed, the receiving OS notifies the user program of a completion response. At this time, in this embodiment, a completion response to the user program is hooked from the receiving-side OS, and the following processing is performed. That is, the receiving side hook library discards the address information stored in the address information receiving buffer (step (70)).

第2の実施の形態では、1つのパケット(統合パケットフレーム)として送信されるので、第1の実施の形態のように、両パケットフレーム(アドレス情報パケットフレーム及びゼロコピーパケットフレーム)を受信したか否かの判定は行わなくて良い。   In the second embodiment, since it is transmitted as one packet (integrated packet frame), whether both packet frames (address information packet frame and zero copy packet frame) are received as in the first embodiment. It is not necessary to determine whether or not.

このようにすれば、受信側NICが、DMA転送により、ユーザデータをデータ受信用バッファに直接書き込むので、ソフトウェアレベルにおいて、ユーザデータのコピーは発生しない。また、受信側OSが、内部バッファにコピーするのはアドレス及び長さの情報だけであり、例えば、大量のユーザデータを受信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができる。さらに、フックライブラリによりアドレス情報は破棄されるので、送信側ユーザプログラム及び送信側OSを変更しなくても実現することができる。   In this way, since the receiving NIC directly writes the user data to the data reception buffer by DMA transfer, the user data is not copied at the software level. Further, only the address and length information is copied to the internal buffer by the receiving-side OS. For example, even when a large amount of user data is received, the CPU load due to the copy process can be minimized. Furthermore, since the address information is discarded by the hook library, it can be realized without changing the transmission side user program and the transmission side OS.

次に、図12のような処理を実施するためのNIC37bの処理をより詳細に説明する。図15に、NIC37bの送信処理の処理フローを示す。まず、DMA処理部374は、送信側OSからパケット送信要求を受信すると(図15:ステップS41)、DMA転送により、送信側OSの内部バッファから、送信すべきパケットフレームを読み出し、メモリバッファ371に格納する(ステップS43)。送信判定部372は、メモリバッファ371を参照し、送信すべきパケットフレームの内容を判定する(ステップS45)。すなわち、送信すべきパケットフレームが、アドレス情報パケットフレームか否か判定する。もし、送信すべきパケットフレームが、アドレス情報パケットフレームでない場合(ステップS47:Noルート)、従来と同様に、送信部375は、パケットフレームを送信する(ステップS49)。そして、元の処理に戻る。   Next, the process of the NIC 37b for performing the process as shown in FIG. 12 will be described in more detail. FIG. 15 shows a processing flow of transmission processing of the NIC 37b. First, when receiving a packet transmission request from the transmission side OS (FIG. 15: step S41), the DMA processing unit 374 reads the packet frame to be transmitted from the internal buffer of the transmission side OS by DMA transfer, and stores it in the memory buffer 371. Store (step S43). The transmission determination unit 372 refers to the memory buffer 371 and determines the content of the packet frame to be transmitted (step S45). That is, it is determined whether the packet frame to be transmitted is an address information packet frame. If the packet frame to be transmitted is not an address information packet frame (step S47: No route), the transmission unit 375 transmits the packet frame as in the conventional case (step S49). Then, the process returns to the original process.

一方、送信すべきパケットフレームが、アドレス情報パケットフレームである場合(ステップS47:Yesルート)、送信判定部372は、統合パケットフレームを生成する旨の命令を統合パケットフレーム構築部373bに対して出力する。そして、統合パケットフレーム構築部373bは、ユーザデータを読み出す旨の命令をDMA処理部374に対して出力する。DMA処理部374は、アドレス情報パケットフレームに含まれるアドレス情報に基づき、DMA転送により、データを読み出し、メモリバッファ371に格納する(ステップ51)。上で述べたように、アドレス情報には、ユーザデータが格納された領域を指すアドレスとユーザデータの長さが含まれるので、これらの情報を基にユーザデータを読み出す。そして、統合パケットフレーム構築部373bは、ゼロコピー情報と読み出したユーザデータとをアドレス情報パケットフレームの最後尾に付加し、統合パケットフレームを生成する(ステップS53)。送信部375は、メモリバッファ371に格納されている統合パケットフレームを送信する(ステップS55)。そして、元の処理に戻る。   On the other hand, when the packet frame to be transmitted is an address information packet frame (step S47: Yes route), the transmission determination unit 372 outputs an instruction to generate an integrated packet frame to the integrated packet frame construction unit 373b. To do. Then, the integrated packet frame construction unit 373b outputs an instruction to read user data to the DMA processing unit 374. The DMA processing unit 374 reads data by DMA transfer based on the address information included in the address information packet frame, and stores it in the memory buffer 371 (step 51). As described above, since the address information includes an address indicating the area where the user data is stored and the length of the user data, the user data is read based on these information. Then, the integrated packet frame construction unit 373b adds the zero copy information and the read user data to the tail of the address information packet frame to generate an integrated packet frame (step S53). The transmission unit 375 transmits the integrated packet frame stored in the memory buffer 371 (step S55). Then, the process returns to the original process.

次に、図14のような処理を実施するためのNIC37bの処理をより詳細に説明する。図16に、NIC37bの受信処理の処理フローを示す。まず、DMA処理部374は、受信側フックライブラリからデータ受信用バッファのアドレスを受信し、メモリバッファ371に格納する(図16:ステップS57)。また、受信部376は、パケットフレームを受信し、メモリバッファ371に格納する(ステップS59)。そして、受信判定部377は、メモリバッファ371を参照し、受信したパケットフレームの内容を判定する(ステップS61)。すなわち、受信したパケットフレームが、統合パケットフレームか否か判定する。   Next, the process of the NIC 37b for performing the process as shown in FIG. 14 will be described in more detail. FIG. 16 shows a process flow of the reception process of the NIC 37b. First, the DMA processing unit 374 receives the address of the data reception buffer from the reception side hook library and stores it in the memory buffer 371 (FIG. 16: step S57). The receiving unit 376 receives the packet frame and stores it in the memory buffer 371 (step S59). Then, the reception determining unit 377 refers to the memory buffer 371 and determines the content of the received packet frame (step S61). That is, it is determined whether the received packet frame is an integrated packet frame.

もし、受信したパケットフレームが、統合パケットフレームでなければ(ステップS63:Noルート)、従来と同様の処理を実施する。すなわち、DMA処理部374は、DMA転送により、受信したパケットフレームを受信側OSの内部バッファに書き込む(ステップS65)。一方、受信したパケットフレームが、統合パケットフレームである場合には(ステップS63:Yesルート)、受信判定部377は、統合パケットフレームの処理を実施する旨の命令を統合パケットフレーム処理部378bに対して出力する。統合パケットフレーム処理部378bは、統合パケットフレームに含まれるユーザデータ、並びに統合パケットフレームに含まれる制御ヘッダ及びアドレス情報(すなわち、アドレス情報パケットフレームの内容)の書込命令をDMA処理部374に対して出力する。DMA処理部374は、メモリバッファ371に格納されたデータ受信用バッファのアドレスを基に、DMA転送により、統合パケットフレームに含まれるユーザデータをデータ受信用バッファに書き込む(ステップS67)。また、DMA処理部374は、DMA転送により、統合パケットフレームに含まれる制御ヘッダ及びアドレス情報を受信側OSの内部バッファに書き込む(ステップS69)。そして、元の処理に戻る。   If the received packet frame is not an integrated packet frame (step S63: No route), the same processing as the conventional one is performed. That is, the DMA processing unit 374 writes the received packet frame in the internal buffer of the receiving-side OS by DMA transfer (step S65). On the other hand, when the received packet frame is an integrated packet frame (step S63: Yes route), the reception determination unit 377 sends an instruction to the integrated packet frame processing unit 378b to execute processing of the integrated packet frame. Output. The integrated packet frame processing unit 378b sends a write command for user data included in the integrated packet frame and control header and address information (that is, the contents of the address information packet frame) included in the integrated packet frame to the DMA processing unit 374. Output. The DMA processing unit 374 writes the user data included in the integrated packet frame to the data reception buffer by DMA transfer based on the address of the data reception buffer stored in the memory buffer 371 (step S67). Also, the DMA processing unit 374 writes the control header and address information included in the integrated packet frame in the internal buffer of the receiving OS by DMA transfer (step S69). Then, the process returns to the original process.

以上のように、本実施の形態によれば、送信側計算機及び受信側計算機のソフトウェアレベルにおいて、ユーザデータのコピーは発生しないので、例えば、大量のユーザデータを送受信する場合でも、コピー処理によるCPU負荷を最小限に抑えることができ、通信速度の低下を防止することができる。また、従来のユーザプログラム31及びOS35をそのまま利用することができ、OS35の通信制御機能(例えば、パケット欠損時の再送等)もそのまま利用することができる。すなわち、ソフトウェアレベルでネットワーク上の信頼性が保証されるため、ハードウェアレベルにおいて、ネットワーク上の信頼性を保証する必要はない。   As described above, according to this embodiment, copy of user data does not occur at the software level of the transmission side computer and the reception side computer. For example, even when a large amount of user data is transmitted / received, the CPU by the copy process The load can be minimized, and a decrease in communication speed can be prevented. Further, the conventional user program 31 and the OS 35 can be used as they are, and the communication control function of the OS 35 (for example, retransmission when a packet is lost, etc.) can be used as it is. That is, since the reliability on the network is guaranteed at the software level, it is not necessary to guarantee the reliability on the network at the hardware level.

以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した機能ブロック図は必ずしも実際のプログラムモジュール構成に対応するものではない。また、OS35は、必ずしもOSである必要はなく、OSと同様の方式で通信を制御する専用ライブラリのような場合もある。   Although the embodiment of the present invention has been described above, the present invention is not limited to this. For example, the functional block diagram described above does not necessarily correspond to an actual program module configuration. The OS 35 is not necessarily an OS, and may be a dedicated library that controls communication in the same manner as the OS.

また、上で述べた例では、フックライブラリ33においてアドレス情報を生成等の処理を行うこととしていたが、フックライブラリ33を用意せず、ユーザプログラム31やOS35で行うようにしても良い。ユーザプログラム31で行う場合には、ユーザプログラム31の一部を変更する必要があるが、ユーザプログラム31の主構造やOS35を変更する必要はない。また、OS35で行うには、OS35の一部を変更する必要はあるが、OS35が有する通信の信頼性保証に関連する処理及びユーザプログラム31を変更する必要はない。   In the example described above, the hook library 33 performs processing such as generation of address information. However, the hook library 33 may not be prepared and may be performed by the user program 31 or the OS 35. When using the user program 31, it is necessary to change a part of the user program 31, but it is not necessary to change the main structure of the user program 31 or the OS 35. In addition, in order to perform with the OS 35, it is necessary to change a part of the OS 35, but it is not necessary to change the processing related to the reliability guarantee of communication and the user program 31 that the OS 35 has.

また、上で説明したアドレス情報パケットフレーム、ゼロコピーパケットフレーム及び統合パケットフレームのフォーマットは一例であって、データ部の内容は、データの並びを変更したり、さらに必要に応じてデータを追加又は削除したりしても良い。例えば、制御ヘッダに、IPヘッダやTCPヘッダを含めないようにしても良い。   Further, the format of the address information packet frame, the zero copy packet frame, and the integrated packet frame described above is an example, and the content of the data part can be changed in the data arrangement, or data can be added or deleted as necessary. It may be deleted. For example, the control header may not include an IP header or a TCP header.

また、処理フローにおいても、処理結果が変らなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。   Also in the processing flow, if the processing result does not change, the processing order can be changed. Further, it may be executed in parallel.

(付記1)
プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信すべきデータを格納する第1バッファのアドレス及び前記送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、
前記アドレス情報を前記第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、
前記第1パケットを前記第3バッファから前記通信装置内の第4バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記アドレス情報に基づき、前記送信すべきデータを前記第1バッファから前記第4バッファに前記プロセッサを介さずにコピーすると共に、第2制御ヘッダを付加し、第2パケットを生成する第2パケット生成ステップと、
前記第4バッファに格納された前記第1パケット及び前記第2パケットを送信先端末に送信する送信ステップと、
を含む通信制御方法。
(Appendix 1)
A communication control method executed by a computer having a processor and a communication device,
An address information generating step for generating address information including information on an address of a first buffer for storing data to be transmitted and information on a length of the data to be transmitted, and storing the address information in a second buffer;
A first packet generating step of copying the address information from the second buffer to the third buffer, adding a first control header, and generating a first packet;
A copy processing step of copying the first packet from the third buffer to a fourth buffer in the communication device without using the processor;
Based on the address information, the data to be transmitted is copied from the first buffer to the fourth buffer without going through the processor, and a second control header is added to generate a second packet. Steps,
A transmission step of transmitting the first packet and the second packet stored in the fourth buffer to a destination terminal;
Including a communication control method.

(付記2)
プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信すべきデータを格納する第1バッファのアドレス及び前記送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、
前記アドレス情報を前記第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、
前記第1パケットを前記第3バッファから前記通信装置内の第4バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記アドレス情報に基づき、前記第1バッファから前記送信すべきデータを前記プロセッサを介さずに読み出し、前記第4バッファに格納された前記第1パケットの最後尾に付加して、統合パケットを生成する第2パケット生成ステップと、
前記第4バッファに格納された前記統合パケットを送信先端末に送信する送信ステップと、
を含む通信制御方法。
(Appendix 2)
A communication control method executed by a computer having a processor and a communication device,
An address information generating step for generating address information including information on an address of a first buffer for storing data to be transmitted and information on a length of the data to be transmitted, and storing the address information in a second buffer;
A first packet generating step of copying the address information from the second buffer to the third buffer, adding a first control header, and generating a first packet;
A copy processing step of copying the first packet from the third buffer to a fourth buffer in the communication device without using the processor;
Based on the address information, the data to be transmitted is read from the first buffer without passing through the processor, and added to the end of the first packet stored in the fourth buffer to generate an integrated packet. A second packet generation step;
A transmission step of transmitting the integrated packet stored in the fourth buffer to a destination terminal;
Including a communication control method.

(付記3)
前記コンピュータのオペレーティング・システムに対するデータ送信要求をフックするフック処理ステップ
をさらに含み、
前記フック処理ステップの後に、前記アドレス情報生成ステップを実施する
付記1又は2記載の通信制御方法。
(Appendix 3)
A hook processing step of hooking a data transmission request to the operating system of the computer,
The communication control method according to claim 1 or 2, wherein the address information generation step is performed after the hook processing step.

(付記4)
前記第1パケット生成ステップが、前記コンピュータのオペレーティング・システムにより実行される
付記1又は2記載の通信制御方法。
(Appendix 4)
The communication control method according to claim 1 or 2, wherein the first packet generation step is executed by an operating system of the computer.

(付記5)
前記オペレーティング・システムにより、前記第1パケットの送信要求を前記通信装置に通知するステップ
をさらに含む付記4記載の通信制御方法。
(Appendix 5)
The communication control method according to claim 4, further comprising a step of notifying the communication device of a transmission request for the first packet by the operating system.

(付記6)
前記コピー処理ステップ、前記第2パケット生成ステップ及び前記送信ステップが、前記通信装置により実行される
付記1又は2記載の通信制御方法。
(Appendix 6)
The communication control method according to claim 1 or 2, wherein the copy processing step, the second packet generation step, and the transmission step are executed by the communication device.

(付記7)
前記第2パケット生成ステップが、
前記第1パケットをコピーして前記第2パケットに付加するステップ
を含む付記1記載の通信制御方法。
(Appendix 7)
The second packet generating step comprises:
The communication control method according to supplementary note 1, including a step of copying the first packet and adding it to the second packet.

(付記8)
プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信元端末からパケットを受信し、前記通信装置内の第1バッファに格納する受信ステップと、
受信した前記パケットが、所定のアドレスの情報と前記所定のアドレスの示す領域に格納される特定のデータの長さの情報とを含む第1パケットである場合、当該第1パケットとの対応付けを表す情報と前記特定のデータとを含む第2パケットを既に受信しているか否か判定する第1判定ステップと、
受信した前記パケットが、前記第2パケットである場合、当該第2パケットに対応する前記第1パケットを既に受信しているか否か判定する第2判定ステップと、
前記第1判定ステップにおいて前記第2パケットを既に受信していると判定された場合、又は前記第2判定ステップにおいて前記第2パケットに対応する前記第1パケットを既に受信していると判定された場合、前記第2パケットに含まれる前記特定のデータを前記第1バッファから第2バッファに前記プロセッサを介さずにコピーし、前記第1パケットを前記第1バッファから第3バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記第1パケットに含まれる前記所定のアドレスの情報と前記特定のデータの長さの情報とを前記第3バッファから第4バッファにコピーすると共に、前記第1パケットに対する確認応答を前記送信元端末に送信する応答ステップと、
を含む通信制御方法。
(Appendix 8)
A communication control method executed by a computer having a processor and a communication device,
A reception step of receiving a packet from a transmission source terminal and storing the packet in a first buffer in the communication device;
When the received packet is the first packet including information on the predetermined address and information on the length of the specific data stored in the area indicated by the predetermined address, association with the first packet is performed. A first determination step of determining whether or not a second packet including information to be represented and the specific data has already been received;
If the received packet is the second packet, a second determination step of determining whether or not the first packet corresponding to the second packet has already been received;
When it is determined in the first determination step that the second packet has already been received, or in the second determination step, it is determined that the first packet corresponding to the second packet has already been received. In this case, the specific data included in the second packet is copied from the first buffer to the second buffer without using the processor, and the first packet is transferred from the first buffer to the third buffer through the processor. Copy processing steps to copy without
The information on the predetermined address and the information on the length of the specific data included in the first packet are copied from the third buffer to the fourth buffer, and a confirmation response to the first packet is sent to the transmission source terminal. A response step to send to
Including a communication control method.

(付記9)
プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信元端末から、所定のアドレスの情報と前記所定のアドレスの示す領域に格納される特定のデータの長さの情報と前記特定のデータとを含む統合パケットを受信し、前記通信装置内の第1バッファに格納する受信ステップと、
前記統合パケットに含まれる前記特定のデータを前記第1バッファから第2バッファに前記プロセッサを介さずにコピーし、前記統合パケットから前記特定のデータを除いたデータを第1パケットとして前記第1バッファから第3バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記第1パケットに含まれる前記所定のアドレスの情報と前記特定のデータの長さの情報とを前記第3バッファから第4バッファにコピーすると共に、前記第1パケットに対する確認応答を前記送信元端末に送信する応答ステップと、
を含む通信制御方法。
(Appendix 9)
A communication control method executed by a computer having a processor and a communication device,
An integrated packet including information on a predetermined address, information on the length of specific data stored in an area indicated by the predetermined address, and the specific data is received from a transmission source terminal, A receiving step for storing in one buffer;
The specific data included in the integrated packet is copied from the first buffer to the second buffer without going through the processor, and data obtained by removing the specific data from the integrated packet is used as the first packet as the first buffer. A copy processing step of copying from the first to the third buffer without going through the processor;
The information on the predetermined address and the information on the length of the specific data included in the first packet are copied from the third buffer to the fourth buffer, and a confirmation response to the first packet is sent to the transmission source terminal. A response step to send to
Including a communication control method.

(付記10)
前記コンピュータのオペレーティング・システムに対するデータ受信要求をフックし、前記第2バッファのアドレスを前記通信装置に通知するステップ
をさらに含む付記8又は9記載の通信制御方法。
(Appendix 10)
The communication control method according to claim 8 or 9, further comprising the step of hooking a data reception request to the operating system of the computer and notifying the communication device of the address of the second buffer.

(付記11)
前記第4バッファに格納された前記所定のアドレスの情報と前記特定のデータの長さの情報とを破棄するステップ
をさらに含む付記8又は9記載の通信制御方法。
(Appendix 11)
The communication control method according to appendix 8 or 9, further comprising: a step of discarding the information on the predetermined address and the information on the length of the specific data stored in the fourth buffer.

(付記12)
前記受信ステップ、前記第1判定ステップ、前記第2判定ステップ及び前記コピー処理ステップが、前記通信装置により実行される
付記8記載の通信制御方法。
(Appendix 12)
The communication control method according to claim 8, wherein the reception step, the first determination step, the second determination step, and the copy processing step are executed by the communication device.

(付記13)
前記受信ステップ及び前記コピー処理ステップが、前記通信装置により実行される
付記9記載の通信制御方法。
(Appendix 13)
The communication control method according to claim 9, wherein the reception step and the copy processing step are executed by the communication device.

(付記14)
前記応答ステップが、前記コンピュータのオペレーティング・システムにより実行される
付記8又は9記載の通信制御方法。
(Appendix 14)
The communication control method according to appendix 8 or 9, wherein the response step is executed by an operating system of the computer.

(付記15)
前記第1パケットとの対応付けを表す情報が、対応する前記第1パケットをコピーした情報である
付記8記載の通信制御方法。
(Appendix 15)
The communication control method according to claim 8, wherein the information indicating the association with the first packet is information obtained by copying the corresponding first packet.

(付記16)
プロセッサを有するコンピュータに接続される通信装置であって、
送信すべきパケットを格納する記憶装置と、
パケット送信要求を受信した場合に、当該パケット送信要求に係る第1パケットを格納している第1バッファから、前記第1パケットを前記記憶装置に前記プロセッサを介さずにコピーする手段と、
前記記憶装置に格納された前記第1パケットに、特定のデータを格納する第2バッファのアドレスの情報及び前記特定のデータの長さの情報が含まれる場合、前記特定のデータを前記第2バッファから前記記憶装置に前記プロセッサを介さずにコピーする手段と、
前記記憶装置に格納された前記特定のデータに、制御ヘッダを付加して第2パケットを生成するパケット生成手段と、
前記記憶装置に格納された前記第1パケット及び前記第2パケットを送信先端末に送信する手段と、
を有する通信装置。
(Appendix 16)
A communication device connected to a computer having a processor,
A storage device for storing packets to be transmitted;
Means for copying the first packet from the first buffer storing the first packet related to the packet transmission request to the storage device without going through the processor when a packet transmission request is received;
When the first packet stored in the storage device includes information on the address of a second buffer for storing specific data and information on the length of the specific data, the specific data is stored in the second buffer. Means for copying from the storage device without passing through the processor;
Packet generating means for generating a second packet by adding a control header to the specific data stored in the storage device;
Means for transmitting the first packet and the second packet stored in the storage device to a destination terminal;
A communication device.

(付記17)
プロセッサを有するコンピュータに接続される通信装置であって、
送信すべきパケットを格納する記憶装置と、
パケット送信要求を受信した場合に、当該パケット送信要求に係る第1パケットを格納している第1バッファから、前記第1パケットを前記記憶装置に前記プロセッサを介さずにコピーする手段と、
前記記憶装置に格納された前記第1パケットに、特定のデータを格納する第2バッファのアドレスの情報及び前記特定のデータの長さの情報が含まれる場合、前記特定のデータを前記第2バッファから前記プロセッサを介さずに読み出し、前記記憶装置に格納された前記第1パケットの最後尾に付加して、統合パケットを生成する手段と、
前記記憶装置に格納された前記統合パケットを送信先端末に送信する手段と、
を有する通信装置。
(Appendix 17)
A communication device connected to a computer having a processor,
A storage device for storing packets to be transmitted;
Means for copying the first packet from the first buffer storing the first packet related to the packet transmission request to the storage device without going through the processor when a packet transmission request is received;
When the first packet stored in the storage device includes information on the address of a second buffer for storing specific data and information on the length of the specific data, the specific data is stored in the second buffer. Means for reading out without passing through the processor and adding to the tail of the first packet stored in the storage device to generate an integrated packet;
Means for transmitting the integrated packet stored in the storage device to a destination terminal;
A communication device.

(付記18)
前記パケット生成手段が、
前記記憶装置に格納された第1パケットをコピーして前記第2パケットに付加する手段
を有する付記16記載の通信装置。
(Appendix 18)
The packet generation means
The communication device according to appendix 16, further comprising means for copying the first packet stored in the storage device and adding the first packet to the second packet.

(付記19)
プロセッサを有するコンピュータに接続される通信装置であって、
受信したパケットを格納する記憶装置と、
送信元端末からパケットを受信し、前記記憶装置に格納する手段と、
受信した前記パケットが、所定のアドレスの情報及び前記所定のアドレスの示す領域に格納される特定のデータの長さの情報を含む第1パケットである場合、当該第1パケットとの対応付けを表す情報及び前記特定のデータを含む第2パケットを既に受信しているか否か判定する第1判定手段と、
受信した前記パケットが、前記第2パケットである場合、当該第2パケットに対応する前記第1パケットを既に受信しているか否か判定する第2判定手段と、
前記第1判定手段により前記第2パケットを既に受信していると判定された場合、又は前記第2判定手段により前記第2パケットに対応する前記第1パケットを既に受信していると判定された場合、前記第2パケットに含まれる前記特定のデータを前記記憶装置から第1バッファに前記プロセッサを介さずにコピーし、前記第1パケットを前記記憶装置から第2バッファに前記プロセッサを介さずにコピーする手段と、
を有する通信装置。
(Appendix 19)
A communication device connected to a computer having a processor,
A storage device for storing received packets;
Means for receiving a packet from a source terminal and storing it in the storage device;
When the received packet is a first packet including information on a predetermined address and information on the length of specific data stored in an area indicated by the predetermined address, it represents an association with the first packet. First determination means for determining whether a second packet including information and the specific data has already been received;
If the received packet is the second packet, second determination means for determining whether or not the first packet corresponding to the second packet has already been received;
When it is determined by the first determination means that the second packet has already been received, or when the second determination means has determined that the first packet corresponding to the second packet has already been received. The specific data contained in the second packet is copied from the storage device to the first buffer without passing through the processor, and the first packet is copied from the storage device to the second buffer without passing through the processor. Means for copying;
A communication device.

(付記20)
プロセッサを有するコンピュータに接続される通信装置であって、
受信したパケットを格納する記憶装置と、
送信元端末から、所定のアドレスの情報、前記所定のアドレスの示す領域に格納される特定のデータの長さの情報及び前記特定のデータを含む統合パケットを受信し、前記記憶装置に格納する手段と、
前記統合パケットに含まれる前記特定のデータを前記記憶装置から第1バッファに前記プロセッサを介さずにコピーし、前記統合パケットから前記特定のデータを除いたデータを第1パケットとして前記記憶装置から第2バッファに前記プロセッサを介さずにコピーする手段と、
を有する通信装置。
(Appendix 20)
A communication device connected to a computer having a processor,
A storage device for storing received packets;
Means for receiving, from the transmission source terminal, information on a predetermined address, information on the length of specific data stored in the area indicated by the predetermined address, and an integrated packet including the specific data, and storing them in the storage device When,
The specific data included in the integrated packet is copied from the storage device to the first buffer without passing through the processor, and the data obtained by removing the specific data from the integrated packet is stored as the first packet from the storage device. Means for copying to two buffers without going through the processor;
A communication device.

(付記21)
前記第1バッファのアドレスの情報を受信し、前記記憶装置に格納する手段
をさらに有する付記19又は20記載の通信装置。
(Appendix 21)
The communication device according to appendix 19 or 20, further comprising: means for receiving information on the address of the first buffer and storing the information in the storage device.

従来のパケット送受信の処理概要を説明するための図である。It is a figure for demonstrating the process outline of the conventional packet transmission / reception. (a)及び(b)はイーサネット上で送受信されるパケットフレームのフォーマットの一例を示す図である。(A) And (b) is a figure which shows an example of the format of the packet frame transmitted / received on Ethernet. 本発明の実施の形態に係るシステム概要図である。It is a system outline figure concerning an embodiment of the invention. 本発明の第1の実施の形態におけるNICの機能ブロック図である。It is a functional block diagram of NIC in the 1st Embodiment of this invention. 本発明の第1の実施の形態におけるパケット送信の処理概要を示す図である。It is a figure which shows the process outline | summary of the packet transmission in the 1st Embodiment of this invention. アドレス情報パケットフレームのフォーマットの一例を示す図である。It is a figure which shows an example of a format of an address information packet frame. ゼロコピーパケットフレームのフォーマットの一例を示す図である。It is a figure which shows an example of a format of a zero copy packet frame. 本発明の第1の実施の形態におけるパケット受信の処理概要を示す図である。It is a figure which shows the process outline | summary of the packet reception in the 1st Embodiment of this invention. 本発明の第1の実施の形態におけるNICの送信処理の処理フローを示す図である。It is a figure which shows the processing flow of the transmission process of NIC in the 1st Embodiment of this invention. 本発明の第1の実施の形態におけるNICの受信処理の処理フローを示す図である。It is a figure which shows the processing flow of the reception process of NIC in the 1st Embodiment of this invention. 本発明の第2の実施の形態におけるNICの機能ブロック図である。It is a functional block diagram of NIC in the 2nd Embodiment of this invention. 本発明の第2の実施の形態におけるパケット送信の処理概要を示す図である。It is a figure which shows the process outline | summary of the packet transmission in the 2nd Embodiment of this invention. 統合パケットフレームのフォーマットの一例を示す図である。It is a figure which shows an example of a format of an integrated packet frame. 本発明の第2の実施の形態におけるパケット受信の処理概要を示す図である。It is a figure which shows the process outline | summary of the packet reception in the 2nd Embodiment of this invention. 本発明の第2の実施の形態におけるNICの送信処理の処理フローを示す図である。It is a figure which shows the processing flow of the transmission process of NIC in the 2nd Embodiment of this invention. 本発明の第2の実施の形態におけるNICの受信処理の処理フローを示す図である。It is a figure which shows the processing flow of the reception process of NIC in the 2nd Embodiment of this invention.

符号の説明Explanation of symbols

1 インターフェース 3 計算機
31 ユーザプログラム 33 フックライブラリ
35 OS 37 NIC
371 メモリバッファ 372 送信判定部
373 ゼロコピーパケット構築部 373b 統合パケットフレーム構築部
374 DMA処理部 375 送信部
376 受信部 377 受信判定部
378 ゼロコピーパケット処理部 378b 統合パケットフレーム処理部
1 Interface 3 Computer 31 User Program 33 Hook Library 35 OS 37 NIC
371 Memory buffer 372 Transmission determination unit 373 Zero copy packet construction unit 373b Integrated packet frame construction unit 374 DMA processing unit 375 Transmission unit 376 Reception unit 377 Reception determination unit 378 Zero copy packet processing unit 378b Integrated packet frame processing unit

Claims (8)

プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信すべきデータを格納する第1バッファのアドレス及び前記送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、
前記アドレス情報を前記第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、
前記第1パケットを前記第3バッファから前記通信装置内の第4バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記アドレス情報に基づき、前記送信すべきデータを前記第1バッファから前記第4バッファに前記プロセッサを介さずにコピーすると共に、第2制御ヘッダを付加し、第2パケットを生成する第2パケット生成ステップと、
前記第4バッファに格納された前記第1パケット及び前記第2パケットを送信先端末に送信する送信ステップと、
を含む通信制御方法。
A communication control method executed by a computer having a processor and a communication device,
An address information generating step for generating address information including information on an address of a first buffer for storing data to be transmitted and information on a length of the data to be transmitted, and storing the address information in a second buffer;
A first packet generating step of copying the address information from the second buffer to the third buffer, adding a first control header, and generating a first packet;
A copy processing step of copying the first packet from the third buffer to a fourth buffer in the communication device without using the processor;
Based on the address information, the data to be transmitted is copied from the first buffer to the fourth buffer without going through the processor, and a second control header is added to generate a second packet. Steps,
A transmission step of transmitting the first packet and the second packet stored in the fourth buffer to a destination terminal;
Including a communication control method.
プロセッサと通信装置とを有するコンピュータにより実行される通信制御方法であって、
送信すべきデータを格納する第1バッファのアドレス及び前記送信すべきデータの長さの情報を含むアドレス情報を生成し、第2バッファに格納するアドレス情報生成ステップと、
前記アドレス情報を前記第2バッファから第3バッファにコピーすると共に、第1制御ヘッダを付加し、第1パケットを生成する第1パケット生成ステップと、
前記第1パケットを前記第3バッファから前記通信装置内の第4バッファに前記プロセッサを介さずにコピーするコピー処理ステップと、
前記アドレス情報に基づき、前記第1バッファから前記送信すべきデータを前記プロセッサを介さずに読み出し、前記第4バッファに格納された前記第1パケットの最後尾に付加して、統合パケットを生成する第2パケット生成ステップと、
前記第4バッファに格納された前記統合パケットを送信先端末に送信する送信ステップと、
を含む通信制御方法。
A communication control method executed by a computer having a processor and a communication device,
An address information generating step for generating address information including information on an address of a first buffer for storing data to be transmitted and information on a length of the data to be transmitted, and storing the address information in a second buffer;
A first packet generating step of copying the address information from the second buffer to the third buffer, adding a first control header, and generating a first packet;
A copy processing step of copying the first packet from the third buffer to a fourth buffer in the communication device without using the processor;
Based on the address information, the data to be transmitted is read from the first buffer without passing through the processor, and added to the end of the first packet stored in the fourth buffer to generate an integrated packet. A second packet generation step;
A transmission step of transmitting the integrated packet stored in the fourth buffer to a destination terminal;
Including a communication control method.
前記コンピュータのオペレーティング・システムに対するデータ送信要求をフックするフック処理ステップ
をさらに含み、
前記フック処理ステップの後に、前記アドレス情報生成ステップを実施する
請求項1又は2記載の通信制御方法。
A hook processing step of hooking a data transmission request to the operating system of the computer,
The communication control method according to claim 1, wherein the address information generation step is performed after the hook processing step.
前記第1パケット生成ステップが、前記コンピュータのオペレーティング・システムにより実行される
請求項1又は2記載の通信制御方法。
The communication control method according to claim 1, wherein the first packet generation step is executed by an operating system of the computer.
前記コピー処理ステップ、前記第2パケット生成ステップ及び前記送信ステップが、前記通信装置により実行される
請求項1又は2記載の通信制御方法。
The communication control method according to claim 1, wherein the copy processing step, the second packet generation step, and the transmission step are executed by the communication device.
プロセッサを有するコンピュータに接続される通信装置であって、
受信したパケットを格納する記憶装置と、
送信元端末からパケットを受信し、前記記憶装置に格納する手段と、
受信した前記パケットが、所定のアドレスの情報及び前記所定のアドレスの示す領域に格納される特定のデータの長さの情報を含む第1パケットである場合、当該第1パケットとの対応付けを表す情報及び前記特定のデータを含む第2パケットを既に受信しているか否か判定する第1判定手段と、
受信した前記パケットが、前記第2パケットである場合、当該第2パケットに対応する前記第1パケットを既に受信しているか否か判定する第2判定手段と、
前記第1判定手段により前記第2パケットを既に受信していると判定された場合、又は前記第2判定手段により前記第2パケットに対応する前記第1パケットを既に受信していると判定された場合、前記第2パケットに含まれる前記特定のデータを前記記憶装置から第1バッファに前記プロセッサを介さずにコピーし、前記第1パケットを前記記憶装置から第2バッファに前記プロセッサを介さずにコピーする手段と、
を有する通信装置。
A communication device connected to a computer having a processor,
A storage device for storing received packets;
Means for receiving a packet from a source terminal and storing it in the storage device;
When the received packet is a first packet including information on a predetermined address and information on the length of specific data stored in an area indicated by the predetermined address, it represents an association with the first packet. First determination means for determining whether a second packet including information and the specific data has already been received;
If the received packet is the second packet, second determination means for determining whether or not the first packet corresponding to the second packet has already been received;
When it is determined by the first determination means that the second packet has already been received, or when the second determination means has determined that the first packet corresponding to the second packet has already been received. The specific data contained in the second packet is copied from the storage device to the first buffer without passing through the processor, and the first packet is copied from the storage device to the second buffer without passing through the processor. Means for copying;
A communication device.
プロセッサを有するコンピュータに接続される通信装置であって、
受信したパケットを格納する記憶装置と、
送信元端末から、所定のアドレスの情報、前記所定のアドレスの示す領域に格納される特定のデータの長さの情報及び前記特定のデータを含む統合パケットを受信し、前記記憶装置に格納する手段と、
前記統合パケットに含まれる前記特定のデータを前記記憶装置から第1バッファに前記プロセッサを介さずにコピーし、前記統合パケットから前記特定のデータを除いたデータを第1パケットとして前記記憶装置から第2バッファに前記プロセッサを介さずにコピーする手段と、
を有する通信装置。
A communication device connected to a computer having a processor,
A storage device for storing received packets;
Means for receiving, from the transmission source terminal, information on a predetermined address, information on the length of specific data stored in the area indicated by the predetermined address, and an integrated packet including the specific data, and storing them in the storage device When,
The specific data included in the integrated packet is copied from the storage device to the first buffer without passing through the processor, and the data obtained by removing the specific data from the integrated packet is stored as the first packet from the storage device. Means for copying to two buffers without going through the processor;
A communication device.
前記第1バッファのアドレスの情報を受信し、前記記憶装置に格納する手段
をさらに有する請求項6又は7記載の通信装置。
The communication device according to claim 6 or 7, further comprising: means for receiving information on an address of the first buffer and storing the information in the storage device.
JP2006335366A 2006-12-13 2006-12-13 Communication apparatus and communication control method Withdrawn JP2008148181A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006335366A JP2008148181A (en) 2006-12-13 2006-12-13 Communication apparatus and communication control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006335366A JP2008148181A (en) 2006-12-13 2006-12-13 Communication apparatus and communication control method

Publications (1)

Publication Number Publication Date
JP2008148181A true JP2008148181A (en) 2008-06-26

Family

ID=39607832

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006335366A Withdrawn JP2008148181A (en) 2006-12-13 2006-12-13 Communication apparatus and communication control method

Country Status (1)

Country Link
JP (1) JP2008148181A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011087025A1 (en) * 2010-01-12 2011-07-21 株式会社ユビナビ Radio transmitter apparatus, radio receiver apparatus, radio transmitting method and radio receiving method
CN109815176A (en) * 2019-01-14 2019-05-28 中国科学院上海高等研究院 Specific DMA data sending method, method of reseptance, system and medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011087025A1 (en) * 2010-01-12 2011-07-21 株式会社ユビナビ Radio transmitter apparatus, radio receiver apparatus, radio transmitting method and radio receiving method
CN109815176A (en) * 2019-01-14 2019-05-28 中国科学院上海高等研究院 Specific DMA data sending method, method of reseptance, system and medium
CN109815176B (en) * 2019-01-14 2022-10-04 中国科学院上海高等研究院 Specific DMA data transmitting method, receiving method, system and medium

Similar Documents

Publication Publication Date Title
EP0762705B1 (en) Method for transmitting data via a network
US6470391B2 (en) Method for transmitting data via a network in a form of divided sub-packets
US6393023B1 (en) System and method for acknowledging receipt of messages within a packet based communication network
US5752078A (en) System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
US6327625B1 (en) FIFO-based network interface supporting out-of-order processing
US5777987A (en) Method and apparatus for using multiple FIFOs to improve flow control and routing in a communications receiver
US7523378B2 (en) Techniques to determine integrity of information
US9071525B2 (en) Data receiving apparatus, data receiving method, and program storage medium
US20030051076A1 (en) Methods and system for pre-fetching descriptors
US6366968B1 (en) Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails
US6826148B1 (en) System and method for implementing a routing scheme in a computer network using intention packets when fault conditions are detected
JP3127523B2 (en) Communication control device and data transmission method
US7788437B2 (en) Computer system with network interface retransmit
US12088688B2 (en) Packet processing method, network device, and related device
US6741561B1 (en) Routing mechanism using intention packets in a hierarchy or networks
US7817572B2 (en) Communications apparatus and communication method
JP2008148181A (en) Communication apparatus and communication control method
US6925056B1 (en) System and method for implementing a routing scheme using intention packets in a computer network
JP3190895B2 (en) Automatic communication error recovery system
JP2004128786A (en) Packet retransmission controlling apparatus
JP2715815B2 (en) Data writing method
JP4400278B2 (en) TCP processing circuit and semiconductor integrated circuit
JP6873953B2 (en) Communication equipment, control methods and programs for communication equipment
JP6976786B2 (en) Communication device and control method of communication device
CN117544617A (en) Data message breakpoint continuous transmission method and device

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100302