SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Report
hiroshi oshiba
Follow
Jan. 23, 2014
•
0 likes
•
3,955 views
1
of
32
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Jan. 23, 2014
•
0 likes
•
3,955 views
Download Now
Download to read offline
Report
Technology
hiroshi oshiba
Follow
Recommended
閉域網接続の技術入門
Masayuki Kobayashi
18.5K views
•
72 slides
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
21.4K views
•
35 slides
大規模DCのネットワークデザイン
Masayuki Kobayashi
17.5K views
•
32 slides
ReviveAdserverではじめるパーソナライズドリターゲティング
Nobumasa Ura
5.3K views
•
26 slides
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
6.5K views
•
32 slides
Border Gatway Protocol
Shashank Asthana
3K views
•
65 slides
More Related Content
What's hot
VPP事始め
npsg
11.1K views
•
19 slides
LINE Login総復習
Naohiro Fujie
956 views
•
42 slides
IIJmio meeting #2 IIJmioとIPv6の話
techlog (Internet Initiative Japan Inc.)
35.2K views
•
24 slides
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
10.4K views
•
52 slides
自宅サーバラックの勧め BGP4編
h-otter
822 views
•
29 slides
MPLS Layer 3 VPN
NetProtocol Xpert
2K views
•
22 slides
What's hot
(20)
VPP事始め
npsg
•
11.1K views
LINE Login総復習
Naohiro Fujie
•
956 views
IIJmio meeting #2 IIJmioとIPv6の話
techlog (Internet Initiative Japan Inc.)
•
35.2K views
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
•
10.4K views
自宅サーバラックの勧め BGP4編
h-otter
•
822 views
MPLS Layer 3 VPN
NetProtocol Xpert
•
2K views
Waris l2vpn-tutorial
rakiva29
•
2.5K views
BGP Unnumbered で遊んでみた
akira6592
•
5.5K views
Segment Routing: A Tutorial
APNIC
•
16.9K views
GMOプライベートDMPの仕組み
Michio Katano
•
25.3K views
NETCONFとYANGの話
Masakazu Asama
•
7.9K views
3GPP 5G NSA Detailed explanation 2(EN-DC SgNB additional call flow include LT...
Ryuichi Yasunaga
•
36 views
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
•
18.5K views
ISPネットワーク運用で覗いてるもの
Taiji Tsuchiya
•
2.3K views
3GPP TR38.801-e00まとめ
Tetsuya Hasegawa
•
11.6K views
DS-LiteをFreeBSDで使う
Satoshi Togawa
•
2K views
Juniper mpls best practice part 2
Febrian
•
15.7K views
Goでこれどうやるの? 入門
zaru sakuraba
•
3.4K views
Software Defined Network (SDN) using ASR9000 :: BRKSPG-2722 | San Diego 2015
Bruno Teixeira
•
2.5K views
Onieで遊んでみようとした話
Masaru Oki
•
3.7K views
Similar to Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Pyconjp2014_implementations
masahitojp
4.7K views
•
73 slides
V6 unix in okinawa
magoroku Yamamoto
8.3K views
•
142 slides
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
18.1K views
•
102 slides
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
64.2K views
•
78 slides
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
4.5K views
•
44 slides
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
1.5K views
•
43 slides
Similar to Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
(20)
Pyconjp2014_implementations
masahitojp
•
4.7K views
V6 unix in okinawa
magoroku Yamamoto
•
8.3K views
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
•
18.1K views
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
•
64.2K views
ラズパイでデバイスドライバを作ってみた。
Kazuki Onishi
•
4.5K views
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
•
1.5K views
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
•
4.9K views
Twitter sphere of #twitter4j #twtr_hack
kimukou_26 Kimukou
•
2.8K views
Inside mobage platform
Toru Yamaguchi
•
3K views
20130329 rtm3
openrtm
•
808 views
boost::shared_ptr tutorial
NU_Pan
•
2.9K views
160705-03 RTミドルウエア講習会・名城大
openrtm
•
536 views
Rの高速化
弘毅 露崎
•
39K views
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
•
1.2K views
Python physicalcomputing
Noboru Irieda
•
1.5K views
Lisp tutorial for Pythonista : Day 1
Ransui Iso
•
1.7K views
How to run P4 BMv2
Kentaro Ebisawa
•
8.7K views
Trema の紹介とネットワーク仮想化への応用
kazuyas
•
3.1K views
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
•
5.2K views
Rubyで創るOpenFlowネットワーク - LLまつり
Yuya Rin
•
18.4K views
Recently uploaded
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
113 views
•
11 slides
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
321 views
•
44 slides
GraphQLはどんな時に使うか
Yutaka Tachibana
137 views
•
37 slides
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
32 views
•
44 slides
CatBoost on GPU のひみつ
Takuji Tahara
982 views
•
30 slides
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
83 views
•
1 slide
Recently uploaded
(13)
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
113 views
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
•
321 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
137 views
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
•
32 views
CatBoost on GPU のひみつ
Takuji Tahara
•
982 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
83 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
245 views
画像生成AIの問題点
iPride Co., Ltd.
•
127 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
72 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
226 views
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
•
91 views
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
90 views
指側面を入力インタフェース化するリング型デバイス
sugiuralab
•
5 views
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
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 大芝