(57)【要約】プライバシーＩＰアドレスを生成する方法は、第１のプライバシーアドレスを予め生成し、第１のプライバシーアドレスがアプリケーションに割り当てられたとき、第２のプライバシーアドレスを生成することを含む。アドレスはアプリケーションで共有されても、単一のアプリケーションに一意であってもよい。デプリケーションタイマは割り当てられたプライバシーアドレスにアプリケーションがバインドするとき、プライバシーアドレスが生成されるときに開始される。トラヒックフローの中断を最小限にすべく、デプリケートされたアドレスは、アドレスが使用中である間は削除されない。プライバシーアドレスを予め生成することで、新たなアドレスがシステムで重複しないことを確認することで被る遅延無しに、アドレスをアプリケーションに迅速に割り当てられる。該方法は、モバイルハンドセット装置を含む、プライバシーアドレスを用いる任意の装置に関与させることができる。
2010504720.tif 000002
【特許請求の範囲】
【請求項１】
プライバシーアドレスをアプリケーションに割り当てる方法であって、
第１のプライバシーアドレスをメモリから呼び出し、
前記第１のプライバシーアドレスを前記アプリケーションに割り当て、
第２のプライバシーアドレスを直ちに生成し、
前記第２のプライバシーアドレスをメモリに格納する
ことを含む、方法。
【請求項２】
前記アプリケーションが一意なアドレスを要求しているか判定し、
前記アプリケーションが一意なアドレスを要求している場合、前記第１のプライバシーアドレスを前記アプリケーションのみに割り当てる
ことを更に含む、請求項１記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項３】
前記アプリケーションが共有アドレスを要求しているか判定し、
前記アプリケーションが共有アドレスを要求している場合、共有アドレスを要求している他のアプリケーションへの割り当てのために前記第１のプライバシーアドレスをメモリに保持している間に、前記第１のプライバシーアドレスを前記アプリケーションに割り当て、
前記要求しているアプリケーションが前記第１のプライバシーアドレスをバインドするとき、デプリケーションタイマを開始する
ことを更に含む、請求項１記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項４】
前記第１のプライバシーアドレスは、前記アプリケーションによるアドレスへの要求の受信に先立って生成される、請求項１記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項５】
前記第２のプライバシーアドレスに重複アドレス判定を行うこと
を更に含む、請求項１記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項６】
前記アプリケーションが前記第１のプライバシーアドレスをアンバインドするとき、前記第１のプライバシーアドレスを削除する
ことを更に含む、請求項２記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項７】
前記第１のプライバシーアドレスにバインドされたアプリケーションの数を示す前記第１のプライバシーアドレスの参照カウントを保持し、
（１）前記デプリケーションタイマが終了したとき、及び（２）前記参照カウントがゼロに等しくなったとき、前記前記第１のプライバシーアドレスを削除する
ことを更に含む、請求項３記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項８】
前記アプリケーションが、予め設定された期間内に前記第１のプライバシーアドレスをバインドしない場合、前記第１のプライバシーアドレスを削除し、
前記第１のプライバシーアドレスは削除されることを前記アプリケーションに通知する
ことを更に含む、請求項１記載のプライバシーアドレスをアプリケーションに割り当てる方法。
【請求項９】
プロセッサと、
前記プロセッサに結合される少なくとも一つのネットワークインタフェースと、
プロセッサに結合されるメモリであって、前記メモリは、前記プロセッサに、
第１のプライバシーアドレスを前記メモリから呼び出し、
前記第１のプライバシーアドレスをアプリケーションに割り当て、
第２のプライバシーアドレスを直ちに生成し、
前記第２のプライバシーアドレスを前記メモリに格納する
ステップを実行させるように構成されたプロセッサ実行可能なソフトウェア命令を当該メモリ中に格納した、メモリと、
を備える、モバイルハンドセット。
【請求項１０】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが一意なアドレスを要求しているか判定し、
前記アプリケーションが一意なアドレスを要求している場合、前記第１のプライバシーアドレスを前記アプリケーションのみに割り当てる
ことを更に含むステップを実行させるように構成される、請求項９記載のモバイルハンドセット。
【請求項１１】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが共有アドレスを要求しているか判定し、
前記アプリケーションが共有アドレスを要求している場合、共有アドレスを要求している他のアプリケーションへの割り当てのために前記第１のプライバシーアドレスをメモリに保持している間、前記第１のプライバシーアドレスを前記アプリケーションに割り当て、
前記要求しているアプリケーションが前記第１のプライバシーアドレスをバインドするとき、デプリケーションタイマを開始する
ことを更に含むステップを実行させるように構成される、請求項９記載のモバイルハンドセット。
【請求項１２】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、前記プロセッサに、前記第１のプライバシーアドレスを前記アプリケーションによるアドレスへの要求の受信に先立って生成させるように構成される、請求項９記載のモバイルハンドセット。
【請求項１３】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、前記プロセッサに、前記第２のプライバシーアドレスに重複アドレス判定を行うこと更に含むステップを実行させる、請求項９記載のモバイルハンドセット。
【請求項１４】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、前記プロセッサに、前記アプリケーションが前記第１のプライバシーアドレスをアンバインドするとき、前記第１のプライバシーアドレスを削除することを更に含むステップを実行させる、請求項１０記載のモバイルハンドセット。
【請求項１５】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記第１のプライバシーアドレスにバインドされたアプリケーションの数を示す前記第１のプライバシーアドレスの参照カウントを保持し、
（１）前記デプリケーションタイマが終了したとき、及び（２）前記参照カウントがゼロに等しくなったとき、前記前記第１のプライバシーアドレスを削除する
ことを更に含むステップを実行させる、請求項１１記載のモバイルハンドセット。
【請求項１６】
前記メモリに格納された前記プロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが、予め設定された期間内に前記第１のプライバシーアドレスをバインドしない場合、前記第１のプライバシーアドレスを削除し、
前記第１のプライバシーアドレスは削除されることを前記アプリケーションに通知する
ことを更に含むステップを実行させる、請求項９記載のモバイルハンドセット。
【請求項１７】
第１のプライバシーアドレスを前記メモリから呼び出す手段と、
前記第１のプライバシーアドレスをアプリケーションに割り当てる手段と、
第２のプライバシーアドレスを直ちに生成する手段と、
前記第２のプライバシーアドレスを前記メモリに格納する手段と
を備える、モバイルハンドセット。
【請求項１８】
前記アプリケーションが一意なアドレスを要求しているか判定する手段と、
前記アプリケーションが一意なアドレスを要求している場合、前記第１のプライバシーアドレスを前記アプリケーションのみに割り当てる手段と
を更に備える、請求項１７記載のモバイルハンドセット。
【請求項１９】
前記アプリケーションが共有アドレスを要求しているか判定する手段と、
前記アプリケーションが共有アドレスを要求している場合、共有アドレスを要求している他のアプリケーションへの割り当てのために前記第１のプライバシーアドレスをメモリに保持している間、前記第１のプライバシーアドレスを前記アプリケーションに割り当てる手段と、
前記要求しているアプリケーションが前記第１のプライバシーアドレスをバインドするとき、デプリケーションタイマを開始する手段と
を更に備える、請求項１７記載のモバイルハンドセット。
【請求項２０】
前記第１のプライバシーアドレスを、前記アプリケーションによるアドレスへの要求の受信に先立って生成する手段を更に備える、請求項１７記載のモバイルハンドセット。
【請求項２１】
前記第２のプライバシーアドレスに重複アドレス判定を行う手段を更に備える、請求項１７記載のモバイルハンドセット。
【請求項２２】
前記アプリケーションが前記第１のプライバシーアドレスをアンバインドするとき、前記第１のプライバシーアドレスを削除する手段を更に備える、請求項１８記載のモバイルハンドセット。
【請求項２３】
前記第１のプライバシーアドレスにバインドされたアプリケーションの数を示す前記第１のプライバシーアドレスの参照カウントを保持する手段と、
（１）前記デプリケーションタイマが終了したとき、及び（２）前記参照カウントがゼロに等しくなったとき、前記前記第１のプライバシーアドレスを削除する手段と
を更に備える、請求項１９記載のモバイルハンドセット。
【請求項２４】
前記アプリケーションが、予め設定された期間内に前記第１のプライバシーアドレスをバインドしない場合、前記第１のプライバシーアドレスを削除する手段と、
前記第１のプライバシーアドレスは削除されることを前記アプリケーションに通知する手段と
を更に備える、請求項１７記載のモバイルハンドセット。
【請求項２５】
プロセッサに、
第１のプライバシーアドレスを前記メモリから呼び出し、
前記第１のプライバシーアドレスをアプリケーションに割り当て、
第２のプライバシーアドレスを直ちに生成し、
前記第２のプライバシーアドレスを前記メモリに格納する
ことを含むステップを実行させるように構成された、プロセッサ実行可能な命令を格納した、プロセッサ読み取り可能な有形の記憶媒体。
【請求項２６】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが一意なアドレスを要求しているか判定し、
前記アプリケーションが一意なアドレスを要求している場合、前記第１のプライバシーアドレスを前記アプリケーションのみに割り当てる
ことを更に含むステップを実行させるように構成される、請求項２５記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項２７】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが共有アドレスを要求しているか判定し、
前記アプリケーションが共有アドレスを要求している場合、共有アドレスを要求している他のアプリケーションへの割り当てのために前記第１のプライバシーアドレスをメモリに保持している間、前記第１のプライバシーアドレスを前記アプリケーションに割り当て、
前記要求しているアプリケーションが前記第１のプライバシーアドレスをバインドするとき、デプリケーションタイマを開始する
ことを更に含むステップを実行させるように構成される、請求項２５記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項２８】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記第１のプライバシーアドレスは、前記アプリケーションによるアドレスへの要求の受信に先立って生成させるように構成される、請求項２５記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項２９】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記第２のプライバシーアドレスに重複アドレス判定を行うこと
を更に含むステップを実行させるように構成される、請求項２５記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項３０】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが前記第１のプライバシーアドレスをアンバインドするとき、前記第１のプライバシーアドレスを削除する
ことを更に含むステップを実行させるように構成される、請求項２６記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項３１】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記第１のプライバシーアドレスにバインドされたアプリケーションの数を示す前記第１のプライバシーアドレスの参照カウントを保持し、
（１）前記デプリケーションタイマが終了したとき、及び（２）前記参照カウントがゼロに等しくなったとき、前記前記第１のプライバシーアドレスを削除する
ことを更に含むステップを実行させるように構成される、請求項２７記載のプロセッサ読み取り可能な有形の記憶媒体。
【請求項３２】
前記格納されたプロセッサ実行可能なソフトウェア命令は、
前記プロセッサに、
前記アプリケーションが、予め設定された期間内に前記第１のプライバシーアドレスをバインドしない場合、前記第１のプライバシーアドレスを削除し、
前記第１のプライバシーアドレスは削除されることを前記アプリケーションに通知する
ことを更に含むステップを実行させるように構成される、請求項２５記載のプロセッサ読み取り可能な有形の記憶媒体。
【発明の詳細な説明】
【米国特許法第１１９条による優先権の主張】
【０００１】
本特許出願は、２００６年９月２５日に出願され、”METHOD OF EFFICIENTLY GENERATING PRIVACY ADDRESSES（プライバシーアドレスを効率的に生成する方法）”と題され、その全体が参照することによって本明細書に明白に組み込まれる、米国仮特許出願第６０／８２６，８９５号の優先権を主張する。
【技術分野】
【０００２】
本発明は一般に、ネットワーク通信に関し、特に、ＩＰｖ６プライバシーアドレスを生成する技法に関する。
【背景技術】
【０００３】
インターネットプロトコル（ＩＰ）ネットワークにおいて、ホストはルータを介して別のホストと通信する。本明細書において、「ＩＰ」は一般的に、あらゆるバージョンのインターネットプロトコルをいう。ＩＰの用語で、「ノード」はＩＰを導入する装置であり、「ルータ」はそれ自身に明示的にアドレス指定されていないＩＰパケットを転送するノードであり、「ホスト」はルータではないノードをいう。ホストは、リンクへの１つ又は複数のインタフェースを有し得る。ＩＰの用語で、「リンク」は、ノードがリンク層（これはＩＰ層のすぐ下位の層である）で通信するのに介する通信機器又は通信媒体であり、「インタフェース」はリンクへのノードの結合である。インタフェースはネットワーク通信ポートとしてみなされてもよい。各インタフェースは、当該インタフェースを一意に識別する１つ又は複数のＩＰアドレスと関連付けられる。
【０００４】
インターネットプロトコルバージョン６（ＩＰｖ６）は、広く用いられているインターネットプロトコルバージョン４（ＩＰｖ４）に代わる予定とされるインターネットプロトコルの一つのバージョンである。ＩＰｖ６は、ＩＰｖ４の幾つかの重要な制限を解決する。例えば、ＩＰｖ４は、インターネットに接続される機械を一意に識別するための充分な数のアドレスを提供すると本来考えられた３２ビットのアドレスを利用する。しかしながら、インターネットの爆発的な成長は、ＩＰｖ４アドレスが枯渇する現実的なリスクを生み出した。ＩＰｖ６は、この懸念を１２８ビットのアドレスを利用することによって改善する。
【０００５】
ＩＰｖ６はまた、ＩＰｖ４に対して他の改善点も提供する。例えば、ＩＰｖ６は、ステートレスアドレス自動設定（stateless address autoconfiguration）をサポートするが、これはホストがそれ自身のＩＰｖ６アドレスを自動的に設定することを可能にする処理である。ステートレスアドレス設定は、各ホストを、そのホストのネットワークへの接続の前に手動で設定する必要を回避し、専用のサーバが、当該ネットワーク上のホストに対するアドレスの割り当て及び管理を行う必要を除去し、また、当該ネットワーク上のホストのアドレスの番号を付け替えることを容易にすることができる。
【０００６】
ＩＰｖ６のステートレスアドレス設定は、RFC3041-Privacy Extensions for Stateless Address Autoconfiguration in IPv6に定義されるように、ノードが「プライバシーアドレス」を生成することを可能にする。これは、ノードがそれらのＩＰアドレスを周期的に変更することで、ＩＰｖ６インターネット内におけるそれらの移動を隠すことを可能にする。これは、ランダムなインタフェースＩＤ（「ＩＩＤ」）を生成し、それを現在のアクセスルータのネットワークプレフィックスに関連付けることによって達成される。ノードがブロードキャストネットワーク上にあるとき、新たに生成されたＩＩＤを用いるノードが他に存在しないことを確認することが必要である。本明細書において、「ブロードキャストネットワーク」とは、８０２．３といったブロードキャストメディアに接続されるネットワークをいう。ブロードキャストノードのプライバシーアドレスを用いるノードが他には無いことを確認する処理は、重複アドレス検出（Duplicate Address Detection）（ＤＡＤ）と称される。ＩＩＤを生成及び確認する処理は時間を要し、プライバシーアドレスを要求するノードは、ノードがアドレスを用いることができる前に、アドレスが生成され、確認され、また最終的に割り当てられるまで待機することを要求される。この処理によって導入される待ち時間は望ましくない。必要とされるのは、ブロードキャストネットワーク上にあるときに、ＩＰｖ６のプライバシーアドレスを生成及び管理する効率的なシステムである。
【概要】
【０００７】
種々の実施形態は、プライバシーアドレスの生成に関連付けられる待ち時間の問題を、アプリケーションによって要求されるとすぐに使用のために確認及び格納される、少なくとも１つの付加的なプライベートＩＩＤ又はアドレスを生成することで解決する。別のプライベートＩＩＤ又はアドレスは、アプリケーション又はノードにプライベートアドレスが割り当てられたときはいつでも生成されることができる。プライベートアドレスのためのデプリケーションタイマ（deprecation timers）は、アプリケーションがアドレスをバインドするときのみ開始される。
【０００８】
種々の実施形態は、共有アドレスを要求する如何なる数のアプリケーションにも割り当てることができる共有アドレスのみならず、単独のアプリケーションのみに割り当てられ、一つよりも多くのアプリケーションによってバインドされることができない、一意のアドレスも提供する。実施形態は、非推奨アドレス（deprecated address）を、当該アドレスが使用されている期間は削除しないことによってトラヒックフローの中断を最小限に抑える。
【０００９】
プライバシーアドレスを生成する方法は、特にモバイルハンドセットを含む、任意のコンピューティングデバイスに導入し得る。
【図面の簡単な説明】
【００１０】
【図１】図１は、アプリケーションに対してプライベートアドレスの生成及び割り当てを行う種々の実施形態の概要を提供する処理フロー図である。
【図２】図２は、一実施形態に係るプライベートアドレスのためのデプリケーションタイマの初期化の概要を提供する処理フロー図である。
【図３】図３は、種々の実施形態のうちの一つを実施する装置の動作期間中の種々のＩＩＤの取り得る状態を例証する状態機械図である。
【図４】図４は、ＩＩＤを生成する実施形態の方法の処理フロー図である。
【図５】図５は、アプリケーション要求によってトリガされるプライベートアドレスを割り当てる実施形態の方法の処理フロー図である。
【図６】図６は、重複アドレス検出処理の期間にプライベートＩＩＤを管理する実施形態の方法の処理フロー図である。
【図７】図７は、未解決のアプリケーション要求にサービスする実施形態の方法の処理フロー図である。
【図８】図８は、セッション確立時にプライベートＩＩＤを生成する実施形態の方法の処理フロー図である。
【図９】図９は、プライベートＩＩＤを生成する別の実施形態の方法の処理フロー図である。
【図１０】図１０は、種々の実施形態を実施するのに適当なモバイルハンドセットのコンポーネントブロック図である。
【詳細な説明】
【００１１】
本発明の特徴及び本質は、以下に述べられる詳細な説明を、同様の符号は全体を通して同様に識別する図面と共に考慮することで、より明らかになるであろう。
【００１２】
種々の実施形態は、添付の図面を参照しつつ詳細に記載されるであろう。可能な限り、同一の参照番号は、図面全体を通して同一又は同様の部分を参照するために用いられるであろう。
【００１３】
RFC-3041-Privacy Extensions for Stateless Address Autoconfiguration in IPv6に記載されるように、これはその全体が参照することによって組み込まれるが、インターネットユーザによっては、ＩＰアドレスが盗聴者及びデータマイナ（data miners）によってモニタされ得るという可能性に関してプライバシーについての懸念を有するかもしれない。特定のインタフェース（例えば、携帯電話、ラップトップ型コンピュータ、パーソナルデータアシスタント（ＰＤＡ）及び携帯可能な電子メール受信機）によって用いられるＩＰアドレスをトラッキングすることによって、通信がそれ自体暗号化されている場合でも、データマイナがユーザのインターネット通信及び動向をトラッキングすることが可能になり得る。これらの懸念は、ランダムな方法で生成され、周期的に変更されるＩＰアドレスを用いることで解決することができ、これによって、特定のノード（例えば、ユーザモバイルハンドセット又はラップトップ型コンピュータ）のＩＰアドレスをトラッキングする問題を困難にする。
【００１４】
セルラー式のモバイルハンドセット（例えば、多機能携帯電話）は、プライベートＩＰアドレスを採用して、電子メール及びインターネット接続サービスへのデータリンク接続と同様、携帯電話ノードへの接続を確立及び管理する。呼が発呼され、各セルラーノードハンドオフを用いると、新たなＩＰアドレスをモバイルハンドセットに用いることができる。同様に、電子メールメッセージが送信されるべきとき、又は無線データリンクを介してインターネットへのアクセスが要求されるとき、ＩＰアドレスは、モバイルハンドセットによって生成されるか、モバイルハンドセットに割り当てられる。ＩＰｖ６の下では、データマイニングツールが個人のロケーション及び電話の利用を簡単にトラッキングできないようにできるように、ＩＰアドレスを非公開に（private）できる。
【００１５】
上述したように、ＩＰｖ６のＩＰアドレスは１２８ビット長であり、６４ビットのプレフィックスと６４ビットのＩＩＤとを含む。大抵の状況において、プレフィックスは、装置が接続しているルータによって供給又は固定される。従って、プライベートＩＰアドレスを生成するために、システムは、公知のプレフィックスと結合されるランダム且つ非冗長的なＩＩＤを生成しさえすればよい。ＩＩＤとプレフィックスとのこの結合を為すことによるＩＰアドレスの生成は、一般的にシステムによって達成される（種々の実施形態はまた、ＩＩＤの受信時にアドレスを生成するアプリケーションにおける実施においても有用であろうが）。
【００１６】
種々の実施形態において、アプリケーションがＩＰアドレスを要求したとき（即ち、アドレスがアプリケーションに割り当てられる直前に）、システムは新たなアドレスを予め確認されたＩＩＤをプレフィックスと結合することによって生成し得る。あるいは、システムはＩＩＤが生成及び確認された（ブロードキャストアドレスについて）ときにアドレスを生成してもよく、アドレスはアプリケーションによって要求されるまで、メモリ又はバッファに格納される。換言すれば、種々の実施又は実施形態において、プレフィックスは、６４ビットの乱数の生成後のいつでもプライベートＩＩＤと結合されることができる。従って、システムの実施形態は、本明細書に記載される方法に従って、ＩＩＤ又はアドレスを管理することができる。このため、当業者によって理解されるように、本明細書における「ＩＰアドレス」、「アドレス」及び「ＩＩＤ」への言及は、文脈によっては互換的であり得る。更に、「アドレス」への言及は、システムがＩＩＤを生成又は格納し得る文脈においては、プレフィックスとＩＩＤとの結合についてのみ言及すること、又はＩＩＤを除外することを意図するものではない。同様に、「ＩＩＤ」への言及は、システムがアドレスを生成、格納又は割り当てを行い得る文脈において、必ずしもアドレス（即ち、ＩＩＤとプレフィックスとの結合）を除外することを意図するものではない。また、ＩＰアドレスを形成するためのプレフィックスとＩＩＤとの結合は、実施形態の処理における特定の時点で完全なＩＰアドレスが生成されるということを意味することを回避すべく、図面には示されていない。
【００１７】
ＲＦＣ３０４１に記載されるプロシージャは、高度な無作為性（randomness）を確実にすべく設計されたアルゴリズムに従って、６４ビットの乱数を生成することによって生成する。６４ビットの乱数は、一時的なＩＩＤとして用いられるが、これはプライベートＩＰアドレスを作成するために、装置が接続されたノード又はルータのプレフィックスアドレスと結合される。盗聴者及びデータマイナを挫折させるために、ＲＦＣ３０４１に記載される一時的なＩＩＤに基づくアドレスは、有効な存続期間（例えば、１週間）、及び、より短い好適な存続期間（例えば、１日）に限定される。ＲＦＣ３０４１で構想されるように、有効な存続期間タイマによって測定される、有効な存続期間が終了すると、アドレスは、もはやシステムによって用いられるべきではなく、削除されるべきである。好適な存続期間タイマによって測定される、好適な存続期間が終了すると、アドレスは「デプリケートされた（deprecated）」と称され、アプリケーションに割り当てられるべきではなく、非推奨アドレスを用いるアプリケーションは新たなプライベートアドレスを要求すべきである。アドレスはその好適な存続期間タイマが終了するとデプリケートされる（deprecated）ので、好適な存続期間タイマは、本明細書において一般的に「デプリケーションタイマ（deprecation timer）」と称される。ＲＦＣ３０４１は、新たなＩＩＤが作成されるとき、又は当該新たなＩＩＤに基づいたアドレスが生成されるときに、有効なデプリケーションタイマの開始を要請する。ブロードキャストネットワークに接続された装置、即ち、８０２．３といったブロードキャストメディアに接続されたネットワークは、ネットワークがパケットの目的地及びソースを知るために、一意のＩＰアドレスを有さなければならない。それ故に、ブロードキャスト環境（context）における使用のために生成されるＩＩＤは、ブロードキャストネットワーク上の他のノードが同一のＩＩＤを用いていないことを確認するＤＡＤ処理を用いて検査される（validated）。ＤＡＤ処理は完了するのに時間を要するため、ＲＦＣ３０４１は、現在のＩＩＤの好適な存続期間が終了する少し（例えば、５秒）前に新たなＩＩＤを生成することを要請する。
【００１８】
ＲＦＣ３０４１に明記されるプロシージャは、多くの固定されたコンピュータアプリケーション又は携帯用のコンピュータアプリケーションにとって満足なものであり得る一方で、プロシージャはユーザの体験に、特に携帯電話型のモバイルハンドセットのとの関連で影響を与え得る制限を有する。ユーザは通常、彼らのモバイルハンドセットを常に携帯するので、プライバシーへの懸念は増大する。モバイルハンドセットで用いられるアドレスが、ＲＦＣ３０４１で予期されるような存続期間（即ち、１日から１週間）を有する場合、データマイナはユーザのネットワーク利用及び位置を１日中又はまる１週間トラッキングし得る。従って、ＲＦＣ３０４１で予期されるＩＩＤベースのアドレスの存続期間は、多くのモバイルハンドセットユーザに対して充分な匿名性を供給しないであろう。モバイルハンドセットは、呼ごと、また潜在的にはセルノードハンドオーバごとに新たなＩＩＤに基づいた新たなアドレスを用いることができる。モバイルハンドセットからの通話及びデータコールは、短いことも長いこともあり、いつでも確立され得るので、ＲＦＣ３０４１では予期されていない、頻繁な且つ予測不可能な基準でプライベートアドレスを生成する方法の必要性がある。
【００１９】
現代のモバイルハンドセットは、同時に実行される多数のアプリケーションを有することができ、また多数のインタフェースを採用することができる。従って、モバイルハンドセットは多数のアドレスを、従って多数のＩＩＤを要求し得る。一部のアプリケーションは、ＩＩＤベースのアドレスを共有することができ得るが、携帯電話通信及び無線インターネット通信といった、他のアプリケーションは、専用の且つ全世界的に一意なＩＰアドレスを要求する。しかしながら、ＲＦＣ３０４１は、装置について単一のＩＰアドレスのみを生成することを予期している。従って、多様なインタフェース及びアプリケーションに対して多様なアドレスを生成し、また割り当てる方法への必要性がある。
【００２０】
モバイルハンドセットの通常の動作においては、ＲＦＣ３０４１に明示されるプロシージャよりも、ＩＩＤの乱数を生成する、より多くのランダムなシード値を供給する特性及び信号強度に関連付けられる種々の一意に変化する値がある。従って、モバイルハンドセットは、より高いレベルの無作為性を提供する一方で、より少ないステップ又はメモリを伴う異なるアルゴリズムを用い得る。
【００２１】
モバイルアプリケーションにおいて、ＩＩＤは、接続されるブロードキャストネットワークルータの６４ビットのネットワークプレフィックスと結合されて、１２８ビットのＩＰｖ６アドレスを作成する、６４ビットの乱数である。従って、一意のＩＰアドレスを確実にするために、ＤＡＤ（重複アドレス検出）ルーチンが実行されて、通信ノード又はルータに接続された装置で同一のＩＩＤ又はアドレスを用いているものは無いことを確認する。ＤＡＤ処理は、通常、提案されたアドレスをブロードキャストし、他の装置が既に当該アドレスを用いているか照会することを伴う。しかしながら、この処理は完了するのに時間を要し、これは呼の確立、電子メールの送信、又はインターネットコンテンツの受信における遅延といった、ユーザ体験上の問題という結果を招き得る。
【００２２】
これらの制限を克服すべく、種々の実施形態は、プライベートアドレスを生成し、割り当て、また制御する、改良された方法を提供する。これらの改良点は、予め検査されたＩＩＤ又はアドレスが大抵の状況において容易に利用可能であるように、アドレスがアプリケーションによって要求される前に、ＩＩＤ又はアドレスを生成及び確認することを含む。この能力を可能にするために、モバイルハンドセットといった装置が初期化されるとき、又は、（例えば、ルータ広告（router advertisement）を受信したときに）データセッションが特定のインタフェースについて確立されるときに、ＩＩＤ又はアドレスが生成され、バッファ又はメモリに格納され得る。次いで、アプリケーションがアドレスを要求し、アドレスが割り当てられるときはいつでも、置換のＩＩＤが迅速に生成されるが、これは格納されてもよいし、一部の実施形態においては、格納されるアドレスを作成するために用いられてもよい。ＩＩＤは予め生成及び検査されるので、特定のＩＩＤ又はアドレスに関連付けられたデプリケーションタイマは、要求しているアプリケーションが実際にアドレスをバインドするまでは、開始されない。これは、バッファ又はメモリに格納されたアドレス又はＩＩＤが、これらが用いられる前には失効せず、短期間のＩＩＤ又はアドレスの存続期間の使用を可能にすることを確実にする。また、種々の実施形態は、多数のアプリケーションによって共有されることができるアドレス、及び特定のアプリケーションに対して一意であるアドレスを提供する。
【００２３】
ＩＰアドレスを割り当てる際、実施形態のシステムは、要求しているアプリケーションがアドレスをバインドするかどうかのトラッキングをすることができる。例えば、システムは、アドレスがアプリケーションに割り当てられるときに開始され、２分間といった、前もって設定された時間まで、又は、アプリケーションがアドレスをソケットにバインドするまでカウントダウンするタイマを備え得る。要求しているアプリケーションが、割り当てられたアドレスを前もって設定された時間（例えば、２分間）内にバインドしない場合、アプリケーションはそのアドレスを用いないということが推定でき、また、アドレスは削除されてもよく、アプリケーションは当該アドレスが最早有効ではないことを知らされる。この能力は、アプリケーションが不必要にリソースを消費することを防止する。
【００２４】
実施形態のシステムはまた、割り当てられたアドレス（又はＩＩＤ）を、本明細書において参照カウント（”Ref_cnt”）と称されるものを用いて各アドレスにバインドされたアプリケーションの数をカウントすることによって、トラッキングし得る。一つのアプリケーションが、あるアドレスにバインドする場合、当該アドレスの参照カウントは１である。二つのアプリケーションが、あるアドレスを共有し、双方が当該アドレスにバインドする場合、参照カウントは２である。アプリケーションが、あるアドレスからアンバインドする（unbinds）する場合、参照カウントは１だけ減少される。アプリケーションが一意のアドレスをアンバインドする場合、参照カウントはゼロにデクリメントされるが、これはシステムに対して当該アドレスが削除されるべきことを指示する。同様に、参照カウントは非推奨の共有アドレスを削除できるときを判定するのに用いられる。具体的には、非推奨アドレスは参照カウントがゼロに等しくなるまで削除されない。従って、システムは、共有アドレスを、一旦そのデプリケーションタイマが終了すると、アプリケーションに割り当てないであろうが、それはその参照カウントがゼロに等しくなり、当該アドレスを現在用いているアプリケーションが無いことが示されるまで、非推奨アドレスを削除しないであろう。この方法の有意な利点は、それがトラヒックフローの中断を、非推奨アドレスを当該アドレスが使用中の期間は削除しないことによって、最小限にすることである。参照カウントはまた、システムリソースを解放することができるか判定するためにシステムによって用いられることができる。
【００２５】
図１は、種々の実施形態の概要の方法を示す。実施形態の方法は、アプリケーション開発ツールキット、ランタイム環境、又はオペレーティングシステム内のサポートアプリケーション若しくはアプリケーションプログラムインタフェース、サブルーチンとして実施され得る。例えば、ステップ１０２で、有効なルータ広告（router advertisement）（ＲＡ）が受信されたとき、又はアプリケーションがＩＰｖ６のプライバシーアドレスを要求するとき、ステップ１００で、該方法は起動され得る。実施中のソフトウェアは最初に、テスト１０４で、余分なＩＩＤ又はプライバシーアドレスがメモリに格納されているか判定するチェックをし得る。余分なＩＩＤ又はアドレスがメモリにある場合、テスト１０６で、要求のタイプがテストされて、アプリケーションがアドレスを要求していないか判定され得るが、この場合、ルーチンはステップ１０８で終了する。アプリケーションがＩＩＤ生成処理を開始していない場合、これは処理がルータ広告によって自主的に（autonomously）生成されたことを意味するが、ここで、メモリに格納された一つの余分なアドレスがある限り、処理はそれ以上する必要がない。要求がアプリケーションからである場合（即ち、テスト１０６＝「Ｙｅｓ」）、ステップ１１０で、アプリケーションに必要なアドレスのタイプ（一意又は共有）が確保される。次いで、ステップ１１２で、メモリに格納された種々の乱数（例えば、リンク管理に関連する値）をシード値として用いて６４ビットの乱数を生成すること等によって、ＩＩＤが生成される。テスト１１４で、アドレスが生成されつつあるインタフェースがブロードキャストインタフェース（即ち、８０２．３といった、ブロードキャストメディアに接続されたインタフェース）であろう場合、ステップ１１６で、ＤＡＤルーチンが開始されるであろう。このルーチンの一部として、アプリケーションは、アドレスはそれが確認されたときに供給されるであろうことを知らされ得る。
【００２６】
ＤＡＤ処理１１６において、提案されたＩＩＤ（又はアドレスそれ自体）はネットワーク上の他のノードにブロードキャストされて、他の装置が同一のＩＩＤ値又はアドレスを用いているか判定する。この処理の結果は、ＤＡＤが成功した（即ち、ＩＩＤ又はアドレスを用いている他の装置は無いと処理が判定した）か否か（即ち、提案されたＩＩＤは重複すると処理が判定した）を示す値になるであろう。テスト１１８で、ＤＡＤ処理が成功しない場合、テスト１２４で、ルーチンは、ＩＩＤを生成する所定の再試行の回数を超えたかどうかをテストし得る。このテストは、適当な時間内に非冗長的なＩＩＤを取得することを除外し得る誤り状態を検出するために提供される。所定の再試行の回数を超える場合、ステップ１２６で、誤りメッセージがアプリケーションに供給されてもよく、ルーチンは終了する。所定の回数の再試行を超えていない場合、ステップ１１２で、別のＩＩＤが生成され、ＩＩＤがＤＡＤ処理を首尾よく完了するまで、処理は上述したように継続する。
【００２７】
ＩＩＤ又はアドレスがブロードキャストインタフェースに向けられていない場合（即ち、テスト１１４＝「Ｎｏ」）、又はＤＡＤ処理が成功である場合（即ち、テスト１１８＝「Ｙｅｓ」）、テスト１２０で、処理は最初のＩＩＤ又はアドレスが生成されつつあるかどうかテストし得るが、これは使用可能な余分なＩＩＤ又はアドレスが無い場合に起こり得る。処理が最初のプライバシーアドレスを作成していない場合、ステップ１２２で、ＩＩＤは返され、メモリに格納されるか、プレフィックスと結合されて、アプリケーションに割り当てられるアドレスを形成し、ルーチンは終了する。ルーチンが最初のプライバシーアドレスを作成している場合（即ち、テスト１２０＝「Ｙｅｓ」）、処理はテスト１０６から始めて繰り返され、第２のＩＩＤが生成される。この第２のＩＩＤは次いで、次のアドレスへの要求に応答して用いるためにメモリ又はバッファに格納される（又は、メモリ又はバッファに格納されるアドレスを作成するために使用される）ことができる。
【００２８】
テスト１０４に戻り、余分なプライバシーアドレスがメモリに存在しない場合（即ち、テスト１０４＝「Ｎｏ」）、ステップ１１２で、処理はＩＩＤの生成に直接進み得る。この状態では、最初のプライバシーアドレスを作成するテスト、即ちテスト１２０は、「Ｙｅｓ」になるであろうし、ルーチンはアドレスがアプリケーションに割り当てられる前に繰りかえされるであろう。この処理は、次のアドレスへの要求に応答して用いる、余分なプライバシーアドレスがメモリ又はバッファで保持されることを確実にする。
【００２９】
ＩＩＤ又はアドレスが前もって生成されることを可能にするために、アドレスデプリケーションタイマの起動の変更が要求される。ＲＦＣ３０４１で構想された方法の下では、好適なデプリケーションタイマは、ＩＩＤの作成時、又はアドレスがＩＩＤを用いて生成されるときに開始される。従って、ＩＩＤ又はアドレスがアプリケーション要求に先立って生成される場合、アドレスは、アプリケーションに割り当てられる直前又は直後に終了又はデプリケートし得る。こうしたことが予め生成されたＩＩＤ又はアドレスについて発生するのを防止するために、種々の実施形態は、好適なデプリケーションタイマを、アプリケーションがアドレスをソケットにバインドする（即ち、アプリケーションがそれを用い始める）まで開始しない。このことは、ＩＩＤ及びアドレスがアプリケーションに割り当てられるときに充分な好適な存続期間が残存するであろうＩＩＤ及びアドレスの前もった生成を可能にする。
【００３０】
好適な実施形態において、システムは、アプリケーションにアドレスがデプリケートされたことを知らせることによって好適な存続期間のデプリケーションタイマに対して影響を及ぼすだけである。有効な存続期間タイマは実行されるが、システムはアドレスをその有効な存続期間タイマが終了するときにアドレスを削除する処理を講じない。というのは、これは、ＶＯＩＰ（Voice over IP）及びリアルタイムアプリケーションといった、主要なアプリケーションの望ましくない中断を引き起こし得るからである。共有されるプライベートＩＩＤの場合、好適なデプリケーションタイマは、新たなアプリケーションに特定の共有ＩＩＤを割り当てることができる期間を指示する。一旦、好適なタイマが終了すると、アドレスはデプリケーとされたと言われ、新たなアプリケーション要求は新たな共有プライベートＩＩＤベースのアドレスの割り当てをトリガするであろう。また、デプリケートされた共有アドレスを用いるアプリケーションは、アドレスが新たなアドレスを要求できるように通知されるであろう。
【００３１】
また、種々の実施形態は、一意の且つ共有されるアドレスを供給する。この革新は、多くのアプリケーションがコンフリクト無しにアドレスを容易に共有できる一方で、携帯電話通信及び無線インターネット通信といった、一部のアプリケーションはアドレスを共有できないという事実を認識する。
【００３２】
共有アドレスは、コンフリクト無しに多様なアプリケーションによって用いられることができる。ＲＦＣ３０４１で構想されたデプリケーションタイマは、プライバシーの懸念が存在する限り、共有アドレスが用いられないということを確実にすべく用いられ得る。共有アドレスは、デプリケーションタイマによって判定されるそれらの存続期間を用いてシステムによって制御される。
【００３３】
一意のアドレスは単一のアプリケーションのみに割り当てられ、当該アプリケーションが当該アドレスを解放するとすぐに、ＩＩＤ及びアドレスは、アドレスが一度のみ用いられるように削除される。これは、最高のプライバシー保護を備える一意のＩＩＤを用いるアプリケーションを提供する。一意のアドレスを要求及び受信するアプリケーションは、システムによる関与無しにアドレスを他のアプリケーションに割り当てることができ、アプリケーションにネットワークデータ接続に対する更なる制御を与える。単一のアプリケーションのみが所与のＩＩＤを一度だけ用いるので、アプリケーションにデプリケーションタイマの終了を通知することは、一意のアドレスを用いれば随意である。通知される場合、アドレスを用いるアプリケーションには、タイマの終了が通知されるのみで、アドレスは削除されない。アドレスの使用の終了はアプリケーションに任される。
【００３４】
ＩＩＤベースのアドレスのアプリケーションへの割り当て及びデプリケーションタイマの使用は、図２に示される。ステップ２００で、アドレスへの要求がアプリケーションから受信されると、ステップ２０２で、メモリ中のＩＩＤを用いてアドレスが生成されるか、メモリからアドレスが呼び出され、以下に更に詳述されるようにアプリケーションに割り当てられる。テスト２０４で、アドレスの取り扱いは、アドレスが共有されるべきか一意であるべきかに依存する。アドレスが共有されるべき場合、ステップ２０６で、アドレスは、アドレス（アドレスはプレフィックスにＩＩＤを足したものである）をバインドする要求中のアプリケーションに割り当てられる。この時点において、ステップ２０８で、デプリケーションタイマは共有アドレスについて開始される。他のアプリケーションからの共有アドレスへのその後の要求は、新たなデプリケーションタイマを開始させる必要無しに、第１のアプリケーションによって用いられるのと同一の共有アドレスによって満たすことができる。
【００３５】
一旦、開始されると、デプリケーションタイマはテスト２１０でそれが終了するまで継続する。その時点において、ステップ２１２で、アドレスを用いるアプリケーションは、アドレスがデプリケートされることを通知され、ステップ２１４で、それを別のアプリケーションに割り当てることができないようにアドレスがデプリケートされる。各アプリケーションがアドレスを解放すると、アドレスの参照カウント（”Ref_cnt”）はデクリメントされる。処理は、テスト２１６で、非推奨アドレスの参照カウントをモニタし、カウントがゼロに等しくなると、これはアドレスが全てのアプリケーションによって解放されたことを意味するが、ステップ２１８で非推奨アドレスは削除される。
【００３６】
要求が一意のアドレスへのものである場合、メモリ中のＩＩＤはプレフィックスと結合されて、１つのアプリケーションのみに割り当てられる一意なアドレスを生成するが、これはステップ２２０でアドレスをバインドする。アドレスがＩＩＤから前もって形成され、メモリに格納される実施形態において、メモリ中のアドレスは、ステップ２２０でアドレスをバインドする一つのアプリケーションに割り当てられる。一意のアドレスは、アプリケーションがアドレスを解放し、参照カウント（”Ref_cnt”）をゼロにデクリメントするまで、有効なまま残存し、用いられるであろう。処理は参照カウントをモニタし、テスト２２８で、参照カウントがゼロに等しくなると、ステップ２１８で、ＩＩＤ及びアドレスは、再度用いられることができないように削除される。デプリケーションタイマは、ステップ２２２で、アプリケーションがアドレスをバインドするときに開始され、ステップ２２４で、デプリケーションタイマが終了するまで実行される。随意であるが、ステップ２２６で、処理はアプリケーションにアドレスデプリケーションタイマが終了したことを通知してもよい（当該ステップは、一部の実施形態では実施されないので、点線で示されている）。しかしながら、アプリケーションの機能を中断することを妨げるために、アドレスはデプリケーションタイマの終了に基づいてデプリケートされないであろう。アプリケーションは、好適な存続期間タイマが終了したことを通知されたときに新たなアドレスを要求する条件（provisions）を含んでもよいし、そのような通知を無視するようにプログラムされてもよい。
【００３７】
種々の実施形態の全体的な機能は図３に例証されるが、図３は、ＩＩＤ及びプライバシーアドレスに関する動作の期間中にシステムが取り得る種々の状態を例証する、ＩＩＤの状態機械を示す。状態機械は、メモリ又はバッファに格納されるか、割り当てられているプライベートＩＩＤ又はアドレスが無い状態フリー（Free）３００から始まる。この状態は、ＩＩＤを生成することができない、ネットワークと接続していない期間の後、又は、ＩＩＤが生成される前、装置の起動時に達成され得る。この状態から、プライベートＩＩＤは、図４を参照しつつ以下に記載されるように生成される。装置で実行されているアプリケーションは、ネットワークに接続するためのプライベートアドレスを要求し得る。この要求を受信すると、装置はＩＩＤを生成し、状態機械は、状態Ｃ（state C）３０２に進む。
【００３８】
Ｃ状態３０２から、要求が、ポイント・ツー・ポイントのネットワーク又は非ブロードキャストネットワーク上、即ち、アドレスを共有できるアプリケーションからである場合、生成されたＩＩＤは使える状態にあり、状態機械は使用可能な状態３０６に進む。これは、要求しているアプリケーションへの割り当て用のアドレスを作成するためにプライベートＩＩＤが使用可能な状態である。一部の実施形態において、使用可能な（Available）状態３０６は、プライベートアドレスがＩＩＤから作成され、要求しているアプリケーションへの割り当てに使用可能であることを示し得る。ポイント・ツー・ポイントのネットワークは、プレフィックスが接続ごとに一意であるものである。
【００３９】
プレフィックスが、ルータからの他のポイント・ツー・ポイントのリンクで共有される場合、又はアドレス要求がポイント・ツー・ポイントのネットワークではないブロードキャストネットワーク上でなされる場合、装置はＤＡＤ処理を開始し、状態機械は試験的な（Tentative）状態３０４に進む。試験的な状態３０４において、ネットワークは、ＩＩＤが別のノードによって既に使用中のアドレスと重複しないことを確実にすべく、記載されたＤＡＤ処理を実行する。このＩＩＤ状態は、ＤＡＤ処理が進行している間、ＩＩＤを検査する際の遅延を考慮する（account for）ために試験的である。ＤＡＤ処理が失敗した場合、これは重複するＩＩＤが生成されたことを示すが、状態機械はフリー状態３００に、次いで新たなＩＩＤが作成されることができるようにＣ状態３０２に戻る。ＩＩＤを要求するアプリケーションは、別のＩＩＤを生成し、新たなＩＩＤについてＤＡＤ処理を完了させる時間は、アプリケーションに対するアドレスの割り当てを遅延させることがあるので、失敗を通知され得る。共有アドレスへの複数の要求の場合、要求が失敗した場合は、共有アドレスを要求する全てのアプリケーションに通知される必要がある。ＤＡＤ処理が成功した場合、これはＩＩＤがブロードキャストノード上で冗長的ではないことを示すが、状態機械は試験的な状態３０４から使用可能な状態３０６に進むが、これは検査されたブロードキャストＩＩＤが、割り当てられ得るアドレスを生成するのに用いられる準備ができたことを示す。
【００４０】
使用可能な状態３０６から、装置はアプリケーションが共有アドレスを要求したのか、一意なアドレスを要求したのかを判定する。アプリケーションが共有アドレスを要求した場合、状態機械は共有（Shared）状態３１０に進む。アドレスは、使用可能なＩＩＤをプレフィックスと結合するか、使用可能なアドレスをメモリから呼び出すことで作成される。共有状態３１０において、アプリケーションには他のアプリケーションと共有され得るアドレスが割り当てられる。共有状態３１０内で、アドレスは最初に、当該アドレスが一つ又は複数のアプリケーションに割り当てられる共有アンバウンド（Shared Unbound）状態３１２にある。アプリケーションが、割り当てられたアドレスにバインドするとき、状態機械は共有バウンド（Shared Bound）状態３１４に進む。バインドするときに、参照カウンタ（”ref_cnt”）は、アドレスにバインドされたアプリケーションの数を追跡するためにインクリメントされる。他のアプリケーションもまた、共有アドレスにバインドすることができる。別のアプリケーションが共有アドレスにバインドする度に、参照カウンタはインクリメントされる。いつでもアプリケーションはアドレスを解放する（即ち、アドレスをアンバインドし、使用を終了する）ことができるが、この時点で、参照カウントはデクリメントされる。アプリケーションが共有アドレスを解放した後、参照カウントがゼロに等しい場合、これはアドレスに現在バインドされているアプリケーションが無いことを示すが、アドレスが以下に記載するようにデプリケートされない限り、共有アドレスはアンバウンド状態３１２に戻る。
【００４１】
上述したように、共有プライベートＩＩＤベースのアドレスは、これらのアドレスのうちの一つを用いるアプリケーションが無いことを無期限に確実にすべく、それらに関連付けられた好適な存続期間を有する。第１のアプリケーションが共有アドレスにバインドすると、ＩＩＤ／アドレス状態を共有アンバウンド３１２から共有バウンド３１４に変化させるが、ＩＩＤベースのアドレスに関連付けられたデプリケーションタイマが開始される。デプリケーションタイマは、アドレスの好適な存続期間に残存する時間を判定するのに用いられる。（有効なタイマも開始されるが、本明細書に記載されるように、有効なタイマはシステムによって用いられず、アドレスは有効なタイマの終了に基づいて削除されない。）一旦、あるアドレスのデプリケーションタイマが終了すると、当該アドレスはデプリケートされ、その後のアプリケーション共有アドレス要求は、異なるプライベートな共有アドレスで満たされるであろう。一実施形態において、好適なデプリケーションタイマは、アドレスがアプリケーションに割り当てられることができるかどうかを示すために、また、アドレスを用いるアプリケーションが、アドレスはデプリケートしたこと、及び新たなアドレスが要求されるべきであることを通知されるべきとき、用いられる。ＩＩＤベースのアドレスが共有バウンド状態３１４にある間、他のアプリケーションは同一のアドレスにバインドすることができ、従って、そのデプリケーションタイマが終了していない限り、それを共有することができる。
【００４２】
デプリケーションタイマは、ＩＩＤベースのアドレスの残りの好適な存続期間をそれが終了するまでカウントダウンするが、その時点で、アドレスはデプリケート（Deprecated）状態３１８に変化する。この時点で、共有ＩＩＤベースのアドレスを用いるアプリケーションは、アドレスがデプリケートされたので、アプリケーションは、当該アプリケーションがそのようにプログラムされている場合、新たなアドレスを要求できることを通知され得る。一旦、デプリケートされた共有アドレスを用いる全てのアプリケーションがアドレスを解放すると、その参照カウント（”Ref_cnt”）はゼロに等しくなり、この時点で、アドレスは削除され、システムはフリー状態３００に移行するので、新たなＩＩＤを生成し、アドレスを割り当てる処理を継続することができる。
【００４３】
使用可能な状態３０６に戻り、アプリケーションが一意なアドレスを要求した場合、ＩＩＤベースのアドレスは、要求しているアプリケーションのみに割り当てられ、状態機械は一意な（Unique）状態３１６に進む。一意な状態３１６において、アプリケーションは一意なアドレスにバインドされ、当該アドレスはアプリケーションによって制御される。一旦、一意なアドレスがアプリケーションに割り当てられると、システムは、もはや当該アドレスを他の如何なるアプリケーションにも割り当てることができない。しかしながら、一意なアドレスを割り当てられた最初のアプリケーションは、他のアプリケーション又は処理が一意なアドレスにバインドすることを許可し得る。従って、一意な状態３１６において、一意なアドレスの制御は、要求しているアプリケーションに渡される。デプリケーションタイマは、一意なアドレスのアプリケーションへの割り当て時に開始されるが、このタイマの終了の当該アプリケーションへの如何なる通知も、一意なアドレスについてはオプションである。単一のアプリケーションのみが一意なアドレスを用いるので、アプリケーションがアドレスを使用することを止めるまで、システムはアプリケーションにアドレスを解放するように指示する（prompt）必要はない。デプリケーションタイマが用いられ、終了した場合、アプリケーションはこの事実を通知され得るが、アドレスはシステムによってデプリケートされない。しかしながら、本明細書に記載されるように、アプリケーションが一意なアドレスを解放するとすぐに、これはその参照カウントをゼロにデクリメントするが、解放された一意なアドレスはシステムによって削除される。
【００４４】
アプリケーションの動作の速度を速めるために、アプリケーションがアドレスを要求したときには、ＩＩＤ又はアドレスが常に使用可能なことを確実にすることが望ましい。これは、プライベートＩＩＤをセッション確立時に生成し、別のプライベートＩＩＤをアプリケーションが要求を行うときに自動的に生成することによって為され得る。これは、余分なＩＩＤ（又はアドレス）は常に確保されているため、プライベートアドレスのアプリケーションへのリターンの速度を増す。これは、モバイルハンドセットに採用され得るような、ブロードキャストインタフェースには重要である。というのは、ＤＡＤが、望ましくない遅延を通信の確立時又は継続時にもたらし得る幾らかの時間を要するためである。これらの方法を用いることで、予め検査されたアドレスはいつでも使用可能となり、アドレスが予期せずに削除されたとき、又は失効したときでも、アプリケーションのアドレス要求をサポートする準備ができる。プライベートＩＩＤを生成し割り当てる方法は、図４乃至図９を参照しつつ以下に記載される。
【００４５】
図４は、ＩＩＤ生成処理４００の例示の実施形態を示す。ステップ４０１で、アプリケーションがアドレスを要求したとき、又はシステムがルータ広告を受信したとき、ＩＩＤ生成処理は開始され得る。ステップ４０２で、処理は一時的なＩＩＤとして用いられるべき６４ビットの乱数を生成する。任意の公知の乱数生成アルゴリズムを用いてこの数を生成してもよく、またモバイルハンドセットの場合、リンク制御データは急速に変化し、所与の瞬間においてあらゆるモバイルハンドセットにおいて大概異なるので、様々なリンク制御データをアルゴリズムのランダムなシード値として用いてもよい。ＩＩＤは無作為に生成されるので、テスト４０４で、既に装置によって採用されている、又はシステムに格納されているＩＩＤはテストされ、新たなＩＩＤが重複していないことが確認される。重複したＩＩＤが生成された場合（即ち、テスト４０４＝「Ｙｅｓ」）、処理は前のステップに戻って、ステップ４０２で別の６４ビットの乱数を生成する。このＩＩＤを生成及びテストする処理、即ち、ステップ４０２及び４０４は、重複しないＩＩＤが生成されるまで継続する。
【００４６】
生成されたＩＩＤがシステム上の如何なる既存のＩＩＤにも一致しない場合（即ち、テスト４０４＝「Ｎｏ」）、ステップ４０６で、新たに作成されたＩＩＤは、アドレスが要求されたインタフェースに関連付けられたバッファ又はメモリに格納される。次に、テスト４０８で、処理は、ＩＩＤがブロードキャストネットワークで用いられるのかを判定する。インタフェースがブロードキャストメディアに用いられないであろう場合（即ち、テスト４０８＝「Ｎｏ」）、ステップ４２４で、ＩＩＤは、アプリケーションへの割り当て用のアドレスを生成するのに使用可能とされるが、その後、ステップ４２２で、処理はそれを呼び出した処理又はルーチンに戻ることができる。一実施形態において、ステップ４０６で、新たに生成されたＩＩＤは、バッファ又はメモリに格納されるアドレスを作成するために用いられてもよい。
【００４７】
ＩＩＤがブロードキャストネットワークで用いられる場合（即ち、テスト４０８＝「ｙｅｓ」）、ステップ４１０で、処理はＩＩＤの状態を試験的に設定し、ステップ４２０で、ＤＡＤ処理を開始する。リンクのどちらの終端のノードのＩＩＤも通常分かっているので、ＤＡＤ処理はポイント・ツー・ポイントのネットワークについて実行される必要はない。なおこれは、今日の３Ｇネットワークの場合である。ＤＡＤを開始すると、ステップ４２２で、処理はそれを呼び出した処理又はルーチンに戻ることができる。ＤＡＤ処理は、ＩＩＤ（又はＩＩＤに基づくアドレス）がブロードキャストノード上の別のＩＩＤ（又はアドレス）の重複であると判定し得るので、ＤＡＤ処理４２０の結果はテストされる必要があるであろう。このテストは図６を参照しつつ以下に記載される。一実施形態において、処理は、ＤＡＤ処理４２０から図６に示されるＤＡＤ完了処理へ直接進み得る。別の実施形態において、ＤＡＤテストは、図９を参照しつつ以下に記載されるように、ＩＩＤ生成処理内に含まれてもよい。
【００４８】
ＣＤＭＡ無線アプリケーションにおいては、各モバイルハンドセットがそれ自身のプレフィックスを所有するので、ＤＡＤ処理をアドレスに対して実行する必要がないことに留意すべきである。その代わり、ステップ４０４で、ＩＩＤがモバイルハンドセットで用いられる別のＩＩＤに一致しないことを確認することは、当該アドレスが冗長的ではないことを確認するのに充分である。従って、ＤＡＤ処理及び試験的な状態におけるＩＩＤの処理を含む実施形態の処理は、ＣＤＭＡネットワークインタフェースでは実施されなくてもよい。これは、ＣＤＭＡモバイルハンドセットが種々の実施形態を採用しないことを意味するものではない。というのは、ＷｉＭａｘ、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ等のような広域無線（wide-area wireless）（ＷｉＦｉ）ネットワーク接続といった、他の無線ネットワーク接続及び有線ネットワーク接続もまた、モバイルハンドセットによって用いられ得るからである。
【００４９】
アプリケーションがアドレスを要求し、ＩＩＤ又はアドレスが使用可能であるとき、当該アドレス（メモリ中のアドレスか、ＩＩＤとプレフィックスとの結合）はアプリケーションに割り当てられる必要がある。このアドレス割り当てを達成する例示の実施形態の処理は、図５に示されている。ステップ５００で、処理はサブルーチン又はアプリケーションの呼び出しとして開始され得るが、その後、テスト５０２で、処理はアプリケーションが共有アドレスを要求したかどうかを判定する。上述したように、アプリケーションが共有プライベートアドレスを要求するとき、当該プライベートアドレスは一つよりも多くのアプリケーションによって用いられ得る。アプリケーションが共有アドレスを要求した場合（即ち、テスト５０２＝「Ｙｅｓ」）、テスト５０４で、処理は（共有ＩＩＤに基づく）既存のアドレスが共有状態にあるのかどうかを判定する。上述したように、前のアプリケーションが既に共有アドレスを要求し、共有アドレスが割り当てられた場合、アドレス（又はアドレスを生成するために用いられるＩＩＤ）は共有状態にあり得る。ＩＩＤ（又はアドレス）が共有状態にあり、使用可能な場合（即ち、テスト５０４＝「Ｙｅｓ」）、ステップ５０６で、アプリケーションは共有アドレスが使用可能であることを通知され、当該アドレスを供給される。アプリケーションのアドレス要求を満たすと、新たなＩＩＤが作成される必要はないので、ステップ５２４で処理は終了するか、当該処理を呼び出したルーチンに戻る。
【００５０】
アプリケーションが共有アドレスを要求したが、アドレス又はＩＩＤが共有状態に無い場合（即ち、テスト５０４＝「Ｎｏ」）、又はアプリケーションが一意なアドレスを要求した場合（即ち、テスト５０２＝「Ｎｏ」）、テスト５０６で、処理はＩＩＤ又はアドレスが使用可能な状態にある（即ち、ＩＩＤ又はアドレスが割り当て用に使用可能である）かどうかを判定する。図３を参照しつつ使用可能な状態３０６について上述したように、ＩＩＤは、当該ＩＩＤがアプリケーションに割り当てることができるアドレスを作成するために用いられる準備ができている場合、使用可能な状態にある。同様に、アドレスは、当該アドレスをアプリケーションに割り当てることができる場合、使用可能な状態にある。ＩＩＤ又はアドレスが使用可能な状態にある場合（即ち、テスト５０６＝「Ｙｅｓ」）、テスト５０８で、処理は再び、アプリケーションが一意のアドレスを要求しているのか、共有アドレスを要求しているのかをチェックする。アプリケーションが共有アドレスを要求していない場合（即ち、テスト５０８＝「Ｎｏ」）、５１０で、処理はＩＩＤ／アドレスの状態を共有に設定し、図４を参照しつつ上述したように、別のＩＩＤの生成、即ち処理４００を開始する。この新たなプライベートＩＩＤは、アドレスが要求されるまでメモリ又はバッファに格納され得るか、要求されるまでメモリ又はバッファに格納される新たなプライベートアドレスを生成するために用いられ得る。次いで、ステップ５０６で、アプリケーションは、共有アドレスが使用可能であり、ＩＩＤベースのアドレスが供給されることを通知される。アプリケーションのアドレス要求を満たすと、ステップ５２４で、処理は終了するか、処理を呼び出したルーチンに戻る。
【００５１】
アプリケーションが一意なアドレスを要求している場合（即ち、テスト５０８＝「Ｙｅｓ」）、ステップ５１２で、処理はＩＩＤ又はアドレスの状態を設定し、図４を参照しつつ上述したように、別のＩＩＤの生成、即ち処理４００を開始する。この新たなプライベートＩＩＤは、アドレスが要求されるまでメモリ又はバッファに格納されてもよいし、要求されるまでメモリ又はバッファに格納される新たなプライベートアドレスを生成するために用いられてもよい。ステップ５０６で、アプリケーションは次いで、一意なアドレスが使用可能であり、ＩＩＤベースのアドレスが供給されることを通知される。アプリケーションのアドレス要求を満たすと、ステップ５２４で、処理は終了するか、処理を呼び出したルーチンに戻る。
【００５２】
ＩＩＤ又はアドレスが使用可能な状態に無い場合（即ち、テスト５０６＝「Ｎｏ」）、テスト５１４で、処理はＩＩＤが試験的な状態にあるのか判定する。図３を参照しつつ試験的な状態３０４について上述したように、ＩＩＤがＤＡＤ処理を受けている場合、ＩＩＤは試験的な状態にある。ＩＩＤが試験的な状態にある場合、ステップ５１６で、処理はアプリケーションに対して、アドレスが使用可能になればすぐに当該アプリケーションに通知されるであろうことを知らせ、ステップ５１８で、アドレスを作成するためにプライベートＩＩＤが使用可能になるまで、未解決の（outstanding）アプリケーション要求はキューに入れられる。新たなプライベートＩＩＤが生成されるべきかどうかを判定するために、テスト５２０で、処理はアプリケーションが一意なアドレスを要求したかどうかを判定する。アプリケーションが一意なアドレスを要求した場合、図４を参照しつつ上述したように、ステップ４００で、処理は新たなプライベートＩＩＤを生成する。この新たなプライベートＩＩＤは、アドレスが要求されるまでメモリ又はバッファに格納されてよいし、要求されるまでメモリ又はバッファに格納される新たなプライベートアドレスを生成するのに用いられても良い。ＩＩＤはＤＡＤ処理を試験的な状態で待っているので、要求しているアプリケーションに割り当てられるべきアドレスを生成するのに用いられることはまだできず、従って、ステップ５２４で、処理は終了するか、処理を呼び出したルーチンに戻る。ＩＩＤベースのアドレスは、図６を参照しつつ以下に記載されるように、ＤＡＤ処理が完了するときに、要求しているアプリケーションに割り当てられるであろう。
【００５３】
アプリケーションが一意なアドレスを要求しなかった場合（即ち、テスト５２０＝「Ｎｏ」）、テスト５２２で、処理はこれが共有アドレスへの最初の要求であるのかどうかを判定する。それが共有アドレスへの最初の要求ではない場合、生成されるべき新たなＩＩＤ又は割り当てられるべきアドレスは無いか、ＩＩＤは、要求しているアプリケーションにまだ割り当てられることができないように、ＤＡＤ処理を試験的な状態で待っているので、ステップ５２４で、処理は終了するか、処理を呼び出したルーチンに戻る。ＩＩＤに基づいたアドレスは、図６を参照しつつ以下に記載されるように、ＤＡＤ処理が完了するときに、要求しているアプリケーションに割り当てられるであろう。
【００５４】
これが共有アドレスへの最初の要求である場合（即ち、テスト５２２＝「Ｙｅｓ」）、アドレスは割り当てられ、置換される必要があるので、図４を参照しつつ上述されるように、処理４００で、新たなプライベートＩＩＤが生成される。ＩＩＤは、ＤＡＤ処理を試験的な状態で待っているので、ＩＩＤに基づくアドレスは、要求しているアプリケーションにまだ割り当てられることはできず、従って、ステップ５２４で、処理は終了するか、処理を呼び出したルーチンに戻る。ＩＩＤに基づくアドレスは、図６を参照しつつ以下に記載されるように、ＤＡＤ処理が完了するときに、要求しているアプリケーションに割り当てられるであろう。
【００５５】
テスト５１４の、ＩＩＤが試験的な状態にあるかどうかの判定に戻ると、ＩＩＤが試験的な状態にない場合（即ち、テスト５１４＝「Ｎｏ」）、これはＩＩＤが生成されず、メモリ中で使用可能であるか、ＤＡＤ処理を受けていることを示す。この場合、図４を参照しつつ上述したように、処理４００で、処理は別のＩＩＤの生成を開始し得る。処理は次いで、テスト５２６で、ＩＩＤの生成が成功したかどうかをテストし、成功した場合、テスト５２８で、ＩＩＤは試験的な状態にあるかどうかテストし得る。ＩＩＤがこの時点で試験的な状態にある場合（即ち、テスト５２８＝「Ｙｅｓ」）、ＩＩＤはＤＡＤ処理を受けており、従って、ステップ５１６で、アプリケーションは、アドレスが使用可能になったときに通知されるであろうことを知らされる。その後、処理はステップ５１８乃至５２４について上述したように継続する。例えば、アプリケーションからの要求が共有ブロードキャストアドレスであった場合、テスト５１４の後に生成されたＩＩＤはＤＡＤ処理を受け、従って、テスト５２８は「Ｙｅｓ」であろうし、テスト５２０は「ｎｏ」であろうし、またテスト５２２は「ｙｅｓ」であろう。というのは、最初に使用可能なブロードキャストアドレスは無いからである。結果として、ステップ５２４で、処理が終了するか、処理を呼び出したルーチンに戻る前に、処理４００で、第２のプライベートＩＩＤが生成されるであろう。
【００５６】
プライベートＩＩＤの生成の成功後、ＩＩＤは試験的な状態にないと判定される場合（即ち、テスト５２８＝「Ｎｏ」）、これはアプリケーションが非ブロードキャストアドレスを要求したことを示す（なぜなら、ＤＡＤ処理が開始されなかったからである）。この状況では、テスト５０８で、処理は、アプリケーションが一意なアドレスを要求したかを判定することによって継続する。その後、処理はステップ５０８−５１０−４００−５０６、又は５０８−５１２−４００−５０６について上述したように継続する。
【００５７】
プライベートＩＩＤの生成（テスト５１４後の処理４００）が成功しなかったと判定される場合（即ち、テスト５２６＝「Ｎｏ」）、これは、何らかの理由により、非冗長的なＩＩＤの生成を除外した、誤り状態が存在することを示す。この状況において、アドレスへの要求を処理することを継続するのは意味が無いので、ステップ５３０で、アプリケーションは、誤りが発生したことを通知され、ステップ５２４で、処理が終了するか、処理を呼び出したルーチンに戻る。
【００５８】
ＤＡＤ処理の期間にプライベートＩＩＤ及びアドレスを管理する例示の実施形態の処理が図６に示されている。ステップ６００で、図４を参照しつつ上述したＩＩＤ生成処理において開始されたＤＡＤ処理（ステップ４２０参照）が完了すると、処理が開始される。処理は最初に、テスト６０２で、ＤＡＤ処理が成功したか判定する。ＤＡＤ処理が成功した場合、システム上に一致するアドレスは無いので、ＩＩＤを用いて非冗長的なブロードキャストアドレスを生成することができ、ステップ６０５で、処理はＩＩＤ状態を「使用可能」に設定する。ＩＩＤが使用可能な状態にある状態では、ＩＩＤを用いてアプリケーションへの割り当て用のアドレスを生成できるので、テスト６０６で、処理はアプリケーションアドレス要求で未解決のものがあるか判定する。未解決のアプリケーションアドレス要求がある場合（即ち、テスト６０６＝「Ｙｅｓ」）、ステップ７００で、処理は未解決のアドレス要求をサービスし（services）、図７を参照しつつ以下に記載される処理を開始する。一旦、それらの処理が完了する（即ち、一つ又は複数のアプリケーションにＩＩＤが割り当てられる）と、ステップ６０８で、処理は終了するか、処理を呼び出したルーチンに戻る。しかしながら、アプリケーションアドレス要求で未解決のものが無い場合（即ち、テスト６０６＝「Ｎｏ」）、ステップ６０８で、処理は終了するか、処理を呼び出したルーチンに戻る。
【００５９】
ＤＡＤ処理は成功しなかったと処理が判定する場合（即ち、テスト６０２＝「Ｎｏ」）、テスト６１０で、処理は、ＩＩＤが冗長的であると分かる場合、異なるＩＩＤを確認するための複数回の試行をＤＡＤ処理が許可するか調べるために、チェックし得る。処理が複数回の試行を許可せず、最大限の試行を上回っていない場合（即ち、テスト６１０＝「Ｎｏ」）、図４を参照しつつ上述したように、ステップ４００で、処理は新たなプライベートＩＤの生成を開始することを進める。アプリケーションはブロードキャストアドレスを要求したので（これはＤＡＤ処理が開始されることを引き起こす）、処理４００で、新たなＩＩＤを生成する処理はまた、ＤＡＤ処理（図４のステップ４２０参照）を開始するであろうし、点線で示されるように、当該処理は図６に示される処理の始まり、即ちステップ６００に戻るであろう。
【００６０】
処理が最大限の試行回数を許可しない場合、又は最大限の試行回数を超えた場合（即ち、テスト６１０＝「Ｙｅｓ」）、ステップ６１２で、処理はＩＩＤ状態を「フリー」に設定して、使用可能なＩＩＤが無いことを示し、ステップ７００で、未解決のアドレス要求をサービスし、図７を参照しつつ以下に記載される処理を開始する。一旦、それらの処理が完了する（即ち、一つ又は複数のアプリケーションにＩＩＤが割り当てられる）と、ステップ６０８で、処理は終了するか、処理を呼び出したルーチンに戻る。
【００６１】
未解決のアプリケーションアドレス要求にサービスする（servicing）例示の実施形態の処理、即ち処理７００は、図７に示されている。ステップ７０２で、処理７００は、ＩＩＤが使用可能な状態にあるとき、アプリケーションからのアドレス要求に応答して、システムによって、又は、図６を参照しつつ上述したＤＡＤ完了ハンドリング処理の完了によって、起動され得る。処理は最初に、テスト７０４で、要求が共有アドレスへのものかどうか判定する。要求が共有アドレスへのものである場合、テスト７０６で、処理はＩＩＤが使用可能な状態にあるかどうか判定し、それが使用可能な状態にある場合、ステップ７０８で、処理はＩＩＤ又はアドレスの状態を共有に設定する。処理は次いで、ステップ７１０で、アプリケーションに対してアドレスが使用可能であることを示し、ステップ７１２で、要求を共有キューから除去する。処理は更に、テスト７１４で、共有キューにまだ要求が存在するか判定し、存在しない場合、ステップ７１６で、処理は終了するか、処理を呼び出した処理又はルーチンに戻る。まだアドレス要求が共有キューに存在する場合（即ち、テスト７１４＝「Ｙｅｓ」）、処理はステップ７１０に戻って、共有キューの次の要求を有するアプリケーションに対して、共有アドレスが使用可能であることを示すが、その後、ステップ７１２で、要求は共有キューから除去され、７１４で、処理は、共有キューにまだ要求が存在するかどうか再び判定する。
【００６２】
ＩＩＤが使用可能な状態に無い場合（即ち、テスト７０６＝「Ｎｏ」）、ステップ７１８で、処理はアプリケーションにＤＡＤ処理の失敗が発生したこと、及び結果として、アドレスを提供するのに更なる遅延があるであろうことを通知する。アドレス要求は次いで、ステップ７１２で、共有キューから除去される。テスト７２２で、処理は更に、共有キューにまだ要求が存在するか判定し、存在しない場合、ステップ７１６で、処理は終了するか、処理を呼び出したルーチンに戻る。しかしながら、共有キューにまだ要求が存在する場合（即ち、テスト７２２＝「Ｙｅｓ」）、処理はステップ７１８に戻ってＤＡＤの失敗とアドレスの遅延を共有キューの次のアプリケーションに示し、その後、ステップ７２０で、要求は共有キューから除去され、７２２で、処理は共有キューにまだ要求が存在するかどうか再び判定する。
【００６３】
要求が共有アドレスへのものではなく、従って一意なアドレスへのものである場合（即ち、テスト７２２＝「Ｎｏ」）、テスト７２４で、処理はＩＩＤ（又はアドレス）が使用可能な状態にあるかどうかを判定する。ＩＩＤが使用可能な状態にある場合、ステップ７２６で、処理はＩＩＤ（又はアドレス）の状態を一意に設定し、ステップ７２８で、アプリケーションにアドレスが使用可能であることを示し、ステップ７３０で、共有キューから要求を除去する。処理は次いで、ステップ７１６で、終了するか、処理を呼び出したルーチンに戻る。
【００６４】
テスト７２４でＩＩＤ又はアドレスが使用可能な状態に無い場合（即ち、テスト７２４＝「Ｎｏ」）、ステップ７３２で、処理はアプリケーションにＤＡＤ処理の失敗が発生したこと、及び結果として、アドレスが供給されないかもしれないことを通知する。アドレス要求は次いでステップ７３４で、共有キューから除去され、ステップ７１６で、処理は終了するか、処理を呼び出した処理又はルーチンに戻る。この状況は、ＤＡＤ処理が不成功に終わり（即ち、図６のテスト６０２＝「Ｎｏ」）、ＩＩＤの生成における最大限の再試行回数を超えた（即ち、図６のテスト６１０＝「Ｙｅｓ」）場合に達し得ることに留意されたい。
【００６５】
図７に示され、上述されたアドレス割り当て処理の実施形態において、アドレスは要求が受信された順番でアプリケーションに対して割り当てられる。従って、新たなアドレスが各々生成されると、それはキューに残存している第１のアプリケーションに割り当てられる（先入先出法）。
【００６６】
初めてアドレスが要求されたときに遅延が無いことを確実にするために、システムは、図８に示されるように、アプリケーションからの保留の要求が存在する前のセッション確立時に、プライベートＩＩＤ又はアドレスを生成することができる。この処理は、ステップ８００で、セッションが確立されるときに始まる。例えば、この処理は、ＩＰアドレスを作成すべくＩＩＰと結合して用いられるべきプレフィックスを供給するルータ広告（ＲＡ）を装置が受信したときに開始され得る。処理は、図４を参照しつつ上述されたＩＩＤ生成処理４００を用いてプライベートＩＩＤを生成すべく進む。処理は、アドレスが要求時にアプリケーションに割り当てられる準備ができていることを示す、使用可能な状態（図４に示されるステップ４２４参照）にあるプライベートＩＩＤを作成する。このプライベートＩＩＤは、アドレスが要求されるまで、又は要求されるまでメモリ又はバッファに格納される新たなプライベートアドレスを生成するのに用いられるまで、メモリ又はバッファに格納され得る。この処理はインタフェースごとに繰り返され得る。ブロードキャストインタフェースの場合、ＩＩＤはＤＡＤ処理（図４に示されるステップ４２０参照）を受けるであろう。一旦、プライベートＩＩＤ又はアドレスが作成されると、ステップ８０４で、処理は終了するか、処理を呼び出した処理又はルーチンに戻る。
【００６７】
前述の実施形態の処理は、本発明の実行し得る実施の例として提供され、当該処理のバリエーションは特許請求の範囲内にある。例えば、プライベートＩＩＤ及びアドレスをＤＡＤの期間及びＤＡＤの後に管理する処理は、図９に示されるように、ＩＩＤを生成する処理４００内に組み込まれ得る。この結合されたＩＩＤ生成処理４００Ａは、図４を参照しつつ上述したのと同一のステップを含み（図４の記載は、図９に示されるステップのように、参照することでここに組み込まれる）、図５及び図６に示されるステップを追加する。特に、ステップ４０８で、アドレスはブロードキャストメディア用であることを判定するとき、ステップ４１０で、処理はＩＩＤの状態を試験的と設定し、ステップ５１６で、アプリケーションに対してアドレスが使用可能なときに通知されるであろうことを示し、ステップ５１８で、アドレス要求をキューに入れ、ステップ４１２でＤＡＤ処理を開始する。ＤＡＤ処理４１２が完了すると、テスト６０２で、処理はＤＡＤが成功した（即ち、ＩＩＤは冗長的でない）かどうかを判定し得る。ＤＡＤが成功した場合、ステップ４２４で、ＩＩＤの状態は使用可能に設定され、ステップ４２２で、処理は当該処理を呼び出したルーチンに戻る。
【００６８】
ＤＡＤ処理が成功しなかった場合（即ち、テスト６０２＝「Ｎｏ」）、処理は、テスト６１０で、ＩＩＤが冗長的であると分かった場合、異なるＩＩＤを確認するための複数回の試行をＤＡＤ処理が許可するか調べるためにチェックし得る。処理が複数回の試行を許可し、最大限の試行回数を超えていない場合（即ち、テスト６１０＝「Ｎｏ」）、ステップ９０４で、重複するＩＩＤは削除され得るが、その後、処理はステップ４０２に戻って別の６４ビットの乱数を生成する。このループは、ＤＡＤ処理が成功する（即ち、テスト６０２＝「Ｙｅｓ」）か、使用可能なＩＩＤを生成する最大限の試行回数を超える（即ち、テスト６１０＝「Ｙｅｓ」）まで、継続され得る。
【００６９】
処理が最大限の試行回数を許可しない場合、又は最大限の試行回数を超えた場合（即ち、テスト６１０＝「Ｙｅｓ」）、ステップ６１２で、処理はＩＩＤの状態を「フリー」に設定して、使用可能なＩＩＤ又はアドレスが無いことを示し、ステップ４２２で、処理は当該処理を呼び出したルーチンに戻る。
【００７０】
上述した種々の実施形態は、様々な有線及び無線のネットワークに有線及び無線のインタフェースを介して接続するソフトウェア及び回路を備えるように構成されたモバイルハンドセットに実施し得る。図１０は、携帯電話、マルチメディアインターネットが利用可能な携帯電話、パーソナルデジタルアシスタント、電子音楽ファイル（例えば、ＭＰ３）プレーヤ、及び／又は無線電子メール受信器のうちのいずれでもあり得る、そのようなモバイルハンドセット１０の例示の実施形態のブロック図を提供する。そのようなモバイルハンドセット１０は、ディスプレイ１３とメモリ１２に結合されたプロセッサ１１を備え得る。モバイルハンドセット１０はまた、例えば携帯電話データ受信器、有線の（例えば、ＦｉｒｅＷｉｒｅ（登録商標））データリンク、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線データリンク、及び赤外線データリンク（図示せず）といった、多数のデータ入力／出力インタフェースを備え得る。例えば、モバイルハンドセット１０は、無線ネットワーク送信器／受信器ノード（図示せず）から電磁波信号を受信するアンテナ１４と、無線信号を受信し、信号をプロセッサ１１に中継されるデジタルデータに変換する、アンテナ１４に結合される無線トランシーバ１５を備え得る。同様に、Ｂｌｕｅｔｏｏｔｈ（登録商標）又は類似のローカルな無線データリンクは、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ、ＷｉＭａｘ等に接続されるアンテナ１４（又は別個に図示されない別のアンテナ）と、受信された無線信号をプロセッサ１１に中継されるデジタルデータに変換するトランシーバ１８を備え得る。データはまた、ＦｉｒｅＷｉｒｅ（登録商標）、ＵＳＢ、シリアル（例えば、ＲＳ−２３２）、又はイーサネット（登録商標）データリンクといった、有線のデータリンクを用いて、モバイルハンドセット１０に送信され、またモバイルハンドセット１０から送信される。例えば、データは、ＦｉｒｅＷｉｒｅモデム回路２０に結合されたＦｉｒｅＷｉｒｅ（登録商標）データコネクタ１９を手段として送信され得る。ＦｉｒｅＷｉｒｅモデム回路２０は、コネクタ１９から受け取るデータを、プロセッサ１１に中継されるデジタルデータに変換する。当分野で周知のように、他の有線のデータリンクは、特定のデータリンクに適当な同様の回路を伴い得る。
【００７１】
携帯電話データ受信器１５、有線データリンク１９、２０、無線データリンク１８、及びＩＲデータリンク（図示せず）の各々は、アプリケーションがプロセッサに対して共有アドレス又は一意なアドレスを供給するように要求し得るインタフェースである。また、データを他のモジュール及びコプロセッサ間でやり取りするために、他のインタフェースがモバイルハンドセット１０内に実装されてもよい。従って、プライベートアドレスを用いてデータ接続を確立するために、アプリケーションはアドレスをインタフェースから取得し、そのソケットのうちの一つを当該アドレスにバインドしなければならない。
【００７２】
プライベートアドレスは、上述した実施形態の方法のうちの一つ又は複数を実行するプロセッサ１１によって、例えば該方法のうちの一つ又は複数を実施するように構成されたソフトウェア命令を実行することによって、生成され得る。そのようなソフトウェア命令は、ＡＰＩとして、デバイスのオペレーティングシステムの一部として、又は実施形態の方法を実施するコンパイルされたソフトウェアとして、メモリ１２に格納され得る。
【００７３】
プロセッサ１１は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは他のプログラマブルロジックデバイス、ディスクリートゲート若しくはトランジスタロジック、ディスクリートハードウェアコンポーネント、又は、本明細書に記載される機能を実行すべく設計された、これらの任意の組み合わせであってよい。汎用プロセッサは、マイクロプロセッサであってもよいが、代替物として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械であってもよい。プロセッサはまた、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連動する一つ又は複数のマイクロプロセッサ、又は他の任意のそのような構成といった、コンピューティングデバイスの組み合わせとして実装されてもよい。
【００７４】
上述された種々の実施形態は、モバイルハンドセット１０といった装置が、アドレス要求に応答して、ＩＩＤが生成される場合には要求されるであろう、装置のパフォーマンスへの影響なしにプライベートアドレスを生成することを可能にする。種々の実施形態は、特に、プライバシーの懸念を増大させ、頻繁なネットワーク接続で動作する携帯電話装置との関連で有利である。プライベートアドレスの生成に関連付けられるリンク確立の遅延を防止することで、種々の実施形態はユーザの体験を改善することができる。
【００７５】
前述の実施形態の事象（events）を実施するために用いられるハードウェアは、一組の命令を実行するように構成された記憶素子及び処理素子であり得るが、当該一組の命令は上記の事象に対応する方法のステップを実行するためのものである。あるいは、一部の事象は、所与の機能に特有の回路によって実行されてもよい。
【００７６】
当業者は、本明細書に開示される実施形態に関連して記載される、種々の例示的な論理ブロック、モジュール、回路、及びアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、又は双方の組み合わせとして実施され得ることを認識するであろう。このハードウェアとソフトウェアの互換性を明確に例証するために、種々の例示的なコンポーネント、ブロック、モジュール、回路、及びステップは、概してそれらの機能性の観点から上述されている。そのような機能性がハードウェアとして実施されるか、ソフトウェアとして実施されるかは、システム全体に課される設計上の制約及び特定の適用例に依存する。熟練工は、記載された機能性を特定の適用例ごとに種々の方法で実施し得るが、そのような実施上の決定は、本発明の範囲からの逸脱をもたらすものとして解釈されるべきではない。
【００７７】
本明細書に開示される実施形態に関連して記載されるアルゴリズム又は方法のステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、又はこの２つの組み合わせで具現化され得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、又は当分野で公知の他の任意の形式の記憶媒体のうちのいずれであってもよい、プロセッサ読み取り可能なメモリ１２に存在し得る。例示の記憶媒体１１は、プロセッサ１１が記憶媒体１２から情報を読み出し、また記憶媒体１２に情報を書き込めるように、プロセッサ１１に結合される。代替案では、記憶媒体はプロセッサ１１と一体であってもよい。プロセッサ１１と記憶媒体１１はＡＳＩＣに存在し得る。ＡＳＩＣはユーザ端末に存在し得る。代替案において、プロセッサ１１と記憶媒体１２は、ユーザ端末中の別個のコンポーネントとして存在してもよい。
【００７８】
種々の実施形態の前述の記載は、如何なる当業者も本発明を作成又は使用することを可能にすべく提供される。これらの実施形態に対する種々の変形は、当業者には容易に明白となるであろうし、本明細書に定義される一般的な原理は、本発明の範囲及び精神から逸脱することなく他の実施形態にも適用され得る。従って、本発明は本明細書に示される実施形態に限定されることを意図されたものではなく、それよりも特許請求の範囲は本明細書に開示される新規な特徴及び原理と合致する最も広範な範囲に一致すべきである。
【図１】
2010504720.tif 000003
【図２】
2010504720.tif 000004
【図３】
2010504720.tif 000005
【図４】
2010504720.tif 000006
【図５】
2010504720.tif 000007
【図６】
2010504720.tif 000008
【図７】
2010504720.tif 000009
【図８】
2010504720.tif 000010
【図９】
2010504720.tif 000011
【図１０】
2010504720.tif 000012
【国際調査報告】
2010504720.tif 000013
2010504720.tif 000014