ネットワークプログラマビリティ勉強会

46
Copyright©2014 NTT corp. All Rights Reserved. OpenFlow ソソソソソソソソソソ Lagopus 2015/4/23 NTT 未未未未未未未未 未未 未未 (hibitomo)

Upload: tomoya-hibi

Post on 03-Aug-2015

602 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: ネットワークプログラマビリティ勉強会

Copyright©2014 NTT corp. All Rights Reserved.

OpenFlow ソフトウェアスイッチ

Lagopus

2015/4/23NTT 未来ねっと研究所 日比 智也 (hibitomo)

Page 2: ネットワークプログラマビリティ勉強会

2Copyright©2014 NTT corp. All Rights Reserved.

構成

Lagopus の概要Lagopus ( OpenFlow )で遊んでみ

Page 3: ネットワークプログラマビリティ勉強会

3Copyright©2014 NTT corp. All Rights Reserved.

Agenda

背景とターゲット

デザインと評価結果

最近の活動

Page 4: ネットワークプログラマビリティ勉強会

5Copyright©2014 NTT corp. All Rights Reserved.

コントローラ

SDN ? OpenFlow ? Lagopus ?

一般的なネットワーク装置

ルータ

コントロールプレーン

データプレーン

ファイアーウォール

コントロールプレーン

データプレーン

ロードバランサ

コントロールプレーン

データプレーン

SDN

スイッチデータプレーン

スイッチデータプレーン

スイッチ

コントロールプレーン

データプレーン

アプリ

コントローラ

コントロールプレーン

アプリプログラマブル API

OpenFlow プロトコル

Page 5: ネットワークプログラマビリティ勉強会

6Copyright©2014 NTT corp. All Rights Reserved.

OpenFlow ?

どういうパケットだったら 受信ポート番号,パケットヘッダの値 ( 宛先,ソー

ス,各種 ID...) どういう処理をする

パケットヘッダの追加,削除,編集 転送 ( ユニキャスト,マルチキャスト,ロードバラ

ンシング ...) コントローラにパケットを転送して処理も可能

OpenFlow コントローラ

コントロールプレーン

OpenFlow プロトコル

OpenFlow スイッチデータプレーン

Flow Table

フローパターン アクション

フローパターン アクション カウンター

カウンター

Flow Table#2

Flow Table#3

Flow Table#4

Page 6: ネットワークプログラマビリティ勉強会

7Copyright©2014 NTT corp. All Rights Reserved.

Lagopus ?

OpenFlow スイッチのソフトウェア実装 汎用 x86 サーバで動作可能

高速なパケット処理と幅広いプロトコルに対応 > 10Gbps OpenFlow 仕様に幅広く対応

オープンソース

OpenFlow コントローラ

コントロールプレーン

OpenFlow プロトコル

OpenFlow スイッチデータプレーン

Flow Table

フローパターン アクション

フローパターン アクション カウンター

カウンター

Flow Table#2

Flow Table#3

Flow Table#4

Page 7: ネットワークプログラマビリティ勉強会

8Copyright©2014 NTT corp. All Rights Reserved.

何ができる?

SDN Japan 2014 での実証実験

Page 8: ネットワークプログラマビリティ勉強会

9Copyright©2014 NTT corp. All Rights Reserved.

何ができる?

ブラジル - 日本間(約 1 万 8,000km )の映像伝送実験

Page 9: ネットワークプログラマビリティ勉強会

10Copyright©2014 NTT corp. All Rights Reserved.

何ができる?

iPOP2015 での実証実験

LagopusLagopus

Packet Transport(MPLS-TP)

Optical Packet Transport

OFRO/Ryu

H-CNT

ODENOS/Ryu

Orchestrator (ODENOS)

Trema Edge

Lagopus

SDN NW

Optical/Transport

NW

Video streaming

Copies packets and dispatches them to two paths

Page 10: ネットワークプログラマビリティ勉強会

13Copyright©2014 NTT corp. All Rights Reserved.

ターゲット

TOR

Virtual Switch

Hypervisor

VM VM

Virtual Switch

Hypervisor

NFV NFV

Virtual Switch

Hypervisor

VM VM

Gateway CPE

Data CenterWide-area Network

Access Network Intranet

Cloud , NFV に対応する仮想スイッチ

異種 NW を接続するゲートウェイ向けソフトスイッチ

異種 NW を接続するゲートウェイ向けソフトスイッチ

