27
OpenWRT で Wired like で WiFiNW でででで でで2015/11/29 NTT でででででででででででででででで でででで (m-masataka)

Open wrtでwired likeなwifinwを作ってみた。

Embed Size (px)

Citation preview

Page 1: Open wrtでwired likeなwifinwを作ってみた。

OpenWRT で Wired like な WiFiNW を作ってみた。2015/11/29

NTT  ソフトウェアイノベーションセンタ水越大貴 (m-masataka)

Page 2: Open wrtでwired likeなwifinwを作ってみた。

自己紹介• m-masataka  (水越大貴)• 所属  NTT SIC• 元々分散処理• 無線 LAN 関係の OSS を触る

• OpenWRT• Hostapd

Page 3: Open wrtでwired likeなwifinwを作ってみた。

本日お話しすること• 無線 LAN 関係の OSS について調べました。• OpenWRT を使用して、コントローラブルな無線 LAN 環境を自作しました。

Page 4: Open wrtでwired likeなwifinwを作ってみた。

動機• 無線 LAN の管理は難しい

認証設定 AP の管理 接続端末の制限 SSID 設定 チャネル割り当て

初期設定

電波状況 ユーザ端末 利用状況

環境変化への対応

一元的に、かつ、動的に無線周りの設定変更がしたい。

Page 5: Open wrtでwired likeなwifinwを作ってみた。

ケース1• 電波干渉の影響で、通信できないユーザを一時的に他のアンテナへ退避させたい。

Wi-Fi AP Wi-Fi AP 干渉源

通信障害発生

Page 6: Open wrtでwired likeなwifinwを作ってみた。

ケース 2• 接続端末の優先度を変更したい。

今はこの人だけ優先させたい!一般ユーザ

Wi-Fi APWi-Fi AP

Page 7: Open wrtでwired likeなwifinwを作ってみた。

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

アンテナ情報 端末情報 電波状況

  :  :

情報収集

•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。

Page 8: Open wrtでwired likeなwifinwを作ってみた。

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

アンテナ情報 端末情報 電波状況

  :  :

情報収集

•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。•これを OSS で作ります。

Page 9: Open wrtでwired likeなwifinwを作ってみた。

OpenWRT とは• 組み込みデバイス向けの Linux Distribution

• 特にルータやアクセスポイントといった機器に対して多く対応• コンシューマ向けの無線 LAN ルータのファームウェアを置き換えることが可能

• 特徴• 複数のチップセットに対応• 拡張性が高い(コンパイル作業が簡単)• ファイルサイズが軽量

ash uClibc BusyBox Lua opkg

Page 10: Open wrtでwired likeなwifinwを作ってみた。

なぜ OpenWRT ?

• 多機能• 組み込みデバイス向けのアプリ開発がとにかく簡単

Page 11: Open wrtでwired likeなwifinwを作ってみた。

なぜ OpenWRT ?• OpenWRT

• ルータ向け• LEDE

• Linux Embedded Development Environment• 組込みシステムのための Linux Distr• 組込みシステムの開発環境を提供→   Buildroot を使って make するだけでアプリも kernel module も開発できる。

Page 12: Open wrtでwired likeなwifinwを作ってみた。

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

アンテナ情報 端末情報 電波状況  :  :

情報収集

•Wi-Fi コントローラから、 Wi-Fi アクセスポイントのアンテナ周りの情報収集&設定変更ができるようにします。•これを OSS で作ります。

Page 13: Open wrtでwired likeなwifinwを作ってみた。

無線ルータ 

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を作ってみた。

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を作ってみた。

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を作ってみた。

OpenWRT を API で操作• Ubus

• 使い方

# ubus call network.interface.wan down \ { “network.interface”: { “action”: “ifdown”, “interface” : “wan”}}

Ubus 経由での命令※ インターフェースダウン

Page 17: Open wrtでwired likeなwifinwを作ってみた。

全体構成• コントローラ ⇔ ubus hostapd Wireless Driver ⇔ ⇔ ⇔ チップセットの流れで、無線物理層の情報収集・設定変更を行うことができます。

ubus

wireless driver

hostapd

Wi-Fi コントローラHTTP(S)

HTTP(S)

Page 18: Open wrtでwired likeなwifinwを作ってみた。

全体構成• コントローラ ⇔ 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を作ってみた。

環境構築• 足りないアプリケーションのビルド

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を作ってみた。

環境構築• 足りないアプリケーションのビルド

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を作ってみた。

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を作ってみた。

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を作ってみた。

OpenWRT build tool クロスコンパイル• 依存ライブラリが無いと怒られる。• 同じコンパイラを使用して、ライブラリ生成。• 再コンパイル

ループ

Page 24: Open wrtでwired likeなwifinwを作ってみた。

OpenWRT build tool クロスコンパイル• 依存ライブラリが無いと怒られる。• 同じコンパイラを使用して、ライブラリ生成。• 再コンパイル

ループ

OpenWRT では、殆どのライブラリが予め用意されています

Page 25: Open wrtでwired likeなwifinwを作ってみた。

デモ• 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を作ってみた。

まとめ• OpenWRT を使ってコントローラブルな無線 LAN 環境を作りました。

• 安い( OSS+ 家庭用ルータ)• 機能追加が簡単( OpenWRT Buildroot)

• 今後やってみたいこと• 無線 LAN の QoS コントロール• SDN コントローラとの連携

Page 27: Open wrtでwired likeなwifinwを作ってみた。

ありがとうございました。