(57)【特許請求の範囲】
【請求項１】
ネットワークの経路情報を通知する経路情報フレームと、経路情報フレームではない第１のフレームを受信する受信部と、
前記経路情報フレームに含まれている経路情報を記録した経路情報テーブルと、
前記第１のフレームの送信元アドレスが前記経路情報テーブルに含まれていない場合、前記送信元アドレスを、前記受信部に前記第１のフレームを転送した転送元装置のアドレスと対応付けて登録テーブルに登録する登録部と、
前記経路情報テーブルに記録されていない宛先装置を宛先とした第２のフレームを送信するときに、前記登録テーブルから前記宛先装置のアドレスに対応付けて登録されている転送元装置のアドレスを取得する取得部と、
前記取得部で取得されたアドレスに前記第２のフレームを送信する送信部
を備えることを特徴とする通信装置。
【請求項２】
前記送信元アドレスと同一のアドレスが前記経路情報テーブルに登録されるまでの期間、前記取得部は、前記送信元アドレスが割り当てられた通信装置に前記第２のフレームが送信される際に、前記第２のフレームを前記宛先装置に転送できる通信装置を、前記登録テーブルから検索する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記経路情報フレームに基づいて前記経路情報テーブルを更新する更新部をさらに備え、
前記経路情報フレームは、前記経路情報フレームを生成した通信装置が前記第２のフレームを転送することができる通信装置である転送先装置のアドレスを通知し、
前記更新部は、前記経路情報フレームを生成した通信装置のアドレスに対応付けて、前記転送先装置のアドレスを前記経路情報テーブルに登録し、
前記転送先装置のアドレスが前記登録テーブルに登録されている場合、前記更新部は、前記転送先装置のアドレスと前記転送先装置のアドレスに対応付けられたアドレスを前記登録テーブルから削除する
ことを特徴とする請求項１もしくは２に記載の通信装置。
【請求項４】
第１の通信装置は、ネットワークの経路情報を記録した経路情報テーブルを備え、
受信したデータフレームの送信元アドレスが前記経路情報テーブルに記録されているかを確認し、
前記送信元アドレスが記録されていない場合、前記送信元アドレスを、前記第１の通信装置に前記データフレームを転送した転送元装置のアドレスと対応付けて登録テーブルに登録し、
前記第１の通信装置は、前記経路情報テーブルに記録されていない第２の通信装置を宛先とした送信フレームを送信するときに、前記第２の通信装置のアドレスが前記登録テーブルに登録されているかを確認し、
前記第２の通信装置のアドレスが前記登録テーブルに登録されている場合、前記第１の装置は、前記第２の通信装置のアドレスに対応付けられている転送元装置に向けて前記送信フレームを送信する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介した通信方法と、その方法が用いられる通信装置に関する。
【背景技術】
【０００２】
アドホックネットワークは、ネットワークを形成する通信装置が追加もしくは削除された場合でも、動的にネットワークが形成されるため、利便性が高い。アドホックネットワークのルーティング方法には、リアクティブ型、プロアクティブ型などの複数の種類があり、様々なルーティングプロトコルが開発されている。例えば、Adhoc On Demand Distance Vector Algorithm（ＡＯＤＶ）は、リアクティブ型のルーティングプロトコルの例である。
【０００３】
リアクティブ型のルーティングプロトコルが用いられるネットワークでは、送信要求が発生した後にルーティングテーブルが作成される。例えば、送信元装置から宛先装置までの経路を探すとき、送信元装置から宛先装置に向かう方向にリクエストをフラッディングし、宛先装置はリクエストに応答するリプライを、送信元装置に向かう方向にフラッディングする経路制御方法が考案されている。この方法では、経路制御装置は、隣接ノードからリクエストもしくはリプライを受信したとき、その隣接ノードを含む経路の情報を記憶する。
【０００４】
一方、プロアクティブ型のルーティングプロトコルが用いられるネットワークでは、経路は通信を行なう前に確定されている。プロアクティブ型のルーティングプロトコルの例として、例えば、Optimized Link State Routing（ＯＬＳＲ）が挙げられる。プロアクティブ型のプロトコルが用いられる場合、アドホックネットワークに参加する装置は、定期的にハローフレーム（Ｈｅｌｌｏフレーム）を送信する。ハローフレームにはハローフレームの送信元の通信装置の情報と、送信元の通信装置が記憶している経路情報の一部が含まれる。アドホックネットワークに参加する装置は、ハローフレームを用いて、ネットワークの経路情報を交換することにより、経路を確定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１９３５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
背景技術で述べたように、プロアクティブ型のルーティングプロトコルが用いられるネットワークでは、通信の前にルーティングテーブルが作成され、ルーティングテーブルに記録されている経路にフレームが転送される。つまり、通信装置は、ルーティングテーブルに記録されていない通信装置にフレームを転送することができないので、宛先装置がルーティングテーブルに記録されていないと転送に失敗してしまう。
【０００７】
ルーティングテーブルは、ハローフレームに基づいて生成されるが、各通信装置のハローフレームの送信時間は限定されている上、個々のハローフレームによって通知される経路の情報の量も限られている。このため、個々の通信装置において、ネットワーク全体の通信装置について記録したルーティングテーブルが生成されるまでに、時間がかかってしまう。ルーティングテーブルの生成に時間がかかれば、宛先装置がルーティングテーブルに記録されていないことに起因して、フレームの転送や送信に失敗する可能性は高くなるという問題がある。
【０００８】
本発明は、フレームの送信に失敗する可能性を低くすることを目的とする。
【課題を解決するための手段】
【０００９】
ある実施形態に係る通信装置は、受信部、経路情報テーブル、登録部、取得部、送信部を備える。受信部は、ネットワークの経路情報を通知する経路情報フレームと、経路情報フレームではない第１のフレームを受信する。経路情報テーブルは、前記経路情報フレームに含まれている経路情報を記録している。登録部は、前記第１のフレームの送信元アドレスが前記経路情報テーブルに含まれていない場合、前記送信元アドレスを、前記受信部に前記第１のフレームを転送した転送元装置のアドレスと対応付けて登録テーブルに登録する。取得部は、前記経路情報テーブルに記録されていない宛先装置を宛先とした第２のフレームを送信するときに、前記登録テーブルから前記宛先装置のアドレスに対応付けて登録されている転送元装置のアドレスを取得する。送信部は、前記取得部で取得されたアドレスに前記第２のフレームを送信する。
【発明の効果】
【００１０】
通信装置は、経路情報テーブルに登録の無い装置からフレームを受信したときにそのフレームの転送元と送信元を登録テーブルに登録して、経路情報として使用する。このため、経路情報テーブルに経路の登録が無い装置へのフレームの送信に失敗する可能性が低くなる。
【図面の簡単な説明】
【００１１】
【図１】ある実施形態で行われる通信の例を説明する図である。
【図２】通信装置の構成の例を示す図である。
【図３】ルーティングテーブルの例を示す図である。
【図４】ハローフレームの構成の例を示す図である。
【図５】データフレームの例を示す図である。
【図６】登録テーブルの例を示す図である。
【図７】通信装置のハードウェア構成の例を示す図である。
【図８】ハローフレームを受信する通信装置の例とルーティングテーブルの例を示す図である。
【図９】ハローフレームを受信する通信装置の例とルーティングテーブルの例を示す図である。
【図１０】ハローフレームを受信する通信装置の例とルーティングテーブルの例を示す図である。
【図１１】通信装置の間でデータフレームを送受信する場合の例を示す図である。
【図１２】通信装置で行われるフレームの処理の例を説明するフローチャートである。
【図１３】登録テーブルに経路情報が登録される際の通信装置の動作の例を示すフローチャートである。
【図１４】データフレームを他の通信装置に転送する場合の動作の例を示すフローチャートである。
【図１５】ルーティングテーブルの更新が行われる場合の動作の例を説明するフローチャートである。
【図１６】ルーティングテーブルの例とルーティングテーブルの更新方法の例を示す図である。
【図１７】ネットワーク中の通信装置の間でのデータの送受信とルーティングテーブルの例を表す図である。
【図１８】ルーティングテーブルの変更の際に更新部が行う動作の例を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、ある実施形態で行われる通信の例を説明する図である。図１（ａ）は、７つの通信装置ａ〜ｇが含まれるアドホックネットワークの例を示す。通信装置ａ〜ｇの各々では、プロアクティブ型のルーティングプロトコルが用いられる。以下、通信装置ａ〜ｇがアドホックネットワークに参加してネットワークを形成する際の動作について説明する。通信装置ａ〜ｇは、各々の通信装置に割り当てられたタイミングで、ネットワークの経路情報を通知するフレームをブロードキャスト送信する。
【００１３】
以下の説明では、ネットワークの経路情報を通知するフレームのことを「経路情報フレーム」と記載することがある。経路情報フレームは、複数の通信装置の間でネットワークの経路情報を共有するために使用される任意のフレームとすることができる。例えば、ハローフレームは、経路情報フレームの例である。経路情報フレームを受信した通信装置は、経路情報フレームに含まれている経路の情報や経路情報フレームの送信元の通信装置の情報を経路情報テーブルに記憶する。経路情報テーブルは、ネットワークの経路情報が記録されるテーブルであり、以下の説明では、「ルーティングテーブル」と記載されることがある。
【００１４】
また、ある装置に「隣接する通信装置」とは、ある通信装置から送信されたフレームや信号が届く範囲に位置する通信装置のことを指すものとする。例えば、図１（ａ）の例では、通信装置ａ〜ｃは通信装置ｇから送信されたフレームを受信することができるが、通信装置ｄ〜ｆは通信装置ｇから送信されたフレームを受信することができないものとする。この場合、通信装置ａ〜ｃは通信装置ｇに隣接しているが、通信装置ｄ〜ｆは通信装置ｇに隣接していない。
【００１５】
図１（ｂ）は、通信装置ｂ、ｆ、ｇの間で行われる通信の例をシーケンス図である。なお、図１（ｂ）は、シーケンスの例であり、例えば、手順（６）、（７）の処理が手順（３）〜（５）の処理よりも前に行われるように変形される場合がある。ただし、その場合は通信装置ｆから送信される経路情報フレームには通信装置ｂ、ｇの情報は含まれない。
【００１６】
（１）通信装置ｇは、経路情報フレームをブロードキャスト送信する。経路情報フレームは、通信装置ｇの情報を含む。このとき、通信装置ｇは、アドホックネットワークに含まれるいずれの通信装置の情報も取得していないので、経路情報フレームには、通信装置ｇ以外の通信装置の情報は含まれていないものとする。
【００１７】
（２）通信装置ｂは、経路情報フレームを受信し、経路情報フレームに基づいて、通信装置ｇが通信装置ｂに隣接していることを認識する。通信装置ｂは、通信装置ｂのルーティングテーブルに通信装置ｇの情報を記録する。
【００１８】
（３）通信装置ｂは、経路情報フレームをブロードキャスト送信する。通信装置ｂが送信する経路情報フレームには、通信装置ｂの情報と、通信装置ｂは通信装置ｇにフレームを転送できることが記録されているものとする。
【００１９】
（４）通信装置ｆは、手順（３）で送信された経路情報フレームを受信する。通信装置ｆは、通信装置ｂ、ｇの情報を経路情報フレームから取得して、ルーティングテーブルに記録する。
【００２０】
（５）通信装置ｇは、手順（３）で送信された経路情報フレームを受信する。通信装置ｇは、通信装置ｂの情報を経路情報フレームから取得して、ルーティングテーブルに記録する。
【００２１】
（６）通信装置ｆは、経路情報フレームをブロードキャスト送信する。このとき、通信装置ｆは、通信装置ｆの情報と、通信装置ｆを介して通信装置ｂ、ｇへのフレームの送信が可能であることが記録されているものとする。
【００２２】
（７）通信装置ｂは、手順（６）で送信された経路情報フレームを受信し、通信装置ｆの情報を取得する。さらに、通信装置ｂは、通信装置ｆの情報をルーティングテーブルに記録する。
【００２３】
（８）次に、通信装置ｆは、通信装置ｇに向けたデータを含むデータフレームを生成したとする。通信装置ｆは、ルーティングテーブルを確認して、通信装置ｇへは通信装置ｂを経由してフレームを送信できることを認識する。通信装置ｆは、生成したデータフレームを通信装置ｂに送信する。
【００２４】
（９）通信装置ｂは、手順（８）で送信されたデータフレームを受信すると、ルーティングテーブルに基づいて、通信装置ｇに転送する。
【００２５】
（１０）通信装置ｇは、通信装置ｂからデータフレームを受信する。
【００２６】
（１１）通信装置ｇは、手順（１０）で受信したデータフレームの送信元アドレスを確認し、データフレームの送信元アドレスが通信装置ｆであることを認識する。通信装置ｇは、通信装置ｆに至るまでの経路情報がルーティングテーブルに記録されているかを確認する。ここでは、通信装置ｇのルーティングテーブルには、通信装置ｆに至るまでの経路情報は記録されていない。そこで、通信装置ｇは、通信装置ｆから送信されたフレームを通信装置ｂから受信したことを、登録テーブルに登録する。
【００２７】
（１２）その後、通信装置ｇは、通信装置ｆにデータフレームを送信することになったとする。通信装置ｇは、ルーティングテーブルを確認して、通信装置ｆへの経路を検索するが、通信装置ｆへの経路はルーティングテーブルに記録されていない。通信装置ｇは、次に、通信装置ｆを送信元とするフレームの受信の記録が登録テーブルに含まれているかを確認する。登録テーブルには、手順（１１）で、通信装置ｆを送信元とするフレームを通信装置ｂから受信していることが記録されている。そこで、通信装置ｇは、通信装置ｂを経由すれば、通信装置ｆにフレームを送信できると判断し、データフレームを通信装置ｂに送信する。
【００２８】
（１３）通信装置ｂは、手順（１２）で送信されたデータフレームを通信装置ｇから受信する。通信装置ｂは受信したフレームの宛先が通信装置ｆであることを認識すると、ルーティングテーブルを参照して、通信装置ｆへの経路を取得する。この例では、通信装置ｂは、通信装置ｆにフレームを送信する。
【００２９】
（１４）通信装置ｆは、通信装置ｂからデータフレームを受信する。
このように、実施形態にかかる通信装置は、経路情報フレーム以外の第１のフレームを受信すると、第１のフレームの送信元までの経路が経路情報テーブルに記録されているかを確認する。第１のフレームの送信元が経路情報テーブルに記録されていない場合、通信装置は、第１のフレームの送信元アドレスと、第１のフレームの転送元アドレスを対応付けて、登録テーブルに登録する。さらに、通信装置は、経路情報テーブルに経路情報が記録されていない通信装置を宛先とした第２のフレームを送信しようとするときに、第２のフレームの宛先が送信元であるフレームの転送元を、登録テーブルから特定しようとする。転送元の特定に成功すると、通信装置は、第２のフレームを転送元に送信する。第２のフレームを受信した装置は、その装置が保持している経路情報テーブルもしくは登録テーブルに従って、第２のフレームの宛先に向けて第２のフレームを転送する。
【００３０】
従って、実施形態に係る通信装置は、宛先装置が経路情報テーブルに記録されていなくても、過去に受信したフレームの送信元となった装置には、フレームを送信することができる。このため、実施形態に係る通信装置は、経路情報テーブルに経路が記録されていないことに起因してフレームの転送や送信に失敗する可能性を、低くすることができる。
【００３１】
＜装置構成＞
図２は、通信装置１０の構成の例を示す。通信装置１０は、インタフェース部２０、制御部３０、記憶部５０、タイマ５５を備える。インタフェース部２０は、受信部２１と送信部２２を有する。制御部３０は、フレーム受信処理部３１、アプリケーション処理部３２、通知部３３、フレーム送信処理部３４、ルーティング部４０を有する。ルーティング部４０は、振り分け部４１、更新部４２、登録部４３、取得部４４を有する。記憶部５０は、ルーティングテーブル５１と登録テーブル５２を記憶する。
【００３２】
受信部２１は、通信装置１０に送信されてきたフレームの信号を受信する。受信部２１は、受信した信号をフレーム受信処理部３１に出力する。フレーム受信処理部３１は、受信部２１から入力された信号を、ルーティング部４０で処理できるようにフレームに変換する。フレーム受信処理部３１の変換で得られるフレームには、経路情報フレーム、経路情報フレーム以外の制御フレーム、ユーザデータを格納したデータフレームなどが含まれる。フレーム受信処理部３１は、得られたフレームを振り分け部４１に出力する。アプリケーション処理部３２は、通信装置１０宛のフレームがルーティング部４０から入力されると、入力されたフレームをアプリケーションにより処理する。また、アプリケーション処理部３２は、アプリケーションの処理によって他の通信装置１０に送信するデータフレームを生成することもできる。アプリケーション処理部３２は、生成したデータフレームを振り分け部４１に出力する。なお、アプリケーション処理部３２は、データフレームを取得部４４に出力することもできる。
【００３３】
振り分け部４１は、入力されたフレームに含まれているアドホックヘッダ中のフレームタイプフィールドを確認する。フレームタイプフィールドの値は、フレームの種類によって異なり、例えば、ハローフレームとデータフレームでは、異なる値となっている。振り分け部４１は、予め、通信装置１０が受信する可能性があるフレームの種類の各々に対応するフレームタイプフィールドの値を記憶することができ、また、適宜、記憶部５０から取得することもできる。振り分け部４１は、ハローフレームを更新部４２に出力する。
【００３４】
データフレームについては、振り分け部４１はグローバル宛先（Global Destination、ＧＤ）アドレスを確認する。以下の説明では、「グローバル宛先」は、フレームの最終的な宛先の通信装置１０を示すものとする。データフレームのグローバル宛先アドレスが振り分け部４１を含む通信装置１０に割り当てられているアドレスと一致する場合、振り分け部４１は、データフレームを登録部４３に出力する。一方、データフレームのグローバル宛先アドレスが振り分け部４１を含む通信装置１０に割り当てられているアドレスと一致しない場合、振り分け部４１は、データフレームを取得部４４に出力する。
【００３５】
更新部４２は、振り分け部４１から入力されたハローフレームを用いて、ルーティングテーブル５１を更新する。すなわち、更新部４２は、ハローフレームに含まれているグローバル宛先アドレス、ハローフレームの送信元のアドレス、通信品質などのデータをルーティングテーブル５１に格納する。さらに、更新部４２は、ハローフレームによって通知されたＧＤまでの経路を新たにルーティングテーブル５１に登録したとき、登録したＧＤまでの経路が登録テーブル５２に登録されているかを確認する。ルーティングテーブル５１に登録されたＧＤまでの経路が登録テーブル５２に含まれている場合、更新部４２は、登録テーブル５２からそのＧＤまでの経路を登録テーブル５２から削除する。
【００３６】
図３は、ルーティングテーブル５１の例を示す図である。ルーティングテーブル５１は、グローバル宛先アドレス、ローカル宛先（Local Destination、ＬＤ）アドレス、品質情報を含む。一方、「ローカル宛先」は、フレームをグローバル宛先に送信するために行われる１ホップの転送の際に、宛先として指定される通信装置１０を示す。例えば、図１の通信装置ｆが、通信装置ｂを経由して通信装置ｇにデータフレームを送信する場合、通信装置ｇはグローバル宛先である。このとき、通信装置ｆは、通信装置ｇに送信するデータフレームを通信装置ｂに送信し、通信装置ｂが通信装置ｇにデータフレームを転送する。従って、通信装置ｆから通信装置ｂへのデータフレームの送信の際には、ローカル宛先は通信装置ｂ、グローバル宛先はｇとなる。一方、通信装置ｂがデータフレームを通信装置ｇに転送する際には、通信装置ｂは、ローカル宛先とグローバル宛先のいずれも通信装置ｇに設定する。
【００３７】
通知部３３は、ハローフレームを生成し、フレーム送信処理部３４に出力する。通知部３３は、ルーティングテーブル５１に含まれている経路に関する情報を含むハローフレームを生成することができる。なお、登録テーブル５２に含まれている経路については、ホップ数などの通信品質を特定できないため、通知部３３は、ハローフレームに含めないものとする。
【００３８】
図４は、ハローフレームの構成の例を示す図である。ハローフレームは、アドホックヘッダとペイロードを含む。ペイロードには、ハローメッセージヘッダとハローヘッダ、署名が含まれる。アドホックヘッダは、ローカル宛先アドレス、ローカル送信元（Local Source、ＬＳ）アドレス、フレームタイプ、予約領域（reserve）、フレームサイズを含む。「ローカル送信元」（ＬＳ）は、フレームが１ホップ転送される場合の転送元の通信装置１０を指す。ハローメッセージヘッダには、サービスタイプ、分割情報、ハローヘッダ数、バイアス、装置起動経過時間、アクセスキーが含まれる。ハローヘッダには、グローバル宛先アドレス、ホップ数、ＧＷパス情報、経路品質重み、復路品質重みが含まれる。更新部４２は、ハローヘッダ中のグローバル宛先アドレスの各々を、グローバル宛先アドレス（ＧＤ）として、ルーティングテーブル５１に登録する。さらに、更新部４２は、ハローフレームのローカル送信元アドレスを、同じハローフレームに含まれているグローバル宛先アドレスに対応するローカル宛先アドレス（ＬＤ）として、ルーティングテーブル５１に登録する。
【００３９】
ルーティングテーブル５１は、１つのグローバル宛先に対して、１つ以上の任意の数のローカル宛先を記録することができる。例えば、図３に示すように、ルーティングテーブル５１は、１つのグローバル宛先に対して、３つ以下のローカル宛先を対応付けて記憶することができる。さらに、ルーティングテーブル５１は、例えば、ホップ数や受信電波強度などのパスの品質を表す情報を、グローバル宛先とローカル宛先の組合せごとに記録することができる。品質情報に含まれる情報の数や種類は、実装に応じて選択される。
【００４０】
図５は、データフレームの例を示す。データフレームは、アドホックヘッダ、データヘッダ、ペイロードを含む。アドホックヘッダは、ハローフレームのアドホックヘッダと同様の情報要素を含む。データヘッダは、フレームのグローバル宛先アドレス、グローバル送信元アドレス（Global Source、ＧＳ）、フレームタイプなどの情報要素を含む。グローバル送信元アドレスは、データフレームを生成した通信装置１０のアドレス（送信元アドレス）である。フレームタイプは、ペイロードに含まれるデータの種類を示す。
【００４１】
登録部４３は、振り分け部４１から入力されたデータフレームのグローバル送信元アドレスが、ルーティングテーブル５１のＧＤとして登録されているかを確認する。グローバル送信元アドレスがＧＤとして登録されていない場合、登録部４３は、そのグローバル送信元アドレスをＧＤとして登録テーブル５２に登録する。さらに、登録部４３は、データフレームのアドホックヘッダから取得したローカル送信元アドレスを、グローバル送信元アドレスに対応するローカル宛先アドレス（ＬＤ）として、登録テーブル５２に登録する。登録テーブル５２の例を図６に示す。登録テーブル５２への登録が終わると、登録部４３は、データフレームをアプリケーション処理部３２に出力する。登録部４３がデータフレームをアプリケーション処理部３２に出力することにより、データフレームがグローバル宛先に指定された通信装置１０で処理される。
【００４２】
一方、他の通信装置宛のデータフレームは、取得部４４に入力される。取得部４４は、ルーティングテーブル５１を参照して、振り分け部４１から入力されたデータフレームの転送先を検索する。すなわち、取得部４４は、データフレームのグローバル宛先アドレスをキーとして、ルーティングテーブル５１のＧＤの欄を検索し、データフレームのグローバル宛先アドレスに対応付けられたＬＤを検索する。ルーティングテーブル５１にＧＤが登録されている場合、取得部４４は、データフレームのアドホックヘッダのローカル宛先アドレスに、ＧＤに対応付けられているアドレスを記録する。一つのＧＤに対応づけて複数のＬＤが記録されている場合、取得部４４は、予め設定された方法により転送先の通信装置１０を選択して、選択した通信装置１０のアドレスをローカル宛先アドレスに登録する。
【００４３】
一方、ルーティングテーブル５１にＧＤが登録されていない場合、取得部４４は、登録テーブル５２にＧＤが登録されているかを確認する。登録テーブル５２にＧＤが登録されている場合、取得部４４は、ＧＤに対応付けられているＬＤを転送先とする。そこで、転送先とするＬＤのアドレスをアドホックヘッダのローカル宛先アドレスに設定する。さらに、取得部４４は、アドホックヘッダのローカル送信元アドレスには、取得部４４を含む通信装置１０に割り当てられているアドレスを記録する。アドホックヘッダを設定した後、取得部４４は、データフレームをフレーム送信処理部３４に出力する。
【００４４】
フレーム送信処理部３４は、取得部４４から入力されたフレームを送信部２２から送信することができる信号に変換する。送信部２２は、フレーム送信処理部３４から入力された信号を、フレームの宛先に向けて送信する。例えば、送信部２２は、経路情報フレームをブロードキャスト送信する。タイマ５５は、ルーティングテーブル５１や登録テーブル５２に含まれる経路の各々について、経路が最後に使用されてから経過した時間を計測するために用いられる。
【００４５】
図７は、通信装置のハードウェア構成の例を示す図である。通信装置１０は、MicroProcessingUnit（ＭＰＵ）１００、バス１０１（１０１ａ〜１０１ｃ）、PHYsical layer（ＰＨＹ）チップ１０２、タイマＩＣ（Integrated Circuit）１０４、Dynamic Random access Memory（ＤＲＡＭ）１０６、フラッシュメモリ１０７、無線モジュール１０８を備える。バス１０１ａ〜１０１ｃは、ＭＰＵ１００、ＰＨＹチップ１０２、タイマＩＣ１０４、ＤＲＡＭ１０６、フラッシュメモリ１０７、無線モジュール１０８の間でデータの入出力が可能になるように接続する。
【００４６】
ＭＰＵ１００は、フラッシュメモリ１０７に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、ＭＰＵ１００は、ＤＲＡＭ１０６をワーキングメモリとして使用できる。ＭＰＵ１００は、制御部３０として動作する。ＤＲＡＭ１０６は、記憶部５０として動作する。ＰＨＹチップ１０２や無線モジュール１０８は、インタフェース部２０として動作する。ここで、ＰＨＹチップ１０２はオプションであり、通信装置１０は、ＰＨＹチップ１０２を介して回線による通信を行うことができる。例えば、Ｌ３ネットワークとアドホックネットワークとの間のゲートウェイとして動作する通信装置１０は、Ｌ３ネットワーク中の通信装置とＰＨＹチップ１０２を用いて通信することができる。タイマＩＣ１０４は、タイマ５５として動作する。
【００４７】
なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、通信装置１０にインストールされてもよい。または、プログラムは、ネットワークからＰＨＹチップ１０２や無線モジュール１０８を介してダウンロードされることにより通信装置１０にインストールされてもよい。また、実施形態に応じて、ＤＲＡＭ１０６やフラッシュメモリ１０７以外の他の種類の記憶装置が利用されてもよい。
【００４８】
＜第１の実施形態＞
以下の説明では、説明を簡略化するために、通信装置１０は、ハローフレームかユーザデータを含むフレーム（データフレーム）のいずれかを受信するものとする。また、経路情報フレームはハローフレームであるものとする。
【００４９】
図８（ａ）は、第１の実施形態を適用することができるネットワークの例を示す。図８（ａ）に示すネットワークには、ネットワークサーバ６１、Ｌ３ネットワーク６２、アドホックネットワークに参加しようとする通信装置１０が含まれる。図８（ａ）に示すアドホックネットワークには、ＧＷ（gateway）、Ｎ１〜Ｎ６の７つの通信装置１０が参加するものとする。なお、図８（ａ）の例では、７つの通信装置１０を含むアドホックネットワークが示されているが、アドホックネットワークに含まれる通信装置１０の数は任意である。以下、図８（ａ）のネットワークにおいてＧＷ、Ｎ２、Ｎ６がハローフレームを送信した後でＮ６からＧＷ宛てのデータフレームが送信される場合を例として通信装置１０の動作を説明する。
【００５０】
まず、ＧＷがハローフレームをブロードキャスト送信したときの動作について説明する。ＧＷの通知部３３は、ハローフレームを生成し、フレーム送信処理部３４、送信部２２を介して、ハローフレームをブロードキャスト送信する。このとき、ＧＷは、ＧＷの隣接ノードに関する情報を記憶していないため、通知部３３は、ハローヘッダを含まないハローフレームを生成する。送信されたハローフレームは、図８（ｂ）に示すように、ＧＷの隣接ノードであるＮ１〜Ｎ３で受信される。
【００５１】
Ｎ１でハローフレームが受信されると、Ｎ１の振り分け部４１は、受信部２１、フレーム受信処理部３１を介してハローフレームを取得する。振り分け部４１は、ハローフレームのアドホックヘッダに含まれているフレームタイプフィールドを参照して、受信フレームがハローフレームであることを認識する。振り分け部４１は、ハローフレームを更新部４２に出力する。
【００５２】
Ｎ１の更新部４２は、入力されたハローフレームのローカル送信元アドレスを参照し、ハローフレームのローカル送信元アドレスがＧＷであることを認識する。また、ハローフレームにはハローヘッダが含まれていないことも認識する。そこで、更新部４２は、ＧＷには１ホップでフレームを転送できることが通知され、アドホックネットワーク中の他の通信装置１０についての情報は通知されていないと判断する。すると、更新部４２は、ＧＤとＬＤの両方がＧＷのときのホップ数が１であることをルーティングテーブル５１に記録する。すなわち、更新部４２は、Ｎ１のルーティングテーブル５１を図８（ｃ）のように更新する。更新部４２の処理により、Ｎ１は、ＧＷを宛先としたフレームをＧＷに送信することができるようになる。
【００５３】
Ｎ２とＮ３においても、Ｎ１と同様の処理が行われ、ルーティングテーブル５１が図８（ｃ）のように更新される。この処理により、Ｎ２とＮ３も、ＧＷを宛先としたフレームをＧＷに送信することができるようになる。
【００５４】
図９は、Ｎ２がハローフレームを送信したときにハローフレームを受信する通信装置の例とルーティングテーブルの例を示す図である。ここでは、図９（ａ）に示すように、Ｎ２から送信されたハローフレームは、Ｎ１、Ｎ３〜Ｎ６、ＧＷに受信されるものとする。なお、図９（ａ）の破線で示す矢印は、図８を参照しながら説明したハローフレームの送受信で生成された経路を示す。また、生成された経路は矢印の方向に向かう経路である。
【００５５】
Ｎ２の通知部３３がハローフレームを生成する際には、図８を参照しながら説明した手順によって、Ｎ２が備えるルーティングテーブル５１は、図８（ｃ）に示すように更新されている。このため、Ｎ２の通知部３３は、グローバル宛先アドレスフィールドにＧＷのアドレス、ホップ数フィールドに１を指定したハローヘッダを含むハローフレームを生成する。
【００５６】
Ｎ１でハローフレームが受信されると、Ｎ１の振り分け部４１は、ハローフレームを更新部４２に出力する。更新部４２は、ハローフレームのローカル送信元アドレスがＮ２であり、ハローフレームにはＧＷをグローバル宛先としたハローヘッダが含まれていることを認識する。そこで、更新部４２は、Ｎ２には１ホップでフレームを転送でき、さらに、Ｎ２を経由してＧＷにフレームを送信できると判断する。また、更新部４２は、ＧＷをグローバル宛先に設定したハローヘッダではホップ数が１であるので、Ｎ２からＧＷまでが１ホップであることも認識する。従って、Ｎ１から送信されたフレームがＮ２を経由してＧＷに送信される場合は、２ホップで送信されることになる。そこで、更新部４２は、ＧＤがＧＷでＬＤがＮ２のときのホップ数が２であることと、ＧＤがＮ２でＬＤがＮ２のときのホップ数が１であることをルーティングテーブル５１に記録する。従って、Ｎ１のルーティングテーブル５１は、図９（ｂ）に示すように更新される。Ｎ３も同様の処理を行い、Ｎ３のルーティングテーブル５１も図９（ｂ）に示すように更新される。
【００５７】
Ｎ４〜Ｎ６の更新部４２も、Ｎ２から送信されたハローフレームを受信すると、Ｎ１の更新部４２と同様に、ＧＤがＧＷでＬＤがＮ２のときのホップ数が２であることと、ＧＤがＮ２でＬＤがＮ２のときのホップ数が１であることをルーティングテーブル５１に記録する。そこで、Ｎ４〜Ｎ６のルーティングテーブル５１は、図９（ｃ）に示すとおりになる。
【００５８】
ＧＷの更新部４２も、Ｎ２から送信されたハローフレームを受信すると、ＧＤがＮ２でＬＤがＮ２のときのホップ数が１であることを認識して、ルーティングテーブル５１を図９（ｄ）のように更新する。
【００５９】
図１０は、Ｎ６がブロードキャスト送信したハローフレームを受信する通信装置の例とルーティングテーブルの例を示す図である。なお、図１０（ａ）の破線の矢印は、図８と図９のハローフレームによって生成された経路を示す。
【００６０】
Ｎ６がブロードキャスト送信するハローフレームは、Ｎ６からＧＷまでの経路の情報を示すハローヘッダと、Ｎ６からＮ２までの経路の情報を示すハローヘッダを備えているとする。また、図１０（ａ）に示すように、Ｎ２、Ｎ４、Ｎ５が、Ｎ６から送信されたハローヘッダを受信したとする。この場合、Ｎ２のルーティングテーブル５１は図１０（ｂ）の通りになり、Ｎ４およびＮ５のルーティングテーブル５１は、図１０（ｃ）の通りになる。
【００６１】
図１１は、通信装置１０の間でデータフレームを送受信する場合の例を示す。図１１を参照しながら、図８〜図１０を参照して説明したハローフレームの送受信が行われた後にＮ６とＧＷの間でデータフレームを送受信する場合について説明する。以下の手順（１）〜（８）は、図１１の（１）〜（８）に対応するものとする。
【００６２】
（１）まず、Ｎ６のアプリケーション処理部３２がＧＷ向けのデータフレームＤ１を生成する。このデータフレームのグローバル宛先アドレスにＧＷのアドレス、グローバル送信元アドレスにＮ６のアドレスが設定されている。ここでは、アプリケーション処理部３２は、生成したデータフレームを取得部４４に出力するものとする。Ｎ６の取得部４４は、データフレームＤ１のデータヘッダに含まれているグローバル宛先アドレスに対応付けられているＬＤを、ルーティングテーブル５１から検出する。Ｎ６のルーティングテーブル５１は、図９（ｃ）のとおりであるので、取得部４４は、Ｎ２を介してデータフレームＤ１をＧＷに送信することができると認識する。そこで、Ｎ６の取得部４４は、データフレームＤ１のアドホックヘッダのＬＤにＮ２のアドレス、ＬＳにＮ６のアドレスを設定する。
【００６３】
（２）Ｎ２でデータフレームＤ１が受信されると、Ｎ２の振り分け部４１にデータフレームＤ１が入力される。振り分け部４１は、データフレームＤ１のアドホックヘッダとデータヘッダを参照することにより、データフレームＤ１がデータフレームであることと、データフレームＤ１のグローバル宛先はＮ２ではないことを認識する。そこで、振り分け部４１は、データフレームＤ１を取得部４４に出力する。Ｎ２の取得部４４は、ルーティングテーブル５１（図１０（ｂ）)を参照してデータフレームＤ１の転送先を決定する。ここでは、取得部４４が転送先としてＧＷを選択したことにより、データフレームＤ１がＮ２からＧＷに向けて送信されたものとする。
【００６４】
（３）ＧＷでデータフレームＤ１が受信されると、そのデータフレームはＧＷの振り分け部４１に入力される。振り分け部４１は、アドホックヘッダとデータヘッダを参照することにより、データフレームＤ１がＧＷ宛てのデータフレームであることを認識する。そこで、振り分け部４１は、データフレームＤ１を登録部４３に出力する。
登録部４３は、データフレームＤ１のグローバル送信元（Ｎ６）のアドレスがルーティングテーブル５１（図９（ｄ））に登録されているかを確認する。図９（ｄ）に示すように、ＧＷのルーティングテーブルには、Ｎ６のアドレスが記録されていない。そこで、登録部４３は、ＧＷの登録テーブル５２に、Ｎ６のアドレスを転送元であるＮ２のアドレスに対応付けて登録する。図１１（ａ）に、取得部４４の処理により更新されたＧＷの登録テーブル５２の例を示す。
【００６５】
（４）次に、ＧＷがＮ６に対してデータフレームＤ２を送信するものとする。ＧＷのアプリケーション処理部３２で生成されたデータフレームＤ２は、ＧＷの取得部４４に入力される。ここで、データフレームＤ２のグローバル宛先はＮ６、グローバル送信元はＧＷに設定されているものとする。
取得部４４は、データフレームＤ２のデータヘッダを参照することにより、グローバル宛先がＮ６であることを認識する。取得部４４は、Ｎ６への経路がルーティングテーブル５１に記録されているかを確認する。図９（ｄ）に示すとおり、ＧＷに備えられているルーティングテーブル５１には、Ｎ６への経路が記録されていない。そこで、取得部４４は、登録テーブル５２にＮ６への経路が登録されているかを確認する。ＧＷに備えられている登録テーブル５２は、図１１（ａ）に示すように、ＧＤがＮ６のときはＬＤをＮ２にすることが記録されている。そこで、取得部４４は、データフレームＤ２のローカル宛先をＮ２に設定した上で、データフレームＤ２をＮ２に送信する。
【００６６】
（５）Ｎ２はデータフレームＤ２を受信する。データフレームＤ２は、Ｎ２の振り分け部４１において、Ｎ６宛てのデータフレームであると判断される。そこで、振り分け部４１は、取得部４４にデータフレームＤ２を出力する。Ｎ２の取得部４４は、ルーティングテーブル５１（図１０（ｂ）)を参照してデータフレームＤ２をＮ６に向けて送信する。
【００６７】
（６）Ｎ６は、Ｎ２からデータフレームＤ２を受信する。
【００６８】
（７）次に、Ｎ５が、Ｎ５からＮ６への経路を含むハローフレームをブロードキャストし、Ｎ３がＮ５から送信されたハローフレームを受信したとする。Ｎ３は、図８〜図１０を参照しながら述べた方法と同様にして、Ｎ６への経路情報を取得する。さらに、Ｎ３は、Ｎ３からＮ６までの経路を示すハローヘッダを含むハローフレームをブロードキャストし、ＧＷは、Ｎ３から送信されたハローフレームを受信したとする。
【００６９】
（８）ＧＷの振り分け部４１は、Ｎ３から送信されたハローフレームを更新部４２に出力する。更新部４２は、Ｎ３から受信したハローフレームに基づいて、Ｎ３までの経路とＮ６までの経路をルーティングテーブル５１に記録する。図１１（ｂ）に、変更後のＧＷのルーティングテーブル５１を示す。さらに、更新部４２は、登録テーブル５２に登録されている経路のうち、新たにルーティングテーブル５１に登録したＧＤまでの経路を削除する。
【００７０】
図１２は、通信装置１０で行われるフレームの処理の例を説明するフローチャートである。振り分け部４１は、通信装置１０で受信されたフレームの種類と宛先に応じてフレームの出力先を変更することにより、フレームを振り分ける（ステップＳ１）。振り分け部４１は、振り分け部４１を含む通信装置１０に宛てられたデータフレームを、登録テーブル５２への登録の対象であると判断して、登録部４３に出力する。登録部４３は、振り分け部４１から入力されたデータフレームに含まれているグローバル送信元アドレスとローカル送信元アドレスを対応付けて登録テーブル５２に登録する（ステップＳ２）。さらに、登録部４３は、登録後のデータフレームに含まれているデータをアプリケーション処理部３２に出力する（ステップＳ３）。アプリケーション処理部３２は、ステップＳ３で通知されたデータに基づいて処理を行う。
【００７１】
また、他の通信装置１０に宛てられているデータフレームであると振り分け部４１が判断したフレームは、転送の対象とされる。そこで、登録部４３は、転送対象のフレームを取得部４４に出力し、取得部４４は、転送処理を行う（ステップＳ４）。
【００７２】
通信装置１０で受信されたフレームがハローフレームであると判断された場合、振り分け部４１は、そのフレームを更新部４２に出力する。更新部４２は、ハローフレームに含まれているグローバルアドレスまでの経路とハローフレームの送信元の情報に基づいて、ルーティングテーブル５１を更新する（ステップＳ５）。
【００７３】
図１３は、登録テーブルに経路情報が登録される際の通信装置１０の動作の例を示すフローチャートである。図１３は、ステップＳ２の処理を詳しく示している。登録部４３は、登録部４３が含まれている通信装置１０が最終宛先となっているデータフレームを、振り分け部４１から入力される（ステップＳ１１）。登録部４３は、データフレームのグローバル送信元アドレスをＧＤとする経路がルーティングテーブル５１に記録されているかを調べる（ステップＳ１２）。データフレームのグローバル送信元アドレスをＧＤとする経路がルーティングテーブル５１に記録されていない場合、登録部４３は、グローバル送信元アドレスが割り当てられた通信装置への経路を登録テーブル５２に登録する（ステップＳ１３）。このとき、登録テーブル５２のＧＤはデータフレームのグローバル送信元（データフレームのＧＳ）となり、ＬＤはデータフレームのローカル送信元となる。一方、データフレームのグローバル送信元アドレスをＧＤとする経路がルーティングテーブル５１に記録されている場合、登録部４３はそのフレームについての処理を終了する（ステップＳ１２でＹｅｓ）。
【００７４】
図１４は、データフレームを他の通信装置に転送する場合の通信装置１０の動作の例を示すフローチャートである。図１４は、ステップＳ４の処理を詳しく示している。取得部４４は、振り分け部４１から入力されたフレームのグローバル宛先がルーティングテーブル５１に登録されているかを確認する（ステップＳ２１）。グローバル宛先がルーティングテーブル５１に登録されていない場合、取得部４４は、グローバル宛先が登録テーブル５２に登録されているかを確認する（ステップＳ２１でＮｏ、ステップＳ２２）。グローバル宛先が登録テーブル５２に登録されている場合、取得部４４は、データフレームの送信が可能であると判断して、登録テーブル５２に登録されているＬＤにデータフレームを転送する（ステップＳ２３）。グローバル宛先がルーティングテーブル５１に登録されている場合も、取得部４４は、データフレームの送信が可能であると判断して、フレームの宛先に対応付けて登録されているＬＤにデータフレームを転送する（ステップＳ２１でＹｅｓ、ステップＳ２３）。一方、ルーティングテーブル５１と登録テーブル５２のいずれにも、フレームのグローバル宛先が登録されていない場合、取得部４４は、データの送信ができないと判断して、フレームを廃棄する（ステップＳ２２でＮｏ）。
【００７５】
図１５は、ルーティングテーブルの更新が行われる場合の通信装置１０の動作の例を説明するフローチャートである。ハローフレームを受信すると、振り分け部４１は、ハローフレームを更新部４２に出力する（ステップＳ３１）。更新部４２は、受信したハローフレームに含まれている経路情報が登録テーブル５２に登録されているかを確認する（ステップＳ３２）。ハローフレームに含まれている経路情報が登録テーブル５２に含まれている場合、更新部４２は、ハローフレームに記録されている経路情報を用いてルーティングテーブル５１を更新する（ステップＳ３３）。すなわち、更新部４２は、ハローフレームの送信元（ハローフレームのＬＳ）を、ルーティングテーブル５１のＬＤに設定し、ハローヘッダに含まれているグローバル宛先をルーティングテーブル５１のＧＤに設定する。さらに、更新部４２は、ハローヘッダに含まれている品質情報も、ルーティングテーブル５１に登録する。次に、更新部４２は、ルーティングテーブル５１に含まれているＧＤへの経路に関する情報を、登録テーブル５２から削除する（ステップＳ３４）。一方、ハローフレームに含まれている経路情報が登録テーブル５２に含まれていない場合も、更新部４２は、ハローフレームに記録されている経路情報を用いてルーティングテーブル５１を更新する（ステップＳ３５）。
【００７６】
このように、本実施形態に係る通信装置１０は、ルーティングテーブル５１に登録されていない宛先であっても、データフレームの送信元（ＧＳ）と転送元（ＬＳ）の情報を記録する登録テーブル５２に基づいて、フレームを転送することができる。すなわち、通信装置１０は、通信装置１０に一度でもデータフレームを送信したことのあるＧＳへは、ＧＳとなっていた装置までの経路情報が通信装置１０に通知されていなくても、フレームを送信することができる。このため、通信装置１０では、フレームの転送に失敗する可能性が小さくなっている。
【００７７】
回線が細い特小無線などでは、一度に送受信できるデータ量が小さいため、ハローフレームの長さも短くなる。このため、ハローフレームに含めることができるハローヘッダの数が制限されてしまうことがある。すると、アドホックネットワークに参加する各々の通信装置がハローフレームからネットワークの全体の経路情報を取得するためには、時間がかかってしまう。しかし、通信装置１０を含むアドホックネットワークでは、ハローフレームによる経路の構築が完了する前でも、過去に通信装置１０が受信したデータフレームの送信元に対しては、通信装置１０がフレームを送信できる。このため、通信装置１０を含むアドホックネットワークでは、フレームの送信に失敗する可能性が低くなる。受信したデータフレームの送信元に対して通信装置１０がフレームを送信することができると、データフレームに対する応答フレーム等の送信が可能になる。このため、データフレームの再送が繰り返されることなどによる、ネットワーク中のトラフィックの増大も防ぐことができる。
【００７８】
＜第２の実施形態＞
第２の実施形態に係る通信装置１０では、ルーティングテーブル５１と登録テーブル５２を統合したルーティングテーブル７０を備えることができる。
【００７９】
図１６は、ルーティングテーブル７０の例とルーティングテーブル７０の更新方法の例を示す図である。ルーティングテーブル７０は、グローバル宛先アドレス、ローカル宛先アドレス、品質情報、仮登録フラグを含む。仮登録フラグは、あるエントリがデータフレームの送信元アドレス等に基づいて登録されたかを表す。例えば、登録部４３は、データフレームに含まれているアドレスの情報をルーティングテーブル７０に登録する際には、仮登録フラグを１に設定する。一方、更新部４２がハローフレームに含まれている経路情報をルーティングテーブル７０に登録する際には、仮登録フラグを０に設定する。
【００８０】
図１６（ａ）のシーケンスに示すように、Ｎ６からＮ２を経由して送信されたＧＷ宛てのデータフレームＤ３が、ＧＷで受信されたとする。データフレームＤ３は、第１の実施形態で説明した方法と同様にして登録部４３に出力される。登録部４３は、ルーティングテーブル７０に、データフレームＤ３のグローバル送信元であるＮ６までの経路が記録されているかを確認する。ルーティングテーブル７０にＮ６までの経路が含まれていない場合、登録部４３はデータフレームＤ３のＧＳをルーティングテーブル７０のＧＤとし、データフレームＤ３のＬＳをＬＤに登録する。このとき、データフレームＤ３には品質情報が含まれないので品質情報はルーティングテーブル７０に記録されない。また、登録部４３は、データフレームＤ３に基づいて登録した情報に対応する仮登録フラグの値を「１」に設定する。更新後のルーティングテーブル７０を図１６（ｂ）に示す。
【００８１】
次に、ＧＷがＮ６にデータフレームＤ４を送信するとする。このときアプリケーション処理部３２で生成されたデータフレームＤ４は、第１の実施形態で説明したように、取得部４４に出力される。取得部４４はルーティングテーブル７０に含まれているＧＤとＬＤの組合せに応じて、データフレームの転送先（ＬＤ）を決定する。ここでは、図１６（ａ）のシーケンスに示すように、データフレームＤ４のＧＤはＮ６、ＬＤはＮ２に設定される。
【００８２】
その後、Ｎ３からブロードキャスト送信されたハローフレームをＧＷが受信したとする。また、ハローフレームには、Ｎ３からＮ６までの経路の情報が含まれているとする。すると、ハローフレームは、第１の実施形態と同様にして更新部４２に出力される。更新部４２は、ハローヘッダのＧＤにＮ６が含まれていることを認識すると、ルーティングテーブル７０中のＮ６の経路を更新する。Ｎ６の経路情報に対応する仮登録フラグが「１」に設定されていることから、更新部４２は、Ｎ６への経路情報は登録部４３によって登録されていることを認識する。すると、更新部４２は、Ｎ６をＧＤとする経路として登録されているＬＤの情報をハローフレームの送信元であるＮ３に変更する。また、更新部４２は、仮登録フラグを「１」から「０」に変更する。図１５（ｃ）に、更新後のルーティングテーブル７０の例を示す。
【００８３】
このように、本実施形態では、ルーティングテーブル５１と登録テーブル５２を１つのルーティングテーブル７０にまとめることにより、経路情報が一括して管理される。
【００８４】
＜第３の実施形態＞
図１７（ａ）は、ネットワーク中の通信装置の間でのデータの送受信の例を表す。以下、図１７（ａ）を参照しながら、新たな通信装置１０がネットワークに加わった場合を例として第３の実施形態について説明する。なお、以下の例に使用する通信装置Ａ〜Ｃ、ＧＷ、Ｚのいずれも通信装置１０であるとする。
【００８５】
（１）通信装置Ａ〜ＣとＧＷを含むネットワークが形成されているとする。通信装置Ａ〜ＣとＧＷを含むネットワークの経路が記録されており、通信装置ＧＷのルーティングテーブル５１は、記憶可能な経路の最大数の経路が既に記憶されているものとする。すなわち、通信装置ＧＷのルーティングテーブル５１に割り当てることができるメモリが使い切られており、これ以上、経路を記憶することができないとする。以下、ＧＷは図３に示すルーティングテーブル５１を記憶しているものとする。
【００８６】
（２）通信装置Ｚは、通信装置Ｂがブロードキャスト送信したハローフレームを受信する。ここでハローフレームには、通信装置ＢからＧＷに至るまでの経路を特定する情報が含まれているとする。すると、通信装置Ｚの更新部４２は、ハローフレームを取得し、通信装置ＢおよびＧＷまでの経路を通信装置Ｚのルーティングテーブル５１に記録する。さらに、通信装置Ｚは、ハローフレームをブロードキャスト送信する。通信装置Ｂの更新部４２は、通信装置Ｚから送信されたハローフレームから経路情報を取得して、通信装置Ｚまでの経路を通信装置Ｂのルーティングテーブル５１に記録する。
【００８７】
（３）通信装置ＺがＧＷに送信するデータフレームＤ５を生成すると、通信装置Ｚの取得部４４は、ルーティングテーブル５１を参照して通信装置ＢにデータフレームＤ５を送信する。
【００８８】
（４）通信装置ＢがデータフレームＤ５を受信すると、第１の実施形態で説明したようにデータフレームＤ５が取得部４４に入力される。取得部４４は、データフレームＤ５のグローバル宛先に指定されているＧＷまでの経路をルーティングテーブル５１から取得し、データフレームＤ５のアドホックヘッダを変更する。その後、データフレームＤ５は、通信装置ＢからＧＷに送信される。
【００８９】
（５）ＧＷは、データフレームＤ５を受信する。ＧＷでデータフレームＤ５が受信されると、ＧＷの登録部４３は、ルーティングテーブル５１を参照して、グローバル送信元に至る経路が記録されているかを確認する。ここでは、図３に示すように、ルーティングテーブル５１には通信装置Ｚまでの経路は登録されていない。そこで、登録部４３は、図６に示すように、通信装置ＺをＧＤ、通信装置ＢをＬＤとしてＧＷの登録テーブル５２に登録する。この手順での取得部４４などの動作は、第１の実施形態と同様である。
【００９０】
（６）ＧＷが通信装置Ｚに送信するデータフレームＤ６を生成する。ＧＷの取得部４４は、登録テーブル５２を用いて、データフレームＤ６を通信装置Ｂに送信する。この手順での動作も第１の実施形態と同様である。
【００９１】
（７）通信装置Ｂは、データフレームＤ６を受信する。通信装置Ｂの取得部４４にデータフレームＤ６が入力され、取得部４４は、ルーティングテーブル５１を用いて、データフレームＤ６を通信装置Ｚに送信する。この手順での動作も第１の実施形態と同様である。
【００９２】
（８）通信装置Ｚは、データフレームＤ６を受信する。
第３の実施形態によると、第１および第２の実施形態よりもフレームの送信の失敗を防ぐことができる。
【００９３】
本実施形態によると、ＧＷのルーティングテーブル５１に割り当てられたメモリに新たに加わった通信装置への経路を記憶させることができない場合でも、登録テーブル５２に経路を登録することによって新たに加わった通信装置との通信が可能になる。アドホックネットワークに参加している通信装置１０がネットワークサーバ６１にアクセスするためのゲートウェイ（ＧＷ）には、アドホックネットワーク中の多くの通信装置がアクセスする。このため、ＧＷでは、ルーティングテーブル５１のメモリ不足が他の通信装置１０よりも起こりやすい。本実施形態によると、ルーティングテーブル５１のメモリ不足が発生した後に新たに加わった通信装置とも通信を行うことができる。図１７（ｂ）は、ルーティングテーブル５１の例を示す。図１７（ｂ）の例では、ルーティングテーブル５１は、ＧＤ、ＬＤの他に、Time To Live（ＴＴＬ）値、リンク間到達重み、ホップ数、経路品質重み、評価値、受信電波強度などの品質情報が含まれる。これらの品質情報については、後述する。一方、登録テーブル５２は、図６に示すように、品質情報が含まれていない。このため、登録テーブル５２とルーティングテーブル５１で同数の経路情報を記憶したとしても、登録テーブル５２がルーティングテーブル５１よりもメモリ容量を小さくなる。
【００９４】
さらに、既にルーティングテーブル５１に記憶されている経路の中から選択した経路を削除して、登録テーブル５２に登録されている経路をルーティングテーブル５１に記録するように、更新部４２の動作を変形することもできる。登録テーブル５２に登録されている経路を通知するハローフレームを受信すると、ハローフレームのアドレスをルーティングテーブル５１に登録する。
【００９５】
図１８は、ルーティングテーブル５１の変更の際に更新部４２が行う動作の例を説明するフローチャートである。ルーティングテーブル５１に新たな経路を記録できないとき、更新部４２は、振り分け部４１からハローフレームを入力されると、ハローフレームに含まれている経路情報が登録テーブル５２に含まれているかを検索する（ステップＳ４１）。ハローフレーム中のアドレスの情報が登録テーブル５２に含まれている場合、振り分け部４１は、ルーティングテーブル５１の中から削除対象の経路情報を検索する（ステップＳ４２）。ここで、削除対象の経路情報は、品質情報に基づいて決定される。ＴＴＬは、経路の有効期限を表す。ＴＴＬの値は、時間経路が使用されるたびに初期値に戻され、時間の経過と共に小さな値に変更されていく。リンク間到達重みは、経路の通信実績値である。経路品質重みは、ハローフレームに含まれているリンク間到達重みを、その経路の全領域に渡って加算して得られる値である。評価値は、リンク間到達重みと経路品質重みに基づいて計算される値であり、経路の通信品質を表す。例えば、評価値が小さな経路や使用頻度の小さい経路がルーティングテーブル５１から削除対象として検索される。また、ＴＴＬ値が一定の値以下となったエントリも削除対象となる。削除の対象となるエントリがルーティングテーブル５１に含まれている場合、更新部４２は、削除対象のエントリを削除する（ステップＳ４３）。さらに、ハローフレームに含まれている経路情報をルーティングテーブル５１に登録する（ステップＳ４４）。さらに、更新部４２は、ルーティングテーブル５１に登録した経路に関する情報を登録テーブル５２から削除する（ステップＳ４５）。
【００９６】
このように、ルーティングテーブル５１に含まれる経路を、適宜、入れ替えることにより、使用頻度の高い経路がルーティングテーブル５１に含まれるようになる。
【００９７】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００９８】
また、通信装置１０は、他の通信装置などとの間でハローフレーム以外の制御フレームを送受信することもできる。この場合、振り分け部４１は、ハローフレームを更新部４２に出力し、ハローフレーム以外のフレームを登録部４３に出力するものとする。登録部４３は、送信元アドレスの情報を含むフレームが入力された場合は、フレームの送信元アドレスと転送もとのアドレスを対応付けて登録テーブル５２に登録する。なお、振り分け部４１は、ハローフレームのアドホックヘッダに含まれているフレームタイプの値によって、ハローフレームとハローフレーム以外のフレームを区別するものとする。
【００９９】
なお、第１の実施形態などの登録テーブル５２を用いるいずれの実施形態においても、第３の実施形態と同様に、メモリ不足が発生した後に新たに加わった通信装置とも通信を行うことができる。
【０１００】
さらに、登録テーブル５２に登録された情報についても、エントリごとにＴＴＬを記録し、ＴＴＬの値に応じてエントリの入れ替えをするように登録部４３の動作を変形することもできる。
【０１０１】
上述の第１〜第３の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
ネットワークの経路情報を通知する経路情報フレームと、経路情報フレームではない第１のフレームを受信する受信部と、
前記経路情報フレームに含まれている経路情報を記録した経路情報テーブルと、
前記第１のフレームの送信元アドレスが前記経路情報テーブルに含まれていない場合、前記送信元アドレスを、前記受信部に前記第１のフレームを転送した転送元装置のアドレスと対応付けて登録テーブルに登録する登録部と、
前記経路情報テーブルに記録されていない宛先装置を宛先とした第２のフレームを送信するときに、前記登録テーブルから前記宛先装置のアドレスに対応付けて登録されている転送元装置のアドレスを取得する取得部と、
前記取得部で取得されたアドレスに前記第２のフレームを送信する送信部
を備えることを特徴とする通信装置。
（付記２）
前記送信元アドレスと同一のアドレスが前記経路情報テーブルに登録されるまでの期間、前記取得部は、前記送信元アドレスが割り当てられた通信装置に前記第２のフレームが送信される際に、前記第２のフレームを前記宛先装置に転送できる通信装置を、前記登録テーブルから検索する
ことを特徴とする付記１に記載の通信装置。
（付記３）
前記経路情報フレームに基づいて前記経路情報テーブルを更新する更新部
をさらに備え、
前記経路情報フレームは、前記経路情報フレームを生成した通信装置が前記第２のフレームを転送することができる通信装置である転送先装置のアドレスを通知し、
前記更新部は、前記経路情報フレームを生成した通信装置のアドレスに対応付けて、前記転送先装置のアドレスを前記経路情報テーブルに登録し、
前記転送先装置のアドレスが前記登録テーブルに登録されている場合、前記更新部は、前記転送先装置のアドレスと前記転送先装置のアドレスに対応付けられたアドレスを前記登録テーブルから削除する
ことを特徴とする付記１もしくは２に記載の通信装置。
（付記４）
前記登録テーブルは、前記送信元アドレスが登録されてから経過した時刻を表す情報を記録し、
前記送信元アドレスが記録された時刻から所定の時間が経過すると、前記登録部は、前記送信元アドレスと、前記送信元アドレスに対応付けられた情報を前記登録テーブルから削除する
ことを特徴とする付記１〜３のいずれかに記載の通信装置。
（付記５）
第１の通信装置は、ネットワークの経路情報を記録した経路情報テーブルを備え、
受信したデータフレームの送信元アドレスが前記経路情報テーブルに記録されているかを確認し、
前記送信元アドレスが記録されていない場合、前記送信元アドレスを、前記第１の通信装置に前記データフレームを転送した転送元装置のアドレスと対応付けて登録テーブルに登録し、
前記第１の通信装置は、前記経路情報テーブルに記録されていない第２の通信装置を宛先とした送信フレームを送信するときに、前記第２の通信装置のアドレスが前記登録テーブルに登録されているかを確認し、
前記第２の通信装置のアドレスが前記登録テーブルに登録されている場合、前記第１の装置は、前記第２の通信装置のアドレスに対応付けられている転送元装置に向けて前記送信フレームを送信する
ことを特徴とする通信方法。
【符号の説明】
【０１０２】
１０  通信装置
２０  インタフェース部
２１  受信部
２２  送信部
３０  制御部
３１  フレーム受信処理部
３２  アプリケーション処理部
３３  通知部
３４  フレーム送信処理部
４０  ルーティング部
４１  振り分け部
４２  更新部
４３  登録部
４４  取得部
５０  記憶部
５１、７０  ルーティングテーブル
５２  登録テーブル
５５  タイマ
６１  ネットワークサーバ
６２  Ｌ３ネットワーク
１００  ＭＰＵ
１０１  バス
１０２  ＰＨＹチップ
１０４  タイマＩＣ
１０６  ＤＲＡＭ
１０７  フラッシュメモリ
１０８  無線モジュール
【図１】
0005750973.tif 000002
【図２】
0005750973.tif 000003
【図３】
0005750973.tif 000004
【図４】
0005750973.tif 000005
【図５】
0005750973.tif 000006
【図６】
0005750973.tif 000007
【図７】
0005750973.tif 000008
【図１１】
0005750973.tif 000009
【図１２】
0005750973.tif 000010
【図１３】
0005750973.tif 000011
【図１４】
0005750973.tif 000012
【図１５】
0005750973.tif 000013
【図１６】
0005750973.tif 000014
【図１７】
0005750973.tif 000015
【図１８】
0005750973.tif 000016
【図８】
0005750973.tif 000017
【図９】
0005750973.tif 000018
【図１０】
0005750973.tif 000019