(57)【要約】【課題】簡単かつハードウエアとの関連を特定しにくい手順でＩＰｖ６アドレスを設定する。【解決手段】ＩＰｖ６ではリンクローカルのＩＰアドレスを自動設定する機能が提供される。このＩＰアドレスはネットワークプレフィックスとインターフェース識別子とから構成されるが、インターフェース識別子を生成する際に、時刻情報とクロックパルスのカウンタとを読み取り（ステップＳ１０２）、その値から生成したインターフェース識別子を含むアドレスを生成する（Ｓ１０４）。このインターフェース識別子を仮リンクローカルアドレスとして重複アドレス検出手順を行い（Ｓ１０５〜Ｓ１０７）、固有のアドレスを設定する。【選択図】図１
2004056477.tif 000002
【特許請求の範囲】
【請求項１】
単位ネットワークにおいて固有のアドレスを設定する通信制御装置であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手段とを有し、
前記確認手段により重複していないことが確認されるまで、前記サンプリング手段によるサンプリング及び前記生成手段によるアドレスの生成をし直すことを特徴とする通信制御装置。
【請求項２】
前記通信制御装置は前記単位ネットワークに接続されたホストであり、生成されるアドレスは当該ホストのアドレスであることを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記通信制御装置は、前記単位ネットワークに接続されたホストと該ホストに対して動的にアドレスを割り当てるサーバとを含み、前記サンプリング手段及び前記生成手段は前記サーバが有し、前記確認手段は前記サーバにより生成されたアドレスの割り当てを受けるホストが有することを特徴とする請求項１に記載の通信制御装置。
【請求項４】
ネットワークに接続されたホストに対してアドレスを設定する通信制御装置であって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
生成したアドレスを前記ホストに送信する手段と
を備えることを特徴とする通信制御装置。
【請求項５】
前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手段は、前記サンプリング手段によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定することを特徴とする請求項１乃至４のいずれか１項に記載の通信制御装置。
【請求項６】
前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択されることを特徴とする請求項１乃至５のいずれか１項に記載の通信制御装置。
【請求項７】
前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択されることを特徴とする請求項１乃至６のいずれか１項に記載の通信制御装置。
【請求項８】
単位ネットワークにおいて固有のアドレスを設定する通信制御方法であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手順と、
前記確認手順により重複していないことが確認されるまで、前記サンプリング手順及び前記生成手順を繰り返す手順と
を有することを特徴とする通信制御方法。
【請求項９】
前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手順は、前記サンプリング手順によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定することを特徴とする請求項８に記載の通信制御方法。
【請求項１０】
前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択されることを特徴とする請求項８または９に記載の通信制御方法。
【請求項１１】
前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択されることを特徴とする請求項８乃至１０のいずれか１項に記載の通信制御方法。
【請求項１２】
コンピュータにより、単位ネットワークにおいて固有のアドレスを設定するためのプログラムであって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手順と、
前記確認手順により重複していないことが確認されるまで、前記サンプリング手順及び前記生成手順を繰り返す手順と
をコンピュータにより実行させるためのプログラム。
【請求項１３】
コンピュータにより、単位ネットワークにおいて固有のアドレスを設定するためのプログラムであって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
生成したアドレスを前記ホストに送信する手順と
をコンピュータにより実行させるためのプログラム。
【請求項１４】
請求項１２または１３に記載のプログラムを記録したことを特徴とするコンピュータ可読記録媒体。
【請求項１５】
アドレスを生成する情報処理装置であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は通信制御装置及び方法に関し、特にＩＰｖ６ネットワークに接続する津通信制御装置及び方法に関する。
【０００２】
【従来の技術】
インターネットプロトコルバージョン６（以下、ＩＰｖ６と呼ぶ。）の登場により、従来はネットワークに接続することが考えられなかった装置がネットワークに接続する場面が考えられている。例えば、インターネットに直接接続可能なエンドユーザ向けディジタルカメラなどである。
【０００３】
ＩＰｖ６に対応するパーソナル・コンピュータやワークステーションの場合、ネットワークとの接続のインターフェイスには通常はイーサネット（登録商標）が用いられ、それが持つＩＥＥＥ識別子（ＭＡＣアドレス）を元にしてＩＰｖ６アドレスが構成されるようになっている。ＩＰｖ６アドレスには、後述するように、物理的なネットワークにおいて一意に定められるリンクローカルアドレスと、ＩＰｖ４におけるプライベートアドレスに相当すると考えられるサイトローカルアドレスと、（集約可能）グローバルアドレスの３種類が存在する。それらの詳細や構成方法などのアドレス体系は、ＲＦＣ２３７３”ＩＰ　Ｖｅｒｓｉｏｎ　６　Ａｄｄｒｅｓｓｓｉｎｇ　Ａｒｃｈｉｔｅｃｔｕｒｅ”，　ＲＦＣ２３７４”Ａｎ　ＩＰｖ６　Ａｇｇｒｅｇａｔａｂａｌｅ　Ｇｌｏｂａｌ　Ｕｎｉｃａｓｔ　Ａｄｄｒｅｓｓ　Ｆｏｒｍａｔ”，　ＲＦＣ２３７５”ＩＰｖ６　Ｍｕｌｔｉｃａｓｔ　Ａｄｄｒｅｓｓ　Ａｓｓｉｇｎｍｅｎｔ”，　ＲＦＣ２４５０”Ｐｒｏｐｏｓｅｄ　ＴＬＡ　ａｎｄ　ＮＬＡ　Ａｓｓｉｇｎｍｅｎｔ　Ｒｕｌｅ”，　ＲＦＣ２４６１”Ｎｅｉｇｈｂｏｒ　Ｄｉｓｃｏｖｅｒｙ　ｆｏｒ　ＩＰ　Ｖｅｒｓｉｏｎ　６（ＩＰｖ６）”，ＲＦＣ２４６２”ＩＰｖ６　Ｓｔａｔｅｌｅｓｓ　Ａｄｄｒｅｓｓ　Ａｕｔｏｃｏｎｆｉｇｕｒａｔｉｏｎ”等に記述されているので、詳細についてはそちらを参照することとし以降では本発明に関連のある事柄についてのみ説明する。
【０００４】
ＩＰｖ６では、ネットワークプレフィクスにＩＥＥＥ識別子（ＭＡＣアドレス）から生成したインターフェース識別子をつなげてリンクローカルアドレスを生成するアドレス自動設定機能が提供される。
【０００５】
アドレス自動設定の際、ＩＥＥＥ識別子（ＭＡＣアドレス）のようにハードウェアに一対一に対応する情報を固定的に用いると、そのアドレスが装置もしくはその装置のユーザと一対一に対応する情報とみなされ、そのアドレスを使う通信をモニターされることによりプライバシが侵害される恐れが強い。この課題に対しては、ＲＦＣ３０４１”Ｐｒｉｖａｃｙ　Ｅｘｔｅｎｓｉｏｎｓ　ｆｏｒ　Ｓｔａｔｅｌｅｓｓ　Ａｄｄｒｅｓｓ　Ａｕｔｏｃｏｎｆｉｇｕｒａｔｉｏｎ　ｉｎ　ＩＰｖ６”，において、具体的な解決方法がメモリを持つ場合と持たない場合について提案されている。装置がメモリを持つ場合では、ＩＥＥＥ識別子（ＭＡＣアドレス）とＭＤ５という関数を用いて１２８ビットのランダムな値を計算し、半分をアドレスとして用い、残り半分を次回の計算の入力用に記憶しておく。適当な時間が経過したら再度計算を行い、アドレスを更新する。
【０００６】
装置がメモリを持たない場合、毎回ランダムな値を何らかの方法を用いて生成する。計算して生成したランダムな値が既に使われている場合には、それを検出して別のランダムな値を計算して生成し、ユニークなランダムな値を定めるプロトコル（の拡張）も記述されている。ランダムな値を生成する方法としては、ＲＦＣ１７５０”Ｒａｎｄｏｍｎｅｓｓ　Ｒｅｃｏｍｍｅｎｄａｔｉｏｎｓ　ｆｏｒ　Ｓｅｃｕｒｉｔｙ”にいくつかの手法が開示されている。
【０００７】
【発明が解決しようとする課題】
上述した、固定的な情報を用いたアドレス生成に起因する問題の解決方法において、メモリを持つ装置の場合、最初のＭＤ５の計算に用いるＩＥＥＥ識別子（ＭＡＣアドレス）の値がわかれば、それ以降の計算で求められる値は全て一意に定まるので、プライバシの保護という観点から考えると必ずしも好ましくないという課題がある。さらに、毎回ＭＤ５の計算を行うので、貧弱な計算能力しか持たない装置の場合はＭＤ５の計算量が負荷となりうる。
【０００８】
また、メモリを持たない装置の場合、毎回ランダムな値を生成する方法を採用することが考えられるが、ＲＦＣ１７５０にもあるように、暗号学的に好ましいランダムな値を生成する方法をソフトウェアのみで構成することは困難である。ハードウェアを利用する方法もいくつか示されているが、具体的な方法がはっきりしない。なおＲＦＣとは、インターネットの技術開発組織であるＩＥＴＦが公開している技術提案やコメントの文書であり、実質的な標準技術が番号を付して公開されている。
【０００９】
このように、ＭＡＣアドレスを用いてＩＰｖ６アドレスを生成する場合、必ずしも通信の秘密性を保持できず、また、計算負荷が高く、通信の効率を低下させるばかりでなく、計算能力の低い機器では採用できないという第１の問題があった。
【００１０】
加えて、ディジタルカメラのような装置のインターフェイスには必ずしもイーサネット（登録商標）が使われるとは限らないという問題もある。
【００１１】
インターネットの基本思想の一つにエンドトゥーエンドの透過性がある。これは、インターネット上の装置が通信するときに、送受信されるパケットが、通信経路上のルータやファイアウォール等によって変更されることなく装置に届けられる性質である。どのような接続形態であったとしても、エンドトゥーエンドの透過性が保たれていることが望ましく、そのためにはＩＰｖ６対応装置自身がＩＰｖ６アドレスを持つことが必要となる。
【００１２】
ところが、イーサネット（登録商標）ではないインターフェースを持ち、そのためにＭＡＣアドレスを持たない機器については、ＩＰｖ６アドレスを生成する方法が定められていない。
【００１３】
例えば、無線通信規格のブルートゥースを利用してディジタルカメラが携帯電話と接続し、携帯電話は携帯電話網を経由してインターネットと接続することで結果的にディジタルカメラがインターネットと接続することも考えられる。また、今後の技術の発展により更に多様なインターフェースや接続形態が生まれてくることも予想される。
【００１４】
ところが、上述したように、ＭＡＣアドレスを持たない機器についてはＩＰｖ６アドレスを生成する方法が定められておらず、アドレス自動設定機能を利用することができなければ、ＩＰｖ６の利点のひとつであるプラグアンドプレイを享受することができない。このように、ＭＡＣアドレスを持たないＩＰｖ６装置（ＩＰｖ６をサポートする装置のこと。以下同じ）がＩＰｖ６アドレスを構成するための一般的な方法が決まっていないという第２の課題もあった。
【００１５】
これらはリンクローカルアドレスの生成時に限られず、サイトローカルアドレスやグローバルアドレスをホストに割り当てる場合にも同様に問題となる。
【００１６】
サイトローカルアドレスあるいはグローバルアドレスをＩＰｖ６装置に割当てる方法の一つに、ＤＨＣＰｖ６（動的ホスト構成プロトコルＩＰｖ６）がある。これは、ＩＰｖ６装置がリンクローカルアドレスを確立したあとで、ＤＨＣＰサーバーと通信してサイトローカルアドレスもしくはグローバルアドレスを割当ててもらうプロトコルである。
【００１７】
ＤＨＣＰサーバがサイトローカルアドレスやグローバルアドレスをホストに割り当てる場合には、ＤＨＣＰサーバに予め設定されているサイトローカルアドレスもしくはグローバルアドレスのネットワークプレフィックスに、ＤＨＣＰ要求を発行したホストのインターフェース識別子を付加してそのホストにＩＰアドレスを割り当てる。このインターフェース識別子についても、上述したと同様、プライバシの保護に欠けることや、ＭＡＣアドレスを持たない機器に対するアドレス割り当て方法が決まっていないという問題がある。
【００１８】
本発明は上記従来例に鑑みてなされたもので、アドレスからユーザや端末の特定が困難な方法でアドレスを生成し、ユーザのプライバシを手厚く保護できる通信制御装置及び方法を提供することを目的とする。
【００１９】
さらに、計算処理の負荷が小さな方法でアドレスを生成することができる通信制御装置及び方法を提供することを目的とする。
【００２０】
さらに、物理インターフェースの制約を受けずにアドレスを生成できる通信制御装置及び方法を提供することを目的とする。
【００２１】
【課題を解決するための手段】
上記目的を達成するために本発明は次のような構成を有する。
【００２２】
単位ネットワークにおいて固有のアドレスを設定する通信制御装置であって、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手段とを有し、
前記確認手段により重複していないことが確認されるまで、前記サンプリング手段によるサンプリング及び前記生成手段によるアドレスの生成をし直す。
【００２３】
更に好ましくは、前記通信制御装置は前記単位ネットワークに接続されたホストであり、生成されるアドレスは当該ホストのアドレスである。
【００２４】
更に好ましくは、前記通信制御装置は、前記単位ネットワークに接続されたホストと該ホストに対して動的にアドレスを割り当てるサーバとを含み、前記サンプリング手段及び前記生成手段は前記サーバが有し、前記確認手段は前記サーバにより生成されたアドレスの割り当てを受けるホストが有する。
【００２５】
また他の構成によれば次のような構成を有する。
【００２６】
ネットワークに接続されたホストに対してアドレスを設定する通信制御装置であって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
生成したアドレスを前記ホストに送信する手段と
を備える。
【００２７】
更に好ましくは、前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手段は、前記サンプリング手段によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定する。
【００２８】
更に好ましくは、前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択される。
【００２９】
更に好ましくは、前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択される。
【００３０】
上記手段を有する装置は、電源が入れられたときあるいはリブートされたときの時刻情報とクロックパルスのカウンター値からインターフェイス識別子およびリンクローカルアドレスを生成し、そのインターフェイス識別子およびリンクローカルアドレスが前記装置が接続しようとしているリンクにおいて唯一か否か、すなわち同じインターフェイス識別子およびリンクローカルアドレスを使っている他の装置が存在するか否かを確認する。唯一でないならば、クロックパルスのカウンター値を再度読み取りインターフェイスＩＤおよびリンクローカルアドレスを生成し、確認する。以上の処理を必要なだけ繰り返し、唯一であることが確認されたならば、そのリンクローカルアドレスをインターフェイスに割当てる。時刻情報とクロックパルスのカウンター値はその装置に関する情報を一切含まないので、インターフェイス識別子やリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスから対応する装置もしくはそのユーザを特定される恐れはない。
【００３１】
【発明の実施の形態】
［第１の実施形態］
本発明の実施形態の説明を行う前に、イーサネット（登録商標）をインターフェイスとして持つＩＰｖ６対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のＲＦＣ、特にＲＦＣ２４６２”ＩＰｖ６　ステートレスアドレス自動設定（Ｓｔａｔｅｌｅｓｓ　ａｄｄｒｅｓｓ　ａｕｔｏｃｏｎｆｉｇｕｒａｔｉｏｎ）”の内容を参照しながら説明する。
【００３２】
＜ローカルリンク構成例＞
図２は、本発明が適用されるＩＰｖ６対応装置を含むローカルリンクを模式的に示したものである。リンクとは、それに接続された装置がそれを介して通信することができる設備もしくは媒体であり、ＩＰ層の下側に接する。リンクにはイーサネット（登録商標）の他に、ＰＰＰリンク、Ｘ．２５、フレームリレー、ＡＴＭネットワーク等がある。リンクに接続されたＩＰｖ６対応装置をノードと呼ぶ。ノードの内部構成の典型例を図３に示す。ノードには、ルーターとホストがあり、ルーターは自分宛ではないパケットを転送するがホストは転送しない。図３からわかるように、ノードはＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤ（ハードディスク）、ネットワーク・インターフェイス等を有する計算機である。ルーターは複数のインターフェイスを持つのに対しホストは多くの場合は一つのインターフェイスを持つ。ノードによってはＨＤを持たないものもある。図２において、ルーター２０１がローカルリンク２０６と外部へのリンク２０７を接続し、ローカルリンクと外部の間のパケットの転送を担う。ローカルリンク２０６には、ホスト２０２、ホスト２０３、ホスト２０４、ホスト２０５が接続されている。ホスト及びルータは、ＲＯＭやＲＡＭ等のメモリに格納されたプログラムをＣＰＵにより実行することで後述するフローチャートに示されたような手順を実現する。また、本実施形態の実現のためには、ホストは、クロックパルスを計数するカウンタを有する。クロックパルスは１６ＭＨｚの整数倍であり、カウンタは２４ビット以上の桁数を有することが望ましい。さらに、ホストは、実時間を計時する時計を有する。他のホスト及びルータも同様の構成を有する。
【００３３】
イーサネット（登録商標）のＩＥＥＥ識別子（ＭＡＣアドレス）は、６バイト長のアドレスで、先頭の３バイトは製造ベンダーコードとしてＩＥＥＥによって管理・割当てがされている。残り３バイトは各ベンダーに管理が任されており、重複が起こらないように割当てがされる。図４（ａ）にイーサネット（登録商標）のＭＡＣアドレスの構成を示す。１区画は１バイト（８ビット）のデータを示し、左から３バイトが製造ベンダーコード、残り３バイトがベンダーが管理するコードとなっている。ベンダーが管理するコードはイーサネット（登録商標）・カード毎に異なるように振られるので、イーサネット（登録商標）・カード毎に世界で唯一のアドレスが対応し、イーサネット（登録商標）上でのデータの送受信の際のアドレスとして利用される。イーサネット（登録商標）を介して送られるデータは、送信元のアドレスと宛先のアドレスとデータを含むパケットとしてイーサネット（登録商標）上に送出される。他のノードが送出したデータとの衝突が検出された場合にはランダムな時間が経過したあと再送されるようになっている。送られたパケットはイーサネット（登録商標）に接続しているノード全てがアクセスできるので、各ノードはパケットの宛先アドレスを見てそれが自分宛の場合は受け取り、自分宛ではない場合は無視する。以上のような仕組みにより、リンク層のデータ通信が行えるようになっている。リンク層のデータ通信を基礎として、その上にインターネットプロトコル（ＩＰ）層が実装され、リンクの制約を受けない広域な通信が実現されている。
【００３４】
＜リンクローカルアドレスの設定手順＞
次にＩＰｖ６のアドレス表記を説明する。ＩＰｖ６のアドレスは１２８ビットであり、１６進数４桁（１６ビットを表す）をコロン’：’で区切った表記が使われる。例えば、ＦＥ８０：００００：００００：００００：００００：００００：００００：０００１である。アドレス中の００００は０と表してもよく、解釈の一意性が保たれるならば０の連続部分は省かれて：：と表記される。前記アドレスは、ＦＥ８０：：０００１あるいはＦＥ８０：：１と同じアドレスである。アドレスの中の上位Ｘビットを示すとき、ＦＥ８０：：１／Ｘと表記する。ＦＥ８０：：１／３２はＦＥ８０：００００と同じである。
【００３５】
図２のノードが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートを図５に示す。この動作は重複アドレス検出（ＤＡＤ：Ｄｕｐｌｉｃａｔｅ　Ａｄｄｒｅｓｓ　Ｄｅｔｅｃｔｉｏｎ）と呼ばれる。以下では図５の流れに沿って処理内容を説明する。
【００３６】
なお以下の処理内容（手順）は、装置もしくはプログラムとして実現され、その装置を有するノードが実行するもしくはそのプログラムがＲＯＭもしくはＨＤに格納されたノードが実行する。例えば、プログラムとして実現される場合は、そのプログラムをＣＰＵが読み込み、必要に応じてＲＡＭを計算のための空間として利用しながらバスを介してインターフェイスにアドレスを割当てる、というような動作を行う。このような動作は計算機としての一般的な動作なので、誤解される恐れのない範囲で詳細は省略し、ノードがインターフェイスをアドレスに割当てる、というように手順の本質を説明する。
【００３７】
ステップＳ８０１でノードが電源を入れられたあるいはリブートされた直後にはインターフェイスにはアドレスがなにも割当てられていないので、まず次の処理がノードによって行われる。イーサネット（登録商標）のＭＡＣアドレス（図４（ａ）参照）を３バイトずつに分割し、中間に１６進数の「ＦＦＦＥ」をはさみ、先頭から７ビット目を１にする。これを図４（ｂ）に示す。図４（ｂ）のＣ１’は、図４（ａ）のＣ１の先頭から７ビット目を１にしたものを表す。図４（ｂ）の構成の６４ビット・データをインターフェイスＩＤと呼ぶ。インターフェイスＩＤをリンクローカルアドレス用プレフィックスのＦＥ８０：００００：００００：００００に付加して作った１２８ビットのデータを仮リンクローカルアドレス（ｔｅｎｔａｔｉｖｅ　ｌｉｎｋ−ｌｏｃａｌ　ａｄｄｒｅｓｓ）とする。以上がステップＳ８０２の処理である。図４（ｃ）に仮リンクローカルアドレスの構成を示す。このアドレスはまだインターフェイスに割当てられない。
【００３８】
次に、その仮リンクローカルアドレスがリンク上で一意かどうかを判断するために、ホストは以下の処理を行う。最初に、インターフェイスの初期設定をする。すなわち、インターフェイスに、リンクローカル・オールノードマルチキャストアドレス（ＦＦ０２：：１）と、その仮リンクローカルアドレスの要請ノードマルチキャストアドレス（ｓｏｌｉｃｉｔｅｄ−ｎｏｄｅ　ｍｕｌｔｉｃａｓｔａｄｄｒｅｓｓ）を割当てる。つまり、そのインターフェイスがオールノードマルチキャストアドレス宛のパケットあるいはその仮リンクローカルアドレスの要請ノードマルチキャストアドレス宛のパケットを見つけたときは、それを自分のインターフェイス宛のパケットとして受け取る。前者（オールノードマルチキャストアドレス）を割当てることによって、既にその仮リンクローカルアドレスを使っている他のノードからのデータを受信することが可能になり、後者（その仮リンクローカルアドレスの要請ノードマルチキャストアドレス）を割当てることによって、同じ仮リンクローカルアドレスを同時に使おうとしている他のノードの存在を検出することが可能になる。ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスとは、ＲＦＣ２４６１の９１ページに定義されているように、仮リンクローカルアドレスの下位２４ビットをプレフィックスＦＦ０２：０：０：０：０：１：ＦＦ００：：／１０４に付加したデータであり、アドレススコープがリンクローカルのマルチキャストアドレスである。図４（ｃ）と図４（ｄ）にそれらの関係を示す。以上のアドレス割当てが図５のステップＳ８０３である。
【００３９】
次に近隣要請メッセージ（Ｎｅｉｇｈｂｏｒ　Ｓｏｌｉｃｉｔａｔｉｏｎ　ｍｅｓｓａｇｅ）を作る。近隣要請メッセージのターゲットアドレスには判断対象の仮リンクローカルアドレスを、送信元ＩＰアドレスには未指定アドレス（１２８ビット全てが０）を、あて先ＩＰアドレスには判断対象の仮リンクローカルアドレスの要請ノードマルチキャストアドレスを設定する。この近隣要請メッセージを一定の間隔（”ＲｅｔｒａｎｓＴｉｍｅｒ”に規定されたミリセカンド間隔）で、一定の個数（”ＤｕｐＡｄｄｒＤｅｔｅｃｔＴｒａｎｓｍｉｔｓ”に規定された個数）イーサネット（登録商標）に送出する。図５のステップＳ８０４がこの処理である。
【００４０】
近隣要請メッセージを受け取ったノードは、その送信元アドレスが未指定アドレスならば、そのメッセージが重複アドレス検出を行っているノードからのデータであることがわかる。同時に複数のノードが同じアドレスを対象として重複アドレス検出をしている場合は、同じアドレスをターゲットアドレスに含む複数の近隣要請メッセージを受け取るので、重複していることがわかる。その場合にはどのノードもそのアドレスは使わない。受け取った近隣要請メッセージが自分が送ったもの（マルチキャストのパケットをループバックしているため）であるならば、他にそれを使っているあるいは使おうとしているノードが存在することを示さない。
【００４１】
一方、近隣要請メッセージを受け取ったノードが、そのメッセージのターゲットアドレスに含まれるアドレスを既に使っていれば、マルチキャストの近隣通知メッセージ（Ｎｅｉｇｈｂｏｒ　Ａｄｖｅｒｔｉｓｅｍｅｎｔ　ｍｅｓｓａｇｅ）を返す。従って、近隣要請メッセージを送ったノードがマルチキャスト近隣通知メッセージを受け取り、そのターゲットアドレスが、判断対象の仮リンクローカルアドレスである場合（図５のＳ８０５ステップの「はい」の場合）は、判断対象の仮リンクローカルアドレスが唯一ではない、すなわち、アドレスがリンク内において重複していると判断できる。
【００４２】
一方、以上の重複アドレス検出の結果、判断対象の仮リンクローカルアドレスがリンク上で唯一であることが確認された（図５のＳ８０５ステップの「いいえ」の場合）ならば、そのアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。これが図５のステップＳ８０６である。以上で重複アドレス検出は終了する。以上に説明した図５の動作は図２のルーター２０１、ホスト２０２、ホスト２０３、ホスト２０４、ホスト２０５のそれぞれが実行することができる。
【００４３】
＜サイトローカルまたはグローバルアドレス設定手順＞
図２のホスト、例えばホスト２０２は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報（ルーター通知メッセージ（Ｒｏｕｔｅｒ　Ａｄｖｅｒｔｉｓｅｍｅｎｔ　ｍｅｓｓａｇｅ）と呼ばれる）をルーター２０１から入手することを試みる。この動作を図６に示す。
【００４４】
ルーター２０１は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク２０６に送っている。ホスト２０２がルーター通知メッセージを早く入手したい場合は、ホスト２０２はルータ要請メッセージ（Ｒｏｕｔｅｒ　Ｓｏｌｉｃｉｔａｔｉｏｎ　ｍｅｓｓａｇｅ）と呼ばれるデータをルーター２０１に送る。ホスト２０２は、リンクローカルアドレスを割当てた直後にはルーター２０１の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図６のステップＳ９０１はこの処理を示す。
【００４５】
ルータ要請メッセージを受け取ったルーター２０１は、ネットワークプレフィックスを含むルーター通知メッセージを送り返す。図６のステップＳ９０２の「はい」の場合に示すように、ルーター通知メッセージを受け取ったホスト２０２は、そのメッセージの中のプレフィックスの有効性（既にその装置によって使われていないこと等）を確認し、そのプレフィックスにインターフェイスＩＤを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図６のステップＳ９０３がこの処理である。なお、図６のステップＳ９０２の「いいえ」の場合に示すように、ホスト２０２がルーター通知メッセージを受け取らなかった場合は異常終了する。この場合、ホスト２０２はステートフルアドレス自動設定（ｓｔａｔｅｆｕｌ　ａｄｄｒｅｓｓ　ａｕｔｏｃｏｎｆｉｇｕｒａｔｉｏｎ）を行うべきとされている。なお、ステートレスアドレス自動設定とは、ルータがホストに割り当てるアドレスや割り当ての状態を管理せず、ホストがネットワークのプレフィクスとインターフェース識別子とからＩＰアドレスを生成する方式をいう。それに対してステートフルアドレス自動設定とは、割り当てるべきＩＰアドレスや割り当て状況をＤＨＣＰサーバが管理し、ホストには、ＤＨＣＰサーバの管理するＩＰアドレスの中から未使用のものが割り当てられたり、あるいは予めホストに対して登録されているＩＰアドレスが与えられる方式をいう。
【００４６】
以上のようにして、イーサネット（登録商標）をインターフェイスとして持つホスト２０２はリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定する。
【００４７】
＜本実施形態に係るアドレス設定手順＞
次に、本発明を説明する。基本的な処理は上記と同じであるが、インターフェイスＩＤの生成方法が異なる。基本となる考えは、時刻データをインターフェイスＩＤにすることである。前述のＲＦＣ３０４１等に記載されているように、インターフェイスＩＤとして、ランダムな６４ビット値を用いることも可能とされている。どのノードでも生成が可能で、かつインターフェイスＩＤを与えられたときそれをどのノードが生成したかはわからず、かつ生成が容易な方法として時刻データは非常に適当だと考えられる。
【００４８】
時刻データをインターフェイスＩＤ（６４ビット）として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位２４ビットを１６進数のＦＦ０２：０：０：０：０：１：ＦＦ００：：／１０４に付加したデータであることから、下位２４ビットがリンク内で一意であれば一意なリンクローカルアドレスになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を２４ビットデータ部分に割当てることが好ましい。２の２４乗＝１６，７７７，２１６なので、２４ビットデータの最大値は１６，７７７，２１５となる。
【００４９】
そこで１６ＭＨｚ（＝１６，０００，０００Ｈｚ）の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、インターフェイスＩＤを生成する瞬間のクロックパルスのカウンター（１秒間隔で０リセットされる）の値をＣとすると、Ｃを１６，０００，０００で割った余り（余りを求める演算を剰余演算と呼ぶ）を２進数で表記した値を下位２４ビットとする。この剰余値は、０〜１６，０００，０００−１を範囲としているために、１６ＭＨｚの倍数のクロックパルスを１秒間隔でリセットすればどの値も等確率で生じる。
【００５０】
またインターフェイスＩＤを生成する瞬間の年（西暦２０００年を０とする）、月、日、午前０時０分０秒からの経過秒数は、それぞれ１０ビット（２０００年から３０２３年まで対応）、４ビット、５ビット、１７ビット（２４時間＝２４×６０×６０＝８６４００秒、８６４００＜１３１０７１＝２の１７乗−１）で表現できる。そこで、この時刻情報３６ビットとカウンタの剰余演算値２４ビットの合計６０（＝１０＋４＋５＋１７＋２４）ビットを使って表現した時刻データをインターフェイスＩＤの下位６０ビットとすることができる。上位４ビットは全て０とする。このインターフェイスＩＤの構成を図７（ａ）に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【００５１】
このようにカウンタ及び時刻情報を元にして仮リンクローカルアドレスを生成する。生成したインターフェース識別子（インターフェースＩＤ）の下位２４ビットはそれぞれのホストにおいて非同期に動作するクロックパルスのカウンタ値を基にしていることから、それらが一致する確率は十分低いものと期待できる。
【００５２】
生成したアドレスの重複が検出された場合には、異なる剰余演算結果を生成して重複の確認を行うが、その手順として以下の二つがある。
【００５３】
一般には二つ以上のノードが電源を入れられあるいはリブートされインターフェイスＩＤを生成する瞬間が全く同じとなり、上述の剰余演算結果が同じ値を持つ可能性は低いと考えられるが、停電があった後に多くのノードが一斉に立ち上がる、あるいはオフィスの開始時刻のような状況では、同じ値を持つ可能性も無視できない。一方、そのような場合は重複アドレス検出がほぼ同時に行われることで混雑が起こりうるので、それを回避するためにＲＦＣ２４６２のページ１５にランダムな遅延時間を生成するための定数”ＭＡＸ＿ＲＴＲ＿ＳＯＬＩＣＩＴＡＴＩＯＮ＿ＤＥＬＡＹ”（＝１秒）が定義されている。この定数を用いて０以上”ＭＡＸ＿ＲＴＲ＿ＳＯＬＩＣＩＴＡＴＩＯＮ＿ＤＥＬＡＹ”未満のランダムな時間を生成し、その時間だけ待ってからルータ要請メッセージを送ることとされている。このランダムな時間を借用し、値が重複した場合にもう一度クロックパルスのカウンター値を読み取るまでの遅延時間としてそのランダムな時間を利用するという手順が第１の手順である。
【００５４】
二つ目の手順は、次のようなアルゴリズムである。複数のノードが同じ剰余演算結果を取り、重複が検出されたとする。このとき、それらのノードは、０単位時間あるいは１単位時間のいずれかだけ待ち、待った後の瞬間のクロックパルスのカウンター値を読み取り剰余演算を行い、再び重複アドレス検出を行う。この２度目の重複アドレス検出でも重複が検出されたときは０，１，２，３単位時間のいずれかをランダムに選び、その時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。ｎ回目の重複が検出された場合は０と２ｎ−１の間のランダムな単位時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。このアルゴリズムはイーサネット（登録商標）においてデータ衝突時に使われているバイナリエクスポネンシャルバックオフと呼ばれる定評のあるアルゴリズムなので、重複回避効果の高さは実証済みである。
【００５５】
以上の説明において、上位４ビットを全て０、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４フォーマット等との整合性を考慮した値を（一部）割当てることも可能である。ＲＦＣ２３７３（の２．５．１のインターフェース識別子と付録Ａ）に、イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４　ＩＤからインターフェイスＩＤを生成する方法が述べられている。それによると、上位７ビット目はユニバーサルビット（１がグローバルスコープを、０がローカルスコープを意味する）、上位８ビット目は個別／グループビットと定義されている。従って、６０ビットを時刻データとした場合の上位４ビットを全て０とし、７ビット目と８ビット目として前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスＩＤを生成するノードの全てが同じ値を使うように取り決めれば、上位４ビットにどのような値を割当てても構わない。
【００５６】
以上に説明した本発明の第１の実施形態の動作フローチャートを図１に示す。ステップＳ１０１でホストは電源オンあるいはリブートされる。ステップＳ１０２でクロックパルスのカウンターを読み取って剰余演算した値と時刻データからインターフェイスＩＤを生成する。ステップＳ１０３でインターフェイスの初期設定を行い、他のノードからのデータを受け取れるようにする。ステップＳ１０４で、インターフェイスＩＤから仮リンクローカルアドレスを生成する。ステップＳ１０５で、近隣要請メッセージを前述のように生成し、リンクに送出する。
【００５７】
ステップＳ１０６で近隣通知メッセージを受信した場合は、ランダムな遅延を行った後に、再度クロックパルスのカウンターを読み取ってその値について剰余演算し、また再度時刻データを読み取る。そして、剰余演算した値と時刻データとからインターフェイスＩＤを再び生成する。そしてステップＳ１０３に戻る。ステップＳ１０６で近隣通知メッセージを受信しなかった場合は、ステップＳ１０８でその仮リンクローカルアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。
【００５８】
以上のようにインターフェイスＩＤを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは通常のコンピュータが有するもので十分であり、ＩＰｖ６に対応している計算機であれば新たに設ける必要がない。またソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【００５９】
［第１の実施形態の変形例］
上述した第１の実施形態のように、クロックパルスのカウンタ１６，０００，０００で割った余りを下位２４ビットとするとき、ノードが１６ＭＨｚの倍数のクロックを持っていない場合は重複する可能性が高くなる、あるいはそのノードが取りうる値に偏りを生じ易くなる。しかし、固有な値のアドレスを生成することおよびアドレスとノードとの対応関係がわからないことを実現するうえでは、この偏りが大きな問題とならないようにできる。例えば、現在のＣＰＵの技術では１ＭＨｚの整数倍のクロックで動作するものがほとんどであるので、以下のような理由から１，０００，０００で割った余りを取る（あるいはクロックパルスのカウンターの周期を１，０００，０００とする）ことにしても構わないことがわかる。
【００６０】
余りを取るときの定数を法と呼ぶ。法で割った余りの値が、「０」と「法マイナス１」の間をランダムに分布することが所期の効果（重複の可能性を低くすること、ノードによって取りうる値に偏りを生じることがないこと）を得るための前提である。あるリンクに接続されるノードの総数が最大ｋで、各ノードがランダムサンプリングした値が最大値（ｋ／１．１８）２のとき、ｋ個のノードの中に重複が現れる確率は１／２になる（岡本栄司、暗号理論入門、共立出版株式会社、２４ページ参照）。ｋ＝１００の場合、最大値７，１８２のランダムサンプリングであれば重複が現れる可能性は約１／２になるので、重複が起こったときは０と７，１８２の間の値をランダムに選んで重複アドレス検出を再度行うことにする。この処理をｎ回繰り返せば、（１／２）ｎの確率で重複を避けることが可能と見積もれる。１ＭＨｚの整数倍のクロックで動作するＣＰＵを持つノードが高々１００個存在するリンクの場合、１，０００，０００で割った余りを取る（あるいはクロックパルスのカウンターの周期を１，０００，０００とする）ことで、最初の読み取りにおいて重複する可能性を１／２以下にできる。ｋ＝１，０００の場合でも、最大値７１８，１８４のランダムサンプリングで最初における重複の可能性を１／２以下にできるので、１，０００，０００で割った余りを取る（あるいはクロックパルスのカウンターの周期を１，０００，０００とする）ことで充分である。
【００６１】
一般には、ノードが複数存在するとき、それぞれのクロックの最大公約数を法とすることができる。各ノードが読み取ったクロックパルスのカウンター値を前記の法で割った余りをインターフェイスＩＤの下位２４ビットに使うことにすれば、重複の可能性は最も小さくなりかつノードによって取りうる値に偏りを生じることがないと期待される。現在の技術では１ＭＨｚの整数倍のクロックパルス周波数で動作するＣＰＵがほとんどであるので、１，０００，０００＜２２０を法としてランダムサンプリングと剰余演算をした値（あるいはクロックパルスのカウンターの周期を１，０００，０００としたときのある時点のカウンター値）をインターフェイスＩＤの下位２０ビットに割当てるのが現実的な実現方法と言える。インターフェイスＩＤを生成するときの年（西暦２０００年を０とする）、月、日、午前０時０分０秒からの経過秒数をそれぞれ１０ビット（２０００年から３０２３年まで対応）、４ビット、５ビット、１７ビット（２４時間＝２４ｘ６０ｘ６０＝８６４００秒、８６４００＜１３１０７１＝２の１７乗−１）で表現できるので、合計５６（＝１０＋４＋５＋１７＋２０）ビットを使って表現した時刻データをインターフェイスＩＤの下位５６ビットとすることができる。上位８ビットは全て０とする。このインターフェイスＩＤの構成を図７（ｂ）に示す。
【００６２】
以上の説明において、上位８ビットを全て０としたが、上位ビットを全て０にしなければ本発明の目的が達成されないというわけではない。イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４形式等との整合性を考慮した値を割当てることも可能である。ＲＦＣ２３７３（の２．５．１のインターフェース識別子と付録Ａ）に、イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４　ＩＤからインターフェイスＩＤを生成する方法が述べられているが、上位７ビット目はユニバーサルビット（１がグローバルスコープを、０がローカルスコープを意味する）、上位８ビット目は個別／グループビットだと定義されている。従って、５６ビットを時刻データとした場合の上位８ビットには、上位６ビットは全て０とし、７ビット目と８ビット目は前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスＩＤを生成するノードの全てが同じ値を使うように取り決めれば、上位８ビットにどのような値を割当てても構わない。
【００６３】
以上に説明した第１の実施形態の変形例における動作フローチャートは第１の実施形態と同じく図１に示したものである。ただし、本実施形態ではインターフェース識別子の下位２０ビットをカウンタ値の剰余により得る点で、下位２４ビットをカウンタ値の剰余から得ている第１実施形態と異なる。
【００６４】
以上のようにインターフェイスＩＤを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、ＩＰｖ６に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【００６５】
しかも、異なるクロック周波数を持つノードが混在していても、各ノードが生成するインターフェイスＩＤにはそのノードの固有性が現れないので、プライバシー保護の程度を低める恐れもない。
【００６６】
さらに、イーサネット（登録商標）以外のインターフェイスを持つＩＰｖ６装置であっても採用できるので汎用性が高い。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく、物理インターフェイスの制約を受けないインターフェイスＩＤを生成することが可能である。
【００６７】
［第２の実施形態］
本実施形態の説明を行う前に、イーサネット（登録商標）をインターフェイスとして持つＩＰｖ６対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のＲＦＣ、特にＲＦＣ２４６２”ＩＰｖ６ステートレスアドレス自動設定（Ｓｔａｔｅｌｅｓｓ　ａｄｄｒｅｓｓ　ａｕｔｏｃｏｎｆｉｇｕｒａｔｉｏｎ）”の内容を参照しながら説明する。
【００６８】
図９は、本発明が適用されるＤＨＣＰドメインを模式的に示したものである。図９において、ＤＨＣＰリレー１２０２はリンク１２０８とリンク１２０７の間でＤＨＣＰに関するデータの転送を行う。リンク１２０７には、ルーター１２０３、ホスト１２０４、ホスト１２０５、ホスト１２０６が接続され、リンク１２０８にはＤＨＣＰサーバー１２０１が接続されている。
【００６９】
図９のノード、正確にはホストが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートは図５に示したように、第１実施形態と同様である。
【００７０】
＜アドレス割り当て手順＞
図９のホスト、例えばホスト１２０４は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報（ルーター通知メッセージと呼ばれる）を入手することを試みる。リンクローカルアドレスの設定手順は、第１実施形態において図１または図５を参照して説明した手順でよい。
【００７１】
ホストがサイトローカルアドレスとグローバルアドレスを決定するための動作を図１０に示す。ルーター１２０３は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク１２０６に送っている。ホスト１２０４がルーター通知メッセージを早く入手したい場合は、ホスト１２０４はルータ要請メッセージと呼ばれるデータをルーター１２０３に送る。ホスト１２０４はリンクローカルアドレスを割当てた直後にはルーター１２０３の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図１０のステップＳ１９０１はこの処理を示す
。ルータ要請メッセージを受け取ったルーター１２０３はルーター通知メッセージを送る。図１０のステップＳ１９０２の「はい」の場合に示すように、ステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取ったホスト１２０４は、そのメッセージの中のプレフィックスの有効性（既にその装置によって使われていないこと等）を確認し、それ（ら）にインターフェイスＩＤを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図１０のステップＳ１９０３がこの処理である。
【００７２】
次に、図１０のステップＳ１９０２の「いいえ」の場合に示すように、ホスト１２０４がステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取らなかった場合は、次の二つの場合に分けられる。すなわち、ステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合（ステップＳ１９０４のはいの場合）と、ルーター通知メッセージを何も受け取らなかった場合（ステップＳ１９０４のいいえの場合）である。後者の場合はステートフルアドレス自動設定、すなわちＤＨＣＰｖ６のみを実行する。これがステップＳ１９０６であり、その詳細を図１１に示す。
【００７３】
＜ＤＨＣＰサーバによるアドレス割り当て手順＞
ＤＨＣＰサーバー１２０１は管理者によって必要な設定が行われている。具体的には、ノードとして自分のリンクローカルアドレスをインターフェイスに割当ててあり、ＤＨＣＰサーバとして振る舞うために必要なサイトローカルアドレスもしくはグローバルアドレスのためのプレフィックス等が設定されている。図１１のステップＳ１１００１で、ホスト１２０４はＤＨＣＰサーバーにＤＨＣＰ要請メッセージ（ＤＨＣＰ　ｓｏｌｉｃｉｔ　ｍｅｓｓａｇｅ）を送る。ホスト１２０４はどこにＤＨＣＰサーバーが存在するのかわからないのでＤＨＣＰサーバーに対するマルチキャストとしてリンク１２０７に送出する。図９ではホスト２０４の接続されているリンク１２０７とは異なるリンク１２０８にＤＨＣＰサーバー１２０１がいるので、ＤＨＣＰ要請メッセージは実際はＤＨＣＰリレー１２０２によって中継されてＤＨＣＰサーバー１２０１に届く。
【００７４】
ＤＨＣＰ要請メッセージを受け取ったＤＨＣＰサーバー１２０１はそれに対する返答としてＤＨＣＰ通知メッセージ（ＤＨＣＰ　ａｄｖｅｒｔｉｓｅ　ｍｅｓｓａｇｅ）をホスト１２０４に返す。これはＤＨＣＰリレー１２０２によって中継されてホスト１２０４に届く。これがステップＳ１１００２である。この時点でホスト１２０４はＤＨＣＰサーバー１２０１のアドレスがわかる。次にステップＳ１１００３でホスト１２０４はＤＨＣＰ要求メッセージ（ＤＨＣＰ　ｒｅｑｕｅｓｔ　ｍｅｓｓａｇｅ）をＤＨＣＰサーバー１２０１に送る。
【００７５】
このＤＨＣＰ要求メッセージを受け取ったＤＨＣＰサーバー１２０１の動作を図８のフローチャートを参照して説明する。図８のステップＳ１１０１でＤＨＣＰ要求メッセージを受け取る。ステップＳ１１０２で自分のクロックパルスのカウンターを剰余演算した値と時刻からインターフェイスＩＤ（６４ビット）を生成する。具体的な方法は後述する。そのインターフェイスＩＤと、サイトローカルアドレスもしくはグローバルアドレスのプレフィックスとを組み合わせて、ステップＳ１１０３でサイトローカルアドレスもしくはグローバルアドレスを生成する。その生成したＩＰｖ６アドレスを含むＤＨＣＰ確認メッセージ（ＤＨＣＰｃｏｎｆｉｒｍ　ｍｅｓｓａｇｅ）をステップＳ１１０４でホスト１２０４に送る。これは図１１のステップＳ１１００４に対応する。
【００７６】
図１１のステップＳ１１００４でＤＨＣＰサーバー１２０１からＤＨＣＰ確認メッセージを受け取ったホスト１２０４は、それからサイトローカルアドレスもしくはグローバルアドレスがわかるので、そのアドレスの中のインターフェイスＩＤが重複しているか否かを確認するために、重複アドレス検出処理に必要な処理を行う。つまり、インターフェイスに第１実施形態で説明したマルチキャストアドレス等を設定する。これがステップＳ１１００５である。次に、ステップＳ１１００６で近隣要請メッセージを送り、近隣通知メッセージを受け取るかどうかをステップＳ１１００７で判断する。受け取った場合はそのアドレスが重複しているので、別のアドレスをＤＨＣＰサーバー１２０１から受け取るためにステップＳ１１００３に戻り、同じ処理を繰り返す。
【００７７】
同じ処理を繰り返す場合、ＤＨＣＰサーバー１２０１は図８のステップＳ１１０５でＤＨＣＰ要求メッセージを受け取るので、ステップＳ１１０２に戻り、別のアドレスを生成し、ＤＨＣＰ確認メッセージをホスト１２０４に送る。ＤＨＣＰ要求メッセージを同じホスト１２０４から繰り返し受け取らなかった場合は、ＤＨＣＰサーバー１２０１の処理は終了する。
【００７８】
ホスト１２０４は、図１１のステップＳ１１００７で近隣通知メッセージを受け取らなかった場合はそのアドレスは重複していないので、ステップＳ１１００８でそのアドレスをインターフェイスに割当てる。
【００７９】
以上で図１０のステップＳ１９０６が終わる。ステップＳ１９０４でルーター通知メッセージを何も受け取らなかった場合はこれで正常終了する。ステップＳ１９０２でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合は、ステップＳ１９０５でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を行う。処理内容はステップＳ１９０３およびＳ１９０６の両方を行うというものである。
【００８０】
以上のようにして、イーサネット（登録商標）をインターフェイスとして持つホスト１２０４はステートレスアドレス自動設定とステートフルアドレス自動設定（ＤＨＣＰｖ６）を任意の組合わせで適用して、リンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定することができる。
【００８１】
＜ＤＨＣＰサーバによるアドレス生成方法＞
時刻データをインターフェイスＩＤ（６４ビット）として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位２４ビットを１６進数のＦＦ０２：０：０：０：０：１：ＦＦ００：：／１０４に付加したデータであることから、下位２４ビットが異なるデータであれば一意なデータになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を２４ビットデータ部分に割当てることが好ましい。２の２４乗＝１６，７７７，２１６なので、２４ビットデータは最大値１６，７７７，２１５をとる。１６ＭＨｚ（＝１６，０００，０００）の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、ＤＨＣＰ要求メッセージを受け取りインターフェイスＩＤを生成する瞬間のＤＨＣＰサーバー２０１のクロックパルスのカウンター（１秒間隔で０リセットされる）の値をＣとすると、Ｃを１６，０００，０００で割った余り（余りを求める演算を剰余演算と呼ぶ）を２進数で表記した値を下位２４ビットとする。インターフェイスＩＤを生成する瞬間の年（西暦２０００年を０とする）、月、日、午前０時０分０秒からの経過秒数をそれぞれ１０ビット（２０００年から３０２３年まで対応）、４ビット、５ビット、１７ビット（２４時間＝２４×６０×６０＝８６４００秒、８６４００＜１３１０７１＝２の１７乗−１）で表現できるので、合計６０（＝１０＋４＋５＋１７＋２４）ビットを使って表現した時刻データをインターフェイスＩＤの下位６０ビットとすることができる。上位４ビットは全て０とする。このインターフェイスＩＤの構成を図１０に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【００８２】
以上の説明において、上位４ビットを全て０、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４形式等との整合性を考慮した値を（一部）割当てることも可能である。ＲＦＣ２３７３（の２．５．１のインターフェース識別子と付録Ａ）に、イーサネット（登録商標）のＭＡＣアドレスあるいはＩＥＥＥ　ＥＵＩ−６４　ＩＤからインターフェイスＩＤを生成する方法が述べられているが、上位７ビット目はユニバーサルビット（１がグローバルスコープを、０がローカルスコープを意味する）、上位８ビット目は個別／グループビットだと定義されている。従って、６０ビットを時刻データとした場合の上位４ビットは全て０とし７ビット目と８ビット目は前記定義に従う方法を採用することも可能である。
【００８３】
なお、他にもインターフェイスＩＤの下位２４ビットを生成する方法はある。最も単純な方法はＤＨＣＰ要求メッセージを受け取った順に、０、１、２、３、とカウンターをインクリメントし、その値を割り振る方法である。カウンターは１６，７７７，２１５までインクリメントされたら次は０に戻る。ただし、ＤＨＣＰドメイン内のノードが全てＤＨＣＰサーバーからＩＰアドレスを割当てられるならばこの方法でもよいが、そうではない場合は重複の可能性が高くなるおそれがある。
【００８４】
以上のようにインターフェイスＩＤを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、ＩＰｖ６に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【００８５】
以上説明したように、本実施形態によれば、数学的な相互関係の無いインターフェイスＩＤを生成できる。従って、ＭＤ５を用いる方式が数学的な相互関係に由来するプライバシ保護の程度の弱さを持っていたのと異なり、プライバシ保護の程度はより高い。また、ＭＤ５のような計算を行うのではなく、ノードが動作しているときは常に動作しているクロックパルスのカウンター値を読む、もしくは読み取った値を剰余演算する計算のみを必要とするので貧弱な計算能力しか持たない装置であっても負荷をほとんど無視できる。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく物理インターフェイスの制約を受けないインターフェイスＩＤを生成することが可能である。
【００８６】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００８７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【００８８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００９０】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【発明の効果】
以上説明したように、本発明によれば、ノードに設定されるアドレスを、そのノードに固有の属性を使用せずに決定できる。そのため、設定されたアドレスからノードを特定することが困難であり、そのノードが送受信する情報に関するプライバシの保護が強化される。さらに、ＭＡＣアドレスなどの、一般的にアドレス決定のために利用される属性を持たない機器についても、アドレス決定手順を適用できる。
【００９１】
また、アドレス決定の手順が簡単であり、計算能力の低いノードであっても、ソフトウエアによりアドレス決定手順を実行させることができる。そのため、安価で保守性のよい通信制御装置及び方法を提供できる。
【００９２】
また、アドレスを動的にノードに割り当てるサーバにおいてもこの簡単なアドレス決定手順を適用できる。
【図面の簡単な説明】
【図１】第１実施形態において、リンクローカルアドレスをインターフェイスに割当てる動作を説明するフローチャート。
【図２】ＩＰｖ６ネットワークのローカルリンクの模式図。
【図３】ノードの構成例を示す図。
【図４】（ａ）イーサネット（登録商標）のＭＡＣアドレスの構成例を示す図、
（ｂ）インターフェイスＩＤの構成例を示す図、
（ｃ）仮リンクローカルアドレスの構成例を示す図、
（ｄ）仮リンクローカルアドレスの要請ノードマルチキャストアドレスの例を示す図。
【図５】ノードが重複アドレス検出を終えるまでの動作を説明するフローチャート。
【図６】第１実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図７】（ａ）時刻を用いたインターフェイスＩＤの構成の一例（２４ビット）を示す図、
（ｂ）時刻を用いたインターフェイスＩＤの構成の一例（２０ビット）を示す図。
【図８】第２実施形態においての一意なＩＰｖ６アドレスを割当てるＤＨＣＰサーバーの動作を説明するフローチャート。
【図９】第２実施形態におけるＤＨＣＰドメインの模式図。
【図１０】第２実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図１１】第２実施形態においてノードがＤＨＣＰでアドレスを取得するまでの動作フローチャート。
【符号の説明】
２０１　ルータ
２０２　ホスト
２０３　ホスト
２０４　ホスト
２０５　ホスト
２０６　ローカルリンク
２０７　外部へのリンク
３００　ノード筐体
３０１　ネットワーク・インターフェイス
３０２　ネットワーク・インターフェイス
３０３　ＣＰＵ
３０４　ＲＯＭ
３０５　ＲＡＭ
３０６　ＨＤ（ハードディスク）
３０７　電源
３０８　キーボード／マウスのインターフェイス
３０９　モニターのインターフェイス
３１０　バス
【図１】
2004056477.tif 000003
【図２】
2004056477.tif 000004
【図３】
2004056477.tif 000005
【図４】
2004056477.tif 000006
【図５】
2004056477.tif 000007
【図６】
2004056477.tif 000008
【図７】
2004056477.tif 000009
【図８】
2004056477.tif 000010
【図９】
2004056477.tif 000011
【図１０】
2004056477.tif 000012
【図１１】
2004056477.tif 000013