(57)【要約】  様々な例示的実施形態は、方法および関連するネットワークノードに関し、以下のうちの１つまたは複数を含む：ネットワークノードで、第１のアドレスと関連しているパケットを識別するステップ、ネットワークノードで、第１のアドレスに対する代替アドレスマッピングがネットワークノードに知られていないことを決定するステップ、パケットの少なくとも一部に基づいて要求メッセージを作成するステップ、要求メッセージを異なるノードに送信するステップ、第２のアドレスを含んだ応答メッセージを受信するステップであって、第２のアドレスが第１のアドレスに対する代替アドレスである、ステップ、および第１のアドレスおよび第２のアドレスを代替アドレスマッピングとしてまとめて記憶するステップ。
2014511089.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークノードによって実施される、代替アドレスマッピングを決定するための方法であって、
ネットワークノードで、パケットの指示を含んだ要求メッセージを異なるノードから受信するステップ（８１０）と、
パケットの指示に基づいて、パケットと関連している第１のアドレスを識別するステップ（８３０）と、
第１のアドレスを含んだ応答メッセージを作成するステップ（８４０）と、
応答メッセージを異なるノードに送信するステップ（８５０）と
を含む、方法。
【請求項２】
パケットの指示が、パケット自体、パケットの一部、パケットからの少なくとも１つのヘッダフィールド、およびパケットの少なくとも一部のハッシュのうちの少なくとも１つである、請求項１に記載の方法。
【請求項３】
第１のアドレスを識別するステップが、
ハッシュキーを生成するために、パケットの指示の少なくとも一部に対してハッシュ関数を実施するステップと、
以前に記憶されたパケットの位置を特定するためにハッシュキーを使用するステップと
を含む、請求項１または２に記載の方法。
【請求項４】
要求メッセージが第２のアドレスを含み、
応答メッセージが第２のアドレスを含む
請求項１から３のいずれか一項に記載の方法。
【請求項５】
ネットワークノードおよび異なるノードのうちの少なくとも１つが、パケットの発信元および宛先のうちの少なくとも１つである、請求項１から４のいずれか一項に記載の方法。
【請求項６】
要求メッセージを受信する前にパケットを受信するステップ（７１０）と、
パケットの少なくとも一部をパケットキャッシュに記憶するステップ（７３０）と
をさらに含み、パケットと関連している第１のアドレスを識別するステップが、パケットの少なくとも一部から第１のアドレスを抽出するステップを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
パケットの指示が、ネットワークアドレス変換デバイスによって修正されていないパケットからのフィールドを含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
代替アドレスマッピングを決定するためのネットワークノードであって、
多数のパケットを記憶するためのパケットキャッシュ（５３０）と、
異なるノードと通信するためのインタフェース（５４０）と、
パケットの指示を含んだ要求メッセージをインタフェースを介して異なるノードから受信し（８１０）、
パケットの指示に基づいて、パケットと関連している第１のアドレスを識別する（８３０）
ための要求メッセージ解釈部（５５０）と、
第１のアドレスを含んだ応答メッセージを作成し（８４０）、
応答メッセージを異なるノードに送信する（８５０）
ための応答メッセージ生成部（５６０）と
を備える、ネットワークノード。
【請求項９】
パケットの指示が、パケット、パケットの一部、パケットからの少なくとも１つのヘッダフィールド、およびパケットの少なくとも一部のハッシュのうちの少なくとも１つである、請求項８に記載のネットワークノード。
【請求項１０】
第１のアドレスを識別するステップにおいて、要求メッセージ解釈部が、
ハッシュキーを生成するために、パケットの指示の少なくとも一部に対してハッシュ関数を実施し、
以前に記憶されたパケットの位置を特定するためにハッシュキーを使用する
請求項８または９に記載のネットワークノード。
【請求項１１】
要求メッセージが第２のアドレスを含み、
応答メッセージが第２のアドレスを含む
請求項８から１０のいずれか一項に記載のネットワークノード。
【請求項１２】
ネットワークノードおよび異なるノードのうちの少なくとも１つが、パケットの発信元および宛先のうちの少なくとも１つである、請求項８から１１のいずれか一項に記載のネットワークノード。
【請求項１３】
要求メッセージを受信する前にパケットを受信し（７１０）、
パケットの少なくとも一部をパケットキャッシュに記憶する（７３０）
のためのパケットキャッシュ管理部（５２０）をさらに備え、
パケットと関連している第１のアドレスを識別するステップが、パケットの少なくとも一部から第１のアドレスを抽出するステップを含む、請求項８から１２のいずれか一項に記載のネットワークノード。
【請求項１４】
パケットの指示が、ネットワークアドレス変換デバイスによって修正されていないパケットからのフィールドを含む、請求項８から１３のいずれか一項に記載のネットワークノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において開示される様々な例示的実施形態は、一般にネットワークアドレス指定に関する。
【背景技術】
【０００２】
インターネットならびに多くの他のネットワークのためのコアネットワーク層プロトコルは、現在、インターネットプロトコル（ＩＰ）バージョン４である。ＩＰｖ４の実施態様の下では、ネットワーク上の個々のノードは、３２ビットからなる少なくとも１つのＩＰアドレスに関連付けられている。したがってＩＰｖ４のためのアドレス空間は、有限数のアドレスに限られている。このアドレス空間は、インターネットに接続されるデバイスの数が比較的少数であった過去においては、それに適応するのに十分であったが、インターネットが多くのユーザによって広範囲にわたって採用されるようになるにつれて、このアドレス空間はやがて不十分になることが明らかになった。さらに、このような大規模ネットワークに接続される個々のデバイスに独自のＩＰアドレスが与えられることになると、複雑な編成が必要になる。
【０００３】
これらの課題の解決を促進するために、ネットワークアドレス変換（ＮＡＴ）技術が導入された。この方法を使用することにより、多数の異なるデバイスが単一のＩＰアドレスを共有することが可能になった。これらのデバイスは、単一のパブリックＩＰアドレスを共有している間、それら自身の観点とは異なるプライベートＩＰアドレスを有することになる。このような共有は、パブリックＩＰアドレスと関連した複数の論理ポートをこれらのデバイス間で分割することによって実施することができる。
【０００４】
ＮＡＴを実施するために、ＮＡＴデバイスを使用して、複数のパブリックＩＰ−ポート対と複数のプライベートＩＰ−ポート対の間の対応が維持される。ＮＡＴデバイスがこれらのデバイスのうちの１つから出力メッセージを受信すると、ＮＡＴデバイスは、メッセージ中の発信元アドレスおよびポートを、対応するパブリックＩＰアドレスおよびポートとスワップする。同様に、ＮＡＴデバイスが入力メッセージを受信すると、ＮＡＴデバイスは、メッセージ中の宛先アドレスおよびポートを、対応するプライベートＩＰアドレスおよびポートとスワップする。ＮＡＴデバイスは、インターネットサービスプロバイダ（ＩＳＰ）に割り当てられるＩＰアドレスのプールを有効に利用するためにより低い層のＩＳＰであれ、あるいは単一のパブリックＩＰアドレスを使用して多数のホームデバイスにインターネットアクセスを提供するためのホームルータ内であれ、インターネットの多くの異なるレベルで配置される。
【発明の概要】
【課題を解決するための手段】
【０００５】
様々な例示的実施形態は、ネットワークノードによって実施される、代替アドレスマッピングを決定するための方法に関し、この方法は、以下のうちの１つまたは複数を含む：ネットワークノードで、第１のアドレスと関連しているパケットを識別するステップ、ネットワークノードで、第１のアドレスに対する代替アドレスマッピングがネットワークノードに知られていないことを決定するステップ、パケットの少なくとも一部に基づいて要求メッセージを作成するステップ、要求メッセージを異なるノードに送信するステップ、第２のアドレスを含んだ応答メッセージを受信するステップであって、第２のアドレスが第１のアドレスに対する代替アドレスである、ステップ、および第１のアドレスおよび第２のアドレスを代替アドレスマッピングとしてまとめて記憶するステップ。
【０００６】
様々な例示的実施形態は、代替アドレスマッピングを決定するように構成されたネットワークノードに関し、ネットワークノードは、以下のうちの１つまたは複数を含む：２つのアドレス間の少なくとも１つのマッピングを記憶するためのアドレスマッピング記憶装置、異なるノードと通信するためのインタフェース、第１のアドレスと関連しているパケットを識別し、アドレスマッピング記憶装置が第１のアドレスに対するマッピングを記憶していないことを決定するための代替アドレス識別子、パケットの少なくとも一部に基づいて要求メッセージを作成し、インタフェースを介して要求メッセージを異なるノードに送信するための要求メッセージ生成部、および第１のアドレスに対する代替アドレスである第２のアドレスを含んだ応答メッセージをインタフェースを介して異なるノードから受信し、第１のアドレスおよび第２のアドレスをまとめてアドレスマッピング記憶装置に記憶するための命令を受信するための応答メッセージ解釈部。
【０００７】
様々な例示的実施形態は、代替アドレスマッピングを決定するためのネットワークノードによって実行される命令が符号化された機械可読記憶媒体に関し、機械可読記憶媒体は、以下のうちの１つまたは複数を含む：ネットワークノードで、第１のアドレスと関連しているパケットを識別するための命令、ネットワークノードで、第１のアドレスに対する代替アドレスマッピングがネットワークノードに知られていないことを決定するための命令、パケットの少なくとも一部に基づいて要求メッセージを作成するための命令、要求メッセージを異なるノードに送信するための命令、第１のアドレスに対する代替アドレスである第２のアドレスを含んだ応答メッセージを受信するための命令、および第１のアドレスおよび第２のアドレスを代替アドレスマッピングとしてまとめて記憶するための命令。
【０００８】
様々な代替実施形態が説明されており、要求メッセージは、パケット、少なくとも１つの追加パケット、パケットの少なくとも１つのフィールドおよびパケットの少なくとも一部のハッシュのうちの少なくとも１つを含む。様々な代替実施形態が説明されており、ネットワークノードおよび異なるノードのうちの少なくとも１つは、パケットの発信元および宛先のうちの少なくとも１つである。様々な代替実施形態が説明されており、第１のアドレスは、第１のネットワークアドレス変換（ＮＡＴ）デバイスの第１の側のパケットに関連付られ、また、第２のアドレスは、第２のＮＡＴデバイスの第２の側のパケットに関連付けられている。様々な代替実施形態が説明されており、第１のＮＡＴデバイスおよび第２のＮＡＴデバイスは同じデバイスである。様々な代替実施形態が説明されており、第１のアドレスは、第１のＩＰアドレスおよび第１のポートを含み、また、第２のアドレスは、第２のＩＰアドレスおよび第２のポートを含む。
【０００９】
様々な例示的実施形態は、ネットワークノードによって実施される、代替アドレスマッピングを決定するための方法に関し、この方法は、以下のうちの１つまたは複数を含む：ネットワークノードで、パケットの指示を含んだ要求メッセージを異なるノードから受信するステップ、パケットの指示に基づいて、パケットと関連している第１のアドレスを識別するステップ、第１のアドレスを含んだ応答メッセージを作成するステップ、および応答メッセージを異なるノードに送信するステップ。
【００１０】
様々な例示的実施形態は、代替アドレスマッピングを決定するためのネットワークノードに関し、ネットワークノードは、以下のうちの１つまたは複数を含む：多数のパケットを記憶するためのパケットキャッシュ、異なるノードと通信するためのインタフェース、パケットの指示を含んだ要求メッセージをインタフェースを介して異なるノードから受信し、パケットの指示に基づいて、パケットと関連している第１のアドレスを識別するための要求メッセージ解釈部、および第１のアドレスを含んだ応答メッセージを作成し、応答メッセージを異なるノードに送信するための応答メッセージ生成部。
【００１１】
様々な例示的実施形態は、代替アドレスマッピングを決定するためのネットワークノードによって実行される命令が符号化された機械可読記憶媒体に関し、機械可読記憶媒体は、以下のうちの１つまたは複数を含む：ネットワークノードで、パケットの指示を含んだ要求メッセージを異なるノードから受信するための命令、パケットの指示に基づいて、パケットと関連している第１のアドレスを識別するための命令、第１のアドレスを含んだ応答メッセージを作成するための命令、および応答メッセージを異なるノードに送信するための命令。
【００１２】
様々な代替実施形態が説明されており、パケットの指示は、次のうちの少なくとも１つである：パケット、パケットの一部、パケットからの少なくとも１つのヘッダフィールド、およびパケットの少なくとも一部のハッシュ。様々な代替実施形態が説明されており、第１のアドレスを識別するステップは、以下のうちの１つまたは複数を含む：ハッシュキーを生成するために、パケットの指示の少なくとも一部に対してハッシュ関数を実施するステップ、および以前に記憶されたパケットの位置を特定するためにハッシュキーを使用するステップ。様々な代替実施形態が説明されており、要求メッセージは第２のアドレスを含み、また、応答メッセージはその第２のアドレスを含む。様々な代替実施形態が説明されており、ネットワークノードおよび異なるノードのうちの少なくとも１つは、パケットの発信元および宛先のうちの少なくとも１つである。
【００１３】
様々な代替実施形態は、以下のうちの１つまたは複数を含む：
要求メッセージを受信する前にパケットを受信するステップ、パケットの少なくとも一部をパケットキャッシュに記憶するステップ。パケットと関連している第１のアドレスを識別するステップは、パケットの少なくとも一部から第１のアドレスを抽出するステップのうちの１つまたは複数を含む。様々な代替実施形態が説明されており、パケットの指示は、ネットワークアドレス変換デバイスによって修正されていないパケットからのフィールドを含む。
【００１４】
様々な例示的実施形態をより深く理解するために添付の図面が参照されている。
【図面の簡単な説明】
【００１５】
【図１】２つのノード間の通信を提供するための一例示的ネットワークを示す図である。
【図２】アドレスマッピング情報を要求するための一例示的ネットワークノードを示す図である。
【図３】アドレスマッピング情報を記憶するための一例示的データ配列を示す図である。
【図４】アドレスマッピング情報を要求するための一例示的方法を示す流れ図である。
【図５】アドレスマッピング情報を提供するための例示的ネットワークノードを示す図である。
【図６】アドレス情報をキャッシュするための一例示的データ配列を示す図である。
【図７】アドレス情報をキャッシュするための一例示的方法を示す流れ図である。
【図８】アドレスマッピング情報を提供するための一例示的方法を示す流れ図である。
【発明を実施するための形態】
【００１６】
様々なネットワーク用途には、あるデバイスまたはパケットフローに関して、場合によっては２つのデバイスを通信させる必要があり、さもなければ２つのデバイスを通信させることを指示しなければならない。例えば監視ノードは、利用可能な帯域幅を特定のフローが過剰に使用しており、したがってそれを制限しなければならないことをトラフィック制御ノードに指示したい場合がある。しかしながら、これらの２つのノードがネットワークアドレス変換（ＮＡＴ）の異なる側からパケットフローを見ている場合、これらのノードは、そのフローと関連している異なるアドレスを見る可能性があり、したがって互いに通信する際に、そのフローを識別することが困難である。上記の例では、監視ノードがエンドポイントのためのパブリックアドレスしか知らず、また、トラフィック制御ノードがエンドポイントのためのプライベートアドレスしか知らない場合、監視ノードは、制限すべきフローをトラフィック制御ノードが理解することができる仕方で伝えることが場合によっては困難である。したがってプライベートアドレスとパブリックアドレスの間のマッピングを決定する方法が必要である。
【００１７】
本明細書において説明されている様々な例はＮＡＴに適用されているが、説明されている方法は、複数のノード間における記述統一が望ましい任意のシステムに適用することができることに留意されたい。したがって「プライベートアドレス」および「パブリックアドレス」という用語は、一般に２つの個別の記述情報片を意味していることを理解されたい。さらに、ＮＡＴに関連する実施形態においては、説明されている実施形態は、ＮＡＴデバイスの他の側のノードからプライベートアドレスを要求するノードに関しているが、説明されている方法は、逆の処理にも適用することができることは明らかであろう。特に、様々な実施形態では、ノードは、代わりに他のノードからパブリックアドレスを要求することも可能である。さらに、様々な実施形態では、ノードは、複数のアドレスタイプのうちの１つのアドレスタイプのための要求を作成し、かつ、それと同時にこれらの複数のアドレスタイプのうちの他のアドレスタイプのための要求を履行することができる。このような実施形態を実施するための様々な修正については、当業者には明らかであろう。
【００１８】
次に、同様の参照数表示は同様の構成要素またはステップを表している図面を参照すると、様々な例示的実施形態の広範囲にわたる態様が開示されている。
【００１９】
図１は、２つのノード間の通信を提供するための一例示的ネットワーク１００を示したものである。ネットワーク１００は、例えばインターネットなどのパケット交換ネットワークの一部であってもよい。ネットワーク１００は、いくつかの点で簡易化されており、図に示されているデバイス間には多くの追加ノードおよび／または中間ノードを含むことができることは明らかであろう。ネットワーク１００は、発信元１１０、ネットワークアドレス変換（ＮＡＴ）デバイス１２０、宛先１３０、ノードＡ１４０およびノードＢ１５０を含むことができる。
【００２０】
発信元１１０は、パケット交換ネットワークを介して他の複数のデバイスと通信するように構成された任意のデバイスであってもよい。例えば発信元１１０は、パーソナルコンピュータ、ラップトップ、移動デバイス、タブレット、サーバ、ルータ、またはネットワーク通信することができる任意の他のデバイスであってもよい。したがって発信元１１０は、ＩＰアドレスなどのネットワークアドレスが割り当てられる少なくとも１つのネットワークインタフェースを有することができる。発信元１１０は、様々なフローのためのエンドポイントであってもよい。例示として、現在、発信元１１０と宛先１３０の間にはあるフローが存在していることが仮定されている。例えば発信元１１０は、宛先１３０に対してファイルを供給してもよい。
【００２１】
ＮＡＴデバイス１２０は、発信元１１０（または様々な代替実施形態では宛先１３０）にネットワークアドレス変換を提供するように構成されたデバイスであってもよい。したがって発信元１１０は、ＮＡＴデバイス１２０の一方の側に、もう一方の側とは異なるＩＰアドレスを有するように出現することができる。例えば発信元１１０と宛先１３０の間のフローに属するパケットは、このようなパケットがＮＡＴデバイス１２０に到達する前は、「１９２．１６８．１．２」の発信元アドレスおよび「１２３４」の発信元ポートを含むことができる。ＮＡＴデバイス１２０が宛先１３０に送信するためにパケットを修正すると、パケットは、今度は「１３５．１１２．２．１３」の発信元アドレスおよび「５４７８」の発信元ポートを含むことができる。したがって発信元１１０は、プライベート２つ組の「１９２．１６８．１．２／１２３４」およびパブリック２つ組の「１３５．１１２．１３／５４７８」に関連付けられている。ＮＡＴデバイス１２０は、宛先１３０から発信元１１０へ送られるパケットに対して、同様の処理および逆の処理を実施することができる。
【００２２】
ＮＡＴデバイス１２０は、パケットの多くのフィールドを未修正のまま残すことができる。例えば発信元１１０と１３０の間のフローに属するパケットを受信すると、ＮＡＴデバイス１２０は、そのパケットを修正することなく宛先アドレス、宛先ポートおよびフラグメント識別子に転送することができる。ＮＡＴデバイス１２０は、さらに、パケットのペイロードの修正を差し控えることも可能である。
【００２３】
宛先１３０は、パケット交換ネットワークを介して他のデバイスと通信するように構成された任意のデバイスであってもよい。例えば宛先１３０は、パーソナルコンピュータ、ラップトップ、タブレット、移動デバイス、サーバ、ルータ、またはネットワーク通信することができる任意の他のデバイスであってもよい。したがって宛先１３０は、ＩＰアドレスなどのネットワークアドレスが割り当てられる少なくとも１つのネットワークインタフェースを有することができる。
【００２４】
ノードＡ１４０は、何らかのネットワークサービスを提供するデバイスであってもよい。図に示されているように、ノードＡ１４０は、発信元１１０とＮＡＴデバイス１２０の間で送信されるパケットを受信するオフラインデバイスである。例えばノードＡ１４０は、異常な挙動または悪意のある挙動に対するトラフィックを監視し、ネットワーク１００またはその一部を介したデータ転送に対する料金を加入者に課金し、および／またはサービス制限および保証の様々な品質を改善することができる。当業者にはノードＡ１４０のための多くの追加機能または代替機能が明らかであろう。
【００２５】
また、ノードＢ１５０も、何らかのネットワークサービスを提供するデバイスであってもよい。図に示されているように、ノードＢ１５０は、ＮＡＴデバイス１２０と宛先１３０の間で送信されるパケットを受信するオフラインデバイスである。例えばノードＢ１５０は、異常な挙動または悪意のある挙動に対するトラフィックを監視し、ネットワーク１００またはその一部を介したデータ転送に対する料金を加入者に課金し、および／またはサービス制限および保証の様々な品質を改善することができる。当業者にはノードＢ１５０のための多くの追加機能または代替機能が明らかであろう。ノードＡ１４０およびノードＢ１５０は、同じ機能または異なる機能を実施することができる。さらに、ノードＡ１４０およびノードＢ１５０は、協働して集約機能を実施することも可能である。以上の例に加えて、ノードＢ１５０は、フローを監視して制限すべきフローを識別することができ、一方、ノードＡ１４０は、ノードＢ１５０によって識別されたフローに対する制限を実施することができる。
【００２６】
様々な文脈においては、ノードＡ１４０およびノードＢ１５０は、特定のフローに関する通信を希望することができる。例えばノードＢ１５０は、発信元１１０と宛先１３０の間のフローを制限するようにノードＡ１４０に命令するべく希望することができる。しかしながら、ノードＢ１５０がフローを部分的に２つ組「１３５．１１２．２．１３／５４７８」からの発信として識別すると、この２つ組はノードＡ１４０には知られていないため、ノードＡ１４０は、そのフローを識別することができない。ノードＡ１４０は、その代わりに異なる２つ組「１９２．１６８．１．１／１２３４」を見ている。
【００２７】
様々な実施形態によれば、ノードＡ１４０およびノードＢ１５０は、フローのための共通識別子を決定するために互いに通信するように構成することができる。したがってノードＡ１４０およびノードＢ１５０は、ＮＡＴデバイス１２０を介して、あるいは何らかの他の通信経路を介して通信することができる。
【００２８】
本明細書において説明されているデバイスおよび方法は、当業者には明らかなように、ネットワーク１００の様々な修正に適用することができる。例えばノードＡ１４０および／またはノードＢ１５０は、ＮＡＴデバイス１２０とそれぞれ発信元１１０および／または宛先１３０の間の中間デバイスであってもよい。例えばノードＡ１４０は、発信元１１０とＮＡＴデバイス１２０の間でパケットを転送するルータであってもよい。他の例として、ノードＡ１４０および／またはノードＢ１５０を存在させなくてもよく、その代わりに、それぞれ発信元１１０および／または宛先１３０によって、本明細書において説明されている機能を実施することができる。
【００２９】
以上、例示的ネットワーク１００の構成要素について説明したが、以下、ネットワーク１００の動作について簡単に要約しておく。以下の説明の目的は、ネットワーク１００の動作についての概要を提供することであり、したがっていくつかの点で簡易化されていることは明らかであろう。ネットワーク１００の詳細な動作について、以下、図２−８に関連してさらに詳細に説明する。
【００３０】
既に説明したように、発信元１１０は、現在、多数のパケットをＮＡＴデバイス１２０を介して宛先１３０に送ることができる。したがってこれらのパケットの各々のプライベート発信元２つ組「１９２．１６８．１．２／１２３４」は、ＮＡＴデバイス１２０によってパブリック発信元２つ組「１３５．１１２．２．１３／５４７８」に変更することができる。パケットが送信されると、ノードＡ１４０は、これらのパケットのうちの少なくともいくつかを受信し、かつ、後のアドレスマッピングのために、これらのパケットからのアドレス情報またはこれらのパケット自体のいずれかをキャッシュすることができる。
【００３１】
また、これらのパケットがＮＡＴデバイス１２０によって修正されると、ノードＢ１５０もこれらのパケットを受信することができる。ノードＢ１５０は、これらのパケットのうちの１つからパブリック２つ組を抽出し、かつ、そのパケットが関連するプライベート２つ組を未だ有していないことを決定することができる。したがってノードＢ１５０は、ノードＡ１４０からプライベート２つ組を要求するメッセージを作成する。そうすることにより、ノードＢ１５０は、ＮＡＴデバイス１２０によって修正されていない情報を使用してフローを識別することができる。様々な実施形態では、ノードＢ１５０は、フローを識別するために、未修正のパケット、多数のパケットフィールドおよび／またはパケットの一部のハッシュをノードＡに転送することができる。
【００３２】
ノードＢ１５０から要求を受信すると、ノード１４０は、関連するフローの識別に取り掛かることができる。ノードＡ１４０は、ノードＢ１５０によって転送された識別情報を使用して、以前にキャッシュされた複数のパケットまたはアドレス情報のうちの１つまたは複数の位置を特定することができる。例えばノードＢ１５０が未修正のパケットを転送した場合、ノードＡ１４０は、以前にキャッシュされたパケットを識別するために、ＮＡＴデバイス１２０によって修正されていない１つまたは複数のフィールドを抽出することができる。様々な実施形態では、ノードＡ１４０は、パケットの識別子を生成するために、ＮＡＴデバイス１２０によって修正されていない１つまたは複数のフィールドに対して追加でハッシュ関数を実施することができる。一致するキャッシュ済みパケットを識別するためにノードＡ１４０がこのようなハッシュを使用する様々な実施形態では、ノードＡ１４０は、以前にキャッシュされた複数のパケットのうちの１つまたは複数に対する同様のハッシュ値をただちに計算するか、あるいは予め計算済みの値を有することができる。このような実施形態では、キャッシュされたパケットは、キャッシュされたパケットのためのハッシュと、要求メッセージによって運ばれたハッシュまたは要求メッセージを使用して生成されたハッシュが一致すると、ノードＢ１５０からの要求の一致として識別される。
【００３３】
次に、ノードＡ１４０は、パブリック２つ組（要求メッセージに含まれている場合）およびプライベート２つ組（キャッシュから読み取られた２つ組）を含んだ応答メッセージを作成することができる。ノードＢ１５０がこの応答メッセージを受信すると、ノードＢ１５０は、パブリック２つ組とプライベート２つ組の間のそのマッピングを更新することができる。
【００３４】
図２は、アドレスマッピング情報を要求するための一例示的ネットワークノード２００を示したものである。ノード２００は、例示的ネットワーク１００の発信元１１０、宛先１３０、ノードＡ１４０および／またはノードＢ１５０に対応していてもよい。ノード２００は、インタフェース２１０、代替アドレス識別子２２０、アドレスマッピング記憶装置２３０、マッピング要求メッセージ生成部２４０、インタフェース２５０およびマッピング応答メッセージ解釈部２６０を含むことができる。
【００３５】
インタフェース２１０は、他のネットワークノードと通信するように構成されたハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備えたインタフェースであってもよい。例えばノード２００がノードＢ１５０に対応している場合、ノード２００は、インタフェース２１０を介してＮＡＴデバイス１２０および／または宛先１３０と通信することができる。様々な実施形態では、インタフェース２１０は、例えばイーサネット（登録商標）インタフェースなどのネットワークインタフェースであってもよい。
【００３６】
代替アドレス識別子２２０は、インタフェース２１０を介してパケットを受信し、かつ、フローのエンドポイントのための代替アドレスが知られているかどうかを決定するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えばノード２００がノードＢ１５０に対応している場合、代替アドレス識別子は、ノード２００が発信元１１０のためのプライベートアドレスを以前に知っているかどうかを決定することができる。代替アドレス識別子２２０は、アドレスマッピング記憶装置２３０にアクセスし、かつ、フローに関連する記録、あるいは発信元１１０のためのパブリックアドレスに関連する記録がプライベートアドレスを指示しているかどうかを決定することによってこの決定を実施することができる。
【００３７】
様々な方法を使用して、アドレスマッピング記憶装置内における特定のパケットすなわちフローのための適切な記録の位置を特定することができる。例えばアドレスマッピング記憶装置２３０内の個々の記録は、フロー識別子によって識別することができる。このようなフロー識別子は、例えばフローを識別する５つ組に対してハッシュ関数を実施することによって計算することができる。当業者には理解されるように、５つ組は、宛先ＩＰアドレス、宛先ポート、発信元ＩＰアドレス、発信元ポートおよびパケットヘッダ中で識別されるプロトコルを含むことができる。したがってこの５つ組は、ネットワークトポロジーに応じて、プライベートアドレスおよびポート、またはパブリックアドレスおよびポートを含むことができる。例えばノードＢ１５０の場合、この５つ組は、発信元１１０のためのパブリック発信元アドレスおよび発信元ポートに基づくことができる。したがって適切な記録にアクセスするために、代替アドレス識別子２２０は、このハッシュを計算し、かつ、一致するフロー識別子を運ぶ記録の位置を特定することができる。
【００３８】
ノード２００が特定のフローのための代替アドレスを以前に知っていることを代替アドレス識別子２２０が決定すると、代替アドレス識別子２２０は、それ以上のアクションを取ることはできない。別法としては、代替アドレス識別子２２０は、他のノード特化アクションを実施することができることを他の構成要素（図示せず）に指示することができる。一方、代替アドレスがノード２００に知られていないことを代替アドレス識別子２２０が決定すると、代替アドレス識別子２２０は、このような代替アドレスを決定すべきであることをマッピング要求メッセージ生成部２４０に指示することができる。
【００３９】
アドレスマッピング記憶装置２３０は、ネットワークアドレス間のマッピングを記憶することができる任意の機械可読媒体であってもよい。したがってアドレスマッピング記憶装置２３０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ素子および／または同様の記憶媒体などの機械可読記憶媒体を含むことができる。アドレスマッピング記憶装置２３０の一例示的編成については、図３に関連して以下でより詳細に説明する。
【００４０】
アドレスマッピング記憶装置２３０に記憶されているマッピングは、アドレスの変更を考慮するために状況によっては除去することができる。例えば個々のマッピングは、構成可能なタイムトゥーリブ期間が経過すると除去することができる。他の例として、マッピングは、関連するフローアクティビティが全く存在することなく構成可能タイムアウト期間が経過すると除去することができる。さらに他の例として、マッピングは、加入者登録または登録抹消などのネットワークセッションの変更を示すメッセージをパートナーノードから受信すると除去することができる。当業者には、マッピングをアドレスマッピング記憶装置２３０から除去すべき様々な追加条件が明らかであろう。
【００４１】
マッピング要求メッセージ生成部２４０は、代替アドレスのための要求を作成するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。様々な実施形態では、このような要求は、自身を要求メッセージとして識別する応用層メッセージを含むことができ、また、重要なフローを識別するために使用することができるいくつかの情報を含むことができる。様々な実施形態では、要求メッセージは、パケット全体を含むことができる。フローを識別するためにパートナーノードが使用することになるフィールドをノード２００が知っている他の実施形態では、要求メッセージは、これらのフィールドのみ、またはこれらのフィールドのハッシュのみを含むことができる。ノード間のパケットを識別するためにパケットおよび／またはハッシュ値の一部しか使用されない様々な実施形態では、これらのノードは、パケットを識別して適切な通信を保証するために使用すべき部分および／またはハッシュ関数に同意しなければならないことは明らかであろう。メッセージが作成されると、マッピング要求メッセージ生成部２４０は、そのメッセージをインタフェース２５０を介してパートナーノードに送信することができる。
【００４２】
インタフェース２５０は、他のネットワークノードと通信するように構成されたハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備えたインタフェースであってもよい。例えばノード２００がノードＢ１５０に対応している場合、ノード２００は、インタフェース２５０を介してノードＡ１４０と通信することができる。様々な実施形態では、インタフェース２５０は、例えばイーサネットインタフェースなどのネットワークインタフェースであってもよい。多くの実施形態では、１つのインタフェースを使用して、インタフェース２１０およびインタフェース２５０の両方の機能を実施するように動作させることができることは明らかであろう。したがってインタフェース２５０は、インタフェース２１０と同じインタフェースであってもよい。
【００４３】
マッピング応答メッセージ解釈部２６０は、マッピング応答メッセージから代替アドレスを抽出し、かつ、マッピングをアドレスマッピング記憶装置２３０に記憶するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。マッピング要求メッセージ生成部２４０が要求メッセージを送信すると、パートナーノードは、マッピング応答メッセージで応答することができる。このような応答メッセージは、自身を応答として識別し、かつ、２つのアドレス間のマッピングを識別する応用層パケットであってもよい。様々な実施形態では、このマッピングは、パブリック２つ組および対応するプライベート２つ組を含むことができる。マッピング応答メッセージ解釈部は、応答メッセージからマッピング情報を抽出し、かつ、このデータをアドレスマッピング記憶装置内の適切な記録に記憶することができる。このような適切な記録は、上で説明した代替アドレス識別子２２０によって使用される仕方と同じ仕方で位置を特定することができる。この時点で、マッピング応答メッセージ解釈部は、任意選択で、次に、フローに対する追加機能および／またはノード特化機能を実施することができることを他の構成要素（図示せず）に指示することができる。
【００４４】
図３は、アドレスマッピング情報を記憶するための一例示的データ配列３００を示したものである。データ配列３００は、データベースまたはアドレスマッピング記憶装置２３０などのキャッシュ内の表であってもよい。別法としては、データ配列３００は、一連の連係リスト、アレイまたは同様のデータ構造であってもよい。したがってデータ配列３００は、基礎をなしているデータの抽象であり、このデータを記憶するのに適した任意のデータ構造を使用することができることは明らかであろう。データ配列は、フローＩＤフィールド３１０、プライベートアドレスフィールド３２０およびパブリックアドレスフィールド３３０などの多数のフィールドを含むことができる。
【００４５】
フローＩＤフィールド３１０は、個々のフローのための独自の識別子を指示することができる。このような識別子は、例えばフローを記述している５つ組に対してハッシュ関数を実施することによって計算することができる。上で説明したように、この５つ組は、ネットワークトポロジーに応じて、プライベートアドレスおよびポート、またはパブリックアドレスおよびポートを含むことができる。プライベートアドレスフィールド３２０は、フローのエンドポイントと関連しているプライベートアドレスを記憶することができる。一方、パブリックアドレスフィールド３３０は、フローの同じエンドポイントと関連しているパブリックアドレスを記憶することができる。データ配列は、多くの追加フィールド（図示せず）を含むことができる。様々な実施形態では、アドレスを独自の識別子として使用することができ、その場合、フローＩＤフィールド３１０はなくてもよい。
【００４６】
一例として、マッピング記録３４０は、識別子「０ｘ５Ｆ６５」によって識別されるフローは、プライベートアドレス「１９２．１６８．１．４／２２」およびパブリックアドレス「１３５．１１２．２．１３／４７」に関連付けられていることを示している。他の例として、マッピング記録３５０は、識別子「０ｘ６２３１」によって識別されるフローは、プライベートアドレス「１９２．１６８．１．３／８０」およびパブリックアドレス「１３５．１１２．２．１３／８０」に関連付けられていることを示している。データ配列３００は、多くの追加マッピング記録を含むことができる。
【００４７】
様々な実施形態では、データ配列は、１つまたは複数のフィールドに基づいて分類することができる。図に示されている例では、データ配列３００は、フローＩＤフィールド３１０に基づく昇順で分類することができる。性能をさらに改善するために、様々な実施形態では、データ配列３００は、ハッシュ表または連想記憶装置として実施することができる。
【００４８】
図４は、アドレスマッピング情報を要求するための一例示的方法４００を示したものである。方法４００は、ノード２００の代替アドレス識別子２２０、マッピング要求メッセージ生成部２４０および／またはマッピング応答メッセージ解釈部２６０などの構成要素によって実施することができる。
【００４９】
方法４００は、ステップ４０５で開始してステップ４１０へ進行することができ、そこでノード２００は、他のデバイスからパケットを受信する。次にステップ４２０で、ノード２００は、パケット内の１つまたは複数のフィールドを使用してフロー識別子を計算する。ノード２００は、ステップ４３０でこのフロー識別子を使用して、複数のフローエンドポイントのうちの１つのための代替アドレスがノード２００に知られているかどうかを決定する。他の方法を使用してこの決定を実施することも可能であることは明らかであろう。例えばフロー識別子を計算する代わりに、ノード２００は、単純にフィールドデータ自体を使用して、アドレスマッピングデータのその記録を介して探索することも可能である。
【００５０】
代替アドレスが既に知られている場合、方法４００は、ステップ４８５の終了へ直接進行することができる。しかしながら代替アドレスが未だ知られていない場合、方法４００は、ステップ４８５へ進行する代わりにステップ４４０へ進行することができる。ステップ４４０で、ノード２００は要求メッセージを作成することができる。この要求メッセージは、例えば１つまたは複数のパケット、１つまたは複数のパケットフィールド、またはパケットの少なくとも一部のハッシュなどのフローのための識別子を含むことができる。ステップ４６０で、ノード２００は要求メッセージをパートナーノードに送信し、また、ステップ４７０で、ノード２００はパートナーノードから応答メッセージを受信する。ノード２００は、次に、応答メッセージから代替アドレス情報を抽出し、かつ、最初に受信したパケットによって運ばれたアドレスに関連してこのアドレスを記憶する。次に、ノード特化機能のために、これらの２つのアドレス間のマッピングを使用することができる。
【００５１】
図５は、アドレスマッピング情報を提供するための例示的ネットワークノード５００を示したものである。ノード５００は、例示的ネットワーク１００の発信元１１０、宛先１３０、ノードＡ１４０および／またはノードＢ１５０に対応していてもよい。ノード５００は、インタフェース５１０、パケットキャッシュ管理部５２０、パケットキャッシュ５３０、インタフェース５４０、マッピング要求メッセージ解釈部５５０およびマッピング応答メッセージ生成部５６０を含むことができる。
【００５２】
インタフェース５１０は、他のネットワークノードと通信するように構成されたハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備えたインタフェースであってもよい。例えばノード５００がノードＡ１４０に対応している場合、ノード５００は、インタフェース５１０を介して発信元１１０および／またはＮＡＴデバイス１２０と通信することができる。様々な実施形態では、インタフェース５１０は、例えばイーサネットインタフェースなどのネットワークインタフェースであってもよい。
【００５３】
パケットキャッシュ管理部５２０は、パケットキャッシュ５３０に記憶されているデータを管理するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。パケットキャッシュ管理部５２０は、インタフェース５１０を介して様々なパケットを受信し、かつ、これらのパケットまたはそれらに含まれている情報をキャッシュするかどうかを決定することができる。様々な実施形態では、パケットキャッシュ管理部５２０は、パケットキャッシュ管理部５２０が受信する個々のパケットをキャッシュすることができ、あるいは例えば個々のフローの最初のパケットなどの特定のパケットのみをキャッシュすることを決定することができる。後のアクセスを容易にするために、パケットキャッシュ管理部５２０は、個々のキャッシュされるパケットをパケットまたは他の識別子と共に記憶することができる。例えばパケットキャッシュ管理部５２０は、パケット識別子を生成するために、宛先アドレス、宛先ポートおよびフラグメント識別子に対してハッシュ関数を実施することができる。パケットキャッシュ管理部は、次に、パケットまたはパケットから抽出される多数のフィールドと共にこの識別子をパケットキャッシュ５３０に記憶することができる。
【００５４】
また、パケットキャッシュ管理部５２０は、特定の時間が経過した後か、あるいはキャッシュが一杯になると、キャッシュエントリを消去することができる。例えばパケットキャッシュ管理部５２０は、個々のエントリをパケットキャッシュに１０秒間記憶した後に、それらを消去することができる。別法としては、パケットキャッシュ管理部５２０は、単純に最も古いエントリを周期的にフラッシュさせることも可能である。当業者には明らかなように、多数のキャッシュ管理アルゴリズムを適用することができる。
【００５５】
パケットキャッシュ５３０は、パケットおよび／またはパケットから収集される情報を記憶することができる任意の機械可読媒体であってもよい。したがってパケットキャッシュ５３０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ素子および／または同様の記憶媒体などの機械可読記憶媒体を含むことができる。パケットキャッシュ５３０の一例示的編成については、図６に関連して以下でより詳細に説明する。
【００５６】
インタフェース５４０は、他のネットワークノードと通信するように構成されたハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を備えたインタフェースであってもよい。例えばノード２００がノードＡ１４０に対応している場合、ノード２００は、インタフェース５４０を介してノードＢ１５０と通信することができる。様々な実施形態では、インタフェース５４０は、例えばイーサネットインタフェースなどのネットワークインタフェースであってもよい。多くの実施形態では、１つのインタフェースを使用して、インタフェース５１０およびインタフェース５４０の両方の機能を実施するように動作させることができることは明らかであろう。したがってインタフェース５４０は、インタフェース５１０と同じインタフェースであってもよい。
【００５７】
マッピング要求メッセージ解釈部５５０は、パートナーノードからインタフェース５４０を介してマッピング要求メッセージを受信し、かつ、受信したマッピング要求メッセージを処理するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。このような要求メッセージは、フローを識別するために使用することができる情報を含んだ応用層メッセージであってもよい。マッピング要求メッセージ解釈部５５０は、この情報から、パケットキャッシュ管理部５２０と同じ方法でパケット識別子を計算することができる。様々な代替実施形態では、マッピング要求メッセージ解釈部５５０は、パケット識別子を計算することはできないが、その代わりに要求メッセージ内の情報を使用してパケットキャッシュ５３０に問い合わせることができる。使用される方法に無関係に、マッピング要求メッセージ解釈部５５０は、受信した要求メッセージを使用して、パケットキャッシュ５３０にキャッシュされたパケットまたはパケット情報の位置を特定する。マッピング要求メッセージ解釈部５５０が一度この情報の位置を特定すると、マッピング要求メッセージ解釈部５５０は、応答を送信しなければならないことをマッピング応答メッセージ生成部５６０に指示する。
【００５８】
マッピング応答メッセージ生成部５６０は、マッピング応答メッセージを作成し、かつ、送信するように構成されたハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。このメッセージは、例えば自身をこのような応答メッセージとして識別する応用層パケットであってもよい。マッピング応答メッセージ生成部５６０は、マッピング要求メッセージ解釈部５５０によって検索されたアドレス情報を応答メッセージの中に挿入することができる。様々な実施形態では、マッピング応答メッセージ生成部５６０は、応答メッセージを適用するフローを識別するためにパートナーノードが使用することができる情報を含むことも可能である。例えば元の要求メッセージが発信元アドレスを含んでいた場合、応答メッセージ生成部５６０は、この情報を応答に含むことができる。一度応答メッセージが作成されると、マッピング応答メッセージ生成部５６０は、その応答メッセージをインタフェース５４０を介してパートナーノードに送信することができる。
【００５９】
図６は、アドレス情報をキャッシュするための一例示的データ配列６００を示したものである。データ配列６００は、データベースまたはパケットキャッシュ５３０などのキャッシュ内の表であってもよい。別法としては、データ配列６００は、一連の連係リスト、アレイまたは同様のデータ構造であってもよい。したがってデータ配列６００は、基礎をなしているデータの抽象であり、このデータを記憶するのに適した任意のデータ構造を使用することができることは明らかであろう。データ配列は、パケットＩＤフィールド６１０およびプライベートアドレスフィールド６２０などの多数のフィールドを含むことができる。
【００６０】
パケットＩＤフィールド６１０は、個々のパケットについて独自の識別子を指示することができる。このような識別子は、例えばＮＡＴデバイスによって修正されることのないパケットの部分にハッシュ関数を実施することによって計算することができる。例えば識別子は、宛先アドレス、宛先ポートおよびフラグメント識別子に基づいて計算することができる。プライベートアドレスフィールド６２０は、フローのエンドポイントと関連しているプライベートアドレスを記憶することができる。データ配列６００は、多くの追加フィールド（図示せず）を含むことができる。例えばデータ配列６００は、パケット全体を記憶するためのフィールドを含むことができる。様々な実施形態では、プライベートアドレスなどの他の情報を独自の識別子として使用することができ、その場合、パケットＩＤフィールド６１０はなくてもよい。
【００６１】
一例として、パケット記録６４０は、プライベート発信元アドレス「１９２．１６８．１．４／２２」を運んだＩＤ「０ｘ４Ｅ３Ｄ」によって識別されるパケットに関連付けられている。他の例として、パケット記録６５０は、プライベート発信元アドレス「１９２．１６８．１．３／８０」を運んだＩＤ「０ｘ５０２Ｂ」によって識別されるパケットに関連付けられている。さらに他の例として、パケット記録６６０は、プライベート発信元アドレス「１９２．１６８．１．２．１２３４」を運んだＩＤ「０ｘ７ＡＤ３」によって識別されるパケットに関連付けられている。データ配列６００は、多くの追加エントリ６７０を含むことができる。
【００６２】
様々な実施形態では、データ配列６００は、１つまたは複数のフィールドに基づいて分類することができる。図に示されている例では、データ配列６００は、パケットＩＤフィールド６１０に基づく昇順で分類することができる。性能をさらに改善するために、様々な実施形態では、データ配列６００は、ハッシュ表または連想記憶装置として実施することができる。
【００６３】
図７は、アドレス情報をキャッシュするための一例示的方法７００を示したものである。方法７００は、パケットキャッシュ管理部５２０などのノード５００の構成要素によって実施することができる。
【００６４】
方法７００は、ステップ７０５で開始してステップ７１０へ進行することができ、そこでノード５００はパケットを受信することができる。ステップ７２０で、ノード５００は、例えばパケットの１つまたは複数のフィールドに対してハッシュ関数を実施することによってパケット識別子を計算する。次に、ステップ７３０で、ノード５００は、後の使用のためにパケット識別子およびアドレス情報をまとめて記憶することができる。最後に、方法７００は、ステップ７３５で終了することができる。
【００６５】
図８は、アドレスマッピング情報を提供するための一例示的方法８００を示したものである。方法８００は、マッピング要求メッセージ解釈部５５０および／またはマッピング応答メッセージ生成部５６０などのノード５００の構成要素によって実施することができる。
【００６６】
方法８００は、ステップ８０５で開始してステップ８１０へ進行することができ、そこでノード５００は、パートナーノードからマッピング要求メッセージを受信することができる。ノード５００は、次に、ステップ８２０で、要求メッセージによって運ばれた情報を使用してパケット識別子を計算することができる。次にステップ８３０で、ノード５００は、そのパケット識別子と関連しているアドレス情報を探索することができる。ノード５００がすべてのパケットをキャッシュする様々な実施形態では、ノード５００は、このステップで、以前にキャッシュされたパケットからアドレス情報を抽出することができる。アドレス情報が検索されると、方法８００はステップ８４０に進行することができ、そこでノード５００はマッピング応答メッセージを作成することができる。このような応答メッセージは、パートナーノードが識別することができるよう、検索されたアドレス情報、ならびに元の要求メッセージによって運ばれた追加情報を含むことができる。ノード５００は、次に、ステップ８５０で応答メッセージをパートナーノードに送信することができ、また、方法８００は、ステップ８６５で終了することができる。
【００６７】
以上、例示的ネットワーク１００の動作のための例示的構成要素および方法について説明したが、次に、例示的ネットワーク１００の動作の一例について、図１−８を参照して説明する。ノード２００はノードＢ１５０に対応させることができ、ノード５００はノードＡ１４０に対応させることができ、データ構造３００は、アドレスマッピング記憶装置２３０の内容を記述することができ、また、データ構造６００は、パケットキャッシュ５３０の内容を記述することができる。
【００６８】
処理は、発信元１１０がパケットを宛先１３０に送ることができると開始される。ノードＡ１４０がこのパケットを見ることができると、パケットキャッシュ管理部５２０は、パケットによって運ばれた宛先アドレス、宛先ポートおよびフラグメント識別子に対してハッシュ関数を実施することによってパケット識別子を計算し、それによりパケット識別子「０ｘ７ＡＤ３」を生成することができる。また、パケットキャッシュ管理部５２０は、パケットから発信元アドレスおよび発信元ポートを抽出することも可能である。パケットキャッシュ管理部５２０は、この情報をパケット記録６６０としてまとめてパケットキャッシュ５３０に記憶することができる。
【００６９】
パケットは、ＮＡＴデバイス１２０によって宛先１３０に向けて転送することができる。しかしながらＮＡＴデバイス１２０は、パケットを転送する前に、発信元アドレスおよびポートをパブリックアドレスおよびポート「１３５．１１２．２．１３／５４７８」に置き換えることができる。後にノードＢ１５０がパケットを受信すると、代替アドレス識別子２２０は、アドレスマッピング記憶装置２３０がアドレス「１３５．１１２．２．１３／５４７８」のためのマッピングを含んでいないことを決定することができる。したがってマッピング要求メッセージ生成部２４０は要求メッセージを作成することができ、かつ、パケットをこのメッセージの中に挿入することができる。マッピング要求メッセージ生成部２４０は、次に、パートナーノードであるノードＡ１４０に要求メッセージを送信することができる。
【００７０】
ノードＡ１４０が要求メッセージを受信すると、マッピング要求メッセージ解釈部５５０はパケット識別子を計算することができる。詳細には、マッピング要求メッセージ解釈部５５０は、要求メッセージからパケットを抽出することができ、かつ、宛先アドレス、宛先ポートおよびフラグメント識別子に対してハッシュ関数を実施することができる。ＮＡＴデバイスは、これらのフィールドのうちのどのフィールドも修正しなかったため、パケット識別子は、そのパケット識別子が計算された際の識別子、つまり「０ｘ７ＡＤ」と同じであってもよい。マッピング要求メッセージ解釈部５５０は、次にパケット記録６６０を検索することができる。マッピング応答メッセージ生成部５６０は、次に、パケット記録６６０から抽出されたプライベートアドレス「１９２．１６８．１．２／１２３４」、および要求メッセージによって運ばれたパブリックアドレス「１３５．１１２．２．１３／５４７８」を含んだマッピング応答メッセージを作成することができる。マッピング応答メッセージ生成部５６０は、次に、パートナーノードであるノードＢ１５０に応答を送り返すことができる。
【００７１】
ノードＢ１５０は、次に応答メッセージを検索することができ、また、マッピング応答メッセージ解釈部２６０は、そのメッセージからマッピングを抽出することができる。マッピング応答メッセージ解釈部２６０は、次に、将来の使用のために、プライベートアドレス情報およびパブリックアドレス情報をアドレスマッピング記憶装置２３０に記憶することができる。
【００７２】
以上によれば、様々な例示的実施形態は、プライベートアドレスなどのネットワークの異なる部分に使用される記述情報を決定することができるノードを提供している。詳細には、転送中に他のノードによって修正されていない情報に基づいてフローを識別することにより、ノードは、パートナーノードからこのような記述情報を要求することができる。さらに、パートナーノードは、提供された識別情報を使用して、以前に観察済みのパケットを識別し、かつ、要求された情報を抽出することができる。
【００７３】
以上の説明から、本発明の様々な例示的実施形態は、ハードウェアおよび／またはファームウェアで実施することができることは明らかであろう。さらに、様々な例示的実施形態は、機械可読記憶媒体上に記憶された命令であって、本明細書において詳細に説明した動作を実施するために少なくとも１つのプロセッサが読み取り、かつ、実行することができる命令として実施することも可能である。機械可読記憶媒体は、パーソナルコンピュータまたはラップトップコンピュータ、サーバまたは他の計算デバイスなどの機械が読取ることができる形態で情報を記憶するための任意の機構を含むことができる。したがって機械可読記憶媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ素子および同様の記憶媒体を含むことができる。
【００７４】
当業者には、本明細書におけるすべてのブロック図は、本発明の原理を具体化する例証回路の概念図を示したものであることを理解されたい。同様に、すべてのフローチャート、フロー線図、状態遷移線図、擬似コード、等々は、機械可読媒体中で実質的に表すことができ、したがって明示的に示されている場合にせよ、あるいは明確に示されていない場合にせよ、コンピュータまたはプロセッサによって実質的に実行される様々な処理を示したものであることは理解されよう。
【００７５】
以上、様々な例示的実施形態について、特に、それらの特定の例示的態様を参照して詳細に説明したが、本発明は他の実施形態が可能であり、また、様々な明白な点でその詳細に修正を加えることができることを理解されたい。当業者には容易に明らかなように、変形形態および変更態様を実施することができ、それらは依然として本発明の趣旨および範囲の範疇である。したがって以上の開示、説明および図は、すべて例証を目的としたものにすぎず、何ら本発明を限定するものではなく、本発明は特許請求の範囲によってのみ定義される。
【図１】
2014511089.tif 000003
【図２】
2014511089.tif 000004
【図３】
2014511089.tif 000005
【図４】
2014511089.tif 000006
【図５】
2014511089.tif 000007
【図６】
2014511089.tif 000008
【図７】
2014511089.tif 000009
【図８】
2014511089.tif 000010
【国際調査報告】
2014511089.tif 000011
2014511089.tif 000012