JP5821608B2 - Packet shaping device - Google Patents

Packet shaping device Download PDF

Info

Publication number
JP5821608B2
JP5821608B2 JP2011278187A JP2011278187A JP5821608B2 JP 5821608 B2 JP5821608 B2 JP 5821608B2 JP 2011278187 A JP2011278187 A JP 2011278187A JP 2011278187 A JP2011278187 A JP 2011278187A JP 5821608 B2 JP5821608 B2 JP 5821608B2
Authority
JP
Japan
Prior art keywords
descriptor
packet
transmission
mac
circuit
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.)
Active
Application number
JP2011278187A
Other languages
Japanese (ja)
Other versions
JP2013131817A (en
Inventor
治 下國
治 下國
伸彦 福田
伸彦 福田
亮太郎 松下
亮太郎 松下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011278187A priority Critical patent/JP5821608B2/en
Publication of JP2013131817A publication Critical patent/JP2013131817A/en
Application granted granted Critical
Publication of JP5821608B2 publication Critical patent/JP5821608B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、パケットシェーピング装置に関する。   The present invention relates to a packet shaping device.

IP(Internet Protocol)ネットワークの分野では、“マイクロバースト”と呼ばれ
る現象が知られている。マイクロバーストは、ミリ秒又はマイクロ秒単位の時間において、爆発的に通信データ量が増大する現象である。例えば、サーバのような計算機システムがネットワークに通信パケットを送信する場合において、5分単位の平均通信速度が数10Mbpsであるのに対して、1マイクロ秒〜1ミリ秒単位の平均通信速度では、通信媒体の速度である1Gbpsや10Gbpsのような通信速度でデータが送出される現象が、マイクロバーストに相当する。
In the field of IP (Internet Protocol) networks, a phenomenon called “microburst” is known. A microburst is a phenomenon in which the amount of communication data increases explosively in a time of milliseconds or microseconds. For example, when a computer system such as a server transmits a communication packet to a network, the average communication speed in units of 5 minutes is several tens of Mbps, whereas the average communication speed in units of 1 microsecond to 1 millisecond is A phenomenon in which data is transmitted at a communication speed such as 1 Gbps or 10 Gbps, which is the speed of the communication medium, corresponds to microburst.

一般的に、建物内やキャンパス内のローカルエリアネットワーク(LAN)は、ルータのような通信装置を介して、基幹網(Wide Area Network: WAN)に接続される。WA
Nの通信速度は、LANの通信速度に比べて遅い(例えば、10分の1)ことが少なくない。例えば、LANの通信速度が1Gbpsであるのに対し、WANの通信速度が100Mbpsであることがある。
Generally, a local area network (LAN) in a building or campus is connected to a backbone area network (WAN) via a communication device such as a router. WA
The communication speed of N is often slower (for example, 1/10) than the communication speed of the LAN. For example, the LAN communication speed may be 1 Gbps, while the WAN communication speed may be 100 Mbps.

上記したような環境下において、LANとWANとを結ぶ通信装置には、LANとWANとの通信速度の差を吸収するためのバッファが設けられている。しかし、マイクロバーストによって一時的に大量のパケットが通信装置に到達すると、バッファがオーバーフローし、パケットがロストする現象が発生し得る。   Under the environment as described above, a communication device that connects a LAN and a WAN is provided with a buffer for absorbing a difference in communication speed between the LAN and the WAN. However, when a large number of packets temporarily reach the communication device due to the microburst, the buffer overflows and the phenomenon that the packets are lost may occur.

マイクロバーストに起因するパケットロストは数分周期(例えば5分平均)のネットワーク監視では検出することができない。また、マイクロ秒単位でのネットワーク監視は、データ量増大や監視処理能力不足により著しく困難である。このように、マイクロバーストの検出は著しく困難であった。   Packet lost due to microbursts cannot be detected by network monitoring with a period of several minutes (for example, an average of 5 minutes). Also, network monitoring in microsecond units is extremely difficult due to an increase in data amount and insufficient monitoring processing capability. Thus, the detection of microburst was extremely difficult.

特開2002−281039号公報Japanese Patent Laid-Open No. 2002-281039 特表2003−510905号公報Special table 2003-510905 gazette

"Transmission Timer Approach for Rate Based Pacing TCP with Hardware Support", Katsushi Kobayashi, PFLDNet 2006, February 2006"Transmission Timer Approach for Rate Based Pacing TCP with Hardware Support", Katsushi Kobayashi, PFLDNet 2006, February 2006

マイクロバーストの発生は、計算機システムのパケット送信処理に起因する。現在の計算機システムでは、計算機システムで実行されるオペレーティングシステム(以下“OS”と表記)が、アプリケーションプログラム(以下、“アプリケーション”と表記)等の処理能力の向上のために、ネットワーク処理を数十パケットまとめて実行するようにスケジューリングされている。計算機システムに搭載されているネットワークデバイスは、OSから受け取ったパケットを通信媒体の速度で連続的に送出する。   The occurrence of the microburst is caused by the packet transmission processing of the computer system. In the current computer system, an operating system (hereinafter referred to as “OS”) executed by the computer system performs several tens of network processing in order to improve the processing capability of an application program (hereinafter referred to as “application”). Scheduled to execute packets together. The network device installed in the computer system continuously sends out packets received from the OS at the speed of the communication medium.

例えば、Ethernet(登録商標)での標準最大パケットサイズである1500Byteのパケ
ットで500Mbpsの通信速度を仮定する。このような仮定において、等間隔でパケットを送出するときのパケット間隔は24マイクロ秒である。これに対し、現在一般的なOSの時刻精度(クロック周波数)は1ミリ秒程度、5年程前では10ミリ秒程度である。このように、OSの処理速度がパケット送信に要求される処理速度より著しく速く、さらに、数十のパケットの処理結果がまとめて出力されることがマイクロバーストの原因となっている。しかし、OSがパケットをパケット毎に処理するような改変は現実的でなかった。
For example, a communication speed of 500 Mbps is assumed with a 1500-byte packet that is a standard maximum packet size in Ethernet (registered trademark). Under such an assumption, the packet interval when sending packets at equal intervals is 24 microseconds. On the other hand, the time accuracy (clock frequency) of a general OS is about 1 millisecond and about 10 milliseconds about 5 years ago. As described above, the processing speed of the OS is remarkably faster than the processing speed required for packet transmission, and the processing results of several tens of packets are output together, causing microbursts. However, such a modification that the OS processes a packet for each packet is not realistic.

本発明の一態様は、マイクロバーストの発生を抑制する技術を提供することを目的とする。   An object of one embodiment of the present invention is to provide a technique for suppressing the occurrence of microburst.

本発明の一態様は、パケットの情報と、パケットの送信処理の許可又は禁止を示す情報とを含むディスクリプタを一時的に格納するバッファと、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記送信処理の許可を示す情報を設定するタイミングを調整する調整回路とを含み、
前記ディスクリプタを生成する第1の回路と、前記送信処理の許可を示す情報が設定されたディスクリプタに基づく送信処理を行う第2の回路との間に配置される、
パケットシェーピング装置である。
One aspect of the present invention is a buffer that temporarily stores a descriptor including packet information and information indicating permission or prohibition of packet transmission processing;
An adjustment circuit that adjusts a timing for setting information indicating permission of the transmission processing for the descriptor stored in the buffer according to a communication speed of a communication medium to which a packet is transmitted;
Arranged between a first circuit that generates the descriptor and a second circuit that performs transmission processing based on the descriptor in which information indicating permission of the transmission processing is set;
Packet shaping device.

本発明の一態様によれば、マイクロバーストの発生を抑制することが可能となる。   According to one embodiment of the present invention, generation of microburst can be suppressed.

図1は、実施形態に係るパケットシェーピング装置が適用されるネットワークシステムの構成例を示す。FIG. 1 shows a configuration example of a network system to which a packet shaping device according to an embodiment is applied. 図2は、ネットワークインタフェースカード(NIC)の構成例を示す。FIG. 2 shows a configuration example of a network interface card (NIC). 図3は、送信ディスクリプタのデータ構造例を示す。FIG. 3 shows an example of the data structure of the transmission descriptor. 図4は、パケットシェーピング装置の構成例を示す。FIG. 4 shows a configuration example of the packet shaping device. 図5Aは、ドライバ(CPU)からのWriteアクセス時におけるドライバ側のインタフェース回路の動作を示すフローチャートである。FIG. 5A is a flowchart showing the operation of the driver side interface circuit at the time of write access from the driver (CPU). 図5Bは、ドライバ(CPU)からのReadアクセス時におけるドライバ側のインタフェース回路の動作を示すフローチャートである。FIG. 5B is a flowchart showing the operation of the driver-side interface circuit at the time of Read access from the driver (CPU). 図6Aは、MAC側のインタフェース回路の動作を示すフローチャートである。FIG. 6A is a flowchart showing the operation of the interface circuit on the MAC side. 図6Bは、MACからのReadアクセス時における、MAC側のインタフェース回路の動作を示すフローチャートである。FIG. 6B is a flowchart illustrating the operation of the interface circuit on the MAC side during read access from the MAC. 図6Cは、MACからのWriteアクセス時における、MAC側のインタフェース回路の動作を示すフローチャートである。FIG. 6C is a flowchart showing the operation of the interface circuit on the MAC side during the write access from the MAC.

以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. The configuration of the embodiment is an exemplification, and the present invention is not limited to the configuration of the embodiment.

<<全体構成>>
図1は、実施形態に係るパケットシェーピング装置が適用されるネットワークシステムの構成例を示す。図1において、計算機システム1は、LAN(Local Area Network)2に接続されている。LAN2は、通信装置3を介してWAN(Wide Area Network)4に
接続されている。通信装置3は、例えば、ルータ,レイヤ3スイッチ,ゲートウェイである。LAN2は、通信媒体の一例である。
<< Overall structure >>
FIG. 1 shows a configuration example of a network system to which a packet shaping device according to an embodiment is applied. In FIG. 1, a computer system 1 is connected to a LAN (Local Area Network) 2. The LAN 2 is connected to a WAN (Wide Area Network) 4 via the communication device 3. The communication device 3 is, for example, a router, a layer 3 switch, or a gateway. LAN 2 is an example of a communication medium.

計算機システム1は、例えば、パーソナルコンピュータ(PC),ワークステーション(WS),サーバマシン、PDU(Personal Digital Assistant)、スマートフォンのような、汎用又は専用のコンピュータ(情報処理装置)である。   The computer system 1 is a general-purpose or dedicated computer (information processing apparatus) such as a personal computer (PC), a workstation (WS), a server machine, a PDU (Personal Digital Assistant), or a smartphone.

計算機システム1は、バス10に接続されたCPU11,メモリ,ネットワークインタフェースカード(NIC)13を備えており、NIC13は、通信回線を介してLAN2と接続されている。バス10は、システムバス,メモリバス,入出力バスを含む。バス10として、PCI(Peripheral Component Interconnect)バスを例示できる。   The computer system 1 includes a CPU 11, a memory, and a network interface card (NIC) 13 connected to a bus 10, and the NIC 13 is connected to the LAN 2 via a communication line. The bus 10 includes a system bus, a memory bus, and an input / output bus. An example of the bus 10 is a PCI (Peripheral Component Interconnect) bus.

バス10は、入力装置や出力装置のような周辺機器(周辺デバイス)を接続することができる。入力装置は、例えば、キーボードやマウスのようなポインティングデバイスである。出力装置は、ディスプレイ装置やプリンタである。周辺デバイスは、メモリ12に対する補助記憶装置(図示せず)を含むことができる。補助記憶装置は、例えば、HDD(Hard Disk Drive),EEPROM(Electrically Erasable Programmable Read-Only Memory),フラッシュメモリなどである。   The bus 10 can connect peripheral devices (peripheral devices) such as input devices and output devices. The input device is a pointing device such as a keyboard and a mouse, for example. The output device is a display device or a printer. The peripheral device can include an auxiliary storage device (not shown) for the memory 12. The auxiliary storage device is, for example, an HDD (Hard Disk Drive), an EEPROM (Electrically Erasable Programmable Read-Only Memory), a flash memory, or the like.

メモリ12は、RAM(Random Access Memory)及びROM(Read Only Memory)を含む。ROMは、CPU11によって実行されるOS14,デバイスドライバ15(以下、単に“ドライバ15”と表記),アプリケーションプログラム(以下、単に“アプリケーション”と表記)のような各種のプログラムを記憶する。   The memory 12 includes a RAM (Random Access Memory) and a ROM (Read Only Memory). The ROM stores various programs such as an OS 14 executed by the CPU 11, a device driver 15 (hereinafter simply referred to as “driver 15”), and an application program (hereinafter simply referred to as “application”).

OS14は、アプリケーションの実行によって生成されたデータをネットワーク(LAN2,WAN4)へ送信するためのパケットを生成する。デバイスドライバ15は、NIC13のような周辺デバイスの操作や制御を司るプログラムである。   The OS 14 generates a packet for transmitting the data generated by executing the application to the network (LAN2, WAN4). The device driver 15 is a program that manages and controls peripheral devices such as the NIC 13.

また、ROMは、プログラムの実行時に使用されるデータを記憶する。なお、プログラムや、プログラムの実行時に使用されるデータは、上述した補助記憶装置にて記憶することもできる。RAMは、CPU11の作業領域として使用される。RAMの記憶領域の一部は、CPU11によって生成されたパケットデータを一時的に格納しておくバッファ領域として使用される。   The ROM stores data used when the program is executed. The program and data used when the program is executed can be stored in the auxiliary storage device described above. The RAM is used as a work area for the CPU 11. A part of the storage area of the RAM is used as a buffer area for temporarily storing packet data generated by the CPU 11.

CPU11は、アプリケーションの実行を通じて送信対象のデータを生成する。また、CPU11は、OS14の実行を通じて、生成されたデータを含むパケット(パケットデータ)を生成する。さらに、CPU11は、ドライバ15の実行を通じて、パケットデータ及びパケットデータの制御情報をNIC13へバス10を介して転送する。   The CPU 11 generates data to be transmitted through execution of the application. Further, the CPU 11 generates a packet (packet data) including the generated data through the execution of the OS 14. Further, the CPU 11 transfers the packet data and the control information of the packet data to the NIC 13 through the bus 10 through the execution of the driver 15.

NIC13は、ネットワークデバイス、或いはネットワークインタフェースアダプタと呼ばれる、ネットワークとのインタフェース機能を司る装置(デバイス)である。NIC13は、ドライバ15の実行によってCPU11からバス10を介して受け取るパケットデータの制御情報(送信パケットの制御情報:以下、“送信パケット情報”と表記)に従ってパケットの送信処理を行う。   The NIC 13 is a device (device) that manages an interface function with a network, called a network device or a network interface adapter. The NIC 13 performs packet transmission processing in accordance with packet data control information (transmission packet control information: hereinafter referred to as “transmission packet information”) received from the CPU 11 via the bus 10 by the execution of the driver 15.

<<NICの構成>>
図2は、NIC13の構成例を示す。NIC13は、PHY(Physical Layer Chip)1
31と、MAC(Media Access Controller)132と、パケットシェーピング装置(シ
ェーピング回路)130と、コネクタ134と、コネクタ135とを備える。
<< Configuration of NIC >>
FIG. 2 shows a configuration example of the NIC 13. The NIC 13 is a PHY (Physical Layer Chip) 1
31, a MAC (Media Access Controller) 132, a packet shaping device (shaping circuit) 130, a connector 134, and a connector 135.

コネクタ134は、LANケーブルのような通信ケーブルとの接続のためのコネクタである。但し、計算機システム1が無線LANと接続される場合には、NIC13は、無線
LANのアクセスポイントとの無線接続のためのRF(Radio Frequency)回路及びアン
テナを備えることができる。
The connector 134 is a connector for connection with a communication cable such as a LAN cable. However, when the computer system 1 is connected to a wireless LAN, the NIC 13 can include an RF (Radio Frequency) circuit and an antenna for wireless connection with an access point of the wireless LAN.

コネクタ135は、バス10側のコネクタ10Aと接続される。コネクタ135とコネクタ10Aとの接続によって、NIC13は、CPU11及びメモリ12とバス10を介して電気的に接続された状態となる。   The connector 135 is connected to the connector 10A on the bus 10 side. By connecting the connector 135 and the connector 10 </ b> A, the NIC 13 is electrically connected to the CPU 11 and the memory 12 via the bus 10.

PHYチップ131は、パケットに対する物理層の処理(例えば、論理信号と電気信号との変換)を司る電子回路チップである。MAC132は、データリンク層(レイヤ2)とドライバ15(CPU11によるドライバ15の実行による機能)との協調動作を行い、パケットの送信処理を行う。PHY131,MAC132は、例えば、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)によって実装される。
もっとも、PHY131,MAC132は、汎用の電気・電子回路(IC、LSI)や、FPGA(Field Programmable Gate Array)の組合せによって実装することもできる。
The PHY chip 131 is an electronic circuit chip that manages physical layer processing (for example, conversion between a logic signal and an electric signal) for a packet. The MAC 132 performs a cooperative operation between the data link layer (layer 2) and the driver 15 (function by the execution of the driver 15 by the CPU 11), and performs packet transmission processing. The PHY 131 and the MAC 132 are mounted by, for example, an application specific integrated circuit (ASIC).
However, the PHY 131 and the MAC 132 can also be mounted by a combination of general-purpose electric / electronic circuits (IC, LSI) or FPGA (Field Programmable Gate Array).

