1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gopenflow demo環境構築メモ

Last updated at Posted at 2015-03-26

Raspbian

Installation

raspbian を SD カードに書く。

いつも通り最新版にしておく。

apt-get update -y
apt-get dist-upgrade -y

手持ちのUSB接続日本語キーボード対応。コンソールの時に loadkeys jp106 で日本語になる(X window 使ってるときは別の方法)。

apt-get install console-data

手元にある NEC Aterm WL300NU-AG という usb wifi dongle 対応。中身は atheros で、carl9170 ドライバで動作させる。ファイルが足りないので要追加インストール。インストール後は udev から再起動しないといけないので、いっそのことシステム全体再起動しておくと漏れが無くて簡単。

apt-get install iw wireless-tools linux-firmware-free

raspbian が古いので、golang は自前でインストールする。

apt-get install mercurial
hg clone https://code.google.com/p/go
cd go/src && ./all.bash

raspbian が古いので、openvswitch も自前でインストールする(openflow 1.3対応のため)。

wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz
tar xf openvswitch-2.3.1.tar.gz && cd openvswitch-2.3.1 && ./configure && make install

Arch

本家サイトの記述を適宜参照する。

pacman -Suy
pacman -S iw wireless_tools crda
pacman -S lxde xorg-xinit xf86-video-fbdev
pacman -S git gcc make pkg-config patch openvswitch go
echo "exec startlxde" > .xinitrc

archのほうがraspi2のCPUに最適化されてて高速かな?古いものがないので、いろいろすっ飛ばせる。

lxde の無線マネージャを切りたい場合は、タスクバーで右クリック!してメニューを出す。シングルボタンマウス使用時は無理。

共通

gopenflow をビルドしておく。

go get github.com/hkwi/gopenflow
# ここで gopacket にパッチを当てる
cd $GOPATH/src/code.google.com/p/gopacket && curl https://gist.githubusercontent.com/hkwi/99b6cbdb5579bed4aa09/raw/2547d09ba5ceb6ab57995205f51e3f72d6e54424/gopacket.patch | patch -p1
go install github.com/hkwi/gopenflow/ofp4sw/trema_sw
go install github.com/hkwi/gopenflow/ofp4sw/ofctl
go install github.com/hkwi/gopenflow/ofp4sw/ofmon

運用

キーボード周り

その場で変更するのは次のコマンド。

  • コンソール
  • sudo loadkeys jp106
  • X window
  • setxkbmap -layout jp

Demo

window を使って、いろいろな出力を同時進行で見せておく。

startx
git clone https://github.com/hkwi/twink
cd twink && python -m twink.ovs
golib/bin/trema_sw -i 15 -e wlan0

launch packet in dumper in another window

golib/bin/ofmon unix:path/to/socket.monitor

demo follows...

ovs-ofctl -O OpenFlow13 dump-ports-desc unix:///path/to/socket.jackin
iw dev wlan0 interface add mon0 type monitor
ovs-ofctl -O OpenFlow13 dump-ports-desc unix:///path/to/socket.jackin
golib/bin/ofctl unix:path/to/socket.jackin dump-flows
golib/bin/ofctl unix:path/to/socket.jackin add-flow dot11_tag=0,@apply,output=controller
golib/bin/ofctl unix:path/to/socket.jackin dump-flows
golib/bin/ofctl unix:path/to/socket.jackin del-flows
golib/bin/ofctl unix:path/to/socket.jackin dump-flows
golib/bin/ofctl unix:path/to/socket.jackin add-flow addr1=ff:ff:ff:ff:ff:ff,@apply,output=controller
golib/bin/ofctl unix:path/to/socket.jackin del-flows
golib/bin/ofctl unix:path/to/socket.jackin add-flow addr2=--:--:--:--:--:--,@apply,output=controller # 対象機器のMACに読み替える
echo "ctrl_interface=/tmp/w" > s.conf
wpa_supplicant -Dnl80211 -iwlan0 -cs.conf &
wpa_cli -p /tmp/w
 scan
 scan_result
 add_network
 set_network 0 ssid "xxxx"
 set_network 0 key_mgmt NONE
 enable_network 0
 select_network 0
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?