(57)【特許請求の範囲】
【請求項１】
制御情報及びペイロードデータを含むデータユニットを受信する受信手段と、
前記データユニットを別のネットワークの位置に転送する転送手段と、
前記データユニットが装置から転送されている間に、前記データユニットの前記ペイロードデータを検査する検査手段と、
前記データユニットが前記装置から転送されている時に、前記データユニットに対する検査の結果に応じて前記データユニットの前記制御情報を変更することにより、前記変更されたデータユニットの全体を前記装置から転送すれば、前記変更されたデータユニットに対する後続の処理が変わるようにする変更手段と、
を備え、
前記データユニットの前記ペイロードデータを検査する前記検査手段は、前記データユニットのディープ・パケット・インスペクションを行うように構成される、
ことを特徴とするネットワーク通信装置。
【請求項２】
前記制御情報は、送信元及び／または宛先のアドレス情報と、順序情報と、誤り検出情報と、のうちの１つ以上を含む、
請求項１記載のネットワーク通信装置。
【請求項３】
前記変更手段は、前記制御情報の少なくとも一部を破棄及び／または上書きして、前記データユニットがその後除かれるように構成されている、
請求項１または２記載のネットワーク通信装置。
【請求項４】
前記制御情報は、ヘッダ情報及び／または終端情報を含み、好ましくは、以下のネットワークプロトコル情報である、ＴＣＰと、ＵＤＰと、ＩＰと、ＭＡＣと、誤り検出情報と、のうちの１つ以上を含む、
請求項１乃至３のいずれかに記載のネットワーク通信装置。
【請求項５】
前記変更手段は、前記データユニットの終端部を完全に転送する前に、かつ、好ましくは、前記データユニットの前記終端部以外の部分を既に転送した後に、前記終端部を変更するように構成されている、
請求項１乃至４のいずれかに記載のネットワーク通信装置。
【請求項６】
前記終端部は前記制御情報を含む、
請求項５記載のネットワーク通信装置。
【請求項７】
前記変更手段は、終端のチェックサムまたは巡回冗長検査（ＣＲＣ）の少なくとも一部を上書きするように構成されており、好ましくは、前記変更手段は、前記データユニットの終端部内の前記制御情報を破棄するように構成されている、
請求項５または６記載のネットワーク通信装置。
【請求項８】
前記変更手段は、前記ペイロードデータを破棄かつ／または変更するように構成されている、
請求項１乃至７のいずれかに記載のネットワーク通信装置。
【請求項９】
後に転送されるデータユニットを格納する格納手段を含む、
請求項１乃至８のいずれかに記載のネットワーク通信装置。
【請求項１０】
前記格納手段は、データユニットが転送されていた時に変更された前記データユニットをバッファリングするように構成されており、
前記データユニットは、意図した受信者に届かない、かつ／または前記意図した受信者によって除かれることが保証されるように変更されている、
請求項９記載のネットワーク通信装置。
【請求項１１】
前記変更手段は、前記バッファリングされたデータユニットを後に転送する前に、前記データユニットのペイロードデータを変更して、前記変更されたデータユニットの再送要求を防ぐように構成されている、
請求項１０記載のネットワーク通信装置。
【請求項１２】
前記変更手段は、好ましくはアプリケーション層のレベルで、前記バッファリングされたデータユニットのペイロードデータを変更して、その後伝送される該データユニットを前記意図した受信者が処理できるように構成されている、
請求項１１記載のネットワーク通信装置。
【請求項１３】
前記データユニットの転送を遅延させる遅延手段であって、前記検査手段の出力と前記データユニットの終端部の末尾の転送とを同期させることにより、前記データユニットが完全に転送される前に、前記検査手段の結果に応じて前記データユニットの終端部を確実に変更することができるようにする遅延手段を備える、
請求項１乃至１２のいずれかに記載のネットワーク通信装置。
【請求項１４】
前記変更手段は、前記検査手段からの出力が利用可能になると、直ちに前記データユニットを変更するように構成されている、
請求項１乃至１３のいずれかに記載のネットワーク通信装置。
【請求項１５】
誤った順序でデータユニットを受信したかどうかを判定する判定手段を備え、
前記転送手段は、前記データユニットを正しい順序で転送するように構成されている、
請求項１乃至１４のいずれかに記載のネットワーク通信装置。
【請求項１６】
前記検査手段によって後に正しい順序で検査するために、誤った順序で受信したデータユニットをバッファリングするバッファリング手段を備える、
請求項１５記載のネットワーク通信装置。
【請求項１７】
前記受信手段は、消失したデータユニットの受信を検出するように構成され、
前記バッファリング手段は、前記誤った順序で受信したデータユニットを外すように構成され、これに応答して検査が行われる、
請求項１６記載のネットワーク通信装置。
【請求項１８】
後に読み出して転送されるペイロードデータを格納する格納手段を備える、
請求項１乃至１７のいずれかに記載のネットワーク通信装置。
【請求項１９】
前記検査手段は、前記データユニットが転送されている間に、前記制御情報を検査するように構成されている、
請求項１乃至１８のいずれかに記載のネットワーク通信装置。
【請求項２０】
前記データユニットの前記ペイロードデータを検査する前記検査手段は、前記データユニットのアプリケーション層のレベルで、前記データユニットのディープ・パケット・インスペクションを行うように構成されている、
請求項１乃至１９のいずれかに記載のネットワーク通信装置。
【請求項２１】
前記データユニットは、前記転送手段及び前記検査手段の双方に送られる、
請求項１乃至２０のいずれかに記載のネットワーク通信装置。
【請求項２２】
前記検査手段が前記データユニットの検査を実施している間に、前記データユニットは、好ましくはバイト単位で、前記装置を段階的に通過する、
請求項１乃至２１のいずれかに記載のネットワーク通信装置。
【請求項２３】
前記データユニットが転送されている間に、前記検査手段は、前記データユニットを構文解析し、前記ペイロードデータ及び／または制御情報を取り出して検査するように構成されている、
請求項１９乃至２２のいずれかに記載のネットワーク通信装置。
【請求項２４】
前記検査手段は、前記制御情報の検査に基づき、セッション情報と、順序情報と、受信者の識別情報と、送信者の識別情報と、状態情報と、ポート情報と、のうちの１つ以上を求めるように構成されている、
請求項２３記載のネットワーク通信装置。
【請求項２５】
前記変更手段は、前記制御情報に応じて前記データユニットを変更するように構成されている、
請求項２４記載のネットワーク通信装置。
【請求項２６】
前記ペイロードデータは、指示または要求の形態をとっており、
前記検査手段は、前記指示または要求の妥当性及び／または受領可能性を判別するように構成されている、
請求項１乃至２５のいずれかに記載のネットワーク通信装置。
【請求項２７】
前記指示または要求が金融取引の指示である、
請求項２６記載のネットワーク通信装置。
【請求項２８】
前記変更手段は、前記ペイロードデータ内の指示または要求が無効または受領不可である場合に、前記データユニットを変更するように構成されている、
請求項２６または２７記載のネットワーク通信装置。
【請求項２９】
前記データユニットは、プロトコル・データ・ユニットであり、データグラムと、セグメントと、パケットと、フレームと、のうちの少なくとも１つを含む、
請求項１乃至２８のいずれかに記載のネットワーク通信装置。
【請求項３０】
前記装置は、プログラマブル・ロジック・デバイスの形態をとっており、好ましくは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）の形態である、
請求項１乃至２９のいずれかに記載のネットワーク通信装置。
【請求項３１】
前記装置の機能がハードウェアによって実装されている、
請求項１乃至３０のいずれかに記載のネットワーク通信装置。
【請求項３２】
ＴＣＰオフローディングエンジンを備える、
請求項１乃至３１のいずれかに記載のネットワーク通信装置。
【請求項３３】
前記データユニットに関連付けられたセッションを特定する特定手段を備え、
前記検査手段は、前記セッションに関連するパラメータ情報と前記データユニットとを比較することにより、前記データユニットの妥当性及び／または受領可能性を判別するように構成されている、
請求項１乃至３２のいずれかに記載のネットワーク通信装置。
【請求項３４】
前記セッションは、ネットワークセッションである、
請求項３３記載のネットワーク通信装置。
【請求項３５】
前記特定手段は、前記データユニットの制御情報に基づき、好ましくは、前記データユニットのヘッダに格納された制御情報に基づき、前記セッションを特定するように構成されている、
請求項３３または３４記載のネットワーク通信装置。
【請求項３６】
前記セッションは、少なくとも一対のネットワーク・エンティティの間の通信セッションであり、
前記データユニットは、前記通信装置によって仲介されている、
請求項３３乃至３５のいずれかに記載のネットワーク通信装置。
【請求項３７】
前記セッションを特定するソケットエンジンを備える、
請求項３６記載のネットワーク通信装置。
【請求項３８】
前記パラメータ情報は、前記ネットワーク・エンティティ間の特定の通信セッションに関連する第１情報と、前記ネットワーク・エンティティ間の全ての通信に関連する第２情報と、を含む、
請求項３６または３７記載のネットワーク通信装置。
【請求項３９】
前記第２情報は、持ち高、数量または制限などの金融取引パラメータに関連する、
請求項３８記載のネットワーク通信装置。
【請求項４０】
前記パラメータ情報は、前記ネットワーク・エンティティ間の各通信の相互作用に続いて更新される、
請求項３８または３９記載のネットワーク通信装置。
【請求項４１】
前記パラメータ情報は、前記ネットワーク・エンティティ間で通信が行われた各データユニットのペイロードデータに応じて更新される、
請求項４０記載のネットワーク通信装置。
【請求項４２】
前記パラメータ情報は、好ましくは変更せずに、前記装置から転送された前記データユニットの累積記録である、
請求項４０または４１記載のネットワーク通信装置。
【請求項４３】
前記検査手段は、好ましくは、前記制御情報及び／または前記ペイロードデータを構文解析すると、直ちに前記制御情報及び／または前記ペイロードデータと前記パラメータ情報とを比較するように構成されている、
請求項３３乃至４２のいずれかに記載のネットワーク通信装置。
【請求項４４】
前記パラメータ情報は、好ましくは、少なくとも１つのハッシュテーブルの形態で前記装置に格納されている、
請求項３３乃至４３のいずれかに記載のネットワーク通信装置。
【請求項４５】
受信したデータユニットに関連付けられた既存のネットワークセッションが存在しない場合に、新たなネットワークセッションに関連付けられる新規情報を取得する手段を備える、
請求項３３乃至４４のいずれかに記載のネットワーク通信装置。
【請求項４６】
前記変更手段は、前記データユニットを完全に転送する前に、前記データユニットに対する検査の結果に応じて前記データユニットを変更することにより、前記変更されたデータユニットを転送すれば、前記変更されたデータユニットに対する後続の処理が変わるようにする、
請求項３３乃至４５記載のネットワーク通信装置。
【請求項４７】
好ましくはサーバの形態をとっている第１ネットワーク・エンティティと、
好ましくはクライアントの形態をとっており、通信ネットワークを経由して前記第１ネットワーク・エンティティに接続可能である第２ネットワーク・エンティティと、
請求項１乃至４６のいずれかに記載のネットワーク通信装置を備え、前記第１ネットワーク・エンティティと前記第２ネットワーク・エンティティとの間の通信を仲介する中継ネットワーク・エンティティと、
を含むことを特徴とする通信システム。
【請求項４８】
前記第１ネットワーク・エンティティと前記第２ネットワーク・エンティティとは、通信プロトコル（必要に応じて、ＴＣＰ／ＩＰ）によって互いに通信することにより、双方の間で前記データユニットの通信を行う、
請求項４７記載の通信システム。
【請求項４９】
前記第１ネットワーク・エンティティは超高速取引システムであり、
前記第２ネットワーク・エンティティは取引所であり、
前記中継ネットワーク・エンティティは、前記取引システムと前記取引所との間の取引活動を監視するブローカーである、
請求項４７または４８記載の通信システム。
【請求項５０】
ネットワーク通信を監視する方法であって、
制御情報及びペイロードデータを含むデータユニットを受信する工程と、
前記データユニットを別のネットワークの位置に転送する工程と、
前記データユニットが装置から転送されている間に、前記データユニットのペイロードデータを検査する工程と、
前記データユニットが前記装置から転送されている時に、前記データユニットに対する検査の結果に応じて前記データユニットの前記制御情報を変更することにより、前記変更されたデータユニットの全体を前記装置から転送すれば、前記変更されたデータユニットに対する後続の処理が変わるようにする工程と、
を含み、
前記データユニットの前記ペイロードデータを検査する工程は、前記データユニットのディープ・パケット・インスペクションを行うように構成される、
ことを特徴とするネットワーク通信監視方法。
【請求項５１】
前記データユニットに関連付けられたネットワークセッションを特定する工程と、
前記セッションに関連するパラメータ情報と前記データユニットとを比較することにより、前記データユニットの妥当性及び／または受領可能性を判別する工程と、
を含む、
請求項５０記載のネットワーク通信監視方法。
【請求項５２】
制御情報及びペイロードデータを含むデータユニットを受信する受信手段と、
前記データユニットを別のネットワークの位置に転送する転送手段と、
前記データユニットが装置から転送されている間に、前記データユニットの前記制御情報と前記ペイロードデータとを検査する検査手段と、
前記データユニットが前記装置から転送されている時に、前記データユニットに対する検査の結果に応じて前記データユニットの前記制御情報を変更することにより、前記変更されたデータユニットの全体を前記装置から転送すれば、前記変更されたデータユニットに対する後続の処理が変わるようにする変更手段と、
を備え、
前記制御情報は、
少なくとも送信元及び／または宛て先のアドレス情報、
を含み、
前記変更手段は、
前記制御情報の検査の結果に応じて、前記アドレス情報を変更し、
前記ペイロードの検査の結果に応じて、前記アドレス情報とは異なる情報を変更する、
ことを特徴とするネットワーク通信装置。
【請求項５３】
前記制御情報は、順序情報と、誤り検出情報と、のうちの１つ以上を含む、
請求項５２記載のネットワーク通信装置。
【請求項５４】
前記変更手段は、前記ペイロードの検査の結果に応じて、前記誤り検出情報を変更する、
請求項５３記載のネットワーク通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信装置に関する。また、本発明は、ネットワーク通信の監視方法及び通信システムに関する。
【背景技術】
【０００２】
高性能なコンピュータシステムでは、特に、信号電気通信情報、サイバーセキュリティ、データマイニング、金融モデリング及び金融取引、医用画像処理及び医療研究、科学的モデリング及び耐震解析などの分野において、低レイテンシの処理やネットワーク通信が要求されることが多い。自動化された証券取引では、大量回数の取引注文が秒単位で発生するが、金融データに働きかける反応時間を短縮させることは、超高速取引を行うトレーダーにとって重要である。すなわち、受信・処理・実行に要する時間は、情報の強みを活かして市場の非効率性を利用する際に極めて重要である。
【０００３】
証券取引では、取引所からの金融データは、ネットワーク経由でブローカーによってアクセスされる。さらに、金融データは、ブローカーの顧客に配信され、それによって、顧客が取引所からの情報にアクセスし、取引注文を発行することができるようなネットワークを形成している。
【０００４】
信号のレイテンシを制限する要因、（すなわちデータがホストとクライアントの間の距離を進むのに要する時間を決める要因）は、光路によって決まることが自明である。従来、ブローカーは、競争力のあるサービスを顧客に提供する一環として、自身のレイテンシが最小限になるように努めている。当然、ブローカーは、取引所のサーバからの距離ができる限り短くなるようにしており、従って、その距離を隔ててデータをやりとりする必要がある。決まって、これよりも、ネットワークのその他の側面は、レイテンシにとってはるかに重大な脅威である。これらについても抑制が図られているが、多くの場合には多額の費用を要する。また、取引所への経路変更以外の顧客からの取引注文処理は、ブローカー側のリスク管理・規制の形式をとっている。
【０００５】
直接市場アクセス（Ｄｉｒｅｃｔ  Ｍａｒｋｅｔ  Ａｃｃｅｓｓ：ＤＭＡ）を顧客に提供することにより、ブローカー側の処理が最小限になって、低レイテンシの情報処理能力を実現することができる。それでもなお、ブローカーにとっては、必須のリスク管理を監視運用する体制を遵守する必要があるため、ある程度の取引注文の処理が欠かせない。通常、この特定の処理形態は、ブローカー側の制限または他の制約に適合しない顧客の注文をフィルタリングする形態をとっているが、この処理にはレイテンシが発生する。最先端機能のこうした技術的限界は、金融分野以外にも及んでいる。
【０００６】
少なくとも前述した課題の一部を緩和させることが、本発明の目的である。
【０００７】
本発明の一態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段（受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど）；上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段（送信機、出力ポートまたは第１モジュールなど）；ペイロードデータを検査する検査手段（プロセッサまたはフラグ付加モジュールなど）；並びに、上記データユニットが転送される前に、または上記データを転送もしくは出力している間に、ペイロードデータに対する検査の結果に応じて上記データユニットの全てまたは一部を変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段（出力制御モジュールなど）を備えるネットワーク通信装置が提供される。
【０００８】
本発明の別の態様によれば、ペイロードデータを含むデータユニットを受信する受信手段（受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど）；別のネットワークの位置に上記データユニットを転送する転送手段（送信機、出力ポートまたは第１モジュールなど）；データユニットのペイロードデータを検査する検査手段（プロセッサまたはフラグ付加モジュールなど）；及び、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段（出力制御モジュールなど）を備えるネットワーク通信装置が提供される。
【０００９】
好ましくは、データユニットは制御情報をさらに含み、変更手段は、制御情報を変更するように構成されている。
【００１０】
好ましくは、制御情報は、送信元及び／または宛先のアドレス情報、順序情報並びに誤り検出情報のうちの１つ以上を含む。
【００１１】
好ましくは、変更手段は、制御情報の少なくとも一部を破棄及び／または上書きして、その後データユニットを除くように構成されている。
【００１２】
好ましくは、制御情報は、ヘッダ情報及び／または終端情報を含み、好ましくは、以下のネットワークプロトコル情報：ＴＣＰ、ＵＤＰ、ＩＰ、ＭＡＣのうちの１つ以上及び誤り検出情報を含む。
【００１３】
好ましくは、変更手段は、終端部を完全に転送する前に、かつ、好ましくは、データユニットの終端部以外の部分を既に転送した後に、データユニットの終端部を変更するように構成されている。好ましくは、終端部は制御情報を含む。
【００１４】
好ましくは、変更手段は、終端のチェックサムまたは巡回冗長検査（ＣＲＣ）の少なくとも一部を上書きするように構成されており、好ましくは、変更手段は、データユニットの終端部内の制御情報を破棄するように構成されている。
【００１５】
好ましくは、変更手段は、データユニットを転送している時にデータユニットを変更するように構成されている。好ましくは、変更手段は、ペイロードデータを破棄かつ／または変更するように構成されている。
【００１６】
好ましくは、上記装置は、後に転送されるデータユニットを格納する格納手段をさらに含む。
【００１７】
好ましくは、格納手段は、データユニットが転送されていた時に変更されたデータユニットをバッファリングするように構成されており、データユニットは、意図した受信者に届かない、かつ／または意図した受信者によって除かれることが保証されるように変更されている。
【００１８】
好ましくは、変更手段は、バッファリングされたデータユニットを後に転送する前に、このデータユニットのペイロードデータを変更して、変更されたデータユニットの再送要求を防ぐように構成されている。
【００１９】
好ましくは、変更手段は、好ましくはアプリケーション層のレベルで、バッファリングされたデータユニットのペイロードデータを変更して、その後伝送されるこのデータユニットを意図した受信者が処理できるように構成されている。
【００２０】
好ましくは、上記装置は、データユニットの転送を遅延させる遅延手段であって、検査手段の出力とデータユニットの終端部の末尾の転送とを同期させることにより、データユニットが完全に転送される前に、検査手段の結果に応じてデータユニットの終端部を確実に変更することができるようにする遅延手段をさらに備える。
【００２１】
好ましくは、変更手段は、検査手段からの出力が利用可能になると、直ちにデータユニットを変更するように構成されている。
【００２２】
好ましくは、上記装置は、誤った順序でデータユニットを受信したかどうかを判定する判定手段をさらに備え、転送手段は、このデータユニットを正しい順序で転送するように構成されている。
【００２３】
好ましくは、上記装置は、検査手段によって後に正しい順序で検査するために、誤った順序で受信したデータユニットをバッファリングするバッファリング手段をさらに備える。
【００２４】
好ましくは、受信手段は、消失したデータユニットの受信を検出するように構成され、バッファは、誤った順序で受信したデータユニットを外すように構成され、これに応答して検査が行われる。
【００２５】
好ましくは、上記装置は、後に読み出して転送されるペイロードデータを格納する格納手段をさらに備える。
【００２６】
好ましくは、検査手段は、データユニットが転送されている間に、ペイロードデータ及び／または制御情報を検査するように構成されている。
【００２７】
好ましくは、データユニットのペイロードデータを検査する検査手段は、好ましくはデータユニットのアプリケーション層のレベルで、データユニットのディープ・パケット・インスペクションを実行するように構成されている。
【００２８】
好ましくは、データユニットは、転送手段及び検査手段の双方に送られる。
【００２９】
好ましくは、データユニットは、検査手段がデータユニットの検査を実施している間に連続的に転送されている。好ましくは、検査手段がデータユニットの検査を実施している間に、データユニットは、好ましくはバイト単位で、装置を段階的に通過する。
【００３０】
好ましくは、データユニットが転送されている間に、検査手段は、データユニットを構文解析し、ペイロードデータ及び／または制御情報を取り出して検査するように構成されている。
【００３１】
好ましくは、検査手段は、制御情報の検査に基づき、セッション情報、順序情報、受信者の識別情報、送信者の識別情報、状態情報及びポート情報の１つ以上を判別するように構成されている。
【００３２】
好ましくは、変更手段は、制御情報に応じてデータユニットを変更するように構成されている。
【００３３】
好ましくは、ペイロードデータは、指示または要求の形態をとっており、検査手段は、指示または要求の妥当性及び／または受領可能性を判別するように構成されている。
【００３４】
好ましくは、指示または要求は、金融取引の指示である。
【００３５】
好ましくは、変更手段は、ペイロードデータ内の指示または要求が無効または受領不可である場合に、データユニットを変更するように構成されている。
【００３６】
好ましくは、データユニットは、プロトコル・データ・ユニットであり、データグラム、セグメント、パケット及びフレームのうちの少なくとも１つを含む。
【００３７】
好ましくは、上記装置は、プログラマブル・ロジック・デバイスの形態をとっており、好ましくは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）の形態である。
【００３８】
好ましくは、上記装置の機能がハードウェアによって実装されている。
【００３９】
好ましくは、上記装置は、ＴＣＰオフローディングエンジンをさらに備える。
【００４０】
好ましくは、上記装置は、データユニットに関連付けられたセッションを特定する特定手段をさらに備え、検査手段は、セッションに関連するパラメータ情報とデータユニットを比較することにより、当該データユニットの妥当性及び／または受領可能性を判別するように構成されている。
【００４１】
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段（受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど）；上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段（送信機、出力ポートまたは第１モジュールなど）；データユニットのペイロードデータを検査する検査手段（プロセッサまたはフラグ付加モジュールなど）；並びに、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段（出力制御モジュールなど）を備えるネットワーク通信装置が提供される。
【００４２】
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段（受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど）、別のネットワークの位置に上記データユニットを転送する転送手段（送信機、出力ポートまたは第１モジュールなど）；データユニットに関連付けられたセッションを特定する特定手段；並びに、上記データユニットを検査して、上記セッションに関連するパラメータ情報と上記データユニットを比較することにより、データユニットの妥当性及び／または受領可能性を判別する検査手段（プロセッサまたはフラグ付加モジュールなど）を備えるネットワーク通信装置が提供される。
【００４３】
好ましくは、セッションはネットワークセッションである。
【００４４】
好ましくは、特定手段は、データユニットの制御情報に基づき、好ましくは、データユニットのヘッダに格納された制御情報に基づき、セッションを特定するように構成されている。
【００４５】
好ましくは、セッションは、少なくとも一対のネットワーク・エンティティの間の通信セッションであり、データユニットは、通信装置によって仲介されている。
【００４６】
好ましくは、上記装置は、セッションを特定するソケットエンジンをさらに備える。
【００４７】
好ましくは、パラメータ情報は、ネットワーク・エンティティ間の特定の通信セッションに関連する第１情報、及びネットワーク・エンティティ間の全ての通信に関連する第２情報を含む。
【００４８】
好ましくは、第２情報は、持ち高、数量または制限などの金融取引のパラメータに関連する。
【００４９】
好ましくは、パラメータ情報は、ネットワーク・エンティティ間の各通信の相互作用に続いて更新される。
【００５０】
好ましくは、パラメータ情報は、ネットワーク・エンティティ間で通信が行われた各データユニットのペイロードデータに応じて更新される。
【００５１】
好ましくは、パラメータ情報は、好ましくは変更せずに、装置から転送されたデータユニットの累積記録である。
【００５２】
好ましくは、検査手段は、好ましくは、制御情報及び／またはペイロードデータを構文解析すると、直ちに制御情報及び／またはペイロードデータとパラメータ情報を比較するように構成されている。
【００５３】
好ましくは、パラメータ情報は、好ましくは、少なくとも１つのハッシュテーブルの形態で装置に格納されている。
【００５４】
好ましくは、上記装置は、受信したデータユニットに関連付けられた既存のネットワークセッションが存在しない場合に、新たなネットワークセッションに関連付けられる新規情報を取得する手段をさらに備える。
【００５５】
好ましくは、上記装置は、データユニットを完全に転送する前に、データユニットに対する検査の結果に応じてデータユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段をさらに備える。
【００５６】
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段（受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど）；上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段（送信機、出力ポートまたは第１モジュールなど）；データユニットを検査する検査手段（プロセッサまたはフラグ付加モジュールなど）；データユニットに関連付けられたネットワークセッションを特定する特定手段（プロセッサまたはハッシュテーブルなど）；並びに、上記セッションに関連する状態情報と上記データユニットを比較することにより、データユニットの妥当性及び／または受領可能性を判別する比較手段（プロセッサまたはハッシュテーブルなど）を備えるネットワーク通信装置が提供される。
【００５７】
本発明の別の態様によれば、好ましくはサーバの形態をとっている第１ネットワーク・エンティティ；好ましくはクライアントの形態をとっており、通信ネットワークを経由して第１ネットワーク・エンティティに接続可能である第２ネットワーク・エンティティ；並びに、通信装置（本明細書に記載）を備え、第１及び第２ネットワーク・エンティティ間の通信を仲介する中継ネットワーク・エンティティを含む通信システムが提供される。
【００５８】
好ましくは、第１及び第２ネットワーク・エンティティは、通信プロトコル（必要に応じて、ＴＣＰ／ＩＰ）によって互いに通信することにより、双方の間でデータユニットの通信を行う。
【００５９】
好ましくは、第１ネットワーク・エンティティは超高速取引システムであり、第２ネットワーク・エンティティは取引所であり、中継ネットワーク・エンティティは、取引システムと取引所の間の取引活動を監視するブローカーである。
【００６０】
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信すること；上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送すること；データユニットを検査すること；並びに、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにすることを含む、ネットワーク通信を監視する方法が提供される。
【００６１】
本発明の別の態様によれば、ペイロードデータを含むデータユニットを受信すること；上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送すること；データユニットのペイロードデータを検査すること；及び、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにすることを含む、ネットワーク通信を監視する方法が提供される。
【００６２】
好ましくは、上記方法は、データユニットに関連付けられたネットワークセッションを特定すること、並びにセッションに関連するパラメータ情報とデータユニットを比較することにより、データユニットの妥当性及び／または受領可能性を判別することをさらに含む。
【００６３】
好ましくは、ネットワーク通信を監視する上記方法は、金融資産の取引方法を含む。
【００６４】
本発明の別の態様によれば、本明細書に記載され、金融取引システムの一部の形態をとるように構成されたネットワーク通信装置が提供される。
【００６５】
ある例では、本発明は、ネットワーク・エンティティ間（例えば、クライアントとサーバまたはホストの間）のデータ通信を仲介するように構成された通信装置を提供し、これらの通信を解析し、次いで、後にネットワークから原因があるこれらの通信を除くか、あるいはこれらをその最終的な宛先に届くようにする。本装置は、「カットスルー」方式のフィルタリング及び検査を用いたプロセスによって上記を実施する。本装置では、受信したデータユニット（データパケットまたはフレーム）は、そのまま出力まで通過して転送され、その一方で同時に、上記データユニットまたはフレームが構文解析され、展開されて検査が行われる。ディープ・パケット・インスペクション方式のプロセスでは、ヘッダ情報に基づき、（ハッシュテーブルを介して）ネットワーク・エンティティ間の個々の通信セッションを特定する必要があり、次いで、この情報（データユニットの妥当性に関連する状態情報及び他の情報を含む）を用いて、データユニット内のペイロードデータを評価し、そのデータユニットが有効である（または正当なものである）か否かを判定する。すなわち、「アプリケーション層」のレベルまで、そのペイロードデータを検査する。データユニットが事実上有効である（または正当なものである）場合、そのデータユニットまたはフレームを変更せずに、出力を経由して装置から送出する。その代わりに、データユニットまたはフレームが有効でない場合には、そのフレームまたはデータユニットの終端部が装置から送出される直前に、当該データユニットまたはフレームの終端末尾のチェックサムまたはＣＲＣを破棄または上書きする。次いで、上記のようにチェックサムまたはＣＲＣが破棄されたことにより、このフレームまたはデータユニットは、後にネットワークから（または、データユニットの宛先または送信元のアプリケーション層の論理によって）除かれる。従って、この装置では、データユニットを実際に転送している間に検査を実施するため、フィルタリングのレイテンシが最小限度に維持され、さらに、データユニットを転送している時に当該データユニットが最初から最後まで装置を通過するのに要する時間と、データユニットを構文解析・展開して検査し、そのデータユニットが実際に有効であるか否かを判別するのに要する時間とが同期される。破棄されたデータユニットは、ＴＣＰ／ＩＰの観点からは、受信側エンティティ（ホストまたはサーバ）によって途中で消失したものとして扱われる効果がある。そのため、ＴＣＰ／ＩＰプロトコルの仕様に従ってデータユニットの再送が発生するが、この再送データユニットも同様に破棄されて除かれる（なぜなら、再送データユニットは、リスクに違反した同一のペイロードを含んでおり、従って、その再送データユニットも第１の場所で破棄されるからである）。そのため、パケットがリスク検査に違反して、そのデータユニットが破棄された場合、当該データユニットは、並行してメモリにもバッファリングされる。次いで、バッファリングされたデータユニットは、有効なＴＣＰ／ＩＰの構成要素であるが、アプリケーション層のレベルで異なる（送信者が意図した送信とは異なる）ペイロードデータを含むように変更される。このようなペイロードの変更を行うことにより、受信者が、通常の動作過程でそのデータユニットを拒否し、次いで、（「アプリケーション層」のレベルで）エラーメッセージを用いて送信者に遅滞なく通知することが保証される。
【００６６】
本発明の別の特徴は、従属請求項によって特徴付けられる。
【００６７】
本発明は、本明細書に記載され、かつ／または説明された新規の態様または特徴をいずれも含む。本発明は、実質的に、本明細書に記載され、かつ／または添付図面を参照して説明された方法及び／または装置を含む。
【００６８】
本発明は、本明細書に記載された任意の方法を実施し、かつ／または本明細書に記載された装置のあらゆる特徴を具現化するコンピュータプログラム及びコンピュータプログラム製品、並びに本明細書に記載された任意の方法を実施し、かつ／または本明細書に記載された装置のあらゆる特徴を具現化するプログラムが内部に格納されたコンピュータ読み取り可能な媒体も提供する。
【００６９】
本発明は、本明細書に記載された任意の方法を実施し、かつ／または本明細書に記載された装置のあらゆる特徴を具現化するコンピュータプログラムを体現する信号、かかる信号の伝送方法、並びに本明細書に記載された全ての方法を実施し、かつ／または本明細書に記載された装置の特徴を全て具現化するコンピュータプログラムに対応するオペレーティングシステムを搭載したコンピュータ製品も提供する。
【００７０】
本明細書に記載された装置のいかなる特徴を方法の特徴として提供してもよく、本明細書に記載された方法のいかなる特徴を装置の特徴として提供してもよい。本明細書で使用する場合、ミーンズ・プラス・ファンクションの特徴は、それらに該当する構成（適切にプログラムされたプロセッサ及び付属メモリなど）によって代替的に表現されてもよい。
【００７１】
本発明の一態様における任意の特徴は、任意の適切な組み合わせで本発明の他の態様に適用されてよい。具体的には、方法の態様を装置の態様に適用してよく、装置の態様を方法の態様に適用してもよい。さらに、一態様におけるいずれか、一部、及び／または全ての特徴を、任意の適切な組み合わせで、他の態様におけるいずれか、一部、及び／または全ての特徴に適用することが可能である。
【００７２】
また、本発明の任意の態様に記載及び規定された各種の特徴の特定の組み合わせを、個別に実装し、提供し、もしくは利用し、またはその組み合わせを行うことができることを理解すべきである。
【００７３】
本明細書に用いられる「または」という用語は、別段の記載がない限り、排他的または包含的な意味であると解釈することができる。
【００７４】
さらに、ハードウェアによって実装された特徴をソフトウェアによって実質的に実装してもよく、ソフトウェアによって実装された特徴をハードウェアによって実質的に実装してもよい。本明細書におけるソフトウェア及びハードウェアの特徴についての言及は、いずれも適宜解釈されるべきである。
【００７５】
本発明は、本明細書に記載され、かつ／または実質的に添付図面を参照して説明されたネットワーク通信装置、通信システム及びネットワーク通信を監視する方法を含む。
【図面の簡単な説明】
【００７６】
次に、単なる一例として、以下の添付図面を参照しながら本発明について説明する。
【図１】通信システムを示す図である。
【図２】ネットワーク通信装置の構成及び機能の模式図である。
【図３】図２の通信装置のハードウェア構成を示す図である。
【図４】図２の通信装置の論理構成を模式的に示す図である。
【図５】通信装置を用いて、不要なデータユニットにフラグを付加して当該データユニットを変更するプロセスを示す図である。
【図６−１０】通信装置の様々な運用例を時間軸上で模式的に示す図である。
【図１１ａ】正しい順序及び誤った順序のデータユニットを通信装置によって処理する際のフロー図である。
【図１１ｂ】受信データユニットを処理するアルゴリズムを示す図である。
【図１２】再送中に通信装置によって実行される保存機能を示す図である。
【図１３】メモリからデータを再送する様子を示す図である。
【図１４】フラグ付加モジュールがデータユニットに対して実行する例示的な機能を示す図である。
【図１５】通信装置によってデータユニットの状態を判別する様子を説明する工程フロー図である。
【図１６】通信装置を経由したクライアントとホストの間の３ウェイ・ハンドシェイクを示す図である。
【図１７】ＴＣＰネットワーク接続を確立及び終了させるネットワークプロトコルの例示的なプロセスフローを示す図である。
【図１８】通信装置によって用いられる情報であって、データユニットにフラグを付加すべきかどうかを判定するための例示的な情報を示す図である。
【発明を実施するための形態】
【００７７】
図１は、少なくとも２つのネットワーク・エンティティ、すなわち、互いに通信ネットワークを経由して通信するホスト１１０及びクライアント１２０を含む通信システムを示す図である。図示の通り、クライアント１２０とホスト１１０の間の通信は、中継エンティティ１４０によって仲介されている。中継エンティティ１４０は、通信装置１５０を備える。中継エンティティ１４０は、通信装置１５０と通信するインターフェース１６０をさらに備える。このネットワークは、通信装置１５０を経由してクライアント１２０からホスト１１０に、かつ／または通信装置１５０を経由してホスト１１０からクライアント１２０に情報を渡すことができるようになっている。通信装置１５０は、クライアント１２０とホスト１１０の間を低レイテンシで通信することができるように構成されている。
【００７８】
通信装置１５０は、ネットワークに接続されたクライアント１２０とホスト１１０の間の通信を仲介して補助機能を実行するようになっている。このような補助機能としては、データの処理、ルーティング、マイニング、操作、変更、検査、フラグ付加、フィルタリングまたは他の類似のプロセスがある。
【００７９】
図１に示すシステムの例では、ホスト１１０は金融取引所の形態をとっており、クライアント１２０は金融取引機関（超高速取引を行う企業、または実際には当該企業の１台のワークステーションなど）の形態をとり、中継エンティティ１４０はブローカー（投資ブローカーなど）の形態をとっている。本システムの代替例では、クライアントは、任意の台数のワークステーションとすることができ、ホストは遠隔サーバとすることができ、中継エンティティは、インターネット・サービス・プロバイダ、サイバーセキュリティ組織、またはその他類似の中継体とすることができる。
【００８０】
なお、図１には１台の通信装置１５０を示しているが、本例には、任意の台数のクライアント及び／またはホストに加えて、本装置をさらに複数台実装することができる。このとき、上記のクライアント及び／またはホストは、複数の、あるいは実際には１台の通信装置１５０を介して互いに通信することが可能である。
【００８１】
図２は、図１に示したネットワークシステム内で通信装置１５０によって実行される構成及び機能の一例を説明する図である。データユニット２０４を含むデータストリームは、パケット、データグラム、セグメントまたはフレームなどのプロトコル・データ・ユニットの形態をとっており、クライアント１２０からネットワークにより、ホスト１１０に向けて中継エンティティ１４０を経由して送信される。データユニット２０４は、数バイトまたはいくつかのサブユニット（複数のビットなど）からなり、本装置内では、これらの複数のビットは、この装置の１つ以上のクロックサイクル内で処理される。中継エンティティ１４０、従って通信装置１５０は、バイト単位方式で到着したデータユニットのバイト要素またはサブユニットとして、データユニット２０４を受信する。通信装置１５０は、通信装置の処理用プロセッサ２０８に上記データユニットのバイト要素を滞りなく送る。通信装置のプロセッサは、受信するデータユニット２０４の内容及びルールモジュール２１２において概略が定められた規則に基づき、判定ステップを行うように構成されている。通信装置１５０のプロセッサ２０８がデータユニット２０４を構成する各バイトを受信している時、これらの各バイトは、フラグ付加モジュール２１６及び出力制御モジュール２２０に並行して中継される。装置に各バイトが入力される速度は、通信装置から各バイトが出力される速度と等しくすることができる。しかしながら、この通信装置は、通信装置１５０、クライアント及びホストの間のネットワーク構成に関わらず動作するように構成されている。例えば、ホストと通信装置１５０の間のネットワーク構成（１０ギガビット・イーサネットなど）は、クライアントと通信装置の間のネットワーク構成（１ギガビット・イーサネットなど）とは異なるようにすることができる。これにより、クライアント側とホスト側の双方のネットワークに対する通信装置の互換性が向上する。通信装置がネットワークからデータユニットを受信する速度が、当該データユニットを送信可能な速度に等しいか、あるいはそれ未満である場合には、クライアント側とホスト側のネットワーク速度の不一致がレイテンシに及ぼす影響は無視することができる。一般に、レイテンシを最小限するためには、可能な限り最速のネットワーク構成及びネットワークインターフェースを利用することが望ましい。
【００８２】
プロセッサ２０８内に設けられたフラグ付加モジュール２１６では、判定ステップを実施する。詳細については以下でさらに説明するが、この判定ステップは、データユニット２０４内の関連情報の検査に少なくとも部分的に基づき、フラグ付加モジュール２１６がルールモジュール２１２を参照することを含む。次に、フラグ付加モジュール２１６によってデータユニットの妥当性が判別され、それによって出力制御モジュール２２０に指示が出される。
【００８３】
判定ステップを実施する一方で、データユニットの各バイト要素またはサブユニットは、これらの受信中に並行して、通信装置の入力から出力制御にバイト単位で転送される。通信装置の段階では、バッファリングまたは直列化の遅延はない。
【００８４】
転送、送出、処理、判定などの各動作は、受信データユニットのバイトまたはサブユニットの到着時に並行して実施される。各バイトまたはサブユニットを蓄積したものに上記バイトまたはサブユニットを追加して処理、転送、送出、判定などを行うが、このとき、受信するデータユニットのサイズ、そのデータユニットに含まれる情報の任意の要素または他の論理ブロックのサイズに依存した遅延は生じない。すなわち、装置の段階では、バッファリングまたは直列化の遅延はない。
【００８５】
フラグ付加モジュール２１６で実施される判定ステップは、出力制御モジュール２２０の動作と並行して実施される。この出力制御モジュールは、通信装置１５０からのデータユニット２０４の各バイトまたはサブユニットを順次処理し、次いで転送する。
【００８６】
フラグ付加モジュールは、データユニット２０４の変更を出力制御モジュール２２０に通知するか否かを決定する。それにより、フラグ付加モジュールによって特定されたデータユニットを、その後、そのデータユニットを受信させないことによってネットワークから「除き」、または、意図したホスト１１０によって受領もしくは実行させるようにする。出力制御モジュール２２０によるデータユニットの変更（変更手段による）には、フラグ付加モジュール２１６によって指示されるように、データユニットを、マーク付け、特定、区別、操作または破棄する任意の手段が含まれる。フラグ付加モジュール２１６による指示を受けて出力制御２２０により実施される例示的な変更動作には、ネットワークスタック内で認識された意味を踏まえて追加バイトを書き込むこと（データユニットをブラックリストに載せること、データユニットの制御情報を操作することなど）が含まれる。なお、このような制御情報としては、ヘッダ２２８、終端部、ペイロードデータ２３２、チェックサム２３６、巡回冗長検査（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：ＣＲＣ）、セキュリティ検査、またはその後データユニットをネットワークから確実に除く他の任意の要素がある。出力制御モジュール２２０は、フラグ付加モジュール２１６からの指示に関わらず、データユニット２０４の各バイトを出力する。データユニットを変更する判定がなされた場合、それにより、その後ネットワークから当該データユニットを除くが、通信装置は、未だ出力されていないデータユニットの一部を変更することにより、ネットワークをさらに伝わって、例えば、ホスト側のスイッチまたはイーサネットカードの所で、データユニットの変更前に通信装置から伝送されたデータユニットの一部を含むデータユニット全体を除くようにする。データユニットの妥当性に関わらず、ネットワークからデータユニットを除くように変更可能なデータユニットの一部が通信装置１５０から出力されている時に未だ判定がなされていない場合、その妥当性に関わらずデータユニットを破棄し、それによって潜在的に無効なデータユニットが伝送されないようにする。データユニットは、一定の遅延を伴って再処理することが可能であり、これにより、変更及びその後再送することが可能なデータユニットの要素を出力するのと並行して判定を行うことができる。
【００８７】
図２には、ネットワークからデータユニットを確実に除く例示的な手段が示されている。図中、複数のヘッダ２２８、ペイロードデータ２３２及び／またはチェックサム２３６もしくはＣＲＣの形式をとった終端部を含むデータユニット２０４は、フラグ付加モジュール２１６によって無効であるとフラグが付加され、それによって通信装置の出力制御２２０にそのデータユニットを変更させる。これにより、意図したホスト及びそのホスト内の正しいポートに当該データユニットが送信されるものの、次いで、ネットワークプロトコルに関して、ホストのネットワークプロセッサ２４４（ネットワークカードまたはＣＰＵなど）によって判定を行う際に、そのデータユニットが無効であると識別させるようにする。それによってホスト２４８は、そのデータユニットを適正に除く。本例では、フラグ付加モジュール２１６は、出力制御２２０に、データユニットの一定要素のみを操作するように指示しているが、これらの要素は、データユニットの宛先ネットワーク（ホスト及びポートを含む）を表すものではない。むしろ、データユニットのチェックサムまたはＣＲＣといった有効性の指標となるものを操作する（２５２）ことにより、ホストプロセッサ２４４は、データユニットが無効である（あるいは誤っている）と推定し、データユニット２４８を除くようにする。データユニットにフラグを付加するプロセスは、出力制御（通常は、データユニットを実質的に変更するモジュール）に、その後のネットワークによるデータユニットの取り扱いを変更させる指示または命令する他の方法を含む。出力制御は、フラグ付加モジュール２１６から変更指示を受け取ると、出力制御モジュール２２０から未だ転送されていないデータユニット２０４の要素を変更することのみが可能である。というのも、出力モジュールから最後に転送される各バイト（チェックサム及びＣＲＣなど）は変更に最も適しているからである。なぜなら、上記によってフラグ付加モジュールには、データユニットの各バイトまたはサブユニットが装置１５０を通じて連続的に流れるのを抑制または遅延させずとも、判定ステップの結果を受けて完了させるだけの時間が与えられるためである。
【００８８】
ある例では、出力制御モジュール２２０から出力される前にデータユニットの要素の変更を同期できるようにするために、フラグ付加モジュールによって判定ステップを完了させて、遅延は、出力制御によって、受信中のデータユニットのバイトストリームによって発生する。この遅延は、通常、データユニット２０４全体、もしくはデータユニットの任意の要素またはデータユニットの要素を任意に組み合わせたものの大きさには依存しない。さらに、この遅延は、個別のクロックサイクル単位で生じるため、ナノ秒程度の遅延である。
【００８９】
図２には、データユニット２０４の異なる要素を変更する代替例も示されている。これらの例は出力制御２２０に依存しており、フラグ付加モジュール２１６によって指示されるように、通常は最初に受信した、あるいは最低でもペイロードデータ２３２が開始される前に受信したデータユニットの要素が出力制御モジュール２２０によって変更され、それによって出力制御から最初に転送される。通常、データユニットのこれらの要素の変更を利用することはない。なぜなら、この変更を行う際には、受信した各バイトのみ、すなわちペイロードデータの前の各バイトを用いて判定ステップを完了させる必要があるためである。こうした手順は、例えば、データユニットをフィルタリングしてサイバーセキュリティを実施したり、ＤｏＳの運用を実施したりする際に適用可能であり、このとき、データユニットの宛先または送信元の情報を含むデータユニットの制御情報は、判定ステップを完了させるのに十分な量の情報を有する。
【００９０】
ある例では、宛先を決めるデータユニットの要素を変更して、正しいホストではあるが、そのホストの間違ったポートにデータユニットの各バイトを出力する（２５６）。それによってデータユニットはその後評価されず、ネットワークから当該データユニットが効果的に除かれるようになる。一例として、こうした変更動作には、ポートヘッダ２６０の操作が必要となり得るが、このヘッダは、正しいホスト内の正しいポートにデータユニットを導くためのものであり、例えば、ＭＡＣ／ＴＣＰ／ＩＰネットワークの場合には、ＴＣＰヘッダである。本事例では、出力制御モジュール２２０の変更動作により、ＴＣＰヘッダの転送前にデータユニットのＴＣＰヘッダを操作して、受け入れ可能なホストのポートから当該データユニットを無効化し、破棄し、または区別して、ホストによってデータユニット２４８を除くようにする。一般に、データユニットのトランスポート層またはネットワーク層の制御情報を操作することにより、ＴＣＰヘッダに影響を及ぼす。
【００９１】
さらになお、図２は、データユニット２０４の要素に対する変更動作を出力制御モジュール２２０が実施可能な場合も示しており、これによって無効なホストの宛先にデータユニットが確実に送信されるようにする（２６４）。この事象２６４では、ネットワークシステムからデータユニットが欠落したとみなすことが可能である。一例として、こうした変更動作には、物理層ヘッダ２４８の操作が必要となり得るが、このヘッダは、正しいホスト（通常は、（データ）リンク層とも呼ばれるＯＳＩモデルの２番目の層）にデータユニットを導くためのものである。例えば、ＭＡＣ／ＴＣＰ／ＩＰネットワークでは、上記ヘッダはＭＡＣヘッダに相当する。別の例では、論理リンク制御（Ｌｏｇｉｃａｌ  Ｌｉｎｋ  Ｃｏｎｔｒｏｌ：ＬＬＣ）の操作を伴う場合もある。
【００９２】
前述の例では、データユニット２０４のうち、ペイロードデータの前に受信した要素を操作しているが、これは、フラグ付加モジュールの判定ステップが、ディープ・パケット・インスペクション（ｄｅｅｐ−ｐａｃｋｅｔ  ｉｎｓｐｅｃｔｉｏｎ）によって（例えば、ペイロードデータの検査によって、すなわち、データユニットの「アプリケーション層」のレベルで）データユニット２０４のペイロードからの情報を必要とする場合には望ましくない。
【００９３】
通信装置によって有効であると判定されたデータユニット２０４は、フラグ付加モジュール２１６によってフラグが付加されることはなく、この場合、こうした出力制御は、出力中のデータユニットの任意の要素に対する変更または操作の実施には適用されない。
【００９４】
データユニット２０４は、受信した時と同じ形式で通信装置から出力される（２７２）。このデータユニットは、当初意図したホスト１１０及びホストのポートに送信され、ホストのネットワークプロセッサ２４４によって適正に処理され、有効なデータユニットであると判定されてホストにより受領される（２７６）。
【００９５】
図２の具体例では、ホスト１１０が金融取引所の形態をとっており、中継エンティティ１４０はブローカーであり、クライアント１２０はブローカーの顧客（金融取引機関など）の形態をとっている。通常、本システムは、クライアントからホストへのデータフローに当該通信装置の機能を適用するように構成されている。このシステムは、図１及び２に代表されるような本システムの任意の例において、ホストからクライアントへのデータストリームに対して上述のように動作させることも可能である。
【００９６】
一般に、図２に記載したシステムは、有効なデータユニットと無効なデータユニットを区別するためにデータユニットを変更または操作する必要があり、それによって無効なデータユニットをその後ネットワークから除くようにして、ネットワーク通信の低レイテンシ化を促進している。あるいは、物理レベルの信号を用いてデータユニットの伝送を中断することにより、データユニットが無効であるとしてホスト１１０に処理させる。
【００９７】
図３は、通信装置のハードウェアの例示的な概略図を示している。通信装置１５０は、任意の数の物理的ネットワーク入出力３０８を備えており、この入出力を用いて、ネットワークを経由したクライアント１２０及び／またはホスト１１０への通信１３０が可能になる。例えば、ホスト、通信装置及びクライアントの間のイーサネットネットワークの場合、着脱可能な小型フォームファクタ（Ｓｍａｌｌ  Ｆｏｒｍ−ｆａｃｔｏｒ  Ｐｌｕｇｇａｂｌｅ：ＳＦＰ）及び／またはｅｎｈａｎｃｅｄ  ＳＦＰ（ＳＦＰ＋）の送受信機３１６は、通信装置１５０に対してイーサネットネットワークの物理層におけるインターフェースとして機能することができる。また、インフィニバンドによるネットワーク化及び別の物理ネットワーク構成も可能である。さらに、クライアント、通信装置及びホストの間のネットワーク構成の支援に使用可能な他の通信インターフェースの形式を通信装置１５０で利用することができる。少なくとも１つの通信装置のインターフェースは、クライアントまたはホストのネットワーク構成の仕様に一致させることができる。図１に示したネットワークシステムの一部である金融取引所の場合、接続形式は、１ギガビット・イーサネットまたは１０ギガビット・イーサネットが最も有力であり、クライアント及び中継エンティティ（金融取引機関及びブローカーなど）は、両者が通信を行うネットワーク構成の標準規格にそれぞれ適合させることができる。この規格は、任意の種類のネットワーク化手段とすることができる。このようなネットワーク化手段としては、クライアントのワークステーション（ＰＣなど）からＰＣＩｅカードの形態をとった通信装置１５０へのＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）バスによる接続、クライアントと通信装置のプロセッサの間の低電圧差動信号（Ｌｏｗ−Ｖｏｌｔａｇｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌｌｉｎｇ：ＬＶＤＳ）インターフェース及び／またはハイパートランスポート（ＨｙｐｅｒＴｒａｎｓｐｏｒｔ）インターフェースなどがある。
【００９８】
したがって、前述したネットワークシステムは、１ギガビット・イーサネット（ＧｂＥ）、１０ＧｂＥ、４０ＧｂＥ、１００ＧｂＥ、光ファイバーチャネル、ＰＣＩｅもしくは他のバス、ＬＶＤＳ、チップ間通信、オンチップ通信及び／または他の類似のシステムなどの高速データ転送手段に対応可能である。
【００９９】
複数のネットワークインターフェースを通信装置に設けることが可能であり、それによって各ネットワークのホスト／クライアントからアクセスを受け、通信装置を介して多数のクライアント／ホストに分配することが可能となる。チップ間通信手段（ＬＶＤＳまたは類似のもの）をクライアント、中継エンティティ及び／またはホストの間に利用することができる。このようにすれば、ネットワーク・エンティティ間の光路が短縮され、ネットワーク構成のデータ転送速度が低減されることにより、システム全体のレイテンシ、特に、通信装置のレイテンシを抑制することができる。さらに、ネットワークのプロトコル、機能及びデータユニットを簡素化することにより、物理層または他の信号前置処理（物理層における復調、誤り訂正、直列化など）を部分的または完全に不要とするネットワーク通信方法を用いて、データユニットが通信装置１５０に入る前にレイテンシの低減を調整することが可能であり、それによってレイテンシをゼロに向けてさらに減少させる。
【０１００】
通信装置１５０がネットワークインターフェース３０８で受信したネットワーク信号は、物理層処理モジュール３２４により、物理層（例えば、１ＧｂＥ、１０ＧｂＥ、１００ＧｂＥまたは類似の手段を処理するように構成されている）で処理される。
【０１０１】
通信装置の入出力に設けられた物理ネットワーク層処理モジュール３２４は、通信装置のプロセッサ２０８と連携しており、それによって受信したデータユニットを出力できるように処理する。通信装置のプロセッサ２０８は、再構成可能なプログラマブル・ロジック・デバイス（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ  ：ＰＬＤ）２０８で構成されている。既存のＰＬＤには様々な種類があると解されるが、低レイテンシ／超低レイテンシ用途の場合には、高速論理回路を搭載したＰＬＤを実装する。このようなＰＬＤとしては、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）及びフィールド・プログラマブル・ゲート・アレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）などがある。ＰＬＤの再構成に必要とされる周波数によって最適なＰＬＤが決まる。ある例では、ＦＰＧＡを用いることにより、低レイテンシを実現しつつ再構成を柔軟に行うことができる。ＰＬＤは、処理（ネットワーク処理を含む）、操作、データユニットの破棄、ディープ・パケット・インスペクション、「カットスルー」交換、データユニットが通信装置を通過する際の当該データユニットに対するフィルタリング及び／またはフラグ付加を実行するように構成されている。図２に示したルールモジュール２１２及びフラグ付加モジュール２１６は、ＰＬＤ内のハードウェアによって実装されており、必要に応じて外部メモリ３３２を併用する。上記ＰＬＤには、ＴＣＰオフローディングエンジンも搭載されている。
【０１０２】
通信装置１５０に搭載された複数の外部メモリ素子３３２は、ＰＬＤ２０８と連携している。外部メモリ素子は、任意の数の低レイテンシでダイナミックな外部メモリモジュールで構成されている。このメモリにより、ＰＬＤから記憶データ（通常は小容量）に高速アクセスすることが可能となる。図４には、一例として、ダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス・メモリ（Ｄｏｕｂｌｅ  Ｄａｔａ−Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＤＲ  ＳＤＲＡＭ）３４０といった低レイテンシのメモリ素子が示されている。外部メモリ素子には、任意の数のスタティック・ランダム・アクセス・メモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＳＲＡＭ）モジュールも含まれる。このようなＳＲＡＭとしては、図示の通り、ＱＤＲ（Ｑｕａｄｒｕｐｌｅ  Ｄａｔａ−Ｒａｔｅ）ＳＲＡＭ３４８などがあり、これらのメモリもＰＬＤと連携している。一般に、外部メモリ素子３３２は、任意の手段のデータ記憶装置（データを一括して格納し、取り出すことが可能なフラッシュメモリを含む）を含むことができる。
【０１０３】
一連の非ネットワーク入出力３５６を用いて、周辺のハードウェア及びインターフェース（中継エンティティ（ユーザー）インターフェース１６０など）に通信装置を接続することができる。例えば、バスを介して、任意の数のコンピュータまたはサーバを接続することができる。このバスは、任意の数のＰＣＩ  Ｅｘｐｒｅｓｓバス３６４を含むことができるが、ユニバーサル・シリアル・バス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）３７２などの任意の形式のハードウェア相互接続とすることが可能であり、接続されたハードウェアへのデータ転送要件に応じて利用の仕方が決まる。相互接続された周辺ハードウェアは、システム管理用インターフェース、ＰＬＤ２０８を再構成するためのインターフェース、ルールモジュール２１２、フラグ付加モジュール２１６または別の任意のＰＬＤ構成要素を操作するためのインターフェースを備える。加えて、バスを介して別のメモリを通信装置１５０に接続することにより、大容量のネットワークデータ、または通信装置によって直ちに必要とされない大容量のデータを格納することもできる。特に、バスを介して通信装置に接続された周辺メモリを用いることにより、長期間にわたりネットワークトラフィックを監視することが可能となる。ディスプレイ、ＣＰＵ及び他の周辺ハードウェアを、バスまたは類似の非ネットワーク入出力３５６を介して通信装置に接続することもできる。
【０１０４】
通信装置１５０は、回路基板３８０上に配置されており、電源インターフェース３８８を経由して、例えば、回路基板３８０がＰＣＩｅカードの形態をとっている場合にはＰＣＩｅスロットを経由して、外部電源から電力の供給を受けている。
【０１０５】
ある例では、通信装置１５０は、高速メザニン（Ｍｅｚｚａｎｉｎｅ  Ｃａｒｄ：ＭＣ）カード及びＦＰＧＡメザニンカードなどのメザニンカード用の入出力、サブミニチュアバージョンＡ（ＳｕｂＭｉｎｉａｔｕｒｅ  ｖｅｒｓｉｏｎ  Ａ：ＳＭＡ）コネクタなどの同軸コネクタ並びに送受信機も備える。
【０１０６】
通信装置１５０をネットワークカードの一部とした上で、クライアントシステム及び／またはホストシステムをそれと同じネットワークカードに搭載し、かつ／またはこれらを局所的に接続（例えば、バスまたはチップ間通信手段を介して）することができる。クライアントのサーバを、同一ネットワークカードの一部とするなどして、中継エンティティにあり、かつクライアント・エンティティから離れた通信装置上に局所的に搭載することが可能であり、ホストのサーバについても、これと同じことが言える。例えば、取引所と通信する集積化通信装置１５０をブローカーのネットワークカードに搭載すれば、クライアント（例えば、取引機関）から発行された注文に対し、ネットワークカード上のサーバでリスク管理を実行することができる。顧客がサーバに物理的に触れる必要がないのは有利となり得る。なぜなら、顧客がネットワークカード（具体的には、通信装置の構成要素）を物理的に交換または変更してブローカーのリスク管理を省略または変更する必要がないからである。
【０１０７】
ネットワークカードは、任意の数のＰＬＤ、すなわち通信装置、クライアント及び／またはホストの機能を提供する複数のＰＬＤを備えることを特徴とすることができる。例えば、２個のＰＬＤ（ＦＰＧＡまたはＡＳＩＣなど）を搭載したネットワークカードは、通信装置１５０に関する機能（本明細書に記載）を実行する第１ＰＬＤ、及びこれと連携し、顧客定義のプログラム済み論理を実行して金融取引注文を発行するために顧客によって利用される第２ＰＬＤを備えることができる。
【０１０８】
ブローカーは、例えば、あるＳＦＰ＋ポートを用いて、上記ネットワークカードをクライアントのサーバと接続することができ、それによってクライアントがネットワークカードと通信できるようになる。別のＳＦＰ＋ポートを用いることにより、ブローカーは、何らかのインターフェースを介して各種リミットを監視及び設定することができる。クライアントによりネットワークカードを介して送信されたネットワーク経由のデータユニットは、通信装置の運用に従って評価される。ただし、クライアントのデータユニットは、クライアントのサーバから（例えば、ＰＣＩｅバスを介して、または顧客によって操作される第２ＰＬＤから）ブローカーのＰＬＤに、チップ間通信手段（ＬＶＤＳラインなど）を通じて送られる。
【０１０９】
図４は、通信装置のＰＬＤ２０８の論理構成を模式的に示す図である。本例の目的の場合、ＰＬＤの動作は、２つの論理部（すなわち、Ｅｔｈ０  ４０２及びＥｔｈ１  ４０４）に分けて記述される。Ｅｔｈ０  ４０２は、ネットワークを経由して入ってくるデータユニット（例えば、元々はクライアントからホストに向けて送信されたデータユニット）を受信し、転送する部分である。Ｅｔｈ１  ４０４は、これに関連し、ホストから受信したデータユニットをクライアントに向けて最小の遅延で転送するように構成されたインターフェースである。通常、ＰＬＤは、ネットワーク処理論理回路、フラグ付加モジュール、出力制御及びメモリ制御部を備える。
【０１１０】
以下、図４を参照して、通信装置に搭載されたＰＬＤ２０８のＥｔｈ０  ４０２の部分でネットワークからのデータユニットを処理する場合について述べる。データユニットは、Ｅｔｈ０  ４０２に組み込まれた第１ＰＬＤのネットワーク・インターフェース・モジュール４０６（受信手段）でネットワークから受信される。例えば、ＰＬＤのネットワーク・インターフェース・モジュール４０６は、進入するデータユニットをヘッダ及び／またはチェックサムのレベルで処理可能な論理回路の形態をとり、そのデータユニットが有効に受信されたかどうかを判定する。データユニットは、ＭＡＣ、ＩＰ、ＴＣＰまたはＵＤＰなどの様々なネットワークプロトコルに基づく制御情報を含む。イーサネットネットワークから入ってくるデータユニットのストリームは、この第１ＰＬＤのネットワークインターフェース４０６で処理される。
【０１１１】
受信中のデータユニットの各バイトは、第１モジュール４０８（転送手段）に移送または転送される。この第１モジュールは、Ｅｔｈ０の部分に組み込まれた出力制御モジュール４０８である。このモジュールは、データユニットを出力できるように処理すると共に、フラグが付加されたデータユニットを操作または変更して、その後ネットワークからそれらのデータを除くようにする。データユニットの各バイトは、データユニットの構文解析部の形態をとった第２モジュール４１０にも移送される。出力制御４０８は、データユニットの各バイトを、遅延がほとんどあるいは全くない状態で受信するが、データユニットの各バイトを出力する際には、例えば、誤った順序でデータユニットを受信した場合、受信するデータユニットの構文解析に応じて遅延が生じる（構文解析部４１０がデータユニットを受信した時の例に関しては、クロックサイクル単位で）。この遅延により、データユニットを受信・処理（例えば、出力制御２２０で）して、そのデータユニットの要素（後端のチェックサムまたはＣＲＣなど）を変更するまでに要する時間と、フラグ付加モジュールが判定ステップを完了させるのに必要な要素までデータユニットを受信するのに要する時間（すなわち、フラグ付加モジュールが判定ステップを完了させて出力制御２２０に指示する時間）とが等しくなる。この遅延により、データユニットの出力（例えば、チェックサムやＣＲＣといった、データユニットの変更対象要素まで）と、フラグ付加モジュールからの指示（データユニットの変更対象要素を変更すべきか否かに関する）とが同期するようになる。出力制御モジュール及びフラグ付加モジュールでデータユニットを処理するのに要する時間には、データユニット全体を受信するための時間は含まれない。なぜなら、データユニットは、入力から出力制御モジュール及びフラグ付加モジュールにバイト単位でそれぞれ流れているためである。なお、上記遅延は、データユニットのサイズには依存しない。
【０１１２】
データユニットを受信している時に、当該データユニットが出力制御４０８及び構文解析部４１０に転送されて、データユニットの「カットスルー」処理が効果的に行われる。それにより、データユニットを完全に処理する前に（あるいは、完全に受信する前でも）、データユニットの送出（または転送）が開始される。これにより、フラグ付加の処理をしつつ、出力制御４０８でデータユニットを並行して出力することができる。このことは、データユニットを直列処理してから出力する従来の方法に比べて、システムのレイテンシを低減させるのに有用である。
【０１１３】
構文解析モジュール４１０は、Ｅｔｈ０に組み込まれたＰＬＤのネットワーク・インターフェース・モジュール４０６からデータユニットの各バイトを受信し、当該データユニットの構文解析を行う。この構文解析では、通常、データユニットのうち、トランスポート層までの任意のまたは全てのヘッダ（すなわち、ＭＡＣ／ＩＰ／ＴＣＰヘッダ）が除去される。従って、データユニットのペイロードデータ及びヘッダは、後続の処理では互いに分離されている。ペイロードデータの各バイト４２２及びデータユニットのヘッダの各バイト４２４は、別々に構文解析され、構文解析モジュール４１０からソケット・デジタル多重化（Ｄｉｇｉｔａｌ  Ｍｕｌｔｉｐｌｅｘ：ＤＭＸ）モジュール４１２に送られる。
【０１１４】
ソケットＤＭＸモジュール４１２から出力されたペイロードデータは、ソケット保存モジュール４１４に転送され、ここでペイロードデータは、ＰＬＤ及び／または外部メモリ素子３３２内のメモリ素子に格納できるように処理される。ソケット保存モジュール４１４によって格納できるように処理されたデータユニットは、メモリ制御部４１６に滞りなく送出され、メモリ制御部は、それに応じてデータユニットをメモリに分配して格納するように動作する。データユニットは、ソケット復元モジュール４１８に送付される。このモジュールにより、好ましくは最小のレイテンシで、メモリ素子に格納されたデータを評価することができる。データユニットの伝送時に意図しない誤りが生じた場合、あるいはＴＣＰで再送されたデータユニットを確認し、誤った順序のデータユニットの再配置を促進する場合、メモリ素子に割り当てられたデータユニットを将来の再送用に格納する。
【０１１５】
ペイロードデータを構成する各バイトの別のストリームをＤＭＸモジュールから出力することにより、ソケット保存モジュール及びメモリ制御部を迂回して、ソケット復元モジュール４１８にデータユニットが転送されるようにする。このソケット復元モジュールでは、データユニットを処理して、当該データユニット（または、データユニットのＴＣＰ／ＵＤＰを構成する部分といった、そのデータユニットの少なくとも一部）を、Ｅｔｈ０のフラグ付加モジュール４２０に直ちに転送すべきかどうかを判定する。正しい順序の一部としてデータユニットを受信したと判定されると、そのデータユニットを直ちに転送する。このようにして、データユニットを遅延させる必要はないとシステムが判断した場合には、データユニットの各バイトをフラグ付加モジュールに直接流すことができる。さもなければ、誤った順序のデータユニットが、ソケット復元モジュール４１８によってメモリ素子から復元され、次いでフラグ付加モジュール４２０に転送されるのみである。再送すべきデータユニットを特定するためには、妥当性確認のプロセスを実施する。ソケットエンジンは、あるコマンドを発行して、データユニット、具体的には、そのペイロードを検査するようにする。その後、ソケット復元モジュール４１８は、コマンド４３３を発行して、出力制御４０８に以前に送信されたデータユニットの再送を指示する。
【０１１６】
構文解析モジュール４１０からのヘッダ出力４２４も、ソケットＤＭＸモジュール４１２で受信されて、その後ソケットＤＭＸモジュール４１２からＥｔｈ０部のソケットエンジン４２６に出力される。このソケットエンジンには、ＤＭＸモジュールから要求が送られる。ソケットエンジン４２６は、データユニットのヘッダ要素を調べることにより、中継エンティティのルール（このルールはルールハッシュテーブル（Ｒｕｌｅｓ  Ｈａｓｈ  Ｔａｂｌｅ：ＲＨＴ）４３０からアクセスされる）に関して、データユニットの妥当性（フラグ付加モジュール４２０に関して説明した）及び／または開放もしくは容認されたネットワーク接続に対する関連性の判定を支援する。このヘッダ情報は、データユニットの送信元及び宛先といった任意のネットワーク情報を含む。より具体的には、このヘッダ情報は、ネットワーク、クライアント、ホストポートなどの各アドレス並びにデータリンクヘッダ、トランスポートヘッダ及びネットワークヘッダのいずれかの形式（多くの他のアドレスの中でもＴＣＰ、ＩＰ、ＭＡＣ及びＵＤＰアドレスなど）に該当し得る。さらに、データユニットの順序情報（最後に受信したデータユニット及び最後に処理したデータユニットを含む）などの補助情報を利用して、正しい順序の一部としてデータユニットを受信したかどうかを判定する。
【０１１７】
ソケットエンジン４２６は、データユニット、具体的には、データユニットのペイロードデータ２３２を処理、保存、確認または復元するためのコマンドを発行する。ソケットハッシュテーブル（Ｓｏｃｋｅｔ  Ｈａｓｈ  Ｔａｂｌｅ：ＳＨＴ）４２８及び／またはＲＨＴ４３０を参照して、出力中のデータユニットが誤った順序の一部として受信されたものであると判定された場合には、ソケットエンジン４２６から出力制御４０８にコマンドを送ることにより、そのデータユニットを変更するように指示することができる。この場合、データユニットは出力中に変更されて、その後ネットワークから当該データユニットを除くようにする。
【０１１８】
処理を終えたヘッダ（または類似のもの）は、データユニットの妥当性を判定するためのルールと比較される。このヘッダ（または類似のもの）は、ソケットエンジン４２６からソケットハッシュテーブル（ＳＨＴ）４２８に中継される。このＳＨＴでは、データユニットのネットワークアドレス及びその他の情報を用いて、データユニットを送信元のクライアント及びポート並びにＳＨＴ４２８に格納された添付ルールと関連付けることにより、データユニットのネットワークセッションを特定することが可能となる。なお、ルールハッシュテーブル（ＲＨＴ）４３０は、以下で説明するように、一定の状況において参照される。
【０１１９】
上記のようにハッシュテーブルを利用したのは、これらによって上記情報へのアクセス及び対応付けを高速に（従って低遅延で）行う手段が得られるためであるが、リレーショナルデータベース、配列、ツリー、リスト及びルックアップテーブルを利用することもできる。
【０１２０】
上記により、データユニットに適用すべきルールが特定されたため、適用可能なルールについてのコマンドがソケットエンジン４２６からフラグ付加モジュール４２０に向けてソケットＤＭＸ４１２に発行される。
【０１２１】
ソケット復元４１８から出力されたデータユニットは、メモリ制御部４１６から受け取ったものであろうとなかろうと、フラグ付加モジュール４２０に転送される。フラグ付加モジュール４２０は、ルールについての上記コマンドをソケットエンジン４２６から受け取り、中継エンティティのルールに関してデータユニットが有効であるかどうかについての判定を行う。次いで、そのデータユニットのペイロードデータを検査（ディープ・パケット・インスペクション）することにより、当該データユニットが有効であるかどうかの判定がなされる。これにより、そのデータユニットにフラグを付加するか否かについての判定結果が得られる。このようにしてデータユニットにフラグを付加することにより、その後ネットワークから当該データユニットを「欠落」させることが可能となり、意図した受信装置が効果的に、そのデータユニットを受信せず、あるいは処理できるようにする（図２を参照して上述したように）。データユニットの内容は、そのデータユニットに適用可能なルールと比較されるが、これらのルールは、ソケットエンジン４２６を介してＳＨＴ４２８及び／またはＲＨＴ４３０から得られたものである。フラグ付加モジュール４２０は、出力制御がデータユニットを変更するように指示する適切なコマンド４３２を出力制御４０８に送り、その後ネットワークから当該データユニットを「欠落」させるようにする。さもなければ、変更するように特定されなかったデータユニットは、適切なコマンド４３２を出力制御４０８に発行するか、あるいはコマンドを全く発行しないかのいずれかによって変更されないため、当該データユニットはネットワークから「欠落」しない。ある例では、フラグ付加モジュール４２０は、データユニットが処理されると、出力制御４０８にコマンドを発行するが、出力制御４０８は、コマンドフラグ付加モジュール４２０からコマンドを受け取るまで、データユニットを破棄して再送する。いずれの場合も、データユニットは、出力制御４０８から出力され、Ｅｔｈ１に組み込まれたＰＬＤのネットワーク・インターフェース・モジュール４３４に送られる。そこでデータユニットは、ＰＬＤ２０８及び通信装置１５０から出力され、物理的ネットワーク入出力３０８を介してネットワークに送られる。
【０１２２】
同時に、データユニットに対するフラグ付加モジュール４２０の判定をＲＨＴ４３０、ソケットエンジン４２６及び／またはＳＨＴ４２８が受け取ることにより、動的なルール、すなわち、ネットワークへのデータユニットの転送履歴（除くか否か）に依存したルールを更新もしくは変更することができ、または判定ステップの結果を記録することができるようにする。
【０１２３】
Ｅｔｈ１に組み込まれたＰＬＤのネットワーク・インターフェース・モジュール４３４が受け取るデータユニットは、Ｅｔｈ０に関して説明した内容と同様の方法で処理される。なお、同一動作でない場合には、同等のモジュールを同様に利用する。受信中のデータユニットは、出力制御４３６及び構文解析部４３８に「カットスルー」される。これと並行して、ヘッダ及びペイロードデータの各出力は、ソケットＤＭＸ４４０で受け取られる。データユニットの各ヘッダは、ソケットエンジン４４２に出力され、Ｅｔｈ０  ４０２の部分のＳＨＴ４２８に中継される。ここで、当該データユニットに適用可能なルールを、そのデータユニットの各ヘッダに応じて帰属的に決定することができる。ＳＨＴ４２８は、Ｅｔｈ０を構成する論理部４０２とＥｔｈ１を構成する論理部４０４とで共有されたモジュールであり、それによってデータユニットのルールが集約化され、必要に応じて、全てのデータトラフィック（すなわち、内向き及び外向き）に適用されるようにする。
【０１２４】
同様に、ＲＨＴ４４４も参照して、データユニットに適用可能なルールを決定する。なお、ＲＨＴ４３０及びＲＨＴ４４４も、ＳＨＴ４２８のように集約化することができる。各コマンドは、ＳＨＴ４２８及び／またはＲＨＴ４４０からソケットエンジン４４２に発行される。そこからソケット復元４４６は、受信中のデータユニットがメモリからアクセスを受ける（このとき、データユニットは、ソケットＤＭＸ４４０からソケット保存４４８を経て、さらにはメモリ制御部４５０を経由してメモリに入力される）べきか、それともそのデータユニットをフラグ付加モジュール４５２に直接転送すべきかを判定する。フラグ付加モジュール４２０、４５２は、各部に分かれて示されているが、これらのモジュールも統合することができる。
【０１２５】
受信するデータユニットにフラグを付加するか否かについてフラグ付加モジュール４５２が判定すると、その判定が出力制御４３６に転送される。出力制御４３６は、ネットワークからデータユニットを除くように当該データユニットにフラグが付加されていた場合には、そのデータユニットを操作し、あるいはデータユニットにフラグが付加されていなかった場合には、そのデータユニットを操作しない。データユニットは、操作されていようとなかろうと、Ｅｔｈ０に組み込まれたＰＬＤのネットワーク・インターフェース・モジュール４０６に転送され、そこでデータユニットは、ＰＬＤ２０８及び通信装置１５０から出力され、物理的ネットワーク入出力３０８を介してネットワークに送信される。
【０１２６】
図５は、上述したＰＬＤの動作のプロセスフロー図である。図５は、図４に示した構成を参照しており、具体的には、以下の説明では、Ｅｔｈ０を構成する論理部４０２の各要素を参照しているが、これらのプロセスは、Ｅｔｈ１を構成する論理部４０４に提供された機能についても同様に当てはまる。
【０１２７】
通信装置及びＰＬＤで受信中（５０４）のデータユニットは、「カットスルー」または転送されてアウトバウンド処理が並行して行われ（あるいは、出力制御モジュール４０８を介して伝送される）、それと共に、データユニットに適用可能なルールが決定され、データユニットにフラグを付加すべきか、それともデータユニットを特定すべきどうかが判定される（５０８）。このとき、データユニットの変更を出力制御に指示することにより、データユニットが変更される。データユニットは、バイト単位方式で出力制御に送られて、各バイトの受信中にそれらのアウトバウンド処理５１６が行われる。受信中のデータユニットの制御情報要素（ヘッダなど）は、ソケットエンジン４２６で処理される（５２０）。受信中のデータユニットの各バイトは、その後バイト単位で転送され、フラグ付加モジュール４２０でディープ・パケット・インスペクション５１２が実施される。ある例では、データユニットの順序に関してＴＣＰストリームを復元した後に、ディープ・パケット・インスペクション５１２を開始する（これは、ＵＤＰストリームでは省略される）。
【０１２８】
データユニットの各ヘッダを処理し（５２０）、それぞれの送信元及び／または宛先（例えば、クライアント、ホスト及び／またはポート）に関して各ヘッダを特定すると（５２４）、データユニットの送信元及び／または宛先の関連ルールをルールモジュール２１２（これは、ＳＨＴ４２８及びＲＨＴ４３０を含み得る）から検索して参照する（５２８）。
【０１２９】
ある例では、各ヘッダを処理して（５２０）、クライアント及び／またはセッションを特定した（５２４）後ではあるものの、関連ルールを探し出して参照する（５２８）前に、ディープ・パケット・インスペクション５１２を実施すべくデータユニットのペイロードを転送するのみとする（点線で図示）。
【０１３０】
次いで、データユニットに適用可能なルールを決定し（５３２）、その後、フラグ付加モジュール４２０で特定されたルール５３２に関してデータユニットが有効かどうかについて判定を行う（５３６）。なお、データユニットの関連内容は、ディープ・パケット・インスペクション５１２で検索されている。データユニットが有効である場合には、そのデータユニットにはフラグを付加せず、変更を行わない（５４０）。このフラグ付加ステップは、データユニットを変更すべきかどうかを特定すること、及び連続的にデータユニットを出力している出力制御に指示を中継することを含む。データユニットが有効である場合には、そのデータユニットは、変更用のフラグ付加手段によってフラグが付加されず、変更しない形式で出力される。データユニットが有効ではない場合には、フラグ付加モジュールからコマンドを送ることにより、出力制御にデータユニットの変更を指示する（５４４）。
【０１３１】
ヘッダ及びペイロードの処理ステップ５２０からデータユニットの変更なし（５４０）及びデータユニットの変更（５４４）までの各段階は同期しており、データユニットが無効であると特定された場合には、データユニットの「カットスルー」処理５０８からデータユニットの変更対象要素までアウトバウンド処理５１６を完了させるのに要する時間とほぼ同時に行われる。通常、プロセスにおいて並行して行われるこれらの分岐は、それぞれ１０ｎｓ〜４００ｎｓ内で完了するように構成されているが、わずか５ｎｓ〜１００ｎｓでこれを行うようにすることも可能であり、正確に同期させることもできる。勿論、これらのプロセスの完了時間は、システム及びネットワーク全体の性質に依存するが、０．４ｐｓ〜１．５ｐｓ程度が要求される場合もある。
【０１３２】
データユニット全体が出力されると、その後ネットワーク処理エンティティによってデータユニットは欠落され、あるいは欠落されない。データユニットが変更されたかどうかについて判定がなされ（５４８）、通信装置１５０から出力される前のアウトバウンド処理５１６中にデータユニットが変更されていた場合には、そのデータユニットは、その後ネットワークから除かれる（５５６）。なぜなら、データユニットが意図したホストまたはポートに到達しないか、データユニットがその終端部（チェックサム要素またはＣＲＣ要素など）について無効化されるか、あるいはペイロードデータが破棄されるためである。
【０１３３】
アウトバウンド処理中にデータユニットが変更されていない場合には、そのデータユニットは、通信装置１５０に当初入力されたように、意図した受信者に転送される。従って、そのデータユニットは、受信者によって受領される（５６４）。
【０１３４】
図６は、通信装置の動作を模式的に説明する図であり、通常のデータユニットを受信・処理している最中の様子を時間軸上に示している。ここで、レイテンシとは、データユニットを処理するのに必要な時間と定義され、データユニット２０４の前部を受信した時点から、変更されるか否かによらず、そのデータユニットの最後の要素が出力されるまでの時間である。この通信装置は、５０ｎｓ〜３５０ｎｓ未満、好ましくは３０ｎｓ〜１５０ｎｓのレイテンシを有するように構成されている。
【０１３５】
図６は、特に、データユニットの後端要素（チェックサム及び／またはＣＲＣなど）の操作に関連して説明されたものである。受信データユニット２０４は、入力で受信されている。このデータユニットは、ネットワークプロトコル６０４などのネットワーク制御情報を含むヘッダ（例えば、ＭＡＣ６０８、ＩＰ６１２及びＴＣＰ６１６の各ヘッダ）、並びにデータ本体（すなわち、ペイロードデータ６２０）で構成されている。データユニット２０４は、誤り検出用の終端部も含んでおり、これはチェックサムの形式をとっている。通信装置に進入するデータユニットは、ＰＬＤの入力で受信されており、「カットスルー」処理のために中継される。そこで受信中のデータユニットの各バイトは、データユニットの制御情報、ネットワークプロトコル要素６０４またはペイロードデータ６２０に関わらず、出力制御モジュールで出力処理を行うために転送される。受信中のデータユニットの各バイトは、フラグ付加モジュール４２０に中継されて、ディープ・パケット・インスペクションが実施され、各プロトコル（通常はトランスポート層、例えば、ＴＣＰ６１６またはＵＤＰのヘッダまで）がＰＬＤの構文解析モジュール４１０によって構文解析されると、当該データユニットにフラグを付加すべきかどうかが判定される。これと並行して、データユニットの各バイトは、これらを受信すると直ちに出力処理できるように中継されるが、このとき遅延６２４を伴う。この遅延は、パケットの「カットスルー」交換を完了させて出力処理を行い、終端のチェックサムまで出力処理を完了させるのに要する時間から、データユニットの制御情報（ヘッダなど）を構文解析し、データユニットのペイロード６２０をフラグ付加モジュールに中継してディープ・パケット・インスペクションを完了させた上で、データユニットにフラグを付加すべきかどうかを判定し、それに応じて出力に指示するのに要する時間を引いたものに等しいか、あるいはそれよりも長い。通常、この遅延は１００ｎｓ未満であり、より一層好ましいのは５０ｎｓ未満である。このようにして、フラグ付加モジュールの判定結果を得るのと同時に、データユニットの後端要素（チェックサムを含む）が開始するまでの出力処理を完了させることができる。データユニットを出力及びフラグ付加モジュール６２４にそれぞれ中継する際の遅延は、経験的に、検査対象のアプリケーション層プロトコル（ペイロードデータなど）及び／または通信装置のプロセッサの詳細事項に基づいて推定される。例えば、処理速度の遅いＦＰＧＡまたはＡＳＩＣを実装すると、高速プロセッサよりも多数のクロックサイクルが各動作についても必要となる。上記推定が間違っていると判明した場合には、さらに数ステップを使用する（図９を参照して説明する）。
【０１３６】
フラグ付加モジュールによってデータユニットの妥当性が確認された場合、フラグ付加モジュールは、そのデータユニットの変更を出力制御に指示しない。この「カットスルー」システムは、データユニットの出力中と並行して、当該データユニットがフラグ付加モジュールを通過する点で有利である。従って、データユニットの変更可能要素を除いてデータユニットをそのまま出力し、それにより、フラグ付加モジュールから指示を受けて、例えば、チェックサムまたはＣＲＣが「誤り」であるか、あるいは破棄されているかに基づき、その後ネットワークからデータユニットを除くことができる。
【０１３７】
データユニットが有効であるとフラグ付加モジュールによって判定された場合、そのデータユニットは変更されない。このとき、このデータユニットのチェックサム２３６は、有効な形式６２８を維持することができる。データユニットの各バイトは、出力制御から出力されるが、これらのバイトは、データユニットの妥当性に関わらず、通信装置によって受信されている。変更対象要素が出力されていない場合、データユニットの変更対象要素のみを変更する。例えば、データユニットの最後部の各バイト（チェックサムまたはＣＲＣを含む）を破棄することができ、その結果、そのデータユニットがホストによって受信されると、破損または誤りであると認識され、次いで欠落される。
【０１３８】
フラグ付加モジュールによる判定とチェックサムまでのデータユニットの出力処理との間の不一致には許容の余地がある。しかしながら、データユニットの変更対象要素（例えば、チェックサムまたはＣＲＣ）が出力制御から出力されようとしていながら、フラグ付加モジュールが判定ステップを完了していない場合には、残りの変更対象要素、さもなければデータユニットは、中継エンティティ１４０によってその妥当性が判定されていなくても、ホストによって受領されない。従って、この装置はフェイルセーフである。
【０１３９】
遅延が長くなりすぎると、レイテンシが増大することになる。フラグ付加モジュールによる判定ステップの完了と、変更対象要素までのデータユニットのアウトバウンド処理の完了とのタイミング差がゼロではない場合、システムのレイテンシまたは精度にとって好ましくない。
【０１４０】
出力制御からデータユニットの各バイトを出力する際は、中断または遅滞させることができない。なぜなら、通信装置１５０への入力データ速度は、通信装置１５０の出力データ速度と等しいからである。
【０１４１】
出力処理されると、データユニットの各バイトは、通信装置から当該データユニットの意図した宛先にそれぞれ転送され、そこでデータユニットは受信者によって承認される。データユニットの要素を変更すべきであるとして、フラグ付加モジュールによって特定され、出力制御によって操作された場合には、そのデータユニットはネットワークから除かれる。なぜなら、意図した受信者に転送された変更済みのデータユニット（及び、その内部の誤ったチェックサム）は、ホストにより、ネットワークプロトコル処理に従って欠落されるためである。逆に、フラグが付加されず、相応の変更がなされなかったデータユニットは、有効な形式を維持しており、その後ホストによって受領される。従って、本システムでは、さらにその下流の他のネットワーク・エンティティ（イーサネットカード及びＴＯＥを含むネットワークカード、スイッチ、サーバ並びにブリッジなど）にとって、データユニットをフィルタリングするプロセスの負担が軽減される。
【０１４２】
図２によれば、フラグが付加されたデータユニットも、変更、操作、破棄もしくは修正されたデータユニットの制御情報要素、ヘッダ要素またはペイロードデータの任意の組み合わせを有することができる。
【０１４３】
図６は、ディープ・パケット・インスペクションと「カットスルー」処理の双方を並行して利用するシステムの能力を示している。
【０１４４】
ＦＰＧＡは、各機能を並列に走らせるように構成されており、そのため、多数のプロセスを同時かつ効率的に実行することができる。これにより、上述した並列処理方式を制御し、それによって双方の領域でのレイテンシを低減させることが可能である。
【０１４５】
図７は、破棄されたデータユニットを通信装置１５０によって再送させないようにする方法を示す図である。通信プロトコルで用いられる信頼性の高い伝送機構（ＴＣＰによって利用されているものなど）では、無効な形式で受信され、あるいは途中で消失したとみなされるデータユニットの送信者から再送指示を発行することができる。
【０１４６】
図示の例では、通信装置１５０が受信したデータユニット２０４は変更され（６３６）（ペイロードが無効であると判定されたため）、その上で出力される。このデータユニットは、ネットワークによって何らかの方法を用いて処理され、それにより、その後ネットワークから（例えば、データユニット後端のチェックサムを破棄することによって）当該データユニットを除く。
【０１４７】
信頼性の高い伝送プロトコルを用いると、受信者によってデータユニットが受信されなかった場合には、欠落したデータユニットを送信者から再送させることができる。この再送データユニットは、通信装置を再度通過するが、通信装置により、以前のデータユニット２０４と同様の方法を用いて再度変更される。なぜなら、このデータユニットも無効なペイロードを同様に含んでいるためである。このようにして、実質的に永久ループが生じる。
【０１４８】
従って、データユニットを破棄した場合、そのデータユニットをメモリにもバッファし、フラグ付加モジュールからコマンド６４０を発行させて、受信したデータユニット２０４のバッファ済みコピーのペイロードデータを変更させる。再送を防ぐため、次いで、通信装置は、受信したデータユニット２０４の変更されたバッファ済みコピー６４４を出力する。その結果、変更されたバッファ済みコピー６４４が誤りであると確実にみなされつつも、変更されたバッファ済みコピー６４４は、意図した受信者によって確実に受信される（すなわち、再送を防ぐため、そのデータユニットを破棄しないようにする）。
【０１４９】
データユニットの変更されたバッファ済みコピー６４４のペイロードデータ（またはＴＣＰ／ＩＰヘッダ中のＣＲＣ）は、意図した受信者によってデータユニットのバッファ済みコピー６４４が確実に拒否されるように変更され、データユニット２０４の送信者にはエラー通知が発行される。
【０１５０】
例えば、取引所で取引される資産の新規注文において送出された（例えば、リスク確認に違反している）データユニットを通信機器によって変更させることにより、ネットワークから当該データユニットを除く。この新規注文に含まれるデータユニットのバッファ済みコピーは、例えば、ＦＩＸ（Ｆｉｎａｎｃｉａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  ｅｘｃｈａｎｇｅ）通信プロトコルなどのアプリケーション層で変更されて、そのデータユニットがＦＩＸアプリケーションによって拒否されるようにする。例えば、ゼロ量の取引を指定した場合には、受信者（例えば、金融取引所）によってその取引が実行されないようにする。
【０１５１】
送信者には、エラーメッセージを返信して、データユニットが間違った量を指定していたことを送信者に通知する。それにより、上記エラーが送信したデータユニットに対する応答であり、送信者による再送（例えば、取引者は、再送ループから抜け出さずに、無効な注文をさらに送信し続ける場合がある）を防ぐためのものであると認識させる。このようにして、受信者によって無効な注文が拒否される一方で、ＴＣＰセッションは開放されたままとなる。データユニットのうち、フィルタリングされ得るアプリケーション層を変更することにより、アプリケーション層にエラーを移動させる。この層において送信者は、特定のデータユニットについて、当該データユニットが無効であるとみなされたために破棄されたことを識別することができる。
【０１５２】
あるいは、通信装置１５０がクライアント１２０及びホスト１１０にＴＣＰリセットを含むデータユニットを送信することによって再送を防ぎ、それによってネットワーク通信接続を切断させる。
【０１５３】
図８〜１０は、時間軸上における通信装置１５０の様々な別の運用例を模式的に示す図であり、ここでは、ＴＣＰまたはデータユニットの順序を保持する他の伝送プロトコルを用いてデータストリームを回復させる場合が含まれている。このように、誤った順序のデータユニットを通信装置が扱う際に、ＴＣＰを用いてデータユニットの順序を回復させる様子が示されている。
【０１５４】
図８は、誤った順序のデータユニットの受信を示す図であり、ここでは、このデータユニットを（データユニットの要素を転送してメモリ素子に格納するシステムの保存機能を用いて）メモリに格納して、さらに処理を行うようにするが、これは、初期遅延６２４の見積もりが間違っていると判明した場合に、順序（順番）を修正する際に特に有用である。
【０１５５】
データユニット２０４の各バイトは入力で受信され、その後出力制御に「カットスルー」処理されるが、このとき遅延６２４を伴う。データユニットの制御情報は、そのデータユニットの受信中に入力で構文解析・処理される。制御情報（例えば、ＴＣＰセッション６１６）を処理すると、通信装置は、特定の順序を有するデータユニット、すなわち名目上は順序（Ｓｅｑ．）番号がゼロのデータユニットが期待されていると判断する。これはソケットエンジンによって処理され、ソケットエンジンは、受信したデータユニットの順序番号フィールドを問い合わせ、データユニットの順序番号に関連した情報をＳＨＴ４２８からのセッション状態情報と比較することにより、そのデータユニットが正しい順序で受信されたか否かを判定する。受信データユニットの残りの各バイト（ペイロードデータを含む）も続けて受信し、そのデータユニットが、（順序番号「１００」のデータユニットの受信によって示されるように）期待されていたデータユニットと比較して順序が誤っていると判定されると直ちに、ペイロードの受信中に、メモリ制御部４１６に当該ペイロードを中継する。受信したデータユニットは順序が誤っているため、そのデータユニットを処理する目的でフラグ付加モジュールに転送しない（このモジュールは、正しい順序のデータユニットに作用する）。従って、メモリ制御部は、ソケット保存モジュール４１４からのコマンドにより、フラグ付加モジュールにデータユニット２０４を転送するのではなく、受信データユニット２０４のペイロードデータの各バイトを変更せずに外部メモリ素子３３２またはＰＬＤ内のメモリ素子に保存する。誤った順序のデータユニットは、メモリ素子３３２からデータユニットを伝送するコマンドによって伝送される。データユニット２０４の各バイトは、その間並行して、先入先出方式により出力から伝送される。
【０１５６】
図９は、データユニットが連続するように復元させることにより、（データユニットが消失しているが、その数が少ない場合に）誤った順序のデータユニットに通信装置１５０が対処する際の方法を模式的に説明する図である。ネットワークから受信されているデータユニットの各バイトは、それらの受信中に、「カットスルー」処理に従って出力制御モジュールに直ちに中継される。受信データユニットの各バイトは、遅延６２４を伴って出力制御４０８に向けて送られ、データユニットが無効である場合には、フラグ付加操作の完了とデータユニットの変更対象要素（例えば、チェックサムまたはＣＲＣ２３６）までのアウトバウンド処理とが同期するようにする。
【０１５７】
受信データユニットの各バイトは、そのデータユニットのペイロードデータ要素６２０が開始するまで並行して構文解析・処理される。ペイロードデータの各バイトは、フラグ付加モジュール及びメモリ素子に中継される。ペイロードデータ６２０は、上述したディープ・パケット・インスペクションによってフラグ付加モジュールで検査され、当該データユニットにフラグを付加すべきかどうかについて判定される。そのデータユニットが消失したデータユニット８１０（図９では、データユニットの順序番号がゼロで示されている）であると判定された場合、誤った順序のデータユニット８２０（順序番号「１００」を有する）を以前受信していたときには、次いで、その誤った順序のデータユニット８２０を復元する。ソケットエンジン４２６は、ソケット復元モジュール４１８及び／またはソケット保存モジュール４１４に、データユニットをメモリから復元し、かつ／またはメモリに保存するコマンドを発行する。
【０１５８】
誤った順序のデータユニット８２０の一部を形成するデータユニットのペイロード要素が、そのデータユニットが格納された外部メモリ素子から当該データユニットを復元することによって再送されるように要求される。復元された誤った順序のデータユニット８２０は、フラグ付加モジュール４２０にのみ中継される。
【０１５９】
復元された誤った順序のデータユニット８２０は、受信者に以前転送されているが、消失したデータユニット８１０を受信するまでは受領されていない。消失したデータユニット８１０または次のデータユニットのいずれかが無効であると考えられる場合には、消失したデータユニット８１０または次のデータユニットの伝送は中止され（または、そのデータユニットを破棄し）、ネットワークセッションはリセットされる。これにより、意図した受信者が誤った順序でデータユニットを処理しないようにする。
【０１６０】
誤った順序のデータユニット８２０は、ディープ・パケット・インスペクションにより、正しい順序の一部としてデータユニット８２０が出力可能であるかどうかについて検査される。出力できない場合には、フラグを付加し、続いて送出データユニットを変更するプロセスを繰り返して、ネットワークからそのデータユニットを除くようにする。従って、データユニットが正しい順序であると判明するまで、データユニットを復元し、再処理することが可能である。
【０１６１】
復元したデータユニットのペイロード要素８２０を処理すると、そのペイロード要素は、受信したペイロードデータ６２０の正しい順序に挿入される。データユニットが有効であり、かつ中継エンティティのルールに関して適合していると判定されると、そのデータユニットにはフラグが付加されず、送出データユニットはその出力中に変更されない。これにより、ネットワークを介してそのデータユニットを伝送し、次いでホストによって受領させることができる。
【０１６２】
図１０は、図９と同様であるものの、大幅に順序が異なるデータユニットを処理する手段を示す図である。データユニットの復旧プロセスには、図９に関連したプロセスで必要とされる時間よりも多くの時間が必要となるが、その復旧プロセスを容易にするため、ここでは、出力制御４０８によって出力を中止させる。誤った順序のデータユニット９２０及び別の誤った順序のデータユニット９３０の受信に示すように、誤った順序のデータユニットが多数存在するため、非常に長い時間が必要となる。
【０１６３】
消失したデータユニット２０４は、通信装置１５０に入力されているが、フラグ付加モジュールに中継され、出力制御４０８に「カットスルー」処理される。以前受信され、ソケットエンジン４２６及びＳＨＴ４２８によって順序が誤っていると判定されたデータユニット９２０、９３０は、それ故にソケット復元モジュール４１８に送られたコマンドによってメモリに格納されており、消失したデータユニットを受信すると、これらのデータユニット９２０、９３０を正しい順序に復元する。
【０１６４】
出力制御モジュール４０８は、できる限り早く（通常は、制御情報を出力している間に）変更することによって受信中のデータユニット２０４を破棄し（例えば、ＴＣＰヘッダを破棄する）、それにより、そのデータユニットがその後システムから効果的に除かれるようにする。同時に、フラグ付加モジュールまたはソケットエンジンから外部メモリ制御部に要求を送ることにより、適切な順序番号９２０、９３０を有するペイロード要素（本例では、大量または多数のデータユニットがある）をメモリ素子からフラグ付加モジュール４２０に再度送り、入力データユニットの復元を出力制御に指示する。適切な順序番号９２０、９３０を有するペイロード要素は、フラグ付加モジュールで処理され、有効である場合には、入力データユニットが受信者に伝送されている時に入力データユニット２０４のペイロードデータ要素６２０に組み込まれて統合される。
【０１６５】
図１１ａは、誤った順序のデータユニットに対するプロセスフローの一例を示す図であり、このフローは、ＰＬＤによって実行される。ＰＬＤ１００４によって受信されている（１００４）データユニットには、出力制御及びフラグ付加モジュールへの「カットスルー」処理が滞りなく施される（１００８）。受信中のデータユニットの各バイトは、それらが受信されると直ちにメモリ制御部４１６に順次送られて、メモリ素子に滞りなく格納され（１０１２）、そのデータユニットの順序が誤っているかどうかの判定がなされる（１０１６）。データユニットの順序が誤っていない場合には、前述したフラグ付加モジュールの機能によってデータユニットが有効であると判定される（１０２０）。データユニットが有効である場合には、変更しない形式でデータユニットをそのまま出力する（１０２４）。データユニットが無効である場合には、データユニットの出力中に当該データユニットを操作し、その後システムによってそのデータユニットを除く（１０２８）。
【０１６６】
データユニットの順序が誤っていると判定された場合、通信装置１５０は、例えば、データユニットの順序の誤差程度が小さいときには高速復旧プロセス（図９に関連して説明した）を用いて、あるいは、例えば、データユニットの順序の誤差程度が大きいときには長期復旧プロセス（図１０に関連して説明した）を用いて、データユニットの復旧に要する時間を推定する。
【０１６７】
正しいデータユニットをメモリ素子から復旧して（１０３６）、アウトバウンド処理及びフラグ付加のために「カットスルー」を行う（１００８）と共に、データユニットの正しい順序を復元し、受信したデータユニットの正しい箇所に組み込むことができるようにする。
【０１６８】
ソケット復元モジュール４１８は、誤った順序のデータユニットを連続的にメモリから復旧することを一度試み（１０３６）、復旧したデータユニットをフラグ付加モジュールに転送して（１０５６）、復元されたデータユニットが有効であるかどうかを判定する（１０２０）。データユニットの順序の誤りが修正されるまで、復旧（１０３６）及び復旧したデータユニットのフラグ付加モジュールへの転送（１０５６）の各動作を行う。
【０１６９】
図１１ｂは、受信データユニットを通信装置１５０によって処理する様子を示す図であり、特に、データユニットの順序が誤っていると認識された場合に、各データユニットを復元する様子を示している。各ＴＣＰセッションにつき、受信データユニットの記録を行う。この記録には、承認されたデータユニットの数（この項目は、宛先によって承認されたデータユニットの順序番号を示す）；処理済みのデータユニット（この項目は、通信装置によって受信され、フラグ付加モジュールに転送されたデータユニットの順序番号を示す）；及び最後に受信したデータユニット（この項目は、通信装置によって受信された最後のデータユニットの順序番号を提示する）が含まれる。なお、最後に受信したデータユニットは、誤った順序で受信された可能性があるため、フラグ付加モジュールには送らない（ただし、別の処理を施すためにメモリに格納され、最終的には復元される）。
【０１７０】
図１２は、初回のデータユニットを受信した時に、再送中の通信装置によって実行される保存機能を示す図である。特に、図１２は、受信データユニット２０４（すなわち、データユニットの各要素）を、メモリ制御部４１６を介してメモリ素子に保存する通信装置１５０の能力を説明するものである。メモリ素子に格納されたデータユニットは、データストリームを回復させるために、ソケット復元モジュール４１８及びフラグ付加モジュール４２０によって用いられる。すなわち、（図９及び１０に関連して記載したように）データユニットの正しい順序を再度確立し、（図１３に関連して記載したように）再送確認を行う。
【０１７１】
図１３は、図１２の説明に従ってメモリからデータユニットを再送する様子を示す図である。本システムは、通信装置１５０のメモリ素子に格納されたデータユニット２０４が再送可能かどうかの確認を行う。受信したデータユニットは、ソケット復元モジュール４１８によって確認及び／または比較される。それによって、フラグ付加モジュール４２０にデータユニットを送る、あるいは送らないようにすることができる。
【０１７２】
図１４は、誤った順序のデータユニットの修正をソケットエンジン４２６が実行する例示的な機能を示す図である。通信装置に到着したデータユニット２０４は、通信装置１５０のメモリ素子に格納される。一例では、図示された機能は、ソケットエンジン４２６を構成するサブシステムの入力（「Ｉｎ」と示す）と、ソケットエンジン４２６を構成するサブシステムの出力（「Ｏｕｔ」と示す）の間で実施される。ソケットエンジン４２６を構成するサブシステムの出力は、フラグ付加モジュール４２０の入力に接続されている。
【０１７３】
図１４に関連して利用されるデータユニットの命名規則は、データユニットの最初の順序番号と共に、順序番号が一致した場合には後続の長さも用いる。メモリに格納される３個のデータユニットは、順序番号Ｓ１００のデータユニット１３１０、順序番号Ｓ３００のデータユニット１３２０及び順序番号Ｓ４００のデータユニット１３３０であり、これらのデータユニットの長さは、それぞれ１００単位である（Ｌ１００）。順序番号Ｓ２００のデータユニット１３４０は消失している。
【０１７４】
最初の例示的機能では、保存及び復元機能が実行され、誤った順序の順序番号Ｓ２００のデータユニット１３４０が（ソケットエンジンの入力によって）受信中である。この順序番号Ｓ２００のデータユニット１３４０はメモリ素子に保存され、順序番号Ｓ３００のデータユニット１３２０がメモリから復元される。順序番号Ｓ２００のデータユニット１３４０、順序番号Ｓ３００のデータユニット１３２０及び順序番号Ｓ４００のデータユニット１３３０は、ソケットエンジンから、例えば、ホストのＦＩＸプロトコルの構文解析部（ある例のフラグ付加モジュールでは、例えば、取引制限を処理できるように、ＦＩＸプロトコルの構文解析部とリスク計算システムとが統合的に実装されている）に滞りなく出力される。
【０１７５】
別の例では、確認及び保存する（さらに、必要に応じて復元する）機能を示している。順序番号Ｓ１５０で長さＬ１００のデータユニット１３５０が、フラグ付加モジュールの入力で受信されている最中であり、これは、データユニットが再送された状況として考えられる。フラグ付加モジュールまたはソケットエンジンによる確認機能を動作させて、メモリ内のデータユニットが受信中のデータユニット１３５０と重複しているかどうかを判定する。この場合には、確認により、順序番号Ｓ１００のデータユニット１３１０の一部が、Ｓ１５０のデータユニット１３５０と重複する要素（すなわち、Ｓ１５０〜Ｓ２００）を有することが分かるため、各データユニットの重複領域間の比較を実施して、データユニットが正しく受信されたことを保証できるようにする。Ｓ１５０のデータユニット１３５０の余分な部分（すなわち、Ｓ２００〜Ｓ２５０のデータユニット１３６０）は、換言すれば、システムのメモリ内に占有されていないデータユニットの長さ（すなわち、長さＬ５０）を有しており、この部分は、システムに保存され（必要に応じて復元される）、それと共に出力に送られる。
【０１７６】
最後の例は保存機能を示しており、ここでは、順序番号Ｓ２００で長さＬ３００のデータユニット１３８０が受信中である。この状況では、受信されている最中のデータユニットを用いて、重複するデータユニット（すなわち、Ｓ３００のデータユニット１３２０及びＳ４００のデータユニット１３３０）を上書きするが、このとき新規データユニットで格納済みのデータユニットを上書きする。なお、この処理は、ＦＩＸプロトコルを含む多くのネットワークプロトコルに従って決定される。それにより、受信したデータユニット１３８０を用いて、Ｓ３００のデータユニット１３２０及びＳ４００のデータユニット１３３０を置き換えた上で出力することができる。
【０１７７】
図１４は、一例として、データユニットの順序が誤っているため、上記機能を用いて伝送を復元させる様子を示している。一般に、ソケットエンジン４２６及び／またはフラグ付加モジュール４２０は、受信したデータユニットをメモリ素子に格納することにより、誤った順序のデータユニットを受信した場合に、その誤った順序のデータユニットの受信後に受信した一連のデータユニットを再送することができるように構成されている。加えて、順番違いで受信された部分のみを効率的に復元させるために、データユニットをメモリと照合することができる。
【０１７８】
図１５は、通信装置１５０による発注処理の例示的なプロセスフローを示す図である。このプロセスは、クライアントがホストにネットワーク経由でデータユニットを送信したときに開始され、そのデータユニットは中継の受信装置によって受信されている（ステップ１５０４）。ある例では、クライアントによって送信された上記データユニットには取引注文が含まれる。この取引注文のデータユニット２０４には、ネットワーク制御情情報（アドレス要素を含むヘッダなど）がある。データユニットのペイロードは、その取引の意図をホストに指示する。例えば、購入注文または売却注文、及び売買対象の証券または資産（例えば、債券、通貨、株式、金融派生商品または他の金融証券もしくは金融資産）の形式、名称または識別情報の指定などである。データユニットのペイロードデータに含まれる命令は、ディープ・パケット・インスペクションによって特定されて、そのデータユニットにフラグを付加し、取引注文の出力中に通信装置１５０によって当該データユニットを変更すべきかどうかの判定を援助する。
【０１７９】
クライアントからのデータユニット２０４は、通信装置１５０で受信され、そこでデータユニットの取引注文の状態が判別される（１５０８）。取引注文の状態により、通信装置１５０には、状態フラグ、最後に受信したデータユニットの順序、最後に受信した確認応答、取引注文の送信元及び宛先（セッション、クライアント及び／またはホストの情報を含む）が通知される。取引注文におけるセッション固有の状態及び伝送方向の状態は、通信装置のルールモジュール１５１２に格納された情報を参照することによって決まるが、このモジュールの内部には、ソケットハッシュテーブル（ＳＨＴ）及びルールハッシュテーブル（ＲＨＴ）などの要素（パラメータＡの値１５１６を含む）が含まれている。パラメータＡの値１５１６を用いることにより、通信装置１５０は、データユニットを発生させたセッションの状態に関する情報と受信する取引注文を関連付けることができる。なぜなら、上記データユニットの状態に関する情報により、そのデータユニットをどのように処理するかについての判定基準が作成されるからである。データユニットの状態を判別するのに必要な情報は、そのデータユニットの様々な要素に配置されているが（例えば、各ヘッダにはソケットの情報が配置されており、それと共に、ペイロードには発注指示の細目が含まれている）、装置１５０が十分なデータを取得次第、そのデータユニットは通信装置によって処理されるため、データユニット全体を受信する前にそのデータユニットを処理することができる。このようにして、データユニットの利用可能な部分を処理しながらデータユニットの残部の受信を進めることにより、通信装置は、時間を節減してレイテンシの発生を抑制することができる。なお、本明細書で「セッション」という用語は、ネットワークセッション及び／または商用（例えば、金融取引）セッションを指すために用いられる。
【０１８０】
パラメータＡの値には、所与のセッションに対する状態が含まれる。パラメータＡの値の各状態は、所与のセッションについて、クライアントとホストの間で履歴データをやりとりすることによって決まり、セッション情報、ハンドシェイク情報、及びデータをやりとりする際の順序情報が含まれる。データユニットの送信元情報及び宛先情報に関するパラメータＡの情報は、ＭＡＣ／ＴＣＰ／ＩＰネットワークプロトコル構成の場合、データユニットに対処する機構が図８〜１０に示したものでないとしても、ホスト及びクライアントのＭＡＣ及び／またはＴＣＰアドレス、状態フラグ、データユニットの確認応答情報、及びデータユニットの順序に関する別の任意の情報であって、正しい順序（順番）でデータユニットを受信したかどうかを通信装置１５０に判定させることが可能な情報を含む。通信装置がデータユニットから十分な量のデータを受信・処理すると、直ちにセッションの送信元（通常は、データユニットのＴＣＰヘッダに見られる）を処理することが可能であり、それにより、次いで、そのデータユニットを所与のセッション、従ってパラメータＡの値と関連付けることができるようにする。データユニットのペイロードデータを十分な量だけ処理すると、直ちにデータユニットのペイロードデータにディープ・パケット・インスペクションを実施して（１５２０）、その取引注文の指示を判別するようにする。
【０１８１】
通信装置１５０は、ＳＨＴ及び／またはＲＨＴ内のパラメータＡの値１５１６を参照し、その取引注文のセッションに適用可能なルールを特定し、データユニットの状態の観点から、関連するパラメータＡの値に関してその取引注文が有効であるかどうかを判定する（１５２４）。例えば、ホストによって定義された所与のセッションルールまたは順序ルールについて、本システムは、パラメータＡの値に関してそのデータユニットが許容できるかどうかを判定する（１５２４）。データユニットの各要素が、それらに関連付けられたパラメータＡの値に関して有効ではない場合、そのデータユニットは、フラグ付加モジュールにより、出力制御によって変更できるように特定される。その後、当該データユニットは変更され（１５２８）、ネットワークから除かれる（１５３２）。この場合、取引は実行されず、例えば、ホストへのＴＣＰセッションが中断することにより、クライアントは滞りなく通知を受ける（１５３６）。
【０１８２】
データユニットに関連付けられたパラメータＡの値に関して、そのデータユニットが有効である場合、そのデータユニットにはフラグを付加しない。その代わりに、別の判定ステップ１５４０を行って、そのデータユニットの取引注文が、ルールモジュール１５１２内のパラメータＢの値１５４４を超え得るかどうかを判定する。パラメータＢの値１５４４は、特定のクライアント（すなわち、クライアントとホストの組み合わせ）に由来した、全てではないとしても複数のセッションに対するルールである。これらの値は、複数のクライアントのセッションとホスト（または複数のホスト）のセッションの間で、すなわち、全てではないとしても、クライアントとホストの間で確立された各セッションの間で履歴データをやりとりすることによって決まる各ルールで構成されている。パラメータＢの値は、クライアントの複数のまたは全てのセッションにわたり、各セッションに付与される取引制限を含むことができる。パラメータＢの値は、所与の取引機関について、固有の各クライアントまたはそれらの内部の複数のセッションと関連付けることができる。パラメータＢの値を超えるかどうかを判定する判定ステップ１５４０では、ルールモジュール１５１２に存在するパラメータＢの値１５４４を参照し、それにより、その取引注文が実行される場合には、所与のクライアントまたは複数のセッションについて適用可能なパラメータＢの値のルールに違反するかどうかを判定する必要がある。この判定ステップにより、パラメータＢの値に違反する結果が返った場合には、そのデータユニットにフラグを付加して変更する（１５２８）。変更済みのデータユニットは、図２に示した場合のように出力され、ネットワークからそのデータユニットを除くようにする（１５３２）。それにより、その取引が実行されるのを防ぎ、適用可能なパラメータＢの値を超えないようにする。クライアントには、滞りなく指示が送られる（１５３６）。
【０１８３】
パラメータＡの値は、セッションに固有のものであり、ある特定のＴＣＰセッションまたは隣接するＴＣＰセッションにおいて、クライアントとホストの間で履歴をやりとりすることによって決まる。他方、パラメータＢの値は、セッショングループ（クライアントとホストの間の全てのセッションなど）に関連付けられている。パラメータＡの値とパラメータＢの値は共に、開始時に初期化することができ、通信装置１５０のインターフェース１６０によって（例えば、ＰＣＩｅバスを経由して）操作することができる。パラメータＡの値を実装するために、受信後に通信機器１５０から出力されたデータユニットの記録を行い、これらのデータユニットによるポジション（例えば、金融取引ポジション）の変化を確認する。
【０１８４】
ルールモジュール１５１２の各要素（すなわち、パラメータＡの値及びパラメータＢの値）のうち、関連するルールの値に従ったデータユニットの取引注文がネットワーク経由で到着すると、その取引注文にはフラグ付加モジュールによってフラグが付加されないため、当該注文は出力制御によって操作されず（１５４８）、図２に示すように出力されて、ホストのネットワークプロトコルによって受領され、その取引が実行される（１５５２）。クライアント及び中継ホストは、滞りなく通知を受ける（１５３６）。パラメータＡの値及びパラメータＢの値は、クライアントとホストの間でデータをやりとりすることによって決まるため、実行された取引と関連付けられているパラメータＡの値及びパラメータＢの値は更新されて、所与のセッション及びクライアントに対してその建玉の新たな値が示される。このときクライアントは、次に到着する取引注文の妥当性を考慮する判定ステップに指示を送るために待機している。パラメータＢの値及び／またはパラメータＡの値に関連付けられた現在の値は、次のデータのやりとりで更新することができる。
【０１８５】
所与のセッション及び指示にそれぞれ関連付けられた複数のルールを用いて、取引注文のフラグ付加及び変更を通信装置に許可することにより、ディープ・パケット・インスペクションの結果に応じて、単にヘッダレベルではなく、ペイロードデータレベルの内容に基づき、そのデータユニットの取引注文を除くようにする。明らかではあるが、通信装置１５０は、パラメータＢの値及びパラメータＡの値のそれぞれにより、クライアントレベル及びセッションレベルでデータユニットにフラグを付加することもできる。
【０１８６】
重要なのは、図１５に示したプロセスが、通信装置によってハードウェアレベルで実行されることであり、これは、従来の中継エンティティのように、ＣＰＵで実行されるソフトウェア実装を利用した方法とは対照的である。従って、この装置では、「カットスルー」方式のディープ・パケット・インスペクションを利用し、その結果に応じてデータユニットにフラグを付加し、その後、ネットワーク接続された遠隔機器でフィルタリングさせることにより、ＣＰＵのネットワーク処理が不要となって、超低レイテンシの機能性が得られる。
【０１８７】
なお、上記ハッシュテーブルは例示的な形式で示されており、実際には、任意の数のハッシュテーブルを設けて任意の数のパラメータを格納させることができる。これらのパラメータは、データユニットを変更すべきかどうかを判定し、それによってネットワークでのデータユニットの処理の仕方を変えるのに有用である。
【０１８８】
図１６は、例示的な３ウェイ・ハンドシェイクを示す図である。このネットワークには、２つの遠隔エンティティ（すなわち、クライアント及びホスト）並びに中継エンティティとなる通信装置が含まれている。３ウェイ・ハンドシェイクの目的は、エンティティ間でコネクション指向のＴＣＰ接続を確立することであるが、こうした接続は、既に確立されている可能性がある（あるいは、完全に新しい接続である）。
【０１８９】
クライアントからの同期パケット（ＳＹＮ）が通信装置によって受信され、それによってクライアントがホストとの接続を開始できるようにする。同期パケット１６０４には順序番号が含まれており、この番号は、任意かつ不規則な数で表されている。真に不規則な順序番号は必要ではないが、不規則であればあるほど安全性が向上する。
【０１９０】
次いで、通信装置１５０は、ソケットハッシュテーブルを検索し（１６０８）、そのパケットに関連付けられたセッションへの接続が以前記録されているかどうかを判定する。パケットがＳＨＴ内の関連ハッシュ値を持っている場合、そのパケットを除く。パケットがＳＨＴ内のハッシュ値を持っていない場合、この特定セッションからの接続を新規とする必要があり、そのＳＹＮパケットによって新たな接続が試みられる。その代わりに、ルールハッシュテーブルを参照する（１６１２）ことにより、通信装置１５０によってパラメータＢの値を用いて、その後の取引の妥当性を判別することができるようにする。ルールハッシュテーブルは、中継エンティティ（例えば、ブローカー）により、通信装置１５０のインターフェース１６０を経由して変更される。このＲＨＴには、セッションの処理方法についての情報、及びセッションからのデータにフラグを付加して変更すべきか否かについての情報が含まれている。より一般的には、ＲＨＴは、データユニットの妥当性を判別するのに役立てるため、そのセッションに付加すべき情報（例えば、パラメータＢの値）を特定する。ハッシュ値が検出されるか、あるいはＲＨＴ内に作成されると、関連セッションの情報がＳＨＴに追加され（１６１６）、ＳＹＮパケットが通信装置からホストに伝送される（１６２０）。
【０１９１】
ホストは、そのＳＹＮパケットを受信し、当該ＳＹＮパケットの受信を確認応答（ＡＣＫ）することにより、ホスト自身のＳＹＮパケットを発行する。クライアントの同期要求を有効に受信すると、そのクライアントの同期要求を受信したことに対するＡＣＫがホストによって当該クライアントに発行される。クライアントの同期要求を受信したことに対する確認応答は、ａ＋１に等しい順序番号を有し、同時に、そのホストの同期要求（順序番号「ｂ」によって示される）は、確認応答１６２４と共に送信される。前述した情報は、通信装置を経由して送信され、それによってＳＨＴ内を検索する（１６０８）ことにより、各セッションを特定し、関連するルールを検出する。これらのルールは、ホストとクライアントの間で履歴データをやりとりすることによって決まり、それによって更新される（１６２８）。
【０１９２】
クライアントは、通信装置１５０を経由して、ホストからの同期要求及びホストからの確認応答を受け取る。クライアントは、順序番号ｂ＋１で応答することにより、ホストの同期要求に対して確認応答（ＡＣＫ−ＳＹＮ）を発行する（１６３６）。そのパケットは、通信装置によって受信されて、ＳＨＴ内で検索され（１６０８）、関連項目が検出され、その項目がＳＨＴ内で更新される（１６２８）。
【０１９３】
ホストは、自身のＳＹＮに対するクライアントの確認応答を受け取り（１６４８）、それによって３ウェイ・ハンドシェイクを完了させると共に、新たな接続を確立する（あるいは、以前の接続を再確立する）。その後、中継エンティティ上の通信装置１５０を経由して、クライアントとホストの間で取引を続けることができる。
【０１９４】
図１７は、中継エンティティ及び通信装置を経由して、クライアントとホストの間のＴＣＰネットワーク接続を確立及び終了させるネットワークプロトコルの例示的なプロセスフローを示す図である。ホストは、受信を待っている（１４１０）。ホストは、同期（ＳＹＮ）パケットをクライアントから受信する（１４２０）。ホストは、クライアントのＳＹＮパケットに確認応答（ＡＣＫ）を送信することによって応答を行う。この確認応答は、通信装置によって受信され、中継の通信装置を経由して、クライアントとホストの間の接続が確立される（１４３０）。
【０１９５】
続けてデータのやりとりを行うことができ、クライアントによって発行されたデータのやりとりの完了通知が、ＡＣＫパケットの形態で通信装置１５０を経由してホストによって受信され、その接続が終了する（１４５０）。
【０１９６】
ホスト及び／または通信装置１５０が、クライアントから無効なＳＹＮパケットを代わりに受信した場合、通信装置は、直ちにその接続を終了させる（１４５０）。妥当性を確認する際には、通信装置及び／またはホストは、ＳＹＮ状態フラグ、ウィンドウ・スケール・オプション及び／またはＳＹＮパケットのサイズを確認する。
【０１９７】
図１８は、パラメータＡの値及びパラメータＢの値の例示的な表を照合してデータユニットを検査する場合の例を模式的に示す図である。データユニット１７０８は、下位ＯＳＩ層ヘッダ（例えば、ＭＡＣヘッダ１７２４）及び上位ＯＳＩ層ヘッダ（例えば、ＴＣＰヘッダ１７３２）を含むヘッダ要素１７１６、ペイロードデータ１７４０並びにチェックサムまたはＣＲＣの形式をとった終端部１７４８で構成されている。データユニット１７０８には、典型的なイーサネットフレームに従って、ＩＰヘッダなどの別の要素も存在し得る。さらに、ＵＤＰデータグラムなどの代替的なデータユニット構成も利用可能である。
【０１９８】
通信装置１５０によってデータユニット１７０８を処理することにより、通信装置によってそのデータユニットが受信されている時に、当該データユニットをバイト単位で処理できるようにする。従って、最下位ヘッダは最初に受信されて最初に処理される。すなわち、ＭＡＣヘッダ１７２４を処理した後、次のヘッダ要素（例えば、ＴＣＰヘッダ１７３２）を処理する。ＭＡＣヘッダ１７２４及び／またはＴＣＰヘッダ１７３２の各要素を処理して、そのデータユニットの送信元及び宛先をクライアントレベルで求める。ＩＰヘッダも、同様の関係並びに／または送信元及び宛先のセッション、ポートもしくはＴＣＰヘッダ１７３２から引き出すことが可能な類似の情報に用いることができる。クライアントの送信元及び宛先が固定されている場合、セッションの送信元及び宛先を利用してプロセスの効率を上げることができる。十分な数のＭＡＣヘッダ１７２４及び／またはＴＣＰヘッダ１７３２の各バイトを受信して処理した場合、ハッシュキーを用いて、ＭＡＣヘッダ１７２４及び／またはＴＣＰヘッダ１７３２内の情報をハッシュ値に関連付けることによってデータユニットの送信元を求めることができる。それにより、そのデータユニットに適用可能なルールを上記計算済みのハッシュ値に応じてルールモジュール２１２内で検出する。図１８に示す例は、データユニット１７０８に対してハッシュ値（Ｈ３）を計算して、「クライアント１」及び「セッション３」から発生したデータユニットを特定する様子を示している。このとき、こうした検索をルールモジュール２１２内で、具体的にはソケットハッシュテーブル４２８内で実施して、「クライアント１」が以前に接続を確立したかどうかを特定する。クライアントが以前に通信装置との接続を確立していた場合、ソケットハッシュテーブル４２８には、データユニット１７０８から計算されたハッシュ値に関連付けられた情報及びルール（従って、そのデータユニットを発生させたクライアント及び／またはセッションに適用可能な情報及びルール）が格納されている。所与のクライアントに関連付けられたルールはパラメータＢの値によって提供されており、「クライアント１」に関連付けられたハッシュ値がパラメータＢの値「３，０００，０００」を有することが示されている。そのデータユニットが、以前に確立された接続を有していない場合、図１７に示したように、ＲＨＴ及び関連するパラメータＢを用いた手順が後続する。パラメータＢの値も、パラメータＡの値と同様に参照されるが、このときセッションは特定されず、クライアント及び／またはホストのみが特定される。
【０１９９】
所与のクライアントの各セッションに関連付けられたルールは、パラメータＡの値によって提供されている。固有のクライアントのセッションに関連付けられたハッシュ値は、クライアントの情報を有するヘッダのみならず、ＴＣＰヘッダ１７３２などのセッションを特定するヘッダ（セッションの送信元及び／または宛先を含む）にも基づいて各ハッシュ値を計算することによって求めることができ、データユニット１７０８のパラメータＡ及びパラメータＢを引き出すことができるようにハッシュ値を計算する際に考慮することができる。本例では、このデータユニットは、ハッシュ値Ｈ３から「セッション３」であると判定される。それによって通信装置は、クライアント、通信装置及びホストの間のデータのやりとりについての履歴情報を関連付けることができる。例えば、取引回数、データユニットの状態フラグ、セッションのアドレス及びデータユニットの順序情報に関するルールであって、データユニットのセッションに関連付けられたルールを、パラメータＡの値と関連付けることができる。従って、データユニットにフラグを付加するか否かについてディープ・パケット・インスペクションを実施すると、その結果は、通信装置を以前に通過した各データユニットに依存する。
【０２００】
データユニットのペイロード要素１７４０は、そのデータユニットの要素を受信している時にディープ・パケット・インスペクションによって検査される。金融取引の場合、データユニットのペイロードデータ１７４０には取引注文が含まれており、例えば、取引すべき具体的な資産が表されている（この場合には、「資産Ｘ」）。この取引注文は、「クライアント１」からのデータユニットに適切なパラメータＢの値、「クライアント１」とホストの間でやりとりされた履歴データ、及び受信データユニットに含まれる指示または情報と比較することができる。図示の例では、パラメータＢの値は、受信データユニットのハッシュ値Ｈ３に関連付けられた制限値である。ハッシュ値のクライアント（「クライアント１」）に関連付けられたパラメータＢの値は、ブローカーがそのクライアントに定めた制限値（「３，０００，０００」）を超え得る取引注文の制限値である。さらに、データユニットのペイロードデータ１７４０を検査することにより、取引注文に関する別の情報を求めて、そのルールを完全に適用させることができる。「購入」注文１７６４により、「６０，０００」単位１７７２を購入すべきことが指示される。現在のパラメータＢの値は実行された取引の履歴に依存して値が変化するが、受信データユニットの送信元クライアントのパラメータＢに関連付けられた建玉に関する現在のパラメータＢの値は、適用可能なパラメータＢの値、さらにはデータユニットの取引注文の内容１７６４及び１７７２と比較される。現在のパラメータＢの値が「２，９６３，１２１」単位である場合、「６０，０００」単位の「購入」注文は、パラメータＢの制限値「３，０００，０００」を超え得ることが分かる。
【０２０１】
この情報により、パラメータＢの値が中継エンティティ１４０のルールに違反しているため、フラグ付加モジュールは、そのデータユニットを変更すべきであると判定する。当該データユニットの終端部（例えば、チェックサム、ＣＲＣまたは類似のもの）は、そのデータユニットの終端部が出力制御から出力される直前に、出力制御によって破棄される（１７８０）。破棄された終端部は、通信装置１５０から出力され、その後、そのデータユニットは、意図した宛先のホストに到着するとネットワークから除かれる。このホストでは、上記データユニットを処理することにより、誤った終端部（チェックサムなど）、従って無効なデータユニットが戻される。従って、その取引注文は実行されない。通信装置１５０は、取引が実行された場合に、現在のパラメータＢの値を更新することもできる。
【０２０２】
同様に、データユニットに関連付けられたセッション情報（特に、ＴＣＰヘッダ１７３２）がパラメータＡのルールに適合していない場合、取引注文にフラグを付加して変更することもできる。例えば、誤った順序またはブラックリスト化されたセッションの一部としてデータユニットを受信したことが判明した場合である。
【０２０３】
図１８に示したハッシュテーブルは例示的であるが、任意の数のパラメータを用いることにより、中継エンティティのルールに関してデータユニットが有効であるかどうかを判定することができる。さらに、各パラメータは、一意のハッシュ値に対応するものであってよい。このハッシュ値は、データユニットに含まれる任意の情報、またはデータユニット内の情報を任意に組み合わせたものを用いて求められる。例えば、一意のハッシュ値は、パラメータＢの値（例えば、ＭＡＣヘッダ１７２４を用いて求められる）とパラメータＡの値（例えば、ＴＣＰヘッダ１７３２からのセッション情報を用いて得られる）の双方に対応してよい。パラメータＡ及びパラメータＢも、単なる例示的なパラメータであり、任意の数のパラメータを用いて、複数のルール、データユニットの要素、セッション、クライアント、ホスト、またはそれらの組み合わせ及び派生要素と関連付けることができる。別のパラメータを、一定の取引資産、建玉の数、取引数量、クライアントとホストの組み合わせ及び／またはセッションとホストの組み合わせに基づくものとすることができ、これらのそれぞれを除外し、あるいは制限値と関連付けることが可能である。
代替例及び変更例
【０２０４】
様々なネットワーク・プロトコル・スタック層を前述した各例の箇所に用いることができる。代替のネットワーク・プロトコル・スタック層としては、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）、ＤＣＣＰ（Ｄａｔａｇｒａｍ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）並びに任意の派生形式及び変更形式（「軽量」なネットワーク・プロトコル・スタック層を含む）が挙げられる。一般に、ＰＬＤは、任意の独自ネットワークプロトコルのホストとして機能することができる。
【０２０５】
システムのアプリケーション層プロトコルは、クライアント及びホストのネットワークシステムに準拠している必要がある。資産の電子金融取引を行う場合、取引所によって広く利用されているＦＩＸ（Ｆｉｎａｎｃｉａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  ｅｘｃｈａｎｇｅ）プロトコルに適合していることが重要である。さらに、こうしたシステムの派生例として、ＦＩＸａｔｄｌ（ＦＩＸ  ａｌｇｏｒｉｔｈｍｉｃ  ｔｒａｄｉｎｇ  ｄｅｆｉｎｉｔｉｏｎ  ｌａｎｇｕａｇｅ）プロトコル、ＦＩＸＭＬ及びＦＡＳＴ（ＦＩＸ  Ａｄａｐｔｅｄ  ｆｏｒ  ＳＴ  ｒｅａｍｉｎｇ）なども考慮することができる。しかしながら、一般に、任意のアプリケーション層プロトコルを容認することができる。多くの金融取引所（例えば、ロンドン証券取引所、シカゴ・マーカンタイル取引所、ＮＹＳＥユーロネクスト、Ｃｈｉ−Ｘ／ＢＡＴＳ）は、ＦＩＸと同等のプロトコルまたはバイナリプロトコルを独自に有するが、これらのプロトコルに通信装置１５０を対応させることができる。
【０２０６】
ＦＩＸプロトコル、または類似のプロトコルでは、独自形式のチェックサム及び署名によるセキュリティ検査も採用しており、そのデータユニット内にこれらを収めている。従って、通信装置１５０によってこれらを共に変更して、データユニットの妥当性に影響を与えることができる。
【０２０７】
本明細書に記載したシステムに、代替のネットワーク設計を適用することもできる。例えば、ＰＣＩｅ、ＬＶＤＳ、チップ間の直接接続などのバスを経由して、クライアント、通信装置及びホストの間を局所的に接続することも可能である。
【０２０８】
本システムは、通信装置を経由して、クライアント及びホストなどの当事者双方間の店頭（Ｏｖｅｒ  Ｔｈｅ  Ｃｏｕｎｔｅｒ：ＯＴＣ）取引に適用することも可能であり、この場合、ホスト及び通信装置は、同一機関（投資銀行、値付け業者またはブローカーなど）の一部とすることができる。
【０２０９】
通信装置１５０は、サイバーセキュリティ（潜在的に有害な、もしくは不要な送信をフィルタリングするためのもの）向けに低レイテンシのフィルタリング及びネットワーク処理を活用する場合、または、例えば、研究（高エネルギー粒子衝突、天文学、遺伝学などを含む）、データマイニング及びメディア処理などのために高処理能力かつ低レイテンシの高性能サーバが要求される場合などのような多数の領域において有用である。
【０２１０】
単なる例示として本発明を上述してきたことが理解されるであろう。また、本発明の範囲内で細部の変更を実施することが可能である。
【０２１１】
上記において開示された各機能並びに（適切な場合には）特許請求の範囲及び図面は、別個に、または任意の適切な組み合わせで提供され得る。
【０２１２】
特許請求の範囲において現れる参照番号は一例にすぎず、特許請求の範囲の適用範囲を限定する効果を有するものではない。
【図１】
0006427112.tif 000002
【図２】
0006427112.tif 000003
【図３】
0006427112.tif 000004
【図４】
0006427112.tif 000005
【図５】
0006427112.tif 000006
【図６】
0006427112.tif 000007
【図７】
0006427112.tif 000008
【図８】
0006427112.tif 000009
【図９】
0006427112.tif 000010
【図１０】
0006427112.tif 000011
【図１１ａ】
0006427112.tif 000012
【図１１ｂ】
0006427112.tif 000013
【図１２】
0006427112.tif 000014
【図１３】
0006427112.tif 000015
【図１４】
0006427112.tif 000016
【図１５】
0006427112.tif 000017
【図１６】
0006427112.tif 000018
【図１７】
0006427112.tif 000019
【図１８】
0006427112.tif 000020