パケットシェーピング装置130は、ドライバ15(CPU11によるドライバ15の実行による機能)と、MAC132との間に介在し、本来、ドライバ15(CPU11)とMAC132との間でやりとりされる送信パケット情報の受け渡しを制御する。すなわち、パケットシェーピング装置130は、MAC132に対する送信パケット情報の供給間隔を制御することによって、NIC13からネットワーク(LAN2)へ送出されるパケットの送出間隔を調整する。CPU11は、第1の回路の一例であり、MAC132は、第2の回路の一例である。   The packet shaping device 130 is interposed between the driver 15 (function by the execution of the driver 15 by the CPU 11) and the MAC 132, and originally exchanges transmission packet information exchanged between the driver 15 (CPU 11) and the MAC 132. Control. That is, the packet shaping device 130 adjusts the transmission interval of packets transmitted from the NIC 13 to the network (LAN 2) by controlling the supply interval of transmission packet information to the MAC 132. The CPU 11 is an example of a first circuit, and the MAC 132 is an example of a second circuit.

ここに、ドライバ15(CPU11)とMAC132との間の送信パケット情報の受け渡しは、“送信ディスクリプタ”と呼ばれる(単にディスクリプタとも呼ばれる)データ構造を介して行われる。図3は、送信ディスクリプタのデータ構造例を示す。CPU11は、メモリ12のバッファ領域に格納されるパケットデータに対応する送信ディスクリプタ20を生成(発行)する。   Here, transmission / reception of transmission packet information between the driver 15 (CPU 11) and the MAC 132 is performed via a data structure called “transmission descriptor” (also simply called a descriptor). FIG. 3 shows an example of the data structure of the transmission descriptor. The CPU 11 generates (issues) a transmission descriptor 20 corresponding to the packet data stored in the buffer area of the memory 12.

