(57)【特許請求の範囲】
【請求項１】
中央処理装置と、
少なくとも２以上のインターフェースと、
各インターフェースに付与されたインターフェースＩＰアドレスを記憶する記憶部と、
ソースＩＰアドレスに基づいて経路制御を行うための第１のルーティングテーブルと、
宛先ＩＰアドレスに基づいて経路制御を行うための第２のルーティングテーブルと、を備え、
前記中央処理装置は、１のインターフェースから受信した、転送対象となるパケットのソースＩＰアドレスをキーにして、前記第１のルーティングテーブルを検索し、前記インターフェースＩＰアドレスに対応する前記インターフェースを特定できる場合は、特定した前記インターフェースＩＰアドレスと前記インターフェースを用いて通信を行い、
前記インターフェースＩＰアドレスに対応する前記インターフェースを特定できない場合は、前記第２のルーティングテーブルと、１のインターフェースから受信した宛先ＩＰアドレスとに基づいて、特定した前記インターフェースＩＰアドレスと前記インターフェースを用いて通信を行う、
情報処理装置。
【請求項２】
前記第１のルーティングテーブルには、ＩＰアドレスグループのリンク情報を有し、
前記中央処理装置は、前記リンク情報に基づいて、前記インターフェースＩＰアドレスと対応する前記インターフェースを特定する、
請求項１に記載の情報処理装置。
【請求項３】
前記中央処理装置は、
前記ＩＰアドレスグループと他のＩＰアドレスグループとを、ＩＰアドレスを番号順に並べた場合に、いずれかのＩＰアドレスグループが上位若しくは下位にある、またはＩＰアドレスの範囲が広い若しくは狭い、と判断することができる、
請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置は、ＶＰＮサーバであり、
前記インターフェースは、ＶＰＮクライアントと接続されており、
前記通信はＶＰＮによる通信である、
請求項２に記載の情報処理装置。
【請求項５】
コンピュータを、
各インターフェースに付与されたインターフェースＩＰアドレスを記憶する記憶部と、
ソースＩＰアドレスに基づいて経路制御を行うための第１のルーティングテーブルと、少なくとも２以上のインターフェースのうち１のインターフェースから受信した、転送対象となるパケットのソースＩＰアドレスをキーにして前記第１のルーティングテーブルを検索し、前記インターフェースＩＰアドレスに対応する前記インターフェースを特定できる場合は、特定した前記インターフェースＩＰアドレスと前記インターフェースを用いて通信を行い、
前記インターフェースＩＰアドレスに対応する前記インターフェースを特定できない場合は、宛先ＩＰアドレスに基づいて経路制御を行うための第２のルーティングテーブルと、１のインターフェースから受信した宛先ＩＰアドレスとに基づいて、特定した前記インターフェースＩＰアドレスと前記インターフェースを用いて通信を行う通信部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）の通信を行うＶＰＮサーバとＶＰＮクライアントの間におけるルーティング処理に関し、特にＥｔｈｅｒｎｅｔフレームを利用したＶＰＮに関するルーティング処理に好適な技術に関する。
【背景技術】
【０００２】  近年、インターネットや通信事業者が持つネットワークを用いて端末間に仮想的な専用線を接続するＶＰＮ技術が普及している。ＶＰＮ技術には、公衆ネットワークとしてインターネットを利用するインターネットＶＰＮと、通信事業者が管理する専用のサービス網を用いて提供されるＶＰＮがある。【０００３】  インターネットＶＰＮには、ＶＰＮの構成に必要な暗号化、認証等の機能を備えたプロトコルをルータやファイアウォール機器に実装してＶＰＮを実現するＩＰｓｅｃ（ＩＰ  ｓｅｃｕｒｉｔｙ）と、ＳＳＬプロトコルを利用してＶＰＮを実現するＳＳＬ−ＶＰＮのなどがある。
また、通信事業者が管理する専用のサービス網を用いて提供されるＶＰＮには、ラベルとルーティングテーブルを用いたＭＰＬＳ（Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）によってＶＰＮを実現するＩＰ−ＶＰＮと、ＥａｔｈｅｒｎｅｔフレームにＶＬＡＮタグと呼ばれる情報を付加してＶＰＮを実現する広域Ｅｔｈｅｒｎｅｔなどがある（例えば、ＭＰＬＳについて特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許４１０９６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】  図１は、Ｅｔｈｅｒｎｅｔフレームを利用するＶＰＮのネットワークの構成を説明するための図である。
図２は、一般的な通信パケットの構造を示す図である。ここで、Ｅｔｈｅｒｎｅｔフレームは、図２に示す通り、ＭＡＣヘッダとＩＰパケットからなる。ＩＰパケットは、ＩＰヘッダとデータからなる。データはＴＣＰヘッダとデータ断片からなる。【０００６】  図１において、例えば端末５００Ｂから端末５００Ａに対してＶＰＮの通信を行う場合のＶＰＮセッションは、まずは端末ＢのＶＰＮクライアントＢからＶＰＮサーバ宛に作成される。その際、ＶＰＮセッションはＴＣＰヘッダ内のアドレスにおいて設定される。
設定されたＴＣＰヘッダ内のアドレスを用いて、ＶＰＮクライアントとＶＰＮサーバ間でＥｔｈｅｒｎｅｔフレームが送受信される。【０００７】  ところで、ＶＰＮの通信を行う端末６００Ａ乃至ＣのＶＰＮクライアント５００Ａ乃至Ｃがすべて同一のＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）のネットワーク内にあるとは限らない。このため、図１に示す通り、ＶＰＮサーバ１００はルータ２００Ａ乃至Ｃを介して複数のＩＳＰ３００Ａ乃至Ｃと接続する。【０００８】  図１におけるＶＰＮサーバ１００は、接続したＩＳＰから固定のＩＰアドレスが割り当てられている。具体的には、例えばＩＳＰＡ社３００ＡからはＩＰ−Ａ、ＩＳＰＢ社３００ＢからはＩＰ−Ｂ、ＩＳＰＣ社３００ＣからはＩＰ−Ｃがそれぞれ割り当てられる。
一方、図１におけるＶＰＮクライアント５００Ａ乃至ＣのＩＰアドレスは、ＩＳＰのネトワークに接続する際にＩＳＰから割り当てられて動的に決定される。【０００９】  ここで例えばＶＰＮクライアント５００ＢからＶＰＮサーバ１００を介してＶＰＮクライアント５００ＡにＶＰＮの通信を行う場合について説明する。
ＶＰＮクライアント５００ＢからＶＰＮサーバ１００へ送信されるパケットは、パケット内の宛先ＩＰアドレスとルータが持つ従来の一般的なルーティングテーブルに基づいて送信される。【００１０】  ＶＰＮサーバ１００は、ＶＰＮクライアント５００Ｂから受信したＥｔｈｅｒｎｅｔフレームをＶＰＮクライアント５００Ａに転送する際、受信したパケットのＭＡＣヘッダに記載されたＭＡＣアドレスに基づいて転送先となるＶＰＮクライアント５００Ａを決定する。
次に、決定したＶＰＮクライアント５００Ａをキーにして図３のＶＰＮセッションテーブルを検索して使用するＴＣＰ自側アドレスとＴＣＰクライアント側ＩＰアドレスを選択し、選択したＶＰＮクライアント５００Ａ宛にパケットを送信する。【００１１】  ＶＰＮサーバ１００が一社のＩＳＰのみに接続している場合には、ＶＰＮサーバは、ＶＰＮクライアントから受信したパケットを、転送先のＶＰＮクライアントに向けて、接続した一のＩＳＰに送信すれば足りる。
しかしＶＰＮサーバ１００が複数のＩＳＰに接続している場合は、いずれのＩＳＰに送信するかを含めて最適な転送先を選択する必要がある。転送先が不適の場合は、パケットが遠回りすることで通信品質が劣化する場合や、転送先のＶＰＮクライアントにパケットが到達しない場合が起こりうるためである。【００１２】  従来の一般的なルーティングテーブルによって経路制御をする場合は、ルーティングテーブル内に宛先ＩＰアドレスの項目があるために経路制御できる宛先ＩＰアドレスのグループと、ルーティングテーブル内に宛先ＩＰアドレスの項目がないために経路制御できない宛先ＩＰアドレスのグループが存在していた。
このため、ＩＰパケットの宛先ＩＰアドレスが、経路制御の対象となる宛先ＩＰアドレスのグループに含まれていれば、そのグループに関連付けられた転送先ルータにＩＰパケットを転送する経路制御ができる。【００１３】  例えば、図１におけるＶＰＮクライアントＡ５００Ａの宛先ＩＰアドレスと、ＶＰＮサーバ１００に割り当てられたＩＰ−ＡのＩＰアドレスとがルーティングテーブル内に項目があり、同じ宛先ＩＰアドレスグループに属していれば、最適な転送先としてルータＡ２００Ａを選択することができる。【００１４】  しかし、ＩＳＰ内において経路制御の対象となるＩＰアドレスグループは細分化されており、同一のＩＳＰ内にも種々のＩＰアドレスグループが含まれている。このため、同じＩＳＰＡ社のネットワークに属している場合でも、ＩＳＰＡ社から割り当てられたＩＰ−ＡのＩＰアドレスと、ＶＰＮクライアントＡ５００Ａに割り当てられたＩＰアドレスとは同じＩＰアドレスグループに属しない場合が多い。【００１５】  ＩＰパケットの宛先ＩＰアドレスが、経路制御の対象となる宛先ＩＰアドレスのグループに含まれていない場合は、最適な転送先とは限らないデフォルト経路と呼ばれるＩＳＰ宛にパケットを一律に送信することになり、経路制御されずにパケットが送信されてしまうことによって通信時間が遅れる問題があった。【００１６】  このような経路制御の対象となる宛先ＩＰアドレスの項目がないために経路制御できない場合の対策として、例えば図４のように、接続されたＶＰＮクライアントのＩＰアドレスと同数の項目を有するルーティングテーブルを動的に作成する必要がある。
しかし、宛先ＩＰアドレスと同数の項目を備えてルーティングテーブルを作成することは、管理運用のコストが嵩むことに加えて、規模拡張性に欠くという問題がある。【００１７】  そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、従来の一般的なルーティングテーブルでは選択できない最適な転送先を選択することが可能な、新規かつ改良された情報処理装置、プログラム、情報処理方法および情報処理システムを提供することにある。
【課題を解決するための手段】
【００１８】  中央処理装置と、少なくとも２以上のインターフェースと、各インターフェース毎に付与されたインターフェースＩＰアドレスを記憶する記憶部と、ソースＩＰアドレスに基づいて経路制御を行うための第１のルーティングテーブルと、宛先ＩＰアドレスに基づいて経路制御を行うための第２のルーティングテーブルと、を備え、
前記中央処理装置は、前記第１のルーティングテーブルと、１のインターフェースから受信したソースＩＰアドレスとに基づいて、前記ソースＩＰアドレスに対応する前記インターフェースを特定できる場合は、特定した前記ソースＩＰアドレスと前記インターフェースを用いて通信を行い、
前記インターフェースのＩＰアドレスと対応する前記インターフェースを特定できない場合は、前記第２のルーティングテーブルと、１のインターフェースから受信した宛先ＩＰアドレスとに基づいて、特定した前記宛先ＩＰアドレスと前記インターフェースを用いて通信を行う、情報処理装置。【００１９】  前記第１のルーティングテーブルには、ＩＰアドレスの番号が上位若しくは下位の位置となる、またはＩＰアドレスの範囲が広い若しくは狭い、ＩＰアドレスグループのリンク情報を有し、前記中央処理装置は、前記第１のルーティングテーブルの前記リンク情報に基づき、前記インターフェースＩＰアドレスと対応する前記インターフェースを特定する。
また、前記情報処理装置は、ＶＰＮサーバであり、前記インターフェースは、ＶＰＮクライアントと接続されており、前記通信はＶＰＮによる通信である。
【発明の効果】
【００２０】  以上説明したように本発明によれば、宛先ＩＰアドレスのみによるＩＰルーティングテーブルでは選択できない最適な転送先をソースＩＰアドレスを用いることによって特定することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態に係るネットワークの構成を説明するための説明図である。
【図２】Ｅｔｈｅｒｎｅｔフレームの構造を示すための説明図である。
【図３】ＶＰＮセッションテーブルを示すための説明図である。
【図４】宛先ＩＰアドレスによるＩＰルーティングテーブルを示す説明図である。
【図５】ＶＰＮサーバの概略構成を示すブロック図である。
【図６】ＶＰＮサーバのソースアドレスＩＰルーティングテーブルの構成を説明するための説明図である。
【図７】ルータの概略構成を示すブロック図である。
【図８】ＶＰＮクライアントの概略構成を示すブロック図である。
【図９】ＶＰＮサーバのパケット転送処理のフロー図である。
【図１０】ソースＩＰアドレスルーティングテーブルの構造を示す構造図である。
【図１１】ソースＩＰアドレスルーティングテーブルのエントリ例を示す説明図である。
【図１２】ＩＰアドレスを番号順に並べたＩＰアドレス空間におけるＩＰアドレスブロックを示す構造図である。
【図１３】ソースＩＰアドレスルーティングテーブルの最適なエントリ探索処理のフロー図である。
【図１４】図１３の探索ループの詳細なフロー図である。
【図１５】ソースＩＰアドレスルーティングテーブルの最適なエントリ探索処理の第２の実施例を示すフロー図である。
【図１６】図１５の探索ループの詳細なフロー図である。
【図１７】エントリ探索回数を示す説明図である。
【図１８】本願におけるＶＰＮセッションで用いられるパケットの構造を示すための説明図である。
【発明を実施するための形態】
【００２２】  以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２３】  なお、説明は以下の順序で行うものとする。
１．本発明の実施の形態に係るネットワーク構成
２．ＶＰＮサーバのパケット転送処理のフロー例
３．ソースＩＰアドレスルーティングテーブルの例
４．最適候補エントリの探索処理フロー例
５．最適候補エントリの探索処理フローの第２の実施例
【００２４】  ［本発明の実施の形態に係るネットワーク構成］
まず、本発明の実施の形態に係るネットワーク構成について説明する。図１は本実施の形態に係るネットワークの構成を説明するための説明図である。
【００２５】  図１において、ＶＰＮサーバ１００は、ルータＡ２００Ａ乃至ルータＣ２００Ｃ、ＩＳＰＡ社３００Ａ乃至ＩＳＰＣ社３００Ｃ、ルータＤ４００Ａ乃至ルータＦ４００Ｃ、ＶＰＮクライアントＡ５００Ａ乃至ＶＰＮクライアントＣ５００Ｃを介して、端末６００Ａ乃至端末６００Ｃと接続されている。各機器間は、例えばイーサネットケーブルによって接続されている。
【００２６】  次に図１におけるＶＰＮサーバ１００、ルータＡ２００Ａ乃至ルータＣ２００Ｃ、ＶＰＮクライアントＡ５００Ａ乃至ＶＰＮクライアントＣ５００Ｃの概略構成について説明する。
【００２７】  図５は、ＶＰＮサーバの概略構成を示すブロック図である。
ＶＰＮサーバ１００は、図５に示す通り、ＣＰＵ１０１、ＶＰＮセッションテーブル１０２、ソースＩＰアドレスルーティングテーブル１０３、宛先アドレスによるＩＰルーティングテーブル１０４、インターフェースＡ１０５、Ｂ１０６、Ｃ１０７、記憶部１０８からなる。
【００２８】  ＣＰＵ１０１は、ＶＰＮサーバ内の各ブロックの処理の制御を行う。
【００２９】  ＶＰＮセッションテーブル１０２は、ＶＰＮサーバがＶＰＮクライアントにパケットを送信する際にＶＰＮセッションを決定するために用いるテーブルである。具体的には、先に図３について説明した通りである。
【００３０】  図６は、ＶＰＮサーバのソースアドレスＩＰルーティングテーブルの構成を説明するための説明図である。
ソースＩＰアドレスルーティングテーブル１０３は、図６に示す通り、ソースＩＰアドレス、転送先ルータ、使用インターフェースの項目を有し、事前にＩＳＰＡ乃至ＩＳＰＣから割り当てられたソースＩＰアドレスと、転送先ルータ及び使用するインターフェースを一組として管理する。
ＶＰＮサーバのＣＰＵ１０１は、いずれかのインターフェースで受信した転送対象となるパケットのソース（送信元）ＩＰアドレスをキーにしてソースＩＰアドレスルーティングテーブル１０３を検索し、転送先ルータと使用するインターフェースを決定する。このテーブルの詳細については後述する。
ソースＩＰアドレスには、事前にＩＳＰＡ乃至Ｃから割り当てられた固定ＩＰアドレスが使用される。このため、ソースＩＰアドレスルーティングテーブルの項目数は、接続するＩＳＰの数で足り、接続するＶＰＮクライアントの数と同数の項目を持つ必要がない。また、このテーブルは、例えばＶＰＮサーバの起動時に設定することにしてもよい。
【００３１】  宛先ＩＰアドレスによるＩＰルーティングテーブルは、先に図４について説明した通り、宛先ＩＰアドレス、転送先ルータ、使用インターフェースの項目を有し、これらを一組として管理する。
【００３２】  インターフェースＡ１０５乃至Ｃ１０７は、ＩＳＰ毎に割り当てられて他の機器と接続され、パケットの送受信を行う。
【００３３】  記憶部１０８はＶＰＮの通信に必要な暗号化、メッセージ認証、接続先認証等の情報を記憶する。
【００３４】  図７は、ルータの概略構成を示すブロック図である。
ルータ２００Ａ乃至２００Ｃは、図７に示す通り、ＣＰＵ２０１と、ルーティングテーブル２０２とインターフェース２０３、２０４からなる。
なお、ルータ４００Ａ乃至４００Ｃは、ルータ２００Ａ乃至２００Ｃと実質的に同一の機能構成であるため説明を省略する。
【００３４】  ＣＰＵ２０１は、ルーティングテーブル２０２に基づいてパケットの中継先を判断し、判断された中継先へのパケットの送受信を制御する。
【００３５】  ルーティングテーブル２０２は、パケットの中継先が登録されたテーブルである。
【００３６】  インターフェース２０３、２０４は、他の機器と接続され、パケットの送受信を行う。
【００３７】  図８は、ＶＰＮクライアントの概略構成を示すブロック図である
ＶＰＮクライアント５００Ａ乃至５００Ｃは、図８に示す通り、ＣＰＵ５０１、記憶部５０２、インターフェース５０３、５０４からなる。
【００３８】  ［ＶＰＮサーバのパケット転送処理フロー例］
次に、本発明のＶＰＮサーバのパケット転送処理フローについて説明する。図９は、ＶＰＮサーバのパケット転送処理のフロー図である。
【００３９】  ＶＰＮサーバ１００のいずれかのインターフェースが、ＶＰＮクライアントからのＥｔｈｅｒｎｅｔフレームの転送要求を受信する（Ｓ７０２）。
ＶＰＮサーバ１００のＣＰＵ１０１が、受信したパケットのＭＡＣヘッダに記載されたＭＡＣアドレスに基づいて転送先ＶＰＮクライアントを決定する（Ｓ７０４）。
ＶＰＮサーバ１００のＣＰＵ１０１が、決定した転送先ＶＰＮクライアントをＶＰＮセッションテーブル１０２に参照し、ＴＣＰの自側アドレスを決定する（Ｓ７０６）。
【００４０】  次にＶＰＮサーバ１００のＣＰＵ１０１は、決定したＴＣＰの自側アドレスをキーにしてソースＩＰアドレスルーティングテーブル１０３を検索し、テーブルに存在するか否かを確認する（Ｓ７０８）。
ＴＣＰ自側アドレスがソースＩＰアドレスルーティングテーブル１０３に存在する場合は、ソースＩＰアドレスルーティングテーブルから転送先ルータ及び使用インターフェースを決定する（Ｓ７１０）。
ＴＣＰ自側アドレスがソースＩＰアドレスルーティングテーブル１０３に存在しない場合は、宛先アドレスによるＩＰルーティングテーブルから転送先ルータ及び使用インターフェースを決定する（Ｓ７１２）。
【００４１】  ＶＰＮサーバ１００のＣＰＵ１０１は、決定したインターフェースを使用して、決定した転送先ルータに対してパケットを送信する（Ｓ７１４）。
【００４２】  上記の通り、例えばＶＰＮクライアント５００ＢがＶＰＮサーバ１００のいずれのＩＰアドレスに接続してきたか（いずれのＩＳＰを経由して送信してきたか）に応じて、ＶＰＮサーバ１００が、ＶＰＮクライアント５００Ａに転送するために最適な転送先ルータ２００を選択する。これによって、通信経路を最短にして応答時間を短縮し、通信条件を改善することができる。
また、ソースＩＰアドレスルーティングテーブル１０３と宛先アドレスを使用したルーティングテーブル１０４の双方を用いることで、宛先アドレスを使用したルーティングテーブル１０４のみを用いて処理する場合に比較して、最適な転送先の選択に使用するテーブルの項目数を少なくすることができる。
【００４３】  ［ソースＩＰアドレスルーティングテーブルの例］
図１０は、ソースＩＰアドレスルーティングテーブル１０３の構造を示す構造図である。ソースＩＰアドレスルーティングテーブル１０３は、先に図６において説明した通り、
ソースＩＰアドレス、転送先ルータ、使用インターフェースの項目を有するテーブルである。しかし、より詳細には、図１０に示す通り、各項目がツリー構造を模したリンク付きリストである。
【００４４】  図１１は、ソースＩＰアドレスルーティングテーブル１０３の各構成要素を示す説明図である。
より詳細には、ソースＩＰアドレスルーティングテーブル１０３の各構成要素は、ＩＰアドレスプレフィックス、ネットマスク、使用インターフェース、転送先ルータ、ｎｅｘｔ、ｃｈｉｌｄからなる。
【００４５】  ＩＰアドレスプレフィックスは、ＩＰアドレスのプレフィックス部分である。また、ネットマスクは、ＩＰアドレスのネットマスク部分である。
「プレフィックス」及び「ネットマスク」は、ＩＰアドレスブロックの範囲を示している。
３２ｂｉｔで構成されるＩＰアドレスは、アドレスをグループに分割して扱う場合に、一般に「プレフィックス」と呼ばれる部分と「ネットマスク」と呼ばれる部分で表現される。すなわち、あるＩＰアドレスに対して「ネットマスク」とのＡＮＤ演算を行い、その結果が「プレフィックス」と一致する場合、そのＩＰアドレスは当該プレフィックスとネットマスクで表現される。
例えば、図１１のＩＰアドレスのグループには、例えば、１９２．１６８．１．１や１９２．１６８．１．２５０等のＩＰアドレスが含まれる。ネットマスク２５５．２５５．２５５．０とＡＮＤ演算を行うといずれも１９２．１６８．１．０となってプレフィックスと一致するためである。一方、例えば１７２．１６．２５０．１等のＩＰアドレスは、ＡＮＤ演算結果がプレフィックスと一致しないため、ＩＰアドレスのグループには含まれない。
【００４６】  使用インターフェースは、パケットを転送するインターフェース名である。また、転送先ルータは、パケットの転送先となるルータのＩＰアドレスである。
【００４７】  ｎｅｘｔは、次のＩＰアドレスプレフィックスを持つエントリへのリンクである。ｎｅｘｔでリンクするエントリは、範囲が異なる前後のＩＰアドレスグループを指す。
一方、ｃｈｉｌｄは、より小さいＩＰアドレスプレフィックスを持つエントリへのリンクである。
ｃｈｉｌｄでリンクするエントリは、さらに狭い範囲のＩＰアドレスグループを指す。
【００４８】  図１２は、ＩＰアドレス空間において、例えば０．０．０．０から２５５．２５５．２５５．２５５までの全体のＩＰアドレスを順に並べた場合の構造図であり、ＩＰアドレス空間の全体の中における、それぞれのＩＰアドレスグループの位置関係の例を示すものである。
図１０に示したエントリ▲１▼、▲３▼及び▲７▼とエントリ▲４▼及び▲５▼はｎｅｘｔの関係にある。これはＩＰアドレスの範囲が異なり、ＩＰアドレスを番号順に並べた際、前後のＩＰアドレスグループに位置することになる。
一方、エントリ▲１▼のｃｈｉｌｄでリンクするエントリ▲２▼、エントリ▲３▼のｃｈｉｌｄでリンクするエントリ▲４▼、エントリ▲５▼のｃｈｉｌｄでリンクするエントリ▲６▼は、ＩＰアドレスを番号順に並べた際、より狭い範囲のＩＰアドレスグループに位置することになる。
【００４９】  ［最適候補エントリの探索処理フロー例］
ソースＩＰアドレスルーティングテーブル１０３を用いてＩＰパケットを転送する場合は、ＩＰパケットのソースアドレスが、テーブルを構成するどのエントリに含まれているかを判断し、そのエントリに記載されている転送先ルータおよび使用インターフェースを使用する。
ここで、ＩＰアドレスグループは、図１２に示す通り階層構造を持つため、一のＩＰアドレスに対する最適なエントリとは、そのＩＰアドレスが属しうるグループで最も範囲が狭いものとなる。
【００５０】  図１０の構造から最適なエントリを選択するために、ソースＩＰアドレスルーティングテーブルを参照し、「最適候補エントリ」及び「現在エントリ」の二つの変数を用いて図１３及び図１４の処理を行う。
【００５１】  次に、本発明のＶＰＮサーバの最適なエントリ探索処理フローについて説明する。
図１３は、ソースＩＰアドレスルーティングテーブル１０３の最適なエントリ探索処理のフロー図である。
【００５２】  ＶＰＮサーバ１００のＣＰＵ１０１は、受信したパケットからソースＩＰアドレスを抽出する（Ｓ８０２）。
ＶＰＮサーバ１００のＣＰＵ１０１は、変数である最適候補エントリを初期化する（Ｓ８０４）。
ＶＰＮサーバ１００のＣＰＵ１０１は、変数である現在エントリをｒｏｏｔエントリのｃｈｉｌｄに設定する（Ｓ８０６）。
変数である最適候補エントリの初期化と、同じく変数である現在エントリの設定を終えた後、ＶＰＮサーバ１００のＣＰＵ１０１は、探索ループ処理を行う（Ｓ８０８）。当該処理の詳細は図１４で説明する。
【００５３】  探索ループ処理の結果、ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリが存在するか否かを判断する（Ｓ８１０）。
最適候補エントリが存在する場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、存在する最適候補エントリを転送先に設定する（Ｓ８１２）。
最適候補エントリが存在しない場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、転送先が存在しないと判断して処理を終える（Ｓ８１４）。
【００５４】  図１４は、図１３の探索ループ（Ｓ８０８）の詳細なフロー図である。以下に、探索ループ処理の詳細について説明する。
探索ループ処理のスタート（Ｓ９０２）の後、ＶＰＮサーバ１００のＣＰＵ１０１は、現在エントリのＩＰアドレスの範囲にパケットのＩＰアドレスが含まれるか否かを判断する（Ｓ９０４）。
現在エントリのＩＰアドレスの範囲にパケットのＩＰアドレスが含まれている場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、現在エントリを最適候補エントリとする（Ｓ９０６）。
【００５５】  次にＶＰＮサーバ１００のＣＰＵ１０１は、現在エントリのｃｈｉｌｄが存在するか否かを判断する（Ｓ９０８）。
現在エントリのｃｈｉｌｄが存在する場合は、現在エントリをそのｃｈｉｌｄに設定する（Ｓ９１０）。
現在エントリのＩＰアドレスの範囲にパケットのＩＰアドレスが含まれていない場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、現在エントリのｎｅｘｔが存在するか否かを判断する（Ｓ９１２）。
現在エントリのｎｅｘｔが存在する場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、現在エントリをそのｎｅｘｔへと設定する（Ｓ９１４）。
現在エントリのｎｅｘｔが存在しない場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、探索ループを終了する（Ｓ９１６）。
また、現在エントリのｃｈｉｌｄが存在しない場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、探索ループを終了する（Ｓ９１６）。
【００５５】  ［最適候補エントリの探索処理フローの第２の実施例］
図１５は、ソースＩＰアドレスルーティングテーブル１０２の最適候補エントリの探索処理の第２の実施例を示すフロー図である。
ＶＰＮサーバ１００のＣＰＵ１０１は、パケットからソースＩＰアドレスを抽出する（Ｓ１００２）。
ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリを初期化する（Ｓ１００４）。
変数である最適候補エントリの初期化を終えた後、ＶＰＮサーバ１００のＣＰＵ１０１は、探索ループ処理を行う（Ｓ１００６）。当該処理の詳細は図１６で説明する。
【００５６】  探索ループ処理の結果、ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリが存在するか否かを判断する（Ｓ１００８）。
最適候補エントリが存在する場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、存在する最適候補エントリを転送先に設定する（Ｓ１０１０）。
最適候補エントリが存在しない場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、転送先が存在しないと判断して処理を終える（Ｓ１０１２）。
【００５７】  図１６は、図１５の探索ループ（Ｓ１００６）の詳細なフロー図である。以下に、探索ループ処理の詳細について説明する。
【００５８】  探索ループ処理のスタート（Ｓ１１０２）の後、ＶＰＮサーバ１００のＣＰＵ１０１は、表の先頭エントリを走査対象とする。ここで表の先頭とは、ＩＰアドレスを番号順に並べたＩＰアドレス空間上にエントリを配置した場合に若い番号となるエントリの意味である。
【００５９】  ＶＰＮサーバ１００のＣＰＵ１０１は、走査対象となるエントリのＩＰアドレスの範囲に、パケットのＩＰアドレスが含まれるか否かを判断する（Ｓ１１０６）。
走査対象となるエントリのＩＰアドレスの範囲に、パケットのＩＰアドレスが含まれていない場合は、追って説明するＳ１１１６の処理を行う。
【００６０】  ＶＰＮサーバ１００のＣＰＵ１０１は、走査対象となるエントリのＩＰアドレスの範囲にパケットのＩＰアドレスが含まれる場合は、最適候補エントリが存在するか否かを判断する（Ｓ１１０８）。
【００６１】  ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリが存在する場合は、最適候補エントリと走査対象となるエントリのＩＰアドレスの範囲を比較し、最適候補エントリが走査対象エントリよりも狭い範囲か否かを判断する（Ｓ１１１０）。
最適候補エントリのＩＰアドレスの範囲が走査対象エントリのＩＰアドレスの範囲よりも狭い範囲ではない場合は、追って説明するＳ１１１６の処理を行う。
【００６２】  ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリのＩＰアドレスの範囲が走査対象エントリのＩＰアドレスの範囲よりも狭い範囲となる場合は、走査対象エントリを最適候補エントリに設定する（Ｓ１１１２）。
【００６３】  ＶＰＮサーバ１００のＣＰＵ１０１は、最適候補エントリが存在しなかった場合は、走査対象エントリを最適候補エントリに設定する（Ｓ１１１４）。
【００６４】  Ｓ１１０６において走査対象となるエントリのＩＰアドレスの範囲にパケットのＩＰアドレスが含まれていない場合、Ｓ１１１０において最適候補エントリのＩＰアドレスの範囲が走査対象エントリのＩＰアドレスの範囲よりも狭い範囲ではない場合、Ｓ１１１２において走査対象エントリを最適候補エントリに設定した場合、およびＳ１１１４において走査対象エントリを最適候補エントリに設定した場合は、ＶＰＮサーバ１００のＣＰＵ１０１は、走査対象が、ソースＩＰアドレスルーティングテーブルの表のＩＰアドレス順の末尾に達したか否かを判断する（Ｓ１１１６）。
【００６５】  ＶＰＮサーバ１００のＣＰＵ１０１は、走査対象が、ソースＩＰアドレスルーティングテーブルの表のＩＰアドレス順の末尾に達した場合は探索ループ処理を終了する（Ｓ１１１８）。
【００６６】  ＶＰＮサーバ１００のＣＰＵ１０１は、走査対象が、ソースＩＰアドレスルーティングテーブルの表のＩＰアドレス順の末尾に達していない場合は、次のエントリを走査対象とした後に（Ｓ１１２９）、Ｓ１１０６の判断を再度行う。
【００６７】  図１７は、エントリ走査回数を示す説明図である。具体的には、図１０のリンク構造を持つソースＩＰアドレスルーティングテーブルに対して、それぞれのエントリが選択されるまでに必要なエントリの走査回数、及びいずれのエントリも選択されないことが決まるまでに必要なエントリの走査回数を、本願方式によって処理する場合と、図１０のリンク構造を持たない単純なルーティングテーブルによって処理する場合とで計算結果を比較した図である。
【００６８】  図１８は、ＶＰＮサーバ１００とＶＰＮクライアントＡ乃至Ｃとの間でやりとりされるパケット構造を示すための説明図である。
【００６９】  本願では、図２に示した一般的なＥｔｈｅｒｎｅｔフレームのパケットを用いてＶＰＮの通信を行うことが可能である。しかし、より好適には、ＶＰＮクライアントがＶＰＮサーバに対してＶＰＮセッションを張る際に、一般的なＥｔｈｅｒｎｅｔフレームから図１８に示した構造からなるパケットを作成してＶＰＮの通信を行う。
【００７０】  ＩＰヘッダ７０１とＴＣＰヘッダ７０２は、ＶＰＮサーバとＶＰＮクライアントの間でＶＰＮの通信を行うために必要なＩＰアドレス等のデータを含むものである。
【００７１】  データ断片７０３は、ＶＰＮサーバとＶＰＮクライアントの間で運ばれるデータである。例えば、図２に示したＥａｔｈｅｒｎｅｔフレームがデータ断片となる場合もある。この場合は、ＩＰヘッダ７０１とＴＣＰヘッダ７０２のいずれか又は双方が、Ｅａｔｈｅｒｎｅｔフレーム内のＩＰヘッダ、ＴＣＰヘッダをそのまま用いていてもよい。
【００７２】  また、データ断片７０３は、Ｅａｔｈｅｒｎｅｔを用いた通信のデータであれば、ＩＰＸ、ＳＮＡ、ＦＮＡのいずれのデータでもよい。更に、宛先不定のブロードキャストデータであってもよい。
【００７３】  図９〜図１６の処理によれば、ＶＰＮサーバ１０１内のルーティングテーブルの効率的な構築が可能になるため、ルーティングテーブル走査の高速処理が可能となる。
また、ルーティングテーブルが小規模となるため、管理・運用のコストを安価とすることができる。
【００７４】  また、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【００７５】  この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７６】  また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、ネットワークを介してプログラムコードをダウンロードしてもよい。
【００７７】  また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【００７８】  さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【００７９】  以上、添付図面を参照しながら本発明の好適な実施の形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと解される。
【符号の説明】
【００８０】１００    ＶＰＮサーバ
１０１    ＣＰＵ
１０２    ＶＰＮセッションテーブル
１０３    ソースＩＰアドレスルーティングテーブル
１０４    宛先アドレスを使用したルーティングテーブル
１０５    インターフェースＡ
１０６    インターフェースＢ
１０７    インターフェースＣ
１０８    記憶部
２００    ルータ
２００Ａ  ルータＡ
２００Ｂ  ルータＢ
２００Ｃ  ルータＣ
２０１    ＣＰＵ
２０２    ルーティングテーブル
２０３    インターフェース
２０４    インターフェース
３００    ＩＳＰ
３００Ａ  ＩＳＰＡ
３００Ｂ  ＩＳＰＢ
３００Ｃ  ＩＳＰＣ
４００    ルータ
４００Ａ  ルータＤ
４００Ｂ  ルータＥ
４００Ｃ  ルータＦ
５００    ＶＰＮクライアント
５００Ａ  ＶＰＮクライアントＡ
５００Ｂ  ＶＰＮクライアントＢ
５００Ｃ  ＶＰＮクライアントＣ
５０１    ＣＰＵ
５０２    記憶部
５０３    インターフェース
５０４    インターフェース
６００    端末
６００Ａ  端末Ａ
６００Ｂ  端末Ｂ
６００Ｃ  端末Ｃ
７０１    ＩＰヘッダ
７０２    ＴＣＰヘッダ
７０３    データ断片
【図１】
0005589210.tif 000002
【図２】
0005589210.tif 000003
【図３】
0005589210.tif 000004
【図４】
0005589210.tif 000005
【図５】
0005589210.tif 000006
【図６】
0005589210.tif 000007
【図７】
0005589210.tif 000008
【図８】
0005589210.tif 000009
【図９】
0005589210.tif 000010
【図１０】
0005589210.tif 000011
【図１１】
0005589210.tif 000012
【図１２】
0005589210.tif 000013
【図１３】
0005589210.tif 000014
【図１４】
0005589210.tif 000015
【図１５】
0005589210.tif 000016
【図１６】
0005589210.tif 000017
【図１７】
0005589210.tif 000018
【図１８】
0005589210.tif 000019