Wireless・のおと

Wi-Fiチャンネルのはなし

ブログ
技術解説

Wi-Fi(IEEE802.11無線LAN)には「チャンネル」の概念がありますが、四半世紀にわたり屋上屋根を重ねるような拡張を重ねてきた歴史を反映して、チャンネルの定義と実装は意外に複雑なことになっています。今回はそのお話です。

IEEE802.11a/b/g時代のモードとチャンネル指定

まず2.4GHz帯(IEEE802.11b/g)では、チャンネル番号と中央周波数fcは

fc=2407+(ch*5) MHz (ch=1..13)
fc=2484 MHz (ch=14) (※註)

の関係で定義されます(IEEE802.11-2020 Section 15.4.4.3 Table 15-6)。

(※註)「飛び地」になっているch=14は日本国内だけ・周波数拡散変調だけ(つまり11bだけ)で使用が認められている特殊なチャンネルです。これはもともと、日本独自の無線通信規格として検討されていたARIB STD-33という仕様(1993)で予約していた周波数帯域がIEEE802.11bにスライドして適用されたものです。ARIB規格は後でSTD-T66(1999)としてIEEE802.11仕様に寄り添って行きますが、STD-33規格にはOFDM対応の拡張が適用されていないのでこのようなことになっています。

占有帯域幅が20MHzあるのにチャンネルごとの周波数は5MHzしか違わないので重なりますが、これは原型のIEEE802.11がDSSS(※註)・IEEE802.11bがDSSS-CCK変調で、いずれも周波数拡散方式だったことに由来しています。周波数拡散方式では、ある瞬間に占有する帯域幅は狭く(IEEE802.11では1MHz)、それが時間とともに疑似乱数的に飛び回る方式なので、隣接チャンネルと重なっても衝突は確率的にしか起きないはずでした。しかしこの前提はIEEE802.11g以後で20MHz幅をべったり占有するOFDM変調が採用されて覆り、2.4GHzのチャンネルは20MHz以上離れたch=1・6・11しか使わない」という習慣が生まれました。

(※註) IEEE802.11-1997仕様では、DSSSの他にFHSS(周波数ホッピング)とIR(赤外線)PHYも定義されていました。FHSSはBluetooth Classicと似て2402~2480MHzを1 MHz毎に区切った79チャンネルですが、ホッピングパターンやホッピング周期はだいぶ異なります。

hostapd.confではIEEE802.11g APは以下のように指定します。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=g
channel=6

hw_mode=にはb/g/aのいずれかが指定可能ですが、今では半ば盲腸のようなもので、5GHz帯以上を使う11ac/11ax/11beでは一律にhw_mode=aを指定します。

IEEE802.11b/g仕様(2.4GHz帯)においては、ビーコンやProbe Responseなどのフレームの拡張情報(Information Element)のDSSS Parameter set IE (type=0x03)に8bitのチャンネル番号が格納されます(※註)。

(※註) これも半分盲腸みたいなもので、もともとはIEEE802.11-1997規格のFHSS-PHYとDSSS-PHYに対応したFH Parameter set IE(type=0x02)とDSSS Parameter set IEがペアで定義されていたものの残りです。FH Parameter set IEはIEEE802.11-2012まで仕様に残っていましたが、-2016仕様で撤廃されてType=0x02はReservedと定義されました。ついでに-2016でまだ残っていたType=0x04 CF Parameter set IEは-2020で撤廃されてこれもReservedになっています。

 

5GHz帯のチャンネル番号と中央周波数fcは

fc=5000+(ch*5) MHz (ch=36,40,44...)

となり(IEEE802.11-2020 Section 17.3.8.4.2)、例えばch36=5180MHz (占有帯域5170~5190MHz)となります。これも昔は日本独自のJ52規格があってch=34,38,42,46が割り当てられており、北米FCCのW52規格と10MHz違うのでいろいろと不都合がありましたが、2005年5月に法改正されて日本国内でもW52と同じチャンネルが使えるようになりました。

 

hostapd.confではIEEE802.11a APは以下のように指定します。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36

5GHz帯ではもはやDSSS(直接周波数拡散)変調は使わないので、DSSS Parameter set IEは含まれません。つまりIEEE802.11aのビーコンにはチャンネル番号を示す情報が含まれません。(※註)