図3において、送信ディスクリプタ20は、バッファ領域に格納されたパケットデータへのポインタの格納領域21と、パケットのサイズ情報が格納される格納領域22とを有する。また、送信ディスクリプタ20は、パケットに対する処理内容(出力設定)が記述される格納領域23と、送信ディスクリプタ20に対するアクセス権を示すOWNビットの格納領域24とを有する。さらに、送信ディスクリプタ20は、パケットの出力結果及び統計情報の格納領域25を有する。   In FIG. 3, the transmission descriptor 20 has a storage area 21 for pointers to packet data stored in the buffer area, and a storage area 22 for storing packet size information. The transmission descriptor 20 has a storage area 23 in which processing contents (output setting) for the packet are described, and a storage area 24 with an OWN bit indicating an access right to the transmission descriptor 20. Further, the transmission descriptor 20 has a packet output result and statistical information storage area 25.

複数の格納領域のうち、格納領域21〜24に格納される情報(ポインタ、サイズ、出力設定など)は、ドライバ15(CPU11)によって設定される。これに対し、格納領域25に格納される情報(出力結果、統計情報)は、MAC132によって設定される。   Of the plurality of storage areas, information (pointer, size, output setting, etc.) stored in the storage areas 21 to 24 is set by the driver 15 (CPU 11). On the other hand, information (output result, statistical information) stored in the storage area 25 is set by the MAC 132.

送信ディスクリプタ20は、パケット毎に生成される。もっとも、一つのパケットデータに対して複数の送信ディスクリプタ20が生成されることもある。   The transmission descriptor 20 is generated for each packet. However, a plurality of transmission descriptors 20 may be generated for one packet data.

OWNビットは、送信ディスクリプタ20に対するアクセス権がドライバ15(CPU11)とMAC132とのどちらにあるかを規定する。すなわち、OWNビットが“0”のとき、送信ディスクリプタ20へのアクセス権をドライバ15(CPU11)が有すること(MAC132はアクセス不可)を意味する。これに対し、OWNビットが“1”であれば、送信ディスクリプタ20へのアクセス権をMAC132が有すること(ドライバ15(CPU11)はアクセス不可)を示す。OWNビットは、“パケットの送信処理の許可又は禁止を示す情報”の一例である。   The OWN bit defines whether the access right to the transmission descriptor 20 is in the driver 15 (CPU 11) or the MAC 132. That is, when the OWN bit is “0”, it means that the driver 15 (CPU 11) has the right to access the transmission descriptor 20 (the MAC 132 cannot be accessed). On the other hand, if the OWN bit is “1”, it indicates that the MAC 132 has the right to access the transmission descriptor 20 (the driver 15 (CPU 11) cannot access). The OWN bit is an example of “information indicating permission or prohibition of packet transmission processing”.

本実施形態では、送信ディスクリプタ20の記憶領域は、パケットシェーピング装置130に設けられる。パケットシェーピング装置130は、ドライバ15(CPU11)から受け取る送信ディスクリプタ20のOWNビットの値を適宜のタイミングで“1”に設定し、MAC132へ供給する。   In the present embodiment, the storage area of the transmission descriptor 20 is provided in the packet shaping device 130. The packet shaping device 130 sets the value of the OWN bit of the transmission descriptor 20 received from the driver 15 (CPU 11) to “1” at an appropriate timing, and supplies it to the MAC 132.

MAC132は、OWNビット“1”が設定された送信ディスクリプタ20を受け取った場合には、送信ディスクリプタ20に設定された情報を用いてパケットの送信処理を行う。このとき、送信ディスクリプタ20に含まれるポインタを用いて、バッファ領域に格納されたパケットデータにアクセスする。送信処理の終了に伴い、MAC132は、送信処理の結果や統計情報を送信ディスクリプタ20の格納領域25に格納する。その後、送信ディスクリプタ20は、パケットシェーピング装置130の記憶領域に格納され、ドライバ15(CPU11)によって回収される。なお、MAC132での送信処理を経たパケットは、PHY131による処理を経てLAN2へ送出される。   When the MAC 132 receives the transmission descriptor 20 in which the OWN bit “1” is set, the MAC 132 performs packet transmission processing using the information set in the transmission descriptor 20. At this time, the packet data stored in the buffer area is accessed using the pointer included in the transmission descriptor 20. With the end of the transmission process, the MAC 132 stores the result of the transmission process and statistical information in the storage area 25 of the transmission descriptor 20. Thereafter, the transmission descriptor 20 is stored in the storage area of the packet shaping device 130 and is collected by the driver 15 (CPU 11). A packet that has undergone transmission processing at the MAC 132 is sent to the LAN 2 through processing by the PHY 131.

MAC132は、OWNビット“1”が設定された送信ディスクリプタ20に対する送信処理を行い、OWNビット“0”が設定された送信ディスクリプタ20に対しては送信処理を行わない。パケットシェーピング装置130は、ドライバ15(CPU11)から受け取る送信ディスクリプタ20のOWNビットが“1”に設定されるタイミングを制御する。これによって、MAC132の送信パケットの処理間隔、すなわち送信パケットの出力の間隔が制御される。送信パケットの出力の間隔制御を「パケットシェーピング」と呼ぶ。   The MAC 132 performs transmission processing for the transmission descriptor 20 in which the OWN bit “1” is set, and does not perform transmission processing for the transmission descriptor 20 in which the OWN bit “0” is set. The packet shaping device 130 controls the timing at which the OWN bit of the transmission descriptor 20 received from the driver 15 (CPU 11) is set to “1”. Thereby, the processing interval of the transmission packet of the MAC 132, that is, the transmission packet output interval is controlled. The transmission packet output interval control is called “packet shaping”.

<<パケットシェーピング装置の構成>>
前提として、送信ディスクリプタ20を用いた一般的なドライバ15(CPU11)とMAC132とのやりとりについて説明する。一般に、複数の送信ディスクリプタ20を格納する記憶領域(“ディスクリプタ記憶領域”と称する)は、メモリ12のようなメモリ上に作成され、ドライバ15(CPU11)とMAC132との間で共用される。
<< Configuration of packet shaping device >>
As a premise, the exchange between the general driver 15 (CPU 11) and the MAC 132 using the transmission descriptor 20 will be described. In general, a storage area for storing a plurality of transmission descriptors 20 (referred to as “descriptor storage area”) is created on a memory such as the memory 12 and is shared between the driver 15 (CPU 11) and the MAC 132.

すなわち、ドライバ15(CPU11)によるメモリアクセス(送信ディスクリプタ20の書き込み(Write)要求)により、送信ディスクリプタ20がディスクリプタ記憶領
域に書き込まれる。ディスクリプタ記憶領域は、一般にFIFO(リングバッファ)構造を有し、複数の送信ディスクリプタ20は、書き込み順でディスクリプタ記憶領域に蓄積される。
That is, the transmission descriptor 20 is written to the descriptor storage area by a memory access (write request for writing the transmission descriptor 20) by the driver 15 (CPU 11). The descriptor storage area generally has a FIFO (ring buffer) structure, and a plurality of transmission descriptors 20 are accumulated in the descriptor storage area in the order of writing.

一方、MAC132は、ディスクリプタ記憶領域に対するメモリアクセス(読み出し(Read)要求)によって、ディスクリプタ記憶領域の先頭に格納された、OWNビット“1”を有する送信ディスクリプタ20を読み出し、送信ディスクリプタ20の内容に従った送信処理を行う。送信処理に使用された送信ディスクリプタ20は、MAC132のメモリアクセス(書き込み(Write)要求)によってディスクリプタ記憶領域に書き込まれる
。そして、ドライバ15(CPU11)からのメモリアクセス(読み出し(Read)要求)によって、ディスクリプタ記憶領域から送信ディスクリプタ20が回収される。
On the other hand, the MAC 132 reads the transmission descriptor 20 having the OWN bit “1” stored at the head of the descriptor storage area by a memory access (read request) to the descriptor storage area, and follows the contents of the transmission descriptor 20. Perform the transmission process. The transmission descriptor 20 used for the transmission process is written into the descriptor storage area by the MAC 132 memory access (write request). Then, the transmission descriptor 20 is collected from the descriptor storage area by a memory access (read request) from the driver 15 (CPU 11).

パケットシェーピング装置130は、上述した送信ディスクリプタ20のディスクリプタ記憶領域として機能する。すなわち、ドライバ15(CPU11)及びMAC132から見て、パケットシェーピング装置130は、上述したディスクリプタ記憶領域のように見えるように動作する。   The packet shaping device 130 functions as a descriptor storage area of the transmission descriptor 20 described above. That is, when viewed from the driver 15 (CPU 11) and the MAC 132, the packet shaping device 130 operates to look like the descriptor storage area described above.

図4は、パケットシェーピング装置130の構成例を示す。パケットシェーピング装置130は、電気・電子回路,IC,LSI,ASICの組合せで実現することができる。
もっとも、パケットシェーピング装置130は、ハードウェアFIFOを内蔵したFPGAで実現するのが、製造容易性、製造コストの観点から好ましい。
FIG. 4 shows a configuration example of the packet shaping device 130. The packet shaping device 130 can be realized by a combination of an electric / electronic circuit, IC, LSI, and ASIC.
However, it is preferable that the packet shaping device 130 is realized by an FPGA with a built-in hardware FIFO from the viewpoint of manufacturing ease and manufacturing cost.

図4において、パケットシェーピング装置130は、ドライバ側のインタフェース回路31と、出力FIFO32と、回収FIFO33と、MAC側のインタフェース回路34と、を備えている。インタフェース回路34は、ディスクリプタレジスタ35と、出力帯域の記憶領域である出力帯域レジスタ36と、次回出力時刻の記憶領域である次回出力時刻レジスタ37と、現在時刻の記憶領域である現在時刻レジスタ38とを有している。   4, the packet shaping device 130 includes a driver-side interface circuit 31, an output FIFO 32, a recovery FIFO 33, and a MAC-side interface circuit 34. The interface circuit 34 includes a descriptor register 35, an output band register 36 that is a storage area for the output band, a next output time register 37 that is a storage area for the next output time, and a current time register 38 that is a storage area for the current time. have.

ドライバ側のインタフェース回路31は、ドライバ15(CPU11)とバス10を介して接続される。バス10は、アドレスバス,データバス,制御バス(制御線)を含んでおり、インタフェース回路31は、アドレスバスからのアドレス情報、データバスからのデータ,制御バスからの制御信号を受け取る。制御信号は、少なくとも読み出し(Read)要求及び書き込み(Write)要求を含む。   The driver side interface circuit 31 is connected to the driver 15 (CPU 11) via the bus 10. The bus 10 includes an address bus, a data bus, and a control bus (control line), and the interface circuit 31 receives address information from the address bus, data from the data bus, and control signals from the control bus. The control signal includes at least a read request and a write request.

出力FIFO32及び回収FIFO33は、ディスクリプタ記憶領域として機能する。出力FIFO32及び回収FIFO33は、データバスを介してやりとりするデータのサイズに応じたサイズでメモリマップされ、通常のメモリアクセスと同様に、ドライバ15(CPU11)及びMAC132がアクセスすることができる。すなわち、ドライバ15に対し、送信ディスクリプタの書き込み時には出力FIFO32のアドレスを指定し、送信ディスクリプタの回収時には回収FIFO33のアドレスを指定するような設定が予め施される。出力FIFO32はバッファの一例である。   The output FIFO 32 and the recovery FIFO 33 function as a descriptor storage area. The output FIFO 32 and the recovery FIFO 33 are memory-mapped with a size corresponding to the size of data exchanged via the data bus, and can be accessed by the driver 15 (CPU 11) and the MAC 132 in the same way as normal memory access. That is, the driver 15 is set in advance so that the address of the output FIFO 32 is designated when the transmission descriptor is written, and the address of the recovery FIFO 33 is designated when the transmission descriptor is collected. The output FIFO 32 is an example of a buffer.

出力FIFO32には、ドライバ15(CPU11)側から供給される送信ディスクリプタ20を到着順で格納する。回収FIFO33は、MAC132による送信処理が終了したパケットに係る送信ディスクリプタ20(以下、送信済みの送信ディスクリプタ20を“送信済みディスクリプタ20A”と表記する)が格納される。   In the output FIFO 32, the transmission descriptor 20 supplied from the driver 15 (CPU 11) side is stored in the order of arrival. The collection FIFO 33 stores a transmission descriptor 20 related to a packet for which transmission processing by the MAC 132 has been completed (hereinafter, the transmitted transmission descriptor 20 is referred to as “transmitted descriptor 20A”).

出力FIFO32、回収FIFO33の各データ幅は、送信ディスクリプタ20のサイズと同一にするのが好ましい。また、出力FIFO32及び回収FIFO33の双方の深さ(FIFO長)は同一に設定され、FIFO32及び33の深さがドライバ15のディスクリプタバッファ長パラメータに設定される構成を採用することができる。ドライバ15(CPU11)は、ディスクリプタバッファ長パラメータに従って、FIFOがオーバーフローしないように、NIC13へ送る送信ディスクリプタ20の数を制限する。従って、出力FIFO32及び回収FIFO33に蓄積される送信ディスクリプタ20及び送信済みディスクリプタ20Aの総数は、出力FIFO32又は回収FIFO33の長さ以下となる。これによって、一方のFIFOがフルになることが抑えられる。   Each data width of the output FIFO 32 and the recovery FIFO 33 is preferably the same as the size of the transmission descriptor 20. Further, the depth (FIFO length) of both the output FIFO 32 and the recovery FIFO 33 can be set to be the same, and the depth of the FIFOs 32 and 33 can be set as the descriptor buffer length parameter of the driver 15. The driver 15 (CPU 11) limits the number of transmission descriptors 20 to be sent to the NIC 13 according to the descriptor buffer length parameter so that the FIFO does not overflow. Accordingly, the total number of transmission descriptors 20 and transmitted descriptors 20A accumulated in the output FIFO 32 and the recovery FIFO 33 is equal to or less than the length of the output FIFO 32 or the recovery FIFO 33. This prevents one of the FIFOs from becoming full.

