JP2004056477A - 通信制御装置及び方法 - Google Patents
通信制御装置及び方法 Download PDFInfo
- Publication number
- JP2004056477A JP2004056477A JP2002211121A JP2002211121A JP2004056477A JP 2004056477 A JP2004056477 A JP 2004056477A JP 2002211121 A JP2002211121 A JP 2002211121A JP 2002211121 A JP2002211121 A JP 2002211121A JP 2004056477 A JP2004056477 A JP 2004056477A
- Authority
- JP
- Japan
- Prior art keywords
- address
- sampling
- host
- procedure
- communication control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Small-Scale Networks (AREA)
Abstract
【課題】簡単かつハードウエアとの関連を特定しにくい手順でIPv6アドレスを設定する。
【解決手段】IPv6ではリンクローカルのIPアドレスを自動設定する機能が提供される。このIPアドレスはネットワークプレフィックスとインターフェース識別子とから構成されるが、インターフェース識別子を生成する際に、時刻情報とクロックパルスのカウンタとを読み取り(ステップS102)、その値から生成したインターフェース識別子を含むアドレスを生成する(S104)。このインターフェース識別子を仮リンクローカルアドレスとして重複アドレス検出手順を行い(S105〜S107)、固有のアドレスを設定する。
【選択図】図1
【解決手段】IPv6ではリンクローカルのIPアドレスを自動設定する機能が提供される。このIPアドレスはネットワークプレフィックスとインターフェース識別子とから構成されるが、インターフェース識別子を生成する際に、時刻情報とクロックパルスのカウンタとを読み取り(ステップS102)、その値から生成したインターフェース識別子を含むアドレスを生成する(S104)。このインターフェース識別子を仮リンクローカルアドレスとして重複アドレス検出手順を行い(S105〜S107)、固有のアドレスを設定する。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は通信制御装置及び方法に関し、特にIPv6ネットワークに接続する津通信制御装置及び方法に関する。
【0002】
【従来の技術】
インターネットプロトコルバージョン6(以下、IPv6と呼ぶ。)の登場により、従来はネットワークに接続することが考えられなかった装置がネットワークに接続する場面が考えられている。例えば、インターネットに直接接続可能なエンドユーザ向けディジタルカメラなどである。
【0003】
IPv6に対応するパーソナル・コンピュータやワークステーションの場合、ネットワークとの接続のインターフェイスには通常はイーサネット(登録商標)が用いられ、それが持つIEEE識別子(MACアドレス)を元にしてIPv6アドレスが構成されるようになっている。IPv6アドレスには、後述するように、物理的なネットワークにおいて一意に定められるリンクローカルアドレスと、IPv4におけるプライベートアドレスに相当すると考えられるサイトローカルアドレスと、(集約可能)グローバルアドレスの3種類が存在する。それらの詳細や構成方法などのアドレス体系は、RFC2373”IP Version 6 Addresssing Architecture”, RFC2374”An IPv6 Aggregatabale Global Unicast Address Format”, RFC2375”IPv6 Multicast Address Assignment”, RFC2450”Proposed TLA and NLA Assignment Rule”, RFC2461”Neighbor Discovery for IP Version 6(IPv6)”,RFC2462”IPv6 Stateless Address Autoconfiguration”等に記述されているので、詳細についてはそちらを参照することとし以降では本発明に関連のある事柄についてのみ説明する。
【0004】
IPv6では、ネットワークプレフィクスにIEEE識別子(MACアドレス)から生成したインターフェース識別子をつなげてリンクローカルアドレスを生成するアドレス自動設定機能が提供される。
【0005】
アドレス自動設定の際、IEEE識別子(MACアドレス)のようにハードウェアに一対一に対応する情報を固定的に用いると、そのアドレスが装置もしくはその装置のユーザと一対一に対応する情報とみなされ、そのアドレスを使う通信をモニターされることによりプライバシが侵害される恐れが強い。この課題に対しては、RFC3041”Privacy Extensions for Stateless Address Autoconfiguration in IPv6”,において、具体的な解決方法がメモリを持つ場合と持たない場合について提案されている。装置がメモリを持つ場合では、IEEE識別子(MACアドレス)とMD5という関数を用いて128ビットのランダムな値を計算し、半分をアドレスとして用い、残り半分を次回の計算の入力用に記憶しておく。適当な時間が経過したら再度計算を行い、アドレスを更新する。
【0006】
装置がメモリを持たない場合、毎回ランダムな値を何らかの方法を用いて生成する。計算して生成したランダムな値が既に使われている場合には、それを検出して別のランダムな値を計算して生成し、ユニークなランダムな値を定めるプロトコル(の拡張)も記述されている。ランダムな値を生成する方法としては、RFC1750”Randomness Recommendations for Security”にいくつかの手法が開示されている。
【0007】
【発明が解決しようとする課題】
上述した、固定的な情報を用いたアドレス生成に起因する問題の解決方法において、メモリを持つ装置の場合、最初のMD5の計算に用いるIEEE識別子(MACアドレス)の値がわかれば、それ以降の計算で求められる値は全て一意に定まるので、プライバシの保護という観点から考えると必ずしも好ましくないという課題がある。さらに、毎回MD5の計算を行うので、貧弱な計算能力しか持たない装置の場合はMD5の計算量が負荷となりうる。
【0008】
また、メモリを持たない装置の場合、毎回ランダムな値を生成する方法を採用することが考えられるが、RFC1750にもあるように、暗号学的に好ましいランダムな値を生成する方法をソフトウェアのみで構成することは困難である。ハードウェアを利用する方法もいくつか示されているが、具体的な方法がはっきりしない。なおRFCとは、インターネットの技術開発組織であるIETFが公開している技術提案やコメントの文書であり、実質的な標準技術が番号を付して公開されている。
【0009】
このように、MACアドレスを用いてIPv6アドレスを生成する場合、必ずしも通信の秘密性を保持できず、また、計算負荷が高く、通信の効率を低下させるばかりでなく、計算能力の低い機器では採用できないという第1の問題があった。
【0010】
加えて、ディジタルカメラのような装置のインターフェイスには必ずしもイーサネット(登録商標)が使われるとは限らないという問題もある。
【0011】
インターネットの基本思想の一つにエンドトゥーエンドの透過性がある。これは、インターネット上の装置が通信するときに、送受信されるパケットが、通信経路上のルータやファイアウォール等によって変更されることなく装置に届けられる性質である。どのような接続形態であったとしても、エンドトゥーエンドの透過性が保たれていることが望ましく、そのためにはIPv6対応装置自身がIPv6アドレスを持つことが必要となる。
【0012】
ところが、イーサネット(登録商標)ではないインターフェースを持ち、そのためにMACアドレスを持たない機器については、IPv6アドレスを生成する方法が定められていない。
【0013】
例えば、無線通信規格のブルートゥースを利用してディジタルカメラが携帯電話と接続し、携帯電話は携帯電話網を経由してインターネットと接続することで結果的にディジタルカメラがインターネットと接続することも考えられる。また、今後の技術の発展により更に多様なインターフェースや接続形態が生まれてくることも予想される。
【0014】
ところが、上述したように、MACアドレスを持たない機器についてはIPv6アドレスを生成する方法が定められておらず、アドレス自動設定機能を利用することができなければ、IPv6の利点のひとつであるプラグアンドプレイを享受することができない。このように、MACアドレスを持たないIPv6装置(IPv6をサポートする装置のこと。以下同じ)がIPv6アドレスを構成するための一般的な方法が決まっていないという第2の課題もあった。
【0015】
これらはリンクローカルアドレスの生成時に限られず、サイトローカルアドレスやグローバルアドレスをホストに割り当てる場合にも同様に問題となる。
【0016】
サイトローカルアドレスあるいはグローバルアドレスをIPv6装置に割当てる方法の一つに、DHCPv6(動的ホスト構成プロトコルIPv6)がある。これは、IPv6装置がリンクローカルアドレスを確立したあとで、DHCPサーバーと通信してサイトローカルアドレスもしくはグローバルアドレスを割当ててもらうプロトコルである。
【0017】
DHCPサーバがサイトローカルアドレスやグローバルアドレスをホストに割り当てる場合には、DHCPサーバに予め設定されているサイトローカルアドレスもしくはグローバルアドレスのネットワークプレフィックスに、DHCP要求を発行したホストのインターフェース識別子を付加してそのホストにIPアドレスを割り当てる。このインターフェース識別子についても、上述したと同様、プライバシの保護に欠けることや、MACアドレスを持たない機器に対するアドレス割り当て方法が決まっていないという問題がある。
【0018】
本発明は上記従来例に鑑みてなされたもので、アドレスからユーザや端末の特定が困難な方法でアドレスを生成し、ユーザのプライバシを手厚く保護できる通信制御装置及び方法を提供することを目的とする。
【0019】
さらに、計算処理の負荷が小さな方法でアドレスを生成することができる通信制御装置及び方法を提供することを目的とする。
【0020】
さらに、物理インターフェースの制約を受けずにアドレスを生成できる通信制御装置及び方法を提供することを目的とする。
【0021】
【課題を解決するための手段】
上記目的を達成するために本発明は次のような構成を有する。
【0022】
単位ネットワークにおいて固有のアドレスを設定する通信制御装置であって、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手段とを有し、
前記確認手段により重複していないことが確認されるまで、前記サンプリング手段によるサンプリング及び前記生成手段によるアドレスの生成をし直す。
【0023】
更に好ましくは、前記通信制御装置は前記単位ネットワークに接続されたホストであり、生成されるアドレスは当該ホストのアドレスである。
【0024】
更に好ましくは、前記通信制御装置は、前記単位ネットワークに接続されたホストと該ホストに対して動的にアドレスを割り当てるサーバとを含み、前記サンプリング手段及び前記生成手段は前記サーバが有し、前記確認手段は前記サーバにより生成されたアドレスの割り当てを受けるホストが有する。
【0025】
また他の構成によれば次のような構成を有する。
【0026】
ネットワークに接続されたホストに対してアドレスを設定する通信制御装置であって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
生成したアドレスを前記ホストに送信する手段と
を備える。
【0027】
更に好ましくは、前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手段は、前記サンプリング手段によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定する。
【0028】
更に好ましくは、前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択される。
【0029】
更に好ましくは、前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択される。
【0030】
上記手段を有する装置は、電源が入れられたときあるいはリブートされたときの時刻情報とクロックパルスのカウンター値からインターフェイス識別子およびリンクローカルアドレスを生成し、そのインターフェイス識別子およびリンクローカルアドレスが前記装置が接続しようとしているリンクにおいて唯一か否か、すなわち同じインターフェイス識別子およびリンクローカルアドレスを使っている他の装置が存在するか否かを確認する。唯一でないならば、クロックパルスのカウンター値を再度読み取りインターフェイスIDおよびリンクローカルアドレスを生成し、確認する。以上の処理を必要なだけ繰り返し、唯一であることが確認されたならば、そのリンクローカルアドレスをインターフェイスに割当てる。時刻情報とクロックパルスのカウンター値はその装置に関する情報を一切含まないので、インターフェイス識別子やリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスから対応する装置もしくはそのユーザを特定される恐れはない。
【0031】
【発明の実施の形態】
[第1の実施形態]
本発明の実施形態の説明を行う前に、イーサネット(登録商標)をインターフェイスとして持つIPv6対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のRFC、特にRFC2462”IPv6 ステートレスアドレス自動設定(Stateless address autoconfiguration)”の内容を参照しながら説明する。
【0032】
<ローカルリンク構成例>
図2は、本発明が適用されるIPv6対応装置を含むローカルリンクを模式的に示したものである。リンクとは、それに接続された装置がそれを介して通信することができる設備もしくは媒体であり、IP層の下側に接する。リンクにはイーサネット(登録商標)の他に、PPPリンク、X.25、フレームリレー、ATMネットワーク等がある。リンクに接続されたIPv6対応装置をノードと呼ぶ。ノードの内部構成の典型例を図3に示す。ノードには、ルーターとホストがあり、ルーターは自分宛ではないパケットを転送するがホストは転送しない。図3からわかるように、ノードはCPU、ROM、RAM、HD(ハードディスク)、ネットワーク・インターフェイス等を有する計算機である。ルーターは複数のインターフェイスを持つのに対しホストは多くの場合は一つのインターフェイスを持つ。ノードによってはHDを持たないものもある。図2において、ルーター201がローカルリンク206と外部へのリンク207を接続し、ローカルリンクと外部の間のパケットの転送を担う。ローカルリンク206には、ホスト202、ホスト203、ホスト204、ホスト205が接続されている。ホスト及びルータは、ROMやRAM等のメモリに格納されたプログラムをCPUにより実行することで後述するフローチャートに示されたような手順を実現する。また、本実施形態の実現のためには、ホストは、クロックパルスを計数するカウンタを有する。クロックパルスは16MHzの整数倍であり、カウンタは24ビット以上の桁数を有することが望ましい。さらに、ホストは、実時間を計時する時計を有する。他のホスト及びルータも同様の構成を有する。
【0033】
イーサネット(登録商標)のIEEE識別子(MACアドレス)は、6バイト長のアドレスで、先頭の3バイトは製造ベンダーコードとしてIEEEによって管理・割当てがされている。残り3バイトは各ベンダーに管理が任されており、重複が起こらないように割当てがされる。図4(a)にイーサネット(登録商標)のMACアドレスの構成を示す。1区画は1バイト(8ビット)のデータを示し、左から3バイトが製造ベンダーコード、残り3バイトがベンダーが管理するコードとなっている。ベンダーが管理するコードはイーサネット(登録商標)・カード毎に異なるように振られるので、イーサネット(登録商標)・カード毎に世界で唯一のアドレスが対応し、イーサネット(登録商標)上でのデータの送受信の際のアドレスとして利用される。イーサネット(登録商標)を介して送られるデータは、送信元のアドレスと宛先のアドレスとデータを含むパケットとしてイーサネット(登録商標)上に送出される。他のノードが送出したデータとの衝突が検出された場合にはランダムな時間が経過したあと再送されるようになっている。送られたパケットはイーサネット(登録商標)に接続しているノード全てがアクセスできるので、各ノードはパケットの宛先アドレスを見てそれが自分宛の場合は受け取り、自分宛ではない場合は無視する。以上のような仕組みにより、リンク層のデータ通信が行えるようになっている。リンク層のデータ通信を基礎として、その上にインターネットプロトコル(IP)層が実装され、リンクの制約を受けない広域な通信が実現されている。
【0034】
<リンクローカルアドレスの設定手順>
次にIPv6のアドレス表記を説明する。IPv6のアドレスは128ビットであり、16進数4桁(16ビットを表す)をコロン’:’で区切った表記が使われる。例えば、FE80:0000:0000:0000:0000:0000:0000:0001である。アドレス中の0000は0と表してもよく、解釈の一意性が保たれるならば0の連続部分は省かれて::と表記される。前記アドレスは、FE80::0001あるいはFE80::1と同じアドレスである。アドレスの中の上位Xビットを示すとき、FE80::1/Xと表記する。FE80::1/32はFE80:0000と同じである。
【0035】
図2のノードが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートを図5に示す。この動作は重複アドレス検出(DAD:Duplicate Address Detection)と呼ばれる。以下では図5の流れに沿って処理内容を説明する。
【0036】
なお以下の処理内容(手順)は、装置もしくはプログラムとして実現され、その装置を有するノードが実行するもしくはそのプログラムがROMもしくはHDに格納されたノードが実行する。例えば、プログラムとして実現される場合は、そのプログラムをCPUが読み込み、必要に応じてRAMを計算のための空間として利用しながらバスを介してインターフェイスにアドレスを割当てる、というような動作を行う。このような動作は計算機としての一般的な動作なので、誤解される恐れのない範囲で詳細は省略し、ノードがインターフェイスをアドレスに割当てる、というように手順の本質を説明する。
【0037】
ステップS801でノードが電源を入れられたあるいはリブートされた直後にはインターフェイスにはアドレスがなにも割当てられていないので、まず次の処理がノードによって行われる。イーサネット(登録商標)のMACアドレス(図4(a)参照)を3バイトずつに分割し、中間に16進数の「FFFE」をはさみ、先頭から7ビット目を1にする。これを図4(b)に示す。図4(b)のC1’は、図4(a)のC1の先頭から7ビット目を1にしたものを表す。図4(b)の構成の64ビット・データをインターフェイスIDと呼ぶ。インターフェイスIDをリンクローカルアドレス用プレフィックスのFE80:0000:0000:0000に付加して作った128ビットのデータを仮リンクローカルアドレス(tentative link−local address)とする。以上がステップS802の処理である。図4(c)に仮リンクローカルアドレスの構成を示す。このアドレスはまだインターフェイスに割当てられない。
【0038】
次に、その仮リンクローカルアドレスがリンク上で一意かどうかを判断するために、ホストは以下の処理を行う。最初に、インターフェイスの初期設定をする。すなわち、インターフェイスに、リンクローカル・オールノードマルチキャストアドレス(FF02::1)と、その仮リンクローカルアドレスの要請ノードマルチキャストアドレス(solicited−node multicastaddress)を割当てる。つまり、そのインターフェイスがオールノードマルチキャストアドレス宛のパケットあるいはその仮リンクローカルアドレスの要請ノードマルチキャストアドレス宛のパケットを見つけたときは、それを自分のインターフェイス宛のパケットとして受け取る。前者(オールノードマルチキャストアドレス)を割当てることによって、既にその仮リンクローカルアドレスを使っている他のノードからのデータを受信することが可能になり、後者(その仮リンクローカルアドレスの要請ノードマルチキャストアドレス)を割当てることによって、同じ仮リンクローカルアドレスを同時に使おうとしている他のノードの存在を検出することが可能になる。ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスとは、RFC2461の91ページに定義されているように、仮リンクローカルアドレスの下位24ビットをプレフィックスFF02:0:0:0:0:1:FF00::/104に付加したデータであり、アドレススコープがリンクローカルのマルチキャストアドレスである。図4(c)と図4(d)にそれらの関係を示す。以上のアドレス割当てが図5のステップS803である。
【0039】
次に近隣要請メッセージ(Neighbor Solicitation message)を作る。近隣要請メッセージのターゲットアドレスには判断対象の仮リンクローカルアドレスを、送信元IPアドレスには未指定アドレス(128ビット全てが0)を、あて先IPアドレスには判断対象の仮リンクローカルアドレスの要請ノードマルチキャストアドレスを設定する。この近隣要請メッセージを一定の間隔(”RetransTimer”に規定されたミリセカンド間隔)で、一定の個数(”DupAddrDetectTransmits”に規定された個数)イーサネット(登録商標)に送出する。図5のステップS804がこの処理である。
【0040】
近隣要請メッセージを受け取ったノードは、その送信元アドレスが未指定アドレスならば、そのメッセージが重複アドレス検出を行っているノードからのデータであることがわかる。同時に複数のノードが同じアドレスを対象として重複アドレス検出をしている場合は、同じアドレスをターゲットアドレスに含む複数の近隣要請メッセージを受け取るので、重複していることがわかる。その場合にはどのノードもそのアドレスは使わない。受け取った近隣要請メッセージが自分が送ったもの(マルチキャストのパケットをループバックしているため)であるならば、他にそれを使っているあるいは使おうとしているノードが存在することを示さない。
【0041】
一方、近隣要請メッセージを受け取ったノードが、そのメッセージのターゲットアドレスに含まれるアドレスを既に使っていれば、マルチキャストの近隣通知メッセージ(Neighbor Advertisement message)を返す。従って、近隣要請メッセージを送ったノードがマルチキャスト近隣通知メッセージを受け取り、そのターゲットアドレスが、判断対象の仮リンクローカルアドレスである場合(図5のS805ステップの「はい」の場合)は、判断対象の仮リンクローカルアドレスが唯一ではない、すなわち、アドレスがリンク内において重複していると判断できる。
【0042】
一方、以上の重複アドレス検出の結果、判断対象の仮リンクローカルアドレスがリンク上で唯一であることが確認された(図5のS805ステップの「いいえ」の場合)ならば、そのアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。これが図5のステップS806である。以上で重複アドレス検出は終了する。以上に説明した図5の動作は図2のルーター201、ホスト202、ホスト203、ホスト204、ホスト205のそれぞれが実行することができる。
【0043】
<サイトローカルまたはグローバルアドレス設定手順>
図2のホスト、例えばホスト202は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報(ルーター通知メッセージ(Router Advertisement message)と呼ばれる)をルーター201から入手することを試みる。この動作を図6に示す。
【0044】
ルーター201は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク206に送っている。ホスト202がルーター通知メッセージを早く入手したい場合は、ホスト202はルータ要請メッセージ(Router Solicitation message)と呼ばれるデータをルーター201に送る。ホスト202は、リンクローカルアドレスを割当てた直後にはルーター201の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図6のステップS901はこの処理を示す。
【0045】
ルータ要請メッセージを受け取ったルーター201は、ネットワークプレフィックスを含むルーター通知メッセージを送り返す。図6のステップS902の「はい」の場合に示すように、ルーター通知メッセージを受け取ったホスト202は、そのメッセージの中のプレフィックスの有効性(既にその装置によって使われていないこと等)を確認し、そのプレフィックスにインターフェイスIDを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図6のステップS903がこの処理である。なお、図6のステップS902の「いいえ」の場合に示すように、ホスト202がルーター通知メッセージを受け取らなかった場合は異常終了する。この場合、ホスト202はステートフルアドレス自動設定(stateful address autoconfiguration)を行うべきとされている。なお、ステートレスアドレス自動設定とは、ルータがホストに割り当てるアドレスや割り当ての状態を管理せず、ホストがネットワークのプレフィクスとインターフェース識別子とからIPアドレスを生成する方式をいう。それに対してステートフルアドレス自動設定とは、割り当てるべきIPアドレスや割り当て状況をDHCPサーバが管理し、ホストには、DHCPサーバの管理するIPアドレスの中から未使用のものが割り当てられたり、あるいは予めホストに対して登録されているIPアドレスが与えられる方式をいう。
【0046】
以上のようにして、イーサネット(登録商標)をインターフェイスとして持つホスト202はリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定する。
【0047】
<本実施形態に係るアドレス設定手順>
次に、本発明を説明する。基本的な処理は上記と同じであるが、インターフェイスIDの生成方法が異なる。基本となる考えは、時刻データをインターフェイスIDにすることである。前述のRFC3041等に記載されているように、インターフェイスIDとして、ランダムな64ビット値を用いることも可能とされている。どのノードでも生成が可能で、かつインターフェイスIDを与えられたときそれをどのノードが生成したかはわからず、かつ生成が容易な方法として時刻データは非常に適当だと考えられる。
【0048】
時刻データをインターフェイスID(64ビット)として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位24ビットを16進数のFF02:0:0:0:0:1:FF00::/104に付加したデータであることから、下位24ビットがリンク内で一意であれば一意なリンクローカルアドレスになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を24ビットデータ部分に割当てることが好ましい。2の24乗=16,777,216なので、24ビットデータの最大値は16,777,215となる。
【0049】
そこで16MHz(=16,000,000Hz)の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、インターフェイスIDを生成する瞬間のクロックパルスのカウンター(1秒間隔で0リセットされる)の値をCとすると、Cを16,000,000で割った余り(余りを求める演算を剰余演算と呼ぶ)を2進数で表記した値を下位24ビットとする。この剰余値は、0〜16,000,000−1を範囲としているために、16MHzの倍数のクロックパルスを1秒間隔でリセットすればどの値も等確率で生じる。
【0050】
またインターフェイスIDを生成する瞬間の年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数は、それぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24×60×60=86400秒、86400<131071=2の17乗−1)で表現できる。そこで、この時刻情報36ビットとカウンタの剰余演算値24ビットの合計60(=10+4+5+17+24)ビットを使って表現した時刻データをインターフェイスIDの下位60ビットとすることができる。上位4ビットは全て0とする。このインターフェイスIDの構成を図7(a)に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【0051】
このようにカウンタ及び時刻情報を元にして仮リンクローカルアドレスを生成する。生成したインターフェース識別子(インターフェースID)の下位24ビットはそれぞれのホストにおいて非同期に動作するクロックパルスのカウンタ値を基にしていることから、それらが一致する確率は十分低いものと期待できる。
【0052】
生成したアドレスの重複が検出された場合には、異なる剰余演算結果を生成して重複の確認を行うが、その手順として以下の二つがある。
【0053】
一般には二つ以上のノードが電源を入れられあるいはリブートされインターフェイスIDを生成する瞬間が全く同じとなり、上述の剰余演算結果が同じ値を持つ可能性は低いと考えられるが、停電があった後に多くのノードが一斉に立ち上がる、あるいはオフィスの開始時刻のような状況では、同じ値を持つ可能性も無視できない。一方、そのような場合は重複アドレス検出がほぼ同時に行われることで混雑が起こりうるので、それを回避するためにRFC2462のページ15にランダムな遅延時間を生成するための定数”MAX_RTR_SOLICITATION_DELAY”(=1秒)が定義されている。この定数を用いて0以上”MAX_RTR_SOLICITATION_DELAY”未満のランダムな時間を生成し、その時間だけ待ってからルータ要請メッセージを送ることとされている。このランダムな時間を借用し、値が重複した場合にもう一度クロックパルスのカウンター値を読み取るまでの遅延時間としてそのランダムな時間を利用するという手順が第1の手順である。
【0054】
二つ目の手順は、次のようなアルゴリズムである。複数のノードが同じ剰余演算結果を取り、重複が検出されたとする。このとき、それらのノードは、0単位時間あるいは1単位時間のいずれかだけ待ち、待った後の瞬間のクロックパルスのカウンター値を読み取り剰余演算を行い、再び重複アドレス検出を行う。この2度目の重複アドレス検出でも重複が検出されたときは0,1,2,3単位時間のいずれかをランダムに選び、その時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。n回目の重複が検出された場合は0と2n−1の間のランダムな単位時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。このアルゴリズムはイーサネット(登録商標)においてデータ衝突時に使われているバイナリエクスポネンシャルバックオフと呼ばれる定評のあるアルゴリズムなので、重複回避効果の高さは実証済みである。
【0055】
以上の説明において、上位4ビットを全て0、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64フォーマット等との整合性を考慮した値を(一部)割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられている。それによると、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットと定義されている。従って、60ビットを時刻データとした場合の上位4ビットを全て0とし、7ビット目と8ビット目として前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスIDを生成するノードの全てが同じ値を使うように取り決めれば、上位4ビットにどのような値を割当てても構わない。
【0056】
以上に説明した本発明の第1の実施形態の動作フローチャートを図1に示す。ステップS101でホストは電源オンあるいはリブートされる。ステップS102でクロックパルスのカウンターを読み取って剰余演算した値と時刻データからインターフェイスIDを生成する。ステップS103でインターフェイスの初期設定を行い、他のノードからのデータを受け取れるようにする。ステップS104で、インターフェイスIDから仮リンクローカルアドレスを生成する。ステップS105で、近隣要請メッセージを前述のように生成し、リンクに送出する。
【0057】
ステップS106で近隣通知メッセージを受信した場合は、ランダムな遅延を行った後に、再度クロックパルスのカウンターを読み取ってその値について剰余演算し、また再度時刻データを読み取る。そして、剰余演算した値と時刻データとからインターフェイスIDを再び生成する。そしてステップS103に戻る。ステップS106で近隣通知メッセージを受信しなかった場合は、ステップS108でその仮リンクローカルアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。
【0058】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは通常のコンピュータが有するもので十分であり、IPv6に対応している計算機であれば新たに設ける必要がない。またソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0059】
[第1の実施形態の変形例]
上述した第1の実施形態のように、クロックパルスのカウンタ16,000,000で割った余りを下位24ビットとするとき、ノードが16MHzの倍数のクロックを持っていない場合は重複する可能性が高くなる、あるいはそのノードが取りうる値に偏りを生じ易くなる。しかし、固有な値のアドレスを生成することおよびアドレスとノードとの対応関係がわからないことを実現するうえでは、この偏りが大きな問題とならないようにできる。例えば、現在のCPUの技術では1MHzの整数倍のクロックで動作するものがほとんどであるので、以下のような理由から1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことにしても構わないことがわかる。
【0060】
余りを取るときの定数を法と呼ぶ。法で割った余りの値が、「0」と「法マイナス1」の間をランダムに分布することが所期の効果(重複の可能性を低くすること、ノードによって取りうる値に偏りを生じることがないこと)を得るための前提である。あるリンクに接続されるノードの総数が最大kで、各ノードがランダムサンプリングした値が最大値(k/1.18)2のとき、k個のノードの中に重複が現れる確率は1/2になる(岡本栄司、暗号理論入門、共立出版株式会社、24ページ参照)。k=100の場合、最大値7,182のランダムサンプリングであれば重複が現れる可能性は約1/2になるので、重複が起こったときは0と7,182の間の値をランダムに選んで重複アドレス検出を再度行うことにする。この処理をn回繰り返せば、(1/2)nの確率で重複を避けることが可能と見積もれる。1MHzの整数倍のクロックで動作するCPUを持つノードが高々100個存在するリンクの場合、1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことで、最初の読み取りにおいて重複する可能性を1/2以下にできる。k=1,000の場合でも、最大値718,184のランダムサンプリングで最初における重複の可能性を1/2以下にできるので、1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことで充分である。
【0061】
一般には、ノードが複数存在するとき、それぞれのクロックの最大公約数を法とすることができる。各ノードが読み取ったクロックパルスのカウンター値を前記の法で割った余りをインターフェイスIDの下位24ビットに使うことにすれば、重複の可能性は最も小さくなりかつノードによって取りうる値に偏りを生じることがないと期待される。現在の技術では1MHzの整数倍のクロックパルス周波数で動作するCPUがほとんどであるので、1,000,000<220を法としてランダムサンプリングと剰余演算をした値(あるいはクロックパルスのカウンターの周期を1,000,000としたときのある時点のカウンター値)をインターフェイスIDの下位20ビットに割当てるのが現実的な実現方法と言える。インターフェイスIDを生成するときの年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数をそれぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24x60x60=86400秒、86400<131071=2の17乗−1)で表現できるので、合計56(=10+4+5+17+20)ビットを使って表現した時刻データをインターフェイスIDの下位56ビットとすることができる。上位8ビットは全て0とする。このインターフェイスIDの構成を図7(b)に示す。
【0062】
以上の説明において、上位8ビットを全て0としたが、上位ビットを全て0にしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64形式等との整合性を考慮した値を割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられているが、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットだと定義されている。従って、56ビットを時刻データとした場合の上位8ビットには、上位6ビットは全て0とし、7ビット目と8ビット目は前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスIDを生成するノードの全てが同じ値を使うように取り決めれば、上位8ビットにどのような値を割当てても構わない。
【0063】
以上に説明した第1の実施形態の変形例における動作フローチャートは第1の実施形態と同じく図1に示したものである。ただし、本実施形態ではインターフェース識別子の下位20ビットをカウンタ値の剰余により得る点で、下位24ビットをカウンタ値の剰余から得ている第1実施形態と異なる。
【0064】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、IPv6に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0065】
しかも、異なるクロック周波数を持つノードが混在していても、各ノードが生成するインターフェイスIDにはそのノードの固有性が現れないので、プライバシー保護の程度を低める恐れもない。
【0066】
さらに、イーサネット(登録商標)以外のインターフェイスを持つIPv6装置であっても採用できるので汎用性が高い。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく、物理インターフェイスの制約を受けないインターフェイスIDを生成することが可能である。
【0067】
[第2の実施形態]
本実施形態の説明を行う前に、イーサネット(登録商標)をインターフェイスとして持つIPv6対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のRFC、特にRFC2462”IPv6ステートレスアドレス自動設定(Stateless address autoconfiguration)”の内容を参照しながら説明する。
【0068】
図9は、本発明が適用されるDHCPドメインを模式的に示したものである。図9において、DHCPリレー1202はリンク1208とリンク1207の間でDHCPに関するデータの転送を行う。リンク1207には、ルーター1203、ホスト1204、ホスト1205、ホスト1206が接続され、リンク1208にはDHCPサーバー1201が接続されている。
【0069】
図9のノード、正確にはホストが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートは図5に示したように、第1実施形態と同様である。
【0070】
<アドレス割り当て手順>
図9のホスト、例えばホスト1204は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報(ルーター通知メッセージと呼ばれる)を入手することを試みる。リンクローカルアドレスの設定手順は、第1実施形態において図1または図5を参照して説明した手順でよい。
【0071】
ホストがサイトローカルアドレスとグローバルアドレスを決定するための動作を図10に示す。ルーター1203は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク1206に送っている。ホスト1204がルーター通知メッセージを早く入手したい場合は、ホスト1204はルータ要請メッセージと呼ばれるデータをルーター1203に送る。ホスト1204はリンクローカルアドレスを割当てた直後にはルーター1203の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図10のステップS1901はこの処理を示す
。ルータ要請メッセージを受け取ったルーター1203はルーター通知メッセージを送る。図10のステップS1902の「はい」の場合に示すように、ステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取ったホスト1204は、そのメッセージの中のプレフィックスの有効性(既にその装置によって使われていないこと等)を確認し、それ(ら)にインターフェイスIDを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図10のステップS1903がこの処理である。
【0072】
次に、図10のステップS1902の「いいえ」の場合に示すように、ホスト1204がステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取らなかった場合は、次の二つの場合に分けられる。すなわち、ステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合(ステップS1904のはいの場合)と、ルーター通知メッセージを何も受け取らなかった場合(ステップS1904のいいえの場合)である。後者の場合はステートフルアドレス自動設定、すなわちDHCPv6のみを実行する。これがステップS1906であり、その詳細を図11に示す。
【0073】
<DHCPサーバによるアドレス割り当て手順>
DHCPサーバー1201は管理者によって必要な設定が行われている。具体的には、ノードとして自分のリンクローカルアドレスをインターフェイスに割当ててあり、DHCPサーバとして振る舞うために必要なサイトローカルアドレスもしくはグローバルアドレスのためのプレフィックス等が設定されている。図11のステップS11001で、ホスト1204はDHCPサーバーにDHCP要請メッセージ(DHCP solicit message)を送る。ホスト1204はどこにDHCPサーバーが存在するのかわからないのでDHCPサーバーに対するマルチキャストとしてリンク1207に送出する。図9ではホスト204の接続されているリンク1207とは異なるリンク1208にDHCPサーバー1201がいるので、DHCP要請メッセージは実際はDHCPリレー1202によって中継されてDHCPサーバー1201に届く。
【0074】
DHCP要請メッセージを受け取ったDHCPサーバー1201はそれに対する返答としてDHCP通知メッセージ(DHCP advertise message)をホスト1204に返す。これはDHCPリレー1202によって中継されてホスト1204に届く。これがステップS11002である。この時点でホスト1204はDHCPサーバー1201のアドレスがわかる。次にステップS11003でホスト1204はDHCP要求メッセージ(DHCP request message)をDHCPサーバー1201に送る。
【0075】
このDHCP要求メッセージを受け取ったDHCPサーバー1201の動作を図8のフローチャートを参照して説明する。図8のステップS1101でDHCP要求メッセージを受け取る。ステップS1102で自分のクロックパルスのカウンターを剰余演算した値と時刻からインターフェイスID(64ビット)を生成する。具体的な方法は後述する。そのインターフェイスIDと、サイトローカルアドレスもしくはグローバルアドレスのプレフィックスとを組み合わせて、ステップS1103でサイトローカルアドレスもしくはグローバルアドレスを生成する。その生成したIPv6アドレスを含むDHCP確認メッセージ(DHCPconfirm message)をステップS1104でホスト1204に送る。これは図11のステップS11004に対応する。
【0076】
図11のステップS11004でDHCPサーバー1201からDHCP確認メッセージを受け取ったホスト1204は、それからサイトローカルアドレスもしくはグローバルアドレスがわかるので、そのアドレスの中のインターフェイスIDが重複しているか否かを確認するために、重複アドレス検出処理に必要な処理を行う。つまり、インターフェイスに第1実施形態で説明したマルチキャストアドレス等を設定する。これがステップS11005である。次に、ステップS11006で近隣要請メッセージを送り、近隣通知メッセージを受け取るかどうかをステップS11007で判断する。受け取った場合はそのアドレスが重複しているので、別のアドレスをDHCPサーバー1201から受け取るためにステップS11003に戻り、同じ処理を繰り返す。
【0077】
同じ処理を繰り返す場合、DHCPサーバー1201は図8のステップS1105でDHCP要求メッセージを受け取るので、ステップS1102に戻り、別のアドレスを生成し、DHCP確認メッセージをホスト1204に送る。DHCP要求メッセージを同じホスト1204から繰り返し受け取らなかった場合は、DHCPサーバー1201の処理は終了する。
【0078】
ホスト1204は、図11のステップS11007で近隣通知メッセージを受け取らなかった場合はそのアドレスは重複していないので、ステップS11008でそのアドレスをインターフェイスに割当てる。
【0079】
以上で図10のステップS1906が終わる。ステップS1904でルーター通知メッセージを何も受け取らなかった場合はこれで正常終了する。ステップS1902でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合は、ステップS1905でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を行う。処理内容はステップS1903およびS1906の両方を行うというものである。
【0080】
以上のようにして、イーサネット(登録商標)をインターフェイスとして持つホスト1204はステートレスアドレス自動設定とステートフルアドレス自動設定(DHCPv6)を任意の組合わせで適用して、リンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定することができる。
【0081】
<DHCPサーバによるアドレス生成方法>
時刻データをインターフェイスID(64ビット)として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位24ビットを16進数のFF02:0:0:0:0:1:FF00::/104に付加したデータであることから、下位24ビットが異なるデータであれば一意なデータになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を24ビットデータ部分に割当てることが好ましい。2の24乗=16,777,216なので、24ビットデータは最大値16,777,215をとる。16MHz(=16,000,000)の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、DHCP要求メッセージを受け取りインターフェイスIDを生成する瞬間のDHCPサーバー201のクロックパルスのカウンター(1秒間隔で0リセットされる)の値をCとすると、Cを16,000,000で割った余り(余りを求める演算を剰余演算と呼ぶ)を2進数で表記した値を下位24ビットとする。インターフェイスIDを生成する瞬間の年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数をそれぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24×60×60=86400秒、86400<131071=2の17乗−1)で表現できるので、合計60(=10+4+5+17+24)ビットを使って表現した時刻データをインターフェイスIDの下位60ビットとすることができる。上位4ビットは全て0とする。このインターフェイスIDの構成を図10に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【0082】
以上の説明において、上位4ビットを全て0、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64形式等との整合性を考慮した値を(一部)割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられているが、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットだと定義されている。従って、60ビットを時刻データとした場合の上位4ビットは全て0とし7ビット目と8ビット目は前記定義に従う方法を採用することも可能である。
【0083】
なお、他にもインターフェイスIDの下位24ビットを生成する方法はある。最も単純な方法はDHCP要求メッセージを受け取った順に、0、1、2、3、とカウンターをインクリメントし、その値を割り振る方法である。カウンターは16,777,215までインクリメントされたら次は0に戻る。ただし、DHCPドメイン内のノードが全てDHCPサーバーからIPアドレスを割当てられるならばこの方法でもよいが、そうではない場合は重複の可能性が高くなるおそれがある。
【0084】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、IPv6に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0085】
以上説明したように、本実施形態によれば、数学的な相互関係の無いインターフェイスIDを生成できる。従って、MD5を用いる方式が数学的な相互関係に由来するプライバシ保護の程度の弱さを持っていたのと異なり、プライバシ保護の程度はより高い。また、MD5のような計算を行うのではなく、ノードが動作しているときは常に動作しているクロックパルスのカウンター値を読む、もしくは読み取った値を剰余演算する計算のみを必要とするので貧弱な計算能力しか持たない装置であっても負荷をほとんど無視できる。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく物理インターフェイスの制約を受けないインターフェイスIDを生成することが可能である。
【0086】
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0087】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【0088】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0089】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0090】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【発明の効果】
以上説明したように、本発明によれば、ノードに設定されるアドレスを、そのノードに固有の属性を使用せずに決定できる。そのため、設定されたアドレスからノードを特定することが困難であり、そのノードが送受信する情報に関するプライバシの保護が強化される。さらに、MACアドレスなどの、一般的にアドレス決定のために利用される属性を持たない機器についても、アドレス決定手順を適用できる。
【0091】
また、アドレス決定の手順が簡単であり、計算能力の低いノードであっても、ソフトウエアによりアドレス決定手順を実行させることができる。そのため、安価で保守性のよい通信制御装置及び方法を提供できる。
【0092】
また、アドレスを動的にノードに割り当てるサーバにおいてもこの簡単なアドレス決定手順を適用できる。
【図面の簡単な説明】
【図1】第1実施形態において、リンクローカルアドレスをインターフェイスに割当てる動作を説明するフローチャート。
【図2】IPv6ネットワークのローカルリンクの模式図。
【図3】ノードの構成例を示す図。
【図4】(a)イーサネット(登録商標)のMACアドレスの構成例を示す図、
(b)インターフェイスIDの構成例を示す図、
(c)仮リンクローカルアドレスの構成例を示す図、
(d)仮リンクローカルアドレスの要請ノードマルチキャストアドレスの例を示す図。
【図5】ノードが重複アドレス検出を終えるまでの動作を説明するフローチャート。
【図6】第1実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図7】(a)時刻を用いたインターフェイスIDの構成の一例(24ビット)を示す図、
(b)時刻を用いたインターフェイスIDの構成の一例(20ビット)を示す図。
【図8】第2実施形態においての一意なIPv6アドレスを割当てるDHCPサーバーの動作を説明するフローチャート。
【図9】第2実施形態におけるDHCPドメインの模式図。
【図10】第2実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図11】第2実施形態においてノードがDHCPでアドレスを取得するまでの動作フローチャート。
【符号の説明】
201 ルータ
202 ホスト
203 ホスト
204 ホスト
205 ホスト
206 ローカルリンク
207 外部へのリンク
300 ノード筐体
301 ネットワーク・インターフェイス
302 ネットワーク・インターフェイス
303 CPU
304 ROM
305 RAM
306 HD(ハードディスク)
307 電源
308 キーボード/マウスのインターフェイス
309 モニターのインターフェイス
310 バス
【発明の属する技術分野】
本発明は通信制御装置及び方法に関し、特にIPv6ネットワークに接続する津通信制御装置及び方法に関する。
【0002】
【従来の技術】
インターネットプロトコルバージョン6(以下、IPv6と呼ぶ。)の登場により、従来はネットワークに接続することが考えられなかった装置がネットワークに接続する場面が考えられている。例えば、インターネットに直接接続可能なエンドユーザ向けディジタルカメラなどである。
【0003】
IPv6に対応するパーソナル・コンピュータやワークステーションの場合、ネットワークとの接続のインターフェイスには通常はイーサネット(登録商標)が用いられ、それが持つIEEE識別子(MACアドレス)を元にしてIPv6アドレスが構成されるようになっている。IPv6アドレスには、後述するように、物理的なネットワークにおいて一意に定められるリンクローカルアドレスと、IPv4におけるプライベートアドレスに相当すると考えられるサイトローカルアドレスと、(集約可能)グローバルアドレスの3種類が存在する。それらの詳細や構成方法などのアドレス体系は、RFC2373”IP Version 6 Addresssing Architecture”, RFC2374”An IPv6 Aggregatabale Global Unicast Address Format”, RFC2375”IPv6 Multicast Address Assignment”, RFC2450”Proposed TLA and NLA Assignment Rule”, RFC2461”Neighbor Discovery for IP Version 6(IPv6)”,RFC2462”IPv6 Stateless Address Autoconfiguration”等に記述されているので、詳細についてはそちらを参照することとし以降では本発明に関連のある事柄についてのみ説明する。
【0004】
IPv6では、ネットワークプレフィクスにIEEE識別子(MACアドレス)から生成したインターフェース識別子をつなげてリンクローカルアドレスを生成するアドレス自動設定機能が提供される。
【0005】
アドレス自動設定の際、IEEE識別子(MACアドレス)のようにハードウェアに一対一に対応する情報を固定的に用いると、そのアドレスが装置もしくはその装置のユーザと一対一に対応する情報とみなされ、そのアドレスを使う通信をモニターされることによりプライバシが侵害される恐れが強い。この課題に対しては、RFC3041”Privacy Extensions for Stateless Address Autoconfiguration in IPv6”,において、具体的な解決方法がメモリを持つ場合と持たない場合について提案されている。装置がメモリを持つ場合では、IEEE識別子(MACアドレス)とMD5という関数を用いて128ビットのランダムな値を計算し、半分をアドレスとして用い、残り半分を次回の計算の入力用に記憶しておく。適当な時間が経過したら再度計算を行い、アドレスを更新する。
【0006】
装置がメモリを持たない場合、毎回ランダムな値を何らかの方法を用いて生成する。計算して生成したランダムな値が既に使われている場合には、それを検出して別のランダムな値を計算して生成し、ユニークなランダムな値を定めるプロトコル(の拡張)も記述されている。ランダムな値を生成する方法としては、RFC1750”Randomness Recommendations for Security”にいくつかの手法が開示されている。
【0007】
【発明が解決しようとする課題】
上述した、固定的な情報を用いたアドレス生成に起因する問題の解決方法において、メモリを持つ装置の場合、最初のMD5の計算に用いるIEEE識別子(MACアドレス)の値がわかれば、それ以降の計算で求められる値は全て一意に定まるので、プライバシの保護という観点から考えると必ずしも好ましくないという課題がある。さらに、毎回MD5の計算を行うので、貧弱な計算能力しか持たない装置の場合はMD5の計算量が負荷となりうる。
【0008】
また、メモリを持たない装置の場合、毎回ランダムな値を生成する方法を採用することが考えられるが、RFC1750にもあるように、暗号学的に好ましいランダムな値を生成する方法をソフトウェアのみで構成することは困難である。ハードウェアを利用する方法もいくつか示されているが、具体的な方法がはっきりしない。なおRFCとは、インターネットの技術開発組織であるIETFが公開している技術提案やコメントの文書であり、実質的な標準技術が番号を付して公開されている。
【0009】
このように、MACアドレスを用いてIPv6アドレスを生成する場合、必ずしも通信の秘密性を保持できず、また、計算負荷が高く、通信の効率を低下させるばかりでなく、計算能力の低い機器では採用できないという第1の問題があった。
【0010】
加えて、ディジタルカメラのような装置のインターフェイスには必ずしもイーサネット(登録商標)が使われるとは限らないという問題もある。
【0011】
インターネットの基本思想の一つにエンドトゥーエンドの透過性がある。これは、インターネット上の装置が通信するときに、送受信されるパケットが、通信経路上のルータやファイアウォール等によって変更されることなく装置に届けられる性質である。どのような接続形態であったとしても、エンドトゥーエンドの透過性が保たれていることが望ましく、そのためにはIPv6対応装置自身がIPv6アドレスを持つことが必要となる。
【0012】
ところが、イーサネット(登録商標)ではないインターフェースを持ち、そのためにMACアドレスを持たない機器については、IPv6アドレスを生成する方法が定められていない。
【0013】
例えば、無線通信規格のブルートゥースを利用してディジタルカメラが携帯電話と接続し、携帯電話は携帯電話網を経由してインターネットと接続することで結果的にディジタルカメラがインターネットと接続することも考えられる。また、今後の技術の発展により更に多様なインターフェースや接続形態が生まれてくることも予想される。
【0014】
ところが、上述したように、MACアドレスを持たない機器についてはIPv6アドレスを生成する方法が定められておらず、アドレス自動設定機能を利用することができなければ、IPv6の利点のひとつであるプラグアンドプレイを享受することができない。このように、MACアドレスを持たないIPv6装置(IPv6をサポートする装置のこと。以下同じ)がIPv6アドレスを構成するための一般的な方法が決まっていないという第2の課題もあった。
【0015】
これらはリンクローカルアドレスの生成時に限られず、サイトローカルアドレスやグローバルアドレスをホストに割り当てる場合にも同様に問題となる。
【0016】
サイトローカルアドレスあるいはグローバルアドレスをIPv6装置に割当てる方法の一つに、DHCPv6(動的ホスト構成プロトコルIPv6)がある。これは、IPv6装置がリンクローカルアドレスを確立したあとで、DHCPサーバーと通信してサイトローカルアドレスもしくはグローバルアドレスを割当ててもらうプロトコルである。
【0017】
DHCPサーバがサイトローカルアドレスやグローバルアドレスをホストに割り当てる場合には、DHCPサーバに予め設定されているサイトローカルアドレスもしくはグローバルアドレスのネットワークプレフィックスに、DHCP要求を発行したホストのインターフェース識別子を付加してそのホストにIPアドレスを割り当てる。このインターフェース識別子についても、上述したと同様、プライバシの保護に欠けることや、MACアドレスを持たない機器に対するアドレス割り当て方法が決まっていないという問題がある。
【0018】
本発明は上記従来例に鑑みてなされたもので、アドレスからユーザや端末の特定が困難な方法でアドレスを生成し、ユーザのプライバシを手厚く保護できる通信制御装置及び方法を提供することを目的とする。
【0019】
さらに、計算処理の負荷が小さな方法でアドレスを生成することができる通信制御装置及び方法を提供することを目的とする。
【0020】
さらに、物理インターフェースの制約を受けずにアドレスを生成できる通信制御装置及び方法を提供することを目的とする。
【0021】
【課題を解決するための手段】
上記目的を達成するために本発明は次のような構成を有する。
【0022】
単位ネットワークにおいて固有のアドレスを設定する通信制御装置であって、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手段とを有し、
前記確認手段により重複していないことが確認されるまで、前記サンプリング手段によるサンプリング及び前記生成手段によるアドレスの生成をし直す。
【0023】
更に好ましくは、前記通信制御装置は前記単位ネットワークに接続されたホストであり、生成されるアドレスは当該ホストのアドレスである。
【0024】
更に好ましくは、前記通信制御装置は、前記単位ネットワークに接続されたホストと該ホストに対して動的にアドレスを割り当てるサーバとを含み、前記サンプリング手段及び前記生成手段は前記サーバが有し、前記確認手段は前記サーバにより生成されたアドレスの割り当てを受けるホストが有する。
【0025】
また他の構成によれば次のような構成を有する。
【0026】
ネットワークに接続されたホストに対してアドレスを設定する通信制御装置であって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
生成したアドレスを前記ホストに送信する手段と
を備える。
【0027】
更に好ましくは、前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手段は、前記サンプリング手段によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定する。
【0028】
更に好ましくは、前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択される。
【0029】
更に好ましくは、前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択される。
【0030】
上記手段を有する装置は、電源が入れられたときあるいはリブートされたときの時刻情報とクロックパルスのカウンター値からインターフェイス識別子およびリンクローカルアドレスを生成し、そのインターフェイス識別子およびリンクローカルアドレスが前記装置が接続しようとしているリンクにおいて唯一か否か、すなわち同じインターフェイス識別子およびリンクローカルアドレスを使っている他の装置が存在するか否かを確認する。唯一でないならば、クロックパルスのカウンター値を再度読み取りインターフェイスIDおよびリンクローカルアドレスを生成し、確認する。以上の処理を必要なだけ繰り返し、唯一であることが確認されたならば、そのリンクローカルアドレスをインターフェイスに割当てる。時刻情報とクロックパルスのカウンター値はその装置に関する情報を一切含まないので、インターフェイス識別子やリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスから対応する装置もしくはそのユーザを特定される恐れはない。
【0031】
【発明の実施の形態】
[第1の実施形態]
本発明の実施形態の説明を行う前に、イーサネット(登録商標)をインターフェイスとして持つIPv6対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のRFC、特にRFC2462”IPv6 ステートレスアドレス自動設定(Stateless address autoconfiguration)”の内容を参照しながら説明する。
【0032】
<ローカルリンク構成例>
図2は、本発明が適用されるIPv6対応装置を含むローカルリンクを模式的に示したものである。リンクとは、それに接続された装置がそれを介して通信することができる設備もしくは媒体であり、IP層の下側に接する。リンクにはイーサネット(登録商標)の他に、PPPリンク、X.25、フレームリレー、ATMネットワーク等がある。リンクに接続されたIPv6対応装置をノードと呼ぶ。ノードの内部構成の典型例を図3に示す。ノードには、ルーターとホストがあり、ルーターは自分宛ではないパケットを転送するがホストは転送しない。図3からわかるように、ノードはCPU、ROM、RAM、HD(ハードディスク)、ネットワーク・インターフェイス等を有する計算機である。ルーターは複数のインターフェイスを持つのに対しホストは多くの場合は一つのインターフェイスを持つ。ノードによってはHDを持たないものもある。図2において、ルーター201がローカルリンク206と外部へのリンク207を接続し、ローカルリンクと外部の間のパケットの転送を担う。ローカルリンク206には、ホスト202、ホスト203、ホスト204、ホスト205が接続されている。ホスト及びルータは、ROMやRAM等のメモリに格納されたプログラムをCPUにより実行することで後述するフローチャートに示されたような手順を実現する。また、本実施形態の実現のためには、ホストは、クロックパルスを計数するカウンタを有する。クロックパルスは16MHzの整数倍であり、カウンタは24ビット以上の桁数を有することが望ましい。さらに、ホストは、実時間を計時する時計を有する。他のホスト及びルータも同様の構成を有する。
【0033】
イーサネット(登録商標)のIEEE識別子(MACアドレス)は、6バイト長のアドレスで、先頭の3バイトは製造ベンダーコードとしてIEEEによって管理・割当てがされている。残り3バイトは各ベンダーに管理が任されており、重複が起こらないように割当てがされる。図4(a)にイーサネット(登録商標)のMACアドレスの構成を示す。1区画は1バイト(8ビット)のデータを示し、左から3バイトが製造ベンダーコード、残り3バイトがベンダーが管理するコードとなっている。ベンダーが管理するコードはイーサネット(登録商標)・カード毎に異なるように振られるので、イーサネット(登録商標)・カード毎に世界で唯一のアドレスが対応し、イーサネット(登録商標)上でのデータの送受信の際のアドレスとして利用される。イーサネット(登録商標)を介して送られるデータは、送信元のアドレスと宛先のアドレスとデータを含むパケットとしてイーサネット(登録商標)上に送出される。他のノードが送出したデータとの衝突が検出された場合にはランダムな時間が経過したあと再送されるようになっている。送られたパケットはイーサネット(登録商標)に接続しているノード全てがアクセスできるので、各ノードはパケットの宛先アドレスを見てそれが自分宛の場合は受け取り、自分宛ではない場合は無視する。以上のような仕組みにより、リンク層のデータ通信が行えるようになっている。リンク層のデータ通信を基礎として、その上にインターネットプロトコル(IP)層が実装され、リンクの制約を受けない広域な通信が実現されている。
【0034】
<リンクローカルアドレスの設定手順>
次にIPv6のアドレス表記を説明する。IPv6のアドレスは128ビットであり、16進数4桁(16ビットを表す)をコロン’:’で区切った表記が使われる。例えば、FE80:0000:0000:0000:0000:0000:0000:0001である。アドレス中の0000は0と表してもよく、解釈の一意性が保たれるならば0の連続部分は省かれて::と表記される。前記アドレスは、FE80::0001あるいはFE80::1と同じアドレスである。アドレスの中の上位Xビットを示すとき、FE80::1/Xと表記する。FE80::1/32はFE80:0000と同じである。
【0035】
図2のノードが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートを図5に示す。この動作は重複アドレス検出(DAD:Duplicate Address Detection)と呼ばれる。以下では図5の流れに沿って処理内容を説明する。
【0036】
なお以下の処理内容(手順)は、装置もしくはプログラムとして実現され、その装置を有するノードが実行するもしくはそのプログラムがROMもしくはHDに格納されたノードが実行する。例えば、プログラムとして実現される場合は、そのプログラムをCPUが読み込み、必要に応じてRAMを計算のための空間として利用しながらバスを介してインターフェイスにアドレスを割当てる、というような動作を行う。このような動作は計算機としての一般的な動作なので、誤解される恐れのない範囲で詳細は省略し、ノードがインターフェイスをアドレスに割当てる、というように手順の本質を説明する。
【0037】
ステップS801でノードが電源を入れられたあるいはリブートされた直後にはインターフェイスにはアドレスがなにも割当てられていないので、まず次の処理がノードによって行われる。イーサネット(登録商標)のMACアドレス(図4(a)参照)を3バイトずつに分割し、中間に16進数の「FFFE」をはさみ、先頭から7ビット目を1にする。これを図4(b)に示す。図4(b)のC1’は、図4(a)のC1の先頭から7ビット目を1にしたものを表す。図4(b)の構成の64ビット・データをインターフェイスIDと呼ぶ。インターフェイスIDをリンクローカルアドレス用プレフィックスのFE80:0000:0000:0000に付加して作った128ビットのデータを仮リンクローカルアドレス(tentative link−local address)とする。以上がステップS802の処理である。図4(c)に仮リンクローカルアドレスの構成を示す。このアドレスはまだインターフェイスに割当てられない。
【0038】
次に、その仮リンクローカルアドレスがリンク上で一意かどうかを判断するために、ホストは以下の処理を行う。最初に、インターフェイスの初期設定をする。すなわち、インターフェイスに、リンクローカル・オールノードマルチキャストアドレス(FF02::1)と、その仮リンクローカルアドレスの要請ノードマルチキャストアドレス(solicited−node multicastaddress)を割当てる。つまり、そのインターフェイスがオールノードマルチキャストアドレス宛のパケットあるいはその仮リンクローカルアドレスの要請ノードマルチキャストアドレス宛のパケットを見つけたときは、それを自分のインターフェイス宛のパケットとして受け取る。前者(オールノードマルチキャストアドレス)を割当てることによって、既にその仮リンクローカルアドレスを使っている他のノードからのデータを受信することが可能になり、後者(その仮リンクローカルアドレスの要請ノードマルチキャストアドレス)を割当てることによって、同じ仮リンクローカルアドレスを同時に使おうとしている他のノードの存在を検出することが可能になる。ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスとは、RFC2461の91ページに定義されているように、仮リンクローカルアドレスの下位24ビットをプレフィックスFF02:0:0:0:0:1:FF00::/104に付加したデータであり、アドレススコープがリンクローカルのマルチキャストアドレスである。図4(c)と図4(d)にそれらの関係を示す。以上のアドレス割当てが図5のステップS803である。
【0039】
次に近隣要請メッセージ(Neighbor Solicitation message)を作る。近隣要請メッセージのターゲットアドレスには判断対象の仮リンクローカルアドレスを、送信元IPアドレスには未指定アドレス(128ビット全てが0)を、あて先IPアドレスには判断対象の仮リンクローカルアドレスの要請ノードマルチキャストアドレスを設定する。この近隣要請メッセージを一定の間隔(”RetransTimer”に規定されたミリセカンド間隔)で、一定の個数(”DupAddrDetectTransmits”に規定された個数)イーサネット(登録商標)に送出する。図5のステップS804がこの処理である。
【0040】
近隣要請メッセージを受け取ったノードは、その送信元アドレスが未指定アドレスならば、そのメッセージが重複アドレス検出を行っているノードからのデータであることがわかる。同時に複数のノードが同じアドレスを対象として重複アドレス検出をしている場合は、同じアドレスをターゲットアドレスに含む複数の近隣要請メッセージを受け取るので、重複していることがわかる。その場合にはどのノードもそのアドレスは使わない。受け取った近隣要請メッセージが自分が送ったもの(マルチキャストのパケットをループバックしているため)であるならば、他にそれを使っているあるいは使おうとしているノードが存在することを示さない。
【0041】
一方、近隣要請メッセージを受け取ったノードが、そのメッセージのターゲットアドレスに含まれるアドレスを既に使っていれば、マルチキャストの近隣通知メッセージ(Neighbor Advertisement message)を返す。従って、近隣要請メッセージを送ったノードがマルチキャスト近隣通知メッセージを受け取り、そのターゲットアドレスが、判断対象の仮リンクローカルアドレスである場合(図5のS805ステップの「はい」の場合)は、判断対象の仮リンクローカルアドレスが唯一ではない、すなわち、アドレスがリンク内において重複していると判断できる。
【0042】
一方、以上の重複アドレス検出の結果、判断対象の仮リンクローカルアドレスがリンク上で唯一であることが確認された(図5のS805ステップの「いいえ」の場合)ならば、そのアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。これが図5のステップS806である。以上で重複アドレス検出は終了する。以上に説明した図5の動作は図2のルーター201、ホスト202、ホスト203、ホスト204、ホスト205のそれぞれが実行することができる。
【0043】
<サイトローカルまたはグローバルアドレス設定手順>
図2のホスト、例えばホスト202は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報(ルーター通知メッセージ(Router Advertisement message)と呼ばれる)をルーター201から入手することを試みる。この動作を図6に示す。
【0044】
ルーター201は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク206に送っている。ホスト202がルーター通知メッセージを早く入手したい場合は、ホスト202はルータ要請メッセージ(Router Solicitation message)と呼ばれるデータをルーター201に送る。ホスト202は、リンクローカルアドレスを割当てた直後にはルーター201の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図6のステップS901はこの処理を示す。
【0045】
ルータ要請メッセージを受け取ったルーター201は、ネットワークプレフィックスを含むルーター通知メッセージを送り返す。図6のステップS902の「はい」の場合に示すように、ルーター通知メッセージを受け取ったホスト202は、そのメッセージの中のプレフィックスの有効性(既にその装置によって使われていないこと等)を確認し、そのプレフィックスにインターフェイスIDを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図6のステップS903がこの処理である。なお、図6のステップS902の「いいえ」の場合に示すように、ホスト202がルーター通知メッセージを受け取らなかった場合は異常終了する。この場合、ホスト202はステートフルアドレス自動設定(stateful address autoconfiguration)を行うべきとされている。なお、ステートレスアドレス自動設定とは、ルータがホストに割り当てるアドレスや割り当ての状態を管理せず、ホストがネットワークのプレフィクスとインターフェース識別子とからIPアドレスを生成する方式をいう。それに対してステートフルアドレス自動設定とは、割り当てるべきIPアドレスや割り当て状況をDHCPサーバが管理し、ホストには、DHCPサーバの管理するIPアドレスの中から未使用のものが割り当てられたり、あるいは予めホストに対して登録されているIPアドレスが与えられる方式をいう。
【0046】
以上のようにして、イーサネット(登録商標)をインターフェイスとして持つホスト202はリンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定する。
【0047】
<本実施形態に係るアドレス設定手順>
次に、本発明を説明する。基本的な処理は上記と同じであるが、インターフェイスIDの生成方法が異なる。基本となる考えは、時刻データをインターフェイスIDにすることである。前述のRFC3041等に記載されているように、インターフェイスIDとして、ランダムな64ビット値を用いることも可能とされている。どのノードでも生成が可能で、かつインターフェイスIDを与えられたときそれをどのノードが生成したかはわからず、かつ生成が容易な方法として時刻データは非常に適当だと考えられる。
【0048】
時刻データをインターフェイスID(64ビット)として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位24ビットを16進数のFF02:0:0:0:0:1:FF00::/104に付加したデータであることから、下位24ビットがリンク内で一意であれば一意なリンクローカルアドレスになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を24ビットデータ部分に割当てることが好ましい。2の24乗=16,777,216なので、24ビットデータの最大値は16,777,215となる。
【0049】
そこで16MHz(=16,000,000Hz)の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、インターフェイスIDを生成する瞬間のクロックパルスのカウンター(1秒間隔で0リセットされる)の値をCとすると、Cを16,000,000で割った余り(余りを求める演算を剰余演算と呼ぶ)を2進数で表記した値を下位24ビットとする。この剰余値は、0〜16,000,000−1を範囲としているために、16MHzの倍数のクロックパルスを1秒間隔でリセットすればどの値も等確率で生じる。
【0050】
またインターフェイスIDを生成する瞬間の年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数は、それぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24×60×60=86400秒、86400<131071=2の17乗−1)で表現できる。そこで、この時刻情報36ビットとカウンタの剰余演算値24ビットの合計60(=10+4+5+17+24)ビットを使って表現した時刻データをインターフェイスIDの下位60ビットとすることができる。上位4ビットは全て0とする。このインターフェイスIDの構成を図7(a)に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【0051】
このようにカウンタ及び時刻情報を元にして仮リンクローカルアドレスを生成する。生成したインターフェース識別子(インターフェースID)の下位24ビットはそれぞれのホストにおいて非同期に動作するクロックパルスのカウンタ値を基にしていることから、それらが一致する確率は十分低いものと期待できる。
【0052】
生成したアドレスの重複が検出された場合には、異なる剰余演算結果を生成して重複の確認を行うが、その手順として以下の二つがある。
【0053】
一般には二つ以上のノードが電源を入れられあるいはリブートされインターフェイスIDを生成する瞬間が全く同じとなり、上述の剰余演算結果が同じ値を持つ可能性は低いと考えられるが、停電があった後に多くのノードが一斉に立ち上がる、あるいはオフィスの開始時刻のような状況では、同じ値を持つ可能性も無視できない。一方、そのような場合は重複アドレス検出がほぼ同時に行われることで混雑が起こりうるので、それを回避するためにRFC2462のページ15にランダムな遅延時間を生成するための定数”MAX_RTR_SOLICITATION_DELAY”(=1秒)が定義されている。この定数を用いて0以上”MAX_RTR_SOLICITATION_DELAY”未満のランダムな時間を生成し、その時間だけ待ってからルータ要請メッセージを送ることとされている。このランダムな時間を借用し、値が重複した場合にもう一度クロックパルスのカウンター値を読み取るまでの遅延時間としてそのランダムな時間を利用するという手順が第1の手順である。
【0054】
二つ目の手順は、次のようなアルゴリズムである。複数のノードが同じ剰余演算結果を取り、重複が検出されたとする。このとき、それらのノードは、0単位時間あるいは1単位時間のいずれかだけ待ち、待った後の瞬間のクロックパルスのカウンター値を読み取り剰余演算を行い、再び重複アドレス検出を行う。この2度目の重複アドレス検出でも重複が検出されたときは0,1,2,3単位時間のいずれかをランダムに選び、その時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。n回目の重複が検出された場合は0と2n−1の間のランダムな単位時間だけ待ち、待った後の瞬間のカウンター値を読み取って剰余演算を行い、再び重複アドレス検出を行う。このアルゴリズムはイーサネット(登録商標)においてデータ衝突時に使われているバイナリエクスポネンシャルバックオフと呼ばれる定評のあるアルゴリズムなので、重複回避効果の高さは実証済みである。
【0055】
以上の説明において、上位4ビットを全て0、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64フォーマット等との整合性を考慮した値を(一部)割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられている。それによると、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットと定義されている。従って、60ビットを時刻データとした場合の上位4ビットを全て0とし、7ビット目と8ビット目として前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスIDを生成するノードの全てが同じ値を使うように取り決めれば、上位4ビットにどのような値を割当てても構わない。
【0056】
以上に説明した本発明の第1の実施形態の動作フローチャートを図1に示す。ステップS101でホストは電源オンあるいはリブートされる。ステップS102でクロックパルスのカウンターを読み取って剰余演算した値と時刻データからインターフェイスIDを生成する。ステップS103でインターフェイスの初期設定を行い、他のノードからのデータを受け取れるようにする。ステップS104で、インターフェイスIDから仮リンクローカルアドレスを生成する。ステップS105で、近隣要請メッセージを前述のように生成し、リンクに送出する。
【0057】
ステップS106で近隣通知メッセージを受信した場合は、ランダムな遅延を行った後に、再度クロックパルスのカウンターを読み取ってその値について剰余演算し、また再度時刻データを読み取る。そして、剰余演算した値と時刻データとからインターフェイスIDを再び生成する。そしてステップS103に戻る。ステップS106で近隣通知メッセージを受信しなかった場合は、ステップS108でその仮リンクローカルアドレスをリンクローカルアドレスとしてインターフェイスに割当てる。
【0058】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは通常のコンピュータが有するもので十分であり、IPv6に対応している計算機であれば新たに設ける必要がない。またソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0059】
[第1の実施形態の変形例]
上述した第1の実施形態のように、クロックパルスのカウンタ16,000,000で割った余りを下位24ビットとするとき、ノードが16MHzの倍数のクロックを持っていない場合は重複する可能性が高くなる、あるいはそのノードが取りうる値に偏りを生じ易くなる。しかし、固有な値のアドレスを生成することおよびアドレスとノードとの対応関係がわからないことを実現するうえでは、この偏りが大きな問題とならないようにできる。例えば、現在のCPUの技術では1MHzの整数倍のクロックで動作するものがほとんどであるので、以下のような理由から1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことにしても構わないことがわかる。
【0060】
余りを取るときの定数を法と呼ぶ。法で割った余りの値が、「0」と「法マイナス1」の間をランダムに分布することが所期の効果(重複の可能性を低くすること、ノードによって取りうる値に偏りを生じることがないこと)を得るための前提である。あるリンクに接続されるノードの総数が最大kで、各ノードがランダムサンプリングした値が最大値(k/1.18)2のとき、k個のノードの中に重複が現れる確率は1/2になる(岡本栄司、暗号理論入門、共立出版株式会社、24ページ参照)。k=100の場合、最大値7,182のランダムサンプリングであれば重複が現れる可能性は約1/2になるので、重複が起こったときは0と7,182の間の値をランダムに選んで重複アドレス検出を再度行うことにする。この処理をn回繰り返せば、(1/2)nの確率で重複を避けることが可能と見積もれる。1MHzの整数倍のクロックで動作するCPUを持つノードが高々100個存在するリンクの場合、1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことで、最初の読み取りにおいて重複する可能性を1/2以下にできる。k=1,000の場合でも、最大値718,184のランダムサンプリングで最初における重複の可能性を1/2以下にできるので、1,000,000で割った余りを取る(あるいはクロックパルスのカウンターの周期を1,000,000とする)ことで充分である。
【0061】
一般には、ノードが複数存在するとき、それぞれのクロックの最大公約数を法とすることができる。各ノードが読み取ったクロックパルスのカウンター値を前記の法で割った余りをインターフェイスIDの下位24ビットに使うことにすれば、重複の可能性は最も小さくなりかつノードによって取りうる値に偏りを生じることがないと期待される。現在の技術では1MHzの整数倍のクロックパルス周波数で動作するCPUがほとんどであるので、1,000,000<220を法としてランダムサンプリングと剰余演算をした値(あるいはクロックパルスのカウンターの周期を1,000,000としたときのある時点のカウンター値)をインターフェイスIDの下位20ビットに割当てるのが現実的な実現方法と言える。インターフェイスIDを生成するときの年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数をそれぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24x60x60=86400秒、86400<131071=2の17乗−1)で表現できるので、合計56(=10+4+5+17+20)ビットを使って表現した時刻データをインターフェイスIDの下位56ビットとすることができる。上位8ビットは全て0とする。このインターフェイスIDの構成を図7(b)に示す。
【0062】
以上の説明において、上位8ビットを全て0としたが、上位ビットを全て0にしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64形式等との整合性を考慮した値を割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられているが、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットだと定義されている。従って、56ビットを時刻データとした場合の上位8ビットには、上位6ビットは全て0とし、7ビット目と8ビット目は前記定義に従う方法を採用することも可能である。本発明に従ってインターフェイスIDを生成するノードの全てが同じ値を使うように取り決めれば、上位8ビットにどのような値を割当てても構わない。
【0063】
以上に説明した第1の実施形態の変形例における動作フローチャートは第1の実施形態と同じく図1に示したものである。ただし、本実施形態ではインターフェース識別子の下位20ビットをカウンタ値の剰余により得る点で、下位24ビットをカウンタ値の剰余から得ている第1実施形態と異なる。
【0064】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、IPv6に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0065】
しかも、異なるクロック周波数を持つノードが混在していても、各ノードが生成するインターフェイスIDにはそのノードの固有性が現れないので、プライバシー保護の程度を低める恐れもない。
【0066】
さらに、イーサネット(登録商標)以外のインターフェイスを持つIPv6装置であっても採用できるので汎用性が高い。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく、物理インターフェイスの制約を受けないインターフェイスIDを生成することが可能である。
【0067】
[第2の実施形態]
本実施形態の説明を行う前に、イーサネット(登録商標)をインターフェイスとして持つIPv6対応装置、正確にはホストが、リンクローカルアドレス等を自動設定する処理の概要を、前述のRFC、特にRFC2462”IPv6ステートレスアドレス自動設定(Stateless address autoconfiguration)”の内容を参照しながら説明する。
【0068】
図9は、本発明が適用されるDHCPドメインを模式的に示したものである。図9において、DHCPリレー1202はリンク1208とリンク1207の間でDHCPに関するデータの転送を行う。リンク1207には、ルーター1203、ホスト1204、ホスト1205、ホスト1206が接続され、リンク1208にはDHCPサーバー1201が接続されている。
【0069】
図9のノード、正確にはホストが、電源を入れられたあるいはリブートされた場合に行う動作のフローチャートは図5に示したように、第1実施形態と同様である。
【0070】
<アドレス割り当て手順>
図9のホスト、例えばホスト1204は、リンクローカルアドレスを割当てたら、次はサイトローカルアドレスとグローバルアドレスを決定するために必要な情報(ルーター通知メッセージと呼ばれる)を入手することを試みる。リンクローカルアドレスの設定手順は、第1実施形態において図1または図5を参照して説明した手順でよい。
【0071】
ホストがサイトローカルアドレスとグローバルアドレスを決定するための動作を図10に示す。ルーター1203は管理者によって必要な設定が行われ、ルーター通知メッセージを定期的にリンク1206に送っている。ホスト1204がルーター通知メッセージを早く入手したい場合は、ホスト1204はルータ要請メッセージと呼ばれるデータをルーター1203に送る。ホスト1204はリンクローカルアドレスを割当てた直後にはルーター1203の存在はわからないので、実際にはルータ要請メッセージはリンク上のルーター全てに対するマルチキャストとして送られる。図10のステップS1901はこの処理を示す
。ルータ要請メッセージを受け取ったルーター1203はルーター通知メッセージを送る。図10のステップS1902の「はい」の場合に示すように、ステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取ったホスト1204は、そのメッセージの中のプレフィックスの有効性(既にその装置によって使われていないこと等)を確認し、それ(ら)にインターフェイスIDを付加して作ったアドレスを、サイトローカルアドレスあるいはグローバルアドレスとし、インターフェイスに割当てる。図10のステップS1903がこの処理である。
【0072】
次に、図10のステップS1902の「いいえ」の場合に示すように、ホスト1204がステートレスアドレス自動設定のみを指定するルーター通知メッセージを受け取らなかった場合は、次の二つの場合に分けられる。すなわち、ステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合(ステップS1904のはいの場合)と、ルーター通知メッセージを何も受け取らなかった場合(ステップS1904のいいえの場合)である。後者の場合はステートフルアドレス自動設定、すなわちDHCPv6のみを実行する。これがステップS1906であり、その詳細を図11に示す。
【0073】
<DHCPサーバによるアドレス割り当て手順>
DHCPサーバー1201は管理者によって必要な設定が行われている。具体的には、ノードとして自分のリンクローカルアドレスをインターフェイスに割当ててあり、DHCPサーバとして振る舞うために必要なサイトローカルアドレスもしくはグローバルアドレスのためのプレフィックス等が設定されている。図11のステップS11001で、ホスト1204はDHCPサーバーにDHCP要請メッセージ(DHCP solicit message)を送る。ホスト1204はどこにDHCPサーバーが存在するのかわからないのでDHCPサーバーに対するマルチキャストとしてリンク1207に送出する。図9ではホスト204の接続されているリンク1207とは異なるリンク1208にDHCPサーバー1201がいるので、DHCP要請メッセージは実際はDHCPリレー1202によって中継されてDHCPサーバー1201に届く。
【0074】
DHCP要請メッセージを受け取ったDHCPサーバー1201はそれに対する返答としてDHCP通知メッセージ(DHCP advertise message)をホスト1204に返す。これはDHCPリレー1202によって中継されてホスト1204に届く。これがステップS11002である。この時点でホスト1204はDHCPサーバー1201のアドレスがわかる。次にステップS11003でホスト1204はDHCP要求メッセージ(DHCP request message)をDHCPサーバー1201に送る。
【0075】
このDHCP要求メッセージを受け取ったDHCPサーバー1201の動作を図8のフローチャートを参照して説明する。図8のステップS1101でDHCP要求メッセージを受け取る。ステップS1102で自分のクロックパルスのカウンターを剰余演算した値と時刻からインターフェイスID(64ビット)を生成する。具体的な方法は後述する。そのインターフェイスIDと、サイトローカルアドレスもしくはグローバルアドレスのプレフィックスとを組み合わせて、ステップS1103でサイトローカルアドレスもしくはグローバルアドレスを生成する。その生成したIPv6アドレスを含むDHCP確認メッセージ(DHCPconfirm message)をステップS1104でホスト1204に送る。これは図11のステップS11004に対応する。
【0076】
図11のステップS11004でDHCPサーバー1201からDHCP確認メッセージを受け取ったホスト1204は、それからサイトローカルアドレスもしくはグローバルアドレスがわかるので、そのアドレスの中のインターフェイスIDが重複しているか否かを確認するために、重複アドレス検出処理に必要な処理を行う。つまり、インターフェイスに第1実施形態で説明したマルチキャストアドレス等を設定する。これがステップS11005である。次に、ステップS11006で近隣要請メッセージを送り、近隣通知メッセージを受け取るかどうかをステップS11007で判断する。受け取った場合はそのアドレスが重複しているので、別のアドレスをDHCPサーバー1201から受け取るためにステップS11003に戻り、同じ処理を繰り返す。
【0077】
同じ処理を繰り返す場合、DHCPサーバー1201は図8のステップS1105でDHCP要求メッセージを受け取るので、ステップS1102に戻り、別のアドレスを生成し、DHCP確認メッセージをホスト1204に送る。DHCP要求メッセージを同じホスト1204から繰り返し受け取らなかった場合は、DHCPサーバー1201の処理は終了する。
【0078】
ホスト1204は、図11のステップS11007で近隣通知メッセージを受け取らなかった場合はそのアドレスは重複していないので、ステップS11008でそのアドレスをインターフェイスに割当てる。
【0079】
以上で図10のステップS1906が終わる。ステップS1904でルーター通知メッセージを何も受け取らなかった場合はこれで正常終了する。ステップS1902でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を指定するルーター通知メッセージを受け取った場合は、ステップS1905でステートレスアドレス自動設定とステートフルアドレス自動設定の両方を行う。処理内容はステップS1903およびS1906の両方を行うというものである。
【0080】
以上のようにして、イーサネット(登録商標)をインターフェイスとして持つホスト1204はステートレスアドレス自動設定とステートフルアドレス自動設定(DHCPv6)を任意の組合わせで適用して、リンクローカルアドレス、サイトローカルアドレス、グローバルアドレスを自動設定することができる。
【0081】
<DHCPサーバによるアドレス生成方法>
時刻データをインターフェイスID(64ビット)として生成する具体的な一方法を述べる。上述の重複アドレス検出において、ある仮リンクローカルアドレスの要請ノードマルチキャストアドレスが仮リンクローカルアドレスの下位24ビットを16進数のFF02:0:0:0:0:1:FF00::/104に付加したデータであることから、下位24ビットが異なるデータであれば一意なデータになることがわかる。時刻データの中でもノードによって異なる可能性が高い部分を24ビットデータ部分に割当てることが好ましい。2の24乗=16,777,216なので、24ビットデータは最大値16,777,215をとる。16MHz(=16,000,000)の倍数のクロックパルス周波数を持っていれば、ノード毎に異なる可能性の高い時刻データをそのクロックパルスから生成できる。具体的には、DHCP要求メッセージを受け取りインターフェイスIDを生成する瞬間のDHCPサーバー201のクロックパルスのカウンター(1秒間隔で0リセットされる)の値をCとすると、Cを16,000,000で割った余り(余りを求める演算を剰余演算と呼ぶ)を2進数で表記した値を下位24ビットとする。インターフェイスIDを生成する瞬間の年(西暦2000年を0とする)、月、日、午前0時0分0秒からの経過秒数をそれぞれ10ビット(2000年から3023年まで対応)、4ビット、5ビット、17ビット(24時間=24×60×60=86400秒、86400<131071=2の17乗−1)で表現できるので、合計60(=10+4+5+17+24)ビットを使って表現した時刻データをインターフェイスIDの下位60ビットとすることができる。上位4ビットは全て0とする。このインターフェイスIDの構成を図10に示す。なお、時計は世界標準時に合わせておくことが望ましい。
【0082】
以上の説明において、上位4ビットを全て0、残りを時刻データにすると説明したが、そうしなければ本発明の目的が達成されないというわけではない。イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64形式等との整合性を考慮した値を(一部)割当てることも可能である。RFC2373(の2.5.1のインターフェース識別子と付録A)に、イーサネット(登録商標)のMACアドレスあるいはIEEE EUI−64 IDからインターフェイスIDを生成する方法が述べられているが、上位7ビット目はユニバーサルビット(1がグローバルスコープを、0がローカルスコープを意味する)、上位8ビット目は個別/グループビットだと定義されている。従って、60ビットを時刻データとした場合の上位4ビットは全て0とし7ビット目と8ビット目は前記定義に従う方法を採用することも可能である。
【0083】
なお、他にもインターフェイスIDの下位24ビットを生成する方法はある。最も単純な方法はDHCP要求メッセージを受け取った順に、0、1、2、3、とカウンターをインクリメントし、その値を割り振る方法である。カウンターは16,777,215までインクリメントされたら次は0に戻る。ただし、DHCPドメイン内のノードが全てDHCPサーバーからIPアドレスを割当てられるならばこの方法でもよいが、そうではない場合は重複の可能性が高くなるおそれがある。
【0084】
以上のようにインターフェイスIDを生成することにより、同じノードのアドレスであってもお互いの関連付けが困難なアドレスが生成できる。つまり、プライバシー保護の程度を高くできる。しかも、その生成に必要なハードウェアは、IPv6に対応している計算機であれば新たに設ける必要がなく、ソフトウェアでの実現方法も簡単であり、生成のための計算は軽いのでコストもかからず実装も容易である。
【0085】
以上説明したように、本実施形態によれば、数学的な相互関係の無いインターフェイスIDを生成できる。従って、MD5を用いる方式が数学的な相互関係に由来するプライバシ保護の程度の弱さを持っていたのと異なり、プライバシ保護の程度はより高い。また、MD5のような計算を行うのではなく、ノードが動作しているときは常に動作しているクロックパルスのカウンター値を読む、もしくは読み取った値を剰余演算する計算のみを必要とするので貧弱な計算能力しか持たない装置であっても負荷をほとんど無視できる。従って、プライバシ保護の程度が高く、低コストで実現可能で、実行時の負荷が小さく物理インターフェイスの制約を受けないインターフェイスIDを生成することが可能である。
【0086】
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0087】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【0088】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0089】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0090】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【発明の効果】
以上説明したように、本発明によれば、ノードに設定されるアドレスを、そのノードに固有の属性を使用せずに決定できる。そのため、設定されたアドレスからノードを特定することが困難であり、そのノードが送受信する情報に関するプライバシの保護が強化される。さらに、MACアドレスなどの、一般的にアドレス決定のために利用される属性を持たない機器についても、アドレス決定手順を適用できる。
【0091】
また、アドレス決定の手順が簡単であり、計算能力の低いノードであっても、ソフトウエアによりアドレス決定手順を実行させることができる。そのため、安価で保守性のよい通信制御装置及び方法を提供できる。
【0092】
また、アドレスを動的にノードに割り当てるサーバにおいてもこの簡単なアドレス決定手順を適用できる。
【図面の簡単な説明】
【図1】第1実施形態において、リンクローカルアドレスをインターフェイスに割当てる動作を説明するフローチャート。
【図2】IPv6ネットワークのローカルリンクの模式図。
【図3】ノードの構成例を示す図。
【図4】(a)イーサネット(登録商標)のMACアドレスの構成例を示す図、
(b)インターフェイスIDの構成例を示す図、
(c)仮リンクローカルアドレスの構成例を示す図、
(d)仮リンクローカルアドレスの要請ノードマルチキャストアドレスの例を示す図。
【図5】ノードが重複アドレス検出を終えるまでの動作を説明するフローチャート。
【図6】第1実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図7】(a)時刻を用いたインターフェイスIDの構成の一例(24ビット)を示す図、
(b)時刻を用いたインターフェイスIDの構成の一例(20ビット)を示す図。
【図8】第2実施形態においての一意なIPv6アドレスを割当てるDHCPサーバーの動作を説明するフローチャート。
【図9】第2実施形態におけるDHCPドメインの模式図。
【図10】第2実施形態においてホストがアドレス自動設定を終えるまでの動作を説明するフローチャート。
【図11】第2実施形態においてノードがDHCPでアドレスを取得するまでの動作フローチャート。
【符号の説明】
201 ルータ
202 ホスト
203 ホスト
204 ホスト
205 ホスト
206 ローカルリンク
207 外部へのリンク
300 ノード筐体
301 ネットワーク・インターフェイス
302 ネットワーク・インターフェイス
303 CPU
304 ROM
305 RAM
306 HD(ハードディスク)
307 電源
308 キーボード/マウスのインターフェイス
309 モニターのインターフェイス
310 バス
Claims (15)
- 単位ネットワークにおいて固有のアドレスを設定する通信制御装置であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手段とを有し、
前記確認手段により重複していないことが確認されるまで、前記サンプリング手段によるサンプリング及び前記生成手段によるアドレスの生成をし直すことを特徴とする通信制御装置。 - 前記通信制御装置は前記単位ネットワークに接続されたホストであり、生成されるアドレスは当該ホストのアドレスであることを特徴とする請求項1に記載の通信制御装置。
- 前記通信制御装置は、前記単位ネットワークに接続されたホストと該ホストに対して動的にアドレスを割り当てるサーバとを含み、前記サンプリング手段及び前記生成手段は前記サーバが有し、前記確認手段は前記サーバにより生成されたアドレスの割り当てを受けるホストが有することを特徴とする請求項1に記載の通信制御装置。
- ネットワークに接続されたホストに対してアドレスを設定する通信制御装置であって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と、
生成したアドレスを前記ホストに送信する手段と
を備えることを特徴とする通信制御装置。 - 前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手段は、前記サンプリング手段によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定することを特徴とする請求項1乃至4のいずれか1項に記載の通信制御装置。
- 前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択されることを特徴とする請求項1乃至5のいずれか1項に記載の通信制御装置。
- 前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択されることを特徴とする請求項1乃至6のいずれか1項に記載の通信制御装置。
- 単位ネットワークにおいて固有のアドレスを設定する通信制御方法であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手順と、
前記確認手順により重複していないことが確認されるまで、前記サンプリング手順及び前記生成手順を繰り返す手順と
を有することを特徴とする通信制御方法。 - 前記アドレスは、前記単位ネットワークごとに共通なプレフィックス部とネットワークに接続された装置ごとに固有のインターフェース識別子とを含み、前記確認手順は、前記サンプリング手順によりサンプリングされた時刻データ及びクロックパルスにより、前記インターフェース識別子を設定することを特徴とする請求項8に記載の通信制御方法。
- 前記カウンタは、各カウンタ値の出現確率が等しくなるようにその周期が選択されることを特徴とする請求項8または9に記載の通信制御方法。
- 前記カウンタは、前記単位ネットワークに接続された他のいずれかの装置においてサンプリングされたカウンタ値と重複する率が一定値以下となるように、その周期が選択されることを特徴とする請求項8乃至10のいずれか1項に記載の通信制御方法。
- コンピュータにより、単位ネットワークにおいて固有のアドレスを設定するためのプログラムであって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
該アドレスが前記単位ネットワークに接続された他の装置のアドレスと重複しているか否かを確認する確認手順と、
前記確認手順により重複していないことが確認されるまで、前記サンプリング手順及び前記生成手順を繰り返す手順と
をコンピュータにより実行させるためのプログラム。 - コンピュータにより、単位ネットワークにおいて固有のアドレスを設定するためのプログラムであって、
ホストからの要求に応じて、時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手順と、
前記サンプリング手順によりサンプリングされた値に基づいてアドレスを生成する生成手順と、
生成したアドレスを前記ホストに送信する手順と
をコンピュータにより実行させるためのプログラム。 - 請求項12または13に記載のプログラムを記録したことを特徴とするコンピュータ可読記録媒体。
- アドレスを生成する情報処理装置であって、
時刻データとクロックパルスのカウンタとをサンプリングするサンプリング手段と、
前記サンプリング手段によりサンプリングされた値に基づいてアドレスを生成する生成手段と
を有することを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002211121A JP2004056477A (ja) | 2002-07-19 | 2002-07-19 | 通信制御装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002211121A JP2004056477A (ja) | 2002-07-19 | 2002-07-19 | 通信制御装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004056477A true JP2004056477A (ja) | 2004-02-19 |
Family
ID=31934447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002211121A Withdrawn JP2004056477A (ja) | 2002-07-19 | 2002-07-19 | 通信制御装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004056477A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1701517A3 (en) * | 2005-03-08 | 2006-09-20 | Ricoh Company, Ltd. | System, method and recording medium for autoconfiguration of an IPv6 address avoiding duplicate addresses |
WO2012014928A1 (ja) * | 2010-07-27 | 2012-02-02 | パナソニック株式会社 | ユーザ認証システム、認証装置及びプログラム |
-
2002
- 2002-07-19 JP JP2002211121A patent/JP2004056477A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1701517A3 (en) * | 2005-03-08 | 2006-09-20 | Ricoh Company, Ltd. | System, method and recording medium for autoconfiguration of an IPv6 address avoiding duplicate addresses |
JP2006253811A (ja) * | 2005-03-08 | 2006-09-21 | Ricoh Co Ltd | 電子機器、ipアドレス決定方法、ipアドレス決定プログラム、ipアドレス決定プログラムを記録した記録媒体 |
WO2012014928A1 (ja) * | 2010-07-27 | 2012-02-02 | パナソニック株式会社 | ユーザ認証システム、認証装置及びプログラム |
JP2012027844A (ja) * | 2010-07-27 | 2012-02-09 | Panasonic Electric Works Co Ltd | ユーザ認証システム、認証装置及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100728040B1 (ko) | IPv6 유니크 로컬 주소 생성 방법 및 장치 | |
Cheshire et al. | Dynamic configuration of IPv4 link-local addresses | |
Cheshire et al. | Multicast dns | |
US8045558B2 (en) | Extensions to IPv6 neighbor discovery protocol for automated prefix delegation | |
US8028035B2 (en) | Shared resource support for internet protocols | |
US6965929B2 (en) | Configuring a network device | |
EP3675466B1 (en) | Duplicate address detection for range of link local ip addresses | |
KR20040065643A (ko) | IPv6 프로토콜을 위한 IP 주소 및 도메인명자동등록 방법 | |
WO2005013038A2 (en) | Automatic configuration of an address allocation mechanism in a computer network | |
CN108769290B (zh) | 一种IPv6多地址生成与重复地址检测方法 | |
Cheshire et al. | Rfc 6762: Multicast dns | |
US8438390B2 (en) | Method and system for using neighbor discovery unspecified solicitation to obtain link local address | |
JP2004040804A (ja) | 重複アドレスノードに仮想アドレスを自動で割り当てる装置及び方法 | |
JP4054719B2 (ja) | 特定アドレス使用制限装置 | |
JP2004260463A (ja) | ルータ装置、通信装置、ネットワークアドレス管理システム、ネットワークアドレス管理方法及びネットワークアドレス管理プログラム | |
WO2013186969A1 (ja) | 通信情報検出装置及び通信情報検出方法 | |
Cheshire et al. | RFC 3927: Dynamic configuration of IPv4 link-local addresses | |
JP6497010B2 (ja) | ネットワーク機器 | |
JP2004364109A (ja) | テンポラリアドレス通信装置、プログラム、記録媒体、および方法 | |
CN102761425B (zh) | 计费方法及装置 | |
US20170222970A1 (en) | Ipv6 address assignment method and apparatus | |
KR101213159B1 (ko) | 무선 네트워크에서 ip 어드레스를 할당하기 위한 휴대단말기 및 방법 | |
KR100880884B1 (ko) | Ip 중복 주소 검출 방법 및 장치 | |
US20060056313A1 (en) | Method for automatic network integration of a network | |
KR100582181B1 (ko) | 다수 개의 아이피 주소를 사용하는 통신 시스템 및 통신방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20051004 |