IEEE802.11bの無線LANの速度は11Mビット/秒。それなのに,10Mビット/秒のイーサネットに比べて,「無線LANって思ったより遅いなぁ」と感じているユーザーは多いはずだ。そこで今回は,802.11bの無線LANと10メガ・イーサネット(10BASE-T)の速度を比較してみよう。

 まず,本当に10BASE-Tより802.11bのほうが遅いのか確かめてみた。手軽に入手できるフリーのスループット測定ツールを使って両者のスループットを調べてみたところ,IEEE802.11bのスループットは4.7Mビット/秒だった。それに対して10BASE-Tは8.9Mビット/秒。つまり,11メガの無線LANのスループットは,10メガ・イーサネットの約半分しかなかった。

 なぜこんなことが起こるのか。そもそも802.11bの伝送速度が11Mビット/秒というのはウソなのだろうか。いや,そんなことはない。802.11bでデータを伝送する速度は11Mビット/秒で間違いない。これはつまり,1ビットの信号を送るのにかかる時間が1100万分の1秒(約90.9ナノ秒)だということを示している。

 一方の10Mイーサネットは,データを1ビット送るのに1000万分の1秒(100ナノ秒)かかる。この瞬間速度を比べるだけならIEEE802.11bの方が高速なのである。

 では,なぜ両者で速度が逆転してしまうのか。それは,無線LANとイーサネットでデータを送る手順が大きく異なるところに理由がある。

 イーサネットでは,一つのフレームで最大1500バイトのデータが送れる。このデータの前後にイーサネットのヘッダーが14バイトとエラー訂正に使うFCSが4バイト付いて一つのフレームになる。さらにフレームの前にプリアンブルと呼ばれる信号が8バイト分付く。また,フレームを連続して送っても,フレーム間には必ずフレーム間ギャップと呼ばれる最小限の隙間があり,イーサネットでは12バイト分の間隔と決まっている。つまり,イーサネットで1500バイトのデータを送ろうとすると,

 1500+14+4+8+12=1538(バイト)=1万2304(ビット)

の信号を送ることになる。10BASE-Tの場合,1万2304ビット分の信号はすべて10Mビット/秒の速度で送られる。つまり,イーサネットで1500バイトのデータを送る時間は,待ち時間を含めて

 1万2304(ビット)÷10M(ビット/秒)=1230マイクロ秒

となる。

 同じようにIEEE802.11bで1500バイトのデータを送る場合の時間も計算してみよう。ただし,無線LANの手順はかなり複雑なので,計算もややこしくなる。

 IEEE802.11bでは,1500バイトのデータの前に付くヘッダーが,イーサネットより長く32バイトある。FCSはイーサネットと同じ4バイトである。この最大長1536バイトのフレームは,11Mビット/秒の速度で送られる。伝送にかかる時間を計算すると,

 1536(バイト)×8(ビット)÷11M(ビット/秒)=1117マイクロ秒

になる。

 ただし無線LANでは,フレームの前に,プリアンブルと無線LAN特有のPLCPヘッダーという情報を送る。この二つの情報を送る時間は合計192マイクロ秒と決まっている。さらに,無線LANではフレームを送り出す前に,フレーム間ギャップの時間に加えてランダムな時間(これをバックオフ時間という)の分だけ待たなければならない。802.11bではこの平均時間が合計で360マイクロ秒と決まっている。

 さらに,無線LANではフレームを送るごとに通信相手からACKフレームを受け取って通信の成功を確認する決まりだ。ACKフレームを受け取るまでは次のフレームを送れない。この待ち時間は合計213マイクロ秒になる。

 つまり,無線LANで1500バイト分のデータが入ったフレームを一つ送るのにかかる時間は,待ち時間や応答パケットが送られる時間を含めて

 1117+192+360+213=1882(マイクロ秒)

になる。

 同じ量のデータを送るのに,10BASE-Tでは1230マイクロ秒で済むのに,802.11bでは1882マイクロ秒もかかってしまう。この違いが無線LANとイーサネットのスループットの差になって表れたというわけだ。

山田 剛良