インタフェース回路31は、ドライバ15(CPU11)からの書き込み(Write)要
求に対して、ドライバ15(CPU11)側から受け取る送信ディスクリプタ20を出力FIFO32に入力する。これに対し、インタフェース回路31は、ドライバ15(CPU11)からの読み出し(Read)要求に対して、回収FIFO33の先頭に格納された送信済みディスクリプタ20Aの内容を、OWNビットを除いて出力する。このとき、インタフェース回路31は、独自に作成したOWNビットを、本来のOWNビットの代わりに出力する。
In response to a write request from the driver 15 (CPU 11), the interface circuit 31 inputs the transmission descriptor 20 received from the driver 15 (CPU 11) side to the output FIFO 32. In response to this, the interface circuit 31 outputs the content of the transmitted descriptor 20A stored at the head of the recovery FIFO 33, excluding the OWN bit, in response to a read request from the driver 15 (CPU 11). At this time, the interface circuit 31 outputs the uniquely created OWN bit instead of the original OWN bit.

MAC側のインタフェース回路34は、MAC132との間で、アドレス,データ,制御信号(Read命令、Write)命令のやりとりを行う。インタフェース回路34に含まれる
ディスクリプタレジスタ35は、出力FIFO32の先頭に格納された送信ディスクリプタ20を記憶する。但し、ディスクリプタレジスタ35への送信ディスクリプタの書き込
みに際し、この時点で送信ディスクリプタ20に設定されているOWNビット24の値は、ディスクリプタレジスタ35に反映(コピー)されない。換言すれば、ディスクリプタレジスタ35への書き込み時点におけるOWNビット24の値は“0”に設定される。
The interface circuit 34 on the MAC side exchanges address, data, and control signal (Read command, Write) command with the MAC 132. The descriptor register 35 included in the interface circuit 34 stores the transmission descriptor 20 stored at the head of the output FIFO 32. However, when the transmission descriptor is written into the descriptor register 35, the value of the OWN bit 24 set in the transmission descriptor 20 at this time is not reflected (copied) in the descriptor register 35. In other words, the value of the OWN bit 24 at the time of writing to the descriptor register 35 is set to “0”.

ディスクリプタレジスタ35,出力帯域レジスタ36,次回出力時刻レジスタ37,現在時刻レジスタ38は、レジスタ回路、或いは、メモリを用いて形成される。出力帯域レジスタ36は、パケットの送信間隔を規定する情報である、出力帯域の情報を記憶する。出力帯域の情報は、外部からユーザ又はオペレータによって所望の値が書き込まれる。或いは、予め設定された出力帯域が書き込まれたメモリがセットされる。出力帯域は、LAN2の通信速度に応じて決定される。LAN2は、パケットが送出される通信媒体の一例である。   The descriptor register 35, the output bandwidth register 36, the next output time register 37, and the current time register 38 are formed using a register circuit or a memory. The output bandwidth register 36 stores information on the output bandwidth, which is information defining the packet transmission interval. As the output band information, a desired value is written from the outside by a user or an operator. Alternatively, a memory in which a preset output band is written is set. The output band is determined according to the communication speed of LAN2. LAN 2 is an example of a communication medium to which a packet is transmitted.

現在時刻レジスタ38は、例えば、バス10から計算機システム1のクロック供給を受けて、クロックを用いた現在時刻が格納される。もっとも、現在時刻レジスタ38を構成する記憶領域の代わりに、現在時刻を計時する時計が配置されても良い。また、現在時刻レジスタ38はカウンタ回路を用いて形成することもできる。   For example, the current time register 38 receives the clock supply of the computer system 1 from the bus 10 and stores the current time using the clock. Of course, instead of the storage area constituting the current time register 38, a clock for counting the current time may be arranged. The current time register 38 can also be formed using a counter circuit.

次回出力時刻レジスタ37は、次回出力時刻、即ちディスクリプタレジスタ35に格納された送信ディスクリプタ20のアクセス権をMAC132に渡すことを許可する(MAC132に送信処理を許可する)時刻が格納される、次回出力時刻は、出力帯域レジスタ36に格納された出力帯域及びパケットサイズ(予め設定されている)から求められるパケットの送信間隔と、現在時刻レジスタ38に格納された現在時刻とに基づき算出される。次回出力時刻は、所定の出力時刻の一例である。出力帯域の代わりに、パケットの送出間隔を示す情報が格納され、送出間隔に従って次回出力時刻が算出される構成を採用しても良い。   The next output time register 37 stores the next output time, that is, the time when the access right of the transmission descriptor 20 stored in the descriptor register 35 is permitted to be passed to the MAC 132 (the MAC 132 is permitted to perform transmission processing). The time is calculated based on the packet transmission interval obtained from the output bandwidth and the packet size (preset) stored in the output bandwidth register 36 and the current time stored in the current time register 38. The next output time is an example of a predetermined output time. Instead of the output bandwidth, information indicating the packet transmission interval may be stored, and the next output time may be calculated according to the transmission interval.

インタフェース回路34は、現在時刻が次回出力時刻となった場合に、ディスクリプタレジスタ35に格納された送信ディスクリプタ20のOWNビットを“1”に設定する。これによって、MAC132は、ディスクリプタレジスタ35に格納された送信ディスクリプタ20に係るパケット送信処理が許可された状態となる。   The interface circuit 34 sets the OWN bit of the transmission descriptor 20 stored in the descriptor register 35 to “1” when the current time becomes the next output time. As a result, the MAC 132 is permitted to perform packet transmission processing related to the transmission descriptor 20 stored in the descriptor register 35.

インタフェース回路34は、MAC132からの読み出し(Read)要求に対して、ディスクリプタレジスタ35に格納された送信ディスクリプタ20の内容をMAC132に供給する。一方、インタフェース回路34は、MAC132からの書き込み(Write)要求
に対して、MAC132から供給された送信済みディスクリプタ20Aの内容をディスクリプタレジスタ35に書き込む。送信済みディスクリプタ20Aは、回収FIFO33に書き込まれる。
In response to a read request from the MAC 132, the interface circuit 34 supplies the content of the transmission descriptor 20 stored in the descriptor register 35 to the MAC 132. On the other hand, in response to a write request from the MAC 132, the interface circuit 34 writes the contents of the transmitted descriptor 20A supplied from the MAC 132 into the descriptor register 35. The transmitted descriptor 20A is written in the recovery FIFO 33.

<<パケットシェーピング装置の動作例>>
次に、図4に示したパケットシェーピング装置の動作例について説明する。図5Aは、ドライバ15(CPU11)からのWriteアクセス時におけるインタフェース回路31の
動作を示すフローチャートである。図5Bは、ドライバ15(CPU11)からのReadアクセス時におけるインタフェース回路31の動作を示すフローチャートである。
<< Operation example of packet shaping device >>
Next, an operation example of the packet shaping device shown in FIG. 4 will be described. FIG. 5A is a flowchart showing the operation of the interface circuit 31 at the time of Write access from the driver 15 (CPU 11). FIG. 5B is a flowchart showing the operation of the interface circuit 31 at the time of Read access from the driver 15 (CPU 11).

図5Aにおけるステップ(以下“S”)1では、インタフェース回路31は、ドライバ15(CPU11)から、Write要求と、送信ディスクリプタ20と、送信ディスクリプ
タ20の書き込み先アドレスとを、バス10(図1)を介して受け取る。S2では、インタフェース回路31は、アドレスに従って、送信ディスクリプタ20を出力FIFO32に入力する(書き込む)。
In step (hereinafter “S”) 1 in FIG. 5A, the interface circuit 31 sends a write request, a transmission descriptor 20 and a write destination address of the transmission descriptor 20 from the driver 15 (CPU 11) to the bus 10 (FIG. 1). Receive through. In S2, the interface circuit 31 inputs (writes) the transmission descriptor 20 to the output FIFO 32 according to the address.

