JP2013513270A - タイムスタンプの記録と中央制御装置を用いた多数のアダプタによるデータフレームの分散処理 - Google Patents

タイムスタンプの記録と中央制御装置を用いた多数のアダプタによるデータフレームの分散処理 Download PDF

Info

Publication number
JP2013513270A
JP2013513270A JP2012541528A JP2012541528A JP2013513270A JP 2013513270 A JP2013513270 A JP 2013513270A JP 2012541528 A JP2012541528 A JP 2012541528A JP 2012541528 A JP2012541528 A JP 2012541528A JP 2013513270 A JP2013513270 A JP 2013513270A
Authority
JP
Japan
Prior art keywords
address
queue
data
data packet
read
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
JP2012541528A
Other languages
English (en)
Other versions
JP5711257B2 (ja
Inventor
コルガー ペーター
エクナー ペーター
Original Assignee
ナパテック アクティーゼルスカブ
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 ナパテック アクティーゼルスカブ filed Critical ナパテック アクティーゼルスカブ
Publication of JP2013513270A publication Critical patent/JP2013513270A/ja
Application granted granted Critical
Publication of JP5711257B2 publication Critical patent/JP5711257B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

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

Abstract

複数の物理的に分かれたデータ受信/解析要素がデータパケットとこれらのタイムスタンプを受信する装置および方法である。制御部が、少なくともそのタイムスタンプに基づいて、それぞれのデータパケット用の記憶アドレスを決定し、その際、制御部は、受信時刻の後、予め定められた時間遅延が経過するまでそのアドレスの決定を行わない。

Description

本発明は、複数のデータパケットのパラレル受信を円滑化するとともにそれらについてのアドレス生成を確実に一元化する装置に関する。
第1の態様では、本発明は、データパケットを受信し送信するための装置であって、制御部および物理的に分かれた複数のデータ送受信要素を備え、
複数のデータ送受信要素がそれぞれ、
・ データパケットを受信するかまたはデータパケットにアクセスするための手段と、
・ データパケットの受信/アクセスの時点を決定するための手段であって、計時手段を備え、すべての決定手段の計時手段が同期している決定手段と、
・ 上記時点を含む第1の情報を出力するための手段と、
・ データパケットの少なくとも一部を記憶するためのアドレスを受信するための手段と、
・ 上記アドレスにデータパケットの少なくとも一部が記憶されることを円滑化するための手段と
を備え、
制御部が、
・ 第1の情報を受信し、データパケットの受信/アクセスの時点を導出するための手段と、
・ 決定手段の計時手段と同期したクロックと、
・ 受信された第1の情報のそれぞれについて、導出された時点で、または導出された時点の後予め定められた時間の遅延を加えた時点で、アドレスを決定し、関係するデータ送受信要素の受信手段に上記アドレスを戻すための手段と
を備える装置に関する。
こういった意味合いで、その装置は、送受信要素とは別個の制御部などの、分かれているがデータを交換するように相互に接続されたいくつかの要素により構成される。この交換は、TCPや、イーサネット(登録商標)、ブルートゥースなどの任意のデータ転送プロトコルのもとで行ってもよく、任意の種類のデータ転送を用いてもよく、有線または無線でもよい。
また、送受信要素は、それぞれが別個のPCBや、プロセッサ、FPGAなどにより実現される物理的に分かれたいくつかのハードウェアとして設けられる。この点で、物理的に分かれたとは、その要素が(有線または無線で)通信できるように相互に接続可能であるが、その接続は切れやすく、送受信要素を取り替えるかまたは付け加えて/取り除いて装置の能力を変えられることを意味する。もちろん、1つのPCB/プロセッサ/FPGAにより複数の送受信要素を構成してもよく、その際は、そうした送受信要素のグループを取り替えて/取り除いて/付け加えてもよい。制御部は送受信要素とは分かれていてもよく、または1つまたは複数の送受信要素のうちの一部を構成してもよい。
もちろん、プロセッサや、ソフトウェアにより制御されるかまたは物理的に組み込まれたもの、FPGA、特定用途向け回路、ASICSなどの個々の要素として、送受信要素の個々の手段を調達または成形してもよい。あるいは、複数のそうした手段を組み合わせて1個のそうしたプロセッサなどにしてもよい。
もちろん、任意の個数の送受信要素を用いてもよい。複数の送受信要素を用いるときは、パラレルの受信と記憶を行ってもよい。2,3,4,5,6,7,8,10,15,20個などか、またはそれより多い任意の個数の送受信要素を用いてもよい。以下でさらに記載するように、これらの送受信要素はすべて同一またはほぼ同一のものでよく、または様々な動作をする様々な回路として具体化、すなわち作成してもよい。各送受信要素が制御部をもってもよいが、必要なのは1つだけである。別の状況では、ただ1つの送受信要素が制御部を備えるが、その送受信要素は他の点では残りの送受信要素と同一である。
アクセス/受信手段は、実際にデータまたはデータパケットを受信かつ/または記憶してもよい。あるいは、他の位置で、または送受信要素がそれを用いて通信する装置で、データパケットを受信または記憶してもよく、それによって、データパケットのデータをリモートで読み取ることによりそのデータにアクセスするとともに、そのデータを他の装置に記憶する。後者の場合は、データパケットにリモートでアクセスするため、通常、処理が遅くなる。
あまり好ましくはないが、受信されたアドレスは、データパケットが記憶される、記憶部内の実際のアドレスでなくてもよい。あるいは、このアドレスを導出することができる情報を受信してもよい。
送受信要素の決定手段はそれぞれ計時手段を備え、すべての決定手段の計時手段は同期している。この点で、「同期した」とは、予め定められた許容誤差の範囲内ですべての計時手段が同一の時点を同時に出力することを意味する。したがって、異なる計時手段の時点が比較可能になり得る。計時手段同士および/または計時手段と制御部の間でクロック信号を交換することにより、この同期を確実なものにしてもよい。この点で、「許容誤差」は、1,2,3,5,10個またはそれより多くのクロックサイクルまたは計時手段により定められるタイミングの単位の範囲内でもよい。
一実施形態では、単にグローバルクロックをすべての決定手段に出力してもよく、その際は、計時手段がこのクロックを受信する。あるいは、クロック信号を生成するための手段を決定手段がそれぞれ備える。したがって、そのときは、このクロック信号を同期させるための方策を用いる。
一般に、時点は日時により表してもよく、または等間隔の時点でインクリメント/デクリメントされる数などで表してもよい。もちろん、必要があれば、この数を折り返して先頭に戻してもよい。
円滑化手段は、データ接続を介するなどして、データパケットの少なくとも一部を例えば記憶部に直接記憶してもよく、または、別の場所に記憶する場合には、データパケットの記憶を円滑化してもよい。そのとき、アドレスをこの別の場所に転送してもよく、そこでデータパケットの記憶が行われる。
もちろん、受信/アクセス手段、送信手段および円滑化手段は、この動作を処理し必要に応じてデータを伝達するのに必要なドライバやコネクタなどを備えてもよい。
制御部は、任意の種類のプロセッサや、物理的に組み込まれるかもしくはソフトウェアにより制御されるものなどで構成してもよく、または、特定用途向け回路でもよい。制御部の動作は、個々のデータパケットについてのアドレスを決定することである。このやり方では、必要があれば例えばデータパケットの順序を取得してもよい。
アドレスは少なくとも時点から決定され、その目的は、データパケットまたはその一部分が受信の順序で記憶されるようにすることである。別の状況では、データパケットのストリーム/種類などが決定されるように、データパケットに関する付加的な情報(さらに下記を参照)を第1の情報が含む。したがって、時点を用いてアドレスを決定するだけでなく、あるストリームまたは種類のデータパケットを一緒に記憶してもよい。
しかしながら、後で受信された第1の情報がそれに関するデータパケットより先に実際に受信されたデータパケットに関するものでないということを保証するか、または少なくともその確率を高めるために、アドレスの実際の決定は、受信/アクセスの時点の後、予め定められた時間遅延するまでは行わない。このように、正しいアドレスを与える確率が高まるように、より多くの知識が集められる。
したがって、制御部も、グローバルクロック信号の受信機かまたはローカルクロック信号の供給源である計時手段をもつ。もちろん、制御部と送受信要素のうちのいくつかがグローバルクロックを受信し、その他が、グローバルクロックと同期したローカルクロック信号の供給源をもってもよい。
先に受信されたデータパケットに関する第1の情報が後の時点で制御部に到達しない理由は、処理の遅延(データ送受信要素が込んでいる)か、またはこのデータ送受信要素と制御部の間における通信の遅延の場合がある。この予め定められた遅延は、1,2,3,4,5,6,7,8,19,15,29,39,40などの任意の個数のクロック周期もしくはそれより多くのクロック周期か、または、100ns,200ns,300ns,500ns,750ns,1ms,5ms,10msもしくはそれ以上などの任意の期間でもよい。
制御部は、第1の情報のそれぞれについて、したがってデータパケットごとに、アドレスを返すことになる。
この点で、データパケットは、ネットワークや、データケーブル、データバス、トランクなどの上で伝送されるかまたはそれらにより搬送される、任意の種類のデータ単位でもよい。通常、データ単位は、UDPやTCPのデータパケットといったいくつかの異なる規格またはデータパケットの種類がその傘下にあるイーサネット(登録商標)規格などの、1つまたは複数のデータ規格に従う。データパケットは、通常、アドレスデータやペイロードなどのいくつかの異なる情報項目または種類をもち、それらはそれぞれ、データパケット内のよく定められたまたは知られた位置に配置されている。そうした位置や種類は、典型的にはデータパケットの種類ごとに異なるが、通常、データパケットの種類、したがってその個々の内容の位置は、実際のデータパケットから決定してもよく、その際は、アドレスデータおよび/またはペイロードなどの個々のデータ項目を、後で導出し、変更し、かつ/または解析に使用してもよい。その種類または規格は、パケットの特定のデータ項目により種類/規格が識別されるときなどにデータパケットから直接導出してもよく、または、データパケットのデータ項目の種類や位置を認識しその後にそうしたデータがそうした(1つまたは複数の)位置で見つかるであろうデータパケットの(1つまたは複数の)種類もしくは規格を決定することに基づくなどして、データパケットから導出されたデータから導出してもよい。
データパケットの任意の部分を記憶してもよい。データパケットを再度出力する必要がなければ、場所を取らないようにするために、例えばその中のアドレス指定情報を削除してもよい。
データパケットは並べ替えてもよく、その場合は、多数のやり方で、いくつかの理由により並べ替える。通常、コンピュータ間のデータ交換はファイル転送や、TCP転送、VoIPなどであり、その際は、個々のパケットの順序が重要である。通常、そうした転送のことをストリームと呼ぶ。
通常、データパケットのストリームは、単一の送信機から1つまたは複数の受信機に伝送されるデータパケットの列である。これらのデータパケットは、例えば、パケットのペイロードである、より小さな部分で伝送される単一のファイルなどに関する。そして、送信機と受信機、または中間の任意のネットワーク要素は、通常、パケット内でも表されるアドレスをもつ。加えて、個々のデータパケットの規格に応じて、データパケット中に他のストリーム識別情報があることもある。
したがって、例えばアドレスおよび/またはストリーム識別情報に基づいてストリームを識別してもよく、それによって、矛盾なく用いられるならば同じ情報を導出してもよく、後続する任意のプロセスでは単にその情報からストリームを識別してもよい。その際、各ストリームのパケットを別個のキューに記憶してもよい。
別の状況では、データパケットの中に、その順序を決定するシーケンス番号などの情報を与えてもよい。したがって、この情報をパケットの並べ替えに用いてもよい。
本発明の第2の態様は、第1の態様による装置と、データを記憶し得る複数のアドレスを含む記憶領域とを備えるアセンブリであって、記憶領域内の受信されたアドレスにデータパケットの少なくとも一部を記憶するように円滑化手段が構成されているアセンブリに関する。
もちろん、記憶部は、一体構造の記憶部か、または間隔を空けたいくつかの記憶要素により構成されるものなどの、任意の形態の記憶部でもよい。通常の記憶技術は、ハードドライブや、フロッピー(登録商標)ディスク、RAM、ROM、PROM、EPROM、EEPROM、フラッシュ、メモリカード、CD−ROM、DVD、メモリカードなどに基づいている。
別個の記憶部を設けるならば、アドレスは、実際の記憶部とその中の「ローカルアドレス」の両方の識別情報を記述することになる。
データパケットは、異なるサイズをもってもよく、様々な個数のアドレスを占めてもよい。
好ましくは、別個の、すなわち重なり合わないアドレスグループとして記憶領域内に複数のキューが定められ、制御部の決定手段が、関係するデータパケットを加えるキューを第1の情報から決定し、関係するキューのアドレスグループからアドレスを選択するように構成される。
この点で、2つのグループ、すなわち2つのキューの一部であるアドレスがないときは、アドレスグループは重なり合わない。
1つのキューは複数の連続したアドレスを含むことが好ましいが、これは必須要件ではない。
好ましくは、決定されたキュー内のアドレスを、受信/アクセスの順序でデータパケットがキューに記憶されるように決定するように、制御部の決定手段が構成される。したがって、予め定められた時間遅延は、普通なら発生するいかなる遅延とも無関係にデータパケットが受信/アクセスの順序で記憶されるということを保証する(または、少なくともその確率を高める)役割を果たす。
特に興味深い実施形態は、記憶領域からデータを読み取るかまたはデキューイングするための手段をさらに備え、記憶手段の1つまたは複数のアドレスであってデータが読み取られた/デキューイングされたかまたは読み取られる/デキューイングされるアドレスに関する第2の情報を出力するための手段を、読取り/デキューイング手段が備えるものである。したがって、アドレスが決定されたときに、キューへのデータの追加が行われ、読取り/デキューイングするときに、データが取り除かれる。この情報に基づいて、(1つまたは複数の)キューの内容を決定し更新してもよい。
一実施形態では、各キューについて、データを加える次のアドレスまたはデータが加えられた最後のアドレスを識別する書出しポインタと、キューから読み取られる/デキューイングされる次のアドレスまたは読み取られた/デキューイングされた最後のアドレスを識別する読取りポインタとを保持するように制御部が構成され、
制御手段が、
・ アドレスが決定されたときに、決定されたアドレスが関係するキューの書出しポインタを更新し、
・ 受信された第2の情報に基づいて、上記の第2の情報などから、データがデキューイングされたキューの読取りポインタを更新し、
・ キューの読取りポインタおよび書出しポインタに基づいて、アドレスも決定する
ように構成される。
ある状況では、やはり読取り/書出しポインタに基づくアドレスの決定は、(1つまたは複数の)キューの充填レベルの決定に基づいて行ってもよい。明らかに、キューのデータの量は、その読取りポインタと書出しポインタから決定することができる。こういった意味合いで、充填レベルは、キューにあるいくつかのデータパケットまたはキューによりふさがれるいくつかのアドレス指定可能な要素に関係し得る。この充填レベルは、データ/パケット/アドレスの量/個数またはパーセンテージ(そのときはこの個数/量を最大の個数/量と比較する)により表してもよい。充填レベルは、キューごとに、キューのグループごとに、またはすべてのキューについて決定してもよい。
好ましい実施形態では、キューの充填レベルが予め定められた値を超えたときに、読取り/デキューイング手段の出力手段を指示して、データが読み取られたかまたは読み取られるアドレスに関する第2の情報を出力させるように、制御手段が構成される。
この状況では、アドレスを決定するときに、データパケットの、少なくとも一部のサイズがわかっていることが望ましい。というのは、それが占めるアドレス指定可能な要素の個数がこのサイズにより決定されるからである。したがって、次のデータパケットについてのアドレスはそれに依存することになる。
読取りポインタを更新するときは、第2の情報により、すべての解放されたアドレス指定可能な要素のアドレスを識別するか、または単に、読み取るべき次のデータパケットまたは新たに解放されたアドレス同士の間の境界でアドレスを識別するのが望ましいであろう。このアドレスは、次のデータパケットの最初のアドレスか、または解放されたアドレスの最後でもよい。
この状況では、第2の情報と、したがって読取りポインタは、あまり頻繁には出力されない。このデータ転送により、データがそれを介して記憶手段に記憶されるデータ経路上がふさがるおそれがある。
記憶中に、書出しポインタは制御部により更新され、したがって、読取りポインタが更新されないと、(1つまたは複数の)キューが増大するように見える。もちろん、これらのキューが空いた状態にならないことを保証するために、書出しポインタを読取り/デキューイング手段に頻繁に送信してもよい。キューが空いていることをそれらの更新された読取りポインタと更新されていない書出しポインタがともに示す場合は、その空いた状態となる。したがって、アドレスが決定されたときに、更新された書出しポインタに関する情報を読取り/デキューイング手段に出力するように、制御手段を構成してもよい。こうして、読取り/デキューイング手段を完全に更新してもよい。
データパケットの少なくとも一部が記憶されたときに制御部に通知するように円滑化手段が構成され、円滑化手段により通知されたときに、更新された書出しポインタに関する情報を読取り/デキューイング手段に出力するように制御部が構成されると、最も好ましい。したがって、データが記憶されたときだけ書出しポインタは更新される。すると、更新された書出しポインタのアドレスだがまだデータを受信していないアドレスを読取り/デキューイング手段が読み取る/デキューイングすることが回避される。
(1つまたは複数の)キューの実際の充填レベルが制御部に利用可能であるように、1つまたは複数のキューか、すべてのキューかまたは記憶領域全体の充填レベルが限界を超えると、読取りポインタは更新される。
好ましくは、データパケット(またはその一部)が記憶されるたびに、書出しポインタが更新され、読取り/デキューイング手段に通知される。しかしながら、データを記憶する/読み取る/デキューイングするために記憶手段とデータ送受信要素の間の帯域幅が確保されていることが好ましいため、更新された書出しポインタをデータパケットが保存されるたびに送信するのではなく、(読取り/デキューイング手段を更新する前にローカルの書出しポインタを何回か更新することにより)そうした情報をプールし、例えば、記憶手段への/からの帯域幅の要件により可能なときにこの更新を送ることが望ましいであろう。しかしながら、最後の更新から最大制限時間が経過する前に更新を送らなければならないと決定してもよい。
好ましくは、キューが記憶されるアドレスは、連続的なアドレスとして割り当てられる。このやり方では、キュー内で現在占有されているアドレスの個数を決定するために、単に読取りポインタと書出しポインタを互いに引き算することにより、充填レベルなどが容易に決定される。
しかしながら、多数の連続的なアドレスを設けることは、現実のシステムでは問題となるおそれがある。標準の記憶領域システムでは、最大サイズが例えば4MBであるブロックまたはセグメントが割り当てられる。アドレスは、セグメント/ブロック内では連続的であるが、セグメント/ブロックがメモリ内でランダムに割り当てられることもあるため、完全なアドレスでないことがある。
そうした状況では、記憶部のキューのアドレスが、予め定められた個数の物理アドレスのグループに分けられ、そのグループが不連続に配置される。この点で、「不連続に」とは、記憶領域の空間でそのグループは近接して配置されない(グループの境界を越えて連続するアドレスをもたない)ことを意味する。そして、好ましくは、キューを実現するアドレスが、連続するアドレスとして定められた仮想アドレスであり、仮想アドレスと物理アドレスの間の変換を行うための手段を制御部がさらに備える。
したがって、任意の個数の連続的な仮想アドレスを割り当ててもよく、それらはその後、実際の物理アドレスに変換される。
これを得る1つのやり方は、いくつかの割り当て可能なセグメント/ブロックを記憶部が有し、割り当て可能なブロック/セグメントの1つの中のアドレスを各グループの物理アドレスが定め、第1の個数のビットのアドレスで各ブロック/セグメントが特定可能であり、第2の個数のビットを用いてブロック/セグメントの中のすべてのアドレスがアドレス指定可能であり、第1の個数のビットと第2の個数のビットの和に対応するいくつかのビットを物理アドレスが有し、少なくとも第1の個数のビットをもつ第1の部分と、少なくとも第2の個数のビットをもつ第2の部分とを仮想アドレスのそれぞれが含み、仮想アドレスの第1の部分を第1の個数のビットをもつ第3の部分に変換し、割り当てられたブロック/セグメントを識別し、第3の部分と第1の部分をもつアドレスとして物理アドレスを生成するように変換手段が構成されるというものである。
好ましい実施形態では、
・ 受信された/アクセスされたデータパケットについて、第1のキューのグループのそれぞれからの1つのキューをそれぞれが含む第2のキューのグループであって、第2のキューのグループ同士のキューが重なり合わない第2のキューのグループの1つを、第1の情報などから決定し、
・ 決定された第2のグループの現在選択されている第1のキューの充填レベルが予め定められたレベルを超えるならば、決定された第2のグループの第2のキューを識別かつ選択し、
・ アドレスを、識別された第2のキューのアドレスとして選択する
ことによってアドレスを選択するように決定手段が構成され、
識別かつ選択された第2のキューに関する読取り/デキューイング手段に、予め定められたレベルを超過した第1のキューが空になるまでこの第2のキューを処理しないように指示するための手段を、アセンブリがさらに備える。
本実施形態では、任意の第2のグループの中でパケットを処理/デキューイングする際に順序を維持しながら、プロセス/プロセッサ間の負荷分散をしてもよい。
記憶された(少なくとも一部の)データパケットをデキューイングかつ/または解析/処理する場合にこれらの順序が重要なときは特に、一度読取り/デキューイング手段がこれらをデキューイング/処理し始めると、そうしたデータパケットを別の読取り/デキューイング手段に割り当てることは困難である。本実施形態を用いて、そうしたデータパケットのグループ(通常はストリーム)のそれぞれを、読取り/デキューイング手段のうちの別々の手段によりデキューイング/処理された別個のキューをそれぞれがもつ第2のキューのグループに割り当てる。こうして、データパケットが現在記憶されており第1の読取り/デキューイング手段によりデキューイングされるキューが長くなりすぎるならば、すなわち第1の読取り/デキューイング手段が込みすぎているならば、第2の読取り/デキューイング手段によりデキューイングされる別のキューを同じ第2のグループから識別するが、第1の読取り/デキューイング手段が関係する第2のグループ内のそのキューからすべてのデータパケットをデキューイングする前に第2の読取り/デキューイング手段がデータパケットをデキューイングできないように決める。このやり方では、読取り/デキューイング手段の全体でデータパケットのデキューイングの順序が維持される。
第3の態様では、本発明は、第1の態様による装置を動作させる方法であって、
最初に、すべての決定手段の計時手段を同期させるステップと、
その後に、
各データ送受信要素が、
・ データパケットを受信またはデータパケットにアクセスするステップと、
・ データパケットの受信/アクセスの時点を決定するステップであって、データ送受信要素の計時手段から受信の時刻を受信することを含むステップと、
・ 上記時点を含む第1の情報を出力するステップと、
・ データパケットの少なくとも一部を記憶するためのアドレスを受信するステップと、
・ 上記アドレスにデータパケットの少なくとも一部が記憶されることを円滑化するステップと、
制御部が、
・ 第1の情報を受信し、データパケットの受信/アクセスの時点を導出するステップと、
・ 受信された第1の情報のそれぞれについて、受信/アクセスの時点で、または受信/アクセスの時点の後予め定められた時間の遅延を加えた時点で、アドレスを決定し、関係するデータ送受信要素の受信手段に上記アドレスを戻すステップと
を含む方法に関する。
上記のように、データパケットにアクセスするステップでは、その装置内でデータパケットを受信することを要求するのではなく、装置がそれを用いて通信するリモートの要素で受信および/または記憶されたときにデータパケットにアクセスしてもよい。
この同期させるステップは、任意の所望の同期でよい。グローバルクロックを配信することができ、かつ/または読取り/送信要素が別々のクロックをもち、その際、その同期は、1つの読取り/送信要素のクロック、制御部のクロック信号、またはグローバルクロックに他のすべてのクロックを同期させるものでもよい。
一実施形態では、円滑化するステップが、データを記憶し得る複数のアドレスを含む記憶領域内の受信されたアドレスにデータパケットの少なくとも一部を記憶することを含む。この記憶は、好ましくはDMA通信として扱われる。
そして、記憶領域の中で別個のまたは重なり合わないアドレスグループとして複数のキューを定めてもよく、決定するステップが、関係するデータパケットを加えるキューを第1の情報から決定し、関係するキューのアドレスグループからアドレスを選択することを含む。
好ましくは、データパケットの少なくとも一部がその受信/アクセスの順序で1つまたは複数のキューの中に記憶されるようにアドレスを決定することを、アドレスを決定するステップが含む。
ある状況では、その方法は、記憶領域からデータを読み取るかまたはデキューイングするステップをさらに含み、記憶手段の1つまたは複数のアドレスであってデータが読み取られた/デキューイングされたかまたは読み取られる/デキューイングされるアドレスに関する第2の情報を出力することを、読み取るステップが含む。
好ましい実施形態では、各キューについて、データを加える次のアドレスまたはデータが加えられた最後のアドレスを識別する書出しポインタと、キューから読み取られる/デキューイングされる次のアドレスまたは読み取られた/デキューイングされた最後のアドレスを識別する読取りポインタとを制御部が保持し、
制御手段が、
・ アドレスが決定されたときに、決定されたアドレスが関係するキューの書出しポインタを更新し、
・ 受信された第2の情報に基づいて、上記の第2の情報などから、データがデキューイングされたキューの読取りポインタを更新し、
・ キューの読取りポインタおよび書出しポインタに基づいて、アドレスも決定する。
上記のように、(1つまたは複数の)キューの充填レベルに基づいて、この決定を行ってもよい。
ある状況では、キューの充填レベルが予め定められた値を超えたときに、制御手段が読取り/デキューイング手段を指示して、データが読み取られたかまたは読み取られるアドレスに関する第2の情報を出力させる。
そして、決定するステップが、更新された書出しポインタに関する情報を読取り/デキューイング手段に出力することを含んでもよい。
ある状況では、更新された書出しポインタに関する情報を、アドレスが決定されたときに読取り/デキューイング手段に出力することを、決定するステップが含む。しかしながら、好ましくは、データパケットの少なくとも一部が記憶されたときに制御部に通知することを、円滑化するステップが含み、円滑化手段により通知されたときに、更新された書出しポインタに関する情報を制御部が読取り/デキューイング手段に出力する。したがって、決定された(1つまたは複数の)アドレスにデータが記憶されるまで、書出しポインタは更新されない。
一実施形態では、予め定められた個数の物理アドレスのグループに記憶領域のキューのアドレスが分けられ、グループが不連続に配置され、キューを実現するアドレスが、連続するアドレスとして定められた仮想アドレスであり、決定するステップが、仮想アドレスと物理アドレスの間の変換を行うことをさらに含む。
以下では、図面を参照して、本発明の好ましい実施形態について記載する。
本発明による装置およびアセンブリを示す。 仮想アドレスから物理アドレスへの変換を示す。 図1のアロケータとアダプタの間でのクロックの同期を示す。 時系列でランダムに受信されたパケットを並べ替えるやり方を示す。 データパケット間の順序を維持しながらプロセッサ間で負荷分散することを示す。 アダプタ内の負荷分散を示す。
図1に、それぞれがWWWなどのネットワークに接続され、そこからデータを受信するいくつかのアダプタ12をもつ、データフレームを解析し送信するための装置の実施形態10を示す。
一般に、この種類のシステムは、多数のデータパケットを受信し、その記憶および/または送信を適当なやり方で円滑化するために用いることができる。通常、これらのデータパケットは、本システムによりモニタリングされるデータ接続上を、コンピュータの組またはネットワークの間で伝送される。したがって、通常、データパケットは本システム用のものではなく、本システムに向けた、またはそこからのものでもない。
このデータは、記憶されたときに、1つまたは複数の後続するプロセスまたはプロセッサ(図示せず)により処理してもよい。非常に大量のデータを扱うことを可能にするためには、迅速だが構造化されたデータの検索が実現されるように、構造化して記憶することが望ましい。また、単一のプロセッサで十分でないときは複数のプロセッサを設けて、それにより、プロセッサごとにデータを別々に記憶することが望ましい。
そのプロセッサは、データトラフィックを解析し、データを記憶し、かつ/または、プロセッサでの処理の結果に応じて他のネットワーク要素やコンピュータなどにデータを伝送するために、用いることができる。
代わりに、または付加的に、その後再度データを出力することも望ましく、しかも、または代わりに、それによって、そのように出力することが望ましいやり方または順番でデータを記憶することも望ましいであろう。
通常、データパケットは、データパケットのストリームの部分である。2つのプロセッサまたはコンピュータが対話するときに、データパケットのストリームが交換される。このストリームは、ファイルの転送か、またはVoice over IPなどの音声/映像の交換でもよい。ストリームは同様のデータパケットの列であり、データパケットのストリームへの帰属が決定可能であり、ストリームのすべてのデータパケットが所望の順序で一緒に記憶され、その後で同じプロセスまたはプロセッサにより扱われ、かつ/またはその順序で出力されることが望ましい。
受信されたデータフレームのストリームへの帰属は、フレームを解析することで決定される。この解析について、以下でさらに詳細に記載する。
本実施形態は、フレーム/パッケージを解析し、かつ/またはこれらを記憶するタスクを多数のアダプタ12で分割するセットアップを実現することを意図している。
より詳細には、WWWや任意の適当な種類のトランクまたはネットワークなどのネットワーク14から、アダプタ12はデータフレームを受信する。各アダプタ12は、他のアダプタ12とは無関係に複数のフレームを受信する。
好ましくは、すべての(場合によっては1つを除く)アダプタは同じものであり、それぞれ、ネットワークまたはデータケーブルからデータフレームを受信するように構成された要素であるいわゆるPHY20と、受信されたフレームを例えばコンピュータ上のデータバス上で通常用いられる規格に変換するいわゆるMAC回路22とを備える。
データフレームが受信されると、そのフレームは、回路24でタイムスタンプが与えられ、その後、解析回路26に供給される。解析回路26は、そのフレームが準拠する規格に関するデータ(VLANであるかどうか、かつ/またはMPLSのタグが付されているかどうかなど)や、場合によってはそこからのアドレスデータなどの、データフレームに関するデータを導出する。複数の異なる種類の規格が知られており、それらはそれぞれ、どの種類のデータ(アドレス、カプセル化、ペイロード、誤り訂正など)がフレーム内にあり、どこにそうしたデータがあるかを定める。特定の種類のパケットに応じて、異なる種類のデータを導出してもよい。
回路26は、データフレームのデータパケットストリームへの帰属や、中央記憶領域内のキューなどの、データフレームを識別するデータを出力する。そして、データフレームの長さ、ID/キューの識別情報およびデータフレームのタイムスタンプが、要求回路28内で、中央サーバメモリアロケータ、すなわち制御装置16に伝送され、その制御装置16は、データフレームが記憶される記憶領域18内のアドレスを返す。このアドレスは、やはりデータフレームを受信する転送回路30に返され、その後、その転送回路30は、共通のデータバス32を介して、PCI Express(PCIe)プロトコルを実行するなどして、識別されたアドレスにデータフレームを伝送する。この記憶にはダイレクトメモリアクセスを用いてもよく、そのことは、フレームが所望のアドレスに直接記憶され、さらなる解析が必要ないことを意味する。これはデータ記憶領域にデータを記憶する最も速いやり方であるが、物理アドレスがわかっている必要がある。
もちろん、代わりに、回路28は、タイムスタンプやパケットの長さと一緒に、フレームを識別する(種類やアドレスなどの)他の情報を出力してもよく、それによって、アロケータ自体が、フレームが加えられるキューを決定し、したがってフレームが記憶されるアドレスを導出することになる。
アロケータ16とアダプタ12の間における「帯域外」の通信は、低帯域幅の固定通信か、デイジーチェーンのトポロジーか、またはリング型のトポロジーでもよい。以下でさらに記載するように、この通信は、タイムスタンプ回路24のクロックを同期させるためにも用いられる。この通信に適したプロトコルは、10Gbpsのイーサネット(登録商標)のフロントポート(PHY)の帯域幅につきほぼ1Gbpsの全二重の帯域幅を要する標準の64b/66bコーデックでもよい。
上記の実施形態10では、記憶領域18内の任意の個数のキューにデータフレームを記憶してもよいことに留意されたい。どのキューにデータパケットを送信するかは、フレームのその後の運命に依存してもよい。フレームが1つまたは複数のプロセッサにより解析されるならば、プロセッサごとに1つのキューを設けてもよく、パケットを加える前のキューの長さがどのくらいかに応じてフレームをキューに送信してもよい。キューが長ければ、したがってプロセッサが込んでいれば、キューがより短い、したがってあまり込んでいないプロセッサにパケットを与えてもよい。
このやり方では、データパケットの少なくとも一部が、受信された/アクセスされたときと同じ順序でキューに記憶されることが保証される。第1のデータパケットを第2のデータパケットの後に受信したならば、その順序は制御部の遅延処理によって復元されることになり、それによって、2つのデータパケットは、制御部にとって両方が既知になり、割り当てられたアドレスが正しい順序になるまで、処理されない。
ほとんどのデータフレームがストリームに関するならば、同じストリームに関するフレームを異なるプロセッサにより解析するために異なるキューに伝送するのは望ましくないかもしれないことに留意されたい。このやり方では、好ましくは、新たに開始されるストリームからのその後のフレームをすべて、「欠乏状態の」プロセッサに割り当てることにより、プロセッサ間で任意の負荷分散を実行する。この負荷分散と同様に、この代替案について、以下でさらに記載する。
また、フレームが後の時点で記憶領域18から出力されるならば、出力されるフレームを、特定のキューに、フレームが出力される順序で与えてもよい。そうした出力について、以下でさらに記載する。
ある一定のサービスの品質が要求されるならば、任意のキューを、優先度が異なるいくつかのキューに分割して、より優先度の高いフレームがより優先度の低いフレームを追い越し、より迅速に扱われる(処理される、出力される、解析されるなど)ようにしてもよい。
アダプタ12内の負荷分散
図6では、アダプタ12のPHY20や、MAC22、タイムスタンプ割当て24などの一部の要素を、解析器26や、要求元28、転送回路30などの他の要素より高速に動かしてもよいことがわかる。この状況では、要素20〜24から受信しタイムスタンプを記録したデータパケットのフローを多数のパラレルなフローに分割するために、これらのより遅い要素の様々な「具体化」を行うことができる。図6では、単一のPHY20で受信されたデータパケットが、4つのパラレルなフローに分割されている。要素20〜30は直接図示していないが、それらの位置はフロー中に示している。
もちろん、必要があれば、個々のフローの間に負荷分散を実行してもよい。
図6の下側の線は代替案を示し、そこでは、アダプタ12内の単一のフローで取り扱われるデータパケットを、高速のPHY20により受信する。
多数のキューを用いた外部のプロセスまたはプロセッサの負荷分散
記憶領域18のキューからデータを読み取るプロセッサまたはプロセス(図示せず)の負荷分散を、いくつかのやり方で行うことができる。ストリームなどでのデータパケットの順序(受信の順序か、または個々のデータパケット内のデータにより定められる順序)に関連性がないならば、プロセッサごとに単一のキューを設けてもよい。1つのプロセッサキューが一杯になった(これをどのように決定できるかは、以下でさらに記載する)場合は、アロケータ16により、単により多くのデータパケットが(1つまたは複数の)他のキューに伝送されるようにしてもよい。
サービスの品質が要求されるならば、異なる優先度について異なるキューを用いてもよい。
例えばストリームのデータパケットの順序が望み通りに維持された場合については、あるスキームを図5に示しており、そこでは、全体で4つのデータフロー/ストリームを受信する2つのアダプタ12を図示している。
アダプタ12は、記憶領域18に記憶された全体で8つのキュー(no.#0〜#7)にデータパケットを伝送し、それについて、2つのプロセッサ(no.#0,#1)によって、キュー#0〜#3をプロセッサ#0により扱い、キュー#4〜#7をプロセッサ#1により扱うというスキームを用いてデキューイングをする。また、一般に、キュー#0および#4はストリーム#0に用いられ、キュー#1および#5はストリーム#1に用いられ、その他も同様である。
最初に、ストリーム#0のデータパケットがキュー#0に伝送されるが、このキューが次第に一杯になると、アロケータ16は、ストリーム#0からのデータパケットをキュー#4に伝送し始める。しかしながら、プロセッサ#0がキュー#0を空にするまで、プロセッサ#1はそうしたパケットをデキューイングし解析することができない。これを制御するために、ストリームごとに1ビットの4ビットが割り当てられ、その値により、各キューからのパケットをどのプロセッサが扱えるかを決定する。図5では、一番上のビットがストリーム#0へのアクセスを制御しており、その値は「0」なので、これは、プロセッサ#0がこのキューを扱うことができ、したがってキュー#0からのパケットをデキューイングできるということを意味する。
下部の2ビットが「1」であり、プロセッサ#1がストリーム#2および#3を取り扱うことができ、したがってキュー#6および#7からデキューイングできることを示しているとわかる。プロセッサが1つより多くのキューを処理することが可能なときは、ラウンドロビンや、優先度、キューの長さなどの任意の適当なやり方で、次に処理すべきキューを選択してもよい。
その4ビットはプロセッサにより制御され、記憶領域18に記憶される。2つより多くのプロセッサを用いるときは、プロセッサ#1がキューを空にしたら、プロセッサ#1が(1つまたは複数の)対応するビットを変更するか、またはプロセッサ#2が、プロセッサ#1のキューが空であることを認識し、(1つまたは複数の)対応するビットを変更し、次いでその対応するキューのデキューイングを開始するように、プロセッサの順序または順番を決める。制御装置により、同じ順序を用いて、1つのキューが一杯ならばどのキューに次のデータを加えるかを決定する。
そして、キュー内のデータの順序を維持するために、キューを変える場合は、空である新しいキューをアロケータ16が常に選択することになる。
もちろん、2つより多くのプロセッサが単一のキューを取り扱うことができれば、より多くのビットを用いて、フローごとに、どのプロセッサが現在そのフローを処理できるかを示す。
仮想アドレス−物理アドレス
そのセットアップを異なるシステムにより容易に適合させるためには、要求回路28や、転送回路30、アロケータ16だけでなく、記憶領域18内の、またはそれに接続された任意のデキューイング回路構成が仮想アドレス空間で動作することが好ましい。
所与の最大ブロックサイズだけがDMA用に割り当てられるという標準の要件のため、かつそうした割り当てられたブロックが、異なるシステムの、または動作の折に触れて同じ装置のメモリ内の異なるまたはランダムな位置に配置されることがあるという理由で、物理アドレスを用いた直接的な操作は厄介になる。したがって、仮想アドレスが好ましい。
現在、全体の長さが32ビットのアドレス(図2を参照)が2つの部分に分割され、そのうちの一方の部分が、割当て可能な最大サイズのブロック内のすべてのアドレスを指定するように構成されたいくつかのビットをもつ。この例では、最大サイズのブロックまたはセグメントのサイズは4MBであり、アドレスを指定するには22ビットが必要である。仮想アドレスと物理アドレスのこの部分は同じであり、単一のブロック/セグメント内でアドレス指定するのに用いられる。
物理的なブロック/セグメントが記憶領域18内の様々なアドレスに配置されることを避けるために、これらが異なるブロック/セグメントに配置されるかも知れないということにかかわらず、少なくとも各キューについて、仮想アドレスをすべて連続的なアドレスとして定める。したがって、その32ビットは、複数の連続的なアドレスとして解釈されることになる。これは、さらにいくつかの4Mバイトのブロック/セグメントに分割してもよいが、仮想的には連続して配置される。したがって、仮想アドレスは、最初の10ビットの部分が連続的な仮想ブロック/セグメントのうちの1つを示し、最後の22ビットがこのブロック/セグメント内の内部アドレスを指定するものと見ることができる。
物理的な実体の記憶領域18では、セグメント/ブロック内の最後の22ビットのアドレス指定は維持することができるが、仮想アドレスの最初の10ビットの部分は、物理的に割り当てられたブロック/セグメントのうちの1つのアドレス指定または識別情報に単に変換される。
この用途で、仮想アドレスの最初の10ビットを、実際に割り当てられるブロック/セグメントの実際の識別情報(すなわち10ビットのアドレス)に翻訳するために、ルックアップテーブルを設ける。このルックアップテーブル(LUT)は、本実施形態の初期化時に設定してもよい。これを図2に示す。
仮想アドレスを連続したアドレスとして定めるときに、以下で記載する読取り/書出しポインタも仮想アドレス空間内で用いることができる(これによってもやはり、例えばキューの長さの決定がより容易になる)ことに留意されたい。
もちろん、さらに以下でわかるように、プロセス/プロセッサがデータ項目を記憶領域18からデキューイングするならば、そのアドレスとサイズ(または、ふさがれるアドレス指定可能な要素の個数)を、物理アドレスまたは仮想アドレスとしてアロケータ16に戻してもよい。いずれの場合でも、それに応じてアロケータ16は仮想アドレスを決定し、ポインタを更新することができる。
タイミング−アロケータ16とアダプタ12の間におけるクロックの同期
受信されたフレームについてのタイムスタンプを信頼性があり比較可能なものにするためには、アダプタ12とアロケータ16でクロックを同期させることが望ましい。
現在、クロックの位相同期は、当技術分野で通常行われるように、転送されるデータ内に符号化されるが復元可能なクロック信号を、アロケータ16から転送回路30に転送されるデータとともに送信することにより得られる。図3に示すように、このクロック信号を導出し転送回路30と要求回路28の両方で用いるように、アダプタ12は構成される。
位相の同期をとってから、実際のクロック時間は2つのステップで同期がとられる。ステップ1では、アロケータ16にメッセージを伝送する指示をアロケータ16が各アダプタ12に伝送し、次いでアロケータ16は、そのメッセージを受信するときの全体の往復時間を決定する。ステップ2では、アロケータ16は、その時間をアロケータ16のクロック時間に適合させるように、アダプタ12に指示する。
より詳細には、ステップ1は、ローカルのアロケータ伝送時間のログを取りながら、アロケータ16が個々のアダプタ12に指示を伝送することを含む。その指示を受信すると、アダプタ12は直ちにメッセージをアロケータ16に伝送し、アロケータ16は受信時刻のログを取る。その指示とメッセージの内容は重要ではない。さて、アロケータ16は受信時刻から伝送時刻を引き算し、往復時間を導出する。この時間の半分が、アロケータ16と関係するアダプタ12の間におけるデータ伝送の時間遅延とみなされる。もちろん、アロケータ16と様々なアダプタ12の間には、異なる時間遅延がある場合もある。
ステップ2では、決定された時間遅延をアロケータ16の現在のローカル時刻に加えた値をローカルアダプタ時間に設定する指示が、アロケータ16からアダプタ12に伝送される。したがって、アダプタ12がこの指示を受信すると、その間にアロケータ16でのローカル時間が進んだ時刻に、そのローカル時間が設定されることになる。次いで、クロック信号のクロックサイクル内で、アロケータ16とアダプタ12のクロック時間の同期がとられる。位相またはクロックパルスも同期がとられるため、クロックは同期されたままになる。
次いで、この回復されたクロックも、受信されたデータパケットのタイムスタンプの記録に用いられる。したがって、すべてのタイムスタンプは、クロックサイクル内に同期がとられる。
いくつかの指示がアロケータ16とアダプタ12のいずれかとの間で待ち状態になることもあるため、それぞれの指示/要求に識別子が与えられる。現在、その識別子は、クロックと同期してシフトされ、折り返して先頭に戻る0と7の間(3ビット)のタイムスタンプである。したがって、アロケータ16は、指示を送るときにそのタイムスタンプを加え、アダプタ12は、その指示に応答するときに、その応答がどの指示に関するものかをアロケータ16が決定できるように、その応答の中にそのタイムスタンプをコピーすることになる。
もちろん、アロケータ16に対するアダプタ12のこの同期は、任意の個数のアダプタ12について行ってもよい。アダプタ12は、すべてのアダプタ12がアロケータ16と直接通信するスター型の構成か、リング型のトポロジーか、または1列のアダプタ12の端部にアロケータ16がありアダプタ12が1つまたは複数の他のアダプタ12を介してアロケータと通信するデイジーチェーンの構成で、アロケータ16に接続してもよい。
アロケータ16の動作
記憶領域18のそれぞれのキューについて、アロケータ16は、RIFO(Random In First Out)キューと、FIRO(First In Random Out)キューの2つのキューをもつ(図4を参照)。
FIROキューは、すべてのアダプタ12からの、記憶領域18の関係するキューに関する待ち状態の要求を保持する。書出しポインタがFIROキューの次の空いている位置を指し示す。アダプタ12から受信された要求は、この位置で受信され与えられる。
RIFOキューは、記憶領域のキューについてのフレームがいつ出力されるべきかに関する情報を、その順序とともに保持する。RIFOキュー内の各エントリはクロックの時点に関し、読取りポインタがRIFOキューの現在の時点を指し示す。
要求が受信されると、そのタイムスタンプが導出され、RIFOキューの対応する位置または時点に識別子が与えられる。あるアダプタ12からの情報またはそうしたアダプタ12での処理が他のアダプタからの情報/他のアダプタでの処理より時間がかかることがあるという理由で、この位置または時点は、同じ記憶領域のキューについての他のフレームより早い可能性があるということに留意されたい。
図4では、FIROキューの最初のフレームの伝送時刻が次のフレームより後であることがわかる。
RIFOキューの読取りポインタはクロックサイクルごとに1回進み、読取りポインタの新しい位置に識別子が見られるならば、FIROキューの対応する位置がアドレス指定され、伝送指示が関係するアダプタ12に伝送される。次いで、FIROキューの対応するエントリが取り除かれる(または、エンドポインタがこの位置に進む)。
もちろん、FIROキューとRIFOキューを円形のキューとして実装してもよい。
アダプタ12とアロケータ16の間の例えばデータ伝送による任意の時間遅延や、アダプタ12での処理時間を考慮するために、読取りポインタは、同期をとったクロックにより定められる、フレームのタイムスタンプ(それもFIRO内に記憶された要求内で送信される)を与えるのに用いられる実際の時点に対し、遅れた時点に関する。この点に関して、RIFOキュー内の正しい位置にエントリが与えられると、関連した要求のタイムスタンプはもはや必要なくなり、テーブル内で場所を取らないようにするために捨てられる。
したがって、読取りポインタの時刻は、3,4,5,6,7,8,9,10などのいくつかの、またはそれより多くのクロックサイクルだけ、実際のクロックより遅れていることがある。そして、例えば時刻120でタイムスタンプが記録されたフレームを、FIROキューに送信し、時刻120でRIFOキューの中に入れてもよく、そこが時刻130でアドレス指定される(読取りポインタがその位置に進む)。
すべての時刻で、記憶領域18内のキューごとに、アロケータ16は、アダプタ12からの次のフレームが記憶される次のアドレスを識別する書出しポインタと、さらなる解析や送信などのためにデキューイングされるこのキューの次に記憶されるフレームのアドレスを識別する読取りポインタとの2つのポインタをもつ。新しいフレームが記憶されるときに、書出しのアドレスが関係する転送回路30に送信され、すなわち、送信されるその物理アドレスに次の仮想アドレスが変換され、次いで転送回路30がフレームの記憶を円滑化する。同時に、アロケータ16が、フレームのサイズに対応する値だけ、関係する書出しポインタを増加させる。
アロケータ16がアダプタ12にアドレスを戻し、次いでアダプタ12がその中に自己のペースでデータパケット記憶するという理由のため、データが記憶されても書出しポインタを常に更新しなくてもよい。
アダプタ12は、記憶領域18にデータパケットを記憶すると、それに応じてアロケータ16に通知することになる。しかしながら、パケットXがパケットYの直前に記憶されるべき(アドレスがより小さい)だが、パケットYがより迅速に記憶されたならば、アロケータ16はこれを認識し、したがって、今キューに「穴」があるため、データパケットXも記憶されるまで書出しポインタを更新しない。データパケットXが記憶されると、データパケットYの後の最初のアドレスにそのキューの書出しポインタを更新することができる。
例えばプロセッサがさらに解析するフレームを1つまたは複数のキューが保持している状況では、そうしたキューのフレームの個数またはそのキューの充填レベルにより、このプロセッサがどのくらい込んでいるかが示される。これは、仮想アドレスを用いるときに、キューの書出しポインタと読取りポインタの間におけるアドレスの差により簡単に決定される。
記憶領域18からのフレームのデキューイングを、記憶領域に接続されたものなどの任意の装置またはプロセス/プロセッサにより、円滑化してもよい。記憶領域18からフレームをデキューイングすることにより、この装置/プロセス/プロセッサは、それに対応してこのキューの読取りポインタを変化させる。
一般に、フレームを記憶領域18に加えるとアロケータ16は書出しポインタを変化させ、フレームをデキューイングするとプロセス/プロセッサは読取りポインタを変化させる。もちろん、この情報は交換されることが望ましい。いくつかの方法やスキームがある。
ある状況では、データパケット交換用にDMAバス上の帯域幅を残すために、このデータをあまり頻繁に交換しないことが望ましい。この状況では、アロケータ16によりミラーリングまたは同期が開始される。データパケットが記憶領域18に書かれるたびに、アロケータ16は書出しポインタを更新してもよく、それによって、読取りポインタが更新されないため、アロケータ16には、個々のキュー(のデータフレームの個数または充填レベル)が増加するように見える。
もちろん、更新された書出しポインタを時々交換してもよいが、キューのサイズが予め定められた限界を超えるまでこれらのポインタを更新しないことが好ましい。このとき、アロケータ16は、キューの実際のサイズについての、したがって(1つまたは複数の)プロセス/プロセッサがどのくらい込んでいるかについての更新されたデータを取得するために、記憶領域18または(1つまたは複数の)プロセス/プロセッサからの読取りポインタを更新する。
ある状況では、更新された書出しポインタを(1つまたは複数の)プロセス/プロセッサが同時に受信してもよい。このやり方では、(1つまたは複数の)プロセス/プロセッサは、追加のパケットが記憶され、解析/デキューイングの準備ができたという情報がくる前にすべてのキューを空にした場合は、欠乏状態になり得る。これは、アロケータ16で書出しポインタを更新するときに、プロセス/プロセッサまたは記憶領域18で書出しポインタを更新することにより、避けることができる。そして、プロセス/プロセッサはキュー情報を更新し、データパケットがある限り動作し続ける。
あるいは、アロケータ16と(1つまたは複数の)プロセス/プロセッサがよりよく「通知された」状態を保つために、読取りポインタもより頻繁に更新してもよい。書出し/読取りポインタのこの同期は、バス32が込んでいないときに、または例えば最後の同期から最大遅延が経過したときに、行うことができる。
もちろん、キューまたは記憶領域18は円形でもよく、必要があれば特定の空き領域にキューを割り当ててもよい。
もちろん、1つのアダプタ12が同じストリームに関する多数のデータフレームを続けざまに受信する場合は、その後アロケータ16がRIFOキュー内の関連した位置で与えることになるいくつかの要求を、要求回路28が伝送する。関連するアダプタ12がRIFOキューの各エントリで識別される場合は、同じアダプタ12に関し、したがってこのアダプタ12だけに戻るRIFO内の多数の近接したエントリを、アロケータ16が識別してもよく、転送回路30が、この単純な要求に基づいて、キュー(アドレスデータ)だけでなく送信されるパケットの個数も識別する。
アダプタ12を介した記憶領域18からのデータの伝送
もちろん、記憶領域18内の1つまたは複数のキューに記憶されたデータパケットをデキューイングし、バス32を介して伝送し、アダプタ12を介して出力してもよい。記憶領域18に記憶されるデータパケットを記憶する場合と同様に、これはDMAを介して行ってもよく、それによって、例えば記憶領域18のプロセッサから介入されることなく、アダプタ12は記憶領域18内のデータパケットを直接読み取る。
パケットをデキューイングするスキームは、記憶領域18へのパケットの記憶について上述したものと同様である。
記憶領域18内のいくつかのキューからのデータパケットを、同じアダプタ12を介して出力してもよい。これらは、ラウンドロビンや、優先度、または任意の他の優先順位付けなどの任意の所望のスキームを用いて決めてもよい。アダプタ12では、異なるフローや、キュー、優先度などについて任意の個数のTxポートかまたはFIFOを設けてもよく、これらからのパケットを、単一のPHYかまたは様々なPHYを介して出力してもよい。
ある状況では、記憶領域18にデータを記憶するときと同様に、キューの読取り/書出しポインタが記憶領域18に記憶される。同じやり方で、アダプタ12は、読取り/書出しポインタをミラーリングし、データがあるように見える限りキューからデータをデキューイングし続けてもよい。ミラーリングは、上記のように、キューが詰まりすぎているかまたは空きすぎているように見えるときなどに、既定の最大時間間隔で行ってもよい。
プロセス/プロセッサは、読取りポインタと書出しポインタを常時監視してもよく、上記のように、アダプタ12が込みすぎているので(1つまたは複数の)関係するキューについてのデータパケットを別のキューと別のアダプタ12に送信すべきかどうかということを決定してもよい。
別の状況では、プロセッサまたはプロセスは、アダプタ12を介してどのデータパケットまたはアドレスを出力すべきかを定めてもよく、そうしたアドレスの指示をアダプタ12に送信してもよい。
1つのやり方は、プロセスまたはプロセッサが、プロセス/プロセッサにより更新された読取り/書出しポインタの特定の組を用いて、アダプタによりデキューイングされる特定のキューにそうしたパケットをコピーし、それをアダプタ12にミラーリングすることである。
別のやり方は、データパケットをコピーしないことに着目する。この状況では、データパケットが元のキューに維持されるが、データパケットのデキューイング用に別の組の読取り/書出しポインタを設けてもよい。実際、キューの元の読取り/書出しポインタが維持されるならば、もう1つのポインタが必要になる。その追加のポインタは、解析中にプロセス/プロセッサがキューの中のどこに来たかということを、したがって、読取りポインタと書出しポインタの間のアドレスのうちのどれをデキューイングしてよいかということを示す。この追加のポインタは、プロセッサ/プロセスにより維持され、アダプタに送信されるかまたは例えばDMAを用いてアダプタにより読み取られ、いつアドレスがデキューイングされたかを関係するアダプタがプロセッサ/プロセスまたは制御回路16に通知する。

Claims (20)

  1. データパケットを受信し送信するための装置であって、制御部および物理的に分かれた複数のデータ送受信要素を備え、
    前記複数のデータ送受信要素がそれぞれ、
    ・ データパケットを受信するかまたはデータパケットにアクセスするための手段と、
    ・ 前記データパケットの受信/アクセスの時点を決定するための手段であって、計時手段を備え、すべての決定手段の前記計時手段が同期している決定手段と、
    ・ 前記時点を含む第1の情報を出力するための手段と、
    ・ 前記データパケットの少なくとも一部を記憶するためのアドレスを受信するための手段と、
    ・ 前記アドレスに前記データパケットの前記少なくとも一部が記憶されることを円滑化するための手段と
    を備え、
    前記制御部が、
    ・ 前記第1の情報を受信し、前記データパケットの受信/アクセスの前記時点を導出するための手段と、
    ・ 前記決定手段の前記計時手段と同期したクロックと、
    ・ 受信された第1の情報のそれぞれについて、導出された前記時点で、または導出された前記時点の後予め定められた時間の遅延を加えた時点で、アドレスを決定し、関係する前記データ送受信要素の前記受信手段に前記アドレスを戻すための手段と
    を備える装置。
  2. 請求項1に記載の装置と、データを記憶し得る複数のアドレスを含む記憶領域とを備えるアセンブリであって、前記記憶領域内の受信された前記アドレスに前記データパケットの前記少なくとも一部を記憶するように前記円滑化手段が構成されているアセンブリ。
  3. 別個のアドレスグループとして前記記憶領域内に複数のキューが定められ、前記制御部の前記決定手段が、関係する前記データパケットを加えるキューを前記第1の情報から決定し、関係する前記キューの前記アドレスグループからアドレスを選択するように構成されている、請求項2に記載のアセンブリ。
  4. 決定された前記キュー内のアドレスを、受信/アクセスの順序で前記データパケットが前記キューに記憶されるように決定するように、前記制御部の前記決定手段が構成される、請求項3に記載のアセンブリ。
  5. 前記記憶領域からデータを読み取るかまたはデキューイングするための手段をさらに備え、前記記憶手段の1つまたは複数のアドレスであり前記データが読み取られた/デキューイングされたアドレスに関する第2の情報を出力するための手段を、前記読取手段が備える、請求項3または4に記載のアセンブリ。
  6. 各キューについて、データを加える次のアドレスを識別する書出しポインタと、前記キューから読み取られる/デキューイングされる次のアドレスを識別する読取りポインタとを保持するように前記制御部が構成され、
    前記制御手段が、
    ・ アドレスが決定されたときに、決定された前記アドレスが関係する前記キューの前記書出しポインタを更新し、
    ・ 受信された第2の情報に基づいて、データがデキューイングされた前記キューの前記読取りポインタを更新し、
    ・ 前記キューの前記読取りポインタおよび書出しポインタに基づいて、前記アドレスも決定する
    ように構成される、請求項4または5に記載のアセンブリ。
  7. キューの充填レベルが予め定められた値を超えたときに、前記読取り/デキューイング手段の前記出力手段を指示して、データが読み取られた前記アドレスに関する前記第2の情報を出力させるように、前記制御手段が構成されている、請求項6に記載のアセンブリ。
  8. アドレスが決定されたときに、更新された書出しポインタに関する情報を前記読取り/デキューイング手段に出力するように、前記制御手段が構成されている、請求項5から7のいずれか1項に記載のアセンブリ。
  9. 前記データパケットの前記少なくとも一部が記憶されたときに前記制御部に通知するように前記円滑化手段が構成され、前記円滑化手段により通知されたときに、更新された書出しポインタに関する情報を前記読取り/デキューイング手段に出力するように前記制御部が構成されている、請求項5から8のいずれか1項に記載のアセンブリ。
  10. 予め定められた個数の物理アドレスのグループに前記記憶領域の前記キューの前記アドレスが分けられ、前記グループが不連続に配置され、前記キューを実現する前記アドレスが、連続するアドレスとして定められた仮想アドレスであり、仮想アドレスと物理アドレスの間の変換を行うための手段を前記制御手段がさらに備える、請求項3から9のいずれか1項に記載のアセンブリ。
  11. 請求項1に記載の装置を動作させる方法であって、
    最初に、すべての決定手段の前記計時手段を同期させるステップと、
    その後に、
    各データ送受信要素が、
    ・ データパケットを受信またはデータパケットにアクセスするステップと、
    ・ 前記データパケットの受信/アクセスの時点を決定するステップであって、前記データ送受信要素の前記計時手段から前記受信の時刻を受信することを含むステップと、
    ・ 前記時点を含む第1の情報を出力するステップと、
    ・ 前記データパケットの少なくとも一部を記憶するためのアドレスを受信するステップと、
    ・ 前記アドレスに前記データパケットの前記少なくとも一部が記憶されることを円滑化するステップと、
    前記制御部が、
    ・ 前記第1の情報を受信し、前記データパケットの受信/アクセスの前記時点を導出するステップと、
    ・ 受信された第1の情報のそれぞれについて、受信/アクセスの時点で、または受信/アクセスの時点の後予め定められた時間の遅延を加えた時点で、アドレスを決定し、関係する前記データ送受信要素の前記受信手段に前記アドレスを戻すステップと
    を含む方法。
  12. 前記円滑化するステップが、データを記憶し得る複数のアドレスを含む前記記憶領域内の受信された前記アドレスに前記データパケットの前記少なくとも一部を記憶することを含む、請求項11に記載の方法。
  13. 前記記憶領域の中で別個のアドレスグループとして複数のキューが定められ、前記決定するステップが、関係する前記データパケットを加えるキューを前記第1の情報から決定し、関係する前記キューの前記アドレスグループからアドレスを選択することを含む、請求項12に記載の方法。
  14. 前記データパケットの前記少なくとも一部がその受信/アクセスの順序で1つまたは複数の前記キューの中に記憶されるようにアドレスを決定することを、前記アドレスを決定する前記ステップが含む、請求項13に記載の方法。
  15. 前記記憶領域からデータを読み取るかまたはデキューイングするステップをさらに含み、前記記憶手段の1つまたは複数のアドレスであり前記データが読み取られた/デキューイングされたアドレスに関する第2の情報を出力することを、前記読み取るステップが含む、請求項12または13に記載の方法。
  16. 各キューについて、データを加える次のアドレスを識別する書出しポインタと、前記キューから読み取られる/デキューイングされる次のアドレスを識別する読取りポインタとを前記制御部が保持し、
    前記制御手段が、
    ・ アドレスが決定されたときに、決定された前記アドレスが関係する前記キューの前記書出しポインタを更新し、
    ・ 受信された第2の情報に基づいて、データがデキューイングされた前記キューの前記読取りポインタを更新し、
    ・ 前記キューの前記読取りポインタおよび書出しポインタに基づいて、前記アドレスも決定する、請求項13または15に記載の方法。
  17. キューの充填レベルが予め定められた値を超えたときに、前記制御手段が前記読取り/デキューイング手段を指示して、データが読み取られた前記アドレスに関する前記第2の情報を出力させる、請求項16に記載の方法。
  18. 前記決定するステップが、更新された書出しポインタに関する情報を前記読取り/デキューイング手段に出力することを含む、請求項15から17のいずれか1項に記載の方法。
  19. 前記データパケットの前記少なくとも一部が記憶されたときに前記制御部に通知することを前記円滑化するステップが含み、前記円滑化手段により通知されたときに、更新された書出しポインタに関する情報を前記制御部が前記読取り/デキューイング手段に出力する、請求項15から18のいずれか1項に記載の方法。
  20. 前記記憶領域の前記キューの前記アドレスが、予め定められた個数の物理アドレスのグループに分けられ、前記グループが不連続に配置され、前記キューを実現する前記アドレスが、連続するアドレスとして定められた仮想アドレスであり、前記決定するステップが、仮想アドレスと物理アドレスの間の変換を行うことをさらに含む、請求項12から19のいずれか1項に記載の方法。
JP2012541528A 2009-12-04 2010-12-06 タイムスタンプの記録と中央制御装置を用いた多数のアダプタによるデータフレームの分散処理 Active JP5711257B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26678109P 2009-12-04 2009-12-04
US61/266,781 2009-12-04
PCT/EP2010/068959 WO2011067405A1 (en) 2009-12-04 2010-12-06 Distributed processing of data frames by mulitiple adapters using time stamping and a central controller

Publications (2)

Publication Number Publication Date
JP2013513270A true JP2013513270A (ja) 2013-04-18
JP5711257B2 JP5711257B2 (ja) 2015-04-30

Family

ID=43754693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012541528A Active JP5711257B2 (ja) 2009-12-04 2010-12-06 タイムスタンプの記録と中央制御装置を用いた多数のアダプタによるデータフレームの分散処理

Country Status (8)

Country Link
US (1) US9407581B2 (ja)
EP (1) EP2507950B1 (ja)
JP (1) JP5711257B2 (ja)
KR (1) KR101738620B1 (ja)
CN (1) CN102742220B (ja)
BR (1) BR112012013507A2 (ja)
DK (1) DK2507950T3 (ja)
WO (1) WO2011067405A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101738620B1 (ko) 2009-12-04 2017-05-22 나파테크 에이/에스 시간 스탬핑 및 중앙 제어기를 사용한 복수의 어댑터들에 의한 데이터 프레임들의 분산 처리
EP2668753B1 (en) * 2011-01-28 2017-10-04 Napatech A/S An apparatus and a method for receiving and forwarding data packets
WO2014014520A1 (en) * 2012-07-18 2014-01-23 Intel Corporation Measuring time offsets between devices with independent silicon clocks
CN104025549B (zh) * 2012-12-18 2017-04-05 英特尔公司 与服务器事务延迟信息相关的技术
EP2858318B1 (en) 2013-09-09 2017-11-08 Intercapital Services North America LLC Method and apparatus for order entry in an electronic trading system
CN104052831A (zh) * 2014-06-11 2014-09-17 华为技术有限公司 一种基于队列的数据传输方法、装置及通信系统
DE102015121940A1 (de) * 2015-12-16 2017-06-22 Intel IP Corporation Eine Schaltung und ein Verfahren zum Anhängen eines Zeitstempels an eine Tracenachricht
CN108108148B (zh) * 2016-11-24 2021-11-16 舒尔电子(苏州)有限公司 一种数据处理方法和装置
CN106921996B (zh) * 2017-05-12 2019-07-26 电信科学技术研究院 一种层2统计量的统计方法、cu及du
CN110247750B (zh) * 2018-09-27 2022-07-08 浙江大华技术股份有限公司 一种网络传输装置及其状态同步方法
US20220043588A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Localized memory traffic control for high-speed memory devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233899A (ja) * 1985-04-09 1986-10-18 富士通株式会社 デ−タ通信システム
JPS62133555A (ja) * 1985-12-06 1987-06-16 Nippon Telegr & Teleph Corp <Ntt> Dmaアドレス制御方式
JPH03283745A (ja) * 1990-03-30 1991-12-13 Fujitsu Denso Ltd データ収集制御方式
JPH08223781A (ja) * 1995-02-08 1996-08-30 Fuji Electric Co Ltd 非同期受信データの読込方法
JP2000174723A (ja) * 1998-12-08 2000-06-23 Ando Electric Co Ltd 通信制御方法及びその装置
US20060072578A1 (en) * 2002-01-11 2006-04-06 Vic Alfano Reordering packets

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998002013A1 (en) * 1996-07-09 1998-01-15 International Business Machines Corporation Switching device, method and apparatus
US7200146B2 (en) * 2001-08-17 2007-04-03 Intel Corporation System and method of IP packet forwarding across directly connected forwarding elements
US7284111B1 (en) 2002-04-17 2007-10-16 Dinochip, Inc. Integrated multidimensional sorter
EP1654819B1 (en) 2003-08-15 2013-05-15 Napatech A/S A data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network
US8265091B2 (en) 2004-08-18 2012-09-11 Avaya Inc. Traffic multiplexing using timestamping
US7457296B2 (en) * 2004-09-30 2008-11-25 Intel Corporation Method and apparatus for sorting packets in packet schedulers using a connected trie data structure
WO2007011130A1 (en) 2005-07-15 2007-01-25 Samsung Electronics Co., Ltd. Time synchronizing method and apparatus based on time stamp
US20070237146A1 (en) * 2006-03-31 2007-10-11 Ilija Hadzic Methods and apparatus for modeling and synthesizing packet processing pipelines
US8205064B2 (en) 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US20090172212A1 (en) 2007-12-31 2009-07-02 Stanton Michael F System and method for managing input/output requests in data processing systems
JP5152201B2 (ja) 2008-01-21 2013-02-27 富士通株式会社 パケット処理装置およびパケット処理プログラム
KR101738620B1 (ko) 2009-12-04 2017-05-22 나파테크 에이/에스 시간 스탬핑 및 중앙 제어기를 사용한 복수의 어댑터들에 의한 데이터 프레임들의 분산 처리

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233899A (ja) * 1985-04-09 1986-10-18 富士通株式会社 デ−タ通信システム
JPS62133555A (ja) * 1985-12-06 1987-06-16 Nippon Telegr & Teleph Corp <Ntt> Dmaアドレス制御方式
JPH03283745A (ja) * 1990-03-30 1991-12-13 Fujitsu Denso Ltd データ収集制御方式
JPH08223781A (ja) * 1995-02-08 1996-08-30 Fuji Electric Co Ltd 非同期受信データの読込方法
JP2000174723A (ja) * 1998-12-08 2000-06-23 Ando Electric Co Ltd 通信制御方法及びその装置
US20060072578A1 (en) * 2002-01-11 2006-04-06 Vic Alfano Reordering packets

Also Published As

Publication number Publication date
US20120327949A1 (en) 2012-12-27
BR112012013507A2 (pt) 2016-06-07
DK2507950T3 (en) 2018-05-28
JP5711257B2 (ja) 2015-04-30
EP2507950B1 (en) 2018-02-21
EP2507950A1 (en) 2012-10-10
KR101738620B1 (ko) 2017-05-22
WO2011067405A1 (en) 2011-06-09
US9407581B2 (en) 2016-08-02
KR20120113744A (ko) 2012-10-15
CN102742220B (zh) 2015-09-09
CN102742220A (zh) 2012-10-17

Similar Documents

Publication Publication Date Title
JP5795592B2 (ja) 中央制御装置により制御されるデータパケットを受信し記憶する装置および方法
JP5711257B2 (ja) タイムスタンプの記録と中央制御装置を用いた多数のアダプタによるデータフレームの分散処理
JP5749732B2 (ja) キューの充填レベルの更新を制御することにより帯域幅を節約しながらデータを受信し記憶するアセンブリおよび方法
US10425359B2 (en) Packet data traffic management apparatus
JP5816301B2 (ja) データパケットを受信及び転送する装置及び方法
US20130070584A1 (en) Network impairment unit for concurrent delay and packet queue impairments
US20060072578A1 (en) Reordering packets
KR20180031569A (ko) 네트워크에서의 분산 프로세싱
JP2009260535A (ja) パケット転送装置およびパケット破棄方法
WO2012163395A1 (en) An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks
US11310164B1 (en) Method and apparatus for resource allocation
JP5814253B2 (ja) 装置、アセンブリ及びデータパケットの読み出し及び順番付けをする複数の解析手段を操作する方法
WO2011067404A1 (en) An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks
WO2019095942A1 (zh) 一种数据传输方法及通信设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140919

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150305

R150 Certificate of patent or registration of utility model

Ref document number: 5711257

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250