Download - Open wrtでwired likeなwifinwを作ってみた。
![Page 1: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/1.jpg)
OpenWRT で Wired like な WiFiNW を作ってみた。2015/11/29
NTT ソフトウェアイノベーションセンタ水越大貴 (m-masataka)
![Page 2: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/2.jpg)
自己紹介• m-masataka (水越大貴)• 所属 NTT SIC• 元々分散処理• 無線 LAN 関係の OSS を触る
• OpenWRT• Hostapd
![Page 3: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/3.jpg)
本日お話しすること• 無線 LAN 関係の OSS について調べました。• OpenWRT を使用して、コントローラブルな無線 LAN 環境を自作しました。
![Page 4: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/4.jpg)
動機• 無線 LAN の管理は難しい
認証設定 AP の管理 接続端末の制限 SSID 設定 チャネル割り当て
初期設定
電波状況 ユーザ端末 利用状況
環境変化への対応
一元的に、かつ、動的に無線周りの設定変更がしたい。
![Page 5: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/5.jpg)
ケース1• 電波干渉の影響で、通信できないユーザを一時的に他のアンテナへ退避させたい。
Wi-Fi AP Wi-Fi AP 干渉源
通信障害発生
![Page 6: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/6.jpg)
ケース 2• 接続端末の優先度を変更したい。
今はこの人だけ優先させたい!一般ユーザ
Wi-Fi APWi-Fi AP
![Page 7: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/7.jpg)
やりたいこと
Wi-Fi コントローラ
Wi-Fi APWi-Fi AP
アンテナ情報 端末情報 電波状況
: :
情報収集
•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。
![Page 8: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/8.jpg)
やりたいこと
Wi-Fi コントローラ
Wi-Fi APWi-Fi AP
アンテナ情報 端末情報 電波状況
: :
情報収集
•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。•これを OSS で作ります。
![Page 9: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/9.jpg)
OpenWRT とは• 組み込みデバイス向けの Linux Distribution
• 特にルータやアクセスポイントといった機器に対して多く対応• コンシューマ向けの無線 LAN ルータのファームウェアを置き換えることが可能
• 特徴• 複数のチップセットに対応• 拡張性が高い(コンパイル作業が簡単)• ファイルサイズが軽量
ash uClibc BusyBox Lua opkg
![Page 10: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/10.jpg)
なぜ OpenWRT ?
• 多機能• 組み込みデバイス向けのアプリ開発がとにかく簡単
![Page 11: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/11.jpg)
なぜ OpenWRT ?• OpenWRT
• ルータ向け• LEDE
• Linux Embedded Development Environment• 組込みシステムのための Linux Distr• 組込みシステムの開発環境を提供→ Buildroot を使って make するだけでアプリも kernel module も開発できる。
![Page 12: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/12.jpg)
やりたいこと
Wi-Fi コントローラ
Wi-Fi APWi-Fi AP
アンテナ情報 端末情報 電波状況 : :
情報収集
•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。•これを OSS で作ります。
![Page 13: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/13.jpg)
無線ルータ
OpenWRT 無線機能の構成
KernelSpace
UserSpace
wireless driver
Wireless chipset
hostapd
Wireless Driver の設定、無線 LAN セキュリティ機能 (WPA,WPA2) の実装を行うアクセスポイントデーモン。
パケットの処理。無線⇔有線の変換が行われる。ビーコン制御、 MPDU 等の packet aggregation rate のコントロール .
mac80211
cfg80211
![Page 14: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/14.jpg)
OpenWRT を API で操作• Ubus
• OpenWRT の軽量メッセンジャー
ubus
Other service
Other service
Wirelesscomponent
Ubus cli Httpd-mod-ubus
Wi-Fi コントローラHTTP(S)
設定変更反映
![Page 15: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/15.jpg)
OpenWRT を API で操作• Ubus
• 使い方# ubus list
dhcp hostapd.wlan0 hostapd.wlan1 log network network.device network.interface.wan
: :
# ubus list -v network.interface.wan 'network.interface.wan' @44d8b6fa "up":{} "down":{} "status":{} "prepare":{} "dump":{}
: :
登録されているサービスを表示 Ubus で取得 & 設定可能な情報を表示
![Page 16: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/16.jpg)
OpenWRT を API で操作• Ubus
• 使い方
# ubus call network.interface.wan down \ { “network.interface”: { “action”: “ifdown”, “interface” : “wan”}}
Ubus 経由での命令※ インターフェースダウン
![Page 17: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/17.jpg)
全体構成• コントローラ ⇔ ubus hostapd Wireless Driver ⇔ ⇔ ⇔ チップセットの流れで、無線物理層の情報収集・設定変更を行うことができます。
ubus
wireless driver
hostapd
Wi-Fi コントローラHTTP(S)
HTTP(S)
![Page 18: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/18.jpg)
全体構成• コントローラ ⇔ ubus hostapd Wireless Driver ⇔ ⇔ ⇔ チップセットの流れで、無線 LAN の情報収集・設定変更を行うことができます。
ubus
wireless driver
hostapd
Wi-Fi コントローラHTTP(S)
HTTP(S)Version によっては ubus 連携の機能が無いので、今回は ubus パッチ済の Hostapd を Make します。
![Page 19: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/19.jpg)
環境構築• 足りないアプリケーションのビルド
TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB
![Page 20: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/20.jpg)
環境構築• 足りないアプリケーションのビルド
TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB
組み込みシステムの開発 コンパイラを動かすには、メモリが足りない。 OpenWRT Buildroot を使ってクロスコンパイル
![Page 21: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/21.jpg)
OpenWRT buildroot
• Build tool のダウンロードhttps://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/
• OpenWRT 上で動くほとんどのアプリケーションは上記の操作で作成することが可能です。• 今回は、自分でカスタマイズしたアプリケーションなど、上記操作で入手できないものを作成します。
# ./scripts/feeds update -a # ./scripts/feeds install –a# make menuconfig# make
![Page 22: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/22.jpg)
OpenWRT buildroot クロスコンパイル• Hostapd ver2.6 の入手
• クロスコンパイルに使用するディレクトリの設定
• コンパイラを指定して、 hostapd の make• Build_tool の中に toolchain が入っているので、その配下のコンパイラを指定してコンパイルすることで、 OpenWRT 環境で動くアプリケーションが作成できる。
# git clone git://w1.fi/srv/git/hostap.git
# export STAGING_DIR=~/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
# export CC=~/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc# cd hostapd/hostapd/# make
![Page 23: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/23.jpg)
OpenWRT build tool クロスコンパイル• 依存ライブラリが無いと怒られる。• 同じコンパイラを使用して、ライブラリ生成。• 再コンパイル
ループ
![Page 24: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/24.jpg)
OpenWRT build tool クロスコンパイル• 依存ライブラリが無いと怒られる。• 同じコンパイラを使用して、ライブラリ生成。• 再コンパイル
ループ
OpenWRT では、殆どのライブラリが予め用意されています
![Page 25: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/25.jpg)
デモ• TP-Link の無線 LAN ルータを OpenWRT 化
TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB
![Page 26: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/26.jpg)
まとめ• OpenWRT を使ってコントローラブルな無線 LAN 環境を作りました。
• 安い( OSS+ 家庭用ルータ)• 機能追加が簡単( OpenWRT Buildroot)
• 今後やってみたいこと• 無線 LAN の QoS コントロール• SDN コントローラとの連携
![Page 27: Open wrtでwired likeなwifinwを作ってみた。](https://reader033.vdocuments.pub/reader033/viewer/2022042706/58a0cf631a28ab6d018b6a53/html5/thumbnails/27.jpg)
ありがとうございました。