図5BにおけるS01では、インタフェース回路31は、ドライバ15(CPU11)から、Read要求と、読み出しアドレスとを、バス10(図1)を介して受け取る。S2では、インタフェース回路31は、回収FIFO33が空(empty)か否かを判定する。回
収FIFO33が空であれば(S2のYes)、インタフェース回路31は、OWNビットの値を“1”に設定し、残りの格納領域21〜23及び25については“Don't care”で出力する(S3)。この場合、ドライバ15(CPU11)は、特に処理を行わない。
In S01 in FIG. 5B, the interface circuit 31 receives a read request and a read address from the driver 15 (CPU 11) via the bus 10 (FIG. 1). In S2, the interface circuit 31 determines whether or not the recovery FIFO 33 is empty. If the recovery FIFO 33 is empty (Yes in S2), the interface circuit 31 sets the value of the OWN bit to “1”, and outputs the remaining storage areas 21 to 23 and 25 with “Don't care”. (S3). In this case, the driver 15 (CPU 11) does not perform any particular processing.

これに対し、回収FIFO33が空でない場合には(S2のNo)、インタフェース回路31は、回収FIFO33の先頭に格納された送信済みディスクリプタ20Aの内容を読み出し、OWNビットの値を“0”に設定して出力する。これによって、送信済みディスクリプタ20Aがドライバ15(CPU11)によって回収される。   On the other hand, when the collection FIFO 33 is not empty (No in S2), the interface circuit 31 reads the contents of the transmitted descriptor 20A stored at the head of the collection FIFO 33 and sets the value of the OWN bit to “0”. And output. Thus, the transmitted descriptor 20A is collected by the driver 15 (CPU 11).

図6Aは、インタフェース回路34の動作を示すフローチャートである。図6Aに示す処理は、インタフェース回路34は、現在時刻レジスタ38の現在時刻を監視し(S11)、現在時刻が次回出力時刻以降となったか否かを判定する(S12)。   FIG. 6A is a flowchart showing the operation of the interface circuit 34. In the process shown in FIG. 6A, the interface circuit 34 monitors the current time of the current time register 38 (S11), and determines whether or not the current time is after the next output time (S12).

現在時刻が次回出力時刻以降となっている場合には(S12のYes)、MAC132に対する割り込みを入れて、MAC132による送信処理(MAC132のディスクリプタアクセス)を開始させる(S13)。なお、初期状態の次回出力時刻(次回出力時刻の初期値)として、適宜の値を設定することができる。もっとも、例えば、計算機システム1の起動時の時刻を設定しておくのが好ましい。   If the current time is after the next output time (Yes in S12), an interrupt to the MAC 132 is entered and transmission processing by the MAC 132 (descriptor access of the MAC 132) is started (S13). An appropriate value can be set as the next output time in the initial state (initial value of the next output time). However, for example, it is preferable to set a time when the computer system 1 is started.

図6Bは、MAC132からのReadアクセス時におけるインタフェース回路34の動作を示すフローチャートである。図6Bの処理は、S13の割り込み指示に応じて開始される。さらに、図6Bの処理は、周期的に開始される。   FIG. 6B is a flowchart showing the operation of the interface circuit 34 at the time of Read access from the MAC 132. The process in FIG. 6B is started in response to the interrupt instruction in S13. Furthermore, the process of FIG. 6B is periodically started.

図6BにおけるS21では、インタフェース回路34は、MAC132から、Read要求と、読み出しアドレスとを受け取る。   In S <b> 21 in FIG. 6B, the interface circuit 34 receives a read request and a read address from the MAC 132.

S22では、インタフェース回路34は、出力FIFO32が空(empty)か否かを判
定する。出力FIFO32が空であれば(S22のYes)、インタフェース回路34は、OWNビットが“0”であり、残りの格納領域が“Don't care”に設定された送信ディスクリプタ20をMAC132に供給する。この場合、MAC132は特に処理を行わない。
In S22, the interface circuit 34 determines whether or not the output FIFO 32 is empty. If the output FIFO 32 is empty (Yes in S22), the interface circuit 34 supplies the MAC 132 with the transmission descriptor 20 in which the OWN bit is “0” and the remaining storage area is set to “Don't care”. . In this case, the MAC 132 does not perform any particular processing.

これに対し、出力FIFO32が空でなければ(S22のNo)、インタフェース回路34は、現在時刻が次回出力時刻より前であるかを判定する(S23)。このとき、現在時刻が次回出力時刻より前であれば(S23のYes)、インタフェース回路34は、S23と同様の処理を行う(S25)。この場合にも、MAC132は、特に処理を行わない。   On the other hand, if the output FIFO 32 is not empty (No in S22), the interface circuit 34 determines whether the current time is before the next output time (S23). At this time, if the current time is before the next output time (Yes in S23), the interface circuit 34 performs the same processing as S23 (S25). Also in this case, the MAC 132 does not perform any particular processing.

これに対し、現在時刻が次回出力時刻以降であれば(S23のNo)、インタフェース回路34は、ディスクリプタレジスタ35に格納された送信ディスクリプタ20におけるOWNビットの値を“1”に設定し、MAC132に供給する(S26)。これによって、OWNビット“1”の送信ディスクリプタ20をMAC132が受け取り、MAC132は、送信ディスクリプタ20の内容に応じた送信処理を実行する。   On the other hand, if the current time is after the next output time (No in S23), the interface circuit 34 sets the value of the OWN bit in the transmission descriptor 20 stored in the descriptor register 35 to “1” and stores it in the MAC 132. Supply (S26). As a result, the MAC 132 receives the transmission descriptor 20 with the OWN bit “1”, and the MAC 132 executes transmission processing according to the content of the transmission descriptor 20.

図6Cは、MAC132からのWriteアクセス時におけるインタフェース回路34の動
作を示すフローチャートである。S31にて、インタフェース回路34は、MAC132から送信済みディスクリプタ20A,書き込み先アドレス,及びWrite要求を受け取る。
送信済みディスクリプタ20Aは、ディスクリプタレジスタ35に格納される。
FIG. 6C is a flowchart showing the operation of the interface circuit 34 at the time of write access from the MAC 132. In S31, the interface circuit 34 receives the transmitted descriptor 20A, the write destination address, and the write request from the MAC 132.
The transmitted descriptor 20A is stored in the descriptor register 35.

S32では、インタフェース回路34は、ディスクリプタレジスタ35に格納された送信済みディスクリプタ20AのOWNビットが“0”に設定されているかを確認する。ここに、OWNビットの“0”の設定は、MAC132とインタフェース回路34の一方が行うことができる。   In S32, the interface circuit 34 checks whether the OWN bit of the transmitted descriptor 20A stored in the descriptor register 35 is set to “0”. Here, one of the MAC 132 and the interface circuit 34 can set the OWN bit “0”.

OWNビット“0”が設定されている場合には(S32のYes)、インタフェース回路34は、ディスクリプタレジスタ35の記憶内容を回収FIFO33に入力する(S33)。なお、この時点では、ディスクリプタレジスタ35の記憶内容の変化はない。   If the OWN bit “0” is set (Yes in S32), the interface circuit 34 inputs the stored contents of the descriptor register 35 to the recovery FIFO 33 (S33). At this time, there is no change in the contents stored in the descriptor register 35.

S34では、インタフェース回路34は、次回出力時刻の算出を行う。例えば、インタフェース回路34は、以下の式に基づき、次回出力時刻を算出することができる。   In S34, the interface circuit 34 calculates the next output time. For example, the interface circuit 34 can calculate the next output time based on the following equation.

<式> 次回出力時刻=(パケットサイズ/出力帯域)+現在時刻
なお、上記式におけるパケットサイズは、LAN2に応じた最大パケットサイズ(NiC13の規格に応じた最大パケットサイズ)を適用しても良く、或いは、出力FIFO32の先頭に格納された送信ディスクリプタ20におけるパケットサイズを適用しても良い。
<Expression> Next output time = (packet size / output band) + current time Note that the packet size in the above expression may be the maximum packet size according to LAN2 (maximum packet size according to the NiC13 standard). Alternatively, the packet size in the transmission descriptor 20 stored at the head of the output FIFO 32 may be applied.

