狠狠撸
Submit Search
SDN Framework Ryu Internal
?
5 likes
?
2,317 views
Satoshi KOBAYASHI
Follow
Pure Python で書かれた SDN Framework (OpenFlow コントローラ) Ryu の設計資料。
Read less
Read more
1 of 24
Download now
Downloaded 33 times
More Related Content
SDN Framework Ryu Internal
1.
SDN Framework Ryu Internal Satoshi
Kobayashi 2013/11/11
2.
What is Ryu? ? SDN
Framework ? ? ? 主に OpenFlow Controller それ以外のプロトコルにも対応 特徴 ? ? Pure Python OpenFlow 1.3 Support
3.
Motivation ? 自分用の設計資料 ? ? 説明すると理解が深まる コントリビューションの一貫 ? 興味を持つ人が増えるといいな
4.
What is OpenFlow? Control
Plane OpenFlow Controller OpenFlow Channel Packet OpenFlow Protocol OpenFlow Switch FlowTable Data Plane Routing Table Ryu はココ Forwarding Packet
5.
What is OpenFlow? ? プレーンの分離 ? ? ? コントロール
(制御): OpenFlow Controller データ (転送): OpenFlow Switch TCP/IP のレイヤに依存しないフォワーディング ? パケットをマッチしてインストラクションを実行
6.
Overview WSGIApplication Ryu AppManager Spawn Context Context Context Instantiate / Inject SERVICE_BRICK WSGIServer Handler
Handler RyuApp RyuApp RyuApp ! Msg ! User De?ned Event Communicate ユーザはココを作る Dispatch Spawn OpenFlowController Datapath Datapath Datapath ! Msg ! ! ! OpenFlow ! Event OpenFlow ! Event OpenFlow Event
7.
Overview ? 主要コンポーネントは一枚に収まる ? ? シンプル ユーザはアプリケーションを作る ? それ以外の部分は Ryu が提供する
8.
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 を表現している
9.
Event model ? イベントドリブン ? OpenFlow メッセージ毎にイベントが発生する ? ? データパス
-> アプリのイベントハンドラ イベント ? OpenFlow メッセージ毎に定義
10.
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)
11.
Protocol Parser ? 対応 OpenFlow
プロトコルバージョン ? 1.0, 1.2, 1.3 ? パーサはネゴシエーションで決定 ? 前述の OFPHandler が担当
12.
Component Communication 一方向イベント (返り値なし) 双方向イベント (返り値あり) Your App A User-de?ned Event User-de?ned Request User-de?ned Reply Your
App B Your App C
13.
Component Communication ? アプリケーション間の通信 ? イベントをやり取りする ? ? 一方向 / 双方向 イベント ? ユーザが必要に応じて定義する
14.
Context AppManager Instantiate Inject Context Handler Use RyuApp
15.
Context ? アプリで共通に使われるユーティリティなど ? ? コンストラクタにインジェクトされる 例 ? DPSet ? ? 接続中の Datapath 一覧 WSGIApplication ?
HTTP サーバを作るためのクラス
16.
WSGI Support Instantiate AppManager WSGIApplication Call Inject Register Handler WSGIServer Connect HTTP Client RyuApp Dispatch Con?gure ControllerBase
17.
WSGI Support ? WSGI (Web
Service Gateway Interface) ? Python 用 Web インターフェース ? 多くの Web フレームワークが準拠する ? Web API やアプリを作ることができる
18.
Eventlet ? Ryu の並行処理に用いられているライブラリ ? ? OpenStack でも利用されている 類似したものに
Gevent など
19.
Eventlet: thread ? ライブラリ Greenlet
を使った協調スレッド ? ? a.k.a グリーンスレッド スレッドの割り込みが発生しない ? ? 切り替えのタイミングは I/O 待ちだけ 切り替えをプログラマが把握?管理できる ? ? スレッドセーフに作りやすい ネイティブスレッドはカーネルのスケジュール次第
20.
Eventlet: thread Cooperative Save Hub thread 2 threads thread
1 Restore Save thread 3 Run I/O 待ち Restore thread 5 thread4 Run
21.
Eventlet: I/O ? ? ノンブロッキング I/O モンキーパッチを使う ? ? ? ? 既存のブロックするコードの挙動を変更 アプリケーションからは透過的に利用できる ブロックするコードの混入に配慮が不要 唯一の注意点は
C 拡張モジュール ? モンキーパッチ不能なため
22.
Eventlet: I/O Monkey Python 標準パッケージ patching (blockable) os Eventlet select アプリケーションからは 透過的にノンブロックになる socket threading Use time Application ※
ネイティブスレッドも 協調スレッドに置き換わる
23.
Appendix ? Web サイト ? ? Wiki ? ? http://osrg.github.io/ryu/ http://github.com/osrg/ryu/wiki リポジトリ ? http://github.com/osrg/ryu
24.
以上
Download