10
Raspberry Piで OpenFlow動作を確認してみました 2014.2.22 @ttsubo ARMボードもくもく勉強会

OpenFlow in Raspberry Pi

Embed Size (px)

DESCRIPTION

Evaluation of LINC-Switch in Raspberry Pi

Citation preview

Page 1: OpenFlow in Raspberry Pi

Raspberry Piで OpenFlow動作を確認してみました

2014.2.22 @ttsubo

ARMボードもくもく勉強会

Page 2: OpenFlow in Raspberry Pi

自己紹介

2

・通信事業者向けネットワークエンジニアをやってます。 ・最近は、データセンタ系ネットワーク技術動向に興味があり、   OpenStack等のIaaS管理基盤技術を勉強中。 ・さらに、「これからの時代、ネットワーク屋も、プログラミ  ング必要だよね。」という風潮に感化されて、OpenFlow  プログラミングも勉強中。

@ttsubo

Page 3: OpenFlow in Raspberry Pi

動機付け

3

・OpenFlowスイッチを安価に手に入れたいRaspberry Pi

+FlowForwarding.org

LINC-Switch

=OpenFlow1.3

Page 4: OpenFlow in Raspberry Pi

Raspberry Piとは?

4

「Raspberry Pi」は、イギリス生まれで低価格のPCボード。名刺サイズと小型ながら、組み込みシステムのコントローラーとしてはもちろん、サーバーとしても十分な性能を備える。GUIベースのOS(Linux)も動き、デスクトップPCとしても、テレビのセットトップボックスとしても使用できる。2013年7月時点で世界で120万台が出荷された、人気ボードとなっている。

IT Proより引用 http://itpro.nikkeibp.co.jp/article/COLUMN/20130919/505592/

Page 5: OpenFlow in Raspberry Pi

LINC-Switchとは?

5

・オープンソースベースのOpenFlowスイッチ

・OpenFlow v1.2/1.3.1とOF-Config1.1をサポート ・OFプロトコルをサポートするどのOpen Flowコントローラ とも動作可能

Page 6: OpenFlow in Raspberry Pi

6

http://ttsubo.hatenablog.com/entry/2014/02/16/221417

以下のブログ記事を参考にしてください

Ryu SDN Frameworkを活用した簡易ルータ機能の作成(7)  ~IPルーティング基本編~

OpenFlow動作確認方法

Page 7: OpenFlow in Raspberry Pi

7

FlowMod

OpenflowRouter

Rest-clientInterface設定 Gateway設定

Flowテーブル

PortTableArpTable

REST-IF

LINC-Switch(OFS)

PC-B

192.168.101.1

PC-A

192.168.100.1

OpenFlow簡易ルータの概要

Page 8: OpenFlow in Raspberry Pi

OpenFlow動作の確認結果

8

PC-A PC-BFlow テーブル

FlowMod を用いたFlowエントリ 書き込み処理は正しく動作した

Packet-out を用いたパケット送出処理は正しく動作した

Flowエントリにマッチしない 未知パケットのPacket-in 処理は正しく動作した

Flowエントリに従った Forwarding 処理は正しく動作した

SecureChannel は正しく開設できた

OFC

!

OpenFlow化したRaspberry Piで簡易ルータを実現して みて、期待どおり、動作できました!!

LINC-Switch(OFS)

Page 9: OpenFlow in Raspberry Pi

注意事項

9

Rest-clientREST-IF

LINC-Switch(OFS)

OpenflowRouter

FlowMod

OFSには、スイッチIDとしてdpid(通常は自動付与)を 変更する場合、of_configを活用する必要があります。

dpid

OFSを区別するdpidは 自由に変更したい

Page 10: OpenFlow in Raspberry Pi

参考)LINC-Switch上での設定方法

10

(linc@LincSwitch)1> {ok, C} = enetconf_client:connect("localhost", [{port, 1830}, {user, “linc"},             {password, "linc"}]). (linc@LincSwitch)1> linc_ofconfig:get_switch_state(0). !(linc@LincSwitch)1> Controller = {controller, [{id, ["Switch0-DefaultController"]},             {'ip-address', ["192.168.0.100"]},             {port, ["6633"]}, {protocol, ["tcp"]}]}, (linc@LincSwitch)1> Config = {'capable-switch', [{xmlns, "urn:onf:of111:config:yang"}],             [{id, ["CapableSwitch0"]}, {'logical-switches',             [{'switch', [{id, ["LogicalSwitch0"]}, {'datapath-id', ["00:00:00:00:00:01:00:00"]},             {enabled, ["true"]}, {controllers, [Controller]}]}]}]}. !(linc@LincSwitch)1> {ok, Y} = enetconf_client:edit_config(C, running, {xml, Config}). !(linc@LincSwitch)1> linc_ofconfig:get_switch_state(0).

OFS起動プロンプト上でのコマンド投入例