S35では、出力FIFO32の先頭に格納された送信ディスクリプタ20の内容をディスクリプタレジスタ35に設定する(送信ディスクリプタ20を移動)。但し、出力FIFO32において設定されていたOWNビットの値は、ディスクリプタレジスタ35にて反映されない(“0”又は“1”以外の値に設定される)。   In S35, the content of the transmission descriptor 20 stored at the head of the output FIFO 32 is set in the descriptor register 35 (the transmission descriptor 20 is moved). However, the value of the OWN bit set in the output FIFO 32 is not reflected in the descriptor register 35 (set to a value other than “0” or “1”).

<実施形態の作用効果>
実施形態によるパケットシェーピング装置130によれば、現在時刻が次回出力時刻以降となるまで、MAC132によるディスクリプタレジスタ35に格納された送信ディスクリプタ20のアクセスが許可されない。したがって、MAC132によるパケットの送信処理の間隔(即ち、パケットの送出間隔)を、LAN2の通信速度(パケットが送出される通信媒体の通信速度)に応じた所望の間隔に設定することができる。これによって、マイクロバーストの発生が抑えられ、通信装置3のバッファがオーバーフローし、パケットロストが抑えられる。
<Effects of Embodiment>
According to the packet shaping device 130 according to the embodiment, access of the transmission descriptor 20 stored in the descriptor register 35 by the MAC 132 is not permitted until the current time is after the next output time. Therefore, the interval of packet transmission processing by the MAC 132 (that is, the packet transmission interval) can be set to a desired interval according to the communication speed of the LAN 2 (communication speed of the communication medium to which the packet is transmitted). As a result, the occurrence of microburst is suppressed, the buffer of the communication device 3 overflows, and packet loss is suppressed.

また、実施形態によれば、送信ディスクリプタ20のデータ構造には改変を加えない。このため、MACを含むネットワークデバイスとして、送信ディスクリプタ対応の既存のネットワークデバイスLSIを適用することができる。従って、新規なネットワークデバイスLSIを開発する場合に比べて、開発及び製造コストを抑えることができる。   Further, according to the embodiment, the data structure of the transmission descriptor 20 is not modified. For this reason, the existing network device LSI corresponding to the transmission descriptor can be applied as the network device including the MAC. Therefore, development and manufacturing costs can be reduced compared to the case where a new network device LSI is developed.

また、パケットシェーピング装置130は、FPGAを用いて実装することができる。このため、パケットシェーピング装置130の製造コストを抑えることができる。さらに、ソフトウェアに関しても、ドライバ15に対する部分的な改変で、パケットシェーピング装置の実装が可能となる。ドライバ15の改変は、送信ディスクリプタ20の書き込み先として、計算機システム1のメモリ12ではなく出力FIFO32を指定することに限定されている。このため、オリジナルのドライバが更新されても、パケットシェーピング装置130対応のドライバ15を短時間で作成することができる。従って、例えば、セキュリティ問題によりドライバが更新された場合に、更新されたオリジナルのドライバにわずかな改変を加えることで、セキュリティ問題が解決した新たなドライバを短時間で供給することが可能となる。   Further, the packet shaping device 130 can be implemented using FPGA. For this reason, the manufacturing cost of the packet shaping apparatus 130 can be held down. Further, with regard to software, a packet shaping device can be implemented by partial modification to the driver 15. The modification of the driver 15 is limited to designating the output FIFO 32 instead of the memory 12 of the computer system 1 as the write destination of the transmission descriptor 20. Therefore, even if the original driver is updated, the driver 15 corresponding to the packet shaping device 130 can be created in a short time. Therefore, for example, when a driver is updated due to a security problem, a new driver in which the security problem is solved can be supplied in a short time by making a slight modification to the updated original driver.

さらに、ソフトウェアの改変は、OSのドライバ部分に限られるため、改変によってOS本体のベンダによるサポートが無効にならない。このことは、顧客のOSサポートをOSのベンダに委ねることができることを意味する。これによって、OSのサポートに係るコストを削減することができる。   Furthermore, since the modification of the software is limited to the driver part of the OS, the modification does not invalidate the support by the vendor of the OS body. This means that the customer's OS support can be delegated to the OS vendor. As a result, the cost associated with OS support can be reduced.

<変形例>
なお、本実施形態では、パケットシェーピング装置130がNIC13に実装された例について示したが、計算機システム1のメイン基板(マザーボード)に実装されても良い。要は、ドライバ15(CPU11)からの送信ディスクリプタ20(OWNビット“1”)をMACに供給するタイミングを、通信媒体の通信速度(出力帯域)に応じて調整できるようになっていれば良い。
<Modification>
In the present embodiment, an example in which the packet shaping device 130 is mounted on the NIC 13 has been described. However, the packet shaping device 130 may be mounted on the main board (mother board) of the computer system 1. In short, it is only necessary to be able to adjust the timing at which the transmission descriptor 20 (OWN bit “1”) from the driver 15 (CPU 11) is supplied to the MAC according to the communication speed (output band) of the communication medium.

また、パケットシェーピング装置130がプロセッサ(制御装置)及びメモリを含み、上述した各フローチャートに示した処理が、プロセッサのプログラム実行によるソフトウェア処理によって実現されるようにしても良い。   Further, the packet shaping device 130 may include a processor (control device) and a memory, and the processing shown in each flowchart described above may be realized by software processing by executing a program of the processor.

<その他>
上述した実施形態は、以下の付記を開示する。付記は適宜組み合わせることができる。
<Others>
The embodiment described above discloses the following supplementary notes. Appendices can be combined as appropriate.

(付記1)
パケットの情報と、パケットの送信処理の許可又は禁止を示す情報とを含むディスクリプタを一時的に格納するバッファと、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記送信処理の許可を示す情報を設定するタイミングを調整する調整回路とを含み、
前記ディスクリプタを生成する第1の回路と、前記送信処理の許可を示す情報が設定されたディスクリプタに基づく送信処理を行う第2の回路との間に配置される、
パケットシェーピング装置。
(Appendix 1)
A buffer for temporarily storing a descriptor including packet information and information indicating permission or prohibition of packet transmission processing;
An adjustment circuit that adjusts a timing for setting information indicating permission of the transmission processing for the descriptor stored in the buffer according to a communication speed of a communication medium to which a packet is transmitted;
Arranged between a first circuit that generates the descriptor and a second circuit that performs transmission processing based on the descriptor in which information indicating permission of the transmission processing is set;
Packet shaping device.

(付記2)
前記調整回路は、現在時刻が所定の出力時刻以降になった場合に、前記ディスクリプタに前記送信処理の許可を示す情報を設定する
付記1に記載のパケットシェーピング装置。
(Appendix 2)
The packet shaping device according to appendix 1, wherein the adjustment circuit sets information indicating permission of the transmission processing in the descriptor when a current time is after a predetermined output time.

(付記3)
前記調整回路は、現在時刻と、パケットサイズと、出力帯域とに基づいて次回出力時刻を算出する
付記2に記載のパケットシェーピング装置。
(Appendix 3)
The packet shaping device according to appendix 2, wherein the adjustment circuit calculates a next output time based on a current time, a packet size, and an output band.

(付記4)
第1の回路で生成された、パケットの情報と、パケットの送信処理の許可又は禁止を示す情報とを含むディスクリプタを一時的に格納するバッファと、
前記バッファに格納された前記ディスクリプタに対して、前記送信処理の許可を示す情報を設定するタイミングを調整する調整回路と、
前記送信処理の許可を示す情報が設定されたディスクリプタに基づく送信処理を行う第2の回路と
を含むネットワークインタフェースカード。
(Appendix 4)
A buffer that temporarily stores a descriptor generated by the first circuit and including a packet information and information indicating permission or prohibition of packet transmission processing;
An adjustment circuit that adjusts the timing for setting information indicating permission of the transmission processing for the descriptor stored in the buffer;
A network interface card including a second circuit that performs transmission processing based on a descriptor in which information indicating permission of the transmission processing is set.

