図1Aを参照すると、システム例100が示されている。システム100は複数のエンティティを含んでよく、これらは、エンティティ110と、複数のエンティティ130a-n(図1Aにはこのうちの1つが詳細に示されている)とを含み、これらのうちの1つ以上がネットワーク103を介して相互接続されてよい。エンティティ110は、例えば、サービスを提供するサービスプロバイダであってよく、各エンティティ130は、例えば、サービスプロバイダ110から提供されるサービスのカスタマ/ユーザ(例えば、企業、銀行、投資ファンド、取引業者等)であってよい。本明細書では、説明の便宜上、エンティティ110をサービスプロバイダと称し、エンティティ130をユーザ/カスタマと称する。しかしながら、これらの用語は非限定的なものであって、他のエンティティ例も可能である。又、エンティティ110が、エンティティ130にサービスを提供するサービスプロバイダであることも一例であって、エンティティ110とエンティティ130は別の関係も可能である。
一例として、サービスプロバイダ110は、アイテム(例えば、金融商品、不動産、賭け対象/賭け金、有形商品、サービスなど)の取引/売買/マッチングの為の電子市場を1つ以上提供することが可能であり、従って、1つ以上の電子マッチング/取引エンジンを提供することが可能である。同様に、カスタマ130は、サービスプロバイダ130から提供される電子市場において1つ以上のアイテムの取引をしようとすることが可能である。この例によれば、カスタマ130のうちの1人以上が、データ/メッセージを、例えば、サービスプロバイダ110に電子的に伝達してよく、そのようなデータ/メッセージは、例えば、指定された価格及び/又は数量でのアイテムの買い注文及び/又は売り注文(例えば、ビッド、オファー、ヒット、テイク)を含む。同様に、サービスプロバイダ110は、電子的に、そのような注文を受けて実行し、データ/メッセージをカスタマ130に伝達してよく、そのようなデータ/メッセージは、例えば、未決注文及び成立した注文の価格及び数量を含む。当業者であれば理解されるように、これは一例に過ぎず、他及び/又は追加のサービスがサービスプロバイダ110から提供されてよく、追加及び/又は他のメッセージ/データがサービスプロバイダ110とカスタマ130との間で転送されてよい。例えば、カスタマ130のうちの1人以上が、データ/メッセージを、例えば、サービスプロバイダ110に電子的に伝達してよく、そのようなデータ/メッセージは、例えば、指定されたオッズ及び/又は賭け金でチーム又はイベント等に賭ける注文を含む。同様に、サービスプロバイダ110は、電子的に、そのような注文を受けて実行/マッチングし、データ/メッセージをカスタマ130に伝達してよく、そのようなデータ/メッセージは、例えば、未決注文及び/又は成立した注文の指定されたオッズ及び/又は賭け金を含む。
サービスプロバイダ110は、1つ以上のネットワーク構成要素112と、1つ以上のコンピューティングシステム114(これは1つ以上のデータベースシステムを含んでよく、或いは、1つ以上のデータベースシステムに接続されてよい)とを含んでよく、これらは、サービスを、例えば、カスタマ130に提供する。当業者であれば理解されるように、サービスプロバイダ110は、追加及び/又は他のコンピューティングシステム、及び/又はネットワーク構成要素を含んでよい。コンピューティングシステム114は、本明細書では、説明の便宜上、サーバと称される場合がある。しかしながら、当然のこととして、サーバという用語の使用は非限定的であり、他のタイプのコンピューティングシステムが使用されてもよい。サーバ114のうちの1つ以上が、1つ以上のプロセッサと1つ以上のメモリとを含んでよい。又、サーバ114のうちの1つ以上が、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポートを1つ以上含んでよく、これらのインタフェース/ポートは、サーバがネットワーク構成要素112と接続し、それによってネットワーク103と接続することを可能にする。そのようなインタフェースは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネット(登録商標)など、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。当業者であれば理解されるように、サーバ114は、追加及び/又は他の構成を有してよい。サービスプロバイダ110は又、ソフトウェア及び/又はファームウェア及び/又はハードウェアベースのアプリケーションを1つ以上含んでよく、これらのアプリケーションは、1つ以上のデータベースシステム及び/又はサーバ114に記憶されてよく、サーバ114のうちの1つ以上で実行されるように構成されてよい。各サーバは、同じアプリケーション又は異なるアプリケーションを実行してよい。一例として、アプリケーションは、本明細書に記載のように1つ以上のアイテムの取引/マッチングを行う為の電子マッチング/取引エンジンを1つ以上提供するように構成されてよい。
ネットワーク構成要素112は、例えば、1つ以上のルータ及び/又はスイッチを含んでよく、これらは、例えば、コアルータ及び/又はエッジルータ、及び/又は、コアスイッチ及び/又はエッジスイッチを含む。ネットワーク構成要素112のそれぞれは、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポートを1つ以上含んでよく、これらのインタフェース/ポートは、ネットワーク構成要素が互いに接続し、サーバ114のうちの1つ以上と接続し、且つ/又は、ネットワーク103と接続することを可能にする。そのようなインタフェースは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネットなど、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。当業者であれば理解されるように、ネットワーク構成要素112は、追加及び/又は他の構成を有してよい。ネットワーク構成要素112のうちの1つ以上が、他のネットワーク構成要素112、サーバ114、及び/又はネットワーク103との物理接続(有線/無線)を1つ以上含んでよい。ネットワーク構成要素112、並びにサーバ114のうちの1つ以上は更に、サーバ114のうちの1つ以上が、プライベートネットワークアドレスを有し、それによって、サービスプロバイダ110のプライベートネットワークに存在し、且つ/又は、パブリックアドレスを有し、それによって、パブリックネットワークに存在するように、構成されてよい。このようにして、サーバ114同士で通信することが可能であるか、且つ/又は、サーバ114が、ネットワーク103と通信し、それによって、(例えば、ネットワーク103に接続された)他の1つ以上のコンピューティングシステム、例えば、カスタマ130のコンピューティングシステム138と通信することが可能であるように、ネットワーク構成要素112が構成されてよい。これも当業者であれば理解されるように、ネットワーク構成要素112は、本明細書に記載のように追加及び/又は他の構成要素を含んでよく、本明細書に記載されている機能性に対して追加及び/又は他のタイプの機能性を提供してよい。
(カスタマ130aとして図示されている)カスタマ130の一例が、1つ以上のネットワーク構成要素132、134、及び136と、1つ以上のコンピューティングシステム138(これは1つ以上のデータベースシステムを含んでよく、或いは、1つ以上のデータベースシステムに接続されてよい)とを含んでよい。当業者であれば理解されるように、カスタマ130が追加及び/又は他のコンピューティングシステム、及び/又はネットワーク構成要素を含んでよい。当業者であれば理解されるように、他のカスタマ130が、図1Aに示されているカスタマ130aの構成と同様及び/又は他の構成を含んでよい。コンピューティングシステム138は、本明細書では、説明の便宜上、サーバと称される場合がある。しかしながら、当然のこととして、サーバという用語の使用は非限定的であり、他のタイプのコンピューティングシステムが使用されてもよい。サーバ138のうちの1つ以上が、1つ以上のプロセッサと1つ以上のメモリとを含んでよい。又、サーバ138のうちの1つ以上が、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポートを1つ以上含んでよく、これらのインタフェース/ポートは、サーバがネットワーク構成要素132-136のうちの1つ以上と接続し、それによってネットワーク103と接続することを可能にする。そのようなインタフェースは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネットなど、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。当業者であれば理解されるように、サーバ138は、追加及び/又は他の構成を有してよい。カスタマ130は又、ソフトウェア及び/又はファームウェア及び/又はハードウェアベースのアプリケーションを1つ以上含んでよく、これらのアプリケーションは、1つ以上のデータベースシステム及び/又はサーバ138に記憶されてよく、サーバ138のうちの1つ以上で実行されるように構成されてよい。一例として、アプリケーションは、サービスプロバイダ110のサーバ114から提供されるサービスを使用するように構成されてよく、特に、1つ以上のアイテムの取引を、1人以上の他のカスタマ130と、例えば、サービスプロバイダ110のサーバ114から提供される電子マッチング/取引エンジンを使用することにより、行うように構成されてよい。この例によれば、カスタマ130のサーバ138のうちの1つ以上が、ネットワーク103を介して、データ/メッセージを電子的に、例えば、サービスプロバイダ110のサーバ114に伝達してよく、そのようなデータ/メッセージは、例えば、指定された価格及び/又は数量でのアイテムの買い注文及び/又は売り注文(例えば、ビッド、オファー、ヒット、テイク)を含む。同様に、サービスプロバイダ110のサーバ114は、電子的に、そのような注文を受けて実行し、データ/メッセージをカスタマ130のサーバ138に伝達してよく、そのようなデータ/メッセージは、例えば、未決注文及び成立した注文の価格及び数量を含む。当業者であれば理解されるように、これは一例に過ぎず、本明細書に記載のように、他及び/又は追加のサービスがサービスプロバイダ110から提供されてよく、追加及び/又は他のメッセージ/データがサービスプロバイダ110とカスタマ130との間で転送されてよい。
カスタマ130のネットワーク構成要素132-136は、例えば、1つ以上のルータ及び/又はスイッチを含んでよく、これらは、例えば、コアルータ及び/又はエッジルータ、及び/又は、コアスイッチ及び/又はエッジスイッチを含む。ネットワーク構成要素のそれぞれは、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポートを1つ以上含んでよく、これらのインタフェース/ポートは、ネットワーク構成要素が互いに接続し、サーバ138のうちの1つ以上と接続し、且つ/又は、ネットワーク103と接続することを可能にする。そのようなインタフェースは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネットなど、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。当業者であれば理解されるように、ネットワーク構成要素132-136は、追加及び/又は他の構成を有してよい。ネットワーク構成要素132-136のうちの1つ以上が、他のネットワーク構成要素132-136、サーバ138のうちの1つ以上、及び/又はネットワーク103との物理接続(有線/無線)を1つ以上含んでよい。ネットワーク構成要素132-136は更に、サーバ138のうちの1つ以上が、プライベートネットワークアドレスを有し、それによって、それぞれのカスタマ130のプライベートネットワークに存在し、且つ/又は、パブリックアドレスを有し、それによって、パブリックネットワークに存在するように、構成されてよい。このようにして、サーバ114同士で通信することが可能であるか、且つ/又は、サーバ114が、ネットワーク103と通信し、それによって、(例えば、ネットワーク103に接続された)他の1つ以上のコンピューティングシステム、例えば、サーバ114と通信することが可能であるように、ネットワーク構成要素132-136が構成されてよい。これも当業者であれば理解されるように、ネットワーク構成要素132-136は、本明細書に記載のように追加及び/又は他の構成要素を含んでよく、本明細書に記載されている機能性に対して追加及び/又は他のタイプの機能性を提供してよい。
ネットワーク103は、1つ以上のネットワーク構成要素を含んでよく、これらは、例えば、1つ以上のルータ及び/又はスイッチを含む。そのようなネットワーク構成要素は、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポートを1つ以上含んでよく、これらのインタフェース/ポートは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネットなど、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。ネットワーク103の1つ以上の構成要素が、他の構成要素、並びにエンティティ110及びエンティティ130のそれぞれとの物理接続(有線/無線)を1つ以上含んでよい。このようにして、エンティティ110のコンピューティングシステム114と、エンティティ130のコンピューティングシステム138とが、少なくとも互いに通信可能であるように、ネットワーク103が構成されてよい。これも当業者であれば理解されるように、ネットワーク103は、本明細書に記載のように追加及び/又は他のネットワーク構成要素を含んでよく、本明細書に記載されている様式に対して追加及び/又は他のタイプの様式で構成されてよい。
本明細書に記載のように同様の参照符号が同様の構成要素を意味する図1Bを参照すると、図1Aのシステム100一構成例であってよいシステム200が示されている。この例によれば、サービスプロバイダ110のネットワーク構成要素112は、サーバ114のそれぞれとの1つ以上の接続を含むスイッチ、例えば、コアスイッチを含んでよい。一例として、ネットワーク構成要素112はArista7124アプリケーションスイッチであってよいが、他及び/又は追加のネットワーク構成要素が使用されてもよい。ネットワーク構成要素112、並びにサーバ114のうちの1つ以上は更に、サーバ114のうちの1つ以上がネットワーク103上のネットワークアドレスを有するように、構成されてよく、これらのアドレスは「パブリック」アドレスと見なされてよい(ただし、これらのアドレスは実際にはパブリックでなくともよい)。システム例200の一例示的態様によれば、ネットワーク103は、サービスプロバイダ110の(場合によっては所有又はリースされている)プライベートネットワークであってよい。この例によれば、ネットワーク構成要素112、並びにサーバ114のうちの1つ以上が、ネットワーク103の一部となる。言い換えると、サーバ114とインタフェースし、カスタマ130ともインタフェースする、ネットワーク構成要素112のネットワークインタフェースは、同じアドレス空間にあってよい。
この、図1Bの構成例の更なる態様によれば、(カスタマ130aとして図示されている)カスタマ130の一例のネットワーク構成要素136は、コアスイッチなどのスイッチを含んでよく、ネットワーク構成要素134は、エッジスイッチなどのスイッチであってよく、ネットワーク構成要素132はルータであってよい。スイッチ136は、サーバ138のそれぞれとの1つ以上の接続、及びスイッチ134との1つ以上の接続を含んでよい。そして、スイッチ134は、ルータ136との1つ以上の接続を含んでよい。ネットワーク構成要素132-136、並びにサーバ138のうちの1つ以上は更に、サーバ138のうちの1つ以上がプライベートネットワークアドレス(即ち、ネットワーク103上のものではないアドレス)を有し、それによって、ネットワーク103とは切り離されたプライベートネットワークに存在するように、構成されてよい。他のカスタマ130nも同様の構成を有してよい。
この、図1Bの構成例の更なる態様によれば、各カスタマ130は、1つ(場合によっては、より多く)のアドレスをネットワーク103に有してよく、これらのアドレスは「パブリック」アドレスと見なされてよい(ただし、これらのアドレスは実際にはパブリックでなくともよい)。従って、各ルータ132は、ネットワークアドレス変換器、及び場合によってはポートアドレス変換器(NAT/PAT)として構成されてもよく、これは、例えば、カスタマ130のネットワーク上のサーバ138の1つ以上のプライベートアドレスと、ネットワーク103上でそれぞれのカスタマ130に割り当てられたパブリックアドレスとの間のマッピングを行う。従って、サーバ138がメッセージ/データ(これは、例えば、アドレス及び/又はポートを含むパケットの形式でカプセル化されてよい)をサーバ114に伝達している場合、ルータ136は、パケット内のサーバ138のプライベートアドレスを、ネットワーク103上でカスタマ130に割り当てられているパブリックアドレスに変換することが可能である。この場合も、そのような変換は、サーバ138上でアプリケーションが使用しているポート番号を別のポート番号に変換することも含んでよい。同様に、サーバ114がメッセージ/データ(これは、例えば、アドレス及び/又はポートを含むパケットの形式でカプセル化されてよい)をサーバ138に伝達している場合、ルータ136は、パケット内の、カスタマ130に割り当てられているパブリックアドレスを、サーバ138のプライベートアドレスに変換することが可能である。この場合も、ルータ136は、アドレス変換の一環としてポート変換を実施することも可能である。
この、図1Bの構成例の更なる態様によれば、ネットワーク103は、サービスプロバイダ110のスイッチ112と、(例えば、カスタマ130の)ルータ132のそれぞれとの間のポイントツーポイント接続113a-n(ただし、この場合も非ポイントツーポイント接続が可能である)を含んでよい。例えば、サービスプロバイダ110のスイッチ112と、(例えば、カスタマ130の)ルータ132との間の各接続は、例えば、1Gb、10Gb、100Gb等で動作するシングルモードファイバ接続のようなファイバ接続であってよい(ただし、他のタイプの接続及びレートも使用されてよい)。この構成例のより更なる態様によれば、サービスプロバイダ110のサーバ114及びネットワーク構成要素112、並びに、それぞれのカスタマ130のネットワーク構成要素132-136及びサーバ138のうちの1つ以上が、同じ場所に配置されてよく、例えば、同じ部屋に配置されてよい。例えば、サーバ114及びネットワーク構成要素112のうちの1つ以上が、1つのラックに収容されてよい。同様に、第1のそれぞれのカスタマ130のネットワーク構成要素132-136及びサーバ138のうちの1つ以上が、別のそれぞれのラック等に収容されてよい。これも当業者であれば理解されるように、システム200は、本明細書に記載のものに対して追加及び/又は他の構成要素を含んでよく、本明細書に記載のものに対して追加及び/又は他の構成を含んでよい。
図1A及び図1Bに示されたようなシステム例100及び200に関して起こりうる問題の一例として、データがサーバ114とサーバ138との間で伝達される際に無視できない遅延が挿入されうる、という問題がある。具体例として、ルータ132は、(例えば、100マイクロ秒を超える)遅延を挿入する可能性があり、これは、例えば、ネットワーク/ポート変換機能の結果である。同様に、異なるカスタマ130の異なるルータ132においては、異なる遅延が発生しうる。
本明細書に記載のように同様の参照符号が同様の構成要素を意味する図2を参照すると、図1Bのシステム例200と同様のシステム例300が示されている。この例によれば、システム300は、ネットワーク構成要素202を含む。ネットワーク構成要素202は、サービスプロバイダ110の一部であってよく、従って、サービスプロバイダ110によって所有及び/又は操作されてよい。ネットワーク構成要素202は、サービスプロバイダ110のサーバ114、及び/又は、ネットワーク構成要素112を含む、サービスプロバイダ110の1つ以上のネットワーク構成要素と同じ場所に配置されてよく、これらの構成要素と同じラックに収容されてよい。当業者であれば理解されるように、ネットワーク構成要素202は、サービスプロバイダ110によって所有及び/又は操作されなくてもよく、サービスプロバイダ110のネットワーク構成要素及び/又はサーバと同じ場所に配置されなくてもよい。
ネットワーク構成要素202は、1つ以上の、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポート204a…204nを含んでよく、これらのインタフェース/ポートは、ネットワーク構成要素が、サーバ114との接続を、場合によっては、例えば、ネットワーク構成要素112を介して行うことを可能にする。ネットワーク構成要素202は又、1つ以上の、ネットワークハードウェア/ソフトウェア/ファームウェアベースのインタフェース/ポート206a…206nを含んでよく、これらのインタフェース/ポートは、ネットワーク構成要素が、(例えば、それぞれのカスタマ130a-nの)サーバ138と接続することを可能にする。ネットワーク構成要素202のネットワークインタフェース204a-n及び206a-nは、銅、光ファイバ、及び/又は無線など、1つ以上の様々なタイプの物理ネットワーク接続をサポートするように構成されてよく、イーサネットなど、1つ以上の様々なタイプのプロトコルをサポートするように構成されてよく、Gbレートなど、あらゆる速度で動作するように構成されてよい。更に、異なるネットワークインタフェース204a-n及び206a-nは、異なる構成を有してよい。当業者であれば理解されるように、ネットワーク構成要素202は、追加及び/又は他の構成を有してよい。
図2に更に示されるように、ネットワーク構成要素202のネットワークインタフェース204a-nのうちの1つ以上が(例えば、接続210a-nによって)物理的に(有線/無線により)、スイッチであってよいネットワーク構成要素112に接続されてよい。別及び/又は追加の例によれば、ネットワーク構成要素202のネットワークインタフェース204a-nのうちの1つ以上のそれぞれが、1つ以上の接続210a-nにより、サービスプロバイダ110のそれぞれのサーバ114に直接物理的に接続されてよい。システム例300の更なる態様によれば、各カスタマ130a-nは、ネットワーク構成要素202の1つ以上のそれぞれのネットワークインタフェース206a-nを割り当てられてよい。従って、ネットワーク構成要素202のそれぞれのネットワークインタフェース206a-nは、(例えば、接続212a-nによって)物理的に(有線/無線により)それぞれのカスタマ130a-nのそれぞれのサーバ138に、直接、且つ/又は、それぞれのカスタマの1つ以上のネットワーク構成要素(例えば、ネットワーク構成要素136、これは、例えば、スイッチであってよい)を介して、接続されてよい。例えば、各接続212a-nは、例えば、1Gb、10Gb、100Gb等で動作するシングルモードファイバ接続のようなファイバ接続であってよい(ただし、他のタイプの接続及びレートも使用されてよい)。当業者であれば理解されるように、ネットワーク構成要素202及びシステム300の追加及び/又は他の構成も可能である。
システム例300の更なる態様によれば、ネットワーク構成要素202のネットワークインタフェース204a-n、接続210a-n、ネットワーク構成要素112、及びサーバ114のうちの1つ以上は、ネットワーク214に存在してよく、ネットワーク214は、サービスプロバイダ110のプライベートネットワークであってよく、ネットワークアドレス空間を有してよい。従って、ネットワーク構成要素112、並びにサーバ114のうちの1つ以上は、サーバ114のうちの1つ以上がそのネットワークアドレス空間内でネットワーク214にネットワークアドレスを有するように、構成されてよい。この構成例の更なる態様によれば、例えば、ネットワークインタフェース206a、接続212a、それぞれのカスタマ130aのネットワーク構成要素136、並びにそれぞれのカスタマ130aのサーバ138のうちの1つ以上は、カスタマ130aのネットワーク216aに存在してよく、ネットワーク216aは、カスタマ130aのプライベートネットワークであってよく、ネットワークアドレス空間を有してよい。従って、カスタマ130aのネットワーク構成要素136、並びにサーバ138のうちの1つ以上は、サーバ138のうちの1つ以上がそれぞれのネットワークアドレス空間内でネットワーク216aにネットワークアドレスを有するように、構成されてよい。同様に、例えば、ネットワークインタフェース206n、接続212n、カスタマ130nのネットワーク構成要素136、並びにカスタマ130nのサーバ138のうちの1つ以上は、カスタマ130nのネットワーク216nに存在してよく、ネットワーク216nは、カスタマ130nのプライベートネットワークであってよく、それぞれのネットワークアドレス空間を有してよい。従って、カスタマ130nのネットワーク構成要素136、並びにサーバ138のうちの1つ以上は、カスタマ130nのサーバ138のうちの1つ以上がそれぞれのネットワークアドレス空間内でネットワーク216nにネットワークアドレスを有するように、構成されてよい。図2に示されていない他のカスタマ130も、同様の構成を有してよい。
このシステム例の更なる態様によれば、ネットワーク構成要素202は、例えば、双方向のネットワークアドレス変換器、及び場合によってはポートアドレス変換器(NAT/PAT)であってよい。より具体的には、この例によれば、各カスタマ130a-nは、1つ(場合によっては、より多く)のアドレスを、ネットワーク214のネットワークアドレス空間内のネットワーク214に有してよい。従って、各カスタマ130a-nに対して、ネットワーク構成要素202は、それぞれのカスタマネットワーク216a-nにある(即ち、それぞれのネットワークのネットワークアドレス空間内にある)サーバ138の1つ以上のアドレスと、(例えば、ネットワーク214のネットワークアドレス空間内の)ネットワーク214上でそれぞれのカスタマ130a-nに割り当てられているアドレスとの間のマッピングを行うNAT/PATとして構成されてよい。従って、サーバ138がメッセージ/データ(これは、例えば、アドレス及び/又はポートを含むパケットの形式でカプセル化されてよい)をサーバ114に伝達している場合、ネットワーク構成要素202は、パケット内のサーバ138のネットワーク216a-n上のアドレスを、ネットワーク214上でカスタマ130a-nに割り当てられているアドレスに変換することが可能である。この場合も、そのような変換は、サーバ138上でアプリケーションが使用しているパケット内のポート番号を別のポート番号に変換することも含んでよい。同様に、サーバ110がメッセージ/データ(これは、例えば、アドレス及び/又はポートを含むパケットの形式でカプセル化されてよい)をサーバ138に伝達している場合、ネットワーク構成要素202は、パケット内の、ネットワーク214上でカスタマ130a-nに割り当てられているアドレスを、ネットワーク216a-n上の、サーバ138のアドレスに変換することが可能である。この場合も、ネットワーク構成要素202は、アドレス変換の一環としてポート変換を実施することも可能である。
本明細書に記載のように同様の参照符号が同様の構成要素を意味する図3を参照すると、ネットワーク構成要素202のアーキテクチャ例が示されている。ネットワーク構成要素202は、複数のコンピューティングプロセッサを含んでよく、これらは、プロセッサ301a…301nのうちの1つ以上と、プロセッサ302a、302b、…、302nのうちの1つ以上と、を含む。プロセッサ301a-nは、本明細書ではスケジューリングプロセッサと称される場合があり、プロセッサ302a-nは、本明細書ではネットワークプロセッサと称される場合がある。「スケジューリング」及び「ネットワーク」という用語は、非限定的であるものとし、本明細書では、説明しやすさの為にのみ用いられる。プロセッサ301a-n及び302a-nのそれぞれは、(例えば、メモリ、処理速度等に関して)同様に構成されてよく、同様に構成されなくてもよい。当業者であれば理解されるように、ネットワーク構成要素202に含まれるプロセッサの数は、これより多いか、且つ/又は少なくてもよい。ネットワーク構成要素例202の更なる態様によれば、スケジューリングプロセッサ301a-n及びネットワークプロセッサ302a-nのうちの任意の1つ以上が、バスアーキテクチャなどの通信アーキテクチャを介して、互いに相互接続されてよく、この通信アーキテクチャは、例えば、共有メモリアーキテクチャを含んでよい。当業者であれば理解されるように、他及び/又は追加の通信アーキテクチャも可能である。通信アーキテクチャは、スケジューリングプロセッサ301a-nのいずれもが、ネットワークプロセッサ302a-nのいずれとも通信するように構成されてよいものであってよい。当業者であれば理解されるように、他の構成も可能である。
ネットワーク構成要素202は、本明細書で既述のように、1つ以上のネットワークインタフェース204a-n及び1つ以上のネットワークインタフェース206a-nも含んでよく、1つ以上のネットワークインタフェース204a-nは、例えば、サーバ114と直接又は間接的にインタフェースするように構成されてよく、1つ以上のネットワークインタフェース206a-nは、例えば、それぞれのカスタマ130a-nとインタフェースするように構成されてよい。ネットワークインタフェース204a-n及び206a-nは、同じ構成を有してよく、且つ/又は、1つ以上の異なる構成を有してよい。例えば、インタフェース204a-n及び206a-nは、例えば、1Gb、10Gb、100Gb等のレートで動作する、ロングレンジ又はショートレンジの、シングルモード又はマルチモードのファイバインタフェースの任意の組み合わせであってよい。ネットワークインタフェース204a-n及び206a-nのうちの1つ以上が、それ自身のネットワークインタフェースカード上に物理的に位置してよく、且つ/又は、ネットワークインタフェース204a-n及び206a-nのうちの幾つかが、1つ以上の共通ネットワークインタフェースカード上に物理的に位置してよい。当業者であれば理解されるように、他の構成も可能である。
本明細書で既述のように、各ネットワークインタフェース206a-nは、それぞれのカスタマ130a-nに割り当てられてよく、且つ、インタフェースしてよい。当業者であれば理解されるように、所与のカスタマに(例えば、負荷分散目的用、バックアップ用等として)複数のネットワークインタフェースが割り当てられてよい。ネットワーク構成要素例202の更なる態様によれば、各ネットワークインタフェース206a-nは、それぞれのネットワークインタフェースを経由して伝達される全てのデータがそれぞれのネットワークプロセッサによってのみ処理されるように、ネットワークプロセッサ302a-nのそれぞれに割り当てられてよい。しかしながら、当業者であれば理解されるように、追加及び/又は他の構成も可能であり、例えば、2つ以上のネットワークインタフェース206a-nを所与のネットワークプロセッサ302a-nに割り当てる構成、及び/又は、2つ以上のネットワークプロセッサ302a-nを所与のネットワークインタフェース206a-nに割り当てる構成も可能である。ネットワーク構成要素例202の更なる態様によれば、所与のネットワークインタフェース206a-nが、そのそれぞれのネットワークプロセッサ302a-nと、バスアーキテクチャ(例えば、PCIeバスアーキテクチャ)などの通信アーキテクチャを介して相互接続されてよい。当業者であれば理解されるように、他及び/又は追加の通信アーキテクチャも可能である。この通信アーキテクチャは、任意のネットワークインタフェース206a-nが、ネットワークプロセッサ302a-nのうちの任意の1つ以上と通信するように構成されてよく、且つ、任意のネットワークプロセッサ302a-nが、ネットワークインタフェース206a-nのうちの任意の1つ以上と通信するように構成されてよいものであってよい。ネットワーク構成要素202の更なる態様によれば、各ネットワークプロセッサ302a-nは、例えば、それぞれに関連付けられたネットワークインタフェース206a-nからの割り込み以外のあらゆる割り込みから遮断されてよい。当業者であれば理解されるように、他の構成も可能である。
図3に更に示されるように、ネットワーク構成要素例202は、1つ以上のネットワークアプリケーション303a-nを含んでよい。アプリケーション303a-nはソフトウェアベースのアプリケーションであってよいが、ファームウェア及び/又はハードウェアベースのアプリケーションを含む、他及び/又は追加の構成も可能である。ネットワーク構成要素202は、1つ以上のメモリ装置を含んでもよく、これらのメモリ装置にアプリケーション303a-nが記憶されてよく、且つ/又は、これらのメモリ装置からこれらのアプリケーションが実行されてよい。そのようなメモリ装置は、プロセッサ301a-n及び302a-nのうちの1つ以上と電子的に接続されてよい。ネットワーク構成要素202の一態様によれば、各ネットワークプロセッサは、アプリケーション303a-nを実行してよい。ネットワーク構成要素202の更なる態様によれば、各アプリケーション303a-nは、それぞれのプロセッサにおいてのみ実行されてよい。従って、アプリケーション303aはプロセッサ302aにおいてのみ実行されてよく、アプリケーション303bはプロセッサ302bにおいてのみ実行されてよく、他も同様である。このことは、プロセッサアフィニティと呼ばれる場合がある。しかしながら、当業者であれば理解されるように、追加及び/又は他の構成も可能であり、例えば、単一のプロセッサ302a-nにおいて複数のアプリケーション303a-nを実行する構成、及び/又は、複数のプロセッサにおいてアプリケーション303a-nのうちの1つ以上を実行する構成も可能である。例えば、実施形態によっては、ルーティング装置にl-フローレベルのコアアフィニティ又はプロセッサアフィニティが割り当てられてよい。
従って、ネットワーク構成要素202の一構成例によれば、所与のネットワークアプリケーション303a-nがそれぞれのネットワークプロセッサ302a-nに割り当てられてよく、且つ、それぞれのネットワークプロセッサ302a-nにおいて実行されてよく、それぞれのネットワークプロセッサ302a-nはそれぞれのネットワークインタフェース206a-nに割り当てられてよく、それぞれのネットワークインタフェース206a-nはそれぞれのカスタマ130a-nに割り当てられてよい。この構成例の更なる態様によれば、各ネットワークアプリケーション302a-nは、NAT及び場合によってはPATとして構成されてよく、ネットワーク214とそれぞれのカスタマ130a-nのそれぞれのネットワーク216a-nとの間を通るメッセージ/データのネットワーク/ポート変換を実施してよい。従って、ネットワーク構成要素202は、所与のネットワークインタフェース206a-nを所与のネットワークプロセッサ302a-nに割り当てるように(例えば、ネットワーク管理者によって)構成されてよく、更に、各ネットワークプロセッサ上のネットワークアプリケーション303a-nが、割り当てられたインタフェースが接続されているカスタマ130a-nに基づいてNAT/PAT機能を実施するように構成されてよい。ネットワークプロセッサ302a-n及びネットワークインタフェース206a-nの物理的ハードウェア構成/レイアウト、及び/又は、それぞれのカスタマ130a-nによって生成され、且つ/又は、それぞれのカスタマに送信されるデータの量に従って、ネットワークプロセッサ302a-nに対するネットワークインタフェース206a-nの特定の割り当ては、ネットワーク構成要素202の総データスループットに関して、他の割り当てより有利であることが可能であり、例えば、管理者によって、そのように割り当てられることが可能である。例えば、所与のネットワークインタフェース206a-nを近くのネットワークプロセッサ302a-nに割り当てることが有利である場合がある。当業者であれば理解されるように、ネットワークアプリケーション302a-nは、NAT/PATとして構成されなくてもよく、1つのネットワークアプリケーションが、別のネットワークアプリケーション等と異なる機能を実施するように構成されてよい。
ネットワーク構成要素例202の更なる態様によれば、各ネットワークインタフェース204a-nは、それぞれのネットワークインタフェースを経由して伝達される全てのデータがそれぞれのスケジューリングプロセッサによってのみ処理されるように、スケジューリングプロセッサ301a-nのそれぞれに割り当てられてよい。しかしながら、当業者であれば理解されるように、追加及び/又は他の構成も可能である。例えば、全てのネットワークインタフェース204a-nが、スケジューリングプロセッサ301a-nのうちの1つに割り当てられてよく、且つ/又は、スケジューリングプロセッサのそれぞれが、ネットワークインタフェース204a-nのうちの任意の1つ以上と通信するように構成されてよい。ネットワーク構成要素例202の更なる態様によれば、所与のネットワークインタフェース204a-nが、それぞれのスケジューリングプロセッサ301a-nと、バスアーキテクチャ(例えば、PCIeバスアーキテクチャ)などの通信アーキテクチャを介して相互接続されてよい。当業者であれば理解されるように、他及び/又は追加の通信アーキテクチャも可能である。この通信アーキテクチャは、任意のネットワークインタフェース204a-nが、スケジューリングプロセッサ301a-nのうちの任意の1つ以上と通信するように構成されてよく、且つ、任意のスケジューリングプロセッサ301a-nが、ネットワークインタフェース204a-nのうちの任意の1つ以上と通信するように構成されてよいものであってよい。ネットワーク構成要素202の更なる態様によれば、スケジューリングプロセッサ301a-nのうちの1つ以上が、例えば、ネットワークインタフェース204a-nのうちの1つ以上からの割り込み以外のあらゆる割り込みから遮断されてよい。当業者であれば理解されるように、他の構成も可能である。
図3に更に示されるように、ネットワーク構成要素202は、1つ以上のスケジューリングアプリケーション及び/又は1つ以上の管理アプリケーションを含んでもよく、これらは、図3では、アプリケーション304a-nとして集合的に示されている。アプリケーション304a-nはソフトウェアベースのアプリケーションであってよいが、ファームウェア及び/又はハードウェアベースのアプリケーションを含む、他の構成も可能である。既述のように、ネットワーク構成要素202は、1つ以上のメモリ装置を含んでもよく、これらのメモリ装置にアプリケーション304a-nが記憶されてよく、且つ/又は、これらのメモリ装置からこれらのアプリケーションが実行されてよい。ネットワーク構成要素202の一例によれば、各スケジューリングプロセッサ301a-nは、1つ以上のスケジューリングアプリケーション、1つ以上の管理アプリケーション、又はこれらの組み合わせを実行してよい。別の例として、スケジューリングアプリケーション及び/又は管理アプリケーションは、複数のプロセッサで実行されてよい。別の例として、あるスケジューリングアプリケーションが、1つのスケジューリングプロセッサ301a-nで実行されて、(本明細書で詳述するが)ネットワークプロセッサ302a-nのあるサブセットを担当する一方で、別のスケジューリングアプリケーションが、スケジューリングプロセッサ301a-nで実行されて、ネットワークプロセッサ302a-nの別のサブセットを担当するようであってよい。別の例として、あるスケジューリングアプリケーションが、1つのスケジューリングプロセッサ301a-nで実行されて、全てのネットワークプロセッサ302a-nを担当してよい。更なる例として、あるスケジューリングアプリケーションが、複数のスケジューリングプロセッサ301a-nで実行されて、全てのネットワークプロセッサ302a-nを担当してよい。当業者であれば理解されるように、他の変形形態も可能である。説明のしやすさの為に、ネットワーク構成要素202は、本明細書では、1つのスケジューリングアプリケーションと1つの管理アプリケーションとを有するものとして説明される。当業者であれば理解されるように、ネットワーク構成要素202は、本明細書で説明されるアプリケーションとは別のタイプのアプリケーションを含んでよい。
ネットワーク構成要素例202の更なる態様によれば、スケジューリングアプリケーション304は、ネットワークインタフェース206a-nとネットワークインタフェース204a-nとの間で、以下のようにメッセージ/データを通すように構成されてよい。
a.ネットワークインタフェース206a-nで受信されたメッセージ/データの場合は、それぞれのネットワークアプリケーション303a-nがそれぞれのパケットに対してNAT/PAT変換を実施した後、例えば、スケジューリングアプリケーション304が、変換されたパケットを取り出し/取得し、その変換されたパケットをネットワークインタフェース204a-nのうちの1つに転送/伝達してよい。
b.ネットワークインタフェース204a-nで受信されたメッセージ/データの場合は、スケジューリングアプリケーション304が、メッセージ/データを取得し、それぞれのパケットに対して、それぞれのネットワークアプリケーション303a-nのうちのどれがNAT/PAT変換を実施するかを決定し、そのネットワークアプリケーションにパケットを転送/伝達してよく、そこでパケットが変換(NAT/PAT)され、それぞれのネットワークインタフェース206a-nに転送/伝達されてよい。
従って、ネットワーク構成要素202の一動作例によれば、所与のカスタマ130a-nの所与のサーバ138が、メッセージ/データ(これは、例えば、アドレス及び/又はポートを含むパケットの形式でカプセル化されてよい)をサービスプロバイダ110のサーバ114に送信してよい。そのメッセージ/データ/パケットは、ネットワーク構成要素202の所与のネットワークインタフェース206a-nで受信されてよい。その後、そのネットワークインタフェース206a-nに割り当てられているネットワークプロセッサ302a-nの所与のネットワークアプリケーション303a-nが、そのメッセージ/データ/パケット(又はその一部分)をネットワークインタフェース206から取得/受信するか、且つ/又は転送されて、そのそれぞれのパケットに対してNAT/PAT変換を実施してよい。その後、ネットワークアプリケーション303a-nは、変換されたメッセージ/データ/パケットを、スケジューリングアプリケーション304に対して転送するか、且つ/又は利用可能にしてよく、その後、スケジューリングアプリケーション304は、変換されたメッセージ/データ/パケットを取得及び/又は受信してよく、その後、変換されたメッセージ/データ/パケットを、それぞれのネットワークインタフェース204a-nに対して転送するか、且つ/又は利用可能にしてよく、その後、メッセージ/データ/パケットがそこからサーバ114に伝達されてよい。同様に、サービスプロバイダ110の所与のサーバ114が、メッセージ/データ(これは、例えば、パケットの形式でカプセル化されてよい)をカスタマ130a-nのサーバ138に送信してよい。そのメッセージ/データ/パケットは、ネットワーク構成要素202の所与のネットワークインタフェース204a-nで受信されてよい。その後、スケジューリングアプリケーション304は、そのメッセージ/データ/パケット(又はその一部分)をネットワークインタフェース204a-nから取得/受信するか、且つ/又は転送されて、そのメッセージ/データ/パケットに対して、それぞれのネットワークアプリケーション303a-n/ネットワークプロセッサ302a-nのうちのどれがNAT/PAT変換を実施するかを決定し、そのネットワークアプリケーション303a-nに対して、そのメッセージ/データ/パケットを転送するか、且つ/又は利用可能にしてよい(一例として、又、他の実施態様も可能であるが、スケジューリングアプリケーションがメッセージ/データを適正なネットワークプロセッサ302a-nに転送する為に、スケジューリングアプリケーションは、カスタマ130に関連付けられたネットワークアドレスをそれぞれのネットワークプロセッサ302a-nにマッピングするテーブル(これは管理者によって構成されてよい)を保守してよい)。そして、ネットワークアプリケーション303a-nは、メッセージ/データ/パケットを取得及び/又は受信し、そのそれぞれのパケットに対してNAT/PAT変換を実施し、ネットワークアプリケーション303a-nが実行されているネットワークプロセッサ302a-nに割り当てられているそれぞれのネットワークインタフェース206a-nに対して、変換されたメッセージ/データ/パケットを転送するか、且つ/又は利用可能にしてよい。その後、そのネットワークインタフェース206は、そのメッセージ/データ/パケットをカスタマ130a-nのサーバ138に伝達してよい。当業者であれば理解されるように、これは一例に過ぎず、ネットワーク構成要素202の他及び/又は追加の動作例も可能である。これも当業者であれば理解されるように、本明細書に記載のようにスケジューリングアプリケーション304によって実施される動作、及び、本明細書に記載のようにネットワークアプリケーション303a-nによって実施される動作は、全体として、又は部分的に、他のものによって実施されてよい。
スケジューリングアプリケーション304と任意の所与のネットワークアプリケーション303a-nとの間の通信については、一例として、これら2つのアプリケーションは、1つ以上の(例えば、2つの)共有メモリ循環キューを介して通信を行ってよい。例えば、ネットワークアプリケーション303が、変換されたメッセージをネットワークインタフェース206から第1のメモリキューに入れ、その新たなメッセージがキューに入ったことを反映する為に、キューの、例えば、インデックス/ポインタを更新してよい。同様に、スケジューリングアプリケーション304が、キューのインデックス/ポインタを監視し、キュー内に新しいメッセージがあることを認識し、そのメッセージを読み出し、例えば、そのメッセージが読み出されたことを反映する為に、インデックス/ポインタを更新してよい。同様に、スケジューリングアプリケーション304は、メッセージをネットワークインタフェース204から第2のメモリキューに入れ、その新たなメッセージが第2のキューに入ったことを反映する為に、そのキューの、例えば、インデックス/ポインタを更新してよい。同様に、ネットワークアプリケーション303が、第2のキューのインデックス/ポインタを監視し、キュー内に新しいメッセージがあることを認識し、そのメッセージを読み出し、例えば、そのメッセージが読み出されたことを反映する為に、インデックス/ポインタを更新してよい。他のネットワークアプリケーション303(これらはそれぞれ自身のキューセットを有してよい)がスケジューリングアプリケーション304と通信する場合も、同様のプロセスが用いられてよい。当業者であれば理解されるように、これは一例に過ぎず、他の通信手法/プロセスが用いられてもよい。
既述のように、ネットワーク構成要素202は、例えば、スケジューリングプロセッサ301a-nで実行されてよい管理アプリケーション304を含んでもよい。そのようなアプリケーションは、管理者が、ネットワーク構成要素202の状態を監視し、そのネットワーク構成要素を構成する為に使用してよい。例えば、ネットワーク構成要素202は、例えば、1つ以上の入出力装置を含んでよく、例えば、ディスプレイインタフェース、マウス、キーボード、タッチスクリーン、ネットワークインタフェース(リモートアクセス用)等を含んでよい。そのようなインタフェース及び管理アプリケーション304を使用することにより、例えば、管理者が、ネットワーク構成要素202の状態を監視し、そのネットワーク構成要素を構成してよい。例えば、管理者が、所与のネットワークプロセッサ302a-nに対して、所与のネットワークインタフェース206a-nの割り当て及び/又は再割り当てを行ってよい。管理者は更に、ネットワークアプリケーション303が代行してNAT/PAT変換を実施しようとするカスタマ130a-nに従って、(例えば、ネットワークアプリケーション303がその間の変換を行おうとするアドレス及び/又はポートに関して)所与のネットワークプロセッサ302のネットワークアプリケーション303a-nを構成してよい。当業者であれば理解されるように、他の方式でネットワークアプリケーションが構成されてもよい。例えば、ネットワーク構成要素202のハードウェア/ソフトウェア構成の一利点は、管理者が、例えば、所与のカスタマ130a-nの再構成(例えば、NAT/PAT構成に関する再構成、そのカスタマにどのネットワークプロセッサ302a-nを割り当てるかに関する再構成、及び/又は、そのネットワークプロセッサ302a-n及び/又はカスタマにどのネットワークインタフェース206a-nを割り当てるかに関する再構成)を、他のカスタマを一時的に切り離すことなく行うことが可能な点である。管理アプリケーション304は、例えば、管理者がネットワーク構成要素202の状態を監視できるように、IPMIサブシステムを含んでもよい。そのようなサブシステムは、管理アプリケーション304とは別個であってもよい。当業者であれば理解されるように、これらは管理機能の例に過ぎず、他/追加の機能も可能である。
ネットワーク構成要素202の更なる態様によれば、ネットワーク構成要素は、1つ以上のメモリ装置、例えば、ソリッドステートドライブを含んでもよく、ネットワーク構成要素を通って動くデータの全て(又は一部)をキャプチャし、そのデータのログをドライブに記録する1つ以上のロギングアプリケーションを含んでよい。更なる態様によれば、ロギングアプリケーションは、データをフィルタリングし、データの一部のみを保存してよく、且つ/又は、データの分析(例えば、レイテンシの計算)を実行し、そのような分析結果を保存してよい。より更なる態様によれば、ロギングアプリケーションは、データのフィルタリング(例えば、市場データ価格、完了トランザクション等の探索)及び/又はデータの分析を行い、フィルタリングされたデータ及び/又は分析結果を別のネットワークインタフェース(例えば、ネットワークインタフェース204a-n及び/又は206a-nとは異なるネットワークインタフェース)に転送してよい。ネットワーク構成要素202の外部にある他のシステム及び(カスタマ130のような)ユーザが、そのようなデータ及び/又は分析結果を受信してよく、例えば、価格に関するデータ及び/又は分析結果を受信してよい。当業者であれば理解されるように、これらはロギング機能の例に過ぎず、他/追加のロギング機能も可能である。
ネットワーク構成要素202の実施例によれば、プロセッサ301a-n及び302a-nのうちの1つ以上を実現する為に、複数(例えば、8個)のコアを内蔵するインテル(Intel)製Sandy Bridgeプロセッサが使用されてよい。例えば、所与のSandy Bridgeプロセッサにおいて、1つ以上のコアがスケジューリングプロセッサ302a-nとして割り当てられてよく、1つ以上のコアがネットワークプロセッサ303a-nとして割り当てられてよい。そのようなコアは、プロセッサ301a-n及び302a-nに関して本明細書に記載のように構成されてよく、動作してよい。ネットワーク構成要素202は、複数のSandy Bridgeプロセッサを含んでもよい。ここで、各Sandy Bridgeプロセッサについては、1つ以上のコアがネットワークプロセッサ302a-nとして割り当てられてよく、1つ以上のコアがスケジューリングプロセッサ301a-nとして割り当てられてよい(これらは、例えば、ネットワークインタフェース204a-n及び206a-nの間でメッセージを移動させる目的で、そのチップのネットワークプロセッサとともに動作するだけであってよい)。そのような構成では、ネットワークインタフェース206a-nのいずれが、Sandy Bridgeのネットワークプロセッサ(コア)のいずれに割り当てられてもよい。或いは、特定のネットワークインタフェース206a-nのみが1つのSandy Bridgeプロセッサに割り当てられ、ネットワークインタフェース206a-nの別のセットが別のSandy Bridgeプロセッサ等に割り当てられてもよい。同様に、ネットワークインタフェース204a-nのいずれが、Sandy Bridgeプロセッサのスケジューリングプロセッサ(コア)のいずれに割り当てられてもよい。或いは、特定のネットワークインタフェース204a-nのみが1つのSandy Bridgeプロセッサに割り当てられ、ネットワークインタフェース206a-nの別のセットが別のSandy Bridgeプロセッサ等に割り当てられてもよい。当業者であれば理解されるように、これらは例に過ぎず、他の構成及び他のチップセットも使用されてよい。
ネットワーク構成要素202の更なる実施例によれば、ネットワークインタフェース204a-n及び206a-nは、ホットラバ(Hotlava)製の1つ以上のネットワークインタフェースカード、例えば、Tambora 120G6、Tambora 64G6、Tambora 80G4、Tambora 64G4、及びBosavi 12G6のうちの任意の1つ以上を含むネットワークインタフェースカードによって実現されてよい。当業者であれば理解されるように、これらは例に過ぎず、他の供給元からのネットワークインタフェースカードを含む、他のネットワークインタフェースカードも使用されてよい。
ネットワーク構成要素202の更なる実施例によれば、例えば、Sandy Bridgeプロセッサ、及び、例えば、ホットラバ製ネットワークインタフェースカードは、1つのマザーボードに挿入されてよく、そのようなシステムは、Linux(登録商標)オペレーティングシステムを動作させてよい。この場合も、当業者であれば理解されるように、これらは例に過ぎず、他の構成も可能である。
当業者であれば理解されるように、ネットワーク構成要素202は、(例えば、図2及び図3において本明細書で既述のように構成されてもよいが)逆の方向で構成されてもよい。例えば、ネットワーク214にある所与のサーバ114が、1つ(場合によっては、より多く)のアドレスを別のネットワーク(例えば、ネットワーク216a)に有してよいが、他の幾つかのネットワークがネットワークインタフェース206とインタフェースすることも可能である。従って、所与のサーバ114に対して、ネットワーク構成要素202は、(本明細書で既述のように)NAT/PATとして構成されてよく、例えば、カスタマネットワーク214にあるサーバ114の1つ以上のアドレスと、ネットワーク216aにあるサーバに割り当てられたアドレスとの間でマッピングを行うNAT/PATとして構成されてよい。
本開示を、特定の実施形態及び一般的に関連付けられる方法に関して説明してきたが、当業者であれば、これらの実施形態及び方法に対する改変や置換が明らかであろう。従って、上述の例示的実施形態の説明は本開示を限定するものではない。本開示の趣旨及び範囲から逸脱しない限り、他の変更、置換、及び改変も可能である。ソフトウェア定義ネットワークを定義及び/又は有効化するルーティング装置が、様々な実施形態において、必要に応じて、データセンタ及び/又はカスタマ及び/又はサービスプロバイダに存在してよい。例えば、SDNのエッジルーティング装置がl-フロールーティングを提供してよく、カスタマ又はサービスプロバイダのスイッチ又はエッジルーティング装置がそのような機能性などを提供してよい。
実施形態によっては、ソフトウェア定義ネットワークが含まれてよい。そのようなネットワークは、本明細書に開示されているような高速ネットワーキング装置(例えば、装置202などの装置)を使用してよい。そのようなネットワークは、高度の柔軟性及び速度を有するクラウド及び/又は分散金融ネットワークを有効化することが可能である。実施形態によっては、ソフトウェア定義ネットワークは、キャリアグレードのネットワーク変換システムを含んでよい。
SDNのエンドポイントに対しては、SDNは、パケットのNAT(ヘッダ付き)を実施してよく、且つ/又は、必要に応じて、ポートレベルリダイレクト(ポートアドレス変換)をサポートしてよく、1つ以上の外部ネットワークと1つ以上の内部SDN IPゾーンとの間のプロキシとして動作してよい。この設計は、ルーティングを減らすことを支援し、外部ネットワークが変更されても下流のルーティング変更が全く不要であるようにすることを支援することが可能である。実施形態によっては、データセンタごとに、SDNが及ぶ内部SDN IPゾーンが1つあってよい。l-フローは、ソースからのアクセスが可能なIPとポートのペアとして定義されてよい。SDNは、特定のl-フローで識別されるサービスプロバイダに、ルーティング、アナリティクス、負荷分散、フェールオーバなどのサービスを提供することが可能である。
SDNは、カスタマネットワークからは、静的経路との単純なサーバ接続のように見えるかもしれない。例えば、SDNとのカスタマ接続が、ネットワーク装置202を通しての接続に関して上述されたカスタマ接続とよく似ている場合がある。他のエンドポイント(例えば、FIXエンドポイント、市場データエンドポイント、及び/又は内部サービス)が有効化されている場合、SDNエンドポイントと対面するカスタマは、これらのサービスを、(例えば、l-フローとして)カスタマネットワークによって定義された様々なポート又はIPに提示してよい。
フェールオーバ及び負荷分散は、アプリケーション層において処理されてよく、論理フロー(l-フロー)と呼ばれるIPとポートのセットごとに定義可能である。これにより、ネットワークフェールオーバをアプリケーションレベルまで持ち上げて、アプリケーションレベルのフェールオーバ及び負荷分散をきめ細かく制御することが可能になる。
SDNは、グローバルネットワークにエネルギを供給する為に使用される独自の接続層として動作することが可能である。従来のネットワークシステムと異なり、そのようなSDNは、ネットワークレベルとアプリケーションレベルの両方でシステムと対話することが可能である。エンドポイント同士の接続は、従来のサーバと同様の標準的なIPv4 TCP/IP設定により行われてよい。SDNは、いったん接続されると、l-フローと呼ばれるIPとポートのペアごとに転送、アナリティクス、負荷分散、及びフェールオーバの無数の選択肢を提供するように構成されてよい。
SDNは、実施形態によっては、エンドポイントごとに1Gbe、10Gbeのシングルモードファイバ(SMF)接続を使用してよい。当然のことながら、上述のとおり、任意のタイプの接続が様々な実施形態において使用されてよく、これらの例は非限定的である。(SDN側の)SDNエンドポイントは、外部ネットワークに適合する任意のアドレス空間にある1つ又は多数のIPアドレスにより構成されてよい。実施形態によっては、SDNエンドポイントは、各SDNエンドポイントには(少なくとも)1つの静的IPv4アドレスを割り当てなければならず、各SDNエンドポイントには(少なくとも)1つのデフォルトゲートウェイを与えなければならないという要件を有してよい。IPv4及びTCPに関する例が与えられているが、当然のことながら、他の例が任意の所望の技術、例えば、IPv6及びUDP等を使用してもよい。
SDNへの接続性及び/又はSDNからの接続性は、SDNによる、l-フローのIPとポートのペアのフルネットワークアドレス変換により、外部接続に割り当てられたIPアドレスで終わったり始まったりしてよい。
SDNエンドポイントは、接続されたユーザ/サービスプロバイダの外部プライマリ及び/又はセカンダリスイッチ又は他の構成要素に直接接続されてよい。この構成は、何らかの形態のレイテンシを減らすことを促進することが可能である。図5は、外部LANの外部スイッチに対するLUCERA SDNエンドポイント接続の一例を示す。実施形態によっては、アプリケーションサーバとSDNとの間に追加のルーティング層がない。この構成では、各エンドポイントに、外部IPプールにあるIPアドレスが割り当てられてよく、SDNエンドポイントは、従来のサーバネットワークインタフェースと同じように構成されてよい。
実施形態によっては、SDNエンドポイントは、外部のファイアウォール又はルータに接続されてよい。この構成は、上述の構成とよく似ており、異なるのは、IPアドレスがトランジットネットワークから割り当てられる点である。図6は、そのような接続の一例を示す。このトポロジは、DMZの作成、又はVLAN統合の考慮の為に展開されてよい。追加のソース経路が必要な場合(外部トランジットがフルNATを実施しない場合)は、それらもSDNエンドポイントに追加されてよい。
SDNを複数のVLANに接続する必要がある場合、実施形態によっては、上述の直接接続トポロジを採用し、各VLANにエンドポイントを追加してよい。図7は、3つの別々の802.1QタグVLANに接続するように構成されたSDNエンドポイントの一例を示す。実施形態によっては、このエンドポイントは、例えば、物理接続当たり最大1024個のVLANエンドポイントをサポートすることが可能である。SDNエンドポイントは、この、外部ネットワークに適応する柔軟性を可能にしており、ネットワーク内で単一ゲートウェイ、又はゲートウェイの集合体のいずれかであるように見なされてよい。
実施形態によっては、SDNは、キャリアグレードのネットワークアドレス変換システムとして動作可能である。SDN上の各物理エンドポイントは、物理ネットワークインタフェースにマッピングされてよく、各論理IPアドレスは、そのインタフェースに付けられてよい。図8は、SDNノードと外部インタフェースと対応する内部ファブリック接続とを示す。実施形態によっては、図8の構成要素は、上述の構成要素202のようなネットワーク構成要素に相当してよい。
実施形態によっては、SDNエンドポイントは、コアファブリックに接続する為に、フル(ヘッダ書き換え)ネットワークアドレス変換を実施してよい。l-フローごとに、NAT及び/又はPATサービスを実施及び管理する為のプロセス(及び/又はコア及び/又はプロセッサ)が1つ割り当てられてよい。各外部接続は、1つのインタフェースに直接接続されてよく、NAT層は、外部ネットワーク上でトラフィックが見えないようにしてよい。
実施形態によっては、デフォルトで、インタフェースは、PING(ICMPエコー)から到達可能であってよく、他のポートからは到達可能でなくてよい。アプリケーションがSDNから(l-フローとして)利用可能にされている場合、外部インタフェースのポートは有効化されてよい。図9は、一シナリオ例を示しており、ここでは、カスタマのエンドポイントが、ExchangeCoからの2つのサービス、即ち、ポート9999の市場データフィード、及びポート9998のFIXセッションへのアクセスを有する。これら2つのサービスは、それぞれが、IPとポートのペアで定義される別々のl-フローを有する。SDNは、ExchangeCOネットワークのフルNATを実施し、ポート9999及び9998のローカルエンドポイントにそれらのサービスを提示する。これらのポートは、必要に応じて変更されてもよい。例えば、SDNは、必要に応じて、ExchangeCOサービスを9000及び9001に提示してよい。内部では、SDNは、非ブロッキング輻輳がないファブリックを採用してよく、プライベートファブリックIPゾーンにおいて内部通信が行われてよい。実施形態によっては、(例えば、冗長大陸横断回線を含む)クロスデータセンタ接続が、エッジノードポイントとして動作し、内部l-フローをサポートすることが可能である。
実施形態によっては、SDNエンドポイントは、任意の数のl-フローへのアクセスを可能にしてよい。(IP、ポート、及び/又はプロトコルのセットとして識別されてよい)所与のサービスに対して、SDNは、サービスのアクセス、フェールオーバ、及び/又は品質を管理する為のl-フローを定義する。SDNは、これらの動作要素を、そのl-フローにアクセスするユーザからは見えないように管理することが可能である。l-フローは、進入又は退出であるとして定義されてよい。進入l-フローは、SDNの外部にあって、SDN内に提供されるサービスであってよい。退出l-フローは、SDNの内部にあって、外部エンドポイントに提供されるサービスであってよい。
図10は、進入i-フローが有効化される一例を示す。この例では、ExchangeCoのネットワークにあるA FIXエンジンが、SDNカスタマらに対し、SDNカスタマらの市場へのアクセスを提供しようとする。ExchangeCOは、このl-フローを、市場データは、IP:192.168.1.1、ポート:9999、プロトコルはTCPであり、注文セッションは、IP:192.168.1.2、ポート:9998、プロトコルはTCPであると定義する。
図11は、ExchangeCoサービスにアクセスする為の退出l-フローを有するカスタマを示す。CustomerCoがExchangeCOサービスにアクセスしようとしていて、資格に関してExchangeCoとネゴシエートし、アクセスをExchangeCoから承認された場合、SDNは、そのカスタマに対するサービスの為のl-フローを有効化する。ExchangeCOサービスは、ローカルCustomerCO LAN(又はVLAN)上に現れ(ソースIP)、CustomerCOは、実際のExchangeCOエンドポイントの詳細を知る必要がない。この抽象化により、ExchangeCoへのカスタマ接続への割り込みなどがない限り、ExchangeCOが、下流ルーティング更新、フェールオーバ、及び負荷均衡の実施を強制することなくネットワーク設計を変更することが可能になってよい。
実施形態によっては、l-フローは、ポートを変更してもよい(ポートアドレス変換)。実施形態によっては、l-フローは、クロスデータセンタファブリックをトラバースしてよい。例えば、図12の例では、CustomerCOが、流動性資産受取者として2つのFXマッチングソースにアクセスしようとし(退出l-フロー)、流動性資産提供者として2つのFXマッチングソースにアクセス使用とする(進入l-フロー)。
更なる例として、図13は、(特定のデータセンタを識別しうる)NY4の6人の流動性資産提供者と、SDNを通して接続することが必要であり、且つ、(地理的に異種であるデータセンタを識別しうる)LD4の5人の流動性資産提供者と接続することを必要とする流動性資産アグリゲータを示す。アグリゲータ側の接続性を簡略化する為に、1つのIPアドレス(ここでは10.2.1.1として示されている)で全ての送信先に到達できるものとする。送信先ごとにアウトバウンドポートが連続的に定義されてよい為、10個のエンドポイントの全てが1つのIPにおいて現れ、各ポートは論理エンドポイントにマッピングされる。
SDNは、リンクレベル及びIPレベルで障害を検出できるという点で、従来のネットワークアプライアンスのように動作可能である。例えば、図14に示される、以下の進入l-フローを定義する。
l-フローは、リンク(物理)障害又はIP障害に対するアクティブ/パッシブシナリオ及びフェールオーバにおいて動作可能である。これらのl-フローのそれぞれを確立する為に、ソケットが開かれてよい。ソケットが不通になると、いずれかのl-フローで障害状態が発生する可能性がある。プライマリソケットが不通になると、その代わりにセカンダリl-フローが使用されてよい。障害状態が発生する前にセカンダリソケットが開く為、障害が検出された後に新しい接続を確立する際に、遅延が発生しない。
このl-フローを退出として使用するカスタマは、カスタマからはネットワーキングの変更が全くないように見えながら、透過的にセカンダリパスにフェールオーバすることが可能である。このシナリオ例では、プライマリへのリンクに障害が発生すると、プライマリセッションが失敗し、l-フローがセカンダリリンクへのルーティングを開始することになる(これがFIXエンジンであれば、新たなセッションインスタンスが開始されてよい)。特に、障害検出ロジックは、退出l-フローとともにある。下流(プライマリ)での障害発生時には、退出l-フローは、IP層エラーを受信し、セッションを切断し、セカンダリを使用して接続(ステートフルなサービス)を再確立する。実施形態によっては、フェールオーバ方法は、ステートフルなエンドポイントを前提とし、障害時にはTCP再接続を登録する。
フェールオーバと負荷分散は、SDNによる取り扱いが同様であってよい。フェールオーバ及び/又は負荷分散は、進入及び/又は退出のl-フローにおいて適用されてよい。負荷分散されたサービスは、様々な方法で実施可能である。非限定的な例を2つ挙げると、ラウンドロビン(重み付き、又は重みなし)と最小接続(Least Connected)がある。
ラウンドロビン分散が採用された場合、各サーバは、それぞれの重みに応じて、順番に使用されてよい。これは、最もシンプルであり、最もよく実施される負荷分散方法と言える。ラウンドロビン重みを適用することにより、コンピュータ的によりロバストなサーバにトラフィックを振り向けることが可能である。実施態様によっては、プール内のエンドポイントの数は、例えば、1024に制限されてよく、これは、l-フローを端から端まで分散させる為の可能な「サーバ数」が最大1024であることを意味する。図15は、重み付きラウンドロビンによる2サーバ負荷分散の一例を示す。SDNエンドポイントによって実施されるラウンドロビン重み付けアルゴリズムに従って、図示された退出l-フローに入るパケットが、プライマリ又はセカンダリFIXエンジンへの2つの進入l-フローの間でルーティングされる。
最小接続負荷分散の一例では、現在接続されているセッションの数が最少であるサーバが選択される。この負荷分散方法は、計算負荷が一様でなく、接続長が可変であるサービス(例えば、データベースサービスやウェブサービス)に最適となる可能性がある。
実施形態によっては、進入及び/又は退出のl-フローに圧縮が適用されてよい。そのような圧縮は、任意の所望の形式であってよい。使用可能な圧縮の一例として、辞書型圧縮がある。そのような、使用可能な辞書型圧縮の一例として、デフレートアルゴリズムに関連する圧縮アルゴリズムがあり、例えば、zlibライブラリ圧縮アルゴリズムがある。当業者であれば理解されるように、他のタイプの圧縮アルゴリズムも様々な実施形態で使用されてよい。
圧縮は、状況によっては、パケットサイズを低減及び/又は最小化し、且つ/又は、余分なデータの送信をなくすことにより、レイテンシを減らし、且つ/又は、帯域幅を改善することに有用となりうる。これは、特に、大きなメッセージ更新及び/又はテキストベースのl-フロー(例えば、FIXメッセージングl-フロー)の場合に当てはまりうる。
実施形態によっては、圧縮及び/又は圧縮解除は、SDNレベルで行われてよい。辞書は、複数のプロセス/プロセッサ/コアの間で共有/確立されてよい。圧縮の様式や方法をプロセスに対して指示する為に、l-フローの制御を確立するAPI又は他の方法が用いられてよい。例えば、新たなl-フローとSDNエンドポイントとのSDN接続が確立されたら、所望の圧縮ルーチンに適合する圧縮用辞書が確立されてよい。辞書は、そのl-フローへのアクセスを有するSDNエンドポイントと共有されてよい。そのl-フローの1つのエンドポイントに入るデータは、圧縮ルーチンに従って圧縮されてよい。そのl-フローから出るデータは、圧縮ルーチンに従って圧縮解除されてよい。エンドポイントにおけるプロセスは、(例えば、構成要素202内にあるようなプロセッサ/コアで命令を実行することにより)安定化されたルーチンに従って圧縮及び/又は圧縮解除を実施してよい。
図16は、l-フローの端から端までの圧縮のインスタンス例を示す。この例では、データのチャンク(例えば、2048バイト、又は他の幾らかのデータ量)ごとに、l-フローの送信側エンドポイントと受信側エンドポイントの両方で辞書エントリが作成される。辞書の作成は、事前準備方式や事前共有方式ではなく同時進行方式で行われる。辞書エントリを確立する方法は、両エンドポイントが同じ辞書エントリを生成するように、エンドポイント全体にわたってあらかじめ規定されてよい。他の実施態様では、同時進行辞書ではなく事前準備辞書又は事前共有辞書を使用してよい。
特定のデータチャンクの最初の転送時に、そのチャンクに対応する辞書エントリが送信端で作成される。エントリの作成の為にパフォーマンスヒットが発生する可能性がある。これは、辞書エントリを作成せずに単純にデータを送信する場合に比べて、追加の処理が必要になる場合がある為である。この例では、受信エンドポイントにおいて、第1のチャンクはABCであってよい。作成された辞書エントリは、ABCを第1のエントリとして確立する。第2のデータチャンクはDEFであってよい。作成された辞書エントリは、DEFを第2のエントリとして確立する。データは、ABCDEFとして他方のエンドポイントに送信され、他方のエンドポイントでは辞書エントリのマッチングが行われる。
次の転送時に、その特定のデータチャンクが、より小さいサイズに圧縮されてよい。例えば、2048バイトのデータチャンクが、辞書エントリを識別する10バイトの参照に圧縮されてよい。この例では、2つのチャンクDEF及びHIJを含む新たなデータ列が受信されると、受信側l-フローは、DEFチャンクを、第2の辞書エントリへの参照に変換し、HIJチャンクに対応する新たな辞書エントリを第3のエントリとして作成する。他方のl-フローエンドポイントに送信されたデータは、第2の辞書エントリ及びHIJチャンクへの参照ポインタである。他方のエンドポイントでの受信が行われると、このエンドポイントは、第2の辞書エントリをルックアップして、DEFチャンクを再作成し、完全なDEFHIJ文字列を作成する。他方のエンドポイントは又、HIJチャンクに対応する新たな辞書エントリを作成する。
当然のことながら、データ例のサイズは非限定的な例として与えられており、必要に応じて任意のサイズの辞書参照及び/又はチャンクが使用されてよい。
実施形態によっては、進入及び/又は退出のl-フローに暗号化が適用されてよい。そのような暗号化は、任意の所望の形式であってよい。暗号化は、インラインで適用されてよい。例えば、暗号化は、SSL暗号化を含んでよい。暗号化は、TLS暗号化を含んでよい。プロセス/プロセッサ/コアは、l-フローごとに同じ鍵又は異なる鍵(例えば、秘密鍵及び/又は公開鍵)を適用してよい。例えば、l-フローの一方のエンドポイントに入るデータが、(例えば、公開鍵を使用して)暗号化されてよい。実施形態によっては、データは、暗号化された形態でl-フローから出てよく、送信先によって(例えば、秘密鍵を使用して)復号されてよい。実施形態によっては、データは、l-フローの他方のエンドポイントから出る際に、そのエンドポイントによって(例えば、秘密鍵を使用して)復号されてよい。異なるl-フローが、異なる1つの鍵及び/又は複数の鍵を使用して、同様に暗号化及び復号されてよい。サポートされることが可能な暗号化アルゴリズム及び/又は鍵の幾つかの例として、AES128-SHA、AES256-SHA、RC4-MD5等がある。AESベースの鍵の場合は、低レイテンシ且つ高スループットの伝送の為に、エンドポイントがインテルのAES-NI命令セットを実装してよい。暗号化の負担をSDNに委ねることにより、分析アプリケーション(例えば、パケットキャプチャ、アナリティクス等)がトラフィックに対して動作することが可能になってよい。他の実施形態は、暗号化の負担をSDNに委ねる代わりに、送信元及び/又は送信先による暗号化を含んでよい。そのような実施形態では、データの内容がSDNにとって未知である場合があり、これによって、分析アプリケーションによっては利用できない場合がある。又、分析アプリケーションによっては、暗号化されたデータに対して干渉することなく動作可能な場合があり、且つ/又は、動作を可能にする為に送達後報告システム(post-delivery reporting system)を使用する場合がある。
実施形態によっては、進入及び/又は退出のl-フローに対してアナリティクスアプリケーションが適用されてよい。実施形態によっては、l-フローアナリティクスは、パケットヘッダに対してのみ動作してよい。そのようなアナリティクスは、暗号化及び/又は圧縮の負担をSDNに委ねるかどうかにかかわらず、分析が実施されることを可能にしてよい。又、実施形態によっては、パケットキャプチャメカニズムのような、ペイロードのアナリティクスを含んでよい。処理はインラインで動作可能であり、従って、SDNをトラバースするデータパケットに干渉しないでよい。そのような処理は、パケットヘッダをアナリティクス用のプロセッサ、コア、又はプロセスのバッファ又はキューに入れることにより、実施されてよい。そのバッファは、ルーティング及び/又は送信の処理を実施するプロセス、プロセッサ、又はコアを有する共有メモリ空間であってよい。例えば、ヘッダ/データパケットがSDNエンドポイント又はSDNの他のノードを通って処理された後、パケットヘッダがリングバッファ又は他のキューイングメモリの一部分に置かれて、アナリティクスプロセスによる処理が行われてよい。アナリティクス処理は、SDNルーティングプロセス自体とは切り離されて行われてよい。この構造は、送信後分析がSDNパケットのフローに干渉することなく行われることを保証しうる。
アナリティクス情報は保存されてよく、履歴照会が可能であってよい。そのような照会は、SDNに接続されている装置から、非ルーティングシステム、例えば、SDNを通るデータのルーティングに関与していないコンピューティングシステムによって運用されているプロセッサ又はデータベースに対して実施されてよい。様々な時間長の照会に対して、様々なレベルの細分性が維持されてよい。様々な時間長の照会に対して、様々なメトリクスが維持されてよい。l-フローに関するアナリティクスとして提案されてよいメトリクスの例として、帯域幅、エラー、及び/又はレイテンシの情報があってよく、例えば、帯域幅(ビット)、スループット(パケット数)、TCP再送信(総パケット数のうちのパーセンテージ)、TCP再送信(パケット数のうちの数)、TCPの順序どおりでないパケット(総パケット数のうちのパーセンテージ)、TCPの順序どおりでないパケット(パケット数のうちの数)、TCPアクティブフロー、アプリケーションラウンドトリップ時間、TCPハンドシェイクレイテンシ等があってよい。アナリティクス情報は、ウェブソケット経由でストリーミングされてよく、且つ/又は、任意の所望の方法で送達されてよい。
実施形態によっては、SDN及び/又はl-フローのパフォーマンスに関する更なるアナリティクスが利用可能であってよい。SDNを通って伝送されたデータに関するアナリティクスデータを算出する為に、SDNは、数百、数千、数万等の遠隔計測ポイントを設けてよい。例えば、SDNを通る任意の経路に沿う各ホップ又はノードが、遠隔計測ポイントとして動作可能である。そのような遠隔計測ポイントによって収集可能な任意の情報から、カスタムメトリクスがカスタマによって定義されてよい。更なるメトリクスの例として、SNMPメトリクス、Statsdメトリクス、Kstatsメトリクス等があってよい。
実施形態によっては、ヘッダだけを分析するよりもむしろ、データパケット全体が分析されてよい。ヘッダのキャプチャ及び/又は分析と、パケットのキャプチャ及び/又は分析の動作は同様であってよい。
図17及び図18は、実施形態によっては使用可能である、パケット及び/又はヘッダのキャプチャ及び/又は分析の構成の構造例を示す。そのような構成は、キャプチャされたパケット及び/又はパケットヘッダの分析を可能にしてよい。キャプチャメカニズムは、l-フロー内の仮想タップとして編成される。仮想タップは、必要に応じてパケット情報を流すネットワークパケットブローカを実施する。
リングバッファなどのメモリ空間は、図17に示されるように、2つのプロセス/プロセッサ/コアの間で共有されてよい。例えば、1つのプロセス/プロセッサ/コアが、l-フローに関連するルーティングを操作してよい。別のプロセス/プロセッサ/コアが、SDNのパケットキャプチャ及び/又は他のアナリティクス又は機能を操作してよい。パケットはバッファに入れられて、両方のプロセス/プロセッサ/コアによって処理されてよい。実施形態によっては、両方のコアがバッファの任意の構成要素にアクセスして、バッファ内のパケットを処理してよい。実施形態によっては、ルーティング又はl-フロープロセス/プロセッサ/コアが空間の第1の集合にアクセスしてよく、パケットキャプチャプロセス/プロセッサ/コアが空間の別の集合にアクセスしてよい。空間の第1の集合は、空間の第2の集合より優先度が高くてよい。例えば、一実施形態では、リングバッファ内の最後の空間が、リングバッファ内で第1の空間になる新しいデータによって上書きされる前に、パケットキャプチャプロセス/プロセッサ/コアがその最後の空間にアクセスしてよい。そのような実施形態では、パケットキャプチャプロセス/プロセッサ/コアがパケットに作用することを許可される前に、ルーティング又はl-フロープロセス/プロセッサ/コアに、パケットを処理する為の第1の優先度が与えられてよい。実施形態によっては、パケットキャプチャプロセス/プロセッサ/コアが、バッファへのルーティング又はl-フローアクセスに割り込みをかけることに限定されてよいが、ルーティング又はl-フロープロセス/プロセッサ/コアは、パケットキャプチャプロセス/プロセッサ/コアに割り込みをかけることを許可されてよい。このようにして、ルーティングが常に最重要であるとされ、レイテンシ又はデータ転送が最小化される。
実施形態によっては、パケットキャプチャプロセス/プロセッサ/コアが、データを共有メモリからライタバッファ(例えば、別のリングバッファ)にコピーしてよい。そのようなバッファは任意のサイズであってよい。サイズの一例として、4MBバッファであってよい。バッファは、ディスクに書き込まれるべくキューイングされるか、他の形式で分析ツールの作用を受けるデータを記憶してよい。実施形態によっては、パケットキャプチャプロセス/プロセッサ/コアが、キャプチャされたパケットをコレクタエージェント又はコレクタプロセスに送信するか、他の形式で、パケットを、低優先度の送信プロセスによる送信の為にキューイングしてよい。
実施形態によっては、SDNのコアルーティング構成要素から離れたところで、キャプチャされたパケットのキャプチャ後処理が行われてよい。例えば、データの送信及び/又はルーティングに関連する機能を全く有しないプロセッサによって行われてよい。例えば、コレクタエージェントが、そのような非ルーティングプロセッサ上で動作してよい。図18は、SDNのルーティングから離れたところでのそのようなコレクタエージェントの動作及び後処理を示す。情報を1つの場所から別の場所にコピーすることを、信頼性の高い方法で行うことにより、データの保全性を維持することが可能である。例えば、信頼性の高い複製を保証するために、RAFTコンセンサスアルゴリズムが使用されてよい。
アナリティクスがパケットに関する情報を適正に再作成又は分析できるように、パケットには、信頼される時刻ソースによるタイムスタンプが付けられてよい。このタイムスタンピングは、ヘッダの一部であってよい。タイムスタンピングには、GPS又はCDMAのクロック源が使用されてよい。このタイムスタンピングは又、注文優先順位(例えば、SDNの交換サービスプロバイダにおける価格時間優先順位)の決定に使用されてもよい。
実施形態によっては、キャプチャされたパケットがメッセージキューにブロードキャストされてよく、メッセージキューは、そのキューをサブスクライブする全てのアプリケーションが、キャプチャされたパケットに作用することを可能にする。例えば、コレクタエージェントが、受信されたパケットをメッセージキューにプッシュしてよい。各l-フローには、メモリキュー内のチャネルが割り当てられてよい。従って、(例えば、エンドポイント、SDN内のノード等において)特定のl-フローからキャプチャされたパケットが、割り当てられたチャネルにおいてブロードキャストされてよい。アプリケーションが、特定のチャネルのデータをリスンし、必要に応じて、そのデータに作用してよい。
初期後処理タスクが、メッセージキューにおいてパブリッシュされたl-フローローファイル出力をサブスクライブしてよい。初期後処理タスクは、キューデータにパブリッシュバックしてよく、キューデータは、ローパケットキャプチャから所望のフォーマットに再フォーマットされる。フォーマットの一例として、PCAPフォーマットがある。そのようなフォーマットされたデータは、必要に応じて、PCAP分析アプリケーション(例えば、Wireshark、TCPFlow)によって消費されてよい。フォーマットの一例として、<date><l-flow uuid><GMTSecond><data>があってよい。初期後処理タスクは、他のタスクの前に動作してよい。初期後処理タスクの動作は、(例えば、フォーマットされた再パブリッシュ済みデータにおいてl-フローuuidタグを使用することにより)データをチャネルに割り当ててよい。
フォーマットされたデータがメッセージキューにおいてパブリッシュされたことに対する応答として、必要に応じて、後処理エンジンがデータに対して作用してよい。例えば、特定のl-フローからのパケットに対してアナリティクスを与える為に(例えば、APIを通して)後処理エンジンが割り当てられてよい。そのl-フローのuuidがタグ付けされたパケット、又は他の形式でメッセージキューのそのl-フローチャネルにあるパケットが現れたら、後処理エンジンは、そのパケットを分析するように動作してよい。
実施形態によっては、後処理エンジンは、ファイルを記憶するように動作してよい。そのような記憶装置は、必要に応じて、例えば、長期又は短期の記憶装置であってよい。データは、gzip圧縮され、インデックスを付されて、任意の所望の記憶媒体に記憶されてよい。後処理エンジンは、l-フロー再生アクティビティを提供するように動作してよい。パケットは、後処理において順序がずれて受信されても、パケットのタイムスタンプに基づいて再配列されることにより、正確な情報を提供することが可能である。後処理は、キャプチャされたパケット及び/又はヘッダに対して任意の所望のアナリティクス分析を実施する為に行われてよい。
可能なSDN機能性として多数の例があり、例えば、l-フロー圧縮、暗号化、パケットキャプチャ、アナリティクスなどの機能性があり、これらは、実施形態によっては、様々に組み合わされて提供されてよい。当然のことながら、そのような機能性の例は非限定的である。
図4は、実施形態によっては実施可能なSDNの別の例を示す。この例では、4つのSDNエンドポイント401、403、405、及び407(これらは前の図のカスタマ130に対応してもしなくてもよい)が、2つのSDNネットワーク装置202A及び202Bを通してSDNに接続されているように示されている。各ネットワーク装置は、SDNデータセンタ411及び413という別々のデータセンタにサービスを提供する。これらのデータセンタ同士はSDNファブリックを通して接続されてよく、SDNファブリックは、内部ネットワーキング構成要素及び装置415として図示されている。各データセンタは、417及び419で示される内部SDNエンドポイント及び/又は他のサービスプロバイダを有するように図示されている(例えば、これらは、前の図の114のような構成要素に対応してもしなくてもよい)。当然のことながら、この例は、実施形態によっては何らかの可能性がある機能性及び/又は構成を示す非限定的な例として与えられている。実施形態によっては、別の構成、構成要素、機能性等を有してよい。
クラウドベース且つ/又は分散型の高速取引ネットワークでは、SDNを通しての取引を促進する為に、様々なエンドポイント及び/又は参加者が他のエンドポイント及び/又は参加者にサービスを提供してよい。例えば、非限定的なセットアップ例として、エンドポイント405及び407は、市場データサービスをSDN参加者に提供してよく、エンドポイント401は、交換データサービスをSDN参加者に提供してよく、エンドポイント403は、SDNの分散型サービスを利用する取引エンティティであってよい。
エンドポイント403のカスタマが、エンドポイント405及び407のそれぞれへの市場データl-フローにアクセスしてよく、これは、エンドポイント403向けのそれらのサービスに対してSDNから割り当てられたIPアドレスとポートの組み合わせにアクセスすることによって行われる。エンドポイント405及び407のサービスがSDNを通してエンドポイント403のカスタマに返信することにより、市場データ情報が提供されてよい。同様に、エンドポイント403は、SDNを通してエンドポイント401と通信することにより、取引コマンド(例えば、ビッド、オファー)を提供してよい。
エンドポイント417のような内部サービスは、外部エンドポイントと同様にサービスを提供してよい。例えば、内部サービスは交換機能性を提供してよい。その内部サービスは、外部サービスと同様に(例えば、ポートとIPのペアによって)アクセスされてよい。実施形態によっては、内部エンドポイントへのアクセスも外部エンドポイントへのアクセスも同一であってよい為に、(例えば、ポート及び/又はIPアドレス、及び/又はAPIコマンドが異なっても)どちらがアクセスされているかをエンドポイントが認識しない場合がある。
これらのエンドポイントのいずれかでネットワーク変更があれば、それはSDNによるものと考えられてよい。SDNに接続されている構成要素は、SDNに接続されている他の構成要素からは、1つのネットワーク空間のように見える場合がある。しかしながら、これらの構成要素は、実際には、異種として接続されてよく、物理的に別々であってよい。SDNは、これらの物理的差異を抽出することにより、エンドポイント同士が互いを、接続された装置として論理的に見ることを可能にしてよい。この構成により、これらのSDN接続されたサービスからSDN接続された取引エンティティへ市場データが高速且つ/又は低レイテンシで伝達されることが可能になってよい。
SDNの機能性を促進する為に、構成要素419のようなSDNの一構成要素が、SDNの各構成要素に対する制御を行ってよい。例えば、制御装置419が、SDNによって回復されたパケットをどのようにルーティング及び/又は処理するかを、SDNの構成要素に指示してよい。例えば、コア302及び/又はアプリケーション303が、SDNの必要に応じて、データに応答する(例えば、SDNの構造に応じたルーティングを行う、適宜無視する、必要であれば暗号化又は圧縮する、必要であれば分析及び/又はキャプチャを行う)ように制御されてよい。
例えば、カスタマ403の場合、SDNは、エンドポイント401、405、及び407のそれぞれへの経路を有効化するように、ネットワーク装置202A内のカスタマ403専用コアで動作するネットワークアプリケーションを制御してよい。他のエンドポイントへの経路は、SDN制御装置により、そのカスタマに対しては無効化されてよい。それらの経路は後で開かれてよく、且つ/又は、開いている経路が後で閉じられてよい。例えば、新しい交換システムがSDNに接続された場合、そのシステムへの新しい経路が、カスタマからアクセス可能になるIPとポートのペアにおいて確立されてよい。別の例として、カスタマが市場データの購読料を支払わない場合、市場データエンドポイントがアクセス不能になってよく、403のカスタマに対して経路が開かなくなってよい。制御構成要素419は、そのような経路変更に関する様々な入力を受信し、そのようなネットワーク変更に従ってパケットを処理するように、コア302A上の303Aのようなアプリケーションを制御してよい。
別の例として、カスタマは、サービスへのアクセスの為に、データ暗号化、データ圧縮、データアナリティクス、パケットキャプチャ等を要求してよい。そのような要求は、制御装置419を通して行われてよく、且つ/又は、ネットワークアプリケーション(例えば、303A)によりアクセス可能なAPIを通して直接行われてよい。このアプリケーションは、その後、その要求に従って、パケットを処理してよく、且つ/又は、処理するように制御されてよい。
暗号化、圧縮、負荷分散等のようなサービスの制御及び/又は適用は、様々な場所で、且つ/又は、様々なエンティティによって行われてよい。例えば、カスタマが、特定のl-フローにおける市場データ源との通信を圧縮するように、SDNのAPI(例えば、SDN制御構成要素419及び/又は構成要素220のコア/アプリケーション)に指示してよい。SDNは、データがSDNを通過する際に、要求された圧縮をデータに適用するように、(例えば、SDN(例えば、l-フローの各端部にあるコア/アプリケーション)のAPI間の通信により)SDNの構成要素を制御してよい。そのような圧縮は、実施形態によっては、l-フローのエンドポイントからエンドポイントに適用されてよい。又、実施形態によっては、そのような圧縮は、(例えば、SDNファブリック内の)l-フローのホップに適用されてよい。当然のことながら、暗号化の機能性は、l-フローに対して使用される暗号化を識別するエンドポイントと、識別された暗号化を適用するように動作する、SDNの1つ以上の構成要素とで同様に動作してよい。
別の例として、l-フローでの負荷分散が、サービスプロバイダからの指示によって制御されてよい。例えば、交換サービスを提供する退出l-フローが、負荷分散がラウンドロビン方式で行われるべきであることを(例えば、SDN制御装置又はSDNの他の構成要素(例えば、構成要素220のような装置においてルーティングを制御するコア又はアプリケーション)に対するSDN APIを使用することにより)識別してよい。SDNの1つ以上の構成要素が、識別された負荷分散を促進するように制御されてよい。例えば、交換機に接続されたコアが、負荷分散の決まったやり方に従って、そのコアに到達する他のあらゆるパケットを別の送信先にルーティングするように制御されてよい。負荷分散の処理はSDNが行うので、サービスのユーザ、更にはサービス自体が、ネットワークルーティングの実際の調整内容について認識していなくてよい。
別の例として、アナリティクス及び/又はパケットキャプチャが、l-フローレベルで同様に適用及び/又は制御されてよい。エンドポイントは、特定のl-フローに所望の分析及び/又はキャプチャが適用されることを識別することが可能である。SDNは、所望のキャプチャ及び/又は分析をどのように、且つ/又は、どこに適用するかを決定してよい。例えば、サービスをSDNに接続するコアが、パケットのキャプチャ、及び/又はパケットへの分析の適用を行うように動作してよい。別の例として、サービスを使用するエンドポイントのコアが、サービスのユーザのアナリティクパケット及び/又はキャプチャパケットをパケットに適用するように動作してよい。SDNは、(例えば、パケットがSDNを通過する際に特定の特徴を有するパケットに対してアクションを実施するよう、コア/アプリケーションに指示することにより)どこでどのようにしてそのキャプチャ及び/又は分析を適用するかを決定し、エンドポイントからの要求に応じてそれを適用するようにコアを制御してよい。
この場合も、当然のことながら、これらの例、構造、及び機能性は、非限定的な例としてのみ与えられている。
以下のセクションは、本出願を解釈することへのガイドを提供する。
I.用語
用語「製品」は、明示的に別段の定めがない限り、任意の機械、製造品、および/または組成物を意味する。
用語「プロセス」は、明示的に別段の定めがない限り、任意のプロセス、アルゴリズム、方法等を意味する。
各プロセスは(方法、アルゴリズム、または他の方法で呼ばれようが)1つまたは複数のステップを固有に含み、したがってプロセスの「ステップ(stepまたはsteps)」へのあらゆる言及は、用語「プロセス」または同様の用語の単なる記述において固有の先行詞を有する。したがって、プロセスの「ステップ(stepまたはsteps)」への請求項の中でのいかなる言及も十分な先行詞を有する。
用語「発明」等は、明示的に別段の定めがない限り、「本願の中で開示する1つまたは複数の発明」を意味する。
用語「一実施形態」、「実施形態(embodiment、embodiments)」、「実施形態(the embodiment、the embodiments)」、「1つまたは複数の実施形態」、「一部の実施形態」、「特定の実施形態」、「ある実施形態」、「別の実施形態」等は、明示的に別段の定めがない限り、「発明の(全てではないが)1つまたは複数の実施形態」を意味する。
発明の「改変形態」という用語は、明示的に別段の定めがない限り本発明の一実施形態を意味する。
「表示」という用語は、極めて広い意味で使用される。物の「表示」は、当該物を特定するために使用可能な全てのものを含むと理解されたい。
物の表示は、当該物を特定する(例えば、ウィジェットに付与されたシリアルナンバーによって当該ウィジェットを特定することや、ウィジェットの1つ以上の特徴によって当該ウィジェットを特定すること)ための電子メッセージを含み得る。物の表示は、物の計算や参照(例えば、ウィジェットがその一部である機械を特定する情報であって、当該ウィジェットを特定するために利用可能な情報)に利用可能な情報を含み得る。物の表示は、物に関係する他の物を特定し得る(例えば、物の特徴、物の名前、物に関係する物の名前)。物の表示は、物に関係する他の物を特定しない可能性もある(例えば、英語の冠詞「a」をウィジェットを特定するために解釈するように構成されたコンピュータシステムにおいて、冠詞「a」がコンピュータシステムの当該ウィジェットを特定するために使用され得る)。物の表示は、物のサイン、現象、及び又は象徴であってもよい。物の表示は、例えば、コード、参照、例示、リンク、信号、及び又は識別子を含み得る。物の表示は、物を示し、記述し、及び又は関連する情報を含み得る。
物の表示を変換したものが、当該物の表示であってもよい(例えば、暗号化された物の表示は、当該物の表示となり得る)。物の表示は、当該物自体、当該物の複製物、及び又は当該物の一部を含み得る。物の表示は、当該表示を理解するために構成されていない物にとっては意味をなさないものであり得る(例えば、人間は、ウィジェットを表示する冠詞「a」を理解しないかもしれないが、その場合においても、コンピュータシステムは冠詞「a」から当該ウィジェットを特定することが可能であるため、それは当該ウィジェットの表示になり得る)。物の表示が当該物を特定するために使用され得るという事実は、当該物や他のものが特定されたことを意味するものではないことを理解されたい。物の表示は、特に断りがない限り、如何なる数字の表示をも含み得る。物の表示は、その他の物の表示を含み得る(例えば、多くの物を示す電子メッセージ)(表示は、請求項の語句として極めて広い語句として使用可能である。例えば、「金融商品の表示を受け取る」)。
「示す」という語句は、(1)語句、シンボル、又はその他のもののように、明示する、特定する、表す、又は表示すること、(2)いくつかの語句、特徴、シンボル、その他のものにより、明示する又は特定すること、(3)絵と同様に、似たものを描写する、又は描く、又は示すこと、若しくは、(4)サイン又はシンボルとして機能すること、を意味する。
ある実施形態を説明する際の「別の実施形態」への言及は、明示的に別段の定めがない限り、言及した実施形態が別の実施形態(例えば言及した実施形態の前に記載した実施形態)と相互排除的であることを示すものではない。同様に、2つ(又はそれ以上)の実施形態が参照されているという単なる事実は、これらの実施形態が相互に排他的であることを暗示するものではない。
発明の1つの実施形態は、当該発明の1つ以上の他の実施形態を含み、包含し、あるいは内包し得る。例えば、要素a,b,cを備える第1実施形態は、要素a,b,c、dを備える第2実施形態や、要素a,b,c、eを備える第3実施形態を含み得るものである。同様に、これら第1、第2、第3実施形態の各々は、要素a,b,c、d、eを備える第4実施形態を含み得る。
用語「含む」、「備える」、およびその変化形は、明示的に別段の定めがない限り「含むが、必ずしもこれだけに限定されない」ことを意味する。したがって、例えば「この機械は赤いウィジェットと青いウィジェットを含む」という文は、その機械が赤いウィジェットと青いウィジェットを含み得るが、1つ以上の他のアイテムを含んでもよいことを意味する。
用語「からなる」、およびその変化形は、明示的に別段の定めがない限り「含むこと、及びまたそれに限定される」ことを意味する。したがって、例えば「この機械は赤いウィジェットと青いウィジェットからなる」という文は、その機械が赤いウィジェットと青いウィジェットを含むが、他に何も含まないことを意味する。
用語「構成する」、およびその変化形は、明示的に別段の定めがない限り「構成部品、コンポーネント、または部材をなす」ことを意味する。したがって、例えば「赤いウィジェットと青いウィジェットが機械を構成する」という文は、その機械が赤いウィジェットと青いウィジェットを含むことを意味する。
用語「排他的に構成する」、およびその変化形は、明示的に別段の定めがない限り「構成部品を排他的になし、唯一のコンポーネントであり、または唯一の部材である」ことを意味する。したがって、例えば「赤いウィジェットと青いウィジェットが機械を排他的に構成する」という文は、その機械が赤いウィジェットと青いウィジェットからなること(つまり、他に何も含まないこと)を意味する。
用語「ある(a、an)」および「その(the)」は、明示的に別段の定めがない限り「1つまたは複数の」を示すものである。従って、例えば、「ウィジェット」との語句は、明示的に別段の定めがない限り、1つ以上のウィジェットを意味する。同様に、「ウィジェット」との語句の後における「前記ウィジェット」との語句は、「1つ以上の前記ウィジェット」を意味する。このため、「前記」との語句は、先行詞を有する特定の語句を示すものであり得る。例えば、「特定の1つの特徴」との語句の後に「前記特徴」の語句がある場合、「前記特徴」との語句は、前述した「特定の1つの特徴」を示すものと理解されたい(「特定の1つの特徴(a specific single features)」における冠詞「a」は、「1つ」の特定の1つの特徴を意味し、1つ以上の特定の1つの特徴を意味するものではない。
用語「複数」は、明示的に別段の定めがない限り「2つ以上」を意味する。
用語「本明細書では」は、明示的に別段の定めがない限り「参照により援用され得るあらゆるものを含む本願では」を意味する。
複数のもの(列挙されたものの一覧など)を修飾する場合、語句「のうちの少なくとも1つ」は、明示的に別段の定めがない限り、それらのものの1つまたは複数の任意の組合せを意味する。例えば語句「ウィジェット、車、および車輪のうちの少なくとも1つ」は、(i)ウィジェット、(ii)車、(iii)車輪、(iv)ウィジェットと車、(v)ウィジェットと車輪、(vi)車と車輪、または(vii)ウィジェット、車、および車輪のいずれかを意味する。複数のものを修飾する場合、語句「のうちの少なくとも1つ」は、複数のもの「のそれぞれのうちの1つ」という意味ではない。例えば、「少なくとも1つのウィジェット、車、及び車輪」との語句は、「1つのウィジェット、1つの車、及び1つの車輪」を意味するものではない。
何かの数量を示すための基数として用いる場合(例えば1つのウィジェット、2つのウィジェット)、「1つ」、「2つ」等の数的用語は、その数的用語が示す数量を意味し、その数的用語が示す数量以上を意味するものではない。例えば、語句「1つのウィジェット」は「少なくとも1つのウィジェット」という意味ではなく、したがって語句「1つのウィジェット」は例えば2つのウィジェットを範囲に含まない。
語句「基づく」は、明示的に別段の定めがない限り「だけに基づく」という意味ではない。つまり、語句「基づく」は、「だけに基づく」および「少なくとも基づく」の両方を含む。語句「少なくとも基づく」は、語句「少なくとも部分的に基づく」と等価である。例えば、語句「要素A」が要素B及び要素Cに基づいて算定されることは、要素AがBのC倍(つまり、A=B×C)の製品として算定される実施形態、要素AがBとCの合計(つまり、A=B+C)により算定される実施形態、要素AがBのC倍のD倍により算定される実施形態、要素AがBの平方根とCとDの合計により算定される実施形態等を含む。
用語「相当する」および同様の用語は、明示的に別段の定めがない限り排他的でない。例えば用語「相当する」は、明示的に別段の定めがない限り「だけに相当する」という意味ではない。例えば、語句「このデータはクレジットカード番号に相当する」は、「このデータはクレジットカード番号だけに相当する」および「このデータはクレジットカード番号に相当し、何か他のものにも相当する」の両方を含む。
本明細書では用語「それにより」は、当該用語「それにより」の前に明確に説明した何らかの事項の意図した結果、目的、または成行きだけを表す節または1組の他の語の前に置くために専ら用いる。したがって、用語「それにより」を請求項の中で用いる場合、用語「それにより」が修飾する節または他の語は、その請求項の特定のさらなる限定は設けず、または他の方法でその請求項の意味もしくは範囲を制限しない。
用語「例えば(e.g.)」、「等(such as)」および同様の用語は、「例えば(for example)」を意味し、よってそれらが説明する用語または語句を限定することはない。例えば、「コンピュータは、インターネットを介してデータ(例えば命令、データ構造)を送る」という文の中で、「例えば」という用語は、「命令」が、コンピュータがインターネットを介して送ることができる「データ」の一例であることを説明し、「データ構造」が、コンピュータがインターネットを介して送ることができる「データ」の一例であることも説明する。ただし、「命令」も「データ構造」も単に「データ」の例に過ぎず、「命令」および「データ構造」以外の他のものも「データ」であり得る。
用語「それぞれの」および同様の用語は、「個々に見る」ことを意味する。したがって、2つ以上のものが「それぞれの」特性を有する場合、それぞれのかかるものが独自の特性を有し、それらの特性は互いに異なることができるが同じでもよい。例えば、「2つのマシンの各々が、それぞれの機能を有する」という語句は、当該2つのマシンのうちの第1のマシンがある機能を有し、当該2つのマシンのうちの第2のマシンも同様にある機能を有することを意味する。第1のマシンの機能は、第2のマシンの機能と同じでも同じでなくてもよい。
用語「すなわち」および同様の用語は「つまり」を意味し、よってそれが説明する用語または語句を限定する。例えば、「コンピュータは、インターネットを介してデータ(すなわち命令)を送る」という文の中で、「すなわち」という用語は、コンピュータがインターネットを介して送る「データ」が「命令」であることを説明する。
数値範囲は、明示的に別段の定めがない限り、その範囲内の数の整数および非整数を含むものとする。例えば「1から10」までの範囲は、1から10の間の整数(例えば1、2、3、4、...9、10)、および非整数(例えば、1.0031415926、1.1、1.2、...1.9)を明確に含むように解釈すべきである。
2つ以上の用語または語句が(例えばそれらの用語または語句が同義であるという明確な記述により)同義の場合、そのようなある用語又は語句の例は、別のそのような用語又は語句の例が異なる意味を有さなければならないことを意味するものではない。例えば、ある記述が「含む」の意味を「含むがこれだけに限定されない」と同義にする場合、単に「含むがこれだけに限定されない」という語句を用いることは、「含む」という用語が「含むがこれだけに限定されない」以外の何かを意味するわけではない。
II.決定
用語「決定する」およびその文法上の変化形(例えば価格を決定する、値を決定する、一定の基準を満たすオブジェクトを決定する)は、極めて広い意味で用いる。用語「決定する」は多岐にわたる行動を包含し、したがって「決定する」は、計算、演算、処理、導出、調査、探索(例えば表、データベース、または他のデータ構造の探索)、電子フォーマットやデジタル表示での表現、確認等を含むことができる。また、「決定する」は、受け取ること(例えば情報を受け取ること)、アクセス(例えばメモリ内のデータにアクセスすること)等を含むことができる。また、「決定する」は、解決、選択、選定、確立等を含むことができる。
用語「決定する」は確実性または絶対的な精度を含意せず、したがって「決定する」は推定、推論、予測、推測、平均化等を含むことができる。
用語「決定する」は、数学的処理を実行しなければならないことを意味せず、数値的方法を使用しなければならないことを意味せず、アルゴリズムが用いられることも意味しない。
用語「決定する」は、ある特定のウィジェットを使用しなければならないことを意味しない。例えば、コンピュータが必ずしも決定を行う必要はない。
用語「決定する」は、「算定する」を含み得る。用語「算定する」は、1以上の計算を実行することを含むと理解されたい。計算は、コンピュータ処理、演算処理、及び又は推論を含み得る。計算は、コンピュータ装置によって実行され得る。例えば、何かを計算することは、コンピュータプロセッサによってアルゴリズムをデータに適用することや、当該プロセッサの出力として何かを生成することを含み得る。
用語「決定する」は、「参照する」を含み得る。用語「参照する」は、例えば何かに対する、1つ以上の参照、を行うことを含み得ると理解されたい。参照は、問い合わせ、アクセス、選択、選ぶこと、読み取ること、及び又は、探索することを含み得る。参照する行為は、コンピュータ装置によって実行され得る。例えば、何かを参照することは、当該何かが記録されたメモリ一をプロセッサによって読み取ることを含み得る。
用語「決定する」は、「受け取る」ことを含み得る。例えば、何かを受け取ることは、何かを取り入れることを含み得る。いくつかの実施形態において、受け取ることは、何かを取り入れるために実行される行為、例えば、何かを取り入れるネットワークインターフェースを操作すること、を含み得るいくつかの実施形態において、受け取ることは、何かを取り入れるために実行される行為、例えば、直接的メモリ書き込みや配線回路に取り入れるために実行される行為、を行うことなく実行可能である。何かを受け取ることは、何かを計算可能な遠隔リソースから何かを受け取ることを含み得る。
III.文の形式
第1の請求項の限定が、特徴の1つならびに特徴の複数を範囲に含み(例えば「少なくとも1つのウィジェット」などの限定は、1つのウィジェットだけでなく複数のウィジェットを範囲に含む)、第1の請求項に従属する第2の請求項において、第2の請求項がその限定を指すために定冠詞「the」を用いる場合(例えば「the widget」)、この単なる使用は第1の請求項が特徴の1つだけを範囲に含むことを意味せず、第2の請求項が特徴の1つだけを範囲に含むことも意味しない(例えば「the widget」は、1つのウィジェットおよび複数のウィジェットの両方を範囲に含むことができる)。
序数(「第1の」、「第2の」、「第3の」等)を用語の前の形容詞として用いる場合、その序数は(明示的に別段の定めがない限り)、特定の特徴を同じ用語または同様の用語によって記載される別の特徴と区別するためなど、単に特定の特徴を示すために用いるが、序数はそれ以外の意味や限定効果を持つものではなく、単に便宜的な名前に過ぎない。例えば「第1のウィジェット」は、例えば「第2のウィジェット」と単に区別するためにそのように名付けることができる。したがって、「ウィジェット」という用語の前に序数「第1の」および「第2の」を単に用いることは、2つのウィジェット間の他の任意の関係を示すものではなく、同じく、一方または両方のウィジェットの他の任意の特性を示すものでもない。例えば「ウィジェット」という用語の前に序数「第1の」および「第2の」を単に用いることは、(1)順序または位置に関し、いずれかのウィジェットがその他のウィジェットの前にまたは後に来ることを意味せず、(2)時間に関し、いずれかのウィジェットがその他のウィジェットの前にまたは後に発生しもしくは動作することを意味せず、(3)重要度または品質に関し、いずれかのウィジェットがその他のウィジェットの上にまたは下にランクすることを意味しない。序数を単に用いることは、序数が識別する特徴について数的な限定を定めるものではない。例えば「ウィジェット」という用語の前に序数「第1の」および「第2の」を単に用いることは、正確に2つのウィジェットがあることを意味しない。
本明細書に単一の装置、物、または他の製品を記載する場合、他の実施形態においては、記載された単一の装置又は物の代わりに、(一緒に動作しようがしまいが)2つ以上の装置又は物を代替的に用いることができる。したがって、ある装置が保持するものとして記載する機能は、他の実施形態においては(一緒に動作しようがしまいが)2つ以上の装置又は物が代替的に保持することができる。
同様に、本明細書に(一緒に動作しようがしまいが)2つ以上の装置、物、または他の製品を記載する場合、他の実施形態においては、記載されている2つ以上の装置または物の代わりに、単一の装置又は物を代替的に用いることができる。例えば、複数のコンピュータベース装置を単一のコンピュータベース装置で置換することができる。他の実施形態においては、そのような複数のコンピュータベース装置を、グリッドコンピューティングシステムにおいて行われているように、1つのプロセスの1つのステップを共同で実行するようにしてもよい。他の実施形態においては、そのような複数のコンピュータベース装置を、クラウドコンピューティングシステムにおいて行われているように、1つのプロセスの1つのステップを複数で実行するように、付加的な機能を提供するようにしてもよい。(逆に、単一のコンピュータベース装置は、他と協働する複数のコンピュータベース装置に置換可能である。例えば、単一のコンピュータ装置は、インターネットを介して他と協働するサーバー及びワークステーションに置換可能である)。したがって、2つ以上の装置または物が保持するものとして記載する様々な機能は、単一の装置又は物が代替的に保持することができる。
記載する単一の装置の機能および/または特徴は、他の実施形態において、記載しているがかかる機能/特徴を有するものとしては明示的に記載していない、1つまたは複数の他の装置によって代わりに実施することができる。したがって、他の実施形態は記載した装置自体を含む必要はなく、代わりに、かかる機能又は特徴をそれらの他の実施形態で有する1つまたは複数の他の装置を含むことができる。
IV.開示した例および用語は非限定的である
タイトル(本願の最べきでなく、どの請求項の意味を解釈する際にも用いるべきでなく、どの請求項の範囲を初の頁の冒頭に記載)も要約(本願の末尾に記載)も、開示した発明の範囲として決して限定的に解釈す限定する際にも用いるべきでない。要約は、単に37C.F.R.§1.72(b)の下で求められているので本願に含めている。
本願の中で示す本願のタイトルおよび節の見出しは専ら便宜上のものであり、決して本開示を限定するものとして解釈すべきでない。
本願の中で数多くの実施形態を記載し、専ら例示目的で示した。記載した実施形態は、いかなる意味においても限定的でなく、限定的であることも意図しない。本開示から容易に明らかなように、ここに開示した発明は数多くの実施形態に広く適用可能である。開示した発明は、構造上の修正、論理的な修正、ソフトウェアの修正、電気的な修正など、様々な修正および改変を加えて実施できることを当業者なら理解されよう。開示した発明の特定の特徴を1つまたは複数の特定の実施形態および/または図面に関して説明し得るが、明示的に別段の定めがない限り、かかる特徴は、かかる特徴をそれに関して記載した1つまたは複数の特定の実施形態または図面での使用に限定されないことを理解すべきである。
いくつかの特徴を含むものとして実施形態を開示する場合もあるが、本発明の他の実施形態は全てのかかる特徴よりも少ない特徴を含んでもよい。したがって、例えばある請求項は、開示した実施形態の中の1組の全ての特徴未満を対象とすることができ、かかる請求項は、その請求項が明示的に記述する特徴を超える特徴を要求するものと解釈されない。
本願に記載した方法ステップまたは製品要素のどの実施形態も、本明細書の中で明示的にそうであると述べられている場合、または(請求項及びその請求項によって定義されている発明に関して)請求項の中で明示的に記述されている場合を除き、本明細書で特許請求する発明を構成せず、または本明細書で特許請求する発明に必須ではなく、本明細書で特許請求する発明と同じ対象を指すわけではない。
法定上の分類を除く他の事項に言及している特許請求の範囲の如何なる前文も、特許請求する発明の目的、利益、および可能な用途を記述しているものと解釈すべきであり、そのような前文が特許請求する発明を限定するものと解釈すべきではない。
本開示は、本発明の全ての実施形態の逐語的な説明ではない。また、本開示は、全ての実施形態になければならない本発明の特徴を列挙したものでもない。
開示した全ての実施形態が(たとえ全ての未決クレーム、補正クレーム、発行クレーム、およびキャンセルクレームを含めても)必ずしも特許請求の範囲によって保護されるとは限らない。さらに、ある実施形態がいくつかの請求項によって保護される場合がある(しかし必ずしもそうである必要はない)。したがって、(未決、補正、発行、またはキャンセルに関係なく)請求項が特定の実施形態を対象とする場合、それは他の請求項の範囲が同様にその実施形態を保護しないという証拠にはならない。
互いに通信すると記載した装置は、明示的に別段の定めがない限り、互いに継続的に通信する必要はない。それどころか、かかる装置は必要に応じてまたは所望のときに互いに伝送すれば十分であり、実際にはデータ交換をほとんどの時間控えることができる。例えばインターネットを介して他のマシンと通信するマシンは、長い期間にわたり(例えば一度に数週間)他のマシンにデータを伝送しなくてもよい。さらに、互いに通信する装置は、1つまたは複数の媒介物を介して直接、または間接的に通信することができる。複数の装置は、それらが少なくとも一方向の通信可能である場合には、相互に通信する。例えば、第1の装置が第2の装置に情報を送信可能である場合には、第1の装置は第2の装置と通信する。同様に、第2の装置が第1の装置から情報を受信可能である場合には、第2の装置は第1の装置と通信する。
いくつかのコンポーネントまたは特徴を有する実施形態についての記載は、かかるコンポーネント又は特徴の全てあるいはいずれかが必要であることを意味するものではない。それどころか、本発明の多岐にわたる可能な実施形態を例示するために、様々なオプションのコンポーネントを記載する。明示的に別段の定めがない限り、どのコンポーネント又は特徴も必須または必要ではない。
プロセスステップ、アルゴリズム等を特定の順序で説明し、または特許請求の範囲に記載し得るが、かかるプロセスは異なる順序で機能するように構成することができる。つまり、明示的に説明しまたは特許請求の範囲に記載することができるステップのいずれの順番または順序も、ステップをその順序で行う要件を必ずしも示すわけではない。本明細書に記載したプロセスのステップは、可能な任意の順序で実行することができる。さらに、一部のステップは、(例えばあるステップを他のステップの後に記載するという理由で)非同時に生じるものとして記載しまたは暗示していても、同時に実行することができる。さらに、図面の描写によるプロセスの例示は、図示のプロセスがそのプロセスに対する他の改変および修正を除外することを意味せず、図示のプロセスまたはそのステップのいずれかが本発明に必要であることを意味せず、図示のプロセスが好ましいことも意味しない。
複数のステップを含むものとしてプロセスを記載する場合もあるが、そのことはそれらのステップの全てまたはいずれかが好ましい、必須である、または必要であることを意味しない。記載した本発明の範囲内の他の様々な実施形態が、記載したステップの一部または全てを省いた他のプロセスを含む。明示的に別段の定めがない限り、どのステップも必須または必要ではない。
プロセスを単独でまたは他の製品もしくは方法を参照することなしに記載する場合もあるが、一実施形態では、プロセスが他の製品または方法と相互作用することができる。例えばかかる相互作用には、あるビジネスモデルを別のビジネスモデルに結び付けることが含まれ得る。かかる相互作用は、プロセスの柔軟性または望ましさを高めるために提供することができる。
製品は複数のコンポーネント、側面、品質、特性、および/または特徴を含むものとして記載する場合があるが、このことは、これら複数のうちのいずれかまたは全てが好ましい、必須である、もしくは必要であることを示すものではない。記載した本発明の範囲内にある他の様々な実施形態は、記載した複数の一部または全てを省いた他の製品を含む。
明示的に別段の定めがない限り、列挙される(番号付けされていてもいなくてもよい)項目の一覧は、それらの項目のいずれかまたは全てが相互排除的であることを意味するものではない。同様に、明示的に別段の定めがない限り、列挙される(番号付けされていてもいなくてもよい)項目の一覧は、それらの項目のいずれかまたは全てが任意のカテゴリを網羅することを意味するものではない。例えば列挙する一覧、「コンピュータ、ラップトップ、及びPDA」は、その一覧の3つの項目のいずれかまたは全てが相互排除的であることを意味せず、その一覧の3つの項目のいずれかまたは全てが任意のカテゴリを網羅することも意味しない。
列挙される(番号付けされていてもいなくてもよい)項目の一覧は、それらの項目のいずれかまたは全てが互いに等価であること、または互いに容易に置換されることを意味するものではない。
全ての実施形態は例示的であり、本発明または任意の実施形態が場合に応じて作成され、もしくは実行されたことを意味するものではない。
V.コンピューティング
本明細書に記載した様々なプロセスを、例えば適切にプログラムされた汎用コンピュータ、専用コンピュータ、およびコンピューティング装置によって実施できることが当業者には容易に明らかである。典型的には、プロセッサ(例えば1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコントローラ、1つまたは複数のデジタル信号プロセッサ)が(例えばメモリなどの装置から)命令を受け取り、それらの命令を実行し、それによりそれらの命令が定める1つまたは複数のプロセスを実行する。命令は、例えば、1つ以上のコンピュータプログラムや、1つ以上のスクリプトとして、具現化され得る。
用語「コンピュータ」は、ソフトウェアアルゴリズムに応じてプロセッサを使用することを決定する手段である。
「プロセッサ」は、そのアーキテクチャ(例えばチップレベルマルチプロセッシング又はマルチコア、RISC、CISC、パイプラインステージがインターロックされないマイクロプロセッサ、パイプライン構成、同時マルチスレッディング、組み込みグラフィックプロセッシングユニットを伴うマイクロプロセッサ、GPGPU)に関係なく、1つまたは複数のマイクロプロセッサ、中央処理装置(CPU)、コンピューティング装置、マイクロコントローラ、デジタル信号プロセッサ、グラフィックプロセッシングユニット(GPUs)もしくはそのような装置、またはその任意の組合せを意味する。
「コンピュータ装置」は、そのアーキテクチャ(例えばチップレベルマルチプロセッシング又はマルチコア、RISC、CISC、パイプラインステージがインターロックされないマイクロプロセッサ、パイプライン構成、同時マルチスレッディング)に関係なく、1つ以上のマイクロプロセッサ、中央演算ユニット(CPUs)、コンピュータ装置、マイクロコントローラ、デジタル信号プロセッサ、グラフィックカード、モバイルゲーム装置、もしくはそのような装置、またはその任意の組合せを意味する。
したがってプロセスについての記述は、同様に、そのプロセスを実行するための装置についての記述である。プロセスを実行する装置には、例えばプロセッサや、プロセスを実行するのに適した入力装置および出力装置が含まれ得る。例えば、プロセッサと、プロセスについての記述は、プロセッサによって実行された際に方法を実行するように当該プロセッサに指示する命令を含むプログラムを記憶するメモリーとを備える装置を記述する。
プロセスを実行する装置は、当該プロセスを協働して実行する複数のコンピュータ装置を含み得る。このようなコンピュータ装置のいくつかは、プロセスの各ステップを実行するために協働し、プロセスのステップにおいて個別に動作し、プロセスの実行を促進し得る他のコンピュータ装置の基礎になるサービスを提供し得る。このようなコンピュータ装置は、集約された権限の命令下で動作し得る。他の実施形態において、このようなコンピュータ装置は、集約された権限の命令なしに動作し得る。このような方法のいくつかあるいは全てにおいて動作し得る装置のいくつかの例は、グリッドコンピューティングシステム、クラウドコンピューターシステム、ピアトゥーピアコンピュータシステム、ソフトウェアをサービスとして提供可能なコンピューターシステム等を含み得る。例えば、装置は、多くの処理負荷を遠隔サーバ上で実行するが表示情報を出力し、及びVMウェアソフトウェアを実行するコンピュータシステムのような、ローカルユーザーコンピュータからのユーザ入力情報を受け取る、コンピュータシステムを含み得る。
さらに、かかる方法を実施するプログラム(ならびに他の種類のデータ)は、多岐にわたる媒体(例えばコンピュータ可読媒体)を用いていくつもの方法で記憶し伝送することができる。一部の実施形態では、様々な実施形態のプロセスを実施可能なソフトウェア命令の一部または全ての代わりに、またはそれと組み合わせて、ハードワイヤード回路またはカスタムハードウェアを用いることができる。したがって、ソフトウェアだけではなく、ハードウェアとソフトウェアの様々な組合せを用いることができる。
用語「コンピュータ可読媒体」は、コンピュータ、プロセッサ、または同様の装置が読み取ることができるデータ(例えば命令、データ構造)を提供することに関与する任意の非一過性の媒体、複数の媒体、または様々な媒体の組合せを指す。かかる媒体は、これだけに限定されないが、不揮発性媒体、揮発性媒体、および伝送媒体が含まれる多くの形態を取ることができる。不揮発性媒体には、例えば光学ディスクまたは磁気ディスク、および他の永続メモリが含まれる。揮発性媒体には、典型的にはメインメモリを構成するダイナミックランダムアクセスメモリ(DRAM)が含まれる。伝送媒体には、プロセッサに結合されるシステムバスを構成する線を含め、同軸ケーブル、銅線、および光ファイバが含まれる。伝送媒体は、音波、光波、ならびに無線周波(RF)および赤外(IR)データ通信中に生じるものなど、電磁放射を含みまたは伝えることができる。コンピュータ可読媒体の一般的な形態には、例えばフロッピディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の任意の磁気媒体、CD-ROM、DVD、他の任意の光学媒体、パンチカード、紙テープ、孔のパターンを有する他の任意の物理媒体、RAM、PROM、EPROM、フラッシュEEPROM、他の任意のメモリチップまたはカートリッジ、以下に記載する搬送波、またはコンピュータが読取り可能な他の任意の媒体が含まれる。
用語「有形のコンピュータ可読媒体」は、光又は磁気ディスクのようなハードウェア要素を含む「コンピュータ可読媒体」を示す。
データ(例えば一連の命令)をプロセッサに運ぶ際、様々な形態のコンピュータ可読媒体を用いることができる。例えばデータは、(i)RAMからプロセッサに送ることができ、(ii)無線伝送媒体を介して運ぶことができ、(iii)イーサネット(登録商標)(またはIEEE802.3)、WiFiアライアンスによって承認されているか否かを問わずIEEE802.11規格により規定された無線ローカルエリアネットワーク通信、SAP、ATP、Bluetooth(登録商標)、TCP/IP、TDMA、CDMA、3Gなど、数多くの形式、規格、またはプロトコルに従ってフォーマットしかつ/または伝送することができ、かつ/または(iv)当技術分野でよく知られている様々な方法のいずれかで暗号化し、プライバシを保護しまたは不正を防止することができる。
用語「データベース」は、読み取り可能なフォーマットで記録されたデータの電子的な記録の集合を示す。
用語「データ構造」は、コンピュータのようなハードウェア機械のデータベースを示す。
用語「ネットワーク」は、通信経路によって内部接続されたポイント又はノードのシリーズを示す。例えば、ネットワークは、1つ以上の有線及び又は無線の通信経路によって内部接続された複数のコンピュータ又は通信装置を含み得る。ネットワークは、他のネットワークと内部接続し得るものであり、サブネットワークを含み得る。
用語「所定」とは、以前、すなわち現時点又は現アクションより前、に決定されたことを示す。例えば、「所定の値を表示する」との表現は、表示アクションより前に決定された値を表示することを意味する。
用語「条件」は、(1)依存する合意が満たされることの前提、又は(2)他の何かが出現又は発生するために必須の何かを示す。
用語「変換」は、(1)物、サービス、又はファンドの交換や移動、若しくは(2)相互に反復的に影響を及ぼす2つの当事者又は物を含む伝達行為又は行動を意味する。
したがってプロセスについての記述は、同様に、そのプロセスを実行するためのプログラムを記憶するコンピュータ可読媒体についての記述である。コンピュータ可読媒体は、本方法を実行するのに適したそれらのプログラム要素を(任意の適切な形式で)記憶することができる。例えば、プロセスの記述は、プロセッサによって実行された際に方法を実行するように当該プロセッサに指示する命令を含むプログラムを記憶するコンピュータ読み取り可能なメモリーの記述である。
プロセス内の様々なステップについての記述が、記載されている全てのステップが必要であることを示さないのと同様に、装置の実施形態は、記載したプロセスの(必ずしも全てではないが)一部を実行するように動作可能なコンピュータ又はコンピューティング装置を含む。
同じく、プロセス内の様々なステップについての記述が、記載されている全てのステップが必要であることを示さないのと同様に、プログラムまたはデータ構造を記憶するコンピュータ可読媒体の実施形態は、実行時に、記載したプロセスの(必ずしも全てではないが)一部をプロセッサに実行させることができるプログラムを記憶するコンピュータ可読媒体を含む。
データベースについて記載する場合、(i)記載したデータベースに対する代替的データベース構造を容易に用いることができ、(ii)データベース以外の他のメモリ構造を容易に用いることができることを当業者なら理解されよう。本明細書に示す任意のサンプルデータベースについてのいずれの例示または説明も、記憶されている情報表現に関する例示的構成である。例えば図面に示す表や他の箇所で提案するもの以外に、任意の数の他の構成を用いることができる。同様に、例示する任意のデータベースのエントリは例示的な情報を表すに過ぎず、当業者はエントリの数および内容が本明細書に記載の数および内容と異なってもよいことを理解されよう。さらに、表としてのデータベースの任意の記述をよそに、本明細書に記載のデータの種類を記憶し操作するために、(リレーショナルデータベース、オブジェクトベースモデル、および/または分散データベースが含まれる)他の形式を用いることができる。同様に、本明細書に記載など、様々なプロセスを実施するために、オブジェクトメソッドまたはデータベースの動作を用いることができる。さらにデータベースは、局所的にまたはかかるデータベース内のデータにアクセスする装置から離して、知られている方法で保管することができる。
様々な実施形態は、1つまたは複数の装置と(例えば通信ネットワークを介して)通信するコンピュータを含む、ネットワーク環境内で機能するように構成することができる。コンピュータはそれらの装置と直接、または任意の有線媒体もしくは無線媒体(例えばインターネット、LAN、WANまたはイーサネット、トークンリング、電話回線、ケーブル回線、無線チャネル、光通信回線、商用オンラインサービスプロバイダ、掲示板システム、衛星通信回線、上記のものの任意の組合せ)を介して間接的に通信することができる。装置のそれぞれは、それ自体がコンピュータ、またはコンピュータと通信するようになされるIntel(登録商標)、Pentium(登録商標)、もしくはCentrino(商標)、Atom(商標)、又はCore(商標)プロセッサに基づくものなど、他のコンピューティング装置を含むことができる。任意の数および種類の装置がコンピュータと通信することができる。
一実施形態では、サーバコンピュータまたは集中的権限が必要でなく、または望ましくない場合がある。例えば本発明は、一実施形態では、集中的権限なしに1つまたは複数の装置上で実施することができる。そのような実施形態では、サーバコンピュータによって実行されるものとして本明細書に記載するいずれの機能も、サーバコンピュータ上に記憶されるものとして記載するいずれのデータも、代わりに1つまたは複数のかかる装置によって実行し、またはかかる装置上に記憶することができる。
プロセスについて記述する場合、一実施形態では、プロセスが利用者による一切の介入なしに機能することができる。別の実施形態では、プロセスが何らかの人間による介入を含む(例えばあるステップが人間によって実行され、または人間の助けを借りて実行される)。
ここにおいて、用語「暗号化」は、情報が特別な知識なしには直ちに理解できないように、情報を不明瞭化又は隠蔽するプロセスを示す。暗号化のプロセスは、平文と称される生情報を、暗号化情報に変換することを含み得る。暗号化情報は、暗号文と呼ばれ得るものであり、平文を暗号文に変換するアルゴリズムは、暗号化と呼ばれ得る。暗号化は、暗号文を平文に戻す動作を実行するために使用され得る。暗号化の例としては、代用暗号、転位暗号、ローター機械を用いて実行される暗号化がある。
多様な暗号方法において、暗号化は、鍵と呼ばれる、情報補助部分を要求することがある。鍵は、例えば、ビット列によって構成され得る。鍵は、平文を暗号するための暗号化に使用され得る。鍵は、暗号文を復号するための暗号化に使用され得る。対称鍵アルゴリズム(つまり、秘密鍵暗号)と呼ばれる暗号化のカテゴリーにおいては、暗号と復号に同じ鍵が用いられる。このため、暗号化された情報の強度は、鍵を秘密にしておくことに依存している。対称鍵暗号の例としては、DESやAESがある。非対称鍵アルゴリズム(つまり、公開鍵暗号)と呼ばれる暗号化のカテゴリーにおいては、暗号と復号に異なる鍵が用いられる。非対称鍵アルゴリズムにおいては、公衆の如何なるメンバーも、平文を暗号文に暗号化するために第1鍵(つまり、公開鍵)を使用可能である。しかし、第2鍵(つまり、秘密鍵)の保有者のみが、暗号文を平文に復号することが可能である。非対称鍵暗号の例としては、RSAがある。
VI.継続出願
本開示は、いくつかの実施形態および/または発明の権限付与的記述を当業者に提供する。これらの実施形態および/または発明の一部は本願では特許請求しない場合があるが、本願の優先権の利益を主張する1つまたは複数の継続出願において特許請求することができる。
出願人は、開示され使用可能にされているが、本願では特許請求しない内容の特許を追及するために、さらに出願を申請する予定である。
VII.権利放棄
特定の実施形態への数多くの言及は、追加の、異なる実施形態の権利放棄または否定を意味するものではなく、同様に、特定の特徴を全て含む実施形態の説明への言及は、その特定の特徴を含まない実施形態の権利放棄または否定を意味するものではない。本願における明確な権利放棄または否定は、「含まない」または「実行することができない」という語句によって前置きするものとする。
VIII.審査経過
本願(特許請求の範囲を含む)を解釈する際、当業者は、本願に関係するとみなされる他の特許出願があるかどうかにかかわらず、および本願と優先権の主張を共有する他の特許出願があるかどうかにかかわらず、他の任意の特許または特許出願ではなく、本願の審査経過を参照する。
〔付記1〕
第1のネットワークのローカルのアドレスとポートのペアを第2のネットワーク上の送信先にマッピングすることと、第3のネットワークのローカルのアドレスとポートのペアを前記第2のネットワーク上の前記送信先にマッピングすることと、を行うように構成された第1のルーティング装置であって、第1のプロセッサの第1のコアが、前記第1のネットワークへのルーティングを実施するように構成され、前記第1のプロセッサの第2のコアが、前記第2のネットワークへのルーティングを実施するように構成されるように、前記第1のルーティング装置が構成されている、前記第1のルーティング装置
を備える装置であって、
前記第1のネットワークの前記ローカルのアドレスとポートのペアを前記送信先にマッピングすることを促進する為に、前記ルーティング装置は、前記送信先に対して第1のソケットを開き、第2の送信先に対して第2のソケットを開き、前記第1のソケットが働かなくなったという判定に対する応答として、ルーティングを前記第2のソケットにフェールオーバするように構成されており、
前記ルーティング装置の第3のコアが、前記第1のコアと共有されているメモリ空間の一部分にアクセスするように構成されたプロセスを実行し、前記メモリ空間の前記一部分から、パケットヘッダ及びパケット全体のうちの少なくとも一方をコピーし、前記パケットヘッダ及び前記パケット全体のうちの前記少なくとも一方を、前記第1のルーティング装置と結合されたアナリティクスエンジンに送信することを促進するように構成されている、
装置。
〔付記2〕
前記第1のルーティング装置は、前記ローカルのアドレスとポートのペアに送信されるトラフィックが、前記第1のソケットを使用する前記送信先と、前記第2のソケットを使用する前記第2の送信先との間で分割されるように、前記トラフィックを負荷分散するように構成されている、付記1に記載の装置。
〔付記3〕
前記負荷分散は、ラウンドロビン方式及び最小接続方式のうちの少なくとも一方で行われる、付記2に記載の装置。
〔付記4〕
前記ルーティング装置は複数のマルチコアプロセッサを含む、付記1に記載の装置。
〔付記5〕
前記ルーティング装置は、ギガビット速度でデータをルーティングするように構成されている、付記1に記載の装置。
〔付記6〕
アドレスとポートのペアを前記第1のネットワークにマッピングすることと、第2のアドレスとポートのペアを前記第2のネットワークにマッピングすることと、を行うように構成された第2のルーティング装置であって、第2のプロセッサの第1のコアが、前記送信先から前記第1のネットワークへのルーティングを実施するように構成され、前記第2のプロセッサの第2のコアが、前記送信先から前記第2のネットワークへのルーティングを実施するように構成されるように、前記第2のルーティング装置が構成されている、前記第2のルーティング装置
を備える、付記1に記載の装置。
〔付記7〕
前記第1のルーティング装置は、前記送信先へルーティングされるデータブロックを辞書方式に従って圧縮するように構成されており、前記第2のルーティング装置は、前記送信先への送信の為に、前記辞書方式に従って前記データブロックを圧縮解除するように構成されている、付記6に記載の装置。
〔付記8〕
前記第1のルーティング装置を通して前記第1のネットワーク及び前記第2のネットワークからのマッピングを行うことにより、前記第1のネットワーク及び前記第2のネットワークからソフトウェア定義ネットワークへのサービスが有効化される、付記6に記載の装置。
〔付記9〕
前記第2のルーティング装置は、前記第1のネットワーク及び前記第2のネットワークからソフトウェア定義ネットワークに提供されるサービスを前記送信先がサブスクライブすることを可能にする、付記6に記載の装置。
〔付記10〕
前記第1のルーティング装置及び前記第2のルーティング装置は、複数のデータセンタにまたがるソフトウェア定義ネットワークを定義する、付記6に記載の装置。
〔付記11〕
前記送信先は、取引を行うカスタマを含み、前記第1のネットワークは、電子交換機が存在するネットワークを含む、付記6に記載の装置。