SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
SDN Framework
Ryu Internal
Satoshi Kobayashi
2013/11/11
What is Ryu?
•

SDN Framework

•
•
•

主に OpenFlow Controller
それ以外のプロトコルにも対応

特徴

•
•

Pure Python
OpenFlow 1.3 Support
Motivation
•

自分用の設計資料

•
•

説明すると理解が深まる

コントリビューションの一貫

•

興味を持つ人が増えるといいな
What is OpenFlow?
Control Plane
OpenFlow Controller
OpenFlow
Channel

Packet

OpenFlow
Protocol

OpenFlow Switch
FlowTable

Data Plane
Routing Table

Ryu はココ

Forwarding

Packet
What is OpenFlow?
•

プレーンの分離

•
•
•

コントロール (制御): OpenFlow Controller
データ (転送): OpenFlow Switch

TCP/IP のレイヤに依存しないフォワーディング

•

パケットをマッチしてインストラクションを実行
Overview
WSGIApplication

Ryu
AppManager

Spawn

Context
Context
Context

Instantiate / Inject
SERVICE_BRICK

WSGIServer

Handler Handler

RyuApp
RyuApp
RyuApp

!
Msg
!
User Defined Event

Communicate

ユーザはココを作る
Dispatch
Spawn
OpenFlowController

Datapath
Datapath
Datapath

!
Msg !
!
!
OpenFlow !
Event
OpenFlow !
Event
OpenFlow Event
Overview
•

主要コンポーネントは一枚に収まる

•
•

シンプル

ユーザはアプリケーションを作る

•

それ以外の部分は Ryu が提供する
Event model
SERVICE_BRICK
Handler

OFPHandler

Handler

Handler Handler

Built-in App
Built-in App

!
Msg
!
OpenFlow Event

OFPHandler は
OpenFlow プロトコルに
必ず必要な処理を担当する

Datapath

Your App
Your App

アプリケーションは
同じスーパークラス
RyuApp を親にもつ

Datapath は
OpenFlow Switch
を表現している
Event model
•

イベントドリブン

•

OpenFlow メッセージ毎にイベントが発生する

•
•

データパス -> アプリのイベントハンドラ

イベント

•

OpenFlow メッセージ毎に定義
Protocol Parser
Handler

RyuApp
Python object

of1.0

O/F Event

of1.2
Parser
of1.3

Datapath
socket

Binary

パーサは OpenFlow
プロトコルのネゴシエーション
によって選択される

socket

OpenFlow Channel
(over TCP, SSL)
Protocol Parser
•

対応 OpenFlow プロトコルバージョン

• 1.0, 1.2, 1.3
•

パーサはネゴシエーションで決定

•

前述の OFPHandler が担当
Component
Communication
一方向イベント
(返り値なし)

双方向イベント
(返り値あり)

Your App A

User-defined
Event

User-defined
Request
User-defined
Reply

Your App B

Your App C
Component
Communication
•

アプリケーション間の通信

•

イベントをやり取りする

•
•

一方向 / 双方向

イベント

•

ユーザが必要に応じて定義する
Context
AppManager
Instantiate
Inject

Context
Handler

Use

RyuApp
Context
•

アプリで共通に使われるユーティリティなど

•
•

コンストラクタにインジェクトされる
例

•

DPSet

•
•

接続中の Datapath 一覧

WSGIApplication

• HTTP サーバを作るためのクラス
WSGI Support
Instantiate
AppManager

WSGIApplication

Call

Inject

Register
Handler

WSGIServer

Connect

HTTP Client

RyuApp

Dispatch

Configure

ControllerBase
WSGI Support
•

WSGI (Web Service Gateway Interface)

• Python 用 Web インターフェース
• 多くの Web フレームワークが準拠する
• Web API やアプリを作ることができる
Eventlet
•

Ryu の並行処理に用いられているライブラリ

•
•

OpenStack でも利用されている
類似したものに Gevent など
Eventlet: thread
•

ライブラリ Greenlet を使った協調スレッド

•
•

a.k.a グリーンスレッド
スレッドの割り込みが発生しない

•
•

切り替えのタイミングは I/O 待ちだけ
切り替えをプログラマが把握・管理できる

•
•

スレッドセーフに作りやすい
ネイティブスレッドはカーネルのスケジュール次第
Eventlet: thread
Cooperative
Save

Hub
thread 2

threads
thread 1

Restore
Save

thread 3

