JP2008236378A - Data transfer method between host computer and network interface controller, program and network interface controller - Google Patents

Data transfer method between host computer and network interface controller, program and network interface controller Download PDF

Info

Publication number
JP2008236378A
JP2008236378A JP2007073173A JP2007073173A JP2008236378A JP 2008236378 A JP2008236378 A JP 2008236378A JP 2007073173 A JP2007073173 A JP 2007073173A JP 2007073173 A JP2007073173 A JP 2007073173A JP 2008236378 A JP2008236378 A JP 2008236378A
Authority
JP
Japan
Prior art keywords
header
packet
data
host computer
network
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.)
Granted
Application number
JP2007073173A
Other languages
Japanese (ja)
Other versions
JP4786575B2 (en
Inventor
Mitsuru Sato
充 佐藤
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 JP2007073173A priority Critical patent/JP4786575B2/en
Publication of JP2008236378A publication Critical patent/JP2008236378A/en
Application granted granted Critical
Publication of JP4786575B2 publication Critical patent/JP4786575B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

<P>PROBLEM TO BE SOLVED: To provide a data transfer system between an NIC (network interface controller) that allows flexible network correspondence by software processing, and a host computer by minimizing an additional function to hardware of the network interface controller. <P>SOLUTION: The host computer creates a header table comprising a common header composed of header information common to transmission data, a variable header composed of unique header information in each packet and a pointer showing a storage address of a payload of the packet, and the NIC creates a header of a packet on the basis of the header table, extracts the payload to creates a packet. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割したパケットをネットワークに送信するネットワークインタフェースコントローラとホストコンピュータの間のデータ転送方式に関するものである。   The present invention relates to a data transfer method between a host computer and a network interface controller that is provided between a host computer and a network and transmits a packet obtained by dividing transmission data of the host computer to the network.

現在のコンピュータシステムにおいて、外部とのデータのやりとりを高速に行なうことは、システム全体の高速化につながる重要な課題である。特に、PCなどの小さなコンピュータシステムをネットワークで接続し、全体として大きなひとつのコンピュータシステムとして使用するクラスタシステムなどでは、ネットワークを介した情報伝送がシステム全体の計算速度を決める重要な要素となっている。このため、コンピュータシステムのデータ通信性能は年々向上しており、その向上率は平均すると約3年で2倍という非常に高い値となっている。これはコンピュータの演算装置の速度向上を上回る勢いである。このようにデータ通信性能が向上してくると、高速な演算装置と高速なネットワークとを接続するための接続装置の構成が重要な課題となってくる。   In today's computer systems, high-speed data exchange with the outside is an important issue that leads to high speed of the entire system. In particular, in a cluster system in which small computer systems such as PCs are connected via a network and used as one large computer system as a whole, information transmission via the network is an important factor that determines the calculation speed of the entire system. . For this reason, the data communication performance of the computer system is improving year by year, and the improvement rate averages a very high value of about twice in about three years. This is faster than the speed of computer computing devices. As data communication performance improves in this way, the configuration of a connection device for connecting a high-speed computing device and a high-speed network becomes an important issue.

一般にコンピュータシステムをネットワークに接続する際には、間にネットワークインタフェースコントローラ(以下、NICと表記する場合がある。)と呼ばれる接続装置を介在させる。これによりコンピュータシステム( 以下、ホストコンピュータあるいはホストと呼ぶ場合がある。)は、NICを変更するだけでさまざまな種類のネットワークに対応することができ、構成の柔軟性を確保することができる。   Generally, when a computer system is connected to a network, a connection device called a network interface controller (hereinafter sometimes referred to as NIC) is interposed. As a result, the computer system (hereinafter sometimes referred to as a host computer or a host) can be adapted to various types of networks simply by changing the NIC, and the flexibility of the configuration can be ensured.

図7は、ネットワークインタフェースコントローラを用いてホストコンピュータからネットワークにパケットを送信するシステムの構成を示す図である。
ホストコンピュータ1とNIC5の間は、I/Oバス4と呼ばれる、ホストコンピュータ1によって用意された外部入出力装置と接続するためのインタフェースを経由して接続される。I/Oバス4にはPCIやPCI-X、PCI Express などの標準規格が広く用いられている。ホストコンピュータ1はこのI/Oバス4を経由してNIC5にデータや指示を送り、ネットワーク6を経由したデータのやりとりを行なう。
FIG. 7 is a diagram illustrating a configuration of a system that transmits a packet from a host computer to a network using a network interface controller.
The host computer 1 and the NIC 5 are connected via an interface called an I / O bus 4 for connecting to an external input / output device prepared by the host computer 1. Standards such as PCI, PCI-X, and PCI Express are widely used for the I / O bus 4. The host computer 1 sends data and instructions to the NIC 5 via the I / O bus 4 and exchanges data via the network 6.

ネットワーク6上でのデータはパケットという形で転送される。パケットは一般にヘッダとペイロードとで構成される。ヘッダには通信のための各種情報、たとえば送信元や送信先、プロトコルの種類、データの長さなどが記載されている。ペイロードは送信するデータそのものであり、受信相手はヘッダ情報を元にペイロードをどのように扱えばよいかを判断し、処理を行なう。   Data on the network 6 is transferred in the form of packets. A packet is generally composed of a header and a payload. In the header, various information for communication, for example, a transmission source and a transmission destination, a protocol type, a data length, and the like are described. The payload is the data itself to be transmitted, and the receiving party determines how to handle the payload based on the header information and performs processing.

したがって、ホストコンピュータ1からデータを外に転送しようとすると、ホストコンピュータ1のCPU2は、メモリ3上の制御情報31に基づいてヘッダを作成し、データ32に付加してパケットを構成し、NIC5を経由してネットワーク6に送り出す必要がある。   Therefore, when transferring data from the host computer 1 to the outside, the CPU 2 of the host computer 1 creates a header based on the control information 31 on the memory 3 and adds it to the data 32 to form a packet. It is necessary to send it out to the network 6 via.

ところで、ネットワーク6の種類によっては、パケットの最大サイズが決められている。
例えばイーサネット(登録商標)では1500バイト程度の大きさが上限であり、それ以上の長さのパケットを送受信することはできない。そのため、ホストコンピュータ1から1500 バイト以上の大きなデータ32を送信しようとすると、データ32を150
0バイトより小さなサイズに分割し、それぞれにヘッダをつけ、別々のパケット#1,パケット#2,・・・,パケット#n としてネットワークに送り出さなくてはならない。
By the way, the maximum size of the packet is determined depending on the type of the network 6.
For example, in Ethernet (registered trademark), the upper limit is about 1500 bytes, and packets longer than that cannot be transmitted and received. Therefore, if the host computer 1 tries to send large data 32 of 1500 bytes or more, the data 32 is changed to 150.
It must be divided into sizes smaller than 0 bytes, each with a header, and sent to the network as separate packet # 1, packet # 2, ..., packet #n.

パケットの最大サイズはネットワーク6によって固定であるため、元となるデータ32が大きければ大きいほどパケットの数が多くなる。ヘッダは各パケットごとにつけなければならないため、パケットの数が多いということはヘッダの数が多くなることを意味する。   Since the maximum packet size is fixed by the network 6, the larger the original data 32, the larger the number of packets. Since a header must be attached for each packet, a large number of packets means that the number of headers increases.

図8は、NIC5を用いてネットワーク経由でデータを転送する従来の方式を説明する図である。
まずNIC5が接続されているホスト1のCPU2上で動く制御ソフトウェアが、送信すべきデータ32と転送のための制御情報31(図8では記載を省略している。)を受け取る。次に制御ソフトウェアはパケットのための領域33を確保し、そこに制御情報31を元にヘッダを生成する。さらに、データ32の一部をコピーし、パケットを構成する。NIC5のコントローラ51 に転送指示を与えることによってこのパケットがNIC5のバッファ52に転送され、さらにパケットがNIC5からネットワーク6に送信される。この手順は、データ32が全て転送し終えるまで繰り返えされる。
FIG. 8 is a diagram for explaining a conventional method of transferring data via a network using the NIC 5.
First, control software running on the CPU 2 of the host 1 to which the NIC 5 is connected receives data 32 to be transmitted and control information 31 for transfer (not shown in FIG. 8). Next, the control software secures an area 33 for the packet, and generates a header there based on the control information 31. Further, a part of the data 32 is copied to construct a packet. By giving a transfer instruction to the controller 51 of the NIC 5, this packet is transferred to the buffer 52 of the NIC 5, and further the packet is transmitted from the NIC 5 to the network 6. This procedure is repeated until all the data 32 has been transferred.

上記のような方式でデータをパケット化し、ネットワークに転送すると、以下のような問題が生じる。
(I/O バスの問題)
先に述べたように、NIC5はI/Oバス4を経由してコンピュータシステム1と接続されている。コンピュータシステム1はこのI/Oバス4を経由してNIC5への指示やデータの送受信を行なっている。
When data is packetized and transferred to the network by the above method, the following problems occur.
(I / O bus problem)
As described above, the NIC 5 is connected to the computer system 1 via the I / O bus 4. The computer system 1 transmits / receives instructions and data to the NIC 5 via the I / O bus 4.

このI/Oバス4は、現在ではPCI Express など高速なものが用いられており、ネットワーク6の速度以上のデータ転送速度を確保している。しかし、I/Oバス4は初期オーバーヘッドが大きいという問題がある。初期オーバーヘッドとは、データの転送を開始した時点から実際にデータが流れ始めるまでの時間である。この初期オーバーヘッドは、大量のデータを転送する場合には問題にならないが、少量のデータの場合には重要な問題となってくる。   As this I / O bus 4, a high-speed one such as PCI Express is currently used, and a data transfer speed higher than the speed of the network 6 is ensured. However, the I / O bus 4 has a problem that the initial overhead is large. The initial overhead is the time from the start of data transfer to the actual start of data flow. This initial overhead is not a problem when a large amount of data is transferred, but becomes an important problem when a small amount of data is transferred.

I/Oバス4経由でデータを転送する場合には、ヘッダだけをNIC5 に送ったり、NIC5に送信指示を送るといった小さなデータ転送が多数発生する。そのため、この小さなデータ転送回数を減らし、I/Oバス4の大きな初期オーバーヘッドの影響を小さくするための転送方式が必要とされている。   When transferring data via the I / O bus 4, many small data transfers such as sending only the header to the NIC 5 or sending a transmission instruction to the NIC 5 occur. Therefore, there is a need for a transfer method for reducing the small number of data transfer times and reducing the influence of the large initial overhead of the I / O bus 4.

(データコピーの問題)
パケットをひとつずつ作って転送する方式では、元データからパケットへデータのコピーが必要となる。これはデータ全体に渡って行なう必要があるため、データが大きければ大きいほどコピーの回数が多くなる。
(Data copy problem)
The method of creating and transferring one packet at a time requires copying data from the original data to the packet. Since this needs to be performed over the entire data, the larger the data, the greater the number of copies.

現在、ネットワーク6が高速化するにつれ、コンピュータシステム1の演算装置とネットワーク6の転送速度の差が縮まっている。これは、相対的に見ると、ネットワーク6に対して演算装置の処理能力が落ちているということを意味している。このような状況では、ソフトウェアによるデータコピー処理というものは非常に重い処理となってしまい、それがたとえばクラスタシステムなどの全体の性能を引き下げる要因となる。そのため、できるだけデータのコピーを伴わないデータ転送方式が必要とされている。   Currently, as the speed of the network 6 increases, the difference in transfer speed between the computing device of the computer system 1 and the network 6 is reduced. This means that the processing capability of the arithmetic device is lower than that of the network 6 when viewed relatively. In such a situation, the data copy processing by software becomes very heavy processing, and this becomes a factor for reducing the overall performance of the cluster system, for example. Therefore, there is a need for a data transfer method that does not involve copying data as much as possible.

(ヘッダ作成の問題)
ネットワーク6にデータを転送する際には、必ずヘッダを作成する必要がある。このヘッダはネットワーク6の種類によって異なり、それぞれのネットワーク6に対応したヘッダを作成する必要がある。
(Header creation problem)
When transferring data to the network 6, it is necessary to create a header. This header differs depending on the type of network 6, and it is necessary to create a header corresponding to each network 6.

ネットワーク6に送り出そうとするデータが大きければ、その大きなかたまりのデータを最大パケットサイズに収まるように分割し、それぞれに対してヘッダをつけなくてはならない。このとき、ヘッダはパケット数分作らなくてはならないが、これらのヘッダには共通する情報が多い。たとえば、送信元や送信先、プロトコルの種類などは全てのパケットで共通である。   If the data to be sent to the network 6 is large, the large chunk of data must be divided to fit within the maximum packet size, and a header must be attached to each. At this time, it is necessary to create as many headers as the number of packets, but these headers have a lot of common information. For example, the source, destination, and protocol type are common to all packets.

このように共通する情報が多いのに、それぞれ別のパケットとして取り扱わなければならないということは、ホスト1上の制御ソフトウェアのオーバーヘッドを招くのとともに、無駄なデータがI/Oバス4を経由してホスト1からNIC5へ送られることになり、性能を低下させる要因となる。そのため、できるだけ無駄な情報の作成、やりとりは行なわない方式が望ましい。   Although there is a lot of common information in this way, each packet must be handled as a separate packet. This causes overhead of the control software on the host 1 and wasteful data passes through the I / O bus 4. The data is sent from the host 1 to the NIC 5, which causes a decrease in performance. Therefore, it is desirable to use a method that does not create and exchange as much useless information as possible.

上記のような問題を解決するため、これまでいくつかの新たな手法が提案されている。
(一括送信方式)
図8で説明した送信方式は、パケットをひとつ作るたびにNIC5のコントローラ51に対して転送指示を与えていた。I/Oバス4を経由してNIC5へ転送指示を行なうのは非常に大きなオーバーヘッドを伴うため、この方式では無駄が多い。
In order to solve the above problems, several new methods have been proposed so far.
(Bulk transmission method)
In the transmission method described in FIG. 8, a transfer instruction is given to the controller 51 of the NIC 5 every time one packet is created. Since a transfer instruction to the NIC 5 via the I / O bus 4 involves a very large overhead, this method is wasteful.

そこで、ホスト1の制御ソフトウェアがパケットのための領域33を必要なだけ複数個確保してそこに複数のパケットを連続的に作成し、それらの複数のパケットの転送指示をまとめて一度で済ます方式が考えられている。この方式を用いると、I/Oバス4経由の転送指示のオーバーヘッドを削減することができる。
しかし、残りふたつの問題であるデータコピーの問題やヘッダ作成の問題に関してはそのまま残っている。
Therefore, the control software of the host 1 secures as many areas 33 for packets as necessary, creates a plurality of packets continuously, and collects transfer instructions for these packets all at once. Is considered. If this method is used, the overhead of the transfer instruction via the I / O bus 4 can be reduced.
However, the remaining two problems, the data copy problem and the header creation problem, remain as they are.

(ギャザーテーブル方式)
ギャザーテーブルとは、データへのポインタを複数個まとめたテーブルのことである。ギャザーテーブルを用いると、ばらばらに配置されたデータを一つ一つ渡すことなく、まとめて渡すことができる。
(Gather table method)
The gather table is a table in which a plurality of pointers to data are collected. By using a gather table, it is possible to pass the data arranged separately without passing them one by one.

図9は、ギャザーテーブルをホスト1とNIC5の間の転送処理に応用した方式を説明する図である。
ホスト1のCPU2上で動く制御ソフトウェアが、送信すべきデータ32と転送のための制御情報31(図9では記載を省略している。)を受け取る。次に制御ソフトウェアは複数のヘッダのための領域34を確保し、そこに制御情報31を元に複数のヘッダを生成する。またギャザーテーブルのための領域35を確保し、そこにヘッダへのポインタと、そのヘッダに対応するデータへのポインタをまとめたギャザーテーブルを作成し、NIC5のコントローラ51に、領域35のアドレス通知を含む転送指示を行う。
FIG. 9 is a diagram for explaining a method in which the gather table is applied to transfer processing between the host 1 and the NIC 5.
Control software running on the CPU 2 of the host 1 receives data 32 to be transmitted and control information 31 for transfer (not shown in FIG. 9). Next, the control software secures areas 34 for a plurality of headers, and generates a plurality of headers there based on the control information 31. Also, an area 35 for the gather table is secured, and a gather table is created in which the pointer to the header and the pointer to the data corresponding to the header are gathered, and the address notification of the area 35 is sent to the controller 51 of the NIC 5. The transfer instruction is included.

コントローラ51はホスト1上のギャザーテーブルを読み出して格納する領域53を確保して、ホスト1から領域53にギャザーテーブルを読み出す。次にギャザーテーブル上のポインタによりホスト1からヘッダ、データをそれぞれ取り出し、パケットバッファ52でパケットとしてまとめ、ネットワーク6へ送信する。   The controller 51 secures an area 53 for reading and storing the gather table on the host 1, and reads the gather table from the host 1 to the area 53. Next, the header and data are extracted from the host 1 by the pointers on the gather table, and are collected as packets by the packet buffer 52 and transmitted to the network 6.

ギャザーテーブルを用いることによって、ホスト1がデータをコピーしてパケットを生成する必要がなくなる。そのため、データコピーの問題は解決する。
しかし、ヘッダ作成の問題に関してはそのまま残っている。また、NIC5がI/O バス4経由でヘッダを取り出さなくてはならないため、I/O バス4のオーバーヘッドが増加してしまうという問題も発生する。
By using the gather table, the host 1 does not need to copy data and generate a packet. This solves the problem of data copying.
However, the header creation problem remains. Further, since the NIC 5 has to take out the header via the I / O bus 4, there arises a problem that the overhead of the I / O bus 4 increases.

(オフロードエンジン方式)
上記問題をすべて解決するための方法として、オフロードエンジン方式が提案されている。オフロードエンジンとは、パケット処理を行なうNIC上のハードウェアのことである。
(Off-road engine method)
An off-road engine method has been proposed as a method for solving all of the above problems. The offload engine is hardware on the NIC that performs packet processing.

図10は、オフロードエンジン方式を説明する図である。
ホスト1のCPU2からはパケット送信に必要な情報としてヘッダ作成用の情報を予めNIC5のオフロードエンジン55に渡して領域54に登録するとともに、データ32の位置のみを通知することで転送指示を行う。
FIG. 10 is a diagram for explaining the off-road engine system.
From the CPU 2 of the host 1, header creation information as information necessary for packet transmission is preliminarily passed to the offload engine 55 of the NIC 5 and registered in the area 54, and a transfer instruction is issued by notifying only the position of the data 32. .

NIC5では領域54に登録した情報を元にヘッダを作成し、パケットに必要なデータを図示しないI/O バス4経由で読み出し、パケットを領域52に生成してネットワーク6に送信する。   The NIC 5 creates a header based on the information registered in the area 54, reads data necessary for the packet via the I / O bus 4 (not shown), generates the packet in the area 52, and transmits it to the network 6.

オフロードエンジン方式は必要な情報のみを渡すため、ホスト1のオーバーヘッドが小さい。そのため、最も効率よい転送方式であると言える。
しかし、オフロードエンジン方式ではNIC5での処理が複雑になってしまうという問題がある。NIC5上に搭載するオフロードエンジン55をハードウェアで構成した場合、ハードウェアで作りこまれた特定のネットワーク処理しかできないNIC5となってしまうため、ネットワーク処理の柔軟性に欠ける。
Since the offload engine method passes only necessary information, the overhead of the host 1 is small. Therefore, it can be said that this is the most efficient transfer method.
However, the offload engine method has a problem that the processing in the NIC 5 becomes complicated. If the offload engine 55 mounted on the NIC 5 is configured by hardware, the NIC 5 can only perform specific network processing built in hardware, and thus lacks flexibility in network processing.

一方、オフロードエンジン55をNIC5上に搭載するマイクロプロセッサとソフトウェア( ファームウェア) で構成した場合、本来ホスト1で行なうヘッダ生成その他の処理を行なうためのものであるため高速性が要求され、非常に高価なハードウェアを必要とする。   On the other hand, when the offload engine 55 is composed of a microprocessor and software (firmware) mounted on the NIC 5, it is required for high speed because it is intended for header generation and other processes that are originally performed by the host 1. Requires expensive hardware.

以上のように、NIC5での処理が複雑になることによって、柔軟性に欠ける、あるいはハードウェアが高価になってしまうという問題が生じることとなる。
下記特許文献1及び特許文献2にはオフロードエンジン方式を用いたTCP/IP あるいはUDP/IP のためのネットワークインタフェースコントローラが提案されている。これらの方式は、特定のプロトコルであるTCP/IP あるいはUDP/IP に特化されており、他のプロトコルに応用することができない。
As described above, since the processing in the NIC 5 becomes complicated, there arises a problem that the flexibility is insufficient or the hardware becomes expensive.
Patent Document 1 and Patent Document 2 below propose network interface controllers for TCP / IP or UDP / IP using an offload engine system. These methods are specific to a specific protocol, TCP / IP or UDP / IP, and cannot be applied to other protocols.

また、ネットワークに関する技術が発展するにつれ、同じTCP/IP やUDP/IP でも拡張がなされていく可能性がある。ホスト上等のソフトウェアでヘッダを構成する方式では、新たなソフトウェアを導入するだけで実現可能であるが、オフロードエンジンをハードウェアで構成した場合ではハードウェアそのものを交換しなければ対応することができない。
特開2006−081033号公報 特表2006−526969号公報
In addition, as network technology develops, the same TCP / IP and UDP / IP may be extended. In the method of configuring the header with software on the host etc., it can be realized just by introducing new software, but when the offload engine is configured with hardware, it can be handled if the hardware itself is not replaced. Can not.
JP 2006-081033 A JP 2006-526969 A

本発明の目的は、前述のI/Oバス、データコピー、ヘッダ作成の問題を解決するとともに、ネットワークインタフェースコントローラのハードウェアに対する付加機能を最小限にとどめ、ネットワークインタフェースコントローラのハードウェアを複雑で高価なものにすることなく、ソフトウェア処理による柔軟なネットワーク対応を可能にした、ネッ
トワークインタフェースコントローラとホストコンピュータ間のデータ転送方式を実現することである。
The object of the present invention is to solve the above-mentioned problems of I / O bus, data copy, and header creation, and to minimize the additional functions to the network interface controller hardware, thereby making the network interface controller hardware complicated and expensive. It is to realize a data transfer method between a network interface controller and a host computer, which enables flexible network support by software processing without making anything.

ホストコンピュータとネットワークインタフェースコントローラとのパケットに関する情報転送にヘッダテーブルという構造を新たに導入する。ヘッダテーブルには、パケットの圧縮されたヘッダ情報とパケットのペイロードデータへのポインタが記載される。   A structure called a header table is newly introduced for information transfer regarding packets between the host computer and the network interface controller. In the header table, compressed header information of the packet and a pointer to the payload data of the packet are described.

ヘッダ情報の圧縮は、ヘッダに記載する情報を共通ヘッダと可変ヘッダに分解することにより行う。共通ヘッダとは、一つの送信データを分割した全てのパケットに共通する情報であり、たとえば送信元、送信先、プロトコルの種類などが相当する。可変ヘッダは各パケットで異なる情報であり、たとえばシーケンス番号、チェックサム情報などが相当する。   The header information is compressed by decomposing information described in the header into a common header and a variable header. The common header is information common to all packets obtained by dividing one transmission data, and corresponds to, for example, a transmission source, a transmission destination, and a protocol type. The variable header is different information for each packet, and corresponds to, for example, a sequence number and checksum information.

ネットワークインタフェースコントローラはヘッダテーブルの共通ヘッダと各パケットに対応した可変ヘッダの内容を元に各パケットのヘッダを作成し、ポインタによりデータをホストコンピュータから取得し、内部でパケットを構成する。   The network interface controller creates the header of each packet based on the common header of the header table and the contents of the variable header corresponding to each packet, acquires data from the host computer with the pointer, and constructs the packet internally.

本発明のヘッダテーブルを利用する転送方式によって、ヘッダはネットワークインタフェースコントローラ内部で生成することができる。そして、ホストコンピュータからネットワークインタフェースコントローラにヘッダ情報を渡す際、共通ヘッダは一度に送る送信データに対して1回のみ、可変ヘッダはパケットの数分だけであるので、重複する情報を何度も転送することはない。   The header can be generated inside the network interface controller by the transfer method using the header table of the present invention. When the header information is passed from the host computer to the network interface controller, the common header is only once for the transmission data sent at a time, and the variable header is only the number of packets, so duplicate information is transferred many times. Never do.

また、パケットの作成もネットワークインタフェースコントローラ内部で行うのでペイロードのコピーの問題が発生しない。
そして、本発明のヘッダテーブルは、ホストコンピュータ上の制御プログラムが作成する。そのため、パケットのヘッダ構成をホストコンピュータ上のソフトウェアによって自由に変更することができ、さまざまなプロトコルに柔軟に対応することが可能となる。
Also, since the packet is created inside the network interface controller, there is no problem of payload copy.
The header table of the present invention is created by a control program on the host computer. Therefore, the packet header configuration can be freely changed by software on the host computer, and various protocols can be flexibly supported.

図1は、本発明によるパケット作成の原理を説明する図である。
本発明においてパケット作成に用いられる制御情報は、図1(a)に示すように、共通部、パケット#1用の可変部1、パケット#1用のデータポインタ、……、パケット#n用の可変部n、パケット#n用のデータポインタという構成になっている。共通部の制御情報はヘッダテーブルの共通ヘッダに用いられる情報であり、各可変部の制御情報はヘッダテーブルの各可変ヘッダに用いられる情報である。
FIG. 1 is a diagram for explaining the principle of packet creation according to the present invention.
As shown in FIG. 1A, the control information used for packet creation in the present invention includes a common part, a variable part 1 for packet # 1, a data pointer for packet # 1,..., For packet #n. A variable part n and a data pointer for packet #n are configured. The control information of the common part is information used for the common header of the header table, and the control information of each variable part is information used for each variable header of the header table.

先に述べたように、共通部の制御情報は、たとえば送信元、送信先、プロトコルの種類などであり、各可変部の制御情報は、たとえばシーケンス番号、チェックサム情報などである。なお、チェックサム情報がトレーラに設定されるプロトコルでは、トレーラごと最後のペイロードデータである図1(b)に示すデータnに含ませて転送することができる。   As described above, the control information of the common unit is, for example, a transmission source, a transmission destination, and a protocol type, and the control information of each variable unit is, for example, a sequence number, checksum information, or the like. In the protocol in which the checksum information is set in the trailer, each trailer can be transferred by being included in the data n shown in FIG. 1B, which is the last payload data.

送信データは図1(b)に示すようにデータ1、データ2、・・・、データnと分割され、それぞれの先頭アドレスは図1(a)に示す制御情報のポインタで示されている。
図1(a)に示す制御情報と図1(b)に示すデータにより、図1(c)に示すパケット#1、パケット#2、・・・、パケット#n が作成される。パケット#1、パケット#2、・・・、パケット#n のヘッダは、 図1(c)に示すように、共通部の制御情報と可変部の制御情報から作成される。
The transmission data is divided into data 1, data 2,..., Data n as shown in FIG. 1 (b), and the head address of each is indicated by the pointer of the control information shown in FIG.
Based on the control information shown in FIG. 1A and the data shown in FIG. 1B, packet # 1, packet # 2,..., Packet #n shown in FIG. The headers of packet # 1, packet # 2,..., Packet #n are created from the control information of the common part and the control information of the variable part, as shown in FIG.

図2は、本発明の一実施形態によるホストとNIC間のパケット作成用の情報転送方式の概要を説明する図である。
ホスト側のCPU2は、1まとまりの送信データ32ごとにヘッダテーブル36を生成する。ヘッダテーブル36は送信データに共通な共通ヘッダと、1まとまりの送信データを分割して得られた各パケットにより送信するデータごとの可変ヘッダと各パケットにより送信するデータへのポインタで構成される。
FIG. 2 is a diagram illustrating an outline of an information transfer method for creating a packet between a host and a NIC according to an embodiment of the present invention.
The CPU 2 on the host side generates a header table 36 for each piece of transmission data 32. The header table 36 includes a common header common to transmission data, a variable header for each data transmitted by each packet obtained by dividing a single transmission data, and a pointer to data transmitted by each packet.

ホスト側のCPU2がNIC側のヘッダ解釈/構成エンジン56に転送指示を行うと、ヘッダ解釈/構成エンジン56はヘッダテーブル36を読み出してヘッダテーブルバッファ57に格納し、共通ヘッダと可変ヘッダを合成してパケットのヘッダを作成する。さらにヘッダ解釈/構成エンジン56はヘッダテーブルバッファ57に格納したヘッダテーブル中の、パケットに格納すべきデータの位置を示すポインタによりホスト側からデータを読み出して先に合成したヘッダとともにパケットをパケットバッファ52に作成してネットワーク側に送信する。   When the CPU 2 on the host side issues a transfer instruction to the header interpretation / configuration engine 56 on the NIC side, the header interpretation / configuration engine 56 reads the header table 36 and stores it in the header table buffer 57 to synthesize the common header and variable header. Packet header. Further, the header interpretation / configuration engine 56 reads the data from the host side by using a pointer indicating the position of the data to be stored in the header table stored in the header table buffer 57 and combines the packet with the packet buffer 52 together with the header previously synthesized. Create and send to the network side.

図3は、本発明の一実施形態によるヘッダテーブル36の、各可変ヘッダの構成例を示す図である。
図3に示すように、可変ヘッダの先頭は、可変ヘッダ全体の長さを示すレングス部である。それ以降は各可変データに対応したものであり、それは、可変データの長さがバイト、ワードあるいはダブルワードであるか等を示すタイプT、可変データを書き込む共通ヘッダの先頭からのオフセットを示すO、及び書き換えるデータそのものである可変データDから構成される。図3に示す例では可変データはD0〜D4の5個となっている。
FIG. 3 is a diagram showing a configuration example of each variable header of the header table 36 according to the embodiment of the present invention.
As shown in FIG. 3, the head of the variable header is a length portion that indicates the length of the entire variable header. After that, it corresponds to each variable data, which is a type T indicating whether the length of the variable data is byte, word or double word, etc., and O indicating the offset from the head of the common header for writing the variable data. , And variable data D that is the data itself to be rewritten. In the example shown in FIG. 3, there are five variable data D0 to D4.

図4は、本発明の一実施形態によるNIC5aの構成例を示す図である。図4にはNIC5aのパケット送信に関する部分のブロック構成のみ示しており、受信に関する部分は省略している。   FIG. 4 is a diagram illustrating a configuration example of the NIC 5a according to the embodiment of the present invention. FIG. 4 shows only a block configuration of a part related to packet transmission of the NIC 5a, and a part related to reception is omitted.

図4に示すように、NIC5aのパケット送信部は、ホストインタフェース50、パケットバッファ52、コントローラ561、ヘッダ合成ユニット562、ヘッダテーブルバッファ57、共通ヘッダバッファ58を含んで構成される。コントローラ561とヘッダ合成ユニット562は、図2に示すヘッダ解釈/構成エンジン56に相当する。   As shown in FIG. 4, the packet transmission unit of the NIC 5a includes a host interface 50, a packet buffer 52, a controller 561, a header synthesis unit 562, a header table buffer 57, and a common header buffer 58. The controller 561 and the header synthesis unit 562 correspond to the header interpretation / configuration engine 56 shown in FIG.

NIC5aは図示しないI/Oバスとネットワークそれぞれに接続しており、I/Oバス経由で図示しないホストとデータ等をやりとりする。ホストインタフェース50はホストとのやりとりを行なうブロックで、ホストからの転送指示を受け取ったり、ホストへメモリの読み出し要求を出すという操作を行なう。   The NIC 5a is connected to an I / O bus (not shown) and a network, and exchanges data and the like with a host (not shown) via the I / O bus. The host interface 50 is a block that communicates with the host, and performs operations such as receiving a transfer instruction from the host and issuing a memory read request to the host.

中央のコントローラ561はパケット送信手続きを実行するブロックであり、ホストインタフェース561がホストから受け取った転送指示により起動される。起動されると、コントローラ561は、ホストからのヘッダテーブルの読み出し、ヘッダ合成ユニット562へのヘッダ合成指示、ホストからのデータ読み出し、ヘッダとデータを組み合わせたパケットのパケットバッファ52上での作成、作成されたパケットのネットワークへの送信の制御を順次行なう。   The central controller 561 is a block that executes a packet transmission procedure, and is activated by the host interface 561 according to a transfer instruction received from the host. When activated, the controller 561 reads the header table from the host, instructs the header synthesis unit 562 to perform header synthesis, reads data from the host, and creates and creates a packet combining the header and data on the packet buffer 52. The transmission of the received packets to the network is sequentially performed.

ヘッダ合成ユニット562は、共通ヘッダバッファ58に格納された共通ヘッダとヘッダバッファテーブル57から読み出した可変ヘッダを合成して、新たなパケット用のヘッダを生成するブロックである。   The header synthesis unit 562 is a block that synthesizes the common header stored in the common header buffer 58 and the variable header read from the header buffer table 57 to generate a header for a new packet.

ヘッダ合成ユニット562は、図3に示す可変ヘッダの“O”で示されるオフセット先に“T”で示されるサイズで“DATA” を書き込むという動作を繰り返すことによって、共通ヘッダと可変ヘッダからパケット用のヘッダを作成する。   The header synthesis unit 562 repeats the operation of writing “DATA” in the size indicated by “T” in the offset destination indicated by “O” of the variable header shown in FIG. Create a header for.

つまり、上記オフセット値にしたがって、ヘッダ合成ユニット562は共通ヘッダのうち書き換える部分を探し出し、可変ヘッダ中のデータで書き換えることで、それぞれのパケットに適合したヘッダを作成する。   That is, according to the offset value, the header synthesizing unit 562 finds a portion to be rewritten in the common header and rewrites it with the data in the variable header, thereby creating a header suitable for each packet.

図4に示すNIC5aを実現するためのハードウェアは、通常用いられているネットワークインタフェースコントローラのハードウェアに、共通ヘッダを記憶しておく領域、可変ヘッダを解析して共通ヘッダと合わせてパケットのヘッダを作成する回路を追加したものとなる。したがって、オフロードエンジン方式で問題となっていた柔軟性に欠ける、あるいはCPUとして高価なハードウェアを必要とするという問題も解決することが可能である。   The hardware for realizing the NIC 5a shown in FIG. 4 includes an area for storing a common header in the network interface controller hardware that is normally used, a variable header, and a packet header combined with the common header. The circuit to create is added. Therefore, it is possible to solve the problem of lack of flexibility, which has been a problem with the offload engine system, or requiring expensive hardware as a CPU.

図5は、本発明の一実施形態によるホストとNIC間のパケット送信のための情報転送方式に係るホスト上の制御プログラム(OS)とNIC側のハードウェアの動作シーケンスを説明する図である。   FIG. 5 is a diagram illustrating an operation sequence of the control program (OS) on the host and the hardware on the NIC side according to the information transfer method for packet transmission between the host and the NIC according to an embodiment of the present invention.

ホスト上の制御ソフトウェア(OS)は、ユーザからのデータ送信要求により起動され、ステップS10でメモリ上に領域を確保しそこを送信データ用のヘッダテーブル36に割り当てる。   The control software (OS) on the host is activated by a data transmission request from the user, secures an area on the memory in step S10, and allocates it to the header table 36 for transmission data.

次にステップS11で、ヘッダテーブル36の先頭にデータを送信するネットワークのプロトコル及び各パケットの共通データに応じて共通ヘッダを作成する。
次にステップS12で、ネットワークの最大パケットサイズに応じて送信データを分割し、分割された送信データごとに可変ヘッダを作成し、ステップS13で分割された送信データへのポインタの設定を行い順次それらをヘッダテーブル36に格納していく。
In step S11, a common header is created according to the protocol of the network that transmits data to the head of the header table 36 and the common data of each packet.
Next, in step S12, the transmission data is divided according to the maximum packet size of the network, a variable header is created for each divided transmission data, and a pointer is set to the transmission data divided in step S13, and these are sequentially set. Are stored in the header table 36.

ステップS14での判定により、送信データの分割数、すなわちパケットの数だけ上記ステップS12とステップS13を繰り返し、ヘッダテーブル36が完成するとステップS15において、NIC側に転送指示を出す。   As a result of the determination in step S14, steps S12 and S13 are repeated by the number of transmission data divisions, that is, the number of packets. When the header table 36 is completed, a transfer instruction is issued to the NIC side in step S15.

NIC側では、ホスト側からの転送指示を受け取ると、ステップS20でホスト側からヘッダテーブル36を読み出し、ヘッダテーブルバッファ57に格納する。
ヘッダテーブル36の具体的転送方法には、ホスト側からの転送指示にヘッダテーブルのアドレスを含ませる方法、ヘッダテーブル36のアドレスを予めNIC側に設定しておく方法などが可能である。また、それらの方法に替えて、ホスト側から転送指示とともにヘッダテーブル36をNIC側への書き込みデータとして転送することもできる。
On the NIC side, when receiving a transfer instruction from the host side, the header table 36 is read from the host side and stored in the header table buffer 57 in step S20.
As a specific transfer method of the header table 36, a method of including the address of the header table in the transfer instruction from the host side, a method of setting the address of the header table 36 on the NIC side in advance, or the like is possible. Further, instead of these methods, the header table 36 can be transferred as write data to the NIC side together with a transfer instruction from the host side.

いずれにしろ、ヘッダテーブル36のデータはNIC側へ転送され、NIC側はヘッダテーブルの情報を取得する。本明細書及び特許請求の範囲では、ホスト側からヘッダテーブルを読み出すことと、ホスト側主導で書き込みデータとして転送されたヘッダテーブルを受信することの双方について、取得という用語を用いる。   In any case, the data of the header table 36 is transferred to the NIC side, and the NIC side acquires information of the header table. In the present specification and claims, the term “acquisition” is used for both reading the header table from the host side and receiving the header table transferred as write data by the host side.

また、上述のヘッダテーブルの転送をホスト側から見た場合、ホストからNICにヘッダテーブルを渡すと表記する場合もある。
次にステップS21で、ヘッダテーブル57に格納したヘッダテーブルから共通ヘッダを取り出し、共通ヘッダバッファ58に格納する。
Further, when the transfer of the header table is viewed from the host side, it may be described that the header table is passed from the host to the NIC.
In step S 21, the common header is extracted from the header table stored in the header table 57 and stored in the common header buffer 58.

続いてステップS22において、ヘッダテーブルバッファ57から各パケットに対応する可変ヘッダを順次取り出し、ステップS23で共通ヘッダバッファ58から取り出した共通ヘッダとステップS22で取り出した可変ヘッダによりヘッダの合成を行い、パケットバッファ52のヘッダエリアに書き込む。   Subsequently, in step S22, the variable header corresponding to each packet is sequentially extracted from the header table buffer 57, and the header is synthesized using the common header extracted from the common header buffer 58 in step S23 and the variable header extracted in step S22. Write to the header area of the buffer 52.

ステップS22とステップS23の処理は、先に述べたように図4に示すヘッダ合成ユニット562により実行される。ヘッダ合成の具体的処理も先に述べたとおりであって、まず共通ヘッダをパケットバッファ52のヘッダエリアに書き込み、次に可変ヘッダに設定されている可変データで共通ヘッダの一部を書き換えていく。   Steps S22 and S23 are executed by the header synthesis unit 562 shown in FIG. 4 as described above. The specific processing of the header synthesis is also as described above. First, the common header is written into the header area of the packet buffer 52, and then a part of the common header is rewritten with the variable data set in the variable header. .

すなわち、ヘッダエリアの先頭アドレスから、可変ヘッダの“O”で示されるオフセット先に“T”で示されるサイズで“DATA” を書き込むことを可変データの数だけ実行する。なお、上記処理を実行するに際して、ヘッダ合成ユニット562は、可変ヘッダのレングス部 とタイプTの値により、次に処理するデータが可変ヘッダのどこにあるかと全てのデータの処理が終了したかを判別できることは明らかである。   That is, “DATA” is written by the number of variable data from the start address of the header area to the offset destination indicated by “O” of the variable header with the size indicated by “T”. When executing the above processing, the header synthesis unit 562 determines where the data to be processed next is in the variable header and whether all the data has been processed, based on the length portion of the variable header and the value of the type T. Obviously we can do it.

ステップS23に続いてステップS24に進み、ヘッダテーブルバッファ57から各パケットに対応するデータへのデータポインタを取り出し、ステップS25で、そのデータポインタによりホスト側からデータを読み出すことをホストインタフェース50に要求し、読み出されたデータをパケットバッファのデータ領域に書き込んで一つのパケットを作成する。   Progressing to step S24 following step S23, the data pointer to the data corresponding to each packet is extracted from the header table buffer 57, and in step S25, the host interface 50 is requested to read data from the host side by the data pointer. The read data is written in the data area of the packet buffer to create one packet.

次にステップS26で作成したパケットをネットワークに送信し、ステップS27においてヘッダテーブル内の全てのデータの処理が終了したか判定する。
ヘッダテーブル内に未処理のデータが残っていればステップS22に戻って以降の処理を繰り返し、全ての処理が終了していれば、ホスト側に処理終了通知を返す。
Next, the packet created in step S26 is transmitted to the network, and it is determined in step S27 whether all the data in the header table has been processed.
If unprocessed data remains in the header table, the process returns to step S22 and the subsequent processes are repeated. If all the processes are completed, a process end notification is returned to the host side.

ホストはNIC側から処理終了通知を受信すると、ステップS16においてヘッダテーブル36を解放し、ステップS17において、送信要求を行ったユーザに送信完了を通知して一連の処理を終了する。   When the host receives the process end notification from the NIC side, the host releases the header table 36 in step S16, and in step S17, notifies the user who has made the transmission request of the completion of transmission and ends the series of processes.

上述のように、共通ヘッダは、ホスト上のソフトウェアにより、ネットワークのプロトコルに適合した形式で、ユーザから送信要求のあったデータに共通の送信先等の情報により作成される。したがって、パケットヘッダ作成のためのテンプレートとなっている。可変ヘッダもホスト上のソフトウェアにより作成され、各パケットに特有の情報とそれを書き込むヘッダ中の位置を示す情報により構成され、テンプレートの変更部分を示している。   As described above, the common header is created by software on the host in a format that conforms to the protocol of the network and information such as a common destination for data requested by the user. Therefore, it is a template for creating a packet header. The variable header is also created by software on the host, and is composed of information peculiar to each packet and information indicating a position in the header in which the packet is written, and indicates a changed portion of the template.

したがって、パケットがヘッダとペイロードから構成されるかぎり、すべてのパケット転送プロトコルに対して、本発明のヘッダテーブルを用いたパケット情報転送方式は適用可能である。また、先に述べたとおり、トレーラは最後のパケットのペイロード中に含めることができる。   Therefore, as long as a packet is composed of a header and a payload, the packet information transfer method using the header table of the present invention can be applied to all packet transfer protocols. Also, as previously mentioned, the trailer can be included in the payload of the last packet.

以上の図4、図5を参照したNIC5aの説明では、共通ヘッダバッファ58を設け、共通ヘッダをヘッダテーブルバッファ57からコピーしてそれにヘッダ合成ユニット562がアクセスするものであったが、ヘッダ合成ユニット562が直接ヘッダテーブルバッファ57に格納された共通ヘッダにアクセスするように構成することも可能である。   In the description of the NIC 5a with reference to FIGS. 4 and 5, the common header buffer 58 is provided, the common header is copied from the header table buffer 57, and the header synthesis unit 562 accesses the header. It is also possible to configure so that 562 directly accesses the common header stored in the header table buffer 57.

また、上述のNIC5aはハードウェアオリエンテッドで構成したものであるが、これは本発明のヘッダテーブルを用いた転送方式はハードウェア構成によるNICで好適に実
現できることを説明したまでのことであって、本発明がソフトウェアを用いて実現可能であることを否定するものではない。
Further, the above-described NIC 5a is configured by hardware oriented, but this is until the explanation that the transfer method using the header table of the present invention can be suitably realized by the NIC by the hardware configuration. This does not deny that the present invention can be implemented using software.

図6は、マイクロプロセッサ(CPU)とCPU上のソフトウェア構成による実施例におけるネットワークインタフェースコントローラの構成例を示す図である。
図6に示すように、NIC5bは、ホストインタフェース50、CPU560及びメモリ570を含んで構成される。
FIG. 6 is a diagram illustrating a configuration example of the network interface controller in the embodiment using a microprocessor (CPU) and a software configuration on the CPU.
As illustrated in FIG. 6, the NIC 5 b includes a host interface 50, a CPU 560, and a memory 570.

メモリ570には、ヘッダテーブルバッファ571、共通ヘッダバッファ572及びパケットバッファ573が確保されている。先に述べたのと同様に、共通ヘッダバッファ572は省略することも可能である。また、場合によっては、共通ヘッダバッファをレジスタにより構成することも考えられる。   In the memory 570, a header table buffer 571, a common header buffer 572, and a packet buffer 573 are secured. As described above, the common header buffer 572 can be omitted. In some cases, the common header buffer may be configured by a register.

CPU560でのソフトウェア処理は、図5に示すステップS20〜ステップS27のフローで表されるものと同様である。
本発明によるヘッダテーブルを用いた転送方式によれば、パケット作成に必要なデータはヘッダテーブルにまとめられていることからCPU560による処理もさほど重いものではないので、安価なものを使用することができ、適用分野によっては好適に採用することができる。
Software processing in the CPU 560 is the same as that represented by the flow of steps S20 to S27 shown in FIG.
According to the transfer method using the header table according to the present invention, since the data necessary for packet creation is collected in the header table, the processing by the CPU 560 is not so heavy, and an inexpensive one can be used. Depending on the application field, it can be suitably employed.

以上においては、NICに収容されるネットワークの回線数については特には触れずに本発明を説明してきた。本発明はネットワーク回線を一つだけ収容するNICに限られるわけではなく、各図に示されたネットワークとNICを接続する回線は太線一本で記載してあっても、複数の回線の場合も合わせて表記したものである。   In the above, the present invention has been described without particularly mentioning the number of network lines accommodated in the NIC. The present invention is not limited to a NIC that accommodates only one network line. The line that connects the network and the NIC shown in each figure may be described by a single thick line, or may be a plurality of lines. It is written together.

複数本の回線を収容するNICの場合には、例えば共通ヘッダには宛先を識別する情報が存在し、複数本の回線を収容するNICには当然のことながら宛先を識別する情報によりパケットを複数の回線のうちの1つに振り分ける手段が存在するから、それによりどの回線にパケットを送信するかを決めるようにすればよい。   In the case of a NIC that accommodates a plurality of lines, for example, there is information for identifying a destination in the common header, and a NIC that accommodates a plurality of lines naturally includes a plurality of packets based on information for identifying the destination. Since there is means for distributing to one of the lines, it is only necessary to determine to which line the packet is transmitted.

また、複数の物理回線をまとめて1本の論理回線として用いるリンクアグリゲーションを採用した場合には、可変ヘッダの部分にどの物理回線に送信するかの情報を設定してそのパケットを送信する回線を指定することができる。そして、リンクアグリゲーションを採用するNICであれば、指定された物理回線にパケットを送信できることは勿論である。   In addition, when link aggregation is used in which a plurality of physical lines are combined and used as one logical line, information on which physical line is to be transmitted is set in the variable header portion, and the line for transmitting the packet is set. Can be specified. Of course, a NIC that employs link aggregation can transmit packets to a designated physical line.

そして、本発明のホストコンピュータとネットワークインタフェースコントローラ間の転送方式は、いわゆるコンピュータ間通信用のホストとNICに限らず、パケット通信を利用するあらゆる分野、例えばパケットを用いた移動体通信の分野等においても適用可能であることは明らかである。   The transfer method between the host computer and the network interface controller of the present invention is not limited to the so-called inter-computer communication host and NIC, but in all fields using packet communication, for example, in the field of mobile communication using packets. Obviously, this is also applicable.

ネットワークインタフェースコントローラに接続されるネットワークの接続形態についても、ネットワークの回線が直接ネットワークインタフェースコントローラに接続される必要はなく、ネットワークインタフェースコントローラから出力されたパケットデータを各種変調方式で変調する変調部や各種符号化を行う符号化部等を介してネットワークの回線に接続される場合も含むものである。   As for the connection form of the network connected to the network interface controller, the network line does not have to be directly connected to the network interface controller, and the modulation unit that modulates the packet data output from the network interface controller with various modulation schemes and various types This includes the case where it is connected to a network line via an encoding unit or the like that performs encoding.

以上本発明を詳細に説明したところから明らかなとおり、本発明によれば、高価なハードウェアを用いることなく、ネットワーク変更に対する柔軟性を維持したまま、I/Oバスの問題、データコピーの問題、ヘッダ生成の問題を解決することができる。また、I/
Oバスを経由したホストとNICとのやりとりや、ホスト上の制御プログラムのオーバーヘッドを削減し、効率よくデータをネットワークに送り出すことが可能となる。
As is apparent from the detailed description of the present invention described above, according to the present invention, the problem of I / O bus and the problem of data copy can be maintained without using expensive hardware while maintaining the flexibility to change the network. The header generation problem can be solved. I /
The exchange between the host and the NIC via the O bus and the overhead of the control program on the host can be reduced, and the data can be efficiently sent to the network.

(付記1)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラとホストコンピュータの間のデータ転送方法において、
前記ホストコンピュータは、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成し、
前記ネットワークインタフェースコントローラに転送指示を行い、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡し、
前記ネットワークインタフェースコントローラは、
該渡されたヘッダテーブルに設定されたポインタによりパケットのペイロードとなるデータをホストコンピュータから読み出す、
ことを特徴とするデータ転送方法。
(付記2)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記1に記載のデータ転送方法。
(付記3)
前記ネットワークインタフェースコントローラは前記ネットワークの複数の回線を収容するものであり、前記共通ヘッダには該回線を識別する情報が含まれることを特徴とする付記2に記載のデータ転送方法。
(付記4)
前記ネットワークインタフェースコントローラは複数の物理回線をリンクアグリゲーションで運用する前記ネットワークの回線を収容するものであり、前記可変ヘッダには対応するパケットが送信される前記物理回線を識別する情報が含まれることを特徴とする付記2に記載のデータ転送方法。
(付記5)
前記ホストコンピュータは、前記ネットワークインタフェースコントローラからの読み出しにより前記ヘッダテーブルを渡すことを特徴とする付記1乃至付記4のいずれか1つに記載のデータ転送方法。
(付記6)
前記ホストコンピュータは、前記ヘッダテーブルを前記ネットワークインタフェースコントローラへの書込みにより渡すことを特徴とする付記1乃至付記4のいずれか1つに記載のデータ転送方法。
(付記7)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにデータを転送するホストコンピュータを、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成する手段と、
前記ネットワークインタフェースコントローラに転送指示を行う手段と、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡す手段と、
して機能させることを特徴とするプログラム。
(付記8)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記7に記載のプログラム。
(付記9)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにおいて、
制御部とヘッダ合成部とバッファ部を備え、
前記制御部は、前記ホストコンピュータから取得した、前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを前記バッファ部に格納して、前記ヘッダ合成部にヘッダの合成を指示するとともに、前記ヘッダテーブルに設定された前記ポインタによりパケットのペイロードとなるデータを読み出して前記バッファのパケットのペイロードデータ格納エリアに格納し、
前記ヘッダ合成部は、前記バッファ部から前記共通ヘッダと前記可変ヘッダを読み出し、前記共通ヘッダと前記可変ヘッダを合成してパケットのヘッダを作成して前記バッファのパケットのヘッダ格納エリアに格納する、
ことを特徴とするネットワークインタフェースコントローラ。
(付記10)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記9に記載のネットワークインタフェースコントローラ。
(付記11)
前記可変ヘッダは、さらに可変ヘッダ全体の長さを示すレングス部と、前記共通ヘッダに書き込むデータごとに、該データの長さを示すタイプ部を含み、前記制御部は、前記レングス部とタイプ部の長さ情報に基づいて前記可変ヘッダから、前記共通ヘッダに書き込むデータを取り出すとともに全ての該書き込みデータを取り出したことを判定することを特徴とする付記10に記載のネットワークインタフェースコントローラ。
(付記12)
前記ネットワークの複数の回線を収容し、前記共通ヘッダには該回線を識別する情報が含まれ、該回線を識別する情報に基づいて該回線に作成したパケットを送信することを特徴とする付記9乃至付記11のいずれか1つに記載のネットワークインタフェースコントローラ。
(付記13)
複数の物理回線をリンクアグリゲーションで運用する前記ネットワークの回線を収容し、前記可変ヘッダには対応するパケットが送信される前記物理回線を識別する情報が含まれ、該物理回線を識別する情報に基づいて該物理回線に作成したパケットを送信することを特徴とする付記9乃至付記11のいずれか1つに記載のネットワークインタフェースコントローラ。
(付記14)
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットネットワークインタフェースコントローラに、
前記ホストから前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを取得する機能と、
該ヘッダテーブル中のパケットのペイロードとなるデータの格納アドレスを示すポインタにより該パケットのペイロードとなるデータを読み出す機能と、
前記共通ヘッダと前記各可変ヘッダを合成して各パケットのヘッダを作成する機能と、
を実現させることを特徴とするプログラム。
(付記15)
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする付記14に記載のプログラム。
(Appendix 1)
In a data transfer method between a network interface controller and a host computer, which is provided between a host computer and a network and transmits a packet created by dividing transmission data of the host computer to the network.
The host computer
A header in which, for each transmission data, a common header composed of header information common to the transmission data, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as the payload of the packet are set Create a table,
Transfer instructions to the network interface controller,
Passing the header table to the network interface controller;
The network interface controller is
Read the data serving as the payload of the packet from the host computer with the pointer set in the passed header table.
A data transfer method characterized by the above.
(Appendix 2)
The data transfer method according to appendix 1, wherein the variable header includes data to be written to the common header and position information indicating a position to write the data to the common header.
(Appendix 3)
The data transfer method according to appendix 2, wherein the network interface controller accommodates a plurality of lines of the network, and the common header includes information for identifying the lines.
(Appendix 4)
The network interface controller accommodates a network line that operates a plurality of physical lines by link aggregation, and the variable header includes information identifying the physical line to which a corresponding packet is transmitted. The data transfer method according to Supplementary Note 2, wherein
(Appendix 5)
The data transfer method according to any one of appendix 1 to appendix 4, wherein the host computer passes the header table by reading from the network interface controller.
(Appendix 6)
The data transfer method according to any one of appendix 1 to appendix 4, wherein the host computer passes the header table by writing to the network interface controller.
(Appendix 7)
A host computer that is provided between the host computer and the network and transfers data to a network interface controller that transmits a packet created by dividing the transmission data of the host computer to the network;
A header in which, for each transmission data, a common header composed of header information common to the transmission data, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as the payload of the packet are set A means to create a table;
Means for instructing transfer to the network interface controller;
Means for passing the header table to the network interface controller;
A program characterized by making it function.
(Appendix 8)
The program according to appendix 7, wherein the variable header includes data to be written to the common header and position information indicating a position to write the data to the common header.
(Appendix 9)
In a network interface controller that is provided between a host computer and a network and transmits a packet created by dividing transmission data of the host computer to the network,
A control unit, a header synthesis unit, and a buffer unit;
The control unit indicates a common header composed of header information common to the transmission data obtained from the host computer, a variable header composed of unique header information for each packet, and a storage address of data serving as a payload of the packet A header table in which a pointer is set is stored in the buffer unit, the header synthesis unit is instructed to synthesize a header, and data serving as a payload of a packet is read out by the pointer set in the header table and the buffer Stored in the payload data storage area of
The header synthesis unit reads the common header and the variable header from the buffer unit, synthesizes the common header and the variable header to create a packet header, and stores the packet header in a packet header storage area of the buffer.
A network interface controller characterized by that.
(Appendix 10)
The network interface controller according to appendix 9, wherein the variable header includes data to be written to the common header and position information indicating a position to write the data to the common header.
(Appendix 11)
The variable header further includes a length portion indicating the length of the entire variable header, and a type portion indicating the length of the data for each data to be written to the common header, and the control portion includes the length portion and the type portion. 11. The network interface controller according to appendix 10, wherein the data to be written to the common header is extracted from the variable header based on the length information and all the write data has been extracted.
(Appendix 12)
The network includes a plurality of lines in the network, the common header includes information for identifying the line, and transmits a packet created on the line based on the information for identifying the line. Or the network interface controller according to any one of appendix 11.
(Appendix 13)
Based on the information for identifying the physical line, which accommodates the line of the network that operates a plurality of physical lines by link aggregation, and the variable header includes the physical line to which the corresponding packet is transmitted. The network interface controller according to any one of appendix 9 to appendix 11, wherein the packet created on the physical line is transmitted.
(Appendix 14)
To the network interface controller that is provided between the host computer and the network and transmits the packet created by dividing the transmission data of the host computer to the network,
A header table in which a common header composed of header information common to the transmission data from the host, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as a payload of the packet is acquired. Function to
A function of reading data serving as a payload of the packet by a pointer indicating a storage address of data serving as a payload of the packet in the header table;
A function of creating a header of each packet by combining the common header and each variable header;
A program characterized by realizing.
(Appendix 15)
15. The program according to appendix 14, wherein the variable header includes data to be written to the common header and position information indicating a position to write the data to the common header.

本発明によるパケット作成の原理を説明する図である。It is a figure explaining the principle of packet preparation by this invention. 本発明の一実施形態によるホストとNIC間の転送方式の概要を説明する図である。It is a figure explaining the outline | summary of the transfer system between the host and NIC by one Embodiment of this invention. 本発明の一実施形態による可変ヘッダの構成を示す図である。It is a figure which shows the structure of the variable header by one Embodiment of this invention. 本発明の一実施形態によるNICの構成例を示す図である。It is a figure which shows the structural example of NIC by one Embodiment of this invention. 本発明の一実施形態による転送方式に係る動作シーケンスを説明する図である。It is a figure explaining the operation | movement sequence which concerns on the transfer system by one Embodiment of this invention. ソフトウェア構成による実施例におけるNICの構成例を示す図である。It is a figure which shows the structural example of NIC in the Example by a software structure. NICを用いてホストからパケットを送信する構成を示す図である。It is a figure which shows the structure which transmits a packet from a host using NIC. NICを用いてデータを転送する従来の方式を説明する図である。It is a figure explaining the conventional system which transfers data using NIC. ギャザーテーブル方式を説明する図である。It is a figure explaining a gather table system. オフロードエンジン方式を説明する図である。It is a figure explaining an off-road engine system.

符号の説明Explanation of symbols

1 ホストコンピュータ
2 CPU
3 メモリ
4 I/Oバス
5、5a、5b ネットワークインタフェースコントローラ(NIC)
6 ネットワーク
36 ヘッダテーブル
50 ホストインタフェース
52 パケットバッファ
56 ヘッダ解釈/構成エンジン
561 コントローラ
562 ヘッダ合成ユニット
57 ヘッダテーブルバッファ
58 共通ヘッダバッファ
1 Host computer 2 CPU
3 Memory 4 I / O bus 5, 5a, 5b Network interface controller (NIC)
6 Network 36 Header Table 50 Host Interface 52 Packet Buffer 56 Header Interpretation / Configuration Engine 561 Controller 562 Header Synthesis Unit 57 Header Table Buffer 58 Common Header Buffer

Claims (5)

ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラとホストコンピュータの間のデータ転送方法において、
前記ホストコンピュータは、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成し、
前記ネットワークインタフェースコントローラに転送指示を行い、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡し、
前記ネットワークインタフェースコントローラは、
該渡されたヘッダテーブルに設定されたポインタによりパケットのペイロードとなるデータをホストコンピュータから読み出す、
ことを特徴とするデータ転送方法。
In a data transfer method between a network interface controller and a host computer, which is provided between a host computer and a network and transmits a packet created by dividing transmission data of the host computer to the network.
The host computer
A header in which, for each transmission data, a common header composed of header information common to the transmission data, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as the payload of the packet are set Create a table,
Transfer instructions to the network interface controller,
Passing the header table to the network interface controller;
The network interface controller is
Read the data serving as the payload of the packet from the host computer with the pointer set in the passed header table.
A data transfer method characterized by the above.
前記可変ヘッダは、前記共通ヘッダに書き込むデータと、該データを共通ヘッダに書き込む位置を示す位置情報を含むことを特徴とする請求項1に記載のデータ転送方法。   The data transfer method according to claim 1, wherein the variable header includes data to be written to the common header and position information indicating a position to write the data to the common header. ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにデータを転送するホストコンピュータを、
前記送信データごとに、該送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを作成する手段と、
前記ネットワークインタフェースコントローラに転送指示を行う手段と、
前記ネットワークインタフェースコントローラに前記ヘッダテーブルを渡す手段と、
して機能させることを特徴とするプログラム。
A host computer that is provided between the host computer and the network and transfers data to a network interface controller that transmits a packet created by dividing the transmission data of the host computer to the network;
A header in which, for each transmission data, a common header composed of header information common to the transmission data, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as the payload of the packet are set A means to create a table;
Means for instructing transfer to the network interface controller;
Means for passing the header table to the network interface controller;
A program characterized by making it function.
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットワークインタフェースコントローラにおいて、
制御部とヘッダ合成部とバッファ部を備え、
前記制御部は、前記ホストコンピュータから取得した、前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを前記バッファ部に格納して、前記ヘッダ合成部にヘッダの合成を指示するとともに、前記ヘッダテーブルに設定された前記ポインタによりパケットのペイロードとなるデータを読み出して前記バッファのパケットのペイロードデータ格納エリアに格納し、
前記ヘッダ合成部は、前記バッファ部から前記共通ヘッダと前記可変ヘッダを読み出し、前記共通ヘッダと前記可変ヘッダを合成してパケットのヘッダを作成して前記バッファのパケットのヘッダ格納エリアに格納する、
ことを特徴とするネットワークインタフェースコントローラ。
In a network interface controller that is provided between a host computer and a network and transmits a packet created by dividing transmission data of the host computer to the network,
A control unit, a header synthesis unit, and a buffer unit;
The control unit indicates a common header composed of header information common to the transmission data obtained from the host computer, a variable header composed of unique header information for each packet, and a storage address of data serving as a payload of the packet A header table in which a pointer is set is stored in the buffer unit, the header synthesis unit is instructed to synthesize a header, and data serving as a payload of a packet is read out by the pointer set in the header table and the buffer Stored in the payload data storage area of
The header synthesis unit reads the common header and the variable header from the buffer unit, synthesizes the common header and the variable header to create a packet header, and stores the packet header in a packet header storage area of the buffer.
A network interface controller characterized by that.
ホストコンピュータとネットワークの間に設けられ、ホストコンピュータの送信データを分割して作成したパケットをネットワークに送信するネットネットワークインタフェースコントローラに、
前記ホストから前記送信データに共通なヘッダ情報からなる共通ヘッダと、パケットごとに独自のヘッダ情報からなる可変ヘッダと該パケットのペイロードとなるデータの格納アドレスを示すポインタとを設定したヘッダテーブルを取得する機能と、
該ヘッダテーブル中のパケットのペイロードとなるデータの格納アドレスを示すポインタにより該パケットのペイロードとなるデータを読み出す機能と、
前記共通ヘッダと前記各可変ヘッダを合成して各パケットのヘッダを作成する機能と、
を実現させることを特徴とするプログラム。
To the network interface controller that is provided between the host computer and the network and transmits the packet created by dividing the transmission data of the host computer to the network,
A header table in which a common header composed of header information common to the transmission data from the host, a variable header composed of unique header information for each packet, and a pointer indicating a storage address of data serving as a payload of the packet is acquired. Function to
A function of reading data serving as a payload of the packet by a pointer indicating a storage address of data serving as a payload of the packet in the header table;
A function of creating a header of each packet by combining the common header and each variable header;
A program characterized by realizing.
JP2007073173A 2007-03-20 2007-03-20 Data transfer method between computer and network interface controller, program, and network interface controller Expired - Fee Related JP4786575B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007073173A JP4786575B2 (en) 2007-03-20 2007-03-20 Data transfer method between computer and network interface controller, program, and network interface controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007073173A JP4786575B2 (en) 2007-03-20 2007-03-20 Data transfer method between computer and network interface controller, program, and network interface controller

Publications (2)

Publication Number Publication Date
JP2008236378A true JP2008236378A (en) 2008-10-02
JP4786575B2 JP4786575B2 (en) 2011-10-05

Family

ID=39908618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007073173A Expired - Fee Related JP4786575B2 (en) 2007-03-20 2007-03-20 Data transfer method between computer and network interface controller, program, and network interface controller

Country Status (1)

Country Link
JP (1) JP4786575B2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012513131A (en) * 2008-12-22 2012-06-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) IP multiplexing from multiple IP hosts
JP2013062683A (en) * 2011-09-13 2013-04-04 Toshiba Corp Data transfer device, data transmission system, data transmission method, and program
JP2014509138A (en) * 2011-05-27 2014-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション Method, computer system, and computer program (product) for creating and modifying data packets for storage reduction (memory-saving packet modification)
JP2014515195A (en) * 2011-03-28 2014-06-26 日本電気株式会社 Retransmission control system and retransmission control method
US10185687B2 (en) 2014-08-08 2019-01-22 Samsung Electronics Co., Ltd. Interface circuit and packet transmission method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09149034A (en) * 1995-11-20 1997-06-06 Nec Eng Ltd Atm cell generating method and communication controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09149034A (en) * 1995-11-20 1997-06-06 Nec Eng Ltd Atm cell generating method and communication controller

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012513131A (en) * 2008-12-22 2012-06-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) IP multiplexing from multiple IP hosts
US9319488B2 (en) 2008-12-22 2016-04-19 Telefonaktiebolaget L M Ericsson (Publ) IP multiplexing from many IP hosts
JP2014515195A (en) * 2011-03-28 2014-06-26 日本電気株式会社 Retransmission control system and retransmission control method
JP2014509138A (en) * 2011-05-27 2014-04-10 インターナショナル・ビジネス・マシーンズ・コーポレーション Method, computer system, and computer program (product) for creating and modifying data packets for storage reduction (memory-saving packet modification)
US8902890B2 (en) 2011-05-27 2014-12-02 International Business Machines Corporation Memory saving packet modification
US8982886B2 (en) 2011-05-27 2015-03-17 International Business Machines Corporation Memory saving packet modification
JP2013062683A (en) * 2011-09-13 2013-04-04 Toshiba Corp Data transfer device, data transmission system, data transmission method, and program
US10185687B2 (en) 2014-08-08 2019-01-22 Samsung Electronics Co., Ltd. Interface circuit and packet transmission method thereof
US10719472B2 (en) 2014-08-08 2020-07-21 Samsung Electronics Co., Ltd. Interface circuit and packet transmission method thereof

