Upload
hiroaki-kawai
View
207
Download
0
Embed Size (px)
Citation preview
Wireless Openflowwith stratosphere experimenter
Hiroaki Kawai<[email protected]>
2
Wireless openflow
Access point
Openflow controller
Uplink
Openflow switch
3
無線コントローラ
● 同じ形をしている「無線コントローラ」● 一般的な導入目的
● 設定の集中管理● 電波のカバレッジ
● 重複よけ● 隙間をなくす
● 品質管理・ロードバランス● メタデータの送受信
コントローラ
4
WirelessこそSDNしたい
● 移動体にこそ動的にネットワーク変更を与えたい● 無線コントローラ
● 仕様が閉鎖的● プログラムしにくい
● Openflowでアクセスできるようにしてみよう
5
Wireless openflow
Access point
Openflow controller
Uplink
Openflow switch
一見普通のopenflow switchのように見える
6
よ~く見ると、やっぱり特殊な部分がある
7
Openflow port
● APはStationを区別できる● ただしMulticast/Broadcastは、無線で直接Multicast/Broadcast
Openflow switch
PC PC
AP
STA STA
GTKPTK
単純に STA = Port とすることもできない
8
異なるFrame
SRC MACDST MAC ethtype
ADDR1 ADDR2 ADDR3 ADDR4FC ID Seq
一般形はこんな感じ
無線の受信・送信とペイロードの送信元・送信先の最大4つのアドレスが出現
RA=BSSID TA=SA DAFC ID Seq
APへのデータフレームBSSID = 無線のアドレス(RA ) = APのMACアドレスTA = 無線の送信アドレス(SA ) = STAのMACアドレスDA = STAが本来送りたかった送信先
こう変換してuplinkに送る= “integration service”
9
異なるFrame
● 無線が有線と等価的に使えるのは、802.11がそう設計されていて、Integration serviceが働いているため。
● 実のところ、802.11は「Distributed system + 各種サービス」の形をしている
● 各種サービスも、このフレームで動作している● サービス用のフレームにもアクセスできると面白い
10
現実問題
● Linux wireless netdev が出発点● 無線のnetdevとは?
● wext ioctl ベース(旧)● nl80211 netlink ベース(新)
11
gopenflow PoC
● Port = netdev● それ以上は「実装依存」
● netdevの種類に注意● 他のプログラムが並行動作して構わない(むしろ頼る)
● kernel経由で情報は出し入れする● 同一phyにnetdevが追加されると、自動的にport追加
● 既存の ethernet frame 用 oxm との整合性を考慮● LWAPP(L2)でフレーミング● 802.11 match field の oxm を新設
→ stratosphere experimenterまだ実装初期なので実験的(将来変わるかも)
12
Linux mac80211 basics
● 結局etherとして使えるように頑張る(monitor以外)● 暗号化もカーネル内部で処理される
● 一つのphyに対して複数のnetdevを作れる● チャンネルは各netdevの要求に応じて変化し続ける
● Mode● Managed● AP, AP_VLAN● Ad-hoc● WDS● Mesh● P2P● Monitor
13
Managed
● 基本形。● APに接続するSTA側。● 一般的にplugするとudevから自動的に、このmodeのnetdevが用意される
● 動的な制御が必要で、SSIDやpassphraseはwpa_supplicantのようにnl80211経由で行う。
14
AP
● Access pointを構築するときに使う。● 動的な制御が必要で、hostapdなどでnl80211経由で制御する。
netdev
STA STA STA
横向きのunicastのみapで制御できる。multicast/broadcastは無線的に届く。
15
AP_VLAN
● APモードで異なるgroupを作るときに出現。● hostapdではdynamic_vlan機能を使って、vlan
taggingしてブリッジするような設定にしておくのが一般的。
● openflowでは好きに流れを変えればよいだろう。netdev
STA STA
netdev
STA STA
16
Monitor
● RADIOTAPデバイス(非ether)● 実はRADIOTAPフレームでパケット送出もできる● 制御らしい制御はない
17
その他
● Ad-hoc● IBBS● 実用上はP2Pで置き換えられていきそうな予感● iwで静的に制御できる
● WDS● 無線peerを作れるが、すぐに実用的に使えるわけではない。
● Mesh● 比較的すぐに実用的に使える
● P2P● AP, STAの役割を動的に決めるモード● HW(ドライバ)を超選ぶ● wpa_supplicant で動作させられる
$ iw dev wlan0 ibss join NetworkName 2412
$ iw dev wds0 set peer <MAC address>
$ iw dev mesh0 mesh join NetworkName
18
gopenflow port
● Port は netdev● Ethernet frame● 802.11はLWAPP(L2)
● Pipeline field oxm STROXM_BASIC_DOT11=1 となる● lwapp自体のETH_SRC等は、初期値として802.11フレーム内部から設定される
● Set-fieldを使って802.11フレームを書き換えずに経路変更できる
● Monitor の活用● 単にethernet frameを送受信するだけでなく、802.11
distributed systemのプログラミング環境として使える● IoT的なHubとしても活用しやすいだろう
19
Stratosphere expを使って何ができるか?
● Wifiセンサーデバイスへの対応は簡単になる● 802.11 multicast で気温のデータを広報とか● 物品管理とか
● Action frameを使って独自サービスを実装したり● ドローンの移動に合わせて経路を変えたり● 同じように BLE 6LoWPAN 対応できるとどうなる?● 他は?
● →BoF