高性能なコンピュータシステムでは、特に、信号電気通信情報、サイバーセキュリティ、データマイニング、金融モデリング及び金融取引、医用画像処理及び医療研究、科学的モデリング及び耐震解析などの分野において、低レイテンシの処理やネットワーク通信が要求されることが多い。自動化された証券取引では、大量回数の取引注文が秒単位で発生するが、金融データに働きかける反応時間を短縮させることは、超高速取引を行うトレーダーにとって重要である。すなわち、受信・処理・実行に要する時間は、情報の強みを活かして市場の非効率性を利用する際に極めて重要である。
証券取引では、取引所からの金融データは、ネットワーク経由でブローカーによってアクセスされる。さらに、金融データは、ブローカーの顧客に配信され、それによって、顧客が取引所からの情報にアクセスし、取引注文を発行することができるようなネットワークを形成している。
信号のレイテンシを制限する要因、(すなわちデータがホストとクライアントの間の距離を進むのに要する時間を決める要因)は、光路によって決まることが自明である。従来、ブローカーは、競争力のあるサービスを顧客に提供する一環として、自身のレイテンシが最小限になるように努めている。当然、ブローカーは、取引所のサーバからの距離ができる限り短くなるようにしており、従って、その距離を隔ててデータをやりとりする必要がある。決まって、これよりも、ネットワークのその他の側面は、レイテンシにとってはるかに重大な脅威である。これらについても抑制が図られているが、多くの場合には多額の費用を要する。また、取引所への経路変更以外の顧客からの取引注文処理は、ブローカー側のリスク管理・規制の形式をとっている。
直接市場アクセス(Direct Market Access:DMA)を顧客に提供することにより、ブローカー側の処理が最小限になって、低レイテンシの情報処理能力を実現することができる。それでもなお、ブローカーにとっては、必須のリスク管理を監視運用する体制を遵守する必要があるため、ある程度の取引注文の処理が欠かせない。通常、この特定の処理形態は、ブローカー側の制限または他の制約に適合しない顧客の注文をフィルタリングする形態をとっているが、この処理にはレイテンシが発生する。最先端機能のこうした技術的限界は、金融分野以外にも及んでいる。
少なくとも前述した課題の一部を緩和させることが、本発明の目的である。
本発明の一態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段(受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど);上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段(送信機、出力ポートまたは第1モジュールなど);ペイロードデータを検査する検査手段(プロセッサまたはフラグ付加モジュールなど);並びに、上記データユニットが転送される前に、または上記データを転送もしくは出力している間に、ペイロードデータに対する検査の結果に応じて上記データユニットの全てまたは一部を変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段(出力制御モジュールなど)を備えるネットワーク通信装置が提供される。
本発明の別の態様によれば、ペイロードデータを含むデータユニットを受信する受信手段(受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど);別のネットワークの位置に上記データユニットを転送する転送手段(送信機、出力ポートまたは第1モジュールなど);データユニットのペイロードデータを検査する検査手段(プロセッサまたはフラグ付加モジュールなど);及び、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段(出力制御モジュールなど)を備えるネットワーク通信装置が提供される。
好ましくは、データユニットは制御情報をさらに含み、変更手段は、制御情報を変更するように構成されている。
好ましくは、制御情報は、送信元及び/または宛先のアドレス情報、順序情報並びに誤り検出情報のうちの1つ以上を含む。
好ましくは、変更手段は、制御情報の少なくとも一部を破棄及び/または上書きして、その後データユニットを除くように構成されている。
好ましくは、制御情報は、ヘッダ情報及び/または終端情報を含み、好ましくは、以下のネットワークプロトコル情報:TCP、UDP、IP、MACのうちの1つ以上及び誤り検出情報を含む。
好ましくは、変更手段は、終端部を完全に転送する前に、かつ、好ましくは、データユニットの終端部以外の部分を既に転送した後に、データユニットの終端部を変更するように構成されている。好ましくは、終端部は制御情報を含む。
好ましくは、変更手段は、終端のチェックサムまたは巡回冗長検査(CRC)の少なくとも一部を上書きするように構成されており、好ましくは、変更手段は、データユニットの終端部内の制御情報を破棄するように構成されている。
好ましくは、変更手段は、データユニットを転送している時にデータユニットを変更するように構成されている。好ましくは、変更手段は、ペイロードデータを破棄かつ/または変更するように構成されている。
好ましくは、上記装置は、後に転送されるデータユニットを格納する格納手段をさらに含む。
好ましくは、格納手段は、データユニットが転送されていた時に変更されたデータユニットをバッファリングするように構成されており、データユニットは、意図した受信者に届かない、かつ/または意図した受信者によって除かれることが保証されるように変更されている。
好ましくは、変更手段は、バッファリングされたデータユニットを後に転送する前に、このデータユニットのペイロードデータを変更して、変更されたデータユニットの再送要求を防ぐように構成されている。
好ましくは、変更手段は、好ましくはアプリケーション層のレベルで、バッファリングされたデータユニットのペイロードデータを変更して、その後伝送されるこのデータユニットを意図した受信者が処理できるように構成されている。
好ましくは、上記装置は、データユニットの転送を遅延させる遅延手段であって、検査手段の出力とデータユニットの終端部の末尾の転送とを同期させることにより、データユニットが完全に転送される前に、検査手段の結果に応じてデータユニットの終端部を確実に変更することができるようにする遅延手段をさらに備える。
好ましくは、変更手段は、検査手段からの出力が利用可能になると、直ちにデータユニットを変更するように構成されている。
好ましくは、上記装置は、誤った順序でデータユニットを受信したかどうかを判定する判定手段をさらに備え、転送手段は、このデータユニットを正しい順序で転送するように構成されている。
好ましくは、上記装置は、検査手段によって後に正しい順序で検査するために、誤った順序で受信したデータユニットをバッファリングするバッファリング手段をさらに備える。
好ましくは、受信手段は、消失したデータユニットの受信を検出するように構成され、バッファは、誤った順序で受信したデータユニットを外すように構成され、これに応答して検査が行われる。
好ましくは、上記装置は、後に読み出して転送されるペイロードデータを格納する格納手段をさらに備える。
好ましくは、検査手段は、データユニットが転送されている間に、ペイロードデータ及び/または制御情報を検査するように構成されている。
好ましくは、データユニットのペイロードデータを検査する検査手段は、好ましくはデータユニットのアプリケーション層のレベルで、データユニットのディープ・パケット・インスペクションを実行するように構成されている。
好ましくは、データユニットは、転送手段及び検査手段の双方に送られる。
好ましくは、データユニットは、検査手段がデータユニットの検査を実施している間に連続的に転送されている。好ましくは、検査手段がデータユニットの検査を実施している間に、データユニットは、好ましくはバイト単位で、装置を段階的に通過する。
好ましくは、データユニットが転送されている間に、検査手段は、データユニットを構文解析し、ペイロードデータ及び/または制御情報を取り出して検査するように構成されている。
好ましくは、検査手段は、制御情報の検査に基づき、セッション情報、順序情報、受信者の識別情報、送信者の識別情報、状態情報及びポート情報の1つ以上を判別するように構成されている。
好ましくは、変更手段は、制御情報に応じてデータユニットを変更するように構成されている。
好ましくは、ペイロードデータは、指示または要求の形態をとっており、検査手段は、指示または要求の妥当性及び/または受領可能性を判別するように構成されている。
好ましくは、指示または要求は、金融取引の指示である。
好ましくは、変更手段は、ペイロードデータ内の指示または要求が無効または受領不可である場合に、データユニットを変更するように構成されている。
好ましくは、データユニットは、プロトコル・データ・ユニットであり、データグラム、セグメント、パケット及びフレームのうちの少なくとも1つを含む。
好ましくは、上記装置は、プログラマブル・ロジック・デバイスの形態をとっており、好ましくは、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向け集積回路(ASIC)の形態である。
好ましくは、上記装置の機能がハードウェアによって実装されている。
好ましくは、上記装置は、TCPオフローディングエンジンをさらに備える。
好ましくは、上記装置は、データユニットに関連付けられたセッションを特定する特定手段をさらに備え、検査手段は、セッションに関連するパラメータ情報とデータユニットを比較することにより、当該データユニットの妥当性及び/または受領可能性を判別するように構成されている。
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段(受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど);上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段(送信機、出力ポートまたは第1モジュールなど);データユニットのペイロードデータを検査する検査手段(プロセッサまたはフラグ付加モジュールなど);並びに、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段(出力制御モジュールなど)を備えるネットワーク通信装置が提供される。
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段(受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど)、別のネットワークの位置に上記データユニットを転送する転送手段(送信機、出力ポートまたは第1モジュールなど);データユニットに関連付けられたセッションを特定する特定手段;並びに、上記データユニットを検査して、上記セッションに関連するパラメータ情報と上記データユニットを比較することにより、データユニットの妥当性及び/または受領可能性を判別する検査手段(プロセッサまたはフラグ付加モジュールなど)を備えるネットワーク通信装置が提供される。
好ましくは、セッションはネットワークセッションである。
好ましくは、特定手段は、データユニットの制御情報に基づき、好ましくは、データユニットのヘッダに格納された制御情報に基づき、セッションを特定するように構成されている。
好ましくは、セッションは、少なくとも一対のネットワーク・エンティティの間の通信セッションであり、データユニットは、通信装置によって仲介されている。
好ましくは、上記装置は、セッションを特定するソケットエンジンをさらに備える。
好ましくは、パラメータ情報は、ネットワーク・エンティティ間の特定の通信セッションに関連する第1情報、及びネットワーク・エンティティ間の全ての通信に関連する第2情報を含む。
好ましくは、第2情報は、持ち高、数量または制限などの金融取引のパラメータに関連する。
好ましくは、パラメータ情報は、ネットワーク・エンティティ間の各通信の相互作用に続いて更新される。
好ましくは、パラメータ情報は、ネットワーク・エンティティ間で通信が行われた各データユニットのペイロードデータに応じて更新される。
好ましくは、パラメータ情報は、好ましくは変更せずに、装置から転送されたデータユニットの累積記録である。
好ましくは、検査手段は、好ましくは、制御情報及び/またはペイロードデータを構文解析すると、直ちに制御情報及び/またはペイロードデータとパラメータ情報を比較するように構成されている。
好ましくは、パラメータ情報は、好ましくは、少なくとも1つのハッシュテーブルの形態で装置に格納されている。
好ましくは、上記装置は、受信したデータユニットに関連付けられた既存のネットワークセッションが存在しない場合に、新たなネットワークセッションに関連付けられる新規情報を取得する手段をさらに備える。
好ましくは、上記装置は、データユニットを完全に転送する前に、データユニットに対する検査の結果に応じてデータユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにする変更手段をさらに備える。
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信する受信手段(受信機、入力ポートまたはネットワーク・インターフェース・モジュールなど);上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送する転送手段(送信機、出力ポートまたは第1モジュールなど);データユニットを検査する検査手段(プロセッサまたはフラグ付加モジュールなど);データユニットに関連付けられたネットワークセッションを特定する特定手段(プロセッサまたはハッシュテーブルなど);並びに、上記セッションに関連する状態情報と上記データユニットを比較することにより、データユニットの妥当性及び/または受領可能性を判別する比較手段(プロセッサまたはハッシュテーブルなど)を備えるネットワーク通信装置が提供される。
本発明の別の態様によれば、好ましくはサーバの形態をとっている第1ネットワーク・エンティティ;好ましくはクライアントの形態をとっており、通信ネットワークを経由して第1ネットワーク・エンティティに接続可能である第2ネットワーク・エンティティ;並びに、通信装置(本明細書に記載)を備え、第1及び第2ネットワーク・エンティティ間の通信を仲介する中継ネットワーク・エンティティを含む通信システムが提供される。
好ましくは、第1及び第2ネットワーク・エンティティは、通信プロトコル(必要に応じて、TCP/IP)によって互いに通信することにより、双方の間でデータユニットの通信を行う。
好ましくは、第1ネットワーク・エンティティは超高速取引システムであり、第2ネットワーク・エンティティは取引所であり、中継ネットワーク・エンティティは、取引システムと取引所の間の取引活動を監視するブローカーである。
本発明の別の態様によれば、制御情報及びペイロードデータを含むデータユニットを受信すること;上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送すること;データユニットを検査すること;並びに、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにすることを含む、ネットワーク通信を監視する方法が提供される。
本発明の別の態様によれば、ペイロードデータを含むデータユニットを受信すること;上記制御情報に応じて、別のネットワークの位置に上記データユニットを転送すること;データユニットのペイロードデータを検査すること;及び、データユニットの全体を転送する前に、データユニットに対する検査の結果に応じて上記データユニットを変更することにより、変更されたデータユニットを転送すれば、このデータユニットの後続の処理が変わるようにすることを含む、ネットワーク通信を監視する方法が提供される。
好ましくは、上記方法は、データユニットに関連付けられたネットワークセッションを特定すること、並びにセッションに関連するパラメータ情報とデータユニットを比較することにより、データユニットの妥当性及び/または受領可能性を判別することをさらに含む。
好ましくは、ネットワーク通信を監視する上記方法は、金融資産の取引方法を含む。
本発明の別の態様によれば、本明細書に記載され、金融取引システムの一部の形態をとるように構成されたネットワーク通信装置が提供される。
ある例では、本発明は、ネットワーク・エンティティ間(例えば、クライアントとサーバまたはホストの間)のデータ通信を仲介するように構成された通信装置を提供し、これらの通信を解析し、次いで、後にネットワークから原因があるこれらの通信を除くか、あるいはこれらをその最終的な宛先に届くようにする。本装置は、「カットスルー」方式のフィルタリング及び検査を用いたプロセスによって上記を実施する。本装置では、受信したデータユニット(データパケットまたはフレーム)は、そのまま出力まで通過して転送され、その一方で同時に、上記データユニットまたはフレームが構文解析され、展開されて検査が行われる。ディープ・パケット・インスペクション方式のプロセスでは、ヘッダ情報に基づき、(ハッシュテーブルを介して)ネットワーク・エンティティ間の個々の通信セッションを特定する必要があり、次いで、この情報(データユニットの妥当性に関連する状態情報及び他の情報を含む)を用いて、データユニット内のペイロードデータを評価し、そのデータユニットが有効である(または正当なものである)か否かを判定する。すなわち、「アプリケーション層」のレベルまで、そのペイロードデータを検査する。データユニットが事実上有効である(または正当なものである)場合、そのデータユニットまたはフレームを変更せずに、出力を経由して装置から送出する。その代わりに、データユニットまたはフレームが有効でない場合には、そのフレームまたはデータユニットの終端部が装置から送出される直前に、当該データユニットまたはフレームの終端末尾のチェックサムまたはCRCを破棄または上書きする。次いで、上記のようにチェックサムまたはCRCが破棄されたことにより、このフレームまたはデータユニットは、後にネットワークから(または、データユニットの宛先または送信元のアプリケーション層の論理によって)除かれる。従って、この装置では、データユニットを実際に転送している間に検査を実施するため、フィルタリングのレイテンシが最小限度に維持され、さらに、データユニットを転送している時に当該データユニットが最初から最後まで装置を通過するのに要する時間と、データユニットを構文解析・展開して検査し、そのデータユニットが実際に有効であるか否かを判別するのに要する時間とが同期される。破棄されたデータユニットは、TCP/IPの観点からは、受信側エンティティ(ホストまたはサーバ)によって途中で消失したものとして扱われる効果がある。そのため、TCP/IPプロトコルの仕様に従ってデータユニットの再送が発生するが、この再送データユニットも同様に破棄されて除かれる(なぜなら、再送データユニットは、リスクに違反した同一のペイロードを含んでおり、従って、その再送データユニットも第1の場所で破棄されるからである)。そのため、パケットがリスク検査に違反して、そのデータユニットが破棄された場合、当該データユニットは、並行してメモリにもバッファリングされる。次いで、バッファリングされたデータユニットは、有効なTCP/IPの構成要素であるが、アプリケーション層のレベルで異なる(送信者が意図した送信とは異なる)ペイロードデータを含むように変更される。このようなペイロードの変更を行うことにより、受信者が、通常の動作過程でそのデータユニットを拒否し、次いで、(「アプリケーション層」のレベルで)エラーメッセージを用いて送信者に遅滞なく通知することが保証される。
本発明の別の特徴は、従属請求項によって特徴付けられる。
本発明は、本明細書に記載され、かつ/または説明された新規の態様または特徴をいずれも含む。本発明は、実質的に、本明細書に記載され、かつ/または添付図面を参照して説明された方法及び/または装置を含む。
本発明は、本明細書に記載された任意の方法を実施し、かつ/または本明細書に記載された装置のあらゆる特徴を具現化するコンピュータプログラム及びコンピュータプログラム製品、並びに本明細書に記載された任意の方法を実施し、かつ/または本明細書に記載された装置のあらゆる特徴を具現化するプログラムが内部に格納されたコンピュータ読み取り可能な媒体も提供する。
本発明は、本明細書に記載された任意の方法を実施し、かつ/または本明細書に記載された装置のあらゆる特徴を具現化するコンピュータプログラムを体現する信号、かかる信号の伝送方法、並びに本明細書に記載された全ての方法を実施し、かつ/または本明細書に記載された装置の特徴を全て具現化するコンピュータプログラムに対応するオペレーティングシステムを搭載したコンピュータ製品も提供する。
本明細書に記載された装置のいかなる特徴を方法の特徴として提供してもよく、本明細書に記載された方法のいかなる特徴を装置の特徴として提供してもよい。本明細書で使用する場合、ミーンズ・プラス・ファンクションの特徴は、それらに該当する構成(適切にプログラムされたプロセッサ及び付属メモリなど)によって代替的に表現されてもよい。
本発明の一態様における任意の特徴は、任意の適切な組み合わせで本発明の他の態様に適用されてよい。具体的には、方法の態様を装置の態様に適用してよく、装置の態様を方法の態様に適用してもよい。さらに、一態様におけるいずれか、一部、及び/または全ての特徴を、任意の適切な組み合わせで、他の態様におけるいずれか、一部、及び/または全ての特徴に適用することが可能である。
また、本発明の任意の態様に記載及び規定された各種の特徴の特定の組み合わせを、個別に実装し、提供し、もしくは利用し、またはその組み合わせを行うことができることを理解すべきである。
本明細書に用いられる「または」という用語は、別段の記載がない限り、排他的または包含的な意味であると解釈することができる。
さらに、ハードウェアによって実装された特徴をソフトウェアによって実質的に実装してもよく、ソフトウェアによって実装された特徴をハードウェアによって実質的に実装してもよい。本明細書におけるソフトウェア及びハードウェアの特徴についての言及は、いずれも適宜解釈されるべきである。
本発明は、本明細書に記載され、かつ/または実質的に添付図面を参照して説明されたネットワーク通信装置、通信システム及びネットワーク通信を監視する方法を含む。
図1は、少なくとも2つのネットワーク・エンティティ、すなわち、互いに通信ネットワークを経由して通信するホスト110及びクライアント120を含む通信システムを示す図である。図示の通り、クライアント120とホスト110の間の通信は、中継エンティティ140によって仲介されている。中継エンティティ140は、通信装置150を備える。中継エンティティ140は、通信装置150と通信するインターフェース160をさらに備える。このネットワークは、通信装置150を経由してクライアント120からホスト110に、かつ/または通信装置150を経由してホスト110からクライアント120に情報を渡すことができるようになっている。通信装置150は、クライアント120とホスト110の間を低レイテンシで通信することができるように構成されている。
通信装置150は、ネットワークに接続されたクライアント120とホスト110の間の通信を仲介して補助機能を実行するようになっている。このような補助機能としては、データの処理、ルーティング、マイニング、操作、変更、検査、フラグ付加、フィルタリングまたは他の類似のプロセスがある。
図1に示すシステムの例では、ホスト110は金融取引所の形態をとっており、クライアント120は金融取引機関(超高速取引を行う企業、または実際には当該企業の1台のワークステーションなど)の形態をとり、中継エンティティ140はブローカー(投資ブローカーなど)の形態をとっている。本システムの代替例では、クライアントは、任意の台数のワークステーションとすることができ、ホストは遠隔サーバとすることができ、中継エンティティは、インターネット・サービス・プロバイダ、サイバーセキュリティ組織、またはその他類似の中継体とすることができる。
なお、図1には1台の通信装置150を示しているが、本例には、任意の台数のクライアント及び/またはホストに加えて、本装置をさらに複数台実装することができる。このとき、上記のクライアント及び/またはホストは、複数の、あるいは実際には1台の通信装置150を介して互いに通信することが可能である。
図2は、図1に示したネットワークシステム内で通信装置150によって実行される構成及び機能の一例を説明する図である。データユニット204を含むデータストリームは、パケット、データグラム、セグメントまたはフレームなどのプロトコル・データ・ユニットの形態をとっており、クライアント120からネットワークにより、ホスト110に向けて中継エンティティ140を経由して送信される。データユニット204は、数バイトまたはいくつかのサブユニット(複数のビットなど)からなり、本装置内では、これらの複数のビットは、この装置の1つ以上のクロックサイクル内で処理される。中継エンティティ140、従って通信装置150は、バイト単位方式で到着したデータユニットのバイト要素またはサブユニットとして、データユニット204を受信する。通信装置150は、通信装置の処理用プロセッサ208に上記データユニットのバイト要素を滞りなく送る。通信装置のプロセッサは、受信するデータユニット204の内容及びルールモジュール212において概略が定められた規則に基づき、判定ステップを行うように構成されている。通信装置150のプロセッサ208がデータユニット204を構成する各バイトを受信している時、これらの各バイトは、フラグ付加モジュール216及び出力制御モジュール220に並行して中継される。装置に各バイトが入力される速度は、通信装置から各バイトが出力される速度と等しくすることができる。しかしながら、この通信装置は、通信装置150、クライアント及びホストの間のネットワーク構成に関わらず動作するように構成されている。例えば、ホストと通信装置150の間のネットワーク構成(10ギガビット・イーサネットなど)は、クライアントと通信装置の間のネットワーク構成(1ギガビット・イーサネットなど)とは異なるようにすることができる。これにより、クライアント側とホスト側の双方のネットワークに対する通信装置の互換性が向上する。通信装置がネットワークからデータユニットを受信する速度が、当該データユニットを送信可能な速度に等しいか、あるいはそれ未満である場合には、クライアント側とホスト側のネットワーク速度の不一致がレイテンシに及ぼす影響は無視することができる。一般に、レイテンシを最小限するためには、可能な限り最速のネットワーク構成及びネットワークインターフェースを利用することが望ましい。
プロセッサ208内に設けられたフラグ付加モジュール216では、判定ステップを実施する。詳細については以下でさらに説明するが、この判定ステップは、データユニット204内の関連情報の検査に少なくとも部分的に基づき、フラグ付加モジュール216がルールモジュール212を参照することを含む。次に、フラグ付加モジュール216によってデータユニットの妥当性が判別され、それによって出力制御モジュール220に指示が出される。
判定ステップを実施する一方で、データユニットの各バイト要素またはサブユニットは、これらの受信中に並行して、通信装置の入力から出力制御にバイト単位で転送される。通信装置の段階では、バッファリングまたは直列化の遅延はない。
転送、送出、処理、判定などの各動作は、受信データユニットのバイトまたはサブユニットの到着時に並行して実施される。各バイトまたはサブユニットを蓄積したものに上記バイトまたはサブユニットを追加して処理、転送、送出、判定などを行うが、このとき、受信するデータユニットのサイズ、そのデータユニットに含まれる情報の任意の要素または他の論理ブロックのサイズに依存した遅延は生じない。すなわち、装置の段階では、バッファリングまたは直列化の遅延はない。
フラグ付加モジュール216で実施される判定ステップは、出力制御モジュール220の動作と並行して実施される。この出力制御モジュールは、通信装置150からのデータユニット204の各バイトまたはサブユニットを順次処理し、次いで転送する。
フラグ付加モジュールは、データユニット204の変更を出力制御モジュール220に通知するか否かを決定する。それにより、フラグ付加モジュールによって特定されたデータユニットを、その後、そのデータユニットを受信させないことによってネットワークから「除き」、または、意図したホスト110によって受領もしくは実行させるようにする。出力制御モジュール220によるデータユニットの変更(変更手段による)には、フラグ付加モジュール216によって指示されるように、データユニットを、マーク付け、特定、区別、操作または破棄する任意の手段が含まれる。フラグ付加モジュール216による指示を受けて出力制御220により実施される例示的な変更動作には、ネットワークスタック内で認識された意味を踏まえて追加バイトを書き込むこと(データユニットをブラックリストに載せること、データユニットの制御情報を操作することなど)が含まれる。なお、このような制御情報としては、ヘッダ228、終端部、ペイロードデータ232、チェックサム236、巡回冗長検査(Cyclic Redundancy Check:CRC)、セキュリティ検査、またはその後データユニットをネットワークから確実に除く他の任意の要素がある。出力制御モジュール220は、フラグ付加モジュール216からの指示に関わらず、データユニット204の各バイトを出力する。データユニットを変更する判定がなされた場合、それにより、その後ネットワークから当該データユニットを除くが、通信装置は、未だ出力されていないデータユニットの一部を変更することにより、ネットワークをさらに伝わって、例えば、ホスト側のスイッチまたはイーサネットカードの所で、データユニットの変更前に通信装置から伝送されたデータユニットの一部を含むデータユニット全体を除くようにする。データユニットの妥当性に関わらず、ネットワークからデータユニットを除くように変更可能なデータユニットの一部が通信装置150から出力されている時に未だ判定がなされていない場合、その妥当性に関わらずデータユニットを破棄し、それによって潜在的に無効なデータユニットが伝送されないようにする。データユニットは、一定の遅延を伴って再処理することが可能であり、これにより、変更及びその後再送することが可能なデータユニットの要素を出力するのと並行して判定を行うことができる。
図2には、ネットワークからデータユニットを確実に除く例示的な手段が示されている。図中、複数のヘッダ228、ペイロードデータ232及び/またはチェックサム236もしくはCRCの形式をとった終端部を含むデータユニット204は、フラグ付加モジュール216によって無効であるとフラグが付加され、それによって通信装置の出力制御220にそのデータユニットを変更させる。これにより、意図したホスト及びそのホスト内の正しいポートに当該データユニットが送信されるものの、次いで、ネットワークプロトコルに関して、ホストのネットワークプロセッサ244(ネットワークカードまたはCPUなど)によって判定を行う際に、そのデータユニットが無効であると識別させるようにする。それによってホスト248は、そのデータユニットを適正に除く。本例では、フラグ付加モジュール216は、出力制御220に、データユニットの一定要素のみを操作するように指示しているが、これらの要素は、データユニットの宛先ネットワーク(ホスト及びポートを含む)を表すものではない。むしろ、データユニットのチェックサムまたはCRCといった有効性の指標となるものを操作する(252)ことにより、ホストプロセッサ244は、データユニットが無効である(あるいは誤っている)と推定し、データユニット248を除くようにする。データユニットにフラグを付加するプロセスは、出力制御(通常は、データユニットを実質的に変更するモジュール)に、その後のネットワークによるデータユニットの取り扱いを変更させる指示または命令する他の方法を含む。出力制御は、フラグ付加モジュール216から変更指示を受け取ると、出力制御モジュール220から未だ転送されていないデータユニット204の要素を変更することのみが可能である。というのも、出力モジュールから最後に転送される各バイト(チェックサム及びCRCなど)は変更に最も適しているからである。なぜなら、上記によってフラグ付加モジュールには、データユニットの各バイトまたはサブユニットが装置150を通じて連続的に流れるのを抑制または遅延させずとも、判定ステップの結果を受けて完了させるだけの時間が与えられるためである。
ある例では、出力制御モジュール220から出力される前にデータユニットの要素の変更を同期できるようにするために、フラグ付加モジュールによって判定ステップを完了させて、遅延は、出力制御によって、受信中のデータユニットのバイトストリームによって発生する。この遅延は、通常、データユニット204全体、もしくはデータユニットの任意の要素またはデータユニットの要素を任意に組み合わせたものの大きさには依存しない。さらに、この遅延は、個別のクロックサイクル単位で生じるため、ナノ秒程度の遅延である。
図2には、データユニット204の異なる要素を変更する代替例も示されている。これらの例は出力制御220に依存しており、フラグ付加モジュール216によって指示されるように、通常は最初に受信した、あるいは最低でもペイロードデータ232が開始される前に受信したデータユニットの要素が出力制御モジュール220によって変更され、それによって出力制御から最初に転送される。通常、データユニットのこれらの要素の変更を利用することはない。なぜなら、この変更を行う際には、受信した各バイトのみ、すなわちペイロードデータの前の各バイトを用いて判定ステップを完了させる必要があるためである。こうした手順は、例えば、データユニットをフィルタリングしてサイバーセキュリティを実施したり、DoSの運用を実施したりする際に適用可能であり、このとき、データユニットの宛先または送信元の情報を含むデータユニットの制御情報は、判定ステップを完了させるのに十分な量の情報を有する。
ある例では、宛先を決めるデータユニットの要素を変更して、正しいホストではあるが、そのホストの間違ったポートにデータユニットの各バイトを出力する(256)。それによってデータユニットはその後評価されず、ネットワークから当該データユニットが効果的に除かれるようになる。一例として、こうした変更動作には、ポートヘッダ260の操作が必要となり得るが、このヘッダは、正しいホスト内の正しいポートにデータユニットを導くためのものであり、例えば、MAC/TCP/IPネットワークの場合には、TCPヘッダである。本事例では、出力制御モジュール220の変更動作により、TCPヘッダの転送前にデータユニットのTCPヘッダを操作して、受け入れ可能なホストのポートから当該データユニットを無効化し、破棄し、または区別して、ホストによってデータユニット248を除くようにする。一般に、データユニットのトランスポート層またはネットワーク層の制御情報を操作することにより、TCPヘッダに影響を及ぼす。
さらになお、図2は、データユニット204の要素に対する変更動作を出力制御モジュール220が実施可能な場合も示しており、これによって無効なホストの宛先にデータユニットが確実に送信されるようにする(264)。この事象264では、ネットワークシステムからデータユニットが欠落したとみなすことが可能である。一例として、こうした変更動作には、物理層ヘッダ248の操作が必要となり得るが、このヘッダは、正しいホスト(通常は、(データ)リンク層とも呼ばれるOSIモデルの2番目の層)にデータユニットを導くためのものである。例えば、MAC/TCP/IPネットワークでは、上記ヘッダはMACヘッダに相当する。別の例では、論理リンク制御(Logical Link Control:LLC)の操作を伴う場合もある。
前述の例では、データユニット204のうち、ペイロードデータの前に受信した要素を操作しているが、これは、フラグ付加モジュールの判定ステップが、ディープ・パケット・インスペクション(deep−packet inspection)によって(例えば、ペイロードデータの検査によって、すなわち、データユニットの「アプリケーション層」のレベルで)データユニット204のペイロードからの情報を必要とする場合には望ましくない。
通信装置によって有効であると判定されたデータユニット204は、フラグ付加モジュール216によってフラグが付加されることはなく、この場合、こうした出力制御は、出力中のデータユニットの任意の要素に対する変更または操作の実施には適用されない。
データユニット204は、受信した時と同じ形式で通信装置から出力される(272)。このデータユニットは、当初意図したホスト110及びホストのポートに送信され、ホストのネットワークプロセッサ244によって適正に処理され、有効なデータユニットであると判定されてホストにより受領される(276)。
図2の具体例では、ホスト110が金融取引所の形態をとっており、中継エンティティ140はブローカーであり、クライアント120はブローカーの顧客(金融取引機関など)の形態をとっている。通常、本システムは、クライアントからホストへのデータフローに当該通信装置の機能を適用するように構成されている。このシステムは、図1及び2に代表されるような本システムの任意の例において、ホストからクライアントへのデータストリームに対して上述のように動作させることも可能である。
一般に、図2に記載したシステムは、有効なデータユニットと無効なデータユニットを区別するためにデータユニットを変更または操作する必要があり、それによって無効なデータユニットをその後ネットワークから除くようにして、ネットワーク通信の低レイテンシ化を促進している。あるいは、物理レベルの信号を用いてデータユニットの伝送を中断することにより、データユニットが無効であるとしてホスト110に処理させる。
図3は、通信装置のハードウェアの例示的な概略図を示している。通信装置150は、任意の数の物理的ネットワーク入出力308を備えており、この入出力を用いて、ネットワークを経由したクライアント120及び/またはホスト110への通信130が可能になる。例えば、ホスト、通信装置及びクライアントの間のイーサネットネットワークの場合、着脱可能な小型フォームファクタ(Small Form−factor Pluggable:SFP)及び/またはenhanced SFP(SFP+)の送受信機316は、通信装置150に対してイーサネットネットワークの物理層におけるインターフェースとして機能することができる。また、インフィニバンドによるネットワーク化及び別の物理ネットワーク構成も可能である。さらに、クライアント、通信装置及びホストの間のネットワーク構成の支援に使用可能な他の通信インターフェースの形式を通信装置150で利用することができる。少なくとも1つの通信装置のインターフェースは、クライアントまたはホストのネットワーク構成の仕様に一致させることができる。図1に示したネットワークシステムの一部である金融取引所の場合、接続形式は、1ギガビット・イーサネットまたは10ギガビット・イーサネットが最も有力であり、クライアント及び中継エンティティ(金融取引機関及びブローカーなど)は、両者が通信を行うネットワーク構成の標準規格にそれぞれ適合させることができる。この規格は、任意の種類のネットワーク化手段とすることができる。このようなネットワーク化手段としては、クライアントのワークステーション(PCなど)からPCIeカードの形態をとった通信装置150へのPCIe(Peripheral Component Interconnect express)バスによる接続、クライアントと通信装置のプロセッサの間の低電圧差動信号(Low−Voltage Differential Signalling:LVDS)インターフェース及び/またはハイパートランスポート(HyperTransport)インターフェースなどがある。
したがって、前述したネットワークシステムは、1ギガビット・イーサネット(GbE)、10GbE、40GbE、100GbE、光ファイバーチャネル、PCIeもしくは他のバス、LVDS、チップ間通信、オンチップ通信及び/または他の類似のシステムなどの高速データ転送手段に対応可能である。
複数のネットワークインターフェースを通信装置に設けることが可能であり、それによって各ネットワークのホスト/クライアントからアクセスを受け、通信装置を介して多数のクライアント/ホストに分配することが可能となる。チップ間通信手段(LVDSまたは類似のもの)をクライアント、中継エンティティ及び/またはホストの間に利用することができる。このようにすれば、ネットワーク・エンティティ間の光路が短縮され、ネットワーク構成のデータ転送速度が低減されることにより、システム全体のレイテンシ、特に、通信装置のレイテンシを抑制することができる。さらに、ネットワークのプロトコル、機能及びデータユニットを簡素化することにより、物理層または他の信号前置処理(物理層における復調、誤り訂正、直列化など)を部分的または完全に不要とするネットワーク通信方法を用いて、データユニットが通信装置150に入る前にレイテンシの低減を調整することが可能であり、それによってレイテンシをゼロに向けてさらに減少させる。
通信装置150がネットワークインターフェース308で受信したネットワーク信号は、物理層処理モジュール324により、物理層(例えば、1GbE、10GbE、100GbEまたは類似の手段を処理するように構成されている)で処理される。
通信装置の入出力に設けられた物理ネットワーク層処理モジュール324は、通信装置のプロセッサ208と連携しており、それによって受信したデータユニットを出力できるように処理する。通信装置のプロセッサ208は、再構成可能なプログラマブル・ロジック・デバイス(Programmable Logic Device :PLD)208で構成されている。既存のPLDには様々な種類があると解されるが、低レイテンシ/超低レイテンシ用途の場合には、高速論理回路を搭載したPLDを実装する。このようなPLDとしては、特定用途向け集積回路(Application−Specific Integrated Circuit:ASIC)及びフィールド・プログラマブル・ゲート・アレイ(Field−Programmable Gate Array:FPGA)などがある。PLDの再構成に必要とされる周波数によって最適なPLDが決まる。ある例では、FPGAを用いることにより、低レイテンシを実現しつつ再構成を柔軟に行うことができる。PLDは、処理(ネットワーク処理を含む)、操作、データユニットの破棄、ディープ・パケット・インスペクション、「カットスルー」交換、データユニットが通信装置を通過する際の当該データユニットに対するフィルタリング及び/またはフラグ付加を実行するように構成されている。図2に示したルールモジュール212及びフラグ付加モジュール216は、PLD内のハードウェアによって実装されており、必要に応じて外部メモリ332を併用する。上記PLDには、TCPオフローディングエンジンも搭載されている。
通信装置150に搭載された複数の外部メモリ素子332は、PLD208と連携している。外部メモリ素子は、任意の数の低レイテンシでダイナミックな外部メモリモジュールで構成されている。このメモリにより、PLDから記憶データ(通常は小容量)に高速アクセスすることが可能となる。図4には、一例として、ダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス・メモリ(Double Data−Rate Synchronous Dynamic Random−Access Memory:DDR SDRAM)340といった低レイテンシのメモリ素子が示されている。外部メモリ素子には、任意の数のスタティック・ランダム・アクセス・メモリ(Static Random Access Memory:SRAM)モジュールも含まれる。このようなSRAMとしては、図示の通り、QDR(Quadruple Data−Rate)SRAM348などがあり、これらのメモリもPLDと連携している。一般に、外部メモリ素子332は、任意の手段のデータ記憶装置(データを一括して格納し、取り出すことが可能なフラッシュメモリを含む)を含むことができる。
一連の非ネットワーク入出力356を用いて、周辺のハードウェア及びインターフェース(中継エンティティ(ユーザー)インターフェース160など)に通信装置を接続することができる。例えば、バスを介して、任意の数のコンピュータまたはサーバを接続することができる。このバスは、任意の数のPCI Expressバス364を含むことができるが、ユニバーサル・シリアル・バス(Universal Serial Bus:USB)372などの任意の形式のハードウェア相互接続とすることが可能であり、接続されたハードウェアへのデータ転送要件に応じて利用の仕方が決まる。相互接続された周辺ハードウェアは、システム管理用インターフェース、PLD208を再構成するためのインターフェース、ルールモジュール212、フラグ付加モジュール216または別の任意のPLD構成要素を操作するためのインターフェースを備える。加えて、バスを介して別のメモリを通信装置150に接続することにより、大容量のネットワークデータ、または通信装置によって直ちに必要とされない大容量のデータを格納することもできる。特に、バスを介して通信装置に接続された周辺メモリを用いることにより、長期間にわたりネットワークトラフィックを監視することが可能となる。ディスプレイ、CPU及び他の周辺ハードウェアを、バスまたは類似の非ネットワーク入出力356を介して通信装置に接続することもできる。
通信装置150は、回路基板380上に配置されており、電源インターフェース388を経由して、例えば、回路基板380がPCIeカードの形態をとっている場合にはPCIeスロットを経由して、外部電源から電力の供給を受けている。
ある例では、通信装置150は、高速メザニン(Mezzanine Card:MC)カード及びFPGAメザニンカードなどのメザニンカード用の入出力、サブミニチュアバージョンA(SubMiniature version A:SMA)コネクタなどの同軸コネクタ並びに送受信機も備える。
通信装置150をネットワークカードの一部とした上で、クライアントシステム及び/またはホストシステムをそれと同じネットワークカードに搭載し、かつ/またはこれらを局所的に接続(例えば、バスまたはチップ間通信手段を介して)することができる。クライアントのサーバを、同一ネットワークカードの一部とするなどして、中継エンティティにあり、かつクライアント・エンティティから離れた通信装置上に局所的に搭載することが可能であり、ホストのサーバについても、これと同じことが言える。例えば、取引所と通信する集積化通信装置150をブローカーのネットワークカードに搭載すれば、クライアント(例えば、取引機関)から発行された注文に対し、ネットワークカード上のサーバでリスク管理を実行することができる。顧客がサーバに物理的に触れる必要がないのは有利となり得る。なぜなら、顧客がネットワークカード(具体的には、通信装置の構成要素)を物理的に交換または変更してブローカーのリスク管理を省略または変更する必要がないからである。
ネットワークカードは、任意の数のPLD、すなわち通信装置、クライアント及び/またはホストの機能を提供する複数のPLDを備えることを特徴とすることができる。例えば、2個のPLD(FPGAまたはASICなど)を搭載したネットワークカードは、通信装置150に関する機能(本明細書に記載)を実行する第1PLD、及びこれと連携し、顧客定義のプログラム済み論理を実行して金融取引注文を発行するために顧客によって利用される第2PLDを備えることができる。
ブローカーは、例えば、あるSFP+ポートを用いて、上記ネットワークカードをクライアントのサーバと接続することができ、それによってクライアントがネットワークカードと通信できるようになる。別のSFP+ポートを用いることにより、ブローカーは、何らかのインターフェースを介して各種リミットを監視及び設定することができる。クライアントによりネットワークカードを介して送信されたネットワーク経由のデータユニットは、通信装置の運用に従って評価される。ただし、クライアントのデータユニットは、クライアントのサーバから(例えば、PCIeバスを介して、または顧客によって操作される第2PLDから)ブローカーのPLDに、チップ間通信手段(LVDSラインなど)を通じて送られる。
図4は、通信装置のPLD208の論理構成を模式的に示す図である。本例の目的の場合、PLDの動作は、2つの論理部(すなわち、Eth0 402及びEth1 404)に分けて記述される。Eth0 402は、ネットワークを経由して入ってくるデータユニット(例えば、元々はクライアントからホストに向けて送信されたデータユニット)を受信し、転送する部分である。Eth1 404は、これに関連し、ホストから受信したデータユニットをクライアントに向けて最小の遅延で転送するように構成されたインターフェースである。通常、PLDは、ネットワーク処理論理回路、フラグ付加モジュール、出力制御及びメモリ制御部を備える。
以下、図4を参照して、通信装置に搭載されたPLD208のEth0 402の部分でネットワークからのデータユニットを処理する場合について述べる。データユニットは、Eth0 402に組み込まれた第1PLDのネットワーク・インターフェース・モジュール406(受信手段)でネットワークから受信される。例えば、PLDのネットワーク・インターフェース・モジュール406は、進入するデータユニットをヘッダ及び/またはチェックサムのレベルで処理可能な論理回路の形態をとり、そのデータユニットが有効に受信されたかどうかを判定する。データユニットは、MAC、IP、TCPまたはUDPなどの様々なネットワークプロトコルに基づく制御情報を含む。イーサネットネットワークから入ってくるデータユニットのストリームは、この第1PLDのネットワークインターフェース406で処理される。
受信中のデータユニットの各バイトは、第1モジュール408(転送手段)に移送または転送される。この第1モジュールは、Eth0の部分に組み込まれた出力制御モジュール408である。このモジュールは、データユニットを出力できるように処理すると共に、フラグが付加されたデータユニットを操作または変更して、その後ネットワークからそれらのデータを除くようにする。データユニットの各バイトは、データユニットの構文解析部の形態をとった第2モジュール410にも移送される。出力制御408は、データユニットの各バイトを、遅延がほとんどあるいは全くない状態で受信するが、データユニットの各バイトを出力する際には、例えば、誤った順序でデータユニットを受信した場合、受信するデータユニットの構文解析に応じて遅延が生じる(構文解析部410がデータユニットを受信した時の例に関しては、クロックサイクル単位で)。この遅延により、データユニットを受信・処理(例えば、出力制御220で)して、そのデータユニットの要素(後端のチェックサムまたはCRCなど)を変更するまでに要する時間と、フラグ付加モジュールが判定ステップを完了させるのに必要な要素までデータユニットを受信するのに要する時間(すなわち、フラグ付加モジュールが判定ステップを完了させて出力制御220に指示する時間)とが等しくなる。この遅延により、データユニットの出力(例えば、チェックサムやCRCといった、データユニットの変更対象要素まで)と、フラグ付加モジュールからの指示(データユニットの変更対象要素を変更すべきか否かに関する)とが同期するようになる。出力制御モジュール及びフラグ付加モジュールでデータユニットを処理するのに要する時間には、データユニット全体を受信するための時間は含まれない。なぜなら、データユニットは、入力から出力制御モジュール及びフラグ付加モジュールにバイト単位でそれぞれ流れているためである。なお、上記遅延は、データユニットのサイズには依存しない。
データユニットを受信している時に、当該データユニットが出力制御408及び構文解析部410に転送されて、データユニットの「カットスルー」処理が効果的に行われる。それにより、データユニットを完全に処理する前に(あるいは、完全に受信する前でも)、データユニットの送出(または転送)が開始される。これにより、フラグ付加の処理をしつつ、出力制御408でデータユニットを並行して出力することができる。このことは、データユニットを直列処理してから出力する従来の方法に比べて、システムのレイテンシを低減させるのに有用である。
構文解析モジュール410は、Eth0に組み込まれたPLDのネットワーク・インターフェース・モジュール406からデータユニットの各バイトを受信し、当該データユニットの構文解析を行う。この構文解析では、通常、データユニットのうち、トランスポート層までの任意のまたは全てのヘッダ(すなわち、MAC/IP/TCPヘッダ)が除去される。従って、データユニットのペイロードデータ及びヘッダは、後続の処理では互いに分離されている。ペイロードデータの各バイト422及びデータユニットのヘッダの各バイト424は、別々に構文解析され、構文解析モジュール410からソケット・デジタル多重化(Digital Multiplex:DMX)モジュール412に送られる。
ソケットDMXモジュール412から出力されたペイロードデータは、ソケット保存モジュール414に転送され、ここでペイロードデータは、PLD及び/または外部メモリ素子332内のメモリ素子に格納できるように処理される。ソケット保存モジュール414によって格納できるように処理されたデータユニットは、メモリ制御部416に滞りなく送出され、メモリ制御部は、それに応じてデータユニットをメモリに分配して格納するように動作する。データユニットは、ソケット復元モジュール418に送付される。このモジュールにより、好ましくは最小のレイテンシで、メモリ素子に格納されたデータを評価することができる。データユニットの伝送時に意図しない誤りが生じた場合、あるいはTCPで再送されたデータユニットを確認し、誤った順序のデータユニットの再配置を促進する場合、メモリ素子に割り当てられたデータユニットを将来の再送用に格納する。
ペイロードデータを構成する各バイトの別のストリームをDMXモジュールから出力することにより、ソケット保存モジュール及びメモリ制御部を迂回して、ソケット復元モジュール418にデータユニットが転送されるようにする。このソケット復元モジュールでは、データユニットを処理して、当該データユニット(または、データユニットのTCP/UDPを構成する部分といった、そのデータユニットの少なくとも一部)を、Eth0のフラグ付加モジュール420に直ちに転送すべきかどうかを判定する。正しい順序の一部としてデータユニットを受信したと判定されると、そのデータユニットを直ちに転送する。このようにして、データユニットを遅延させる必要はないとシステムが判断した場合には、データユニットの各バイトをフラグ付加モジュールに直接流すことができる。さもなければ、誤った順序のデータユニットが、ソケット復元モジュール418によってメモリ素子から復元され、次いでフラグ付加モジュール420に転送されるのみである。再送すべきデータユニットを特定するためには、妥当性確認のプロセスを実施する。ソケットエンジンは、あるコマンドを発行して、データユニット、具体的には、そのペイロードを検査するようにする。その後、ソケット復元モジュール418は、コマンド433を発行して、出力制御408に以前に送信されたデータユニットの再送を指示する。
構文解析モジュール410からのヘッダ出力424も、ソケットDMXモジュール412で受信されて、その後ソケットDMXモジュール412からEth0部のソケットエンジン426に出力される。このソケットエンジンには、DMXモジュールから要求が送られる。ソケットエンジン426は、データユニットのヘッダ要素を調べることにより、中継エンティティのルール(このルールはルールハッシュテーブル(Rules Hash Table:RHT)430からアクセスされる)に関して、データユニットの妥当性(フラグ付加モジュール420に関して説明した)及び/または開放もしくは容認されたネットワーク接続に対する関連性の判定を支援する。このヘッダ情報は、データユニットの送信元及び宛先といった任意のネットワーク情報を含む。より具体的には、このヘッダ情報は、ネットワーク、クライアント、ホストポートなどの各アドレス並びにデータリンクヘッダ、トランスポートヘッダ及びネットワークヘッダのいずれかの形式(多くの他のアドレスの中でもTCP、IP、MAC及びUDPアドレスなど)に該当し得る。さらに、データユニットの順序情報(最後に受信したデータユニット及び最後に処理したデータユニットを含む)などの補助情報を利用して、正しい順序の一部としてデータユニットを受信したかどうかを判定する。
ソケットエンジン426は、データユニット、具体的には、データユニットのペイロードデータ232を処理、保存、確認または復元するためのコマンドを発行する。ソケットハッシュテーブル(Socket Hash Table:SHT)428及び/またはRHT430を参照して、出力中のデータユニットが誤った順序の一部として受信されたものであると判定された場合には、ソケットエンジン426から出力制御408にコマンドを送ることにより、そのデータユニットを変更するように指示することができる。この場合、データユニットは出力中に変更されて、その後ネットワークから当該データユニットを除くようにする。
処理を終えたヘッダ(または類似のもの)は、データユニットの妥当性を判定するためのルールと比較される。このヘッダ(または類似のもの)は、ソケットエンジン426からソケットハッシュテーブル(SHT)428に中継される。このSHTでは、データユニットのネットワークアドレス及びその他の情報を用いて、データユニットを送信元のクライアント及びポート並びにSHT428に格納された添付ルールと関連付けることにより、データユニットのネットワークセッションを特定することが可能となる。なお、ルールハッシュテーブル(RHT)430は、以下で説明するように、一定の状況において参照される。
上記のようにハッシュテーブルを利用したのは、これらによって上記情報へのアクセス及び対応付けを高速に(従って低遅延で)行う手段が得られるためであるが、リレーショナルデータベース、配列、ツリー、リスト及びルックアップテーブルを利用することもできる。
上記により、データユニットに適用すべきルールが特定されたため、適用可能なルールについてのコマンドがソケットエンジン426からフラグ付加モジュール420に向けてソケットDMX412に発行される。
ソケット復元418から出力されたデータユニットは、メモリ制御部416から受け取ったものであろうとなかろうと、フラグ付加モジュール420に転送される。フラグ付加モジュール420は、ルールについての上記コマンドをソケットエンジン426から受け取り、中継エンティティのルールに関してデータユニットが有効であるかどうかについての判定を行う。次いで、そのデータユニットのペイロードデータを検査(ディープ・パケット・インスペクション)することにより、当該データユニットが有効であるかどうかの判定がなされる。これにより、そのデータユニットにフラグを付加するか否かについての判定結果が得られる。このようにしてデータユニットにフラグを付加することにより、その後ネットワークから当該データユニットを「欠落」させることが可能となり、意図した受信装置が効果的に、そのデータユニットを受信せず、あるいは処理できるようにする(図2を参照して上述したように)。データユニットの内容は、そのデータユニットに適用可能なルールと比較されるが、これらのルールは、ソケットエンジン426を介してSHT428及び/またはRHT430から得られたものである。フラグ付加モジュール420は、出力制御がデータユニットを変更するように指示する適切なコマンド432を出力制御408に送り、その後ネットワークから当該データユニットを「欠落」させるようにする。さもなければ、変更するように特定されなかったデータユニットは、適切なコマンド432を出力制御408に発行するか、あるいはコマンドを全く発行しないかのいずれかによって変更されないため、当該データユニットはネットワークから「欠落」しない。ある例では、フラグ付加モジュール420は、データユニットが処理されると、出力制御408にコマンドを発行するが、出力制御408は、コマンドフラグ付加モジュール420からコマンドを受け取るまで、データユニットを破棄して再送する。いずれの場合も、データユニットは、出力制御408から出力され、Eth1に組み込まれたPLDのネットワーク・インターフェース・モジュール434に送られる。そこでデータユニットは、PLD208及び通信装置150から出力され、物理的ネットワーク入出力308を介してネットワークに送られる。
同時に、データユニットに対するフラグ付加モジュール420の判定をRHT430、ソケットエンジン426及び/またはSHT428が受け取ることにより、動的なルール、すなわち、ネットワークへのデータユニットの転送履歴(除くか否か)に依存したルールを更新もしくは変更することができ、または判定ステップの結果を記録することができるようにする。
Eth1に組み込まれたPLDのネットワーク・インターフェース・モジュール434が受け取るデータユニットは、Eth0に関して説明した内容と同様の方法で処理される。なお、同一動作でない場合には、同等のモジュールを同様に利用する。受信中のデータユニットは、出力制御436及び構文解析部438に「カットスルー」される。これと並行して、ヘッダ及びペイロードデータの各出力は、ソケットDMX440で受け取られる。データユニットの各ヘッダは、ソケットエンジン442に出力され、Eth0 402の部分のSHT428に中継される。ここで、当該データユニットに適用可能なルールを、そのデータユニットの各ヘッダに応じて帰属的に決定することができる。SHT428は、Eth0を構成する論理部402とEth1を構成する論理部404とで共有されたモジュールであり、それによってデータユニットのルールが集約化され、必要に応じて、全てのデータトラフィック(すなわち、内向き及び外向き)に適用されるようにする。
同様に、RHT444も参照して、データユニットに適用可能なルールを決定する。なお、RHT430及びRHT444も、SHT428のように集約化することができる。各コマンドは、SHT428及び/またはRHT440からソケットエンジン442に発行される。そこからソケット復元446は、受信中のデータユニットがメモリからアクセスを受ける(このとき、データユニットは、ソケットDMX440からソケット保存448を経て、さらにはメモリ制御部450を経由してメモリに入力される)べきか、それともそのデータユニットをフラグ付加モジュール452に直接転送すべきかを判定する。フラグ付加モジュール420、452は、各部に分かれて示されているが、これらのモジュールも統合することができる。
受信するデータユニットにフラグを付加するか否かについてフラグ付加モジュール452が判定すると、その判定が出力制御436に転送される。出力制御436は、ネットワークからデータユニットを除くように当該データユニットにフラグが付加されていた場合には、そのデータユニットを操作し、あるいはデータユニットにフラグが付加されていなかった場合には、そのデータユニットを操作しない。データユニットは、操作されていようとなかろうと、Eth0に組み込まれたPLDのネットワーク・インターフェース・モジュール406に転送され、そこでデータユニットは、PLD208及び通信装置150から出力され、物理的ネットワーク入出力308を介してネットワークに送信される。
図5は、上述したPLDの動作のプロセスフロー図である。図5は、図4に示した構成を参照しており、具体的には、以下の説明では、Eth0を構成する論理部402の各要素を参照しているが、これらのプロセスは、Eth1を構成する論理部404に提供された機能についても同様に当てはまる。
通信装置及びPLDで受信中(504)のデータユニットは、「カットスルー」または転送されてアウトバウンド処理が並行して行われ(あるいは、出力制御モジュール408を介して伝送される)、それと共に、データユニットに適用可能なルールが決定され、データユニットにフラグを付加すべきか、それともデータユニットを特定すべきどうかが判定される(508)。このとき、データユニットの変更を出力制御に指示することにより、データユニットが変更される。データユニットは、バイト単位方式で出力制御に送られて、各バイトの受信中にそれらのアウトバウンド処理516が行われる。受信中のデータユニットの制御情報要素(ヘッダなど)は、ソケットエンジン426で処理される(520)。受信中のデータユニットの各バイトは、その後バイト単位で転送され、フラグ付加モジュール420でディープ・パケット・インスペクション512が実施される。ある例では、データユニットの順序に関してTCPストリームを復元した後に、ディープ・パケット・インスペクション512を開始する(これは、UDPストリームでは省略される)。
データユニットの各ヘッダを処理し(520)、それぞれの送信元及び/または宛先(例えば、クライアント、ホスト及び/またはポート)に関して各ヘッダを特定すると(524)、データユニットの送信元及び/または宛先の関連ルールをルールモジュール212(これは、SHT428及びRHT430を含み得る)から検索して参照する(528)。
ある例では、各ヘッダを処理して(520)、クライアント及び/またはセッションを特定した(524)後ではあるものの、関連ルールを探し出して参照する(528)前に、ディープ・パケット・インスペクション512を実施すべくデータユニットのペイロードを転送するのみとする(点線で図示)。
次いで、データユニットに適用可能なルールを決定し(532)、その後、フラグ付加モジュール420で特定されたルール532に関してデータユニットが有効かどうかについて判定を行う(536)。なお、データユニットの関連内容は、ディープ・パケット・インスペクション512で検索されている。データユニットが有効である場合には、そのデータユニットにはフラグを付加せず、変更を行わない(540)。このフラグ付加ステップは、データユニットを変更すべきかどうかを特定すること、及び連続的にデータユニットを出力している出力制御に指示を中継することを含む。データユニットが有効である場合には、そのデータユニットは、変更用のフラグ付加手段によってフラグが付加されず、変更しない形式で出力される。データユニットが有効ではない場合には、フラグ付加モジュールからコマンドを送ることにより、出力制御にデータユニットの変更を指示する(544)。
ヘッダ及びペイロードの処理ステップ520からデータユニットの変更なし(540)及びデータユニットの変更(544)までの各段階は同期しており、データユニットが無効であると特定された場合には、データユニットの「カットスルー」処理508からデータユニットの変更対象要素までアウトバウンド処理516を完了させるのに要する時間とほぼ同時に行われる。通常、プロセスにおいて並行して行われるこれらの分岐は、それぞれ10ns〜400ns内で完了するように構成されているが、わずか5ns〜100nsでこれを行うようにすることも可能であり、正確に同期させることもできる。勿論、これらのプロセスの完了時間は、システム及びネットワーク全体の性質に依存するが、0.4ps〜1.5ps程度が要求される場合もある。
データユニット全体が出力されると、その後ネットワーク処理エンティティによってデータユニットは欠落され、あるいは欠落されない。データユニットが変更されたかどうかについて判定がなされ(548)、通信装置150から出力される前のアウトバウンド処理516中にデータユニットが変更されていた場合には、そのデータユニットは、その後ネットワークから除かれる(556)。なぜなら、データユニットが意図したホストまたはポートに到達しないか、データユニットがその終端部(チェックサム要素またはCRC要素など)について無効化されるか、あるいはペイロードデータが破棄されるためである。
アウトバウンド処理中にデータユニットが変更されていない場合には、そのデータユニットは、通信装置150に当初入力されたように、意図した受信者に転送される。従って、そのデータユニットは、受信者によって受領される(564)。
図6は、通信装置の動作を模式的に説明する図であり、通常のデータユニットを受信・処理している最中の様子を時間軸上に示している。ここで、レイテンシとは、データユニットを処理するのに必要な時間と定義され、データユニット204の前部を受信した時点から、変更されるか否かによらず、そのデータユニットの最後の要素が出力されるまでの時間である。この通信装置は、50ns〜350ns未満、好ましくは30ns〜150nsのレイテンシを有するように構成されている。
図6は、特に、データユニットの後端要素(チェックサム及び/またはCRCなど)の操作に関連して説明されたものである。受信データユニット204は、入力で受信されている。このデータユニットは、ネットワークプロトコル604などのネットワーク制御情報を含むヘッダ(例えば、MAC608、IP612及びTCP616の各ヘッダ)、並びにデータ本体(すなわち、ペイロードデータ620)で構成されている。データユニット204は、誤り検出用の終端部も含んでおり、これはチェックサムの形式をとっている。通信装置に進入するデータユニットは、PLDの入力で受信されており、「カットスルー」処理のために中継される。そこで受信中のデータユニットの各バイトは、データユニットの制御情報、ネットワークプロトコル要素604またはペイロードデータ620に関わらず、出力制御モジュールで出力処理を行うために転送される。受信中のデータユニットの各バイトは、フラグ付加モジュール420に中継されて、ディープ・パケット・インスペクションが実施され、各プロトコル(通常はトランスポート層、例えば、TCP616またはUDPのヘッダまで)がPLDの構文解析モジュール410によって構文解析されると、当該データユニットにフラグを付加すべきかどうかが判定される。これと並行して、データユニットの各バイトは、これらを受信すると直ちに出力処理できるように中継されるが、このとき遅延624を伴う。この遅延は、パケットの「カットスルー」交換を完了させて出力処理を行い、終端のチェックサムまで出力処理を完了させるのに要する時間から、データユニットの制御情報(ヘッダなど)を構文解析し、データユニットのペイロード620をフラグ付加モジュールに中継してディープ・パケット・インスペクションを完了させた上で、データユニットにフラグを付加すべきかどうかを判定し、それに応じて出力に指示するのに要する時間を引いたものに等しいか、あるいはそれよりも長い。通常、この遅延は100ns未満であり、より一層好ましいのは50ns未満である。このようにして、フラグ付加モジュールの判定結果を得るのと同時に、データユニットの後端要素(チェックサムを含む)が開始するまでの出力処理を完了させることができる。データユニットを出力及びフラグ付加モジュール624にそれぞれ中継する際の遅延は、経験的に、検査対象のアプリケーション層プロトコル(ペイロードデータなど)及び/または通信装置のプロセッサの詳細事項に基づいて推定される。例えば、処理速度の遅いFPGAまたはASICを実装すると、高速プロセッサよりも多数のクロックサイクルが各動作についても必要となる。上記推定が間違っていると判明した場合には、さらに数ステップを使用する(図9を参照して説明する)。
フラグ付加モジュールによってデータユニットの妥当性が確認された場合、フラグ付加モジュールは、そのデータユニットの変更を出力制御に指示しない。この「カットスルー」システムは、データユニットの出力中と並行して、当該データユニットがフラグ付加モジュールを通過する点で有利である。従って、データユニットの変更可能要素を除いてデータユニットをそのまま出力し、それにより、フラグ付加モジュールから指示を受けて、例えば、チェックサムまたはCRCが「誤り」であるか、あるいは破棄されているかに基づき、その後ネットワークからデータユニットを除くことができる。
データユニットが有効であるとフラグ付加モジュールによって判定された場合、そのデータユニットは変更されない。このとき、このデータユニットのチェックサム236は、有効な形式628を維持することができる。データユニットの各バイトは、出力制御から出力されるが、これらのバイトは、データユニットの妥当性に関わらず、通信装置によって受信されている。変更対象要素が出力されていない場合、データユニットの変更対象要素のみを変更する。例えば、データユニットの最後部の各バイト(チェックサムまたはCRCを含む)を破棄することができ、その結果、そのデータユニットがホストによって受信されると、破損または誤りであると認識され、次いで欠落される。
フラグ付加モジュールによる判定とチェックサムまでのデータユニットの出力処理との間の不一致には許容の余地がある。しかしながら、データユニットの変更対象要素(例えば、チェックサムまたはCRC)が出力制御から出力されようとしていながら、フラグ付加モジュールが判定ステップを完了していない場合には、残りの変更対象要素、さもなければデータユニットは、中継エンティティ140によってその妥当性が判定されていなくても、ホストによって受領されない。従って、この装置はフェイルセーフである。
遅延が長くなりすぎると、レイテンシが増大することになる。フラグ付加モジュールによる判定ステップの完了と、変更対象要素までのデータユニットのアウトバウンド処理の完了とのタイミング差がゼロではない場合、システムのレイテンシまたは精度にとって好ましくない。
出力制御からデータユニットの各バイトを出力する際は、中断または遅滞させることができない。なぜなら、通信装置150への入力データ速度は、通信装置150の出力データ速度と等しいからである。
出力処理されると、データユニットの各バイトは、通信装置から当該データユニットの意図した宛先にそれぞれ転送され、そこでデータユニットは受信者によって承認される。データユニットの要素を変更すべきであるとして、フラグ付加モジュールによって特定され、出力制御によって操作された場合には、そのデータユニットはネットワークから除かれる。なぜなら、意図した受信者に転送された変更済みのデータユニット(及び、その内部の誤ったチェックサム)は、ホストにより、ネットワークプロトコル処理に従って欠落されるためである。逆に、フラグが付加されず、相応の変更がなされなかったデータユニットは、有効な形式を維持しており、その後ホストによって受領される。従って、本システムでは、さらにその下流の他のネットワーク・エンティティ(イーサネットカード及びTOEを含むネットワークカード、スイッチ、サーバ並びにブリッジなど)にとって、データユニットをフィルタリングするプロセスの負担が軽減される。
図2によれば、フラグが付加されたデータユニットも、変更、操作、破棄もしくは修正されたデータユニットの制御情報要素、ヘッダ要素またはペイロードデータの任意の組み合わせを有することができる。
図6は、ディープ・パケット・インスペクションと「カットスルー」処理の双方を並行して利用するシステムの能力を示している。
FPGAは、各機能を並列に走らせるように構成されており、そのため、多数のプロセスを同時かつ効率的に実行することができる。これにより、上述した並列処理方式を制御し、それによって双方の領域でのレイテンシを低減させることが可能である。
図7は、破棄されたデータユニットを通信装置150によって再送させないようにする方法を示す図である。通信プロトコルで用いられる信頼性の高い伝送機構(TCPによって利用されているものなど)では、無効な形式で受信され、あるいは途中で消失したとみなされるデータユニットの送信者から再送指示を発行することができる。
図示の例では、通信装置150が受信したデータユニット204は変更され(636)(ペイロードが無効であると判定されたため)、その上で出力される。このデータユニットは、ネットワークによって何らかの方法を用いて処理され、それにより、その後ネットワークから(例えば、データユニット後端のチェックサムを破棄することによって)当該データユニットを除く。
信頼性の高い伝送プロトコルを用いると、受信者によってデータユニットが受信されなかった場合には、欠落したデータユニットを送信者から再送させることができる。この再送データユニットは、通信装置を再度通過するが、通信装置により、以前のデータユニット204と同様の方法を用いて再度変更される。なぜなら、このデータユニットも無効なペイロードを同様に含んでいるためである。このようにして、実質的に永久ループが生じる。
従って、データユニットを破棄した場合、そのデータユニットをメモリにもバッファし、フラグ付加モジュールからコマンド640を発行させて、受信したデータユニット204のバッファ済みコピーのペイロードデータを変更させる。再送を防ぐため、次いで、通信装置は、受信したデータユニット204の変更されたバッファ済みコピー644を出力する。その結果、変更されたバッファ済みコピー644が誤りであると確実にみなされつつも、変更されたバッファ済みコピー644は、意図した受信者によって確実に受信される(すなわち、再送を防ぐため、そのデータユニットを破棄しないようにする)。
データユニットの変更されたバッファ済みコピー644のペイロードデータ(またはTCP/IPヘッダ中のCRC)は、意図した受信者によってデータユニットのバッファ済みコピー644が確実に拒否されるように変更され、データユニット204の送信者にはエラー通知が発行される。
例えば、取引所で取引される資産の新規注文において送出された(例えば、リスク確認に違反している)データユニットを通信機器によって変更させることにより、ネットワークから当該データユニットを除く。この新規注文に含まれるデータユニットのバッファ済みコピーは、例えば、FIX(Financial Information exchange)通信プロトコルなどのアプリケーション層で変更されて、そのデータユニットがFIXアプリケーションによって拒否されるようにする。例えば、ゼロ量の取引を指定した場合には、受信者(例えば、金融取引所)によってその取引が実行されないようにする。
送信者には、エラーメッセージを返信して、データユニットが間違った量を指定していたことを送信者に通知する。それにより、上記エラーが送信したデータユニットに対する応答であり、送信者による再送(例えば、取引者は、再送ループから抜け出さずに、無効な注文をさらに送信し続ける場合がある)を防ぐためのものであると認識させる。このようにして、受信者によって無効な注文が拒否される一方で、TCPセッションは開放されたままとなる。データユニットのうち、フィルタリングされ得るアプリケーション層を変更することにより、アプリケーション層にエラーを移動させる。この層において送信者は、特定のデータユニットについて、当該データユニットが無効であるとみなされたために破棄されたことを識別することができる。
あるいは、通信装置150がクライアント120及びホスト110にTCPリセットを含むデータユニットを送信することによって再送を防ぎ、それによってネットワーク通信接続を切断させる。
図8〜10は、時間軸上における通信装置150の様々な別の運用例を模式的に示す図であり、ここでは、TCPまたはデータユニットの順序を保持する他の伝送プロトコルを用いてデータストリームを回復させる場合が含まれている。このように、誤った順序のデータユニットを通信装置が扱う際に、TCPを用いてデータユニットの順序を回復させる様子が示されている。
図8は、誤った順序のデータユニットの受信を示す図であり、ここでは、このデータユニットを(データユニットの要素を転送してメモリ素子に格納するシステムの保存機能を用いて)メモリに格納して、さらに処理を行うようにするが、これは、初期遅延624の見積もりが間違っていると判明した場合に、順序(順番)を修正する際に特に有用である。
データユニット204の各バイトは入力で受信され、その後出力制御に「カットスルー」処理されるが、このとき遅延624を伴う。データユニットの制御情報は、そのデータユニットの受信中に入力で構文解析・処理される。制御情報(例えば、TCPセッション616)を処理すると、通信装置は、特定の順序を有するデータユニット、すなわち名目上は順序(Seq.)番号がゼロのデータユニットが期待されていると判断する。これはソケットエンジンによって処理され、ソケットエンジンは、受信したデータユニットの順序番号フィールドを問い合わせ、データユニットの順序番号に関連した情報をSHT428からのセッション状態情報と比較することにより、そのデータユニットが正しい順序で受信されたか否かを判定する。受信データユニットの残りの各バイト(ペイロードデータを含む)も続けて受信し、そのデータユニットが、(順序番号「100」のデータユニットの受信によって示されるように)期待されていたデータユニットと比較して順序が誤っていると判定されると直ちに、ペイロードの受信中に、メモリ制御部416に当該ペイロードを中継する。受信したデータユニットは順序が誤っているため、そのデータユニットを処理する目的でフラグ付加モジュールに転送しない(このモジュールは、正しい順序のデータユニットに作用する)。従って、メモリ制御部は、ソケット保存モジュール414からのコマンドにより、フラグ付加モジュールにデータユニット204を転送するのではなく、受信データユニット204のペイロードデータの各バイトを変更せずに外部メモリ素子332またはPLD内のメモリ素子に保存する。誤った順序のデータユニットは、メモリ素子332からデータユニットを伝送するコマンドによって伝送される。データユニット204の各バイトは、その間並行して、先入先出方式により出力から伝送される。
図9は、データユニットが連続するように復元させることにより、(データユニットが消失しているが、その数が少ない場合に)誤った順序のデータユニットに通信装置150が対処する際の方法を模式的に説明する図である。ネットワークから受信されているデータユニットの各バイトは、それらの受信中に、「カットスルー」処理に従って出力制御モジュールに直ちに中継される。受信データユニットの各バイトは、遅延624を伴って出力制御408に向けて送られ、データユニットが無効である場合には、フラグ付加操作の完了とデータユニットの変更対象要素(例えば、チェックサムまたはCRC236)までのアウトバウンド処理とが同期するようにする。
受信データユニットの各バイトは、そのデータユニットのペイロードデータ要素620が開始するまで並行して構文解析・処理される。ペイロードデータの各バイトは、フラグ付加モジュール及びメモリ素子に中継される。ペイロードデータ620は、上述したディープ・パケット・インスペクションによってフラグ付加モジュールで検査され、当該データユニットにフラグを付加すべきかどうかについて判定される。そのデータユニットが消失したデータユニット810(図9では、データユニットの順序番号がゼロで示されている)であると判定された場合、誤った順序のデータユニット820(順序番号「100」を有する)を以前受信していたときには、次いで、その誤った順序のデータユニット820を復元する。ソケットエンジン426は、ソケット復元モジュール418及び/またはソケット保存モジュール414に、データユニットをメモリから復元し、かつ/またはメモリに保存するコマンドを発行する。
誤った順序のデータユニット820の一部を形成するデータユニットのペイロード要素が、そのデータユニットが格納された外部メモリ素子から当該データユニットを復元することによって再送されるように要求される。復元された誤った順序のデータユニット820は、フラグ付加モジュール420にのみ中継される。
復元された誤った順序のデータユニット820は、受信者に以前転送されているが、消失したデータユニット810を受信するまでは受領されていない。消失したデータユニット810または次のデータユニットのいずれかが無効であると考えられる場合には、消失したデータユニット810または次のデータユニットの伝送は中止され(または、そのデータユニットを破棄し)、ネットワークセッションはリセットされる。これにより、意図した受信者が誤った順序でデータユニットを処理しないようにする。
誤った順序のデータユニット820は、ディープ・パケット・インスペクションにより、正しい順序の一部としてデータユニット820が出力可能であるかどうかについて検査される。出力できない場合には、フラグを付加し、続いて送出データユニットを変更するプロセスを繰り返して、ネットワークからそのデータユニットを除くようにする。従って、データユニットが正しい順序であると判明するまで、データユニットを復元し、再処理することが可能である。
復元したデータユニットのペイロード要素820を処理すると、そのペイロード要素は、受信したペイロードデータ620の正しい順序に挿入される。データユニットが有効であり、かつ中継エンティティのルールに関して適合していると判定されると、そのデータユニットにはフラグが付加されず、送出データユニットはその出力中に変更されない。これにより、ネットワークを介してそのデータユニットを伝送し、次いでホストによって受領させることができる。
図10は、図9と同様であるものの、大幅に順序が異なるデータユニットを処理する手段を示す図である。データユニットの復旧プロセスには、図9に関連したプロセスで必要とされる時間よりも多くの時間が必要となるが、その復旧プロセスを容易にするため、ここでは、出力制御408によって出力を中止させる。誤った順序のデータユニット920及び別の誤った順序のデータユニット930の受信に示すように、誤った順序のデータユニットが多数存在するため、非常に長い時間が必要となる。
消失したデータユニット204は、通信装置150に入力されているが、フラグ付加モジュールに中継され、出力制御408に「カットスルー」処理される。以前受信され、ソケットエンジン426及びSHT428によって順序が誤っていると判定されたデータユニット920、930は、それ故にソケット復元モジュール418に送られたコマンドによってメモリに格納されており、消失したデータユニットを受信すると、これらのデータユニット920、930を正しい順序に復元する。
出力制御モジュール408は、できる限り早く(通常は、制御情報を出力している間に)変更することによって受信中のデータユニット204を破棄し(例えば、TCPヘッダを破棄する)、それにより、そのデータユニットがその後システムから効果的に除かれるようにする。同時に、フラグ付加モジュールまたはソケットエンジンから外部メモリ制御部に要求を送ることにより、適切な順序番号920、930を有するペイロード要素(本例では、大量または多数のデータユニットがある)をメモリ素子からフラグ付加モジュール420に再度送り、入力データユニットの復元を出力制御に指示する。適切な順序番号920、930を有するペイロード要素は、フラグ付加モジュールで処理され、有効である場合には、入力データユニットが受信者に伝送されている時に入力データユニット204のペイロードデータ要素620に組み込まれて統合される。
図11aは、誤った順序のデータユニットに対するプロセスフローの一例を示す図であり、このフローは、PLDによって実行される。PLD1004によって受信されている(1004)データユニットには、出力制御及びフラグ付加モジュールへの「カットスルー」処理が滞りなく施される(1008)。受信中のデータユニットの各バイトは、それらが受信されると直ちにメモリ制御部416に順次送られて、メモリ素子に滞りなく格納され(1012)、そのデータユニットの順序が誤っているかどうかの判定がなされる(1016)。データユニットの順序が誤っていない場合には、前述したフラグ付加モジュールの機能によってデータユニットが有効であると判定される(1020)。データユニットが有効である場合には、変更しない形式でデータユニットをそのまま出力する(1024)。データユニットが無効である場合には、データユニットの出力中に当該データユニットを操作し、その後システムによってそのデータユニットを除く(1028)。
データユニットの順序が誤っていると判定された場合、通信装置150は、例えば、データユニットの順序の誤差程度が小さいときには高速復旧プロセス(図9に関連して説明した)を用いて、あるいは、例えば、データユニットの順序の誤差程度が大きいときには長期復旧プロセス(図10に関連して説明した)を用いて、データユニットの復旧に要する時間を推定する。
正しいデータユニットをメモリ素子から復旧して(1036)、アウトバウンド処理及びフラグ付加のために「カットスルー」を行う(1008)と共に、データユニットの正しい順序を復元し、受信したデータユニットの正しい箇所に組み込むことができるようにする。
ソケット復元モジュール418は、誤った順序のデータユニットを連続的にメモリから復旧することを一度試み(1036)、復旧したデータユニットをフラグ付加モジュールに転送して(1056)、復元されたデータユニットが有効であるかどうかを判定する(1020)。データユニットの順序の誤りが修正されるまで、復旧(1036)及び復旧したデータユニットのフラグ付加モジュールへの転送(1056)の各動作を行う。
図11bは、受信データユニットを通信装置150によって処理する様子を示す図であり、特に、データユニットの順序が誤っていると認識された場合に、各データユニットを復元する様子を示している。各TCPセッションにつき、受信データユニットの記録を行う。この記録には、承認されたデータユニットの数(この項目は、宛先によって承認されたデータユニットの順序番号を示す);処理済みのデータユニット(この項目は、通信装置によって受信され、フラグ付加モジュールに転送されたデータユニットの順序番号を示す);及び最後に受信したデータユニット(この項目は、通信装置によって受信された最後のデータユニットの順序番号を提示する)が含まれる。なお、最後に受信したデータユニットは、誤った順序で受信された可能性があるため、フラグ付加モジュールには送らない(ただし、別の処理を施すためにメモリに格納され、最終的には復元される)。
図12は、初回のデータユニットを受信した時に、再送中の通信装置によって実行される保存機能を示す図である。特に、図12は、受信データユニット204(すなわち、データユニットの各要素)を、メモリ制御部416を介してメモリ素子に保存する通信装置150の能力を説明するものである。メモリ素子に格納されたデータユニットは、データストリームを回復させるために、ソケット復元モジュール418及びフラグ付加モジュール420によって用いられる。すなわち、(図9及び10に関連して記載したように)データユニットの正しい順序を再度確立し、(図13に関連して記載したように)再送確認を行う。
図13は、図12の説明に従ってメモリからデータユニットを再送する様子を示す図である。本システムは、通信装置150のメモリ素子に格納されたデータユニット204が再送可能かどうかの確認を行う。受信したデータユニットは、ソケット復元モジュール418によって確認及び/または比較される。それによって、フラグ付加モジュール420にデータユニットを送る、あるいは送らないようにすることができる。
図14は、誤った順序のデータユニットの修正をソケットエンジン426が実行する例示的な機能を示す図である。通信装置に到着したデータユニット204は、通信装置150のメモリ素子に格納される。一例では、図示された機能は、ソケットエンジン426を構成するサブシステムの入力(「In」と示す)と、ソケットエンジン426を構成するサブシステムの出力(「Out」と示す)の間で実施される。ソケットエンジン426を構成するサブシステムの出力は、フラグ付加モジュール420の入力に接続されている。
図14に関連して利用されるデータユニットの命名規則は、データユニットの最初の順序番号と共に、順序番号が一致した場合には後続の長さも用いる。メモリに格納される3個のデータユニットは、順序番号S100のデータユニット1310、順序番号S300のデータユニット1320及び順序番号S400のデータユニット1330であり、これらのデータユニットの長さは、それぞれ100単位である(L100)。順序番号S200のデータユニット1340は消失している。
最初の例示的機能では、保存及び復元機能が実行され、誤った順序の順序番号S200のデータユニット1340が(ソケットエンジンの入力によって)受信中である。この順序番号S200のデータユニット1340はメモリ素子に保存され、順序番号S300のデータユニット1320がメモリから復元される。順序番号S200のデータユニット1340、順序番号S300のデータユニット1320及び順序番号S400のデータユニット1330は、ソケットエンジンから、例えば、ホストのFIXプロトコルの構文解析部(ある例のフラグ付加モジュールでは、例えば、取引制限を処理できるように、FIXプロトコルの構文解析部とリスク計算システムとが統合的に実装されている)に滞りなく出力される。
別の例では、確認及び保存する(さらに、必要に応じて復元する)機能を示している。順序番号S150で長さL100のデータユニット1350が、フラグ付加モジュールの入力で受信されている最中であり、これは、データユニットが再送された状況として考えられる。フラグ付加モジュールまたはソケットエンジンによる確認機能を動作させて、メモリ内のデータユニットが受信中のデータユニット1350と重複しているかどうかを判定する。この場合には、確認により、順序番号S100のデータユニット1310の一部が、S150のデータユニット1350と重複する要素(すなわち、S150〜S200)を有することが分かるため、各データユニットの重複領域間の比較を実施して、データユニットが正しく受信されたことを保証できるようにする。S150のデータユニット1350の余分な部分(すなわち、S200〜S250のデータユニット1360)は、換言すれば、システムのメモリ内に占有されていないデータユニットの長さ(すなわち、長さL50)を有しており、この部分は、システムに保存され(必要に応じて復元される)、それと共に出力に送られる。
最後の例は保存機能を示しており、ここでは、順序番号S200で長さL300のデータユニット1380が受信中である。この状況では、受信されている最中のデータユニットを用いて、重複するデータユニット(すなわち、S300のデータユニット1320及びS400のデータユニット1330)を上書きするが、このとき新規データユニットで格納済みのデータユニットを上書きする。なお、この処理は、FIXプロトコルを含む多くのネットワークプロトコルに従って決定される。それにより、受信したデータユニット1380を用いて、S300のデータユニット1320及びS400のデータユニット1330を置き換えた上で出力することができる。
図14は、一例として、データユニットの順序が誤っているため、上記機能を用いて伝送を復元させる様子を示している。一般に、ソケットエンジン426及び/またはフラグ付加モジュール420は、受信したデータユニットをメモリ素子に格納することにより、誤った順序のデータユニットを受信した場合に、その誤った順序のデータユニットの受信後に受信した一連のデータユニットを再送することができるように構成されている。加えて、順番違いで受信された部分のみを効率的に復元させるために、データユニットをメモリと照合することができる。
図15は、通信装置150による発注処理の例示的なプロセスフローを示す図である。このプロセスは、クライアントがホストにネットワーク経由でデータユニットを送信したときに開始され、そのデータユニットは中継の受信装置によって受信されている(ステップ1504)。ある例では、クライアントによって送信された上記データユニットには取引注文が含まれる。この取引注文のデータユニット204には、ネットワーク制御情情報(アドレス要素を含むヘッダなど)がある。データユニットのペイロードは、その取引の意図をホストに指示する。例えば、購入注文または売却注文、及び売買対象の証券または資産(例えば、債券、通貨、株式、金融派生商品または他の金融証券もしくは金融資産)の形式、名称または識別情報の指定などである。データユニットのペイロードデータに含まれる命令は、ディープ・パケット・インスペクションによって特定されて、そのデータユニットにフラグを付加し、取引注文の出力中に通信装置150によって当該データユニットを変更すべきかどうかの判定を援助する。
クライアントからのデータユニット204は、通信装置150で受信され、そこでデータユニットの取引注文の状態が判別される(1508)。取引注文の状態により、通信装置150には、状態フラグ、最後に受信したデータユニットの順序、最後に受信した確認応答、取引注文の送信元及び宛先(セッション、クライアント及び/またはホストの情報を含む)が通知される。取引注文におけるセッション固有の状態及び伝送方向の状態は、通信装置のルールモジュール1512に格納された情報を参照することによって決まるが、このモジュールの内部には、ソケットハッシュテーブル(SHT)及びルールハッシュテーブル(RHT)などの要素(パラメータAの値1516を含む)が含まれている。パラメータAの値1516を用いることにより、通信装置150は、データユニットを発生させたセッションの状態に関する情報と受信する取引注文を関連付けることができる。なぜなら、上記データユニットの状態に関する情報により、そのデータユニットをどのように処理するかについての判定基準が作成されるからである。データユニットの状態を判別するのに必要な情報は、そのデータユニットの様々な要素に配置されているが(例えば、各ヘッダにはソケットの情報が配置されており、それと共に、ペイロードには発注指示の細目が含まれている)、装置150が十分なデータを取得次第、そのデータユニットは通信装置によって処理されるため、データユニット全体を受信する前にそのデータユニットを処理することができる。このようにして、データユニットの利用可能な部分を処理しながらデータユニットの残部の受信を進めることにより、通信装置は、時間を節減してレイテンシの発生を抑制することができる。なお、本明細書で「セッション」という用語は、ネットワークセッション及び/または商用(例えば、金融取引)セッションを指すために用いられる。
パラメータAの値には、所与のセッションに対する状態が含まれる。パラメータAの値の各状態は、所与のセッションについて、クライアントとホストの間で履歴データをやりとりすることによって決まり、セッション情報、ハンドシェイク情報、及びデータをやりとりする際の順序情報が含まれる。データユニットの送信元情報及び宛先情報に関するパラメータAの情報は、MAC/TCP/IPネットワークプロトコル構成の場合、データユニットに対処する機構が図8〜10に示したものでないとしても、ホスト及びクライアントのMAC及び/またはTCPアドレス、状態フラグ、データユニットの確認応答情報、及びデータユニットの順序に関する別の任意の情報であって、正しい順序(順番)でデータユニットを受信したかどうかを通信装置150に判定させることが可能な情報を含む。通信装置がデータユニットから十分な量のデータを受信・処理すると、直ちにセッションの送信元(通常は、データユニットのTCPヘッダに見られる)を処理することが可能であり、それにより、次いで、そのデータユニットを所与のセッション、従ってパラメータAの値と関連付けることができるようにする。データユニットのペイロードデータを十分な量だけ処理すると、直ちにデータユニットのペイロードデータにディープ・パケット・インスペクションを実施して(1520)、その取引注文の指示を判別するようにする。
通信装置150は、SHT及び/またはRHT内のパラメータAの値1516を参照し、その取引注文のセッションに適用可能なルールを特定し、データユニットの状態の観点から、関連するパラメータAの値に関してその取引注文が有効であるかどうかを判定する(1524)。例えば、ホストによって定義された所与のセッションルールまたは順序ルールについて、本システムは、パラメータAの値に関してそのデータユニットが許容できるかどうかを判定する(1524)。データユニットの各要素が、それらに関連付けられたパラメータAの値に関して有効ではない場合、そのデータユニットは、フラグ付加モジュールにより、出力制御によって変更できるように特定される。その後、当該データユニットは変更され(1528)、ネットワークから除かれる(1532)。この場合、取引は実行されず、例えば、ホストへのTCPセッションが中断することにより、クライアントは滞りなく通知を受ける(1536)。
データユニットに関連付けられたパラメータAの値に関して、そのデータユニットが有効である場合、そのデータユニットにはフラグを付加しない。その代わりに、別の判定ステップ1540を行って、そのデータユニットの取引注文が、ルールモジュール1512内のパラメータBの値1544を超え得るかどうかを判定する。パラメータBの値1544は、特定のクライアント(すなわち、クライアントとホストの組み合わせ)に由来した、全てではないとしても複数のセッションに対するルールである。これらの値は、複数のクライアントのセッションとホスト(または複数のホスト)のセッションの間で、すなわち、全てではないとしても、クライアントとホストの間で確立された各セッションの間で履歴データをやりとりすることによって決まる各ルールで構成されている。パラメータBの値は、クライアントの複数のまたは全てのセッションにわたり、各セッションに付与される取引制限を含むことができる。パラメータBの値は、所与の取引機関について、固有の各クライアントまたはそれらの内部の複数のセッションと関連付けることができる。パラメータBの値を超えるかどうかを判定する判定ステップ1540では、ルールモジュール1512に存在するパラメータBの値1544を参照し、それにより、その取引注文が実行される場合には、所与のクライアントまたは複数のセッションについて適用可能なパラメータBの値のルールに違反するかどうかを判定する必要がある。この判定ステップにより、パラメータBの値に違反する結果が返った場合には、そのデータユニットにフラグを付加して変更する(1528)。変更済みのデータユニットは、図2に示した場合のように出力され、ネットワークからそのデータユニットを除くようにする(1532)。それにより、その取引が実行されるのを防ぎ、適用可能なパラメータBの値を超えないようにする。クライアントには、滞りなく指示が送られる(1536)。
パラメータAの値は、セッションに固有のものであり、ある特定のTCPセッションまたは隣接するTCPセッションにおいて、クライアントとホストの間で履歴をやりとりすることによって決まる。他方、パラメータBの値は、セッショングループ(クライアントとホストの間の全てのセッションなど)に関連付けられている。パラメータAの値とパラメータBの値は共に、開始時に初期化することができ、通信装置150のインターフェース160によって(例えば、PCIeバスを経由して)操作することができる。パラメータAの値を実装するために、受信後に通信機器150から出力されたデータユニットの記録を行い、これらのデータユニットによるポジション(例えば、金融取引ポジション)の変化を確認する。
ルールモジュール1512の各要素(すなわち、パラメータAの値及びパラメータBの値)のうち、関連するルールの値に従ったデータユニットの取引注文がネットワーク経由で到着すると、その取引注文にはフラグ付加モジュールによってフラグが付加されないため、当該注文は出力制御によって操作されず(1548)、図2に示すように出力されて、ホストのネットワークプロトコルによって受領され、その取引が実行される(1552)。クライアント及び中継ホストは、滞りなく通知を受ける(1536)。パラメータAの値及びパラメータBの値は、クライアントとホストの間でデータをやりとりすることによって決まるため、実行された取引と関連付けられているパラメータAの値及びパラメータBの値は更新されて、所与のセッション及びクライアントに対してその建玉の新たな値が示される。このときクライアントは、次に到着する取引注文の妥当性を考慮する判定ステップに指示を送るために待機している。パラメータBの値及び/またはパラメータAの値に関連付けられた現在の値は、次のデータのやりとりで更新することができる。
所与のセッション及び指示にそれぞれ関連付けられた複数のルールを用いて、取引注文のフラグ付加及び変更を通信装置に許可することにより、ディープ・パケット・インスペクションの結果に応じて、単にヘッダレベルではなく、ペイロードデータレベルの内容に基づき、そのデータユニットの取引注文を除くようにする。明らかではあるが、通信装置150は、パラメータBの値及びパラメータAの値のそれぞれにより、クライアントレベル及びセッションレベルでデータユニットにフラグを付加することもできる。
重要なのは、図15に示したプロセスが、通信装置によってハードウェアレベルで実行されることであり、これは、従来の中継エンティティのように、CPUで実行されるソフトウェア実装を利用した方法とは対照的である。従って、この装置では、「カットスルー」方式のディープ・パケット・インスペクションを利用し、その結果に応じてデータユニットにフラグを付加し、その後、ネットワーク接続された遠隔機器でフィルタリングさせることにより、CPUのネットワーク処理が不要となって、超低レイテンシの機能性が得られる。
なお、上記ハッシュテーブルは例示的な形式で示されており、実際には、任意の数のハッシュテーブルを設けて任意の数のパラメータを格納させることができる。これらのパラメータは、データユニットを変更すべきかどうかを判定し、それによってネットワークでのデータユニットの処理の仕方を変えるのに有用である。
図16は、例示的な3ウェイ・ハンドシェイクを示す図である。このネットワークには、2つの遠隔エンティティ(すなわち、クライアント及びホスト)並びに中継エンティティとなる通信装置が含まれている。3ウェイ・ハンドシェイクの目的は、エンティティ間でコネクション指向のTCP接続を確立することであるが、こうした接続は、既に確立されている可能性がある(あるいは、完全に新しい接続である)。
クライアントからの同期パケット(SYN)が通信装置によって受信され、それによってクライアントがホストとの接続を開始できるようにする。同期パケット1604には順序番号が含まれており、この番号は、任意かつ不規則な数で表されている。真に不規則な順序番号は必要ではないが、不規則であればあるほど安全性が向上する。
次いで、通信装置150は、ソケットハッシュテーブルを検索し(1608)、そのパケットに関連付けられたセッションへの接続が以前記録されているかどうかを判定する。パケットがSHT内の関連ハッシュ値を持っている場合、そのパケットを除く。パケットがSHT内のハッシュ値を持っていない場合、この特定セッションからの接続を新規とする必要があり、そのSYNパケットによって新たな接続が試みられる。その代わりに、ルールハッシュテーブルを参照する(1612)ことにより、通信装置150によってパラメータBの値を用いて、その後の取引の妥当性を判別することができるようにする。ルールハッシュテーブルは、中継エンティティ(例えば、ブローカー)により、通信装置150のインターフェース160を経由して変更される。このRHTには、セッションの処理方法についての情報、及びセッションからのデータにフラグを付加して変更すべきか否かについての情報が含まれている。より一般的には、RHTは、データユニットの妥当性を判別するのに役立てるため、そのセッションに付加すべき情報(例えば、パラメータBの値)を特定する。ハッシュ値が検出されるか、あるいはRHT内に作成されると、関連セッションの情報がSHTに追加され(1616)、SYNパケットが通信装置からホストに伝送される(1620)。
ホストは、そのSYNパケットを受信し、当該SYNパケットの受信を確認応答(ACK)することにより、ホスト自身のSYNパケットを発行する。クライアントの同期要求を有効に受信すると、そのクライアントの同期要求を受信したことに対するACKがホストによって当該クライアントに発行される。クライアントの同期要求を受信したことに対する確認応答は、a+1に等しい順序番号を有し、同時に、そのホストの同期要求(順序番号「b」によって示される)は、確認応答1624と共に送信される。前述した情報は、通信装置を経由して送信され、それによってSHT内を検索する(1608)ことにより、各セッションを特定し、関連するルールを検出する。これらのルールは、ホストとクライアントの間で履歴データをやりとりすることによって決まり、それによって更新される(1628)。
クライアントは、通信装置150を経由して、ホストからの同期要求及びホストからの確認応答を受け取る。クライアントは、順序番号b+1で応答することにより、ホストの同期要求に対して確認応答(ACK−SYN)を発行する(1636)。そのパケットは、通信装置によって受信されて、SHT内で検索され(1608)、関連項目が検出され、その項目がSHT内で更新される(1628)。
ホストは、自身のSYNに対するクライアントの確認応答を受け取り(1648)、それによって3ウェイ・ハンドシェイクを完了させると共に、新たな接続を確立する(あるいは、以前の接続を再確立する)。その後、中継エンティティ上の通信装置150を経由して、クライアントとホストの間で取引を続けることができる。
図17は、中継エンティティ及び通信装置を経由して、クライアントとホストの間のTCPネットワーク接続を確立及び終了させるネットワークプロトコルの例示的なプロセスフローを示す図である。ホストは、受信を待っている(1410)。ホストは、同期(SYN)パケットをクライアントから受信する(1420)。ホストは、クライアントのSYNパケットに確認応答(ACK)を送信することによって応答を行う。この確認応答は、通信装置によって受信され、中継の通信装置を経由して、クライアントとホストの間の接続が確立される(1430)。
続けてデータのやりとりを行うことができ、クライアントによって発行されたデータのやりとりの完了通知が、ACKパケットの形態で通信装置150を経由してホストによって受信され、その接続が終了する(1450)。
ホスト及び/または通信装置150が、クライアントから無効なSYNパケットを代わりに受信した場合、通信装置は、直ちにその接続を終了させる(1450)。妥当性を確認する際には、通信装置及び/またはホストは、SYN状態フラグ、ウィンドウ・スケール・オプション及び/またはSYNパケットのサイズを確認する。
図18は、パラメータAの値及びパラメータBの値の例示的な表を照合してデータユニットを検査する場合の例を模式的に示す図である。データユニット1708は、下位OSI層ヘッダ(例えば、MACヘッダ1724)及び上位OSI層ヘッダ(例えば、TCPヘッダ1732)を含むヘッダ要素1716、ペイロードデータ1740並びにチェックサムまたはCRCの形式をとった終端部1748で構成されている。データユニット1708には、典型的なイーサネットフレームに従って、IPヘッダなどの別の要素も存在し得る。さらに、UDPデータグラムなどの代替的なデータユニット構成も利用可能である。
通信装置150によってデータユニット1708を処理することにより、通信装置によってそのデータユニットが受信されている時に、当該データユニットをバイト単位で処理できるようにする。従って、最下位ヘッダは最初に受信されて最初に処理される。すなわち、MACヘッダ1724を処理した後、次のヘッダ要素(例えば、TCPヘッダ1732)を処理する。MACヘッダ1724及び/またはTCPヘッダ1732の各要素を処理して、そのデータユニットの送信元及び宛先をクライアントレベルで求める。IPヘッダも、同様の関係並びに/または送信元及び宛先のセッション、ポートもしくはTCPヘッダ1732から引き出すことが可能な類似の情報に用いることができる。クライアントの送信元及び宛先が固定されている場合、セッションの送信元及び宛先を利用してプロセスの効率を上げることができる。十分な数のMACヘッダ1724及び/またはTCPヘッダ1732の各バイトを受信して処理した場合、ハッシュキーを用いて、MACヘッダ1724及び/またはTCPヘッダ1732内の情報をハッシュ値に関連付けることによってデータユニットの送信元を求めることができる。それにより、そのデータユニットに適用可能なルールを上記計算済みのハッシュ値に応じてルールモジュール212内で検出する。図18に示す例は、データユニット1708に対してハッシュ値(H3)を計算して、「クライアント1」及び「セッション3」から発生したデータユニットを特定する様子を示している。このとき、こうした検索をルールモジュール212内で、具体的にはソケットハッシュテーブル428内で実施して、「クライアント1」が以前に接続を確立したかどうかを特定する。クライアントが以前に通信装置との接続を確立していた場合、ソケットハッシュテーブル428には、データユニット1708から計算されたハッシュ値に関連付けられた情報及びルール(従って、そのデータユニットを発生させたクライアント及び/またはセッションに適用可能な情報及びルール)が格納されている。所与のクライアントに関連付けられたルールはパラメータBの値によって提供されており、「クライアント1」に関連付けられたハッシュ値がパラメータBの値「3,000,000」を有することが示されている。そのデータユニットが、以前に確立された接続を有していない場合、図17に示したように、RHT及び関連するパラメータBを用いた手順が後続する。パラメータBの値も、パラメータAの値と同様に参照されるが、このときセッションは特定されず、クライアント及び/またはホストのみが特定される。
所与のクライアントの各セッションに関連付けられたルールは、パラメータAの値によって提供されている。固有のクライアントのセッションに関連付けられたハッシュ値は、クライアントの情報を有するヘッダのみならず、TCPヘッダ1732などのセッションを特定するヘッダ(セッションの送信元及び/または宛先を含む)にも基づいて各ハッシュ値を計算することによって求めることができ、データユニット1708のパラメータA及びパラメータBを引き出すことができるようにハッシュ値を計算する際に考慮することができる。本例では、このデータユニットは、ハッシュ値H3から「セッション3」であると判定される。それによって通信装置は、クライアント、通信装置及びホストの間のデータのやりとりについての履歴情報を関連付けることができる。例えば、取引回数、データユニットの状態フラグ、セッションのアドレス及びデータユニットの順序情報に関するルールであって、データユニットのセッションに関連付けられたルールを、パラメータAの値と関連付けることができる。従って、データユニットにフラグを付加するか否かについてディープ・パケット・インスペクションを実施すると、その結果は、通信装置を以前に通過した各データユニットに依存する。
データユニットのペイロード要素1740は、そのデータユニットの要素を受信している時にディープ・パケット・インスペクションによって検査される。金融取引の場合、データユニットのペイロードデータ1740には取引注文が含まれており、例えば、取引すべき具体的な資産が表されている(この場合には、「資産X」)。この取引注文は、「クライアント1」からのデータユニットに適切なパラメータBの値、「クライアント1」とホストの間でやりとりされた履歴データ、及び受信データユニットに含まれる指示または情報と比較することができる。図示の例では、パラメータBの値は、受信データユニットのハッシュ値H3に関連付けられた制限値である。ハッシュ値のクライアント(「クライアント1」)に関連付けられたパラメータBの値は、ブローカーがそのクライアントに定めた制限値(「3,000,000」)を超え得る取引注文の制限値である。さらに、データユニットのペイロードデータ1740を検査することにより、取引注文に関する別の情報を求めて、そのルールを完全に適用させることができる。「購入」注文1764により、「60,000」単位1772を購入すべきことが指示される。現在のパラメータBの値は実行された取引の履歴に依存して値が変化するが、受信データユニットの送信元クライアントのパラメータBに関連付けられた建玉に関する現在のパラメータBの値は、適用可能なパラメータBの値、さらにはデータユニットの取引注文の内容1764及び1772と比較される。現在のパラメータBの値が「2,963,121」単位である場合、「60,000」単位の「購入」注文は、パラメータBの制限値「3,000,000」を超え得ることが分かる。
この情報により、パラメータBの値が中継エンティティ140のルールに違反しているため、フラグ付加モジュールは、そのデータユニットを変更すべきであると判定する。当該データユニットの終端部(例えば、チェックサム、CRCまたは類似のもの)は、そのデータユニットの終端部が出力制御から出力される直前に、出力制御によって破棄される(1780)。破棄された終端部は、通信装置150から出力され、その後、そのデータユニットは、意図した宛先のホストに到着するとネットワークから除かれる。このホストでは、上記データユニットを処理することにより、誤った終端部(チェックサムなど)、従って無効なデータユニットが戻される。従って、その取引注文は実行されない。通信装置150は、取引が実行された場合に、現在のパラメータBの値を更新することもできる。
同様に、データユニットに関連付けられたセッション情報(特に、TCPヘッダ1732)がパラメータAのルールに適合していない場合、取引注文にフラグを付加して変更することもできる。例えば、誤った順序またはブラックリスト化されたセッションの一部としてデータユニットを受信したことが判明した場合である。
図18に示したハッシュテーブルは例示的であるが、任意の数のパラメータを用いることにより、中継エンティティのルールに関してデータユニットが有効であるかどうかを判定することができる。さらに、各パラメータは、一意のハッシュ値に対応するものであってよい。このハッシュ値は、データユニットに含まれる任意の情報、またはデータユニット内の情報を任意に組み合わせたものを用いて求められる。例えば、一意のハッシュ値は、パラメータBの値(例えば、MACヘッダ1724を用いて求められる)とパラメータAの値(例えば、TCPヘッダ1732からのセッション情報を用いて得られる)の双方に対応してよい。パラメータA及びパラメータBも、単なる例示的なパラメータであり、任意の数のパラメータを用いて、複数のルール、データユニットの要素、セッション、クライアント、ホスト、またはそれらの組み合わせ及び派生要素と関連付けることができる。別のパラメータを、一定の取引資産、建玉の数、取引数量、クライアントとホストの組み合わせ及び/またはセッションとホストの組み合わせに基づくものとすることができ、これらのそれぞれを除外し、あるいは制限値と関連付けることが可能である。
代替例及び変更例
様々なネットワーク・プロトコル・スタック層を前述した各例の箇所に用いることができる。代替のネットワーク・プロトコル・スタック層としては、HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、RTP(Real−time Transport Protocol)、DCCP(Datagram Congestion Control Protocol)並びに任意の派生形式及び変更形式(「軽量」なネットワーク・プロトコル・スタック層を含む)が挙げられる。一般に、PLDは、任意の独自ネットワークプロトコルのホストとして機能することができる。
システムのアプリケーション層プロトコルは、クライアント及びホストのネットワークシステムに準拠している必要がある。資産の電子金融取引を行う場合、取引所によって広く利用されているFIX(Financial Information exchange)プロトコルに適合していることが重要である。さらに、こうしたシステムの派生例として、FIXatdl(FIX algorithmic trading definition language)プロトコル、FIXML及びFAST(FIX Adapted for ST reaming)なども考慮することができる。しかしながら、一般に、任意のアプリケーション層プロトコルを容認することができる。多くの金融取引所(例えば、ロンドン証券取引所、シカゴ・マーカンタイル取引所、NYSEユーロネクスト、Chi−X/BATS)は、FIXと同等のプロトコルまたはバイナリプロトコルを独自に有するが、これらのプロトコルに通信装置150を対応させることができる。
FIXプロトコル、または類似のプロトコルでは、独自形式のチェックサム及び署名によるセキュリティ検査も採用しており、そのデータユニット内にこれらを収めている。従って、通信装置150によってこれらを共に変更して、データユニットの妥当性に影響を与えることができる。
本明細書に記載したシステムに、代替のネットワーク設計を適用することもできる。例えば、PCIe、LVDS、チップ間の直接接続などのバスを経由して、クライアント、通信装置及びホストの間を局所的に接続することも可能である。
本システムは、通信装置を経由して、クライアント及びホストなどの当事者双方間の店頭(Over The Counter:OTC)取引に適用することも可能であり、この場合、ホスト及び通信装置は、同一機関(投資銀行、値付け業者またはブローカーなど)の一部とすることができる。
通信装置150は、サイバーセキュリティ(潜在的に有害な、もしくは不要な送信をフィルタリングするためのもの)向けに低レイテンシのフィルタリング及びネットワーク処理を活用する場合、または、例えば、研究(高エネルギー粒子衝突、天文学、遺伝学などを含む)、データマイニング及びメディア処理などのために高処理能力かつ低レイテンシの高性能サーバが要求される場合などのような多数の領域において有用である。
単なる例示として本発明を上述してきたことが理解されるであろう。また、本発明の範囲内で細部の変更を実施することが可能である。
上記において開示された各機能並びに(適切な場合には)特許請求の範囲及び図面は、別個に、または任意の適切な組み合わせで提供され得る。
特許請求の範囲において現れる参照番号は一例にすぎず、特許請求の範囲の適用範囲を限定する効果を有するものではない。