(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続される他の装置と通信し、第１の通信プロトコルに対応するアプリケーションプログラムが動作する情報処理装置におけるパケット通信方法であって、
前記他の装置のアドレスを問い合わせる問合せパケットを前記ネットワークに送信し、
前記ネットワークから前記他の装置の第２の通信プロトコルに対応したアドレスを含むアドレス応答パケットを受信し、
前記アドレス応答パケットに含まれる前記他の装置の第２の通信プロトコルに対応したアドレスに対して、第１の通信プロトコルに対応したアドレスを割り当て、
前記第１の通信プロトコルに対応したアドレスと前記他の装置の第２の通信プロトコルに対応したアドレスとの対応付けを記憶し、
前記アプリケーションプログラムが前記他の装置に前記第１の通信プロトコルに対応する第１のパケットを送信する際に、
前記第１のパケットに宛先アドレスとして含まれる前記第１の通信プロトコルに対応した第１のアドレスに対応付けられた前記第２の通信プロトコルに対応した第２のアドレスが記憶されている場合は、前記第１のパケットを前記第２のアドレスを宛先アドレスとして含む第２のパケットに変換して前記他の装置へ送信し、
前記第１のアドレスに対応付けられた前記第２のアドレスが記憶されていない場合は、前記第１のパケットを前記他の装置へ送信するパケット通信方法。
【請求項２】
請求項１記載のパケット通信方法であって、
前記情報処理装置において、前記アプリケーションプログラムが前記他の装置から前記第２の通信プロトコルに対応するパケットを受信する際に、
前記記憶した対応付けに基づいて、前記受信パケットに含まれる送信元アドレスを前記第２の通信プロトコルに対応したアドレスから前記第１の通信プロトコルに対応したアドレスに変換するパケット通信方法。
【請求項３】
請求項１記載のパケット通信方法であって、
前記第１の通信プロトコルはＩＰｖ４であり、前記第２の通信プロトコルはＩＰｖ６であるパケット通信方法。
【請求項４】
請求項３記載のパケット通信方法であって、
前記アプリケーションプログラムが前記他の装置にＩＰｖ４パケットを送信する際に、
前記情報処理装置は、前記記憶した対応付けに基づいて、前記ＩＰｖ４パケットに含まれる送信先アドレスをＩＰｖ４アドレスからＩＰｖ６アドレスに変換し、前記ＩＰｖ４パケットのヘッダをＩＰｖ４ヘッダからＩＰｖ６ヘッダに変換するパケット通信方法。
【請求項５】
請求項３記載のパケット通信方法であって、
前記情報処理装置において、複数のＩＰｖ４アドレスを保持し、
前記第１のアドレスは、前記保持された複数のＩＰｖ４アドレスの１つを割り当てたＩＰｖ４アドレスであり、
前記第２のアドレスは前記他の装置に割り当てられたＩＰｖ６アドレスであるパケット通信方法。
【請求項６】
請求項３記載のパケット通信方法であって、
前記情報処理装置において、前記アプリケーションプログラムが前記他の装置からＩＰｖ６パケットを受信する際に、
前記記憶した対応付けに基づいて、前記受信したＩＰｖ６パケットに含まれる送信元アドレスをＩＰｖ６アドレスからＩＰｖ４アドレスに変換し、前記ＩＰｖ６パケットのヘッダをＩＰｖ６ヘッダからＩＰｖ４ヘッダに変換するパケット通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＰｖ４ネットワークに対応するアプリケーションをＩＰｖ６ネットワーク上で動作させる方法，パケット生成方法、ＩＰネットワーク用トランスレータ，およびＮＡＴ（Network Address Translator)、並びにパケット生成プログラムを記録した記憶媒体に関する。
【背景技術】
【０００２】
ＴＣＰ(Transmission Control Protocol)／ＩＰ(Internet Protocol)通信で使用するネットワーク層のプロトコルとして現在最もよく知られているのはＩＰである。現時点では、バージョン４のＩＰ（以下、ＩＰｖ４と呼ぶ）が普及している。
【０００３】
ＩＰは現在、インターネットの普及などと歩調を合わせて、様々な通信サービスに急速に広がりつつあるが、その一方で、ＩＰアドレスの枯渇という深刻な問題に直面している。
【０００４】
これを解決するための手段として現在、ＩＰｖ４のプライベートアドレス空間をローカルなＬＡＮにつける暫定的な解決策やバージョン６のＩＰ（以下、ＩＰｖ６と呼ぶ）が提案されている。
【０００５】
現在では、ＩＰｖ６によるＬＡＮとＩＰｖ４によるＬＡＮが混在した形で大規模なＬＡＮが形成されつつある。そして、ＩＰｖ６によるＬＡＮとＩＰｖ４によるＬＡＮの相互接続に関する標準化のドキュメントとして非特許文献１のＲＦＣ１９３３がある。非特許文献１ではＩＰｖ６ソフトウエアを有する通信制御装置においてＩＰｖ４アドレスをＩＰｖ６アドレスにマッピングすることでＩＰｖ６ネットワークの相互接続を可能にしている。
【０００６】
このように、ＩＰｖ６ネットワークが形成されつつある中で、ＩＰｖ６対応のＡＰは、ＩＰｖ４対応のＡＰに比べて、非常に少ない。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ＲＦＣ１９３３(Transition Mechanism for IPv6 Hosts and Routers; R.Gilligan, 1996.4, IETF)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来ＰＣ／ＷＳ上のＩＰｖ４対応アプリケーションとＰＣ／ＷＳのＩＰｖ６対応アプリケーションが、ＮＡＴ機能を有するアドレス変換ルータ等のネットワーク機器を介さずに直接通信する手段はなかった。
【０００９】
アドレス変換ルータを使用する場合、従来ルーティング処理に加えてプロトコル変換も行うためアドレス変換ルータにかかる負荷が大きい。また、ＩＰｖ４のハードウエアアドレス解決用パケットは、変換されない。
【００１０】
本発明の目的は、
（１）ＰＣ／ＷＳ上のＩＰｖ４対応のＡＰがＮＡＴ機能を有するアドレス変換ルータ等のネットワーク機器を介さずに、直接ＰＣ／ＷＳ上のＩＰｖ６対応アプリケーションと通信できるようにすること。
（２）既存のＩＰｖ４対応のＡＰが接続先ホストのＩＰアドレスを意識することなく通信するためには、ＤＮＳ(Domain Name System)による論理名によるアドレス解決が必須である。本発明の第２の目的は、ＩＰｖ４対応のＡＰが、通信相手のアドレスを意識せずに通信させるため、ＩＰｖ６対応のＤＮＳ機能（ＩＰｖ６アドレス問い合わせ機能）を提供することである。
（３）ＩＰｖ４対応ＡＰがＩＰｖ６対応ＡＰと通信するため、既存ＡＰが出すＩＰｖ４のハードウエアアドレス解決パケットをＩＰｖ６対応のハードウエアアドレス解決パケットに変換できるようにすることである。
【課題を解決するための手段】
【００１１】
ＰＣ／ＷＳ等のＬＡＮ制御装置は、通常ＩＰｖ４対応ＡＰ、ＩＰｖ４プロトコル制御部から構成される。
【００１２】
上記目的を達成させるため、ＬＡＮ制制御装置内のＩＰｖ４プロトコル制御部とＬＡＮ制御部の間にプロトコル変換制御部を設ける。プロトコル変換制御部はＩＰｖ４−ＩＰｖ６スイッチ制御部、バッファ変換制御部、ヘッダ変換制御部、ＩＰｖ６送受信制御部１０１４，ＤＮＳ−ＮＡＴ連携制御部から構成する。
【００１３】
上記第１の課題を解決するためプロトコル変換制御部は、ＩＰｖ４プロトコル制御部から出力されるＩＰｖ４パケットをＩＰｖ６パケットに変換してＬＡＮ制御部へ出力する。またＬＡＮ制御部から出力されたＩＰｖ６パケットをＩＰｖ４パケットに変換し、ＩＰｖ４プロトコル制御部へ出力する。
【００１４】
つぎに第２、第３の課題を解決するための各制御部間の制御とデータの流れを説明する。
【００１５】
まず、送信の場合について説明する。
【００１６】
ＩＰｖ４対応ＡＰからＩＰｖ４プロトコル制御部にデータが渡されＩＰｖ４プロトコル制御部からＩＰｖ４パケットがプロトコル変換制御部１００６に渡されると、プロトコル変換制御部は渡されたパケットを解釈し、次のような処理を行う。ＡＲＰリクエストパケットの場合、ＩＰｖ４プロトコル制御部に対して、プロトコル変換制御部で生成したハードウエアアドレスを通知し、実際のハードウエアアドレス解決は、ＩＰｖ６プロトコルを使って行うことにより解決する。
【００１７】
ＤＮＳの問い合わせパケットの場合、ＩＰｖ６アドレスとＩＰｖ４アドレスの両方を問い合わせ、ＩＰｖ６アドレスが応答パケットとして返ってきたときには、ＩＰｖ６アドレスに対応するＩＰｖ４アドレスをＩＰｖ４プロトコル制御部に伝える。
【００１８】
通常のパケットの場合、ＩＰｖ４ヘッダ内の送信先ＩＰｖ４アドレスを見て、プロトコル変換制御部内のアドレス変換テーブルに登録されているアドレスの場合は、対応するＩＰｖ６アドレスに変換して、ＩＰｖ６ヘッダを作成し、ＩＰｖ６パケットとしてＬＡＮ上に送信する。プロトコル変換制御部内のアドレス変換テーブルに登録されていない場合は、そのままＩＰｖ４パケットをＬＡＮ上に送信する。
【００１９】
次に受信の場合について説明する。
【００２０】
ＬＡＮ制御部からＩＰｖ６パケットを受信すると、プロトコル変換制御部はＩＰｖ６ヘッダ内の送信元ＩＰｖ６アドレスを見てプロトコル変換制御部内のアドレス変換テーブルに登録されているアドレスの場合は、対応するＩＰｖ４アドレスに変換してＩＰｖ４ヘッダを作成し、上位のＩＰｖ４プロトコル制御部にＩＰｖ４パケットデータを渡す。
【００２１】
プロトコル制御部内のアドレス変換テーブルに登録されていないＩＰｖ６アドレスの場合は、その受信パケットを廃棄する。ＬＡＮ制御部からＩＰｖ４パケットを受信したときはＤＮＳ応答パケット以外のパケットデータをプロトコル制御部に渡す。このようにして、ＩＰｖ４対応ＡＰとＩＰｖ６対応ＡＰを通信させることができる。
【００２２】
以上のような手段を用いることにより上記目的は達成される。
【発明の効果】
【００２３】
プロトコル変換制御部を従来のプロトコル制御部とＬＡＮ制御部の間におき、プロトコル制御部とＬＡＮ制御部との間で流れるパケットをプロトコル変換制御部がＩＰｖ４とＩＰｖ６のヘッダ変換することにより、プロトコル制御部にデータを渡すアプリケーションがＩＰｖ４対応のものであってもＩＰｖ６ネットワークに接続される他の装置とＩＰｖ６による通信が可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第一の実施例におけるＬＡＮ制御装置の構成を示す図である。
【図２】本発明の実施例における通信ネットワークシステムの構成例を示す図である。
【図３】本発明の実施例におけるホストＡのアドレス変換テーブルの構成例を示す図である。
【図４】本発明の実施例におけるホストＢのアドレス変換テーブルの構成例を示す図である。
【図５】本発明の第二の実施例におけるＬＡＮ制御装置の構成を示す図である。
【図６】本発明の第三の実施例におけるＬＡＮ制御装置の構成を示す図である。
【図７】ＭＡＣアドレス解決のためのパケットシーケンスを示す図である。
【図８】ＤＮＳ−ＮＡＴ連携制御部の処理フロー（ＤＮＳパケット送信処理）である。
【図９】ＤＮＳ−ＮＡＴ連携制御部の処理フロー（ＤＮＳパケット受信処理）である。
【図１０】ＩＰｖ４−ＩＰｖ６スイッチ制御部のパケットスイッチ制御処理フロー
【図１１】ＵＤＰヘッダパケットのフォーマットである。
【図１２】ＤＮＳヘッダパケットのフォーマットである。
【図１３】ＤＮＳ問い合わせメッセージのフォーマットである。
【図１４】ＤＮＳ応答メッセージのフォーマットである。
【図１５】ＡＲＰメッセージのフォーマットである。
【図１６】情報処理装置の構成を示す図である。
【発明を実施するための形態】
【００２５】
本発明を示す一実施例について説明する。
【００２６】
まず、本実施例を使用したホストを接続したネットワーク構成例について説明する。
【００２７】
図２は、本実施例のネットワーク構成例を示した図である。ＩＰｖ６ネットワークとＩＰｖ４ネットワークをＩＰｖ４−ＩＰｖ６変換ルータ２０１２が接続している。ＩＰｖ４ネットワーク上には、ＩＰｖ４ネットワークとＩＰｖ６ネットワークのドメインネームを管理するＤＮＳ（ドメインネームシステム）サーバ２０１７が接続している。それから、ＰＣ等の既存のＩＰｖ４対応のホストＤ２０１８が接続している。
【００２８】
ＩＰｖ６ネットワークには、ホストＡ１００１，ホストＢ２００１，ホストＣ２００７が接続している。ホストＡ１００１及びホストＢ２００１は、本実施例で説明するＩＰｖ４−ＩＰｖ６変換機能を持ったホストである。ホストＣは、ＩＰｖ６専用ホストで、ＩＰｖ６対応のＡＰが動作していホストＡ及びＢ内には、ＩＰｖ４対応ＡＰ１００４，プロトコル制御部１００５，プロトコル変換制御部１００６，ＬＡＮ制御部１００７がある。
【００２９】
まず、ホストＡ内の各制御部間のインタフェースについて説明する。
【００３０】
ＴＣＰ／ＩＰｖ４対応ＡＰ１００４とインタフェースプロトコル制御部１００５間のインタフェースは、ユーザデータで行われる。
【００３１】
プロトコル制御部１００５とプロトコル変換制御１００６の間は、ＩＰｖ４パケットで行われる。ＩＰｖ４パケットとは、ＭＡＣ(Media Access Control)ヘッダ部とＩＰｖ４パケットデータ部から構成される。プロトコル変換制御部１００６とＬＡＮ制御部１００７の間はＩＰｖ６パケットとＩＰｖ４パケットで行われる。
【００３２】
ＩＰｖ６パケットとは、ＭＡＣヘッダ部とＩＰｖ６ヘッダ部とＩＰｖ６パケットデータ部から構成される。つまり、プロトコル変換制御部１００６は、プロトコル制御部１００５から入力される。ＩＰｖ４パケットのＩＰｖ４ヘッダを見てヘッダ変換するかどうかを判定し、変換する場合はＩＰｖ６ヘッダに変換してＩＰｖ６パケットをＬＡＮ制御部へ出力する。
【００３３】
つぎにホストＡ〜Ｄで設定されるアドレスについて説明する。
【００３４】
ホストＡのプロトコル制御部が保持するＩＰｖ４アドレスをＩＰｖ４−Ａ，ホストＢのプロトコル制御部が保持するＩＰｖ４アドレスをＩＰｖ４−Ｂ，ホストＤのプロトコル制御部が保持するＩＰｖ４アドレスをＩＰｖ４−Ｄとする。
【００３５】
ホストＡのアドレス変換テーブルの構成例を図３に示す。
【００３６】
ホストＡのＩＰｖ４アドレスＩＰｖ４−ＡにＩＰｖ６アドレスＩＰｖ６−Ａが対応し、ホストＢのＩＰｖ６アドレスＩＰｖ６−ＢにプライベートＩＰｖ４アドレスＩＰｖ４−Ｂ（ｐｒｉｖａｔｅ）が対応し、ホストＣのＩＰｖ６アドレスＩＰｖ６−ＣにプライベートＩＰｖ４アドレスＩＰｖ４−Ｃ（ｐｒｉｖａｔｅ）が対応している。
【００３７】
ホストＢのアドレス変換テーブルの構成例を図４に示す。
【００３８】
ホストＢのＩＰｖ４アドレスＩＰｖ４−ＢにＩＰｖ６アドレスＩＰｖ６−Ｂが対応し、ホストＣのＩＰｖ６アドレスＩＰｖ６−ＣにプライベートＩＰｖ４アドレスＩＰｖ４−Ｃ（ｐｒｉｖａｔｅ）が対応し、ホストＡのＩＰｖ６アドレスＩＰｖ６−ＡにプライベートＩＰｖ４アドレスＩＰｖ４−Ａ（ｐｒｉｖａｔｅ）が対応している。
【００３９】
ＮＡＴテーブルの１つめのエントリである自局のＩＰｖ４アドレスとＩＰｖ６アドレスの対応テーブルは、初期化時に設定される。２つめ以降のエントリは、ユーザがスタティックに設定するか、プロトコル変換制御部内のＤＮＳ−ＮＡＴ連携制御部によってダイナミックに設定される。
【００４０】
つぎにホストＡとホストＢ，ホストＡとホストＣ，ホストＡとホストＤの間での通信をアドレス変換テーブルを使って説明する。
【００４１】
まず、ホストＡとホストＢの通信について説明する。
【００４２】
ホストＡのＩＰｖ４対応ＡＰは、ホストＢに対する仮のＩＰｖ４アドレスＩＰｖ４−Ｂ（ｐｒｉｖａｔｅ）を使ってＩＰｖ４パケットを送信する。プロトコル変換制御部は、ＩＰｖ４ヘッダ中の送信先ＩＰｖ４アドレスを見て、それがアドレス変換テーブルに登録されているので対応するＩＰｖ６アドレスをアドレス変換テーブルから取り出してＩＰｖ６ヘッダを作成し、ＩＰｖ６パケットをＬＡＮ制御部を使ってＬＡＮに送出する。ホストＢのＬＡＮ制御部２００６はＩＰｖ６パケットを受信するとそれをプロトコル変換制御部２００４へ渡す。
【００４３】
プロトコル変換制御部２００９はＩＰｖ６ヘッダ中の送信先ＩＰｖ６アドレスを見て、それがアドレス変換テーブルに登録されている場合、対応するＩＰｖ４アドレスをアドレス変換テーブル４００１から取り出してＩＰｖ４ヘッダを作成し、ＩＰｖ４パケットをプロトコル変換制御部へ渡す。
【００４４】
つぎにホストＡとホストＣの通信について説明する。ホストＡではホストＢへの通信と同様にホストＣに対する仮のＩＰｖ４アドレスに対してアドレス変換テーブル３００１を使ってＩＰｖ６パケットを生成し、ホストＣはＩＰｖ６パケットをそのまま受信し、プロトコル制御部２００９によって解釈される。
【００４５】
つぎにホストＡとホストＤの通信について説明する。
【００４６】
ホストＡのＩＰｖ４対応ＡＰは、ホストＤに対するＩＰｖ４アドレスＩＰｖ４−Ｄを使ってＩＰｖ４パケットを送信する。プロトコル変換制御部は、ＩＰｖ４ヘッダ中の送信先ＩＰｖ４アドレスを見る。ＩＰｖ４−Ｄは、アドレス変換テーブルに登録されてないのでヘッダ変換は行われず、ＩＰｖ４パケットＬＡＮ制御部を通して送出される。
【００４７】
つぎにホストＡやホストＢのＬＡＮ制御装置の構成について図１を使って説明する。図１は、ＬＡＮ制御装置１００１の構成を示している。
【００４８】
ＬＡＮ制御装置１００１は、アプリケーション（ＡＰ）が動くユーザ空間１００２とカーネルが動くカーネル空間１００３から構成される。ユーザ空間１００２には、ＴＣＰ／ＩＰｖ４対応ＡＰ１００４がある。このＡＰにtelnet,ftp,HTTPクライアント等ＴＣＰ／ＩＰｖ４に対応したプログラムがある。
【００４９】
ユーザ空間１００２内のＴＣＰ／ＩＰｖ４対応ＡＰ １００４とカーネル空間１００３内のプロトコル制御部１００５間のインタフェースは、ＴＣＰ／ＩＰｖ４対応ＡＰ １００４が生成するデータパケットを入出力することにより行われる。
【００５０】
カーネル空間１００３は、プロトコル制御部１００５，プロトコル変換制御部１００６，ＬＡＮ制御部１００７から構成されている。
【００５１】
プロトコル制御部１００５とプロトコル変換制御部のインタフェースは、ＩＰｖ４パケットを入出力することにより行われる。ＩＰｖ４パケットとは、データパケットにＩＰｖ４ヘッダとＭＡＣ(Media Access Control)ヘッダを加えたパケットである。プロトコル変換制御部１００６とＬＡＮ制御部１００７の間のインタフェースは、ＩＰｖ４パケット、又はＩＰｖ６パケットを入出力することにより行われる。ＩＰｖ６パケットとは、データパケットにＩＰｖ６ヘッダとＭＡＣヘッダを加えたパケットである。
【００５２】
プロトコル制御部１００５は、ＴＣＰ送受信制御部１００８とＩＰｖ４送受信制御部１００９から構成される。
【００５３】
プロトコル変換制御部１００６は、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０，バッファ変換制御部１０１１，ＤＮＳ−ＮＡＴ連携制御部１０１２，ヘッダ変換制御部１０１３，ＩＰｖ６送受信制御部１０１４，アドレス変換テーブル１０１５、問い合わせパケットキュー１０１６から構成される。
【００５４】
つぎに、プロトコル変換制御部内の各制御部について説明する。
【００５５】
まず、各制御部間の入出力インタフェースについて説明する。プロトコル変換制御部内の各制御部間はすべて、ＩＰｖ４パケット又はＩＰｖ６パケットを入出力することによって行われる。
【００５６】
次に各制御部の機能について説明する。
【００５７】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、プロトコル制御部１００５から渡されたＩＰｖ４パケットとＬＡＮ制御部からの受信パケット（ＩＰｖ４パケット又はＩＰｖ６パケット）に対するパケットスイッチング機能とプロトコル制御部１００５に対するハードウエアアドレスダミー応答処理機能を持つ。この処理内容については後で詳しく説明する。
【００５８】
バッファ変換制御部１０１１は、プロトコル制御部１００５が扱うバッファとプロトコル変換制御部１００６が扱うバッファの変換制御を行う。
【００５９】
ＩＰｖ６送受信制御部１０１４は、ＩＰｖ６プロトコル処理を行う。
【００６０】
ヘッダ変換制御部１０１３は、アドレス変換テーブル１０１５に従ってＩＰｖ４ヘッダとＩＰｖ６ヘッダの変換を行う。ＤＮＳ−ＮＡＴ連携制御部は、プロトコル制御部１０１５からのＤＮＳアドレス問い合わせパケットをコピーし、ＩＰｖ４アドレスとＩＰｖ６アドレスの両方の問い合わせを行う。また、ＤＮＳ−ＮＡＴ連携制御部１０１２は、ＩＰｖ４のアドレス（通常プライベートアドレス）をプールしていて、接続先ホストのＩＰｖ６アドレスに対してプールしていたＩＰｖ４アドレスを割り当て（仮ＩＰｖ４アドレス）、それをヘッダ変換制御部１０１３内のアドレス変換制御テーブル１０１５に登録し、その仮ＩＰｖ４アドレスをプロトコル制御部１００５に伝えることにより、上位のＴＣＰ／ＩＰｖ４対応ＡＰ１００４から仮ＩＰｖ４アドレスを使ってＩＰｖ６ネットワークに接続できるようにする。
【００６１】
また、ＤＮＳ−ＮＡＴ連携制御部１０１２内部には、問い合わせパケットキュー１０１６を持っている。問い合わせパケットキューとは、プロトコル変換制御部１００５が出力するＤＮＳ問い合わせパケット情報とその問い合わせパケットに対する処理フラグ（ＤＮＳ問い合わせパケットに対するＤＮＳ応答パケットを処理したかどうかを示すフラグ）を合わせた情報を登録しているテーブルである。この問い合わせパケットキューを使ってアドレス問い合わせパケットをキューイングし、アドレス問い合わせパケットに対する応答パケットの受信制御を行う。ＤＮＳ−ＮＡＴ連携制御部１０１２の処理内容については、後で詳しく説明する。
【００６２】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０のハードウエアアドレスダミー処理機能について図７を使って説明する。
【００６３】
図７は、ＬＡＮ制御装置１００１内のプロトコル制御部１００５、ＩＰｖ４―ＩＰｖ６スイッチ制御部１０１０と接続先ホスト２００１間のＭＡＣアドレス解決のためのパケットシーケンスを示す図である。
【００６４】
プロトコル制御部１００５とＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０の間は、ＩＰｖ４パケットが入出力され、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０と接続先ホスト２００１の間は、ＩＰｖ６パケットがＬＡＮを介して入出力される。
【００６５】
まず、プロトコル制御部１００５が接続先ホスト２００１に対するハードウエアアドレス解決をするため、ＡＲＰのリクエストパケットをＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０に出力する。
【００６６】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、ＡＲＰ応答メッセージを作り、プロトコル制御部１００５に出力する。ＡＲＰ応答メッセージ中の送信元ハードウエアアドレスは、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０が任意のアドレスを生成し、セットする。プロトコル制御部１００５は、このハードウエアアドレスを使ってＭＡＣヘッダを作成し、ＩＰｖ４パケットをＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０に出力する。ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、ヘッダ変換制御部１０１３を通してＩＰｖ４パケットをＩＰｖ６パケットに変換する。このとき、ＭＡＣヘッダを生成するため、接続先ホスト２００１のハードウエアアドレス情報が必要になる。そのため、プロトコル制御部１００５から入力し、ＩＰｖ６パケットに変換したデータを一時ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０内に保持し、接続先ホスト２００１のハードウエアアドレスを問い合わせるためのＮＳ(Neighbor Solicitation)パケットを生成する。
【００６７】
ＩＰｖ４―ＩＰｖ６スイッチ制御部１０１０は、このＮＳパケット（ＩＰｖ６パケット）をＬＡＮを介して接続先ホスト２００１に出力する。接続先ホスト２００１はＮＳパケットに対し、自局のハードウエアアドレスを通知するためのＮＡ(Neighbor Advertisement)パケットを生成し、ＬＡＮを介してＬＡＮ制御装置１００１のＩＰｖ４―ＩＰｖ６スイッチ制御部１０１０に出力する。ＮＡパケットを受信したＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、ＮＡパケットに含まれる接続先ホスト２００１のハードウエアアドレス情報を元にＭＡＣヘッダを生成し、保持していたＩＰｖ６パケットデータと共にＩＰｖ６パケットを生成し、接続先ホスト２００１へＬＡＮを介して出力する。
【００６８】
ＡＲＰメッセージデータのフォーマットを図１５に示す。
【００６９】
ＡＲＰメッセージのハードウエアタイプフィールドは、ＬＡＮの種別を示す。Ｅｔｈｅｒｎｅｔ（登録商標）の場合、１が入る。プロトコルタイプフィールドは、プロトコルタイプを示す０ｘ０８００はＩＰを示している。ＨＬＥＮフィールドは、物理ハードウエアアドレスの長さ、ＰＬＥＮフィールドは、プロトコルアドレスの長さを示している。オペレーションフィールドには、ＡＲＰリクエスト、ＡＲＰ応答等のＡＲＰパケットの種別を示している。
【００７０】
つぎに、図１０を使ってＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０のパケットスイッチ制御機能について説明する。
【００７１】
図１０は、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０のパケットスイッチ制御処理フローを示している。
【００７２】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、プロトコル制御部１００６から入力されるＩＰｖ４パケットのヘッダ変換処理判定とＤＮＳパケット判定をしている。また、ＬＡＮ制御部１００７から入力されたＩＰｖ４パケットのヘッダ変換処理判定を行っている。
【００７３】
まず、プロトコル制御部１００５から入力されるパケットに対する処理について説明する。
【００７４】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、プロトコル制御部１００５からＩＰｖ４パケットを入力すると、まず、それがＤＮＳパケットであるかどうかを判定する（１０００１）。ＤＮＳパケットの場合、ＤＮＳヘッダのメッセージ内容を解釈してメッセージの内容により呼び出す制御部をスイッチする（１０００２）。
【００７５】
そのメッセージの内容がＤＮＳ応答パケットの場合、ＩＰｖ４パケットをそのままＬＡＮ制御部に出力する（１０００３）。そのメッセージの内容がＤＮＳ問い合わせパケットの場合は、ＤＮＳ−ＮＡＴ連携制御部にＩＰｖ４パケットを出力する（１０００４）。
【００７６】
プロトコル制御部１００５からの入力されたＩＰｖ４パケットがＤＮＳパケット以外の場合は、入力したＩＰｖ４パケットのＩＰｖ４ヘッダ内の送信先ＩＰｖ４アドレスを元にヘッダ変換制御部１０１３内のアドレス変換テーブル１０１５の検索を行う（１０００５）。ＩＰｖ４ヘッダ内の送信先ＩＰｖ４アドレスがアドレス変換テーブル１０１５に登録されているＩＰｖ４アドレスと一致していなかったら、ＬＡＮ制御部にＩＰｖ４パケットをそのまま出力する（１０００６）。一致していたらヘッダ変換制御部１０１１にＩＰｖ４パケットを出力して、プロトコル変換処理を行う（１０００７）。
【００７７】
つぎに、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０がＬＡＮ制御部１００７からＩＰｖ４又はＩＰｖ６パケット入力した場合についての処理を説明する。
【００７８】
ＬＡＮ制御部１００７からパケットを入力するとＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０はそのパケットがＩＰｖ４パケットかＩＰｖ６パケットかを判定する（１０００８）。ＩＰｖ４パケットの場合、それがＤＮＳ応答パケットであるかどうかを判定し（１０００９）、ＤＮＳ応答パケットでない場合、プロトコル制御部にＩＰｖ４パケットを出力する（１００１０）。ＤＮＳ応答パケットの場合、ＤＮＳ−ＮＡＴ連携制御部にＩＰｖ４パケットを出力する（１００１１）。ＬＡＮ制御部１００７から入力されたパケットがＩＰｖ６パケットの場合、ＩＰｖ６送受信制御部１０１４にＩＰｖ６パケットを出力する（１００１２）。
【００７９】
ＤＮＳパケットのフォーマットについて図１１〜図１４を使って説明する。
【００８０】
ＤＮＳパケットは通常、ＵＤＰ（User Datagram Protocol）が使われる。ＵＤＰヘッダフォーマットを図１１に示す。ＵＤＰヘッダは、ソースポート番号、ディスティネーションポート番号、データ長、ＵＤＰチェックサムフィールドで構成される。ＤＮＳのポート番号は通常５３が使用される。図１２は、ＤＮＳヘッダフォーマットを示している。ＤＮＳヘッダは、ＩＤ、制御フィールド、問い合わせレコード数、応答レコード数、登録機関レコード数、追加レコード数のフィールドに分かれている。ＩＤフィールドは、問い合わせパケットを生成するときに任意に生成される値で、問い合わせパケットに対応する応答パケットのＤＮＳヘッダ中のＩＤは、これと同じ値を持つ。制御フィールドには、問い合わせ／応答種別等のパケット情報が入っている。
【００８１】
図１３は、ＤＮＳ問い合わせメッセージフォーマットを示している。名前フィールドには、問い合わせのドメインネームがセットされる。ＱＴＹＰＥフィールドは、ＩＰｖ４／ＩＰｖ６アドレスの等の問い合わせ種別情報がセットされる。
【００８２】
図１４は、ＤＮＳ応答メッセージフォーマットを示している。名前フィールドは問い合わせのドメインネームがセットされる。ＱＴＹＰＥフィールドは、ＩＰｖ４／ＩＰｖ６アドレスの等の問い合わせ種別情報がセットされる。ＩＰｖ４  ｏｒ  ＩＰｖ６アドレスフィールドは、ＱＴＹＰＥフィールドで指定したアドレス種別に対応するアドレスがセットされる。
【００８３】
ＤＮＳ−ＮＡＴ連携制御部１０１２の処理フローについて図８、９を使って説明する。ＤＮＳ−ＮＡＴ連携制御部１０１２は、その処理内容を大きく分けてプロトコル制御部１００５から入力されるＤＮＳパケットの処理（図８のＤＮＳパケット送信処理で説明する）とＬＡＮ制御部１００７から入力するＤＮＳパケットの処理（図９のＤＮＳパケット受信処理で説明する）に分けられる。
【００８４】
まず、図８を使ってＤＮＳ−ＮＡＴ連携制御部１０１２がＩＰｖ４―ＩＰｖ６スイッチ制御部１０１０からＤＮＳアドレス問い合わせパケット（ＩＰｖ４パケット）を入力したときの処理フローについて説明する。
【００８５】
まず、入力したＩＰｖ４パケットのＵＤＰヘッダをチェックし、ソースポート番号が５３でＤＮＳヘッダ内のタイプがＤＮＳ問い合わせパケットかどうか判定する（８００１）。ＤＮＳアドレス問い合わせパケットでない場合、ＩＰｖ４パケットをそのままＬＡＮ制御部に出力する（８００２）。
【００８６】
ＤＮＳアドレス問い合わせパケットの場合、ＤＮＳパケットをコピーし（８００３）、コピーしたパケットを使ってＩＰｖ６アドレスに対するＤＮＳ問い合わせパケットを生成する（８００４）。そして、ＤＮＳヘッダのＩＤを問い合わせパケットキューに登録する（８００５）。
【００８７】
最後に、ＩＰｖ６アドレスのＤＮＳ問い合わせパケットをＬＡＮ制御部１００７に出力し（８００６）、ＩＰｖ４アドレスのＤＮＳ問い合わせパケットをＬＡＮ制御部１００７に出力する（８００７）。
【００８８】
つぎに図９を使ってＤＮＳ−ＮＡＴ連携制御部１０１２がＬＡＮ制御部１００７よりＤＮＳ応答パケットを入力したときの処理フローについて説明する。
【００８９】
まず、受信パケットのＤＮＳヘッダのＩＤと問い合わせパケットキューに登録してあるＩＤの比較を行い、ＤＮＳ応答パケットのＩＤが問い合わせパケットキュー１０１６に登録してある識別子と合致したものがあるかどうか検索する（９００１）。
【００９０】
無かったらそのままプロトコル制御部１００５へＤＮＳ応答パケットを出力する（９００２）。あった場合、ＤＮＳ問い合わせキューの該当パケットに対し、既に応答パケットがきたかどうかをチェックする（９００３）。既に応答パケットが来ていたら、該当レコードを問い合わせキューからデキューして（９００４）、現在受信処理中のＤＮＳ応答パケットは廃棄する（９００５）。
【００９１】
まだ、応答パケットが未処理の場合は、問い合わせキューの該当レコードに処理済みフラグを立て（９００６）。次の処理に進む。
【００９２】
つぎに、応答メッセージ内のＩＰアドレスを判定する（９００７）。応答メッセージのＩＰアドレスがＩＰｖ４アドレスの場合、そのままＤＮＳ応答パケットをプロトコル制御部に渡す（９００８）。応答メッセージ内のＩＰアドレスがＩＰｖ６の場合、対応するＩＰｖ４アドレスをアドレスプールテーブルより取り出して、アドレス変換テーブルに登録する（９００９）。つぎに、アサインしたＩＰｖ４アドレスを使ってＤＮＳ応答パケットを作成（９０１０）し、作成したＤＮＳ応答パケットをプロトコル制御部１００５へ出力する（９０１１）。
【００９３】
つぎに、本発明の第二の実施例について説明する。
【００９４】
図５は、ＬＡＮ制御装置５００１の構成を示している。ＬＡＮ制御装置５００１は、アプリケーション（ＡＰ）が動くユーザ空間１００２とカーネルが動くカーネル空間１００３からなる。ユーザ空間１００２には、ＴＣＰ／ＩＰｖ４対応ＡＰ１００４がある。
【００９５】
カーネル空間１００３には、プロトコル制御部１００５、プロトコル変換制御部１００６、ＬＡＮ制御部１００７から構成されている。
【００９６】
プロトコル制御部は、ＴＣＰ送受信制御部１００８とＩＰｖ４制御部１００９から構成され、ＴＣＰ／ＩＰ対応ＡＰ１００４から受け取ったデータをＩＰｖ４パケットとしてプロトコル変換制御部１００６に渡す。
【００９７】
プロトコル変換制御部１００６は、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０、バッファ変換制御部１０１１、ＤＮＳ−ＮＡＴ連携制御部１０１２、ヘッダ変換制御部１０１３、ＩＰｖ４送受信制御部１０１６、ＩＰｖ６送受信制御部１０１４から構成される。
【００９８】
つぎに、各制御部についての機能内容について説明する。
【００９９】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、プロトコル制御部１００５から渡されたＩＰｖ４パケットとＬＡＮ制御部１００７からの受信パケット（ＩＰｖ４パケット、ＩＰｖ６パケット）に対して、パケットスイッチ制御機能を持つ。バッファ変換制御部１０１１は、プロトコル制御部１００５とプロトコル変換制御部１００６のバッファ変換制御を行う。
【０１００】
ＩＰｖ４送受信制御部は、ＩＰｖ４プロトコル処理を行う。
【０１０１】
ＩＰｖ６送受信制御部は、ＩＰｖ６プロトコル処理を行う。アドレス変換制御部は、アドレス変換テーブルに従ってＩＰｖ４ヘッダとＩＰｖ６ヘッダの変換を行う。ＤＮＳ−ＮＡＴ連携制御部は、ＩＰｖ４のアドレス（通常プライベートアドレス）をプールしていて、接続先ホストのＩＰｖ６アドレスにプールしていたＩＰｖ４アドレスを割り当て、それをアドレス変換制御部内のアドレス変換制御テーブルに登録する。
【０１０２】
つぎに、本発明の第三の実施例について説明する。
【０１０３】
図６は、ＬＡＮ制御装置６００１の構成を示している。これは、ＰＣ等で一般的に使用される構成として、カーネル６００４、ＴＣＰ／ＩＰｖ４対応ＡＰ６００２、ソケットエミュレータ６００３、トランスポートドライバ（ＴＣＰ／ＩＰ）６００５、カーネル−ネットワーク間インタフェース制御部６００６、ネットワークインタフェース制御部６００７、NIC(Netowork Interface Card)制御部６０１５がある。
【０１０４】
本発明では、ネットワークインタフェース制御部６００７とＮＩＣ制御部６０１５の間に、ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０、バッファ変換制御部６００９、ヘッダ変換制御部１０１３、ＩＰｖ４送受信制御部５０１７、ＩＰｖ６送受信制御部１０１４、ＤＮＳ−ＮＡＴ連携制御部１０１２を設けることによりＩＰｖ４−ＩＰｖ６ヘッダ変換機能を実現し、ＩＰｖ４対応アプリケーションをＩＰｖ６ネットワーク上で通信可能にさせる。
【０１０５】
ＩＰｖ４−ＩＰｖ６スイッチ制御部１０１０は、ネットワークインタフェース制御部６００７から渡されたＩＰｖ４パケットとＮＩＣ制御部６０１５からの受信パケット（ＩＰｖ４パケットまたは、ＩＰｖ６パケット）に対して、パケットスイッチ制御を行う。バッファ変換制御部６００９は、カーネル６００４が管理するバッファとＩＰｖ４送受信制御部５０１７、ＩＰｖ６送受信制御部１０１４、ヘッダ変換制御部１０１３、ＤＮＳ−ＮＡＴ連携制御部１０１２が扱うバッファとの変換制御を行う。
【０１０６】
ＩＰｖ４送受信制御部５０１７は、ＩＰｖ４プロトコル処理を行う。
【０１０７】
ＩＰｖ６送受信制御部１０１４は、ＩＰｖ６プロトコル処理を行う。ヘッダ変換制御部１０１３は、アドレス変換テーブル１０１５に従ってＩＰｖ４ヘッダとＩＰｖ６ヘッダの変換を行う。ＤＮＳ−ＮＡＴ連携制御部１０１２は、ＩＰｖ４のアドレス（通常プライベートアドレス）をプールしていて、接続先ホストのＩＰｖ６アドレスに対してプールしていたＩＰｖ４アドレスを割り当て、それをヘッダ変換制御部内のアドレス変換制御テーブル１０１５に登録する。
【符号の説明】
【０１０８】
１００１…ＬＡＮ制御装置、
１００４…ＴＣＰ／ＩＰｖ４対応ＡＰ、
１００５…プロトコル制御部、
１００６…プロトコル変換制御部、
１００７…ＬＡＮ制御部、
１００８…ＴＣＰ送受信制御部、
１００９…ＩＰｖ４送受信部、
１０１０…ＩＰｖ４−ＩＰｖ６スイッチ制御部、
１０１１…バッファ変換制御部、
１０１２…ＤＮＳ−ＮＡＴ連携制御部、
１０１３…ヘッダ変換制御部、
１０１４…ＩＰｖ６送受信制御部、
１０１５…アドレス変換テーブル。
【図１】
0004670979.tif 000002
【図２】
0004670979.tif 000003
【図３】
0004670979.tif 000004
【図４】
0004670979.tif 000005
【図５】
0004670979.tif 000006
【図６】
0004670979.tif 000007
【図７】
0004670979.tif 000008
【図８】
0004670979.tif 000009
【図９】
0004670979.tif 000010
【図１０】
0004670979.tif 000011
【図１１】
0004670979.tif 000012
【図１２】
0004670979.tif 000013
【図１３】
0004670979.tif 000014
【図１４】
0004670979.tif 000015
【図１５】
0004670979.tif 000016
【図１６】
0004670979.tif 000017