(57)【要約】【課題】効率的にセッションを割り当てることを目的とする。【解決手段】送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置は、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当部とを有する。前記セッション割当部は、送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値又はシーケンス番号を変換する。【選択図】図３
2014049901.tif 000002
【特許請求の範囲】
【請求項１】
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当部と、
を有し、
前記セッション割当部は、送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値又はシーケンス番号を変換するセッション割当装置。
【請求項２】
セッション毎に、送信元端末の変換前後のアドレスと、送信元端末の変換前後のタイムスタンプ値又はシーケンス番号とを格納するセッション記憶部と、
セッション毎に、送信元端末から受信したパケットのタイムスタンプ値又はシーケンス番号と、前記セッション記憶部に格納された変換前のタイムスタンプ値又はシーケンス番号とを比較し、送信元端末から受信したパケットのタイムスタンプ値又はシーケンス番号が小さい場合、送信元端末から受信したパケットを破棄し、大きい場合、前記セッション記憶部を参照して、送信元端末のアドレスを変換すると共に、送信元端末のタイムスタンプ値又はシーケンス番号を変換するアドレス変換部と、
を更に有する、請求項１に記載のセッション割当装置。
【請求項３】
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当部と、
を有し、
前記セッション割当部は、使用可能なポートに空きが存在するまで、セッションを割り当てた送信元端末とは異なる送信元端末からの接続要求パケットを拒否するセッション割当装置。
【請求項４】
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
送信元端末に使用可能なポートを割り当てるポート割当部と、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、前記ポート割当部で割り当てられたポートの範囲で、送信元端末にセッションを割り当てるセッション割当部と、
を有するセッション割当装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セッション割当装置及びセッション割当方法に関する。
【背景技術】
【０００２】
プライベートネットワークとグローバルネットワークとを接続し、プライベートアドレスとグローバルアドレスとの変換を実施する装置をネットワークアドレス変換（NAT：Network Address Translation）装置と呼ぶ。ネットワークアドレス変換装置を介して送信元端末と通信先端末でTCP（Transmission Control Protocol）により通信を実施する場合、送信元端末と通信先端末との間にセッションが張られる。具体的には、送信元端末は、接続要求パケット（SYNパケット）を通信先端末に送信してセッションをオープンする。情報の取得が終了した場合、終了パケット（FINパケット）によりセッションがクローズされる。ネットワークアドレス変換装置は、TCPステートを管理する実装の場合は、FINパケットに対して最後にACKを送ってから一定の時間が経過する間は、セッションをTIME_WAIT状態にし、新たにSYNパケットを送信した送信元端末に対してTIME_WAIT状態のセッションを割り当てることはできない。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】RFC793, "Transmission Control Protocol", September 1981, URL: http://tools.ietf.org/html/rfc793
【非特許文献２】RFC6191, "Reducing the TIME-WAIT State Using TCP Timestamps", April 2011, URL: http://tools.ietf.org/html/rfc6191
【非特許文献３】RFC1323 "TCP Extensions for High Performance", May 1992, URL: http://tools.ietf.org/html/rfc1323
【発明の概要】
【発明が解決しようとする課題】
【０００４】
送信元端末のタイムスタンプ値（以下、「タイムスタンプ値」と呼ぶ）及び送信元端末のシーケンス番号（以下、「シーケンス番号」と呼ぶ）を解析することで、セッションの管理を向上させることがRFC6191及びRFC1323で提案されている。ここで、タイムスタンプ値及びシーケンス番号は、RFC793に記載されている（非特許文献１参照）。
【０００５】
RFC6191では、SYNパケットを受信した装置は、SYNパケットのタイムスタンプ値及びシーケンス番号を取得し、SYNパケットのタイムスタンプ値及びシーケンス番号がこれまでに装置を通過したパケットより新しいタイムスタンプ値及びシーケンス番号を持つ場合にTIME_WAIT状態のセッションを解放し、新規セッションを開始する（以下、「RFC6191の動作」と呼ぶ）。このようにして、セッション再利用のための改善が提案されている（非特許文献２，"2. Improved Processing of Incoming Connection Requests"参照）。
【０００６】
RFC1323では、パケットを受信した装置は、パケットのタイムスタンプ値及びシーケンス番号を取得し、装置が保持しているタイムスタンプ値及びシーケンス番号の最大値よりも小さい場合、そのパケットを破棄する（以下、「RFC1323 PAWSの動作」と呼ぶ）。このようにして、旧セッションで発生した古いパケットが新セッションに混入する可能性を回避している（非特許文献３，"4.2.1 Basic PAWS Algorithm"参照）。
【０００７】
しかし、RFC6191の動作及びRFC1323 PAWSの動作は、パケットのタイムスタンプ値及びシーケンス番号を解析しない現状のネットワークアドレス変換装置には実装できない。また、RFC6191の動作を実現するためには、「受信するパケットのタイムスタンプ値及びシーケンス番号が単調増加している必要がある」という制約がある。よって、配下にタイムスタンプ値及びシーケンス番号の同期がとれていない複数の端末を接続するネットワークアドレス変換装置にRFC6191の動作を適用し、複数の端末間でセッションを再利用することはできない。
【０００８】
仮に、現状のネットワークアドレス変換装置にRFC6191の動作を実現したとしても、送信されるパケットのタイムスタンプ値及びシーケンス番号が大きい端末（端末Aとする）のみがセッションを再利用できることになる。この場合、端末A以外の端末からのパケットのタイムスタンプ値及びシーケンス番号が小さい場合、端末Aがセッションを占有している限り、通信が実施できない。
【０００９】
また、RFC1323 PAWSの動作についても、動作にはタイムスタンプ値及びシーケンス番号の解析が必要となるので、現状のネットワークアドレス変換装置に実装することはできない。
【００１０】
本発明は、ネットワークアドレス変換装置のように複数の端末を収容する装置において、効率的にセッションを割り当てることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一形態に係るセッション割当装置は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当部と、
を有し、
前記セッション割当部は、送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値又はシーケンス番号を変換することを特徴とする。
【００１２】
本発明の一形態に係るセッション割当装置は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当部と、
を有し、
前記セッション割当部は、使用可能なポートに空きが存在するまで、セッションを割り当てた送信元端末とは異なる送信元端末からの接続要求パケットを拒否することを特徴とする。
【００１３】
本発明の一形態に係るセッション割当装置は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置であって、
送信元端末に使用可能なポートを割り当てるポート割当部と、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を保持する最大値保持部と、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、前記ポート割当部で割り当てられたポートの範囲で、送信元端末にセッションを割り当てるセッション割当部と、
を有することを特徴とする。
【００１４】
本発明の一形態に係るセッション割当方法は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置におけるセッション割当方法であって、
当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を最大値保持部に保持する最大値保持ステップと、
接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当ステップと、
を有し、
前記セッション割当ステップは、送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値又はシーケンス番号を変換することを特徴とする。
【００１５】
本発明の一形態に係るセッション割当方法は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置におけるセッション割当方法であって、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を最大値保持部に保持する最大値保持ステップと、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てるセッション割当ステップと、
を有し、
前記セッション割当ステップは、使用可能なポートに空きが存在するまで、セッションを割り当てた送信元端末とは異なる送信元端末からの接続要求パケットを拒否することを特徴とする。
【００１６】
本発明の一形態に係るセッション割当方法は、
送信元端末からの接続要求パケットに対して送信元端末にセッションを割り当てるセッション割当装置におけるセッション割当方法であって、
送信元端末に使用可能なポートを割り当てるポート割当ステップと、
送信元端末毎に、当該セッション割当装置を通過したパケットのタイムスタンプ値又はシーケンス番号の最大値を最大値保持部に保持する最大値保持ステップと、
送信元端末からの接続要求パケットのタイムスタンプ値又はシーケンス番号が前記最大値保持部に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、送信元端末に割り当てられたポートの範囲で、送信元端末にセッションを割り当てるセッション割当ステップと、
を有することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ネットワークアドレス変換装置のように複数の端末を収容する装置において、効率的にセッションを割り当てることが可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施例に係るネットワークアドレス変換装置の概要図
【図２】本発明の実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図
【図３】本発明の第１実施例に係るネットワークアドレス変換装置の概要図
【図４】本発明の第１実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図
【図５】本発明の第１実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャート
【図６】本発明の第２実施例に係るネットワークアドレス変換装置の概要図
【図７】本発明の第２実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図
【図８】本発明の第２実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャート
【図９】本発明の第３実施例に係るネットワークアドレス変換装置の概要図
【図１０】本発明の第３実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図
【図１１】本発明の第３実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャート
【発明を実施するための形態】
【００１９】
以下、本発明の実施例について、図面を参照して説明する。
【００２０】
本発明の実施例では、送信元端末からの接続要求パケット（SYNパケット）に対して送信元端末にセッションを割り当てるために、ネットワークアドレス変換装置が用いられる。まず、本発明の実施例に係るネットワークアドレス変換装置２００の概要について説明する。
【００２１】
図１に、本発明の実施例に係るネットワークアドレス変換装置２００の概要図を示す。なお、図１に示すネットワーク構成は単なる一例であり、本発明の実施例はここに記載した構成に限られるものではない。
【００２２】
ネットワークアドレス変換装置２００は、送信元端末１０１又は１０２と、ネットワークを介して通信先端末３００とに接続されており、送信元端末１０１又は１０２のアドレスと通信先端末３００のアドレスとを変換する。例えば、送信元端末１０１又は１０２には、プライベートアドレス／ポートが割り当てられており、通信先端末３００には、グローバルアドレス／ポートが割り当てられている。また、ネットワークアドレス変換装置２００には、使用可能なポート数に制限があるものとし、例えば、通信先端末３００との通信に１００ポートのセッションが必要である場合に、ネットワークアドレス変換装置２００は、グローバル側に５０ポートのセッションまで許容できるものとする。
【００２３】
ネットワークアドレス変換装置２００は、グローバルネットワーク送受信部２０１と、プライベートネットワーク送受信部２０３と、セッション割当部２０５と、アドレス変換部２０７と、セッション表２０９とを有する。
【００２４】
グローバルネットワーク送受信部２０１は、グローバルアドレス／ポートが付与された通信先端末３００に対してパケットを送受信する。
【００２５】
プライベートネットワーク送受信部２０３は、プライベートアドレス／ポートが付与された送信元端末１０１又は１０２に対してパケットを送受信する。
【００２６】
セッション割当部２０５は、送信元端末１０１又は１０２からのSYNパケットに対して、送信元端末１０１又は１０２にセッションを割り当て、各セッションのTCPステートを保持する。セッション割当部２０５は、ネットワークアドレス変換装置２００で使用されているセッションの数をカウントし、グローバル側に使用可能なポートが存在するかを判定する。グローバル側に使用可能なポートが存在する場合、セッション割当部２０５は、送信元端末１０１又は１０２からのSYNパケットに対して、送信元端末１０１又は１０２にセッションを割り当てる。
【００２７】
グローバル側に使用可能なポートが存在しない場合、セッション割当部２０５は、セッション終了時に、新たにSYNパケットを送信した送信元端末に対してセッションを割り当てる必要がある。セッション終了時は、FIN+ACKパケットに対するACKの通過後に、セッションをTIME_WAIT状態にし、TIME_WAIT状態が解放されるまで、SYNパケットを送信した送信元端末に対してTIME_WAIT状態のセッションを割り当てない。このため、セッション毎に、ネットワークアドレス変換装置２００を通過したパケットのタイムスタンプ値及びシーケンス番号の最大値（最初のパケットの場合は最初のパケットのタイムスタンプ値及びシーケンス番号）がネットワークアドレス変換装置２００内に保持される。例えば、セッション毎のタイムスタンプ値及びシーケンス番号の最大値は、セッション毎のアドレス変換内容を保持するセッション表２０９に格納されてもよい。この最大値は、パケットがネットワークアドレス変換装置２００を通過する毎に更新される。セッション割当部２０５は、SYNパケットを受信した場合、SYNパケットのタイムスタンプ値及びシーケンス番号がネットワークアドレス変換装置２００に保持されたタイムスタンプ値及びシーケンス番号の最大値より大きいか否かを判断し、大きい場合、TIME_WAIT状態のセッションを解放して、SYNパケットを送信した送信元端末に対してそのセッションを割り当てる。これにより、RFC6191の動作を実現する。
【００２８】
アドレス変換部２０７は、送信元端末１０１又は１０２から通信先端末３００への通信を受信すると、プライベートアドレス／ポートとグローバルアドレス／ポートとを変換する。また、ネットワークアドレス変換装置２００は、この変換が発生したときに変換内容をセッション表２０９に記憶する。更に、上り通信と下り通信との双方で、セッション表２０９に従ってアドレス／ポートを変換する。
【００２９】
アドレス変換部２０７は、セッション毎に、受信したパケットのタイムスタンプ値及びシーケンス番号と、ネットワークアドレス変換装置２００に保持されたタイムスタンプ値及びシーケンス番号の最大値とを比較し、受信したパケットのタイムスタンプ値及びシーケンス番号が小さい場合、受信したパケットを破棄する。これにより、RFC1323 PAWSの動作を実現する。
【００３０】
セッション表２０９には、セッション毎に、送信元端末の変換前後のアドレスが格納されており、例えば、送信元端末１０１又は１０２の変換前アドレス、変換前ポート、変換後アドレス、変換後ポート、通信先端末３００の通信先アドレス、通信先ポート及びプロトコル種別が格納される。また、セッション毎のタイムスタンプ値及びシーケンス番号の最大値を保持するため、セッション毎に、送信元端末のタイムスタンプ値及びシーケンス番号が格納されてもよい（図示せず）。
【００３１】
図２に、本発明の実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図を示す。図２において、タイムスタンプ値をTSで示す。
【００３２】
例えば、ネットワークアドレス変換装置２００において、使用可能なポート数が５０に制限されているものとする。更に、送信元端末１０１又は１０２がリモートホスト（通信先端末）３００から情報を取得するために１００のポートが必要であるものとする。このような前提で、送信元端末１０１がリモートホスト３００と通信を実施し、ネットワークアドレス変換装置２００の５０ポートを使いつくしたとする。
【００３３】
ネットワークアドレス変換装置２００は、セッション終了時にリモートホスト３００からFIN+ACKパケットを受信すると（Ｓ１０１）、アドレス変換部２０７においてアドレスを変換し、送信元端末１０１にFIN+ACKパケットを送信する（Ｓ１０３）。ネットワークアドレス変換装置２００は、FIN+ACKパケットに対して送信元端末１０１からACKパケットを受信すると（Ｓ１０５）、アドレス変換部２０７においてアドレスを変換し、リモートホスト３００にACKパケットを送信する（Ｓ１０７）。このとき、ネットワークアドレス変換装置２００は、ACKパケットのタイムスタンプ値（TS:500）を保持すると共に、セッション割当部２０５において、セッションをTIME_WAIT状態にする。
【００３４】
ネットワークアドレス変換装置２００は、グローバル側に使用可能なポートが存在しない状況で送信元端末１０１から新たにSYNパケットを受信すると（Ｓ１０９）、受信したSYNパケットのタイムスタンプ値（TS:600）と、ネットワークアドレス変換装置２００において保持されたタイムスタンプ値（TS:500）とを比較する。受信したSYNパケットのタイムスタンプ値（TS:600）が保持されたタイムスタンプ値（TS:500）より大きいため、ネットワークアドレス変換装置２００は、セッション割当部２０５において、TIME_WAIT状態のセッションを終了し、送信元端末１０１に新たなセッションを割り当てる。そして、ネットワークアドレス変換装置２００は、アドレス変換部２０７においてアドレスを変換し、リモートホスト３００にSYNパケットを送信する（Ｓ１１１）。なお、受信したSYNパケットのタイムスタンプ値が保持されたタイムスタンプ値（TS:500）より小さい場合、新たなセッションは割り当てられない。
【００３５】
図２ではタイムスタンプ値のみが考慮されているが、シーケンス番号を考慮した場合も同様に動作する。また、ネットワークアドレス変換装置２００はリモートホスト３００からFIN+ACKパケットを受信しているが、送信元端末１０１からFIN+ACKパケットを受信する場合も同様に動作する。
【００３６】
このように、ネットワークアドレス変換装置２００を通過したパケットのタイムスタンプ値及びシーケンス番号を解析できるようにすることで、ネットワークアドレス変換装置２００においてRFC6191の動作及びRFC1323 PAWSの動作を実現する。ネットワークアドレス変換装置２００は、タイムスタンプ値のみを解析してもよく、シーケンス番号のみを解析してもよく、これらの双方を解析してもよい。ただし、RFC6191の動作及びRFC1323 PAWSの動作を実現するためには、ネットワークアドレス変換装置２００を通過するパケットのタイムスタンプ値及びシーケンス番号が単調増加する必要があるため、ネットワークアドレス変換装置２００において、以下の３つの実施例のいずれかを実装する。これらの実施例は独立しており、ネットワークアドレス変換装置２００は、これらの実施例のいずれか１つを実現すればよい。
【００３７】
第１実施例：送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値及びシーケンス番号がネットワークアドレス変換装置に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値及びシーケンス番号を変換する。また、変換後のタイムスタンプ値及びシーケンス番号をネットワークアドレス変換装置に保持する。更に、ネットワークアドレス変換装置は、タイムスタンプ値及びシーケンス番号の変換のためのセッション表を有する。
【００３８】
第２実施例：使用可能なポートに空きが存在するまで、セッションを割り当てた送信元端末とは異なる送信元端末からのSYNパケットを拒否する。このようにして、ネットワークアドレス変換装置に最初にアクセスした送信元端末からのタイムスタンプ値及びシーケンス番号のみを解析する。最初にアクセスした送信元端末の通信終了後に、別の送信元端末からのSYNパケットを受け付ける。
【００３９】
第３実施例：ネットワークアドレス変換装置の配下の送信元端末に使用可能なポートを割り当てる。ネットワークアドレス変換装置は、割り当てられたポートの範囲で、タイムスタンプ値及びシーケンス番号を解析し、送信元端末にセッションを割り当てる。
【００４０】
以下、各実施例について詳細に説明する。
【００４１】
＜第１実施例：装置の構成＞
図３に、本発明の第１実施例に係るネットワークアドレス変換装置２２０の概要図を示す。ネットワークアドレス変換装置２２０は、グローバルネットワーク送受信部２２１と、プライベートネットワーク送受信部２２３と、セッション割当部２２５と、アドレス変換部２２７と、セッション表２２９と、最大値保持部２３１とを有する。図３の各機能部は、図１の各機能部と対応しているため、以下では、異なる部分について説明する。
【００４２】
最大値保持部２３１は、ネットワークアドレス変換装置２２０を通過したパケットのタイムスタンプ値及びシーケンス番号の最大値を保持する。この最大値は、全てのセッションの最大値に相当する。
【００４３】
セッション割当部２２５は、SYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２３１に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てる。上記のように、セッション割当部２２５は、グローバル側に使用可能なポートが存在しない状況でSYNパケットを受信した場合、SYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２３１に保持されたタイムスタンプ及びシーケンス番号の最大値より大きいか否かを判断し、大きい場合、TIME_WAIT状態のセッションを解放して、SYNパケットを送信した送信元端末に対してそのセッションを割り当てる。
【００４４】
ネットワークアドレス変換装置２２０を通過するパケットのタイムスタンプ値及びシーケンス番号が単調増加する必要があるため、セッション割当部２２５は、送信元端末からパケットを受信した場合、受信したパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２３１に保持された最大値より大きい値となるように、受信したパケットのタイムスタンプ値及びシーケンス番号を変換する。例えば、タイムスタンプ値及びシーケンス番号を１だけインクリメントする。タイムスタンプ値及びシーケンス番号が変換されたパケットがネットワークアドレス変換装置２２０を通過した場合、そのタイムスタンプ値及びシーケンス番号が最大値保持部２３１に保持される。
【００４５】
アドレス変換部２２７は、アドレス変換内容と共に、タイムスタンプ値及びシーケンス番号の変換内容をセッション表２２９に記憶する。更に、上り通信と下り通信との双方で、セッション表２２９に従ってアドレス／ポートを変換するすると共に、タイムスタンプ値及びシーケンス番号を変換する。すなわち、戻りパケットについては、セッション表２２９を参照し、変換前のタイムスタンプ値及びシーケンス番号に戻して送信元端末にパケットを送信する。変換前のタイムスタンプ値及びシーケンス番号に戻すために、例えば、パケットのアドレス及びポートと、セッション表２２９の変換後アドレス及び変換後ポートとが照合される。
【００４６】
セッション表２２９には、セッション毎に、送信元端末の変換前後のアドレスと、変換前後のタイムスタンプ値及びシーケンス番号が格納されており、例えば、送信元端末１０１又は１０２の変換前アドレス、変換前ポート、変換前タイムスタンプ値、変換前シーケンス番号、変換後アドレス、変換後ポート、変換後タイムスタンプ値、変換後シーケンス番号、通信先端末３００の通信先アドレス、通信先ポート及びプロトコル種別が格納される。なお、RFC1323 PAWSの動作を実現するためのセッション毎のタイムスタンプ値及びシーケンス番号の最大値には、セッション表２２９の変換前タイムスタンプ値が用いられてもよい。
【００４７】
＜第１実施例：装置の動作＞
図４に、本発明の第１実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図を示す。図４において、タイムスタンプ値をTSで示す。
【００４８】
例えば、ネットワークアドレス変換装置２２０において、使用可能なポート数が５０に制限されているものとする。更に、送信元端末１０１又は１０２がリモートホスト（通信先端末）３００から情報を取得するために１００のポートが必要であるものとする。このような前提で、送信元端末１０１がリモートホスト３００と通信を実施し、ネットワークアドレス変換装置２２０の５０ポートを使いつくしたとする。
【００４９】
ネットワークアドレス変換装置２２０は、セッション終了時にリモートホスト３００からFIN+ACKパケットを受信すると（Ｓ１２１）、アドレス変換部２２７においてアドレスを変換し、送信元端末１０１にFIN+ACKパケットを送信する（Ｓ１２３）。ネットワークアドレス変換装置２２０は、FIN+ACKパケットに対して送信元端末１０１からACKパケットを受信すると（Ｓ１２５）、アドレス変換部２２７においてアドレスを変換し、リモートホスト３００にACKパケットを送信する（Ｓ１２７）。このとき、ネットワークアドレス変換装置２２０は、ACKパケットのタイムスタンプ値（TS:500）を最大値保持部２３１に保持すると共に、セッション割当部２２５において、セッションをTIME_WAIT状態にする。
【００５０】
ネットワークアドレス変換装置２２０は、グローバル側に使用可能なポートが存在しない状況で送信元端末１０２から新たにSYNパケットを受信すると（Ｓ１２９）、セッション割当部２２５において、受信したSYNパケットのタイムスタンプ値（TS:100）が、最大値保持部２３１に保持されたタイムスタンプ値（TS:500）より大きくなるように、SYNパケットのタイムスタンプ値を変換する（TS:501）。変換前後のタイムスタンプ値（TS:100及びTS:501）は、セッション表２２９に格納される。その結果、受信したSYNパケットのタイムスタンプ値（TS:501）が最大値保持部２３１に保持されたタイムスタンプ値（TS:500）より大きくなるため、ネットワークアドレス変換装置２００は、セッション割当部２２５において、TIME_WAIT状態のセッションを終了し、送信元端末１０２に新たなセッションを割り当てる。そして、ネットワークアドレス変換装置２２０は、アドレス変換部２２７においてアドレスを変換し、リモートホスト３００にSYNパケットを送信する（Ｓ１３１）。このSYNパケットのタイムスタンプ値（SYN:501）は、最大値保持部２３１に保持される。
【００５１】
図４ではタイムスタンプ値のみが考慮されているが、シーケンス番号を考慮した場合も同様に動作する。また、ネットワークアドレス変換装置２２０はリモートホスト３００からFIN+ACKパケットを受信しているが、送信元端末１０１からFIN+ACKパケットを受信する場合も同様に動作する。
【００５２】
図５に、本発明の第１実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャートを示す。
【００５３】
まず、ネットワークアドレス変換装置２２０配下の端末が通信を実施した場合（Ｓ２２１）、ネットワークアドレス変換装置２２０のグローバル側に使用可能なポートが使いつくされたかが判断される（Ｓ２２３）。使用可能なポートが存在する場合、SYNパケットを送信した端末に新たなセッションが割り当てられる（Ｓ２２５）。
【００５４】
使用可能なポートが存在しない場合、ネットワークアドレス変換装置２２０配下に複数の端末が存在するかが判断される（Ｓ２２７）。複数の端末が存在しない場合、タイムスタンプ値及びシーケンス番号は単調増加すると考えられるため、同じ端末のTIME_WAIT状態のセッションを終了し、同じ端末に新たなセッションを割り当てる（Ｓ２２９）。複数の端末が存在する場合、図４を参照して説明した通り、タイムスタンプ値及びシーケンス番号を変換し（Ｓ２３１）、TIME_WAIT状態のセッションを終了し、新たなセッションを割り当てる（Ｓ２３３）。ただし、特定のセッションについてタイムスタンプ値及びシーケンス番号が減少している場合、旧セッションで発生した古いパケットが新セッションに混入する可能性があるため、パケットを破棄する。
【００５５】
＜第２実施例：装置の構成＞
図６に、本発明の第２実施例に係るネットワークアドレス変換装置２４０の概要図を示す。ネットワークアドレス変換装置２４０は、グローバルネットワーク送受信部２４１と、プライベートネットワーク送受信部２４３と、セッション割当部２４５と、アドレス変換部２４７と、セッション表２４９と、最大値保持部２５１とを有する。図６の各機能部は、図１の各機能部と対応しているため、以下では、異なる部分について説明する。
【００５６】
最大値保持部２５１は、送信元端末毎に、ネットワークアドレス変換装置２４０を通過したパケットのタイムスタンプ値及びシーケンス番号の最大値を保持する。
【００５７】
セッション割当部２４５は、送信元端末からSYNパケットを受信した場合、使用可能なポートに空きが存在するまで、セッションを割り当てた送信元端末とは異なる送信元端末からのSYNパケットを拒否する。このように、ネットワークアドレス変換装置２４０は、最初にアクセスした送信元端末からのタイムスタンプ値及びシーケンス番号のみを解析する。例えば、アクセスしている送信元端末は、送信元のアドレス（例えば、ＩＰ（Internet Protocol）アドレス又はＭＡＣ（Medium Access Control）アドレス）によって識別できる。セッション割当部２４５は、最初にアクセスした送信元端末の通信終了後に、別の送信元端末からのSYNパケットを受け付ける。
【００５８】
具体的には、セッション割当部２４５は、セッションを割り当てた送信元端末に着目して、送信元端末からのSYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２５１に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てる。上記のように、セッション割当部２４５は、グローバル側に使用可能なポートが存在しない状況でセッションを割り当てた送信元端末からSYNパケットを受信した場合、SYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２５１に保持されたタイムスタンプ値及びシーケンス番号の最大値より大きいか否かを判断し、大きい場合、TIME_WAIT状態のセッションを解放して、SYNパケットを送信した同じ送信元端末に対してそのセッションを割り当てる。
【００５９】
セッション割当部２４５は、セッションを割り当てた送信元端末からのパケット受信が終了し、使用可能なポートに空きがあることを判断すると、ネットワークアドレス変換装置２４０は、新たなセッションを受け付けることができる。この状態で異なる送信元端末からSYNパケットを受信した場合、セッション割当部２４５は、異なる送信元端末にセッションを割り当てる。その後、セッション割当部２４５は、セッションを割り当てた異なる送信元端末に着目して、SYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２５１に保持された最大値より大きいか否かに基づいて、送信元端末にセッションを割り当てる。
【００６０】
＜第２実施例：装置の動作＞
図７に、本発明の第２実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図を示す。図７において、タイムスタンプ値をTSで示す。
【００６１】
例えば、ネットワークアドレス変換装置２４０において、使用可能なポート数が５０に制限されているものとする。更に、送信元端末１０１又は１０２がリモートホスト（通信先端末）３００から情報を取得するために１００のポートが必要であるものとする。このような前提で、送信元端末１０１がリモートホスト３００と通信を実施し、ネットワークアドレス変換装置２４０の５０ポートを使いつくしたとする。
【００６２】
ネットワークアドレス変換装置２４０は、セッション終了時にリモートホスト３００からFIN+ACKパケットを受信すると（Ｓ１４１）、アドレス変換部２４７においてアドレスを変換し、送信元端末１０１にFIN+ACKパケットを送信する（Ｓ１４３）。ネットワークアドレス変換装置２４０は、FIN+ACKパケットに対して送信元端末１０１からACKパケットを受信すると（Ｓ１４５）、アドレス変換部２４７においてアドレスを変換し、リモートホスト３００にACKパケットを送信する（Ｓ１４７）。このとき、ネットワークアドレス変換装置２４０は、ACKパケットのタイムスタンプ値（TS:500）を最大値保持部２５１に保持すると共に、セッション割当部２４５において、セッションをTIME_WAIT状態にする。
【００６３】
ネットワークアドレス変換装置２４０は、グローバル側に使用可能なポートが存在しない状況で送信元端末１０１から新たにSYNパケットを受信すると（Ｓ１４９）、同じ送信元端末１０１からのSYNパケットであるため、セッション割当部２４５において、TIME_WAIT状態のセッションを終了し、送信元端末１０１に新たなセッションを割り当てる。そして、ネットワークアドレス変換装置２４０は、SYNパケットのタイムスタンプ値（TS:600）を最大値保持部２５１に保持すると共に、アドレス変換部２４７においてアドレスを変換し、リモートホスト３００にSYNパケットを送信する（Ｓ１５１）。
【００６４】
一方、ネットワークアドレス変換装置２４０は、グローバル側に使用可能なポートが存在しない状況で異なる送信元端末１０２から新たにSYNパケットを受信すると（Ｓ１５３）、セッションを割り当てた送信元端末１０１とは異なる送信元端末１０２からのSYNパケットであるため、SYNパケットを拒否する。送信元端末１０２からのSYNパケットは、送信元端末１０１の通信が終了し、使用可能なポートに空きが存在する場合に受け付けられる。
【００６５】
図７ではタイムスタンプ値のみが考慮されているが、シーケンス番号を考慮した場合も同様に動作する。また、ネットワークアドレス変換装置２４０はリモートホスト３００からFIN+ACKパケットを受信しているが、送信元端末１０１からFIN+ACKパケットを受信する場合も同様に動作する。
【００６６】
図８に、本発明の第２実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャートを示す。
【００６７】
まず、ネットワークアドレス変換装置２４０配下の端末が通信を実施した場合（Ｓ２４１）、ネットワークアドレス変換装置２４０のグローバル側に使用可能なポートが使いつくされたかが判断される（Ｓ２４３）。使用可能なポートが存在する場合、SYNパケットを送信した端末に新たなセッションが割り当てられる（Ｓ２４５）。
【００６８】
使用可能なポートが存在しない場合、ネットワークアドレス変換装置２４０配下にアクセスしている端末であるかが判断される（Ｓ２４７）。異なる端末からSYNパケットが送信された場合、セッションは割り当てられない（Ｓ２４９）。同じ端末からSYNパケットが送信された場合、同じ端末のTIME_WAIT状態のセッションを終了し、同じ端末に新たなセッションを割り当てる（Ｓ２５１）。ただし、特定のセッションについてタイムスタンプ値及びシーケンス番号が減少している場合、旧セッションで発生した古いパケットが新セッションに混入する可能性があるため、パケットを破棄する。
【００６９】
＜第３実施例：装置の構成＞
図９に、本発明の第３実施例に係るネットワークアドレス変換装置２６０の概要図を示す。ネットワークアドレス変換装置２６０は、グローバルネットワーク送受信部２６１と、プライベートネットワーク送受信部２６３と、セッション割当部２６５と、アドレス変換部２６７と、セッション表２６９と、最大値保持部２７１と、ポート割当部２７３とを有する。図９の各機能部は、図１の各機能部と対応しているため、以下では、異なる部分について説明する。
【００７０】
最大値保持部２７１は、送信元端末毎に、ネットワークアドレス変換装置２６０を通過したパケットのタイムスタンプ値及びシーケンス番号の最大値を保持する。
【００７１】
ポート割当部２７３は、送信元端末に使用可能なポートを割り当てる。ポート割当部２７３は、例えば、送信元端末に均等にポートを割り当てるルール、トラヒック量に応じてポートを割り当てるルール、優先度を使用してポートを割り当てるルール等の割当ルールを生成し、割当ルールに従ってポートを割り当てる。ポートは、手動で割り当てられてもよい。
【００７２】
セッション割当部２６５は、ポート割当部２７３で割り当てられた範囲で、送信元端末にセッションを割り当てる。具体的には、セッション割当部２６５は、送信元端末からのSYNパケットのタイムスタンプ値又はシーケンス番号が最大値保持部２７１に保持された当該送信元端末に関する最大値より大きいか否かに基づいて、ポート割当部２７３で割り当てられたポートの範囲で、送信元端末にセッションを割り当てる。上記のように、セッション割当部２６５は、送信元端末に割り当てられたポートの範囲内に使用可能なポートが存在しない状況でSYNパケットを受信した場合、SYNパケットのタイムスタンプ値及びシーケンス番号が最大値保持部２７１に保持されたタイムスタンプ値及びシーケンス番号の最大値より大きいか否かを判断し、大きい場合、同じ送信元端末のTIME_WAIT状態のセッションを解放して、同じ送信元端末に対してそのセッションを割り当てる。
【００７３】
＜第３実施例：装置の動作＞
図１０に、本発明の第３実施例に係る通信ネットワークにおけるセッション割当方法のシーケンス図を示す。図１０において、タイムスタンプ値をTSで示す。
【００７４】
例えば、ネットワークアドレス変換装置２６０において、使用可能なポート数が５０に制限されているものとする。更に、送信元端末１０１又は１０２がリモートホスト（通信先端末）３００から情報を取得するために１００のポートが必要であるものとする。
【００７５】
ネットワークアドレス変換装置２６０は、端末１０１と端末１０２とが配下に存在することを手動設定又はＵＰｎＰ（Universal Plug and Play）を用いて認識する。ネットワークアドレス変換装置２６０は、ポート割当部２７３において、例えば端末１０１にポート100〜119を割り当て、端末１０２にポート120〜150を割り当てる。
【００７６】
ネットワークアドレス変換装置２６０は、セッション終了時にリモートホスト３００からFIN+ACKパケットを受信すると（Ｓ１６１）、アドレス変換部２６７においてアドレスを変換し、送信元端末１０１にFIN+ACKパケットを送信する（Ｓ１６３）。ネットワークアドレス変換装置２６０は、FIN+ACKパケットに対して送信元端末１０１からACKパケットを受信すると（Ｓ１６５）、アドレス変換部２６７においてアドレスを変換し、リモートホスト３００にACKパケットを送信する（Ｓ１６７）。このとき、ネットワークアドレス変換装置２６０は、ACKパケットのタイムスタンプ値（TS:500）を最大値保持部２７１に保持すると共に、セッション割当部２６５において、セッションをTIME_WAIT状態にする。
【００７７】
ネットワークアドレス変換装置２６０は、送信元端末１０１に割り当てられたポートの範囲内に使用可能なポートが存在しない状況で送信元端末１０１から新たにSYNパケットを受信すると（Ｓ１６９）、セッション割当部２４５において、送信元端末１０１に割り当てられたポートの範囲内でTIME_WAIT状態のセッションを終了し、送信元端末１０１に新たなセッションを割り当てる。そして、ネットワークアドレス変換装置２６０は、SYNパケットのタイムスタンプ値（TS:600）を最大値保持部２７１に保持すると共に、アドレス変換部２６７においてアドレスを変換し、リモートホスト３００にSYNパケットを送信する（Ｓ１７１）。
【００７８】
一方、ネットワークアドレス変換装置２６０は、異なる送信元端末１０２から新たにSYNパケットを受信すると（Ｓ１７３）、異なる送信元端末１０２に割り当てられたポートの範囲内で、上記の通り、セッションを割り当てる（Ｓ１７３、Ｓ１７５）。
【００７９】
図１０ではタイムスタンプ値のみが考慮されているが、シーケンス番号を考慮した場合も同様に動作する。また、ネットワークアドレス変換装置２６０はリモートホスト３００からFIN+ACKパケットを受信しているが、送信元端末１０１からFIN+ACKパケットを受信する場合も同様に動作する。
【００８０】
図１１に、本発明の第３実施例に係るネットワークアドレス変換装置におけるセッション割当方法のフローチャートを示す。
【００８１】
まず、ネットワークアドレス変換装置２４０配下の端末が通信を実施した場合（Ｓ２６１）、端末に割り当てられたポートの範囲内で使用可能なポートが使いつくされたかが判断される（Ｓ２６３）。使用可能なポートが存在する場合、端末に割り当てられたポートの範囲内でSYNパケットを送信した端末に新たなセッションが割り当てられる（Ｓ２６５）。
【００８２】
端末に割り当てられたポートの範囲内で使用可能なポートが存在しない場合、同じ端末のTIME_WAIT状態のセッションを終了し、端末に割り当てられたポートの範囲内で端末に新たなセッションを割り当てる（Ｓ２６７）。ただし、特定のセッションについてタイムスタンプ値及びシーケンス番号が減少している場合、旧セッションで発生した古いパケットが新セッションに混入する可能性があるため、パケットを破棄する。
【００８３】
上記の実施例では、タイムスタンプ値及びシーケンス番号を用いて説明しているが、本発明は、タイムスタンプ値及びシーケンス番号の一方が用いられる場合にも適用可能である。
【００８４】
説明の便宜上、本発明の実施例に係る装置は機能的なブロック図を用いて説明しているが、本発明の実施例に係る装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。
【００８５】
説明の便宜上、本発明の実施例に係る方法は処理の流れを示すシーケンス図を用いて説明しているが、本発明の方法は、実施例に示す順序と異なる順序で実施されてもよい。
【００８６】
＜実施例の効果＞
本発明の実施例によれば、ネットワークアドレス変換装置のように複数の端末を収容する装置において、効率的にセッションを割り当てることが可能になる。特に、ネットワークアドレス変換装置は複数の端末を収容し、各々の端末がタイムスタンプ値及びシーケンス番号を用いることから、ネットワークアドレス変換装置においてタイムスタンプ値及びシーケンス番号を用いて効率的にセッションを割り当てることができる。
【００８７】
例えば、グローバルアドレスを共有するため使用可能なセッション数が制限され、通信速度や通信内容が制限されるネットワークにおいても、ネットワークアドレス変換装置においてRFC6191の動作を実現することにより、セッションの効率的な再利用が可能となる。また、通信の制約を軽減することができる。更に、旧セッションで発生した古いパケットが新セッションに混入する危険性についても、ネットワークアドレス変換装置においてRFC1323 PAWSの動作を実現することにより、対応可能となる。
【００８８】
本発明は、アドレス共有技術を利用するISP（Internet Service Provider）や企業へのネットワーク環境へ適用できる。
【００８９】
以上、効率的にセッションを割り当てるためのセッション割当装置及びセッション割当方法について説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【００９０】
１０１  送信元端末
１０２  送信元端末
２００  ネットワークアドレス変換装置
２０１  グローバルネットワーク送受信部
２０３  プライベートネットワーク送受信部
２０５  セッション割当部
２０７  アドレス変換部
２０９  セッション表
３００  通信先端末
【図１】
2014049901.tif 000003
【図２】
2014049901.tif 000004
【図３】
2014049901.tif 000005
【図４】
2014049901.tif 000006
【図５】
2014049901.tif 000007
【図６】
2014049901.tif 000008
【図７】
2014049901.tif 000009
【図８】
2014049901.tif 000010
【図９】
2014049901.tif 000011
【図１０】
2014049901.tif 000012
【図１１】
2014049901.tif 000013