Page 11: ネットワークプログラマビリティ勉強会

14Copyright©2014 NTT corp. All Rights Reserved.

Agenda

背景とターゲット

デザインと評価結果

最近の活動

Page 12: ネットワークプログラマビリティ勉強会

15Copyright©2014 NTT corp. All Rights Reserved.

設計の概要

シンプルなモジュール構成 スイッチエージェント データプレーン

スイッチエージェント 統一スイッチ資源モデル HAL を介したデータプレーン制御

(Event queue ベース )

データプレーン 高速 NW I/O ライブラリ

(Intel DPDK) 複数フローテーブルに

対応したフローキャッシュ

OpenFlow controller

OpenFlow 1.3

Page 13: ネットワークプログラマビリティ勉強会

17Copyright©2014 NTT corp. All Rights Reserved.

機能評価の例

Conformance test results by Ryu Certification http://osrg.github.io/ryu/certification.htmlOpenFlow Switch

Action(56)

Set Field(170)

Match(714)

Group(15)

Meter(36)

Total(991)

Software

CpQd 50 159 708 15 30 962

Indigo Virtual Switch 17 46 337 1 0 401

LINC 24 68 428 3 0 523

Open vSwitch 34 96 534 6 0 670Open vSwitch netdev

34 90 467 8 0 599

Trema Switch 50 159 708 15 34 966

Lagopus 56 161 714 15 34 980

Hardware

Centec V350 3 8 172 4 0 187

Edge-Core AS4600 3 0 63 0 18 84

HP 2920 0 2 44 0 0 46

IBM G8264 6 14 108 0 0 128

NEC PF5220 7 37 216 3 0 263

NoviKit200 37 35 164 15 0 251

Pica8 P-3290 24 49 362 0 0 435

Page 14: ネットワークプログラマビリティ勉強会

18Copyright©2014 NTT corp. All Rights Reserved.

性能評価の例 (WAN-DC ゲートウェイ )

Throughput vs packet size 1 flow flow-cache

Throughput vs flows 1518 bytes packet

Page 15: ネットワークプログラマビリティ勉強会

19Copyright©2014 NTT corp. All Rights Reserved.

性能評価の例 (L2 スイッチ )

Throughput vs packet size

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

LINC OVS (netdev) OVS (kernel) Lagopus(software)

Mbp

s

72

128

256

512

1024

1280

1518

Packet size(bytes)

Page 16: ネットワークプログラマビリティ勉強会

20Copyright©2014 NTT corp. All Rights Reserved.

Agenda

背景とターゲット

デザインと評価結果

最近の活動

Page 17: ネットワークプログラマビリティ勉強会

21Copyright©2014 NTT corp. All Rights Reserved.

仮想マシンとの接続を実現

2015/2/1 リリース DPDK 2.0.0rc1 にマージされた

Guest1

QEMU

App

DPDK

Guest2

QEMU

App

DPDK

Virtio-net PMD Virtio-net PMD

Lagopusvswitch

DPDK

PMD

Map memory in guest VM to lagopus memory

Map memory in guest VM to lagopus memory

virtio virtio

virtioqueue

virtioqueue

PMDvNIC

PMDvNIC

Page 18: ネットワークプログラマビリティ勉強会

22Copyright©2014 NTT corp. All Rights Reserved.

ソースコード

2014 年 7 月 31 日に公開 http://lagopus.github.io/

開発への参加 コードの提供 -> GitHub Pull Request バグレポート -> GitHub Issues 議論 -> Developers ML

Page 19: ネットワークプログラマビリティ勉強会

23Copyright©2014 NTT corp. All Rights Reserved.

構成

Lagopus の概要Lagopus ( OpenFlow )で遊んでみ

Page 20: ネットワークプログラマビリティ勉強会

24Copyright©2014 NTT corp. All Rights Reserved.

本日のテーマ

Flow を設計して動かしてみるOpenFlow っぽいことをする

Page 21: ネットワークプログラマビリティ勉強会

25Copyright©2014 NTT corp. All Rights Reserved.

OpenFlow ?

どういうパケットだったら 受信ポート番号,パケットヘッダの値 ( 宛先,ソー

ス,各種 ID...) どういう処理をする

パケットヘッダの追加,削除,編集 転送 ( ユニキャスト,マルチキャスト,ロードバラ

ンシング ...) コントローラにパケットを転送して処理も可能

OpenFlow コントローラ

