(57)【特許請求の範囲】
【請求項１】
データパケットを受信及び転送する装置であって、制御ユニットと、データを保存してもよい複数のアドレスを有するストレージと、複数のデータ受信及び転送要素と、を有し、前記複数のデータ受信及び転送要素は、それぞれ、
−データパケットを受信するか又はこれにアクセスする手段と、
−前記データパケットに関係する第１情報を出力する手段と、
−前記データパケットの少なくとも一部分を保存するアドレスを受信する第１受信手段と、
−要求情報を受信すると共に返信情報を生成する第２受信手段と、
−前記受信したアドレスにおいて前記ストレージ内に前記データパケットの前記少なくとも一部分を保存し、且つ、既定のアドレスにおいて前記ストレージ内に前記返信情報を保存する手段であって、前記返信情報は、前記データパケットの前記少なくとも一部分が保存されている受信したアドレスに関する情報を表す、手段と、
を有し、前記制御ユニットは、
−前記第１情報を受信する手段と、
−少なくとも前記第１情報に基づいてアドレスを判定し、且つ、前記アドレスを前記関係するデータ受信及び転送要素の前記第１受信手段に返す手段と、
−前記データ受信及び転送要素のうちの少なくとも１つに前記要求情報を出力する手段と、
−前記要求情報を前記少なくとも１つのデータ受信及び転送要素に出力した後に、前記少なくとも１つのデータ受信及び転送要素に返されたアドレスに関係する情報を保持する手段と、
−前記データパケットの前記少なくとも一部分が保存される前記ストレージ内のアドレスに関係した前記保持された情報に基づいて、前記ストレージ内の前記既定のアドレスから、前記返信情報及び更新情報を読み取る手段と、
を有する、装置。
【請求項２】
前記保存手段は、前記データパケットの前記少なくとも一部分が前記要求情報の受信の前に受信されたすべてのアドレスにおいて保存された後にのみ、前記返信情報を保存するように適合されている、請求項１に記載の装置。
【請求項３】
それぞれの受信及び転送要素は、前記データパケットの受信／アクセスの時点を判定する手段を更に有し、前記時点判定手段は、クロック手段を有し、すべての時点判定手段の前記クロック手段は、同期化されている、請求項１に記載の装置。
【請求項４】
１つ又は複数のキューが別個のアドレスのグループとして前記ストレージ内に規定されており、前記制御ユニットの前記判定手段は、前記第１情報から前記関係するデータパケットを追加するべきキューを判定すると共に前記関係するキューの前記アドレスのグループからアドレスを選択するように、適合されている、請求項１から請求項３までのいずれか一項に記載の装置。
【請求項５】
前記制御ユニットの前記判定手段は、前記データパケットが受信／アクセスの順序で前記キュー内に保存されるように、前記判定されたキュー内のアドレスを判定するべく適合されている、請求項４に記載の装置。
【請求項６】
前記ストレージからデータを読み取るか又は取り出す手段を更に有し、前記読取手段は、そのデータが読み取られた／取り出された前記保存手段の１つ又は複数のアドレスに関係する第３情報を出力する手段を有する、請求項１から請求項５までのいずれか一項に記載の装置。
【請求項７】
前記制御ユニットは、それぞれのキューごとに、データを追加するべき次のアドレスを識別する書込みポインタと、前記キューから読み取るべき／取り出すべき次のアドレスを識別する読取りポインタと、を保持するように適合されており、
前記読取／更新手段は、
−受信した返信情報に基づいて前記キューの前記書込みポインタを更新し、
−受信した第３情報に基づいてデータが取り出された前記キューの前記読取りポインタを更新するように、適合されており、
前記判定手段は、前記キューの前記読取り及び書込みポインタにも基づいて前記アドレスを判定するように適合されている、
請求項４及び６に記載の装置。
【請求項８】
前記読取／更新手段は、前記読取り及び書込みポインタの間のすべてのアドレスを表す返信情報が受信された場合にのみ、前記書込みポインタをアドレスに対して更新するように適合されている、請求項７に記載の装置。
【請求項９】
制御ユニットと、複数のデータ受信及び転送要素と、データを保存してもよい複数のアドレスを有するストレージと、を有する装置を動作させる方法であって、
受信及び転送要素が、
−データパケットを受信するか又はこれにアクセスするステップと、
−前記データパケットに関係する第１情報を出力するステップと、
−前記データパケットの少なくとも一部分を保存するアドレスを受信するステップと、
−前記アドレスにおいて前記ストレージ内に前記データパケットの前記少なくとも一部分を保存するステップと、
−要求情報を受信し、且つ、返信情報を生成するステップと、
−既定のアドレスにおいて前記ストレージ内に前記返信情報を保存するステップであって、前記返信情報は、前記データパケットの前記少なくとも一部分が保存されている受信したアドレスに関する情報を表す、ステップと、
前記制御ユニットが、
−前記第１情報を受信するステップと、
−少なくとも前記第１情報に基づいて、アドレスを判定し、前記アドレスを保持し、且つ、前記アドレスを前記関係するデータ受信及び転送要素に返すステップと、
−前記要求情報を前記データ受信及び転送要素に出力するステップと、
−前記データパケットの前記少なくとも一部分が保存される前記ストレージ内のアドレスに関係した前記保持された情報に基づいて、前記ストレージから、前記既定のアドレスからの前記返信情報及び更新情報を読み取るステップと、
を有する方法。
【請求項１０】
前記保存ステップは、前記データパケットの前記少なくとも一部分が前記要求情報の受信の前に受信されたすべてのアドレスにおいて保存された後にのみ、前記返信情報を保存するステップを有する、請求項９に記載の方法。
【請求項１１】
前記受信及び転送要素は、前記データパケットの受信／アクセスの時点を更に判定し、前記時点判定手段は、クロック手段を有し、すべての時点判定手段の前記クロック手段は、同期化されている、請求項９又は請求項１０に記載の方法。
【請求項１２】
複数のキューが別個のアドレスのグループとして前記ストレージ内に規定されており、前記判定ステップは、前記第１情報から前記関係するデータパケットを追加するべきキューを判定するステップと、前記関係するキューの前記アドレスのグループからアドレスを選択するステップと、を有する、請求項９から請求項１１までのいずれか一項に記載の方法。
【請求項１３】
前記判定ステップは、前記データパケットが受信／アクセスの順序で前記キュー内に保存されるように、前記判定されたキュー内のアドレスを判定するステップ、を有する、請求項１２に記載の方法。
【請求項１４】
前記ストレージからデータを読み取るか又は取り出すステップ、を更に有し、前記読取ステップは、そのデータが読み取られた／取り出された前記保存手段の１つ又は複数のアドレスに関係する第３情報を出力するステップ、を有する、請求項９から請求項１３までのいずれか一項に記載の方法。
【請求項１５】
前記判定ステップは、それぞれのキューごとに、データを追加するべき次のアドレスを識別する書込みポインタと、前記キューから読み取るべき／取り出すべき次のアドレスを識別する読取りポインタと、を判定するステップ、を有し、
前記読取／更新ステップは、
−受信した返信情報に基づいて前記キューの前記書込みポインタを更新するステップと、
−受信した第３情報に基づいてデータが取り出された前記キューの読取りポインタを更新するステップと、
を有し、前記判定ステップは、前記キューの前記読取り及び書込みポインタにも基づいて前記アドレスを判定するステップ、を有する、
請求項１２及び１４に記載の方法。
【請求項１６】
前記判定ステップは、前記読取り及び書込みポインタの間のすべてのアドレスに関係する返信情報が受信された場合にのみ、前記書込みポインタをアドレスに対して更新するステップ、を有する、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパケットを受信及び転送する装置及び方法に関し、且つ、更に詳しくは、それぞれがデータパケットを共通バス上において共通ストレージに対して転送する複数の別個のアダプタ上におけるデータパケットの受信に関する。
【発明の概要】
【課題を解決するための手段】
【０００２】
第１の態様においては、本発明は、請求項１に記載の装置に関する。
【０００３】
この文脈においては、データパケットは、ネットワーク、データケーブル、データバス、幹線（trunk）、又はこれらに類似したものの上部において送信されるか又はこれらによって搬送される任意のタイプのデータユニットであってよい。通常、データユニットは、その傘下にＵＤＰ及びＴＣＰデータパケットなどのいくつかの異なる規格又はデータパケットタイプが存在する Ethernet 規格などの１つ又は複数のデータ規格に準拠している。データパケットは、通常、データパケット内の明確に規定された又は既知の位置にそれぞれが配置されるアドレスデータ、ペイロード、又はこれらに類似したものなどのいくつかの異なる情報項目又はタイプを有する。このような位置及びタイプは、通常、データパケットタイプごとに異なることになるが、通常は、データパケットタイプと、従って、その個別のコンテンツの位置は、実際のデータパケットから判定してもよく、その後に、アドレスデータ及び／又はペイロードなどの個別のデータ項目を導出してもよく、変更してもよく、且つ／又は、分析において使用してもよい。タイプ又は規格は、例えば、パケットの特定のデータ項目がタイプ／規格を識別している際には、データパケットから直接的に導出してもよく、或いは、データパケットのデータ項目のタイプ及び位置の認識とそのようなデータがそのような１つ又は複数の位置において見出されてもよいデータパケットの１つ又は複数のタイプ又は１つ又は複数の規格のその後の判定とに基づいたものなどのように、データパケットから導出されたデータから導出してもよい。
【０００４】
受信されるデータパケットは、多数の方式により、且つ、いくつかの理由から、予め順序付けしておいてもよい。通常、コンピュータ間におけるデータ交換は、ファイル転送、ＴＣＰ転送、ＶｏＩＰ、又はこれらに類似したものであり、この場合には、個別のパケットの順序が重要である。通常、このような転送は、ストリームと呼称される。
【０００５】
データパケットのストリームとは、通常、単一の送信機から１つ又は複数の受信機に送信されるデータパケットのシーケンスである。これらのデータパケットは、例えば、パケットのペイロードである相対的に小さな部分として送信される単一のファイル又はこれに類似したものに関係している。従って、送信機及び受信機、又は任意の中間のネットワーク要素は、通常、パケット内にも表現されるアドレスを有することになる。又、データパケット内には、個々のパケット規格に応じて、情報を識別するその他のストリームが存在してもよい。
【０００６】
従って、ストリームは、例えば、アドレス及び／又は情報を識別するストリームに基づいて識別してもよく、これにより、一貫性を有する方式によって使用された場合には、同一の情報を導出してもよく、且つ、任意の後続のプロセスにより、その情報のみからストリームを識別してもよい。別の状況においては、データパケットには、連番又はタイムスタンプなどのその順序を判定する情報をその内部に提供してもよい。この場合には、パケットを順序付けするために、この情報を使用してもよい。
【０００７】
受信及び転送要素が物理的に別個であり、これにより、必要に応じて、これらを除去又は交換してもよいことが好ましいであろう。更には、装置の機能及び能力を適合させるために、更に多くの数の又は少ない数のこのような要素を提供してもよい。
【０００８】
制御ユニットは、別個の回路であってもよく、或いは、受信及び転送要素のうちの１つに接続してもよく、又は、場合によっては、その内部において実施してもよい。残りのデータ受信及び転送要素は、同一のものであってもよい。
【０００９】
当然のことながら、データ受信及び転送要素と制御ユニットとは、いずれも、互いに対して固定してもよく、且つ、同一のハウジング又はサーバ内に提供してもよい。これらは、データを交換することができるように、所与のエリアにわたって分散されると共にＷＷＷなどの又はこれを含む１つ又は複数のネットワークを介して互いに（有線又は無線で）接続された個々の回路又はネットワークユニットから構成してもよい。この交換は、ＴＣＰ、Ethernet、Bluetooth、又はこれらに類似したものなどの任意のデータ転送プロトコルの制御下におけるものであってもよく、且つ、有線又は無線の任意のタイプのデータ転送を使用するものであってもよい。当然のことながら、システムの個別の手段は、それぞれ、ＦＰＧＡ、ＡＳＩＣ、又はこれらに類似したものなどの１つ又は複数のプロセッサによって形成してもよく、或いは、単一のこのようなプロセッサが、複数の手段を形成すると共に複数のステップを実行してもよい。
【００１０】
一般に、ストレージは、モノリシックな保存ユニット又は空間的に分離された、いくつかの保存要素によって構成されたものなどの任意の形態の保存ユニットであってもよい。通常の保存技術は、ハードドライブ、フロッピーディスク、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、Ｆｌａｓｈ、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、メモリカード、又はこれらに類似したものに基づいている。
【００１１】
別個の保存ユニットが提供される場合には、アドレスは、実際の保存ユニットの識別情報とその内部の「ローカルアドレス」との両方を表すことになる。
【００１２】
システムの機能は、データの転送のみである必要はない。更に後述するように、データパケットの分析などの更なる処理を実行してもよい。
【００１３】
受信手段は、通常、ネットワークからデータパケットを受信するように適合されたある種のタイプのネットワーク要素となる。従って、この手段は、Ethernet データパケットの受信を要する場合には、ＰＨＹ、ＭＡＣ、又はこれらに類似したものを有してもよい。多数のデータプロトコルが知られているが、当業者であれば、いずれの受信手段がいずれのプロトコルとの関係において有用であるかを知っていよう。受信手段は、データパケットを保存してもよく、或いは、更なる処理／保存／搬送のために、これらのデータパケットを遅延を伴うことなしに出力してもよい。しばしば、遅延を考慮するべく、バッファが提供されるが、これは、要件ではない。
【００１４】
データパケット及び返信情報の少なくとも一部分を保存するための保存手段によって使用されると共に返信情報を読み取るためにコントローラによって使用されるものとは別個のバスなどの通信手段上において、第１情報、アドレス、及び要求情報を転送及び送信してもよい。
【００１５】
第１情報は、パケットのアドレス（ＭＡＣ又はＩＰアドレス、受信機又は送信機）、そのサイズ／長さ、ストリームに対するその帰属又はストリーム内におけるその位置、その到来時刻、又はこれらに類似したものなどのパケットの任意の関連する特徴に関係したものであってもよい。当然のことながら、任意の数のこのような特徴により、第１情報の一部分を形成してもよい。
【００１６】
又、コントローラによって判定されると共に第１受信手段によって受信されるアドレスは、単一のストレージ又は複数の相互接続されたストレージ内の絶対アドレス、ストレージに関係するアドレスなどの相対アドレス、又はストレージ内のアドレスなどの任意のタイプのアドレスであってもよい。保存のための実際のアドレスを得るために、アドレスを更に変換してもよいことに留意されたい。アドレスは、例えば、規定の順序においてデータが保存されるストレージ内のキュー又はアドレス空間又はエリアの識別情報であってもよい。
【００１７】
従って、保存手段は、保存対象のデータパケットの、全体ではない場合には、各部分を選択し、且つ、これを保存してもよい。当然のことながら、例えば、受信機に対して送信されたデータ又はその一部分が望ましくない場合には、ストレージ内の空間を節約するために、そのアドレス部分を削除してもよく、或いは、保存しなくてもよい。
【００１８】
返信情報は、データパケットの少なくとも一部分が保存されている受信したアドレスに関する情報を表している。制御ユニットは、例えば、個別の受信及び転送要素に対して予約又は転送されたアドレスを保存又は保持している。これらのアドレス、又はこれらを表す情報は、任意のタイプのストレージ内に保持してもよく、且つ、それぞれの受信及び転送要素ごとに別個のストレージ内に、又は単一のストレージ内に、保持してもよい。これらのアドレスは、それ自体として表現してもよく、或いは、アドレスがそれから導出されてもよい情報を保持してもよい。
【００１９】
保存手段が返信情報をストレージに対して出力する利点は、返信情報を出力する際に、いずれのアドレスが少なくともストレージに対して既に転送済みであるのかについて保存手段が十分に認知しているという点にある。この結果、更新済みの情報を入手可能である。
【００２０】
当然のことながら、返信情報は、実際の、受信した、且つ、使用された、或いは、まだ使用されてはいない、アドレスを有してもよい。
【００２１】
更に洗練された解決策は、保持されたアドレスの割当の順序がコントローラ内において留意されている際に、観察される。この状況においては、返信情報は、単に、例えば、返信情報の最後の送信以降に使用されたアドレスの数などの受信及び使用されたアドレスの数に関係する数であってもよい。或いは、この代わりに、返信情報は、例えば、返信情報を保存する時点における実際に使用されていない受信されたアドレスの数であってもよい。この情報から、制御ユニットは、ストレージ内のいずれのアドレスにデータが存在しているのかを判定することができる。
【００２２】
更に洗練された解決策について後述するが、この場合には、いずれのアドレスにデータが読み込まれているのかを知るために、コントローラ内において、返信情報の単なる保存を使用してもよい。
【００２３】
判定手段は、任意の原則又はポリシーに従ってアドレスを判定してもよい。時刻又は受信の順序などの所与の順序でデータを保存することが望ましく、且つ／又は、特定のアドレス又はフロー／ストリームに関係したデータを別個に保存することが望ましいであろう。更に後述するように、データを特定のポリシーに従ってキュー内に保存してもよいように、いくつかのキューを実装してもよい。
【００２４】
通常、アドレス判定は、第１情報に基づいて実行され、且つ、この場合には、アドレス判定のために要求される情報を第１情報が有するようにする。
【００２５】
データパケットのサイズに応じて、複数のアドレスを１つのデータパケットに対して割り当ててもよいことに留意されたい。この状況においては、必要とされるアドレスのサイズ又は数が第１情報の一部分を形成してもよい。
【００２６】
データパケット又はその少なくとも一部分が保存されているアドレスに関係する情報の維持又は更新は、いずれのアドレスが使用されていないのかを知るために実行されてもよく、且つ、従って、好ましくは、アドレスを判定する判定手段によって使用されてもよい。この結果、既に使用されているアドレスは、割り当てられない。
【００２７】
このような情報のその他のユーザは、ストレージから情報を読み取ると共に、従って、判定手段による再使用又は再割当のためにアドレスを解放するプロセス又はプロセッサである。このようなプロセス／プロセッサは、いずれのアドレスに有効なデータが存在しているのかに関する知識を必要としている。
【００２８】
当然のことながら、データパケットが保存されているアドレスに関する情報は、この知識をいくつかの方式によって表してもよい。１つの方式は、データが保存されているそれぞれのアドレスを、或いは、データが保存されていないそれぞれのアドレスを、保存するか又は知るというものである。
【００２９】
当然のことながら、更に効率的な方式も存在しており、１つは、後述される１つ又は複数のキューの使用である。キューの１つの利点は、キューのどの部分が割り当てられているのか又はキューがどれだけ割り当てられているのかを判定するために必要とされるのが、キューの１つ又は複数の端部のみであるという点にある。
【００３０】
データパケット（の少なくとも一部分）及び返信情報を保存手段に搬送し、保存手段から返信情報を読み取り、且つ、第１情報、アドレス、及び要求情報を受信及び転送要素との間において搬送するために、任意の手段を使用してもよい。このような手段は、例えば、変化する数の受信及び転送要素をサポートできるように、選択してもよい。これは、無線通信と、リングバス及びスター形バス並びに標準バスなどの異なるタイプの有線データバスと、の両方に当て嵌まり、且つ、任意のタイプの情報又はデータを任意のプロトコル上において伝達することができよう。
【００３１】
好ましくは、このような手段は、制御ユニット及びすべての受信及び転送手段にとって共通のデータバスである。
【００３２】
この搬送手段が、データが搬送手段に対して転送された際に追い越すことが許容されていないタイプのものである場合には、保存手段によって出力される返信情報は、非常に正確なものになることが明らかであり、その理由は、返信情報を出力する時点においていずれのアドレスに対してデータが転送されたのかをこの保存手段が知ることになるからである。又、返信情報は、一旦ストレージ内に保存されたら、正確にいずれのアドレスがいままで使用されているのかを制御ユニットに対して通知することになることから、あらゆる保存遅延が考慮されることにもなる。
【００３３】
実際に、保存手段が、データパケットの少なくとも一部分が要求情報の受信の前に受信されたすべてのアドレスにおいて保存されるか又は少なくとも搬送手段に対して転送された後にのみ、返信情報を保存するように適合されている際には、ストレージ内におけるこの返信情報の存在自身が、それらのアドレスがいまや使用中であることの通知となる。
【００３４】
次いで、いずれのアドレスが、その要素に対する要求情報の出力の前に且つ／又は後に、それぞれの受信及び転送要素に対して返されたのかを制御ユニットが認知している際には、制御ユニットは、返信情報がストレージ内に存在していると判定する際に、いずれのアドレスがいまや使用されているのかを知ることになる。これは、保存手段からストレージまでのデータ経路に存在する任意遅延とは無関係であることに留意されたい。
【００３５】
一実施形態においては、それぞれの受信及び転送要素は、データパケットの受信／アクセスの時点を判定する手段を更に有し、時点判定手段は、クロック手段を有し、すべての時点判定手段のクロック手段は、同期化されている。グローバルな同期化又はクロック信号を単に提供するなどの異なる同期化方式を採用してもよい。或いは、この代わりに、個々の要素又は回路のクロックを制御ユニットのクロックなどのクロックのうちの１つに対して同期化してもよい。
【００３６】
この状況においては、到来の時刻又はタイムスタンプが、第１情報の一部を形成してもよく、且つ、従って、制御ユニットに対して中継されてもよく、次いで、制御ユニットは、データパケットが正しい順序で保存されるように、この情報を使用してアドレスを割り当ててもよい。
【００３７】
好ましくは、１つ又は複数のキューは、ストレージ内において別個のアドレスのグループとして規定され、制御ユニットの判定手段は、第１情報から関係するデータパケットを追加するべきキューを判定すると共に関係するキューのアドレスのグループからアドレスを選択するように、適合されている。
【００３８】
通常、キューは、順序付けされたリストとして実装され、データは、リストの端部に追加され、且つ、リストのもう１つの端部から取り出される。最も好ましくは、キューは、循環型のリストとして実装される。従って、リストの端部は、２つのポインタによって識別してもよく、１つのポインタは、データを受け取るべき次のアドレス（又は、使用されている最後のアドレス）を識別し、且つ、他方のポインタは、取り出すべき次のアドレス又は最後に取り出されたアドレスを識別する。
【００３９】
従って、データが保存されているアドレスに関する情報は、キューのポインタによって表してもよく、或いは、これらのポインタを生成、制御、又は更新するために使用してもよい。
【００４０】
この状況においては、制御ユニットの判定手段は、データパケットが受信／アクセスの順序でキュー内に保存されるように、判定されたキュー内のアドレスを判定するように適合させてもよい。この受信／アドレスの順序は、制御ユニットによる第１情報の受信或いは受信及び送信要素による受信／アドレスの順序であってもよい。後者の場合には、受信及び送信ユニットは、好ましくは、それぞれのデータパケットの受信の時刻を判定すると共に判定手段がアドレスを判定できるようにこの情報を第１情報内において転送するように、適合されている。
【００４１】
一実施形態においては、組立体は、ストレージからデータを読み取る又は取り出す手段を更に有し、読取手段は、そのデータが読み取られた／取り出された保存手段の１つ又は複数のアドレスに関係する第３情報を出力する手段を有する。又、この情報は、例えば、キューのポインタ又は端部アドレスの更新又は管理の際などのように、データが保存されているアドレスを判定する際にも、望ましい。
【００４２】
当然のことながら、この第３情報は、取り出された個別のアドレスであってもよく、或いは、第３情報は、取り出されたアドレスのインターバルなどの複数のアドレスを表してもよい。
【００４３】
従って、好ましくは、制御ユニットは、それぞれのキューごとに、データを追加するべき次のアドレスを識別する書込みポインタと、キューから読み取るべき／取り出すべき次のアドレスを識別する読取りポインタと、を保持するように適合されており、
読取／更新手段は、
−受信した返信情報に基づいてキューの書込みポインタを更新し、且つ、
−受信した第３情報に基づいてデータが取り出されたキューの読取りポインタを更新するように、適合されており、且つ、
判定手段は、キューの読取り及び書込みポインタにも基づいてアドレスを判定するように適合されている。
【００４４】
この状況においては、読取り／取出し手段は、実際には、１つ又は複数の読取りポインタを更新していてもよく、且つ、第３情報として単にその複写をコントローラに対して転送してもよい。この結果、読取りポインタは、読取り／取出し手段によって維持され、且つ、書込みポインタは、コントローラによって維持され、この結果、コントローラは、ときどき、１つ又は複数の更新済みの読取りポインタの複写を受け取るのみである。
【００４５】
この結果、有効なデータを有するアドレスのコンパクトでありつつも効率的な表現が得られる。
【００４６】
但し、例えば、輻輳又は遅延が受信及び転送要素とストレージとの間において観察される際に、問題が観察される場合がある。従って、アドレスをデータパケットに対して割り当ててもよいが、このデータパケットの保存を遅延させてもよい。これについて取出し手段の注意を喚起する必要がある。この状況においては、読取り／取出し手段は、好ましくは、読取り及び書込みポインタの間のすべてのアドレスを表す返信情報が受信された場合にのみ、書込みポインタをアドレスに対して更新するように適合される。
【００４７】
従って、データパケットがストレージに到達していないが、キュー内の後続のデータパケットが到達している場合には、これは、キュー内に「ホール」又は欠落したデータパケットを含むことになるため、書込みポインタは、依然として更新されない。次いで、欠落したデータパケットが保存された際に、書込みポインタは、キューの次の「ホール」又は端部に対して更新される。この「ホール」の識別は、制御手段により、且つ、第２情報に基づいて、実行してもよい。
【００４８】
本発明の別の態様は、請求項９に記載の方法に関する。
【００４９】
好ましくは、複数の受信及び転送要素が上述のステップを同時に実行する。受信及び転送要素は、１つのデータパケットを受信してもよく／これに対してアクセスしていてもよく、先に受信／アクセスされたデータパケットに関係する第１情報を出力していてもよく、且つ、更に先に受信／アクセスされたデータパケットのアドレスを受信していてもよい。
【００５０】
又、制御ユニットは、複数のデータパケットのアドレスを同時に判定してもよく、且つ、返信情報を受信すると共にアドレスに関係する情報を更新するステップは、その他のステップと同時に実行してもよい。
【００５１】
上述のように、受信及び転送要素の数は、望ましい性能及び帯域幅に応じて変化してもよい。
【００５２】
好適な第１実施形態においては、保存ステップは、データパケットの少なくとも一部分が要求情報の受信よりも前に受信されたすべてのアドレスにおいて保存された後にのみ、返信情報を保存するステップを有する。
【００５３】
好適な第２実施形態においては、保存ステップは、データパケットを共通バス上においてストレージに対して転送するすべての受信及び転送要素を有しており、共通バスは、好ましくは、返信情報を保存及び受信するためにも使用される。
【００５４】
特に、この共通バスが、データが共通バスに転送されている際に追い越しが許容されないタイプである場合には、即ち、保存手段からのデータ又は返信情報が、個々の保存手段とストレージとの間において互いに追い越すことができない場合には、ストレージ手段は、いずれのアドレスが使用中であるのか（又は、使用中ではないのか）に関する正確な情報を返信情報内において提供することできる。当然のことながら、それぞれの保存手段からのデータ／返信情報がバスに提供された順序で（時刻で）保存される限り、１つの保存手段からのデータ／返信情報が別の保存手段のものを追い越すことは許容されよう。
【００５５】
第１及び第２実施形態が非追い越し方式と組み合わせられた場合には、コントローラは、ストレージ内における返信情報の存在自体から、いずれのアドレスがいま使用中であるか又は使用中でないのかを判定してもよく又は表してもよい。
【００５６】
或いは、この代わりに、アドレスは、コントローラが使用するように、直接的又は間接的に返信情報内に提供されてもよい。又、この状況においても、非追い越し型の搬送が望ましい。
【００５７】
一実施形態においては、受信及び転送要素は、データパケットの受信／アクセスの時点を更に判定し、時点判定手段は、クロック手段を有し、すべての時点判定手段のクロック手段は、同期化されている。上述のように、この同期化を得る異なる方式が存在している。この場合には、この時点が第１情報の一部を形成してもよく、且つ、アドレス判定も、この時点に基づいたものであってもよい。
【００５８】
複数のキューを別個のアドレスのグループとしてストレージ内に規定してもよく、判定ステップは、第１情報から関係するデータパケットを追加するべきキューを判定するステップと、関係するキューのアドレスのグループからアドレスを選択するステップと、を有する。
【００５９】
この状況においては、判定ステップは、好ましくは、データパケットが受信／アクセスの順序でキュー内において保存されるように、判定されたキュー内のアドレスを判定するステップを有する。
【００６０】
一実施形態においては、本方法は、ストレージからデータを読み取る又は取り出すステップを更に有し、読取ステップは、そのデータが読み取られた／取り出された保存手段の１つ又は複数のアドレスに関係する第３情報を出力するステップを有する。第３情報は、例えば、アドレスが取り出されるごとに、既定数のアドレスが取り出された際に、或いは、定期的に、出力してもよい。
【００６１】
好ましくは、判定ステップは、それぞれのキューごとに、データを追加するべき次のアドレスを識別する書込みポインタと、キューから読み取るべき／取り出すべき次のアドレスを識別する書込みポインタと、を判定するステップを有し、
読取／更新ステップは、
−受信した返信情報に基づいてキューの書込みポインタを更新するステップと、
−受信した第３情報に基づいてデータが取り出されたキューの読取りポインタを更新するステップと、
を有し、判定ステップは、キューの読取り及び書込みポインタにも基づいてアドレスを判定するステップを有する。
【００６２】
次いで、判定ステップは、読取り及び書込みポインタの間におけるすべてのアドレスを表す返信情報が受信された場合にのみ、書込みポインタをアドレスに対して更新するステップを有してもよい。
【００６３】
以下、添付図面を参照し、本発明による好適な実施形態について説明する。
【図面の簡単な説明】
【００６４】
【図１】本発明による装置の好適な実施形態を示す。
【図２】図１の装置内におけるキューの使用法を示す。
【発明を実施するための形態】
【００６５】
図１には、いくつかのアダプタ１２を有するデータフレームを分析及び転送する装置が示されており、アダプタ１２は、それぞれ、ＷＷＷなどのネットワークに対して接続されており、且つ、そのネットワークからデータを受信する。
【００６６】
一般に、このタイプのシステムは、多数のデータパケットを受信するために使用してもよく、且つ、適切な方式によるその保存及び／又は転送を円滑に実行してもよい。これらのデータパケットは、通常、本システムによって監視されているデータ接続上において、コンピュータ又はネットワークのペアの間において送信される。従って、これらのデータパケットは、通常、本システムに対して又は本システムからアドレス指定されることを意図したものではない。
【００６７】
このデータは、保存された際に、１つ又は複数の後続のプロセス又はプロセッサ３４によって処理してもよい。非常に多数のデータを処理することができるように、高速でありつつも構造化されたデータの取得を実現するべく、構造化された保存が望ましい。又、単一のプロセッサで十分ではない際には、複数のプロセッサを提供し、これによるそれぞれのプロセッサごとのデータの別個の保存が望ましい。
【００６８】
プロセッサは、データトラフィックを分析し、データを保存すると共に／又は、プロセッサにおける処理の結果に応じて、データをその他のネットワーク要素、コンピュータ、又はこれらに類似したものに送信するべく、使用してもよい。
【００６９】
或いは、この代わりに、又はこれに加えて、再度、データを後から出力することも望ましく、これにより、これに加えて又はその代わりに、出力が望ましい方式又はシーケンスで、データを保存することも望ましいであろう。
【００７０】
通常、データパケットは、データパケットのストリームの一部分である。２つのプロセッサ又はコンピュータがやり取りする際に、データパケットのストリームが交換される。このストリームは、ファイル転送であるか、又はＶｏＩＰ（Voice over IP）などのオーディオ／ビデオの交換であってもよい。ストリームとは、類似したデータパケットのシーケンスである。ストリームへのデータの帰属は、判定可能であり、且つ、ストリームのすべてのデータパケットが、望ましい順序で一緒に保存され、同一の後続のプロセス又はプロセッサによって処理されると共に／又は、その順序で出力されることが望ましい。
【００７１】
受信したデータフレームのストリームへの帰属は、フレームの分析から判定される。この分析については、更に詳しく後述する。
【００７２】
本実施形態は、フレーム／パッケージを分析すると共に／又はそれらを保存するタスクが複数のアダプタ１２によって分割されているセットアップを提供することを狙いとしている。
【００７３】
更に詳しくは、アダプタ１２は、ＷＷＷ、幹線、又は任意の適切なタイプのネットワークなどのネットワーク１４からデータを受信する。それぞれのアダプタ１２は、その他のアダプタ１２とは独立的に、いくつかのフレームを受信する。
【００７４】
好ましくは、潜在的に１つを除いたすべてのアダプタは、同一であり、且つ、それぞれは、ネットワーク又はデータケーブルからデータフレームを受信するように適合された要素である所謂ＰＨＹ２０と、受信したデータフレームを、例えば、コンピュータのデータバス上において通常使用されている規格に変換する所謂ＭＡＣ回路２２と、を有する。
【００７５】
データフレームを受信した後に、データフレームには、回路２４内においてタイムスタンプが提供され、その後に、フレームは、分析回路２６に供給され、分析回路２６は、ＶＬＡＮ及び／又はＭＰＬＳタグ付けされているかどうかなどのような、フレームが準拠している規格に関係するものなどのデータフレームに関係するデータと、潜在的にアドレスデータと、をそのデータフレームから導出する。複数の異なるタイプの規格が知られており、そのそれぞれは、いずれのタイプのデータ（アドレス、カプセル化、ペイロード、誤り訂正など）がフレーム内に存在しており、且つ、そのようなデータがどこに存在しているのかを規定している。特定のパケットのタイプに応じて、異なるタイプのデータを導出してもよい。
【００７６】
回路２６は、データパケットストリームに対するその帰属や中央ストレージ内のキューなどのデータフレームを識別するデータを出力する。次いで、データフレームの長さ、データフレームのＩＤ／キュー識別情報、及びタイムスタンプが要求回路２８から中央サーバのメモリアロケータ又はコントローラ１６に送信され、メモリアロケータ又はコントローラ１６が、データフレームを保存するべきストレージ１８内のアドレスを返す。このアドレスは、転送回路３０に返される。転送回路３０は、データフレームをも受信し、且つ、その後に、データフレームを、例えば、ＰＣＩｅ（PCI Express）プロトコルを稼働させている共通データバス３２を介して、識別されたアドレスに対して送信する。この保存は、ＤＭＡ（Direct Memory Addressing）を使用するものであってもよく、これは、フレームが望ましいアドレスにおいて直接的に保存されると共に更なる分析が不要であることを意味している。これは、データストレージ内にデータを保存する最も高速の方式であるが、これには、物理アドレスが判明している必要がある。
【００７７】
当然のことながら、回路２８は、この代わりに、パケットのタイムスタンプ及び長さと共に、フレームを識別するその他の情報（タイプ、アドレス、又はこれに類似したもの）を出力してもよく、これにより、アロケータ自体が、フレームを追加するべきキューを判定すると共に、これにより、フレームを保存するべきアドレスを導出することになる。
【００７８】
アロケータ１６とアダプタ１２との間の「帯域外」通信は、低帯域幅のポイントツーポイント通信、デイジーチェーントポロジー、又はリングトポロジーであってもよい。この通信は、更に後述するように、タイムスタンプ回路２４のクロックを同期化させるためにも使用される。この通信用の適切なプロトコルは、Ethernet フロントポート（ＰＨＹ）帯域幅の１０Ｇｐｂｓ当たりに約１Ｇｂｐｓのフルデュプレックス帯域幅を必要とする標準的な６４ｂ／６６ｂコーデックであってもよい。
【００７９】
アロケータとアダプタ１２との間の通信の別の使用法は、保存の進捗に関するアロケータに対する情報提供を維持するというものである。
【００８０】
アロケータ１６は、ストレージ１８内のいずれのアドレスが割り当てられており、且つ、いずれのアダプタ１２に対して割り当てられているのかを認知している。いずれのアドレスが実際に使用されているのかを判定するために、アロケータ１６は、例えば、要求又はアイドルパケットの形態で、要求を個々のアダプタ１２に対して送信する。要求に応答して、アダプタ１２は、返信パッケージを既定のアドレスにおいてストレージ１８に対して送信することになる。アダプタ１２は、それぞれ、個々のアドレス及び要求の受信の順序でデータパケット及び応答を出力するように適合されている。
【００８１】
例えば、バス３２上におけるアービトレーションに起因して、遅延が発生する場合があることから、ストレージ１８内の１つ又は複数のアドレスがそのデータパケットに対して割り当てられているにも拘らず、アダプタ１２がデータパケットをストレージ１８に対して即座に転送することができない場合がある。但し、データパケット及び返信がアダプタ１２から順番に出力されていることから、返信の保存が、すべての先に受信したアドレスに関係するデータパケットがいまやそのアダプタ１２によって保存されていることを通知することになる。
【００８２】
それぞれのアダプタ１２は、いずれのアダプタ１２が返信を転送したのかをアロケータ１６が判定するために、異なるアドレスにおいてその返信を保存してもよい。本実施形態においては、それぞれの要求は、その内部に数値を有することになり、この数値は、そのアドレスの以前の数値と比較することにより、更新済みの返信が保存されていることをアロケータ１６が判定することができるように、返信内に複写される。
【００８３】
従って、アロケータ１６は、アドレスを監視し、且つ、数値の更新が存在することを判定することになり、これにより、ちょうど受信した数値が返信内に存在する状態において、アダプタ１２は、そのアダプタ１２に対する要求の受信以降に受信したすべてのアドレスにデータパケットを保存している。アロケータ１６が、（数値を含む）要求の前後に出力されたすべてのアドレスを記録している際には、アロケータ１６は、ストレージ内のアドレスのいずれが占有されているのか、いずれがアダプタ１２に転送されているが依然として使用されていないのか、並びに、いずれのアドレスが空いているのか、を判定することができる。
【００８４】
代替実施形態においては、アダプタ１２からの返信は、最後の返信以降のデータが保存されているすべてのアドレスを、或いは、データがまだ保存されていない受信したすべてのアドレスを、有してもよい。この状況においては、アロケータ１６は、データが保存されているもののみを除いて、割り当てられたアドレスの記録を維持する必要はないであろう。
【００８５】
一般に、この空き／使用の情報は、ストレージ１８からデータパケットを読み出すために使用してもよい。当然のことながら、割り当てられているが正しいデータがまだ保存されていないアドレスからの情報の読取りが問題となる。
【００８６】
大部分の状況においては、データパケットは、キューとしてストレージ１８内に保存される。この状況においては、空間が予約されている／割り当てられているが遅延に起因してまだ到来してはいないデータパケットに起因し、キュー内にホールが発生する場合がある。
【００８７】
好ましくは、ストレージ内のキューは、単純に、アドレスのリスト、好ましくは、循環型のリストとして実装され、且つ、新しいデータが書き込まれるべき／追加されるべき保存されたデータの端部を指し示すために、ポインタを使用してもよく、且つ、別のポインタにより、データが取り出されるべき端部を指し示してもよい。アロケータ１６は、両方のポインタを更新してもよいが、書込み端部におけるポインタを少なくとも更新する。
【００８８】
この場合に、ホールが書込み端部に存在している場合には、アロケータ１６は、データが存在するアドレスを協働して表す書込み及び読取りポインタの間にホールが位置するように書込みポインタを移動させない。これとは逆に、書込みポインタは、ホールにおいてのみ位置決めされ、且つ、次いで、ホールが「充填」された際に、ポインタを次のホールに又は使用されているアドレスの端部に移動させることになる。この結果、データを取り出す任意のプロセスは、ホールを取り出すことにならず、且つ、従って、まだ到来していないパケットを逃すことにもならない。
【００８９】
図２は、キューのいずれの部分が有効なデータを収容しているのかをプロセッサ３４が認知していることを保証するキューの使用法及び方式を示している。
【００９０】
図２の左側には、３つのキューが示されている。これらのキューは、それぞれのアダプタ１２内のデータのキューであり、このデータは、メインストレージ１８への送信を待っている。それぞれのキュー内には、太い線が示されており、且つ、これは、データがアロケータ１６によって指示された順序で出力される実施形態において、要求を受信するための、且つ、従って、ストレージ１８に返信を出力するための、このデータのキュー内における位置を表している。従って、太い線がキューの前面に位置している際に、対応する返信がストレージ１８に供給される。上部のキューは、この返信をアドレスＡｄｄ−１に供給しており、中央のものは、Ａｄｄ−２に供給しており、且つ、下部のものは、Ａｄｄ−３に供給している。
【００９１】
ストレージ１８内においては、キューは、循環型のキューとして実装され、且つ、これが、全体的にＢｏｔｔｏｍ−３及びＴｏｐ−３ポインタに示されたアドレスの間のストレージ位置が割り当てられているキュー３に示されている。湾曲した矢印は、キューが循環型であると共に、その結果、Ｔｏｐ−３ポインタに到達した際には、更なるデータがＢｏｔｔｏｍ−３ポインタから追加されることを示している。それぞれのキュー内において、有効なデータは、読取りポインタ（Ｒｅａｄ−１／２／３）と書込みポインタ（Ｗｒｉｔｅ−１／２／３）との間に存在している。従って、プロセッサ３４は、読取りポインタから及び書込みポインタに対してデータを読み書きするように許容されている。新しいデータは、書込みポインタの上方のアドレスに保存されるが、ホール（上述の内容を参照されたい）が依然として存在する場合があることから、プロセッサは、ホールが１つも存在しないことが明確になる前に、そのようなデータを取り出すことは許されていない。プロセッサは、データを取り出した際に、対応する読取りポインタを変更し、新しいデータが読取りアドレスを利用できるようにしてもよい。
【００９２】
返信（太い線）をＡｄｄ−アドレスに転送する必要がある際には、対応するキューは、完全であると仮定してもよく、その後に、更なるデータがプロセッサに利用可能となるように、現在使用されている最上部のアドレスに書込みポインタを移動させてもよい。従って、アロケータ１６がデータを又は変更されたデータをＡｄｄ−アドレスにおいて観察した際には、アロケータ１６は、要求情報を転送する時点において固定されていたものであってもよいアドレスに書込みポインタをシフトさせてもよく、その理由は、その時点におけるアロケータ１６は、要求時点の前に関係するキューのいずれのアドレスが割り当てられていたかを認知していたからである。
【００９３】
複数のアダプタ１２がデータを同一のキューに供給することができる状況においては、アロケータ１６は、同時に（或いは、少なくとも実質的に同時に）、要求をすべてのアダプタ１２に対して発行してもよい。この場合には、共有されたキューの書込みポインタは、アロケータ１６がすべての関連するＡｄｄ−アドレスにおいて修正されたデータを観察する前には、変更されず、その理由は、これにより、共有されたキューの以前の書込みアドレスと新しい書込みアドレスとの間のすべてのデータが有効なデータによって占有されることが保証されるからである。
【００９４】
実際に、アロケータ１６に要求情報をすべてのアダプタ１２に対して常に発行させ、且つ、すべてのＡｄｄ−アドレスが変化する時点まで、あらゆる書込みアドレスの変更を待つことが望ましいであろう。
【００９５】
当然のことながら、アロケータ１６がこの情報を頻繁に要求するほど、ポインタの更新は更に高速になり、且つ、後続の処理の遅延も短くなる。その一方において、アロケータ１６及びアダプタ１２とバス３２の間のリンク上に相対的に多くのトラックが存在することになる。
【００９６】
上述の実施形態１０は、ストレージ１８内の任意の数のキュー内にデータフレームを保存してもよいことに留意されたい。いずれのキューにデータパケットを転送するのかは、フレームの将来の密度によって左右されよう。フレームを１つ又は複数のプロセッサによって分析する場合には、１つのキューをそれぞれのプロセッサごとに提供してもよく、且つ、キューに対するフレームの転送は、パケットを追加する前のキューの長さによって左右されよう。キューが長く、且つ、従って、プロセッサがビジー状態にある場合には、パケットは、相対的にビジー状態にはないプロセッサの相対的に短いキュー内に提供されることになろう。
【図１】
0005816301.tif 000002
【図２】
0005816301.tif 000003