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

Post on 13-Feb-2017

382 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

• OpenWRT• Hostapd

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

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

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

初期設定

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

環境変化への対応

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

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

Wi-Fi AP Wi-Fi AP 干渉源

通信障害発生

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

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

Wi-Fi APWi-Fi AP

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

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

  :  :

情報収集

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

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

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

  :  :

情報収集

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

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

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

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

ash uClibc BusyBox Lua opkg

なぜ OpenWRT ?

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

なぜ OpenWRT ?• OpenWRT

• ルータ向け• LEDE

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

やりたいこと

Wi-Fi コントローラ

Wi-Fi APWi-Fi AP

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

情報収集

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

無線ルータ 

OpenWRT 無線機能の構成

KernelSpace

UserSpace

wireless driver

Wireless chipset

hostapd

Wireless   Driver の設定、無線 LAN セキュリティ機能 (WPA,WPA2) の実装を行うアクセスポイントデーモン。

パケットの処理。無線⇔有線の変換が行われる。ビーコン制御、 MPDU 等の packet aggregation rate のコントロール .

mac80211

cfg80211

OpenWRT を API で操作• Ubus

• OpenWRT の軽量メッセンジャー

ubus

Other service

Other service

Wirelesscomponent

Ubus cli Httpd-mod-ubus

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

設定変更反映

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 で取得 & 設定可能な情報を表示

OpenWRT を API で操作• Ubus

• 使い方

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

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

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

ubus

wireless driver

hostapd

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

HTTP(S)

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

ubus

wireless driver

hostapd

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

HTTP(S)Version によっては ubus 連携の機能が無いので、今回は ubus パッチ済の Hostapd を Make します。

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

TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB

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

TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB

組み込みシステムの開発 コンパイラを動かすには、メモリが足りない。 OpenWRT Buildroot を使ってクロスコンパイル

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

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

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

ループ

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

ループ

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

デモ• TP-Link の無線 LAN ルータを OpenWRT 化

TL-WDR4300N750 Wireless Dual Band Gigabit Router Wireless : Atheros AR9340 SoC: AR9344(MIPS) RAM : 128MiB Flash size : 8192KiB

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

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

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

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

top related