(57)【要約】【課題】本発明は、ＮＡＴ方法、装置及びＮＡＴ機器を提供する。【解決手段】当該方法によると、ＮＡＴリソースプールから宛先ＩＰアドレスおよび前記宛先ＩＰアドレスの参照ポートを取得し、前記宛先ＩＰアドレスと、前記参照ポートと、パケットのオリジナル５タプルとに基づいて、前記パケットに対応する第１の５タプルを生成し、それぞれ前記第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第２の５タプルを取得し、前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定し、前記ハッシュ表及び対応する結果表に前記ターゲット５タプル及び前記オリジナル５タプルを記録し、前記ターゲット５タプルに基づいて前記パケットに対してＮＡＴ処理を行い、前記参照ポートは、前記宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートである。【選択図】図２
2021516923.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークアドレス変換（ＮＡＴ）方法であって、
当該方法は、
ＮＡＴリソースプールから宛先インターネットプロトコル（ＩＰ）アドレスと前記宛先ＩＰアドレスの参照ポートとを取得するステップと、
前記宛先ＩＰアドレスと、前記参照ポートと、パケットのオリジナル５タプルとに基づいて、前記パケットに対応する第１の５タプルを生成し、それぞれ前記第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第２の５タプルを取得するステップと、
前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定するステップと、
前記ハッシュ表及び対応する結果表に前記ターゲット５タプル及び前記オリジナル５タプルを記録し、前記ターゲット５タプルに基づいて前記パケットに対してＮＡＴ処理を行うステップと、を含み、
前記参照ポートは、前記宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートであることを特徴とするＮＡＴ方法。
【請求項２】
前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定するステップは、
第１ハッシュアルゴリズムを利用し、前記第２の５タプルに対応する第１インデックス値を算出することと、
前記第１インデックス値に対してベースアドレス処理を行って第２インデックス値を取得し、前記第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定することと、
前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定することと、を含み、
前記ベースアドレス処理は、前記第１インデックス値の下位Ｎ桁を０にセットすることと、前記第１インデックス値の末尾にＮ桁の０を補うこととの何れか一方を含み、
Ｎは、２種のポートの第１種のビットの数の合計であり、Ｍは、２Nであることを特徴とする請求項１に記載のＮＡＴ方法。
【請求項３】
前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定することは、
前記第２の５タプルにおける第１種のポートの第１種のビットを復元し、第３の５タプルを取得することと、
前記Ｍ個の第１種のハッシュバケットからターゲット５タプルが決定されるまで、前記第３の５タプルに対して衝突テストを実行することとを含み、
前記第１種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われないポートであり、
前記衝突テストは、
前記第３の５タプルにおける第２種のポートの第１種のビットを０にセットする及び／又は１にセットすることにより、その第２種のポートが前記１つの連続ポート範囲に属する第４の５タプルを生成することと、
第２ハッシュアルゴリズムを利用し、前記第４の５タプルに対応する第１署名情報を算出することと、
第１目標値を第３インデックス値として、前記Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定することと、
前記ターゲットハッシュバケットに記録された有効な署名情報のうち、前記第１署名情報が存在するときに、前記第４の５タプルをターゲット５タプルとして決定することとを含み、
前記第２種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われるポートであり、前記第１目標値は、前記第４の５タプルにおける２種のポートの第１種のビットの組み合わせであることを特徴とする請求項２に記載のＮＡＴ方法。
【請求項４】
前記方法は、
前記パケットがＮＡＴ処理されるべきであると判断したときに、第２ハッシュアルゴリズムを利用し、前記オリジナル５タプルに対応する第２署名情報を算出するステップと、
前記オリジナル５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第５の５タプルを取得するステップと、
第１ハッシュアルゴリズムを利用し、前記第５の５タプルに対応する第４インデックス値を算出するステップと、
前記第４インデックス値に対してオフセット処理を行って第５インデックス値を形成し、前記第５インデックス値で前記ハッシュ表を検索し、第２種のハッシュバケットを決定するステップと、
前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在するときに、前記結果表に基づいて前記パケットに対してＮＡＴ処理を行い、前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在しないときに、前記ＮＡＴリソースプールから新たな宛先ＩＰアドレスおよび前記新たな宛先ＩＰアドレスの参照ポートを取得するステップと、を更に含み、
前記オフセット処理は、前記第４インデックス値の下位Ｎ桁を第２目標値で付け替えることと、前記第４インデックス値の末尾に前記第２目標値を補うこととの何れか一方であり、前記第２目標値は、前記オリジナル５タプルの２種のポートの第１種のビットの組み合わせであることを特徴とする請求項１から３の何れか一項に記載のＮＡＴ方法。
【請求項５】
前記第１種のビットは、ポートを示すためのビットシーケンスの末尾の連続する少なくとも１桁であることを特徴とする請求項１から３の何れか一項に記載のＮＡＴ方法。
【請求項６】
ネットワークアドレス変換（ＮＡＴ）装置であって、
当該装置は、
ＮＡＴリソースプールから宛先インターネットプロトコル（ＩＰ）アドレスと前記宛先ＩＰアドレスの参照ポートとを取得するための取得ユニットと、
前記宛先ＩＰアドレスと、前記参照ポートと、パケットのオリジナル５タプルとに基づいて、前記パケットに対応する第１の５タプルを生成し、それぞれ前記第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第２の５タプルを取得するための処理ユニットと、
前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定するための決定ユニットと、
前記ハッシュ表及び対応する結果表に前記ターゲット５タプル及び前記オリジナル５タプルを記録し、前記ターゲット５タプルに基づいて前記パケットに対してＮＡＴ処理を行うための変換ユニットと、を備え、
前記参照ポートは、前記宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートであることを特徴とするＮＡＴ装置。
【請求項７】
前記決定ユニットは、
第１ハッシュアルゴリズムを利用し、前記第２の５タプルに対応する第１インデックス値を算出するための算出サブユニットと、
前記第１インデックス値に対してベースアドレス処理を行って第２インデックス値を取得し、前記第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定するための検索サブユニットと、
前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定するための決定サブユニットと、を備え、
前記ベースアドレス処理は、前記第１インデックス値の下位Ｎ桁を０にセットすることと、前記第１インデックス値の末尾にＮ桁の０を補うこととの何れか一方を含み、
Ｎは、２種のポートの第１種のビットの数の合計であり、Ｍは、２Nであることを特徴とする請求項６に記載のＮＡＴ装置。
【請求項８】
前記決定サブユニットは、
前記第２の５タプルにおける第１種のポートの第１種のビットを復元し、第３の５タプルを取得し、
前記Ｍ個の第１種のハッシュバケットからターゲット５タプルが決定されるまで、前記第３の５タプルに対して衝突テストを実行するために用いられ、
前記第１種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われないポートであり、
前記衝突テストは、
前記第３の５タプルにおける第２種のポートの第１種のビットを０にセットする及び／又は１にセットすることにより、その第２種のポートが前記１つの連続ポート範囲に属する第４の５タプルを生成することと、
第２ハッシュアルゴリズムを利用し、前記第４の５タプルに対応する第１署名情報を算出することと、
第１目標値を第３インデックス値として、前記Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定することと、
前記ターゲットハッシュバケットに記録された有効な署名情報のうち、前記第１署名情報が存在するときに、前記第４の５タプルをターゲット５タプルとして決定することと、を含み、
前記第２種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われるポートであり、前記第１目標値は、前記第４の５タプルにおける２種のポートの第１種のビットの組み合わせであることを特徴とする請求項７に記載のＮＡＴ装置。
【請求項９】
前記装置は、
前記パケットがＮＡＴ処理されるべきであると判断されたときに、第２ハッシュアルゴリズムを利用し、前記オリジナル５タプルに対応する第２署名情報を算出するための算出ユニットと、
前記オリジナル５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第５の５タプルを取得するためのマスクユニットと、
第１ハッシュアルゴリズムを利用し、前記第５の５タプルに対応する第４インデックス値を算出するための生成ユニットと、
前記第４インデックス値に対してオフセット処理を行って第５インデックス値を形成し、前記第５インデックス値で前記ハッシュ表を検索し、第２種のハッシュバケットを決定するためのインデックスユニットと、
前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在するときに、前記結果表に基づいて前記パケットに対してＮＡＴ処理を行い、前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在しないときに、前記ＮＡＴリソースプールから新たな宛先ＩＰアドレスおよび前記新たな宛先ＩＰアドレスの参照ポートを取得するための分析ユニットと、を更に備え、
前記オフセット処理は、前記第４インデックス値の下位Ｎ桁を第２目標値で付け替えることと、前記第４インデックス値の末尾に前記第２目標値を補うこととの何れか一方であり、前記第２目標値は、前記オリジナル５タプルの２種のポートの第１種のビットの組み合わせであることを特徴とする請求項６から８の何れか一項に記載のＮＡＴ装置。
【請求項１０】
ネットワークアドレス変換（ＮＡＴ）機器であって、
当該機器は、
内部バスと、非一時的記憶媒体と、プロセッサと、通信インターフェースとを備え、
前記プロセッサ、前記通信インターフェース及び前記非一時的記憶媒体は、前記内部バスを介して互いの通信を実施し、前記記憶媒体は、ＮＡＴ方法に対応する機器の実行可能な指令を記憶し、
前記プロセッサは、前記記憶媒体における前記機器の実行可能な指令を読み取ることにより、
ＮＡＴリソースプールから宛先インターネットプロトコル（ＩＰ）アドレスと前記宛先ＩＰアドレスの参照ポートとを取得することと、
前記宛先ＩＰアドレスと、前記参照ポートと、パケットのオリジナル５タプルとに基づいて、前記パケットに対応する第１の５タプルを生成し、それぞれ前記第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第２の５タプルを取得することと、
前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定することと、
前記ハッシュ表及び対応する結果表に前記ターゲット５タプル及び前記オリジナル５タプルを記録し、前記ターゲット５タプルに基づいて前記パケットに対してＮＡＴ処理を行うことと、を実行させ、
前記参照ポートは、前記宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートであることを特徴とするＮＡＴ機器。
【請求項１１】
前記第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定するときに、前記プロセッサは、更に、前記機器の実行可能な指令により、
第１ハッシュアルゴリズムを利用し、前記第２の５タプルに対応する第１インデックス値を算出することと、
前記第１インデックス値に対してベースアドレス処理を行って第２インデックス値を取得し、前記第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定することと、
前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定することと、を実行させ、
前記ベースアドレス処理は、前記第１インデックス値の下位Ｎ桁を０にセットすることと、前記第１インデックス値の末尾にＮ桁の０を補うこととの何れか一方を含み、
Ｎは、２種のポートの第１種のビットの数の合計であり、Ｍは、２Nであることを特徴とする請求項１０に記載のＮＡＴ機器。
【請求項１２】
前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定するときに、前記プロセッサは、更に、前記機器の実行可能な指令により、
前記第２の５タプルにおける第１種のポートの第１種のビットを復元し、第３の５タプルを取得することと、
前記Ｍ個の第１種のハッシュバケットからターゲット５タプルが決定されるまで、前記第３の５タプルに対して衝突テストを実行することと、を実行させ、
前記第１種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われないポートであり、
前記衝突テストは、
前記第３の５タプルにおける第２種のポートの第１種のビットを０にセットする及び／又は１にセットすることにより、その第２種のポートが前記１つの連続ポート範囲に属する第４の５タプルを生成することと、
第２ハッシュアルゴリズムを利用し、前記第４の５タプルに対応する第１署名情報を算出することと、
第１目標値を第３インデックス値として、前記Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定することと、
前記ターゲットハッシュバケットに記録された有効な署名情報のうち、前記第１署名情報が存在するときに、前記第４の５タプルをターゲット５タプルとして決定することとを含み、
前記第２種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われるポートであり、前記第１目標値は、前記第４の５タプルにおける２種のポートの第１種のビットの組み合わせであることを特徴とする請求項１１に記載のＮＡＴ機器。
【請求項１３】
前記プロセッサは、更に、前記機器の実行可能な指令により、
前記パケットがＮＡＴ処理されるべきであると判断したときに、第２ハッシュアルゴリズムを利用し、前記オリジナル５タプルに対応する第２署名情報を算出することと、
前記オリジナル５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第５の５タプルを取得することと、
第１ハッシュアルゴリズムを利用し、前記第５の５タプルに対応する第４インデックス値を算出することと、
前記第４インデックス値に対してオフセット処理を行って第５インデックス値を形成し、前記第５インデックス値で前記ハッシュ表を検索し、第２種のハッシュバケットを決定することと、
前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在するときに、前記結果表に基づいて前記パケットに対してＮＡＴ処理を行う、前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在しないときに、前記ＮＡＴリソースプールから新たな宛先ＩＰアドレスおよび前記新たな宛先ＩＰアドレスの参照ポートを取得することと、を実行させ、
前記オフセット処理は、前記第４インデックス値の下位Ｎ桁を第２目標値で付け替えることと、前記第４インデックス値の末尾に前記第２目標値を補うこととの何れか一方であり、前記第２目標値は、前記オリジナル５タプルの２種のポートの第１種のビットの組み合わせであることを特徴とする請求項１０から１２の何れか一項に記載のＮＡＴ機器。
【請求項１４】
前記第１種のビットは、ポートを示すためのビットシーケンスの末尾の連続する少なくとも１桁であることを特徴とする請求項１０から１２の何れか一項に記載のＮＡＴ機器。
【発明の詳細な説明】
【背景技術】
【０００１】
ＮＡＴ（Ｎｅｔｗｏｒｋ Ａｄｄｒｅｓｓ Ｔｒａｎｓｌａｔｉｏｎ、ネットワークアドレス変換）機器は、パケットを受信した後、当該パケットがＮＡＴ処理される必要であるとともに当該パケットがセッション情報の確立条件を満たす場合に、確立フローを実行する。ここでの「セッション情報」は、例えば、パケットのソースＩＰ（Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ、インターネットプロトコル）アドレス、宛先ＩＰアドレス、ソースポート、宛先ポート及び伝送層プロトコルの５タプルを含む。
【０００２】
ソースＩＰアドレスのＮＡＴ処理を例とする。ＮＡＴリソースプールから１つのＩＰアドレス及び当該ＩＰアドレスの１つのポートを選定し、当該ＩＰアドレス及び当該ポートを利用して当該パケットのオリジナル５タプルにおけるソースＩＰアドレス及びソースポートを付け替えて、新たな５タプルを形成する。更に、記憶媒体（例えば、ＤＤＲ（Ｄｏｕｂｌｅ Ｄａｔａ Ｒａｔｅ）データ倍速同期動的ランダムメモリ）に格納されたセッション表におけるハッシュ表を検索し、当該新たな５タプルが衝突しない５タプルであると判断したときに、即ち、算出された当該新たな５タプルのハッシュ値がハッシュ表においてハッシュ衝突を発生しないときに、当該ハッシュ表及び対応する結果表に当該新たな５タプル及び当該オリジナル５タプルを記録し、当該新たな５タプルに基づいて当該パケットに対してＮＡＴ処理を行い、そうでなければ、ＮＡＴリソースプールから１つのＩＰアドレス及び当該ＩＰアドレスの１つのポートを再度選定して分析を行う。
【０００３】
上記確立フローがＮＡＴ処理を実現可能であるが、以下の問題が存在する。セッション表のハッシュ表に基づく従来のデータ記憶方式では、毎回の衝突テストで１つの新たな５タプルしかテストできず、当該新たな５タプルに衝突が発生したときに、複数回の探りが必要となる。一方で、セッション表の所在する記憶媒体を読み取るたびにインターフェース遅延が存在するため、確立性能が悪いことに違いない。
【図面の簡単な説明】
【０００４】
【図１】ネットワーキングシステムの構造模式図である。
【図２】本発明の例示的な実施例に示すＮＡＴ方法のフローチャートである。
【図３】本発明に係るＮＡＴ方法に基づいてソースＩＰアドレス変換を行うグラフ模式図である。
【図４】本発明に係るＮＡＴ方法に基づいてソースＩＰアドレス変換を行うグラフ模式図である。
【図５】本発明の例示的な実施例に示すＮＡＴ装置の構造模式図である。
【図６】本発明の例示的な実施例に示すＮＡＴ機器の構造模式図である。
【発明を実施するための形態】
【０００５】
ここで、例示的な実施例を詳細に説明する。その例示は、図面に示される。以下の記述は、図面に係る際、別途示さない限り、異なる図面における同じ符号が同じ又は類似する要素を示す。以下の例示的な実施例に記述される実施形態が本発明と一致する全ての実施形態を代表するわけではない。逆に、それらは、単に添付する特許請求の範囲に詳細に記述されるような、本発明の幾つかの態様に一致する装置及び方法の例である。
【０００６】
本発明で使用される用語は、単に決定の実施例を記述する目的であり、本発明を制限するためのものではない。本発明及び添付する特許請求の範囲で使用される単数形式の「一種」、「前記」及び「当該」も、文脈から他の意味を明瞭で分かる場合でなければ、複数の形式を含むことを意図する。理解すべきことは、本文で使用される用語「及び／又は」が、１つまたは複数の関連する列挙項目を含む如何なる或いは全ての可能な組み合わせを指す。
【０００７】
理解すべきことは、本発明において第１、第２、第３等という用語を用いて各種の情報を記述するが、これらの情報は、これらの用語に限定されるものではない。これらの用語は、単に同一のタイプの情報同士を区分するために用いられる。例えば、本発明の範囲を逸脱しない限り、第１情報が第２情報と呼称されてもよく、類似的に、第２情報が第１情報と呼称されてもよい。これは、コンテキストに依存する。例えば、ここで使用される言葉「場合」は、「…とき」や「…ときに」あるいは「決定の状況に応じて」として解釈されてもよい。
【０００８】
理解の便宜上、以下では、ＮＡＴ（Ｎｅｔｗｏｒｋ Ａｄｄｒｅｓｓ Ｔｒａｎｓｌａｔｉｏｎ、ネットワークアドレス変換）に関する関連内容を紹介する。
【０００９】
変換モードの側面から言うと、ＮＡＴは、ＰＡＴ（Ｐｏｒｔ Ａｄｄｒｅｓｓ Ｔｒａｎｓｌａｔｉｏｎ、ポートを利用するアドレス変換）とＮＯ−ＰＡＴ（Ｎｏｔ Ｐｏｒｔ Ａｄｄｒｅｓｓ Ｔｒａｎｓｌａｔｉｏｎ、ポートを利用しないアドレス変換）とに分けられてもよい。ただし、ＮＯ−ＰＡＴモードにおいて、１つのエクストラネットＩＰアドレス（即ち、パブリックネットワークＩＰアドレス）は、１つのイントラネットＩＰアドレスに割り当てられてＮＡＴ処理させるしかできない一方、ＰＡＴモードにおいて、１つのエクストラネットＩＰアドレスは、同時に複数のイントラネットＩＰアドレスに割り当てられて共用されてもよい。本発明で現れるＮＡＴは、ＰＡＴモードを指す。
【００１０】
また、異なるネットワーキング応用に応じて、ＮＡＴは、入力インターフェース変換ソースＩＰアドレス、入力インターフェース変換宛先ＩＰアドレス、出力インターフェース変換ソースＩＰアドレス及び出力インターフェース変換宛先ＩＰアドレスに分けられてもよい。なお、異なるアドレスの変換手順は、類似する。
【００１１】
本発明は、ＮＡＴ手順の確立性能が向上するように、ＮＡＴ方法、装置及びＮＡＴ機器を提供する。
【００１２】
以下では、まず、本発明に係るＮＡＴ方法を紹介する。本発明に係るＮＡＴ方法は、ＮＡＴ機器に適用され、具体的に、当該ＮＡＴ方法は、ＮＡＴ機器におけるＣＰＵによって実行されてもよく、無論、ＣＰＵと幾つかのハードウェアとによって共同実行されてもよい。ただし、当該幾つかのハードウェアは、集積回路ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ）／ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ、フィールドプログラマブルゲートアレイ）であってもよい。ただし、所謂ＮＡＴ機器は、ネットワークのエッジ機器であり、内部ネットワークユーザから外部パブリックネットワークへのアクセスを許容し、および外部パブリックネットワークから一部の内部リソース（例えば、内部サーバ）へのアクセスを許容する目的を果たす。例を挙げると、当該ＮＡＴ機器の機器タイプは、ルータであってもよいが、これに限定されない。
【００１３】
また、セッション表は、２階層の表に分けられる。具体的に、セッション表の第１階層は、ハッシュ表であり、５タプルに対してハッシュ演算を行って得られた署名情報と、結果表を指すポインタとを記憶するために用いられ、セッション表の第２階層は、結果表であり、５タプル及び転送に関する他の情報を記憶するために用いられる。
【００１４】
セッション情報確立フローにおいて、ハッシュ表を検索することによって衝突しないターゲット５タプルを決定した後、ハッシュ表に当該ターゲット５タプル及び対応するオリジナル５タプルを記録してもよい。具体的に、(１)当該ハッシュ表における１つのハッシュバケットに、当該オリジナル５タプルに対応する署名情報と、結果表を指すポインタとを記憶し、(２)ターゲット５タプルについて位置交換を行い、位置交換後のターゲット５タプルを取得し、ハッシュ表における１つのハッシュバケットに、位置交換後のターゲット５タプルに対応する署名情報と、結果表を指すポインタとを記憶する。ただし、所謂位置交換は、ソースＩＰアドレスと宛先ＩＰアドレスとの互いの入れ替え、及び、ソースポートと宛先ポートとの互いの入れ替えである。
【００１５】
ハッシュ表に含まれ得るパケットのオリジナル５タプルに対応する署名情報の記録は、当該パケットの、ハッシュ表における正方向ハッシュ記録に属する一方、ハッシュ表に含まれる位置交換後のターゲット５タプルに対応する署名情報の記録は、当該パケットの、ハッシュ表における逆方向ハッシュ記録に属する。また、同一のパケットに対応する正方向ハッシュ記録と逆方向ハッシュ記録とは、同じポインタを含む。つまり、同一のパケットに対応する正方向ハッシュ記録と逆方向ハッシュ記録とは、結果表における同一の記録に対応する。ただし、結果表における何れか１つの記録は、１つのパケットのオリジナル５タプルと、当該パケットに対応する位置交換後のターゲット５タプルとを少なくとも含む。
【００１６】
本発明では、ハッシュ表に５タプルの関連情報を記録する記憶方式に対して変更を行った。例えば、ＩＰアドレスが同じでありポートが連続する複数の５タプルについて、ハッシュ表における対応するハッシュバケットも連続する。こうして、連続する複数のハッシュバケットを一度で読み取り可能であり、連続する複数のハッシュバケットに対応する複数の５タプルのそれぞれがハッシュ衝突を発生するか否かを判断可能である。
【００１７】
理解の便宜上、本発明は、本発明に係る方法に適用可能なネットワーキングシステムを例示する。当該ネットワーキングシステムの構造模式図は、図１を参照してもよい。図１に示すように、当該ネットワーキングシステムは、ホストＡ、ＮＡＴ機器Ｂ及びサーバＣを含む。ホストＡとサーバＣが異なるネットワークに属する（即ち、ホストＡがイントラネットに属し、サーバＣがエクストラネットに属する）ため、ホストＡがサーバＣへパケットを送信する際、ＮＡＴ機器Ｂは、ホストＡから送信されたパケットに対してＮＡＴ処理を行ってから、ＮＡＴ処理されたパケットをサーバＣへ送信する必要がある。類似的に、サーバＣがホストＡへパケットを送信する際、ＮＡＴ機器Ｂは、サーバＣから送信されたパケットに対してＮＡＴ処理を行った後、ＮＡＴ処理されたパケットを当該ホストＡへ送信する必要がある。確立性能が向上するように、図１におけるＮＡＴ機器Ｂは、本発明に係るＮＡＴ方法を利用して、ホストＡからサーバＣへ送信されたパケットに対してＮＡＴ処理、および、サーバＣからホストＡへ送信されたパケットに対してＮＡＴ処理を行ってもよい。
【００１８】
図２に示すように、本発明に係るＮＡＴ方法は、以下のステップを含んでもよい。
【００１９】
Ｓ１０１では、ＮＡＴリソースプールから宛先ＩＰアドレスおよび当該宛先ＩＰアドレスの参照ポートを取得し、当該参照ポートは、当該宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートである。
【００２０】
ＮＡＴ機器がネットワーキングシステムにおける他の機器から送信されたパケットを受信したときに、当該パケットがＮＡＴ処理される必要があり且つ当該パケットがセッション情報確立条件を満たす場合に、当該ＮＡＴ機器が確立フローを実行する。本発明に供される技術案では、当該ＮＡＴ機器は、確立フローを実行するときに、ＮＡＴリソースプールから宛先ＩＰアドレスおよび当該宛先ＩＰアドレスの参照ポートを取得してもよい。当該参照ポートは、当該宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートである。また、当該ＮＡＴ機器は、当該パケットのオリジナル５タプルに対してハッシュ演算を行った値を利用してポート選択、ランダム選択または順次選択等を行ってもよい。
【００２１】
１つのパケットにとって、当該パケットのオリジナル５タプルがソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポート及び伝送プロトコルを含むが、ＮＡＴ処理時の変換需要が、ソースＩＰアドレスのみを変換する或いは宛先ＩＰアドレスのみを変換することであってもよく、ソースＩＰアドレスも宛先ＩＰアドレスも変換することであってもよい。したがって、当該宛先ＩＰアドレス及び当該参照ポートが取得された後、ソースＩＰアドレスを変換する必要があれば、当該宛先ＩＰアドレスは、オリジナル５タプルにおけるソースＩＰアドレスを付け替えるために用いられ、参照ポートは、オリジナル５タプルにおけるソースポートを付け替えるために用いられる。宛先ＩＰアドレスを変換する必要があれば、当該宛先ＩＰアドレスは、オリジナル５タプルにおける宛先ＩＰアドレスを付け替えるために用いられ、参照ポートは、オリジナル５タプルにおける宛先ポートを付け替えるために用いられる。また、本発明における前記宛先ＩＰアドレスは、ＮＡＴリソースプールから取り出された１つのＩＰアドレスであり、当該宛先ＩＰアドレスは、ソースＩＰアドレスまたは宛先ＩＰアドレスとされてもよい。当該参照ポートは、当該宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートであり、当該参照ポートは、ソースポートまたは宛先ポートとされてもよい。
【００２２】
また、ＡＣＬ（Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌ Ｌｉｓｔ、アクセス制御リスト）に基づいて、パケットがＮＡＴ処理される必要があるか否か、ＮＡＴ処理時の変換需要、およびＮＡＴ処理時に使用されるＮＡＴリソースプール等を決定してもよい。ただし、異なるタイプのＩＰアドレスに応対するように、ＮＡＴ機器には、複数のＮＡＴリソースプールが記憶され、且つ、各ＮＡＴリソースプールは、何れもＩＰアドレス及び対応するポート範囲を含む。
【００２３】
例を挙げて言うと、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ 伝送制御プロトコル）を採用するデータストリームにおけるパケットについて、パケットがセッション情報確立条件を満たすか否かの具体的な判断方式は、パケットが最初のパケットであるか否かを判断し、そうであれば、パケットがセッション情報確立条件を満たすと決定することを含んでもよい。ＵＤＰ（Ｕｓｅｒ Ｄａｔａｇｒａｍ Ｐｒｏｔｏｃｏｌ、ユーザデータグラムプロトコル）を採用するデータストリームにおけるパケットについて、パケットがセッション情報確立条件を満たすか否かの具体的な判断方式は、パケットがセッション表に基づいて直接ＮＡＴ処理を実行され得るか否かを判断し、できなければ、パケットがセッション情報確立条件を満たすと決定することを含んでもよい。ここで、単にＴＣＰプロトコル、ＵＤＰプロトコルを例として記述し、制限性を有さず、具体的な応用において、他のプロトコルを採用するデータストリームにおけるパケットについて、類似する処理を行ってもよい。例えば、当該パケットがセッション表に基づいて直接ＮＡＴ処理を実行され得ないと判断したときに、パケットがセッション情報確立条件を満たすと決定する。
【００２４】
パケットがセッション表に基づいて直接ＮＡＴ処理を実行され得るか否かを判断する手順は、ハッシュ表を利用する必要があるが、本発明においてハッシュ表の記憶方式が変更されたため、パケットがセッション表に基づいて直接ＮＡＴ処理を実行され得るか否かを判断する手順も変化する。後で詳しく紹介する。
【００２５】
Ｓ１０２では、当該宛先ＩＰアドレスと、当該参照ポートと、当該パケットのオリジナル５タプルとに基づいて、当該パケットに対応する第１の５タプルを生成し、当該第１の５タプルの２種のポート（即ち、ＮＡＴ処理が行われるポートと、ＮＡＴ処理が行われないポート）の第１種のビットに対してマスク処理を行い、第２の５タプルを取得する。
【００２６】
Ｓ１０３では、当該第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットから衝突しないターゲット５タプルを決定する。
【００２７】
当該宛先ＩＰアドレス及び当該参照ポートが取得された後、当該ＮＡＴ機器は、当該パケットに対応する変換需要に応じて、当該宛先ＩＰアドレスで当該パケットのオリジナル５タプルにおけるソースＩＰアドレス又は宛先ＩＰアドレスを付け替え、当該参照ポートで当該オリジナル５タプルにおけるソースポート又は宛先ポートを付け替えることにより、当該パケットに対応する第１の５タプルを生成してもよい。第１の５タプルが取得された後、当該ＮＡＴ機器は、当該第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、即ち、０にセットし、第２の５タプルを取得する。更に、当該ＮＡＴ機器は、当該第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットから衝突しないターゲット５タプルを決定する。セッション表に基づいて直接ＮＡＴ処理を行う際、変換されるのがソースＩＰアドレスであるかそれとも宛先ＩＰアドレスであるかを決定できないため、本発明では、第１の５タプルにおけるソースポートと宛先ポートとに対して同時にマスク処理を行う。
【００２８】
ポートは、１６ビットで示される。つまり、ソースポートと宛先ポートは、何れも１６ビットで示される。第１種のビットは、ビット数と位置が実際の状況に応じて設定されてもよい。例を挙げると、第１種のビットは、ポートの第０ビットであってもよく、ポートの第０ビット及び第１ビットであってもよく、ポートの第０ビット、第１ビット及び第２ビットであってもよく、ポートの第１４ビット及び第１５ビット等のケースであってもよい。演算の便宜上、具体的な応用において、当該第１種のビットは、ポート末尾の連続する少なくとも１桁であり、具体的な桁数は、具体的な応用環境に応じて設定されてもよい。例を挙げると、当該第１種のビットは、ポートの末尾の連続する２桁であり、即ち、第０ビットと第１ビットであり、または、当該第１種のビットは、ポートの末尾の連続する３桁であり、即ち、第０ビット、第１ビットと第２ビットであり、または、当該第１種のビットは、ポートの末尾の連続する４桁であり、即ち、第０ビット、第１ビット、第２ビットと第３ビット等のケースである。
【００２９】
ハッシュ表に対応する記憶領域は、複数のハッシュバケットに分けられ、そして、固定桁数の二進数文字列をハッシュバケットのインデックス値とする。衝突テスト速度を向上させて確立性能を高めるために、本発明では、複数の５タプルに対応するハッシュバケットを連続させる必要がある。このような需要に応じて、ハッシュ表における１つのハッシュバケットに、何れか１つの５タプルに対応する署名情報を記憶する具体的な手順は、下記のことを含んでもよい。
【００３０】
(１)当該５タプル中ソースポート及び宛先ポートの第１種のビットに対してマスク処理を行い、第１ハッシュアルゴリズムを利用し、マスク後の５タプルに対応するインデックス値を算出する。
【００３１】
ただし、区別が２種のポートの第１種のビットのみにある複数の５タプルは、同一のインデックス値に対応してもよい。
【００３２】
(２)当該インデックス値に対してオフセット処理を行い、固定桁数を有する新たなインデックス値を形成し、当該５タプルに対応する署名情報を当該新たなインデックス値に対応するハッシュバケットに記録する。ただし、オフセット処理は、当該５タプルにおける２種のポートの第１種のビットの組み合わせでインデックス値の下位Ｎ桁を付け替えること、または、インデックス値の尾部に当該組み合わせを補うことである。ただし、Ｎは、当該５タプルにおける２種のポートの第１種のビットの総桁数である。
【００３３】
上述した何れか１つの５タプルがハッシュ表に格納される方式に基づいて、複数の５タプルが衝突しない５タプルであるか否かを一度で探るために、第１の５タプルが取得された後、まず、当該第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行って第２の５タプルを取得し、更に当該第２の５タプルのハッシュ結果に基づいて、ハッシュ表における連続する複数のハッシュバケットを決定し、当該連続する複数のハッシュバケットから、衝突しないターゲット５タプルを決定してもよい。
【００３４】
具体的に、当該第２の５タプルのハッシュ結果に基づいて、ハッシュ表の連続する複数のハッシュバケットから衝突しないターゲット５タプルを決定するステップは、
第１ハッシュアルゴリズムを利用し、当該第２の５タプルに対応する第１インデックス値を算出することと、
当該第１インデックス値に対してベースアドレス処理を行い、第２インデックス値を取得し、当該第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定することと、
当該第２の５タプルと第２ハッシュアルゴリズムとに基づいて、当該Ｍ個の第１種のハッシュバケットから衝突しないターゲット５タプルを決定することと、を含んでもよく、
当該ベースアドレス処理は、当該第１インデックス値の下位Ｎ桁を０にセットすること、または、当該第１インデックス値の末尾にＮ桁の０を補うことを含み、
Ｎは、２種のポートの第１種のビットの数の合計であり、Ｍは、２Nである。
【００３５】
理解できるように、当該ベースアドレス処理は、上記オフセット処理に対して対応性を有する。具体的に、当該オフセット処理が５タプルにおける２種のポートの第１種のビットの組み合わせでインデックス値の下位Ｎ桁を付け替えることである場合に、それ相応に、当該ベースアドレス処理は、当該第１インデックス値の下位Ｎ桁を０にセットすることとなる一方、当該オフセット処理がインデックス値の末に当該組み合わせを補うことである場合に、それ相応に、当該ベースアドレス処理は、第１インデックス値の末尾にＮ桁の０を補うこととなる。また、第１ハッシュアルゴリズムは、ＭＤ（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ Ａｌｇｏｒｉｔｈｍ、メッセージダイジェストアルゴリズム）又はＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ、セキュアハッシュアルゴリズム）等を含んでもよい。
【００３６】
また、当該第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定する具体的な手順は、当該第２インデックス値に対応する第１種のハッシュバケットを決定し、当該第２インデックス値に対応する第１種のハッシュバケットを始点として、連続するＭ個の第１種のハッシュバケットを読み取る。更に、前記当該第２の５タプルと第２ハッシュアルゴリズムとに基づいて、当該Ｍ個の第１種のハッシュバケットから衝突しないターゲット５タプルを決定するステップは、
当該第２の５タプルにおける第１種のポートの第１種のビットを復元し、第３の５タプルを取得することと、
当該Ｍ個の第１種のハッシュバケットから衝突しないターゲット５タプルが決定されるまで、当該第３の５タプルに対して衝突テストを実行することと、を含んでもよく、当該第１種のポートは、当該オリジナル５タプルにおける、ＮＡＴ処理が行われないポートであり、
前記衝突テストは、
当該第３の５タプルにおける第２種のポートの第１種のビットを０にセットする及び／又は１にセットする方式により、その第２種のポートが当該１つの連続ポート範囲に属する第４の５タプルを生成することと、
第２ハッシュアルゴリズムを利用し、第４の５タプルに対応する第１署名情報を算出することと、
第１目標値を第３インデックス値として、当該Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定することと、
当該ターゲットハッシュバケットに記録された有効な署名情報のうち、当該第１署名情報が存在すると判断されたときに、当該第４の５タプルを衝突しないターゲット５タプルとして決定することとを含み、
当該第２種のポートは、当該オリジナル５タプルにおけるＮＡＴ処理が行われるポートであり、当該第１目標値は、当該第４の５タプルにおける２種のポートの第１種のビットの組み合わせである。
【００３７】
ただし、第２ハッシュアルゴリズムは、ＭＤ（Ｍｅｓｓａｇｅ Ｄｉｇｅｓｔ Ａｌｇｏｒｉｔｈｍ、メッセージダイジェストアルゴリズム）又はＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ、セキュアハッシュアルゴリズム）等を含んでもよい。また、第１目標値を第３インデックス値として、当該Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定する具体的な手順は、当該第１目標値を第３インデックス値とし、更に、当該Ｍ個の第１種のハッシュバケットのうち、当該第３インデックス値に対応する第１種のハッシュバケットをターゲットハッシュバケットとする。
【００３８】
理解できるように、幾つかのポートがＮＡＴリソースプールにおける無効ポートに属し、当該第３の５タプルにおける第２種のポートの第１種のビットを０にセットして及び／又は１にセットして得られたポートは、ＮＡＴリソースプールにおける無効ポートに属する可能性がある。したがって、第４の５タプルの第２種のポートが当該無効ポートに属することを回避するために、第４の５タプルを生成する際、当該第４の５タプルの第２種のポートは、参照ポートの所在する当該１つの連続ポート範囲内に限定されてもよい。
【００３９】
また、説明すべきことは、ハッシュ表を初期化するとき、ハッシュエントリにおける署名情報とポインタとを何れも無効値に設定してもよい。５タプルをハッシュ表に書き込むとき、当該５タプルに応じて、対応する署名情報及びポインタを有効値に変更してもよい。署名情報及びポインタが無効値であるか有効値であるかを区分するために、本案において、ハッシュエントリに、署名情報及びポインタごとに、１つのビットを対応設置し、当該ビットを０又は１にセットすることで、無効値か有効値かを区分してもよい。
【００４０】
Ｓ１０４では、当該ハッシュ表及び対応する結果表に当該ターゲット５タプル及び当該オリジナル５タプルを記録し、当該ターゲット５タプルに基づいて当該パケットに対してＮＡＴ処理を行う。
【００４１】
ハッシュ表の連続する複数のハッシュバケットから衝突しないターゲット５タプルが決定された後、当該ハッシュ表及び対応する結果表に当該ターゲット５タプル及び当該オリジナル５タプルを記録し、当該ターゲット５タプルに基づいて当該パケットに対してＮＡＴ処理を行ってもよい。ただし、結果表に当該ターゲット５タプル及び当該オリジナル５タプルを記録することは、当該オリジナル５タプルと、当該ターゲット５タプルに対して位置交換を行った５タプルとを当該結果表に記録することを含んでもよい。当該ターゲット５タプルに基づいて当該パケットに対してＮＡＴ処理を行うことは、当該パケットにおけるオリジナル５タプルをターゲット５タプルに付け替えることを含んでもよい。本発明において、当該ハッシュ表及び対応する結果表に当該ターゲット５タプル及び当該オリジナル５タプルを記録する具体的な手順は、下記のことを含んでもよい。
【００４２】
(１)第２ハッシュアルゴリズムを利用し、当該オリジナル５タプルに対応する署名情報を算出することと、当該オリジナル５タプルのソースポート及び宛先ポートの第１種のビットに対してマスク処理を行って新たな５タプルを取得し、第１ハッシュアルゴリズムを利用して当該オリジナル５タプルに対応する新たな５タプルのインデックス値を取得し、オリジナル５タプルの２種のポートの第１種のビットの組み合わせを利用して当該新たな５タプルのインデックス値に対してオフセット処理を行い、新たなインデックス値を取得することと、当該新たなインデックス値で当該ハッシュ表を検索し、１つのハッシュバケットを決定し、当該オリジナル５タプルに対応する署名情報と結果表を指すポインタとを決定された当該ハッシュバケットに記憶することとが含まれる。
【００４３】
(２)当該ターゲット５タプルに対して位置交換を行って位置交換後のターゲット５タプルを取得することと、第２ハッシュアルゴリズムを利用して位置交換後のターゲット５タプルに対応する署名情報を算出することと、位置交換後のターゲット５タプルの２種のポートの第１種のビットに対してマスク処理を行い、位置交換後のターゲット５タプルに対応する新たな５タプルを取得することと、第１ハッシュアルゴリズムを利用して当該新たな５タプルのインデックス値を算出することと、位置交換後のターゲット５タプルの２種のポートの第１種のビットの組み合わせに基づいて、当該インデックス値に対してオフセット処理を行い、新たなインデックス値を形成することと、当該新たなインデックス値で当該ハッシュ表を検索し、１つのハッシュバケットを決定し、位置交換後のターゲット５タプルに対応する署名情報と結果表を指すポインタとを決定された当該ハッシュバケットに記憶することとが含まれる。また、理解できるように、当該パケットがＮＡＴ処理されるべきと判断したときに、確立手順を実行する前に、更に、当該パケットがセッション表に基づいて直接ＮＡＴ処理を実行され得るか否かを判断してもよい。したがって、本発明に係るＮＡＴ方法は、以下のステップを更に含んでもよい。
【００４４】
ステップ０１では、当該パケットがＮＡＴ処理されるべきと判断したときに、第２ハッシュアルゴリズムを利用し、当該オリジナル５タプルに対応する第２署名情報を算出する。
【００４５】
ステップ０２では、当該オリジナル５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第５の５タプルを取得する。
【００４６】
ステップ０３では、第１ハッシュアルゴリズムを利用し、当該第５の５タプルに対応する第４インデックス値を算出する。
【００４７】
ステップ０４では、当該第４インデックス値に対してオフセット処理を行い、第５インデックス値を形成し、当該第５インデックス値で当該ハッシュ表を検索し、第２種のハッシュバケットを決定し、ただし、当該オフセット処理は、第２目標値で当該第４インデックス値の下位Ｎ桁を付け替えること、または、当該第４インデックス値の末尾に当該第２目標値を補うことであり、当該第２目標値は、当該オリジナル５タプルの２種のポートの第１種のビットの組み合わせである。
【００４８】
ステップ０５では、当該第２種のハッシュバケットに記録された有効な署名情報のうち、当該第２署名情報が存在すると判断したときに、当該結果表に基づいて当該パケットに対してＮＡＴ処理を行い、そうでなければ、前記ＮＡＴリソースプールから宛先ＩＰアドレスおよび前記宛先ＩＰアドレスの参照ポートを取得するステップを実行する。
【００４９】
ただし、当該結果表に基づいて当該パケットに対してＮＡＴ処理を行うステップは、具体的に、当該第２種のハッシュバケットに記録された第２署名情報に対応するポインタに基づいて、結果表から５タプルを決定し、更に決定された５タプルに基づいて、当該パケットに対してＮＡＴ処理を行う。
【００５０】
本発明に係る技術案では、ハッシュ表の連続する複数のハッシュバケットを一度で決定し、更に、衝突しないターゲット５タプルをハッシュ表の連続する複数のハッシュバケットから決定する。つまり、連続する複数のハッシュバケットに対応する複数の５タプルが衝突しない５タプルであるか否かを一度で探る。これにより、衝突テストのときに記憶媒体に対する読取回数が減少可能であるため、ＮＡＴ手順における確立性能が向上することができる。
【００５１】
以下では、応用実例を組み合わせて本発明に係るＮＡＴ方法を紹介する。
【００５２】
当該応用実例において、ネットワーキング模式図は、図１に示され、当該ネットワーキングシステムは、具体的にホストＡ、ＮＡＴ機器Ｂ及びサーバＣを備える。ただし、ホストＡのＩＰアドレスは、１９２．１６８．１．２であり、ＮＡＴ機器ＢのイントラネットＩＰアドレスは、１９２．１６８．１．１であり、エクストラネットＩＰアドレスは、１．１．１．１であり、サーバＣのＩＰアドレスは、１．１．１．２である。
【００５３】
図３と図４に示すように、本発明に係るＮＡＴ方法は、以下のステップを含んでもよい。
【００５４】
ｓ０１では、ＮＡＴ機器Ｂは、ホストＡ〜サーバＣのパケットを受信した後、ＡＣＬに基づいて、当該パケットがＮＡＴ処理されるべきであると決定する。
【００５５】
ｓ０２では、当該パケットにおけるオリジナル５タプル (１９２．１６８．１．２、１．１．１．２、２２２２、８０、ｔｃｐ)を取り出す。
【００５６】
ただし、当該オリジナル５タプルにおいて、１９２．１６８．１．２は、ソースＩＰアドレスであり、１．１．１．２は、宛先ＩＰアドレスであり、２２２２は、ソースポートであり、８０は、宛先ポートであり、ｔｃｐは、伝送プロトコルである。
【００５７】
ｓ０３では、ＭＤアルゴリズムを利用して、当該オリジナル５タプルに対応する署名情報ｓｉｇ１を算出する。
【００５８】
ｓ０４では、当該オリジナル５タプルのソースポートの第０ビットｐ０と宛先ポートの第０ビットｐ１とに対してマスク処理を行い、５タプルＧ １（１９２．１６８．１．２、１．１．１．２、Ｐsrc1、Ｐdst1、ｔｃｐ）を取得する。
【００５９】
ただし、Ｐsrc1は、ソースポート２２２２の第０ビットｐ０に対してマスク処理を行って得られた値であり、Ｐdst1は、宛先ポート８０の第０ビットｐ１に対してマスク処理を行って得られた値である。
【００６０】
ｓ０５では、ＳＨＡアルゴリズムを利用して、当該５タプルＧ １に対応するインデックス値ｉｎｄ１を算出する。
【００６１】
ｓ０６では、ｐ０とｐ１との組み合わせでインデックス値ｉｎｄ１の下位２桁を付け替え、インデックス値ｉｎｄ２を形成する。
【００６２】
ｓ０７では、インデックス値ｉｎｄ２でハッシュ表を検索し、ハッシュバケットＤ１を決定する。
【００６３】
ｓ０８では、当該ハッシュバケットＤ１に記録された有効な署名情報のうち、署名情報ｓｉｇ１が存在すると判断されたときに、結果表に基づいて当該パケットに対してＮＡＴ処理を行い、そうでなければ、ｓ０９を実行する。
【００６４】
図３に示すハッシュ表において、ｖは、署名情報及びポインタが有効値か無効値かを認識するために用いられる。ただし、ｖが０であるときに、署名情報及びポインタが無効値であることを示し、ｖが１であるときに、署名情報及びポインタが有効値であることを示す。
【００６５】
ｓ０９では、ＡＣＬに基づいて、当該パケットに対応するアドレス変換タイプがソースＩＰアドレスの変換であると決定する。
【００６６】
ｓ１０では、ソースＩＰアドレスに対応するＮＡＴリソースプールから宛先ＩＰアドレス及び参照ポートを取得する。
【００６７】
ただし、当該宛先ＩＰアドレスが１．１．１．１であり、参照ポートが２００１であると仮定する。
【００６８】
ｓ１１では、宛先ＩＰアドレスでオリジナル５タプルにおけるソースＩＰアドレスを付け替え、参照ポートでオリジナル５タプルにおけるソースポートを付け替えて、５タプルＧ２を取得し、５タプルＧ２のソースポートの第０ビットｐ２と宛先ポートの第０ビットｐ１とに対してマスク処理を行い、５タプルＧ３を取得する。
【００６９】
ただし、図４に示すように、５タプルＧ２は、（１．１．１．１、１．１．１．２、２００１、８０、ｔｃｐ）であり、それ相応に、５タプルＧ３は、（１．１．１．１、１．１．１．２、Ｐsrc2、Ｐdst2、ｔｃｐ）である。
【００７０】
ただし、Ｐsrc2は、５タプルＧ２のソースポートの第０ビットｐ２に対してマスク処理を行って得られた値であり、Ｐdst2は、５タプルＧ２の宛先ポートの第０ビットｐ１に対してマスク処理を行って得られた値である。
【００７１】
ｓ１２では、ＳＨＡアルゴリズムを利用して、５タプルＧ３に対応するインデックス値ｉｎｄ３を算出する。
【００７２】
ｓ１３では、インデックス値ｉｎｄ３の下位２桁を０にセットしてインデックス値ｉｎｄ４を取得し、インデックス値ｉｎｄ４をインデックスとして、ハッシュ表から４つの連続する第１種のハッシュバケットを読み取る。
【００７３】
ｓ１４では、５タプルＧ３の宛先ポートのマスクビットを復元して５タプルＧ４を取得する。
【００７４】
ただし、５タプルＧ４は、（１．１．１．１、１．１．１．２、Ｐsrc2、８０、ｔｃｐ）である。
【００７５】
ｓ１５では、５タプルＧ４のソースポートの第０ビットＰ２を０にセットして５タプルＧ５を取得し、ＭＤアルゴリズムを利用して５タプルＧ５に対応する署名情報ｓｉｇ２を算出し、ｐ２とｐ１との組み合わせをインデックスとして、連続する４個の第１種のハッシュバケットからハッシュバケットＤ２を決定し、当該ハッシュバケットＤ２に記録された有効な署名情報のうち、当該ｓｉｇ２が存在するか否かを検索し、存在しない場合に、５タプルＧ５を当該パケットに対応するターゲット５タプルとし、ハッシュ表及び対応する結果表に５タプルＧ５及びオリジナル５タプルを記録し、５タプルＧ５に基づいて当該パケットに対してＮＡＴ処理を行い、存在する場合に、ｓ１６を実行する。
【００７６】
ｓ１６では、５タプルＧ４のソースポートの第０ビットＰ２を１にセットして５タプルＧ６を取得し、ＭＤアルゴリズムを利用して５タプルＧ６に対応する署名情報ｓｉｇ３を算出し、ｐ２とｐ１との組み合わせをインデックスとして、連続する４個の第１種のハッシュバケットからハッシュバケットＤ３を決定、当該ハッシュバケットＤ３に記録された有効な署名情報のうち、当該ｓｉｇ３が存在するか否かを検索し、存在しない場合に、５タプルＧ６を当該パケットに対応するターゲット５タプルとし、ハッシュ表及び対応する結果表に５タプルＧ６及びオリジナル５タプルを記録し、５タプルＧ６に基づいて当該パケットに対してＮＡＴ処理を行い、存在する場合に、戻ってｓ１０を実行し、ソースＩＰアドレスに対応するＮＡＴリソースプールから新たな宛先ＩＰアドレス及び参照ポートを取得する。
【００７７】
オリジナル５タプルに対応するアドレス変換タイプが宛先ＩＰアドレスであるときに、ＮＡＴフローは、ｓ０１−ｓ１６と類似し、区別が宛先ポートとソースポートとの処理を互いに入れ替えることにある。
【００７８】
これにより、本具体的な実施例において、衝突テストのときに記憶媒体に対する読取回数が減ったため、セッション情報確立性能が悪いという問題は解決できる。
【００７９】
上記方法実施例に相応し、本発明は、ＮＡＴ装置を提供する。図５に示すように、前記装置は、以下のユニットを備える。
取得ユニット５１０は、ＮＡＴリソースプールから宛先ＩＰアドレスおよび前記宛先ＩＰアドレスの参照ポートを取得するために用いられ、前記参照ポートは、前記宛先ＩＰアドレスの１つの連続ポート範囲における１つのポートである。
処理ユニット５２０は、前記宛先ＩＰアドレスと、前記参照ポートと、パケットのオリジナル５タプルとに基づいて、前記パケットに対応する第１の５タプルを生成し、それぞれ前記第１の５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第２の５タプルを取得するために用いられる。
決定ユニット５３０は、前記第２の５タプルに対するハッシュ演算の結果に基づいて、ハッシュ表の連続する複数のハッシュバケットからターゲット５タプルを決定するために用いられる。
変換ユニット５４０は、前記ハッシュ表及び対応する結果表に前記ターゲット５タプル及び前記オリジナル５タプルを記録し、前記ターゲット５タプルに基づいて前記パケットに対してＮＡＴ処理を行うために用いられる。
【００８０】
本発明に係る技術案では、ハッシュ表の連続する複数のハッシュバケットを一度で決定し、更に、衝突しないターゲット５タプルをハッシュ表の連続する複数のハッシュバケットから決定する。つまり、連続する複数のハッシュバケットに対応する複数の５タプルが衝突しない５タプルであるか否かを一度で探る。これにより、衝突テストのときに記憶媒体に対する読取回数が減少可能であるため、ＮＡＴ手順における確立性能が向上することができる。
【００８１】
好ましくは、前記決定ユニット５３０は、下記のサブユニットを含んでもよい。
算出サブユニットは、第１ハッシュアルゴリズムを利用し、前記第２の５タプルに対応する第１インデックス値を算出するために用いられる。
検索サブユニットは、前記第１インデックス値に対してベースアドレス処理を行って第２インデックス値を取得し、前記第２インデックス値をベースアドレスとしてハッシュ表を検索し、連続するＭ個の第１種のハッシュバケットを決定するために用いられる。
決定サブユニットは、前記第２の５タプルと第２ハッシュアルゴリズムとに基づいて、前記Ｍ個の第１種のハッシュバケットからターゲット５タプルを決定するために用いられる。
ただし、前記ベースアドレス処理は、前記第１インデックス値の下位Ｎ桁を０にセットすること、または、前記第１インデックス値の末尾にＮ桁の０を補うことを含み、
Ｎは、２種のポートの第１種のビットの数の合計であり、Ｍは、２Nである。
【００８２】
好ましくは、前記決定サブユニットは、具体的に、
前記第２の５タプルにおける第１種のポートの第１種のビットを復元し、第３の５タプルを取得し、
前記Ｍ個の第１種のハッシュバケットからターゲット５タプルが決定されるまで、前記第３の５タプルに対して衝突テストを実行するために用いられ、ただし、前記第１種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われないポートであり、
前記衝突テストは、
前記第３の５タプルにおける第２種のポートの第１種のビットを０にセットする及び／又は１にセットすることにより、その第２種のポートが前記１つの連続ポート範囲に属する第４の５タプルを生成することと、
第２ハッシュアルゴリズムを利用し、前記第４の５タプルに対応する第１署名情報を算出することと、
第１目標値を第３インデックス値として、前記Ｍ個の第１種のハッシュバケットからターゲットハッシュバケットを決定することと、
前記ターゲットハッシュバケットに記録された有効な署名情報のうち、前記第１署名情報が存在すると判断されたときに、前記第４の５タプルをターゲット５タプルとして決定することとを含み、
ただし、前記第２種のポートは、前記オリジナル５タプルにおける、ＮＡＴ処理が行われるポートであり、前記第１目標値は、前記第４の５タプルにおける２種のポートの第１種のビットの組み合わせである。
【００８３】
好ましくは、前記装置は、以下のユニットを更に備える。
算出ユニットは、前記パケットがＮＡＴ処理されるべきであると判断されたときに、第２ハッシュアルゴリズムを利用し、前記オリジナル５タプルに対応する第２署名情報を算出する。
マスクユニットは、前記オリジナル５タプルの２種のポートの第１種のビットに対してマスク処理を行い、第５の５タプルを取得するために用いられる。
生成ユニットは、第１ハッシュアルゴリズムを利用し、前記第５の５タプルに対応する第４インデックス値を算出するために用いられる。
インデックスユニットは、前記第４インデックス値に対してオフセット処理を行って第５インデックス値を形成し、前記第５インデックス値で前記ハッシュ表を検索し、第２種のハッシュバケットを決定するために用いられ、ただし、前記オフセット処理は、前記第４インデックス値の下位Ｎ桁を第２目標値で付け替えること、又は、前記第４インデックス値の末尾に前記第２目標値を補うことであり、前記第２目標値は、前記オリジナル５タプルの２種のポートの第１種のビットの組み合わせである。
分析ユニットは、前記第２種のハッシュバケットに記録された有効な署名情報のうち、前記第２署名情報が存在すると判断されたときに、前記結果表に基づいて前記パケットに対してＮＡＴ処理を行い、そうでなければ、前記ＮＡＴリソースプールから新たな宛先ＩＰアドレスおよび前記新たな宛先ＩＰアドレスの参照ポートを取得するために用いられる。
【００８４】
装置実施例は、方法実施例に基本的に対応するため、その関連箇所が方法実施例部分の説明を参照すればよい。上述した装置実施例は、単に例示であり、その中、分離部品として説明されるユニットが物理的に分離されるものであってもよくでなくてもよい。また、ユニットとして表示される部品は、物理ユニットであってもでなくてもよい。更に、それらのユニットは、１箇所に位置してもよく、複数のネットワークセルに分散してもよい。実際の需要に応じてその中の一部または全部のモジュールを選択して本実施例の目的を果たすことが可能である。当業者は、進歩性に値する労働をせずに、理解して実施可能である。
【００８５】
また、上記方法実施例に相応し、本発明は、ＮＡＴ機器を更に提供する。図６に示すように、当該ＮＡＴ機器は、内部バス６１０、不揮発性記憶媒体６２０、プロセッサ６３０及び通信インターフェース６４０を備える。ただし、前記プロセッサ６３０、前記通信インターフェース６４０及び前記不揮発性記憶媒体６２０は、前記内部バス６１０を介して互いの通信を実施する。
【００８６】
ただし、前記不揮発性記憶媒体６２０は、ＮＡＴ方法に対応する機器の実行可能な指令を記憶する。
【００８７】
前記プロセッサ６３０は、前記不揮発性記憶媒体６２０における前記機器の実行可能な指令を読み取ることにより、本発明に係るＮＡＴ方法を実行する。
【００８８】
ただし、ＮＡＴ方法に関する具体的なステップの関連記述は、本発明の方法実施例における記述内容を参照すればよいため、ここで繰り返し説明しない。また、注意すべきことは、当該ＮＡＴ機器がルータであってもよいが、無論これに限定されない。
【００８９】
ただし、不揮発性記憶媒体６２０は、例えば、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ ｍｅｍｏｒｙ）であってもよい。プロセッサ６３０は、不揮発性記憶媒体６２０におけるＮＡＴ方法を実現する論理指令を呼び出して実行することにより、上記ＮＡＴ方法を実行してもよい。
【００９０】
ＮＡＴの論理指令を実現する機能は、ソフトウェア機能ユニットの形式で実現され、且つ独立の製品として販売や使用されるときに、１つの機器読み取り可能な記憶媒体に記憶されてもよい。このような理解に基づいて、本発明の技術案は、本質的にまたは従来技術に対して貢献を与える部分または当該技術案の一部がソフトウェア製品の形式で体現されてもよい。当該コンピュータソフトウェア製品は、１つの記憶媒体に記憶され、幾つかの指令を含むことで一台のコンピュータ機器（パソコン、サーバまたはネットワーク機器等であってもよい）に本発明の各実施例の前記方法の全部或いは一部のステップを実行させる。上述した記憶媒体は、Ｕディスク、モバイルハードディスク、読み取り専用メモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、磁気ディスクまたは光ディスク等の、プログラムコードを格納可能な各種の媒体を含む。
【００９１】
当業者は、明細書を考慮してここで開示された本発明を実践した後、本発明の他の実施案を容易に想到し得る。本発明は、本発明の如何なる変形、用途または適応的変化もカバーすることを意図する。これらの変形、用途または適応的変化は、本発明の一般的な原理に従い、本発明に開示されていない当分野における公知常識或いは慣用技術ユニットを含む。明細書及び実施例は、単に例示と見なされ、本発明の真の範囲及び要旨は、請求項から与えられる。
【００９２】
理解できるように、本発明は、上述され且つ図面に示された精確な構造に限定されず、その範囲を逸脱しない範囲で各種の変更や改良を行うことが可能である。本発明の範囲は、添付する請求項のみで限定される。
【００９３】
上述したのは、本発明の実施例に過ぎず、本発明を制限するためのものではない。本発明の精神及び原則内でなされた如何なる変更、均等物による置換、改良等も、本発明の保護範囲内に含まれるべきである。
【図１】
2021516923.tif 000003
【図２】
2021516923.tif 000004
【図３】
2021516923.tif 000005
【図４】
2021516923.tif 000006
【図５】
2021516923.tif 000007
【図６】
2021516923.tif 000008
【国際調査報告】
2021516923.tif 000009
2021516923.tif 000010
2021516923.tif 000011
2021516923.tif 000012