(付記5)
第1の回路で生成された、パケットの情報と、パケットの送信処理の許可又は禁止を示
す情報とを含むディスクリプタを生成する第1の回路と、
前記第1の回路で生成された、パケットの情報と、パケットの送信処理の許可又は禁止を示す情報とを含むディスクリプタを一時的に格納するバッファ,及び前記バッファに格納された前記ディスクリプタに対して、前記送信処理の許可を示す情報を設定するタイミングを調整する調整回路を含むパケットシェーピング装置と、
前記送信処理の許可を示す情報が設定されたディスクリプタに基づく送信処理を行う第2の回路と
を含む情報処理装置。
(Appendix 5)
A first circuit that generates a descriptor including packet information and information indicating permission or prohibition of packet transmission processing generated by the first circuit;
A buffer that temporarily stores a descriptor including packet information and information indicating permission or prohibition of packet transmission processing generated by the first circuit, and the descriptor stored in the buffer A packet shaping device including an adjustment circuit that adjusts timing for setting information indicating permission of the transmission processing;
And a second circuit that performs transmission processing based on a descriptor in which information indicating permission of the transmission processing is set.

(付記6)
パケットの情報と、パケットの送信処理の許可又は禁止を示す情報とを含むディスクリプタを発行する第1の回路と、前記送信処理の許可を示す情報を含むディスクリプタに基づいてパケットの送信処理を行う第2の回路との間に配置されるパケットシェーピング装置において、
前記第1の回路で生成された前記ディスクリプタをバッファに格納し、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記送信処理の許可を示す情報を設定するタイミングを調整する
ことを含むパケット送信間隔調整方法。
(Appendix 6)
A first circuit that issues a descriptor including packet information and information indicating permission or prohibition of packet transmission processing; and a first circuit that performs packet transmission processing based on the descriptor including information indicating permission of the transmission processing. In the packet shaping device arranged between the two circuits,
Storing the descriptor generated by the first circuit in a buffer;
A packet transmission interval adjustment method including adjusting a timing for setting information indicating permission of the transmission processing for the descriptor stored in the buffer according to a communication speed of a communication medium to which a packet is transmitted.

1・・・計算機システム(情報処理装置)
2・・・LAN(通信媒体)
10・・・バス
11・・・CPU(第1の回路)
12・・・メモリ
13・・・ネットワークインタフェースカード(NIC)
14・・・オペレーティングシステム
15・・・デバイスドライバ
31,34・・・インタフェース回路
32・・・出力FIFO
33・・・回収FIFO
35・・・ディスクリプタレジスタ
130・・・パケットシェーピング装置
132・・・メディアアクセスコントローラ(MAC)(第2の回路)
1. Computer system (information processing device)
2 ... LAN (communication medium)
10 ... Bus 11 ... CPU (first circuit)
12 ... Memory 13 ... Network interface card (NIC)
14 ... Operating system 15 ... Device drivers 31, 34 ... Interface circuit 32 ... Output FIFO
33 ... Recovery FIFO
35 ... Descriptor register 130 ... Packet shaping device 132 ... Media access controller (MAC) (second circuit)

Claims (2)

パケットの情報と、パケットの送信処理の許可又は禁止を示す情報の格納領域とを含むディスクリプタを一時的に格納するバッファと、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記格納領域に送信処理の許可を示す情報を設定するタイミングを調整する調整回路とを含み、
前記ディスクリプタを生成する第1の回路と、前記送信処理の許可を示す情報が設定されたディスクリプタに基づく送信処理を行う第2の回路との間に配置される、
パケットシェーピング装置。
A buffer for temporarily storing a descriptor including packet information and a storage area for information indicating permission or prohibition of packet transmission processing;
An adjustment circuit that adjusts timing for setting information indicating permission of transmission processing in the storage area with respect to the descriptor stored in the buffer according to a communication speed of a communication medium to which a packet is transmitted;
Arranged between a first circuit that generates the descriptor and a second circuit that performs transmission processing based on the descriptor in which information indicating permission of the transmission processing is set;
Packet shaping device.
パケットの情報と、パケットの送信処理の許可又は禁止を示す情報の格納領域とを含むディスクリプタを発行する第1の回路と、前記送信処理の許可を示す情報を含むディスクリプタに基づいてパケットの送信処理を行う第2の回路との間に配置されるパケットシェーピング装置において、
前記第1の回路で生成された前記ディスクリプタをバッファに格納し、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記格納領域に送信処理の許可を示す情報を設定するタイミングを調整する
ことを含むパケット送信間隔調整方法。
A first circuit that issues a descriptor including packet information and a storage area for information indicating permission or prohibition of packet transmission processing, and packet transmission processing based on the descriptor including information indicating permission of the transmission processing In the packet shaping device arranged between the second circuit for performing
Storing the descriptor generated by the first circuit in a buffer;
A packet transmission interval adjustment method including adjusting a timing for setting information indicating permission of transmission processing in the storage area for the descriptor stored in the buffer according to a communication speed of a communication medium to which a packet is transmitted.
JP2011278187A 2011-12-20 2011-12-20 Packet shaping device Active JP5821608B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011278187A JP5821608B2 (en) 2011-12-20 2011-12-20 Packet shaping device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011278187A JP5821608B2 (en) 2011-12-20 2011-12-20 Packet shaping device

Publications (2)

Publication Number Publication Date
JP2013131817A JP2013131817A (en) 2013-07-04
JP5821608B2 true JP5821608B2 (en) 2015-11-24

Family

ID=48909082

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011278187A Active JP5821608B2 (en) 2011-12-20 2011-12-20 Packet shaping device

Country Status (1)

Country Link
JP (1) JP5821608B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015087404A1 (en) * 2013-12-11 2015-06-18 三菱電機株式会社 Information processing apparatus, information processing method, and program

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3018975B2 (en) * 1995-12-28 2000-03-13 株式会社日立製作所 ATM protocol processing controller
JP2965070B2 (en) * 1997-04-23 1999-10-18 日本電気株式会社 ATM device and port shaping method
JP3753622B2 (en) * 2001-03-21 2006-03-08 株式会社リコー Packet transceiver
JP2005184440A (en) * 2003-12-19 2005-07-07 Matsushita Electric Ind Co Ltd Stream packet transmitter, stream packet transmission control method, program and recording medium

Also Published As

Publication number Publication date
JP2013131817A (en) 2013-07-04

Similar Documents

Publication Publication Date Title
US7653773B2 (en) Dynamically balancing bus bandwidth
JP5103371B2 (en) Method and apparatus for improving the performance of USB mass storage devices in the presence of long transmission delays
JP4909384B2 (en) Managing protocol stack timing
US20140068134A1 (en) Data transmission apparatus, system, and method
US7984218B2 (en) Processor, electronic apparatus, interruption control method and interruption control program
CN103460199A (en) Traffic class based adaptive interrupt moderation
Tu et al. Marlin: A memory-based rack area network
US11275829B2 (en) Mechanism for throttling untrusted interconnect agents
CN110688333A (en) PCIE (peripheral component interface express) -based DMA (direct memory Access) data transmission system and method
EP2778935B1 (en) Efficient Input/Output (I/O) operations
US8199648B2 (en) Flow control in a variable latency system
KR101844812B1 (en) Emi mitigation on high-speed lanes using false stall
EP2685385B1 (en) Network system
EP2620876B1 (en) Method and apparatus for data processing, pci-e bus system and server
JP5821608B2 (en) Packet shaping device
US10769092B2 (en) Apparatus and method for reducing latency of input/output transactions in an information handling system using no-response commands
JP2017184175A (en) Information generation program, information generation method, and information generation device
WO2017012459A1 (en) System bus device response timeout processing method and apparatus, and storage medium
JP2022121525A (en) Processing apparatus, processing method and program
US20150212960A1 (en) Ss hub, usb 3.0 hub, and information processing instrument
WO2019124259A1 (en) Configuration management device, configuration management system, configuration management method, and configuration management program
CN113711195A (en) Transmission device, information processing device, and data transmission method
KR20140033562A (en) Data transmitting apparatus and method for transmitting data
CN113890783B (en) Data transmitting and receiving system and method, electronic equipment and storage medium
US11847089B2 (en) Electronic device and method for sharing data lanes of a network interface device between two or more computing devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150717

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150921

R150 Certificate of patent or registration of utility model

Ref document number: 5821608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150