次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1を参照すると、本発明の第1の実施の形態は、クライアントA1と名前解決サーバであるDNSサーバB1とによって実現される。クライアントA1とDNSサーバB1はネットワークC1を介して接続されている。DNSサーバB1は、DNSにおける名前解決機能をもつサーバだけではなく、他の用途における名前解決機能をもつサーバとして一般化することもできる。他の用途における名前解決機能をもつサーバの例として、WINS(Windows(R) Internet Name Service)サーバやNIS(Network Information Service)サーバが挙げられる。ただし、以下では名前解決機能を持つサーバとしてDNSサーバを例にとり説明する。
クライアントA1は、「www.biglobe.ne.jp」や、「ftp.nec.com」など、ネットワーク上のノードのFQDNに対応するIPアドレスを解決するため、あるいは逆にあるIPアドレスに対応するFQDNを解決するためにDNSサーバB1に対して名前解決要求メッセージとしてDNSクエリメッセージを送信する。他にも、クライアントA1がDNSサーバB1を利用する目的の例としては、RFC2782に記載されているような、ftpやhttpなどのサービス名に対応する該サービスを提供するホストとポート番号の解決や、RFC2916に記載されているような、電話番号に対応するURI(Universal Resource Identifier)の解決などが挙げられる。ただし、以下、DNSサーバB1によってFQDNからIPアドレスの解決またはIPアドレスからFQDNの解決を行なう場合を中心にして説明する。
クライアントA1は、送信したDNSクエリメッセージに対して、DNSサーバB1から返される名前解決応答メッセージとしてDNS応答メッセージを受信する。DNS応答メッセージには、名前解決の結果が含まれる。
クライアントA1の例としては、一般的にはPC(Personal Computer)や携帯端末、ワークステーションなどの端末ノード(利用端末)が挙げられるが、その他、DNSサーバB1以外の別のDNSサーバが何らかの名前解決を行うためにDNSサーバB1に対して再帰的なDNSクエリを行う場合もあり、このようなDNSサーバをクライアントA1に含めて考えることができる。
DNSサーバB1は、クエリ受信部B11と、ユーザ情報識別部B12と、ユーザ情報取得部B13と、ユーザ情報データベースB14と、応答作成部B15と、応答用データベースB16と、応答送信部B17とを含む。
DNSサーバB1は、従来のDNSサーバの構成と比べ、ユーザ情報識別部12と、ユーザ情報取得部B13と、ユーザ情報データベースB14とを新たに有する点が大きく異なる。
クエリ受信部B11は、クライアントA1が送信したDNSクエリメッセージを受信し、それをユーザ情報識別部B12に渡す。
ユーザ情報識別部B12は、DNSクエリメッセージを受け取ると、該メッセージ内に、該メッセージの送信者であるユーザのユーザ属性情報が含まれているかを調べ、含まれている場合は該ユーザ属性情報を読み取って識別する。もし含まれていない場合は、ユーザ情報取得部B13を介してユーザ情報データベースB14からDNSクエリメッセージの送信者のユーザ属性情報を取得する処理を行う。
また、ユーザ情報識別部B12は、ユーザ属性情報を取得できた場合は、ユーザ属性情報とDNSクエリメッセージを応答作成部B15に渡す。ユーザ属性情報を取得できなかった場合は、DNSクエリメッセージのみを応答作成部B15に渡す。
ここで、ユーザ属性情報とは、例えばユーザ(クライアントA1)のユーザID、位置情報、趣味若しくは行動履歴などの嗜好に関する情報、携帯電話やPDA(Personal Digital Assistants)、ノートパソコンといった利用端末種別、利用端末にインストールされているOS(Operating System)、装備されているネットワークインタフェースやCPU速度、メモリ量といった利用端末に関する情報、利用端末のIPアドレスおよびMACアドレス、ADSL(Asymmetric Digital Subscriber Line)やISDN(Integrated Services Digital Network)といった接続回線種別、接続回線速度、接続しているNAS(Network Access Server)のIPアドレスといったネットワークへの接続状況に関する情報などの、ユーザに関する情報全般を指す。
ユーザ情報取得部B13は、DNSサーバB1が受信したDNSクエリメッセージ内に該メッセージの送信者のユーザ属性情報が含まれていない場合に、ユーザ情報識別部B12から渡された情報(該メッセージのソースIPアドレスまたはソースMACアドレスなど)を基にユーザ情報データベースB14から該ユーザ属性情報を取得し、ユーザ情報識別部B12へ渡す。
ユーザ情報データベースB14には、DNSサーバB1に対して名前解決を行うユーザのユーザ属性情報及びユーザ属性情報を取得するための参照先が登録されている。ユーザ情報データベースB14には、必要に応じて任意のユーザ属性情報を登録しておくことができる。
ユーザ情報データベースB14の内容例を図2に示す。図2のユーザ情報データベースB14では、ISP(Internet Service Provider)が運営するネットワークへのログインID、利用端末のIPアドレス、接続回線種別、接続しているNASのIPアドレス、及びユーザ情報データベースB14には直接登録されていないが外部のサーバから必要なユーザ属性情報が取得できる場合に、該ユーザ属性情報を取得するための参照先が登録されている。
図2において「―」は、該当する項目の内容がこのユーザ情報データベースB14に登録されていないことを示している。例えば1番目のエントリでは参照先が「―」となっており、このエントリに属性情報が登録されているユーザに関してはこれ以上の属性情報を得るための参照先が不明または存在しないことを示している。また2番目のエントリは、接続回線種別が不明であることが示されており、登録されていないユーザ属性情報については参照先に登録されているIPアドレス「8.9.1.4」で指定されるノードを参照することで取得可能であることが示されている。さらに3番目のエントリでは、利用端末のIPアドレスが「123.45.1.0/24」の範囲にあるユーザ属性情報を、IPアドレスが「9.9.9.9」で指定されるノードを参照することで取得可能であることが示されている。
応答作成部B15は、応答用データベースB16を参照し、DNSクエリメッセージにより要求されたFQDN→IPアドレスまたは、IPアドレス→FQDNなどの名前解決処理を行う。ここで、ユーザ情報識別部B12からDNSクエリメッセージと共に、ユーザ属性情報を渡された場合は、ユーザ属性情報を考慮した名前解決処理を行う。ユーザ属性情報を考慮することにより、例えばユーザが動画の配信を行っているサーバのFQDN→IPアドレスの名前解決を要求した際、同一のFQDNに関するDNSクエリであっても、例えば接続回線種別がADSL回線であるユーザには広帯域で配信を行っているサーバのIPアドレスを解決したり、接続回線種別がISDN回線であるユーザには狭帯域で配信を行っているサーバのIPアドレスを解決したりするといったユーザ毎の名前解決処理のカスタマイズを行うことができる。
応答用データベースB16には、ユーザの属性毎にFQDN→IPアドレス及び、IPアドレス→FQDNなどの解決方法を示すエントリが登録されている。ユーザ属性情報に依存しないデフォルトの名前解決方法も登録されている。
応答用データベースB16の例を図3に示す。図3に示した応答用データベースB16は2種類のテーブルから構成される。一つはFQDN→IPアドレスなどの具体的な名前解決方法が登録されているテーブル(ゾーンファイル)であり、ゾーンファイル202及び203が該当する。このゾーンファイル202、203に登録される主な情報には、エントリの種類を示すTYPE、名前解決のキーとなるFQDN、名前解決により応答するデータを示すDATAがある。用いられるTYPEの例としては、あるFQDNに対応するIPアドレスの解決を示すAレコード、あるFQDNに対応するメールサーバのアドレスの解決を示すMXレコード、あるFQDNの別名を示すCNAMEレコードなどがある。ここで、ゾーンファイル202の1番目のエントリを参照すると、エントリの種類(TYPE)がFQDNからIPアドレスの解決を示すAレコードであり、FQDN:www.aaa.comに対応するIPアドレス(DATA)が「9.8.7.6」であることが示されている。
もう一つは、ユーザ属性情報及びドメイン空間毎に名前解決方法の参照先が登録されているテーブル(名前解決テーブル)であり、名前解決テーブル201が該当する。名前解決テーブル201では、ユーザIPアドレス、ユーザID、接続回線種別及びNASのIPアドレスといったユーザ属性情報の組み合わせ毎に、名前解決方法の参照先が登録されている。
名前解決テーブル201において、「−」は名前解決の際に考慮しないユーザ属性情報を示している。例えば1番目のエントリでは、ユーザ属性情報のうち、ユーザIPアドレス及びユーザIDは考慮されず、接続回線種別およびNASアドレスのみが考慮されることになる。1番目のエントリは、ユーザIPアドレス及びユーザIDが任意であって、接続回線種別がADSL回線でありかつ、接続しているNASのIPアドレスが「30.30.30.30」であるユーザが、ドメイン空間aaa.comに属するFQDNの問い合わせを行った際に、ゾーンファイルadsl_aaa_com.dat(ゾーンファイル202)が参照されることを示している。同様に、3番目のエントリは、ユーザ属性情報のうち、ユーザIPアドレス、アクセス回線種別及びNASのIPアドレスが任意で、ユーザIDが「jiro」のユーザが、ドメイン空間bbb.comに属するFQDNの問い合わせを行った際に、ゾーンファイルjiro_bbb_com.datが参照されることを示している。また、4番目のエントリは、IPアドレス「123.45.1.5」から、ドメイン空間bbb.comに属するFQDNのDNSクエリがあった場合は、IPアドレス「1.2.3.4」で指定される他のDNSサーバにおいて名前解決処理が行われることを示している。
また、最後のエントリ(DEFAULT)にはユーザ属性情報に依存しないデフォルトのIPアドレスの解決方法が登録されている。このエントリは、ユーザ属性情報が名前解決テーブル201に登録されているユーザ属性情報のいずれにも該当しない場合、またはユーザ情報識別部B12においてDNSクエリメッセージに対応するユーザ属性情報が取得できなかった場合に参照される。
応答送信部B17は、応答作成部B15から渡された名前解決の処理結果を元にDNS応答メッセージを生成し、クライアントA1へ送信する。
次に、図4を参照して、本実施の形態において、DNSサーバB1がDNSクエリメッセージを受信してから応答メッセージを送信するまでの動作について詳細に説明する。
クエリ受信部B11は、クライアントA1からDNSクエリメッセージを受信すると(図4のステップS101)、該メッセージをユーザ情報識別部B12に渡す。
ユーザ情報識別部B12は、DNSクエリメッセージを受け取ると、該メッセージの送信者のユーザ属性情報の取得処理を行う(ステップS102)。
ここで、図5を参照して、ステップS102のユーザ属性情報の取得処理を詳細に説明する。
まず、ユーザ情報識別部B12は、受信したDNSクエリメッセージに、ユーザ属性情報が埋め込まれているか否かを判断する(図5のステップS1021)。ユーザ属性情報が埋め込まれている場合はこれを読み出して取得し(ステップS1022)、ユーザ属性情報の取得処理は終了する。
ステップS1021でユーザ属性情報が埋め込まれていない場合は、受信したDNSクエリメッセージはユーザ情報識別部B12からユーザ情報取得部B13へ渡され、ユーザ情報取得部B13は該メッセージを送信したユーザを特定する手がかりとなる情報を抽出する(ステップS1023)。抽出する手がかりとなる情報の例としては、DNSクエリメッセージのソースIPアドレスが挙げられる。クライアントA1がユーザ利用端末のリゾルバである場合、DNSクエリメッセージのソースIPアドレスはユーザの利用端末のIPアドレスであるためである。また、クライアントA1がユーザ利用端末のリゾルバであり、クライアントA1とDNSサーバB1が途中にルータを介さず直接接続されている場合は、クライアントA1のソースMACアドレスも同様にDNSクエリメッセージを送信したユーザを特定する手がかりとして利用することができる。
次に、ユーザ情報取得部B13は、ユーザ情報データベースB14からステップS1023で抽出した情報に該当するエントリを検索する(ステップS1024)。
ステップS1024において、対応するエントリが存在しない場合は、ステップS103の取得処理は終了する(ステップS1025)。
ステップS1024において、対応するエントリが存在した場合、ユーザ情報取得部B13は、対応するエントリの内容をもとに、ユーザ属性情報をローカルのユーザ情報データベースB14以外の情報源も参照して取得すべきか否かを判断する(ステップS1025、S1026)。ユーザ属性情報をローカルのユーザ情報データベースB14以外の他の情報源を参照して取得する必要がないと判断した場合は、ユーザ情報取得部B13はステップS1025で発見したエントリからユーザ属性情報を取得する(ステップS1027)。
他の情報源も参照してユーザ属性情報を取得すべきと判断した場合は、ユーザ情報取得部B13はステップS1025で発見したエントリからユーザ属性情報を取得するのに加えて、更にユーザ情報データベースB14以外の情報源も参照してユーザ属性情報の取得処理を行う。(ステップS1028)。
上記において、ローカルのユーザ情報データベースB14以外の情報源も参照して取得すべきか否かは、ユーザ情報データベースB14に外部のサーバ等の参照先が登録されているかどうかによって判断する。
例えば、ユーザ情報データベースB14が図2に示す内容である場合のステップS1025〜S1028の例を述べる。DNSクエリメッセージからユーザを特定する手がかりとなる情報としてソースIPアドレスを抽出し、そのIPアドレスが「123.45.0.2」であった場合、ユーザ情報取得部B13は、ユーザ情報データベースB14からIPアドレスが「123.45.0.2」となっているエントリを検索する(ステップS1025)。この場合発見されるエントリは1番目のエントリであり、その参照先は「―」となっているため、ユーザ情報取得部B13は、他のノード(外部のサーバ等)を参照せず、ユーザ情報データベースB14のみを参照して取得すると判断し(ステップS1026)、1番目のエントリに示されているユーザ属性情報を取得する(ステップS1027)。
DNSクエリメッセージのソースIPアドレスが「123.45.0.4」であった場合は、2番目のエントリが発見される。その参照先には、参照先のノードのIPアドレスが登録されているため、ユーザ情報取得部B13は、他のノードを参照すべきだと判断し(ステップS1026)、2番目のエントリに登録されているユーザ属性情報を取得するとともに、登録されているIPアドレスのノードが保持するユーザ属性情報のデータベースからもユーザ属性情報を取得する(ステップS1028)。
図4のフローチャートの説明に戻る。ユーザ情報識別部B12は、ステップS102におけるユーザ属性情報取得処理の後、DNSサーバB1が受信したDNSクエリメッセージと該メッセージ送信者のユーザ属性情報とを一緒に応答作成部B15へ渡す。ステップS102において、該メッセージ送信者のユーザ属性情報が取得できなかった場合は、対応するユーザ属性情報はないものとして該メッセージを取り扱い、該DNSクエリメッセージだけを応答作成部B15へ渡す。
応答作成部B15は、DNSクエリメッセージと対応するユーザ属性情報を一緒に渡された場合、DNSクエリメッセージで問い合わされたFQDN又はIPアドレス、及びユーザ属性情報に該当するエントリを、応答用データベースB16を参照して検索する(ステップS103)。DNSクエリメッセージだけを受け取った場合は、受け取ったDNSクエリメッセージで問い合わされたFQDN又はIPアドレスに該当するデフォルトのエントリを、応答用データベースB16を参照して検索する(ステップS103)。
応答作成部B15は、検索したエントリの内容から名前解決が他のDNSサーバで行われるべきか否かを判断する(ステップS104)。ここでは、図3に示す応答用データベースB16の名前解決テーブル201の参照先として他のDNSサーバのアドレスが登録されている場合に、名前解決が他のDNSサーバで行われるべきと判断される。
ステップS104において、他のDNSサーバで行われるべきであると判断した場合は、名前解決処理が他のDNSサーバによって行なわれるように処理する(ステップS106)。名前解決処理が他のDNSサーバで行われるように処理する方法の例として、以下の二つの方法が挙げられる。
第1の方法は、他のDNSサーバに、ユーザ情報識別部B12から渡されたユーザ属性情報とDNSクエリメッセージの両方またはDNSクエリメッセージのみを、転送する方法である。この方法を採用する場合の応答作成部B15の構成を図6に示す。
図6を参照すると、応答作成部B15は応答作成メイン部B151とリゾルバ部B152とを含む。応答作成メイン部B151は、上記のステップS103及びステップS104の処理を行い、ステップS104において名前解決が他のDNSサーバで行われるべきであると判断した場合、リゾルバ部B152に対して、ユーザ情報識別部B12から渡されたユーザ属性情報とDNSクエリメッセージの両方またはDNSクエリメッセージのみを渡し、さらに名前解決が行われるべき他のDNSサーバを通知する。リゾルバ部B152は、応答作成メイン部B151から渡された情報を元に、ユーザ属性情報とDNSクエリメッセージの両方またはDNSクエリメッセージのみの転送を行う。
リゾルバ部B152がユーザ属性情報とDNSクエリメッセージの両方を他のDNSサーバへ転送する方法としては、例えばDNSクエリメッセージをDNSメッセージのフォーマットに従って構築し、その中にユーザ属性情報を埋め込んで送信する方法が考えられる。DNSメッセージのフォーマットには、付加的な情報を埋め込むために付加情報部と呼ばれるフィールドが用意されており、付加情報部には任意の情報をDNSの資源レコードの形式で埋め込むことができる。
この方法では、受け取ったユーザ属性情報を資源レコードの形式にエンコードし、それをDNSクエリメッセージの付加情報部に埋め込み、他のDNSサーバに転送する(ステップS106)。そしてリゾルバ部B152は、該DNSクエリメッセージを転送した他のDNSサーバから、対応するDNS応答メッセージを受信すると、それを応答送信部B17に渡し、応答送信部B17が該応答メッセージをクライアントA1へ転送する(ステップS107)。
この転送方法をとることで、ユーザ属性情報が埋め込まれたDNSクエリメッセージを従来のDNSサーバにおいて処理することも可能となるため、本発明によるDNSサーバB1とそれ以外の従来からのDNSサーバの共存を図ることができる。
第2の方法は、クライアントA1に、名前解決が他のDNSサーバで行われるべき旨を通知するメッセージをDNS応答メッセージとして返し、通知を受け取ったクライアントA1が改めて他のDNSサーバにDNSクエリメッセージを送信する方法である。この場合、応答送信部B17は、クライアントA1が改めてDNSクエリメッセージを送信すべき他のDNSサーバのIPアドレスを含むDNS応答メッセージをクライアントA1へ送信する(ステップS107)。
一方、ステップS104において、応答作成部B15が、自サーバにおいて名前解決を行うべきであると判断した場合は、検索したエントリの内容に従って、FQDN→IPアドレスまたはIPアドレス→FQDNの名前解決を行い(ステップS105)、その結果を応答送信部B17に渡す。
応答送信部B17は、受け取った名前解決結果を元にDNS応答メッセージを生成し、それをクライアントA1へ送信する(ステップS107)。
以上の第1の実施の形態の説明においては、DNSサーバB1はユーザ情報データベースB14をその構成要素として含むものであった。他の構成として、ユーザ情報データベースB14がDNSサーバB1内ではなく別のサーバ内に保持される形態も考えられる。この場合の構成を第1の実施の形態の他例として図7に示す。
この他例では、先に示した図1の構成と比べ、先に示したDNSサーバB1の代わりに、ユーザ情報データベースB14を含まないDNSサーバB2が用いられ、さらに、ユーザ情報データベースD11をその構成要素として含むデータベースサーバD1が用いられる。
図7に示す構成におけるDNSサーバB2の動作については、上述したDNSサーバB1の動作においてユーザ情報データベースB14をユーザ情報データベースD11と置きかえることにより同様に考えることができる。
データベースサーバD1の機能は、専用のノードにより実現することも、他のDNSサーバB1またはB2の一機能として実現することも可能である。後者の場合、ユーザ情報データベースD11は応答用データベースB16として管理され、ユーザ情報取得部B13は当該他のDNSサーバB1またはB2に対してDNSメッセージを用いてユーザ属性情報を取得することになる。
この場合の応答用データベースB16の内容例を図8に示す。図8に示す名前解決テーブル301は、図3に示した名前解決テーブル201と同様の形式をとっており、ユーザ属性情報は3番目のエントリを参照することで取得される。3番目のエントリは、ユーザ属性情報がファイルuser_com.dat(ゾーンファイル302)に格納されていることを示している。ゾーンファイル302には、図2に示したユーザ情報データベースB14と同じユーザ属性情報が格納されており、ユーザ属性情報はユーザの利用端末のIPアドレスを含むFQDNをキーとして、DNSの資源レコードの一種であるTXTレコードの形で格納されている。
例えば、ゾーンファイル302の1番目のエントリからは、利用端末のIPアドレスが「123.45.0.2」であるユーザのユーザ属性情報として、ログインIDがtaro(login id=taro)、接続回線種別がADSL回線(access media=ADSL)、接続しているNASのIPアドレスが「30.30.30.30」(NAS address=30.30.30.30)であることが分かる。ユーザ情報取得部B13は、利用端末のIPアドレスが「123.45.0.2」であるユーザのユーザ属性情報を取得したい場合、データベースサーバD1に対して、ドメイン名が「123.45.0.2.user.com」のTXTレコードを要求するDNSクエリメッセージを送信する。
次に第1の実施の形態の効果について説明する。
本実施の形態では、DNSサーバB1が、ユーザ属性情報が管理されているユーザ情報データベースB14を参照することにより、ユーザ属性情報を考慮した名前解決処理のカスタマイズを行う。ユーザ情報データベースB14に予めユーザ属性情報を登録しておけば、DNSサーバB1は、ユーザ情報データベースB14を参照することで、任意のユーザ属性情報を考慮した名前解決処理を行うことができる。
前述のように、従来の技術では、DNSサーバがユーザに関する属性情報として利用できるのは、受信したDNSクエリメッセージのソースIPアドレスだけであった。もしくは、その他の属性情報も利用しようとする場合は、クライアントが送信するDNSクエリメッセージ内に必要な属性情報を全て埋めこむ必要があり、クライアントにおけるリゾルバの変更が必要であった。
本実施の形態では、DNSサーバB1はユーザ情報データベースB14を参照することにより、クライアントにおけるリゾルバの変更の必要がない。また、DNSサーバごとに考慮するユーザ属性情報の種類が異なる場合でも、従来技術では対応が困難であったが、本実施の形態によりユーザ情報データベースB14に登録するユーザ属性情報の種類をDNSサーバごとに変えるだけで柔軟かつ容易に実現できる。
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
図9を参照すると、本発明の第2の実施の形態は、図1の第1の実施の形態で示されたクライアントA1とネットワークC1に加え、本発明によるDNSサーバB3と認証サーバE1とを備えて実現される。
本発明の第2の実施の形態では、ユーザ情報データベースB14の管理を、DNSサーバB3の構成要素であるユーザ情報管理部B18が認証サーバE1と連携することによって自動的に行う点が、本発明の第1の実施の形態と異なる。以下、クライアントA1、DNSサーバB3、認証サーバE1から構成されるシステムを本システムと呼ぶ。
認証サーバE1は、システム内のユーザ(クライアントA1)の認証要求に応じてユーザ認証を行い、ユーザのシステムへのログインを許可または禁止する。ここでのシステムとは、本システムに限らず、例えばISPが運営するネットワークやASP(Application Service Provider)が運営する会員制WEBサービスなど、利用する際にユーザ認証が行われるもの全般を指す。本システム内のユーザは、ここでのシステムのユーザの一部若しくは全てである。
認証サーバE1は、ユーザ認証を行うとともに、認証要求を送信したユーザ(クライアントA1)がシステムにログインしたのかログアウトしたのかというユーザのログイン状況を把握し、さらにユーザ属性情報を収集し、これらの情報をログとして保持する。認証サーバE1が収集するユーザ属性情報の例としては、第1の実施の形態の説明で述べたのと同様に、ユーザ(クライアントA1)の位置情報、趣味若しくは行動履歴などの嗜好に関する情報、携帯電話やPDA、ノートパソコンといった利用端末種別、利用端末にインストールされているOS、装備されているネットワークインタフェースやCPU速度、メモリ量といった利用端末に関する情報、利用端末のIPアドレス、ADSL回線やISDN回線といった接続回線種別、接続回線速度、接続しているNASのIPアドレスといったネットワークへの接続状況に関する情報などが挙げられる。
認証サーバE1の例としては、ISP等でユーザ認証および課金処理に広く利用されているRADIUSサーバが挙げられる。RADIUSサーバは、RADIUSプロトコルによるユーザ認証処理において、ユーザから受信した認証要求に含まれるIDとパスワードを元にユーザの認証を行い、ユーザのログインを許可または禁止する。RADIUSプロトコルは、ISPが運用するネットワークに限らず、多くのネットワークシステムにおいてユーザ認証に用いられている。
また、RADIUSサーバには、ユーザがネットワークシステムにログインまたはログアウトする度に、ユーザのログイン状況及びユーザ属性情報が、NASなどのRADIUSクライアントから送信される。RADIUSサーバは、これらの情報を課金やバックトレースの目的で収集し、Account Logとして保持する。RADIUSクライアントがRADIUSサーバに送信するユーザ属性情報としては、例えばユーザのISPのログインID、ユーザが利用している端末のIPアドレス、ユーザが接続しているNASのIPアドレス、接続回線種別などが含まれる。
ユーザ情報管理部B18は、認証情報取得部B181とユーザ情報更新部B182とを含む。
認証情報取得部B181は、ユーザのログイン状況の変化を検出し、認証サーバE1からユーザのログイン状況を示す情報及びユーザ属性情報を取得し、これらの情報をユーザ情報更新部B182に渡す。ユーザのログイン状況の変化の検出と、ユーザのログイン状況を示す情報及びユーザ属性情報の取得を実現する方法の例として、次の2つの方法が挙げられる。
第1の方法は、認証サーバE1がユーザのログイン状況の変化を検出した際に、ユーザのログイン状況を示す情報とユーザ属性情報とを認証サーバE1から認証情報取得部B181に通知してもらう方法である。
第2の方法は、認証情報取得部B181が、認証サーバE1にユーザのログイン状況を問い合わせることによって、ユーザのログイン状況の変化を検出し、ログイン状況の変化を検出した際に、認証サーバE1からユーザのログイン状況を示す情報とユーザ属性情報を取得する方法である。
第1の方法では、認証情報取得部B181は認証サーバE1からの通知を待つという受動的な処理で、ユーザのログイン状況の変化を検出するのに対し、第2の方法では、ユーザのログイン状況の変化を検出するために、認証情報取得部B181が認証サーバE1にユーザのログイン状況を問い合わせるという能動的な処理を行う。
以下、それぞれの方法の具体例について述べる。
まず、第1の方法の具体例としては、RADIUSプロトコルのProxy機能及びRelay機能を利用する方法が挙げられる。Proxy機能は、RADIUSサーバがRADIUSクライアントからユーザのログイン状況及びユーザ属性情報を受信する度に、これらの情報を他のノードへ転送する機能である。Proxy機能は標準化された機能であり、現在利用されているRADIUSサーバのほぼ全てに実装されている。
Proxy機能を用いてユーザのログイン状況及び属性情報を取得する場合のシーケンスの例を図10に示す。図10ではユーザがシステムにログインした際のシーケンス例を示している。なお、図10において認証サーバE1はRADIUSサーバである。ユーザ認証が成功し、ユーザがシステムにログインすると、RADIUSクライアントから認証サーバE1に対して、Accounting Requestメッセージが送信される。
Accounting Requestメッセージには、ユーザ属性情報が、属性=属性値の形で含まれている。図に示した例では、Accounting Requestメッセージに、ユーザIDがtaro((1)User Name = taro)、NASのIPアドレスが「30.30.30.30」((4)NAS−IP−Address = 30.30.30.30)、ユーザ利用端末のIPアドレスが123.45.0.2((8)Framed−IP−Address = 123.45.0.2)、接続回線種別がADSL((61)NAS−Port−Type=ADSL)であることを示す情報が含まれる。また、ユーザがシステムにログインした旨を示す情報((40)Acct−Status−Type=Start )も含まれる。
認証サーバE1はAccounting Requestメッセージを受信すると、Proxy機能を利用して、受信したAccounting Requestメッセージをユーザ情報管理部B18へ送信する。ユーザ情報管理部B18は受信したAccounting Requestメッセージからユーザ属性情報を取得する。ユーザ情報管理部B18は、Accounting Requestメッセージを受信後、認証サーバE1に対してAccounting Responseメッセージを送信する。
次に、Relay機能を用いたユーザ情報の取得について説明する。Relay機能は、Account Logに新たなログが追加されるたびに、RADIUSサーバがそれを他のノードへ送信する機能である。Relay機能はデファクト化された機能であり、多くのRADIUSサーバに実装されている。
Relay機能を用いてユーザのログイン状況及び属性情報を取得する場合のシーケンスの例を図11に示す。図11では、ユーザがシステムにログインした際のシーケンスを示している。なお、図11において認証サーバE1はRADIUSサーバである。ユーザ認証が成功し、ユーザがシステムにログインすると、認証サーバE1が保持するAccount Logに新たなログが追加される。認証サーバE1は新たに追加されたログを元に、Accounting Requestメッセージを生成し、これをユーザ情報管理部B18へ送信する。
図11では、Accounting Requestメッセージに、ユーザIDがtaro((1)User Name = taro)、NASのIPアドレスが「30.30.30.30」((4)NAS−IP−Address = 30.30.30.30)、ユーザ利用端末のIPアドレスが123.45.0.2((8)Framed−IP−Address = 123.45.0.2)、接続回線種別がADSL((61)NAS−Port−Type=ADSL)であることを示す情報が含まれる。また、ユーザがシステムにログインした旨を示す情報((40)Acct−Status−Type=Start )も含まれる。ユーザ情報管理部B18は受信したAccounting Requestメッセージからユーザ属性情報を取得する。ユーザ情報管理部B18は、Accounting Requestメッセージを受信後、認証サーバE1に対してAccounting Responseメッセージを送信する。
次に、第2の方法の具体例を説明する。認証情報取得部B181は、定期的にユーザのログイン状況を問い合わせるメッセージを認証サーバE1に送信し、ユーザのログイン状況に変化があるか否かを確認する。ユーザのログイン状況に変化がある場合には、認証サーバE1に対して、ユーザのログイン状況を示す情報とユーザ属性情報の送信を要求する。
第2の方法の更に具体的な例としては、NFS(Network File System)機能を用いる方法とSNMP(Simple Network Management Protocol)を用いる方法が挙げられる。NFSは、TCP/IP環境で一般的に使用されるネットワーク経由のファイルサービスであり、ネットワークで接続されている他のノードが保持するファイルを、自ノード上にマウントすることにより、あたかもローカルファイルのように扱えるようにする機能を持つ。NFS機能を用いる方法では、ユーザ情報管理部B18が、認証サーバE1が保持するユーザのログイン状況とユーザ属性情報を含むログファイルを、マウントする。認証情報取得部B181は、自ノード上にマウントされているログファイルを定期的にチェックすることにより、ユーザのログイン状況の変化を検出する。ユーザのログイン状況の変化を検出した場合は、マウントされているログファイルから、ログイン状況が変化したユーザ属性情報を取得する。
一方、SNMPはTCP/IPネットワーク環境で、他のノードの管理及び監視を行うためのプロトコルである。管理する側の「SNMPマネージャ」と管理される側の「SNMPエージェント」の2つでMIB(Management Information Base)と呼ばれる管理情報を交換することで、他のノードの管理が行なわれる。SNMPを用いる方法では、認証情報取得部B181がSNMPマネージャとなり、認証サーバE1をSNMPエージェントとして、認証サーバE1のMIBのうち、ユーザのログイン状況を示す部分を定期的にチェックする。ユーザのログイン状況の変化を検出した場合は、認証サーバE1のMIBから、ログイン状況が変化したユーザ属性情報に該当する部分を取得する。
ユーザ情報更新部B182は、認証情報取得部B182から渡された情報を基に、ユーザ情報データベースB14の管理を行う。例えば、本システムにログインしたユーザのユーザ属性情報をユーザ情報データベースB14に追加したり、逆にログアウトしたユーザのユーザ属性情報をユーザ情報データベースB14から削除したりする。
次に、第2の実施の形態の動作を図面を参照して詳細に説明する。なお、DNSサーバB1がクライアントA1からDNSクエリメッセージを受信してからDNS応答メッセージを送信するまでの動作は、図4で示した第1の実施の形態における動作と同一のため説明は省略する。以下、図12を参照して、ユーザ情報管理部B18における、ユーザ情報データベースB14の管理について詳細に説明する。
認証情報取得部B181は、ユーザのログイン状況の変化を検出すると(図12のステップS201)、当該ログイン状況の変化がユーザのログインかログアウトかを判断する(ステップS202)。
ユーザがシステムへログインした場合は、認証サーバE1からユーザのログイン状況を示す情報とユーザ属性情報を取得し、これらの情報をユーザ情報更新部B182に渡す(ステップS203)。ユーザ情報更新部B182は、ユーザのログイン状況を示す情報を調査し、ユーザ属性情報をユーザ情報データベースB14に追加登録する(ステップS204)。
ステップS202で、ユーザがシステムからログアウトした場合は、認証情報取得部B181が認証サーバE1からユーザのログイン状況を示す情報とユーザ属性情報を取得し、これらの情報をユーザ情報更新部B182に渡し(ステップS205)、ユーザ情報更新部B182がユーザ属性情報を元にユーザ情報データベースB14からユーザに該当するエントリを検索し、そのエントリを削除する(ステップS206)。
以上の第2の実施の形態の説明において、DNSサーバB1はユーザ情報データベースB14をその構成要素として含むものであった。他の構成として、第1の実施の形態と同様に、ユーザ情報データベースB14がDNSサーバB1内ではなく別のサーバ内に保持される形態も考えられる。この場合の構成を第2の実施の形態の他例として図13に示す。
図13に示す構成では、先に示した図9の構成と比べ、先に示したDNSサーバB3の代わりに、ユーザ情報データベースB14を含まないDNSサーバB4が用いられ、さらに、ユーザ情報データベースD11をその構成要素として含むデータベースサーバD1が用いられている。
なお、図13に示す構成において、従来のDNSサーバまたは本発明におけるDNSサーバB1、B2、B3、B4(後述する第3の実施の形態におけるDNSサーバB5も含む)をデータベースサーバD1の用途として用いてもよい。この場合、DNSサーバにおける応答用データベースB16がユーザ情報データベースD11として用いられる。
また、この場合、ユーザ情報更新部B182がユーザ情報データベースD11に対してユーザ属性情報を更新する方法として、DNS Dynamic Updateを用いる方法が考えられる。DNS Dynamic Updateとは、DNSサーバが保持するデータベースに対して、エントリの追加及び削除を他のノードから行うための方式である。DNS Dynamic Updateを行うノードは、追加または削除を行う情報をDNSで規定されている資源レコードの形式にエンコードし、これを埋め込んだメッセージをDNSサーバに送信する。DNSサーバはメッセージを受信すると、保持する応答用データベースに対してエントリの追加または削除を行う。
DNS Dynamic Updateを用いる方法では、ユーザ情報更新部B182が、認証情報取得部B181から渡されたユーザ属性情報をDNSの資源レコードにエンコードし、これを埋め込んだメッセージをDNSサーバに送信する。DNSサーバは、メッセージを受信すると、応答用データベース(ユーザ情報データベースD11に対応)に対して、メッセージに埋め込まれた資源レコードに該当するエントリを追加または削除する。作成される応答用データベース内のエントリの例として、図8に示したゾーンファイル302が挙げられる。
図13に示す構成におけるDNSサーバB4の動作については、上述したDNSサーバB3の動作において、ユーザ情報データベースB14をユーザ情報データベースD11と置き換えることにより、同様に考えることができる。
次に、第2の実施の形態の効果について説明する。
DNSサーバが名前解決をカスタマイズするために必要なユーザ属性情報を取得して管理するにあたって、該属性情報を人的に管理するのは非常に手間とコストがかかることになる。
例えば、ISP(Internet Service Provider)網には膨大な数のユーザが存在し、さらに個々のユーザの属性情報(位置、IPアドレス、接続回線種別など)は動的に変化するため、これを人的に管理するのは極めて困難となる。
本実施の形態では、ユーザ情報管理部B18が、認証サーバE1と連携することにより、ユーザ情報データベースB14の管理を行う。ユーザ情報データベースB14に対するユーザ属性情報の登録及び削除が、ユーザ情報管理部B18により自動的に行われる。このため、ユーザ情報データベースB14の設定管理(ユーザ属性情報の登録及び削除)に要する手間やコストを第1の実施の形態と比較して低減することができる。
また、本実施の形態では、認証情報取得部B181は認証サーバE1からユーザ情報を取得するが、ユーザ情報の取得にあたり、認証サーバに特別な機能を必要とならない。ユーザ情報を取得する方法として、上記ではRADIUSサーバのProxy機能またはRelay機能を用いる方法、NFSを用いる方法及びSNMPを用いる方法を例として示したが、これらの機能は標準化またはデファクト化された機能であり、今日利用されている多くの認証サーバにおいて設定変更を行うのみで利用可能な機能である。したがって本システムを既存のシステムに導入する際、新たな認証サーバを設置したり、既存の認証サーバを専用の認証サーバに置き換えたりするなどの導入コストが必要ない。また、本システム導入後も、同一の認証サーバで認証処理やログの収集が行われるため、既存のシステムにおける認証処理や課金処理などの運用形態を変更するためのコストが発生しない。
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。
図14を参照すると、本発明の第3の実施の形態は、図9の第2の実施の形態で示されたクライアントA1と認証サーバE1に加え、DNSサーバB5とパケット転送装置F1とを備えて実現される。DNSサーバB5と認証サーバE1とパケット転送装置F1は、ネットワークC1によって相互接続される。クライアントA1がネットワークC1側と送受信するパケットは、必ずパケット転送装置E1を経由する。ここでパケット転送装置とは、イーサネット(R)スイッチ、ATMスイッチ、ルータ、レイヤ4スイッチ、レイヤ7スイッチなど、パケットの転送処理機能をもつ装置全般を指す。
DNSサーバB5は、図1に示した第1の実施の形態におけるDNSサーバB1の構成と比べ、ユーザ情報取得部B13およびユーザ情報データベースB14をその構成要素として必要としない点が異なる。以下、DNSサーバB5を含む構成について説明するが、DNSサーバB5の代わりに第1、第2の実施の形態で示したDNSサーバB1、B2、B3、B4のいずれかを用いてもよい。
また、応答用データベースB16において登録される内容例を図15に示す。この応答用データベースB16には、名前解決テーブル401、ゾーンファイル402、403が含まれている。名前解決テーブル401およびゾーンファイル402(または403)はそれぞれ、本発明の第1の実施の形態において説明した図3における名前解決テーブル201およびゾーンファイル202(または203)に対応するものである。
ここで、第3の実施の形態では、ユーザ属性情報として、第1、第2の実施の形態で述べたユーザ属性情報の例に加えて、パケット転送装置に関する属性情報を含めて取り扱うものとする。すなわち、名前解決テーブル401は、名前解決テーブル201と比べ、ユーザ属性情報として、ユーザIDや接続回線種別といった属性情報だけではなく、パケット転送装置F1に関する属性情報を含み、このパケット転送装置F1に関する属性情報毎にも名前解決方法の参照先が登録できる点が異なる。ここで、パケット転送装置F1に関する属性情報の例として、パケット転送装置F1の識別子(ID)、パケット転送装置F1がサポートする転送方法(例として、イーサネット(R)のvlanをサポートするか、URLベースのスイッチングをサポートするか、など)などの情報が挙げられる。
図15に示す名前解決テーブル401では、ユーザ属性として、ユーザID、接続回線種別、グループIDといった属性情報だけではなく、パケット転送装置IDを含み、このパケット転送装置ID毎にも名前解決方法の参照先が登録できるようになっている。また、ゾーンファイル402(または403)は、ゾーンファイル202(または203)で示したフィールド(Type,FQDN,Data)に加え、各エントリにおける付加的な情報を格納するフィールド(Additional Data)をもつ点が異なる。
本実施の形態では、この付加的な情報を格納するフィールドを、パケット転送装置F1におけるパケットに対する転送方法を格納するために用いる。パケットに対する転送方法の例として、該パケットを転送する優先度(パケット転送優先度)、該パケットが転送されるべき論理ネットワーク(VPN(Virtual Private Network)、vlanなど)のID(論理ネットワークID)、該パケットが転送される論理チャネル(ATMのVCI(Virtual Channel Identifier)、MPLS(MultiProtocol Label Switching)のLSP(Label Switched Path)など)のID、該パケットのヘッダに対する書き換え・追加・削除の方法、などが挙げられる。
ゾーンファイル402における1番目のエントリでは、www.ddd.comに対するAレコードの応答は「20.1.1.1」であり、さらに、クライアントA1が該エントリを参照した結果送信する、宛先IPアドレスが「20.1.1.1」であるパケットに対して、パケット転送装置F1において、ソースIPアドレス(SrcIPAddr)を「40.1.1.1」に書換え、MACヘッダ内のvlan−ID(vlanID)を「111」に書換え、出力ポート21から、通常の転送優先度(priority)で転送するという転送方法を用いるということを示している。
応答作成部B15は、DNSクエリメッセージに対するDNS応答メッセージを作成するときに、参照される応答用データベースB16内のエントリにおいてAdditional Dataフィールドが登録されている場合は、作成されるDNS応答メッセージ内に、Additional Dataに記されている内容を格納する。この格納方法として、先に述べたDNSメッセージにおける付加情報部にAdditional Dataに記されている内容を格納するなどの方法が挙げられる。
DNS応答メッセージにおける付加情報部にAdditional Dataに記されている内容を格納することにより、該応答メッセージは、クライアントA1から問合わせされたFQDNに対するIPアドレス(またはその他のリソースレコードデータ)だけではなく、パケット転送装置F1におけるクライアントA1から該IPアドレス宛てに送信されたパケットに対する転送方法も同時に含むことができる。
パケット転送装置F1は、ユーザ認証部F11と、ユーザ情報更新部F12と、ユーザ情報データベースF13と、ユーザ情報取得部F14と、DNSプロキシ部F15と、ルーティングテーブルF16と、フォワーディング部F17とを含む。
ユーザ認証部F11は、パケット転送装置F1に対して接続するクライアントA1におけるユーザを識別、認証する機能を有する。さらに、認証時に得られたユーザのさまざまなユーザ属性情報を、ユーザ情報更新部F12を介してユーザ情報データベースF13に格納する。パケット転送装置F1においてユーザ認証を行う代表的な例として、イーサネット(R)スイッチにおいて標準化されているユーザ認証機構であるIEEE 802.1xが挙げられる。
パケット転送装置F1がIEEE 802.1xをサポートする場合、クライアントA1上のユーザのユーザID、パスワードなどの情報を基にして、ユーザ認証部F11が認証サーバC1とRADIUSプロトコルを用いて通信を行って認証を行うことにより、クライアントA1がネットワークC1側と通信することを許可すべきかどうか判定する。
ユーザ情報更新部F12は、ユーザ認証部F11から渡された情報を基に、ユーザ情報データベースF13の管理を行う。例えば、パケット転送装置F1にログインして通信を行うユーザのユーザ属性情報をユーザ情報データベースF13に追加し、逆にログアウトしたユーザのユーザ属性情報をユーザ情報データベースF13から削除するといった処理を行なう。
ユーザ情報データベースF13は、ユーザ認証部F11が認証したユーザのユーザ属性情報を格納するデータベースである。ユーザ情報データベースF13に格納されるユーザ属性情報の例は、第1の実施の形態で述べたユーザ属性情報の例と同様である。ユーザ情報データベースの例を、図16のユーザ情報データベース501に示す。ユーザ情報データベース501では、パケット転送装置F1が受信したパケットに対応する入力ポートおよびソースMACアドレスに対して、該パケットのユーザID,接続回線種類、接続回線速度、グループIDが記述されている。
例えば、1番目のエントリでは、入力ポートが「02」で、ソースMACアドレスが「00:12:34:56:78:9a」であるパケットに対しては、該パケットの送信者のユーザIDが「taro」であり、接続している回線の種類がイーサネット(R)であり、その速度が100Mbpsであり、該パケット送信者が含まれるグループのIDが「silver」であることを示している。
ユーザ情報取得部F14は、DNSプロキシ部F15内のクエリ書換部F151において受信したDNSクエリメッセージの送信者に対応するユーザ属性情報を、ユーザ情報データベースF13から取得し、該ユーザ属性情報をクエリ書換部F151へ渡す機能を有する。
DNSプロキシ部F15は、クライアントA1とDNSサーバB5との間に流れるDNSクエリメッセージおよびDNS応答メッセージに対してその内容を読み込んで解析し、メッセージの内容を書きかえて送信する機能を有する。DNSプロキシ部F15は、その構成要素として、クエリ書換部F151と応答解析部F152とを含む。
クエリ書換部F151は、クライアントA1がDNSサーバB5へ向けて送信したDNSクエリメッセージに対して、該DNSクエリメッセージを送信したユーザに関するユーザ属性情報を該DNSクエリメッセージに対して付加してDNSサーバB5へ送信する機能を有する。この際に必要に応じてユーザ属性情報にパケット転送装置F1に関する属性情報を含めることができる。ここで、該DNSクエリメッセージを送信したユーザに関するユーザ属性情報は、ユーザ情報取得部F14を介してユーザ情報データベースF13から取得され、必要に応じてパケット転送装置F1に関する属性情報が付加される。
応答解析部F152は、DNSサーバB5がクライアントA1へ向けて送信したDNS応答メッセージから、該メッセージ内に埋めこまれたパケット転送方法を抽出する機能を有する。さらに、抽出したパケット転送方法に対応するエントリをルーティングテーブルF16に登録する。
ルーティングテーブルF16は、フォワーディング部F17が受信したパケットの転送方法が格納されたデータベースである。ルーティングテーブルF16が示すテーブルの例として、ルータにおける受信パケットの転送方法が格納されたテーブル、イーサネット(R)スイッチにおけるスイッチング方法が格納されたテーブル、などが挙げられる。ルーティングテーブルF16内のエントリは、従来のように、静的に設定されたりあるいはルーティングプロトコルによって動的に得られた情報を基に作成される方法の他に、応答解析部F152によって作成されることも可能である。
ルーティングテーブルF16の内容例を図17に示す。ルーティングテーブルF16における2番目のエントリでは、パケット転送装置F1が受信したパケットの入力ポート、ソースMACアドレス、宛先IPアドレス、vlan−IDがそれぞれ「11」、「00:bc:de:f0:12:34」、「60.1.1.1」、「200」である場合に、該パケットに対して、ソースIPアドレス、宛先IPアドレス、vlan−IDをそれぞれ、「40.1.1.1」、「90.1.1.1」、「333」に書換え、出力ポート「31」から送信するということを示している。さらに、優先度が「優先」となっており、パケット転送の優先度を高くして送信することを示している。
フォワーディング部F17は、パケット転送装置F1が受信したパケットの転送方法を解決し、該転送方法に基づいて該パケットを転送する機能を有する。ここで受信したパケットの転送方法は、ルーティングテーブルF16を参照することにより解決される。
次に、本実施の形態において、クライアントA1がDNSクエリメッセージをDNSサーバB5に対して送信し、対応するDNS応答メッセージがクライアントA1へ返されるまでのパケット転送装置F1およびDNSサーバB5の動作を図面を参照して詳細に説明する。
まず、クライアントA1がDNSサーバB5へDNSクエリメッセージを送信した際のパケット転送装置F1における動作を図18のフローチャートを参照して説明する。
クライアントA1がDNSクエリメッセージをネットワークC1側へ送信すると、パケット転送装置F1は該メッセージを検出し、該メッセージを受信する。パケット転送装置F1によって受信されたDNSクエリメッセージは、DNSプロキシ部F15内のクエリ書換部F151へと渡される(図18のステップS301)。
ここで、該メッセージには、宛先IPアドレスとしてDNSサーバB5のIPアドレスが指定されているため、該メッセージだけを通常のパケットと同様に転送せずにクエリ書換部F151へ渡す方法が必要となる。この方法として、DNSクエリメッセージであることを示す特定のポート番号をもつパケットだけをクエリ書換部F151へ渡す(一般的にDNSクエリメッセージは宛先ポート番号53番であるパケットであることを基に識別できる)、などの方法がある。
次に、クエリ書換部F151において、受信したDNSクエリメッセージの送信者のユーザ属性情報をユーザ情報データベースF13を参照することにより検索する(ステップS302)。
例えば、ユーザ情報データベースF13が、図16に示したユーザ情報データベース501と同じエントリを格納しているとすると、ポート11から受信し、ソースMACアドレスが「00:bc:de:f0:12:34」であるDNSクエリメッセージは、ユーザ情報データベースF13を参照することにより、送信者のユーザIDが「hanako」であり、接続回線の種類がイーサネット(R)であり、接続回線の速度が10Mbps等のユーザ属性情報が検索される。グループIDの項目は「―」となっており、グループIDが不明であるか、あるいは取得する必要のない属性であることを示している。
ステップS302におけるユーザ属性情報の検索の結果、受信したDNSクエリメッセージの送信者に対応するユーザ属性情報が存在する場合、クエリ書換部F151で対応するユーザ属性情報を該DNSクエリメッセージに付加し、該メッセージをDNSサーバB5へ送信する(ステップS303、S304)。
ステップS304において、ユーザ情報データベースF13を参照して解決したユーザ属性情報の他、ユーザ属性情報としてパケット転送装置F1に関する属性情報を該DNSクエリメッセージに対して付加する必要があれば、パケット転送装置F1に関する属性情報も該メッセージに付加し、DNSサーバB5へ送信する。例えば、ユーザ情報データベースF13を参照して解決したユーザ属性情報の他に、パケット転送装置F1のIDを該メッセージに対して付加する。
ステップS302におけるユーザ属性情報の検索の結果、受信したDNSクエリメッセージの送信者に対応するユーザ属性情報が存在しなかった場合、クエリ書換部F131は該メッセージに対しては何も情報を付加することなくそのままDNSサーバB5へ送信する(ステップS303、S305)。
次に、DNSサーバB5がパケット転送装置F1を経由してDNSクエリメッセージを受信した際のDNSサーバB5における動作について図19を参照して説明する。
まず、クエリ受信部B11がDNSクエリメッセージを受信すると(図19のステップS401)、該メッセージをユーザ情報識別部B12へ渡す。
ユーザ情報識別部B12は、受け取ったDNSクエリメッセージ内に、送信者のユーザ属性情報が埋めこまれているかどうかを識別する(ステップS402)。
ステップS402の結果、該メッセージ内に、送信者のユーザ属性情報が埋めこまれている場合は、埋めこまれている送信者のユーザ属性情報を読み出し識別し、識別したユーザ属性情報と一緒に該メッセージを応答作成部B15へ渡す(ステップS403)。
ステップS402の結果、該メッセージ内に、送信者のユーザ属性情報が埋めこまれていない場合は、該メッセージに対応する送信者のユーザ属性情報はないものとして該メッセージを応答作成部B15へ渡す。
ステップS402、S403の後、ステップS404〜ステップS408の動作については、第1の実施の形態において説明した図4のステップS103〜ステップS107と同様である。
また、ステップS408では、応答作成部B15が作成したDNS応答メッセージにおいて、パケット転送装置F1におけるパケット転送方法も同時に付加されている場合、応答送信部B17はパケット転送装置F1におけるパケット転送方法を含むDNS応答メッセージをクライアントA1に対して送信する。
次に、パケット転送装置F1がDNSサーバB5からDNS応答メッセージを受信したときの動作を図20のフローチャートを参照して説明する。
DNSサーバB5がDNS応答メッセージをクライアントA1へ送信すると、パケット転送装置F1は該メッセージを検出し、該メッセージを受信する。パケット転送装置F1によって受信されたDNS応答メッセージは、DNSプロキシ部F15内の応答解析部F152へと渡される(図20のステップS501)。
ここで、該メッセージには、宛先IPアドレスとしてクライアントA1のアドレスが指定されているため、該メッセージだけを通常のパケットと同様に転送せずに応答解析部F152へ渡す方法が必要となるが、この方法に関しては、図18のステップS301の動作の説明で述べた方法と同様に考えられる(DNS応答メッセージはソースポート番号53番であるパケットであることを基に識別できる)。
次に、応答解析部F152は、受信したDNS応答メッセージの内容を調べ、該メッセージにパケット転送装置F1におけるパケット転送方法が埋めこまれているかどうかを調べる(ステップS502)。
ステップS502の結果、パケット転送方法が埋めこまれている場合、応答解析部F152は埋めこまれたパケット転送方法を読み出す(ステップS503)。以下、DNSサーバB5において、図15に示したゾーンファイル402における1番目のエントリを用いてDNS応答メッセージが作成され、該メッセージがDNSサーバB5からクライアントA1へ送信された場合について説明する。
次に、応答解析部F132はルーティングテーブルF16内に登録されているエントリを参照し、受信したDNS応答メッセージ内に埋めこまれたパケット転送方法から作成されるエントリと同一のエントリが存在するかどうか調べる(ステップS504、S505)。
ステップS505の結果、同一の転送方法を示すエントリが存在しない場合、応答解析部F152は、ルーティングテーブルF16に対して、受信したDNS応答メッセージ内に埋めこまれたパケット転送方法に対応するエントリを作成する(ステップS506)。
ここで、ルーティングテーブルF16に対してパケット転送方法を示すエントリを作成する例を示す。DNSサーバB5が、図15に示した応答用データベースB16におけるゾーンファイル402の1番目のエントリを用いてDNS応答メッセージを作成し、クライアントA1へ向けて送信された該メッセージをパケット転送装置F1が受信したとする。さらに、該メッセージの送信先であるクライアントA1のMACアドレスが「00:12:34:56:78:9a」であり、クライアントA1とパケット転送装置F1との間は、パケット転送装置F1のポート「02」を経由し、vlan−IDが「100」のイーサネット(R)vlanを用いて転送されるとすると、図17に示したルーティングテーブルF16における1番目のエントリが作成される。
ステップS505の結果、同一の転送方法を示すエントリが存在する場合は、重複するエントリを作成することを避けるために、ステップS506の動作はスキップする。
次に、応答解析部F152は、受信したDNS応答メッセージ内に埋めこまれたパケット転送方法を該メッセージから削除し(ステップS507)、該メッセージをクライアントA1に対して転送する(ステップS508)。
ステップS502の結果、パケット転送方法が埋めこまれていない場合は、応答解析部F152は、受信したDNS応答メッセージをそのままクライアントA1に対して転送する(ステップS508)。
以上で図14を用いて説明した本実施の形態において、パケット転送装置F1内のユーザ情報データベースF13は、ユーザ認証部F11と認証サーバE1との間での認証時に得られたユーザ属性情報をユーザ認証部F11がユーザ情報更新部F12を介して格納することによって作成された。この他にも、パケット転送装置F1の管理者などによって、外部から手動でユーザ情報データベースF13内にユーザ属性情報が書きこまれる形態も考えられる。この場合、ユーザ認証部F11およびユーザ情報更新部F12および認証サーバE1は本実施の形態における構成要素としては必要ない。
また、図14を用いて説明した第3の実施の形態において、パケット転送装置F1はユーザ情報データベースF13をその構成要素として含むものであった。他の構成として、ユーザ情報データベースF13がパケット転送装置F1内ではなく、他のサーバ(外部データベースなど)内に保持される形態も考えられる。この場合の構成を第3の実施の形態の他例として図21に示す。
図21に示す構成では、先に示した図14の構成に比べ、先に示したパケット転送装置F1に代わりに、ユーザ情報データベースF13を含まないパケット転送装置F2が用いられ、さらに、第1の実施の形態の説明において図7で示したデータベースサーバD1が用いられる。データベースサーバD1の機能は、第1の実施の形態で説明したのと同様に、DNSサーバB1、B2あるいはB5の一機能として実現することも可能である。この場合、ユーザ情報取得部F14はDNSメッセージを用いてユーザ属性情報の取得を行う。
図21に示す構成におけるパケット転送装置F2の動作については、上述したパケット転送装置F1の動作の説明において、ユーザ情報データベースF13をユーザ情報データベースD11と置きかえることにより同様に考えることができる。
さらに、図14を用いて説明した本実施の形態において、パケット転送装置のDNSプロキシ部F15がクエリ書換部F151と応答解析部F152との両方を有する構成について説明したが、DNSプロキシ部F15が、クエリ書換部F151または応答解析部F152のいずれか一方のみを有する構成も考えられる。
DNSプロキシ部F15がクエリ書換部F151のみを有するパケット転送装置F3の構成例を図22に示す。この構成の場合、パケット転送装置F3は、クライアントA1から受信したDNSクエリメッセージに対して送信者のユーザ属性情報を埋めこみ、DNSサーバB5へ送信する一方、DNSサーバB5から返されたDNS応答メッセージに対しては、そのままクライアントA1へ送信する。
また、DNSプロキシ部F15が応答解析部F152のみを有するパケット転送装置F4の構成例を図23に示す。この構成の場合、パケット転送装置F4は、クライアントA1から受信したDNSクエリメッセージに対してはそのままDNSサーバB5へ送信する一方、DNSサーバB5から返されたDNS応答メッセージに対しては、埋めこまれたパケット転送方法を抽出し、ルーティングテーブルに対してエントリの作成を行う。
次に、第3の実施の形態の効果について説明する。
本実施の形態では、クライアントA1がDNSサーバB5に対して送信したDNSクエリメッセージを、パケット転送装置F1が途中で一旦受信し、該DNSクエリメッセージを送信したユーザに関するユーザ属性情報を該DNSクエリメッセージに埋め込む。この際に必要に応じてユーザ属性情報としてパケット転送装置F1に関する属性情報をも埋め込みDNSサーバB5へ転送する。さらに、DNSサーバB5は該DNSクエリメッセージを受信すると、該DNSクエリメッセージ内に埋め込まれたユーザ属性情報を基に、DNS応答および該応答に対応するパケット転送装置F1におけるパケット転送方法をDNS応答メッセージに埋めこみクライアントA1へ送信する。パケット転送装置F1は、該応答メッセージを一旦受信し、該応答メッセージ内に埋めこまれたパケット転送方法を抽出してルーティングテーブルF16に対応するエントリを作成する。
従来、DNSサーバからクライアントに対して送信されたDNS応答メッセージは、クライアントが利用するものであったが、本実施の形態により、クライアントだけではなく、クライアントとDNSサーバ間に設置されているパケット転送装置も該DNS応答メッセージ内に格納された情報を利用することが可能になる。
本実施の形態では、該DNS応答メッセージ内に、該応答メッセージを受信した結果クライアントが送信するパケットに対するパケット転送装置F1における転送方法が埋めこまれる。これにより、例えばWebのアプリケーションの場合、クライアントA1に負荷の低いWebサーバに接続させると同時に、パケット転送装置F1においてクライアントA1と該Webサーバ間の接続上を通過するパケットに対して優先的に転送させる、などといった制御をDNSサーバが行うことが可能になる。
さらに、本発明の第1の実施の形態で述べたDNS応答のカスタマイズ機能により、パケット転送装置F1における転送方法の制御も同様にユーザ属性情報およびパケット転送装置F1に関する属性情報を基にカスタマイズすることが可能である。例えば、特権ユーザの送受信するパケットは優先的に転送したり、特権ユーザ用のvlanを用いて転送するなどの制御を行うことが可能となる。
次に、本発明の第1の実施例を、図面を参照して説明する。かかる実施例は本発明の第1の実施の形態に対応するものである。また、本実施例は図1に示した構成をとるものとする。実施例において、クライアントA1は、DNSサーバB1に対して名前解決を要求するユーザが利用する端末である。また、DNSサーバB1は図2に示した内容をユーザ情報データベースB14として保持し、図3に示した名前解決テーブル201、ゾーンファイル202、203を応答用データベースB16として保持するものとする。
今、IPアドレスが「123.45.0.2」である端末を利用するユーザ1と、IPアドレスが「123.45.0.4」である端末を利用するユーザ2がFQDN:www.aaa.comの名前解決をDNSサーバB1に要求したとする。www.aaa.comは、地域情報を提供するウェブサイトのFQDNであり、かかるウェブサイトでは、アクセスしてくるユーザの位置情報(接続しているNASのIPアドレス)とネットワークへの接続回線種別を考慮し、これらのユーザ属性情報に適したウェブページを表示するサービスが提供されているものとする。
具体的に川崎市からネットワーク接続しているユーザ(以下では、IPアドレスが「30.30.30.30」のNASに接続しているユーザが川崎市からネットワーク接続しているユーザであるものとする)には、川崎市の地域情報が提供され、横浜市からネットワーク接続しているユーザ(以下では、IPアドレスが「20.20.20.20」のNASに接続しているユーザが横浜市からネットワーク接続しているユーザであるものとする)には、横浜市の地域情報が提供される。
また、ADSL回線で接続しているユーザには、地域情報が、広帯域アクセスに適したマルチメディアコンテンツを主とするウェブページにより表示され、逆にISDN回線でネットワークに接続しているユーザに対しては、狭帯域アクセスに適したテキストベースのコンテンツを主とするウェブページにより表示される。これらのウェブページは異なるウェブサーバにホスティングされているものとし、以下では、川崎市からADSL回線によりネットワーク接続しているユーザ向けのウェブページはIPアドレス「9.8.7.6」のウェブサーバにホスティングされており、また、横浜市からISDN回線によりネットワーク接続しているユーザ向けのウェブページはIPアドレス「9.8.7.3」のウェブサーバにホスティングされているものとする。
まず、ユーザ1及びユーザ2はそれぞれの利用端末を通じてDNSサーバB1にDNSクエリメッセージを送信する。DNSサーバB1のクエリ受信部B11は、受信したDNSクエリメッセージをユーザ情報識別部B12に渡す。DNSクエリメッセージには、ユーザ属性情報が埋め込まれていないため、ユーザ情報識別部B12は、DNSクエリメッセージをユーザ情報取得部B13に渡す。ユーザ情報取得部B13は、まず受け取ったDNSクエリメッセージのソースIPアドレスを調査する。この場合、ユーザ1の送信したDNSクエリメッセージのソースIPアドレスは「123.45.0.2」であり、ユーザ2の送信したDNSクエリメッセージのソースIPアドレスは「123.45.0.4」である。
次にソースIPアドレスを元に、ユーザ情報データベースB14からユーザ1及びユーザ2に該当するエントリを検索する。この場合、ユーザ1に該当するエントリは、図2に示したユーザ情報データベースB14の1番目のエントリであり、ユーザ1の属性情報として、ログインIDが「taro」、接続回線種別がADSL回線、接続しているNASのIPアドレスが「30.30.30.30」であるという情報が得られる。
また、ユーザ2に該当するエントリは、ユーザ情報データベースB14の2番目のエントリであり、ユーザ2の属性情報として、ログインIDがhanako、IPアドレスが「123.45.0.4」、接続しているNASのIPアドレスが「20.20.20.20」であるという情報が得られる。更に、IPアドレスが「8.9.1.4」であるノードを参照することで、他の属性情報が得られることが分かる。ここでは、ユーザ情報取得部B13が、IPアドレス「8.9.1.4」のノードを参照し、ユーザ2の属性情報として更に接続回線種別がISDN回線であるという情報を得られたとする。
ユーザ情報取得部B13は、上記のようにして得られたユーザ1及びユーザ2の属性情報を、ユーザ情報識別部B12に渡し、さらに、ユーザ情報識別部B12は、ユーザ1及びユーザ2の属性情報と、クエリ受信部B11から渡されたユーザ1及びユーザ2が送信したDNSクエリメッセージを応答作成部B15に渡す。応答作成部B15は、ユーザ属性情報及び問い合わせのあったFQDNに該当するエントリを応答用データベースB16から検索する。
この場合、ユーザ1からのDNSクエリに該当するエントリとして、図3に示した名前解決テーブル201の1番目のエントリが発見され、さらに、名前解決方法として、ゾーンファイル202の1番目のエントリが発見される。この結果、ユーザ1のFQDN:www.aaa.comに対するDNSクエリに対しては、IPアドレス「9.8.7.6」が名前解決される。
また、ユーザ2のDNSクエリメッセージに該当するエントリとして、名前解決テーブル201の2番目のエントリが発見され、さらに、名前解決方法として、ゾーンファイル203の1番目のエントリが発見される。この結果、ユーザ2のFQDN:www.aaa.comに対するDNSクエリに対しては、IPアドレス「9.8.7.3」が名前解決される。
応答作成部B17は名前解決結果を応答送信部B17に渡す。応答送信部B17は、受け取った名前解決結果をDNS応答メッセージの中に埋め込み、ユーザ1及びユーザ2に送信する。
ユーザ1は、DNSサーバB1からDNS応答メッセージを受信すると、IPアドレスが「9.8.7.6」のウェブサーバにアクセスすることになる。前述した通り、IPアドレスが「9.8.7.6」のウェブサーバには、川崎市からADSL回線によりネットワーク接続しているユーザに適したウェブページがホスティングされており、ユーザ1にはユーザ1の属性に適したウェブページが表示されることになる。
また、ユーザ2も同様に、DNSサーバB1からDNS応答メッセージを受信すると、IPアドレスが「9.8.7.3」のウェブサーバにアクセスすることになる。前述した通り、IPアドレスが「9.8.7.3」のウェブサーバには、横浜市からISDN回線によりネットワーク接続しているユーザに適したウェブページがホスティングされており、ユーザ2にはユーザ2の属性に適したウェブページが表示されることになる。
次に第2の実施例を、図面を参照して説明する。かかる実施例は、第2の実施の形態に対応するものである。また、本実施例は図9に示した構成をとるものとする。本実施例において、認証サーバE1はRADIUSサーバであり、ISPが運営しているネットワークにログインするユーザのユーザ認証および課金処理に利用されているものとする。また、クライアントA1は、上記ISPが運営するネットワークにログインするユーザの利用端末であり、このユーザはクライアントA1を利用してDNSサーバB3に対して名前解決を要求するものとする。
今、ユーザがISPの運営するネットワークにログインしたとする。図9に示すようにユーザがログインすると、認証サーバE1はRADIUSクライアントからAccounting Requestメッセージを受信し、Proxy機能を利用して受信したAccounting RequestメッセージをDNSサーバB3に転送する。ここで、Accounting Requestメッセージには、図9に示すように、ユーザ属性情報として、ユーザのログインIDがtaro、接続しているNASのIPアドレスが30.30.30.30、ユーザの利用端末(クライアントA1)のIPアドレスが123.45.0.2、接続性回線種別がADSL回線であることが記載されており、またユーザがネットワークにログインした旨が記載されているものとする。
ユーザ情報管理部B18の認証情報取得部B181は、Accounting Requestメッセージを受信すると、これをユーザ情報管理部B182に渡す。この場合、Accounting Requestメッセージには、ユーザがネットワークにログインした旨が記載されているため、ユーザ情報管理部B182は、Accounting Requestメッセージに記載されたユーザ属性情報をユーザ情報データベースB14に登録する。この結果、ユーザ情報データベースB14には、例えば図2に示すユーザ情報データベースの1番目のエントリが追加される。なお、ユーザがネットワークにログイン後、DNSサーバB1に名前解決を要求した場合の動作は、前述した第1の実施例と同様である。
次に、本発明の第3の実施例を、図面を参照して説明する。かかる実施例は本発明の第3の実施の形態に対応するものである。また、本実施例は図14に示した構成をとるものとする。実施例において、クライアントA1は、DNSサーバB5に対して名前解決を要求するユーザが利用する端末である。また、DNSサーバB5は図15に示した名前解決テーブル401、ゾーンファイル402、403を応答用データベースB16として保持し、パケット転送装置F1はNAT(Network Address Translation)機能を有し、図16に示す内容をユーザ情報データベースF13として保持するものとする。また、パケット転送装置F1の識別子(ID)は「switch99」であるとする。
今、MACアドレスが「00:12:34:56:78:9a」であり、パケット転送装置F1のポート「02」にvlanIDが「100」のvlanで接続されている端末を利用するユーザ1と、MACアドレスが「00:bc:de:f0:12:34」であり、パケット転送装置F1のポート「11」にvlanIDが「200」のvlanで接続されている端末を利用するユーザ2の各々が、http://www.ddd.com/index.htmlのURLをもつWebサイトにアクセスするものとする。
まず、ユーザ1またはユーザ2が利用する端末に対応するクライアントA1は、FQDN:www.ddd.comに対するIPアドレスを解決すべくDNSサーバB5にDNSクエリメッセージを送信する。該DNSクエリメッセージがパケット転送装置F1を経由する際に、パケット転送装置F1では、DNSメッセージの宛先ポート番号(53)にマッチするパケットをDNSプロキシ部F15内のクエリ書換部F151に渡す。クエリ書換部F151は、該クエリメッセージの送信者に対応するユーザ属性情報をユーザ取得部F14を介してユーザ情報データベースF13から取得する。
ユーザ1の場合、ユーザ情報データベース501の1番目のエントリにマッチし、ユーザ2の場合、2番目のエントリにマッチする。クエリ書換部F151は、受信したDNSクエリメッセージの付加情報部に取得したユーザ属性情報およびパケット転送装置F1のID(「switch99」)を埋めこみ、DNSサーバB5へ転送する。
DNSサーバB5は、ユーザ属性情報が埋めこまれたDNSクエリメッセージを受信すると、ユーザ情報識別部B12で該DNSクエリメッセージ内に埋めこまれたユーザ属性情報を識別し、応答作成部B15で該ユーザ属性情報およびクエリの内容に対応するエントリを検索する。ユーザ1からのDNSクエリメッセージの場合は、応答用データベースB16内の名前解決テーブル401の1番目のエントリにマッチし、さらに名前解決方法としてゾーンファイル402の1番目のエントリにマッチする。
この結果、ユーザ1のFQDN:www.ddd.comに対するDNSクエリメッセージに対して応答されるDNS応答メッセージには、IPアドレス20.1.1.1が応答部に入れられ、さらに対応するパケットに対するパケット転送装置F1における転送方法である、「SrcIPAddr=40.1.1.1,vlanID=111,outport=21,priority=0」が付加情報部に入れられる。また、ユーザ2のDNSクエリメッセージの場合は、名前解決テーブル401の3番目のエントリにマッチし、さらに名前解決方法としてゾーンファイル403の1番目のエントリにマッチする。
この結果、ユーザ2のFQDN:www.ddd.comに対するDNSクエリメッセージに対して応答されるDNS応答メッセージには、IPアドレス「60.1.1.1」が応答部に入れられ、さらに対応するパケットに対するパケット転送装置F1における転送方法である、「SrcIPAddr=40.1.1.1,DestIPAddr=90.1.1.1,vlanID=333,outport=31,priority=1」が付加情報部に入れられる。応答作成部B15で作成されたDNS応答メッセージは応答送信部B17によってクライアントA1(ユーザ1またはユーザ2)へ送信される。
DNSサーバB5からクライアントA1へ送信されたDNS応答メッセージは、途中でパケット転送装置F1を経由する。該応答メッセージがパケット転送装置F1を経由する際に、パケット転送装置F1では、DNSメッセージのソースポート番号(53)にマッチするパケットをDNSプロキシ部F15内の応答解析部F152に渡す。応答解析部F152は、該応答メッセージに含まれている情報を解析し、該情報に基づいてルーティングテーブルF16にエントリを作成する。
ユーザ1へのDNS応答メッセージの場合、該応答メッセージの応答部および付加情報部に含まれている情報に基づいて、図17に示す内容例の1番目のエントリがルーティングテーブルF16に作成される。また、ユーザ2へのDNS応答メッセージの場合、該応答メッセージの応答部および付加情報部に含まれている情報に基づいて、図17に示す内容例の2番目のエントリがルーティングテーブルF16に作成される。
応答解析部F152は、ルーティングテーブルF16へのエントリ作成を行うと、受信したDNS応答メッセージ内の付加情報部フィールドを削除し、クライアントA1へ転送する。
クライアントA1は、送信したDNSクエリメッセージに対応するDNS応答メッセージを受信すると、該応答メッセージによって応答されたwww.ddd.comのIPアドレスに対して、HTTPコネクションを確立し、該コネクション上でリクエスト処理等を行う。ユーザ1の場合は、IPアドレス「20.1.1.1」に対してHTTPコネクションを確立し、ユーザ2の場合はIPアドレス「60.1.1.1」に対してHTTPコネクションを確立する。これらのコネクション上を流れるパケットは全てパケット転送装置F1を通過する。
この際、ユーザ1とIPアドレス「20.1.1.1」との間のコネクション上を流れるパケットに関しては、図17のルーティングテーブル601における1番目のエントリに基づく転送方法が適用され、ユーザ2とIPアドレス「60.1.1.1」との間のコネクション上を流れるパケットに関しては、ルーティングテーブルF16における2番目のエントリに基づく転送方法が適用される。
例えば、ユーザ1が送信したパケットは、ルーティングテーブルF16において、転送優先度が「通常」となっているため、通常の転送優先度で転送が行われるが、ユーザ1が送信したパケットは、転送優先度が「優先」となっているため、通常の転送優先度で転送されるパケットと比べ優先的に転送が行われる。すなわち、ユーザ2はユーザ1と比べてスムーズなWeb接続を行えると期待される。
本実施例によって、DNSサーバB5およびパケット転送装置F1を用いることにより、従来のDNSサーバが提供するFQDNからIPアドレスへの解決機能だけではなく、クライアントA1が送信したパケットが通過するパケット転送装置F1におけるパケット転送方法も同時に制御できることが分かる。
本発明のDNSサーバおよびパケット転送装置は、構成要素である各装置の機能をハードウェア的に実現することは勿論として、上記した各装置の機能を実行して名前解決処理を行う名前解決プログラム(アプリケーション)をDNSサーバを実現するコンピュータ処理装置のメモリにロードして実行することで実現することができる。すなわち、上述したDNSサーバおよびパケット転送装置の機能をソフトウェアによって実現することができる。この名前解決プログラムプログラムは、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からコンピュータ処理部にロードされ、コンピュータ処理部の動作を制御することにより、上述した各機能を実現する。
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。