Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Copyright©2014 NTT corp. All Rights Reserved.
OpenFlowソフトウェアスイッチ
Lagopus
2015/4/23
NTT未来ねっと研究所 日比 智也 (hibitomo)
1Copyright©2014 NTT corp. All Rights Reserved.
構成
 Lagopusの概要
 Lagopus(OpenFlow)で遊んでみる
2Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 背景とターゲット
 デザインと評価結果
 最近の活動
4Copyright©2014 NTT corp. All Rights Reserved.
コントローラ
SDN?OpenFlow?Lagopus?
 一般的なネットワーク装置
ルータ
コントロールプレーン
データプレーン
ファイアーウォール
コントロールプレーン
データプレーン
ロードバランサ
コントロールプレーン
データプレーン
 SDN
スイッチ
データプレーン
スイッチ
データプレーン
スイッチ
コントロールプレーン
データプレーン
アプリ
コントローラ
コントロールプレーン
アプリ
プログラマブルAPI
OpenFlowプロトコル
5Copyright©2014 NTT corp. All Rights Reserved.
OpenFlow?
 どういうパケットだったら
 受信ポート番号,パケットヘッダの値(宛先,ソー
ス,各種ID...)
 どういう処理をする
 パケットヘッダの追加,削除,編集
 転送(ユニキャスト,マルチキャスト,ロードバラ
ンシング...)
 コントローラにパケットを転送して処理も可能
OpenFlow コントローラ
コントロールプレーン
OpenFlow
プロトコル
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
6Copyright©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
7Copyright©2014 NTT corp. All Rights Reserved.
何ができる?
 SDN Japan 2014での実証実験
 アク セスポイ ント  
■  A Pの識別(V LA N )
■  V ID 毎にQoS制御
PoEスイッチ
インターネット
アクセスポイント
( AP)
La g op u sの役割
8Copyright©2014 NTT corp. All Rights Reserved.
何ができる?
 ブラジル-日本間(約1万8,000km)の映像伝送実験
9Copyright©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
12Copyright©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 Center Wide-area Network Access Network Intranet
Cloud,NFVに対応
する仮想スイッチ
異種NWを接続する
ゲートウェイ向け
ソフトスイッチ
異種NWを接続する
ゲートウェイ向け
ソフトスイッチ
13Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 背景とターゲット
 デザインと評価結果
 最近の活動
14Copyright©2014 NTT corp. All Rights Reserved.
設計の概要
 シンプルなモジュール構成
 スイッチエージェント
 データプレーン
 スイッチエージェント
 統一スイッチ資源モデル
 HALを介したデータプレーン制御
(Event queueベース)
 データプレーン
 高速NW I/Oライブラリ
(Intel DPDK)
 複数フローテーブルに
対応したフローキャッシュ
OpenFlow controller
OpenFlow 1.3
16Copyright©2014 NTT corp. All Rights Reserved.
機能評価の例
 Conformance test results by Ryu Certification
 http://osrg.github.io/ryu/certification.html
OpenFlow 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 670
Open 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
17Copyright©2014 NTT corp. All Rights Reserved.
性能評価の例 (WAN-DCゲートウェイ)
0
1
2
3
4
5
6
7
8
9
10
0 200 400 600 800 1000 1200 1400 1600
Throughput(Gbps)
Packet size (byte)
10 flow rules
100 flow rules
1k flow rules
10k flow rules
100k flow rules
1M flow rules
0
1
2
3
4
5
6
7
8
9
10
1 10 100 1000 10000 100000 1000000
Throughput(Gbps)
flows
10k flow rules
100k flow rules
1M flow rules
 Throughput vs packet size
 1 flow
 flow-cache
 Throughput vs flows
 1518 bytes packet
18Copyright©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)
Mbps
72
128
256
512
1024
1280
1518
Packet size
(bytes)
19Copyright©2014 NTT corp. All Rights Reserved.
Agenda
 背景とターゲット
 デザインと評価結果
 最近の活動
20Copyright©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
Lagopus
vswitch
DPDK
PMD
Map memory in guest VM
to lagopus memory
Map memory in guest VM
to lagopus memory
virtio virtio
virtio
queue
virtio
queue
PMD
vNIC
PMD
vNIC
21Copyright©2014 NTT corp. All Rights Reserved.
ソースコード
 2014年7月31日に公開
 http://lagopus.github.io/
 開発への参加
 コードの提供 -> GitHub Pull Request
 バグレポート -> GitHub Issues
 議論 -> Developers ML
22Copyright©2014 NTT corp. All Rights Reserved.
構成
 Lagopusの概要
 Lagopus(OpenFlow)で遊んでみる
23Copyright©2014 NTT corp. All Rights Reserved.
本日のテーマ
 Flowを設計して動かしてみる
 OpenFlowっぽいことをする