(※註) IEEE802.11仕様書の履歴を追うとIEEE802.11-2007まで”channel number indication for STAs using a DSSS PHY.”と明記されていたのが、-2016以後では” channel number identification for STAs.”と微妙に表現が変わってDSSS限定とは明記されなくなりました。なので5GHzや6GHz帯のビーコンにDSSS Parameter set IEを含めても仕様的には間違いではないのかも知れませんが、執筆時点でのhostapd 2.10ではhw_mode==HOSTAPD_MODE_IEEE80211BまたはGの場合みWLAN_EID_DS_PARAMSを設定する実装になっています。

 

IEEE802.11nとプライマリ・セカンダリチャンネル

IEEE802.11n仕様(2009)では、隣接したチャンネル2つをまとめて40MHz幅チャンネルとして使うHT40モードが追加されました。占有帯域幅が倍になるわけですからチャンネル指定方式も変わるわけですが、HT40非対応機器との互換性確保の必要もあり、20MHz幅の「プライマリ・チャンネル」にオプションとして「セカンダリ・チャンネル」を追加する方式が採用されました。セカンダリ・チャンネルはプライマリのすぐ上(+20MHz)ないし下(-20MHz)に設定でき、それぞれ「HT40+」「HT40-」と呼ばれます。

無線仕様上はHT Capabilities IE (type=0x2D)とHT Operation IE (type=0x3D)という2種類のIEが追加されました。このなかでチャンネルに関係するのは後者で、HT Operation IEには下記の情報が含まれます。

Primary Channel (8bit)
HT Operation Information (40bit)
Basic HT-MCS Set (128bit)

HT Operation Informationは難航したIEEE802.11n仕様制定の経緯を反映してかなりカオスな状態になっています。とりあえずチャンネルに関係するのはSecondary Channel Offset, STA Channel Widthです。

Secondary Channel Offset (2bit)
STA Channel Width (1bit)

RIFS Mode (1bit)
Reserved (4bit)
HT Protection (2bit)
Nongreenfield HT STAs Present (1bit)
Reserved (1bit)
OBSS Non-HT STAs Present (1bit)
Channel Center Frequency Segment 2 (8bit) (※註)
Reserved (3+6bit)
Dual Beacon (1bit)
Dual CTS Protection (1bit)
STBC Beacon (1bit)
Reserved (7bit)

(※註) Channel Center Frequency Segment 2はIEEE802.11n-2009仕様ではReservedだった領域で、IEEE802.11ac-2013のSection 8.4.2.59にも記述が見当たらず、それが標準仕様に取り込まれてIEEE802.11-2016となったときついでに(?)拡張された領域のようです。後述するIEEE802.11acの非隣接160MHzモード(VHT80+80)を設定したとき、2番目のチャンネルへのオフセット情報が格納されるようです。

 

Secondary Channel Offsetは次の意味を持ちます。

00:セカンダリチャンネル無し
01:プライマリチャンネルの直下(-20MHz)
10:reserved
11:プライマリチャンネルの直上(+20MHz)

STA Channel Widthは次のように定義されています。

0:チャンネル幅20MHz
1:チャンネル幅>20MHz

つまりIEEE802.11nにおいて「HT40+」「HT40-」とされている仕様は、少なくともHT Operation IEの上においては「20MHzより広い」と示されているだけで、40MHzとは明示されていません。将来的に60MHzや80MHz幅に対応する余地を残した仕様だったのかも知れませんが、結局次世代標準のIEEE802.11acでは新たなチャンネル指定の枠組みが作られることになります。

 

hostapd.confにおいてはht_capabというパラメータが導入され、IEEE802.11n ch=36 HT40+のAPは以下のように指定します。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211n=1
ht_capab=[HT40+]

 

IEEE802.11acとVHT80/80+80/160モード

IEEE802.11ac仕様(2013)では更に帯域幅を広げて80MHz/160MHz幅チャンネルが使用可能になりました。ここで問題になったのは隣接していない80MHz帯を2つ合わせて使う80+80モードが追加されたことで、これはチャンネルが連続していることを前提としたIEEE802.11n時代のHT+/HT-の枠組みでは表現できません。なのでIEEE802.11acではVHT Operation IE (type=0xc0)が追加され、この中で

