本発明は無線通信装置に係り、特にネットワークのトポロジーが変化する無線通信ネットワークに適用するに好適な無線通信装置に関する。
本発明に関連する背景技術に、特許文献1がある。特許文献1には、パケット送信装置の送信バッファを定期的に監視し、リトライ回数に上限を設けて、この上限を超えたとき、保持しているパケットを送信バッファ内から廃棄する通信装置が記載されている。
しかしながら、特許文献1に記載の技術は、パケット送信装置の誤動作に起因するパケットの廃棄を行い、パケット送信処理の能力を劣化させないための技術である。このため、ユーザ端末同士が無線接続され、ネットワークトポロジーが常に変動するようなシステム(アドホックネットワーク)でのパケット送信処理の性能を向上させる技術としては不十分である。
アドホックネットワークとは、中央集中制御を必要とせず、無線で送受信が可能な端末で構成されたネットワークである。大きな特徴のひとつとして、直接無線で通信できない端末同士が、他の無線通信可能な複数の端末を中継させ、通信を行なう技術(マルチホップ通信)が挙げられる。アドホックネットワークでは携帯電話網の基地局や無線LANのアクセスポイントが不要となり、インフラを持たない場所で安価にネットワークを構築することができる。従って、限られたエリアでの簡易なネットワーク構築手段として有効である。そのような性質から、地震等の自然災害で基地局がダウンした被災地での通信ネットワークを確立する技術としてもアドホックネットワークが近年注目を集めている。
しかし、現在アドホックネットワークの構築には技術的課題がいくつか残されている。有線接続で構成されるネットワークに比べ、アドホックネットワークを構成する端末は無線で通信を行うため、端末間のリンク接続が不安定である。また、端末が常に移動することが想定され、各端末のネットワークへの参入、離脱の頻度が高いため、セキュリティ面においても有線接続のネットワークとは異なる特殊な技術を要する。そのような環境下で、如何に効率よく安定した経路を動的に検出できるかが課題である。
本発明は、前記課題を解決するため、簡易かつ通信品質を向上させるネットワークの無線通信装置を提供することを目的とする。
上述した課題は、パケットを含む無線信号を送受信する無線部と、無線信号の到達範囲内に配置された他の無線通信装置との無線接続を確立と切断とを判定する無線接続確立部と、パケットの転送経路情報を生成する経路情報生成部と、転送先MACアドレスを含むキューを保持するパケット送信キューとからなり、無線接続確立部が無線接続の切断を判定したとき、パケット送信キューが保持する無線接続の切断対象のキューの有無を検索するキュー内パケット制御部を有する無線通信装置により、解決できる。
また、パケットを含む無線信号を送受信する無線部と、無線信号の到達範囲内に配置された他の無線通信装置との無線接続を確立と切断とを判定する無線接続確立部と、パケットの転送経路情報を生成する経路情報生成部と、転送先MACアドレスを含むキューを保持するパケット送信キューとからなり、無線接続確立部が、無線接続の切断を判定したとき、経路情報生成部は転送経路情報を更新し、パケット送信キューが保持する無線接続の切断対象のキューを削除するキュー内パケット制御部を有する無線通信装置により、解決できる。
また、パケットを含む無線信号を送受信する無線部と、無線信号の到達範囲内に配置された他の無線通信装置との無線接続を確立と切断とを判定する無線接続確立部と、パケットの転送経路情報を生成する経路情報生成部と、転送先MACアドレスを含むキューを保持するパケット送信キューとからなり、無線接続確立部が、無線接続の切断を判定したとき、経路情報生成部は転送経路情報を更新し、更新された転送経路情報に基づいてパケット送信キューが保持する無線接続の切断対象のキューの転送先MACアドレスを更新するキュー内パケット制御部を有する無線通信装置により、解決できる。
また、パケットを含む無線信号を送受信する無線部と、無線信号の到達範囲内に配置された他の無線通信装置との無線接続を確立と切断とを判定する無線接続確立部と、パケットの転送経路情報を生成する経路情報生成部と、転送先MACアドレスを含むキューを保持するパケット送信キューとからなり、無線接続確立部が、無線接続の切断を判定したとき、経路情報生成部は転送経路情報を更新し、パケット送信キューが保持する無線接続の切断対象のキューの転送先MACアドレスを、無線接続が確立されたMACアドレスに更新するキュー内パケット制御部を有する無線通信装置により、解決できる。
また、パケットを含む無線信号を送受信する無線部と、無線信号の到達範囲内に配置された他の無線通信装置との無線接続を確立と切断とを判定する無線接続確立部と、パケットの転送経路情報を生成する経路情報生成部と、転送先MACアドレスを含むキューを保持するパケット送信キューとからなり、無線接続確立部が無線接続の切断を判定したとき、パケット送信キューが保持する切断された無線端末が宛先となっているパケットの再送回数上限値を減らす無線通信装置により、解決できる。
また、バスで接続された中央処理装置と、複数のプログラムを書き込まれた制御メモリと、ネットワークコントローラと、転送MACアドレスと宛先IPアドレスとを含む送信キューを保持するFIFOメモリと、ネットワークコントローラに接続された無線LAN部とからなり、他の無線通信装置とのリンク切断を検出したとき、他の無線通信装置のIPアドレスをキーにFIFOメモリを検索して、他の無線通信装置に向けたキューを廃棄または更新する無線通信装置により、解決できる。
さらに、バスで接続された中央処理装置と、メモリと、ネットワークコントローラと、ネットワークコントローラに接続された無線LAN部とからなり、メモリは、複数のプログラムを書き込まれた制御エリアと、転送MACアドレスと宛先IPアドレスとを含む送信キューを保持するFIFOエリアとを有し、他の無線通信装置とのリンク切断を検出したとき、他の無線通信装置のIPアドレスをキーにFIFOエリアを検索して、他の無線通信装置に向けたキューを廃棄または更新する無線通信装置により、解決できる。
本発明に拠れば、簡易かつ通信品質を向上させるネットワークの無線通信装置を提供することができる。
以下本発明の実施の形態について、実施例を用いて図面を参照しながら説明する。ここでは、まず、アドホックネットワークにおけるルーティングプロトコル、各端末(以降、ノードと呼ぶ)間でのリンク状態監視方法を説明する。
まず、図1ないし図7を用いて、ルーティングプロトコルについて説明をする。ここで、図1ないし図3はネットワークトポロジーを説明する図である。図4ないし図6はHELLOメッセージを説明する図である。図7は通信プロトコルの階層構造とデータ送信の流れを説明する図である。
ノードがネットワーク内で移動することでノード配置(以降、ネットワークトポロジーと呼ぶ)が変化し、さらにネットワークへの参入や離脱が発生する。そのため、あるノードからあるノードへデータを転送する場合の中継経路が時間によって変化する。そのネットワークトポロジーの変化に対応するため、適宜、経路情報をネットワーク内のノード同士で交換し、経路情報を更新するのがルーティングプロトコルである。そこで以下に、各ノードの性能とルーティングプロトコル動作の前提条件と、ネットワークトポロジーとルート切替動作の具体例について図を用いて示す。
各ノードの性能とルーティングプロトコル動作についての前提条件を説明する。なお、この前提条件は以下に説明する各実施例で共通である。ノードは送受信可能な無線装置を搭載し、移動が可能である。最大無線通信距離は1kmとする。ルーティングプロトコルは前述のマルチホップ通信において、中継する端末を最小(0を含む)となるようにルートを切り替えるものとする。以降、マルチホップ通信での中継数をホップ数と呼ぶこととする。
図1を用いて、ネットワークトポロジーを説明する。図1において、ネットワークトポロジーは、丸印がノード100を示しており、この丸印の中に記載されている記号をノードIDとする。各ノード100は双方向の矢印で接続されている。これはノード同士が双方向で直接無線通信が可能であることを示している。以降、双方向で直接無線通信が可能な状態をリンク確立状態と呼ぶ。なお、各ノード間で行われる無線リンク確立方法については後述する。
ここで、ノードAからノードCへデータ転送を開始したとする。この場合、ルーティングプロトコルにより、ノードBを中継ノードとし、ノードA→ノードB→ノードCのルートでデータが転送される。このデータ転送中にノードBが図2に示すようにノードA、ノードCと通信不可能な位置まで移動し、図3に示すネットワークトポロジーへ変化した場合、ノードAからノードCへのデータ転送は、ノードA→ノードB→ノードCのルートでは実現が不可能となる。図3について補足として説明すると、前提条件から、各ノードの最大無線通信距離が1kmで、ノードA、ノードC間は1.6kmであるため、直接無線通信することも不可能である。そこでルーティングプロトコルはノードA、B、Cのリンク状態を常に監視しており、リンクが切断されたことを認識すると新たなルートを検索し、その中で最短ホップ数となるルートに切り替える。図3の場合、ノードAからノードCへのデータ転送を可能とするルートは1つしか存在しておらず、ノードA→ノードD→ノードE→ノードF→ノードCのルートである。このようにしてルーティングプロトコルはルートを切り替えている。
次にリンク状態監視手段について、IETF(Internet Engineering Task Force)で標準化されているアドホックルーティングであるOLSR(Optimized Link State Routing)の動作を用いて説明する。OLSRでは各ノードが通信可能な他のノードの存在を認識するために定期的にHELLOメッセージと呼ばれる制御情報を送信する。この情報には自ノードが認識している周りのノードIDが含まれており、自ノードIDの含まれているHELLOメッセージを他ノードから受信した場合、そのHELLOメッセージ送信元である他ノードとは双方向で通信が可能であると認識する仕組みである。ここで、リンク確立動作をネットワーク最小規模のノード数2個の場合で、図4ないし図6を用いて説明する。
まず、各ノード100がどのノードともリンク確立しておらず、ノードAから定期的にHELLOメッセージを送信している状態から説明する。ここで、図4の状態では、ノードAはどのノードともHELLOメッセージの授受を行っていない。このため、リンク確立テーブル45−1は片方向、両方向ともに空になっている。そして、リンク確立テーブル45−1の片方向、両方向の認識ノードIDに格納されている全てのノードIDをHELLOメッセージの認識ノードIDに格納し、送信する。なお、ここでは前提としてノードAのリンク確立テーブル45−1は空としているので、認識ノードIDは空である。また、HELLOメッセージには、送信ノード(ここではノードA)のIDが添付されている。ノードAからのHELLOメッセージを受信したノードBは、ノードAのノードIDとノードAが認識ノードIDを自身のリンク確立テーブル45−2の片方向側に格納する。ここで片方向側に格納する理由は、ノードAの認識ノードIDにノードBのIDが格納されておらず、ノードAはノードBを認識していないと判断できるからである。
図5において、次にノードBは、認識ノードIDにノードAのノードIDを格納しHELLOメッセージを送信する。このHELLOメッセージを受信したノードAは、HELLOメッセージの認識ノードIDに自ノードIDを確認し、ノードAのリンク確立テーブル(双方向)45−1にノードBのIDとノードBが認識しているノードIDを格納する。この時点でノードAはノードBとリンク確立できたことを認識する。
その後、図6において、ノードAはHELLOメッセージにノードBの認識ノードIDを格納し送信する。それを受信したノードBは、HELLOメッセージの認識ノードIDに自ノードIDを確認できたので、ノードBのリンク確立テーブルの(片方向)451−2に格納されているノードAのIDをリンク確立テーブルの(双方向)452−2へ移し、ノードAが認識しているノードID(この場合はB)もリンク確立テーブルの(双方向)に格納する。ノードBはこの時点でノードAとリンクが確立したことを認識する。このように自ノードが受信できたHELLOメッセージの送信元ノードIDをHELLOメッセージの認識ノードIDに格納して通知し合い、相互認識の確認をもってリンク確立としている。
次にリンク切断手順について説明する。リンク確立を認識するために使用するHELLOメッセージにはタイマが用意されている。まずこのタイマについて説明する。タイマ起動タイミングは、それぞれのノードとリンク確立を認識できた時点であり、ノード毎にそれぞれ個別にタイマを割り当てる。前述のリンク確立手順の説明でいうと、他ノードから自ノードIDの格納されたHELLOメッセージを受信できた時がタイマ起動タイミングである。そしてリンク確立済みのノードから一定時間HELLOメッセージを受信できなかった場合、リンク確立テーブルからそのノードのノードIDを削除し、そのノードとのリンクが切断したことを認識する。
このように、OLSRでは定期的なHELLOメッセージの送信により、リンク確立、リンク切断を認識している。
次に通信プロトコルを実現するためにノード内に構築されている階層構造と各階層の役割について、図7を用いて説明する。ノード内の階層構造を大きく4つに分類すると、上位層から順にアプリケーション層120、ルーティング層130、MAC(Media Access Control)層140、物理層150である。そこで、データ送信の手順について各階層の役割を明確にしながら説明する。
まずアプリケーション層120ではFTP用データ(TCP)やストリーミング配信データ(UDP)10などを生成し、各データ10に宛先ノードのIPアドレス20(以降、宛先IPアドレスと呼ぶ)を付与し、ルーティング層へ渡す。
ルーティング層130では、ルーティング層130が生成、更新しているルーティングテーブル40の中から、宛先IPアドレスに対応する転送先ノードのIPアドレス30(以降、転送先IPアドレスと呼ぶ)を検索し、ARP(Address Resolution Protocol)テーブル50から転送先IPアドレスに対応するMACアドレス(以降、転送先MACアドレスと呼ぶ)30を付与し、FIFO(First In First Out)制御を行う送信キュー60へキューイングする。(FIFO制御については後述する。)ここで説明したルーティングテーブル40の生成、更新には、ネットワーク内の各ノードからネットワークトポロジー情報を収集する手段が必要になる。そしてこのトポロジー情報の収集手段は、一般的に認知されている各種ルーティングプロトコルを特徴づける大きな要因の一つとなっている。しかし、本実施例はトポロジー情報の収集手段そのものは関与しないため、ルーティングテーブルの生成、更新結果の説明についてのみ説明する。
引き続きデータ送信の手順について説明すると、MAC層140は送信キュー60からデータを取り出し、CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance 搬送波感知多重アクセス/衝突回避)方式70に従い、物理層150へデータを渡す。物理層150は受け取ったデータを無線送受信装置90からアンテナ110を介して無線送信波を送信する。ここでのCSMA/CA方式と再送回数上限値80とについては、後述するMAC層でのユニキャスト送信の説明のところで説明する。
上述したルーティング層が行う、転送先MACアドレスの決定方法について説明する。まず図1のネットワークトポロジーに存在する各ノードのIPアドレスとMACアドレスの一覧を図8に示す。ここで、図8は各ノードのIPアドレスとMACアドレスとを説明する図である。図8は前提条件を説明する図なので、特に説明は行なわない。
次に、図1のネットワークトポロジー内でリンク確立が完了しているときの、ノードAのルーティングテーブルとARPテーブルとを図9および図10を参照して説明する。ここで、図9はノードAのルーティングテーブルである。図10はノードAのARPテーブルである。
図9において、ルーティングテーブル40は宛先IPアドレス41と転送先IPアドレス42とから構成される。図9から、ノードAは、ノードBおよびノードCを宛先IPアドレスとするデータをノードBに転送する。また、ノードAは、ノードD、ノードEおよびノードFを宛先IPアドレスとするデータをノードDに転送する。
図10において、ARPテーブル50はIPアドレス51とMACアドレス52とから構成される。図10から、ノードAは、自身および転送先であるノードBならびにノードDのIPアドレスとMACアドレスとの対応を保持している。
図7を用いて説明した通り、転送先MACアドレスの決定には、転送先IPアドレスの検索と、検索した転送先IPアドレスから転送先MACアドレスを検索する2つの手順で行われる。
図9のルーティングテーブル40の項番1はノードBへデータ転送するときの転送先ノードのIPアドレスはノードBのIPアドレスの「192.168.1.B」である。一方、図10のARPテーブル50の項番2は転送先IPが「192.168.1.B」のMACアドレスが「00:00:00:00:00:0B」であることを表している。ルーティングテーブル40とARPテーブル50との参照により、ノードBへデータ転送するときの転送先MACアドレスを決定する。
同様に図9のルーティングテーブル40の項番2では、ノードCへデータ転送するときの転送先IPアドレスは「192.168.1.B」である。一方、図10のARPテーブル50の項番2は転送先IPが「192.168.1.B」のMACアドレスが「00:00:00:00:00:0B」であることを表している。この手順によりノードBへデータ転送するときの転送先MACアドレスを決定する。
上記2つの転送先MACアドレス決定についての違いは、ノードBへの転送にはノードAがノードBへ直接通信できるため、転送先MACアドレスにはノードBのMACアドレスが付与されているが、ノードCへの転送にはノードAがノードCへ直接通信できないため、中継ノードとして選択されるノードBのMACアドレスが付与されることである。このようにしてルーティング層では、アプリケーション層によってデータに付与された宛先IPアドレスから転送先MACアドレスを決定し、データに付与した後、送信キューへデータをキューイングする。
上記ルーティングテーブルは、ネットワークトポロジーが図1から図3のように変化した場合、ルーティング層よって図9から図11へ、2箇所変更される。ここで、図11は、図3のトポロジーにおけるノードAのルーティングテーブルである。
ここで、1つ目の変更点は図9の項番1で、転送先ノードBはネットワークから離脱したため削除される。もう1つの変更点は図9の項番2で、ネットワークトポロジー変化前までノードCへデータ転送するときに中継していたノードBがネットワークから離脱し、新しいルートがノードA→ノードD→ノードE→ノードF→ノードCに変更になったため、転送先IPアドレスがノードBのIPアドレスからノードDのIPアドレスに変更されることである。従って、図11において、ノードBのIPアドレスが削除され、転送先IPアドレス42は、何れもノードDとなっている。
次に、後述の説明を容易にするために、MAC層の通信プロトコルであるCSMA/CA方式のユニキャスト送信について説明する。アドホックホックネットワークでは、ノードがデータを無線送信し、移動可能である特性を有することから、ネットワークへの参入、離脱を短時間で任意に繰り返すことを許容するのが一般的である。そのためアドホックネットワークのMAC層では、各ノードが自立的に分散制御を行なうことで無線送信の衝突を回避することを目的としているCSMA/CA方式を採用することが一般的である。本実施例についてもCSMA/CA方式を採用した場合についての説明を行う。CSMA/CA方式のユニキャスト送信では、データ送信側は、データ受信側から送信される受信確認パケット(以降、ACKと呼ぶ)を受信してデータ送信の正常終了とする。データ送信側にはACK受信待ちタイマが用意されており、タイムアウト時には同じデータの再送を行い、ACKの受信を再度試行する。このデータ再送には再送回数上限値(図7の参照番号80)が設定されており、その再送回数上限値だけ再送を試行してもACKを受信できなかった場合には、そのデータを送信キューから破棄し、次のデータの送信を同じ手順で試行する。
まず前述した図2のトポロジーの場合を考える。ノードAからノードCへのデータ転送とノードAからノードDへのデータ転送を同じ伝送レートで同一期間内に行っている状況で、ノードBがノードAの無線通信可能範囲から離脱しようとしているとき、ノードAの送信キューにはノードBへの送信待ちデータが複数個キューイングされる。以降の説明では具体的に、各ノードの送信キューの長さは50であり、データ転送期間中のノードAの送信キューには平均的に10個のデータが送信待ちデータとしてキューイングされてものとする。ここで平均的と記載したのは、送信キューの送信待ちデータ数はネットワーク内の各ノードの送信状況に応じて時間的に変動するためである。
そこで、図3に示すようにノードBがノードAの無線通信可能範囲外に移動した場合、前述のリンク状態監視手順に従い、ノードAはノードBとのリンクが切断されたことを認識する。そのときノードAは、ノードCへのデータ転送のルートをノードA→ノードB→ノードCからノードA→ノードD→ノードE→ノードF→ノードCへ切替える。しかしノードAの送信キューには転送先MACアドレスがノードBのMACアドレスになっているデータが既にキューイングされているため、無線通信が不可能なノードBに対して、そのキューイングデータの1つ1つにつき、上記の再送回数上限値だけ再送を繰り返すことになる。つまり、既にキューイングされているデータはノードCへ転送されることなく破棄されることとなり、さらに新しいルートでのデータ転送開始やノードBが転送ルートに関連していないデータの送信開始が無駄に遅延してしまうことになる。
ここで上記状況での送信キューの動作概要について、図12および図13を用いて具体的に説明する。ここで、図12はノードAとノードBとのリンクが切断した直後のノードAの送信キューを説明する図である。図13はルート切替が行われたあとのノードAの送信キューを説明する図である。
図12において、送信キューの長さは50で、10個のデータがキューイングされている。データの詳細を説明すると、キュー番号が1、3、5、7、9、には宛先IPアドレス62がノードCのIPアドレスで、転送先MACアドレス61は中継ノードとして選択されていたノードBのMACアドレスであるデータがキューイングされている。同様に、キュー番号が2、4、6、8、10には宛先IPアドレス62がノードDのIPアドレスで、転送先MACアドレス61は、ノードAとノードDが直接通信可能であることから、ノードDのMACアドレスであるデータがキューイングされている。なお、データのシーケンス番号は、同じ宛先IPアドレスへの順番を示すものである。
この送信キューはトラフィック制御に広く一般的に採用されているFIFO制御が行なわれている。以下に簡単なFIFO制御を説明する。まずキューへのデータ入力はキュー番号50から行われ、キュー番号1の方向へ詰められていく。キューからの出力は、キュー番号1から行い、キュー番号2以降にキューイングされているデータをキュー番号1の方向へシフトさせる。上記制御により、アプリケーション層が生成している古いデータから順番に出力されることになる。
このFIFO制御を踏まえた上で、ノードAとノードBとのリンクが切断された後の送信キューの動作を説明すると、送信キューから出力され、無線送信されるデータはキュー番号1のデータからである。図13において、リンク切断認識によりルート切替が行われた後、アプリケーション層が生成し、ルーティング層へ渡されるシーケンス番号(n+5)のデータは、送信キューのキュー番号11にキューイングされる。よってシーケンス番号(n+5)のデータが出力されるまでには、10個のデータ送信を待つことになる。
この現象は、ノードがデータを無線送信し、移動可能である特性を有し、ネットワークへの参入、離脱を短時間で任意に繰り返すことを許容するアドホックネットワークでは特に顕著に見られるものである。また、上記説明は無線LANの設定を基に説明してきたが、無線LANのような高速無線伝送ではない、低速無線伝送システムでアドホックネットワークを構築した場合には、無駄なデータの再送の繰り返しはシステム全体のスループット低下にさらに大きな影響を及ぼすことになる。
次に、CSMA/CA方式におけるパケット送信処理の動作フローチャートを図14を参照して説明する。ここで、図14はパケット送信処理の動作を説明するフローチャートである。図14において、まず、送信キュー60にQdataがキューイングされているかどうかをチェックする(S41)。ステップ41でキューイングされていない場合(NO)、送信データがないということなのでステップ41を繰り返す。ステップ41がYESのとき、再送回数カウンタを0に初期化する(S42)。次に、送信キューからQdataを抽出し(S43)、抽出したQdataを物理層150へ渡す(S44)。そうすると物理層150はQdataを対向ノードへ無線送信するので、自ノードは対向ノードからのACKを待つ。次に、ACK受信が成功したかどうかチェックし(S45)、成功した場合(YES)にはステップ48へ分岐する。失敗した場合(NO)には再送処理を行うためステップ46へ分岐する。ステップ46では再送回数カウンタをインクリメントし、再送回数カウンタが再送回数上限値以上かどうかをチェックする(S47)。ここでの再送回数上限値は図7の再送回数上限値80に示すように運用中に変化しない固定値である。このチェックで再送回数カウンタが再送回数上限値より小さい場合には再送処理を行うため、ステップ44へ分岐する。再送回数カウンタが再送回数上限値以上の場合にはステップ48へ分岐する。ステップ48ではQdataを破棄し、新たなQdata送信処理を行うためにステップ41へ戻る。このようにCSMA/CA方式では、どのQdataに対しても再送回数の上限が固定値で制御されている。
以下実施例1を新たに図15ないし図20を用いて説明する。ここで、図15はノードの機能ブロック図である。図16はノードのハードウェアブロック図である。図17および図18はノードAのリンク確立テーブルを説明する図である。図19はパケット破棄処理を説明するフローチャートである。図20はパケット破棄処理後のノードAの送信キューを説明する図である。
図15において、ノード100は、無線アンテナ110と無線信号送受信装置90とからなる無線部1と、無線部1に接続されたFIFOメモリであるパケット送信キュー60と、パケット送信キュー60に接続されたパケット送信制御部9とキュー内パケット制御部2と、パケット送信キュー60に接続された経路情報付与部3と、経路情報付与部3とキュー内パケット制御部2とに接続された経路情報格納部8と、経路情報格納部8に接続された経路情報生成部7と、経路情報格納部8に接続された経路情報更新部11と、経路情報付与部3と経路情報生成部7と経路情報更新部11とに接続された無線接続確立部6と、経路情報付与部3に接続された通信用アプリケーション5と、通信用アプリケーション5に接続された表示部と入力部とからなるコンソール4により構成されている。なお、図15は、実施例1の説明を目的としているので送信機能について記載している。
無線部1は、無線信号を送受信する。パケット送信キュー60は、転送先MACアドレスと宛先IPアドレスとデータのシーケンス番号とからなる複数のキューを蓄積するFIFOメモリである。パケット送信制御部9は、FIFO制御により、パケット送信キュー60から無線部1にデータを転送する。キュー内パケット制御部2は、経路情報格納部8を参照しながら、パケット送信キュー60に蓄積された複数のキューを検索して、検索条件に合致したキューの削除または検索条件に合致したキューの転送先MACアドレスの更新を実行する。経路情報格納部8は、ルーティングテーブル、ARPテーブル、再送回数テーブルを格納する。無線接続確立部6は、HELLOメッセージの送受信によって、リンクの確立とリンクの切断とを判定する。無線接続確立部6は、また、リンク確立テーブルを保持する。経路情報付与部3は、経路情報格納部8を参照して送信するパケットに転送先MACアドレスを付与する。経路情報付与部3は、また、受信したパケットからMACアドレスを削除して、通信用アプリケーション5に転送する。経路情報生成部7は、無線接続確立部6から受け取ったHELLOパケットの情報を元に、経路情報格納部8内の情報を生成する。経路情報更新部11は、無線接続確立部6から受け取ったHELLOパケットの情報/タイムアウト情報を元に、経路情報格納部8内の情報を更新する。
図16において、ノード100は、中央処理装置(CPU)160と、制御メモリ170と、コンソールコントローラ180と、コンソールコントローラ180に接続されたコンソール4と、ネットワークコントローラ190と、ネットワークコントローラ190に接続された無線LAN部200と、FIFOメモリ210と、ハードディスク220と、CPU160と制御メモリ170とコンソールコントローラ180とネットワークコントローラ190とFIFOメモリ210とハードディスク220とを接続するバス230とから構成される。図16と図15とを対比すれば分かるように、ネットワークコントローラ190と無線LAN部200とは、無線部1を構成する。同様にFIFOメモリ210はパケット送信キュー60を構成する。コンソール4はユーザとの間で入出力を行なう端末であり、コンソールコントローラはそのインターフェースである。CPU160は、ハードディスク220に記録された複数のプログラムを制御メモリ170に読み込んで、複数のプログラムを実行する。制御メモリ170は、複数プログラムとルーティングテーブル40、ARPテーブル50、リンク確立テーブル45等を格納する。図15の無線部1、パケット送信キュー60、コンソール4以外の各機能ブロックは、CPU160が実行するプログラムとして、達成される。なお、FIFOメモリ210を用いずに、制御メモリ170上でFIFOを実現しても良い。
ネットワークトポロジーが図1の構成で、各ノードがリンク確立をさせている状態において、ノードAからノードCへのデータ転送とノードAからノードDへのデータ転送を同じ伝送レートで同一期間内に行っている場合を考える。このときのノードAのリンク確立テーブルは図17になっている。すなわち、ノードAのリンク確立テーブル45−1は、片方向451−1と双方向452−1とで構成され、片方向451−1は何れも空である。一方、双方向452−1の認識ノードIDにはノードBのIDとノードDのIDとが記録され、認識ノードBの認識ノードが認識しているノードIDには、ノードA、CおよびEのノードIDが記録されている。一方、認識ノードDの認識ノードが認識しているノードIDには、ノードAおよびEのノードIDが記録されている。
ネットワークトポロジーが図1から図2の状態を経て、図3の状態に遷移すると、ノードAはノードBとのリンク切断を認識する。そしてリンク切断後のノードAのリンク確立テーブルは図18となり、ノードBは削除される。なお、図18の説明は省く。このリンク切断を認識したタイミングでルーティング層が送信キューを確認し、送信する必要のないデータの破棄を行う。このリンク切断認識からデータ破棄動作について、新たに図19および図20を用いて説明する。
ここで、図19は破棄すべきパケットの選別とパケット破棄処理を説明するフローチャートである。図20はパケット廃棄処理後の送信キューを説明する図である。
まず、図12はノードAとノードBのリンクが切断された直後のノードAの送信キューである。ここでノードAは、ノードCとノードDへデータ転送中のため、送信キューにはノードCへのデータとノードDへのデータが1個おきに5個ずつキューイングされていることを表している。
図19において、まず、キューポインタの初期化(キューポインタに1をセット)を行う(S11)。次に1−2ではキューポインタがキュー長を超えていないかどうかを判定する(S12)。ステップ12は以降に続く処理を送信キュー内の全てのデータに対して済ませたかどうかを確認するために行なう。ステップ12の判定がNOであった場合、終了する。一方、ステップ12の判定がYESであった場合、キューポインタが指しているデータ(以降、Qdataと呼ぶ)の転送先MACアドレスが、リンク確立テーブルに存在するいずれかのノードのMACアドレスに該当するかどうかARPテーブルを参照して判定する(S13)。ここでいずれのリンク確立ノードのMACアドレスにも該当しなければ(NO)、Qdataを破棄後、送信キュー内の空きを埋めるために送信キュー内をシフトさせ(S14)、ステップ12に戻る。ステップ13がYESならば、キューポインタを更新し(S15)、ステップ12へ遷移する。
このパケット破棄処理終了後には、図12の送信キュー内のデータは図20に更新される。ちなみに、ノードBを中継してノードCへ転送される予定であった図12のキュー番号1、3、5、7、9のデータが破棄されていることがわかる。
本実施例によれば、リンク切断時に送信する必要のないデータの再送処理を省くことができるので、送信すべきデータの送信スループットを向上させることが可能となる。その結果、ネットワーク全体としてのスループットを向上させる効果が得られる。さらに無駄な無線送信が抑制されるため、ノードの消費電力軽減効果も得られる。
実施例2について、新たに図21および図22を用いて説明する。ここで、図21は再ルーティング処理を説明するフローチャートである。図22は再ルーティング処理後のノードAの送信キューを説明する図である。
ネットワークトポロジーが図1から図2の状態を経て、図3の状態に遷移すると、ノードAのルーティングテーブルは図9から図11に切替わる。実施例2は、このルーティングテーブルが切替わったタイミングでルーティング層が送信キューを確認し、キューイングされているデータに対して再ルーティング処理を行なう。
図21において、まずキューポインタの初期化を行なう(S21)。次に、キューポインタがキュー長を超えていないかどうかを判定し(S22)、NOなら終了する。ステップ22がYESであった場合、Qdataの転送先IPアドレスがルーティングテーブルに存在するかどうかを判定する(S23)。ステップ23がYESの場合、送信キュー内の送信待ちデータが最新の経路情報と整合が取れているかどうかを確認するために、Qdataの転送先MACアドレスと、Qdataの宛先IPアドレスがルーティングテーブルとARPテーブルによって対応付けされている転送先MACアドレスとを比較し、異なっているかどうかを判定する(S24)。ステップ24で異なっていると判断された場合(YES)には、Qdataの転送先MACアドレスをルーティングテーブルとARPテーブルで対応付けられている転送先MACアドレスに置き換え(S25)、キューポインタを更新して(S26)、ステップ22に遷移する。ステップ24の判定で異なっていないと判断された場合(NO)、Qdataが最新の経路情報と整合が取れているということになるので、Qdataには何も変更は加えず、ステップ26に遷移する。
一方、ステップ23がNOならば、Qdataを破棄し、送信キュー内の空きを埋めるために送信キュー内をシフトさせる(S27)。この場合、送信キューがシフトされているのでキューポインタを更新せずに、ステップ22へ遷移する。
この再ルーティング処理を終了後には、送信キュー内のデータは図12から図22に更新され、シーケンス番号がnからn+4のデータを破棄することなく、新ルートのノードA→ノードD→ノードE→ノードF→ノードCで転送することが可能となる。また、元々ノードDへ転送する予定であったQdataには本処理実行前よりも送信が遅れることがなく、むしろ、ノードC宛のQdataの再送が減少することにより、送信までの時間を早めることが可能となる。
本実施例によれば、ルーティングテーブル更新時に送信する必要のないデータの再送処理を省くことができるので、送信すべきデータの送信スループットが向上する。ルーティングテーブル更新時に再ルーティング処理を施すことで、データを破棄せず、ルートを変更して転送できるようになり、破棄されていたデータの再送時間が無くなる。その結果、ネットワーク全体のスループットを向上させることが可能となる。さらに無駄な無線送信が抑制されるため、ノードの消費電力軽減効果も得られる。
ネットワークトポロジーが図1の構成で、各ノードがリンク確立している状態において、ノードAからノードCへのデータ転送とノードAからノードDへのデータ転送を同じ伝送レートで同一期間内に行っている場合を考える。このときのノードAのリンク確立テーブルは図17のようになっている。
ネットワークトポロジーが図1から図2の状態を経て、図3の状態に遷移すると、ノードAはノードBとのリンク切断を認識する。リンク切断後のノードAのリンク確立テーブルは図18となり、ノードBは削除される。本実施例では、このリンク切断を認識したタイミングでルーティング層が送信キューを確認し、送信する必要のないデータの転送先MACアドレスをリンク確立しているノードのMACアドレスに置き換える。このリンク切断認識から転送先MACアドレスの置き換え動作の詳細について図23を用いて説明する。ここで、図23は再ルーティング処理を説明するフローチャートである。
図23において、まず、キューポインタの初期化を行なう(S31)。次に、キューポインタがキュー長を超えていないかどうかを判定する(S32)。S32でNOならば終了し、YESならばキューポインタが指しているデータの転送先MACアドレスと、ARPテーブルを参照することで確認できるリンク切断したノードのMACアドレスを比較する(S33)。この2つが同じ場合(YES)にはQdataが転送先ノードの存在しないデータということが判断できるため、リンク確立テーブルに存在するノードのMACアドレスを、ARPテーブルを参照することで抽出し、Qdataの転送先MACアドレスと置き換え(S34)、キューポインタをインクリメントし(S35)、ステップ32に戻る。ステップ33でアドレスが異なる場合(NO)には、ステップ34を飛ばしてステップ35へ分岐する。
この再ルーティング処理を終了後には、送信キュー内のデータは図12から図22に更新され、シーケンス番号がnからn+4のデータを破棄することなく、新ルートのノードA→ノードD→ノードE→ノードF→ノードCで転送することが可能となる。また、元々ノードDへ転送する予定であったQdataには本処理実行前よりも送信が遅れることがなく、むしろ、ノードC宛のQdataの再送が減少することにより、送信までの時間を早めることが可能となる。
本実施例によれば、リンク切断時にリンク確立していないノードへ送信しようとしているパケットがリンク確立しているノードへ到達することになり、リンク確立しているノードへ到達したパケットは別ルートを通り、宛先ノードへ到達する可能性が確率的に向上する。その結果、パケットの再送回数を減少させることができ、ネットワーク全体としてのスループットを向上させる効果が期待できる。
実施例4を図24ないし図29を用いて説明する。ここで、図24、図26および図27はネットワークトポロジーを説明する図である。図25および図28はノードAのリンク確立テーブルを説明する図である。図29は再ルーティング処理を説明するフローチャートである。
ネットワークトポロジーが図24の構成で、各ノードがリンク確立している状態において、ノードAからノードCへのデータ転送とノードAからノードDへのデータ転送を同じ伝送レートで同一期間内に行っている場合を考える。前提条件として、各ノードの送信キューの長さは50であり、データ転送期間中のノードAの送信キューには平均的に10個のデータが送信待ちデータとしてキューイングされているものとする。また、このときのノードAのリンク確立テーブルは図25のようになっている。すなわち、ノードAのリンク確立テーブル45−1は、片方向451−1と双方向452−1とで構成され、片方向451−1は何れも空である。一方、双方向452−1の認識ノードIDにはノードBのIDとノードDのIDとノードGのIDとが記録され、認識ノードBの認識ノードが認識しているノードIDには、ノードA、CおよびEのノードIDが記録されている。また、認識ノードDの認識ノードが認識しているノードIDには、ノードA、EおよびHのノードIDが記録されている。さらに、認識ノードgの認識ノードが認識しているノードIDには、ノードAおよびHのノードIDが記録されている。
ネットワークトポロジーが図24から図26の状態を経て、図27の状態に遷移すると、ノードAはノードBとのリンク切断を認識する。そしてリンク切断後のノードAのリンク確立テーブルは図28となり、ノードBは削除される。実施例4は、このリンク切断を認識したタイミングでルーティング層が送信キューを確認し、送信する必要のないデータの転送先MACアドレスをリンク確立しているノードの中で、認識ノード数が一番多いノードのMACアドレスに置き換える。このリンク切断認識から転送先MACアドレスの置き換え動作について、以下、説明する。
図29において、まず、キューポインタの初期化を行なう(S41)。次に、キューポインタがキュー長を超えていないかどうかを判定し(S42)、NOならば終了する。ステップ42でYESの場合、Qdataの転送先MACアドレスと、ARPテーブルを参照することで確認可能な、リンク切断したノードのMACアドレスを比較する(S43)。両者が異なる場合(NO)、Qdataが転送先ノードの存在するデータということが判断できるため、キューポインタのインクリメント(S47)へ分岐する。ステップ43でアドレスが同じ場合は、リンク確立テーブル内の認識ノードが複数存在するかどうかを判定し(S44)、1つしか存在しない場合には、リンク確立テーブルに存在するノードのMACアドレスを、ARPテーブルを参照することで抽出し、Qdataの転送先MACアドレスと置き換え処理を行い(S46)、ステップ47へ遷移する。
ステップ44で認識ノードが複数存在すると判断した場合には、Qdataの転送先MACアドレスと、リンク確立テーブルに格納されている認識ノードの内で、一番認識ノード数が多いノードのMACアドレスとを置き換え(S45)、ステップ47へ移行する。ステップ47ではキューポインタを更新し、ステップ42へ遷移する。
なお、ステップ44ないしステップ46は、一つにまとめて、Qdataの転送先MACアドレスと、リンク確立テーブルに格納されている認識ノードの内で、一番認識ノード数が多いノードのMACアドレスとを置き換えても良い。この場合は、実施例3で説明した図23とほぼ同じフローとなる。
この再ルーティング処理を終了後には、送信キュー内のデータは図12から図22に更新され、シーケンス番号がnからn+4のデータを破棄することなく、新ルートのノードA→ノードD→ノードE→ノードF→ノードCで転送することが可能となる。また、元々ノードDへ転送する予定であったQdataには本処理実行前よりも送信が遅れることがなく、むしろ、ノードC宛のQdataの再送が減少することにより、送信までの時間を早めることが可能となる。
本実施例によれば、リンク切断時にリンク確立しているノードが複数存在する場合、リンク確立しているノードの中から、リンク確立しているノード数が最も多いノードを選択してパケットを送信することで、パケットが宛先ノードへ到達する可能性をさらに向上させることが可能となる。その結果、パケットの再送回数を減少させることができ、ネットワーク全体としてのスループットを向上させる効果が期待できる。
実施例5を図30ないし図34を参照して説明する。ここで、図30および図33は再送回数テーブルを説明する図である。図31はリンク確立時の再送回数更新を説明するフローチャートである。図32はリンク切断時の再送回数更新を説明するフローチャートである。図34はパケット送信処理の動作を説明するフローチャートである。
再送回数の初期設定は図30の示すように、デフォルトの再送回数上限値のみが設定されている。図30において、再送回数テーブル25−1はMACアドレス251−1と再送回数上限値252−1とから構成され、MACアドレス251−1に「デフォルト」が記載されていることから、何れのMACアドレスも、再送回数上限値のデフォルト値である3が設定されていることを表している。以降この再送回数上限値のデフォルト値を再送回数上限値Dと呼ぶ。
続いて再送回数テーブルの更新について説明すると、まず更新タイミングはリンク確立時とリンク切断時の2つである。
まずリンク確立時の再送回数更新動作を図31を用いて説明する。まず、リンク確立したノードのMACアドレスが再送回数テーブル25に含まれているかどうかを判定し(S51)、含まれている場合(YES)にはステップ52へ分岐する。含まれていない場合(NO)には終了する。ステップ52では再送回数テーブルからリンク確立したノードのMACアドレスとそのアドレスに対応する再送回数上限値を削除する。なお、上述の説明において、再送回数テーブル25として追って説明する図33を参照。
次にリンク切断時の再送回数更新動作のフローチャートを図32に示す。ステップ61ではリンク切断したノードのMACアドレスとそのアドレスに対応付けた再送回数上限値を、再送回数テーブルに追加する。ここで追加する再送回数上限値は再送回数上限値Dよりも小さい値とし、以降この値を再送回数上限値Sと呼ぶ。
この上記処理について具体的な例で説明する。まずネットワークトポロジーは図1から図3に遷移し、また図1の形に戻る場合で考える。まず図1の状態での再送回数テーブルは初期設定と同じで図30とする。この図1の状態から図3に遷移した場合、再送回数テーブルは図33のように変化する。すなわち、図32で説明したように、リンクが切断されたノードBのMACアドレスが、MACアドレス251−1に追加され、再送回数上限値Sとして「1」が選択され、再生回数上限値252−1に記載される。さらに図1の状態に戻った場合、図31で説明したように、再送回数テーブルは図30に戻る。
次に、実施例5のCSMA/CA方式の変更動作について、図34を用いて説明する。図34において、まず、送信キュー60にQdataがキューイングされているかどうかをチェックする(S71)。キューイングされていない場合(NO)は送信データがないということなのでステップ71を繰り返す。ステップ71でキューイングされているとき(YES)、再送回数カウンタを0に初期化する(S72)。次に、送信キュー60からQdataを抽出する(S73)。再送回数テーブル25に、抽出したQdataの転送先MACアドレスが存在するかどうかチェックする(S74)。存在する場合(YES)には、そのMACアドレスに対応付けされている値を再送回数上限値として設定する(S75)。ステップ74で、存在しない場合(NO)には再送回数テーブル内のデフォルト値を再送回数上限値として設定する(S76)。
次に、Qdataを物理層150へ渡す(S77)。そうすると物理層150はQdataを対向ノードへ無線送信するので、自ノードは対向ノードからのACKを待つ。次に、ACK受信が成功したかどうかチェックし(S78)、成功した場合(YES)には、保持していたQdataを破棄し(S81)し、ステップ71に戻る。
ステップ78で失敗した場合(NO)、再送処理を行うため再送回数カウンタをインクリメントし(S79)、再送回数カウンタが再送回数上限値以上かどうかをチェックする(S80)。ステップ80で再送回数カウンタが再送回数上限値より小さい場合(NO)には再送処理を行うため、再度ステップ77へ分岐する。ステップ80で再送回数カウンタが再送回数上限値以上の場合(YES)には保持していたQdataを破棄し(S81)し、ステップ71に戻る。
ネットワークトポロジーが図1の構成で、各ノードがリンク確立している状態において、ノードAからノードCへのデータ転送とノードAからノードDへのデータ転送を同じ伝送レートで同一期間内に行っている場合を考える。前提条件として、各ノードの送信キューの長さは50であり、データ転送期間中のノードAの送信キューには平均的に10個のデータが送信待ちデータとしてキューイングされてものとする。また、このときのノードAのリンク確立テーブルは図17のようになっている。
ネットワークトポロジーが図1のときには、上述の説明より、再送回数テーブルは図30になっており、送信キューが図12とすると、送信キュー内の全てのQdataの再送回数はデフォルトの3回となる。次に図1から図3の状態に遷移した場合には、再送回数テーブルは図33になるため、このときの送信キューが図12とすると転送先MACアドレスが「00:00:00:00:00:0B」のQdataの再送回数の最大は1回となり、それ以外の転送先MACアドレス(図12の場合、「00:00:00:00:00:0D」)のQdataの再送回数の最大は3回となる。
この処理により、リンク切断中のノードが転送先になっている送信キュー内のデータの再送回数のみを減らすことが可能となる。
本実施例によれば、リンク確立していないノードへの無駄な再送を減らすことができる。その結果、ネットワーク全体のスループットを向上させることが可能となる。さらに無駄な無線送信が抑制されるため、ノードの消費電力軽減効果も得られる。
ネットワークトポロジーを説明する図である(トポロジー1)。
ネットワークトポロジーを説明する図である(トポロジー2)。
ネットワークトポロジーを説明する図である(トポロジー3)。
ノードAが送信するHELLOメッセージを説明する図である(その1)。
ノードBが送信するHELLOメッセージを説明する図である。
ノードAが送信するHELLOメッセージを説明する図である(その2)。
通信プロトコルの階層構造とデータ送信の流れを説明する図である。
各ノードのIPアドレスとMACアドレスとを説明する図である。
ノードAのルーティングテーブルである。
ノードAのARPテーブルである。
ノードAのルーティングテーブルである。
ノードAとノードBとのリンクが切断した直後のノードAの送信キューを説明する図である。
ルート切替が行われたあとのノードAの送信キューを説明する図である。
パケット送信処理の動作を説明するフローチャートである。
ノードの機能ブロック図である。
ノードのハードウェアブロック図である。
トポロジー1のノードAのリンク確立テーブルを説明する図である。
トポロジー3のノードAのリンク確立テーブルを説明する図である。
パケット破棄処理を説明するフローチャートである。
パケット破棄処理後のノードAの送信キューを説明する図である。
再ルーティング処理を説明するフローチャートである。
再ルーティング処理後のノードAの送信キューを説明する図である。
再ルーティング処理を説明するフローチャートである。
ネットワークトポロジーを説明する図である(トポロジー4)。
トポロジー4のノードAのリンク確立テーブルを説明する図である。
ネットワークトポロジーを説明する図である(トポロジー5)。
ネットワークトポロジーを説明する図である(トポロジー6)。
トポロジー6のノードAのリンク確立テーブルを説明する図である。
再ルーティング処理を説明するフローチャートである。
再送回数テーブルを説明する図である。
リンク確立時の再送回数更新を説明するフローチャートである。
リンク切断時の再送回数更新を説明するフローチャートである。
再送回数テーブルを説明する図である。
パケット送信処理の動作を説明するフローチャートである。
符号の説明
1…無線部、2…キュー内パケット制御部、3…経路情報付与部、4…コンソール、5…通信用アプリケーション、6…無線接続確立部、7…経路情報生成部、8…経路情報格納部、9…パケット送信制御部、10…データ、11…経路情報更新部、20…宛先IPアドレス、25…再送回数テーブル、30…転送先MACアドレス、40…ルーティングテーブル、45…リンク確立テーブル、50…ARPテーブル、60…送信キュー、70…CSMA/CA方式、80…再送回数上限値、90…無線送受信装置、100…ノード、110…無線アンテナ、120…アプリケーション層、130…ルーティング層、140…MAC層、150…物理層、160…中央処理装置(CPU)、170…制御メモリ170、180…コンソールコントローラ180、190…ネットワークコントローラ190、200…無線LAN部200、210…FIFOメモリ、220…ハードディスク。