24Copyright©2014 NTT corp. All Rights Reserved.
OpenFlow?
 どういうパケットだったら
 受信ポート番号,パケットヘッダの値(宛先,ソー
ス,各種ID...)
 どういう処理をする
 パケットヘッダの追加,削除,編集
 転送(ユニキャスト,マルチキャスト,ロードバラ
ンシング...)
 コントローラにパケットを転送して処理も可能
OpenFlow コントローラ
コントロールプレーン
OpenFlow
プロトコル
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
25Copyright©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
26Copyright©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サーバの共有)
27Copyright©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
+-------------------------------------+
28Copyright©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
+-------------------------------------+
双方向のルール
を書く
29Copyright©2014 NTT corp. All Rights Reserved.
Flow 1: つなげてみる
 ユースケース
 ポートVLAN
 タグ変換
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| ns0 | | ns1 | | ns2 | | ns3 | | ns4 |
| | | | | | | | | |
+--+--+ +--+--+ +--+--+ +--+--+ +--+--+
| | | | |
+--+-------+-------+-------+-------+--+
| 1 2 3 4 5 |
| Lagopus OFswitch |
| 6 +----- VM 2
+-------------------------------------+
30Copyright©2014 NTT corp. All Rights Reserved.
Flow 2: 増やしてみる
 VLAN100: ns1 - ns2
 VLAN200: ns3 - ns4
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| ns0 | | ns1 | | ns2 | | ns3 | | ns4 |
| | | | | | | | | |
+--+--+ +--+--+ +--+--+ +--+--+ +--+--+
| | | | |
+--+-------+-------+-------+-------+--+
| 1 2 3 4 5 |
| Lagopus OFswitch |
| 6 +------ trunk vlan100,200
+-------------------------------------+
31Copyright©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を使用
32Copyright©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
+-------------------------------------+
33Copyright©2014 NTT corp. All Rights Reserved.
Flow 3: リファクタリング
 マルチテーブル,メタデータを活用
 1テーブルだけではフロー複雑.
書きこむ,書き換えるフローの数も多い.
OpenFlow スイッチ
データプレーン
Flow Table
フローパターン アクション
フローパターン アクション カウンター
カウンター
Flow
Table
#2
Flow
Table
#3
Flow
Table
#4
 メタデータ:テーブル間で情報を渡す為の
フィールド
34Copyright©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":"1
00","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を使います
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":"1
00","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を使います
36Copyright©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
+-------------------------------------+
37Copyright©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":"1
00","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":{}}
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":"1
00","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へのブロードキャスト
39Copyright©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
40Copyright©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:f
8: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"}}
...
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:f
8: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のリクエス
トと識別
42Copyright©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
+-------------------------------------+
43Copyright©2014 NTT corp. All Rights Reserved.
イベントのフローを想像する
 ブラジル-日本間(約1万8,000km)の映像伝送実験
 IPを変換してルータをだまし、経路切り替え
44Copyright©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
45Copyright©2014 NTT corp. All Rights Reserved.
イベントのフローを想像する
 SDN Japan 2014での実証実験
 http://www.sdnjapan.org/document_2014/31_session5_Ishida.pdf
 アク セスポイ ント  
■  A Pの識別(V LA N )
■  V ID 毎にQoS制御
PoEスイッチ
インターネット
アクセスポイント
( AP)
La g op u sの役割
46Copyright©2014 NTT corp. All Rights Reserved.
Flow設計の注意
 パケットイン
 遅い,遅延,パケット順序
 ARP
 ARP学習しないと通信は始まらない
 パケットコピー
 パケットコピーの処理は重い
 MACラーニング問題
 フロー数の容量
 フロー数が増えすぎると死ぬ
(特にHWスイッチ.SWは結構大丈夫)
47Copyright©2014 NTT corp. All Rights Reserved.
Flow設計の注意
 パケットイン
 遅い,遅延,パケット順序
 ARP
 ARP学習しないと通信は始まらない
 パケットコピー
 パケットコピーの処理は重い
 MACラーニング問題
 フロー数の容量
 フロー数が増えすぎると死ぬ
(特にHWスイッチ.SWは結構大丈夫)
• パケットインをしなければ行けない場面はよくある.
• フロー数の容量も含め,性能を意識した設計が必要
48Copyright©2014 NTT corp. All Rights Reserved.
今日のまとめ
 Lagopusってすごいらしい.
 はやい (x86サーバ,Linux)
 安い (OSS)
 うまい (10Gbps, 1MFlow, その他機能)
 OpenFlowって気持ち悪いこともできちゃう
 だが,それがいい
 痒いところに手が届かない場面では,是非
OpenFlowを!
49Copyright©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.