Channel Width (8bit)
Channel Center Frequency Segment 0 (8bit)
Channel Center Frequency Segment 1 (8bit)

という3つの値が新たに定義されました。IEEE802.11acにおいてChannel Widthは0~3までの値が定義されており、

0=20または40MHz
1=80MHz
2=160MHz
3=80+80MHz

となっています。0の定義が「20または40MHz」と曖昧になっていますが、これはまたしてもIEEE802.11n仕様との下位互換性を確保するための妥協で、Channel Width=0の場合はHT Information IEのSTA Channel Widthビットによって20MHz(0)/40MHz(1)が確定することになっています。

 

Channel Center Frequency Segment 0/1は20MHz幅を基準とする従来の「チャンネル番号」とは異なり、実際に使われるチャンネル幅(20/40/80/160MHz)の中央を指す値です。つまり20MHzモードならチャンネル番号=Channel Center Frequency Segmentですが、VHT40であればチャンネル36のときChannel Center Frequency Segmentは38((36+40)/2)、VHT80であれば42((36+48)/2)になります。

Channel Center Frequency Segment 1はVHT80+80を使うときに2番めの80MHzチャンネルを指定するために使用し、それ以外は0を設定します。

 

hostapd.confにおいてはvht_oper_chwidth, vht_oper_centr_freq_seg0_idx, vht_oper_centr_freq_seg1_idxが追加されました。VHT80のAPは以下のように設定します。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211ac=1
vht_oper_chwidth=1
ht_capab=[HT40+]

ieee80211n=1が無い・80MHz幅チャンネルなのにht_capab=[HT40+]が有るのは奇妙な気がしますが、上記の理由によって5GHz帯における20/40MHzの共存には必ずHT Information IEが必要になってしまったので、hostapdではht_capab=[HT40+]あるいは「HT40-]を指定しないとIEEE802.11acの40/80MHzモードが使えない実装になっています。

 

 

IEEE802.11axと6GHz帯

IEEE802.11ax仕様(2021)ではOFDMA多重同時通信と「新天地」6GHz帯への対応が行われました。後者はWi-Fi6Eの名称でも知られています。

6GHz帯ではIEEE802.11a以来使われてきた「5000MHz基準のチャンネル番号」に換えて"Channel starting frequency"が別定義になりました(IEEE802.11ax-2021 Section 27.3.23.2)。その定義は以下のようになっています。

fc=Channel starting frequency+(ch*5) MHz (ch=1,3,5,7,9...)

Channel starting frequencyは"Operating Class"によって定義されます。これはもともと、IEEE802.11-2007以後で各地域ごとの周波数帯域を一覧にまとめて番号を振ったもの(Annex E Table E-4)でした。具体的にはレガシーのa/b/g帯域については

op_class=81 fStart=2407MHz CH=25MHz ch=1,3,5,7...13
op_class=82 fStart=2414MHz CH=25MHz ch=14
op_class=115 fStart=5000MHz CH=20MHz ch=36,40,44,48
op_class=118 fStart=5000MHz CH=20MHz ch=52,56,60,64
op_class=121 fStart=5000MHz CH=20MHz ch=100,104,108...140
op_class=124 fStart=5000MHz CH=20MHz ch=149,153,157,161

となっていて、新たに追加された6GHz帯は次のようになっています。

op_class=131 fStart=5950MHz CH=20MHz ch=1,5,9,13...233
op_class=132 fStart=5950MHz CH=40MHz ch=3,11,19,27...227
op_class=133 fStart=5950MHz CH=80MHz ch=7,23,39,55... 215
op_class=134 fStart=5950MHz CH=160MHz ch=15,47,79,111...207
op_class=135 fStart=5950MHz CH=80MHz (80+80) ch=7,23,39,55...215
op_class=136 fStart=5925MHz CH=20MHz ch=2 (※註)

なので6GHz帯のch=3は

op_class=132 fc=5965MHz BW=40MHz 占有帯域5945~5985MHz

となります。

(※註) op_class=136の20MHzは「ケーキの切れっ端」みたいな帯域で、他の6GHz帯チャンネルと合わせて使うことができず、ch=2の 20MHz幅でのみ運用可能となっています。

 

