社内オフィスの無線安定化のためにやったこと

## 概要
:::note info
この記事は[一休.com Advent Calendar 2024](https://qiita.com/advent-calendar/2024/ikyu)第11日目の記事です。
:::

昨今では、オフィスのネットワークはすべて無線という会社も多くなっていると思います。

ですが、有線と違い目に見えない要素の多い無線は安定稼働させるための試行錯誤や設定に苦戦する人も多いのが現状です。

本記事では、一休の無線ネットワークを安定化させるために実施したことを記載したいと思います。

## 起きていた問題

一休では一昨年に紀尾井町の新しいオフィスへ引っ越しをしました。

その際、過去に報告のあった無線の問題の解消も試みました。

:::note warn
+ 朝オフィスにくると無線が繋がらない。あるいは繋がるまで時間がかかる

+ 会議室に移動すると音声通話の品質が悪くなる

+ 急に通信が不安定、あるいは低速になる
:::

オフィスの無線ネットワークでよく起きる問題だと思います。これらの問題を解消するため、一休では以下のことを実施しました。実施後は起きていた問題はかなり減少し、快適なオフィス空間に近づいています。

:::note info
解決策としてやったこと
1. 無線のチャネル/帯域の調整

2. 送信レートの調整

3. 高速ローミング機能の有効化
:::

## 解決策1　無線のチャネル/帯域の調整

無線が安定しない原因の1つであり、その中でも比較的大部分を占めるのが電波干渉だと思っています。

特にオフィス内で無線APが密集しているエリアではこの問題が顕著に出ます。なぜなら無線には以下のような特徴があるためです。

+ 電波の世界は扱える空間(帯域)に限りがある
+ 電波は自分たち以外の場所からも飛んでくる
+ レーダー波の存在

ここからは少し座学のようになりますが、無線のチューニングをする上では必要な知識となるので詳細を記載していきます。

#### 周波数帯とは

無線には2.4Ghz帯と5Ghz帯があるのはなんとなく皆さんも知っていると思います。(最近は6Ghz帯も増えますが)

これは電波の周波数のことですが、それぞれ以下のような特徴があります。


| 周波数 | 通信速度 | 障害物や壁の影響を|  チャネル数が |  屋外利用が |
|:-:|:-:|:-:|:-:|:-:|
|2.4Ghz   |  普通 |  受けづらい |  4個 | できる|
|5Ghz   |  速い |  受けやすい | 20個  | 制限がある※1|

※1 参考：https://www.tele.soumu.go.jp/j/sys/others/wlan_outdoor/

:::note info
※無線の規格は順次拡大されていて、無線APがどの周波数まで対応しているかで利用できるチャネル数は変わってきます。
:::

なぜこのような差があるのかというと、電波も波の1種だからです。

+ 周波数が低ければ音の性質に近づき、
+ 周波数が高ければ光の性質に近づます

音は隣の部屋でも声が聞こえるように障害物を貫通しやすく、
光は障害物に当たると影ができます(≒電波の届きづらい影ができる)
そして周波数の高い方が時間あたりに転送できる情報量が多い(CPUと一緒)

このように、周波数が異なることで電波の性質も変化するので、用途や環境に合わせて選択をする必要があります。

とはいえ、通常のオフィス利用においては5Ghzを選択するで問題ないと思います。

#### チャネルとは

各周波数帯域は数Mhz毎に分割したチャネルに分割して利用しています。

例えば5Ghz帯域は厳密にいうと5.18Ghz～5.72Ghzのことを指し、この範囲を約20Mhz毎に区切ってチャネルという単位で利用しています。

そしてこの利用しているチャネルが近くの無線APと被ることにより電波干渉が起きます。

なのでオフィスに配置する無線アクセスポイントは、1台ごとに違うチャネルが割り当たるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3207030/d424739b-cd38-5bbc-9176-f363692af3bb.png)

またチャネルは複数を束ねることも可能です(チャネルボンディングという技術)

チャネルを複数使うことより通信速度を上げることができます。

