ネットワークスイッチOS
「Lagopus Switch」
中島佳宏
Lagopus User Community
This research is partially supported by “Research and Development of Network Virtualization Technology”
program commissioned by the Ministry of Internal Affairs and Communications.
n
中島佳宏
l
NTT未来ねっと研究所
l
バックグランド
•
⼤大学時代
– High-performance computing
– Grid Computing
•
⼊入社後
–
⾮非圧縮映像IP NW伝送装置
–
アプリケーション特化のNW制御システム
•
現在
–
⾼高速なソフトウエアスイッチ開発
⾃自⼰己紹介
n
ネットワークはプログラミングできます
l
SDNとかOpenFlow
n
サーバアプリやサーバインフラ管理理の流流儀で
ネットワークを管理理できるようになります
n
サーバで動作する速いソフトウエアスイッチLagopusがあります!
今⽇日覚えていってほしいこと
Agenda
n
Software-‐‑‒Defined Networkingって?
l
OpenFlow protocol / OpenFlow Switch
l
SDN関連Open Source
n
Lagopus: SDN/OpenFlow ソフトウエアスイッチ
l
構成
l
実装の⼯工夫
l
性能評価
n
Lagopusを使った柔軟なネットワーキングをプログラムすると
l
透明⼈人間
n
多様なユーザニーズを満たすために
、
多様なプロトコル標準が存在
l
装置仕様の肥⼤大化
l
装置コストの⾼高騰
n
⾃自律律分散が故の動作の複雑さ
n
装置の制限により
、
提供可能なサービスが限定
n
⼈人⼿手中⼼心のオペレーション
l
CLI
l
Chef, Puppetしたいのに
現状のネットワーク機器の課題
使いたい機能は、⼀一部だけなのに...
構成を変更更したいけど、利利⽤用中のユー
ザに影響を与えないようにしないと...
この制限がなければ、もっとよいサー
ビスを提供できるのに...
なぜ Software-‐‑‒Defined Networking?
⼤大規模なデータセンターを、低コストに運⽤用したい
構成変更更を迅速に⾏行行いたい
どのように?
n
ネットワーク機器の制御部をプログラム可能に
(Software-‐‑‒Defined Networking)
l
要件ベースでのネットワーク設計
l
⾃自動化による運⽤用コストの削減
l
コモディティハードウェア利利⽤用による設備コストの削減
n
ネットワークをプログラムからさわれるように
どのように?
制御部
転送部
制御部は機器ベンダーが提供
制御部と転送部は不不可分
?
制御部をプログラム可能に
制御と転送を分離離 (OpenFlow)
制御部
転送部
制御部
転送部
OpenFlow
コントローラ
OpenFlow
プロトコル
転送と制御
を分離離
ネットワーク機器(従来)
OpenFlow
スイッチ
利利点 : プロトコルおよびスイッチ仕様の標準化による普及
制御部は機器ベンダーが提供
制御部と転送部は不不可分
制御部を作ることで、
独⾃自の動作をさせることが可能
標準化
OpenFlow 概要 (スイッチの動作)
Flow table
Flow table
を参照し、
パケット処理理
(Match, Action)
OpenFlow
コントローラ
どういうパケットだったら
受信ポート番号,
パケットヘッダの値(宛先,ソース,各種ID...)
どういう処理理をする
パケットヘッダの追加,削除,編集,
転送(ユニキャスト,マルチキャスト,ロード
バランシング...)
コントローラにパケットを転送して処理理も可
能
n
L1 (Port #), L2 (Ethernet), L3 (IPv4, IPv6), L4 (TCP, UDP)
までのヘッダを使うことが可能
l
Ingress port
l
Ethernet source/destination address
l
Ethernet type
l
VLAN ID
l
VLAN priority
l
IPv4 source/destination address
l
IPv4 protocol number
l
IPv4 type of service
l
TCP/UDP source/destination port
l
ICMP type/code
n
Forward
l
Physical ports (Required)
l
Virtual ports : All, Controller, Local, Table, IN_̲PORT (Required)
l
Virtual ports : Normal, Flood (Required)
n
Drop
n
Modify Field
l
Set/Add VLAN ID
l
Set VLAN priority
l
Strip VLAN Header
l
Modify Ethernet source/destination address
l
Modify IPv4 source/destionation address
l
Modify IPv4 type of service bits
l
Modify IPv4 TCP/UDP source/destination port
OpenFlow 概要 (Action)
さまざまな転送ルール
ヘッダが書き換えも可能
データセンターへの
OpenFlow 適⽤用例例
VM
VM
VM
VM
データセンターにおけるネットワーク仮想化の課題
Physical
Network
Software
Switch
Software
Switch
VM
VM
Software
Switch
VM
VM
Software
Switch
Virtual Network A
Virtual Network C
Virtual Network B
① VM と仮想ネットワークの接続
② 仮想ネットワーク間のトラフィック分離離
③ 物理理ネットワークの資源管理理
VM
VM
VM
VM
従来技術を⽤用いた場合の課題
Physical
Network
Software
Switch
Software
Switch
VM
VM
Software
Switch
VM
VM
Software
Switch
VLAN A
VLAN B
VLAN A
VLAN B
VLAN B
VLAN C
VLAN B
VLAN C
VLAN C
VLAN B
VLAN A
従来技術 (VLAN) による構成
① 設定変更更に関する問題
② VLAN 数の問題
③ STP の限界
VM
VM
VM
VM
OpenFlow による構成 (Overlay アプローチ)
Physical
Network
OpenFlow
Switch
OpenFlow
Switch
VM
VM
OpenFlow
Switch
VM
VM
OpenFlow
Switch
② トンネルによるトラフィック分離離
① 対応関係を OpenFlow により実現
メリット : 既存の物理理インフラを活⽤用可能
デメリット : トンネル化によるオーバーヘッド (MTU⻑⾧長、処理理遅延)
VM
VM
VM
VM
OpenFlow による構成 (Hop-‐‑‒by-‐‑‒hop アプローチ)
OpenFlow
Switches
OpenFlow
Switch
OpenFlow
Switch
VM
VM
OpenFlow
Switch
VM
VM
OpenFlow
Switch
② フロー単位のトラフィック制御
③ フロー単位で最短パスを形成
① 対応関係を OpenFlow により実現
SDNを構成するオープンソース
Cloud
Computin
g
OSS
Controlle
r
OSS
virtual
switch
Infrastructure
Layer
Application Layer
Business Applications
Control Layer
Network
Services
Network
Services
API
API
Northbound API
Ryu
trema
Southbound API
Open contrail
White
box
switch
n
NW
制御側
l
⾃自分でコントローラを作る
•
結構しんどいです
l
フリーなコントローラを⾒見見つける
• OpenDaylight, Ryu, Trema
l
ソリューションを購⼊入する
• OpenFlow 1.3
対応製品を検索索してください
n
データプレーン側
l
⾃自分でコントローラを作る
•
かなり結構しんどいです
l
フリーなOpenFlowスイッチを⾒見見つける
• Open vSwitch, Lagopus
l
ソリューションを購⼊入する
対応製品を検索索してください
n
⾃自分でNW制御ロジックを書きたい⼈人向け
SDN制御系
OpenDaylight
Ryu
Trema
Language
Java
Python
Ruby, C
License
Eclipse Public v1
Apache v2
GPL
制御可能データプレーン OpenFlow switch
v1.0, 13
OpenFlow switch
v1.0 – 1.5
OVSDB
対応スイッチ
OpenFlow switch
v1.0,
1.3 (trema-edge)
データプレーン設定プロ
トコル
OVSDB, NETCONF
OVSDB
-プロトコルライブラリ
○ (BGP, BGP)
○ (いろいろ)
○(いろいろ)
n
Open vSwitch
l
VMwareが開発を主導
l
様々なLinuxディストリで利利⽤用可能
l
様々な仮想化基盤との連携も可能
l
Linuxカーネルにデータプレーンのモジュールが取り込まれている
l
http://openvswitch.org/
n
Lagopus
l
NTTが開発を主導
l
様々なプロトコルのフレームへのOpenFlow命令令の対応
l
⾼高速化および⼤大規模フローへの対応を主眼
l
http://lagopus.github.io/
n
LINC, LINCX
l
flowforwardingが開発を主導
l
最新のOpenFlow仕様やOF-‐‑‒CONFIGに対応
l
http://www.flowforwarding.org/
Lagopusプロジェクトの⽬目的
n
NFVやSDNを実現するソフトウエアコンポーネントを提供
l
スイッチエージェント (OpenFlow, REST)
l
⾼高速なソフトウエアデータプレーン
l
柔軟・拡張可能なスイッチ設定機構
l
⾼高速I/Oライブラリ (DPDK)
l
外部システム連携ライブラリ (クラウドミドルウエア・補助ツール)
l
Network I/O ハードウエア拡張
n
ソフトウエアパケット処理理の適応領領域の拡⼤大
l
キャリア・ネットワークでも活⽤用可能な⾼高いスケーラビリティ性
l
運⽤用を容易易にする⾼高可⽤用性・保守成性の向上
n
ネットワーク研究のツール・ライブラリとしての活⽤用促進
l
⾼高速検索索、QoSコンポーネント、次世代ネットワーキングの拡張
# of packet to be proceeded for 10Gbps
with 1 CPU core
0
2,000,000
4,000,000
6,000,000
8,000,000
10,000,000
12,000,000
14,000,000
16,000,000
0
256
512
768
1024
1280
#
o
f p
a
cke
ts
p
e
r s
e
co
nd
s
Packet size (Byte)
Short packet 64Byte
14.88 MPPS, 67.2 ns
• 2Ghz: 134 clocks
• 3Ghz: 201 clocks
Computer packet 1KByte
1.2MPPS, 835 ns
• 2Ghz: 1670 clocks
• 3Ghz: 2505 clocks
Lagopusの概要
n
OpenFlow 1.3に最も適応したソフトウエアスイッチ
l
複数のプロトコルフレーム処理理の対応
• Ethernet, Mac in MAC, MPLS, PBB, IPv4, IPv6…
l
複数Flow tableやグループテーブルへの対応
l
QoS機能 (queue, policer, meter table)
n
DPDKを活⽤用した⾼高性能データプレーン
l
10Gbpsを超えるパケット処理理・転送性能 (20MPPS以上)
l
100万フローエントリへの対応 (4K flow mod/sec)
n
外部連携API
l
CLIやJSONによるスイッチ構成設定
• Flow
設定、統計情報・状況把握
n
ネットワークのエッジのノード
l
柔軟な制御や設定が求められるノード
l
多機能で⼤大量量のルート数やルールが求められるノード
l
求められるポート数が⽐比較的少ないノード
Lagopusの適応先
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を接続する
Lagopus vSwitchの構成
switch configuration datastore
(config/stats API, SW DSL)
DPDK libs/PMD driver
Lagopus soft dataplane
flow lookup flow cache