Run
I/O 待ち

Restore
thread 5

thread4
Run
Eventlet: I/O
•
•

ノンブロッキング I/O
モンキーパッチを使う

•
•
•
•

既存のブロックするコードの挙動を変更
アプリケーションからは透過的に利用できる
ブロックするコードの混入に配慮が不要

唯一の注意点は C 拡張モジュール

•

モンキーパッチ不能なため
Eventlet: I/O
Monkey

Python 標準パッケージ

patching

(blockable)
os

Eventlet
select
アプリケーションからは
透過的にノンブロックになる

socket
threading
Use

time

Application
※ ネイティブスレッドも
協調スレッドに置き換わる
Appendix
•

Web サイト

•
•

Wiki

•
•

http://osrg.github.io/ryu/

http://github.com/osrg/ryu/wiki

リポジトリ

•

http://github.com/osrg/ryu
以上

Weitere ähnliche Inhalte

Was ist angesagt?

Lagopus performance
Lagopus performanceLagopus performance
Lagopus performanceMasaru Oki
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件Masaru Oki
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのかMasaru Oki
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
LagopusとvagrantMasaru Oki
 
Tremaとtrema edgeの違い
Tremaとtrema edgeの違いTremaとtrema edgeの違い
Tremaとtrema edgeの違いhiroshi oshiba
 
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かdo_aki
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchMasaru Oki
 
仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNetAkira Yokokawa
 
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!Akira Yokokawa
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Yoshiaki Shibutani
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析Yoshitaka Kawashima
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
Python勉強会1-はじめに
Python勉強会1-はじめにPython勉強会1-はじめに
Python勉強会1-はじめに理 小林
 
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行kunihikokaneko1
 
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CITROS Tutorial 02 - CIT
ROS Tutorial 02 - CITDaiki Maekawa
 
NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明Yuki Ito
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門Masashi Umezawa
 
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメJVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメYoshiaki Shibutani
 

Was ist angesagt? (20)

Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのか
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
Tremaとtrema edgeの違い
Tremaとtrema edgeの違いTremaとtrema edgeの違い
Tremaとtrema edgeの違い
 
signal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何かsignal の話 或いは Zend Signals とは何か
signal の話 或いは Zend Signals とは何か
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet仮想ネットワークを実現するOpenVNet
仮想ネットワークを実現するOpenVNet
 
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
 
Openflow実験
Openflow実験Openflow実験
Openflow実験
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
Python勉強会1-はじめに
Python勉強会1-はじめにPython勉強会1-はじめに
Python勉強会1-はじめに
 
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
 
ROS Tutorial 02 - CIT
ROS Tutorial 02 - CITROS Tutorial 02 - CIT
ROS Tutorial 02 - CIT
 
NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明NNTPについて簡単すぎる説明
NNTPについて簡単すぎる説明
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメJVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
 

Ähnlich wie SDN Framework Ryu Internal

Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 
Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpnFFRI, Inc.
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Tomoya Hibi
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket buildMasaru Oki
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向Kentaro Ebisawa
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFVInterop Tokyo ShowNet NOC Team
 
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようKimihiko Kitase
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewallM Hagiwara
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Akihiro Motoki
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態npsg
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03Miya Kohno
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318Yuhki Hanada
 
OSC 2014 Tokyo fall plone_terada
OSC 2014 Tokyo fall plone_teradaOSC 2014 Tokyo fall plone_terada
OSC 2014 Tokyo fall plone_teradaManabu Terada
 

Ähnlich wie SDN Framework Ryu Internal (20)

2015-ShowNetステージ-SDN/NFV
2015-ShowNetステージ-SDN/NFV2015-ShowNetステージ-SDN/NFV
2015-ShowNetステージ-SDN/NFV
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
Mr201304 open flow_security_jpn
Mr201304 open flow_security_jpnMr201304 open flow_security_jpn
Mr201304 open flow_security_jpn
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket build
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
2016-ShowNetステージ-バックボーンの機能としてのSDN/NFV
 
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態「宣言的プログラミング」とSDNのひとつの形態
「宣言的プログラミング」とSDNのひとつの形態
 
OpenFlow
OpenFlowOpenFlow
OpenFlow
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
OSC 2014 Tokyo fall plone_terada
OSC 2014 Tokyo fall plone_teradaOSC 2014 Tokyo fall plone_terada
OSC 2014 Tokyo fall plone_terada
 

SDN Framework Ryu Internal