ですが、当然利用できるチャネル数は減ってしまうため、電波干渉を引き超す可能性は高くなります。

| 周波数 | チャネル数(20Mhz) | チャネル数(40Mhz)|チャネル数(80Mhz)|チャネル数(160Mhz)|
|:-:|:-:|:-:|:-:|:-:|
| 2.4Ghz  |  4個 | 2個| 不能| 不能|
|  5Ghz |  20個 | 10個| 5個| 2個|

余談ですが、よく無線では最大通信速度9Gみたいな謳い文句があると思います(Wifi6が流行った時にたくさん見た)。これはチャネルを規格の限界まで束ねた時の速度となります。なので、速度が上がっても電波干渉のせいでうまく動作しないということが起きるのでご注意してください。

#### レーダー波とは

5Ghz帯域には、私たち一般市民の他に利用者がいます。それが気象レーダや各種レーダです。これらも5Ghzの帯域の特定チャネルを利用しています。

このレーダー波には決まりごとがあり、レーダー波を検知した無線APは速やかに該当周波数(チャネル)を停止することが義務付けられています。

つまり、レーダー波という消防車が来た場合は、すぐに車線を明け渡して、自分はほかの車線(チャネル)に移動しなくてはならないのです。

このレーダー波が利用するチャネルは結構多く、5Ghzの52～64、100～140で利用され、15/19チャネルというほとんどのチャネルで利用されます。なので、チャネルはギチギチで利用するのではなく、退避先があるような形で設計をします。

ここで重要になるのが上記でも述べたチャネルボンディングという技術です。

チャネルボンディングをするとレーダー波を受ける頻度も当然増えます。そして、利用できるチャネル数も減るため、チャネルボンディングを使うかどうかは環境によって考える/調整する必要があります。

#### 一休ではチャネルと帯域をどう調整したか

ここからは実際に一休のオフィスでどのような配置と調整をしたのか、です。

一休では従業員用とゲスト用の２つのwifiがあります。それぞれ以下のように割り当てをしました。

|  | 周波数帯域 | 1チャネルの帯域 | トライラジオ|
|:-:|:-:|:-:|:-:|
| 変更前  | 2.4Ghz+5Ghz | 40Mhz| あり |
| 変更後  | 5Ghz  | 20Mhz | なし |

:::note info
【結論】
チャネルボンディングとトライラジオをやめてチャネル数を増やした。
　※トライラジオについては後述
:::


一休の無線APは超過密環境です。
コの字型のオフィスの中で25台のAPが動いています。


そして、40Mhzのチャネルボンディングをしていたので利用できる5Ghz帯のチャネルは10個。なのでチャネルボンディングはあきらめることにしました。

また一休の無線APではデフォルトでトライラジオという機能が有効になっていました。これは1台の無線APからチャネルの異なる電波を出せるという機能です。AP数の少ない環境であれば効果的なのですが、高密度環境では電波干渉が増やす要因となります。このトライラジオという機能はメーカーや製品によって名前が異なるので、ご利用の機器に合わせた機能を検索してください。

無線APは自動的に空いているチャネルを割り当てる機能があるので、とにかく空いている/干渉の受けないチャネルを増やすことで、オフィス全体として電波干渉が起きづらいようにしました。結果として、これにより電波干渉が起きる回数はかなり減りました。

なお、支社は設置しているAP数が少ないので40Mhzのチャネルボンディングをしています。
ですが、ある1支社だけは他オフィスからの電波干渉がひどく、本社と同じよう20Mhzにしています。

このように環境と設定する無線AP数に応じてチャネルを選択することが最初の1歩となると思います。

## 解決策2　送信レートの設定

無線通信を制御をするため、無線APとクライアントは管理フレームと呼ばれる通信を行います。

この管理フレームはデフォルトでは2.4Ghzは1Mbpx、5Ghzは6Mbpsに設定されていることが多いようです。この状態だと管理フレームは非常に低いレートで送信されます。

