JP5821608B2 - Packet shaping device - Google Patents
Packet shaping device Download PDFInfo
- 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
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.
マイクロバーストの発生は、計算機システムのパケット送信処理に起因する。現在の計算機システムでは、計算機システムで実行されるオペレーティングシステム(以下“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.
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。 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
計算機システム1は、例えば、パーソナルコンピュータ(PC),ワークステーション(WS),サーバマシン、PDU(Personal Digital Assistant)、スマートフォンのような、汎用又は専用のコンピュータ(情報処理装置)である。
The
計算機システム1は、バス10に接続されたCPU11,メモリ,ネットワークインタフェースカード(NIC)13を備えており、NIC13は、通信回線を介してLAN2と接続されている。バス10は、システムバス,メモリバス,入出力バスを含む。バス10として、PCI(Peripheral Component Interconnect)バスを例示できる。
The
バス10は、入力装置や出力装置のような周辺機器(周辺デバイス)を接続することができる。入力装置は、例えば、キーボードやマウスのようなポインティングデバイスである。出力装置は、ディスプレイ装置やプリンタである。周辺デバイスは、メモリ12に対する補助記憶装置(図示せず)を含むことができる。補助記憶装置は、例えば、HDD(Hard Disk Drive),EEPROM(Electrically Erasable Programmable Read-Only Memory),フラッシュメモリなどである。
The
メモリ12は、RAM(Random Access Memory)及びROM(Read Only Memory)を含む。ROMは、CPU11によって実行されるOS14,デバイスドライバ15(以下、単に“ドライバ15”と表記),アプリケーションプログラム(以下、単に“アプリケーション”と表記)のような各種のプログラムを記憶する。
The
OS14は、アプリケーションの実行によって生成されたデータをネットワーク(LAN2,WAN4)へ送信するためのパケットを生成する。デバイスドライバ15は、NIC13のような周辺デバイスの操作や制御を司るプログラムである。
The
また、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
CPU11は、アプリケーションの実行を通じて送信対象のデータを生成する。また、CPU11は、OS14の実行を通じて、生成されたデータを含むパケット(パケットデータ)を生成する。さらに、CPU11は、ドライバ15の実行を通じて、パケットデータ及びパケットデータの制御情報をNIC13へバス10を介して転送する。
The
NIC13は、ネットワークデバイス、或いはネットワークインタフェースアダプタと呼ばれる、ネットワークとのインタフェース機能を司る装置(デバイス)である。NIC13は、ドライバ15の実行によってCPU11からバス10を介して受け取るパケットデータの制御情報(送信パケットの制御情報:以下、“送信パケット情報”と表記)に従ってパケットの送信処理を行う。
The
<<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
31, a MAC (Media Access Controller) 132, a packet shaping device (shaping circuit) 130, a
コネクタ134は、LANケーブルのような通信ケーブルとの接続のためのコネクタである。但し、計算機システム1が無線LANと接続される場合には、NIC13は、無線
LANのアクセスポイントとの無線接続のためのRF(Radio Frequency)回路及びアン
テナを備えることができる。
The
コネクタ135は、バス10側のコネクタ10Aと接続される。コネクタ135とコネクタ10Aとの接続によって、NIC13は、CPU11及びメモリ12とバス10を介して電気的に接続された状態となる。
The
PHYチップ131は、パケットに対する物理層の処理(例えば、論理信号と電気信号との変換)を司る電子回路チップである。MAC132は、データリンク層(レイヤ2)とドライバ15(CPU11によるドライバ15の実行による機能)との協調動作を行い、パケットの送信処理を行う。PHY131,MAC132は、例えば、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)によって実装される。
もっとも、PHY131,MAC132は、汎用の電気・電子回路(IC、LSI)や、FPGA(Field Programmable Gate Array)の組合せによって実装することもできる。
The
However, the
パケットシェーピング装置130は、ドライバ15(CPU11によるドライバ15の実行による機能)と、MAC132との間に介在し、本来、ドライバ15(CPU11)とMAC132との間でやりとりされる送信パケット情報の受け渡しを制御する。すなわち、パケットシェーピング装置130は、MAC132に対する送信パケット情報の供給間隔を制御することによって、NIC13からネットワーク(LAN2)へ送出されるパケットの送出間隔を調整する。CPU11は、第1の回路の一例であり、MAC132は、第2の回路の一例である。
The
ここに、ドライバ15(CPU11)とMAC132との間の送信パケット情報の受け渡しは、“送信ディスクリプタ”と呼ばれる(単にディスクリプタとも呼ばれる)データ構造を介して行われる。図3は、送信ディスクリプタのデータ構造例を示す。CPU11は、メモリ12のバッファ領域に格納されるパケットデータに対応する送信ディスクリプタ20を生成(発行)する。
Here, transmission / reception of transmission packet information between the driver 15 (CPU 11) and the
図3において、送信ディスクリプタ20は、バッファ領域に格納されたパケットデータへのポインタの格納領域21と、パケットのサイズ情報が格納される格納領域22とを有する。また、送信ディスクリプタ20は、パケットに対する処理内容(出力設定)が記述される格納領域23と、送信ディスクリプタ20に対するアクセス権を示すOWNビットの格納領域24とを有する。さらに、送信ディスクリプタ20は、パケットの出力結果及び統計情報の格納領域25を有する。
In FIG. 3, the
複数の格納領域のうち、格納領域21〜24に格納される情報(ポインタ、サイズ、出力設定など)は、ドライバ15(CPU11)によって設定される。これに対し、格納領域25に格納される情報(出力結果、統計情報)は、MAC132によって設定される。
Of the plurality of storage areas, information (pointer, size, output setting, etc.) stored in the
送信ディスクリプタ20は、パケット毎に生成される。もっとも、一つのパケットデータに対して複数の送信ディスクリプタ20が生成されることもある。
The
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
本実施形態では、送信ディスクリプタ20の記憶領域は、パケットシェーピング装置130に設けられる。パケットシェーピング装置130は、ドライバ15(CPU11)から受け取る送信ディスクリプタ20のOWNビットの値を適宜のタイミングで“1”に設定し、MAC132へ供給する。
In the present embodiment, the storage area of the
MAC132は、OWNビット“1”が設定された送信ディスクリプタ20を受け取った場合には、送信ディスクリプタ20に設定された情報を用いてパケットの送信処理を行う。このとき、送信ディスクリプタ20に含まれるポインタを用いて、バッファ領域に格納されたパケットデータにアクセスする。送信処理の終了に伴い、MAC132は、送信処理の結果や統計情報を送信ディスクリプタ20の格納領域25に格納する。その後、送信ディスクリプタ20は、パケットシェーピング装置130の記憶領域に格納され、ドライバ15(CPU11)によって回収される。なお、MAC132での送信処理を経たパケットは、PHY131による処理を経てLAN2へ送出される。
When the
MAC132は、OWNビット“1”が設定された送信ディスクリプタ20に対する送信処理を行い、OWNビット“0”が設定された送信ディスクリプタ20に対しては送信処理を行わない。パケットシェーピング装置130は、ドライバ15(CPU11)から受け取る送信ディスクリプタ20のOWNビットが“1”に設定されるタイミングを制御する。これによって、MAC132の送信パケットの処理間隔、すなわち送信パケットの出力の間隔が制御される。送信パケットの出力の間隔制御を「パケットシェーピング」と呼ぶ。
The
<<パケットシェーピング装置の構成>>
前提として、送信ディスクリプタ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
すなわち、ドライバ15(CPU11)によるメモリアクセス(送信ディスクリプタ20の書き込み(Write)要求)により、送信ディスクリプタ20がディスクリプタ記憶領
域に書き込まれる。ディスクリプタ記憶領域は、一般にFIFO(リングバッファ)構造を有し、複数の送信ディスクリプタ20は、書き込み順でディスクリプタ記憶領域に蓄積される。
That is, the
一方、MAC132は、ディスクリプタ記憶領域に対するメモリアクセス(読み出し(Read)要求)によって、ディスクリプタ記憶領域の先頭に格納された、OWNビット“1”を有する送信ディスクリプタ20を読み出し、送信ディスクリプタ20の内容に従った送信処理を行う。送信処理に使用された送信ディスクリプタ20は、MAC132のメモリアクセス(書き込み(Write)要求)によってディスクリプタ記憶領域に書き込まれる
。そして、ドライバ15(CPU11)からのメモリアクセス(読み出し(Read)要求)によって、ディスクリプタ記憶領域から送信ディスクリプタ20が回収される。
On the other hand, the
パケットシェーピング装置130は、上述した送信ディスクリプタ20のディスクリプタ記憶領域として機能する。すなわち、ドライバ15(CPU11)及びMAC132から見て、パケットシェーピング装置130は、上述したディスクリプタ記憶領域のように見えるように動作する。
The
図4は、パケットシェーピング装置130の構成例を示す。パケットシェーピング装置130は、電気・電子回路,IC,LSI,ASICの組合せで実現することができる。
もっとも、パケットシェーピング装置130は、ハードウェアFIFOを内蔵したFPGAで実現するのが、製造容易性、製造コストの観点から好ましい。
FIG. 4 shows a configuration example of the
However, it is preferable that the
図4において、パケットシェーピング装置130は、ドライバ側のインタフェース回路31と、出力FIFO32と、回収FIFO33と、MAC側のインタフェース回路34と、を備えている。インタフェース回路34は、ディスクリプタレジスタ35と、出力帯域の記憶領域である出力帯域レジスタ36と、次回出力時刻の記憶領域である次回出力時刻レジスタ37と、現在時刻の記憶領域である現在時刻レジスタ38とを有している。
4, the
ドライバ側のインタフェース回路31は、ドライバ15(CPU11)とバス10を介して接続される。バス10は、アドレスバス,データバス,制御バス(制御線)を含んでおり、インタフェース回路31は、アドレスバスからのアドレス情報、データバスからのデータ,制御バスからの制御信号を受け取る。制御信号は、少なくとも読み出し(Read)要求及び書き込み(Write)要求を含む。
The driver
出力FIFO32及び回収FIFO33は、ディスクリプタ記憶領域として機能する。出力FIFO32及び回収FIFO33は、データバスを介してやりとりするデータのサイズに応じたサイズでメモリマップされ、通常のメモリアクセスと同様に、ドライバ15(CPU11)及びMAC132がアクセスすることができる。すなわち、ドライバ15に対し、送信ディスクリプタの書き込み時には出力FIFO32のアドレスを指定し、送信ディスクリプタの回収時には回収FIFO33のアドレスを指定するような設定が予め施される。出力FIFO32はバッファの一例である。
The
出力FIFO32には、ドライバ15(CPU11)側から供給される送信ディスクリプタ20を到着順で格納する。回収FIFO33は、MAC132による送信処理が終了したパケットに係る送信ディスクリプタ20(以下、送信済みの送信ディスクリプタ20を“送信済みディスクリプタ20A”と表記する)が格納される。
In the
出力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
インタフェース回路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
MAC側のインタフェース回路34は、MAC132との間で、アドレス,データ,制御信号(Read命令、Write)命令のやりとりを行う。インタフェース回路34に含まれる
ディスクリプタレジスタ35は、出力FIFO32の先頭に格納された送信ディスクリプタ20を記憶する。但し、ディスクリプタレジスタ35への送信ディスクリプタの書き込
みに際し、この時点で送信ディスクリプタ20に設定されているOWNビット24の値は、ディスクリプタレジスタ35に反映(コピー)されない。換言すれば、ディスクリプタレジスタ35への書き込み時点におけるOWNビット24の値は“0”に設定される。
The
ディスクリプタレジスタ35,出力帯域レジスタ36,次回出力時刻レジスタ37,現在時刻レジスタ38は、レジスタ回路、或いは、メモリを用いて形成される。出力帯域レジスタ36は、パケットの送信間隔を規定する情報である、出力帯域の情報を記憶する。出力帯域の情報は、外部からユーザ又はオペレータによって所望の値が書き込まれる。或いは、予め設定された出力帯域が書き込まれたメモリがセットされる。出力帯域は、LAN2の通信速度に応じて決定される。LAN2は、パケットが送出される通信媒体の一例である。
The descriptor register 35, the
現在時刻レジスタ38は、例えば、バス10から計算機システム1のクロック供給を受けて、クロックを用いた現在時刻が格納される。もっとも、現在時刻レジスタ38を構成する記憶領域の代わりに、現在時刻を計時する時計が配置されても良い。また、現在時刻レジスタ38はカウンタ回路を用いて形成することもできる。
For example, the
次回出力時刻レジスタ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
インタフェース回路34は、現在時刻が次回出力時刻となった場合に、ディスクリプタレジスタ35に格納された送信ディスクリプタ20のOWNビットを“1”に設定する。これによって、MAC132は、ディスクリプタレジスタ35に格納された送信ディスクリプタ20に係るパケット送信処理が許可された状態となる。
The
インタフェース回路34は、MAC132からの読み出し(Read)要求に対して、ディスクリプタレジスタ35に格納された送信ディスクリプタ20の内容をMAC132に供給する。一方、インタフェース回路34は、MAC132からの書き込み(Write)要求
に対して、MAC132から供給された送信済みディスクリプタ20Aの内容をディスクリプタレジスタ35に書き込む。送信済みディスクリプタ20Aは、回収FIFO33に書き込まれる。
In response to a read request from the
<<パケットシェーピング装置の動作例>>
次に、図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
図5Aにおけるステップ(以下“S”)1では、インタフェース回路31は、ドライバ15(CPU11)から、Write要求と、送信ディスクリプタ20と、送信ディスクリプ
タ20の書き込み先アドレスとを、バス10(図1)を介して受け取る。S2では、インタフェース回路31は、アドレスに従って、送信ディスクリプタ20を出力FIFO32に入力する(書き込む)。
In step (hereinafter “S”) 1 in FIG. 5A, the
図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
これに対し、回収FIFO33が空でない場合には(S2のNo)、インタフェース回路31は、回収FIFO33の先頭に格納された送信済みディスクリプタ20Aの内容を読み出し、OWNビットの値を“0”に設定して出力する。これによって、送信済みディスクリプタ20Aがドライバ15(CPU11)によって回収される。
On the other hand, when the
図6Aは、インタフェース回路34の動作を示すフローチャートである。図6Aに示す処理は、インタフェース回路34は、現在時刻レジスタ38の現在時刻を監視し(S11)、現在時刻が次回出力時刻以降となったか否かを判定する(S12)。
FIG. 6A is a flowchart showing the operation of the
現在時刻が次回出力時刻以降となっている場合には(S12のYes)、MAC132に対する割り込みを入れて、MAC132による送信処理(MAC132のディスクリプタアクセス)を開始させる(S13)。なお、初期状態の次回出力時刻(次回出力時刻の初期値)として、適宜の値を設定することができる。もっとも、例えば、計算機システム1の起動時の時刻を設定しておくのが好ましい。
If the current time is after the next output time (Yes in S12), an interrupt to the
図6Bは、MAC132からのReadアクセス時におけるインタフェース回路34の動作を示すフローチャートである。図6Bの処理は、S13の割り込み指示に応じて開始される。さらに、図6Bの処理は、周期的に開始される。
FIG. 6B is a flowchart showing the operation of the
図6BにおけるS21では、インタフェース回路34は、MAC132から、Read要求と、読み出しアドレスとを受け取る。
In S <b> 21 in FIG. 6B, the
S22では、インタフェース回路34は、出力FIFO32が空(empty)か否かを判
定する。出力FIFO32が空であれば(S22のYes)、インタフェース回路34は、OWNビットが“0”であり、残りの格納領域が“Don't care”に設定された送信ディスクリプタ20をMAC132に供給する。この場合、MAC132は特に処理を行わない。
In S22, the
これに対し、出力FIFO32が空でなければ(S22のNo)、インタフェース回路34は、現在時刻が次回出力時刻より前であるかを判定する(S23)。このとき、現在時刻が次回出力時刻より前であれば(S23のYes)、インタフェース回路34は、S23と同様の処理を行う(S25)。この場合にも、MAC132は、特に処理を行わない。
On the other hand, if the
これに対し、現在時刻が次回出力時刻以降であれば(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
図6Cは、MAC132からのWriteアクセス時におけるインタフェース回路34の動
作を示すフローチャートである。S31にて、インタフェース回路34は、MAC132から送信済みディスクリプタ20A,書き込み先アドレス,及びWrite要求を受け取る。
送信済みディスクリプタ20Aは、ディスクリプタレジスタ35に格納される。
FIG. 6C is a flowchart showing the operation of the
The transmitted descriptor 20A is stored in the
S32では、インタフェース回路34は、ディスクリプタレジスタ35に格納された送信済みディスクリプタ20AのOWNビットが“0”に設定されているかを確認する。ここに、OWNビットの“0”の設定は、MAC132とインタフェース回路34の一方が行うことができる。
In S32, the
OWNビット“0”が設定されている場合には(S32のYes)、インタフェース回路34は、ディスクリプタレジスタ35の記憶内容を回収FIFO33に入力する(S33)。なお、この時点では、ディスクリプタレジスタ35の記憶内容の変化はない。
If the OWN bit “0” is set (Yes in S32), the
S34では、インタフェース回路34は、次回出力時刻の算出を行う。例えば、インタフェース回路34は、以下の式に基づき、次回出力時刻を算出することができる。
In S34, the
<式> 次回出力時刻=(パケットサイズ/出力帯域)+現在時刻
なお、上記式におけるパケットサイズは、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
S35では、出力FIFO32の先頭に格納された送信ディスクリプタ20の内容をディスクリプタレジスタ35に設定する(送信ディスクリプタ20を移動)。但し、出力FIFO32において設定されていたOWNビットの値は、ディスクリプタレジスタ35にて反映されない(“0”又は“1”以外の値に設定される)。
In S35, the content of the
<実施形態の作用効果>
実施形態によるパケットシェーピング装置130によれば、現在時刻が次回出力時刻以降となるまで、MAC132によるディスクリプタレジスタ35に格納された送信ディスクリプタ20のアクセスが許可されない。したがって、MAC132によるパケットの送信処理の間隔(即ち、パケットの送出間隔)を、LAN2の通信速度(パケットが送出される通信媒体の通信速度)に応じた所望の間隔に設定することができる。これによって、マイクロバーストの発生が抑えられ、通信装置3のバッファがオーバーフローし、パケットロストが抑えられる。
<Effects of Embodiment>
According to the
また、実施形態によれば、送信ディスクリプタ20のデータ構造には改変を加えない。このため、MACを含むネットワークデバイスとして、送信ディスクリプタ対応の既存のネットワークデバイスLSIを適用することができる。従って、新規なネットワークデバイスLSIを開発する場合に比べて、開発及び製造コストを抑えることができる。
Further, according to the embodiment, the data structure of the
また、パケットシェーピング装置130は、FPGAを用いて実装することができる。このため、パケットシェーピング装置130の製造コストを抑えることができる。さらに、ソフトウェアに関しても、ドライバ15に対する部分的な改変で、パケットシェーピング装置の実装が可能となる。ドライバ15の改変は、送信ディスクリプタ20の書き込み先として、計算機システム1のメモリ12ではなく出力FIFO32を指定することに限定されている。このため、オリジナルのドライバが更新されても、パケットシェーピング装置130対応のドライバ15を短時間で作成することができる。従って、例えば、セキュリティ問題によりドライバが更新された場合に、更新されたオリジナルのドライバにわずかな改変を加えることで、セキュリティ問題が解決した新たなドライバを短時間で供給することが可能となる。
Further, the
さらに、ソフトウェアの改変は、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
また、パケットシェーピング装置130がプロセッサ(制御装置)及びメモリを含み、上述した各フローチャートに示した処理が、プロセッサのプログラム実行によるソフトウェア処理によって実現されるようにしても良い。
Further, the
<その他>
上述した実施形態は、以下の付記を開示する。付記は適宜組み合わせることができる。
<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
(付記3)
前記調整回路は、現在時刻と、パケットサイズと、出力帯域とに基づいて次回出力時刻を算出する
付記2に記載のパケットシェーピング装置。
(Appendix 3)
The packet shaping device according to
(付記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 ...
12 ...
14 ...
33 ... Recovery FIFO
35 ...
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の回路で生成された前記ディスクリプタをバッファに格納し、
パケットが送出される通信媒体の通信速度に応じて、前記バッファに格納された前記ディスクリプタに関して前記格納領域に送信処理の許可を示す情報を設定するタイミングを調整する
ことを含むパケット送信間隔調整方法。
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.
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)
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)
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 |
-
2011
- 2011-12-20 JP JP2011278187A patent/JP5821608B2/en active Active
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 |