{"id":56,"date":"2014-10-04T22:22:47","date_gmt":"2014-10-04T14:22:47","guid":{"rendered":"http:\/\/140.128.102.245\/wordpress\/?p=56"},"modified":"2014-10-28T20:40:48","modified_gmt":"2014-10-28T12:40:48","slug":"ryu%e5%9f%ba%e6%9c%ac%e5%ae%89%e8%a3%9d","status":"publish","type":"post","link":"https:\/\/blog.laszlo.tw\/?p=56","title":{"rendered":"Ryu\u57fa\u672c\u5b89\u88dd"},"content":{"rendered":"<p>Python<\/p>\n<p>apt-get install python-dev python-pip<br \/>\napt-get install libxml2-dev\u00a0libxslt1-dev<\/p>\n<p>Ryu_Install<\/p>\n<p>apt-get install git<br \/>\ngit clone git:\/\/github.com\/osrg\/ryu.git<br \/>\npython .\/ryu\/setup.py install<\/p>\n<p><!--more--><\/p>\n<p>Ryu_GUI_Install<\/p>\n<p>pip install flask<br \/>\npip install gevent-websocket<br \/>\nwget https:\/\/github.com\/yamada-h\/ryu\/archive\/gui-patch-v3-rebase.zip<br \/>\nunzip gui-patch-v3-rebase.zip<br \/>\ncp -rf ryu-gui-patch-v3-rebase\/ryu\/gui ryu\/ryu<\/p>\n<p>\u555f\u52d5Ryu(OpenFlow1.0)<\/p>\n<p>ryu-manager \u00a0&#8211; -verbose &#8211; -observe-links ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch<\/p>\n<p>\u555f\u52d5Ryu(OpenFlow1.3)<\/p>\n<p>ryu-manager &#8211; -verbose &#8211; -observe-links ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch_13<\/p>\n<p>\u555f\u52d5Ryu_GUI<\/p>\n<p>python ryu\/ryu\/gui\/controller.py<\/p>\n<p>\u4fee\u6539OVS_switch\u4ee5OpenFlow1.3\u904b\u4f5c<\/p>\n<p>ovs-vsctl set Bridge s1 protocols=OpenFlow13<\/p>\n<p>\u53c3\u8003\u8cc7\u6599<\/p>\n<p><a href=\"http:\/\/blog.linton.tw\/posts\/2014\/02\/11\/note-how-to-set-up-ryu-controller-with-gui-component\">\u5b89\u88dd<\/a><\/p>\n<p><a href=\"http:\/\/osrg.github.io\/ryu-book\/zh_tw\/html\/index.html\">\u4ee4\u4eba\u611f\u52d5\u7684\u7e41\u9ad4\u4e2d\u6587wiki<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python apt-get install py<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/blog.laszlo.tw\/?p=56\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">Ryu\u57fa\u672c\u5b89\u88dd<\/span><\/a><\/div>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[7,2],"tags":[],"class_list":["post-56","post","type-post","status-publish","format-standard","hentry","category-ryu","category-sdn","entry"],"_links":{"self":[{"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/posts\/56","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=56"}],"version-history":[{"count":12,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":84,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions\/84"}],"wp:attachment":[{"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.laszlo.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}