More Related Content

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

  • 1. Copyright©2014 NTT corp. All Rights Reserved. OpenFlowソフトウェアスイッチ Lagopus 2015/4/23 NTT未来ねっと研究所 日比 智也 (hibitomo)
  • 2. 1Copyright©2014 NTT corp. All Rights Reserved. 構成  Lagopusの概要  Lagopus(OpenFlow)で遊んでみる
  • 3. 2Copyright©2014 NTT corp. All Rights Reserved. Agenda  背景とターゲット  デザインと評価結果  最近の活動
  • 4. 4Copyright©2014 NTT corp. All Rights Reserved. コントローラ SDN?OpenFlow?Lagopus?  一般的なネットワーク装置 ルータ コントロールプレーン データプレーン ファイアーウォール コントロールプレーン データプレーン ロードバランサ コントロールプレーン データプレーン  SDN スイッチ データプレーン スイッチ データプレーン スイッチ コントロールプレーン データプレーン アプリ コントローラ コントロールプレーン アプリ プログラマブルAPI OpenFlowプロトコル
  • 5. 5Copyright©2014 NTT corp. All Rights Reserved. OpenFlow?  どういうパケットだったら  受信ポート番号,パケットヘッダの値(宛先,ソー ス,各種ID...)  どういう処理をする  パケットヘッダの追加,削除,編集  転送(ユニキャスト,マルチキャスト,ロードバラ ンシング...)  コントローラにパケットを転送して処理も可能 OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  • 6. 6Copyright©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
  • 7. 7Copyright©2014 NTT corp. All Rights Reserved. 何ができる?  SDN Japan 2014での実証実験  アク セスポイ ント   ■  A Pの識別(V LA N ) ■  V ID 毎にQoS制御 PoEスイッチ インターネット アクセスポイント ( AP) La g op u sの役割
  • 8. 8Copyright©2014 NTT corp. All Rights Reserved. 何ができる?  ブラジル-日本間(約1万8,000km)の映像伝送実験
  • 9. 9Copyright©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
  • 10. 12Copyright©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 Center Wide-area Network Access Network Intranet Cloud,NFVに対応 する仮想スイッチ 異種NWを接続する ゲートウェイ向け ソフトスイッチ 異種NWを接続する ゲートウェイ向け ソフトスイッチ
  • 11. 13Copyright©2014 NTT corp. All Rights Reserved. Agenda  背景とターゲット  デザインと評価結果  最近の活動
  • 12. 14Copyright©2014 NTT corp. All Rights Reserved. 設計の概要  シンプルなモジュール構成  スイッチエージェント  データプレーン  スイッチエージェント  統一スイッチ資源モデル  HALを介したデータプレーン制御 (Event queueベース)  データプレーン  高速NW I/Oライブラリ (Intel DPDK)  複数フローテーブルに 対応したフローキャッシュ OpenFlow controller OpenFlow 1.3
  • 13. 16Copyright©2014 NTT corp. All Rights Reserved. 機能評価の例  Conformance test results by Ryu Certification  http://osrg.github.io/ryu/certification.html OpenFlow 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 670 Open 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
  • 14. 17Copyright©2014 NTT corp. All Rights Reserved. 性能評価の例 (WAN-DCゲートウェイ) 0 1 2 3 4 5 6 7 8 9 10 0 200 400 600 800 1000 1200 1400 1600 Throughput(Gbps) Packet size (byte) 10 flow rules 100 flow rules 1k flow rules 10k flow rules 100k flow rules 1M flow rules 0 1 2 3 4 5 6 7 8 9 10 1 10 100 1000 10000 100000 1000000 Throughput(Gbps) flows 10k flow rules 100k flow rules 1M flow rules  Throughput vs packet size  1 flow  flow-cache  Throughput vs flows  1518 bytes packet
  • 15. 18Copyright©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) Mbps 72 128 256 512 1024 1280 1518 Packet size (bytes)
  • 16. 19Copyright©2014 NTT corp. All Rights Reserved. Agenda  背景とターゲット  デザインと評価結果  最近の活動
  • 17. 20Copyright©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 Lagopus vswitch DPDK PMD Map memory in guest VM to lagopus memory Map memory in guest VM to lagopus memory virtio virtio virtio queue virtio queue PMD vNIC PMD vNIC
  • 18. 21Copyright©2014 NTT corp. All Rights Reserved. ソースコード  2014年7月31日に公開  http://lagopus.github.io/  開発への参加  コードの提供 -> GitHub Pull Request  バグレポート -> GitHub Issues  議論 -> Developers ML
  • 19. 22Copyright©2014 NTT corp. All Rights Reserved. 構成  Lagopusの概要  Lagopus(OpenFlow)で遊んでみる
  • 20. 23Copyright©2014 NTT corp. All Rights Reserved. 本日のテーマ  Flowを設計して動かしてみる  OpenFlowっぽいことをする
  • 21. 24Copyright©2014 NTT corp. All Rights Reserved. OpenFlow?  どういうパケットだったら  受信ポート番号,パケットヘッダの値(宛先,ソー ス,各種ID...)  どういう処理をする  パケットヘッダの追加,削除,編集  転送(ユニキャスト,マルチキャスト,ロードバラ ンシング...)  コントローラにパケットを転送して処理も可能 OpenFlow コントローラ コントロールプレーン OpenFlow プロトコル OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4
  • 22. 25Copyright©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
  • 23. 26Copyright©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サーバの共有)
  • 24. 27Copyright©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 +-------------------------------------+
  • 25. 28Copyright©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 +-------------------------------------+ 双方向のルール を書く
  • 26. 29Copyright©2014 NTT corp. All Rights Reserved. Flow 1: つなげてみる  ユースケース  ポートVLAN  タグ変換 +-----+ +-----+ +-----+ +-----+ +-----+ | | | | | | | | | | | ns0 | | ns1 | | ns2 | | ns3 | | ns4 | | | | | | | | | | | +--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+ | 1 2 3 4 5 | | Lagopus OFswitch | | 6 +----- VM 2 +-------------------------------------+
  • 27. 30Copyright©2014 NTT corp. All Rights Reserved. Flow 2: 増やしてみる  VLAN100: ns1 - ns2  VLAN200: ns3 - ns4 +-----+ +-----+ +-----+ +-----+ +-----+ | | | | | | | | | | | ns0 | | ns1 | | ns2 | | ns3 | | ns4 | | | | | | | | | | | +--+--+ +--+--+ +--+--+ +--+--+ +--+--+ | | | | | +--+-------+-------+-------+-------+--+ | 1 2 3 4 5 | | Lagopus OFswitch | | 6 +------ trunk vlan100,200 +-------------------------------------+
  • 28. 31Copyright©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を使用
  • 29. 32Copyright©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 +-------------------------------------+
  • 30. 33Copyright©2014 NTT corp. All Rights Reserved. Flow 3: リファクタリング  マルチテーブル,メタデータを活用  1テーブルだけではフロー複雑. 書きこむ,書き換えるフローの数も多い. OpenFlow スイッチ データプレーン Flow Table フローパターン アクション フローパターン アクション カウンター カウンター Flow Table #2 Flow Table #3 Flow Table #4  メタデータ:テーブル間で情報を渡す為の フィールド
  • 31. 34Copyright©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":"1 00","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を使います
  • 32. 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":"1 00","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を使います
  • 33. 36Copyright©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 +-------------------------------------+
  • 34. 37Copyright©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":"1 00","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":{}}
  • 35. 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":"1 00","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へのブロードキャスト
  • 36. 39Copyright©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
  • 37. 40Copyright©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:f 8: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"}} ...
  • 38. 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:f 8: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のリクエス トと識別
  • 39. 42Copyright©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 +-------------------------------------+
  • 40. 43Copyright©2014 NTT corp. All Rights Reserved. イベントのフローを想像する  ブラジル-日本間(約1万8,000km)の映像伝送実験  IPを変換してルータをだまし、経路切り替え
  • 41. 44Copyright©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
  • 42. 45Copyright©2014 NTT corp. All Rights Reserved. イベントのフローを想像する  SDN Japan 2014での実証実験  http://www.sdnjapan.org/document_2014/31_session5_Ishida.pdf  アク セスポイ ント   ■  A Pの識別(V LA N ) ■  V ID 毎にQoS制御 PoEスイッチ インターネット アクセスポイント ( AP) La g op u sの役割
  • 43. 46Copyright©2014 NTT corp. All Rights Reserved. Flow設計の注意  パケットイン  遅い,遅延,パケット順序  ARP  ARP学習しないと通信は始まらない  パケットコピー  パケットコピーの処理は重い  MACラーニング問題  フロー数の容量  フロー数が増えすぎると死ぬ (特にHWスイッチ.SWは結構大丈夫)
  • 44. 47Copyright©2014 NTT corp. All Rights Reserved. Flow設計の注意  パケットイン  遅い,遅延,パケット順序  ARP  ARP学習しないと通信は始まらない  パケットコピー  パケットコピーの処理は重い  MACラーニング問題  フロー数の容量  フロー数が増えすぎると死ぬ (特にHWスイッチ.SWは結構大丈夫) • パケットインをしなければ行けない場面はよくある. • フロー数の容量も含め,性能を意識した設計が必要
  • 45. 48Copyright©2014 NTT corp. All Rights Reserved. 今日のまとめ  Lagopusってすごいらしい.  はやい (x86サーバ,Linux)  安い (OSS)  うまい (10Gbps, 1MFlow, その他機能)  OpenFlowって気持ち悪いこともできちゃう  だが,それがいい  痒いところに手が届かない場面では,是非 OpenFlowを!
  • 46. 49Copyright©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.