レートが低いと管理フレームの通信が多くなり、多くのオーバヘッドが発生します。一休の無線ネットワークでも管理フレームが多いことにより通信に影響を及ぼす場合がありました。

そこで管理フレームの送信レートを見直しました。ただし、送信レートは上げ過ぎると非対応の端末が出てくるため少しづつ値を調整しています。

最終的には2.4Ghzは6Mbps、5Ghzは12Mbpsという設定にしています。

## 解決策3　高速ローミング機能の有効化

他に起きていた問題として、席を移動した時に通信が不安定になる問題がありました。

移動をした時に通信が不安定になるには以下の理由です。

:::note warn
1. 移動をしても元々接続していた無線APに繋がり続けてしまい、通信環境が悪化している
2. 接続しなおした無線APで再度認証が行われ、通信が可能になるまで時間がかかる
:::

これを解決するため最も効果があったのは高速ローミング機能を有効化することでした。

### ローミングとは

ローミングとは、今繋がっている無線APから異なる無線APに接続し直すことです。ローミングは主に移動により発生しますが、接続している無線APが負荷や接続端末数を判断して行われることもあります。

そして移動などの際、ローミングをせずに遠い無線APに繋がり続けるクライアントをスティッキークライアントと呼んだりします。

スティッキークライアントの対応ではローミングを促すことが効果的です。例えばIntelの無線LANドライバーではローミングをどれほど行うかを定める設定があり、これを調整しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3207030/1413ed15-07bd-621c-edc9-61039e8086a2.png)

ただし、ローミングが多発すると新しい無線APとの認証が発生するため、かえって通信状態が悪化するということが起きます。そこで、なるべく再認証の時間を短くするため、高速ローミングの設定も行いました。

高速ローミングにはOKC(Opportunistic Key Caching)と802.11rの2つを検討しています。

#### OKCとは

無線APとクライアントが認証をすると認証情報がキャッシュされます。これをPMKキャッシュと呼びます。無線AP間でPMKキャッシュを共有することにより、ローミングをした際に認証をスキップすることができます。このPMKキャッシュを無線AP間で共有する仕組みがOKCです。

#### 802.11r

こちらも基本的な仕組みはOKCと同じです。ただし、こちらは規格化されているプロトコルになります。
OKCよりも動作が速いという特徴がありますが、規格に対応していない端末やOSでは利用できません。

#### OKCと802.11rのどちらを採用したのか

結果として一休ではOKCを採用しました。

一休の社内端末はすべて802.11rに対応していたので、最初はこちらを有効にしました。
しかし、802.11rを有効にすると初回接続に失敗するという挙動が発生しました。(おそらく無線APのバグ)
    
ベンダと共に調査をしましたが解決ができなかったため802.11rはあきらめ、OKCを設定することで高速にローミングができる環境となりました。

どれぐらいスムーズにローミングできるかというと、瞬間的な遅延はあるものの、Pingレベルであれば途切れることなくローミングができます。

    
    142.250.199.110 からの応答: バイト数 =32 時間 =14ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =83ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =70ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =67ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =2390ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =8ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =10ms TTL=114
    142.250.199.110 からの応答: バイト数 =32 時間 =8ms TTL=114



## 終わりに

無線の調整をしてみて思ったことは、調査に必要な情報が膨大なことと、ヒントとなる情報がどこにあるのかわかりづらいということでした。

また根本的に調査をするにはパケットキャプチャが必要であり、問題が起きている端末でそれを実行する必要があるという障壁もあり、調査はかなり難航しました。

昨今の製品はクラウド管理コンソールで値やAIによる分析情報を見ることができますが、それでも真の原因にたどり着くのは難しくありました。

今後はさらに監視を強め、問題の発見をより迅速に行い、より快適なオフィス環境を構築していけるように努めていくつもりです。



##

一休では、ともに良いサービスをつくっていく仲間を募集中です。クラウドインフラの運用やSREに興味がある方はぜひ募集ください。

https://hrmos.co/pages/ikyu/jobs/1693126708022206468

カジュアル面談もやっています。

https://www.ikyu.co.jp/recruit/engineer/