Your SlideShare is downloading. ×
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)

1,351

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,351
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ryu の遊び方 Pica8 も一緒にもっと楽しく! NCLC  大芝 ※   Ryu の API が変わったので、 2014 年 1 月 23 日に 一部変更!
  • 2. 自己紹介 ( 及び会社紹介 )  OpenFlow スイッチ「 Pica8 」売ってます  Trema 、 Ryu 、 VNC を使って 色々やってます  個人的には Trema(Ruby) 好きです
  • 3. 今日お話しする内容 Ryu の使い方についてお話します。 ‐   OFC の作り方とか ‐  パケット解析・生成の仕方とか ‐   REST API の定義方法とか ついでに Pica8 を使った Ryu の変わった遊び方もお話します。 HW の OpenFlow スイッチ
  • 4. What is Ryu ? Ryu の公式ページ 作っている人 対応機能 要するに Python ベースの OFC フレームワーク
  • 5. ☆   OF1.0 、 OF1.3 のどちらもサポート ☆   NetConf とか、 OF-Config とかにも対応   ※ 僕は試してません。 ☆   OpenStack のプラグインもある   ※ これもまだ試せてません。。。ごめんなさい。
  • 6. 誰が使ってる?どこで使ってる? NTT コミュニケーションさんが色々発表してい る http://cloud.watch.impress.co.jp/img/clw/docs/620/794/html/41.jpg.html
  • 7. SDN Japan でも発表されていた
  • 8. 他には。。。  NTT グループ内で結構使われている  CYAN という会社が BluePlanet という SDN アプリで使っている
  • 9. インストールしよう! 2 つのやり方があります。  pip install ryu git clone ~ setup.py install  pip でインストールするか、ダウンロードしたソースにて、 setup.py を用いるか。
  • 10. インストールするとついでに入るもの   oslo INI 形式の設定データを使用するの に用いる wsgi, routes, webob REST API に用いる  eventlet タイマ定義等に用いる
  • 11. 動かす 通常動作  ryu-manager sample.py ヘルプを見る  ryu-manager --help サンプル  ryu/ryu/app  にある
  • 12. 標準のサンプルには REST API を用い たものが多い
  • 13. どうやって OFC を作る? 基本は他フレームワークと同じ イベントのハンドリングによる適切な処理と それによる OpenFlow メッセージの送信 ☆  イベントハンドリング ☆   OpenFlow メッセージの送信 を、それぞれどう書けばいいのか見てみます!
  • 14. イベントハンドラ デコレータを用います。 各メッセージのクラスを渡します。以下を見るとそ れぞれクラス名が分かります ryu/ryu/ofproto/ofproto_v1_X_parser ※   X は 0, 2, 3 の3つのバージョン数値です @set_ev_cls( ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def _packet_in_handler(self, ev): pass
  • 15. OpenFlow メッセージの生成  ryu/lib/ofctl_v1_x.py  を使う  ev.msg.datapath.ofproto_parser  を使う 多分一番簡単な方 法 昔からある一般的な方法 ev は各メッセージで引数として渡される どちらもそうだが、プロアクティブに入れたい場合は、 datapath のオブジェクトを保持しておく必要があります。
  • 16. datapath オブジェクト  スイッチ毎にインスタンスが準備される datapath IP アドレス、 DPID とかの情報 OF 定数 ofproto OF メッ セージ ofproto_parser 動作バージョンに対応 したモジュールが紐付 けされる
  • 17. ofproto や ofproto_parser はどこに?  ryu/ryu/ofproto 内にソースがある 内容は OpenFlow の各定数とかメッセージに 沿ったクラスとかがあります。 各メッセージの生成方法等が知りたいならここを読んで、 でも、ドキュメントはまだ色々あるんで最後でまた紹介しま す
  • 18. 例:  L1 のスイッチを作ってみよう! from ryu.base import app_manager from ryu.ofproto import ofproto_v1_0 from ryu.controller import dpset from ryu.controller.handler import set_ev_cls 必要なモジュールを import class TestController(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] _CONTEXTS = { "dpset" : dpset.DPSet } def __init__(self, *args, **kwargs): super(TestController, self).__init__(*args, **kwargs) @set_ev_cls(dpset.EventDP, dpset.DPSET_EV_DISPATCHER) def handler_datapath(self, ev): dp=ev.dp if ev.enter: match = dp.ofproto_parser.OFPMatch() port = dp.ofproto.OFPP_FLOOD actions = [ dp.ofproto_parser.OFPActionOutput( port ) ] mod = dp.ofproto_parser.OFPFlowMod( dp, match=match, cookie=0, actions=actions ) dp.send_msg(mod) スイッチ接続のハ ンドラ定義 L1 用のマッチ条件と アクション定義して フロー送信
  • 19. 便利な機能① トポロジ管理  LLDP を利用したトポロジの検出と管理が行える Switches Node Link Node Link Link Node get_all_links get_all_switches メインのクラス
  • 20. トポロジ管理使い方 from ryu.topology import switches 動作させるアプリ をここに指定 class TestController(app_manager.RyuApp): _CONTEXTS = { “topology" : switches.Switches} def __init__(self, *args, **kwargs): super(TestController, self).__init__(*args, **kwargs) self.topology = kwargs[“topology”] 引数の kwargs に _CONTEXTS で指定し たクラスによるインスタンスが渡される
  • 21. 便利機能② パケットライブラリ 色々ある ( これは一部 ) ( 普通のパケット生成用ラ イブラリよりある? )
  • 22. パケットライブラリ使い方 パース packet=Packet(data=data) eth=packet.get_protocol( ethernet.ethernet)  ※  変更 (2014/1/23) 生成 eth=ethernet(eth_info) arp=arp(arp_info) packet=eth.serialize(None, None)+ arp.serialize(None, None)  packet 残り L4 L3 L2 対象プロトコルのク ラスを渡して受け取 る そのプロトコル情報 を持ってなければ、 None が返ってくる 個別のヘッダを作っ てシリアライズ
  • 23. REST API の定義 各ルートの制御をするアクションは、 このコントローラ内にて定義している URI とメソッド (GET とか POST とか ) を指定して、 呼び出すメソッドをアクションとして定義する mapper.connect(route, uri, controller=MessageController, action = "index", conditions=dict(method=['GET']) ) 例えば、 uri が” /ofc” として定義したなら、 http://( ホスト ):8080/ofc  に get でアクセスすると 「 index 」が呼ばれる。 ※  追加のルートを付けたい場合は submapper を定義する
  • 24. ドキュメント Ryu の正式ページに Wiki がある https://github.com/osrg/ryu/wiki   NCLC のホームページで色々情報発信し ている (Trema もあり )  来年頭頃に、 Ryu-Book という日本語本を 出す予定らしい
  • 25. Pica8   OpenFlow Pica8 について ‐  安い ‐  ポート密度が高い ( 1Gx48, 10Gx4 or 10Gx48, 40Gx4 ) ‐  ハイブリッドスイッチ 
  • 26. Pica8 を使った遊び方 OVS OVS を使って OpenFlow を実 現している OF 1.0 、  OF1.2 、  OF1.3 3 バージョン対応
  • 27. コントローラ接続検証  v1.3 v1.3 RoutingSwitch っぽい ものの Ruby 版を作っ て Pica8 と一緒に配布 してます。 ※ trema-edge
  • 28. Ryu と Pica8 Pica8 が Ryu にアプローチをかけて る
  • 29. 特殊な遊び方 Ryu をスイッチ上で直接動かそ う! PicOS 2.0 から Debian に なり、 Python 動作可能
  • 30. 何の意味がある? 統合管理サーバ REST API PacketIn 等のみ、   スイッチ単体で処 理させる、とか コントローラの負荷軽減とか、リスク分散とか
  • 31. 実績? 海外ではあるらしい。 ※   NCLC では、まだテストのみ。 インストール方法等の技術情報は、ホー ムページで公開してます。
  • 32. 以上です! 有難うございました NCLC  大芝

×