(57)【特許請求の範囲】
【請求項１】
アドレス変換装置であって、
一以上のエントリを有し、各エントリにおいて、第１のアドレスと、第２のアドレスと、前記第１のアドレス及び前記第２のアドレスを用いたＴＣＰ接続がＣＬＯＳＥＤ状態となる時刻であるＣＬＯＳＥＤ時刻と関連する時刻である関連時刻と、が互いに対応付けられて登録されるアドレス変換テーブルと、
現在時刻を取得する時刻取得部と、
前記ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、前記取得された現在時刻に基づき前記関連時刻を決定する関連時刻決定部と、
ＴＩＭＥ＿ＷＡＩＴ状態になった前記ＴＣＰ接続に対応する前記アドレス変換テーブルのエントリに、前記決定された関連時刻を登録し、アドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付け、前記アドレス変換テーブルに登録されている前記関連時刻と前記現在時刻とに基づき、前記ＣＬＯＳＥＤ時刻が前記現在時刻よりも時間的に以前のエントリである解放予定エントリを検索し、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する、アドレス管理部と、
を備える、アドレス変換装置。
【請求項２】
請求項１に記載のアドレス変換装置において、
前記アドレス管理部は、第１のアドレスと第２のアドレスとを新たに対応付けると、前記アドレス変換テーブルに空きエントリがあるか否かを判定し、前記空きエントリがある場合には、前記空きエントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを登録し、前記空きエントリが無い場合には、前記解放予定エントリのうち最も時間的に前となるエントリである最古エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録する、アドレス変換装置。
【請求項３】
請求項２に記載のアドレス変換装置において、さらに、
ＴＩＭＥ＿ＷＡＩＴ状態となった前記ＴＣＰ接続に対応する前記アドレス変換テーブルにおけるエントリの識別子を登録するＴＣＰ解放待ちテーブルを備え、
前記アドレス管理部は、
前記ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、前記アドレス変換テーブルにおいて前記ＴＣＰ接続に対応するエントリの識別子であるエントリ識別子を、前記ＴＣＰ解放待ちテーブルに登録順序が明確になるように登録し、
前記空きエントリが無い場合には、前記ＴＣＰ解放待ちテーブルにおいて時間的に最も前に登録された前記エントリ識別子である最古エントリ識別子を取得し、前記最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とに基づき、前記エントリに対応する前記ＣＬＯＳＥＤ時刻が、前記現在時刻よりも時間的に以前となるか否かを判定し、前記現在時刻よりも時間的に以前となる場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記現在時刻よりも時間的に以前とならない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【請求項４】
請求項３に記載のアドレス変換装置において、
前記ＴＣＰ解放待ちテーブルを、複数のユーザのそれぞれに応じて備え、
前記アドレス管理部は、いずれかのユーザからのアドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付けると、前記空きエントリが無い場合には、該ユーザ用の前記ＴＣＰ解放待ちテーブルにおける前記最古エントリ識別子を取得し、該最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とに基づき、前記エントリに対応する前記ＣＬＯＳＥＤ時刻が、前記現在時刻よりも時間的に以前となるか否かを判定し、前記現在時刻よりも時間的に以前となる場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記現在時刻よりも時間的に以前とならない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載のアドレス変換装置において、
前記第１のアドレスはグローバルＩＰアドレスであり、前記第２のアドレスはプライベートＩＰアドレスである、アドレス変換装置。
【請求項６】
アドレス変換装置において用いられるアドレス変換テーブルの管理方法であって、
前記アドレス変換テーブルは、一以上のエントリを有し、各エントリにおいて、少なくとも第１のアドレスと第２のアドレスとが互いに対応付けられて登録され、
（ａ）第１のアドレス及び第２のアドレスを用いたＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、現在時刻を取得すると共に、前記現在時刻に基づき前記第１のアドレス及び前記第２のアドレスを用いたＴＣＰ接続がＣＬＯＳＥＤ状態となる時刻であるＣＬＯＳＥＤ時刻と関連する時刻である関連時刻を決定する工程と、
（ｂ）前記決定された関連時刻を、既に前記アドレス変換テーブルに登録されている、前記ＴＣＰ接続に対応するエントリに登録する工程と、
（ｃ）アドレス変換要求に基づき、第１のアドレスと第２のアドレスとが新たに対応付けられると、現在時刻を取得すると共に、前記アドレス変換テーブルに登録されている前記関連時刻と前記現在時刻とに基づき、前記ＣＬＯＳＥＤ時刻が前記現在時刻よりも時間的に以前のエントリである解放予定エントリを検索し、前記新たに対応付けられた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する工程と、
を備える、アドレス変換テーブルの管理方法。
【請求項７】
アドレス変換装置であって、
一以上のエントリを有し、各エントリにおいて、第１のアドレスと、第２のアドレスと、
前記第１のアドレス及び前記第２のアドレスを用いたＵＤＰ接続についてセッションを生成する時刻と関連する時刻である関連時刻と、が互いに対応付けられて登録されるアドレス変換テーブルと、
現在時刻を取得する時刻取得部と、
前記ＵＤＰ接続に対して、通信開始から１回の双方向通信が交わされた後に、片方向の通信が一度でも発生したＵＤＰ接続確立状態であるか、前記通信開始から１回の双方向通信が交わされた後に、片方向の通信が発生していないＵＤＰ接続未確立状態であるかを判断するＵＤＰ接続状態判定部と、
アドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付け、前記アドレス変換テーブルのエントリの中から、前記ＵＤＰ接続状態判定部によりＵＤＰ接続未確立状態であると判断され、前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているエントリである解放予定エントリを検索し、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する、アドレス管理部と、
を備える、アドレス変換装置。
【請求項８】
請求項７に記載のアドレス変換装置において、
前記アドレス管理部は、第１のアドレスと第２のアドレスとを新たに対応付けると、前記アドレス変換テーブルに空きエントリがあるか否かを判定し、前記空きエントリがある場合には、前記空きエントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを登録し、前記空きエントリが無い場合には、前記解放予定エントリのうち前記関連時刻が最も時間的に前となるエントリである最古エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録する、アドレス変換装置。
【請求項９】
請求項８に記載のアドレス変換装置において、さらに、
前記ＵＤＰ接続未確立状態である前記ＵＤＰ接続に対応する前記アドレス変換テーブルにおけるエントリの識別子を登録するＵＤＰ解放待ちテーブルを備え、
前記アドレス管理部は、
前記ＵＤＰ接続が前記ＵＤＰ接続未確立状態である場合に、前記アドレス変換テーブルにおいて前記ＵＤＰ接続に対応するエントリの識別子であるエントリ識別子を、前記ＵＤＰ解放待ちテーブルに登録順序が明確になるように登録し、
前記空きエントリが無い場合には、前記ＵＤＰ解放待ちテーブルにおいて時間的に最も前に登録された前記エントリ識別子である最古エントリ識別子を取得し、前記最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているか否かを判定し、前記所定の時間が経過している場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記所定の時間が経過していない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【請求項１０】
請求項９に記載のアドレス変換装置において、
前記ＵＤＰ解放待ちテーブルを、複数のユーザのそれぞれに応じて備え、
前記アドレス管理部は、いずれかのユーザからのアドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付けると、前記空きエントリが無い場合には、該ユーザ用の前記ＵＤＰ解放待ちテーブルにおける前記最古エントリ識別子を取得し、該最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているか否かを判定し、前記所定の時間が経過している場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記所定の時間が経過していない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【請求項１１】
請求項７ないし請求項１０のいずれかに記載のアドレス変換装置において、
前記第１のアドレスはグローバルＩＰアドレスであり、前記第２のアドレスはプライベートＩＰアドレスである、アドレス変換装置。
【請求項１２】
アドレス変換装置であって、
一以上のエントリを有し、各エントリにおいて、第１のアドレスと、第２のアドレスと、前記第１のアドレス及び前記第２のアドレスを用いたトランスポート層のプロトコルに従った接続の状況と、を対応付けて管理するアドレス変換テーブルと、
現在時刻を取得する時刻取得部と、
前記接続の状況を更新する接続状況更新部と、
アドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付け、前記アドレス変換テーブルに登録されている前記接続状況と前記現在時刻とに基づき、前記アドレス変換テーブルから解放予定エントリを検索し、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する、アドレス管理部と、
を備える、アドレス変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信用アドレスの変換に関するものである。
【背景技術】
【０００２】
グローバルＩＰ（Internet Protocol）アドレスとプライベートＩＰアドレスとを相互に変換するアドレス変換装置が、インターネットサービスプロバイダ（ＩＳＰ）において用いられる。ＩＳＰにおいて用いられるアドレス変換装置は、ＬＳＮ（Large Scale NAT）と呼ばれ、収容ユーザ数が多く、また、各ユーザごとに多数のＴＣＰ（Transmission Control Protocol）接続（ＴＣＰコネクション又はＴＣＰのセッションとも呼ぶ）を許容するので、管理すべきＴＣＰ接続の数が非常に多い（下記特許文献１）。
【０００３】
またＵＤＰ（User Datagram Protocol）接続（ＵＤＰコネクションまたはＵＤＰのセッションとも呼ぶ）もＴＣＰと同じく、ユーザ毎に管理する必要がある。
【０００４】
アドレス変換装置では、ＴＣＰ接続ごとに、ＴＣＰ接続に関する情報を記録したエントリがアドレス変換テーブルに登録される。アドレス変換テーブルの各エントリには、ＴＣＰ接続に関する情報として、グローバルＩＰアドレス及びプライベートＩＰアドレスに加え、メモリから接続に関する情報を削除可能となる時刻に関するパラメータが含まれ得る。このパラメータとは、具体的には、ＴＣＰ接続が閉塞する際に、ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態となってからＣＬＯＳＥＤ状態に遷移するまでの期間（以下、「メモリ解放待ち期間」と呼ぶ）を意味する。
【０００５】
ＵＤＰ接続も同様で、ＵＤＰ接続ごとに、ＵＤＰ接続に関する情報を記録したエントリがアドレス変換テーブルに登録される。アドレス変換テーブルの各エントリには、ＵＤＰ接続に関する情報として、グローバルＩＰアドレス及びプライベートＩＰアドレスに加え、メモリから接続に関する情報を削除可能となる時刻に関するパラメータが含まれ得る。このパラメータとは、具体的には、エントリ生成から削除までのある所定の期間（以下、「ＵＤＰセッション期間」と呼ぶ）を意味する。
【０００６】
メモリ解放待ち期間をカウントするために、エイジングカウンタが用いられ得る。例えば、或るＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態となった際に、対応するエントリにおいてメモリ解放待ち期間として所定のカウント値が登録され、その後、エイジングカウンタ値が減少して０となった場合にＴＣＰ接続に関する情報が削除される。ＴＣＰ接続に関する情報が削除されたエントリは、新たなＴＣＰ接続に関する情報の登録に用いられる。エイジングカウンタ値の更新は、アドレス変換テーブルにおいてメモリ解放待ち期間が登録されているエントリが検索され、各エントリのメモリ解放待ち期間が順番に１単位時間ずつカウントダウン（デクリメント）されることで実現される。
【０００７】
ＵＤＰセッション期間も同様にエイジングカウンタによりカウントされる。エントリ生成時に所定のカウント値が登録され、その後、エイジングカウンタ値が減少して０となった場合にＵＤＰ接続に関する情報が削除される。ＵＤＰ接続に関する情報が削除されたエントリは、新たなＵＤＰ接続に関する情報の登録に用いられる。エイジングカウンタ値の更新は、アドレス変換テーブルにおいてＵＤＰセッション期間が登録されているエントリが検索され、各エントリのＵＤＰセッション期間が順番に１単位時間ずつデクリメントされることで実現される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２６７５２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＬＳＮのアドレス変換テーブルに登録されるエントリ数は非常に多いので、全てのエントリのメモリ解放待ち期間を１単位時間分デクリメントするには長期間（例えば、２００秒）を要する。それゆえ、ＬＳＮの各エントリでは、ＴＩＭＥ＿ＷＡＩＴ状態になった後にエイジングカウンタ値が０となるまでに長期間を要することとなる。一般に、メモリ開放待ち期間は、ＴＣＰセグメントがインターネット内に存在可能な最大期間（最大セグメント有効期間：ＭＳＬ）の２倍の期間として規定されており、１２０秒が推奨値とされる。したがって、従来のＬＳＮでは、メモリ解放待ち期間（例えば１２０秒）が過ぎてメモリを解放しても構わないタイミングが到来しても、エイジングカウンタ値が０とならないためメモリを解放できないという問題があった。この場合、新たなＴＣＰ接続の要求があっても、アドレス変換テーブルに空きエントリがないために接続が確立できないおそれがあった。
【００１０】
次に、ＬＳＮにおけるＵＤＰ接続では、ＵＤＰセッション期間は、最長数十時間のオーダーで求められる場合がある。その結果、いくつかのＵＤＰ通信においては、実通信が停止しているにもかかわらず、エイジングタイマが０になるまでの長時間、アドレス変換装置上では該当するＵＤＰセッションが削除されず残ることとなる。
【００１１】
さらにＬＳＮにおいては、ユーザの公平性を保持するため、ユーザごとに保持できるアドレス変換テーブルエントリ数は制限されている。このような場合、上述のように、長時間のＵＤＰセッションを保持し続けることで、実通信は終了しているにもかかわらず、アドレス変換テーブルに空きがないため、新規ＵＤＰ接続受付が出来ない状況が顕著に発生しうる。
【００１２】
なお、この問題は、グローバルＩＰアドレスとプライベートＩＰアドレスとのアドレス変換に限らず、プライベートＩＰアドレス同士のアドレス変換においても発生し得る。また、ＩＰアドレスに限らず、ＩＰＸ（Internetwork Packet eXchange）で用いられるアドレスなど、通信に用いられる任意のアドレスを変換する場合にも発生し得る。
【００１３】
本発明は、アドレス変換装置において、アドレス変換テーブルにおける空きエントリ不足によるＴＣＰ接続、ＵＤＰ接続の確立失敗を抑制することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【００１５】
［適用例１］アドレス変換装置であって、複数のエントリを有し、各エントリにおいて、第１のアドレスと、第２のアドレスと、前記第１のアドレス及び前記第２のアドレスを用いたＴＣＰ接続がＣＬＯＳＥＤ状態となる時刻であるＣＬＯＳＥＤ時刻と関連する時刻である関連時刻と、が互いに対応付けられて登録されるアドレス変換テーブルと、現在時刻を取得する時刻取得部と、前記ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、前記取得された現在時刻に基づき前記関連時刻を決定する関連時刻決定部と、アドレス管理部であって、ＴＩＭＥ＿ＷＡＩＴ状態になった前記ＴＣＰ接続に対応する前記アドレス変換テーブルのエントリに、前記決定された関連時刻を登録し、アドレス変換要求に基づき第１のアドレスと第２のアドレスとを対応付け、前記アドレス変換テーブルに登録されている前記関連時刻と前記現在時刻とに基づき、前記ＣＬＯＳＥＤ時刻が前記現在時刻よりも時間的に以前のエントリである解放予定エントリを検索し、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する、アドレス管理部と、を備える、アドレス変換装置。
【００１６】
適用例１のアドレス変換装置では、新たなアドレス変換要求があった場合、アドレス変換テーブルに登録されているＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前のエントリ（解放予定エントリ）に、新たに対応付けられた第１のアドレス及び第２のアドレスを上書き登録するので、空きエントリ不足によるＴＣＰ接続の確立失敗を抑制することができる。解放予定エントリに対応するＴＣＰ接続については、ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態となってからＣＬＯＳＥＤ状態に遷移するまでの期間として規定されている期間（メモリ解放待ち期間）は既に満了している、またはちょうど満了する。したがって、第１のアドレス及び第２のアドレスを上書き登録しても問題は生じない。
【００１７】
［適用例２］適用例１に記載のアドレス変換装置において、前記アドレス管理部は、第１のアドレスと第２のアドレスとを新たに対応付けると、前記アドレス変換テーブルに空きエントリがあるか否かを判定し、前記空きエントリがある場合には、前記空きエントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを登録し、前記空きエントリが無い場合には、前記解放予定エントリのうち最も時間的に前となるエントリである最古エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録する、アドレス変換装置。
【００１８】
このような構成により、時刻取得部の故障等により、時刻取得部が実際の現在時刻よりも早い時刻を取得した場合であっても、空きエントリがあれば、空きエントリに新たに対応付けられた第１のアドレス及び第２のアドレスが登録されるので、実際のＣＬＯＳＥＤ時刻に達していないＴＣＰ接続に対応するエントリに、第１のアドレス及び第２のアドレスを誤って上書き登録することを抑制できる。また、空きエントリがある場合には、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前のエントリである解放予定エントリを検索する処理を省略できるので、かかる処理負担を軽減できる。また、このような構成により、エイジングカウンタを用いてメモリ解放待ち期間をカウントする構成にも適用することができる。すなわち、空きエントリが存在する程度の数のＴＣＰ接続が確立される場合には、エイジングカウンタを用いてＴＩＭＥ＿ＷＡＩＴ状態からＣＬＯＳＥＤ状態までの期間を管理し、ＣＬＯＳＥＤ状態となったＴＣＰ接続について、対応するエントリを空きエントリに変更（更新）させることができる。したがって、このような場合には、ＴＩＭＥ＿ＷＡＩＴ状態からＣＬＯＳＥＤ状態までの期間を、比較的処理負担の軽いエイジングカウンタを用いたカウントにより実現できる。それゆえ、アドレス変換装置全体としての処理負荷を軽減できる。
【００１９】
［適用例３］適用例２に記載のアドレス変換装置において、さらに、ＴＩＭＥ＿ＷＡＩＴ状態となった前記ＴＣＰ接続に対応する前記アドレス変換テーブルにおけるエントリの識別子を登録するＴＣＰ解放待ちテーブルを備え、前記アドレス管理部は、前記ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、前記アドレス変換テーブルにおいて前記ＴＣＰ接続に対応するエントリの識別子であるエントリ識別子を、前記ＴＣＰ解放待ちテーブルに登録順序が明確になるように登録し、前記空きエントリが無い場合には、前記ＴＣＰ解放待ちテーブルにおいて時間的に最も前に登録された前記エントリ識別子である最古エントリ識別子を取得し、前記最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とに基づき、前記エントリに対応する前記ＣＬＯＳＥＤ時刻が、前記現在時刻よりも時間的に以前となるか否かを判定し、前記現在時刻よりも時間的に以前となる場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記現在時刻よりも時間的に以前とならない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【００２０】
このような構成により、ＴＣＰ解放待ちテーブルでは登録順序が明確になるようにエントリ識別子が登録されるので、アドレス変換テーブルにおいてＣＬＯＳＥＤ時刻が時間的に最も前となるエントリを簡単に見つけることができる。加えて、ＣＬＯＳＥＤ時刻が時間的に最も前となるエントリに登録されているＣＬＯＳＥＤ時刻が現在時刻よりも時間的に前となるか否かを判定することにより、他のエントリに登録されているＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前であるか否かを判定できる。したがって、アドレス変換テーブルにおいて、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前となるエントリの有無を短時間で判定することができる。
【００２１】
［適用例４］適用例３に記載のアドレス変換装置において、前記ＴＣＰ解放待ちテーブルを、複数のユーザのそれぞれに応じて備え、前記アドレス管理部は、いずれかのユーザからのアドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付けると、前記空きエントリが無い場合には、該ユーザ用の前記ＴＣＰ解放待ちテーブルにおける前記最古エントリ識別子を取得し、該最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とに基づき、前記エントリに対応する前記ＣＬＯＳＥＤ時刻が、前記現在時刻よりも時間的に以前となるか否かを判定し、前記現在時刻よりも時間的に以前となる場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記現在時刻よりも時間的に以前とならない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【００２２】
このような構成により、各ユーザごとに登録可能なエントリ数を同じに設定して各ユーザ間における公平性を確保する場合においても、各ユーザについて、公平に空きエントリ不足によるＴＣＰ接続の確立失敗を抑制することができる。
【００２３】
［適用例５］適用例１ないし適用例４のいずれかに記載のアドレス変換装置において、前記第１のアドレスはグローバルＩＰアドレスであり、前記第２のアドレスはプライベートＩＰアドレスである、アドレス変換装置。
【００２４】
このような構成により、アドレス変換装置を、グローバルネットワークとローカルネットワークとの境界部分に配置し、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換するために用いることができる。
【００２５】
［適用例６］アドレス変換装置において用いられるアドレス変換テーブルの管理方法であって、前記アドレス変換テーブルは、複数のエントリを有し、各エントリにおいて、少なくとも第１のアドレスと第２のアドレスとが互いに対応付けられて登録され、（ａ）第１のアドレス及び第２のアドレスを用いたＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態になると、現在時刻を取得すると共に、前記現在時刻に基づき前記第１のアドレス及び前記第２のアドレスを用いたＴＣＰ接続がＣＬＯＳＥＤ状態となる時刻であるＣＬＯＳＥＤ時刻と関連する時刻である関連時刻を決定する工程と、（ｂ）前記決定された関連時刻を、既に前記アドレス変換テーブルに登録されている、前記ＴＣＰ接続に対応するエントリに登録する工程と、（ｃ）アドレス変換要求に基づき、第１のアドレスと第２のアドレスとが新たに対応付けられると、現在時刻を取得すると共に、前記アドレス変換テーブルに登録されている前記関連時刻と前記現在時刻とに基づき、前記ＣＬＯＳＥＤ時刻が前記現在時刻よりも時間的に以前のエントリである解放予定エントリを検索し、前記新たに対応付けられた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する工程と、を備える、アドレス変換テーブルの管理方法。
【００２６】
適用例６のアドレス変換テーブルの管理方法では、新たなアドレス変換要求があった場合、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前のエントリ（解放予定エントリ）に、新たに対応付けられた第１のアドレス及び第２のアドレスを上書き登録するので、空きエントリ不足によるＴＣＰ接続の確立失敗を抑制することができる。解放予定エントリに対応するＴＣＰ接続については、ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態となってからＣＬＯＳＥＤ状態に遷移するまでの期間として規定されている期間（メモリ解放待ち期間）は既に満了している、またはちょうど満了する。したがって、第１のアドレス及び第２のアドレスを上書き登録しても問題は生じない。
【００２７】
［適用例７］アドレス変換装置であって、複数のエントリを有し、各エントリにおいて、第１のアドレスと、第２のアドレスと、前記第１のアドレス及び前記第２のアドレスを用いたＵＤＰ接続についてセッションを生成する時刻と関連する時刻である関連時刻と、が互いに対応付けられて登録されるアドレス変換テーブルと、現在時刻を取得する時刻取得部と、前記ＵＤＰ接続に対して、通信開始から１回の双方向通信が交わされた後に、片方向の通信が一度でも発生したＵＤＰ接続確立状態であるか、前記通信開始から１回の双方向通信が交わされた後に、片方向の通信が発生していないＵＤＰ接続未確立状態であるかを判断するＵＤＰ接続状態判定部と、アドレス管理部であって、アドレス変換要求に基づき第１のアドレスと第２のアドレスとを対応付け、前記アドレス変換テーブルのエントリの中から、前記ＵＤＰ接続状態判定部によりＵＤＰ接続未確立状態であると判断され、前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているエントリである解放予定エントリを検索し、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記解放予定エントリのいずれかに上書き登録する、アドレス管理部と、を備える、アドレス変換装置。
【００２８】
適用例７のアドレス変換装置では、新たなアドレス変換要求があった場合、アドレス変換テーブルからＵＤＰ接続未確立状態であると判断され、前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているエントリである解放予定エントリに、新たに対応付けられた第１のアドレス及び第２のアドレスを上書き登録するので、空きエントリ不足によるＵＤＰ接続の確立失敗を抑制することができる。ここで、ＵＤＰ接続未確立状態とは、通信ホスト間で１度も双方向通信が成立していない、または双方向通信が１回だけ完了しているＵＤＰ通信を意味する。よって、１回の双方向通信で完結し終了する通信（一般的に多いＤＮＳなど）のように、上書き登録されても問題ないエントリを再利用することが可能である。
【００２９】
［適用例８］適用例７に記載のアドレス変換装置において、  前記アドレス管理部は、第１のアドレスと第２のアドレスとを新たに対応付けると、前記アドレス変換テーブルに空きエントリがあるか否かを判定し、前記空きエントリがある場合には、前記空きエントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを登録し、前記空きエントリが無い場合には、前記解放予定エントリのうち前記関連時刻が最も時間的に前となるエントリである最古エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録する、アドレス変換装置。
【００３０】
このような構成により、時刻取得部の故障等により、時刻取得部が実際の現在時刻よりも早い時刻を取得した場合であっても、空きエントリがあれば、空きエントリに新たに対応付けられた第１のアドレス及び第２のアドレスが登録されるので、ＵＤＰ接続未確立状態から所定の時間を経過していないＵＤＰ接続に対応するエントリに、第１のアドレス及び第２のアドレスを誤って上書き登録することを抑制できる。また、空きエントリがある場合には、解放予定エントリを検索する処理を省略できるので、かかる処理負担を軽減できる。また、このような構成により、エイジングカウンタを用いてメモリ解放待ち期間をカウントする構成にも適用することができる。すなわち、空きエントリが存在する程度の数のＵＤＰ接続が確立される場合には、エイジングカウンタを用いてセッション開放までの期間を管理し、対応するエントリを空きエントリに変更（更新）させることができる。したがって、このような場合には、セッション開放までの期間を、比較的処理負担の軽いエイジングカウンタを用いたカウントにより実現できる。それゆえ、アドレス変換装置全体としての処理負荷を軽減できる。
【００３１】
［適用例９］適用例８に記載のアドレス変換装置において、さらに、前記ＵＤＰ接続未確立状態である前記ＵＤＰ接続に対応する前記アドレス変換テーブルにおけるエントリの識別子を登録するＵＤＰ解放待ちテーブルを備え、前記アドレス管理部は、前記ＵＤＰ接続が前記ＵＤＰ接続未確立状態である場合に、前記アドレス変換テーブルにおいて前記ＵＤＰ接続に対応するエントリの識別子であるエントリ識別子を、前記ＤＵＰ解放待ちテーブルに登録順序が明確になるように登録し、前記空きエントリが無い場合には、前記ＵＤＰ解放待ちテーブルにおいて時間的に最も前に登録された前記エントリ識別子である最古エントリ識別子を取得し、前記最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているか否かを判定し、前記所定の時間が経過している場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記所定の時間が経過していない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【００３２】
このような構成により、ＵＤＰ解放待ちテーブルでは登録順序が明確になるようにエントリ識別子が登録されるので、アドレス変換テーブルにおいてセッションの生成時刻が時間的に最も前となるエントリを簡単に見つけることができる。加えて、セッションの生成時刻が時間的に最も前となるエントリについて判定することにより、その他のエントリの判定を省略することができる。したがって、アドレス変換テーブルにおいて、解放予定エントリの有無を短時間で判定することができる。
【００３３】
［適用例１０］適用例９に記載のアドレス変換装置において、前記ＵＤＰ解放待ちテーブルを、複数のユーザのそれぞれに応じて備え、前記アドレス管理部は、いずれかのユーザからのアドレス変換要求に基づき第１のアドレスと第２のアドレスとを新たに対応付けると、前記空きエントリが無い場合には、該ユーザ用の前記ＵＤＰ解放待ちテーブルにおける前記最古エントリ識別子を取得し、該最古エントリ識別子の示す前記アドレス変換テーブルにおけるエントリに登録されている前記関連時刻と前記現在時刻とを比較して所定の時間が経過しているか否かを判定し、前記所定の時間が経過している場合には、前記エントリに前記新たに対応付けた第１のアドレス及び第２のアドレスを上書き登録し、前記所定の時間が経過していない場合には、前記新たに対応付けた第１のアドレス及び第２のアドレスを、前記アドレス変換テーブルに登録しない、アドレス変換装置。
【００３４】
このような構成により、各ユーザごとに登録可能なエントリ数を同じに設定して各ユーザ間における公平性を確保する場合においても、各ユーザについて、公平に空きエントリ不足によるＵＤＰ接続の確立失敗を抑制することができる。
【００３５】
［適用例１１］適用例７ないし適用例１０のいずれかに記載のアドレス変換装置において、前記第１のアドレスはグローバルＩＰアドレスであり、前記第２のアドレスはプライベートＩＰアドレスである、アドレス変換装置。
【００３６】
このような構成により、アドレス変換装置を、グローバルネットワークとローカルネットワークとの境界部分に配置し、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換するために用いることができる。
【図面の簡単な説明】
【００３７】
【図１】本発明のアドレス変換装置を適用したネットワークシステムの概略構成を示す説明図である。
【図２】図１に示すアドレス変換テーブルの設定内容の一例を示す説明図である。
【図３】ＴＣＰ接続の状態遷移を示す説明図である。
【図４】図１に示すＴＣＰ解放待ちテーブルの設定内容の一例を示す説明図である。
【図５】アドレス変換テーブルのエントリ更新処理の手順を示すフローチャートである。
【図６】図５に示すステップＳ１１５によりエントリが更新された後のアドレス変換テーブルの一例を示す説明図である。
【図７】図５に示すステップＳ１２０によりエントリ番号が新たに登録された後のＴＣＰ解放待ちテーブルの一例を示す説明図である。
【図８】アドレス変換テーブルのエントリ追加処理の手順を示すフローチャートである。
【図９】図８に示すステップＳ２３５によりエントリが更新された後のアドレス変換テーブルの一例を示す説明図である。
【図１０】図８に示すステップＳ２４０により更新されたＴＣＰ解放テーブルの一例を示す説明図である。
【図１１】本アドレス変換装置を適用したネットワークシステムの概略構成を示す説明図である。
【図１２】図１１に示すアドレス変換テーブルの設定内容の一例を示す説明図である。
【図１３】ＵＤＰ接続のＵＤＰ通信状態を示す説明図である。
【図１４】図１１に示すＵＤＰ解放待ちテーブルの設定内容の一例を示す説明図である。
【図１５】ＵＤＰ通信開始時のアドレス変換テーブルのエントリ追加処理の手順を示すフローチャートである。
【図１６】図１５に示すステップＳ３５０、図１８に示すステップＳ４０５によりエントリが上書き、更新された後のアドレス変換テーブルの一例を示す説明図である。
【図１７】図１５に示すステップＳ３５５によりエントリ識別子が再登録された後のＵＤＰ解放待ちテーブルの一例を示す説明図である。
【図１８】ＵＤＰ通信確立状態遷移時のアドレス変換テーブルのエントリ更新処理の手順を示すフローチャートである。
【図１９】図１８に示すステップＳ４１０によりエントリ識別子が削除された後のＵＤＰ解放待ちテーブルの一例を示す説明図である。
【発明を実施するための形態】
【００３８】
Ａ．実施例：
Ａ１．システム構成（第１の実施形態：ＴＣＰ）：
図１は、本発明の第１の実施形態におけるアドレス変換装置を適用したネットワークシステムの概略構成を示す説明図である。ネットワークシステム１０００は、ローカルネットワークＮ１と、グローバルネットワークＮ２と、複数の端末２１と、サーバ３０と、アドレス変換装置１０とを備えている。
【００３９】
ネットワークシステム１０００は、各端末２１とサーバ３０とがローカルネットワークＮ１及びグローバルネットワークＮ２を介して通信を行うシステムであり、かかる通信において、グローバルＩＰ（Internet Protocol）アドレスとプライベートＩＰアドレス（ローカルＩＰアドレスとも呼ぶ）とが相互に変換される。ネットワークシステム１０００では、ＯＳＩ参照モデルにおけるネットワーク層のプロトコルとしてＩＰが用いられ、トランスポート層のプロトコルとしてＴＣＰや、ＵＤＰ（User Datagram Protocol）や、ＩＣＭＰ（Internet Control Message Protocol）等が用いられる。
【００４０】
ローカルネットワークＮ１は、図示しないスイッチやルーターにより構築されたいわゆるローカルエリアネットワーク（Local Area Network：ＬＡＮ）である。ローカルネットワークＮ１としては、例えば、ＩＳＰ（Internet Service Provider）により構築されたネットワークを採用することができる。ローカルネットワークＮ１において、各機器（各端末２１及び図示しないスイッチやルーター）にはプライベートＩＰアドレスが割り当てられている。また、アドレス変換装置１０におけるローカルネットワークＮ１との接続点にもプライベートＩＰアドレスが割り当てられている。
【００４１】
グローバルネットワークＮ２は、図示しないスイッチ，ルーターや、電気通信事業者網等により構築されたネットワークであり、各器機にグローバルＩＰが割り当てられている。グローバルネットワークＮ２として、例えば、インターネットを採用することができる。
【００４２】
各端末２１は、ローカルネットワークＮ１に接続され、少なくともＴＣＰ／ＩＰ通信を実行可能に構成されている。端末２１としては、例えば、パーソナルコンピュータや、携帯電話機や、携帯端末（ＰＤＡ）等を採用することができる。
【００４３】
サーバ３０は、グローバルネットワークＮ２に接続されており、端末２１からの要求に応じてデータを送信する。サーバ３０としては、例えば、ＷＷＷ（World Wide Web）サーバや、ＦＴＰ（File Transfer Protocol）サーバや、メールサーバなどを採用することができる。
【００４４】
アドレス変換装置１０には、ローカルネットワークＮ１及びグローバルネットワークＮ２にそれぞれ接続されており、予め複数のグローバルＩＰアドレスがプールされている。アドレス変換装置１０は、いわゆるＮＡＰＴ（Network Address and Port Translation）機能を有し、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換すると共にポート番号を変換する。
【００４５】
アドレス変換装置１０は、アドレス変換部１００と、第１パケットインタフェース部２００と、第２パケットインタフェース部３００と、時刻管理部４００と、アドレス変換テーブル５００と、複数のＴＣＰ解放待ちテーブル６００とを備えている。
【００４６】
アドレス変換部１００は、第１パケットインタフェース部２００，第２パケットインタフェース部３００，時刻管理部４００，アドレス変換テーブル５００，各ＴＣＰ解放待ちテーブル６００と、それぞれ接続されている。アドレス変換部１００は、ＩＰアドレス及びポート番号の変換を行うと共に、各テーブル５００，６００を管理する。アドレス変換部１００は、第１パケットインタフェース部２００から受信したＩＰパケットのヘッダに記載されている送信元ＩＰアドレス（プライベートＩＰアドレス）を、グローバルＩＰアドレスに変換すると共に、ポート番号を変換する。図１の例では、第１パケットインタフェース部２００から受信したＩＰパケットについて、送信元ＩＰアドレスがＬ１からＧ１０に変換され、ポート番号がＰ１からＰ１０に変換されている。また、アドレス変換部１００は、第２パケットインタフェース部３００から受信したＩＰパケットのヘッダに記載されている宛先ＩＰアドレス（グローバルＩＰアドレス）を、プライベートＩＰアドレスに変換すると共に、ポート番号を変換する。図１の例では、第２パケットインタフェース部３００から受信したＩＰパケットについて、宛先ＩＰアドレスがＧ１０からＬ１に変換され、ポート番号がＰ１０からＰ１に変換されている。なお、本実施例では、ＩＰアドレス及びポート番号として模式的な値を用いて説明するが、ＩＰアドレスとしてＩＰｖ４のアドレスを、ポート番号として規定範囲内の番号（０〜１０２３：ウェルノウンポートや、１０２４〜６５５３５）を、実際に用いることができる。
【００４７】
第１パケットインタフェース部２００は、ローカルネットワークＮ１及びアドレス変換部１００にそれぞれ接続されており、ローカルネットワークＮ１から受信したＩＰパケットを、アドレス変換部１００に転送する。第２パケットインタフェース部３００は、グローバルネットワークＮ２及びアドレス変換部１００にそれぞれ接続されており、グローバルネットワークＮ２から受信したＩＰパケットを、アドレス変換部１００に転送する。
【００４８】
時刻管理部４００は、図示しない内部時計を備え、現在時刻を算出してアドレス変換部１００に供給する。なお、ローカルネットワークＮ１やグローバルネットワークＮ２を介して図示しないＮＴＰ（Network Time Protocol）サーバから供給される時刻に基づき、現在時刻を決定することもできる。
【００４９】
図２は、図１に示すアドレス変換テーブルの設定内容の一例を示す説明図である。アドレス変換テーブル５００は、各接続（ＴＣＰ接続や、ＵＤＰを用いたセッション等）ごとに、接続に関する情報を互いに対応付けて記録する。なお、図２では、既に複数の接続について、接続に関する情報がアドレス変換テーブル５００に記録されている。
【００５０】
アドレス変換テーブル５００は、エントリ番号，有効フラグ，アドレス変換情報，接続種別，接続状態，エイジングカウンタ値，およびＣＬＯＳＥＤ時刻の各フィールドを備え、各エントリにおいて、各フィールドの値（接続に関する情報）が記録される。
【００５１】
エントリ番号フィールドには、アドレス変換テーブルにおける各エントリの識別番号が記録される。なお、各エントリの識別番号として、アドレス変換テーブル５００が記憶される図示しないメモリのアドレスを用いることもできる。
【００５２】
有効フラグフィールドには、「有効」または「無効」のいずれかの値が記録される。有効フラグフィールドが「有効」とは、該当エントリにおいて、接続に関する情報として有効な値が記録されていることを意味し、当該エントリが空きエントリ（接続に関する情報を新たに記録可能なエントリ）でないことを意味する。有効フラグフィールドが「無効」とは、当該エントリにおいて、接続に関する情報として有効な値が記録されていないことを意味し、当該エントリが空きエントリであることを示す。なお、図２の例では、有効フラグフィールドが「無効」のエントリでは、有効フラグフィールドを除く他のフィールドには、無効な値を示す「−」が記録されている。
【００５３】
アドレス変換情報フィールドは、グローバルフィールドとローカルフィールドとを有する。グローバルフィールドは、グローバルＩＰアドレスフィールド、及びグローバルポートポート番号フィールドを有する。グローバルＩＰアドレスフィールドには、グローバルＩＰアドレスが記録される。グローバルポート番号フィールドには、サーバ３０とアドレス変換装置１０との間の通信において用いられるポート番号が記録される。ローカルフィールドは、プライベートＩＰアドレスフィールド、及びプライベートポート番号フィールドを有する。プライベートＩＰアドレスフィールドには、プライベートＩＰアドレスが記録される。プライベートポート番号フィールドには、各端末２１とアドレス変換装置１０との間の通信において用いられるポート番号が記録される。
【００５４】
接続種別フィールドには、接続の種類（ＴＣＰ接続，ＵＤＰを用いたセッション，ＩＣＭＰを用いたセッション等）が記録される。
【００５５】
接続状態フィールドには、各接続の状態を示す値が記録される。図２の例では、接続種別が「ＴＣＰ」のエントリ（エントリ番号Ｅ１，Ｅ２，Ｅ１０２，Ｅ２００）において、接続状態として「ＴＩＭＥ＿ＷＡＩＴ」が記録されている。また、続種別が「ＴＣＰ」のエントリ（エントリ番号Ｅ１００，Ｅ２０１）において、接続状態として「確立」が記録されている。また、接続種別が「ＵＤＰ」のエントリ（エントリ番号Ｅ１０１）において接続状態として「確立」が記録されている。
【００５６】
図３は、ＴＣＰ接続の状態遷移を示す説明図である。ＴＣＰ接続の状態は、ＣＬＯＳＥＤ状態ＳＴ０と、ＴＣＰ接続確立処理状態ＳＴ１と、ＴＣＰ接続確立状態ＳＴ２と、ＴＣＰ接続閉塞処理状態ＳＴ３と、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４とのうち、いずれかの状態となる。
【００５７】
ＣＬＯＳＥＤ状態ＳＴ０は、ＴＣＰ接続が確立されておらず、アドレス変換テーブル５００からＴＣＰ接続に関する情報が削除されている状態を意味する。ＴＣＰ接続確立処理状態ＳＴ１は、ＴＣＰ接続を確立するのに先立ち、端末２１とサーバ３０との間でいわゆる３ウェイハンドシェイクを行っている状態を意味する。ＴＣＰ接続確立状態ＳＴ２は、ＴＣＰ接続が確立されている状態を意味する。ＴＣＰ接続確立状態ＳＴ２では、アドレス変換テーブル５００に、確立されたＴＣＰ接続に関する情報が記録されている。
【００５８】
ＴＣＰ接続閉塞処理状態ＳＴ３は、ＴＣＰ接続を閉塞するための所定の処理を実行している状態を意味する。具体的には、端末２１とサーバ３０との間で、ＴＣＰヘッダにＦＩＮフラグを立てたパケット及びＡＣＫパケットをやりとりしている状態を意味する。
【００５９】
ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４とは、ＴＣＰ接続は閉塞された状態ではある。しかしながら、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４では、アドレス変換テーブル５００の各エントリからＴＣＰ接続に関する情報は未だ削除されていない。ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４の期間（ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となってからＣＬＯＳＥＤ状態ＳＴ０になるまでの期間：以下、「メモリ解放待ち期間」と呼ぶ）は、一般に、ＴＣＰセグメントがインターネット内に存在可能な最大期間（最大セグメント有効期間：ＭＳＬ）の２倍の期間として規定されており、１２０秒が推奨値とされる。このように、メモリ解放待ち期間が設けられているのは、ＴＣＰセグメントが遅延して届く可能性のある期間だけ待機し、アドレス変換テーブル５００のエントリを無効としても問題ないと判断するのに十分な期間だけ待機することを目的とする。ＴＣＰ接続の状態は、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となってからメモリ解放待ち期間だけ経過した後、再び前述のＣＬＯＳＥＤ状態ＳＴ０に遷移する。
【００６０】
図２に示す接続状態フィールドの値が「ＴＩＭＥ＿ＷＡＩＴ」であるとは、当該エントリに対応するＴＣＰ接続が前述のＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４であることを示す。また、接続種別が「ＴＣＰ」のエントリにおいて、接続状態フィールドの値が「確立」であるとは、当該エントリに対応するＴＣＰ接続が前述のＴＣＰ接続確立状態ＳＴ２であることを示す。なお、接続種別が「ＵＤＰ」のエントリにおいて、接続状態フィールドの値が「確立」であるとは、当該エントリに対応するＵＤＰを用いたセッションが確立されている状態であることを示す。
【００６１】
図２に示すエイジングカウンタ値フィールドには、各接続において管理を要する期間の残り期間を示す値が記録される。具体的には、ＴＣＰ接続については前述のメモリ解放待ち期間の残り期間が、ＵＤＰを用いたセッション（接続種別＝ＵＤＰ）についてはセッションの残り期間が、それぞれカウントダウン（デクリメント）される回数として記録される。
【００６２】
エイジングカウンタ値は、アドレス変換部１００により、順次デクリメントされる。具体的には、アドレス変換部１００は、エイジングカウンタ値が設定されているエントリを１つずつ検索し、見つかったエントリのエイジングカウンタ値を１だけデクリメントし、その後、次に見つかったエントリのエイジングカウンタ値を１だけデクリメントすることを繰り返し実行する。アドレス変換部１００は、エイジングカウンタ値が「０」になると、該当するエントリの各フィールドの値を変更し、空きエントリとする。
【００６３】
ここで、ネットワークシステム１０００では、アドレス変換テーブル５００に多数のエントリが登録されていること、また、アドレス変換テーブル５００が記憶されているメモリのアクセス速度が遅いことに起因して、デクリメントが一巡し、デクリメント対象となる全てのエントリにおいてエイジングカウンタ値を１だけデクリメントするのに、およそ２００秒要する。前述のように、メモリ解放待ち期間の推奨値は１２０秒であるため、本来であれば、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となってから１２０秒後にはＣＬＯＳＥＤ状態ＳＴ０に遷移しても構わない。そこで、ネットワークシステム１０００では、ＴＣＰ接続におけるエイジングカウンタ値の初期値として、最も小さい値「１」が設定される。しかしながら、エイジングカウンタ値が「１」から「０」にデクリメントするまでの期間は、最長でおよそ２００秒要するので、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となってから１２０秒（メモリ解放待ち期間）が経過した後であっても、ＴＣＰ接続がＣＬＯＳＥＤ状態ＳＴ０に遷移できないケースが発生し得る。この場合、アドレス変換テーブル５００に空きエントリがないと、新たなＴＣＰ接続の確立要求があってもＴＣＰ接続は確立し得ないこととなる。そこで、ネットワークシステム１０００では、後述するアドレス変換テーブル５００のエントリ更新処理及びエントリ追加処理を実行することにより、メモリ解放待ち期間の経過後、速やかに該当するエントリに新たなＴＣＰ接続に関する情報を上書き登録する。
【００６４】
また、ＵＤＰを用いたセッションについては、セッション開始からセッション終了までの期間（以下、「セッション期間」と呼ぶ）が予め定められており、このセッション期間の残り期間がエイジングカウンタ値により管理される。なお、ＵＤＰを用いたセッションについてのエイジングカウンタの初期値は「１８」が設定される。
【００６５】
図２に示すＣＬＯＳＥＤ時刻フィールドには、各ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４からＣＬＯＳＥＤ状態ＳＴ０に遷移する時刻が記録される。図２の例では、エントリＥ１に時刻Ｔ２が記録されている。また、エントリＥ２には時刻Ｔ４が、エントリＥ１０２には時刻Ｔ１が、エントリＥ２００には時刻Ｔ３が、それぞれ記録されている。図２において「Ｔｐ」は、現在時刻（後述する）を示す。図２の例では、時刻Ｔ１は現在時刻Ｔｐよりも時間的に前である。これに対し、他の時刻Ｔ２〜Ｔ４は、いずれも現在時刻Ｔｐよりも時間的に後である。なお、接続種別がＴＣＰ以外の接続については、ＣＬＯＳＥＤ時刻フィールドには、有効な値は記録されない。
【００６６】
ネットワークシステム１０００では、各ユーザ間の公平性を確保するために、各ユーザごとにアドレス変換テーブル５００に登録可能なエントリ数は１００に定められている。図２では、３ユーザ（ユーザＡ，ユーザＢ，ユーザＣ）についてのエントリのみを記載しているが、図示しない他のユーザについても、それぞれ１００ずつエントリの登録が許容されている。図２では、ユーザＡ，Ｂについて、１００個のエントリのすべてに、接続に関する情報が登録されている（すなわち、有効フラグが「有効」になっている）。ユーザＣについては、一部のエントリは空きエントリであり、例えば、エントリ番号Ｅ３００のエントリが空きエントリとなっている（すなわち、有効フラグが「無効」になっている）。
【００６７】
図４は、図１に示すＴＣＰ解放待ちテーブルの設定内容の一例を示す説明図である。図４において、上段はＴＣＰ解放待ちテーブル６００を示し、下段は各時刻Ｔ１〜Ｔ４の時間的な順序を示す。アドレス変換装置１０では、各ユーザごとにテーブル６００が設けられている。図４の例では、ユーザＡ用のテーブル６００ａと、ユーザＢ用のテーブル６００ｂと、ユーザＣ用のテーブル６００ｃとが示されている。
【００６８】
ＴＣＰ解放待ちテーブル６００には、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となったＴＣＰ接続に対応するアドレス変換テーブル５００におけるエントリのエントリ番号が登録される。このとき、ＴＣＰ解放待ちテーブル６００には、登録の順序が明確になるようにエントリ番号が登録される。具体的には、図４の各ＴＣＰ開放待ちテーブル６００ａ〜６００ｃにおいて、より上方（上位）に登録されているエントリ番号は、より先に（時間的に前に）登録されていることを明示している。例えば、ＴＣＰ解放待ちテーブル６００ａでは、エントリ番号Ｅ１は、エントリ番号Ｅ２よりも先に登録されていることを示す。同様に、ＴＣＰ解放テーブルテーブル６００ｂでは、エントリ番号Ｅ１０２は、エントリ番号Ｅ２００よりも先に登録されていることを示す。なお、ユーザＣ用のＴＣＰ解放待ちテーブル６００ｃには、エントリ番号は登録されていない。図４の下段に示すように、時刻Ｔ１，Ｔ２，Ｔ３，Ｔ４は、この順序で時間的に後となっている。図４の上段に示す各テーブル６００ａ〜６００ｃの登録状態は、図４の下段に示す現在時刻Ｔｐにおける登録状態を示している。なお、現在時刻Ｔｐの変化に伴い、各テーブル６００ａ〜６００ｃの状態も変化し得る。前述の図２のアドレス変換テーブル５００も現在時刻Ｔｐにおける登録状態を示し、現在時刻Ｔｐの変化に伴い状態が変化し得る。
【００６９】
前述のアドレス変換部１００は、請求項における関連時刻決定部およびアドレス管理部に相当する。また、時刻管理部４００は請求項における時刻取得部に、ＴＣＰ開放待ちテーブル６００に登録されているエントリ番号に対応するアドレス変換テーブル５００におけるエントリは請求項における解放予定エントリに、それぞれ相当する。
【００７０】
Ａ２．アドレス変換テーブルのエントリ更新処理（第１の実施形態：ＴＣＰ）：
図５は、アドレス変換テーブルのエントリ更新処理の手順を示すフローチャートである。ＴＣＰ接続がＴＣＰ接続閉塞状態ＳＴ３からＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移すると、アドレス変換装置１０において、アドレス変換テーブル５００のエントリ更新処理が開始される。
【００７１】
アドレス変換部１００は、時刻管理部４００から現在時刻を取得する（ステップＳ１０５）。アドレス変換部１００は、取得した現在時刻に基づき、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となったＴＣＰ接続のＣＬＯＳＥＤ時刻を決定する（ステップＳ１１０）。具体的には、取得した現在時刻にメモリ解放待ち期間（１２０秒）を加えた時刻を、ＣＬＯＳＥＤ時刻として設定する。
【００７２】
アドレス変換部１００は、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となったＴＣＰ接続に対応するアドレス変換テーブル５００のエントリにおいて、接続状態フィールドの値を「ＴＩＭＥ＿ＷＡＩＴ」に、エイジングカウンタ値を「１」に、ＣＬＯＳＥＤ時刻フィールドの値をステップＳ１１０において決定した時刻に、それぞれ更新する（ステップＳ１１５）。
【００７３】
図６は、図５に示すステップＳ１１５によりエントリが更新された後のアドレス変換テーブルの一例を示す説明図である。図６の例では、エントリ番号Ｅ１００に対応するＴＣＰ接続がＴＣＰ接続閉塞状態ＳＴ３からＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移し、かかるエントリにおける接続状態フィールド，エイジングカウンタ値フィールドおよびＣＬＯＳＥＤ時刻フィールドの各値が、図２に示す値から更新されている。具体的には、接続状態フィールドの値が「確立」から「ＴＩＭＥ＿ＷＡＩＴ」に、エイジングカウンタ値フィールドの値が「−」（無効）から「１」に、ＣＬＯＳＥＤ時刻フィールドの値が「−」（無効）から「Ｔ５」に、それぞれ更新されている。なお、図５の状態から図６の状態までの期間は短く（例えば、２０秒）、エントリ番号Ｅ１，Ｅ２，Ｅ２００の各エントリのエイジングカウンタ値はデクリメントされていない。
【００７４】
図５に示すステップＳ１１５の後、アドレス変換部１００は、ＴＩＭＥ＿ＷＡＩＴ状態に遷移したＴＣＰ接続について、該当するユーザのＴＣＰ解放待ちテーブル６００に、ステップＳ１１５において更新したアドレス変換テーブル５００のエントリのエントリ番号を新たに登録する（ステップＳ１２０）。
【００７５】
図７は、図５に示すステップＳ１２０によりエントリ番号が新たに登録された後のＴＣＰ解放待ちテーブルの一例を示す説明図である。図７において、上段及び下段は、図４における上段及び下段と同様である。図７に示すように、前述の更新されたエントリのエントリ番号Ｅ１００が、ＴＣＰ解放テーブル６００ａに新たに登録されている。このとき、新たに登録されるエントリ番号Ｅ１００は、ＴＣＰ解放テーブル１００ａにおいて、最も下方（下位）に登録される。図７の下段に示すように、エントリ番号Ｅ１００のエントリが更新された時刻を現在時刻Ｔｐとすると、現時刻は、エントリ番号Ｅ１のエントリのＣＬＯＳＥＤ時刻Ｔ２に達していない。
【００７６】
以上のアドレス変換テーブルのエントリ更新処理によって、既に登録されているＴＣＰ接続のエントリにおいて、ＴＣＰ接続がＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４となると、ＣＬＯＳＥＤ時刻フィールドにＣＬＯＳＥＤ状態ＳＴ０となる予定時刻が記録される。また、該当するユーザ用のＴＣＰ解放待ちテーブル６００に、更新されたアドレス変換テーブル５００のエントリのエントリ番号が新たに登録される。
【００７７】
Ａ３．アドレス変換テーブルのエントリ追加処理（第１の実施形態：ＴＣＰ）：
図８は、アドレス変換テーブルのエントリ追加処理の手順を示すフローチャートである。いずれかのユーザ（端末２１）とサーバ３０との間で新たにＴＣＰ接続が確立される際に（すなわち、ＴＣＰ接続確立処理状態ＳＴ１において）、アドレス変換装置１０では、アドレス変換テーブル５００のエントリ追加処理が実行される。なお、アドレス変換部１００は、エントリ追加処理の開始前において、いずれかのユーザからＴＣＰ接続の確立要求を受信すると、プライベートＩＰアドレスとグローバルＩＰアドレスとの新たな対応関係、及び変換前後のポート番号の対応関係を決定する。また、いずれかのユーザからＴＣＰ接続の確立要求があった段階で、かかるＴＣＰ接続はＣＬＯＳＥＤ状態ＳＴ０からＴＣＰ接続確立処理状態ＳＴ１に遷移する。以下の説明においては、前述のアドレス変換テーブル５００のエントリ更新処理によるエントリ番号Ｅ１００のエントリの更新は行われていないものとする。
【００７８】
アドレス変換部１００は、アドレス変換テーブル５００の空きエントリを検索する（ステップＳ２０５）。このとき、ユーザごとに予め定められた範囲（メモリ領域内）で空きエントリを検索し、空きエントリの有無を判定する（ステップＳ２１０）。例えば、アドレス変換テーブル５００が図２に示す状態であれば、ユーザＡ，Ｂについて新たにＴＣＰ接続を確立しようとする際には、空きエントリ無しと判定される。一方、ユーザＣについて新たにＴＣＰ接続を確立しようとする際には、空きエントリ有りと判定される。空きエントリ有りと判定された場合には、見つかった空きエントリに、ＴＣＰ接続に関する情報を登録し（ステップＳ２４５）、エントリ追加処理は終了する。この場合、ＴＣＰ接続は、ＴＣＰ接続確立処理状態ＳＴ１からＴＣＰ接続確立状態ＳＴ２に遷移する。
【００７９】
前述のステップＳ２１０において、空きエントリ無しと判定されると、アドレス変換部１００は、ＴＣＰ解放待ちテーブル６００にエントリがあるか（すなわち、アドレス変換テーブル５００のいずれかのエントリ番号が記録されているか）を判定する（ステップＳ２１５）。例えば、ＴＣＰ解放テーブル６００が図４に示す状態であれば、ユーザＡ，Ｂに関するＴＣＰ接続については、ＴＣＰ解放待ちテーブル６００ａ，６００ｂにエントリが有ると判定される。一方、ユーザＣに関するＴＣＰ接続については、ＴＣＰ解放待ちテーブル６００ｃにエントリが無いと判定される。
【００８０】
ＴＣＰ解放待ちテーブル６００にエントリが無いと判定されると（ステップＳ２１５：ＮＯ）、ＴＣＰ接続の確立は失敗し、エントリ追加処理は終了する。この場合、ＴＣＰ接続は、ＴＣＰ接続確立処理状態ＳＴ１からＣＬＯＳＥＤ状態ＳＴ０に遷移する（戻る）。ステップＳ２１５においてＴＣＰ解放待ちテーブル６００にエントリが無い状態とは、全てのエントリが有効であり、かつ、いずれのＴＣＰ接続もＴＣＰ接続確立状態ＳＴ２であるため、新たなエントリを登録する余地がない状態である。したがって、この場合、新たなＴＣＰ接続を確立することはできない。
【００８１】
前述のステップＳ２１５において、ＴＣＰ解放待ちテーブル６００にエントリがあると判定された場合、ＴＣＰ解放待ちテーブル６００の最も古いエントリ（最先に登録されたエントリ）に対応するアドレス変換テーブル５００のエントリに登録されているＣＬＯＳＥＤ時刻を取得する（ステップＳ２２０）。例えば、ユーザＡに関する新たなＴＣＰ接続については、図４に示すようにＴＣＰ解放待ちテーブル６００に２つのエントリ（エントリ番号Ｅ１が登録されたエントリ及びエントリ番号Ｅ２が登録されたエントリ）が存在する。したがって、この場合、最も上方（最上位）に登録されているエントリ番号Ｅ１のエントリが、最も古いエントリであるので、図２に示すアドレス変換テーブル５００のエントリ番号Ｅ１のエントリに登録されているＣＬＯＳＥＤ時刻Ｔ２が取得される。また、例えば、ユーザＢに関する新たなＴＣＰ接続については、図４に示すエントリ番号Ｅ２のエントリが最も古いエントリであるので、図２に示すアドレス変換テーブル５００のエントリ番号Ｅ１０２のエントリに登録されているＣＬＯＳＥＤ時刻Ｔ１が取得される。
【００８２】
アドレス変換部１００は、時刻管理部４００から現在時刻を取得し（ステップＳ２２５）、ステップＳ２２０において取得したＣＬＯＳＥＤ時刻がステップＳ２２５において取得した現在時刻よりも時間的に前か否か及び時間的に一致するか否か（すなわち、時間的に以前か否か）を判定する（ステップＳ２３０）。
【００８３】
ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前である場合（ステップＳ２３０：ＹＥＳ）、アドレス変換部１００は、アドレス変換テーブル５００における該当エントリに、ＴＣＰ接続に関する上書き登録する（ステップＳ２３５）。ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前である場合、該当するＴＣＰ接続のメモリ解放待ち期間は既に既に満了している又はちょうど満了する。したがって、該当するエントリの各フィールドに情報を上書きしても問題は生じない。
【００８４】
図９は、図８に示すステップＳ２３５によりエントリが更新された後のアドレス変換テーブルの一例を示す説明図である。図９の例では、図２に示すアドレス変換テーブル５００の状態から、エントリ番号Ｅ１０２のエントリにＴＣＰ接続に関する情報が上書き登録されている。図２，４に示すように、エントリ番号Ｅ１０２のエントリは、ＣＬＯＳＥＤ時刻が時刻Ｔ１であり、現在時刻Ｔｐよりも時間的に前である。したがって、ユーザＢについて新たにＴＣＰ接続を確立しようとする際には、このエントリ番号Ｅ１０２のエントリに、新たに決定したＴＣＰ接続に関する情報が上書き登録される。その結果、図９に示すように、アドレス変換情報フィールドには、新たに対応付けられたＩＰアドレス及びポート番号が登録され、また、接続種別には「ＴＣＰ」が、接続状態には「確立」が、エイジングカウンタ値フィールドには「−」（無効）が、ＣＬＯＳＥＤ時刻フィールドには「−」（無効）が、それぞれ登録される。したがって、この時点において、新たなＴＣＰ接続は、図３に示すＴＣＰ接続確立処理状態ＳＴ１からＴＣＰ接続確立状態ＳＴ２に遷移する。
【００８５】
前述のステップＳ２３０において、取得したＣＬＯＳＥＤ時刻が現在時刻よりも時間的に後である場合、ＴＣＰ接続の確立は失敗し、エントリ追加処理は終了する。この場合、ＴＣＰ接続は、ＴＣＰ接続確立処理状態ＳＴ１からＣＬＯＳＥＤ状態ＳＴ０に遷移する（戻る）。ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に後である場合、該当するＴＣＰ接続のメモリ解放待ち期間は未だ満了していない。したがって、この場合、該当するＴＣＰ接続に対応するエントリにおいて各フィールドの値を保持しておかねばならないため、新たなＴＣＰ接続の確立は失敗することとなる。
【００８６】
図８に示すステップＳ２３５の後、アドレス変換部１００は、ＴＣＰ解放待ちテーブルを更新する（ステップＳ２４０）。
【００８７】
図１０は、図８に示すステップＳ２４０により更新されたＴＣＰ解放テーブルの一例を示す説明図である。前述のように、ユーザＢについて新たにＴＣＰ接続が確立されると、ユーザＢ用のＴＣＰ解放待ちテーブル６００ｂが更新される。具体的には、図４に示すエントリ番号Ｅ１０２が削除され、図４において上方から２番目に登録されていた（２番目に古い）エントリであるエントリ番号Ｅ２００のエントリが、図１０に示すように、最上位に登録される。
【００８８】
以上説明したネットワークシステム１０００では、アドレス変換装置１０において、いずれかのユーザから新たなＴＣＰ接続の確立要求があった場合に、ＣＬＯＳＥＤ時刻が現在時刻よりも以前となるエントリに、新たなＴＣＰ接続に関する情報が上書き登録される。したがって、アドレス変換テーブル５００における空きエントリ不足によるＴＣＰ接続の確立失敗を抑制することができる。
【００８９】
加えて、アドレス変換テーブル５００では、各ユーザごとに登録可能なエントリ数を定め、また、各ユーザごとにＴＣＰ解放待ちテーブル６００を設けているので、各ユーザ間の公平性を確保できると共に、各ユーザごとに空きエントリ不足によるＴＣＰ接続の確立失敗を抑制することができる。
【００９０】
また、ＴＣＰ解放待ちテーブル６００では、登録の順序が明確になるようにエントリ番号が登録されるので、最も上位の（最先に登録された）エントリを簡単に見つけることができる。加えて、このＴＣＰ解放待ちテーブル６００において、最上位に登録されているエントリ番号に対応するアドレス変換テーブル５００のエントリのＣＬＯＳＥＤ時刻は、２番目以降に登録されているいずれのエントリ番号に対応するアドレス変換テーブル５００のエントリのＣＬＯＳＥＤ時刻よりも時間的に前となる。したがって、ＴＣＰ解放待ちテーブル６００において最上位に登録されているエントリ番号対応するアドレス変換テーブル５００のエントリのＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前か否かを判定することにより、２番目以降に登録されているエントリ番号に対応するアドレス変換テーブル５００のエントリのＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前か否かを判定することができる。それゆえ、アドレス変換テーブル５００において、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前となるエントリの有無を短時間で判定することができる。
【００９１】
また、各ユーザについての空きエントリが存在する場合には、新たなＴＣＰ接続に関する情報は有効なエントリに上書き登録せずに空きエントリに登録される。したがって、例えば、時刻管理部４００の故障により、時刻管理部４００からアドレス変換部１００に提供される現在時刻が実際の現在時刻よりも早い時刻であった場合等において、実際のＣＬＯＳＥＤ時刻に達していないＴＣＰ接続に対応するエントリに、接続に関する情報を誤って上書き登録することを抑制できる。加えて、メモリ解放期間の管理のため、ＣＬＯＳＥＤ時刻フィールドとエイジングカウンタ値フィールドの値とを併用するので、以下のようなメリットがある。すなわち、空きエントリが存在し得る程度の数のＴＣＰ接続が確立される場合には、エイジングカウンタを用いてＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４からＣＬＯＳＥＤ状態ＳＴ０までの期間を管理し、ＣＬＯＳＥＤ状態ＳＴ０となったＴＣＰ接続について、対応するエントリを空きエントリに変更（更新）させることができる。したがって、このような場合には、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４からＣＬＯＳＥＤ状態ＳＴ０までの期間を、比較的処理負担の軽いエイジングカウンタを用いたカウントにより実現できる。それゆえ、アドレス変換装置１０全体としての処理負荷を軽減できる。
【００９２】
Ａ４．システム構成（第２の実施形態：ＵＤＰ）：
図１１は、本発明の第２の実施形態におけるアドレス変換装置を適用したネットワークシステムの概略構成を示す説明図である。ネットワークシステム２０００は、アドレス変換装置４０と、前述のローカルネットワークＮ１と、グローバルネットワークＮ２と、複数の端末２１と、サーバ３０を備えている。
【００９３】
ネットワークシステム２０００は、前述のネットワークシステム１０００と同じく、各端末２１とサーバ３０とがローカルネットワークＮ１及びグローバルネットワークＮ２を介して通信を行うシステムであり、かかる通信において、グローバルＩＰ（Internet Protocol）アドレスとプライベートＩＰアドレス（ローカルＩＰアドレスとも呼ぶ）とが相互に変換される。ネットワークシステム２０００では、ＯＳＩ参照モデルにおけるネットワーク層のプロトコルとしてＩＰが用いられ、トランスポート層のプロトコルとしてＴＣＰや、ＵＤＰ（User Datagram Protocol）や、ＩＣＭＰ（Internet Control Message Protocol）等が用いられる。以降、ネットワークシステム２０００の内、ＴＣＰに関してはネットワークシステム１０００で述べたとおりである。
【００９４】
アドレス変換装置４０には、ローカルネットワークＮ１及びグローバルネットワークＮ２にそれぞれ接続されており、予め複数のグローバルＩＰアドレスがプールされている。アドレス変換装置４０は、いわゆるＮＡＰＴ（Network Address and Port Translation）機能を有し、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換すると共にポート番号を変換する。
【００９５】
アドレス変換装置４０は、前述のアドレス変換部１５０と、第１パケットインタフェース部２００と、第２パケットインタフェース部３００と、時刻管理部４００と、アドレス変換テーブル５００と、複数のＴＣＰ解放待ちテーブル６００に加えて、複数のＵＤＰ解放待ちテーブル７００を備えている。
【００９６】
アドレス変換部１５０は、第１パケットインタフェース部２００，第２パケットインタフェース部３００，時刻管理部４００，アドレス変換テーブル５００，各ＴＣＰ解放待ちテーブル６００に加えて、各ＵＤＰ解放待ちテーブルにそれぞれ接続されている。アドレス変換部１５０は、ＩＰアドレス及びポート番号の変換を行うと共に、各テーブル５００，６００、７００を管理する。アドレス変換部１５０のＴＣＰに関する処理は、ネットワークシステム１０００と同じであるため、以下省略する。
【００９７】
図１２は、図１１に示すアドレス変換テーブルの設定内容の一例を示す説明図である。アドレス変換テーブル５００は、各接続（ＴＣＰ接続や、ＵＤＰを用いたセッション等）ごとに、接続に関する情報を互いに対応付けて記録する。なお、図１２では、既に複数の接続について、接続に関する情報がアドレス変換テーブル５００に記録されている。
【００９８】
アドレス変換テーブル５００の各フィールドの意味は前述の通りであるが、ＴＣＰの場合はＣＬＯＳＥＤ時刻フィールドにＴＣＰ接続がＣＬＯＳＥＤ状態ＳＴ０に遷移する時刻（Ｔ）を記録したが、ＵＤＰの場合はセッション生成時刻フィールドにＵＤＰ接続のセッションが生成された時刻（ｔ）を記録する点が異なる。
【００９９】
図１２の例では、接続種別が「ＵＤＰ」のエントリ（エントリ番号Ｅ１０１）において接続状態として「確立」が記録されている。接続種別が「ＵＤＰ」のエントリ（エントリ番号Ｅ１０３）において接続状態として「未確立」が記録されている。ここで「確立」は前述のＵＤＰ接続確立状態を意味し、「未確立」は前述のＵＤＰ接続未確立状態を意味している。
【０１００】
図１３は、ユーザ、サーバ間のＵＤＰ通信と、ＵＤＰ接続の状態と、ＵＤＰセッション期間の関係を示す説明図である。ＵＤＰ接続の状態は、接続未確立状態ＳＴ１０と、接続確立状態ＳＴ１１のうち、いずれかの状態となる。
【０１０１】
接続未確立状態ＳＴ１０は、ユーザ、サーバ間のＵＤＰ通信が、ユーザの接続開始から再送を繰り返している状態（Ｐ１〜Ｐ３）、あるいはユーザからの通信に対して、サーバが一度応答した状態（Ｐ４）を意味する。一般的に多く用いられるＵＤＰ通信形態において、このＰ１〜Ｐ３の時間はサーバと通信ができない、もしくは遅延している状態である。またサーバが一度応答した状態（Ｐ４）は、後述の接続確立状態に遷移するまでの間であるか、もしくは一度の双方向通信でＵＤＰ通信が完結した状態である。一般的にＤＮＳなどが後者に該当する。詳細は後述するが、アドレス変換テーブル５００上では、Ｐ１を中継した時点でＵＤＰ接続に関する情報が、接続状態「未確立」として記録される。同時にＵＤＰ解放待ちテーブル７００に、アドレス変換テーブル５００の該当エントリへの識別子が登録される。
【０１０２】
接続確立状態ＳＴ１１は、接続未確立状態から一度でも通信（Ｐ５）を中継し終えた状態を意味する。図１３のＰ５はユーザからの通信だが、サーバからの通信でも良い。一般的に多く用いられるＵＤＰ通信形態において、このＰ５以降はユーザ、サーバ間通信が継続する。図中の例ではＰ６を以って通信終了している。詳細は後述するが、アドレス変換テーブル５００上では、Ｐ５を中継した時点でＵＤＰ接続に関する接続状態が「確立」に更新される。同時にＵＤＰ解放待ちテーブルに、アドレス変換テーブル５００の該当エントリへの識別子が削除される。
【０１０３】
図１２に示したＵＤＰを用いたセッションについては、セッション開始からセッション終了までの期間（以下、「セッション期間」と呼ぶ）が予め定められており、このセッション期間の残り期間がエイジングカウンタ値により管理される。なお、ＵＤＰを用いたセッションについてのエイジングカウンタの初期値は「１８」が設定される。ネットワークシステム２０００では、図１２に示すように、接続種別がＵＤＰの接続について、ＴＣＰ接続に対してＣＬＯＳＥＤ時刻を記録したフィールドに、ＵＤＰセッションが生成された時刻（以下、「セッション生成時刻」と呼ぶ）を記録する。
【０１０４】
エイジングカウンタ値は、アドレス変換部１５０により、順次デクリメントされる。具体的には、アドレス変換部１５０は、エイジングカウンタ値が設定されているエントリを１つずつ検索し、存在したエントリのエイジングカウンタ値を１だけデクリメントし、その後、次に存在したエントリのエイジングカウンタ値を１だけデクリメントすることを繰り返し実行する。アドレス変換部１５０は、エイジングカウンタ値が「０」になると、該当するエントリの各フィールドの値を変更し、空きエントリとする。
【０１０５】
ここで、ネットワークシステム２０００では、前述のネットワークシステム１０００と同じく、「１」デクリメントするまでの期間が、最長でおよそ２００秒要する。また、ＵＤＰ接続では、どのような形態の通信においても、具体的にはＰ４で通信が終了していたとしても、ＵＤＰセッション期間が満了する時間まで（エイジングカウンタ値が０になるまで）アドレス変換テーブルには該当エントリが存在し続ける。この場合、アドレス変換テーブル５００に空きエントリがないと、新たなＵＤＰ接続の確立要求があってもＵＤＰ接続は確立し得ないこととなる。そこで、ネットワークシステム２０００では、後述するアドレス変換テーブル５００のエントリ更新処理及びエントリ追加処理を実行することにより、後述する保護期間経過後、速やかに該当するエントリに新たなＵＤＰ接続に関する情報を上書き登録する。
【０１０６】
ネットワークシステム２０００では、各ユーザ間の公平性を確保するために、各ユーザごとにアドレス変換テーブル５００に登録可能なエントリ数は１００に定められている。図１２では、３ユーザ（ユーザＡ，ユーザＢ，ユーザＣ）についてのエントリのみを記載しているが、図示しない他のユーザについても、それぞれ１００ずつエントリの登録が許容されている。図１２では、ユーザＡ，Ｂについて、１００個のエントリのすべてに、接続に関する情報が登録されている（すなわち、有効フラグが「有効」になっている）。ユーザＣについては、一部のエントリは空きエントリであり、例えば、エントリ番号Ｅ３００のエントリが空きエントリとなっている（すなわち、有効フラグが「無効」になっている）。
【０１０７】
図１４は、図１１に示すＵＤＰ解放待ちテーブル７００の設定内容の一例を示す説明図である。アドレス変換装置４０では、各ユーザごとにテーブル７００が設けられている。図１４の例では、ユーザＡ用のテーブル７００ａと、ユーザＢ用のテーブル７００ｂと、ユーザＣ用のテーブル７００ｃとが示されている。
【０１０８】
ＵＤＰ解放待ちテーブル７００には、接続未確立状態ＳＴ１０のＵＤＰ接続に対応するアドレス変換テーブル５００におけるエントリのエントリ識別子が登録される。識別子はエントリのメモリアドレスでもよい（以降はエントリ番号を識別子として登録するとする）。このとき、ＵＤＰ解放待ちテーブル７００には、登録の順序が明確になるようにエントリ番号が登録される。具体的には、図１４の各ＵＤＰ開放待ちテーブル７００ａ〜７００ｃにおいて、より上方（上位）に登録されているエントリ番号は、より先に（時間的に前に）登録されていることを明示している。例えば、ＵＤＰ解放待ちテーブル７００ｂでは、エントリ番号Ｅ１０３は、エントリ番号Ｅ１０４よりも先に登録されていることを示す。なお、ユーザＡ、Ｃ用のＵＤＰ解放待ちテーブル７００ａ、ｃには、エントリ番号は登録されていない。図１４に示す各テーブル７００ａ〜７００ｃの登録エントリは、前述したとおり、状態がＵＤＰ接続確立状態と判定された時点で削除される。例では、ユーザＢの接続確立状態のＵＤＰ接続であるエントリ番号Ｅ１０１は、すでにテーブル７００ｂから削除されている。
【０１０９】
前述のアドレス変換部１５０は、請求項におけるＵＤＰ接続状態判定部およびアドレス管理部に相当する。また、時刻管理部４００は請求項における時刻取得部に、ＵＤＰ開放待ちテーブル７００に登録されているエントリ番号に対応するアドレス変換テーブル５００におけるエントリは請求項における解放予定エントリに、それぞれ相当する。
【０１１０】
Ａ５．アドレス変換テーブルのエントリ追加処理（第２の実施形態：ＵＤＰ）：
図１５は、アドレス変換テーブルのエントリ追加処理の手順を示すフローチャートである。いずれかのユーザ（端末２１）とサーバ３０との間で新たにＵＤＰ接続が開始される際に、アドレス変換装置４０では、アドレス変換テーブル５００のエントリ追加処理が実行される。なお、アドレス変換部１５０は、エントリ追加処理の開始前において、いずれかのユーザからＵＤＰ接続の確立要求を受信すると、プライベートＩＰアドレスとグローバルＩＰアドレスとの新たな対応関係、及び変換前後のポート番号の対応関係を決定する。
【０１１１】
アドレス変換部１５０は、アドレス変換テーブル５００の空きエントリを検索する（ステップＳ３０５）。このとき、ユーザごとに予め定められた範囲（メモリ領域内）で空きエントリを検索し、空きエントリの有無を判定する（ステップＳ３１０）。例えば、アドレス変換テーブル５００が図１２に示す状態であれば、ユーザＡ，Ｂについて新たにＵＤＰ接続を確立しようとする際には、空きエントリ無しと判定される。一方、ユーザＣについて新たにＵＤＰ接続を確立しようとする際には、空きエントリ有りと判定される。空きエントリ有りと判定された場合には、アドレス変換部１５０は時刻管理部４００から現在時刻を取得（ステップＳ３１５）し、存在した空きエントリに、ＵＤＰ接続に関する情報（有効フラグを「有効」に、アドレス変換情報として「上記で決定したＩＰアドレスの対応関係、ポート番号の対応関係」を、接続種別を「ＵＤＰ」に、接続状態を接続未確立状態ＳＴ１０を示す「未確立」に、エイジングカウンタ値に「１８」を、セッション生成時刻にＳ３１５で取得した現在時刻）を登録する（ステップＳ３２０）。
【０１１２】
ステップＳ３２０の後、アドレス変換部１５０は、新規開始されたＵＤＰ接続について、該当するユーザのＵＤＰ解放待ちテーブル７００に、ステップＳ３２０において設定したアドレス変換テーブル５００のエントリ識別子（エントリ番号、もしくはメモリアドレス）を新たに登録する（ステップＳ３２５）。
【０１１３】
図１２において、エントリ番号Ｅ１０４は、ステップＳ３２０によりエントリが新規に登録された直後の一例である。また図１４において、テーブル７００ｂに登録されているエントリ番号Ｅ１０４は、ステップＳ３２５により新たに登録されたエントリ識別子を例示している。新たに登録されるエントリ識別子は、Ｅ１０４の様に、常にテーブルの最下位に登録される。
【０１１４】
前述のステップＳ３１０において、空きエントリ無しと判定されると、アドレス変換部１５０は、ＵＤＰ解放待ちテーブル７００にエントリがあるか（すなわち、アドレス変換テーブル５００のいずれかのエントリ番号が記録されているか）を判定する（ステップＳ３３０）。例えば、ＵＤＰ解放テーブル７００が図１４に示す状態であれば、ユーザＢに関するＵＤＰ接続については、ＵＤＰ解放待ちテーブル７００ｂにエントリが有ると判定される。一方、ユーザＡ、Ｃに関するＵＤＰ接続については、ＵＤＰ解放待ちテーブル７００ａ、７００ｃにエントリが無いと判定される。
【０１１５】
ＵＤＰ解放待ちテーブル７００にエントリが無いと判定されると（ステップＳ３３０：ＮＯ）、ＵＤＰ接続の確立は失敗し、エントリ追加処理は終了する。ステップＳ３３０においてＵＤＰ解放待ちテーブル７００にエントリが無い状態とは、アドレス変換テーブルの全てのエントリが有効であり、かつ、いずれのＵＤＰ接続もＵＤＰ接続確立状態ＳＴ１１であるため、新たなエントリを登録する余地がない状態である。したがって、この場合、新たなＵＤＰ接続を確立することはできない。
【０１１６】
前述のステップＳ３３０において、ＵＤＰ解放待ちテーブル７００にエントリがあると判定された場合（ステップＳ３３０：ＹＥＳ）、ＵＤＰ解放待ちテーブル７００の最も古いエントリ（最先に登録されたエントリ）に対応するアドレス変換テーブル５００のエントリに登録されているセッション生成時刻を取得する（ステップＳ３３５）。例えば、ユーザＢに関する新たなＵＤＰ接続については、図１４に示すようにＵＤＰ解放待ちテーブル７００ｂに２つのエントリ（エントリ番号Ｅ１０３及びＥ１０４が登録されたエントリ）が存在する。したがって、この場合、最も上方（最上位）に登録されているエントリ番号Ｅ１０３のエントリが、最も古いエントリであるので、図１２に示すアドレス変換テーブル５００のエントリ番号Ｅ１０３のエントリに登録されているセッション生成時刻ｔ１が取得される。
【０１１７】
アドレス変換部１５０は、時刻管理部４００から現在時刻を取得し（ステップＳ３４０）、ステップＳ３３５において取得したセッション生成時刻ｔ１と比較して、所定の保護時間を経過しているか否かを判定する（ステップＳ３４５）。
【０１１８】
所定の保護時間を経過している場合（ステップＳ３４５：ＹＥＳ）、アドレス変換部１５０は、アドレス変換テーブル５００における該当エントリに、ＵＤＰ接続に関する情報を上書き登録する（ステップＳ３５０）。登録内容はステップＳ３２０と同等である。所定の保護時間を経過している場合、該当するＵＤＰ接続の通信は終了している、すなわち通信開始時の過渡的な状態にあるＵＤＰ通信（例えば片ホストが再送を繰り返している通信、双方向通信成立直後で以降通信が継続しうる通信）ではない、と見做せるため、該当するエントリの各フィールドに情報を上書きしても問題は生じない。つまり、ＵＤＰのセッション生成後に、まずはＵＤＰ接続未確立状態ＳＴ１０になるが、その後所定の保護期間を経過しても接続確立状態ＳＴ１１に遷移していなければ、このＵＤＰ通信は既に終了しているものと判断して、このＵＤＰ通信に関するアドレス変換テーブル５００のエントリを開放し、新たなＵＤＰ接続に関する情報で上書きする。なお、この所定の保護時間については、通信開始時の過渡的な状態にあるＵＤＰ通信ではなく、通信が終了していると見做せるために適切な時間をユーザが予め任意に設定しておけばよい。
【０１１９】
前述のステップＳ３４５において、所定の保護時間を経過していない場合（ステップＳ３４５：ＮＯ）、ＵＤＰ接続の確立は失敗し、エントリ追加処理は終了する。
【０１２０】
ステップＳ３５０による上書き登録後、上書き先を指していたＵＤＰ解放待ちテーブルのエントリ識別子を削除し、あらたに上書き登録したアドレス変換テーブルエントリの識別子をＵＤＰ解放待ちテーブルに再登録する（ステップＳ３５５）。
【０１２１】
図１６は、図１２の状態からエントリ番号Ｅ１０３が、ステップＳ３５０によりエントリが上書き登録された直後の一例である。また図１７は、図１４の状態においてテーブル７００ｂの最上位に登録されていたエントリ番号Ｅ１０３が、ステップＳ３５５により削除され、上方から２番目に登録されていた（２番目に古い）エントリであるエントリ番号Ｅ１０４のエントリが最上位に登録され、さらに新たなＵＤＰ接続に関する情報が上書きされたエントリ番号Ｅ１０３のエントリが新たに解放待ちエントリとして登録された例を示している。新たに登録されるエントリ識別子（Ｅ１０３）は常にテーブルの最下位に登録される。
【０１２２】
Ａ６．アドレス変換テーブルのエントリ更新処理（第２の実施形態：ＵＤＰ）：
図１８は、ＵＤＰ接続が接続確立状態に遷移した時のアドレス変換テーブルのエントリ処理の手順を示すフローチャートである。ＵＤＰ接続確立状態に遷移するとアドレス変換装置４０において、アドレス変換テーブル５００のエントリ更新処理が開始される。
【０１２３】
アドレス変換部１５０は、ＵＤＰ接続確立状態ＳＴ１１となったＵＤＰ接続に対応するアドレス変換テーブル５００のエントリにおいて、接続状態フィールドの値を確立状態を示す「確立」に更新する（ステップＳ４０５）。
【０１２４】
図１６は、ステップＳ４０５によりエントリが更新された後のアドレス変換テーブルの一例を示す説明図である。図１６の例では、エントリ番号Ｅ１０４に対応するＵＤＰ接続の接続状態フィールドが、ＵＤＰ接続未確立状態ＳＴ１０を示す「未確立」から確立状態ＳＴ１１を示す「確立」へ更新されている。
【０１２５】
図１８に示すステップＳ４０５の後、アドレス変換部１５０は、接続確立状態に遷移したＵＤＰ接続について、該当するユーザのＵＤＰ解放待ちテーブル７００から、該当するアドレス変換テーブル５００のエントリのエントリ識別子を削除する（ステップＳ４１０）。
【０１２６】
図１９は、図１７に示す状態から、ステップＳ４１０によりエントリ番号が削除された後のＵＤＰ解放待ちテーブルの一例を示す説明図である。図１９に示すように、前述の更新されたエントリのエントリ番号Ｅ１０４が削除され、上方から２番目に登録されていた（２番目に古い）エントリであるエントリ番号Ｅ１０３のエントリが最上位に登録されている。
【０１２７】
以上のアドレス変換テーブルのエントリ更新処理によって、既に登録されているＵＤＰ接続のエントリにおいて、接続確立状態ＳＴ１１となると、接続状態フィールドが「確立」に更新され、また、該当するユーザ用のＵＤＰ解放待ちテーブル７００から、更新されたアドレス変換テーブル５００のエントリのエントリ番号が削除される。その結果、ＵＤＰ解放待ちテーブル内には接続未確立状態のＵＤＰ接続を示すエントリ番号のみが登録されている状態が保持される。
【０１２８】
以上説明したネットワークシステム２０００では、アドレス変換装置４０において、いずれかのユーザから新たなＵＤＰ接続の確立要求があった場合に、保護時間を経過した接続未確立状態エントリに、新たなＵＤＰ接続に関する情報が上書き登録される。したがって、アドレス変換テーブル５００における空きエントリ不足によるＵＤＰ接続の確立失敗を抑制することができる。
【０１２９】
上書き登録に対して所定の保護時間を設けていることで、接続状態が過渡状態であり、まだ通信終了していないＵＤＰ接続が誤って上書きされてしまうことを保護することができる。
【０１３０】
加えて、アドレス変換テーブル５００では、各ユーザごとに登録可能なエントリ数を定め、また、各ユーザごとにＵＤＰ解放待ちテーブル７００を設けているので、各ユーザ間の公平性を確保できると共に、各ユーザごとに空きエントリ不足によるＵＤＰ接続の確立失敗を抑制することができる。
【０１３１】
また、ＵＤＰ解放待ちテーブル７００では、登録の順序が明確になるようにエントリ番号が登録されるので、最も上位の（最先に登録された）エントリを高速に見つけることができる。
【０１３２】
なお、上述したＴＣＰおよびＵＤＰに関する２つの実施形態は、ＴＣＰおよびＵＤＰそれぞれを個別に記載したが、アドレス変換テーブル５００において、ＴＣＰ接続に関する情報と登録していたエントリにＵＤＰ接続に関する情報を上書き登録してもよいし、その逆を行ってもよい。この場合、例えば新たなＴＣＰ接続の要求を受けた際に、まずは図８の処理フローを実行し、ＴＣＰエントリに対する上書き登録ができなかった場合に、図１５の処理フローを実行し、ＵＤＰエントリに対する上書き登録ができるか否かを判断し、可能であればＵＤＰエントリにＴＣＰエントリを上書きするなどの処理を行うことが考えられる。なお、新たなＵＤＰ接続の要求を受けた際も同様である。もちろん、図８の処理フローと図１５の処理フローを行う順序は逆でもよいし、双方の処理フローを同時に行って上書き登録可能なエントリを決定してもよい。
【０１３３】
Ｂ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１３４】
Ｂ１．変形例１：
上記実施例では、アドレス変換テーブル５００にＴＣＰ接続のＣＬＯＳＥＤ時刻を登録していたが、本発明はこれに限定されるものではない。例えば、ＣＬＯＳＥＤ時刻に代えて、ＴＣＰ接続閉塞処理状態ＳＴ３からＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移した時刻を登録することもできる。この場合、エントリの追加処理のステップＳ２３０では、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移した時刻に基づきＣＬＯＳＥＤ時刻を決定し、かかるＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前であるか否かを判定することが好ましい。ＣＬＯＳＥＤ時刻の決定は、例えば、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移した時刻にメモリ解放待ち期間（１２０秒）を加えて決定することができる。また、例えば、ＣＬＯＳＥＤ時刻に代えて、ＴＩＭＥ＿ＷＡＩＴ状態ＳＴ４に遷移した時刻に所定のオフセット時間（例えば、１０秒）を加えた時刻を登録することもできる。この場合、ステップＳ２３０では、メモリ解放待ち期間からオフセット時刻を減算した期間を登録されている時刻に加えて得られた時刻が、現在時刻よりも時間的に以前か否かを判定することができる。すなわち、一般には、ＣＬＯＳＥＤ時刻と関連する任意の時刻を、アドレス変換テーブル５００に登録することができる。
【０１３５】
Ｂ２．変形例２：
上記実施例では、登録の順序が明確になるようにＴＣＰ解放待ちテーブル６００にエントリ番号を登録するために、より時間的に前のエントリをより上位に登録するようにしていたが、本発明はこれに限定されるものではない。例えば、ＴＣＰ解放待ちテーブル６００にエントリ番号を登録する際に登録する時刻も併せて登録することもできる。かかる構成では、エントリ追加処理のステップＳ２２０において、ＴＣＰ開放待ちテーブル６００の各エントリに登録されている登録時刻に基づき、最先に登録されているエントリを検索することもできる。
【０１３６】
また、登録の順序が明確とならないようにしてＴＣＰ解放待ちテーブル６００にエントリ番号を登録することもできる。かかる構成においても、ＴＣＰ解放待ちテーブル６００に登録されているエントリ番号の各エントリについて、それぞれＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前であるか否かを判定することにより、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前のエントリを検索することができる。
【０１３７】
また、ＴＣＰ解放待ちテーブル６００を省略することもできる。この場合、エントリ追加処理において、アドレス変換テーブル５００に登録されている各ＣＬＯＳＥＤ時刻について、現在時刻よりも時間的に以前であるか否かを判定することにより、メモリ解放待ち期間が満了したエントリを検索することができる。
【０１３８】
また、各実施例では、ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前であり、かつ、ＣＬＯＳＥＤ時刻が時間的に最も前となるエントリに、新たなＴＣＰ接続に関する情報が上書き登録されていたが、本発明はこれに限定されるものではない。ＣＬＯＳＥＤ時刻が現在時刻よりも時間的に以前であるいずれかのエントリに、新たなＴＣＰ接続に関する情報を上書き登録することもできる。
【０１３９】
Ｂ３．変形例３：
上記実施例では、アドレス変換テーブル５００におけるＴＣＰ接続についての各エントリに、エイジングカウンタ値を記録していたが、これに変えて、エイジングカウンタ値を記録しないこともできる。この場合、ＴＣＰ接続についての各エントリは、ＣＬＯＳＥＤ時刻となっても空きエントリとならないこととなる。しかしながら、上記エントリ追加処理により、ＣＬＯＳＥＤ時刻が満了したエントリには新たなＴＣＰ接続に関する情報が上書き登録されるので、空きエントリ不足によるＴＣＰ接続の確立失敗を抑制できる。
【０１４０】
Ｂ４．変形例４：
上記実施例では、アドレス変換テーブル５００において、各ユーザごとに登録可能なエントリ数が定められていたが、かかる制限を設けないこともできる。この場合、エントリ追加処理のステップＳ２１０において、アドレス変換テーブル５００全体において、空きエントリの有無を判定することができる。また、ＴＣＰ解放待ちテーブル６００を１つに統一することができる。
【０１４１】
Ｂ５．変形例５：
上記実施例では、エントリ追加処理において、ステップＳ２１０により空きエントリを検索し、その後、空きエントリがない場合に、ステップＳ２２０〜Ｓ２３５によりＣＬＯＳＥＤ時刻が満了しているエントリを検索して接続に関する情報を上書き登録していたが、本発明はこれに限定されるものではない。先に、ＣＬＯＳＥＤ時刻が満了しているエントリを検索し、その後、かかるエントリが見つかった場合には接続に関する情報を上書き登録し、ＣＬＯＳＥＤ時刻が満了しているエントリが見つからなかった場合に空きエントリを検索することもできる。
【０１４２】
Ｂ６．変形例６：
上記実施例では、アドレス変換装置１０は、ＮＡＰＴ（Network Address and Port Translation）機能を有していたが、これに代えて、ポート番号の変換を行わないＮＡＴ（Network Address Translation）機能を有することもできる。また、アドレス変換装置１０は、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換していたが、本発明はこれに限定されるものではない。例えば、アドレス変換装置１０をＬＡＮ内でのアドレス変換に用い、かかるアドレス変換装置により、第１のプライベートＩＰアドレスから第２のプライベートＩＰアドレスに変換することもできる。また、ＩＰアドレスに代えて、ＩＰＸ（Internetwork Packet eXchange）で用いられるアドレスを採用することもできる。すなわち、一般には、通信用の第１のアドレスと通信用の第２のアドレスとのアドレス変換を行うアドレス変換装置を、本発明のアドレス変換装置として採用することができる。
【０１４３】
Ｂ７．変形例７：
上記実施例では、アドレス変換装置１０は、専用機であったが、これに代えて、他の器機の一部として構成することもできる。例えば、ローカルネットワークＮ１におけるエッジルーターやファイアウォールに搭載することもできる。また、例えば、ローカルネットワークＮ１に図示しないＲａｄｉｕｓ（Remote Authentication Dial-In User Service）サーバが接続されている構成では、かかるＲａｄｉｕｓサーバに搭載することもできる。
【０１４４】
Ｂ８．変形例８：
上記実施例のアドレス変換装置４０においては、登録の順序が明確になるようにＵＤＰ解放待ちテーブル７００にエントリ番号を登録するために、より時間的に前のエントリをより上位に登録するようにしていたが、本発明はこれに限定されるものではない。例えば、ＵＤＰ解放待ちテーブル７００にエントリ番号を登録する際に登録する時刻も併せて登録することで、エントリ追加処理ステップＳ３３０において、テーブル７００の各エントリに登録されている登録時刻に基づき、最先に登録されているエントリを検索することもできる。
【０１４５】
また、ＵＤＰ解放待ちテーブル７００を省略することもできる。この場合、エントリ追加処理において、アドレス変換テーブル５００に登録されている各セッションの接続状態とセッション生成時間について、保護時間を経過していて接続状態が「未確立」であるか否かを判定することにより、上書き可能なエントリを検索することができる。
【０１４６】
また、実施例では、最古に登録されており、かつ保護時間を経過しておりかつ、接続状態が「未確立」のＵＤＰエントリに、新たなＵＤＰ接続に関する情報が上書き登録されていたが、本発明はこれに限定されるものではない。最古に登録されているものでなくとも、保護時間を経過しておりかつ、接続状態が「未確立」のＵＤＰエントリであれば、上書きすることも出来る。さらには、保護時間を経過していなくとも上書きすることで、ＵＤＰエントリの利用効率を向上させる（その一方、過渡状態のＵＤＰ接続が保護されないというトレードオフが有る）することも出来る。これらアドレス変換装置による上書き動作は、ネットワークシステムの設計者が設定可能なアドレス変換装置のコンフィグレーションとしてすることが出来る。
【０１４７】
Ｂ９．変形例９：
上記実施例のアドレス変換装置４０においては、アドレス変換テーブル５００において、各ユーザごとに登録可能なエントリ数が定められていたが、かかる制限を設けないこともできる。この場合、ＵＤＰエントリ追加処理のステップＳ３１０において、アドレス変換テーブル５００全体において、空きエントリの有無を判定することができる。また、ＵＤＰ解放待ちテーブル７００を１つに統一することができる。
【０１４８】
Ｂ１０．変形例１０：
上記実施例のアドレス変換装置４０においては、ＵＤＰエントリ上書きに対する保護時間はある所定の値として例示したが、本発明はこれに限定されるものではない。固定値ではなく、ネットワークシステムの設計者が設定可能なアドレス変換装置のコンフィグレーションとしてすることが出来る。
【０１４９】
Ｂ１１．変形例１１：
上記実施例のアドレス変換装置４０においては、ＵＤＰエントリ追加処理において、ステップＳ３１０により空きエントリを検索し、その後、空きエントリがない場合に、ステップＳ３３５〜Ｓ３５０により解放待ちエントリを検索して接続に関する情報を上書き登録していたが、本発明はこれに限定されるものではない。先に、解放待ちエントリを検索し、その後、かかるエントリが存在した場合には接続に関する情報を上書き登録し、解放待ちエントリが見つからなかった場合に空きエントリを検索することもできる。
【０１５０】
Ｂ１２．変形例１２：
上記実施例では、アドレス変換装置４０は、ＮＡＰＴ（Network Address and Port Translation）機能を有していたが、これに代えて、ポート番号の変換を行わないＮＡＴ（Network Address Translation）機能を有することもできる。また、アドレス変換装置４０は、グローバルＩＰアドレスとプライベートＩＰアドレスとを相互に変換していたが、本発明はこれに限定されるものではない。例えば、アドレス変換装置１０をＬＡＮ内でのアドレス変換に用い、かかるアドレス変換装置により、第１のプライベートＩＰアドレスから第２のプライベートＩＰアドレスに変換することもできる。また、ＩＰアドレスに代えて、ＩＰＸ（Internetwork Packet eXchange）で用いられるアドレスを採用することもできる。すなわち、一般には、通信用の第１のアドレスと通信用の第２のアドレスとのアドレス変換を行うアドレス変換装置を、本発明のアドレス変換装置として採用することができる。
【０１５１】
Ｂ１３．変形例１３：
上記実施例では、アドレス変換装置４０は、専用機であったが、これに代えて、他の器機の一部として構成することもできる。例えば、ローカルネットワークＮ１におけるエッジルーターやファイアウォールに搭載することもできる。また、例えば、ローカルネットワークＮ１に図示しないＲａｄｉｕｓ（Remote Authentication Dial-In User Service）サーバが接続されている構成では、かかるＲａｄｉｕｓサーバに搭載することもできる。
【符号の説明】
【０１５２】
１０００…ネットワークシステム
１０…アドレス変換装置
２１…端末
３０…サーバ
１００…アドレス変換部
２００…第１パケットインタフェース部
３００…第２パケットインタフェース部
４００…時刻管理部
５００…アドレス変換テーブル
６００，６００ａ，６００ｂ，６００ｃ…ＴＣＰ解放待ちテーブル
２０００…ネットワークシステム
１５０…アドレス変換部
４０…アドレス変換装置
７００，７００ａ，７００ｂ，７００ｃ…ＵＤＰ解放待ちテーブル
【図１】
0005380363.tif 000002
【図２】
0005380363.tif 000003
【図３】
0005380363.tif 000004
【図４】
0005380363.tif 000005
【図５】
0005380363.tif 000006
【図６】
0005380363.tif 000007
【図７】
0005380363.tif 000008
【図８】
0005380363.tif 000009
【図９】
0005380363.tif 000010
【図１０】
0005380363.tif 000011
【図１１】
0005380363.tif 000012
【図１２】
0005380363.tif 000013
【図１３】
0005380363.tif 000014
【図１４】
0005380363.tif 000015
【図１５】
0005380363.tif 000016
【図１６】
0005380363.tif 000017
【図１７】
0005380363.tif 000018
【図１８】
0005380363.tif 000019
【図１９】
0005380363.tif 000020