(57)【要約】【課題】  同一のサービスを複数稼動させたとしても外部からは同一のサービスを同一の第１識別情報で識別可能なサービス提供装置および通信制御プログラムを提供することを目的とする。【解決手段】  インタフェース手段３０Ａ，３０Ｂと、同一のサービスを提供する処理手段１１Ａ，１１Ｂとを備えたサービス提供装置１であって、インタフェース手段を識別するアドレス情報，サービスを識別する第1識別情報および処理手段１１Ａ，１１Ｂを識別する第２識別情報を関連付けた変換テーブルと、変換テーブルに基づき、外部から受信したパケットの宛先を第１識別情報から第２識別情報に変換し、外部へ送信するパケットの送信元を第２識別情報から第１識別情報に変換する変換手段２３とを有することにより上記課題を解決する。【選択図】  図４
2006352567.tif 000002
【特許請求の範囲】
【請求項１】
複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置であって、
前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、
前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段と
を有するサービス提供装置。
【請求項２】
前記変換手段は、外部からのパケットを受信した前記インタフェース手段のアドレス情報と、前記パケットの宛先である前記第１識別情報とに関連付けられた前記第２識別情報を前記変換テーブルから読み出し、前記パケットの宛先を前記第２識別情報に変換することを特徴とする請求項１記載のサービス提供装置。
【請求項３】
前記変換手段は、前記パケットを外部へ送信する前記インタフェース手段のアドレス情報と、前記パケットの送信元である前記第２識別情報とに関連付けられた前記第１識別情報を前記変換テーブルから読み出し、前記パケットの送信元を前記第１識別情報に変換することを特徴とする請求項１又は２記載のサービス提供装置。
【請求項４】
前記処理手段はプロセスであり、
前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報は、重複しないように割り当てられたポート番号であることを特徴とする請求項１乃至３何れか一項記載のサービス提供装置。
【請求項５】
複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置として機能するコンピュータを、
前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、
前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段と
して機能させる為の通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス提供装置および通信制御プログラムに係り、特にネットワークを介してサービスを提供するサービス提供装置、外部とサービス提供装置との通信を制御する通信制御プログラムに関する。
【背景技術】
【０００２】
インターネットの普及に伴い、インターネットでは様々なサービスが提供されるようになってきている。例えばインターネット上でサービスを提供するＷｅｂサーバは、企業レベルで大規模に運用されるものから、個人レベルで小規模に運用されるものまで、様々な規模で運用されている。
【０００３】
インターネットでは、このようなＷｅｂサーバを利用したサービスを立ち上げたい利用者のため、ホスティングサービスとしてＷｅｂサーバ自体を提供するようなビジネスも存在する。そのような用途では、多数のＷｅｂサーバを低コストで同時稼動させることが重要である。
【０００４】
また、インターネットで提供するサービスやシステムを実際に運用する場合は、ネットワークを介して通信する相手を複数用意し、性能面や安定稼動の接続テストを事前に実施して動作検証することが重要となる。しかし、動作検証したい性能水準によっては稼動させるサービス、相手となるクライアントやシステムを多数用意する必要がある。例えば稼動させるサービス，相手となるクライアントやシステムの数だけコンピュータを使用する場合は、動作検証に多数のコンピュータが必要となる。
【０００５】
使用するコンピュータ数の増加は、低コストでサービスやシステムの運用を考えたい場合や動作検証で調達する機器数の増加を抑えたい場合に好ましくない。特に必要となる処理性能が低く、複数端末あるいは複数サービスを動作させる為に必要な性能が単一のコンピュータで足りる場合は、単一のコンピュータ上で稼動させることにより、少ない機器で所望の構成を実現したいというニーズがあった。例えばＷｅｂサーバの貸し出しを例にとれば、一つのコンピュータで複数のＷｅｂサーバを稼動させることにより、安価なサービスを利用者に提供できる。
【０００６】
また、インターネットを構成するルータを例にとれば、ルータは他のルータと経路情報を交換し合い、受信したパケットを何処に転送すれば目的地に着くかを計算し、その結果を経路テーブルに登録する。ルータは経路テーブルに従ってパケットの中継処理を行う。
【０００７】
従って、多数のルータと経路情報を交換し合い、運用するような用途のルータの動作検証や性能の妥当性を検証するには、複数のルータと経路情報を交換し合う系を構築する必要がある。一つのルータを一つの機器で構成すると、ルータの動作検証や性能の妥当性を検証する機器の構成は膨大となる。
【０００８】
ところで、通信相手となるルータはテスト目的に限定すれば、試験対象となるルータに対してルータとして振る舞えばよく、必ずしもルータそのものの機能を有していなくても良い。したがって、多くのルータの役割を一つの機器で構成できれば、ルータの動作検証や性能の妥当性を検証する機器の構成は大幅に簡略化できる。
【０００９】
例えば特許文献１には、一つのコンピュータ上で動作する複数のプロセスにおいてプロセス間通信を行なう内容が記載されている。
【特許文献１】特開平８−１０６４４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
通常、１つのコンピュータ（ＰＣ）から複数のサービスを提供する場合、サービスを提供するコンピュータとサービスの提供を受ける外部の機器とは、図１に示すように通信を行なう。図１は、サービスを提供するコンピュータとサービスの提供を受ける外部の機器との通信を表した一例の説明図である。
【００１１】
コンピュータ１は、複数のサービスを外部の機器に提供する装置である。ここでは、コンピュータ１上でサーバプロセス１０Ａ，１０Ｂが稼動している例を説明する。サービスの提供を受ける外部の機器は、提供を受けたいサービスに対応するコンピュータ１のウェルノウンポート（Ｗｅｌｌ−ｋｎｏｗｎ  Ｐｏｒｔ）番号宛てにパケットを送信する。
【００１２】
例えばサーバプロセス１０Ａの提供するサービスを受けたい場合、外部の機器はポート番号α宛てにパケットを送信する。また、サーバプロセス１０Ｂの提供するサービスを受けたい場合、外部の機器はポート番号β宛てにパケットを送信する。
【００１３】
外部の機器から送信されたパケットは、コンピュータ１のインタフェース３０を介してカーネル２０に受信される。カーネル２０に含まれるＴＣＰレイヤ処理部２２はパケットの宛先であるポート番号を参照し、そのポート番号で識別されるサーバプロセスにパケットを送信する。例えばパケットがポート番号α宛てであれば、ＴＣＰレイヤ処理部２２はパケットをサーバプロセス１０Ａに送信する。また、パケットがポート番号β宛てであれば、ＴＣＰレイヤ処理部２２はパケットをサーバプロセス１０Ｂに送信する。
【００１４】
図２は、サービスを提供するコンピュータとサービスの提供を受ける外部の機器との通信を表した他の例の説明図である。図２のコンピュータ１は２つのインタフェース３０Ａ及び３０Ｂを有する点で図１のコンピュータ１と異なる。
【００１５】
図２に示すように、異なるインタフェース３０Ａ，３０Ｂを介してカーネル２０に受信されても、宛先であるポート番号が同じパケットは、ＴＣＰレイヤ処理部２２によって
ポート番号で識別されるサーバプロセスに送信される。例えばポート番号α宛てのパケットであれば、インタフェース３０Ａを介して受信されてもインタフェース３０Ｂを介して受信されてもＴＣＰレイヤ処理部２２によってサーバプロセス１０Ａに送信される。
【００１６】
このようなサービスや処理系は、アプリケーションとして実装されているのが一般的である。例えばＵＮＩＸ（登録商標）やＬｉｎｕｘ（登録商標）といったマルチタスクのオペレーティングシステム（以下、ＯＳという）が稼動しているコンピュータであれば、複数のアプリケーションプログラムを同時に動作させることができる。
【００１７】
しかしながら、通信相手である外部の機器からの通信要求を待ち受け、コネクションを確立する処理において、コンピュータ１では複数のサービスを同時に動作させる為に以下のような問題が発生する。
【００１８】
すなわち、インターネットでの通信に用いられるＴＣＰ／ＩＰプロトコルでは、ノードに付与されたＩＰアドレス及びホストにおけるセッション識別子の意味を持つポート番号と通信相手のＩＰアドレス及びポート番号とで、通信のコネクションを識別する。サービスに対して接続要求を出す側の機器は、通信相手のＩＰアドレスおよびポート番号を指定することで、接続相手が何かを指定できる。これは、同一のコンピュータ１上で複数のプロセスが稼動されている場合に、どのプロセスと通信するかを識別する為である。
【００１９】
例えばＷｅｂサーバ等のサービスを利用する場合も、接続要求を出す側の機器は、そのサービスを担うプロセスに対して接続要求を出す。この場合のポート番号は、ホスト上で利用したいサービスを識別する識別子としての役割を果たしている。
【００２０】
そこで、特に標準化されているサービスについては利用の利便を図る為、インターネット標準を取りまとめているＩＥＴＦにおいて、利用するポート番号がウェルノウンポート番号として決められている（ＲＦＣ  １７００：ftp://ftp.isi.edu/in-notes/rfc1700.txt参照）。
【００２１】
ところで、一つのコンピュータに１つのＩＰアドレスしか付与できないのであれば、一つのコンピュータで同一のサービスを複数稼動させようにも、ＩＰアドレス及びポート番号の組み合わせが１つしか存在しないため、コンピュータ上で稼動している各々のプロセスは区別できない。しかしながら、ＩＰアドレスはノード単位でなくインタフェース単位に付与される。したがって、動作させるサービスの数だけインタフェースを用意し、ＩＰアドレスを違えることにより、同じノード及び同じポート番号のコネクションは異なるコネクション（異なる接続要求）として区別できる。
【００２２】
なお、インタフェースは必ずしも物理的な数だけ用意する必要はなく、ＶＬＡＮ等のＩＰレイヤより下位層に位置する多重化機構を用いる手段、又は同じインタフェースに複数のＩＰアドレスを割り当てる（一般にこれをエイリアスと称する）等の手段にて、同じ物理インタフェース上に複数の論理インタフェースを設定してもよい。
【００２３】
しかしながら、多くのＯＳの実装では一つのＯＳ下において、同じポート番号で異なるコネクションを開くことができない。これは、接続待ち受け状態において、接続相手のＩＰアドレス及びポート番号が確定せず、また、任意のインタフェースの接続要求を同一のコネクション待ち受け状態で対応させることを考慮すると、ＯＳ側は自分側のポート番号が唯一それぞれの通信待ち受けを区別できる情報になる為である。
【００２４】
例えばインターネットにおけるＷｅｂサーバとして採用実績の高いＬｉｎｕｘ（登録商標）では、ＯＳ内においてポート番号の重複が許されない。したがって、プロトコルの制約とは別に、ＯＳの実装の制約により、単純に同一ホストで同じサービスを独立に複数稼動させることができないという制限があった。
【００２５】
この制限を回避する手段として、ウェルノウンポート番号の利用をあきらめ、図３のように他の空いているポート番号を採択して通信を行なうという対処は可能である。図３は空いているポート番号を採択した通信を表す一例の説明図である。図３では、同一のサービスを複数動作させる際、それぞれのサービスにウェルノウンポート番号とは異なった空いているポート番号をそれぞれ割り当てている。
【００２６】
図３のコンピュータ１上では、同一のサービスを提供するサーバプロセス１１Ａ，１１Ｂが稼動している。例えばサーバプロセス１１Ａの提供するサービスを受けたい場合、外部の機器はインタフェース３０Ａを介してウェルノウンポート番号とは異なったポート番号ａ宛てにパケットを送信する。
【００２７】
また、サーバプロセス１１Ｂの提供するサービスを受けたい場合、外部の機器はインタフェース３０Ｂを介してウェルノウンポート番号とは異なったポート番号ｂ宛てにパケットを送信する。このように、同一のコンピュータ１上で駆動し、且つ同一のサービスを提供するサーバプロセス１１Ａ，１１Ｂとコネクションを開く為には、ポート番号を異ならせる必要がある。したがって、図３の対処では標準として決められたウェルノウンポート番号を利用できないことによる様々な不都合が発生する。
【００２８】
例えば利用したいサービスから暗黙に決まるウェルノウンポート番号ではなくなる為、接続要求を出す側の機器は何らかの手段で利用したいサービスに対応するポート番号を知る必要があるという問題があった。また、接続要求を出す側の機器には接続相手のポート番号を変えることのできる機能を有していなければ対応できないという問題があった。
【００２９】
したがって、Ｗｅｂホスティングサービスを利用し、Ｗｅｂサービスを提供する側からみれば、Ｗｅｂサービスの利用者に面倒な手間を掛けさせるという問題があった。本来使うウェルノウンポート番号と異なるポート番号で試験を行ったとしても、厳密には本来のウェルノウンポート番号での試験にならず、条件付き試験しか行えない。
【００３０】
本発明は、上記の点に鑑みなされたもので、同一のサービスを複数稼動させたとしても外部からは同一のサービスを同一の第１識別情報で識別可能なサービス提供装置および通信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００３１】
上記課題を解決するため、本発明は、複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置であって、前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段とを有することを特徴とする。
【００３２】
また、本発明は、複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置として機能するコンピュータを、前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段として機能させる為の通信制御プログラムであることを特徴とする。
【００３３】
本発明では、変換テーブルと変換手段とを有することにより、同一のサービスを提供する複数の処理手段に異なる第２識別情報を採択したとしても、外部に対して同一のサービスに第１識別情報を採択しているように見せ掛けることができる。
【発明の効果】
【００３４】
上述の如く、本発明によれば、同一のサービスを複数稼動させたとしても外部からは同一のサービスを同一の第１識別情報で識別可能なサービス提供装置および通信制御プログラムを提供可能である。
【発明を実施するための最良の形態】
【００３５】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。まず、本発明の理解を容易とする為、同一のサービス（機能）を複数稼動させるコンピュータを例に、本発明の原理について説明する。同一のサービスを複数稼動させるコンピュータは、本発明のサービス提供装置の一例である。
【００３６】
同一のサービスを複数稼動させるコンピュータは、そのサービスの処理を担う各々のプロセスについて異なるポート番号として稼動させる一方、後述するポート番号変換部をインタフェースとＯＳ内部の振分け処理部との間に介在させることで、外部に対してサービスがウェルノウンポート番号で稼動しているように見せる。振分け処理部では、ポート番号に応じてパケットが振り分けられる。
【００３７】
即ち、同一のサービスを複数稼動させるコンピュータでは、稼動させる同一のサービス数分のインタフェースを用意し、稼動させたいサービスを担うプロセス各々について対応するインタフェースを決める。そして、コンピュータはサービスを識別するウェルノウンポート番号を指定したパケットをインタフェースで受信すると、そのサービスを担うプロセスが実際に待ち受けているポート番号に変換する。また、逆方向に流れるパケットに対しても、コンピュータはサービスを担うプロセスが実際に待ち受けているポート番号をウェルノウンポート番号に変換する。
【００３８】
なお、サービスを識別するウェルノウンポート番号とサービスを担うプロセスが実際に待ち受けているポート番号との変換は、インタフェースのアドレスと、サービスを識別するウェルノウンポート番号と、サービスを担うプロセスが実際に待ち受けているポート番号とを関連付けたポート番号変換テーブルを用いて行われる。
【００３９】
サービスを識別するウェルノウンポート番号とサービスを担うプロセスが実際に待ち受けているポート番号との変換は、例えばＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）あるいはＩＰマスカレードと称される機能で実現することができる。
【００４０】
ＮＡＰＴは、一般に複数のコンピュータから構成されるネットワークを外部的に単一のコンピュータであるかのように見せるため、アドレス／ポート番号の置換を行なうものである。ＮＡＰＴは、前述したＬｉｎｕｘ（登録商標）においてもネットフィルタ（ｎｅｔｆｉｌｔｅｒ）と呼ばれるパケットフィルタ処理系に、機能の一つとして組み込まれている。
【００４１】
したがって、本発明ではサービスを識別するウェルノウンポート番号とサービスを担うプロセスが実際に待ち受けているポート番号との変換を示すエントリを登録し、ネットフィルタのＮＡＰＴ機能を利用するようにしてもよい。
【００４２】
本発明では、サービスを識別するウェルノウンポート番号とサービスを担うプロセスが実際に待ち受けているポート番号との変換を行なうポート番号変換部を仲介させることにより、内部処理的にポート番号の重複を回避しつつ、同一のコンピュータ内にて外部から見るとウェルノウンポート番号のまま利用でき、各々をインタフェースのアドレスにて区別する形で同種のサービスを複数稼動させることが可能となる。
【００４３】
図４は、本発明によるコンピュータとサービスの提供を受ける外部の機器との通信を表した一例の説明図である。本発明のサービス提供装置の一例であるコンピュータ１は、複数のサービスを外部の機器に提供する装置である。ここでは、コンピュータ１上で同一のサービスを提供するサーバプロセス１１Ａ，１１Ｂが稼動している例を説明する。
【００４４】
図４のコンピュータ１は、サーバプロセス１１Ａ，１１Ｂと、カーネル２０と、インタフェース３０Ａ，３０Ｂとを含む構成である。カーネル２０は、ＩＰレイヤ処理部２１及びＴＣＰレイヤ処理部２２を含む構成である。また、ＩＰレイヤ処理部２１はポート番号変換部２３を含む構成である。
【００４５】
インタフェース３０Ａ，３０Ｂは、例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のインタフェース機器である。インタフェース３０Ａは、ＩＰアドレス「１９２．１６８．１０．１」が付与されている。インタフェース３０Ｂは、ＩＰアドレス「１９２．１６８．２０．１」が付与されている。
【００４６】
ポート番号変換部２３は、変換手段の一例である。ＴＣＰレイヤ処理部２２は、振分け処理部の一例である。サーバプロセス１１Ａは、ポート番号「ａ」が付与されている。また、サーバプロセス１１Ｂはポート番号「ｂ」が付与されている。サーバプロセス１１Ａ及び１１Ｂは、付与されているポート番号のソケットを開いている。
【００４７】
サービスの提供を受ける外部の機器は、提供を受けたいサービスに対応するウェルノウンポート番号「α」宛てにパケットを送信する。インタフェース３０Ａに到着したウェルノウンポート番号「α」宛てのパケットは、ＩＰレイヤ処理部２１のポート番号変換部２３に入力される。ポート番号変換部２３は、インタフェース３０Ａに到着したウェルノウンポート番号「α」宛てのパケットを入力されると、図５のようなポート番号変換テーブルを参照する。
【００４８】
図５はポート番号変換テーブルの一例の構成図である。図５のポート番号変換テーブルは、ポート番号変換部２３に入力されたパケットのＩＰアドレス及びウェルノウンポート番号と、ポート番号変換部２３から出力するパケットのＩＰアドレス及びポート番号とを関連付けている。
【００４９】
即ち、ポート番号変換テーブルは、インタフェースのＩＰアドレスと、サービスを識別するウェルノウンポート番号と、サービスを担うプロセスが実際に待ち受けているポート番号とを関連付けるものである。
【００５０】
インタフェース３０ＡからＩＰレイヤ処理部２１のポート番号変換部２３に入力されたパケットは、図５のポート番号変換テーブルのエントリー１に合致するため、宛先ポート番号をウェルノウンポート番号「α」からポート番号「ａ」に変換する。
【００５１】
宛先ポート番号がポート番号「α」からポート番号「ａ」に変換されたパケットはＴＣＰレイヤ処理部２２に入力される。ＴＣＰレイヤ処理部２２はパケットの宛先ポート番号であるポート番号「ａ」を参照し、そのポート番号「ａ」で識別されるサーバプロセス１１Ａにパケットを送信する。
【００５２】
同様に、サーバプロセス１１Ａは、実際に待ち受けているポート番号「ａ」を送信元としたパケットをサービスの提供を受ける外部の機器宛てに送信する。ポート番号「ａ」を送信元としたパケットは、ＴＣＰレイヤ処理部２２経由でＩＰレイヤ処理部２１のポート番号変換部２３に入力される。なお、送信元のポート番号はソースポート番号と呼ばれている。
【００５３】
ポート番号変換部２３は、ポート番号「ａ」を送信元としたパケットを入力されると図５のポート番号変換テーブルを参照する。図５のポート番号変換テーブルは、ポート番号変換部２３に入力されたパケットのＩＰアドレス及びポート番号と、ポート番号変換部２３から出力するパケットのＩＰアドレス及びウェルノウンポート番号とを関連付けるものである。
【００５４】
サーバプロセス１１ＡからＩＰレイヤ処理部２１のポート番号変換部２３に入力されたパケットは、図５のポート番号変換テーブルのエントリー３に合致するため、送信元であるポート番号「ａ」がウェルノウンポート番号「α」に変換される。送信元のポート番号がポート番号「ａ」からウェルノウンポート番号「α」に変換されたパケットは、インタフェース３０Ａからサービスの提供を受ける外部の機器に送信される。
【００５５】
図４のコンピュータ１では、同一のサービスを提供している複数のサーバプロセス１１Ａ及び１１Ｂにウェルノウンポート番号「α」を利用して外部の機器からアクセスすることができる。従って、ＯＳの制限により同一のサービスを提供するサーバプロセス１１Ａ及び１１Ｂに異なるポート番号「ａ」及び「ｂ」を付与しなければならない場合であっても、外部の機器からはウェルノウンポート番号「α」を採択しているように見せ掛けることができる。
【００５６】
このように、本発明を適用したコンピュータ１は、一つの機器上に同種のサービスを複数稼動させることができるので、多数のサービスを稼動させたいときに、サービスの数だけ機器を用意する必要がなく、運用に必要な機器・費用を大幅に削減できる。また、試験用途に本発明を適用する場合でも、必要な試験系を構築する為に必要な機器・費用を大幅に削減できる。
【００５７】
次に、本発明を実現するコンピュータのハードウェア構成について説明する。図６は本発明を実現するコンピュータのハードウェア構成図である。図６のコンピュータは、それぞれバスＢで相互に接続されている入力装置１０１，出力装置１０２，ドライブ装置１０３，補助記憶装置１０４，メモリ装置１０５，演算処理装置１０６及びインタフェース１０７を有するように構成される。なお、コンピュータを構成する各種デバイスは１つの筐体に収容してもよいし、複数の筐体に分散して収容するようにしてもよい。
【００５８】
入力装置１０１はキーボード，マウス，タブレットなどの入力機器で構成され、様々な操作指示や情報を入力するために用いられる。出力装置１０２はディスプレイやプリンタなどの出力機器で構成され、操作に必要な各種ウインドウや情報等を出力するために用いられる。インタフェース１０７は、ネットワーク等に接続する為の機器であり、例えばＮＩＣ等で構成される。
【００５９】
コンピュータを制御する各種プログラムは、ＣＤ−ＲＯＭ等の記録媒体１０８によって提供される。各種プログラムを記録した記録媒体１０８は、ドライブ装置１０３にセットされる。各種プログラムは、記録媒体１０８からドライブ装置１０３を介して補助記憶装置１０４にインストールされる。
【００６０】
なお、各種プログラムを記録した記録媒体１０８は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク（ＭＯ）等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、又はＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリなど、様々なタイプの記録媒体を用いることが可能である。
【００６１】
また、各種プログラムはインタフェース１０７を介して接続される他のコンピュータの記録媒体等に記録されているものも含まれる。他のコンピュータの記録媒体等に記録されている各種プログラムはインタフェース装置１０７を介してダウンロードされて補助記憶装置１０４にインストールされる。
【００６２】
補助記憶装置１０４はインストールされた各種プログラムと、そのプログラムの処理に必要な各種ファイル等を格納する。メモリ装置１０５は、起動時に補助記憶装置１０４から各種プログラムを読み出して格納する。演算処理装置１０６は、メモリ装置１０５に格納された各種プログラムに従って、上述したような各種処理を実行できる。なお、各種プログラムには本発明の通信制御プログラムが含まれる。
【実施例１】
【００６３】
本発明の実施例として、複数のＢＧＰ（Ｂｏｒｄｅｒ  Ｇａｔｅｗａｙ  Ｐｒｏｔｏｃｏｌ）プロセスを一台の機器上で動作させる例を説明する。ＢＧＰとは、インターネットにて動作しているルーティングプロトコルの一種であり、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）等のＡＳ（Ａｕｔｏｎｏｍｏｕｓ  Ｓｙｓｔｅｍ）間で経路情報をやり取りする。
【００６４】
ＢＧＰのプロトコルメッセージには、インターネットの経路情報が含まれる。このプロトコルメッセージを受信したＢＧＰルータは、機器内部に経路表として登録する。ＢＧＰルータは、ユーザパケットをルーティングする際に経路表を参照し、ユーザパケットの宛先を決定して送信する。
【００６５】
ＢＧＰルータは、複数のＢＧＰルータからプロトコルメッセージを受信するが、異なるＢＧＰルータから同一の宛先に対して異なる複数の経路情報を受信する。この異なる複数の経路情報を受信したＢＧＰルータは、異なる複数の経路情報から最適な経路情報を選択して経路表に反映させる。このような処理を行う為に、ＢＧＰルータは多くのＣＰＵ処理能力が要求される。この為、ＢＧＰルータを利用する利用者は、経路情報処理能力の程度をルータとして運用する前に把握しておく必要がある。
【００６６】
ＢＧＰルータの経路情報処理能力を測定する為には、実際のインターネット上での運用をエミュレートする必要がある。そこで、ＢＧＰルータの経路情報処理能力を測定する場合には被試験装置であるＢＧＰルータと複数のＢＧＰピアとを図７のように接続し、ＢＧＰピアからのプロトコルメッセージをＢＧＰルータに受信させて経路表を作成させるという試験を行うことになる。
【００６７】
図７は、ＢＧＰルータの経路情報処理能力を測定する為の試験の形態である。図７の試験の形態では、被試験装置であるＢＧＰルータ２００と、ＢＧＰピアである複数のＢＧＰルータ２１０〜２１４とで構成されている。なお、ＢＧＰルータ２１０〜２１４はＢＧＰのプロトコルメッセージ（経路メッセージ）を発生し、ＢＧＰルータ２００に対してＢＧＰルータとして振る舞えば良いので、必ずしもＢＧＰルータそのものの機能を有していなくても良い。
【００６８】
しかしながら、ＢＧＰルータ２１０〜２１４を夫々別の機器で稼動させると、試験には５つの機器が必要となる。もし、ＢＧＰルータ２１０〜２１４を一つの機器で稼動させることができれば、試験を行なう機器の構成は大幅に簡略化できる。
【００６９】
複数のＢＧＰルータを稼動させる機器では、複数のインタフェースを実装し、一つのインタフェースに一つのＢＧＰルータを対応させて、複数のＢＧＰルータが動作していることをエミュレートさせたい。ＢＧＰにおいて、対向するＢＧＰとの通信はＴＣＰコネクションを通じて行われる。即ち、コネクションを確立する時に、ＢＧＰはＴＣＰの３ウェイハンドシェイクを使うことになる。
【００７０】
３ウェイハンドシェイクでは、マシンＡとマシンＢとの間でコネクションを確立する際に、どちらか一方のマシン（例えばマシンＡ）がｓｙｎパケットを送信する。また、ｓｙｎパケットを受信した対向のマシン（例えばマシンＢ）はｓｙｎ  ａｃｋパケットを送信する。そして、ｓｙｎ  ａｃｋパケットを受信したマシン（例えばマシンＡ）はａｃｋパケットを送信する。３ウェイハンドシェイクでは、上記の３つのやり取りを経てＴＣＰのコネクションを確立する。
【００７１】
ＢＧＰルータにおけるコネクションの確立は、二つの対向するＢＧＰルータがウェルノウンポートであるＢＧＰポート番号（ポート番号１７９）を指定してＬｉｓｔｅｎｉｎｇソケットをオープンする。二つのＢＧＰルータの何れかは、対向のＢＧＰルータに対してコネクション確立の為のｓｙｎパケットをＢＧＰポート番号に対して送信する。なお、コネクション確立の契機となるｓｙｎパケットを送信は、二つのＢＧＰルータのうち、どちらのＢＧＰルータから行ってもよい。
【００７２】
このように、一つの機器で複数のＢＧＰルータプロセスを稼動させて試験を行う場合であっても、コネクションの確立動作において、どちらのＢＧＰルータからでもコネクションの確立動作が始まるようになっていないと、本来のＢＧＰルータの動作をエミュレート
しているとは言えない。
【００７３】
機器には、インタフェースが異なれば同一のポート番号のＬｉｓｔｅｎｉｎｇソケットが異なるものであると識別できるものもあるが、ＯＳの実装によって同一のポート番号にて複数のＬｉｓｔｅｎｉｎｇソケットをオープンできない場合が存在する。
【００７４】
この為、複数のＢＧＰルータプロセスを稼動させる機器では、複数のＢＧＰルータプロセスに対して、ＢＧＰポート番号と異なり、且つ、互いに重複しないサービスポート番号を指定して、Ｌｉｓｔｅｎｉｎｇソケットをオープンする。複数のＢＧＰルータプロセスを稼動させる機器にアクセスしてくる外部の機器は、ＢＧＰピアであるＢＧＰルータプロセスに対し、ＢＧＰポート番号宛てにコネクションを張る為のパケットを送信する。
【００７５】
なお、このままの状態では複数のＢＧＰルータプロセスが起動する機器において、ＢＧＰポート番号にてオープンされているＬｉｓｔｅｎｉｎｇソケットが存在しない為、コネクションを確立できない。
【００７６】
そこで、複数のＢＧＰルータプロセスを稼動させる機器では、ＢＧＰポート番号宛てに来たパケットのＢＧＰポート番号を、インタフェースに対応するＢＧＰルータプロセスのサービスポート番号に変換する為、ＮＡＰＴにポート番号変換テーブルと同様なＮＡＰＴテーブルを設定する。ＮＡＰＴテーブルは、ＩＰアドレスと宛先のポート番号との組み合わせを変換するテーブルである。
【００７７】
複数のＢＧＰルータプロセスを稼動させる機器は、入力されたパケットのＩＰアドレスとＢＧＰポート番号とをキーとしてＮＡＰＴテーブルを検索し、合致するレコードが存在した場合、変換ルールに従ってＩＰアドレスとサービスポート番号とに変換する。
【００７８】
図８は、複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した一例の説明図である。本発明のサービス提供装置の一例である機器３００は、ＢＧＰピアとして機能する複数のＢＧＰルータプロセス３１０Ａ，３１０Ｂを含む構成である。
【００７９】
機器３００は、ＢＧＰルータプロセス３１０Ａ，３１０Ｂと、カーネル３２０と、インタフェース３３０Ａ，３３０Ｂとを含む構成である。カーネル３２０は、ＩＰレイヤ処理部３２１及びＴＣＰレイヤ処理部３２２を含む構成である。また、ＩＰレイヤ処理部３２１は変換手段の一例としてのネットフィルタ３２３と、変換テーブルの一例としてのＮＡＰＴテーブル３２４とを含む構成である。
【００８０】
図８の例では、宛先のＩＰアドレスが「１９２．１６８．１０．１」且つ宛先のポート番号がＢＧＰポート番号「１７９」である場合、ネットフィルタ３２３がＮＡＰＴテーブル３２４に基づき、宛先のポート番号をＢＧＰルータプロセス３１０Ａのサービスポート番号「３００１」に変換する。
【００８１】
また、宛先のＩＰアドレスが「１９２．１６８．２０．１」且つ宛先のポート番号がＢＧＰポート番号「１７９」である場合、ネットフィルタ３２３がＮＡＰＴテーブル３２４に基づき、宛先のポート番号をＢＧＰルータプロセス３１０Ｂのサービスポート番号「３００２」に変換する。
【００８２】
この変換ルールは、パケットを受信したインタフェースに対応して、そのパケットに割り当てるＢＧＰルータプロセスを分ける為のルールである。宛先のポート番号が変換されたパケットはＴＣＰレイヤ処理部３２２に入力される。ＴＣＰレイヤ処理部３２２はソケットがオープンしているＢＧＰルータプロセス３１０Ａ，３１０Ｂをサーチし、パケットの宛先ポート番号であるサービスポート番号「３００１」又は「３００２」を参照して、そのサービスポート番号「３００１」又は「３００２」で識別されるＢＧＰルータプロセス３１０Ａ又は３１０Ｂにパケットを送信する。
【００８３】
したがって、図８の機器では、ウェルノウンポート番号であるＢＧＰポート番号宛てに来たパケットを複数のＢＧＰルータプロセス３１０Ａ，３１０Ｂに振り分けることが可能となる。
【００８４】
図９は、複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した他の一例の説明図である。図９は、ＮＡＰＴテーブル３２４を除いて図８と同様であるため、適宜説明を省略する。
【００８５】
複数のＢＧＰルータプロセス３１０Ａ，３１０Ｂを稼動させる機器では、パケットを出力したＢＧＰルータプロセス３１０Ａ，３１０Ｂのサービスポート番号を、そのパケットを出力するインタフェース３３０Ａ，３３０Ｂに対応したＢＧＰポート番号に変換するため、ＮＡＰＴにポート番号変換テーブルと同様なＮＡＰＴテーブルを設定する。
【００８６】
複数のＢＧＰルータプロセスを稼動させる機器は、ＢＧＰルータプロセスから出力されたパケットの送信元のＩＰアドレス及びサービスポート番号をキーとしてＮＡＰＴテーブルを検索し、合致するレコードが存在した場合、変換ルールに従ってＩＰアドレス及びＢＧＰポート番号に変換する。図９は、ＢＧＰルータプロセス３１０Ａ又は３１０Ｂから外部のＢＧＰルータへパケットを送信する例を表している。
【００８７】
送信元のＩＰアドレスが「１９２．１６８．１０．１」且つ送信元のポート番号がＢＧＰルータプロセス３１０Ａのサービスポート番号「３００１」である場合、ネットフィルタ３２３はＮＡＰＴテーブル３２４に基づき、送信元のポート番号をＢＧＰポート番号に変換する。
【００８８】
また、送信元のＩＰアドレスが「１９２．１６８．２０．１」且つ送信元のポート番号がＢＧＰルータプロセス３１０Ｂのサービスポート番号「３００２」である場合、ネットフィルタ３２３はＮＡＰＴテーブル３２４に基づき、送信元のポート番号をＢＧＰポート番号に変換する。
【００８９】
したがって、図９の機器では、機器３００の外部の機器に対して、同一のポート番号のソケットをオープンした複数のＢＧＰルータプロセス３１０Ａ，３１０Ｂが、一つの機器上で稼動しているように見せ掛けることができる。
【００９０】
図１０は、複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した一例のシーケンス図である。ステップＳ１において、被試験装置であるＢＧＰルータ２００は、ＢＧＰポート番号宛てにｓｙｎパケットを送信する。
【００９１】
ステップＳ２に進み、ネットフィルタ３２３は、ＮＡＰＴに設定されたＮＡＰＴテーブル３２４を用いて、宛先のＢＧＰポート番号をインタフェース３３０Ａに対応するＢＧＰルータプロセス３１０Ａのサービスポート番号に変換する。宛先のポート番号がサービスポート番号に変換されたｓｙｎパケットは、ＢＧＰルータプロセス３１０Ａがオープンしているソケットに到着する。
【００９２】
さらに、ステップＳ３に進み、ＢＧＰルータプロセス３１０Ａはｓｙｎパケットを受信した為、ｓｙｎパケットに対してｓｙｎ  ａｃｋパケットを返信する。ネットフィルタ３２３はＮＡＰＴに設定されたＮＡＰＴテーブル３２４を用いて、送信元のサービスポート番号をインタフェース３３０Ａに対応するＢＧＰポート番号に変換する。
【００９３】
ステップＳ４に進み、送信元のポート番号がＢＧＰポート番号に変換されたｓｙｎ  ａｃｋパケットはＢＧＰルータ２００に送信される。ステップＳ５に進み、ＢＧＰルータ２００は、ＢＧＰポート番号宛てにａｃｋパケットを送信する。
【００９４】
ステップＳ６に進み、ネットフィルタ３２３は、ＮＡＰＴに設定されたＮＡＰＴテーブル３２４を用いて、宛先のＢＧＰポート番号をインタフェース３３０Ａに対応するＢＧＰルータプロセス３１０Ａのサービスポート番号に変換する。そして、宛先のポート番号がＢＧＰルータプロセス３１０Ａのサービスポート番号に変換されたａｃｋパケットはＢＧＰルータプロセス３１０Ａがオープンしているソケットに到着する。
【００９５】
以下、同様なポート番号の変換を行いながら、ＢＧＰルータ２００とＢＧＰルータプロセス３１０Ａとの間で通信が行われる。なお、本実施例では起動するプロセスに対応してＮＡＰＴテーブル３２４を静的に設定する例を記述しているが、静的なネットフィルタ３２３でプロセス宛てにパケットが到着したことを検出して、コネクション毎の動的なＮＡＰＴテーブル３２４を設定する構成でもよい。
【００９６】
また、静的にＮＡＰＴテーブル３２４を設定している時に、ローカルで開いているソケットのサービスポート番号（例えば３００１）宛てにパケットが到着した場合、ＮＡＰＴテーブル３２４には合致しないがソケットにパケットが到着してしまう。さらに、このパケットに対応する応答のパケットを出力すると、今度はＮＡＰＴテーブル３２４に合致する為、ＢＧＰルータプロセスのサービスポート番号をＢＧＰポート番号に変換して送信するという動作を行なう。
【００９７】
この為、機器３００では、ローカルで開いているソケットのサービスポート番号に直接アクセスしてきたパケットを廃棄するという設定をネットフィルタ３２３のテーブルにしておいてもよい。
【実施例２】
【００９８】
本発明の他の実施例として、複数のＨＴＴＰサーバプロセスを一台の機器上で動作させる例を説明する。図１１は、複数のＨＴＴＰサーバプロセスを稼動させた機器と外部のクライアントとの通信を表した一例の説明図である。
【００９９】
複数のＨＴＴＰサーバプロセスを稼動させる機器では複数のＨＴＴＰサーバプロセスに対し、ウェルノウンポート番号であるＨＴＴＰポート番号「８０番」と異なり、且つ、互いに重複していないサービスポート番号「３００１番，３００２番，３００３番」を指定する。
【０１００】
複数のＨＴＴＰサーバプロセスを稼動させる機器では、ＨＴＴＰポート番号宛てに来たパケットのＨＴＴＰポート番号を、インタフェースに対応するＨＴＴＰサーバプロセスのサービスポート番号に変換する為、実施例１と同様なＮＡＰＴテーブルを設定する。
【０１０１】
複数のＨＴＴＰサーバプロセスを稼動させる機器は、入力されたパケットのＩＰアドレスとＨＴＴＰポート番号とをキーとしてＮＡＰＴテーブルを検索し、合致するレコードが存在した場合、変換ルールに従ってＩＰアドレスとサービスポート番号とに変換する。
【０１０２】
なお、ウェルノウンポート番号をサービスポート番号に変換する処理内容は、実施例１と同様である為、説明を省略する。したがって、複数のＨＴＴＰサーバプロセスを稼動させた図１１の機器は外部のクライアントに対して、図１２に示すように、複数のＨＴＴＰサーバプロセスが、一つの機器上で稼動しているように見せ掛けることができる。
【０１０３】
図１２は、複数のＨＴＴＰサーバプロセスを一つの機器上で稼動させた様子を示す一例のイメージ図である。一つの機器上で稼動させた複数のＨＴＴＰサーバプロセスは、クライアントから複数のＷｅｂサイトのように見える。
【０１０４】
本発明は、以下に記載する付記のような構成が考えられる。
（付記１）
複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置であって、
前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、
前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段と
を有するサービス提供装置。
（付記２）
前記変換手段は、外部からのパケットを受信した前記インタフェース手段のアドレス情報と、前記パケットの宛先である前記第１識別情報とに関連付けられた前記第２識別情報を前記変換テーブルから読み出し、前記パケットの宛先を前記第２識別情報に変換することを特徴とする付記１記載のサービス提供装置。
（付記３）
前記変換手段は、前記パケットを外部へ送信する前記インタフェース手段のアドレス情報と、前記パケットの送信元である前記第２識別情報とに関連付けられた前記第１識別情報を前記変換テーブルから読み出し、前記パケットの送信元を前記第１識別情報に変換することを特徴とする付記１又は２記載のサービス提供装置。
（付記４）
前記処理手段はプロセスであり、
前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報は、重複しないように割り当てられたポート番号であることを特徴とする付記１乃至３何れか一項記載のサービス提供装置。
（付記５）
前記第１識別情報は、ウェルノウンポート（Ｗｅｌｌ−ｋｎｏｗｎ  Ｐｏｒｔ）番号であることを特徴とする付記１乃至４何れか一項記載のサービス提供装置。
（付記６）
複数のインタフェース手段と、同一のサービスを提供する複数の処理手段とを少なくとも備えたサービス提供装置として機能するコンピュータを、
前記インタフェース手段を識別するアドレス情報，前記サービスを識別する第1識別情報および前記複数の処理手段から一の処理手段を識別する第２識別情報を関連付けた変換テーブルと、
前記変換テーブルに基づき、外部から受信したパケットの宛先を前記インタフェース手段に対応する前記第１識別情報から前記第２識別情報に変換し、外部へ送信するパケットの送信元を前記インタフェース手段に対応する前記第２識別情報から前記第１識別情報に変換する変換手段と
して機能させる為の通信制御プログラム。
【０１０５】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【産業上の利用可能性】
【０１０６】
本発明は、ネットワークを介して提供するサービスの運用や、ネットワーク機器の評価系構築を効率良く実現するノードの簡易仮想化技術に利用可能である。
【図面の簡単な説明】
【０１０７】
【図１】サービスを提供するコンピュータとサービスの提供を受ける外部の機器との通信を表した一例の説明図である。
【図２】サービスを提供するコンピュータとサービスの提供を受ける外部の機器との通信を表した他の例の説明図である。
【図３】空いているポート番号を採択した通信を表す一例の説明図である。
【図４】本発明によるコンピュータとサービスの提供を受ける外部の機器との通信を表した一例の説明図である。
【図５】ポート番号変換テーブルの一例の構成図である。
【図６】本発明を実現するコンピュータのハードウェア構成図である。
【図７】ＢＧＰルータの経路情報処理能力を測定する為の試験の形態である。
【図８】複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した一例の説明図である。
【図９】複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した他の一例の説明図である。
【図１０】複数のＢＧＰルータプロセスを稼動させた機器とＢＧＰルータとの通信を表した一例のシーケンス図である。
【図１１】複数のＨＴＴＰサーバプロセスを稼動させた機器と外部のクライアントとの通信を表した一例の説明図である。
【図１２】複数のＨＴＴＰサーバプロセスを一つの機器上で稼動させた様子を示す一例のイメージ図である。
【符号の説明】
【０１０８】
１    コンピュータ
１１Ａ，１１Ｂ    サーバプロセス
２０，３２０    カーネル
２１，３２１    ＩＰレイヤ処理部
２２，３２２    ＴＣＰレイヤ処理部
２３    ポート番号変換部
３０Ａ，３０Ｂ，３３０Ａ，３３０Ｂ    インタフェース
２００，２１０〜２１４    ＢＧＰルータ
３００    機器
３１０Ａ，３１０Ｂ    ＢＧＰルータプロセス
３２３    ネットフィルタ
３２４    ＮＡＰＴテーブル
【図１】
2006352567.tif 000003
【図２】
2006352567.tif 000004
【図３】
2006352567.tif 000005
【図４】
2006352567.tif 000006
【図５】
2006352567.tif 000007
【図６】
2006352567.tif 000008
【図７】
2006352567.tif 000009
【図８】
2006352567.tif 000010
【図９】
2006352567.tif 000011
【図１０】
2006352567.tif 000012
【図１１】
2006352567.tif 000013
【図１２】
2006352567.tif 000014