(57)【要約】【課題】  ＩＰアドレスとＭＡＣアドレスとの対応関係の有効期限の更新処理を行う通信装置の処理負荷を低減することを目的とする。【解決手段】  他の通信装置に送信したＴＣＰパケットに対する応答を受信した場合に、該他の通信装置のＩＰアドレスとＭＡＣアドレスとの対応関係の有効期限の更新処理を行う期間と、当該更新処理を行わない期間とを設けた。【選択図】  図８
2019153839.tif 000002
【特許請求の範囲】
【請求項１】
通信装置であって、
他の通信装置にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に準拠したパケットを送信する第１の送信手段と、
前記第１の送信手段により送信された前記パケットに対する応答を前記他の通信装置から受信する受信手段と、
前記受信手段により前記応答を受信した場合に、前記他の通信装置のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスとＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとの対応関係の有効期限の更新処理を行う更新手段と、
前記受信手段により前記応答を受信した場合に、前記更新手段による前記更新処理を行う期間と、当該更新処理を行わない期間とを設定する第１の設定手段と、
を有することを特徴とする通信装置。
【請求項２】
前記有効期限は、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ６）規格で規定されたＲｅａｃｈａｂｌｅ  Ｔｉｍｅに基づいて設定される期限であることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記有効期限が経過した場合に、前記他の通信装置のＭＡＣアドレスを確認するための所定のパケットを送信する第２の送信手段をさらに有することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記第２の送信手段が送信する前記所定のパケットは、Ｎｅｉｇｈｂｏｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌに準拠したパケットであることを特徴とする請求項３に記載の通信装置。
【請求項５】
前記更新処理は、前記受信手段が前記応答を受信した際の時刻を取得し、当該取得した時刻に基づいて、前記有効期限を更新する処理であることを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
前記有効期限を算出するための起点となる時刻を記憶する記憶手段を更に有し、
前記更新処理は、前記受信手段が前記応答を受信した際の時刻に基づいて、当該起点となる時刻を更新する処理であることを特徴とする請求項１から５のいずれか１項に記載の通信装置。
【請求項７】
前記更新処理を行わない期間は、前記更新手段による前記更新処理が行われてから所定の時間であることを特徴とする請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
前記所定の時間は、前記更新手段による前記更新処理が行われてから前記有効期限までの時間の長さに対して所定の割合の長さを有する時間であることを特徴とする請求項７に記載の通信装置。
【請求項９】
前記所定の割合は、前記他の通信装置との間のＴＣＰに準拠したパケットの通信頻度に基づいて設定されることを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記受信手段が受信する前記応答は、ＴＣＰに準拠したＡｃｋであることを特徴とする請求項１から９のいずれか１項に記載の通信装置。
【請求項１１】
前記更新処理を行わない期間を設定するモードと、前記更新処理を行わない期間を設定しないモードのいずれかを前記通信装置に設定する第２の設定手段をさらに有することを特徴とする請求項１から１０のいずれか１項に記載の通信装置。
【請求項１２】
前記更新手段は、前記第１の送信手段がＴＣＰに準拠したパケットを送信した場合にも、前記更新処理を行うことを特徴とする請求項１から１１のいずれか１項に記載の通信装置。
【請求項１３】
前記更新手段は、前記更新処理を行う期間において、前記第１の送信手段がＴＣＰに準拠したパケットを送信した場合、前記更新処理を行い、
前記更新処理を行わない期間において、前記第１の送信手段がＴＣＰに準拠したパケットを送信した場合、前記更新処理を行わないことを特徴とする請求項１２に記載の通信装置。
【請求項１４】
通信装置の制御方法であって、
他の通信装置にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に準拠したパケットを送信する送信工程と、
前記第１の送信工程において送信された前記パケットに対する応答を前記他の通信装置から受信する受信工程と、
前記受信手段により前記応答を受信した場合に、前記他の通信装置のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスとＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとの対応関係の有効期限の更新処理を行う期間であれば、当該更新処理を行い、
当該更新処理を行う期間でなければ、当該更新処理を行わない更新工程と、
を有することを特徴とする制御方法。
【請求項１５】
コンピュータを請求項１から１３のいずれか１項に記載の通信装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット通信を行う通信装置に関する。
【背景技術】
【０００２】
ＩＰｖ６では、通信相手装置のＩＰｖ６アドレスからＭＡＣアドレスとの対応関係が有効であるとみなすことができる有効期限が規定されている。当該有効期限は、ＴＣＰ／ＩＰパケットを送信し、当該パケットに対する応答（Ａｃｋ）を受信した場合に、更新できることが非特許文献１に開示されている。
【０００３】
なお、ＩＰｖ６はＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ６の、ＭＡＣはＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌの、ＴＣＰはＴｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌの各々略である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔｓ）４８６１（ｈｔｔｐｓ：／／ｔｏｏｌｓ．ｉｅｔｆ．ｏｒｇ／ｈｔｍｌ／ｒｆｃ４８６１）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、Ａｃｋを受信する頻度が高い場合に、Ａｃｋを受信する毎に、ＩＰｖ６アドレスからＭＡＣアドレスとの対応関係についての有効期限の更新処理を行うと、通信装置の処理負荷が大きくなってしまう。その結果、通信装置の通信性能が劣化してしまう場合があった。
【０００６】
上記を鑑み、ＩＰアドレスとＭＡＣアドレスとの対応関係の有効期限の更新処理を行う通信装置の処理負荷を低減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の通信装置は、他の通信装置にＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に準拠したパケットを送信する第１の送信手段と、前記第１の送信手段により送信された前記パケットに対する応答を前記他の通信装置から受信する受信手段と、前記受信手段により前記応答を受信した場合に、前記他の通信装置のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスとＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとの対応関係の有効期限の更新処理を行う更新手段と、前記受信手段により前記応答を受信した場合に、前記更新手段による前記更新処理を行う期間と、当該更新処理を行わない期間とを設定する第１の設定手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、ＩＰアドレスとＭＡＣアドレスとの対応関係の有効期限の更新処理を行う期間と行わない期間とを設けたので、ＩＰアドレスとＭＡＣアドレスとの対応関係の有効期限の更新処理を行う通信装置の処理負荷を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】通信装置１０１のハードウェア構成図。
【図２】キャッシュ部１０５が記憶するキャッシュテーブルを示す図。
【図３】パケット送信時の処理を示すフローチャート。
【図４】有効期限経過後の処理を示すフローチャート。
【図５】ＮＳ送信時の処理を示すフローチャート。
【図６】ＮＡ受信時の処理を示すフローチャート。
【図７】時刻獲得フラグタイマが起動する際の処理を示すフローチャート。
【図８】Ａｃｋ受信時の処理を示すフローチャート。
【図９】Ａｃｋの受信に伴う有効期限の更新頻度を示す図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の実施形態を説明する。なお、以下の実施形態は例示であり、本発明はこれに限定されない。
【００１１】
図１に、通信装置１０１のハードウェア構成を示す。通信装置１０１は、記憶部１０２、制御部１０３、および、通信部１０４を有する。記憶部１０２は、ＲＯＭやＲＡＭなどの１または複数のメモリ等により構成され、後述する各種動作を行うためのコンピュータプログラムや、無線通信のための通信パラメータなどの各種情報を記憶する。ＲＯＭはＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの、ＲＡＭはＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。ここで、ＲＡＭとしてはＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）を利用してもよいし、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）を利用してもよい。なお、記憶部１０２として、ＲＯＭ、ＲＡＭ等のメモリの他に、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＤＶＤなどの記憶媒体を用いてもよい。
【００１２】
また、記憶部１０２は、通信相手装置のＩＰアドレスとＭＡＣアドレスとの対応関係を示す情報を記憶（例えばキャッシュ）するキャッシュ部１０５を更に有する。ここでは、キャッシュ部１０５は、ＩＰｖ６規格に準拠した近隣探索プロトコルに基づくアドレス解決により、通信相手装置のＩＰアドレスとＭＡＣアドレスとの対応関係を示す情報を得、これをキャッシュする。ここで、ＩＰｖ６はＩｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ６の略である。また、近隣探索プロトコルとは、Ｎｅｉｇｈｂｏｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌのことである。
【００１３】
近隣探索プロトコルのアドレス解決について簡単に説明する。当該アドレス解決では、まず通信装置１０１がＩＰｖ６アドレスを指定した探索パケットを送信する。ここで、探索パケットとは例えば、ＮＳ（Ｎｅｉｇｈｂｏｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）ＩＣＭＰｖ６メッセージタイプのパケットである。なお、ＩＣＭＰｖ６とは、Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ６の略である。以下、ＮＳ（Ｎｅｉｇｈｂｏｒ  Ｓｏｌｉｃｉｔａｔｉｏｎ）ＩＣＭＰｖ６メッセージタイプのパケットを、単にＮＳパケットと称する。
【００１４】
その後、ＮＳパケットにより指定されたＩＰｖ６アドレスを有する装置が、当該探索パケットに対する応答パケットであって、自装置のＭＡＣアドレス情報を含む応答パケットを送信する。ここで、応答パケットとは例えば、ＮＡ（Ｎｅｉｇｈｂｏｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）  ＩＣＭＰｖ６メッセージタイプのパケットである。以下、ＮＡ（Ｎｅｉｇｈｂｏｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）  ＩＣＭＰｖ６メッセージタイプのパケットを、単にＮＡパケットと称する。
【００１５】
通信装置１０１は当該応答パケットを受信することで、指定したＩＰｖ６アドレスに対応するＭＡＣアドレスを得ることができる。なお、これに限らず、他の方法でアドレス解決を行い、ＩＰアドレスとＭＡＣアドレスとの対応関係の情報を得るようにしてもよい。
【００１６】
キャッシュ部１０５は、アドレス解決により得られた情報を、図２に示すようなＮＤ（Ｎｅｉｇｈｂｏｒ  Ｄｉｓｃｏｖｅｒｙ）キャッシュテーブルとしてキャッシュする。ＮＤキャッシュテーブルの詳細な説明は後述する。キュー部１０６は、通信装置１０１が送信しようとするデータや、パケットを記憶する。
【００１７】
制御部１０３は、ＣＰＵやＭＰＵなどの１以上のプロセッサにより構成され、記憶部１０２に記憶されたコンピュータプログラムを実行することにより通信装置１０１全体を制御する。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの、ＭＰＵはＭｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略であり、コンピュータとして機能する。なお、制御部１０３は、記憶部１０２に記憶されたプログラムとＯＳとの協働により通信装置１０１全体を制御するようにしてもよい。また、複数のプロセッサを実現するために、複数のＣＰＵ等を利用する他、マルチコアに対応したＣＰＵ等を利用してもよい。
【００１８】
通信部１０４は、イーサネット（登録商標）規格に準拠した通信を通信装置１０１が有線のネットワーク１１０を介して行うためのモジュールである。なお、通信部１０４はイーサネット規格に代えて、ＩＥＥＥ８０２．１１シリーズやＢｌｕｅｔｏｏｔｈ（登録商標）等の無線通信規格に準拠した通信を行ってもよい。無線通信規格に準拠した通信を行う場合、ネットワーク１１０は無線ネットワークとなる。また、通信部１０４は、イーサネット規格等の上位レイヤとして、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信を行う。
【００１９】
図２に、キャッシュ部１０５が記憶するＮＤキャッシュテーブル（以下、ＮＤキャッシュ２０１）を示す。ＮＤキャッシュ２０１では、ネットワーク１１０を介して通信装置１０１が通信可能な他の通信装置のＩＰｖ６アドレスとＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとが対応付けて記憶される。また、ＮＤキャッシュ２０１は、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係の有効期限を管理するため、ＩＰｖ６規格で規定されたＲｅａｃｈａｂｌｅ  Ｔｉｍｅをカウントするための起点となる開始時刻を有する。
【００２０】
ここで、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅとは、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係が有効である時間の長さを示す値であり、通信部１０４が起動したタイミングで、インタフェース毎に決定される１５秒〜４５秒の間のランダム時間である。なお、通信部１０４が起動した後に、通信部１０４がネットワーク１１０上のルータからＩＰｖ６規格に準拠したルータ広告（Ｒｏｕｔｅｒ  Ａｄｖｅｒｔｉｓｅｍｅｎｔ）を受信した場合、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅは変更され得る。具体的には、ルータ広告で通知されたＲｅａｃｈａｂｌｅ  Ｔｉｍｅに関する値に０．５〜１．５の間の乱数を乗算することにより得られるランダム時間に、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅが変更され得る。
【００２１】
ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係の有効期限は、開始時刻にＲｅａｃｈａｂｌｅ  Ｔｉｍｅを加算した時刻となる。
【００２２】
なお、本実施形態では当該開始時刻は、通信装置１０１の電源が投入されてからの経過時間を用いて表すこととする。なお、これに限らず、通信装置１０１が通信を開始してからの経過時間や、通信装置１０１が利用されている国の時刻、グリニッジ標準時等、他の時刻を基準としてＲｅａｃｈａｂｌｅ  Ｔｉｍｅを表してもよい。また、ＮＤキャッシュ２０１に、開始時刻を記憶するのではなく、有効期限を記憶するようにしてもよい。
【００２３】
また、ＮＤキャッシュ２０１は、一組のＩＰｖ６アドレスとＭＡＣアドレスとの対応関係毎に状態（Ｓｔａｔｅ）を示す情報を有する。以下、各状態について説明する。
【００２４】
ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係が不明の状態、即ち、近隣探索プロトコルによるアドレス解決が完了していない状態を「ＩＮＣＯＭＰＬＥＴＥ」と称する。また、近隣探索プロトコルによるアドレス解決が完了し、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係が有効である状態（当該対応関係の有効期限の経過前である状態）を「ＲＥＡＣＨＡＢＬＥ」と称する。
【００２５】
また、有効期限を過ぎ、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係が無効である状態を「ＳＴＡＬＥ」と称する。なお、ＳＴＡＬＥの状態であっても、ＮＤキャッシュ２０１にはＩＰｖ６アドレスとＭＡＣアドレスとの対応関係の情報が残っていることから、通信装置１０１は当該ＩＰｖ６アドレスを有する装置へ、ＴＣＰ／ＩＰパケットを送信することができる。このようにして、ＩＰｖ６アドレスを有する装置へＴＣＰ／ＩＰパケットを送信した場合、当該ＩＰｖ６アドレスと、対応するＭＡＣアドレスとの対応関係の状態が「ＤＥＬＡＹ」に遷移する。
【００２６】
状態がＤＥＬＡＹに遷移してから所定時間（例えば５秒）が経過すると、当該状態が「ＰＲＯＢＥ」に遷移し、通信装置１０１は近隣探索プロトコルによるアドレス解決を再度、実行する。即ち、ＤＥＬＡＹとは、近隣探索プロトコルによるアドレス解決の実行を待っている状態であり、ＰＲＯＢＥとは、近隣探索プロトコルによるアドレス解決を開始した状態であると言うことができる。
【００２７】
その後、通信装置１０１が近隣探索プロトコルにおける応答パケットを受信し、指定したＩＰｖ６アドレスに対応するＭＡＣアドレスを得ると、状態が「ＲＥＡＣＨＡＢＬＥ」に遷移する。また、このタイミングで当該対応関係の有効期限が更新される。具体的には、応答パケットを受信した時刻を、ＮＤキャッシュ２０１に含まれる当該ＩＰｖ６アドレスに対応するＲｅａｃｈａｂｌｅ  Ｔｉｍｅをカウントするための起点となる開始時刻として再設定する。
【００２８】
更に、ＮＤキャッシュ２０１は、ＩＰｖ６アドレスの各々について、当該ＩＰｖ６アドレス宛ての未送信パケットの有無（未送信パケットが記憶部１０２にキューイングされているか否か）を示す未送信パケットフラグを有する。
【００２９】
また、ＮＤキャッシュ２０１は、ＩＰｖ６アドレスの各々について時刻獲得フラグを有する。時刻獲得フラグは、当該ＩＰｖ６アドレスを有する通信相手装置から所定のパケットを受信した場合に、当該所定のパケットを受信した際の時刻に基づいて、当該ＩＰｖ６アドレスに対応する有効期限を更新する処理を行う期間であるか否かを示す。
【００３０】
次に、図３を用いて通信装置１０１がＩＰｖ６準拠したＴＣＰ／ＩＰパケット（ＩＰｖ６パケットと称する）を送信する際に、記憶部１０２に記憶されたプログラムを制御部１０３が読み出して実行することにより実現されるフローチャートを示す。当該フローチャートは、通信装置１０１において、ＩＰｖ６パケットとして送信すべきデータが発生した場合に開始される。なお、当該データの送信先のＩＰｖ６アドレスは、当該データを生成したアプリケーション等により指定されるものとする。また、既に図３に示す処理を行っている場合であっても、新たにＩＰｖ６パケットとして送信すべきデータが発生した場合には、図３に示す処理が重複して実行される。
【００３１】
なお、図３に示すフローチャートの少なくとも一部をハードウェアにより実現してもよい。ハードウェアにより実現する場合、例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を用いる方法がある。また、所定のコンパイラを用いることで、各ステップを実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成してもよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウェアとして実現するようにしてもよい。
【００３２】
まず、通信装置１０１はＮＤキャッシュ２０１を検索し（Ｓ３０２）、送信するＩＰｖ６パケットの宛先のＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されているかを判定する（Ｓ３０３）。宛先のＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されていないと判定された場合（Ｓ３０３のＮｏ）、通信装置１０１はＮＤキャッシュ２０１に、当該宛先のＩＰｖ６アドレスに関するエントリを登録する（Ｓ３０９）。ここで、当該宛先のＩＰｖ６アドレスに関するエントリの登録とは、ＮＤキャッシュ２０１における１つの行を、当該宛先のＩＰｖ６アドレスに関して作成することを言う。
【００３３】
また、この時点は未だ当該ＩＰｖ６アドレスのアドレス解決は行われておらず、対応するＭＡＣアドレスが不明のため、通信装置１０１は、当該宛先のＩＰｖ６アドレスに対応する状態として、ＩＮＣＯＭＰＬＥＴＥを設定する（Ｓ３０９）。そして、通信装置１０１は、送信しようとしていたＩＰｖ６パケットをキュー部１０６に記憶する（Ｓ３１０）。また、通信装置１０１は、ＮＤキャッシュ２０１において当該宛先のＩＰｖ６アドレスに対応する未送信パケットフラグをＯＮにする。
【００３４】
その後、通信装置１０１は、当該宛先のＩＰｖ６アドレスに対応するＭＡＣアドレスを取得するため、アドレス解決処理を実行する（Ｓ３１１）。アドレス解決処理の詳細は、図５、図６および図７を用いて後述する。アドレス解決処理が終了すると、通信装置１０１は図３に示す処理を終了する。
【００３５】
次に、Ｓ３０３において、宛先のＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されていると判定された場合（Ｓ３０３のＹｅｓ）について説明する。この場合、通信装置１０１は、宛先のＩＰｖ６アドレスに対応する状態が、ＩＮＣＯＭＰＬＥＴＥであるかを判定する（Ｓ３０４）。ＩＮＣＯＭＰＬＥＴＥである場合（Ｓ３０４のＹｅｓ）には、未だアドレス解決処理が完了しておらず、通信装置１０１は送信先のＭＡＣアドレスが分からないため、通信装置１０１はＩＰｖ６パケットを送信することができない。従って、通信装置１０１は、送信しようとしていたＩＰｖ６パケットをキュー部１０６に記憶する（Ｓ３１２）。その後、通信装置１０１は図３に示す処理を終了する。
【００３６】
一方、宛先のＩＰｖ６アドレスに対応する状態が、ＩＮＣＯＭＰＬＥＴＥではない場合（Ｓ３０４のＮｏ）、通信装置１０１は、宛先のＩＰｖ６アドレスと、これに対応するＭＡＣアドレスとに基づいてＩＰｖ６パケットの送信処理を行う（Ｓ３０５）。次に、通信装置１０１は現在時刻を取得する（Ｓ３０６）。ここで、現在時刻とは、通信装置１０１の電源が投入されてからの経過時間であり、通信装置１０１の不図示のタイマが計測した時間から取得される。しかし、上述したようにＲｅａｃｈａｂｌｅ  Ｔｉｍｅを、通信装置１０１の電源が投入されてからの経過時間とは異なる時刻に基づいて表す場合には、これに対応する時刻の取得となる。
【００３７】
そして、通信装置１０１は、ステップＳ３０６において取得した現在時刻に基づき、送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに対応する有効期限を過ぎているか否かを判定する（Ｓ３０７）。具体的には、通信装置１０１は、取得した現在時刻が、宛先のＩＰｖ６アドレスに対応するＲｅａｃｈａｂｌｅ  Ｔｉｍｅをカウントするための起点となる開始時刻にＲｅａｃｈａｂｌｅ  Ｔｉｍｅを加算した時刻を過ぎているか否かを判定する。
【００３８】
有効期限を過ぎていない場合（Ｓ３０７のＮｏ）には、通信装置１０１は図３に示す処理を終了する。一方、有効期限を過ぎていた場合（Ｓ３０７のＹｅｓ）、通信装置１０１は有効期限経過処理を行う（Ｓ３０８）。有効期限経過処理の詳細は、図４に示す通りであり、次にその詳細を説明する。通信装置１０１は、有効期限経過処理が終了すると、図３に示す処理を終了する。
【００３９】
図４に、ステップＳ３０８で実行される有効期限経過処理のフローチャートに示す。まず、通信装置１０１は、ステップＳ３０５で送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに対応する状態がＲＥＡＣＨＡＢＬＥであるかを判定する（Ｓ４０２）。ＲＥＡＣＨＡＢＬＥでない場合（Ｓ４０２のＮｏ）、通信装置１０１は、図４に示す処理を終了する。ＲＥＡＣＨＡＢＬＥでない場合とは、即ち、既にアドレス解決処理が開始されている場合であるため、図４の処理において新たなアドレス解決処理を開始する必要がないためである。
【００４０】
一方、送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに対応する状態がＲＥＡＣＨＡＢＬＥである場合（Ｓ４０２のＹｅｓ）、通信装置１０１は当該状態をＤＥＬＡＹに変更する（Ｓ４０３）。そして、通信装置１０１は５秒が経過するのを待つ（Ｓ４０４）。５秒が経過すると、通信装置１０１は当該状態をＰＲＯＢＥに変更し、アドレス解決処理を実行する（Ｓ４０６）。ここで実行されるアドレス解決処理は、ステップＳ３１１で実行されるアドレス解決処理と同じであり、次に図５を用いて詳細を説明するものである。アドレス解決処理が終了すると、通信装置１０１は図４に示す処理を終了する。
【００４１】
図５に、ステップＳ３１１およびＳ４０６で実行されるアドレス解決処理のフローチャートを示す。まず、通信装置１０１は、ＮＳパケットの送信回数を示す変数に０を代入する（Ｓ５０１）。次に、通信装置１０１は、ステップＳ３０５で送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスの情報を含むＮＳパケットを送信する（Ｓ５０２）。
【００４２】
ＮＳパケットを送信すると、通信装置１０１は、当該ＮＳパケットに対する応答パケットとしてのＮＡパケットの受信を所定秒（例えば１秒間）、待ち受ける（Ｓ５０３）。ここで、ＮＡパケットを受信した場合の処理については図６を用いて後述する。なお、通信装置１０１はＮＡパケットを受信した場合、図６に示す処理を、図３から図５に示す処理と並行して実行する。また、図６に示す処理において、ステップＳ３０５で送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに対応する状態がＲＥＡＣＨＡＢＬＥに変更され得る。
【００４３】
通信装置１０１は、ステップＳ５０３における待ち受けが完了すると、ステップＳ３０５で送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに対応する状態がＲＥＡＣＨＡＢＬＥであるかを確認する（Ｓ５０４）。当該状態がＲＥＣＨＡＢＬＥである場合（Ｓ５０４のＹｅｓ）、通信装置１０１は図５に示す処理を終了する。なお、当該状態がＲＥＣＨＡＢＬＥである場合とは、例えば、ステップＳ５０２において送信されたＮＳパケットに対するＮＡパケットを受信した場合である。
【００４４】
一方、  当該状態がＲＥＣＨＡＢＬＥではなかった場合（Ｓ５０４のＮｏ）、通信装置１０１はＮＳパケットの送信回数を示す変数に１を加算する（Ｓ５０５）。なお、当該状態がＲＥＣＨＡＢＬＥではない場合とは、例えば、ステップＳ５０２において送信されたＮＳパケットに対するＮＡパケットが、ステップＳ５０３の待ち受け時間内に受信されなかった場合である。
【００４５】
その後、通信装置１０１は、ＮＳパケットの送信回数が所定の回数を超えたかを判定する（Ｓ５０６）。なお、ここでは所定の回数として３を用いるものとする。これにより、通信装置１０１は１回のアドレス解決処理において、最大３回、ＮＳパケットを送信することとなる。
【００４６】
ＮＳパケットの送信回数が所定の回数を超えていない場合（Ｓ５０６のＮｏ）、通信装置１０１は、ステップ５０２に戻り、再度、ＮＳパケットを送信する。一方、ＮＳパケットの送信回数が所定の回数を超えている場合（Ｓ５０６のＹｅｓ）、通信装置１０１は、ステップＳ３０５で送信したＩＰｖ６パケットの宛先のＩＰｖ６アドレスに関するエントリを削除する（Ｓ５０７）。また、当該ＩＰｖ６アドレスに対応する未送信パケットフラグがＯＮになっていた場合には、通信装置１０１は当該ＩＰｖ６アドレスに対応する未送信パケットをキュー部１０６から削除する（Ｓ５０７）。なお、キュー部１０６からの削除とは、当該未送信パケットが記憶されたメモリ領域を他のデータを記憶するために利用可能とする処理であればよい。その後、通信装置１０１は図５に示す処理を終了する。
【００４７】
図６に、通信装置１０１がＮＡパケットを受信した際に、記憶部１０２に記憶されたプログラムを制御部１０３が読み出して実行することにより実現されるフローチャートを示す。当該フローチャートは、通信装置１０１がＮＡパケットを受信した場合に実行される。なお、図６に示すフローチャートの少なくとも一部を、図３に示すフローチャートと同様に、ハードウェアにより実現してもよい。
【００４８】
通信装置１０１は、ＮＡパケットを受信すると、ＮＤキャッシュ２０１を検索し（Ｓ６０２）、当該ＮＡパケットに含まれるＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されているかを判定する（Ｓ６０３）。なお、ＩＰｖ６アドレスは、ＮＡパケットのＴａｒｇｅｔ  Ａｄｄｒｅｓｓフィールドに含まれている。
【００４９】
ＮＡパケットに含まれるＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されていない場合（Ｓ６０３のＮｏ）、通信装置１０１は図６に示す処理を終了する。ＮＡパケットに含まれるＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されていない場合とは、例えば、受信されたＮＡパケットが、通信装置１０１がステップＳ５０２で送信したＮＳパケットに対する正常な応答ではなかった場合である。
【００５０】
一方、ＮＡパケットに含まれるＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されている場合（Ｓ６０３のＹｅｓ）、通信装置１０１は、当該ＩＰｖ６アドレスに対応する状態をＲＥＡＣＨＡＢＬＥにする（Ｓ６０４）。即ち、ＮＤキャッシュ２０１に登録されているＩＰｖ６アドレスを含むＮＡパケットを受信したことをもって、通信装置１０１は当該ＩＰｖ６アドレスについて、近隣探索プロトコルによるアドレス解決が完了したものとみなす。
【００５１】
その後、通信装置１０１は、当該ＩＰｖ６アドレスに対応する時刻獲得フラグをＯＦＦにする（Ｓ６１１）。そして、通信装置１０１は、ステップＳ３０６と同様に、現在時刻を取得する（Ｓ６０５）。そして、通信装置１０１は、当該ＩＰｖ６アドレスに対応するＲｅａｃｈａｂｌｅ  Ｔｉｍｅをカウントするための起点となる開始時刻として、ステップＳ６０５で取得した現在時刻を設定する（Ｓ６０６）。
【００５２】
その後、通信装置１０１は、時刻獲得フラグタイマを起動するための処理を行う（Ｓ６０７）。ステップＳ６０７における処理の詳細は図７に示す通りである。なお、通信装置１０１は図７に示す処理と並行して、ステップＳ６０８に続く処理を実行する。即ち、通信装置１０１はステップＳ６０７の処理（図７に示す処理）の完了を待つことなく、ステップＳ６０８に続く処理を実行する。
【００５３】
ここで、図７を用いて、ステップＳ６０７で実行される処理を説明する。通信装置１０１は、まず、時刻獲得フラグをＯＦＦのまま維持しておく時間の長さ（期間）として、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅに所定の割合を乗算した値を算出する（Ｓ７０２）。例えば、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅが３０秒であり、所定の割合が８０％の場合、時刻獲得フラグをＯＦＦのまま維持しておく時間として、３０秒×０．８＝２４秒を算出する。なお、所定の割合は、通信相手装置との間のＩＰｖ６パケットの通信頻度（送信および／または受信の頻度）や、ネットワーク１１０の回線速度に応じた値であってもよい。例えば、動画のストリーミング等を行っており、ＩＰｖ６パケットの送受信頻度が高い場合には所定の割合を大きくする。これは、頻繁にＩＰｖ６パケットが送受信されている場合には、時刻獲得フラグがＯＮである時間が短くとも、その期間にＩＰｖ６パケットが送受信され、有効期限の更新処理が行われる可能性が高い。従って、時刻獲得フラグをＯＦＦのまま維持しておく時間が長い方が、通信装置１０１は、より更新処理を行わなくてよくなるため、通信装置１０１の処理負荷を低減させることができる。
【００５４】
次に、通信装置１０１は、不図示の時刻獲得フラグタイマを用いて、ステップＳ７０２で算出された値の時間が経過するのを待つ（Ｓ７０３）。そして、当該時間が経過すると、通信装置１０１は、ステップＳ６１１でＯＦＦにした時刻獲得フラグ（アドレス解決処理が行われたＩＰｖ６アドレスに対応する時刻獲得フラグ）をＯＮにする（Ｓ７０４）。時刻獲得フラグをＯＮにすると、通信装置１０１は図７に示す処理を終了する。
【００５５】
次に、ステップＳ６０８以降の処理について説明する。通信装置１０１は時刻獲得フラグタイマを起動すると、アドレス解決処理が行われたＩＰｖ６アドレスに対応する未送信パケットフラグを確認する（Ｓ６０８）。そして、未送信パケットフラグがＯＮである場合（Ｓ６０８のＹｅｓ）、通信装置１０１は、当該ＩＰｖ６アドレスに対応する未送信パケットを、キュー部１０６から送信して（Ｓ６０９）、図６に示す処理を終了する。一方、未送信パケットフラグがＯＦＦである場合（Ｓ６０８のＮｏ）、通信装置１０１は、そのまま図６に示す処理を終了する。
【００５６】
通信装置１０１が、ステップＳ３０５やＳ６０９で送信したパケットは、ＴＣＰ／ＩＰパケットであるため、ＴＣＰの規格に従い、通信相手装置から確認応答パケット（Ａｃｋ）が返送される。次に、図８を用いて、通信装置１０１が通信相手装置から、ステップＳ３０５やＳ６０９で送信したパケットを受信したことを示すＡｃｋを受信した場合におけるＮＤキャッシュ２０１の更新に関する処理について説明する。なお、図８に示すフローチャートは、記憶部１０２に記憶されたプログラムを制御部１０３が読み出して実行することにより実現される。また、図８に示すフローチャートの少なくとも一部をハードウェアにより実現してもよい。
【００５７】
まず、通信装置１０１はＮＤキャッシュ２０１を検索し（Ｓ８０２）、Ａｃｋに含まれる通信相手装置のＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されているかを判定する（Ｓ８０３）。登録されていない場合（Ｓ８０３のＮｏ）には、通信装置１０１は図８に示す処理を終了する。
【００５８】
一方、Ａｃｋに含まれる通信相手装置のＩＰｖ６アドレスがＮＤキャッシュ２０１に登録されている場合（Ｓ８０３のＹｅｓ）、通信装置１０１は、当該ＩＰｖ６アドレスに対応する時刻獲得フラグがＯＮであるかを確認する（Ｓ８０４）。
【００５９】
時刻獲得フラグがＯＦＦである場合（Ｓ８０４のＮｏ）、Ａｃｋの受信時刻を取得し、当該ＩＰｖ６アドレスに対応する有効期限を更新する期間ではないため、通信装置１０１は、そのまま図８に示す処理を終了する。
【００６０】
一方、時刻獲得フラグがＯＮである場合（Ｓ８０４のＹｅｓ）、通信装置１０１は、当該時刻獲得フラグをＯＦＦにする（Ｓ８０５）。そして、通信装置１０１は、Ａｃｋに含まれる通信相手装置のＩＰｖ６アドレスに対応する状態をＲＥＡＣＨＡＢＬＥに変更する（Ｓ８０６）。
【００６１】
その後、通信装置１０１はステップＳ３０６と同様に、現在時刻を取得する（Ｓ８０７）。そして、通信装置１０１は、当該ＩＰｖ６アドレスに対応するＲｅａｃｈａｂｌｅ  Ｔｉｍｅをカウントするための起点となる開始時刻として、ステップＳ８０７で取得した現在時刻を設定する（Ｓ８０８）。即ち、当該ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係についての有効期限が更新される。その後、通信装置１０１は、時刻獲得フラグタイマを起動して（Ｓ８０９）、図８に示す処理を終了する。
【００６２】
上述のフローチャートによれば、時刻獲得フラグがＯＮである場合、即ち、状態がＲＥＡＣＨＡＢＬＥとなってから所定時間が経過した後は、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係についての有効期限の更新処理が行われる。ここで、所定時間とは、例えば、Ｒｅａｃｈａｂｌｅ  Ｔｉｍｅに対する所定割合時間である。また、時刻獲得フラグがＯＦＦである場合、即ち、状態がＲＥＡＣＨＡＢＬＥとなってから所定時間が経過する前は、ＩＰｖ６アドレスとＭＡＣアドレスとの対応関係についての有効期限の更新処理が行われない。このように、Ａｃｋを受信した場合に、有効期限の更新処理が行われる期間と、行われない期間とを設けることで、更新処理が行われることなく有効期限が経過してしまう可能性を低減しつつ、更新処理を行う頻度を下げることができる。従って、通信装置１０１の処理負荷を低減させることができる。
【００６３】
図９を用いて、その効果を説明する。図９（Ａ）は、Ａｃｋを受信する毎に有効期限の更新処理を行う場合の図である。図９（Ｂ）は、時刻獲得フラグがＯＮである場合に、Ａｃｋを受信すると有効期限の更新処理を行う場合の図である。図９に示すタイミングでＡｃｋを受信した場合、図９（Ａ）のようにＡｃｋを受信する毎に有効期限の更新処理を行う場合と比べ、図９（Ｂ）のように有効期限の更新処理を行う頻度を低減させることができている。具体的には、図９（Ａ）では更新処理を９回行っているのに対し、図９（Ｂ）では更新処理を４回しか行っていない。
【００６４】
上述の実施形態では、通信装置１０１がＩＰｖ６パケットを送信する毎に、ステップＳ３０６から３０８に係る有効期限の更新処理を行った。しかしこれに限らず、通信装置１０１がステップＳ３０５の後に時刻獲得フラグがＯＮであるかを確認し、時刻獲得フラグがＯＮである場合にのみ、ステップＳ３０６から３０８に係る有効期限の更新処理を行うようにしてもよい。これによれば、通信装置１０１がＩＰｖ６パケットを送信する際の有効期限の更新処理を行う頻度を低減させることができるため、通信装置１０１の処理負荷を、より低減させることができる。
【００６５】
また、通信装置１０１において、時刻獲得フラグを常時ＯＮとしておくよう設定できるようにしてもよい。即ち、時刻獲得フラグが常時ＯＮとして動作するモードと、上述の実施形態のように時刻獲得フラグのＯＮとＯＦＦとを切り替えて動作するモードとを設定により切り替えられるようにしてもよい。なお、時刻獲得フラグが常時ＯＮとして動作するモードである場合には、通信装置１０１は、時刻獲得フラグのＯＮとＯＦＦとを変更するステップは省略する。また、通信装置１０１は、時刻獲得フラグがＯＮであるかを確認するステップを省略して、必ず、時刻獲得フラグがＯＮである場合と同様の処理を実行すればよい。当該設定は、ユーザができるようにしてもよいし、通信を利用するアプリケーションができてもよい。また、パケットの送受信頻度が低いことに基づいて、時刻獲得フラグが常時ＯＮとなるように、通信装置１０１が設定を行ってもよい。パケットの送受信頻度が低い場合には、有効期限の更新処理が行われる頻度が、そもそも低く、通信装置１０１の処理負荷として大きくないため、このような設定の方が好ましいためである。
【００６６】
また、上述の実施形態では、図８の開始トリガとしてＡｃｋの受信を用いたが、これに限らず、通信装置１０１が送信したパケットが通信相手装置に到達したことを確認した場合に、図８の処理を開始するようにしてもよい。
【００６７】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６８】
１０１  通信装置
１０２  記憶部
１０３  制御部
１０４  通信部
１０５  キャッシュ部
１０６  キュー部
【図１】
2019153839.tif 000003
【図２】
2019153839.tif 000004
【図３】
2019153839.tif 000005
【図４】
2019153839.tif 000006
【図５】
2019153839.tif 000007
【図６】
2019153839.tif 000008
【図７】
2019153839.tif 000009
【図８】
2019153839.tif 000010
【図９】
2019153839.tif 000011