コントロールプレーン

OpenFlow プロトコル

OpenFlow スイッチデータプレーン

Flow Table

フローパターン アクション

フローパターン アクション カウンター

カウンター

Flow Table#2

Flow Table#3

Flow Table#4

Page 22: ネットワークプログラマビリティ勉強会

26Copyright©2014 NTT corp. All Rights Reserved.

使用ソフトウェア

Lagopus http://lagopus.github.io/

Ryu (app/ofctl_rest.py) http://osrg.github.io/ryu/

ofctl_script http://github.com/hibitomo/ofctl_script

Page 23: ネットワークプログラマビリティ勉強会

27Copyright©2014 NTT corp. All Rights Reserved.

構成

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +----- VM 2+-------------------------------------+

1. つなげてみる2. 増やしてみる( VLAN )3. リファクタリング&デバッグ(ミラーリング)4. 騙してみる( DHCP サーバの共有)

Page 24: ネットワークプログラマビリティ勉強会

28Copyright©2014 NTT corp. All Rights Reserved.

Flow 1: つなげてみる

ns1 - ns2, ns3 - ns4

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +----- VM 2+-------------------------------------+

Page 25: ネットワークプログラマビリティ勉強会

29Copyright©2014 NTT corp. All Rights Reserved.

Flow 1: つなげてみる

table 0{"priority":100,"actions":["OUTPUT:3"],"match":{"in_port":2}}{"priority":100,"actions":["OUTPUT:2"],"match":{"in_port":3}}{"priority":100,"actions":["OUTPUT:5"],"match":{"in_port":4}}{"priority":100,"actions":["OUTPUT:4"],"match":{"in_port":5}}

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +----- VM 2+-------------------------------------+

双方向のルールを書く

Page 26: ネットワークプログラマビリティ勉強会

30Copyright©2014 NTT corp. All Rights Reserved.

Flow 1: つなげてみる

ユースケース ポート VLAN タグ変換

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +----- VM 2+-------------------------------------+

Page 27: ネットワークプログラマビリティ勉強会

31Copyright©2014 NTT corp. All Rights Reserved.

Flow 2: 増やしてみる

VLAN100: ns1 - ns2VLAN200: ns3 - ns4

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

Page 28: ネットワークプログラマビリティ勉強会

32Copyright©2014 NTT corp. All Rights Reserved.

Flow 2: 増やしてみる

table 0{"priority":100,"actions":["OUTPUT:3","PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":2}}{"priority":100,"actions":["OUTPUT:2","PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":3}}{"priority":100,"actions":["POP_VLAN","OUTPUT:2","OUTPUT:3"],"match":{"dl_vlan":"100","in_port":6}}+-----+ +-----+ +-----+ +-----+ +-----+

| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

OUTPUTを列挙TAGの扱い注意

※ 普通は group tableを使用

Page 29: ネットワークプログラマビリティ勉強会

33Copyright©2014 NTT corp. All Rights Reserved.

Flow 2: 増やしてみる

ユースケース タグ VLAN タグ変換 モニタリング

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

Page 30: ネットワークプログラマビリティ勉強会

34Copyright©2014 NTT corp. All Rights Reserved.

Flow 3: リファクタリング

マルチテーブル,メタデータを活用 1 テーブルだけではフロー複雑. 書きこむ,書き換えるフローの数も多い.

OpenFlow スイッチデータプレーン

Flow Table

フローパターン アクション

フローパターン アクション カウンター

カウンター

Flow Table#2

Flow Table#3

Flow Table#4

メタデータ:テーブル間で情報を渡す為のフィールド

Page 31: ネットワークプログラマビリティ勉強会

35Copyright©2014 NTT corp. All Rights Reserved.

Flow 3: リファクタリング

table 0{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":2}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":3}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1","POP_VLAN"],"match":{"dl_vlan":"100","in_port":6}}{"priority":0,"actions":[],"match":{}}

table 1{"priority":0,"actions":["GOTO_TABLE:2"],"match":{}}

table 2{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3"],"match":{"in_port":2,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:2"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3","OUTPUT:2"],"match":{"in_port":6,"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:3"],"match":{}}

table 3{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":2,"metadata":“100"}}{"priority":0,"actions":[],"match":{}}

※ 普通は group tableを使います

Page 32: ネットワークプログラマビリティ勉強会

36Copyright©2014 NTT corp. All Rights Reserved.