Also Published As

Publication number Publication date
JP4786575B2 (en) 2011-10-05

Similar Documents

Publication Publication Date Title
US7320041B2 (en) Controlling flow of data between data processing systems via a memory
US9594718B2 (en) Hardware accelerated communications over a chip-to-chip interface
USRE47756E1 (en) High performance memory based communications interface
US6857030B2 (en) Methods, system and article of manufacture for pre-fetching descriptors
US7561573B2 (en) Network adaptor, communication system and communication method
US7813339B2 (en) Direct assembly of a data payload in an application memory
JP6433146B2 (en) Information processing apparatus, system, information processing method, computer program
US20030099254A1 (en) Systems and methods for interfacing asynchronous and non-asynchronous data media
CN106257434B (en) A kind of data transmission method and device based on enhanced peripheral interconnection protocol bus
US20040054837A1 (en) Controlling flow of data between data processing systems via a memory
US20050135395A1 (en) Method and system for pre-pending layer 2 (L2) frame descriptors
JP4786575B2 (en) Data transfer method between computer and network interface controller, program, and network interface controller
JP5039292B2 (en) Network adapter, communication system, and communication method
US7460531B2 (en) Method, system, and program for constructing a packet
US10284672B2 (en) Network interface
US6856619B1 (en) Computer network controller
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
CN110958216B (en) Secure online network packet transmission
EP1049292A2 (en) System and method for network monitoring
US7330484B2 (en) Method and system for transmitting packet chains
JP5906078B2 (en) Data transfer apparatus and data transfer method
WO2022074858A1 (en) Memory control device and control method
JP7145607B2 (en) DMA TRANSFER DEVICE, DMA TRANSFER CONTROL METHOD, AND COMMUNICATION DEVICE
CN115859334A (en) Encryption and decryption data processing method and device
JP2010287972A (en) Network device and network processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110620

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110712

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110713

R150 Certificate of patent or registration of utility model

Ref document number: 4786575

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees