(57)【要約】【課題】自律的に最善の宛先アドレスを選択する通信装置を提供すること。【解決手段】外部通信装置に対するＩＰｖ６接続用アドレスを取得する第１取得部１０２と、外部通信装置のＩＰｖ４アドレスを取得する第２取得部１０３と、ＩＰｖ６接続用アドレスのそれぞれについて、外部通信装置に対して接続する優先度を設定する設定部１０４と、ＩＰｖ６接続用アドレスを構成する第１ビット列内に、ＩＰｖ４アドレスを構成する第２ビット列が含まれるか否かを判断し、第１ビット列内に第２ビット列が含まれる場合に、ＩＰｖ６接続用アドレスは拡張ＩＰｖ６アドレスであると判断する判断部１０５と、拡張ＩＰｖ６アドレスと判断されたＩＰｖ６接続用アドレスの優先度を変更する変更部１０６と、外部通信装置との接続を確立するときに、優先度の大きいＩＰｖ６接続用アドレスを優先して選択する選択部１０７と、を備えた。【選択図】        図３
2008078814.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された外部通信装置に対してＩＰｖ６ネットワークで接続可能なＩＰｖ６接続用アドレスを取得する第１取得部と、
前記外部通信装置に付与されたＩＰｖ４アドレスを取得する第２取得部と、
取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記外部通信装置に対して接続するときに優先して用いる度合いを表す優先度を設定する設定部と、
取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記ＩＰｖ６接続用アドレスを構成する第１ビット列内に、取得した前記ＩＰｖ４アドレスを構成する第２ビット列が含まれるか否かを判断し、前記第１ビット列内に前記第２ビット列が含まれる場合に、前記ＩＰｖ６接続用アドレスは前記ＩＰｖ４アドレスに予め定められたビットを付加してＩＰｖ６アドレスのアドレス長に拡張した拡張アドレスであると判断する判断部と、
取得した前記ＩＰｖ６接続用アドレスのうち、前記拡張アドレスであると判断された前記ＩＰｖ６接続用アドレスの前記優先度を変更する変更部と、
前記外部通信装置との接続を確立するときに、優先度の大きい前記ＩＰｖ６接続用アドレスを優先して選択する選択部と、
を備えたことを特徴とする通信装置。
【請求項２】
前記判断部は、取得した前記ＩＰｖ６接続用アドレスを構成する任意の連続する３２ビットと、取得した前記ＩＰｖ４アドレスを構成する３２ビットとが一致するか否かを判断し、一致する場合に、取得した前記ＩＰｖ６接続用アドレスは前記拡張アドレスであると判断すること、
を特徴とする請求項１に記載の通信装置。
【請求項３】
前記判断部は、前記ＩＰｖ６接続用アドレスの先頭ビットからのビット数が４、８、１６、３２、４８、または６４の倍数であるビットから連続する３２ビットと、取得した前記ＩＰｖ４アドレスを構成する３２ビットとが一致するか否かを判断し、一致する場合に、取得した前記ＩＰｖ６接続用アドレスは前記拡張アドレスであると判断すること、
を特徴とする請求項１に記載の通信装置。
【請求項４】
前記ＩＰｖ６接続用アドレスは、前記拡張アドレスと前記ＩＰｖ６アドレスの少なくともいずれかであり、
前記判断部は、前記第１ビット列内に前記第２ビット列が含まれない場合に、前記ＩＰｖ６接続用アドレスは、前記ＩＰｖ６アドレスであると判断し、
前記変更部は、前記拡張アドレスであると判断された前記ＩＰｖ６接続用アドレスの前記優先度を、前記ＩＰｖ６アドレスの前記優先度より小さくすること、
を特徴とする請求項１に記載の通信装置。
【請求項５】
前記外部通信装置の前記ＩＰｖ６アドレス、または前記外部通信装置の前記ＩＰｖ４アドレスを問合せるアドレス問合せメッセージを、ネットワークを介して接続されたＤＮＳサーバに送信する送信部をさらに備え、
前記第１取得部は、前記ＤＮＳサーバから送信された前記ＩＰｖ６接続用アドレスを取得し、
前記第２取得部は、前記ＤＮＳサーバから送信された前記ＩＰｖ４アドレスを取得すること、
を特徴とする請求項１に記載の通信装置。
【請求項６】
第１取得部によって、ネットワークを介して接続された外部通信装置に対してＩＰｖ６ネットワークで接続可能なＩＰｖ６接続用アドレスを取得する第１取得ステップと、
第２取得部によって、前記外部通信装置に付与されたＩＰｖ４アドレスを取得する第２取得ステップと、
設定部によって、取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記外部通信装置に対して接続するときに優先して用いる度合いを表す優先度を設定する設定ステップと、
判断部によって、取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記ＩＰｖ６接続用アドレスを構成する第１ビット列内に、取得した前記ＩＰｖ４アドレスを構成する第２ビット列が含まれるか否かを判断し、前記第１ビット列内に前記第２ビット列が含まれる場合に、前記ＩＰｖ６接続用アドレスは前記ＩＰｖ４アドレスに予め定められたビットを付加してＩＰｖ６アドレスのアドレス長に拡張した拡張アドレスであると判断する判断ステップと、
変更部によって、取得した前記ＩＰｖ６接続用アドレスのうち、前記拡張アドレスであると判断された前記ＩＰｖ６接続用アドレスの前記優先度を変更する変更ステップと、
選択部によって、前記外部通信装置との接続を確立するときに、優先度の大きい前記ＩＰｖ６接続用アドレスを優先して選択する選択ステップと、
を備えたことを特徴とするアドレス選択方法。
【請求項７】
ネットワークを介して接続された外部通信装置に対してＩＰｖ６ネットワークで接続可能なＩＰｖ６接続用アドレスを取得する第１取得手順と、
前記外部通信装置に付与されたＩＰｖ４アドレスを取得する第２取得手順と、
取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記外部通信装置に対して接続するときに優先して用いる度合いを表す優先度を設定する設定手順と、
取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記ＩＰｖ６接続用アドレスを構成する第１ビット列内に、取得した前記ＩＰｖ４アドレスを構成する第２ビット列が含まれるか否かを判断し、前記第１ビット列内に前記第２ビット列が含まれる場合に、前記ＩＰｖ６接続用アドレスは前記ＩＰｖ４アドレスに予め定められたビットを付加してＩＰｖ６アドレスのアドレス長に拡張した拡張アドレスであると判断する判断手順と、
取得した前記ＩＰｖ６接続用アドレスのうち、前記拡張アドレスであると判断された前記ＩＰｖ６接続用アドレスの前記優先度を変更する変更手順と、
前記外部通信装置との接続を確立するときに、優先度の大きい前記ＩＰｖ６接続用アドレスを優先して選択する選択手順と、
をコンピュータに実行させるアドレス選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロトコル変換を必要とする宛先アドレスをそれ以外のアドレスと区別して通信に用いるアドレスを選択する装置、方法およびプログラムに関するものである。
【背景技術】
【０００２】
従来から用いられているインターネットの通信プロトコルであるＩＰｖ４（Internet Protocol Version 4）では、通信に用いるアドレス（ＩＰアドレス）は３２ビットで定義されている。ＩＰアドレスは各々の機器（ノード）を識別するための識別子として利用されているが、現在のように爆発的にインターネット接続する機器が増えると、ＩＰアドレスの数が足りなくなるという問題が予想された。
【０００３】
これを解決するために、１２８ビットで定義されるＩＰｖ６アドレスを用いて通信を行うＩＰｖ６（Internet Protocol Version 6）が定められている。ＩＰｖ６では単にアドレス空間が広がっただけでなく、ＩＰヘッダの構成を単純化したことによりルータの負荷が低減され、また、ＩＰアドレスを自動的に割り当てる仕組みなどが改良されている。
【０００４】
一方、ＩＰｖ４からＩＰｖ６への移行はすぐに進むというわけでなく、徐々にＩＰｖ４アドレス体系からＩＰｖ６アドレス体系へ移行が進められている。具体的には、ＩＰｖ６からＩＰｖ４への変換機能（トランスレータ）や、トンネリングという技術を用いて既存のＩＰｖ４ネットワークと接続しながらＩＰｖ６への移行が進行している。
【０００５】
また、ＩＰｖ４アドレスのみを有する宛先通信装置に対するＩＰアドレスの問合せに対し、ＩＰｖ４アドレスに所定のプレフィクスを付加してＩＰｖ６で通信可能とした拡張ＩＰｖ６アドレスを返信するＤＮＳ（Domain Name Server）キャッシュサーバが開発されている。このようなＤＮＳキャッシュサーバでは、ＩＰｖ４アドレスおよびＩＰｖ６アドレスの双方が割当てられた宛先通信装置に対するアドレスの問合せの応答として、ＩＰｖ４アドレスおよびＩＰｖ６アドレスだけでなく、拡張ＩＰｖ６アドレスを返信することも可能である。
【０００６】
このようにＤＮＳに対する問合せの結果として複数のＩＰアドレスが得られた場合、一般に広く用いられている通信装置の実装では、まず一方のアドレスに対する接続の確立を試みて、それが成功すればそのまま通信を継続する。もし接続に失敗すれば、別のＩＰアドレスに対して同様に接続確立を試みる。この手順は、接続確立が成功するまで繰り返される。
【０００７】
ただし、一般には、トランスレータを経由せずに通信できる場合にはそれを優先すること、すなわち、拡張ＩＰｖ６アドレスを用いないことが望ましい。トランスレータを経由する場合には、トランスレータが不良になっただけで通信が成立しなくなるという問題や、ＩＰセキュリティ機能を適用しにくいといった問題が存在するからである。
【０００８】
非特許文献１では、特定のプレフィクスに応じて宛先アドレスの優先度を指定するための枠組みが規定されている。この方法を用いて、拡張ＩＰｖ６アドレスに用いられるプレフィクスに合致するアドレスの優先度を他のアドレスの優先度より下げることにより、上述の問題を解消することが可能となる。
【０００９】
さらに、非特許文献２では、ＤＨＣＰｖ６（Dynamic Host Configuration Protocol Version 6）サーバを用いて、アドレスの優先度を自動配布する技術が提案されている。この方法を利用すれば、送信元の通信装置側で特に設定を行わずに所望の優先度を指定することが可能となる。
【００１０】
【非特許文献１】R. Draves et al.、 "RFC3484、Default Address Selection for Internet Protocol version 6 (IPv6)" [online]、 February 2003、 retrieved from the Internet: <URL: http://www.ietf.org/rfc/rfc3484.txt>
【非特許文献２】T. Fujisaki et al.、 "Distributing Default Address Selection Policy using DHCPv6" [online]、 June 9, 2005、 retrieved from the Internet: <URL: http://www.nttv6.net/dass/draft-fujisaki-dhc-addr-select-opt-00.txt>
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献１および非特許文献２の方法では、送信元の通信装置の管理者の手作業による設定や、ＤＨＣＰｖ６サーバなどの外部のノードを利用する必要があるという問題があった。例えば、非特許文献１の方法において、ポリシーテーブルに拡張ＩＰｖ６アドレス用のプレフィクスに関するエントリを追加する必要があるが、このプレフィクスはトランスレータの設定によって異なるため、管理者が明示的に設定する必要がある。非特許文献２の方法ではＤＨＣＰｖ６を利用することで送信元通信装置において手作業による設定を不要にできるが、ＤＨＣＰｖ６サーバを設定・管理する負荷が別途生ずる。
【００１２】
また、非特許文献２では、上述のようにＤＨＣＰｖ６サーバから優先度を自動配布する必要があるため、当該ＤＨＣＰｖ６サーバで各アドレスの優先度等を管理するための処理負荷がかかる。
【００１３】
本発明は、上記に鑑みてなされたものであって、外部装置に依存せずに、自律的に最善の宛先アドレスを選択することができる装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、ネットワークを介して接続された外部通信装置に対してＩＰｖ６ネットワークで接続可能なＩＰｖ６接続用アドレスを取得する第１取得部と、前記外部通信装置に付与されたＩＰｖ４アドレスを取得する第２取得部と、取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記外部通信装置に対して接続するときに優先して用いる度合いを表す優先度を設定する設定部と、取得した前記ＩＰｖ６接続用アドレスのそれぞれについて、前記ＩＰｖ６接続用アドレスを構成する第１ビット列内に、取得した前記ＩＰｖ４アドレスを構成する第２ビット列が含まれるか否かを判断し、前記第１ビット列内に前記第２ビット列が含まれる場合に、前記ＩＰｖ６接続用アドレスは前記ＩＰｖ４アドレスに予め定められたビットを付加してＩＰｖ６アドレスのアドレス長に拡張した拡張アドレスであると判断する判断部と、取得した前記ＩＰｖ６接続用アドレスのうち、前記拡張アドレスであると判断された前記ＩＰｖ６接続用アドレスの前記優先度を変更する変更部と、前記外部通信装置との接続を確立するときに、優先度の大きい前記ＩＰｖ６接続用アドレスを優先して選択する選択部と、を備えたことを特徴とする。
【００１５】
また、本発明は、上記装置を実行することができる方法およびプログラムである。
【発明の効果】
【００１６】
本発明によれば、取得したアドレスを比較することによりアドレスの優先度を判断することができる。このため、管理者の手作業による設定や外部装置に依存せずに、自律的に最善の宛先アドレスを選択することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかる装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
【００１８】
本実施の形態にかかる通信装置は、ＤＮＳキャッシュサーバから取得したＩＰｖ４アドレスとＩＰｖ６アドレスとを比較することにより、取得したＩＰｖ６アドレスが、ＩＰｖ４アドレスにプレフィクスを付加した拡張ＩＰｖ６アドレスか否かを判断し、拡張ＩＰｖ６アドレスの優先度を変更した後、接続に用いるアドレスの選択を行うものである。
【００１９】
図１は、本実施の形態の通信装置１００を含むネットワーク全体の構成を示す説明図である。同図に示すように、通信装置１００はＩＰｖ６ネットワーク１１に接続されており、ＩＰｖ６ネットワーク１１およびＩＰｖ４ネットワーク１２の双方に接続されている外部通信装置である宛先ホスト２００とＩＰｖ６で通信を行う。
【００２０】
このように、本実施の形態は、ＩＰｖ４からＩＰｖ６への移行過程で想定されるように、ＩＰｖ６からＩＰｖ４への変換機能や、トンネリング技術を用いてＩＰｖ６ネットワーク１１と既存のＩＰｖ４ネットワーク１２とが接続された状況を前提としている。
【００２１】
ＩＰｖ６ネットワーク１１内には、ＩＰｖ６ネットワーク１１とＩＰｖ４ネットワーク１２との間でプロトコル変換を行うトランスレータ１５と、宛先ホスト２００が含まれるドメイン（foobar.example）のアドレスを管理するＤＮＳのネームサーバ１７と、通信装置１００からのアドレスの問合せを処理するＤＮＳキャッシュサーバ１６とが含まれる。
【００２２】
宛先ホスト２００は、ＩＰｖ６ネットワーク１１およびＩＰｖ４ネットワーク１２の双方に接続されているため、ＩＰｖ４アドレス「x.y.z.w」に加えて、ＩＰｖ６アドレス「Q::H」が付与されており、それぞれに対応したＤＮＳのＡ  ＲＲ（Resource Record）およびＡＡＡＡ  ＲＲがネームサーバ１７に登録されている。
【００２３】
ここで、トランスレータ１５の機能を説明するために、ＩＰｖ４ネットワーク１２のみに接続された宛先ホスト３００と通信装置１００との通信方法について説明する。図２は、ＩＰｖ４ネットワーク１２のみに接続された宛先ホスト３００を含むネットワーク全体の構成を示す説明図である。
【００２４】
図２に示すように、通信装置１００から、ＩＰｖ４ネットワーク１２に接続された宛先ホスト３００のＩＰアドレスを、ＤＮＳを使って調べる場合を考える。ここではＩＰｖ６ネットワーク１１とＩＰｖ４ネットワーク１２はトランスレータ１５を介して接続されているものとする。
【００２５】
通信装置１００は、ＤＮＳキャッシュサーバ１６に宛先ホスト３００のＦＱＤＮ（Fully Qualified Domain Name）である「www.foobar.example」のアドレスを問合せる。これは正引きと呼ばれ、ＦＱＤＮからＩＰアドレスを調べるものである。
【００２６】
実際には通信装置１００上で動作しているアプリケーションが、自装置のＤＮＳリゾルバ宛にライブラリーコールを発行する。リゾルバはこの問合せを受けるとＤＮＳキャッシュサーバ１６へ問合せを送信し、「www.foobar.example」に対応するＩＰｖ６アドレス（ＤＮＳのリソースレコードであるＡＡＡＡ  ＲＲ）を要求する。
【００２７】
なお、ここではＤＮＳキャッシュサーバ１６はトランスレータ１５とは異なる装置で動作しているものと仮定しているが、これらは同一の装置に組み込まれていてもよい。
【００２８】
ＤＮＳキャッシュサーバ１６は、この問合せを通信装置１００から受け取ると、その問合せドメイン名に基づいて、「foobar.example」ゾーンを管理しているネームサーバ３１７へＡＡＡＡ  ＲＲを問合せる。ここでネームサーバ３１７は「foobar.example」ゾーンを管理することができれば設置場所は問わないが、通常宛先ホスト３００に近接された場所に設置されることが多い。ここではＩＰｖ４ネットワーク１２に接続されていると仮定する。
【００２９】
しかし、ネームサーバ３１７にはＩＰｖ４用のＡ  ＲＲしか登録されていないため、この要求は失敗し、ＤＮＳキャッシュサーバ１６はＡＡＡＡ  ＲＲを取得することができない。
【００３０】
次に、ＤＮＳキャッシュサーバ１６は同じ名前（www.foobar.example）でＩＰｖ４アドレスのＡ  ＲＲをネームサーバ３１７へ問合わせる。この問合せは成功し、例えば「www.foobar.example」のＩＰｖ４アドレスとして「x.y.z.w」が回答として返信される。なお、ここでは「www.foobar.example」のＩＰｖ４アドレスは「x.y.z.w」であると仮定している。
【００３１】
ここで、ＤＮＳキャッシュサーバ１６は、ＩＰｖ４ネットワーク１２への変換用に用いるＩＰｖ６  ｐｒｅｆｉｘ（P）をあらかじめ知っており、通信装置１００からの「www.foobar.example」の問合わせに対する回答として「P::x.y.z.w」というアドレスを持つＡＡＡＡ  ＲＲを返す。この「P::x.y.z.w」は、ＩＰｖ４アドレス「x.y.z.w」（３２ビット整数）に対する拡張ＩＰｖ６アドレスであり、下位３２ビットにＩＰｖ４アドレスを埋め込み、上位９２ビットをプレフィクスとして使っていることを示す記法である。
【００３２】
通信装置１００は、この「P::x.y.z.w」に対して、ＩＰｖ６からＩＰｖ４へのトランスレータ１５を介して、「connect P::x.y.z.w」のような接続要求を送信する。
【００３３】
トランスレータ１５は、この宛先アドレスの下位９６ビット目からＩＰｖ４アドレス「x.y.z.w」を取り出し、ＩＰｖ４を用いて宛先ホスト３００への接続を確立する。トランスレータ１５は、これが成功すると、ＩＰｖ４およびＩＰｖ６による接続を関連づけて、通信装置１００と宛先ホスト３００との通信を可能とする。
【００３４】
通信装置１００から、図１に示すようなＩＰｖ６ネットワーク１１およびＩＰｖ４ネットワーク１２の双方に接続された宛先ホスト２００に接続する場合も、原則として図２と同様の方法により接続が確立される。
【００３５】
例えば、通信装置１００が宛先ホスト２００への通信を試みたとする。通信装置１００はＤＮＳキャッシュサーバ１６に対して宛先ホスト２００の名前である「www.foobar.example」に対するＡＡＡＡ  ＲＲを要求する。ＤＮＳキャッシュサーバ１６はネームサーバ１７への問合せによって、ＩＰｖ６アドレス「Q::H」に対応するＡＡＡＡ  ＲＲを得る。
【００３６】
ＤＮＳキャッシュサーバ１６は、この場合でも、同じ名前に対するＡ  ＲＲを問合せ、ＩＰｖ４アドレス「x.y.z.w」に対応するＡ  ＲＲを得る。ＤＮＳキャッシュサーバ１６は、このＡ  ＲＲから、ＩＰｖ４アドレスに所定のプレフィクス（Ｐ）を付加した拡張ＩＰｖ６アドレス「P::x.y.z.w」およびそれに対応するＡＡＡＡ  ＲＲを生成し、「Q::H」に対応するＡＡＡＡ  ＲＲと合わせて通信装置１００に返答する。
【００３７】
このように、通信先のノードが持つＤＮＳ  ＲＲの種類に関わらず、変換用のＡＡＡＡ  ＲＲを応答することにより、ＩＰｖ６ネットワーク１１の品質に問題がある場合でも、最大限の接続性を提供することが可能となる。
【００３８】
例えば、ＩＰｖ６による宛先ホスト２００への接続性が実際には不通となっていたため、通信装置１００が最初に試みた「Q::H」への接続の確立が失敗したとしても、次に「P::x.y.z.w」への接続を試みることで、トランスレータ１５経由で接続が成功する可能性があるからである。
【００３９】
実際に、このような状況は、ＩＰｖ６への移行初期などのように、実験的な導入サイトで運用体制が不十分な場合や、トンネル技術などのオーバヘッドを伴うような接続性に依存している場合に発生する可能性がある。なお、実際に宛先ホスト２００に付与されたＩＰｖ６アドレスおよび拡張ＩＰｖ６アドレスは、ともにＩＰｖ６ネットワーク１１による接続に用いることができるアドレスであるため、以下では、両者を合わせてＩＰｖ６接続用アドレスと呼ぶ。
【００４０】
次に、通信装置１００の構成の詳細について説明する。図３は、本実施の形態にかかる通信装置１００の構成を示すブロック図である。同図に示すように、通信装置１００は、記憶部１２０と、送信部１０１と、第１取得部１０２と、第２取得部１０３と、設定部１０４と、判断部１０５と、変更部１０６と、選択部１０７と、を備えている。
【００４１】
記憶部１２０は、ＤＮＳキャッシュサーバ１６から取得したＩＰｖ６アドレスおよびＩＰｖ４アドレスを格納するものであり、ＩＰｖ６アドレスリスト１２１と、ＩＰｖ４アドレスリスト１２２とを備えている。なお、記憶部１２０は、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカードなどの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００４２】
ＩＰｖ６アドレスリスト１２１は、ＡＡＡＡ  ＲＲの問合せに対してＤＮＳキャッシュサーバ１６から返信されたＩＰｖ６接続用アドレスを格納するものである。図４は、ＩＰｖ６アドレスリスト１２１のデータ構造の一例を示す説明図である。同図に示すように、ＩＰｖ６アドレスリスト１２１は、ＩＰｖ６接続用アドレスと、宛先ホスト２００に接続するときに当該ＩＰｖ４アドレスを優先して用いる度合いを表す優先度とを対応づけて格納している。
【００４３】
ＩＰｖ４アドレスリスト１２２は、Ａ  ＲＲの問合せに対してＤＮＳキャッシュサーバ１６から返信されたＩＰｖ４アドレスを格納するものである。図５は、ＩＰｖ４アドレスリスト１２２のデータ構造の一例を示す説明図である。同図に示すように、ＩＰｖ４アドレスリスト１２２は、ＩＰｖ４アドレスと、優先度とを対応づけて格納している。
【００４４】
送信部１０１は、ＤＮＳキャッシュサーバ１６に対して宛先ホスト２００のＡＡＡＡ  ＲＲまたはＡＡ  Ｒを問合せるアドレス問合せメッセージを送信するものである。
【００４５】
第１取得部１０２は、ＡＡＡＡ  ＲＲを問合わせるアドレス問合せメッセージに対してＤＮＳキャッシュサーバ１６から返信された応答メッセージを受信し、応答メッセージのＡＡＡＡ  ＲＲからＩＰｖ６接続用アドレスを取得するものである。
【００４６】
第２取得部１０３は、Ａ  ＲＲを問合わせるアドレス問合せメッセージに対してＤＮＳキャッシュサーバ１６から返信された応答メッセージを受信し、応答メッセージのＡ  ＲＲからＩＰｖ４アドレスを取得するものである。
【００４７】
図６は、ＤＮＳキャッシュサーバ１６から返信される応答メッセージの一例を示す説明図である。同図に示すように、応答メッセージは通常のＤＮＳで用いられるアドレス問い合わせメッセージに対する応答と同様の形式であり、ＤＮＳヘッダの次に返信されたアドレスの情報を含む回答リソースレコードが格納されている。また、回答リソースレコードの後には、応答したネームサーバがドメインの正式なネームサーバかを表すオーソリティや、追加情報が格納されている。
【００４８】
第１取得部１０２および第２取得部１０３は、同図に示すような応答メッセージの回答リソースレコードから、問い合わせた宛先ホスト２００のアドレスを取得する。また、第１取得部１０２および第２取得部１０３は、取得したＩＰｖ６接続用アドレスおよびＩＰｖ４アドレスを、それぞれＩＰｖ６アドレスリスト１２１およびＩＰｖ４アドレスリスト１２２に保存する。
【００４９】
設定部１０４は、取得されたＩＰｖ６接続用アドレスおよびＩＰｖ４アドレスに対して優先度を設定するものである。設定部１０４は、各アドレスを取得した時点では、デフォルトで所定の優先度を割当てる。例えば、優先度を１〜１０（１が最小の優先度、１０が最大の優先度）の整数で表した場合、設定部１０４は、デフォルトで優先度５を各アドレスに割当ててＩＰｖ６アドレスリスト１２１およびＩＰｖ４アドレスリスト１２２に保存する。
【００５０】
判断部１０５は、取得されたＩＰｖ６接続用アドレスが、拡張ＩＰｖ６アドレスであるか否かを判断するものである。拡張ＩＰｖ６アドレスとは、ＩＰｖ４アドレスをＩＰｖ６ネットワーク１１環境で利用できるように所定のプリフィクスなどを付加してＩＰｖ６アドレスと同じビット長（１２８ビット）に拡張したアドレスをいう。
【００５１】
具体的には、判断部１０５は、ＩＰｖ６接続用アドレスを構成するビット列内に、ＩＰｖ４アドレスを構成するビット列が含まれる場合に、当該ＩＰｖ６接続用アドレスは拡張ＩＰｖ６アドレスであると判断する。通常、拡張ＩＰｖ６アドレスは、ＩＰｖ４アドレスにプリフィクス等が付加されて生成されるためである。
【００５２】
変更部１０６は、拡張ＩＰｖ６アドレスの優先度を変更するものである。具体的には、変更部１０６は、拡張ＩＰｖ６アドレスの優先度を、ＩＰｖ６アドレスの優先度より小さくなるように優先度の値を変更する。例えば、変更部１０６は、拡張ＩＰｖ６アドレスの優先度をデフォルトの５から４以下の値に変更する。これにより、トランスレータ１５を経由した接続ではなく、宛先ホスト２００との直接通信を優先して選択可能となる。
【００５３】
なお、トランスレータ１５を経由した接続のほうが安定している場合などであれば、変更部１０６が拡張ＩＰｖ６アドレスの優先度をＩＰｖ６アドレスの優先度より大きく設定するように構成してもよい。
【００５４】
選択部１０７は、宛先ホスト２００との接続時に、利用するアドレスとしてより優先度の大きいアドレスを選択するものである。
【００５５】
次に、このように構成された本実施の形態にかかる通信装置１００によるアドレス選択処理について説明する。図７は、本実施の形態におけるアドレス選択処理の全体の流れを示すフローチャートである。
【００５６】
以下では、図１に示すようなネットワーク環境で、通信装置１００が宛先ホスト２００への接続を確立するために、宛先ホスト２００の端末名（www.foobar.example）に対するアドレスを解決し、その中から適切なアドレスを選択する処理を例に説明する。
【００５７】
まず、送信部１０１が、宛先ホスト２００の端末名（www.foobar.example）に対するＩＰｖ６接続用アドレスを取得するために、ＤＮＳのＡＡＡＡ  ＲＲのアドレス問合せメッセージをＤＮＳキャッシュサーバ１６に送信する（ステップＳ７０１）。
【００５８】
ＤＮＳキャッシュサーバ１６は、この端末名に対応するネームサーバ１７を通じて、宛先ホスト２００のＩＰｖ６アドレス「Q::H」を含むＡＡＡＡ  ＲＲを得る。ＤＮＳキャッシュサーバ１６はさらに、同じ端末名のＩＰｖ４アドレスを得るためにＡ  ＲＲのアドレス問合せメッセージをネームサーバ１７に送信し、ＩＰｖ４アドレス「x.y.z.w」を含むＡ  ＲＲを得る。ＤＮＳキャッシュサーバ１６は、Ａ  ＲＲに含まれるＩＰｖ４アドレスに、所定のプレフィクスを付加した拡張ＩＰｖ６アドレス「P::x.y.z.w」を得る。最後に、ＤＮＳキャッシュサーバ１６は、これら２つのＡＡＡＡ  ＲＲを含むＤＮＳの応答メッセージを通信装置１００に送信する。
【００５９】
次に、通信装置１００の第１取得部１０２は、ＤＮＳキャッシュサーバ１６から送信された応答メッセージを受信し、受信したメッセージからＩＰｖ６接続用アドレスを取得する（ステップＳ７０２）。
【００６０】
次に、送信部１０１は、宛先ホスト２００の端末名（www.foobar.example）に対するＩＰｖ４アドレスを取得するために、Ａ  ＲＲの問合せメッセージをＤＮＳキャッシュサーバ１６に送信する（ステップＳ７０３）。
【００６１】
ＤＮＳキャッシュサーバ１６は、この端末名に対応するネームサーバ１７を通じて、宛先ホスト２００のＩＰｖ４アドレス「x.y.z.w」を含むＡ  ＲＲを得る。ＤＮＳキャッシュサーバ１６は、このＡ  ＲＲを含む応答を通信装置１００に送信する。
【００６２】
次に、通信装置１００の第２取得部１０３は、ＤＮＳキャッシュサーバ１６から送信された応答メッセージを受信し、受信したメッセージからＩＰｖ４アドレスを取得する（ステップＳ７０４）。
【００６３】
図１のような構成では、第１取得部１０２および第２取得部１０３により、２つのＩＰｖ６接続用アドレス「Q::H」および「P::x.y.z.w」と、１つのＩＰｖ４アドレス「x.y.z.w」が得られる。
【００６４】
次に、設定部１０４が、取得された各アドレスにデフォルトの優先度（５）と対応づけて記憶部１２０に保存する（ステップＳ７０５）。この例では、図４に示すようなＩＰｖ６アドレスリスト１２１と、図５に示すようなＩＰｖ４アドレスリスト１２２が記憶部１２０に保存される。
【００６５】
次に、これらの取得したアドレスを、接続確立を試みるべき順番にしたがって整列するアドレス整列処理が実行される（ステップＳ７０６）。アドレス整列処理の詳細については後述する。
【００６６】
アドレス整列処理の後、選択部１０７が、宛先ホスト２００との接続確立に用いるアドレスとして、整列されたアドレスの中から優先度の最も大きいアドレスを選択する（ステップＳ７０７）。この後、このようにして選択されたアドレスを用いて、宛先ホスト２００との接続が確立される。
【００６７】
次に、ステップＳ７０６のアドレス整列処理の詳細について説明する。図８は、アドレス整列処理の全体の流れを示すフローチャートである。
【００６８】
まず、判断部１０５は、ＩＰｖ６アドレスリスト１２１からＩＰｖ６接続用アドレスを１つ取得する（ステップＳ８０１）。次に、判断部１０５は、ＩＰｖ４アドレスリスト１２２からＩＰｖ４アドレスを１つ取得する（ステップＳ８０２）。
【００６９】
なお、この例では１つのＩＰｖ４アドレス（「x.y.z.w」）のみがＩＰｖ４アドレスリスト１２２に格納されているが、負荷分散などのため同一の端末名で複数のＩＰｖ４アドレスが付与されている場合があり、この場合は複数のＩＰｖ４アドレスがＩＰｖ４アドレスリスト１２２に格納される。したがって、このような場合は、判断部１０５は、ＩＰｖ４アドレスリスト１２２内の複数のＩＰｖ４アドレスからいずれか１つを取得する。
【００７０】
次に、判断部１０５は、取得したＩＰｖ６接続用アドレスとＩＰｖ４アドレスとの対応関係を判定することにより、ＩＰｖ６接続用アドレスが拡張ＩＰｖ６アドレスであるか否かを判断するアドレス対応判定処理を実行する（ステップＳ８０３）。アドレス対応判定処理の詳細については後述する。
【００７１】
次に、判断部１０５は、アドレス対応判定処理の結果を参照してＩＰｖ６接続用アドレスとＩＰｖ４アドレスとは対応するか否かを判断する（ステップＳ８０４）。対応する場合は（ステップＳ８０４：ＹＥＳ）、変更部１０６が、当該ＩＰｖ６接続用アドレスの優先度を下げる（ステップＳ８０５）。
【００７２】
優先度を下げたあと、または、ステップＳ８０４で、アドレスが対応しないと判断された場合は（ステップＳ８０４：ＮＯ）、判断部１０５は、すべてのＩＰｖ４アドレスを処理したか否かを判断する（ステップＳ８０６）。
【００７３】
すべてのＩＰｖ４アドレスを処理していない場合は（ステップＳ８０６：ＮＯ）、判断部１０５は、次のＩＰｖ４アドレスをＩＰｖ４アドレスリスト１２２から取得して処理を繰り返す（ステップＳ８０２）。すべてのＩＰｖ４アドレスを処理した場合は（ステップＳ８０６：ＹＥＳ）、判断部１０５は、すべてのＩＰｖ６接続用アドレスを処理したか否かを判断する（ステップＳ８０７）。
【００７４】
すべてのＩＰｖ６接続用アドレスを処理していない場合は（ステップＳ８０７：ＮＯ）、判断部１０５は、次のＩＰｖ６接続用アドレスをＩＰｖ６アドレスリスト１２１から取得して処理を繰り返す（ステップＳ８０１）。すべてのＩＰｖ６接続用アドレスを処理した場合は（ステップＳ８０７：ＹＥＳ）、変更部１０６は、ＩＰｖ４アドレスの優先度を、ＩＰｖ６接続用アドレスの優先度より下げる（ステップＳ８０８）。例えば、変更部１０６は、ＩＰｖ４アドレスの優先度を１に設定する。これにより、ＩＰｖ４アドレスよりＩＰｖ６接続用アドレスが優先して利用されるようになる。
【００７５】
このように、ＩＰｖ６接続用アドレスとＩＰｖ４アドレスとの対応を判定し、ＩＰｖ６接続用アドレスが拡張ＩＰｖ６アドレスであると判断された場合に、拡張ＩＰｖ６アドレスの優先度を下げることにより、拡張ＩＰｖ６アドレス以外のＩＰｖ６アドレスを優先して利用するようにアドレスを整列することができる。
【００７６】
なお、上述の説明では、各アドレスに優先度を付与してアドレスを整列する例について説明したが、優先度を用いずに、拡張ＩＰｖ６アドレスであると判断されたＩＰｖ６接続用アドレスのＩＰｖ６アドレスリスト１２１内での格納位置を変更することによりアドレスを整列するように構成してもよい。例えば、拡張ＩＰｖ６アドレスであると判断されたＩＰｖ６接続用アドレスをリストの後方に移動し、接続時にはリストの先頭からアドレスを取得することにより、適切なアドレスを優先して選択することが可能となる。
【００７７】
次に、ステップＳ８０３のアドレス対応判定処理の詳細について説明する。図９は、アドレス対応判定処理の全体の流れを示すフローチャートである。
【００７８】
まず、判断部１０５は、カウンタｉを１に初期化し（ステップＳ９０１）、ＩＰｖ６接続用アドレスのｉビット目以降の３２ビットのビット列と、ＩＰｖ４アドレスを構成する３２ビットのビット列とを比較する（ステップＳ９０２）。
【００７９】
次に、判断部１０５は、両者が一致するか否かを判断し（ステップＳ９０３）、一致する場合は（ステップＳ９０３：ＹＥＳ）、アドレスが対応すると判定する（ステップＳ９０４）。一致しない場合は（ステップＳ９０３：ＮＯ）、判断部１０５は、カウンタｉに１を加算し（ステップＳ９０５）、カウンタｉの値が９６を越えたか否かを判断する（ステップＳ９０６）。
【００８０】
カウンタｉの値が９６を越えていない場合は（ステップＳ９０６：ＮＯ）、次の３２ビットを取得して処理を繰り返す（ステップＳ９０２）。カウンタｉの値が９６を越えた場合は（ステップＳ９０６：ＹＥＳ）、判断部１０５は、アドレスが対応していないと判定し（ステップＳ９０７）、アドレス対応判定処理を終了する。
【００８１】
なお、本実施の形態では、「x.y.z.w」のように表現される３２ビットの整数は、１２８ビットのＩＰｖ６アドレス「Q::H」内のいずれの連続する３２ビットにも現れないと仮定している。このような仮定は、「Q::H」が一般のグローバルＩＰｖ６アドレスであれば通常成り立つと考えてよい。仮にＩＰｖ６アドレス内の連続する３２ビットとＩＰｖ４アドレスの３２ビットが一致するとしてもその可能性は極めて低いと考えられ、また、誤判定により拡張ＩＰｖ６アドレスが優先して用いられたとしても接続性に与える影響は小さい。
【００８２】
次に、本実施の形態における通信装置１００によるアドレス選択処理の具体例について説明する。ここでは、上述の例と同様に、図１に示すようなネットワーク環境で、通信装置１００が宛先ホスト２００への接続を確立するために適切なアドレスを選択する処理を例に説明する。
【００８３】
この例では、２つのＩＰｖ６接続用アドレス「Q::H」および「P::x.y.z.w」と、１つのＩＰｖ４アドレス「x.y.z.w」が取得される（ステップＳ７０２、ステップＳ７０４）。判断部１０５は、すでに述べた仮定により、ＩＰｖ６接続用アドレス「Q::H」とＩＰｖ４アドレス「x.y.z.w」には対応関係がないと判定する（ステップＳ９０７）。すなわち、「Q::H」はプロトコル変換用の拡張ＩＰｖ６アドレスではないと判定する。また、「Q::H」の優先度は維持される（ステップＳ８０４：ＮＯ）。
【００８４】
一方、判断部１０５は、ＩＰｖ６接続用アドレス「P::x.y.z.w」について、その９６ビット目以降の３２ビットがＩＰｖ４アドレス「x.y.z.w」と一致することから、２つのアドレスに対応関係があると判定する(ステップＳ９０４)。すなわち、「P::x.y.z.w」は、拡張ＩＰｖ６アドレスであると判定する。また、変更部１０６は、「P::x.y.z.w」の優先度を下げる（ステップＳ８０５）。
【００８５】
また、変更部１０６は、ＩＰｖ４アドレス「x.y.z.w」の優先度を２つのＩＰｖ６接続用アドレスよりも下げる（ステップＳ８０８）。ただし、ＩＰｖ４アドレスの優先度自体は、本実施形態における効果には影響はない。すなわち、ＩＰｖ４アドレス「x.y.z.w」が、２つのＩＰｖ６接続用アドレスに対してどのような優先度を与えられた場合にも、本実施形態の効果は成立する。
【００８６】
以上の結果により、選択部１０７は、ＩＰｖ６アドレス「Q::H」、拡張ＩＰｖ６アドレス「P::x.y.z.w」、およびＩＰｖ４アドレス「x.y.z.w」の順に接続用のアドレスを選択する。これにより、プロトコル変換によらずにＩＰｖ６のみによる直接の通信が可能な場合にはその方法で接続が確立される。ネットワークの不良等の理由によりＩＰｖ６による直接通信に失敗した場合には、変換用の拡張ＩＰｖ６アドレス「P::x.y.z.w」が選択され、トランスレータ１５を用いたプロトコル変換を利用して接続が確立される。
【００８７】
なお、上記実施の形態においては、ＩＰｖ４アドレス「x.y.z.w」は、対応する拡張ＩＰｖ６アドレス「P::x.y.z.w」の下位３２ビット（９６ビット以降の３２ビット）と一致していたが、ＩＰｖ６接続用アドレス中におけるＩＰｖ４アドレスの開始位置は９６ビット目でなくても同様の効果が成立する。
【００８８】
また、上述の手順では、ＩＰｖ６接続用アドレスを構成するビット列のうち、ＩＰｖ４アドレスとの対応関係を有する可能性のあるすべてのビット列について判定していたが、判定効率を上げるために、特定のビットから開始するビット列にのみ限定して判定するように構成してもよい。例えば、通常の計算機における自然なビット境界である４、８、１６、３２、４８、または６４ビットの境界ごとに判定するために、カウンタｉの増分をそれぞれ４、８、１６、３２、４８、または６４とするように構成してもよい。同様に、ある特定のビットの集合に対してのみ適用するように構成してもよい。
【００８９】
また、上記実施の形態においては、宛先ホスト２００の端末名に対応するＩＰアドレスを得るためにＤＮＳを用いているが、接続を確立する宛先ホスト２００のＩＰアドレスを取得できるものであれば、他のあらゆる方法を適用することができる。
【００９０】
このように、本実施の形態にかかる通信装置では、ＤＮＳキャッシュサーバから取得したＩＰｖ４アドレスとＩＰｖ６アドレスとを比較することにより、取得したＩＰｖ６アドレスが拡張ＩＰｖ６アドレスか否かを判断し、拡張ＩＰｖ６アドレスの優先度を変更した後、接続に用いるアドレスの選択を行うことができる。すなわち、管理者が手作業で設定したり、外部装置に依存したりせずに、自律的に最善の宛先アドレスを選択することができる。
【００９１】
また、ＩＰｖ６からＩＰｖ４へのプロトコル変換が利用できる環境で、与えられた宛先ホストがＩＰｖ６とＩＰｖ４の両方の接続性およびアドレスを持つ場合に、ＩＰｖ６のみによる接続確立を優先した上で、次善の候補としてプロトコル変換を利用して接続を行うことが可能となる。その結果、ＩＰｖ６ネットワークの品質に問題が生じうる場合でも、最大限の接続性を最善の順序で提供することが可能となる。また、この接続順序は、候補となるアドレスが得られた後はホスト内の動作のみによって決定され、外部のサーバ等の情報に依存していないため、外部サーバの運用に伴うコストが不要となる。
【００９２】
図１０は、本実施の形態にかかる通信装置のハードウェア構成を示す説明図である。
【００９３】
本実施の形態にかかる通信装置は、ＣＰＵ（Central Processing Unit）５１などの制御装置と、ＲＯＭ（Read Only Memory）５２やＲＡＭ５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００９４】
本実施の形態にかかる通信装置で実行されるアドレス選択プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００９５】
また、本実施の形態にかかる通信装置で実行されるアドレス選択プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施の形態にかかる通信装置で実行されるアドレス選択プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００９６】
また、本実施の形態のアドレス選択プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００９７】
本実施の形態にかかる通信装置で実行されるアドレス選択プログラムは、上述した各部（送信部、第１取得部、第２取得部、設定部、判断部、変更部、選択部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１（プロセッサ）が上記記憶媒体からアドレス選択プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【００９８】
以上のように、本発明にかかる装置、方法およびプログラムは、ＩＰｖ６ネットワークとＩＰｖ４ネットワークの双方に接続された外部通信装置と通信する通信装置に適している。
【図面の簡単な説明】
【００９９】
【図１】本実施の形態の通信装置を含むネットワーク全体の構成を示す説明図である。
【図２】ＩＰｖ４ネットワークのみに接続された宛先ホストを含むネットワーク全体の構成を示す説明図である。
【図３】本実施の形態にかかる通信装置の構成を示すブロック図である。
【図４】ＩＰｖ６アドレスリストのデータ構造の一例を示す説明図である。
【図５】ＩＰｖ４アドレスリストのデータ構造の一例を示す説明図である。
【図６】ＤＮＳキャッシュサーバから返信される応答メッセージの一例を示す説明図である。
【図７】本実施の形態におけるアドレス選択処理の全体の流れを示すフローチャートである。
【図８】アドレス整列処理の全体の流れを示すフローチャートである。
【図９】アドレス対応判定処理の全体の流れを示すフローチャートである。
【図１０】本実施の形態にかかる通信装置のハードウェア構成を示す説明図である。
【符号の説明】
【０１００】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  通信Ｉ／Ｆ
６１  バス
１１  ＩＰｖ６ネットワーク
１２  ＩＰｖ４ネットワーク
１５  トランスレータ
１６  ＤＮＳキャッシュサーバ
１７  ネームサーバ
１００  通信装置
１０１  送信部
１０２  第１取得部
１０３  第２取得部
１０４  設定部
１０５  判断部
１０６  変更部
１０７  選択部
１２０  記憶部
１２１  ＩＰｖ６アドレスリスト
１２２  ＩＰｖ４アドレスリスト
２００  宛先ホスト
３００  宛先ホスト
３１７  ネームサーバ
【図１】
2008078814.tif 000003
【図２】
2008078814.tif 000004
【図３】
2008078814.tif 000005
【図４】
2008078814.tif 000006
【図５】
2008078814.tif 000007
【図６】
2008078814.tif 000008
【図７】
2008078814.tif 000009
【図８】
2008078814.tif 000010
【図９】
2008078814.tif 000011
【図１０】
2008078814.tif 000012