JP4716909B2 - ネットワーク接続テーブルを提供するための方法および装置 - Google Patents

ネットワーク接続テーブルを提供するための方法および装置 Download PDF

Info

Publication number
JP4716909B2
JP4716909B2 JP2006094101A JP2006094101A JP4716909B2 JP 4716909 B2 JP4716909 B2 JP 4716909B2 JP 2006094101 A JP2006094101 A JP 2006094101A JP 2006094101 A JP2006094101 A JP 2006094101A JP 4716909 B2 JP4716909 B2 JP 4716909B2
Authority
JP
Japan
Prior art keywords
pattern
tuple
connection
direct table
connection information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006094101A
Other languages
English (en)
Other versions
JP2006287932A (ja
Inventor
クロード・バッソ
ジャン・カルヴィニャック
チーチェン・チャン
フィリップ・デイモン
ナタラヤン・ヴァイドヤナサン
ファブリス・ジーン・ヴァープランケン
コリン・ビートン・ヴェリーリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006287932A publication Critical patent/JP2006287932A/ja
Application granted granted Critical
Publication of JP4716909B2 publication Critical patent/JP4716909B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables

Description

本発明は、コンピュータ・デバイスのためのネットワーク接続に関し、詳細には、ネットワーク接続を実現するために使用されるネットワーク接続テーブルに関する。
コンピュータ・システムは、ネットワーク接続を確立し使用することによって、ネットワークにより通信する。たとえば、ネットワークによりクライアント・コンピュータからのアクセスに使用可能であることをサーバが希望する場合、サーバは、そのネットワーキング・プロセスおよびコンポーネントがクライアントから受信される要求を処理できるようにすることができる。サーバ上で実行される複数のサーバ・アプリケーションは、ネットワークによりそのサーバ・アプリケーションへのアクセスを希望するクライアントにとって使用可能なものにすることができる。一例では、クライアントはサーバに接触することができ、サーバは、クライアントとサーバとの間にネットワーク接続を確立することができる。
伝送制御プロトコル/インターネット・プロトコル(TCP/IP)を使用する場合、たとえば、TCP接続は、異なるパラメータまたはフィールドに分割されたビット・パターンなどの接続情報によって表される。たとえば、接続を定義する5つのパラメータのセットである「5タプル(5-tuple)」を使用することができる。TCP/IPの場合、この5タプルは、ネットワーク上で送信される各パケットのヘッダに含まれる。この5つのパラメータは、そのパケットに関するプロトコルのID(この場合はTCP)、ソースIPアドレス(SA:sourceIP address)、ソース・ポート(SP:source port)、宛先IPアドレス(DA:destination IP address)、および宛先ポート(DP:destinationport)である。クライアントの観点から述べると、ソース・アドレスおよびソース・ポートはクライアント側にあり、宛先アドレスおよびポートはサーバ側にある。5タプル接続情報により、ネットワーク・データ・パケットは、双方向式にサーバ・プロセスとクライアント・プロセスとの間で通信することができる。各接続は、各パケット・ヘッダ内で識別される固有の5タプル・パターンを有する。
サーバとクライアントとの間で接続が確立される前に、サーバは概して、クライアントが接続可能な特定のプロセスへの接続の可用性を公示する。たとえば、サーバは、使用可能な潜在的接続を示すために、その接続に関する基本接続情報を「3タプル」または「2タプル」の形でセットアップすることができる。3タプルは、使用可能な接続に使用すべきプロトコルのID、その接続に関するサーバの宛先ポート、およびサーバの宛先アドレスに関する3つのパラメータを有する。3タプルは、サーバが複数のIPアドレスを有するときに(たとえば、マルチホーム・サーバ)使用され、その場合、使用可能な接続の特定のIPアドレスを指定しなければならない。その他の時期またはその他の環境では、サーバ接続のために単一IPアドレスのみが提供されるか、または複数IPアドレスのうちのどれが接続に使用可能であるかをサーバが気にかけない可能性がある。このようなケースでは、2タプルが使用可能な接続を示すことができ、これは、プロトコルのIDおよび宛先ポートという2つのパラメータを有する。
サーバは、5タプル、3タプル、および2タプルをTCP接続テーブルに保管することができる。サーバが接続情報(5タプル)が付いたヘッダを有するパケットを受信すると、サーバは、複数接続のうちのどれがパケットを受信しなければならないかを判定するために、複数テーブルのうちの1つにおいて一致する接続を捜す。各接続におけるパケットは最終的に、その接続の終了時にサーバ・アプリケーションに提供される。たとえば、サーバへの接続を確立するために、クライアントはサーバにSYN(同期)パケットを送信する。サーバは、SYNパケットを受信すると、クライアントとの3ウェイ・ハンドシェーク・プロセスを開始できるようにするためにテーブル内の一致する3タプルまたは2タプル・パターンをルックアップし、その結果、接続が確立される(パケット内の5タプルの残りのフィールドは無視される)。概して、まず3タプルに関する一致がサーチされ、何も見つからない場合に、2タプルに関する一致がサーチされる。接続が確立されると、5タプル・パターンはダイレクト・テーブル(direct table)に保管され、その接続上のその後のパケットと一致する。
既存のサーバ・システムは、着信パケットをどこに送信すべきかを決定するために、TCP接続をルックアップするための種々の方法を使用する。ある方法では、それぞれが新しい接続または既存の接続を保管する3つの個別のテーブルが提供され、接続をルックアップするために単純なハッシュ・アルゴリズムが使用される。1つのテーブルは既存の接続に関する5タプル・パターンに使用され、もう1つのテーブルは新しい接続に関する3タプル・パターンに使用され、第3のテーブルは新しい接続に関する2タプル・パターンに使用される。各テーブルは、パターンのタイプに基づいて、異なるハッシュ・キー長を必要とする。
この方法の問題は、3つの異なるテーブルを保管するために、メイン・メモリ内のストレージ・スペースを必要とすることである。加えて、このルックアップ手順は場合によっては長い時間を要する場合があり、たとえば、3タプル・テーブルで新しい接続がルックアップされ、いかなる一致も見つからないときに、2タプル・テーブルでルックアップするためにメイン・メモリに対する第2のアクセスが必要であり、処理時間が増加する。
もう1つのルックアップ方法では単一テーブルを使用することができ、最長接頭部一致(LPM:Longest Prefix Match)アルゴリズムが実現される。このタイプのアルゴリズムにより、サーバは最も厳しいかまたは詳細な基準に適合する最良一致を見つけることができ、いかなる一致も見つからない場合、より一般的な基準が使用される。複数のノードおよびリーフを有するツリー構造が使用され、したがって、処理するのに時間を要する。加えて、LPM方法は複雑なアルゴリズムであり、特に、ハードウェアで実現される場合、メモリなどのより多くのハードウェア・コンポーネントを必要とし、したがって、システムの経費を増加する。
したがって、必要とされるものは、必要な処理時間およびアクセス時間がより短く、実現するのがより簡単で、より効率的で、しかもより安価であるネットワーク接続ルックアップ・メカニズムを提供するための装置および方法である。本発明は、このような要求に対処するものである。
本出願の発明は、ネットワーク接続を実現するために使用されるネットワーク接続テーブルに関する。本発明の一態様では、ネットワーク接続をサーチするための方法は、コンピュータ・システムにおいてネットワークによりパケットを受信し、そのパケットから接続情報を検索し、新しい接続を確立する場合に接続情報内の特定のフィールドをゼロにするステップを含む。接続情報は、テーブル・アクセス・プロセスを使用して、ダイレクト・テーブル内の位置に関するアドレスに変換される。ダイレクト・テーブルは、新しい接続および既存の接続に関するパターンおよび関連参照情報を保管する。接続情報は、受信パケットに関する参照情報を見つけるために、ダイレクト・テーブル内のそのアドレスによって指し示された位置に保管された少なくとも1つのパターンと比較される。本発明の同様の一態様は、同様の特徴を実現するための装置を提供する。
本発明の他の態様では、ネットワーク接続情報を保管するための方法は、ネットワーク接続情報を受信するステップと、ネットワーク接続情報が新しい接続を参照する場合にネットワーク接続情報内の特定のフィールドをゼロにするステップと、テーブル・アクセス・プロセスを使用して、ネットワーク接続情報をダイレクト・テーブル内のアドレスに変換するステップと、接続情報をパターンとして保管し、参照情報をアドレスに対応する位置でダイレクト・テーブルに保管するステップとを含む。ダイレクト・テーブルは、新しい接続および既存の接続に関する接続情報および参照情報を保管する。
本発明の他の態様では、ネットワーク接続情報の保管およびサーチを可能にする装置は、メモリ内に設けられ、新しいネットワーク接続に関する3タプルおよび2タプル・パターンと、確立されたネットワーク接続に関する5タプル・パターンとを含むネットワーク接続情報と、ネットワーク接続を指し示す関連参照情報とを保管するダイレクト・テーブルを含む。ネットワーク・アダプタ・デバイス上に実現されたサーチ・メカニズムは、接続情報を含むパケットがネットワークにより受信されたときに、ダイレクト・テーブル内のネットワーク接続情報をサーチする。サーチ・メカニズムはパケット接続情報からサーチ・パターンを作成し、そのサーチ・パターンは関連参照情報を見つけるためにダイレクト・テーブル内で一致するパターンをサーチするために使用される。
本発明は、新しい接続および確立された接続を含む種々のタイプのネットワーク接続をルックアップするために単一ダイレクト・テーブルを使用できるようにし、同じテーブル内への2タプル、3タプル、および5タプル・パターンの保管を可能にする方法および装置を提供する。これにより、効率の良い単一メモリ・アクセスですべての可能なタイプの接続をルックアップすることができる。さらに、本発明は、ハッシュ・プロセスまたはその他のテーブル・アクセス・メカニズムを使用して接続の直接ルックアップを可能にするが、これは既存の複雑なルックアップ・アルゴリズムより効率が良く安価である。
本発明は、コンピュータ・デバイスのためのネットワーク接続に関し、詳細には、ネットワーク接続を実現するために使用されるネットワーク接続テーブルに関する。以下の説明は、当業者が本発明を成し使用できるようにするために提示され、特許出願およびその要件に関連して示されている。本明細書に記載されている好ましい実施形態ならびに汎用原理および特徴に対する様々な変更は、当業者にとって容易に明らかなものになるであろう。したがって、本発明は、図示されている実施形態に限定されるものではなく、本明細書に記載されている原理および特徴と一致した最も広い範囲が与えられる。
主に特定の実現例で示されるシステムに関して本発明を説明する。しかし、当業者であれば、この方法およびシステムが他の実現例でも効果的に機能することを容易に認識するであろう。たとえば、本発明とともに使用可能なシステム・アーキテクチャおよびネットワーク構成は、いくつかの異なる形を取ることができる。また、特定の諸ステップを有する特定の方法に関しても本発明を説明する。しかし、この方法およびシステムは、本発明と一致しないわけではない異なる諸ステップまたは追加の諸ステップあるいはその両方を有する他の方法についても効果的に機能する。
本発明の特徴を詳細に説明するために、以下の考察に併せて図1〜6を参照されたい。TCP/IPプロトコル・クライアント/サーバ・システムに関して本発明を説明するが、適切な変更を加えた他の諸実施形態では他のプロトコル(ユーザ・データグラム・プロトコル(UDP:User Datagram Protocol)など)および構成を使用することができる。たとえば、UDPにはSYNパケットがまったく存在しないが、特定の接続/キューにパケットを誘導するために依然として5タプルを使用することができる。
図1は、本発明とともに使用するのに適したシステム10の一例のブロック図である。システム10は、サーバ、メインフレーム、デスクトップ・クライアント・コンピュータ、ワークステーション、その他のコンピュータまたは電子デバイスなどのコンピュータ・システムである。記載されている実施形態では、システム10は、ネットワーク接続14を介して様々な他のコンピュータ12と通信することができるサーバ・システムとして示されている。記載されている実施形態ではコンピュータ12はクライアント・コンピュータとして示されているが、他の諸実施形態ではサーバまたは他のコンピュータ・デバイスにすることができる。クライアント・コンピュータ12はいずれも、1つまたは複数のデータ・パケットをサーバに送信することにより、ネットワーク14によりサーバ・システム10へのアクセスを要求することができ、サーバとクライアントとの間の接続が確立されると、それらの間で情報を伝達することができる。
サーバ・システム10はいくつかのサーバ・アプリケーション16を実行し、そのサーバ・アプリケーションは、本発明の文脈内では要求側のクライアント・コンピュータ12に対してサービス、処理、データなどを提供できる、サーバ上で実行されるプロセスである。たとえば、サーバ・アプリケーション16は、クライアント12にWebページ・データを提供するかまたはクライアント12にデータベース・データを提供するかあるいはその両方を行うWebサーバ・アプリケーションであるか、またはクライアント12によって提供されたデータを処理することができる。
システム10は、サーバ・アプリケーション16へのネットワーク接続を管理するためのTCP/IPスタック20を含む。スタック20は、サーバ上で実行されるオペレーティング・システムまたはユーザ・ソフトウェア・スペース内のプロセス・コードであって、ネットワーク接続14への着信データおよびネットワーク接続14からの発信データを処理するものである。TCP/IPスタックは、サーバ・アプリケーション16への新しいネットワーク接続を確立するかまたは既存の接続にパケットを提供することができる。各サーバ・アプリケーション16は、1つまたは複数の接続を有することができる。たとえば、スタック20は、サーバ・アプリケーション16に対するネットワーク接続を開くために、たとえば、サーバ・アプリケーション16が開始されたときに、サーバ・アプリケーション16からの要求を受信することができる。サーバ・アプリケーション16はスタック20にデータを送信し、そのスタックはネットワーク14によりそのデータをTCP/IPネットワーク・パケットとして宛先ポートおよびアドレスに送信する。また、スタック20は、ネットワーク上の他のコンピュータ・デバイス12によって提供されたネットワーク・パケットも受信し、そのパケットをネットワーク接続を介して適切なサーバ・アプリケーション16に提供する。
TCP/IPスタック20は、サーバ・システム10のメイン・メモリ24のダイレクト・テーブル22にアクセスする。ダイレクト・テーブル22は、サーバ10へのすべての新しい接続および既存の接続に関する接続情報ならびにシステム10によって受信されたパケットに関する宛先接続(複数も可)を示す関連「参照情報」または「接続参照情報」を保管する。一実施形態では、たとえば、参照情報は特定の接続キューを指し示すキュー番号にすることができ、その場合、接続キュー内のパケットは最終的にスタック20によって処理され、関連データはそのキューに関する接続にならびにその接続の終了時にサーバ・アプリケーションに経路指定される。他の諸実施形態では、それぞれがテーブル内に示されているようにそれ専用のキューを有する、複数のプロトコル・スタック20を提供することができる。他の実施形態では、各アプリケーション16はそれ専用のキューを有することができるであろう。他の諸実施形態では、接続キューの他に、サーバ内の他の宛先を参照情報によって示すことができる。
たとえば、サーバ・アプリケーション16への新しい接続を受け入れることをそのアプリケーションが要求すると、スタック20は、その接続を要求したサーバ・アプリケーションへの接続に関連する接続キューを示すキュー番号とともに、適切な接続情報(パターン)をテーブル22に保管する。システム10にパケットを送信することにより、クライアントが新しい接続を要求すると、ネットワーク・アダプタ26上のロジックがテーブルを調べて、どの接続キューにクライアントを接続し、パケットを送信すべきかを決定する(代わって、スタック20はテーブルを調べることができるが、効率のために、アダプタ26にそのタスクを実行させることにより、サーバ10から負荷を除去する)。同様に、接続が確立された後、アダプタ26がクライアント・コンピュータ12からパケットを受信すると、アダプタ26はテーブル22を調べて、そのパケットを受信しなければならない確立された接続を決定する。これらのプロセスについては、図2および図4に関して以下により詳細に説明する。
本発明では、単一ダイレクト・テーブル22は、5タプル、3タプル、および2タプル・パターンを含む、すべての新しい接続および確立された接続に関する接続情報を保管し、したがって、従来技術の実現例と比べて、接続テーブルに関するストレージ要件を低減し、接続ルックアップに必要なメモリ・アクセスの回数も低減する。さらに、接続情報は、ハッシュ・プロセス(以下に記載する)などの効率の良い方法によりテーブル内で直接アクセスされ、したがって、最長接頭部一致などのより複雑なアルゴリズムおよび構造を使用する他の実現例より必要な処理が少なくなる。
ネットワーク・アダプタ26は、サーバ・システム10と、ネットワーク14に接続されたその他のコンピュータ12との間の物理接続ポイントを提供するために使用される。アダプタ26は、たとえば、ハードウェア・ネットワーク・インターフェース・アダプタにすることができる。TCP/IPスタック20はアダプタ26によりクライアント・コンピュータ12からパケットを受信し、スタック20はアダプタ26によりネットワーク14上でパケットを送出する。また、アダプタ26は好ましくは、接続情報についてダイレクト・テーブル22を調べることなど、ネットワーク情報の処理を可能にするために、ロジック、メモリ、および処理コンポーネントを含む。これは、サーバからネットワーク・アダプタに負担を軽減するものである。
図2は、ネットワーク接続情報をダイレクト・テーブル22に保管するための本発明の方法100を示す流れ図である。方法100は、サーバのTCP/IPスタック20で、たとえば、ソフトウェアで、実現することができる。代わって、方法100は、ハードウェアまたはハードウェアとソフトウェアの組み合わせとして実現することができる。方法100(および方法200)の諸ステップは、メモリ、ハード・ドライブ、光ディスク(CD−ROM、DVD−ROMなど)、磁気ディスクなどのコンピュータ可読メディア上に保管されたプログラム命令を使用して実現することができる。
方法100は概して、ネットワーク接続情報をダイレクト・テーブル22に保管する必要性が存在するときに開始される。サーバ・アプリケーション16が開始されるかまたは接続が開かれる(セットアップされる)ことを要求すると、この接続セットアップはここでは「新しい接続」と見なされ、この新しい接続に関する接続情報がダイレクト・テーブル22に保管される。サーバ・アプリケーション16は、そのサーバ・アプリケーションにアクセスするための任意のクライアント要求を受け入れるための要求をTCP/IPスタック20に提供し、そのアプリケーションに関するスタックにプロトコル(たとえば、TCP)およびサーバTCPポート(および場合によってはIPアドレス)を提供する。さらに、確立された接続に関する接続情報は、概してクライアントとサーバが通信を確立した後、たとえば、TCPプロトコルを使用するときの3ウェイ・ハンドシェーク後に、保管される。
この方法は102から始まり、ステップ104では、5タプルの接続情報(5タプル「パターン」)を保管すべきかどうかがチェックされる。方法100に関連して、5タプル・パターンを保管しない場合、3タプルまたは2タプル・パターンの接続情報が保管される。
本明細書で言及される5タプル・パターンは、プロトコルのID、ソース(クライアント)アドレス、ソース・ポート、宛先(サーバ)アドレス、および宛先ポートという5つの接続パラメータを定義するために指定されるビット・ストリング(たとえば、多くの一般的なTCP/IP実現例では104ビット)である。5タプル・パターンは、接続が確立され、ソース(クライアント)および宛先(サーバ)が既知のものであるときに、テーブルに保管される。テーブル22に保管すべき5タプルは、3ウェイ・ハンドシェークの終了時に受信されるパケットのヘッダ内で受信される。対照的に、本明細書で言及される3タプル・パターンは、プロトコルID、宛先アドレス、および宛先ポートという3つの接続パラメータを含み、サーバ・アプリケーションへの接続がクライアントにとって使用可能な状態にならなければならないことをそのサーバ・アプリケーションが要求したときに保管される。3タプル・パターンでは、5タプルの他の2つのフィールドがゼロにされている。同様に、2タプル・パターンの接続情報は、プロトコルIDおよび宛先ポートという2つのパラメータを含み、5タプルの他の3つのフィールドがゼロにされている。2タプル・パターンは、新しい接続を使用可能な状態にするときに3タプル・パターンの代わりに保管することができ、宛先アドレスを指定する必要がないときに使用される。たとえば、いくつかのサーバ・システム10は、それに対して接続すべき複数の使用可能なIPアドレスを有することができ、その結果、3タプル・パターンを使用して宛先アドレスを指定しなければならない。他のシステムは、アドレスを1つだけ有する場合もあれば、クライアントによって複数の宛先アドレスのうちのどれに接続されるかを気にかけない場合もあり、その結果、2タプル・パターンを使用することができる。
5タプル・パターンを保管する場合、プロセスは、以下に詳述するステップ120に進む。3タプルまたは2タプル・パターンを保管する場合、プロセスはステップ106に進む。ステップ106では、サーバ・アプリケーションから受信した宛先ポート(DP)およびプロトコル(P)を所定のフィールドに含め、ソース・アドレス(SA)、ソース・ポート(SP)、および宛先アドレス(DA)用のフィールドをゼロにすることにより、ハッシュ・キーが作成される。
次のステップ108では、ステップ106の結果として得られるパターンは、ネットワーク接続情報のパターンを保管するためのダイレクト・テーブル22内のテーブル行を決定するために実行されるSYNハッシュ・プロセスでハッシュ・キーとして使用される。本明細書で言及されるテーブル「行」(または「位置」)は、複数の項目を保管することができ、アドレス指定することができる、テーブル内の位置またはスペースを示し、テーブル行は様々な方法で実現することができる。SYNハッシュは、テーブル22の項目を決定するために、フル・パターンのDPフィールドおよびプロトコル・フィールドのみを使用する。SYNハッシュは、大きい値のキーを、行数がより少ないテーブルへのインデックスとして付けることができるより小さい値に変換するハッシュ・アルゴリズムであり、その小さい方の値はそのテーブルの行範囲内に十分分散される。SYNハッシュは、3タプルまたは2タプル接続がダイレクト・テーブル22内でルックアップされるとき、たとえば、SYNパケットがサーバによってクライアントから受信されるときに、使用される。TCPプロトコルにおけるSYNパケットは、接続を開始するためにクライアントがサーバに送信する初期パケットである。本発明のSYNハッシュ・プロセスの一例については、図7に関連して以下に説明する。他の諸実施形態では、ハッシュ・プロセス以外の他のテーブル・アクセス・メカニズム/プロセス、たとえば、キーを与えられると、1つまたは複数の項目を有するテーブル内の行へのアクセスを可能にするテーブル・アクセス・メカニズムを使用することができる。
次のステップ110では、プロセスは、保管すべきパターンが3タプルであるか2タプルであるかをチェックする。3タプルまたは2タプル・パターンを接続テーブルに入れることにより、そのアプリケーションが接続を聴取していることを示している。パターンが3タプルである場合、すなわち、要求側サーバ・アプリケーションがプロトコル、宛先ポート、および宛先アドレスを提供した場合、プロセスはステップ112に進み、そこで、サーバ・アプリケーションからのP、DP、およびDAフィールドが適切なフィールドに含まれ、SAおよびSPフィールドがゼロにされた状態で3タプル・パターンが作成される。ステップ114では、ステップ112の結果として得られるパターンは、ステップ108で決定されたテーブル22のテーブル行で次に使用可能な項目(スロット)に保管される。加えて、キュー番号は、3タプル・パターンとともに、決定されたテーブル項目に保管される。たとえば、キュー番号は、着信SYNパケットが保管されるはずのサーバのどの接続キューを処理すべきかを識別する。各接続キューは、サーバ・アプリケーション16への特定の接続に関連付けられている。したがって、TCP/IPスタック20が接続キュー内のパケットを処理すると、そのスタックは、その接続に関連するサーバ・アプリケーションに適切なデータを送信する。他の諸実施形態では、たとえば、接続キューが実現されない場合、保管されたパターンに関連する接続を示すために、キュー番号の代わりに他のタイプの参照情報をその項目に保管することができる。ステップ114の後、プロセスは116で完了する。
ステップ110で保管すべきパターンが2タプルである場合、すなわち、要求側サーバ・アプリケーションがプロトコルおよび宛先ポートを提供した場合(宛先アドレスなし)、プロセスはステップ118に進み、そこでステップ106の結果として得られるハッシュ・キー・パターンは、ステップ108で決定されたテーブル22のテーブル行で次に使用可能な項目に保管される。ハッシュ・キー・パターンは、SA、SP、およびDAフィールドがゼロにされており、したがって、2タプル・パターンと同一である。加えて、キュー番号(たとえば)は、一致SYNパケットが保管されるはずのサーバのどの接続キューを処理すべきかを識別する2タプル・パターン(ハッシュ・キー)を有するテーブル項目に保管される。ステップ118の後、プロセスは116で完了する。
5タプル・パターンが保管されることをステップ104でプロセスが発見した場合、ステップ120が実行される。ステップ120では、受信したフル・パターンがハッシュ・キーとして使用され、受信した5タプル・パターンを保管すべきテーブル22の行を決定するためにTCP/UDPハッシュが実行される。TCP/UDPハッシュ・アルゴリズムは、テーブル22内のテーブル行に関するアドレス値を決定するためにそのパターンのすべてのフィールド、すなわち、ビット・パターン全体を使用し、したがって、ハッシュ・キーに関するフル・パターンの3つのフィールドをゼロにしたステップ108のSYNハッシュ・アルゴリズムとは異なるものである。本発明のTCP/UDPハッシュ・プロセスの一例については、図8に関連して以下に説明する。
次のステップ122では、受信した5タプル・パターンの接続情報は、ステップ120のハッシュ・アルゴリズムによって決定されたテーブル行内の次に使用可能な項目でダイレクト・テーブル22に保管される。加えて、キュー番号(またはその他のタイプの参照情報)は、サーバのどの接続キューに一致パケットが保管されるはずかを識別する5タプル・パターンを有するテーブル項目に保管される。したがって、プロセスは116で完了する。
テーブル22の各行内の各項目は、5タプル、3タプル、または2タプル・パターンを保管できる汎用項目であり、3タプルおよび2タプル・パターンは実際には特定のフィールドがゼロになっている5タプルであることに留意されたい。3タプルおよび2タプル・パターン内のゼロは無効な5タプルを作成し、その結果、テーブル内の2タプル、3タプル、および5タプルのドメインにはオーバーレイはまったく存在しない。したがって、本発明は、5タプル・パターンのサーチにより誤って3タプルまたは2タプル・パターンが見つかることはないことを認めるものである。
図3は、本発明によりダイレクト・テーブルへの接続情報の保管の一例を示す概略図150である。図150は、図2に関して上述した通り、5タプル、3タプル、および2タプルという3つの形の接続情報がダイレクト・テーブル22に保管されることを示している。
5タプル・パターン152がテーブル22に保管される場合、パターン152全体がTCP/UDPハッシュ・プロセス154においてハッシュ・キーとして使用される。ハッシュ・プロセス154の結果はダイレクト・テーブル22内の行へのアドレス156として使用され、この例では行「47」であり、5タプル・パターンはその行内の次に使用可能な項目(すなわち、スロット)に保管される。加えて、キュー(参照)番号158は、5タプル・パターンを有する同じ行および項目に保管され、上述の例では、一致パケットが保管されるはずの特定の接続キューが最終的に関連の接続およびサーバ・アプリケーション16について処理されることを示している。
また、3タプル・パターン160もテーブル22に保管することができる。3タプル・パターン160では、そのSAおよびSPフィールドがゼロにされている。ハッシュ・プロセス用のハッシュ・キー162を作成するために、パターン160では、そのDAフィールドもゼロにされている。ハッシュ・キー162はSYNハッシュ・プロセス164に提供され、ハッシュ・プロセス164の結果はダイレクト・テーブル22内の行へのアドレス166として使用される。3タプル・パターン160はその行(この例では行47)の次に使用可能な項目に保管され、参照(たとえば、キュー)番号168は同じ行および項目に保管され、この例では、特定の接続およびサーバ・アプリケーション16に関する特定の接続キューを示している。
また、2タプル・パターン170もテーブル22に保管することができる。2タプル・パターン170では、そのSA、SP、およびDAフィールドがゼロにされている。したがって、パターン170は、SYNハッシュ・キーとしても作用することができ、SYNハッシュ・プロセス172に提供される。ハッシュ・プロセス172の結果はダイレクト・テーブル22へのアドレス174として使用される。2タプル・パターン170はアドレス172によって示される行(この例では行47)の次に使用可能な項目に保管され、参照(たとえば、キュー)番号176は同じ行および項目に保管される。
この例では、5タプル・パターン152、3タプル・パターン160、および2タプル・パターン170がすべてダイレクト・テーブル22の同じ行の項目に保管される(また、複数の5タプル、3タプル、または2タプルを同じ行に保管することができる)ことに留意されたい。図3の例では、TCP/UDPハッシュ・プロセス154ならびにSYNハッシュ・プロセス164および172は、異なるハッシュ・キー・パターンを取っており、この特徴を示すためにダイレクト・テーブル22の同じアドレス(行47)を提供している。異なるハッシュ・アルゴリズムを使用することにより、単一テーブル22は複数タイプのパターンを任意の行に保管することができ、それにより、従来の実現例のように複数テーブルの非効率な使用が解消される。
加えて、テーブルの各行に複数の項目が保管され、それにより、ハッシュ・プロセスはアドレス指定するために使用可能なテーブル行の数を削減することができる(たとえば、ハッシュ・プロセス154、164、および172は可能なパターン範囲より小さいアドレス範囲をテーブル内に生成する)。たとえば、図3の行47でのパターン保管のために所定の数の項目が使用可能になる可能性がある。
いくつかの諸実施形態では、テーブル22の任意の特定の行内の使用可能なスペースからオーバーフローしたパターンを保管するための追加の項目を提供するために、オーバーフロー・ストレージ域も提供することができる。たとえば、追加の項目のリンク・リストを保管することができるか、またはテーブル22の構造と同様の2次テーブルが各行ごとのオーバーフロー・パターンを保管することができる。
図4は、ダイレクト・テーブル22内のネットワーク接続情報をサーチするための本発明の方法200を示す流れ図である。方法200は、ハードウェアで、たとえば、ネットワーク・アダプタ26上に実現された「サーチ・メカニズム」によって実現することができる。代わって、方法200は、ハードウェアまたはハードウェアとソフトウェアの組み合わせとして実現することができる。
方法200は概して、ダイレクト・テーブル22内のネットワーク接続情報をサーチする必要性が存在するときに開始される。新しい接続に関する情報は、概して、アダプタ26がネットワーク14によりクライアントからパケットを受信したときにサーチされる。このパケットは、5タプル・パターンを含むヘッダを含む。それが新しい接続を確立するためのSYNパケットである場合、それぞれ2タプルまたは3タプル・パターンをサーチするために、5タプル・パターンのうちの2つまたは3つのフィールドのみが使用される。それがすでに確立されている接続上での通信中に受信されたパケットである場合、この方法では5タプル・パターン全体を使用する。
この方法は202から始まり、ステップ204では、受信パケットがSYNパケットであるかどうかがチェックされる。そうである場合、プロセスはステップ206に進み、そこでSYNパケットのヘッダ内の受信パターンの特定のフィールドが検索され、他のフィールドはゼロにされ、サーチに使用するためのサーチ・パターンを作成し、ハッシュ・キーを決定する。サーチに使用するための3タプル・サーチ・パターンを作成するために、受信した3タプル・パラメータ(P、DP、DA)は、SAおよびSPフィールドがゼロにされたサーチ・パターンに含まれる。サーチに使用するための2タプル・サーチ・パターンおよびハッシュ・キーを作成するために、受信した2タプル・パラメータ(P、DP)は、SA、SP、およびDAフィールドがゼロにされたサーチ・パターンに含まれる。
次のステップ208では、テーブル22内のテーブル行のアドレスを決定するためにステップ206のハッシュ・キーを使用してSYNハッシュ手順が実行される。使用されるSYNハッシュ・アルゴリズムは、図2に関連して前に説明した通り、テーブル22に3タプルまたは2タプル接続情報を保管するときに使用されるものと同じである。本発明のSYNハッシュ・プロセスの一例については、図7に関連して以下に説明する。また、前に説明した通り、ハッシュ・プロセス以外の他のテーブル・アクセス・メカニズム/プロセスを使用して、行アドレスを決定することができる。ステップ210では、ステップ206のサーチ・パターンは、決定された行のテーブル項目に保管されたパターンと比較される(現行サーチについて初めてステップ208が実行された場合、テーブル項目はその行内の最初の項目になる)。したがって、3タプル・サーチ・パターンはそのパターンと比較され、2タプル・サーチ・パターンはそのパターンと比較される。3タプル・パターンを使用する比較は「1次」比較と見なすことができ、2タプル・パターンを使用する比較は「2次」比較と見なすことができる。
ステップ212では、2タプル・サーチ・パターンが現行テーブル項目内のパターンと一致する場合、すなわち、2次一致が行われた場合、プロセスはその情報をテーブル項目に保管する。この情報は、都合の良いバッファに保管することができ、テーブルに保管されたパターンおよびそのパターンに関連する参照情報を含むことができる。以下に記載する通り、テーブル行で1次一致がまったく見つからない場合、この情報はステップ224でプロセスの後半で使用することができる。
ステップ214では、プロセスは、3タプル・サーチ・パターンと、現行テーブル項目に保管されたパターンとの間に一致が存在するかどうかをチェックする。1次一致が存在する場合、ステップ216では、一致パターン項目が所望の接続として取られ、受信パケットを経路指定すべき接続およびサーバ・アプリケーション16を決定するためにテーブル22内の一致パターンに関連するキュー番号(またはその他のタイプの参照情報)が読み取られる。次にプロセスは218で完了する。
ステップ214で3タプル・サーチ・パターンとパターンとの一致がまったく存在しない場合、プロセスはステップ220に進み、そこでプロセスは、まだ比較されていないパターンを保持する項目がこのテーブル行にそれ以上存在するかどうかをチェックする。そうである場合、ステップ222でテーブル項目ポインタはそのテーブル行内の次の項目に移動し、プロセスはステップ210に戻って、サーチ・パターンとこの次のテーブル項目に保管されたパターンとを比較する。上述の通り、いくつかの諸実施形態では、オーバーフローの場合にその行に関する追加のパターンを保管する追加の項目を提供するために、追加のテーブルまたはその他のストレージ構造を使用することができる。
ステップ214で1次一致がまったく見つからず、ステップ220で比較するための項目がそのテーブル行にそれ以上存在しない場合、プロセスはステップ224に進み、そこで、その行の第1の2タプル2次一致が所望の接続として取られる。この第1の2次一致項目情報は、現行行について2次一致が見つかるたびにステップ212で2次一致項目情報が保管されたバッファから分かる。受信パケットを経路指定すべき接続およびサーバ・アプリケーション16を決定するためにテーブル22内の一致パターンに関連する参照情報(キュー番号)が読み取られ、プロセスは218で完了する。
204のチェックで受信パケットが非SYNパケットであると判定された場合、プロセスはステップ226に進み、そこで、ハッシュ・キーとしてパケットのヘッダに提供されるフル・パターンを使用してTCP/UDPハッシュ操作が実行される。本発明のTCP/UDPハッシュ・プロセスの一例については、図8に関連して以下に説明する。ステップ228では、受信したフル・パターンは、サーチ・パターンとして使用され、ステップ226のハッシュ操作の結果によって指し示されるテーブル行内のテーブル項目に保管された5タプル・パターンと比較される(ステップ228が初めて実行された場合、テーブル項目はその行内の最初の項目になる)。前に説明した通り、使用される各テーブル項目は、パターンおよび参照情報を保管する。
ステップ230では、プロセスは、サーチ・パターンと、そのテーブルに保管されたパターンとの間に一致が存在するかどうかをチェックする。存在しない場合、ステップ232では、テーブル項目ポインタはそのテーブル行内の次の項目に移動し、プロセスはステップ228に戻って、サーチ・パターンとこの次のテーブル項目に保管されたパターンとを比較する。ステップ230で一致が存在する場合、プロセスはステップ216に進み、そこで、一致パターン項目が所望の接続として取られ、受信パケットを経路指定すべき接続およびサーバ・アプリケーション16を決定するためにテーブル項目内の一致パターンに関連するキュー番号(またはその他の参照情報)が読み取られる。一致接続情報は、それをアプリケーション16に転送するためにサーバ・システム10の適切なコンポーネントに提供することができる。次にプロセスは218で完了する。
代替諸実施形態では、比較し、3タプルおよび2タプルについて1次一致と2次一致を見つけるために、他の方法を使用することができる。たとえば、2次一致情報を保管するステップ212はスキップすることができ、その行の項目(およびその行に関する任意のオーバーフロー項目)に保管されたすべてのパターンが3タプル・サーチ・パターンと一致しないと判明した後でのみ、2タプル・サーチ・パターンをその行に保管されたパターンと比較することができる。
図5は、図4に関連して上述した通り、新しい接続を確立するためにSYNパケットが受信されたときに本発明により行われるダイレクト・テーブル内の接続情報のサーチを示す概略図250である。
第1の例では、パターン252は、受信SYNパケット内の情報から作成される。それはSYNパケットであるので、ダイレクト・テーブル22内で3タプルまたは2タプル・パターンをサーチしなければならない。図示の通り、3タプル・サーチ・パターン254を作成するために、作成されたパターンのSAおよびSPフィールドがゼロにされる。ハッシュ・キー256(これは2タプル・サーチ・パターンでもある)を作成するために、受信パターンのDAフィールドがさらにゼロにされる。SYNハッシュ・プロセス258の結果として、ダイレクト・テーブル22内の行へのインデックスまたはアドレス260が得られ、それはこの例では行「47」である。次に、3タプル・サーチ・パターン254は、その行内の(第1の)テーブル項目に保管されたパターン261と比較される。パターン261は5タプル・パターンであるので、一致はまったく存在せず、したがって、プロセスはその行内の次の項目に移動し、3タプル・サーチ・パターンとパターン262とを比較する。この例では、パターン間の一致が存在し、その結果、パターンに関連するキュー番号264が検索される。図4の方法によれば、3タプル・サーチ・パターンが比較されるのと同時に、ハッシュ・キー256と同じ2タプル・サーチ・パターンがさらに同時にパターン261および262と比較されるが、パターン261は2タプル・サーチ・パターンと一致せず、パターン262は3タプル・サーチ・パターンと一致していたので、これらの比較はこの例では不適切なものである。
他の例では、パターン270は、受信SYNパケット内の情報から作成される。パターン270内のDAフィールド271はパターン252のDAフィールドとは異なるものである。3タプル・サーチ・パターン272を作成するために、作成されたパターンのSAおよびSPフィールドがゼロにされる。2タプル・サーチ・パターン/ハッシュ・キー274を作成するために、パターンのDAフィールドがゼロにされる。SYNハッシュ・プロセス276の結果として、ダイレクト・テーブル22内の行へのインデックスまたはアドレス278が得られ、この例では行「47」である(これは上述の例と同じ行である)。次に、3タプル・サーチ・パターン272および2タプル・サーチ・パターン274は、その行内の(第1の)テーブル項目に保管されたパターン261と比較される。パターン261は5タプル・パターンであるので、一致はまったく存在せず、したがって、プロセスはその行内の次の項目に移動し、3タプルおよび2タプル・サーチ・パターンとパターン262とを比較する。この例では、やはり一致がまったく存在しない。同様に、3タプルおよび2タプル・サーチ・パターンは、その行内の次の項目であるパターン266と比較される。この場合、3タプル・パターンは一致しないが、2タプル・パターンについては2次一致が見つかり、したがって、項目情報が保管される(図4のステップ212)。この例では、サーチ・パターンのこの比較はその行内のすべての項目(任意のオーバーフロー項目を含む)について続行され、点線276によって示される通り、その行内のどの項目についても1次一致はまったく見つからない。したがって、その行から第1の2次一致が選択される。この例では、第1の2次一致はパターン266に関するものである。受信パケットを経路指定すべき接続を決定するためにパターン266に関連するキュー番号280がストレージから検索される。
図6は、図4に関連して上述した通り、非SYNパケットが受信されたときに本発明により行われるダイレクト・テーブル22内の接続情報のサーチを示す概略図300である。
図示の例では、受信した非SYNパケットは、5タプル・パターン302を有するヘッダを含む。これは非SYNパケットであるので、5タプル・パターンは変更する必要はなく、ダイレクト・テーブル22用のサーチ・パターンとして直接使用することができる。5タプル・パターン302と同じであるハッシュ・キーがTCP/UDPハッシュ・プロセス304に使用され、その結果、ダイレクト・テーブル22内の行へのインデックスまたはアドレス306が得られ、この場合、行「47」である。5タプル・サーチ・パターン302は、そのテーブル項目に保管されたパターン308と比較される。この例では、パターン間の一致が存在し、その結果、テーブル22に保管され、パターン308に関連する参照情報(たとえば、キュー番号)310が検索される。一致がまったく見つからなかった場合、任意の一杯になったオーバーフロー項目を含む、その行の次の項目内のパターンなどが比較されることになるであろう。
図7および図8は、本発明とともに使用できるハッシュ・プロセスを示している。これらの例では、上述の5タプルの代わりに、6タプルの接続情報が使用される。2005年4月1日に出願され、「Network Communications for Operating System Partitions」という発明の名称の同時係属の米国特許出願第11/097051号に記載されている通り、論理ポートを使用する本発明の一実現例の場合、論理ポート(LP)番号およびプロトコル(TCPまたはUDP)を識別するために、この追加のタプルが使用される。接続情報パターンの残りの部分は上述のものと同じである。これらのプロセスは、この追加のタプルを使用しない他の諸実施形態では適切に変更することができる。ハッシュ出力番号は、入力キーに対する1対1対応を備えたnビット番号である。
図7は、図2のステップ108および図4のステップ208で使用することができる本発明のSYNハッシュ・プロセス350を示している。6タプル・パターン352は、2タプル接続情報(SA、SP、およびDAはゼロにされている)を含み、SYNハッシュ・プロセス350においてハッシュ・キーとして使用されるものである。パターン354を作成するために、パターン352の全バイトは図示の通りスワップされる。このスワッピングは、「エントロピ」(最大の変動(the most variation))が左側の最上位ビット内にあり、その結果、ダイレクト・テーブル22内のパターンの分散が最も効率的になるように選択される。最大のエントロピ(themost entropy)を含む元のキーのバイト・フィールドをそのキーの最上位バイトに移動することにより、最大出力エントロピはハッシュ・プロセスの最上位ビットに含まれる。この例では、スワッピング前のキーはABCDEFGHIJKLM000であり、スワップ後のパターンはKLMGHABCDEFIJ000である。
パターン356を作成するために追加のスワッピングが実行され、それぞれの32ビットは32ビット・ハッシュ358の対象となる。このハッシュ358は、標準的なハッシュ・アルゴリズムにすることができる。結果的に、ハッシュ・プロセスの結果である最終的な32ビット・パターンが得られるように、ハッシュの結果は図示の通りステージ360でXORが取られる。ダイレクト・テーブル22へのインデックスを計算するために、その結果の最上位ビット(ダイレクト・テーブルに必要なもの)が使用される。
図8は、図2のステップ120および図4のステップ226で使用することができる本発明のTCP/UDPハッシュ・プロセス370を示している。6タプル・パターン372は、5タプル接続情報を含み、ハッシュ・プロセス370においてハッシュ・キーとして使用されるものである。パターン374を作成するために、パターン372の全バイトは図示の通りスワップされる。このスワッピングは、上述のプロセス350と同様に、エントロピが最上位ビット内にあるように選択される。この例では、スワッピング前のキーはABCDEFGHIJKLM000であり、スワップ後のパターンはCDIJABEFGHKLM000である。
パターン376を作成するために追加のスワッピングが実行され、それぞれの32ビットは32ビット・ハッシュ378の対象となる。このハッシュ378は、標準的なハッシュ・アルゴリズムにすることができる。結果的に、ハッシュ・プロセスの結果である最終的な32ビット・パターンが得られるように、ハッシュの結果は図示の通りステージ380でXORが取られる。ダイレクト・テーブル22へのインデックスを計算するために、その結果の最上位ビット(ダイレクト・テーブルに必要なもの)が使用される。
図示の諸実施形態により本発明を説明してきたが、当業者であれば、この諸実施形態に対する変形が可能であり、これらの変形が本発明の精神および範囲内になることを容易に認識するであろう。したがって、特許請求の範囲の精神および範囲を逸脱せずに、当業者により多くの変更を行うことができる。
本発明とともに使用するのに適したシステムの一例のブロック図である。 ネットワーク接続情報をダイレクト・テーブルに保管するための本発明の方法を示す流れ図である。 本発明によりダイレクト・テーブルへの接続情報の保管の一例を示す概略図である。 本発明のサーチ・メカニズムの基本的一実施形態の動作を示す流れ図である。 新しい接続を確立するためにパケットが受信されたときに本発明により行われるダイレクト・テーブル内の接続情報のサーチを示す概略図である。 確立された接続についてパケットが受信されたときに本発明により行われるダイレクト・テーブル内の接続情報のサーチを示す概略図である。 本発明のハッシュ・プロセスを示すブロック図である。 本発明のハッシュ・プロセスを示すブロック図である。
符号の説明
10:サーバ・システム
12:クライアント・コンピュータ
14:ネットワーク接続
16:サーバ・アプリケーション
20:TCP/IPスタック
22:ダイレクト・テーブル
24:メイン・メモリ
26:ネットワーク・アダプタ

Claims (17)

  1. ネットワーク接続をサーチするための方法であって、
    コンピュータ・システムにおいてネットワークからパケットを受信し、前記パケットから接続情報を検索し、新しい接続を確立する場合に前記接続情報内の特定のフィールドをゼロにするステップと、
    ハッシュ・プロセスを使用して、前記接続情報を、新しい接続および既存の接続に関するパターンおよび関連する参照情報を保管するダイレクト・テーブル内の位置に関するアドレスに変換するステップと、
    前記受信パケットに関する参照情報を見つけるために、前記ダイレクト・テーブル内の前記アドレスによって指し示された前記位置に保管された少なくとも1つのパターンと前記接続情報を比較するステップとを含み、
    前記接続情報を新しい接続に関する前記ダイレクト・テーブル内のパターンと比較するときに、第1のハッシュ・プロセスを使用して前記ダイレクト・テーブルの前記位置への前記アドレスが提供され、前記接続情報を確立された接続に関する前記ダイレクト・テーブル内のパターンと比較するときに、第2の異なるハッシュ・プロセスを使用して前記位置への前記アドレスが提供される
    方法。
  2. 前記参照情報が、記受信パケットを送信するための前記コンピュータ・システム内の接続を示す、請求項1に記載の方法。
  3. 前記参照情報が前記パターンと同じ前記ダイレクト・テーブルの項目に保管され、前記接続情報と前記パターンとの一致により、前記項目に保管された前記参照情報を前記ダイレクト・テーブルから検索することができる、請求項2に記載の方法。
  4. ハッシュ・プロセスを使用して前記接続情報をアドレスに変換する前記ステップが、前記接続情報から導出されるハッシュ・キーを使用することを含む、請求項に記載の方法。
  5. 前記ハッシュ・プロセスが、最大エントロピを含む前記ハッシュ・キーのバイト・フィールドを前記ハッシュ・キーの最上位のバイトに移動する、請求項に記載の方法。
  6. 前記ダイレクト・テーブルが、2つのフィールドがゼロにされた3タプル・パターンと、3つのフィールドがゼロにされた2タプル・パターンと、どのフィールドもゼロにされていない5タプル・パターンとを保管し、前記ダイレクト・テーブルの任意の項目にこれらのタイプのパターンのいずれかを保管することができる、請求項に記載の方法。
  7. 検索された前記接続情報全体が、5タプル・パターンとして使用され、前記ダイレクト・テーブルに保管される、確立された接続に関するパターンと比較され、特定のフィールドがゼロにされた前記接続情報が、3タプル・パターンまたは2タプル・パターンとして使用され、前記ダイレクト・テーブルに保管される、新しい接続に関するパターンと比較される、請求項1に記載の方法。
  8. 前記接続情報を比較する前記ステップが、3タプル・サーチ・パターンを使用して1次比較を行うことと、2タプル・サーチ・パターンを使用して2次比較を行うことを含み、パターンに対する1次一致がまったく見つからない場合に、前記受信パケットに関する前記参照情報を決定するために2次一致が使用される、請求項1に記載の方法。
  9. 前記受信パケットに関する前記参照情報を決定するために、前記ダイレクト・テーブル内のパターンに対する前記2タプル・サーチ・パターンの第1の2次一致が使用される、請求項に記載の方法。
  10. ネットワーク接続情報を保管するための方法であって、
    前記ネットワーク接続情報を受け取るステップと、
    前記ネットワーク接続情報が新しい接続を参照する場合に前記ネットワーク接続情報内の特定のフィールドをゼロにするステップと、
    ハッシュ・プロセスを使用して、前記ネットワーク接続情報をダイレクト・テーブル内のアドレスに変換するステップと、
    前記ダイレクト・テーブル内の前記アドレスに対応する位置に、パターンとしての前記接続情報と接続参照情報とを保管するステップとを含み、
    前記ダイレクト・テーブルは、新しい接続および既存の接続に関する接続情報および参照情報を保管し
    新しい接続に関する3タプル・パターンおよび2タプル・パターンを保管するときに、第1のハッシュ・プロセスを使用して前記ダイレクト・テーブルへの前記アドレスが提供され、確立された接続に関する5タプル・パターンを保管するときに、第2の異なるハッシュ・プロセスを使用して前記ダイレクト・テーブルへの前記アドレスが提供される、
    方法。
  11. ネットワーク接続に関する前記接続参照情報が前記パターンと同じ前記ダイレクト・テーブルの項目に保管され、ネットワーク接続情報を含むパケットが受信されたときに、前記ネットワーク接続情報と前記パターンとの一致により、前記項目に保管された前記参照情報を前記ダイレクト・テーブルから検索することができる、請求項10に記載の方法。
  12. ハッシュ・プロセスを使用して前記接続情報をアドレスに変換する前記ステップが、前記接続情報から導出されるハッシュ・キーを使用することを含む、請求項10に記載の方法。
  13. 前記ダイレクト・テーブルが、2つのフィールドがゼロにされた3タプル・パターンと、3つのフィールドがゼロにされた2タプル・パターンと、どのフィールドもゼロにされていない5タプル・パターンとを保管し、前記ダイレクト・テーブルの任意の項目にこれらのタイプのパターンのいずれかを保管することができる、請求項12に記載の方法。
  14. 前記ネットワーク接続情報内の特定のフィールドをゼロにする前記ステップが、3タプル・パターンまたは2タプル・パターンを作成するために複数フィールドをゼロにすることを含み、前記パターン内のソース・アドレスおよびソース・ポート・フィールドをゼロにすることにより前記3タプル・パターンが作成され、前記パターン内のソース・アドレス、ソース・ポート、および宛先アドレス・フィールドをゼロにすることにより前記2タプル・パターンが作成される、請求項10に記載の方法。
  15. 確立された接続に関するパターンを保管するときに、前記接続情報が5タプル・パターンとして前記ダイレクト・テーブルに保管され、新しい接続に関するパターンを保管するときに、前記接続情報が前記特定のフィールドがゼロにされた3タプル・パターンまたは2タプル・パターンとして前記ダイレクト・テーブルに保管される、請求項10に記載の方法。
  16. 接続がセットアップされることをサーバ・アプリケーションが要求するときに、新しい接続に関するパターンおよび参照情報が前記ダイレクト・テーブルに保管される、請求項10に記載の方法。
  17. 前記ダイレクト・テーブルを保管するサーバにおいてネットワークを越えてクライアントからパケットが受信されるときに、確立された接続に関するパターンおよび参照情報が前記ダイレクト・テーブルに保管される、請求項10に記載の方法。
JP2006094101A 2005-04-01 2006-03-30 ネットワーク接続テーブルを提供するための方法および装置 Expired - Fee Related JP4716909B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/096571 2005-04-01
US11/096,571 US7577151B2 (en) 2005-04-01 2005-04-01 Method and apparatus for providing a network connection table

Publications (2)

Publication Number Publication Date
JP2006287932A JP2006287932A (ja) 2006-10-19
JP4716909B2 true JP4716909B2 (ja) 2011-07-06

Family

ID=37030891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006094101A Expired - Fee Related JP4716909B2 (ja) 2005-04-01 2006-03-30 ネットワーク接続テーブルを提供するための方法および装置

Country Status (3)

Country Link
US (1) US7577151B2 (ja)
JP (1) JP4716909B2 (ja)
CN (1) CN100536416C (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060029000A1 (en) * 2004-05-14 2006-02-09 International Business Machines Corporation Connection establishment in a proxy server environment
US8250229B2 (en) * 2005-09-29 2012-08-21 International Business Machines Corporation Internet protocol security (IPSEC) packet processing for multiple clients sharing a single network address
US8027969B2 (en) * 2005-12-29 2011-09-27 Sap Ag Efficient calculation of sets of distinct results in an information retrieval service
JP4829633B2 (ja) * 2006-02-14 2011-12-07 株式会社リコー 機器情報取得装置及び機器情報取得プログラム
CN100407705C (zh) * 2006-04-12 2008-07-30 华为技术有限公司 一种路由器控制方法和系统
US7852850B2 (en) * 2006-04-26 2010-12-14 Marvell Israel (M.I.S.L.) Ltd. Double-hash lookup mechanism for searching addresses in a network device
US7715428B2 (en) * 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US7953895B1 (en) * 2007-03-07 2011-05-31 Juniper Networks, Inc. Application identification
KR101160382B1 (ko) * 2008-04-04 2012-06-26 캐논 가부시끼가이샤 세션 관리 시스템 및 그 제어 방법
ES2371378T3 (es) * 2008-04-04 2011-12-30 Canon Kabushiki Kaisha Sistema de gestión de sesiones y método para controlar las mismas.
JP5178539B2 (ja) * 2008-04-04 2013-04-10 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、セッション管理システム並びにプログラム
TW201031141A (en) * 2009-02-04 2010-08-16 Univ Nat Taiwan Packets inspection device and method
US20130185430A1 (en) * 2012-01-18 2013-07-18 LineRate Systems, Inc. Multi-level hash tables for socket lookups
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
CN106341319B (zh) * 2016-08-29 2019-05-03 烽火通信科技股份有限公司 一种CPE设备基于Linux架构的路由加速系统及方法
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
CN108076427B (zh) * 2017-12-12 2021-04-27 洛阳理工学院 一种连接网络的方法、装置和网络适配器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000349851A (ja) * 1999-06-02 2000-12-15 Fujitsu Ltd パケット転送装置
JP2001156840A (ja) * 1999-11-25 2001-06-08 Nec Corp フロー識別装置、フロー処理装置、フロー識別方法及びフロー処理方法
JP2002185511A (ja) * 2000-12-15 2002-06-28 Oki Electric Ind Co Ltd データグラム転送装置
JP2002359637A (ja) * 2001-03-27 2002-12-13 Fujitsu Ltd パケット中継処理装置

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US672769A (en) * 1901-02-23 1901-04-23 John Stanley Holme Method of forming ends of railway-rails for splicing.
US5058110A (en) 1989-05-03 1991-10-15 Ultra Network Technologies Protocol processor
EP0549924A1 (en) * 1992-01-03 1993-07-07 International Business Machines Corporation Asynchronous co-processor data mover method and means
US5430842A (en) 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
US5752078A (en) 1995-07-10 1998-05-12 International Business Machines Corporation System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
US6233686B1 (en) * 1997-01-17 2001-05-15 At & T Corp. System and method for providing peer level access control on a network
US5983274A (en) 1997-05-08 1999-11-09 Microsoft Corporation Creation and use of control information associated with packetized network data by protocol drivers and device drivers
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6658002B1 (en) 1998-06-30 2003-12-02 Cisco Technology, Inc. Logical operation unit for packet processing
US6970419B1 (en) 1998-08-07 2005-11-29 Nortel Networks Limited Method and apparatus for preserving frame ordering across aggregated links between source and destination nodes
DE19836700A1 (de) 1998-08-13 2000-02-17 Hoechst Schering Agrevo Gmbh Herbizide Mittel für tolerante oder resistente Getreidekulturen
US6650640B1 (en) 1999-03-01 2003-11-18 Sun Microsystems, Inc. Method and apparatus for managing a network flow in a high performance network interface
US6400730B1 (en) 1999-03-10 2002-06-04 Nishan Systems, Inc. Method and apparatus for transferring data between IP network devices and SCSI and fibre channel devices over an IP network
US6937574B1 (en) 1999-03-16 2005-08-30 Nortel Networks Limited Virtual private networks and methods for their operation
GB2352360B (en) 1999-07-20 2003-09-17 Sony Uk Ltd Network terminator
US6427169B1 (en) 1999-07-30 2002-07-30 Intel Corporation Parsing a packet header
US7130958B2 (en) * 2003-12-02 2006-10-31 Super Talent Electronics, Inc. Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes
US6724769B1 (en) 1999-09-23 2004-04-20 Advanced Micro Devices, Inc. Apparatus and method for simultaneously accessing multiple network switch buffers for storage of data units of data frames
US6788697B1 (en) 1999-12-06 2004-09-07 Nortel Networks Limited Buffer management scheme employing dynamic thresholds
US6822968B1 (en) 1999-12-29 2004-11-23 Advanced Micro Devices, Inc. Method and apparatus for accounting for delays caused by logic in a network interface by integrating logic into a media access controller
US20020112076A1 (en) * 2000-01-31 2002-08-15 Rueda Jose Alejandro Internet protocol-based computer network service
US7308006B1 (en) 2000-02-11 2007-12-11 Lucent Technologies Inc. Propagation and detection of faults in a multiplexed communication system
US6988235B2 (en) 2000-03-02 2006-01-17 Agere Systems Inc. Checksum engine and a method of operation thereof
US7334216B2 (en) * 2000-04-04 2008-02-19 Sosy, Inc. Method and apparatus for automatic generation of information system user interfaces
US6735670B1 (en) 2000-05-12 2004-05-11 3Com Corporation Forwarding table incorporating hash table and content addressable memory
US6678746B1 (en) 2000-08-01 2004-01-13 Hewlett-Packard Development Company, L.P. Processing network packets
US6754662B1 (en) 2000-08-01 2004-06-22 Nortel Networks Limited Method and apparatus for fast and consistent packet classification via efficient hash-caching
EP1305931B1 (en) * 2000-08-04 2006-06-28 Avaya Technology Corp. Method and system for demand driven recognition of connection oriented transactions
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US7218632B1 (en) 2000-12-06 2007-05-15 Cisco Technology, Inc. Packet processing engine architecture
US6954463B1 (en) 2000-12-11 2005-10-11 Cisco Technology, Inc. Distributed packet processing architecture for network access servers
US7131140B1 (en) * 2000-12-29 2006-10-31 Cisco Technology, Inc. Method for protecting a firewall load balancer from a denial of service attack
US7023811B2 (en) 2001-01-17 2006-04-04 Intel Corporation Switched fabric network and method of mapping nodes using batch requests
US7149817B2 (en) 2001-02-15 2006-12-12 Neteffect, Inc. Infiniband TM work queue to TCP/IP translation
US6728929B1 (en) 2001-02-16 2004-04-27 Spirent Communications Of Calabasas, Inc. System and method to insert a TCP checksum in a protocol neutral manner
US20020138648A1 (en) * 2001-02-16 2002-09-26 Kuang-Chih Liu Hash compensation architecture and method for network address lookup
US7292586B2 (en) 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
US7274706B1 (en) 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
JP3936550B2 (ja) 2001-05-14 2007-06-27 富士通株式会社 パケットバッファ
US7164678B2 (en) 2001-06-25 2007-01-16 Intel Corporation Control of processing order for received network packets
US20030026252A1 (en) * 2001-07-31 2003-02-06 Thunquest Gary L. Data packet structure for directly addressed multicast protocol
US6976205B1 (en) 2001-09-21 2005-12-13 Syrus Ziai Method and apparatus for calculating TCP and UDP checksums while preserving CPU resources
US7124198B2 (en) 2001-10-30 2006-10-17 Microsoft Corporation Apparatus and method for scaling TCP off load buffer requirements by segment size
US6907466B2 (en) 2001-11-08 2005-06-14 Extreme Networks, Inc. Methods and systems for efficiently delivering data to a plurality of destinations in a computer network
WO2003043271A1 (en) 2001-11-09 2003-05-22 Vitesse Semiconductor Corporation A means and a method for switching data packets or frames
US7286557B2 (en) 2001-11-16 2007-10-23 Intel Corporation Interface and related methods for rate pacing in an ethernet architecture
US7236492B2 (en) 2001-11-21 2007-06-26 Alcatel-Lucent Canada Inc. Configurable packet processor
WO2003049488A1 (en) 2001-12-03 2003-06-12 Vitesse Semiconductor Company Interface to operate groups of inputs/outputs
US8370936B2 (en) * 2002-02-08 2013-02-05 Juniper Networks, Inc. Multi-method gateway-based network security systems and methods
US7254138B2 (en) * 2002-02-11 2007-08-07 Optimum Communications Services, Inc. Transparent, look-up-free packet forwarding method for optimizing global network throughput based on real-time route status
US7269661B2 (en) 2002-02-12 2007-09-11 Bradley Richard Ree Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet
US7047374B2 (en) 2002-02-25 2006-05-16 Intel Corporation Memory read/write reordering
US7283528B1 (en) 2002-03-22 2007-10-16 Raymond Marcelino Manese Lim On the fly header checksum processing using dedicated logic
US7304941B2 (en) 2002-04-11 2007-12-04 International Business Machines Corporation Switchover system and method in a data packet switching network
US20040030766A1 (en) 2002-08-12 2004-02-12 Michael Witkowski Method and apparatus for switch fabric configuration
US7251704B2 (en) 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US7031304B1 (en) 2002-09-11 2006-04-18 Redback Networks Inc. Method and apparatus for selective packet Mirroring
KR100486713B1 (ko) 2002-09-17 2005-05-03 삼성전자주식회사 멀티미디어 스트리밍 장치 및 방법
US7271706B2 (en) 2002-10-09 2007-09-18 The University Of Mississippi Termite acoustic detection
KR100454681B1 (ko) 2002-11-07 2004-11-03 한국전자통신연구원 프레임 다중화를 이용한 이더넷 스위칭 장치 및 방법
KR100460672B1 (ko) 2002-12-10 2004-12-09 한국전자통신연구원 10 기가비트 이더넷 회선 정합 장치 및 그 제어 방법
US20040218623A1 (en) 2003-05-01 2004-11-04 Dror Goldenberg Hardware calculation of encapsulated IP, TCP and UDP checksums by a switch fabric channel adapter
US7298761B2 (en) * 2003-05-09 2007-11-20 Institute For Information Industry Link path searching and maintaining method for a bluetooth scatternet
US7418505B2 (en) * 2003-05-26 2008-08-26 Ewha University Industry Collaboration Foundation IP address lookup using either a hashing table or multiple hash functions
CN100356752C (zh) * 2003-06-14 2007-12-19 华为技术有限公司 一种网络地址资源的利用方法
US20050022017A1 (en) * 2003-06-24 2005-01-27 Maufer Thomas A. Data structures and state tracking for network protocol processing
CN100358288C (zh) * 2003-07-12 2007-12-26 华为技术有限公司 在网络设备中处理五元流组的方法
US7098685B1 (en) 2003-07-14 2006-08-29 Lattice Semiconductor Corporation Scalable serializer-deserializer architecture and programmable interface
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
JP4437650B2 (ja) 2003-08-25 2010-03-24 株式会社日立製作所 ストレージシステム
US7441179B2 (en) 2003-10-23 2008-10-21 Intel Corporation Determining a checksum from packet data
US7219294B2 (en) 2003-11-14 2007-05-15 Intel Corporation Early CRC delivery for partial frame
US20050114663A1 (en) 2003-11-21 2005-05-26 Finisar Corporation Secure network access devices with data encryption
US7292591B2 (en) 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US7502474B2 (en) 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
US7272704B1 (en) 2004-05-13 2007-09-18 Verisilicon Holdings (Cayman Islands) Co. Ltd. Hardware looping mechanism and method for efficient execution of discontinuity instructions
US7461183B2 (en) 2004-08-03 2008-12-02 Lsi Corporation Method of processing a context for execution
US7134796B2 (en) 2004-08-25 2006-11-14 Opnext, Inc. XFP adapter module
US7436773B2 (en) 2004-12-07 2008-10-14 International Business Machines Corporation Packet flow control in switched full duplex ethernet networks
US8040903B2 (en) 2005-02-01 2011-10-18 Hewlett-Packard Development Company, L.P. Automated configuration of point-to-point load balancing between teamed network resources of peer devices
US7620754B2 (en) 2005-03-25 2009-11-17 Cisco Technology, Inc. Carrier card converter for 10 gigabit ethernet slots

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000349851A (ja) * 1999-06-02 2000-12-15 Fujitsu Ltd パケット転送装置
JP2001156840A (ja) * 1999-11-25 2001-06-08 Nec Corp フロー識別装置、フロー処理装置、フロー識別方法及びフロー処理方法
JP2002185511A (ja) * 2000-12-15 2002-06-28 Oki Electric Ind Co Ltd データグラム転送装置
JP2002359637A (ja) * 2001-03-27 2002-12-13 Fujitsu Ltd パケット中継処理装置

Also Published As

Publication number Publication date
JP2006287932A (ja) 2006-10-19
US20060221977A1 (en) 2006-10-05
CN1842042A (zh) 2006-10-04
CN100536416C (zh) 2009-09-02
US7577151B2 (en) 2009-08-18

Similar Documents

Publication Publication Date Title
JP4716909B2 (ja) ネットワーク接続テーブルを提供するための方法および装置
US7039018B2 (en) Technique to improve network routing using best-match and exact-match techniques
KR100705593B1 (ko) 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법
US9825860B2 (en) Flow-driven forwarding architecture for information centric networks
US6980550B1 (en) Method and apparatus for server load balancing
US6389419B1 (en) Storing and retrieving connection information using bidirectional hashing of connection identifiers
JP4902635B2 (ja) 接続転送
US8681791B2 (en) Outbound transmission of packet based on routing search key constructed from packet destination address and outbound interface
JP5525273B2 (ja) 階層的に構造化された可変長識別子を有するパケットを転送するためのシステム
US7916656B2 (en) Providing a symmetric key for efficient session identification
EP2869515A1 (en) System and method for minimum path mtu discovery in content centric networks
WO2014127605A1 (zh) 基于哈希表和tcam表的mac地址硬件学习方法及系统
US20080225874A1 (en) Stateful packet filter and table management method thereof
WO2012120473A1 (en) Load balancing sctp associations using vtag mediation
EP2826213A1 (en) Method and system for fast and large-scale longest prefix matching
US7136385B2 (en) Method and system for performing asymmetric address translation
TWI241089B (en) Method and apparatus to perform network routing using multiple length trie blocks
TW200406107A (en) Determining routing information for an information packet in accordance with a destination address and a device address
US20050138322A1 (en) System, apparatus, and method for string matching
US20020199017A1 (en) Routing meta data for network file access
US20120233240A1 (en) Sctp association endpoint relocation in a load balancing system
Hemalatha et al. Real time prefix matching based IP lookup and update mechanism for efficient routing in networks
JP2017123522A (ja) 通信装置、制御装置、通信システム、および、通信方法
Prodanoff et al. Managing routing tables for URL routers in content distribution networks
US20090271521A1 (en) Method and system for providing end-to-end content-based load balancing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110322

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees