有線方式による機器間のケーブル配線からユーザを解放する通信システムとして、無線ネットワークが注目されている。無線ネットワークによれば、オフィスなどの作業空間において、有線ケーブルの大半を省略することができるので、パーソナル・コンピュータ(PC)などの通信端末を比較的容易に移動させることができる。近年では、無線LANシステムの高速化、低価格化に伴い、その需要が著しく増加してきている。特に最近では、人の身の回りに存在する複数の電子機器間で小規模な無線ネットワークを構築して情報通信を行なうために、パーソナル・エリア・ネットワーク(PAN)の導入が検討されている。例えば、2.4GHz帯や、5GHz帯など、監督官庁の免許が不要な周波数帯域を利用して、異なった無線通信システム並びに無線通信装置が規定されている。
無線ネットワークに関する標準的な規格として、IEEE(The Institute of Electrical and Electronics Engineers)802.11(例えば、非特許文献1を参照のこと)や、HiperLAN/2(例えば、非特許文献2又は非特許文献3を参照のこと)やIEEE802.15.3、Bluetooth(登録商標)通信などを挙げることができる。IEEE802.11規格については、無線通信方式や使用する周波数帯域の違いなどにより、IEEE802.11a規格、IEEE802.11b規格…などの各種無線通信方式が存在する。
無線技術を用いてローカル・エリア・ネットワークを構成するために、エリア内に「アクセス・ポイント」又は「コーディネータ」と呼ばれる制御局となる装置を1台設けて、この制御局の統括的な制御下でネットワークを形成する方法が一般的に用いられている。
アクセス・ポイントを配置した無線ネットワークでは、ある通信装置から情報伝送を行なう場合に、まずその情報伝送に必要な帯域をアクセス・ポイントに予約して、他の通信装置における情報伝送と衝突が生じないように伝送路の利用を行なうという、帯域予約に基づくアクセス制御方法が広く採用されている。すなわち、アクセス・ポイントを配置することによって、無線ネットワーク内の通信装置が互いに同期をとるという同期的な無線通信を行なう。
ところが、アクセス・ポイントが存在する無線通信システムで、送信側と受信側の通信装置間で非同期通信を行なう場合には、必ずアクセス・ポイントを介した無線通信が必要になるため、伝送路の利用効率が半減してしまうという問題がある。
これに対し、無線ネットワークを構成する他の方法として、端末同士が直接非同期的に無線通信を行なう「アドホック(Ad−hoc)通信」が考案されている。とりわけ近隣に位置する比較的少数のクライアントで構成される小規模無線ネットワークにおいては、特定のアクセス・ポイントを利用せずに、任意の端末同士が直接すなわちランダムな無線通信を行なうことができるアドホック通信が適当であると思料される。
アドホック型無線通信システムには中央制御局が存在しないので、例えば家庭用電気機器からなるホーム・ネットワークを構成するのに適している。アドホック・ネットワークには、1台が故障又は電源オフになってもルーティングを自動的に変更するのでネットワークが破綻しにくい、移動局間でパケットを複数回ホップさせることにより高速データ・レートを保ったままで比較的遠くまでデータを伝送することができる、といった特徴がある。アドホック・システムにはいろいろな開発事例が知られている(例えば、非特許文献5を参照のこと)。
例えば、IEEE802.11系の無線LANシステムでは、制御局を配さなくとも自律分散的にピア・ツウ・ピア(Peer to Peer)で動作するアドホック・モードが用意されている。
一方、アドホック環境の無線LANネットワークにおいては、一般的に隠れ端末問題が生じることが知られている。隠れ端末とは、ある特定の通信局間で通信を行なう場合、通信相手となる一方の通信局からは聞くことができるが他方の通信局からは聞くことができない通信局のことであり、隠れ端末同士ではネゴシエーションを行なうことができないため、送信動作が衝突する可能性がある。
このような隠れ端末問題を解決する方法論として、RTS/CTS手順によるCSMA/CAが知られている。
ここで、CSMA(Carrier Sense Multiple Access with Collision Avoidance:搬送波感知多重アクセス)とはキャリア検出に基づいて多重アクセスを行なう接続方式である。無線通信では自ら情報送信した信号を受信することが困難であることから、CSMA/CD(Collision Detection)ではなくCSMA/CA(Collision Avoidance)方式により、他の通信装置の情報送信がないことを確認してから、自らの情報送信を開始することによって、衝突を回避する。CSMA方式は、ファイル転送や電子メールなどの非同期データ通信に適しているアクセス方式である。
また、RTS/CTS方式では、データ送信元の通信局が送信要求パケットRTS(Request To Send)を送信し、データ送信先の通信局から確認通知パケットCTS(Clear To Send)を受信したことに応答してデータ送信を開始する。そして、隠れ端末はRTS又はCTSのうち少なくとも一方を受信すると、RTS/CTS手続に基づくデータ伝送が行なわれると予想される期間だけ自局の送信停止期間を設定することにより、衝突を回避することができる。送信局にとっての隠れ端末は、CTSを受信して送信停止期間を設定し、データ・パケットとの衝突を回避し、受信局にとっての隠れ端末は、RTSを受信して送信期間を停止し、ACKとの衝突を回避する。
ここで、IEEE802.11の拡張規格であるIEEE802.11aを例にとり、無線ネットワークについて説明する。
図15には、IEEE802.11aにおけるフレーム・フォーマットを示している。
各パケットの先頭には、パケットの存在を示すためのプリアンブルが付加されている。プリアンブルは、規格により既知のシンボル・パターンが定義されている。受信機は、この既知パターンに基づいて受信信号がプリアンブルに値するか否かを判断することができる。
プリアンブルに続き、シグナル・フィールドが定義されている。シグナル・フィールドには、当該パケットの情報部を復号するのに必要な情報が格納されている。パケットの復号に必要な情報は、PLCPヘッダ(Physical Layer Convergence Protocolヘッダ)と呼ばれ、PLCPヘッダには、情報部(PLCPヘッダの一部であるServiceフィールドも含まれるが、説明の簡素化のため、以下では単に「情報部」と総称する)の伝送レートを示すRATEフィールド、情報部の長さを示すLENGTHフィールド、パリティ・ビット、エンコーダのTailビットなどが含まれている。受信機は、PLCPヘッダのRATE並びにLENGTHフィールドの復号結果に基づき、以降の情報部の復号作業を行なう。
PLCPヘッダを格納しているSIGNAL部は、雑音に強い符号化が施されており、6Mbps相当で伝送される。一方、情報部は、通常パケットでは、受信機におけるSNRなどに応じて、なるべくエラーが生じない範囲で最も高ビットレートが提供される伝送レート・モードにて伝送される。
IEEE802.11aでは、6、9、12、18、24、36、54Mbpsという8種類の伝送レート・モードが定義されており、これらのうちいずれかが選択される。送受信機が近隣に位置する際には、高いビットレートの伝送レート・モードが選択され、遠くに位置する通信局では、この情報を復号することができない場合もある。
情報部は、PSDU(Physical Layer Service Data Unit)として上位レイヤであるリンク層に受け渡される。ここでは、本発明の説明する上で必要となる、RTS、CTS及びACK、DATAの4種類のフレームについてのみ説明を行なうこととする。図16AにはRTSフレームのPSDUのフレーム・フィールドの構成を、図16BにはCTS並びにACKフレームのPSDUのフレーム・フィールドの構成を、図16CにはDATAフレームのPSDUのフレーム・フィールドの構成を、それぞれ示している。
各フレームには、Frame ControlフィールドとDurationフィールドが共通で定義されている。Frame Controlフィールドは、当該フレームの種類や用途などを示す情報が格納されており、具体的には、表1に示す情報が記載されている。また、Durationフィールドには、NAV(Network Allocation Vector)(後述)の用途の情報が格納されており、当該パケットのトランザクションが終了するまでの時間が記されている。
Dataフレームには、上記の他、送信元や宛先通信局他の特定を行なう4つのアドレス・フィールドAddr1〜4と、シーケンス・フィールド(SEQ)と、上位レイヤに提供する正味の情報であるFrameBodyと、チェックサムであるFCS(Frame Check Sequence)が含まれている。
RTSフレームには、上記の他、宛先を示すReceiver Address(RA)と、送信元を示すTransmitter Address(TA)と、チェックサムであるFCSが含まれる。
CTSフレーム並びにACKフレームには、上記の他、宛先を示すRAとチェックサムであるFCSが含まれる。
ここで、IEEE802.11において規定されているアクセス競合方法について説明する。
IEEE802.11では、4種類のフレーム間隔(IFS:Inter Frame Space)が定義されており、短いものから順にSIFS(Short IFS)、PIFS(PCF IFS)、DIFS(DCF IFS)が定義されている。
IEEE802.11では、基本的なメディア・アクセス手順としてCSMAが採用されているが(前述)、送信機が何かを送信する前には、メディア状態を監視しながらランダム時間にわたりバックオフのタイマーを動作させ、この間に送信信号が存在しない場合に始めて送信権利が与えられ、メディア上にパケットを送信することができる。
通常のパケットをCSMAの手順に従って送信する際、DCF(Distributed Coordination Functionと呼ばれる)には、何らかのパケットの送信が終了してから、まずDIFSだけメディア状態を監視し、この間に送信信号が存在しなければ、ランダム・バックオフを行ない、さらにこの間にも送信信号が存在しない場合に、送信権利が与えられる。
これに対し、ACKなどの例外的に緊急度の高いパケットを送信する際には、SIFSというより短いフレーム間隔の後にパケットを送信することが許されている。これにより、緊急度の高いパケットは、通常のCSMAの手順に従って送信されるパケットよりも先に送信することが可能となる。
要するに、異なる種類のフレーム間隔IFSが定義されている理由は、IFSがSIFS、PIFS、DIFSのいずれであるか、すなわちフレーム間隔の長さに応じてパケットの送信権争いに優先付けが行なわれる。
続いて、IEEE802.11におけるRTS/CTS手順について、図17〜図19を参照しながら説明する。アドホック環境の無線LANネットワークにおいては、一般的に隠れ端末問題が生じることが知られており、この問題の多くを軽減する方法論として、RTS/CTS手順によるCSMA/CAが知られている(前述)。IEEE802.11においても、この方法論が採用されている。
図17には、RTS/CTS手順の動作例を模式的に示している。同図では、STA0からSTA1宛てになんらかの情報(Data)を送信する場合の例が示されている。
STA0は、実際の情報の送信に先立ち、情報の宛て先であるSTA1に向けてRTS(Request To Send)パケットをCSMAの手順に従って送信する。これに対し、STA1は、RTSパケットを受信したことに応答して、RTSを受信できた旨をフィードバックするCTS(Clear To Send)パケットをSTA0に送信する。
送信側であるSTA0において、CTSパケットを無事に受信が行なわれれば、メディアがクリアであるとみなし、すぐさま情報(Data)パケットの送信を開始する。そして、STA1は情報(Data)パケットを無事に受信し終えると、ACKパケットを返送し、これによって1パケット分の送受信トランザクションが終了する。
図18には、送受信局間でRTS/CTS手順を行なう際に、周辺局で起こり得る作用について図解している。同図では、STA2、STA0、STA1、STA3という4台の通信局が存在し、図中で隣り合う通信局同士のみが電波の到達範囲に位置しているという通信環境を想定している。ここで、STA0がSTA1に宛てて情報を送信したいとする。
送信元であるSTA0は、CSMAの手順によりメディアが一定期間(時刻T0から時刻T1まで)クリアである旨を確認した後、時刻T1からRTSパケットをSTA1に宛てて送信する。RTSパケットのFrameControlフィールドのType/SubType情報には当該パケットがRTSであることを示す情報が記載され、Durationフィールドには当該パケット送受信トランザクションが終了するまでの時間(すなわち時刻T8までの時間)が記載され、RAフィールドには宛先通信局(STA1)のアドレスが記載され、TAフィールドには、自局(STA0)のアドレスが記載されている。
ここで、STA0は、Durationフィールドに当該RTS/CTS手順に基づくトランザクションが終了するまでの時間を記述するためには、RTSを送信する時点で当該トランザクションの終了時刻を決定しておく必要がある、という点に留意されたい。具体的に言えば、送信元であるSTA0は、当該トランザクションにおいて以後送受信されるCTSパケット、Dataパケット、ACKパケットを含むすべての伝送レート・モードを、RTSを送信する時点で確定させておかなければならないことになる。また、ここで決定される伝送レート・モードはトランザクション全体に関するものであり、トランザクション内でパケット送信毎に区々の伝送レート・モードを設定することは許容されていない。
図19には、送信元であるSTA0がRTSを送信する時点で当該トランザクション全体についての伝送レート・モードを決定するための手順を図解している。RTS送信時に当該トランザクションの終了時間(図18の時刻T8)がどこなのかを決める必要があるため、伝送レート・モードは、RTSの送信時に送信局の持つ情報にのみ起因して(トランザクション全体での通信データ量と伝送レートなどに基づいて)、決定される。その後、送受信されるCTS、DATA、ACKの各フレームの伝送レートは基本的にRTSで適用されたレートに従うことになる。すなわち、トランザクション内でパケット送信毎に区々の伝送レート・モードを設定することは許容されていない。
ここで、再び図18に戻って説明する。RTSパケットは、STA0の近隣に位置するSTA2でも受信される。STA2は、RTS信号を受信すると、プリアンブルを発見することにより受信作業を開始し、さらにPLCPヘッダを復号して得られた情報に基づきPSDUを復号する。そして、PSDU内のFrame Controlフィールドから当該パケットがRTSパケットであることを認識しSTA0が何らかの情報を送信したい旨を知る。また、RAフィールドから、自局が宛先通信局でないことを認識する。すると、STA2は、STA0の送信希望を妨げないように、当該トランザクションが終了するまでメディアを監視することなくメディアが占有されている状態であると認識し、送信をストップさせる。この作業のことを、周辺局が「NAV(Network Allocation Vector)を立てる)などと呼ぶ。NAVは、Durationフィールドで示された期間にわたり有効となり、STA2は時刻T8まで送信不許可状態となる。
一方、RTSパケットは、宛先であるSTA1でも受信される。STA1は、上記と同様の手順によりPSDUを復号することにより、STA0が自局宛てにパケットを送信したい旨を認識すると、SIFS間隔(前述)をおいて時刻T3でCTSパケットを返送する。
ここで、CTSパケットの伝送レート・モードは、RTSと同一でなければならない。また、PSDUのFrame Controlフィールドには当該パケットがCTSパケットである旨が記載され、Durationフィールドには該トランザクションが終了するまでの時間(すなわち時刻T8までの時間)が記載され、RAフィールドには宛先通信局(STA1)のアドレスが記載されている。
CTSパケットは、送信先であるSTA1の近隣に位置するSTA3でも受信される。STA1は、上記と同様の手順によりPSDUを復号することにより、「近隣のとある通信局が時刻T8までパケットの受信を予定している」旨を認識する。また、STA3は、STA1の受信希望を妨げないように、当該トランザクションが終了するまでNAVを立てて送信をストップさせる。NAVは、Durationフィールドで示された期間にわたり有効となり、STA3も時刻T8まで送信不許可状態となる。
CTSパケットは、宛先であるSTA0でも受信される。STA0は、上記と同様の手順によりPSDUを復号することにより、STA1は受信準備ができていることを認識すると、SIFS間隔をおいて時刻T5でDataパケットを送信開始する。
Dataパケット送信が時刻T6で終了し、STA1がこれを誤りなく復号できた場合には、STA1はSIFS間隔をおいて時刻T7でACKを返送し、これをSTA0が受信して1パケットの送受信トランザクションが時刻T8で終了する。
時刻T8になると、近隣通信局であるSTA2並びにSTA3は、NAVを降ろして、通常の送受信状態へと復帰する。
要言すると、上記のRTS/CTS手順において、RTSを受信できた「送信局であるSTA0の周辺局」すなわちSTA2とCTSを受信できた「受信局であるSTA1の周辺局」すなわちSTA3において、送信が禁止される。これにより、周辺局からの突然の送信信号に妨害されることなく、STA0からSTA1に宛てての情報送信並びにACKの返送が行なわれるので、通信品質が保たれる。
図20には、上述したようなIEEE802.11におけるRTS/CTS手順に基づくパケット送受信トランザクションを、TCP/IP(Transmission Control Protocol/Internet Protocol)を経由したトラフィックで実現する場合の動作シーケンス例を示している。TCP/IPは、伝送制御並びに経路制御を行なう代表的な通信プロトコルである。
アプリケーション的には片方向通信であっても、TCPレイヤにより典型的には2セグメント毎にACKが返送され、MACレイヤにおいては非対称の双方向通信の形態となる。TCPレイヤのACKはデータ量が小さいためRTS/CTSは併用されないが、データ・トラヒックについてはRTS/CTSが併用される例をここでは示している。
図20に示した例では、Data0からData4までの5つのセグメントを送信するために、合計24回分のパケットがMACレイヤで送受信されている。すなわち、TCPレイヤにおける動作が比較的簡素であるのに対し、MACレイヤでは煩雑な動作を行なっている。
以上説明してきたように、IEEE802.11において、RTS/CTS方式を併用したCMSAに基づく送受信手順を行なうことにより、アクセス競合並びに帯域保証の問題を解決することができる一方、以下に示すような幾つかの課題が残されている。
(1)伝送レートの不完全性
RTS/CTS手順に従ってデータ送受信を行なう場合、RTSパケットを送信する前にデータ・パケットの伝送レートを確定させておく必要がある。
何故ならば、送信局がDurationフィールドに当該RTS/CTS手順に基づくトランザクションが終了するまでの時間を記述するためには、RTSを送信する時点で当該トランザクションの終了時刻を決定しておく必要があるからであるが、これは当該トランザクションにおいて以後送受信されるCTSパケット、Dataパケット、ACKパケットを含むすべての伝送レート・モードを、RTSを送信する時点で確定させておかなければならないことを意味する。また、RTS送信時に決定される伝送レート・モードはトランザクション全体に関するものであり、トランザクション内でパケット送信毎に区々の伝送レート・モードを設定することは許容されておらず、ゆえに伝送レートは不完全である。
また、送信局は受信局における受信状況をリアルタイムに把握できないため、RTS送信時にトランザクション全体の伝送レートを決定することは、受信局の受信状況に応じた最適な伝送レートでデータ・パケットが伝送される可能性が低いことにもなる。
例えば、特許文献1には、受信側がRTSパケットを受信すると、その時点における通信環境状況を測定し、測定結果をCTSパケットに付加して送信側に返信することにより、送信側で通信レートなどを最適化するパケット通信方法について開示されている。しかしながら、この場合も、送信側においてRTSパケットを送信する前にトランザクション全体の伝送レートを確定させておくことに他ならず、ゆえに伝送レートの不完全性は解消されない。
RTS送信局は、RTS送信に起因して送受信されるCTSパケット、Dataパケット、ACKパケットを含むトランザクション全体の伝送レートを確定させ、さらに伝送データ量を伝送レートで割り算した値に基づいてトランザクションの終了時間すなわちDurationとして書き込むべき値を求めてRTSに記載する必要がある。これに対し、特許文献1では、CTS送信局がRTSの受信により伝送レートを決定するが、これに先立ってRTS送信局がRTSに記載したDurationフィールドをどのようにして求めるべきかについては、言及されていない。
ここで、CTS送信局側でより速い伝送レートを設定した場合、RTS送信時に決定されたDurationよりも早い時刻にトランザクションが終了するため、RTSを聞いた周辺局はトランザクション終了以降もNAVを立てて送信待機することになり、帯域の無駄となる。逆に、CTS送信局がより遅い伝送レートを設定した場合、RTS送信時に決定されたDurationが経過した後もトランザクションは終了していないにも拘らず、RTSを聞いた周辺局はNAVを解除して送信動作を開始するため、衝突が誘発される。
(2)RTS/CTSを併用する場合のデータ・ユニットのマルチプレクスの困難性
従来から知られているRTS/CTS手順においては、データを送信する側がRTSを送信する前にデータ・レートを確定する。データを受信する側がデータ・レートを確定し、且つ複数のデータ・ユニットを1つのデータ・パケットとして送信することは考えられていない。MACレイヤの効率化を考えると(図20を参照のこと)、受信側がデータ・レートを確定し、さらに複数のデータ・ユニットを1つのデータ・パケットとして送信できることが好ましい。しかしながら、従来のRTS/CTSフォーマットではこれを実現することができない。
(3)遅延確認応答とRTS/CTS手順の併用
IEEE802.11規格では、データを受信すると即座に確認応答(ACK)を返送する即時ACK(Immediate ACK)が前提となっている。これに対しACK、フレームのオーバーヘッドを削減する目的で、遅延ACK(Deley ACK)を用いることが考えられる。
ところが、遅延ACKとRTS/CTS手順を併用すると、ACKが送信側に返送されない状態で再送の目的でRTSが送信される可能性があるなど、既存のフォーマットでは遅延確認応答とRTS/CTS手順の併用は効率を上げる目的では限界がある。
(4)選択的確認応答の方法論
選択的確認応答を行なうことによりMACレイヤの効率が向上することが知られているが、IEEE802.11規格では選択的確認応答自体が考慮されていない。ここで言う選択的確認応答とは、受信できた又は受信できなかった任意のパケットについてのACK又はNACK情報を送信側にフィードバックすることにより、受信側が受信できなかったパケットについてのみ再送を行なう再送制御方式である。
選択的確認応答の実装は、巨大なメモリが必要となることや処理の重さなどが原因で、実際に適用されている例はまだ多くないが、今後はますます必要性が高くなっていくであろう。このような状況を踏まえ、初期段階の通信局には選択的確認応答は実装されていないが、後に開発される通信局には選択的確認応答が実装されているという事態が予想される。このような場合、両者が通信できないことは好ましくなく、下位互換性を保つフォーマットが望まれる。
また、さらに選択的確認応答と受信側がデータ・レートを確定する手法とRTS/CTS手順を併用することはこれまで考えられていないため、既存のフォーマットでは実現することができない。
(5)MACレイヤで発生するオーバーヘッドの影響
IEEE802.11規格では、RTSフレーム、CTSフレーム、ACKフレームなどが独立して定義されている(図16を参照のこと)。このため、各々の情報を送りたい場合には、それぞれ別個のフレームにて送信を行なう必要がある。ところが、フレームを送信する度に、プリアンブルなどのオーバーヘッドが存在し、特に伝送レートが高くなるとこのオーバーヘッド量が無視できないくらい大きく浮上してくる。
MACレイヤにおけるオーバーヘッドの増大は、TCP/IPなど上位レイヤに提供できる帯域を制限する方向に寄与するため好ましくない、ということは言うまでもない。
以下、図面を参照しながら本発明の実施形態について詳解する。
A.システム構成
本発明において想定している通信の伝搬路は無線であり、複数の通信局間でネットワークを構築する。本発明で想定している通信は蓄積交換型のトラヒックであり、パケット単位で情報が転送される。また、以下の説明では、各通信局は単一のチャネルを想定しているが、複数の周波数チャネルすなわちマルチチャネルからなる伝送媒体を用いた場合に拡張することも可能である。
本発明に係る無線ネットワークでは、各通信局は、CSMA(Carrier Sense Multiple Access:キャリア検出多重接続)に基づくアクセス手順に従い直接(ランダム)に情報を伝送し、自律分散型の無線ネットワークを構築することができる。
制御局と被制御局の関係を有しない自律分散型の無線通信システムでは、例えば、各通信局はビーコン情報を報知することにより、近隣(すなわち通信範囲内)の他の通信局に自己の存在を知らしめるとともに、ネットワーク構成を通知する。また、ある通信局の通信範囲に新規に出現した通信局は、ビーコン信号を受信することにより、通信範囲に突入したことを検知するとともに、ビーコンに記載されている情報を解読することによりネットワーク認識し、ネットワークに参入することができる。
本発明に係る無線ネットワークでは、通信局同士のビーコン信号の交換により互いに緩やかに時間同期して、時分割多重アクセス構造を持った伝送(MAC)フレームによりチャネル・リソースを効果的に利用した伝送制御が行なわれる。したがって、各通信局は、帯域を予約する、あるいは優先利用期間を設定するなど時間同期をベースにしたアクセス方式を行なうことができる。
以下に説明する各通信局での処理は、基本的にはネットワークに参入するすべての通信局で実行される処理である。但し、場合によっては、ネットワークを構成するすべての通信局が、以下に説明する処理を実行するとは限らない。
図1には、本発明の一実施形態に係る無線通信システムを構成する通信装置の配置例を示している。この無線通信システムでは、制御局と被制御局の関係を有さず、各通信装置が自律分散的に動作し、アドホック・ネットワークが形成されている。同図では、通信装置#0から通信装置#6までが、同一空間上に分布している様子を表わしている。
また、同図において各通信装置の通信範囲を破線で示してあり、その範囲内にある他の通信装置と互いに通信ができるのみならず、自己の送信した信号が干渉する範囲として定義される。すなわち、通信装置#0は近隣にある通信装置#1、#4、と通信可能な範囲にあり、通信装置#1は近隣にある通信装置#0、#2、#4、と通信可能な範囲にあり、通信装置#2は近隣にある通信装置#1、#3、#6、と通信可能な範囲にあり、通信装置#3は近隣にある通信装置#2、と通信可能な範囲にあり、通信装置#4は近隣にある通信装置#0、#1、#5、と通信可能な範囲にあり、通信装置#5は近隣にある通信装置#4、と通信可能な範囲にあり、通信装置#6は近隣にある通信装置#2、と通信可能な範囲にある。
ある特定の通信装置間で通信を行なう場合、通信相手となる一方の通信装置からは聞くことができるが他方の通信装置からは聞くことができない通信装置、すなわち「隠れ端末」が存在する。
なお、本発明の適用範囲は、上記のアドホック環境に限定されるものではなく、各通信局がRTS/CTS手順を併用するCSMAに基づくアクセス手順に従い直接非同期的に情報を伝送することができるその他の通信形態においても広く適応可能である。
図2には、本発明の一実施形態に係る無線ネットワークにおいて通信局として動作する無線通信装置の機能構成を模式的に示している。図示の無線通信装置は、制御局を配置しない自律分散型の通信環境下において、RTS/CTS手順を併用しながらCSMAに基づくアクセス制御を行なうことにより、ネットワークを形成することができる。
図示の通り、無線通信装置100は、インターフェース101と、データ・バッファ102と、中央制御部103と、ビーコン生成部104と、無線送信部106と、タイミング制御部107と、アンテナ109と、無線受信部110と、ビーコン解析部112と、情報記憶部113とで構成される。
インターフェース101は、この無線通信装置100に接続される外部機器(例えば、パーソナル・コンピュータ(図示しない)など)との間で各種情報の交換を行なう。
データ・バッファ102は、インターフェース101経由で接続される機器から送られてきたデータや、無線伝送路経由で受信したデータをインターフェース101経由で送出する前に一時的に格納しておくために使用される。
中央制御部103は、無線通信装置100における一連の情報送信並びに受信処理の管理と伝送路のアクセス制御を一元的に行なう。中央制御部103では、例えば、RTS/CTS手順を併用しながらCSMAに基づくアクセス制御が行なわれる。また、本実施形態では、RTS、CTS、DATA、ACKなどの複数種のフレームをマルチプレクスさせる送受信手順を行なう。これらの処理手順の詳細については後述に譲る。
ビーコン生成部104は、近隣にある無線通信装置との間で周期的に交換されるビーコン信号を生成する。
無線送信部106は、送信信号を所定の変調方式で変調する変調器や、デジタル送信信号をアナログ信号に変換するD/A変換器、アナログ送信信号を周波数変換してアップコンバートするアップコンバータ、アップコンバートされた送信信号の電力を増幅するパワーアンプ(PA)など(いずれも図示しない)を含み、データ・バッファ102に一時格納されているデータやビーコン信号などを所定の伝送レートにて無線送信する。
無線受信部110は、アンテナ109を介して他局から受信した信号を電圧増幅する低雑音アンプ(LNA)や、電圧増幅された受信信号を周波数変換によりダウンコンバートするダウンコンバータ、自動利得制御器(AGC)、アナログ受信信号をデジタル変換するA/D変換器、同期獲得のための同期処理、チャネル推定、所定の復調方式により復調処理する復調器など(いずれも図示しない)で構成され、所定の時間に他の無線通信装置から送られてきた情報やビーコンなどの信号を受信処理する。
無線送信部106及び無線受信部110における無線送受信方式は、例えば無線LANに適用可能な、比較的近距離の通信に適した各種の通信方式を適用することができる。具体的には、UWB(Ultra Wide Band)方式、OFDM(Orthogonal Frequency Division Multiplexing:直交周波数分割多重)方式、CDMA(Code Division Multiple Access:符号分割多元接続)方式などを採用することができる。
アンテナ109は、他の無線通信装置宛てに信号を所定の周波数チャネル上で無線送信し、あるいは他の無線通信装置から送られる信号を収集する。本実施形態では、単一のアンテナを備え、送受信をともに並行しては行なえないものとする。
タイミング制御部107は、無線信号を送信並びに受信するためのタイミングの制御を行なう。例えば、RTS、CTS、DATA、ACKなどの各パケット又はこれらをマルチプレクスしたパケットの送信タイミングや受信タイミング、自局のビーコン送信タイミングや他局からのビーコン受信タイミングなどを制御する。
ビーコン解析部112は、隣接局から受信できたビーコン信号を解析し、近隣の無線通信装置の存在などを解析する。例えば、隣接局のビーコンの受信タイミングや近隣ビーコン受信タイミングなどの情報は近隣装置情報として情報記憶部113に格納される。
情報記憶部113は、中央制御部103において実行される一連のアクセス制御動作などの実行手順命令(衝突回避処理手順などを記述したプログラム)や、受信ビーコンの解析結果から得られる近隣装置情報などを蓄えておく。
B.フレーム・フォーマット(パケット・フォーマット)
図3には、本発明に係る無線通信システムにおいて使用されるフレーム・フォーマットの構成例を示している。但し、同図では、図15に示したプリアンブルやPLCPヘッダなどを省略し、PSDU(PHY Service Data Unit)と示された部分のみを抜粋して示している。
図示の通り、PSDUは、MACヘッダ部と、MSDU(MAC Service Data Unit:上位レイヤから渡される1データ・ユニット)部で構成される。また、本実施形態では、1つのPSDUにつき複数のMSDUを格納することができる。MACヘッダ部は、コモンMACヘッダ部とサブMACヘッダ部とHCS(Header Check Sequence)部で構成される。なお、サブMACヘッダとして複数のサブMACヘッダを格納することができる。
図4には、本実施形態に係るPSDUの構成例を示している。図4A、図4B、図4C、図4Dに示す各フレームは、従来のRTSフレーム、CTSフレーム、ACKフレーム、データ・フレーム(図16を参照のこと)にそれぞれ相当する。
各フレームに共通で定義されているヘッダ長(HLen)、宛先アドレス(RA)、送信元アドレス(TA)、Durationは、コモンMACヘッダ部に相当する。表2には、コモンMACヘッダ部の各フィールドの詳細を示している。
サブMACヘッダ部は、各フレームの目的に応じて異なった様式で定義される。例えば、RTSフレーム相当のパケットにおいてはサブMACヘッダとしてRTSSMH(Sub MAC Header)が格納され、CTSフレーム相当のパケットにおいてはサブMACヘッダとしてCTSSMHが格納され、ACKフレーム相当のパケットにおいてはサブMACヘッダとしてACK
SMHが格納され、データ・フレーム相当のパケットにおいてはサブMACヘッダとしてDATASMHが格納されている。
RTS、CTS、ACKの各フレームは、MACヘッダ部のみからPSDUが構成され、MSDU部は存在しない。一方、データ・フレームには、DATASMHにて指定されたデータがフレーム・ボディとして付加される。
図5には、本発明において定義され得るPSDUについての幾つかの例を示している。図5Aには、2つのMSDUがマルチプレクスされたパケット(マルチプル・データ・フレーム)が示されている。また、図5Bには、1つのMSDUとRTS情報がマルチプレクスされたパケット(データ+RTSフレーム)が示されている。また、図5Cには、CTS情報とACK情報がマルチプレクスされたパケット(CTS+ACKフレーム)が示されている。また、図5Dには、1つのMSDUとRTS情報とCTS情報とACK情報がマルチプレクスされたパケット(データ+RTS+CTS+ACKフレーム)が示されている。
RTSを送信したい場合はSMHとしてRTS SMHを付加し、CTSを送信したい場合はSMHとしてCTS SMHを付加し、ACKを送信したい場合はSMHとしてACKSMHを付加し、データ・ユニットを送信したい場合には送信したいデータ・ユニットの個数分だけDATA
SMHを付加する。これによって、RTS、CTS、DATA、ACKといった異なる目的の情報を1つのパケットにマルチプレクスすることが可能となる。
次に、各SMHの構成要素の詳細について、表3〜表6を参照しながら説明する。各SMHの先頭フィールドはTypeフィールドであり、当該SMHが何の情報を含んでいるかを示す識別子が記載される。SMHの長さはSMHの種類により異なるが、SMHのType毎に固有の長さを持つことから、受信側ではこのTypeフィールドを参照することにより当該SMHの長さを知ることができる。
DATA SMHのフィールド:
表3には、RTS、CTS、ACK以外の汎用データを送信する際に用いられるDATA SMHのフィールドの詳細を説明している。下記の通り、DATA SMHは、Attribute、Sequence、Lengthの各フィールドから構成される。
Attributeフィールドには、当該DATA SMHが指定するデータの属性を示す識別子が記載される。
Data Flow部には、当該データのデータ・フローが格納されている。ここでは、リンク毎に複数の属性を持つデータ・フローが定義できることを想定している。異なる属性のデータ・フローとは、データ・フロー毎に異なるARQ(Automatic Repeat reQuest:自動再送制御)方式を定義したり、データ・フロー毎に異なるプライオリティのトラヒックを取り扱ったりといった用途で用いられる。
ACK Type部には、当該データを受信した受信機に対してどのようなACKの返送を要求するかを示す情報が格納され、具体的には、即時ACK(Im−ACK)要求、遅延ACK(Del−ACK)要求、ACK不要の3種類の情報が通達される。即時ACK要求が指定された場合、受信側はデータの受信後直ちにACK情報を含むパケットを返送する。また、遅延ACK要求が指定された場合、ACKの返送準備は行なうものの、ACK情報の送信はデータの送信元に対して何らかのパケットを送信する際まで行なわない(データの送信元に対してRTS以外の何らかのパケットを送信する際にACKSMHを付加して送信する)。また、ACK不要が通達された場合には、ACKの返送は行なわない。
More Bit部には、当該パケットを送信したもののさらに送信すべきデータが蓄積されているか否かを示す情報が格納される。受信機は、最も直近にMore Bit部がセットされていたパケットの送信元局のアドレスを格納し、場合によっては当該局に宛ててポーリングを行なう。ポーリングの手順については本発明の要旨に直接関連しないので、これ以上の説明は行なわない。
Fragment部は、当該データがフラグメントされていた場合に、データの切れ目を示す目的で用いられる。
Sequenceフィールドには、当該データに付与されるシーケンス番号が格納される。一般的なデータ通信で行なわれるように、データ・ユニットにつきシーケンス番号を0、1、2、3、…と上り順に付与していくことを想定している。また、シーケンス番号は0から255までをリング状に周回して再利用される。
Lengthフィールドには、当該データの長さが格納されている。
ACK SMHのフィールド:
表4には、ACK情報を送信する際に用いられるACK SMHフィールドの構成要素について説明している。下記の通り、ACK SMHは、ACK Attribute、ACK Sequence/Type、Received MAPの各フィールドから構成される。
ACK Attributeフィールドには、ACKの属性を示す識別子が記載され、Data Flow部にはどのデータ・フローで送信されたデータのACK情報であるかを示す。ここでは、データ・フローとして0が選択された場合には即時ACK(Im−ACK)が用いられ、それ以外のデータ・フローが選択された場合には選択的ACK(Sel−ACK)が用いられる場合を想定している。
ACK Sequence/Typeフィールドは、データ・フローが0でなかった場合には、当該データ・フローのどのシーケンス番号まではシーケンシャルに受信が完了しているかを示すフィールドである。例えば、値6が格納された場合には、シーケンス番号6番までのデータはすべて受信できていることを示す。なお、データ・フローとして0が選択された場合には、即時ACKが用いられ、どのデータに対するACKであるかを示すために当該データのデータ・タイプが転記される。
Received MAPフィールドは、ACK Sequenceで示したデータ以降で受信が完了しているデータが存在するか否かを示すフィールドである。ACK Sequenceで示したシーケンス番号を基準にビットマップにて以降のシーケンス番号が対応付けられ、受信されているデータ(シーケンス番号)に対応するビットをマークする。MSBがACK Sequenceで示したシーケンス番号の次の番号に対応する。例えば、Received MAPフィールドが8ビットで構成され、ACK Sequenceフィールドのシーケンス番号が23で、Received MAPが00100000であった場合には、「23番までのデータはすべて受信されており、(Received MAPは24番目以降8個分のデータ受信の可否をビットマップで表し、)以降では24番、25番がNGで、26番が受信されており、それ以降のデータは受信されていない」ことを意味する。
このような飛び飛びで受信したデータ・ユニットを受信側で保持する送受信方法は選択的確認応答(Selective ACK)と言われる。受信機が選択的確認応答に対応している場合には、上述のルールに従いReceived MAPを作成する。一方、受信機が選択的確認応答に対応していない場合には、シーケンシャルに受信できなかったデータは破棄し、Received
MAPにはオールゼロを記載する。
RTS SMHのフィールド:
表5には、RTS情報を送信する際に用いられるRTS SMHフィールドの構成要素について説明している。下記の通り、RTSSMHは、RTS Attribute、RTS Sequence、RTS Received MAP、Max Duration、Length(又は、Number Of Data Unit)の各フィールドから構成される。
RTS Attributeフィールドには、当該RTS情報の属性を示す識別子が記載される。
Data Flow部には、送信を試みようとしているデータのデータ・フローが格納されている。
Rate Strategy部には、データの伝送レートを決定するときに参照される補助情報が格納される。この補助情報は、伝送レートをアグレッシブに高いレートを選択すべきか、ややアグレッシブに高めのレートを選択すべきか、やや消極的に低めのレートを選択すべきか、消極的に低いレートを選択すべきか、といった決定の判断基準をバイアスする目的で用いられる。Rate Strategy部の使用方法の詳細については後述に譲る。
Rate Set部には、RTSで適用されている伝送レートに固定して送信を行なうか否かの指示情報が格納される。伝送レートを固定して送信を行なう場合には、上記のRate Stragety部の記載は無視される。
RTS/CTS Mux部には、当該RTSに呼応して送信されるCTSパケットにRTS情報を付加することを許可するか否かの情報が格納される。RTSの付加が許可されていた場合には、当該RTSを受信してCTSを返送する局は、当該RTSの送信元局宛てのデータを保持している場合にCTSにRTS情報を付加して送信することが許され、1トランザクションで双方向通信が行なわれることになる。
ACK Request部には、当該RTSに呼応して送信されるCTSパケットにACK情報の付加を要求するか否かの情報が格納される。ACK情報の付加が要求されていた場合には、当該RTSを受信してCTSを返送する局は、当該RTSの送信元局から受信しているデータのACK情報をCTSに付加して送信する。
RTS Sequenceフィールドは、送信元局が送信を試みようとしているデータのうち先頭データのシーケンス番号が記載されるフィールドである。RTSの宛先局は、このフィールドを参照することにより、送信元局が既に受信されているデータと重複するデータの送信を試みていないかを知ることができる。
RTS Received MAPフィールドは、選択的確認応答が併用されている場合に効果を発揮する。RTS Sequenceフィールドで示すシーケンス番号を基準にビットマップにて以降のシーケンス番号のデータが対応付けられ、受信局が受信を完了していると認識しているデータ(シーケンス番号)に対応するビットをマークする。MSBがRTS Sequenceで示したシーケンス番号に対応する。例えば、RTS
Received MAPフィールドが8ビットで構成され、RTS Sequenceフィールドのシーケンス番号が23で、Received MAPが00100000であった場合には、「23番、24番、25番のデータを飛ばして26番以降は連続して送信を試みる」ことを意味する。RTSの宛先局は、このフィールドをも参照することにより、送信元局が既に受信されているデータと重複するデータの送信を試みていないかを知ることができる。
Max Durationフィールドは、送信側が、今回のデータ送信トランザクションにおいて最大のデータ送信期間を設定する目的で用いられる。例えば、送信局の都合で、今回のトランザクションでは200マイクロ秒以内にデータの送信を終わらせたいなどという場合には、このフィールドに200マイクロ秒を示す値(あるいは200マイクロ秒からRTS/CTSの手順に要する時間を引いた値)を格納する。RTSの宛先局は、データ受信の期間を決定する権利を有するが、この際、Max Durationフィールドで示された期間を超えないようにデータ受信の期間を決定する。
Lengthフィールドには、送信を試みるデータの長さが記載される。第1の構成例においては,複数のデータ・ユニットを1パケットで送信することが許される場合には、1つ以上のLength情報(ビット数やバイト数)が定義される。ここでは、例えばN個(典型的には固定値だが固定値でなくてもかまわない)のLength情報が定義されている場合を想定している。なお、受信側が既に受信を完了していると認識しているデータ・ユニットについては、送信を試みるデータの対象から除外する。例えば、RTS Sequenceフィールドのシーケンス番号が23で、Received MAPが00100000であった場合には、Length0には23番のデータ・ユニットの長さを、Length1には24番のデータ・ユニットの長さを格納する。また、Length2には、受信完了している25番ではなく、26番のデータ・ユニットの長さを格納する。
また、第2の構成例として、送信を試みる複数のデータ・ユニットの長さの合計をLength情報として掲載する場合もある。この場合、RTS Sequenceフィールドには複数のデータ・ユニットのうちの先頭データのシーケンス番号を記載する。
また、第3の構成例として、Lengthフィールドには、送信を試みるデータの長さを時間で表現して記載する場合もある。この場合、Lengthフィールドには、送信を試みるデータあるいは複数のデータ群を送信する場合にチャネルを占有する時間長が、幾つかのデータ・レートで送信した場合の各ケースについて複数記載される。ここでは、例えばN個のLength情報が定義されている場合を想定している(N種類のデータ・レートで送信すると仮定した各場合のデータ送信に要する時間長が記載される)。
また、第4の構成例として、主に送信するデータ・ユニットの長さが固定値である場合には、上記のLengthフィールドの代わりにNumber Of Data Unitフィールドが定義される場合もある。この場合、当該フィールドには、送信を試みるデータ・ユニットの個数が記載される。
RTS SMHにおいては、上記の他、Directed Addressフィールドが定義される場合もある。これは、コモンMACヘッダの宛先がブロードキャストあるいはマルチキャストでありながら、誰か特定の局に宛ててRTS情報を送信したい場合に使われる。Directed Addressフィールドには、RTSの宛先アドレスが記載される。
CTS SMHのフィールド:
表6には、CTS情報を送信する際に用いられるCTS SMHフィールドの構成要素について説明している。下記の通り、CTS SMHは、CTS Attribute、RATE、Stored Sequenceの各フィールドから構成される。
CTS Attributeフィールドには、当該CTS情報の属性を示す識別子が記載される。
Data Flow部には、受信を試みようとしているデータのデータ・フローが格納されている。
RATEフィールドには、CTSの送信に呼応して送信されてくるデータの伝送レートを指示する値が格納される。
Stored Sequenceフィールドには、データの受信側(CTSの送信側)がSequence番号の何番までのデータ長情報を保持したかを示すSequence番号が格納される。なお、当該通信局がデータ長情報を保持する機能を持ち合わせない場合、RTS Sequenceフィールドで示されたSequence番号の1つ前の番号が格納されるか、当該通信局がデータ長情報を保持する機能を持ち合わせない旨を示すNULLを示す値が格納される。
なお、上記では、説明の便宜上、CMHとSMHがPSDU内に独立して存在し、各種類のSMHが独立して複数付加されていく例を示したが、同様の情報構成要素を含んだフォーマットであれば本発明の目的の一側面は達成されるため、本発明は上記のフォーマットに限定するものではない。
例えば、MACヘッダ相当の情報要素は、上記で説明したようにパケットの先頭部分にまとめて配置されることが望ましいが、パケットを構成するデータ・ユニットの後あるいは間に配置される場合もある。特にDATA SMHは、当該SMHの対応するデータ・ユニットの直前に配置される利用例もある。
例えば、RA、TA、Durationの各フィールドはCMHに配置する場合を例示したが、これらのフィールドはPLCP部に配置される利用例もある。Durationフィールドには、メディア予約時間情報が格納される。但し、Durationフィールドは、必ずしもマイクロ秒単位で長さ情報が記載されているフィールドで構成されている必要はなく、宛先以外の通信局に所望の時間帯にわたり送信不許可状態を指示することができる情報あるいは情報群で構成されている利用例もある。以降では説明の便宜上、Durationフィールドが存在している場合を例示して説明を行なう。
C.伝送レート決定プロセス
本発明に係る無線通信システムにおいて伝送レートを決定するためのプロセスについて、図6を参照しながら説明する。
本発明では、RTS/CTS手順を併用してCSMAに基づくアクセス制御が行なわれる。このような場合、CTS情報はRTS情報の受信に呼応して送信され、データはCTSの受信に呼応して送信される。CTSの送信局は、RTSの受信信号のクオリティを測定することにより受信可能な伝送レートを決定し、CTSの宛先局に通達する。CTSの宛先局は、CTS情報に呼応してデータの送信を行なうが、このデータの伝送レートとしてCTSのRATEフィールドで示された伝送レートを適用する。伝送レートを決定するプロセスは下記の通りである。
ステップ1)RTSの受信信号を基に受信SINRなどのクオリティを測定する。
ステップ2)RTSのRate Strategyフィールドで示された値に従って測定したクオリティ、あるいは伝送レート・クラスをバイアスし、伝送レートを決定する。例えばIEEE802.11aであれば、規定される6、9、12、18、24、36、54Mbpsの8種類の伝送レート・モードの中から決定される。
ここで、測定したクオリティをバイアスする場合は、Rate Strategyで示された値に応じて測定した受信SINR値を±数dBレベルでバイアスし、バイアスした受信SINR値を基にルックアップ・テーブルなどで受信可能な伝送レート・クラスを決定する。
また、伝送レート・クラスをバイアスする場合は、測定した受信SINR値に基づきルックアップ・テーブルなどで受信可能な伝送レート・クラスを抽出し、抽出された伝送レート・クラスをRate Strategyで示された値に応じてシフトさせる。
なお、このシフト処理は、物理レイヤの特性に応じて、例えば高レート・クラスを選択する場合にのみ適用する場合があったり、低レート・クラスを選択する場合にのみ適用する場合があったりもする。
CTSを受信したデータの送信局(RTSの送信局)は、RATEフィールドで指定された伝送レート・クラスをCTS送信元局宛てのデフォルト伝送レート・クラスとして保持し、次回のRTSやデータの送信時に参照できるようにしておく。なお、RTSを送信する場合には、このデフォルト伝送レート・クラスを参照し、この伝送レート・クラスか、あるいは1つ低い(一段階雑音に耐性のある)伝送レート・クラスを適用する。また、RTS/CTSを併用せずにデータを送信する場合には、CTSで通知された伝送レート・クラスではなくデフォルト伝送レート・クラスを適用する。
RTSの送信局は、データ・ユニットを送信するに際し、宛先毎に、初めてデータ・ユニットを送信する回数と再送としてデータ・ユニットを送信する回数を、それぞれカウントしている。これらの値を参照することにより、宛先毎の伝送エラー・レートを抽出することが可能である。この宛先毎の伝送エラー・レートを基に、RTS情報のRate Strategyを決定することができる。具体的には、伝送エラー・レートの下限閾値と上限閾値を定義しておき、伝送エラー・レートが上限閾値を超えた場合にはRateStrategy用の値を消極的な方向へとデクリメントして保持し、逆に伝送エラー・レートが下限閾値を超えた場合にはRate Strategy用の値を積極的な方向へとインクリメントして保持する。RTSを送信する際には、この保持されたRate StrategyをRTSのRate Strategyフィールドに転記する。なお、保持しているRate Strategy用の値を変更した場合には、伝送エラー・レートを得るためのカウント値はリセットすることが肝要である。
以上の手順により、伝送レートはRTSの受信信号クオリティにより決定されるが、送信側が監視するエラー・レート(ビット・エラー・レート(BER)又はパケット・エラー・レート(PER))に応じて適応される伝送レートがバイアスされるという2重ループによる制御が可能となる。
付言すれば、上記とは異なる手法として、伝送エラー・レートをデータ(RTS)送信側ではなく受信側で測定するという実装も考えられる。この場合,上記のエラー・レートの監視は受信側で行われ,同様にエラー・レートに応じて適用される伝送レートがバイアスされる2重ループによる制御が行われる。しかし,この手法では、RTS/CTS手順を伴っていないと一定の危険を伴う。何故ならば、エラーが多発する環境においては、受信側はパケットが送信されていることすら認識できないためである。RTS/CTSを併用している場合は,CTSを送信した後に受信するパケットを母数としエラー・レートの計算を行う。
Rate Strategyの本質は送信側の都合によるレート選択決定のための補助情報を伝達する方法論を提供することにある。このように受信側が伝送エラー・レートを測定している場合などには、送信側はRateStrategyの値をエラー・レート以外の要因に起因して設定するようにしても構わない。例えば、RTSパケットとデータ・パケットにおける送信電力差に起因してRate Strategyの値を設定する、あるいは、伝送レートと送信電力の因果関係に起因してRate Strategyの値を設定することができる(例えば、本出願人に既に譲渡されている特願2003−6973号明細書を参照のこと)。
D.基本的なCSMA手順
本発明に係る無線通信システムでは、RTS/CTS手順を併用してCSMAに基づくアクセス制御が行なわれる。図7には、本発明におけるRTS/CTS手順の動作シーケンス例を示している。同図では、STA2、STA0、STA1、STA3という4台の通信局が存在し、図中で隣り合う通信局同士のみが電波の到達範囲に位置しているという通信環境を想定している。ここで、STA0がSTA1に宛てて情報を送信したいとする。
STA0は、例えば一般的なCSMA手順に従いメディアが一定期間(時刻T0から時刻T1まで)クリアである旨を確認した後、時刻T1からRTS情報を含むパケットをSTA1に宛てて送信する。
ここで、RTS情報を含むパケットのDurationフィールドには、RTS情報の受信に起因して送信されるCTS情報を含むパケットの受信が完了するまでの時間(すなわちT2からT4までの時間)が記載される。このとき、Durationフィールドに記載する時間長は、時刻T4までの時間に若干のマージンをもたせて時刻T5辺りまでの時間を記載しても構わない。または、時刻T4のやや手前までの時間を記載しても構わない。
また、STA0は、STA1に送信を試みようとしているデータ・ユニットの長さ情報のリストを保持しており、これを「送信データ・ユニット候補リスト」と呼ぶ。
RTS SMHが上述した第1の構成例を採用している場合、RTS SMH内のLengthフィールドには、送信データ・ユニット候補リストのデータ・ユニットの長さ(ビット数やバイト数)をN個分データ長情報として記載する。なお、Lengthフィールドの個数Nが送信したいデータ・ユニットの個数を下回る場合には、後述する第2の構成例と同様に、いくつかのデータ・ユニットの長さを加算した結果をLengthフィールドに記載する場合もある。
また、RTS SMHが第2の構成例を採用している場合、RTS SMH内のLengthフィールドには、送信データ・ユニット候補リスト中の1以上のデータ・ユニットの長さの合計をデータ長情報として記載する。
また、RTS SMHが第3の構成例を採用している場合、RTS SMH内のLengthフィールドには、送信データ・ユニット候補リスト中のデータ・ユニットを送信する場合に要する時間長をデータ長情報として記載する。時間長は伝送するデータ・レートにより変動するため、幾つかのデータ・レートで伝送した場合の時間長を複数掲載することもある。
また、RTS SMHが第4の構成例を採用している場合、RTS SMH内の(Lengthフィールドの代わりに定義される)Number Of Data Unitフィールドには、送信データ・ユニット候補リスト中のデータ・ユニット数をデータ長情報として記載する。
このRTS情報を含むパケットは、STA0の近隣に位置するSTA2でも受信される。STA2は、PLCPヘッダ内のRATEフィールドから得られるPSDU部の伝送レート情報に基づきコモンMACヘッダの宛先を確認し、自局宛てであることが確認できないと、PLCPヘッダ内のRATEフィールドとLENGTHフィールドから時刻T2を認識し、さらにコモンMACヘッダのDurationフィールドを参照することにより時刻T4を認識し、T4までの時間、NAVを立てて、送信不許可とする。
このRTS情報を含むパケットは、宛先であるSTA1でも受信される。STA1は、PLCPヘッダ内のRATEフィールドから得られるPSDU部の伝送レート情報に基づきコモンMACヘッダの宛先を確認し、自局宛てであることを認識する。さらにSTA1は、サブMACヘッダの復号に成功すると、STA0から自局宛てにデータ・パケットの送信要求があることを認識し、受信したRTS情報を含むパケットから得た情報に基づき伝送レート決定する。
さらに、STA1は、RTS SMHのLengthフィールド(あるいはNumber Of Data Unitフィールド)を参照することにより、受信するデータ長情報を得る。
RTS SMHが上述した第1の構成例を採用している場合、STA1は受信するデータ・ユニットの長さ情報のリストを得る。このリストを「受信データ・ユニット候補リスト」と呼ぶ。このリストを順次参照することにより、RTS SMHのMax Durationにて指示された期間を超えない限りで、決定した伝送レートで受信を行なった場合に受信可能なデータ・ユニット数と受信期間(データ・パケットの送信が終了する時刻であるT6までの時間)をカウントする。
また、RTS SMHが第2の構成例を採用している場合、STA1は受信する1以上のデータ・ユニットの合計長を得る。STA1は、RTS SMHのMax Durationにて指示された期間を超えない限りで、決定した伝送レートで受信を行なった場合に指示された長さのデータ・ユニット群が受信可能であるかを加味しつつ受信期間をカウントする。
また、RTS SMHが第3の構成例を採用している場合、STA1は受信するデータ・パケットの時間長候補を得る。STA1は、決定した伝送レートに対応する受信期間(時間長)をLengthフィールドの中から一つ抽出する。
また、RTS SMHが第4の構成例を採用している場合、STA1はNumber Of Data Unitフィールドから受信するデータ・ユニットの個数情報を得る。データ・ユニットの長さが一意に固定されている場合には、この情報は、「受信データ・ユニット候補リスト」と同等であり、データ・ユニットの長さと個数を参照することにより、RTS SMHのMax Durationにて指示された期間を超えない限りで、決定した伝送レートで受信を行なった場合に受信可能なデータ・ユニット数と受信期間をカウントする。
このとき、STA1は、自局の都合で受信期間を制限したい場合には、Max Durationにて指示された期間と併せてこの受信期間を受信期間の閾値として設定することもある。さらに、STA1は、CTS情報を含むパケットの送信を行ない、当該パケットのDurationフィールドには、ここで算出された受信期間で得られた値を転記し、RATEフィールドには上記決定した伝送レート・クラスを転記する。
CTS情報を含むパケット自身は、多くの場合において最も雑音特性に優れている伝送レートにて伝送を行ない、CTS情報を含むパケットが復号できない可能性をできるだけ小さくしておく。
一方、STA1がRTS情報を含むパケットの復号に失敗した場合は、予期される時刻T4までにCTS情報を含むパケットが返送されないため、STA0は、再度ランダム・バックオフの手順に従って、RTS情報を含むパケットの再送を試みる。このとき、STA2も時刻T4にはNAVを下ろし、通常の送信可能状態へと変遷し、CTS情報を含むパケットが返送されなかった被害は最小限に収まる。
STA1がRTS情報を含むパケットの復号に成功した場合、上記の手順により、予定通り時刻T4にCTS情報を含むパケットがSTA0に返送されてくる。
このCTS情報を含むパケットは、STA1の近隣に位置するSTA3でも受信される。STA3は、CTS情報を含むパケットのDurationフィールドなどを復号し、さらにRAアドレスを参照し自局宛てであることが確認できないと、Durationフィールドなどで示された時間にわたりNAVを立てて送信をストップさせる。結果として、STA3は、Durationフィールドで示された時刻である時刻T6まで送信不許可状態となる。
このCTS情報を含むパケットは宛先であるSTA0でも受信される。STA0は、PSDUを復号することにより、STA1の受信準備ができており、且つ、RATEフィールドで示された伝送レートでDurationにより指示された期間内での受信を希望していることを認識する。STA0は、指示された伝送レートにて指示された期間で送信できるだけのデータ・ユニットを送信データ・ユニット候補リストの先頭から順番に呼び出し、送信データ・パケットを作成し送信する。
データ・パケット送信が時刻T6で終了し、STA1の近隣局であるSTA3はT6まで送信を控えているため、STA1の受信を妨げることはない。
E.CSMA手順の応用
図8〜図10、並びに図21〜図23には、本発明における送受信手順の幾つかの応用例を示している。ここでは、図7を用いて説明したCSMA手順を基本としながら、本発明の通信方法についての応用例について詳解する。
E−1.第1の応用例
図8には、本発明の無線通信システムにおける送受信手順の第1の応用例を示している。同図では、STA0からSTA1に宛てて、2つのデータ・ユニットを送信する場合を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されており、場合により遅延ACK(Del−ACK)又は即時ACK(Im−ACK)を指示する。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。そして、T1においてバックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。
STA1は、自局宛のRTSを受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。
STA0は、自局宛のCTSを受信すると、時刻T3でデータ・パケットを送信する。このとき、データ・パケットのACK Type部には遅延ACK(Del−ACK)にてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがまだ蓄積されていることを示す情報を記載する。このデータ・パケットはSTA1に誤りなく受信される。
STA0は、蓄積されているSTA1に宛てのデータ・ユニットをさらに送信すべく、ランダム時間の遅延の後にRTS情報を含むパケットを時刻T5で送信する。この時点で、STA0は先に送信したデータ・ユニットのACKをまだ受信していないため、先に送信したデータ・ユニットを含む形で送信データ・ユニット候補リストを作成し、これに基づきRTS SMHを構成する。
これを受信したSTA1は、時刻T6においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。このとき、RTS SMHのRTS Sequence並びにRTS Received MAPを参照することにより、STA0が先に受信したデータ・ユニットの受信確認を認識していないことを認識し、CTS情報を含むパケットにACK情報を含ませることを決断する。又は、STA1は、STA0宛ての未送信のACKを保持していることを要因としてACK情報を含ませることを決定する。また、STA1は、受信データ・ユニット候補リストから既に受信済みのパケットを削除し、受信データ・ユニット候補リストを更新した上でCTS情報を作成する。
結果として、STA1は、時刻T6において、CTS情報並びにACK情報を含むパケット(すなわちACKを多重化したCTS)を返送する。ACK情報には、受信したRTS情報が指定するデータ・フローに対応したACK情報を掲載する。
STA0は、CTS情報並びにACK情報を含むパケットを受信すると、ACK情報を基に、保持していた送信データ・ユニット候補リストからSTA1が既に受信済みであるデータ・ユニットを削除し、新規の送信データ・ユニット候補リストを作成し、この新規リストを基に送信データ・ユニットを決定する。このようにして作成されたデータ・パケットを時刻T7で送信する。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More Bit部にはこれ以上の送信すべきデータ・ユニットが存在していないことを示す情報を記載する。
STA1は、データ・パケットを受信すると、DATA SMHのACK Type部からACKを即時に送ってほしい旨を認識し、時刻T8において当該データ・フローに対応する即時ACK(Im−ACK)パケットを返送する。
なお、この応用例において、各パケットのDurationフィールドは、図8において弓状の矢印で記されている時刻までを指すようにそれぞれ設定される。
E−2.第2の応用例
図21には、本発明の無線通信システムにおける送受信手順の第2の応用例を示している。同図では、STA0からSTA1に宛てて、2つのデータ・ユニットを送信する場合を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されており、常に即時ACK(Im−ACK)が適用される場合を想定している。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。そして、T1においてバックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。
STA1は、自局宛のRTSを受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。
STA0は、時刻T2で自局宛のCTSを受信すると、時刻T3でデータ・パケットを送信する。このとき、データ・パケットのACK Type部には即時ACK(Im−ACK)にてACKを返送してほしい旨の情報を記載する。
ところが、STA1は、データ・パケットの受信に際してエラーを発見し、このデータを正確に抽出することができない。したがって、本来ならばACKを返送すべきところであるが、時刻T4においてACKの送信を行なわない(図中のACKは送信されていない)。
STA0は、期待していた時刻にACKが受信されないため、先のデータにエラーが生じたものと判断し、未だ蓄積されているSTA1宛てのデータ・ユニットを再送すべく、ランダム時間の遅延の後にRTS情報を含むパケットを時刻T5で送信する。このとき、STA0は先に送信したデータのACKを受信していないことから、RTS SMHのACK Request部にてACK情報を付加する要求する旨を掲載しておく(すなわち、ACK要求を多重化したRTSを送信する)。
これを受信したSTA1は、時刻T6においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。このとき、RTS SMHのACK Request部を参照することにより、STA0がACK情報の送信を要求していることを認識し、CTS情報を含むパケットにACK情報を含ませることを決断する。また、STA1は、受信データ・ユニット候補リストから既に受信済みのパケットを削除し、受信データ・ユニット候補リストを更新した上でCTS情報を作成する。
結果として、STA1は、時刻T6において、CTS情報並びにACK情報を含むパケット(すなわち、ACKを多重化したCTS)を返送する。ACK情報には、受信したRTS情報が指定するデータ・フローに対応したACK情報を掲載する。
STA0は、CTS情報並びにACK情報を含むパケットを受信すると、ACK情報を基に、保持していた送信データ・ユニット候補リストからSTA1が既に受信済みであるデータ・ユニットを削除し、新規の送信データ・ユニット候補リストを作成し、この新規リストを基に送信データ・ユニットを決定する(この例においては時刻T3で送信したデータ・ユニットを再送することになる)。このようにして作成されたデータ・パケットを時刻T7で送信する。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載する。
STA1は、データ・パケットを受信すると、DATA SMHのACK Type部からACKを即時に送ってほしい旨を認識し、時刻T8において当該データ・フローに対応する即時ACK(Im−ACK)パケットを返送する。
なお、この応用例において、各パケットのDurationフィールドは、図8において弓状の矢印で記されている時刻までを指すようにそれぞれ設定される。
E−3.第3の応用例
図22には、本発明の無線通信システムにおける送受信手順の第3の応用例を示している。同図では、STA0からSTA1に宛てて、1つのデータ・ユニットを送信する場合を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されており、常に即時ACK(Im−ACK)が適用される場合を想定している。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。そして、T1においてバックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。
STA1は、自局宛のRTSを受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。
STA0は、時刻T2で自局宛てのCTSを受信すると、時刻T3でデータ・パケットを送信する。このとき、データ・パケットのACK Type部には即時ACK(Im−ACK)にてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがこれ以上蓄積されていないことを示す情報を記載する。このデータ・パケットはSTA1に誤りなく受信される。
STA1は、受信したデータに関するACKを返送する。ところが、STA0は、ACKの受信に際してエラーを発見し、このデータを正確に抽出することができない。STA0は、期待していた時刻にACKが受信されないため、先のデータにエラーが生じたものと判断し、未だ蓄積されているSTA1宛てのデータ・ユニットを再送すべく、ランダム時間の遅延の後に、データ再送のためのRTS情報を含むパケットを時刻T5で送信する。このとき、STA0は先に送信したデータのACKを受信していないことから,RTS SMHのACK Request部にてACK情報を付加する要求する旨を掲載しておく。すなわち、ACK要求を多重化したRTSを送信する。
これを受信したSTA1は、時刻T6においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。このとき、RTS SMHのACK Request部を参照することにより、STA0がACK情報の送信を要求していることを認識し、CTS情報を含むパケットにACK情報を含ませることを決断する。また、STA1は、受信データ・ユニット候補リストから既に受信済みのパケットを削除した結果、既にSTA0が送信を希望しているデータはすべて受信済みであることを認識して、ACKのみを返し、CTS情報の返送は行なわない。
結果として、STA1は、時刻T6において、ACK情報のみを含むパケットを返送する。ACK情報には、受信したRTS情報が指定するデータ・フローに対応したACK情報を掲載する。
STA0は、ACK情報を含むパケットを受信すると、STA1宛てに保持していた送信データ・ユニットをすべて送信し終えたものと判断し、トランザクションを終了する。
なお、この応用例において、各パケットのDurationフィールドは、図8において弓状の矢印で記されている時刻までを指すようにそれぞれ設定される。
E−4.第4の応用例
図23には、本発明の無線通信システムにおける送受信手順の第4の応用例を示している。同図では、STA0からSTA1に宛てて、2つのデータ・ユニットを送信する場合を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されており、複数のデータ・パケットを連続的に送信することが許されている場合を想定している。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。そして、T1においてバックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。
STA1は、自局宛てのRTSを受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。
STA0は、自局宛てのCTSを受信すると、時刻T3でデータ・パケットを送信する。このとき、データ・パケットのACK Type部には遅延ACK(Del−ACK)にてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがまだ蓄積されていることを示す情報を記載する。このデータ・パケットはSTA1に誤りなく受信される。
さらに、STA0は、STA0が連続して時刻T4からデータ・パケットを送信した場合に、時刻T2でSTA1が送信したCTSのDurationフィールドで示された期間内に送信を終了できるか否かを判定する。図示した例においては、STA0は、次のデータ・パケットを送信してもCTSのDurationフィールドで示された期間でデータの送信が完了できると判断し、蓄積されているSTA1に宛てのデータ・ユニットを時刻T4でさらに送信する。このとき、データ・パケットのACK Type部には即時ACK(Im−ACK)にてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがこれ以上蓄積されていないことを示す情報を記載する。このデータ・パケットはSTA1に誤りなく受信される。
STA1は、データ・パケットを受信すると、DATA SMHのACK Type部からACKを即時に送ってほしい旨を認識し、時刻T5において当該データ・フローに対応する即時ACK(Im−ACK)パケットを返送する。
なお、この応用例において、各パケットのDurationフィールドは、図8において弓状の矢印で記されている時刻までを指すようにそれぞれ設定されている。
E−5.第5の応用例
図9には、本発明の無線通信システムにおける送受信手順の第5の応用例を示している。同図でも、STA0からSTA1に宛てて、2つのデータ・ユニットを送信する場合を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されており,両データ・ユニットとも即時ACKを指示する場合で、且つ送信局に連続したパケットの送信が許されている。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。T1において、バックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。
STA1は、自局宛のRTSを受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。
STA0は、自局宛のCTSを受信すると、時刻T3でデータ・パケットを送信する。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがまだ蓄積されていることを示す情報を記載する。さらに、もう1つのデータ・ユニットを送信するためのRTS情報を付加する。すなわち、RTSを多重化したデータ・パケットを送信する。このデータ・パケットはSTA1にて誤りなく受信される。
STA1は、データ・パケットにRTS情報が含まれていることを認識すると、CTS情報が含まれているパケットの送信を試みる。このとき、RTS Sequence並びにRTS Received MAPを参照することにより、STA0が先に受信したデータ・ユニットの受信確認を認識していないことを認識すると、CTS情報を含むパケットにACK情報を含ませることを決定する。また、RTS SMHに掲載されている情報に基づき受信データ・ユニット候補リストを作成するが、受信データ・ユニット候補リストから既に受信済みのパケットを削除し、受信データ・ユニット候補リストを更新した上でCTS情報を作成する。また、ACK情報には、受信したRTS情報が指定するデータ・フローに対応したACK情報を掲載する。このようにして、STA1は,時刻T4にて、ACK情報とCTS情報を含むパケット(すなわちACKを多重化したCTSパケット)を返送する。
STA0は、ACK情報とCTS情報を含むパケットを受信すると、CTS情報に基づきデータ・ユニットの送信を試みる。STA0は、ACK情報を基に、保持していた送信データ・ユニット候補リストからSTA1が既に受信済みであるデータ・ユニットを削除し、新規の送信データ・ユニット候補リストを作成し、この新規リストを基に送信データ・ユニットを決定する。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More Bit部にはこれ以上の送信すべきデータ・ユニットが存在していないことを示す情報を記載する。STA0は、このようにして作成されたデータ・パケットを時刻T5で送信する。
STA1は、ACK情報がマルチプレクスされたデータ・パケットを受信すると、ACKを即時に送ってほしい旨を認識し、時刻T6において対応するACK情報パケットを返送する。
なお、この応用例において,各パケットのDurationフィールドは、図9において弓状の矢印で記されている時刻までを指すようそれぞれ設定される。時刻T6で送信されるパケットのDuration値はNULLを示すゼロが格納されている。
E−6.第6の応用例
図10には、本発明の無線通信システムにおける送受信手順の第6の応用例を示している。同図では、STA0からSTA1に宛てて、2つのデータ・ユニットを送信すると同時に、STA1からSTA0に宛てて2つのデータ・ユニットを送信するという双方向通信を例にとっている。この例では、パケット当たりに送信可能なデータ・ユニットが1つに制限されているが、CTSにRTSをマルチプレクスすることが許されている。
STA0は、時刻T0において、データ・ユニットの送信手順を起動し、CSMAの手順に従い送信権利を獲得するためにバックオフ・カウントを開始する。T1において、バックオフ・カウントが完了し、この間メディアがクリアであることを確認したので、RTS情報を含むパケットを送信する。なお、RTS SMHのRTS/CTS Mux部には、CTSにRTSをマルチプレクスしてもよい旨の情報がセットされる。
STA1は、RTS情報を受信すると、時刻T2においてRTS SMHに掲載されている情報に基づきCTS情報を含むパケットを返送する。このとき、RTS SMHのRTS/CTS Mux部からRTSをCTSにマルチプレクスしてもよいことを認識し、さらにSTA0に宛てたデータ・ユニットを保持していることから、STA0宛にこのデータ・ユニットを送信すべくRTS情報を作成し、結果として、CTS情報とRTS情報を含むパケット(すなわちRTSを多重化したCTSパケット)が送信される。
STA0は、CTS情報とRTS情報を含むパケットを受信すると、CTS情報に基づき時刻T3でデータ・ユニットの送信を試みる。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More Bit部には送信データ・ユニットがまだ蓄積されていることを示す情報を記載する。さらに、もう1つのデータ・ユニットを送信するためのRTS情報を付加する。また、受信パケットにはRTS情報も含まれていることから、これに呼応してCTS情報を作成し、CTS情報をも付加する。
結果として、STA0からは、データとRTS情報とCTS情報がマルチプレクスされたパケット(すなわち、STA1からのRTSに対するCTSと、後続のデータ・ユニットを送信するためのRTSが多重化されたデータ・パケット)が、時刻T3で送信される。このデータ・パケットはSTA1にて誤りなく受信される。
STA1は、データとRTS情報とCTS情報がマルチプレクスされたパケットを受信し、このパケットにRTS情報が含まれていることを認識すると、CTS情報が含まれているパケットを送信しようとする。このとき、RTS Sequence並びにRTS Received MAPを参照することにより、STA0が先に受信したデータ・ユニットの受信確認を認識していないことを認識し、CTS情報を含むパケットにACK情報を含ませることを決断する。また、RTS SMHに掲載されている情報に基づき受信データ・ユニット候補リストを作成するが、受信データ・ユニット候補リストから既に受信済みのパケットを削除し、受信データ・ユニット候補リストを更新した上でCTS情報を作成する。また、ACK情報には、受信したRTS情報が指定するデータ・フローに対応したACK情報を掲載する。さらに、STA1は、このパケットにCTS情報が含まれていることを認識すると、CTS情報に基づいてデータ・ユニットをも送信する。このDATA SMHのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More
Bit部には送信データ・ユニットがまだ蓄積されていることを示す情報を記載する。さらに、STA1は、もう1つのデータ・ユニットを送信するためのRTS情報をも付加する。
このようにして、STA1は、時刻T4 にて、ACK情報とCTS情報とデータ・ユニットとRTS情報を含むパケットを返送する。すなわち、STA0からのCTS受信に対するデータ・パケットと、STA0からのRTSに対するCTSと、後続のデータ・ユニットを送信するためのRTSと、STA0からのデータ・ユニット受信に対するACKとを多重化して送信する。
STA0は、ACK情報とCTS情報とデータ・ユニットとRTS情報を含むパケットを受信すると、CTS情報に基づきデータ・ユニットの送信を試みる。STA0は、受信したパケットのACK情報を基に、保持していた送信データ・ユニット候補リストからSTA1が既に受信済みであるデータ・ユニットを削除し、新規の送信データ・ユニット候補リストを作成し、この新規リストを基に送信データ・ユニットを決定する。このとき、データ・パケットのACK Type部には即時ACKにてACKを返送してほしい旨の情報を記載し、More Bit部にはこれ以上の送信すべきデータ・ユニットが存在していないことを示す情報を記載する。さらに、STA0は、受信したパケットから新規データ・ユニットを誤りなく抽出したため、ACK情報を返送することを決定する。また、受信したパケットにはRTS情報も含まれていたため、これに対応するCTS情報を作成し、CTS情報を送信することも決定する。CTS情報の作成手順は,上述と同様の手順にて行なわれるので、ここでは説明を省略する。
このようにして、STA0は、時刻T5にて、データ・ユニットとACK情報とCTS情報を含むパケットを返送する。すなわち、STA1からのCTSに対するデータ・ユニットと、STA1からのRTSに対するCTSと、STA1から受信したデータ・ユニットに対するACKとを多重化して送信する。
STA1は、データ・ユニットとACK情報とCTS情報を含むパケットを受信すると、データ・ユニットを抽出し、これに対応するACK情報の送信を決定する。また、このパケットにCTS情報とACK情報が含まれていることを認識すると、ACK情報に基づき送信データ・ユニット候補リストを更新した上で、CTS情報に基づいてデータ・ユニットをも送信することを決定する。このようにして、STA1は、時刻T6にて、ACK情報とデータ・ユニットを含むパケット(すなわち、STA0から受信したデータ・ユニットACKと多重化したデータ・パケット)を返送する。
STA1は、ACK情報とデータ・ユニットを含むパケットを受信すると、DATA SMHのACK Type部を参照することによりACKを即時に送ってほしい旨を認識し、時刻T7において対応するACK情報パケットを返送する。
なお、上記の例において、各パケットのDurationフィールドは、図10において弓状の矢印で記されている時刻までを指すようそれぞれ設定される。データ長はCTS情報作成時に確定させているため、各Duration値は設定可能である。
返送されてくるパケットにRTS情報やACK情報がマルチプレクスされるかは不明である場合もあるため、Durationをきっちり指定できない場合も存在する。このような場合に備えて、Duration値はマージンを含めて長めに設定されることもある。
また、Duration値はRTS情報やACK情報がマルチプレクスされないものとして設定し、実際のパケットがこれよりも若干長い期間送信されることもあるが、これらの情報長はそれほど大きくないため、大きな損失にはつながらない。時刻T8で送信されるパケットのDuration値はNULLを示すゼロが格納されている。
上述した各実施形態E−1〜E−6では、RTS SMHのRTS/CTS Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットするか否かの判断を行なう。この判断は、これまでのRTSの送信局とその宛先局の間での通信履歴や、当該RTSの宛先局から過去に受信したパケットに基づいて行なうこともできる。RTSの宛先局が自局に宛てて送信したいデータを保持しているか否かに応じて制御が行なわれる場合についての幾つかの例を、図を参照しながら以下に説明する。
図24に示す例では、STA1がRTS(P0)を送信し、STA0がCTS(P1)を返信し、STA1がDATA(P2)を送信し、STA0がACK(P3)を返信している。
ここで、DATAの含まれるパケットP2のDATA SMHのMore Bit部には、STA1がSTA0宛てのデータをまだ保持している旨が記載されているものとする。
STA0は、直近にSTA1から受信したデータのMoreBit部の情報を保持しておくことにより、STA1が自局に宛てて送信したいデータを保持していることを認識することができる。
STA0は、STA1宛てにRTSを送信する際に、STA1が自局宛てのデータを保持していることを認識している場合には、RTS SMHのRTS/CTS
Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットする。
図24では、このRTSがP4として送信されている場合を示している。これに呼応して、STA1はCTSと自局のデータ送信に関わるRTSのSMHを含むパケットすなわち、RTSにCTSを多重化したパケット(P5)を返送する。そして、STA0は、受信したCTS SMHに呼応したデータとRTS
SMHに呼応したCTS SMHを含むパケット、すなわちデータとCTSを多重化したパケット(P6)を送信する。続いて、STA1は、受信したデータに呼応したACK SMHとCTS SMHに呼応したデータを含むパケット、すなわちデータとACKを多重化したパケット(P7)を送信する。また、STA0は受信したデータに呼応したACK SMHを含むパケット(P8)を送信する。
また、図25には、図24に示した例と同様、STA1がRTS(P0)を送信し、STA0がCTS(P1)を返信し、STA1がDATA(P2)を送信し、STA0がACK(P3)を返信している。
ここで、DATAの含まれるパケットP2のDATA SMHのMore Bit部には、STA1がSTA0宛てのデータをまだ保持している旨が記載されているものとする。
STA0は、直近にSTA1から受信したデータのMore Bit部の情報を保持しておくことにより、STA1が自局に宛てて送信したいデータを保持していることを認識することができる。
このような場合、STA0は、自局からSTA1宛てのデータが存在しない場合であっても、STA1が自局宛てに送信したいデータを保持していることに起因して、RTS SMHのRTS/CTS Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットしたRTSを送信することがある。この際、RTS SMHの他フィールドには、自局は送信するデータがないこと示す情報を書き込んでおく。
このようなRTSは、データ送信先に対してデータ送信を要求する本来のRTSとは相違する、擬似的なRTSである。STA1以外の周辺局は、この擬似的なRTSを受信することにより、RTSに記載されているDurationの期間だけNAVを設定して送信を待機する。一方、STA1は、他の周辺局が送信を待機しているので、後続のデータ・ユニットを送信するためのRTSを送信し易くなる。すなわち、STA0は、擬似的なRTSを送信することにより、STA1がRTSの送信権を得易くすることができ、結果としてSTA0はSTA1からの後続のデータ・ユニットを効率的に受け取ることができるようになる。
図25では、このような擬似的なRTSがP4として送信されている場合を示している。これに呼応して、STA1は、通常のRTS/CTS手順に基づいて構造のデータ・ユニットの送信動作を行なう。すなわち、STA1は、自局のデータ送信に関わるRTSのSMHを含むパケット(P5)を返送し、STA0は受信したRTS SMHに呼応したCTS SMHを含むパケット(P6)を送信し、STA1は受信したCTS SMHに呼応したデータを含むパケット(P7)を送信し、STA0は受信したデータに呼応したACK SMHを含むパケット(P8)を送信する。
また、図26に示す例では、STA1がRTS(P0)をSTA0に宛てて送信し、STA0はこれを誤り無く受信することができる。ところが、この時間帯において、STA0は他局(図示しない、STA1の隠れ端末)から送信されたパケットのDurationフィールドを解釈することでNAVを立てておりCTSの返信ができない状態である。STA0は、RTSパケット(P0)を受信することにより、STA1が自局に宛てて送信したいデータを保持していることを認識する。
図25に示した例では、STA1がMorebitを立てることにより、STA0はSTA1が後続のデータ・ユニットを持っていることを認識するが、図26に示す例では、STA0はSTA1からのRTSを受信することによりSTA1が後続のデータ・ユニットを持っていることを認識するという点で相違する。また、後者では、STA0がNAVを設定しCTSを返せないことから、STA1は後続のデータ・ユニットを持ったまま、データ送信動作が一旦停止してしまう。
このような場合、STA0は、自局からSTA1宛てのデータが存在しない場合であっても、STA1が自局宛てに送信したいデータを保持していることに起因して、RTSSMHのRTS/CTS Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットしたRTSを送信することがある。この際、RTS
SMHの他フィールドには,自局は送信するデータがないこと示す情報を書き込んでおく。(図示していないが、自局からSTA1宛てのデータが存在している場合でも同様に、RTS SMHのRTS/CTS Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットしたRTSを送信する。)
このようなRTSは、本来のRTSとは相違する擬似的なRTSであり、STA1以外の周辺局は擬似的なRTSを受信するとNAVを設定して送信を待機する。一方、STA1は、他の周辺局が送信を待機しているので、後続のデータ・ユニットを送信するためのRTSを送信し易くなる。すなわち、STA0は、擬似的なRTSを送信することにより、STA1がRTSの送信権を得易くすることができ、結果としてSTA0はSTA1からの後続のデータ・ユニットを効率的に受け取ることができるようになる(同上)。
図26では、このRTSがP4として送信されている場合を示している。これに呼応して、STA1は、通常のRTS/CTS手順に基づいて構造のデータ・ユニットの送信動作を行なう。すなわち、STA1は、自局のデータ送信に関わるRTSのSMHを含むパケット(P5)を返送し、STA0は受信したRTS SMHに呼応したCTS SMHを含むパケット(P6)を送信し、STA1は受信したCTS SMHに呼応したデータを含むパケット(P7)を送信し、STA0は受信したデータに呼応したACK SMHを含むパケット(P8)を送信する。
なお、上記とは異なる利用例として、常に、RTS SMHのRTS/CTS Mux部に「CTSにRTSをマルチプレクスしてもよい旨の情報」をセットするような場合も存在する。
F.シーケンス番号の確認応答手順
図11には、本発明で想定しているデータ・フロー0以外のデータに関する確認応答手順を示すものであり、選択的確認応答を行なう場合の各フィールドの相互作用についての一具体例を示している。また、説明の簡素化のため、Received MAPフィールドが4ビットで構成されている場合を仮定しているが、本発明はこれに限定されるものではない。
データ送信側は、送信データ・ユニット候補リストから、シーケンス番号「0」、「1」、「2」、「3」の各データ・ユニットをまず送信する。このうち「2」のデータ・ユニットにエラーが生じた状態で受信された場合を想定する。
データ受信側が返送する確認応答ACKのACK Sequenceフィールドには、「1」のデータ・ユニットまではすべて受信できた旨を示す「1」を格納する。また、「1」の次のデータ・ユニットである「2」のデータ・ユニットを基準として(MSBとして)Received MAPフィールドには、「2」はNG(0)、「3」はOK(1)、「4」はNG(0)、「5」もNG(0)であることを示す「0100」が格納される。
これを受信したデータ送信側は、「1」までは受信され、且つ「3」も受信されていることを認識し、次回のデータ送信においては,これらを送信データ・ユニット候補リストから削除し、シーケンス番号「2」、「4」、「5」、「6」のデータ・ユニットを送信する。このうち、「4」と「5」のデータ・ユニットにエラーが生じた状態で受信された場合を想定する。
データ受信側が返送する確認応答ACKのACK Sequenceフィールドには、「3」のデータ・ユニットまではすべて受信できた旨を示す「3」を格納する。また、「3」の次のデータ・ユニットである「4」のデータ・ユニットを基準として(MSBとして)Received MAPフィールドには、「4」はNG(0)、「5」もNG(0)、「6」はOK(1)、「7」はNG(0)であることを示す「0010」が格納される。
このような具合で、ACK SequenceフィールドとReceived MAPを併用することによりARQ(自動再送要求)を実行する。なお、データ送信側が選択的確認応答に対応していない場合には、ACKを受信したときに送信データ・ユニット候補リストの更新を行なう際にReceived MAPを無視する。また、データ受信側が選択的確認応答に対応していない場合には、エラーが生じたデータ・ユニット以降のデータの復号は無視してACK Sequenceフィールドと連動を図り、Received MAPにはオールゼロを挿入する。このようにすることで、選択的確認応答に対応している通信局と対応していない通信局の間で通信が行なわれる場合においても、破綻をきたすことなく通信は保持することができる。
G.RTS/CTS手順を併用した場合のシーケンス番号の確認応答手順
図12には、選択的確認応答を行なう場合の各フィールドの相互作用についての他の具体例として、RTS/CTSが併用された場合について示している。ここでは、シーケンス番号とReceived MAPに関連する部分にのみ注目して説明を行なう目的から、他フィールドについては言及しないが、本来は他で説明されている手順に従って同時に他フィールドを用いた手順も動作する。また、説明の簡素化のため、Received MAPフィールドが4ビットで構成されている場合を仮定しているが、本発明はこれに限定されるものではない。なお、ここではRTS SMHとして第1の構成例あるいは第4の構成例が採用されている場合を想定している。
データ送信側は、送信データ・ユニット候補リストに、シーケンス番号「3」、「4」、「5」、「6」、…のデータ・ユニットが登録されていることを示すRTSを送信する。このとき、RTS SMHのRTS Sequenceには先頭データ・ユニットを示す「3」が、またRTS Received MAPには「4」から「7」までのすべてのデータ・ユニットが送信候補であることを示すために「0000」が、それぞれ格納されている。
データ受信側では、RTSで示されたすべてのデータ・ユニットをまだ受信していないことから、ACKの返送は行なわずに、CTSを返送してデータ・ユニットの受信を待ち受ける。
このうち「4」と「5」のデータ・ユニットにエラーが生じた状態で受信された場合を想定する。また、このデータは遅延ACKを要求している場合を想定する。遅延ACKのため、受信側はすぐにはACKを返送しない。
データ送信側は、さらにデータの送信を行なう目的で、再度、送信データ・ユニット候補リストに、「3」、「4」、「5」、「6」、…のデータ・ユニットが登録されていることを示すRTSを送信する。先ほどと同様、RTS SMHのRTS Sequenceには先頭データ・ユニットを示す「3」が、またRTS Received MAPには「4」から「7」までのすべてのデータ・ユニットが送信候補であることを示すために「0000」が、それぞれ格納されている。
データ受信側では、RTSで示されたデータ・ユニットのうち幾つかを既に受信していることから、CTSの返送に際してACK情報の付加も行なう。ここで、ACK SMHのACK SEQUENCEフィールドには、「3」のデータ・ユニットまではすべて受信できた旨を示す「3」を格納する。また、「3」の次のデータ・ユニットである「4」のデータ・ユニットを基準として(MSBとして)Received MAPフィールドには、「4」はNG(0)、「5」もNG(0)、「6」はOK(1)、「7」はNG(0)であることを示す「0010」が格納される。
これを受信したデータ送信側は、「3」までは受信され、且つ「6」も受信されていることを認識し、データ送信においては、これらを送信データ・ユニット候補リストから削除し、さらにCTS情報に基づいてシーケンス番号「4」、「5」、「7」、「8」のデータ・ユニットを送信する。
このような具合で、RTS Sequenceフィールド、RTS Received MAPフィールドを用い、さらにCTS SMHとACK SMHのマルチプレクスを併用することで。破綻をきたすことなくデータの送受信を行なうことができる。
なお、データ送信側が選択的確認応答に対応していない場合には、RTS Received MAPには常にオールゼロを挿入し、ACKを受信したときに送信データ・ユニット候補リストの更新を行なう際にReceived MAPを無視すればよい。また、データ受信側が選択的確認応答に対応していない場合には、RTS Received MAPは無視すればよい。このようにすることで、選択的確認応答に対応している通信局と対応していない通信局の間で通信が行なわれる場合においても、破綻をきたすことなく通信は保持することができる。
H.CTS Stored Sequenceの利用とRTS/CTS手順を併用した場合の各フィールドの用途
図13には、遅延ACKとRTS/CTS手順が適用された場合のデータ送受信手順の一例を示している。この項では、各シーケンス番号の取り扱いと、CTS SMHのStored Sequenceフィールドの使い方に着目して説明を行なう。
ここでは、説明の簡素化のためRTS Received MAP、Received MAPフィールドはともに4ビットである場合を想定しているが、本発明の要旨はこれに限定されるものではない。また、RTS SMHのLengthフィールドは4つである場合を想定しているが、本発明の要旨はこれに限定されない。また、Durationフィールドには適当な値が示されているが、ここではDurationで示されている値の正当性は問題としない。なお、ここでもRTS SMHとして第1の構成例あるいは第4の構成例が採用されている場合を想定している。
データ送信側は、データ送信に先立ち、RTS(1)を送信する。このとき、送信データ・ユニット候補リストにシーケンス番号「3」、「4」、「5」、「6」のデータ・ユニットが登録されていることを示している(すなわち、RTSSequenceに「3」を、RTS Received MAPに「0000」を、それぞれ格納する)
。また、データ送信側の都合により、今回のデータ送信は255単位時間で終了して欲しい旨を伝える(すなわちMax Durationに「255」を格納する)。さらに、送信を予定しているデータ・ユニットの長さはそれぞれ200、20、100、80単位バイトであることを伝える(すなわち、Length0に「200」を、Length1に「20」を、Length2に「100」を、Length3に「80」を、それぞれ格納する)。さらに、このRTSに呼応して受信されるCTSの送信が終了するまでの期間を40単位時間としてDurationに書き込む。
データ受信側は、これを受信すると、CTS(1)を返送する。このとき、上述した手順に従ってデータ受信の伝送レートをレート・クラス1に決定し、その旨を伝える(すなわち、RATEに1を格納する)。また、上述した手順に従って、データ・ユニットの「3」、「4」、「5」、「6」を受信することを決定し、これを受信し終えるまでに要する期間が240単位時間であることを伝える(すなわち、Durationに「240」を格納する)。さらに、今回のトランザクションで受信することに決定したデータ・ユニットの「6」番までの長さを保持しておく。そして、「6」番までのデータ・ユニットの長さ情報を保持したことを伝える(すなわち、Stored Sequenceに「6」を格納する)。
データ送信側は、これを受信すると、Data(1)を送信する。このとき、上述した手順に従って、指定された伝送レート・クラス1においてデータ・ユニット「3」、「4」、「5」、「6」を送信可能であることを認識し、これらを伝送レート・クラス1を以って送信する。遅延ACKを指定しているため、Durationフィールドに0を格納する。また、CTSのStored Sequenceにて報告されたシーケンス番号6を保持し、次回のRTS送信時に参照可能な状態にしておく。
データ受信側では、これらのうちシーケンス番号が「3」と「6」のデータ・ユニットのみ抽出できた場合を想定するが、この時点でデータ送信側はデータ受信の成否については確認できていない。
データ送信側は、さらにデータ・ユニットの送信を行なうべく、RTS(2)を送信する。このとき、送信データ・ユニット候補リストにはシーケンス番号「3」、「4」、「5」、「6」、…の各データ・ユニットが登録されている。これに対し、先にCTS(1)を受信した際に、Stored Sequenceにて「シーケンス番号6までは長さを保持している」旨が報告されているため、送信データ・ユニット候補リストのうちシーケンス番号6番より先のデータ・ユニットに関する情報を記載する。具体的には、シーケンス番号「7」、「8」のデータ・ユニットが登録されていることと、それらの長さを伝える(すなわち、RTS Sequenceに「7」を、RTS Received MAPに「0000」を、Length0に「160」を、Length1に「120」を、Length2に「0」を、Length3に「0」を、それぞれ格納する)。Length2とLength3が0であることにより、送信データの候補は,長さ160と長さ120の2つのデータ・ユニットしかないことを伝えている。また、データ送信側の都合で今回のデータ送信は255単位時間で終了して欲しい旨を伝える(すなわち、Max Durationに「255」を格納する)。さらに、このRTSに呼応して受信されるCTSの送信が終了するまでの期間を40単位時間としてDurationに書き込む。
データ受信側は、これを受信すると、CTS(2)を返送する。このとき、上述した手順に従って、データ受信の伝送レートをレート・クラス2に決定したことを伝える(すなわち、CTS SMHのRATEに「2」を格納する)。また、上述した手順に従って、シーケンス番号「4」、「5」、「7」のデータ・ユニットを受信することを決定し、これを受信し終えるまでに要する期間が200単位時間であることを伝える(すなわち、Durationに「200」を格納する)。さらに、今回のトランザクションで受信することに決定した「7」番までのデータ・ユニットの長さを保持しておく。そして、「7」番までのデータ・ユニットの長さ情報を保持したことを伝える(すなわち、CTSSMHのStored Sequenceに「7」を格納する)。また、上述した手順に従って、ACK情報も返送することを決定し、「3」のデータ・ユニットまではすべて受信できた旨と「6」のデータ・ユニットが受信できている旨を伝える(すなわち、ACKSMHのACK Sequenceに「3」を、Received MAPに「0010」を、それぞれ格納する)。
データ送信側は、これを受信すると、Data(2)を送信する。このとき、ACK情報が含まれていることから、上述した手順に従って送信データ・ユニット候補リストを更新した後、指定された伝送レート・クラス2において「4」、「5」、「7」の各データ・ユニットを送信可能と認識し、これらを送信する。また、遅延ACKを指定しているため、Durationフィールドには「0」が格納されている。また、CTSのStored Sequenceにて報告されたシーケンス番号「7」を保持し、次回のRTS送信時に参照可能な状態にしておく。
データ送信側は、さらにデータ・ユニットの送信を行なうべく、RTS(3)を送信する。このとき、送信データ・ユニット候補リストのうち、先のCTS(2)の受信時に保持したStored Sequenceであるシーケンス番号「7」より先のデータ・ユニットに関する情報を記載する。具体的には,シーケンス番号「8」のデータ・ユニットが登録されていることとそれらの長さを伝える(すなわち、RTS Sequenceに「8」を、RTS Received
MAPに「0000」を、Length0に「120」を、Length1に「0」を、Length2に「0」を、Length3に「0」を、それぞれ格納する)。また、データ送信側の都合で今回のデータ送信は255単位時間で終了して欲しい旨を伝える(すなわち、Max Durationに「255」を格納する)。さらに、このRTSに呼応して受信されるCTSの送信が終了するまでの期間を40単位時間としてDurationに書き込む。
このような具合で、送受信機は各々のパケット・ヘッダのフィールドを設定するとともに互いに参照することで、受信パケットに起因する処理内容を決定する。この結果、遅延ACKを併用した場合であっても、RTSで無駄にLength情報を指定することがなくなり、効率がよくなる。
I.TCPを経由したトラフィックの送受信手順
図14には、本発明に係るMAC手順に従ってTCP/IPを経由したトラヒックを送受信した場合のシーケンスの一例を示している。アプリケーション的には片方向通信であっても、TCPレイヤにより典型的には2セグメント毎にACKが返送され、MACレイヤにおいては非対称の双方向通信の形態となる。同図では、遅延ACKが適用され、RTS、CTS、DATA、ACKなどの各パケットのマルチプレクスが許可されており、これらを併用する場合が示されている。
従来のTCPを経由した送受信手順では、図20に示したように、Data0からData4までの5つのセグメントを送信するために、合計24回分のパケットがMACレイヤで送受信されており、処理が煩雑で冗長である。
これに対し、本発明に係る送受信手順に従えば、図14に示したように、Data0からData6までの7つのセグメントを送信するために、合計15回分のパケットがMACレイヤで送受信されている。
これからも明らかな通り、本発明に係る送受信手順によれば、MACレイヤにおける手続きが簡素化され、そのオーバーヘッドを大きく削減できることを理解できるであろう。