SDN Framework Ryu Internal
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

SDN Framework Ryu Internal

on

  • 1,387 views

Pure Python で書かれた SDN Framework (OpenFlow コントローラ) Ryu の設計資料。

Pure Python で書かれた SDN Framework (OpenFlow コントローラ) Ryu の設計資料。

Statistics

Views

Total Views
1,387
Views on SlideShare
1,387
Embed Views
0

Actions

Likes
3
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

SDN Framework Ryu Internal Presentation Transcript

  • 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 Defined 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-defined Event User-defined Request User-defined 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 Configure 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. 以上