hostapd.confで6GHz 80MHzのAPは下記のように設定します。ただし執筆時点では6GHz 80MHz APモードに対応した機材が手元になく、これで本当に動くかは未検証です。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
ieee80211ax=1
op_class=133
channel=7

無線仕様上はHE Capabilities IE(0xff 0x23)とHE Operation IE(0xff 0x24)が追加されて、6GHzでの稼働時はHE Operation IEに6GHz Operation Information filedが入ることになりました。VHT Operation IEとはまたフォーマットが変わって

Primary Channel (8bit)
Control (8bit)
Channel Center Frequency Segment 0 (8bit)
Channel Center Frequency Segment 1 (8bit)
Minimum Rate (8bit)
Controlは更に
Channel Width (2bit)
Duplicate Beacon (1bit)
Regulatory Info (3bit)
Reserved (2bit)

で、Channel Widthは

00:20MHz
01:40MHz
10:80MHz
11:80+80 or 160MHz

と定義されています。これでやっとIEEE802.11n以来の「20/40MHzの区別をHT Operation IEのSTA Channel Widthで示す」呪いから解放されて、6GHz帯のビーコンにはHEやVHTのIEを含める必要がなくなりました。

 

なおIEEE802.11axは5GHz帯でも運用可能で、この場合はop_classを指定せずIEEE802.11a以来のチャンネル定義を使います。例えばch=36 80MHz幅で設定するなら下記のようになります。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211ax=1
ht_capab=[HT40+]
he_oper_chwidth=1

5GHz帯ではieee80211n=1やieee80211ac=1が無くても、ieee80211ax=1を指定することでHE Capabilities IE・HE Operation IE・VHT Capabilities IE・VHT Operation IEが自動的に有効になります。ただし相変わらずht_capab=[HT40+]を指定しなければ40MHz以上のチャンネル幅は使えません。

5GHz 帯にはop_classが無いのでチャンネル幅はhe_oper_chwidth=で指定します。この指定はvht_oper_chwidthを上書きしてVHT Operation IEのChannel Width値に設定されます。つまり

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211ac=1
vht_oper_chwidth=0
ieee80211ax=1
ht_capab=[HT40+]
ht_oper_chwidth=1

のように「11ACを40MHz幅で・11AXを80MHz幅で運用する」hostapd.confを与えてもエラーにはなりませんが、実際にはhe_oper_chwidth=1の設定がvht_oper_chwidth=0を上書きして11AC/11AXとも80MHz幅として適用されることになります。

 

理屈上は下記のようなhostpad.confでプライマリチャンネル36~48・セカンダリチャンネル153~165を使用するVHT80+80のAPが設定できるはずですが、執筆時点で手元に対応する機材が無いので確認できません。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211ax=1
ht_capab=[HT40+]
he_oper_chwidth=3
he_oper_centr_freq_seg0_idx=42
he_oper_centr_freq_seg1_idx=159

 

IEEE802.11beと320MHzモード

IEEE802.11be仕様は執筆時点でまだ正式仕様が公開されていませんが、4096QAM変調(MCS12/13)・320MHz幅チャンネル・16ストリームMIMOなどの仕様が追加されました。320MHzチャンネルは新設されたop_class 137を使います。

op_class=137 fStart=5925MHz CH=320MHz ch=31,63,95...

下記のようなhostapd.confで6GHz 320MHz幅チャンネルを使うIEEE802.11be APが設定できるはずですが、執筆時点で手元に対応機材がないので確認できません。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
ieee80211be=1
op_class=137
channel=31

5GHz帯で320MHzチャンネルを使う実用性については疑問ですが、hostapdではいちおう対応がなされています。例によってop_classが無いのでeht_oper_chwidth=で指定しますが、320MHzに対応する値は飛び番の9になっています。これは60GHz帯のIEEE802.11ad仕様(2012)が先に割り込んで4~7の値を使ったためでした。

4=2160MHz
5=4320MHz
6=6480MHz
7=8640MHz
8=40MHz (※ 註)
9=320MHz

(※ 註) chwidth=8はhostapdのソースコード上で「CONF_OPER_CHWIDTH_40MHZ_6GHZ」として定義されていますが、一体何に使うのかよくわかりません。ソースコードを読むかぎりWi-Fi Directがらみのようです。

 

無線仕様上はEHT Capabilities IE(0xff 0x6c)とEHT Operation IE(0xff 0x6a)が追加され、そしてまたしてもEHT Operation Information filedに

Control (8bit)
CCFS0 (8bit)
CCFS1 (8bit)
Disabled Subchannel Bitmap(0/16bit)

が追加され、Controlは

Channel Width (3bit)
Reserved (5bit)

として

000:20MHz
001:40MHz
010:80MHz
011:160MHz
100:320MHz
他:Reserved

が定義されました。

 

CCFS0/1は「320MHz幅チャンネルの場合はそれぞれプライマリ160MHz・セカンダリ160MHzの中央周波数を示す」と定義されており、仕様上は5GHz帯でも非隣接の160+160を使って320MHz幅チャンネルで稼働できるはずです。理屈では下記のようなhostapd.confでプライマリチャンネル36~64・セカンダリチャンネル100~128を使う160+160のAPが設定できるはずですが、執筆時点でhostapd 2.10はeht_oper_centr_freq_seg1_idxというパラメータを持っておらず、160+160の設定じたいできないようです(※註)。

(※註) なのに何故eht_oper_chwidth=9が320MHz幅として定義されているのかは謎です。5GHz帯にはどのリージョンにも連続した320MHz=16チャンネルを得られる帯域はありません。

ctrl_interface=/var/run/hostapd
country_code=US
ssid=silex-hostapd-test
hw_mode=a
channel=36
ieee80211be=1
ht_capab=[HT40+]
eht_oper_chwidth=9
eht_oper_centr_freq_seg0_idx=50
eht_oper_centr_freq_seg1_idx=114

 

まとめ

  • IEEE802.11a/b/g時代:チャンネル幅は20MHz固定。2.4GHzビーコンではDSSS Parameter set IEにチャンネル番号が示されるが、5GHzビーコンにチャンネル情報は乗らない。hostapd.confでは基本帯域(2.4/5GHz)をhw_modeで・チャンネルをchannelで指定する。
     
  • IEEE802.11nでは40MHz幅のHT40チャンネルオプションが追加され、ビーコン上ではHT Operation IEのSecondary Channel OffsetとSTA Channel Widthで示される。hostapd.confではht_capabに[HT40+]あるいは[HT40-]を指定することでHT40モードが有効になる。
     
  • IEEE802.11acでは80MHz, 160MHz, 80+80MHzモードが追加された。ビーコン上ではVHT Operation IEでチャンネル幅とプライマリ・セカンダリチャンネルが示されるが、後方互換性のため20MHz/40MHzは同じ値(0)で、HT Operation IEのSTA Channel Widthで20/40MHzが識別される。hostapd.confではvht_oper_chwidthでチャンネル幅を指定するが、ht_capabに[HT40+]ないし[HT40-]の指定が無いと40MHz以上での動作はできない。
     
  • IEEE802.11axでは6GHz帯に対応し、基本帯域とチャンネル幅がセットになったOperating Classが導入された。ビーコン上では5GHzと6GHzで動作が異なり、前者は基本的にIEEE802.11ac上位互換、後者は新設されたHE Operation IEの6GHz Operation Information領域でチャンネル幅とプライマリ・セカンダリチャンネルが示される。hostapd.confでは5GHzではhe_oper_chwidthで、6GHzではop_classでチャンネル幅を指定する。なおieee80211ax=1が指定された段階で11ac関係の設定は無効となる。
     
  • IEEE802.11beでは320MHzモードが追加された。ビーコン上ではEHT Operation IEのEHT Operation Information filedでチャンネル幅とプライマリ・セカンダリチャンネルが示される。hostapd.confでは5GHzではeht_oper_chwidthで、6GHzではop_classでチャンネル幅を指定する。ieee80211be=1が指定された段階で11ac・11ax関係の設定は無効となるはず。

60GHz帯のIEE802.11ad(DMG)や900MHz帯のIEEE802.11ah(S1G)・700MHz帯のIEEE802.11af(TVHT)も含めると更にややこしくなりますが、執筆時点でhostapdにこれらの統合は完了していない(11adと11afはほとんど開店休業状態になっています)ので、とりあえず上記のポイントを抑えておけばいいでしょう。

 

 

製品情報

関連リンク

製品のご購入・サービスカスタマイズ・資料請求など
お気軽にお問い合わせください