Flow 3: リファクタリング

table 0{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":2}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":3}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1","POP_VLAN"],"match":{"dl_vlan":"100","in_port":6}}{"priority":0,"actions":[],"match":{}}

table 1{"priority":0,"actions":["GOTO_TABLE:2"],"match":{}}

table 2{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3"],"match":{"in_port":2,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:2"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3","OUTPUT:2"],"match":{"in_port":6,"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:3"],"match":{}}

table 3{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":2,"metadata":“100"}}{"priority":0,"actions":[],"match":{}}

• 入力ポート, TAGから VLANを識別• Metadataにメモ

Application 1• Accessへのブロードキャスト

Application 2• Trunkへのブロードキャスト

• デバッグ用

※ 普通は group tableを使います

Page 33: ネットワークプログラマビリティ勉強会

37Copyright©2014 NTT corp. All Rights Reserved.

Flow 3+: デバッグ

ポートミラーリングVLAN ミラーリング

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

Page 34: ネットワークプログラマビリティ勉強会

38Copyright©2014 NTT corp. All Rights Reserved.

Flow 3+: デバッグ

table 0{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":2}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":3}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1","POP_VLAN"],"match":{"dl_vlan":"100","in_port":6}}{"priority":0,"actions":[],"match":{}}

table 1{"priority":100,"actions":["GOTO_TABLE:2","OUTPUT:1"],"match":{"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:2"],"match":{}}

table 2{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3"],"match":{"in_port":2,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:2"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3","OUTPUT:2"],"match":{"in_port":6,"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:3"],"match":{}}

table 3{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":2,"metadata":“100"}}{"priority":0,"actions":[],"match":{}}

Page 35: ネットワークプログラマビリティ勉強会

39Copyright©2014 NTT corp. All Rights Reserved.

Flow 3+: デバッグ

table 0{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":2}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1"],"match":{"in_port":3}}{"priority":100,"actions":["WRITE_METADATA:100","GOTO_TABLE:1","POP_VLAN"],"match":{"dl_vlan":"100","in_port":6}}{"priority":0,"actions":[],"match":{}}

table 1{"priority":100,"actions":["GOTO_TABLE:2","OUTPUT:1"],"match":{"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:2"],"match":{}}

