Gopenflow demo v1

7
gopenflow demo v1 Hiroaki Kawai <[email protected]>

Transcript of Gopenflow demo v1

Page 1: Gopenflow demo v1

gopenflow demo v1

Hiroaki Kawai<[email protected]>

Page 2: Gopenflow demo v1

2

gopenflow = golang + openflow

● Openflow switchの実装▫ vendor拡張を入れたかった▫ Openflow仕様の細かいところまで突っ込めるようにしておきたかった

● golang?▫ pythonよりはパフォーマンスを出したかった▫ Cよりは処理系のサポートを受けたかった▫ 流行ってるし :-)▫ 実はMIPSのサポートが弱く、openwrt …系が厳しい

● gccでgolang …を駆使している人たちはいるようだが

Page 3: Gopenflow demo v1

3

Installation

● 通常のgolangプロジェクト通り

$ export GOPATH=$HOME/golib

$ go get github.com/hkwi/gopenflow

$ 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

GOPATHはgoのworkspace

必要ファイル群のツリーが出来上がります

$GOPATH/bin以下にコマンドが生成されます。

(go get では、ここまでは行われない)

Page 4: Gopenflow demo v1

4

golang TIPS

● 実行ファイル▫ 静的リンクの単一バイナリファイル▫ クロスコンパイルはGOOS, GOARCHを指定するだけ▫ WindowsでLinux向けクロスコンパイルもできる

● ただし下準備が必要● $GOPATH/src▫ ソースツリーがそのまま取得されている。▫ git pullできる

● コマンド生成▫ コマンドがある該当ディレクトリに入る▫ go build *.go で実行ファイルがその場に生成できる

Page 5: Gopenflow demo v1

5

gopenflowコマンド

● trema_sw▫ Openflow switch プログラム本体▫ trema-edgeにあるCで書かれたopenflow switchと引数が同じ感じになっている。それだけの理由。

● ofctl▫ stratosphere experimenterを扱えるように、ovs-ofctlの機能の一部を代わりに実装。

● ofmon▫ openflow packet_inを可読な文字列で出力するモニタリングプログラム。▫ ovs-ofctlのsnoopやmonitorに類似。

Page 6: Gopenflow demo v1

6

デモ構成

netdev netdev netdev

gopenflow trema_sw

twink

ofmon

ofctl

Page 7: Gopenflow demo v1

7

とりあえずデモ