(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024132119
(43)【公開日】2024-09-30
(54)【発明の名称】通信装置、通信方法及びプログラム
(51)【国際特許分類】
H04W 40/02 20090101AFI20240920BHJP
H04W 84/18 20090101ALI20240920BHJP
【FI】
H04W40/02
H04W84/18
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023042792
(22)【出願日】2023-03-17
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】317015294
【氏名又は名称】東芝エネルギーシステムズ株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】小堺 康之
(72)【発明者】
【氏名】米山 清二郎
(72)【発明者】
【氏名】小林 崇裕
【テーマコード(参考)】
5K067
【Fターム(参考)】
5K067DD11
5K067EE02
5K067EE06
5K067EE10
5K067EE25
(57)【要約】 (修正有)
【課題】マルチホップネットワークの安定化までにかかる時間を短縮する通信装置、通信方法およびプログラムを提供する。
【解決手段】通信システム1において、通信ノード4は、マルチホップネットワークの制御パケットの送信タイミングを遅らせる遅延時間を調整する。遅延時間は、トラフィック検知量に応じて決定され、ネットワークに接続完了した場合の遅延時間は、ネットワーク接続未完了の場合の遅延時間よりも長く、また、親となるノードが決定している場合の遅延時間は、親が未決定である場合の遅延時間よりも長い。
【選択図】
図1
【特許請求の範囲】
【請求項1】
マルチホップネットワークの制御パケットの送信タイミングを遅らせる遅延時間を調整する通信装置。
【請求項2】
前記遅延時間は、トラフィック検知量に応じて決定される、
請求項1に記載の通信装置。
【請求項3】
ネットワークに接続完了した場合の前記遅延時間は、ネットワーク接続未完了の場合の前記遅延時間よりも長い、
請求項1又は2に記載の通信装置。
【請求項4】
親となるノードが決定している場合の前記遅延時間は、親が未決定である場合の前記遅延時間よりも長い、
請求項1又は2に記載の通信装置。
【請求項5】
認証処理またはネットワーク設定検知処理に失敗した場合に当該処理を中継した中継ノードに対するペナルティ値を加算し、前記ペナルティ値に基づいて接続する前記中継ノードを決定する、
請求項1又は2に記載の通信装置。
【請求項6】
Trickle AlgorithmのインターバルIの時間切れがあらかじめ設定された回数に達したときにネットワーク検知処理に戻る、
請求項1又は2に記載の通信装置。
【請求項7】
前記制御パケットは、NUD(Neighbor Unreachability Detection)用NS(Neighbor Solicitation)である、
請求項1に記載の通信装置。
【請求項8】
前記制御パケットは、ネットワーク認証パケットである、
請求項1又は2の通信装置。
【請求項9】
前記制御パケットは、DHCPv6 Solicit、DAO、またはARO(Address Registration Option)付NS(Neighbor Solicitation)である、
請求項1又は2の通信装置。
【請求項10】
認証処理、ネットワーク設定検知処理または経路制御処理に失敗した場合に当該処理を中継した中継ノードまたはネットワークに対するペナルティ値を加算し、前記ペナルティ値に基づいて接続する前記中継ノードを決定する、
通信装置。
【請求項11】
Trickle AlgorithmのインターバルIの時間切れがあらかじめ設定された回数に達したときにネットワーク検知処理に戻る、
通信装置。
【請求項12】
マルチホップネットワークの制御パケットの送信タイミングを遅らせる遅延時間を調整する通信方法。
【請求項13】
コンピュータに、請求項12に記載の通信方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、通信装置、通信方法及びプログラムに関する。
【背景技術】
【0002】
マルチホップネットワークに接続するための各処理フェーズにおいて通信タイミングを決めるロジックが適切でない場合、ネットワークへ接続完了するまでおよび接続先集約装置の切り替えに長時間かかる場合がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の解決しようとする課題は、マルチホップネットワークの安定化までにかかる時間を短縮することができる通信装置、通信方法及びプログラムを提供することである。
【課題を解決するための手段】
【0005】
実施形態の通信装置は、マルチホップネットワークの制御パケットの送信タイミングを遅らせる遅延時間を調整する。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態に係る通信システムの構成を示す図。
【
図2】第1の実施形態に係る通信ノードの構成を示す図。
【
図4】通信ノード4がネットワーク接続を確立する手順を示すフローチャート。
【
図5】ネットワーク検知の動作を示すフローチャート。
【
図6】認証中継ノードの更新処理の動作を示すフローチャート。
【
図7】認証中継ノードの更新処理の一例を示すシーケンス図。
【
図8】ネットワーク認証の動作を示すフローチャート。
【
図9】ネットワーク認証処理の一例を示すシーケンス図。
【
図10】ネットワーク設定検知の動作を示すフローチャート。
【
図11】ネットワーク設定検知処理の一例を示すシーケンス図。
【
図14】DHCPv6 Reply処理を示すフローチャート。
【
図15】NUD用NS送信処理を示すフローチャート。
【
図16】DHCP Solicit送信処理を示すフローチャート。
【
図17】ARO付NS送信処理を示すフローチャート。
【発明を実施するための形態】
【0007】
以下、実施形態の通信装置、通信方法及びプログラムを、図面を参照して説明する。
図1は、第1の実施形態に係る通信システム1の構成を示す図である。
通信システム1は、認証装置2、集約装置3、通信ノード4を備える。認証装置2は、集約装置3は、ネットワークを集約する装置である。集約装置3は、例えばマルチホップネットワークを集約する。集約装置3は、一般的にボーダールータ、コンレントレータ、ルートノードなどとも呼ばれる。
【0008】
図2は、第1の実施形態に係る通信ノード4の構成を示す図である。
通信ノード4は、ネットワーク検知部41、ネットワーク認証処理部42、ネットワーク設定検知部43、経路制御部44、記憶部46、無線部47、トラフィックモニタ48を備える。記憶部46及び無線部47以外の構成要素は、例えば、CPU(Central Processing Unit)などのハードウェアプロセッサがプログラム(ソフトウェア)を実行することにより実現される。これらの構成要素のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)などのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。プログラムは、予めHDD(Hard Disk Drive)やフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
【0009】
記憶部46は、例えばRAM(Random Access Memory)やHDD、フラッシュメモリなどを含む。記憶部46には、例えば、装置ごとのペナルティ値のデータなどが格納される。更に、記憶部46には、上述のプログラムが格納されてもよい。
【0010】
ネットワーク検知部41は、ネットワークを検知し、どのネットワークへ接続するかを決定する。ネットワーク認証処理部42は、認証装置2と相互認証を行い、暗号鍵を取得する。ネットワーク設定検知部43は、ネットワークの設定を検知する。経路制御部44は、親ノードを決定し、集約装置3に通知する。無線部47は、外部装置と通信を行う。無線部47は、例えば親ノードを経由して他の装置と通信を行う。トラフィックモニタ48は無線部47が受信したデータのトラフィック量を計測する。
【0011】
通信ノード4は、ネットワークの制御パケットを、中継する通信装置や集約装置3などに送信する。制御パケットは、例えばNUD(Neighbor Unreachability Detection)用NS(Neighbor Solicitation)、ネットワーク認証パケット、DHCPv6 Solicit、DAO(Destination Advertisement Object)、またはARO(Address Registration Option)付NS(Neighbor Solicitation)が含まれる。ネットワーク認証パケットはより具体的には、EAPOL-keyなどである。
【0012】
ネットワーク認証処理部42、ネットワーク設定検知部43及び経路制御部44は、各々の処理が失敗した場合に、当該処理を中継したノードに対するペナルティ値をカウントする。
図3は、ペナルティ値の一例である。ペナルティ値は、ネットワークのグループ単位(例えばPAN ID)であってもよく、ノード単位(例えばノードのEUI-64アドレス)であってもよい。
ペナルティ値は、失敗した処理の内容により、異なる値であってもよい。
【0013】
図4は、通信ノード4がネットワーク接続を確立する手順を示すフローチャートである。初めにネットワーク検知部41は、ネットワーク検知処理を行う(ステップS1)。ネットワーク認証処理部42は、認証装置2と相互認証を行う(ステップS2)。ここでネットワーク認証処理部42が処理成功した場合(ステップS3:YES)、ステップS4に進むが、処理失敗した場合(ステップS3:NO)、ペナルティ値を登録し(ステップS8)、ステップS1に戻る。
【0014】
ネットワーク設定検知部43は、ネットワークの設定を検知する(ステップS4)。ここでネットワーク設定検知部43が処理成功した場合(ステップS5:YES)、ステップS6に進むが、処理失敗した場合(ステップS5:NO)、ペナルティ値を登録し(ステップS8)、ステップS1に戻る。
【0015】
経路制御部44は、親ノードを決定し、集約装置3に通知する(ステップS6)。ここで経路制御部44が処理成功した場合(ステップS7:YES)、ネットワーク接続が確立されたため、動作を終了する。経路制御部44が処理失敗した場合(ステップS7:NO)、ペナルティ値を登録し(ステップS8)、ステップS1に戻る。
【0016】
以下、各処理について詳細に説明する。
図5は、ネットワーク検知の動作を示すフローチャートである。
図5のフローチャートは、
図4におけるステップS1の動作を詳細に説明したものである。
図5において、ネットワーク検知部41は、RFC6206(The Trickle Algorithm)と呼ばれるアルゴリズムを用いてネットワークの検知を行う。
【0017】
ネットワーク検知部41は、初めに初期化処理を実施する(ステップS101)。つまり、ネットワーク検知部41は、認証中継ノードをなしに初期化し、認証中継ノードの候補のペナルティ値C_candidateを0に初期化する。認証中継ノードは、通信ノード4が送受信する認証パケットを中継するノードである。
【0018】
ネットワーク検知部41は、Trickle Timerをスタートする(ステップS102)。その後、ネットワーク検知部41は、PAN Advertisementを受信したか否かを判定する(ステップS103)。ネットワーク検知部41がPAN Advertisementを受信していた場合(ステップS103:YES)、認証中継ノードの更新処理を行う(ステップS104)、当該処理については後述する。
【0019】
ネットワーク検知部41がPAN Advertisementを受信していない場合(ステップS103:NO)、RFC6206により規定された時間に到達しているか否かを判定する(ステップS105)。ネットワーク検知部41がRFC6206により規定された時間に到達していると判定した場合(ステップS105:YES)、カウンタcが予め設定した値kよりも小さいか否かを判定する(ステップS106)。カウンタcが設定した値kよりも小さい場合(ステップS106:YES)、ネットワーク検知部41は、PAN Advertisement Solicitを送信する(ステップS107)。このとき、ネットワーク検知部41は、カウンタcを+1する。ネットワーク検知部41がRFC6206により規定された時間に到達していないと判定した場合(ステップS105:NO)、カウンタcが設定した値k以上である場合(ステップS106:NO)、ステップS108に進む。
【0020】
ネットワーク検知部41は、PAN Advertisement Solicit送信時点から時間D_pan_adv_solicit_end以上経過しており、かつ、認証中継ノードはあるか否かを判定する(ステップS108)。D_pan_adv_solicit_endは、予め設定される待ち時間であってもよいし、予め設定される回数であってもよいし、RFC6206で規定される方法で決定する次回のPAN Advertisement Solicit送信タイミングまたはインターバルの終了時点までの時間であってもよい。ネットワーク検知部41がPAN Advertisement Solicit送信時点から時間D_pan_adv_solicit_end以上経過しており、かつ、認証中継ノードがある場合には(ステップS108:YES)、動作を終了する。それ以外の場合は(ステップS108:NO)、ネットワーク検知部41はRFC6206の変数を変更し(ステップS109)、時間T_tick待機し(ステップS110)、再びステップS103の動作を繰り返す。時間T_tickは予め設定された時間である。
【0021】
図6は、認証中継ノードの更新処理の動作を示すフローチャートである。
図6に示すフローチャートは、
図5におけるステップS104の動作を詳細に説明したものである。
ネットワーク検知部41は、受信したPAN Advertisementに基づいて、新たなノードのコストC_newを算出する(ステップS1041)。
【0022】
次に、ネットワーク検知部41は、PAN Advertisementに記載されたPAN IDに対するペナルティ値が記憶部46に存在するか判定する(ステップS1042)。PAN Advertisementに記載されたPAN IDに対するペナルティ値が記憶部46に存在する場合(ステップS1042:YES)、ネットワーク検知部41はPAN IDに対するペナルティ値をC_newに加算する(ステップS1043)。PAN Advertisementに記載されたPAN IDに対するペナルティ値が記憶部46に存在しない場合(ステップS1042:NO)、ネットワーク検知部41はステップS1044に進む。
【0023】
ネットワーク検知部41は、PAN Advertisementの送信元EUI64アドレスに対するペナルティ値が記憶部46に存在するか判定する(ステップS1044)。PAN Advertisementの送信元EUI64アドレスに対するペナルティ値が記憶部46に存在する場合(ステップS1042:YES)、ネットワーク検知部41はPAN Advertisementの送信元EUI64アドレスに対するペナルティ値をC_newに加算する(ステップS1045)。PAN Advertisementの送信元EUI64アドレスに対するペナルティ値が記憶部46に存在しない場合、ネットワーク検知部41はステップS1046に進む。
【0024】
なお、
図6はPAN IDおよび認証中継ノードのアドレスの両方を記憶部46から検索する例を示す。本発明の実施にあたっては、少なくともいずれかでもよい。具体的には、ネットワーク検知部41は、ステップS1042~S1043、またはS1044~S1045のいずれかの動作を行わなくてもよい。
【0025】
ネットワーク検知部41は、現時点における認証中継ノードの候補のコストC_candidateとC_newとを比較する(ステップS1046)。C_candidateがC_newよりも大きい場合(ステップS1046:YES)、ネットワーク検知部41は、認証中継ノードをPAN Advertisementの送信元ノードに変更する(ステップS1047)。C_candidateがC_new以下である場合(ステップS1046:YES)、ネットワーク検知部41は、動作を終了し、認証中継ノードの変更は行わない。
【0026】
ステップS1043及びステップS1045で加算されるペナルティ値は、
図4のステップS8で登録されたペナルティ値である。
【0027】
ここで、
図4のステップS8で記憶部46に登録されるペナルティ値を説明する。
図4のステップS8は、ネットワーク検知処理後のステップであるため、認証中継ノードを決定した後のステップである。例えば
図4のステップS8でネットワーク検知部41がPAN IDに紐づくペナルティ値を記憶部46に登録する場合、ネットワーク検知処理で決定した認証中継ノードから受信したPAN Advertisementに記載されたPAN IDとペナルティ値を登録してもよい。
【0028】
また、例えば認証中継ノードのEUI64アドレスに紐づくペナルティ値を記憶部46に登録する場合、ネットワーク検知処理で決定した認証中継ノードから受信したPAN Advertisementの送信元のEUI64アドレスとペナルティ値を登録してもよい。
【0029】
また、例えば認証中継ノードのEUI64アドレスに紐づくペナルティ値を記憶部46に登録する場合、
図4のステップS6で経路制御部が決定した親ノードのEUI64アドレスとペナルティ値を登録しても良い。
【0030】
ペナルティ値は
図4のステップS8の直前のステップに応じた異なる値でも良い。例えば、ステップS8の直前のステップS3、S5、S7それぞれに対するペナルティ値をP3、P5、P7としたとき、P3≧P5≧P7であってもよい。
または、ペナルティ値はステップS8が実行される回数に応じた異なる値であっても良い。例えば、ネットワーク検知処理で決定した認証中継ノードから受信したPAN Advertisementに記載されたPAN ID、またはEUI64アドレスについて、ステップS8が実行される回数が多いほど、大きなペナルティを記憶部46に登録しても良い。
以上が
図4のステップS8で記憶部46に登録されるペナルティ値の例である。
【0031】
図7は、認証中継ノードの更新処理の一例を示すシーケンス図である。
図7に示す例において、中継ノード5は、通信ノード4と集約装置3との認証中継ノードの候補となる通信装置である。
通信ノード4は、中継ノード5に対してPAN Advertisement Solicitを送信する(ステップT101~103)。この動作は、
図5に示すフローチャートにおいては、ステップS107に相当する。ネットワーク検知部41は、設定した値kより少ない回数PAN Advertisement Solicitを送信する。ここで、通信ノード4は、スキャン範囲内の全ての中継ノードにPAN Advertisement Solicitを送信する。PAN Advertisement Solicitを受信した中継ノード5は、通信ノード4にPAN Advertisementを送信する(ステップT104、105)。
【0032】
ネットワーク検知部41は、処理失敗に基づくペナルティ値を使用して認証中継ノードを更新する。ペナルティ値が大きいことは接続失敗の可能性が高いことを示す。そのため、ネットワーク検知部41はペナルティ値が大きい認証中継ノードとの接続を避けることで、接続切替に要する時間を短縮することができる。
【0033】
図8は、ネットワーク認証の動作を示すフローチャートである。
図8のフローチャートは、
図5のフローチャートにおけるステップS2の動作を詳細に説明したものである。ネットワーク認証処理部42は、初めにD_eapol_key_startを初期化する(ステップS201)。その後、ネットワーク認証処理部42は、D_eapol_key_start_initを計算し(ステップS202)、D_eapol_key_start_initで示された時間待機する(ステップS203)。待機後、ネットワーク認証処理部42は、集約装置3に認証中継ノード経由でEAPOL key Startを送信する(ステップS204)。ネットワーク認証処理部42は、D_eapol_key_startを計算し(ステップS205)、時間D_eapol_key_start経過する又はidentityメッセージを受信するまで待機する(ステップS206)。ネットワーク認証処理部42は、時間D_eapol_key_startが経過前にidentityメッセージを受信したか否かを判定する(ステップS207)。ネットワーク認証処理部42は、時間D_eapol_key_startが経過前にidentityメッセージを受信した場合(ステップS207:YES)、後述するステップS210の動作を行う。ネットワーク認証処理部42は、時間D_eapol_key_startが経過前にidentityメッセージを受信していない場合(ステップS207:NO)、最大待機時間を経過したか否かを判定する(ステップS208)。最大待機時間を経過している場合(ステップS208:YES)、ネットワーク認証処理部42は、処理失敗を返し(ステップS209)動作を終了する。最大待機時間を経過していない場合(ステップS208:NO)、ネットワーク認証処理部42は、再度ステップ204の動作から繰り返す。最大待機時間は予め決定された値である。
【0034】
ネットワーク認証処理部42は、identityメッセージの送信元に認証メッセージを送信する(ステップS210)。ネットワーク認証処理部42は、時間D_eapol_messageを計算する(ステップS211)。ネットワーク認証処理部42は、時間D_eapol_messageが経過する又は認証メッセージを受信するまで待機する(ステップS212)。時間D_eapol_message経過前に認証メッセージを受信した場合(ステップS213:YES)、ネットワーク認証処理部42は、認証メッセージを受信したかを判定する(ステップS214)。時間D_eapol_message経過前に認証シーケンスを完了できなかった場合(ステップS213:NO)、ネットワーク認証処理部42は、処理失敗を返す(ステップS221)。認証シーケンスを完了した場合(ステップS214:YES)、ネットワーク認証処理部42は、ステップS215に進む。認証シーケンスを完了していない場合(ステップS214:NO)、ステップS210に戻り、再度認証メッセージを送信する。
【0035】
ネットワーク認証処理部42は、時間D_eapol_key_messageを計算する(ステップS215)。ネットワーク認証処理部42は、時間D_eapol_key_messageが経過する又はEAPOL-keyメッセージを受信するまで待機する(ステップS216)。時間D_eapol_key_message経過前にEAPOL-keyメッセージを受信した場合(ステップS217)、ネットワーク認証処理部42は、応答メッセージを送信する(ステップS218)。時間D_eapol_key_message経過前にEAPOL-keyメッセージを受信しなかった場合(ステップS217:NO)、ネットワーク認証処理部42は処理失敗を返す(ステップS220)。
鍵受信シーケンスを完了した場合(ステップS219:YES)、ネットワーク認証処理部42は、処理成功を返す(ステップS220)。鍵受信シーケンスを完了していない場合(ステップS219:NO)、ネットワーク認証処理部42はステップS215に戻り、再度時間D_eapol_key_messageを計算する。
【0036】
ネットワーク認証処理部42は、時間D_eapol_key_start、D_eapol_key_start_init、D_eapol_message、D_eapol_key_messageを例えば以下に示す方法で計算する。ネットワーク認証処理部42は、これらの時間を例えば所定の時間においてトラフィックモニタ48が検知したトラフィック量F_traffic_recvに基づいて計算される。計算方法は、例えばR_traffic_recv(定数)とF_traffic_recvとの積をこれらの時間とする。
計算方法は、例えばF_traffic_recvの指数重み付き移動平均値F_traffic_recv_ewmaを用いて、R_traffic_recv_ewma(定数)とF_traffic_recv_ewmaとの積をこれらの時間とする。
【0037】
時間D_eapol_key_start、D_eapol_key_start_init、D_eapol_message、D_eapol_key_messageそれぞれに対する定数R_traffic_recvやR_traffic_recv_ewmaは異なる値であってもよい。D_eapol_messageには、認証装置2と最大ホップ数における通信ノード4との間の往復の通信遅延に余裕を加えた時間が設定されてもよい。なるべく早く認証シーケンスを開始するためD_eapol_key_start_initは0秒であってもよい。D_eapol_key_startは、RFC3115に従った設定にしてもよく、例えばIRTを3分、MRCを5、MRTを3、MRDを5として計算した値としてもよい。これにより大規模ネットワークにおいて参入時間を短縮するとともに集約装置からIdentityメッセージを受信できる十分長い時間とすることができる。D_eapol_messageは3分であってもよい。D_eapol_key_messageは1分であってもよい。これにより大規模ネットワークにおいて参入時間を短縮するとともに集約装置から認証メッセージを受信できる十分長い時間とすることができる。
【0038】
図9は、ネットワーク認証処理の一例を示すシーケンス図である。通信ノード4は、中継ノード5を経由して集約装置3にEAPOL-keyメッセージを送信する(ステップT201)。集約装置3は、Identityを通信ノードに送信する(ステップT202)。その後、通信ノード4と認証装置2間でネットワーク認証及び鍵受信シーケンスを行う(ステップT203)。通信ノード4は、ステップT201においてEAPOL-keyメッセージを送信する前に、時間D_eapol_key_start待機している。また、ステップT202において、通信ノード4がIdentityを受理するか否かは、時間D_eapol_key_startにより決定される。また、認証メッセージを受理するか否かはD_eapol_messageにより決定され、EAPOL-keyメッセージを受理するか否かはD_eapol_key_messageにより決定される。これにより、より自由度高くネットワークの設定方法を作成することができる。
【0039】
図10は、ネットワーク設定検知の動作を示すフローチャートである。
図10のフローチャートは、
図5のフローチャートにおけるステップS4の動作を詳細に説明したものである。ネットワーク設定検知部43は、Trickle Timerをスタートする(ステップS401)。ネットワーク設定検知部43は、PAN Configurationを受信したか否かを判定する(ステップS402)。ネットワーク設定検知部43は、PAN Configurationを受信した場合(ステップS402:YES)、処理成功を返し(ステップS411)、動作を終了する。ネットワーク設定検知部43は、PAN Configurationを受信していない場合(ステップS402:NO)、RFC6206により規定された時間に到達しているか否かを判定する(ステップS403)。
【0040】
ネットワーク設定検知部43がRFC6206により規定された時間に到達していると判定した場合(ステップS403:YES)、カウンタcが設定した値kよりも小さいか否かを判定する(ステップS404)。カウンタcが設定した値kよりも小さい場合(ステップS404:YES)、ネットワーク設定検知部43は、PAN Configuration Solicitを送信する(ステップS405)。このとき、ネットワーク設定検知部43は、カウンタcを+1する。ネットワーク設定検知部43がRFC6206により規定された時間に到達していないと判定した場合(ステップS403:NO)、カウンタcが設定した値k以上である場合(ステップS404:NO)、ステップS406に進む。
【0041】
ネットワーク設定検知部43はインターバルIが時間切れか否かを判定する(ステップS406)。インターバルIは、Trickle Algorithmで規定される。インターバルIが時間切れであるとき(ステップS406:YES)、ネットワーク設定検知部43はインターバルIの時間切れがn_pan_conf_solicit回目であるか否かを判定する(ステップS407)。n_pan_conf_solicitは、予め設定される値である。
インターバルIの時間切れがn_pan_conf_solicit回目である場合(ステップS407:YES)、ネットワーク設定検知部43は処理失敗を返す(ステップS410)。インターバルIの時間切れがn_pan_conf_solicit回目でない場合(ステップS407:NO)、ステップS402を再度行う。
【0042】
インターバルIが時間切れでないとき(ステップS406:NO)、ネットワーク設定検知部43はRFC6206に従う変数の変更処理を行い(ステップS408)、時間T_tick待機し(ステップS409)、ステップS402に戻る。
【0043】
図11は、ネットワーク設定検知処理の一例を示すシーケンス図である。通信ノード4は、中継ノード5に対してPAN Configuration Solicitを送信する(ステップT401、T402、T404)。この動作は、
図10に示すフローチャートにおいては、ステップS405に相当する。ネットワーク設定検知部43は、設定した値kより少ない回数PAN Advertisement Solicitを送信する。ここで、通信ノード4は、スキャン範囲内の全ての中継ノードにPAN Configuration Solicitを送信する。PAN Configuration Solicitを受信した中継ノード5は、通信ノード4にPAN Configuration を送信する(ステップT403、405)。
【0044】
ネットワーク設定検知処理において、インターバルIの時間切れがあらかじめ設定された回数に達したときに処理失敗とし、ネットワーク検知処理に戻ることで、周辺に通信ユニットが多い場合における装置の切り替えにかかる時間を短縮することができる。
【0045】
(経路制御)
図12は、経路制御の動作を示すフローチャートである。
図12のフローチャートは、
図5のフローチャートにおけるステップS6の動作を詳細に説明したものである。経路制御部44は、T_tickのタイマ開始する(ステップS601)。その後、経路制御部44は、DIS(DODAG Information Solicitation)を送信する(ステップS602)。経路制御部44は、DIO(DODAG Information Object)を受信するか、DHCPv6 Replyを受信するか、DAO-ACK(Destination Advertisement Object Acknowledgement)を受信するか、時間D_PAN_TIMEOUTが経過するか、時間T_tickが経過するまで待機する(ステップS603)。時間D_PAN_TIMEOUTは、規格で決められたタイマであり、タイムアウトしたときに接続シーケンスをやり直す時間を示す。なお、ステップS602において、DIOを受信するまで複数回DISを送信してもよい。
【0046】
DIOを受信した場合(ステップS604:YES)、経路制御部44は、DIO受信処理を行い(ステップS605)、ステップS603に戻る。DHCPv6 Replyを受信した場合(ステップS606:YES)、経路制御部44は、DHCPv6 Reply処理を行い(ステップS607)、ステップS603に戻る。DAO-ACKを受信した場合(ステップS608:YES)、経路制御部44は、時間D_PAN_TIMEOUTが経過したかを計測するための計測開始時点を現時刻に再設定し(ステップS609)、ステップS603に戻る。時間T_tickが経過していない場合(ステップS610:NO)、ステップS603に戻る。時間D_PAN_TIMEOUTが経過した場合(ステップS611:YES)、経路制御部44は、処理失敗を返却する(ステップS612)。時間D_PAN_TIMEOUTが経過していない場合(ステップS611:NO)、NUD(Neighbor Unreachability Detection)用NS(Neighbor Solicitation)送信処理を行い(ステップS613)、DHCP Solicit送信処理を行い(ステップS614)、ARO(Address Registration Option)付NS送信処理を行い(ステップS615)、DAO送信処理を行い(ステップS616)、T_tickタイマを再設定する(ステップS617)。
なお、ステップS609におけるDAO-ACK受信処理をもってネットワークの接続完了となるが、
図12に記載の通り、その後も経路制御部44はステップS603~S611、ステップS613~S617の処理を繰り返す。
【0047】
図13は、DIO受信処理を示すフローチャートである。
図13のフローチャートは、
図12のフローチャートにおけるステップS605の動作を詳細に説明したものである。
経路制御部44は、DIOの送信元が近隣ノードテーブルにあるか否かを判定する(ステップS6051)。DIOの送信元が近隣ノードテーブルにある場合(ステップS6051:YES)、親選択アルゴリズムを実行する(ステップS6055)。DIOの送信元が近隣ノードテーブルにない場合(ステップS6051:NO)、経路制御部44は、近隣ノードに対するT_nud_initを計算し(ステップS6052)、近隣ノードに対するT_nudをT_nud_initに設定し(ステップS6053)、近隣ノードテーブルにDIO送信元近隣ノードのアドレスとT_nudを登録し(ステップS6054)、親選択アルゴリズムを実行する(ステップS6055)。
【0048】
時間T_nud_initは例えば最小値D_nud_init_minと最大値D_nud_init_maxとの間のランダム値である。例えば、DAO-ACKを受信済、つまりJoin State 5の場合のD_nud_init_maxの値は、Join State1~4の場合のD_nud_init_maxの値よりも大きい。また、例えば親が決定済の場合のD_nud_init_maxの値は、親が未決定の場合のD_nud_init_maxの値よりも大きい。D_nud_init_minは0秒であってもよい。D_nud_init_maxは、Join State 5の場合に5分、Join State1~4の場合に30分としてもよい。
【0049】
図14は、DHCPv6 Reply処理を示すフローチャートである。
図14のフローチャートは、
図12のフローチャートにおけるステップS607の動作を詳細に説明したものである。経路制御部44は、DHCPv6 Replyを待っている場合(ステップS6071:YES)、つまりDHCPv6 Solicitを送信済の場合、自身のアドレスを設定する(ステップS6072)。
【0050】
図15は、NUD用NS送信処理を示すフローチャートである。
図15のフローチャートは、
図12のフローチャートにおけるステップS613の動作を詳細に説明したものである。経路制御部44は、近隣ノードテーブルに登録があるそれぞれの近隣ノードについて、ステップS6112~S6115の動作を行う(ステップS6111)。経路制御部44は、T_nudがT_tick以下であるか否かを判定する(ステップS6112)。T_nudがT_tick以下である場合(ステップS6112:YES)、経路制御部44は、NUD用のNSを送信し(ステップS6114)、T_nudを計算し再設定する(ステップS6115)。T_nudがT_tickより大きい場合(ステップS6112:NO)、経路制御部44は、T_nudをT_nud - T_tickに設定する(ステップS6113)。
【0051】
図16は、DHCP Solicit送信処理を示すフローチャートである。
図16のフローチャートは、
図12のフローチャートにおけるステップS614の動作を詳細に説明したものである。
経路制御部44は、親ノードが決まっていない状態から親ノードが決まった状態に変化したか否かを判定する(ステップS6121)。これにより、親ノードが決まってから初めてDHCPv6 Solicit送信が必要になったか否かを判定する。親ノードが決まっていない状態から親ノードが決まった状態に変化した場合(ステップS6121:YES)、経路制御部44は、T_dhcpv6_initを計算し(ステップS6123)、T_dhcpv6をT_dhcpv6_initの値に設定する(ステップS6124)。親ノードが決まっていない状態から親ノードが決まった状態に変化していない場合(ステップS6121:NO)、経路制御部44は、親ノードが少なくとも1つ決定済みであるか否かを判定する(ステップS6122)。親ノードが少なくとも1つ決定済みである場合(ステップS6122:YES)、ステップS6125に進む。親ノードが1つも決定していない場合(ステップS6122:NO)、DHCPv6 Solicit送信処理を終了する。
【0052】
経路制御部44は、T_dhcpv6がT_tick以下であるか否かを判定する(ステップS6125)。T_dhcpv6がT_tick以下である場合(ステップS6125:YES)、経路制御部44は、DHCPv6 Solicitを送信し(ステップS6127)、T_dhcpv6を計算し再設定する(ステップS6128)。T_dhcpv6がT_tickより大きい場合(ステップS6126:NO)、経路制御部44は、T_dhcpv6をT_dhcpv6 - T_tickに設定する(ステップS6126)。
【0053】
図17は、ARO付NS送信処理を示すフローチャートである。
図17のフローチャートは、
図12のフローチャートにおけるステップS615の動作を詳細に説明したものである。
経路制御部44は、DHCPv6 Reply受信によりアドレスが設定または変更されたか否かを判定する(ステップS6131)。DHCPv6 Reply受信によりアドレスが設定または変更された場合(ステップS6131:YES)、経路制御部44は、T_aro_initを計算し(ステップS6133)、T_aroをT_aro_initの値に設定する(ステップS6134)。DHCPv6 Reply受信によりアドレスが設定または変更されていない場合(ステップS6131:NO)、経路制御部44は、アドレスが設定済みか否かを判定する(ステップS6132)。アドレスが設定済みである場合(ステップS6132:YES)、ステップS6135に進む。アドレスが設定済みでない場合(ステップS6132:NO)、ARO付NS送信処理を終了する。
【0054】
経路制御部44は、T_aroがT_tick以下であるか否かを判定する(ステップS6135)。T_aroがT_tick以下である場合(ステップS6135:YES)、経路制御部44は、ARO付NSを送信し(ステップS6137)、T_aroを計算し再設定する(ステップS6138)。T_aroがT_tickより大きい場合(ステップS6135:NO)、経路制御部44は、T_aroをT_aro - T_tickに設定する(ステップS6136)。
【0055】
図18は、DAO送信処理を示すフローチャートである。
図18のフローチャートは、
図12のフローチャートにおけるステップS616の動作を詳細に説明したものである。
経路制御部44は、DHCPv6 Reply受信によりアドレスが設定または変更されたか否かを判定する(ステップS6141)。DHCPv6 Reply受信によりアドレスが設定または変更された場合(ステップS6141:YES)、経路制御部44は、T_dao_initを計算し(ステップS6143)、T_daoをT_dao_initの値に設定する(ステップS6144)。DHCPv6 Reply受信によりアドレスが設定または変更されていない場合(ステップS6141:NO)、経路制御部44は、アドレスが設定済みか否かを判定する(ステップS6142)。アドレスが設定済みである場合(ステップS6142:YES)、ステップS6145に進む。アドレスが設定済みでない場合(ステップS6142:NO)、DAO送信処理を終了する。
【0056】
経路制御部44は、T_daoがT_tick以下であるか否かを判定する(ステップS6145)。T_daoがT_tick以下である場合(ステップS6145:YES)、経路制御部44は、DAOを送信し(ステップS6147)、T_daoを計算し再設定する(ステップS6148)。T_daoがT_tickより大きい場合(ステップS6145:NO)、経路制御部44は、T_daoをT_dao - T_tickに設定する(ステップS6146)。
【0057】
T_dhcpv6_init、T_aro_init、T_dao_initはそれぞれ異なる値であってもよく、0秒であってもよい。T_dhcpv6_init、T_aro_init、T_dao_initは、例えば、DAO-ACKを受信済、つまりJoin State 5の場合の値は、Join State1~4の場合の値よりも大きい。また、T_dhcpv6_init、T_aro_init、T_dao_initは、例えば、親が決定済の場合の値が、親が未決定の場合の値よりも大きい。
【0058】
図19は、経路制御処理の一例を示すシーケンス図である。通信ノード4は、DISをブロードキャストで送信する(ステップT601)。
図19の例では、DISは2台の中継ノードに到着する。中継ノード5は通信ノード4にDIOを送信する(ステップT602)。その後、時間T_nud(T_nud_init)経過後、通信ノード4は、NUD用NSを中継ノードに送信する(ステップT603)。他の中継ノード5からも同様にDIOを受信し(ステップT604)、NUD用NSを送信する(ステップT605)。その後、通信ノード4は親ノードを決定する(ステップT606)。その後、時間T_dhcpv6経過後、通信ノード4は、DHCPv6 Soilcitを集約装置3に送信する(ステップT607)。通信ノード4は、DHCPv6 Replyを受信する(ステップT608)。その後、時間T_aro経過後、通信ノード4は、ARO付きNSを中継ノード5に送信する(ステップT609)。その後、時間T_dao経過後、通信ノード4は、DAOを集約装置3に送信する(ステップT610)。通信ノード4は、DAO ACKを受信する(ステップT611)。通信ノード4は、最初にNUD用NSを送信した後、再設定したT_nud経過後、再度NUD用NSを送信する(ステップT612、T613)。
【0059】
経路制御処理において、NUD用NSの送信タイミングはT_nud_initにより調整され、DHCPv6 Soilcitの送信タイミングはT_dhcpv6により調整され、ARO付きNSの送信タイミングはT_aroにより調整され、DAOの送信タイミングはT_daoにより調整される。これにより、より自由度高くネットワークの設定方法を作成することができる。
【0060】
T_dhcpv6_init、T_aro_init、T_dao_initは、DAO-ACKを受信済、つまりJoin State 5の場合の値を、Join State1~4の場合の値よりも大きくすることで、ネットワークに接続完了した場合の遅延時間を、ネットワーク接続未完了の場合の遅延時間よりも長くすることができる。また、T_dhcpv6_init、T_aro_init、T_dao_initは、親が決定済の場合の値を、親が未決定の場合の値よりも大きくすることで、親となるノードが決定している場合の遅延時間を、親が未決定である場合の遅延時間よりも長くすることができる。以上に示す時間設定をD_eapol_key_start_initに対しても行ってもよい。
【0061】
以上説明した少なくともひとつの実施形態によれば、マルチホップネットワークの制御パケットの送信タイミングを遅らせる遅延時間を調整することにより、マルチホップネットワークの安定化までにかかる時間を短縮することができる。
【0062】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0063】
1 通信システム、2 認証装置、3 集約装置、4 通信ノード、41 ネットワーク検知部、42 ネットワーク認証処理部、43 ネットワーク設定検知部、44 経路制御部、46 記憶部、47 無線部、48 トラフィックモニタ