table 2{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3"],"match":{"in_port":2,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:2"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["GOTO_TABLE:3","OUTPUT:3","OUTPUT:2"],"match":{"in_port":6,"metadata":“100"}}{"priority":0,"actions":["GOTO_TABLE:3"],"match":{}}

table 3{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":3,"metadata":“100"}}{"priority":100,"actions":["PUSH_VLAN:33024","SET_FIELD: {vlan_vid:100}","OUTPUT:6"],"match":{"in_port":2,"metadata":“100"}}{"priority":0,"actions":[],"match":{}}

• Metadataを用いて識別.• パケットをミラーリング

• 入力ポート, TAGから VLANを識別• Metadataにメモ

Application 1• Accessへのブロードキャスト

Application 2• Trunkへのブロードキャスト

Page 36: ネットワークプログラマビリティ勉強会

40Copyright©2014 NTT corp. All Rights Reserved.

Flow 4: 騙してみる

1 台の DHCP サーバを複数の VLAN セグメントで共有.

MAC アドレスは既知.

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

ns0-veth0 - 02:6b:4d:3c:3a:8c 192.168.0.1

ns1-veth0 - da:8d:ed:ec:da:70 192.168.0.10

ns2-veth0 - 4e:d2:0a:8e:2e:93 192.168.0.20

ns3-veth0 - c6:78:f7:f8:83:fd 192.168.0.10

ns4-veth0 - 12:10:c6:03:d5:d9 192.168.0.30

Page 37: ネットワークプログラマビリティ勉強会

41Copyright©2014 NTT corp. All Rights Reserved.

Flow 4: 騙してみる

table 0{"priority":110,"actions":["OUTPUT:2"],"match":{"dl_dst":"46:c0:64:90:c6:92","in_port":1}}{"priority":110,"actions":["OUTPUT:3"],"match":{"dl_dst":"d6:7e:8d:e9:f8:a5","in_port":1}}

...

table 1{"priority":110,"actions":["OUTPUT:1"],"match":{"dl_type":2048,"tp_src":68,"nw_proto":17,"tp_dst":67,"metadata":"100"}}{"priority":110,"actions":["OUTPUT:1"],"match":{"dl_type":2048,"tp_src":68,"nw_proto":17,"tp_dst":67,"metadata":"200"}}

...

Page 38: ネットワークプログラマビリティ勉強会

42Copyright©2014 NTT corp. All Rights Reserved.

Flow 4: 騙してみる

table 0{"priority":110,"actions":["OUTPUT:2"],"match":{"dl_dst":"46:c0:64:90:c6:92","in_port":1}}{"priority":110,"actions":["OUTPUT:3"],"match":{"dl_dst":"d6:7e:8d:e9:f8:a5","in_port":1}}

...

table 1{"priority":110,"actions":["OUTPUT:1"],"match":{"dl_type":2048,"tp_src":68,"nw_proto":17,"tp_dst":67,"metadata":"100"}}{"priority":110,"actions":["OUTPUT:1"],"match":{"dl_type":2048,"tp_src":68,"nw_proto":17,"tp_dst":67,"metadata":"200"}}

...

• 入力ポートから DHCPサーバの返答と認識,宛先MACから VLANを識別

• UDPのポート番号から DHCPのリクエストと識別

Page 39: ネットワークプログラマビリティ勉強会

43Copyright©2014 NTT corp. All Rights Reserved.

Flow 4: 騙してみる

ユースケース 仮想マシンの共有( NFV ,アプリ) ユニキャストのマルチキャスト化

+-----+ +-----+ +-----+ +-----+ +-----+| | | | | | | | | || ns0 | | ns1 | | ns2 | | ns3 | | ns4 || | | | | | | | | |+--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+| 1 2 3 4 5 || Lagopus OFswitch || 6 +------ trunk vlan100,200+-------------------------------------+

Page 40: ネットワークプログラマビリティ勉強会

44Copyright©2014 NTT corp. All Rights Reserved.

イベントのフローを想像する

ブラジル - 日本間(約 1 万 8,000km )の映像伝送実験 IP を変換してルータをだまし、経路切り替え

Page 41: ネットワークプログラマビリティ勉強会

45Copyright©2014 NTT corp. All Rights Reserved.

イベントのフローを想像する

iPoP2015 での実証実験

LagopusLagopus

Packet Transport(MPLS-TP)

Optical Packet Transport

OFRO/Ryu

H-CNT

ODENOS/Ryu

Orchestrator (ODENOS)

Trema Edge

Lagopus

SDN NW

Optical/Transport

NW

Video streaming

Copies packets and dispatches them to two paths

Page 42: ネットワークプログラマビリティ勉強会

46Copyright©2014 NTT corp. All Rights Reserved.

イベントのフローを想像する

SDN Japan 2014 での実証実験 http://www.sdnjapan.org/document_2014/31_session5_Ishida.pdf

Page 43: ネットワークプログラマビリティ勉強会

47Copyright©2014 NTT corp. All Rights Reserved.

Flow 設計の注意

パケットイン 遅い,遅延,パケット順序

ARP ARP 学習しないと通信は始まらない

パケットコピー パケットコピーの処理は重い MAC ラーニング問題

フロー数の容量 フロー数が増えすぎると死ぬ (特に HW スイッチ. SW は結構大丈夫)

Page 44: ネットワークプログラマビリティ勉強会

48Copyright©2014 NTT corp. All Rights Reserved.

Flow 設計の注意

パケットイン 遅い,遅延,パケット順序

ARP ARP 学習しないと通信は始まらない

パケットコピー パケットコピーの処理は重い MAC ラーニング問題

フロー数の容量 フロー数が増えすぎると死ぬ (特に HW スイッチ. SW は結構大丈夫)

• パケットインをしなければ行けない場面はよくある.• フロー数の容量も含め,性能を意識した設計が必要

Page 45: ネットワークプログラマビリティ勉強会

49Copyright©2014 NTT corp. All Rights Reserved.

今日のまとめ

Lagopus ってすごいらしい. はやい  (x86 サーバ, Linux) 安い ( OSS ) うまい  (10Gbps, 1MFlow, その他機能 )

OpenFlow って気持ち悪いこともできちゃう だが,それがいい 痒いところに手が届かない場面では,是非

OpenFlow を!

Page 46: ネットワークプログラマビリティ勉強会

50Copyright©2014 NTT corp. All Rights Reserved.

Thank you for your attention

This research is a part of the project for “Research and Development of Network Virtualization Technology” supported by the Ministry of Internal Affairs and Communications.