{"id":5256,"date":"2015-04-16T18:58:57","date_gmt":"2015-04-16T09:58:57","guid":{"rendered":"http:\/\/www.vincentina.net\/?p=5256"},"modified":"2015-04-16T19:03:03","modified_gmt":"2015-04-16T10:03:03","slug":"openvswitch%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6trema%e3%81%ae%e6%a4%9c%e8%a8%bc%e3%82%92%e3%81%97%e3%82%88%e3%81%86","status":"publish","type":"post","link":"https:\/\/www.vincentina.net\/?p=5256","title":{"rendered":"OpenvSwitch\u3092\u4f7f\u3063\u3066Trema\u306e\u691c\u8a3c\u3092\u3057\u3088\u3046"},"content":{"rendered":"<h1>\u6e96\u5099<\/h1>\n<p>OpenvSwitch\u306fOpenstack\u3067\u3082\u767b\u5834\u3057\u307e\u3057\u305f\u3001<strong>\u4eee\u60f3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30b9\u30a4\u30c3\u30c1<\/strong>\u3067\u3059\u3002<br \/>\nOpenFlow\u30b9\u30a4\u30c3\u30c1\u304c\u306a\u3044\u3068OpenFlow\u5b9f\u8df5\u5165\u9580\u3092\u8aad\u3093\u3067\u3044\u3066\u3082\u7269\u8db3\u308a\u306a\u3044\u5185\u5bb9\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3001\u3053\u3084\u3064\u306bOpenFlow\u30b9\u30a4\u30c3\u30c1\u306e\u5f79\u5272\u3092\u3057\u3066\u3082\u3089\u3046\u306e\u3067\u3059\u3002<\/p>\n<p>\u5fc5\u8981\u306a\u7269\u3068\u3044\u3063\u3066\u3082\u3001Mac\u4e0a\u306bVirtualBox\u3067Ubuntu\u30b5\u30fc\u30d0\u30fc\u30922\u53f0\u307b\u3069\u5efa\u3066\u3066\u3001\u7247\u65b9\u306bTrema\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305fOpenFlow\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3002<br \/>\n\u3082\u3046\u7247\u65b9\u306bOpenvSwitch\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305fOpenFlow\u30b9\u30a4\u30c3\u30c1\u3068\u3057\u3066\u6e96\u5099\u3092\u3057\u307e\u3057\u305f\u3002<br \/>\n2\u53f0\u7528\u610f\u3057\u306a\u304f\u3066\u3082\u3001OpenFlow\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306b\u30eb\u30fc\u30d7\u30d0\u30c3\u30af\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u30671\u53f0\u3067\u3082\u5b9f\u9a13\u53ef\u80fd\u306a\u3088\u3046\u3067\u3057\u305f\u3002<\/p>\n<h3>VirtualBox\u306e\u8a2d\u5b9a<\/h3>\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u65b9\u306fNIC2\u500b\u3001\u30b9\u30a4\u30c3\u30c1\u306e\u65b9\u306fNIC4\u500b\u3067\u8a2d\u5b9a\u3057\u307e\u3059\u3002<br \/>\neth0\/eth1\u306f\u5272\u308a\u5f53\u3066\u3092\u30d6\u30ea\u30c3\u30b8\u306b\u3057\u3066\u3001eth0\u306fExternal\u7528\u3001eth1\u306fInternal\u7528\u306b\u3057\u307e\u3057\u305f\u3002<br \/>\n\u30b9\u30a4\u30c3\u30c1\u5074\u306eeth2\/eth3\u306f\u5272\u308a\u5f53\u3066\u306f\u5185\u90e8\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u3057\u307e\u3059\u3002\u7406\u7531\u306f\u307e\u305f\u5f8c\u3067\u66f8\u304d\u307e\u3059\u304c\u3001\u30d6\u30ea\u30c3\u30b8\u306b\u3057\u3066\u8a2d\u5b9a\u6295\u5165\u3057\u305f\u3042\u3068\u306b\u30ea\u30f3\u30af\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3068\u3001\u3044\u3064\u305e\u3084\u3084\u3089\u304b\u3057\u305fL2\u306e\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8d77\u3053\u3057\u3066\u3057\u307e\u3046\u306e\u3067\u3059\u3002<br \/>\nOpenvSwitch\u3067STP\u3092\u6709\u52b9\u306b\u3059\u308c\u3070\u56de\u907f\u3067\u304d\u307e\u3059\u304c\u3001Trema\u306e\u691c\u8a3c\u304c\u30e1\u30a4\u30f3\u306a\u306e\u3067\u3044\u307e\u306e\u3068\u3053\u308d\u306f\u5185\u90e8\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u3082\u3044\u3044\u304b\u306a\u3068\u3002<\/p>\n<p>Ubuntu\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u6e08\u307e\u3059\u3068eth0\u3060\u3051\u3057\u304b\u8868\u793a\u3055\u308c\u306a\u3044\uff01\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c<br \/>\n\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308c\u3070\u554f\u984c\u306a\u3044\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\ntakeken@ubuntu:~$ sudo dmesg | egrep &amp;quot;eth0|eth1|eth2|eth3&amp;quot;\r\n&#x5B;    1.059113] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:c4:9b:47\r\n&#x5B;    1.060425] e1000 0000:00:03.0 eth0: Intel(R) PRO\/1000 Network Connection\r\n&#x5B;    1.445182] e1000 0000:00:08.0 eth1: (PCI:33MHz:32-bit) 08:00:27:cb:89:41\r\n&#x5B;    1.445648] e1000 0000:00:08.0 eth1: Intel(R) PRO\/1000 Network Connection\r\n&#x5B;    1.812034] e1000 0000:00:09.0 eth2: (PCI:33MHz:32-bit) 08:00:27:cc:7c:63\r\n&#x5B;    1.812946] e1000 0000:00:09.0 eth2: Intel(R) PRO\/1000 Network Connection\r\n&#x5B;    2.175457] e1000 0000:00:0a.0 eth3: (PCI:33MHz:32-bit) 08:00:27:0c:1a:76\r\n&#x5B;    2.177221] e1000 0000:00:0a.0 eth3: Intel(R) PRO\/1000 Network Connection\r\n&#x5B;   13.445309] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready\r\n&#x5B;   13.446176] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX\r\n&#x5B;   13.446585] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready\r\n  \r\n<\/pre>\n<p>OpenvSwitch\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\"> openvswitch-switch\r\n <\/pre>\n<p>\u3067\u5b8c\u4e86\u3067\u3059\u304c\u3001\u691c\u8a3c\u4e2d\u306b\u8272\u3005\u3068\u5165\u308c\u305f\u308a\u6d88\u3057\u305f\u308a\u3092\u7e70\u308a\u8fd4\u3057\u3066\u3044\u305f\u306e\u3067\u3082\u3057\u304b\u3057\u305f\u3089\u4e0a\u624b\u304f\u3044\u304b\u306a\u3044\u30b1\u30fc\u30b9\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305d\u3046\u306a\u3063\u305f\u3089\u3054\u3081\u3093\u306a\u3055\u3044\u3002<\/p>\n<p>\u305f\u3060\u30ab\u30fc\u30cd\u30eb\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u3061\u3083\u3093\u3068\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308c\u3070\u5927\u4e08\u592b\u304b\u306a\u3068\u601d\u3063\u305f\u308a\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\ntakeken@ubuntu:~$ sudo lsmod | grep openvswitch\r\nopenvswitch            65844  0\r\ngre                    13796  1 openvswitch\r\nvxlan                  37629  1 openvswitch\r\nlibcrc32c              12644  1 openvswitch\r\n \r\n<\/pre>\n<p>\u5f8c\u306fipv6\u306f\u7121\u52b9\u306b\u3057\u3066\u3066\u3044\u3044\u304b\u3082\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n\/etc\/sysctl.conf\r\nnet.ipv6.conf.all.disable_ipv6 = 1\r\nnet.ipv6.conf.default.disable_ipv6 = 1\r\n \r\n<\/pre>\n<h3>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/h3>\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u5074\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n# The loopback network interface\r\nauto lo\r\niface lo inet loopback\r\n\r\n# The primary network interface\r\n\r\nauto eth0\r\niface eth0 inet static\r\naddress 192.168.24.55\r\nnetwork 192.168.24.0\r\nnetmask 255.255.255.0\r\nbroadcast 192.168.24.255\r\ngateway 192.168.24.1\r\ndns-nameservers 192.168.24.1\r\n\r\nauto eth1\r\niface eth1 inet static\r\naddress 192.168.10.10\r\nnetmask 255.255.255.0\r\nnetwork 192.168.10.0\r\nbroadcast 192.168.10.255\r\n  \r\n<\/pre>\n<p>\u30b9\u30a4\u30c3\u30c1\u5074\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a2d\u5b9a\u3067\u3059\u304c\u3001\u30d6\u30ea\u30c3\u30b8\u306e\u8a2d\u5b9a\u65b9\u6cd5\u306b2\u901a\u308a\u3042\u308a\u3001\u30b3\u30de\u30f3\u30c9\u3067\u6295\u5165\u3059\u308b\u65b9\u6cd5\u3068\u3001\u3053\u306e\/etc\/network\/interface\u306b\u8a18\u8ff0\u3057\u3066\u3057\u307e\u3046\u65b9\u6cd5\u3068\u304c\u3042\u308a\u307e\u3059\u3002<br \/>\n\u500b\u4eba\u7684\u306a\u597d\u307f\u3067\/etc\/network\/interface\u306b\u66f8\u304d\u8fbc\u307f\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# The loopback network interface\r\nauto lo\r\niface lo inet loopback\r\n\r\n# The primary network interface\r\nauto eth0\r\niface eth0 inet static\r\naddress 192.168.24.70\r\nnetwork 192.168.24.0\r\nnetmask 255.255.255.0\r\nbroadcast 192.168.24.255\r\ngateway 192.168.24.1\r\ndns-nameservers 192.168.24.1\r\n\r\nauto eth1\r\niface eth1 inet static\r\naddress 192.168.10.20\r\nnetmask 255.255.255.0\r\nnetwork 192.168.10.0\r\nbroadcast 192.168.10.255\r\n\r\nallow-ovs ovsbr0\r\niface ovsbr0 inet manual\r\n    ovs_type OVSBridge\r\n    ovs_ports eth2 eth3\r\n\r\nallow-ovsbr0 eth2\r\niface eth2 inet manual\r\n    ovs_bridge ovsbr0\r\n    ovs_type OVSPort\r\n\r\nallow-ovsbr0 eth3\r\niface eth3 inet manual\r\n    ovs_bridge ovsbr0\r\n    ovs_type OVSPort\r\n  \r\n <\/pre>\n<p>\u3067\u306f\u3053\u308c\u3067\u9032\u3081\u3066\u3044\u304d\u307e\u3059\u304b\u3002<br \/>\nUbuntu\u30b5\u30fc\u30d0\u30fc\u69cb\u7bc9\u304b\u3089\u9032\u3081\u3066\u3044\u305f\u5834\u5408\u306f\u3001Kernel\u3084\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u66f4\u65b0\u3082\u5165\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306e\u3067\u3001\u3053\u3053\u3089\u3067\u518d\u8d77\u52d5\u3057\u3066\u304a\u304f\u306e\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306d\u3002<br \/>\n\u4e0d\u5b89\u306a\u5834\u5408\u306fVirtualBox\u306e\u5fc5\u6bba\u6280\u3001\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u4fdd\u5b58\u3057\u3066\u304a\u304f\u306e\u3082\u3044\u3044\u306d\u3002<\/p>\n<h1>\u8a2d\u5b9a\u6295\u5165<\/h1>\n<p>\u30d6\u30ea\u30c3\u30b8\u306e\u8a2d\u5b9a\u3067\u3059\u304c\u3001\/etc\/network\/interface\u306b\u8a18\u8ff0\u3057\u3066\u3044\u305f\u65b9\u306f\u3001\u518d\u8d77\u52d5\u3057\u305f\u3089\u51fa\u6765\u4e0a\u304c\u3063\u3066\u3044\u308b\u304b\u3082\u3067\u3059\u304c<br \/>\n\u3044\u3063\u305f\u3093ifdown\u3057\u3066ifup\u3057\u305f\u3089\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\ntakeken@switch:~$ sudo ifup --allow=ovs ovsbr0\r\ntakeken@switch:~$ sudo ovs-vsctl show\r\nfbecfea7-65c4-493c-b437-d38d0001312f\r\n    Bridge &amp;quot;ovsbr0&amp;quot;\r\n        Port &amp;quot;eth3&amp;quot;\r\n            Interface &amp;quot;eth3&amp;quot;\r\n        Port &amp;quot;eth2&amp;quot;\r\n            Interface &amp;quot;eth2&amp;quot;\r\n        Port &amp;quot;ovsbr0&amp;quot;\r\n            Interface &amp;quot;ovsbr0&amp;quot;\r\n                type: internal\r\n    ovs_version: &amp;quot;2.0.2&amp;quot;\r\n  \r\n <\/pre>\n<p>\u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u69d8\u306a\u611f\u3058\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo ovs-vsctl add-br br0\r\nsudo ovs-vsctl add-port br0 eth1\r\nsudo ovs-vsctl add-port br0 eth2\r\n  \r\n <\/pre>\n<p>\u5f8c\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u8a2d\u5b9a\u3059\u308c\u3070\u5b8c\u4e86\u3067\u3059\u3002<br \/>\n\u3082\u3046\u5b8c\u4e86\u3067\u3059\u3002\u6570\u65e5\u3084\u3063\u3066\u307e\u3059\u304c\u3001\u307e\u3068\u3081\u3066\u3057\u307e\u3046\u3068\u901f\u3044\u3067\u3059\u306d\uff57<\/p>\n<p>\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u8a2d\u5b9a\u3067\u3059\u304c\u3001\u30dd\u30fc\u30c8\u306e\u6307\u5b9a\u3092\u3057\u306a\u3044\u3068\u307c\u304f\u306e\u74b0\u5883\u3067\u306f\u4e0a\u624b\u304f\u3044\u304b\u306a\u304b\u3063\u305f\u306e\u3067\u3001\u307e\u305a\u306fTrema\u3092\u5b9f\u884c\u3057\u305f\u3068\u304d\u306e\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntakeken@ubuntu:~$ trema run .\/rhave.rb &amp;amp;\r\n&#x5B;1] 1536\r\n\r\ntakeken@ubuntu:~$ sudo ps aux | grep trema\r\ntakeken   1536  7.0  2.4  77572 25096 pts\/0    Sl   16:10   0:00 \/usr\/bin\/ruby1.9.1 \/usr\/local\/bin\/trema run .\/rhave.rb\r\ntakeken   1540  0.0  0.1  15144  1640 ?        Ss   16:10   0:00 \/var\/lib\/gems\/1.9.1\/gems\/trema-0.4.7\/objects\/switch_manager\/switch_manager --daemonize --port=6653 -- port_status::MultiRepeaterHub packet_in::MultiRepeaterHub state_notify::MultiRepeaterHub vendor::MultiRepeaterHub\r\ntakeken   1545  0.0  0.2  12716  2212 pts\/0    S+   16:10   0:00 grep --color=auto trema\r\n  \r\n <\/pre>\n<p>6653\u306e\u3088\u3046\u3067\u3059\u306d\u3002<\/p>\n<p>\u5f8c\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5074\u3068\u3001\u30b9\u30a4\u30c3\u30c1\u5074\u3067\u758e\u901a\u304c\u3061\u3083\u3093\u3068\u53d6\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u3066\u3001\u554f\u984c\u306a\u3051\u308c\u3070\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u8a2d\u5b9a\u3092\u5165\u308c\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u30b9\u30a4\u30c3\u30c1\u5074\u3068\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u5074\u3067\u758e\u901a\u304c\u3068\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\u30b9\u30a4\u30c3\u30c1\u304b\u3089\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\r\ntakeken@switch:~$ ping -c 1 192.168.10.10\r\nPING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.\r\n64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.363 ms\r\n\r\n--- 192.168.10.10 ping statistics ---\r\n1 packets transmitted, 1 received, 0% packet loss, time 0ms\r\nrtt min\/avg\/max\/mdev = 0.363\/0.363\/0.363\/0.000 ms\r\n\r\n\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u304b\u3089\u30b9\u30a4\u30c3\u30c1\r\ntakeken@ubuntu:~$ ping -c 1 192.168.10.20\r\nPING 192.168.10.20 (192.168.10.20) 56(84) bytes of data.\r\n64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.325 ms\r\n\r\n--- 192.168.10.20 ping statistics ---\r\n1 packets transmitted, 1 received, 0% packet loss, time 0ms\r\nrtt min\/avg\/max\/mdev = 0.325\/0.325\/0.325\/0.000 ms\r\n  \r\n <\/pre>\n<p>\u30aa\u30c3\u30b1\u30fc\u3067\u3059\u3045\u3002<br \/>\n\u758e\u901a\u306f\u554f\u984c\u306a\u3044\u306e\u3067\u30bb\u30c3\u30c8\u3057\u307e\u3059\u304b\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\ntakeken@switch:~$ sudo ovs-vsctl get-controller ovsbr0\r\ntakeken@switch:~$\r\ntakeken@switch:~$ sudo ovs-vsctl set-controller ovsbr0 tcp:192.168.10.10:6653\r\ntakeken@switch:~$\r\ntakeken@switch:~$ sudo ovs-vsctl get-controller ovsbr0\r\ntcp:192.168.10.10:6653\r\ntakeken@switch:~$\r\n\r\ntakeken@switch:~$ sudo ovs-vsctl show\r\n&#x5B;sudo] password for takeken:\r\nfbecfea7-65c4-493c-b437-d38d0001312f\r\n    Bridge &amp;quot;ovsbr0&amp;quot;\r\n        Controller &amp;quot;tcp:192.168.10.10:6653&amp;quot;\r\n        Port &amp;quot;eth3&amp;quot;\r\n            Interface &amp;quot;eth3&amp;quot;\r\n        Port &amp;quot;eth2&amp;quot;\r\n            Interface &amp;quot;eth2&amp;quot;\r\n        Port &amp;quot;ovsbr0&amp;quot;\r\n            Interface &amp;quot;ovsbr0&amp;quot;\r\n                type: internal\r\n    ovs_version: &amp;quot;2.0.2&amp;quot;\r\n  \r\n <\/pre>\n<p>\u305d\u308c\u3067\u306f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3067\u30ea\u30d4\u30fc\u30bf\u30cf\u30d6\u3092Trema run\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff01<br \/>\n\u30c9\u30ad\u30ef\u30af\uff01<\/p>\n<h1>OpenvSwitch\u3067OpenFlow\u30b9\u30a4\u30c3\u30c1\u306e\u5f79\u3092\u3084\u3063\u3066\u3082\u3089\u304a\u3046<\/h1>\n<p><span style=\"font-size: 16pt;\">\u3068\u3001\u305d\u306e\u307e\u3048\u306b\uff01<\/span><\/p>\n<p>\u3053\u3053\u3067\u5229\u7528\u3059\u308b\u30ea\u30d4\u30fc\u30bf\u30cf\u30d6\uff08\u203b\u53c2\u8003\u30b5\u30a4\u30c8\u53c2\u7167\uff09\u306e\u30b3\u30fc\u30c9\u3068Trema\u306b\u3064\u3044\u3066\u3044\u308bExample\u306e\u30ea\u30d4\u30fc\u30bf\u30cf\u30d6\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3068<br \/>\n\u6bd4\u8f03\u3092\u5c11\u3057\u3057\u3066\u307f\u3066\u30ea\u30fc\u30c7\u30a3\u30f3\u30b0\u3057\u307e\u3057\u3087\u3046\u304b\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\nclass RepeaterHub &amp;lt; Controller # Controller\u30af\u30e9\u30b9\u306e\u7d99\u627f\r\n#  def packet_in(datapath_id, message)\r\n   def packet_in(datapath_id)  # \u5f15\u6570\u306fid\u3060\u3051\u3067\u3044\u3044\u304b\u306d\u3002\r\n    send_flow_mod_add(         # \u30a8\u30f3\u30c8\u30ea\u3092\u66f8\u304d\u8fbc\u3080\u305f\u3081\u306e\u30e1\u30bd\u30c3\u30c9\uff1a\u7b2c7\u7ae0\u53c2\u7167\r\n      datapath_id,\r\n#      :match =&amp;gt; ExactMatch.from(message),\r\n#      :actions =&amp;gt; ActionOutput.new(OFPP_FLOOD)\r\n      :actions =&amp;gt; SendOutPort.new(OFPP_FLOOD)   # SendOutPort \u6307\u5b9a\u3057\u305f\u30b9\u30a4\u30c3\u30c1\u306e\u30dd\u30fc\u30c8\u306b\u30d1\u30b1\u30c3\u30c8\u3092\u51fa\u529b\u3059\u308b\r\n                                                # OFPP_FLOOD  \u5168\u30dd\u30fc\u30c8\u306b&amp;quot;\u5bfe\u3059\u308b&amp;quot;\u30d5\u30e9\u30c3\u30c7\u30a3\u30f3\u30b0\u3092\u304a\u3053\u306a\u3046\r\n    )\r\n#    send_packet_out(\r\n#      datapath_id,\r\n#      :packet_in =&amp;gt; message,\r\n#      :actions =&amp;gt; ActionOutput.new(OFPP_FLOOD)\r\n#    )\r\n  end\r\nend\r\n  \r\n <\/pre>\n<p>\u4ee5\u4e0a\u3067\u3059\u3002<br \/>\n\u3093\u3067\u5b9f\u884c\u3059\u308b\u3068\u3001\u3046\u307e\u304f\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3068\u63a5\u7d9a\u3067\u304d\u3066\u3044\u308c\u3070\u30c0\u30f3\u30d7\u3055\u308c\u308b\u306f\u305a\u306a\u306e\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n\u5b9f\u884c\u524d\u306e\u72b6\u614b\r\ntakeken@ubuntu:~$ sudo ovs-ofctl dump-flows ovsbr0\r\nNXST_FLOW reply (xid=0x4):\r\n\r\n\u5b9f\u884c\r\ntakeken@ubuntu:~$ sudo trema run .\/repeater-hub.rb\r\n\r\n\u4e0a\u624b\u304f\u30c0\u30f3\u30d7\u3067\u304d\u307e\u3057\u305f\u3002\r\ntakeken@ubuntu:~$ sudo ovs-ofctl dump-flows ovsbr0\r\nNXST_FLOW reply (xid=0x4):\r\n cookie=0x1, duration=12.912s, table=0, n_packets=20, n_bytes=1500, idle_age=0, priority=65535 actions=FLOOD\r\n  \r\n <\/pre>\n<p>\u3067\u306f\u7b2c7\u7ae0\u3067\u5b9f\u8df5\u3057\u3066\u3044\u308b\u30d1\u30c3\u30c1\u30d1\u30cd\u30eb\u3092\u691c\u8a3c\u3092\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n\u5b9f\u884c\u524d\u306e\u72b6\u614b\r\ntakeken@ubuntu:~$ sudo ovs-ofctl dump-flows ovsbr0\r\nNXST_FLOW reply (xid=0x4):\r\n\r\n\u5b9f\u884c\u3057\u307e\u3059\u3002\u30dd\u30fc\u30c8\u306f\uff12\u304b\u3089\uff13\u3068\u3057\u3066\u3044\u307e\u3059\u3002\r\ntakeken@ubuntu:~$ trema run .\/patch-panel.rb\r\n\r\n\r\n\u3046\u307e\u304f\u30c0\u30f3\u30d7\u3067\u304d\u307e\u3057\u305f\u3002\u3061\u3083\u3093\u3068\u6307\u5b9a\u3057\u305f\uff12\u3068\uff13\u3068\u3067\u3066\u3044\u307e\u3059\u3002\r\n\r\ntakeken@switch:~$ sudo ovs-ofctl dump-flows ovsbr0\r\nNXST_FLOW reply (xid=0x4):\r\n cookie=0x2, duration=0.252s, table=0, n_packets=0, n_bytes=0, idle_age=0, priority=65535,in_port=3 actions=output:2\r\n cookie=0x1, duration=0.252s, table=0, n_packets=0, n_bytes=0, idle_age=0, priority=65535,in_port=2 actions=output:3\r\n  \r\n <\/pre>\n<p>\u3053\u308c\u3067OpenFlow\u30b9\u30a4\u30c3\u30c1\u304c\u306a\u304f\u3066\u3082\u7b2c7\u7ae0\u306e\u691c\u8a3c\u304c\u3067\u304d\u307e\u3057\u305f\u3002<br \/>\n\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u691c\u8a3c\u3068\u5272\u308a\u5207\u308c\u3070\u3053\u308c\u3067\u554f\u984c\u306a\u3044\u306f\u305a\u3067\u3059\u304c\u3001\u3084\u3063\u3071\u308a\u5b9f\u969b\u306b\u30b9\u30a4\u30c3\u30c1\u306b\u7e4b\u3044\u3067\u3068\u304b\u3084\u3063\u3066\u307f\u305f\u3044\u306a\u3041\u3068\u601d\u3044\u307e\u3059\u3088\u306d\u3002\u30b3\u30f3\u30b7\u30e5\u30fc\u30de\u306e\u7121\u7ddaLAN\u3092\u6539\u9020\u3057\u3066\u4f7f\u3048\u308b\u305d\u3046\u306a\u306e\u3067\u305d\u306e\u8fba\u3082\u307e\u305f\u8abf\u3079\u3066\u307f\u307e\u3059\u304b\u3002<\/p>\n<p>OpenFlow\u306e\u4f55\u304c\u3059\u3054\u3044\u306e\u304b\u3063\u3066\u3001L2\uff08L1\u3082\u306a\u306e\u304b\u306a\uff1f\uff09\u3082\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u304d\u308b\u3068\u3044\u3046\u3053\u3068\u306b\uff08\u3063\u3066\u3044\u3046\u306e\u3082\u3069\u3053\u304b\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u3067\u8aad\u3093\u3060\u306e\u3067\u3059\u304c\uff57\uff09<br \/>\n\u306a\u3063\u305f\u3068\u3044\u3046\u3053\u3068\u306a\u306e\u308c\u3059\u3002<\/p>\n<h1>\u756a\u5916\u7de8<\/h1>\n<p>\u6700\u521d\u306f\u6c17\u4ed8\u304b\u305a\u306b\u30b9\u30c8\u30ea\u30fc\u30e0\u767a\u751f\u3057\u307e\u304f\u308a\u3060\u3063\u305f\u3093\u3067\uff57\u5931\u6557\u306e\u7523\u7269\u306e\u30ed\u30b0\u304c\u3042\u308b\u306e\u3067\u3061\u3087\u3053\u3063\u3068\u8f09\u305b\u3066\u304a\u304d\u307e\u3059\u3002<br \/>\n\u4f55\u304b\u306e\u5f79\u306b\u7acb\u3064\u304b\u3082\u3001\u7acb\u305f\u306a\u3044\u304b\u3082\u3067\u3002<\/p>\n<p>OpenvSwitch\u3067STP\u306e\u6709\u52b9\u306b\u3059\u308b\u3068\u304d\u306f\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u7121\u52b9\u306b\u3059\u308b\u3068\u304d\u306ffalse\u3067\u3059\u306d\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\nsudo ovs-vsctl set bridge ovsbr0 stp_enable=true\r\n  \r\n <\/pre>\n<p>\u4e07\u304c\u4e00\u3001\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u8d77\u3053\u3063\u305f\u6642\u306b\u306fifdown\u3092\u5149\u901f\u3067\u53e9\u3051\u3070\u5fa9\u65e7\u3067\u304d\u307e\u3059\u3002<br \/>\n\u843d\u3068\u3059NIC\u306e\u540d\u524d\u306f\u305d\u308c\u305e\u308c\u3060\u308d\u3046\u304b\u3089\u3001\u843d\u3061\u306a\u3044\u3058\u3083\u306a\u3044\u304b\uff01\u3063\u3066\u3046\u3061\u306b\u6587\u53e5\u3092\u8a00\u308f\u306a\u3044\u3067\u304a\u304f\u308c\u3088\u3002<\/p>\n<p>\u305f\u3068\u3048\u3070\u30b5\u30fc\u30d0\u30fc\u304c\u8fd1\u304f\u306b\u306a\u304f\u3066\u30ea\u30d6\u30fc\u30c8\u3057\u304b\u3067\u304d\u306a\u3044\u3063\u3066\u3044\u3046\u306a\u3089<br \/>\n\u30ea\u30d6\u30fc\u30c8\u3059\u308c\u3070\u30b3\u30de\u30f3\u30c9\u3092\u53e9\u3051\u308b\u4f59\u88d5\u306f\u3042\u308b\u306f\u305a\u306a\u306e\u3067\u3001\u4e0b\u306e\u3088\u3046\u306a\u30b3\u30de\u30f3\u30c9\u3092\u53e9\u3053\u3046\u3002<br \/>\n\u305f\u305f\u305f\u305f\u3093 \u305f\u305f\u3093 \u305f\u3093\u305f \u305f\u3093\u305f\u3093\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\ntakeken@ubuntu:~$ sudo ifdown eth1\r\ntakeken@ubuntu:~$ sudo ifdown eth2\r\ntakeken@ubuntu:~$ sudo ifdown eth3\r\n  \r\n <\/pre>\n<p>\u305f\u3060VirtualBox\u3067NIC\u3092\u843d\u3068\u3059\u3068\u304b\u3001LAN\u30b1\u30fc\u30d6\u30eb\u3092\u629c\u3044\u305f\u65b9\u304c\u78ba\u5b9f\u306b\u901f\u3044\u3002<\/p>\n<p>\u5931\u6557\u306e\u7523\u7269\u306e\u30ed\u30b0\u3067\u3059\u3002<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n2015-04-16T04:29:35Z|00001|timeval|WARN|Unreasonably long 1014ms poll interval (0ms user, 75ms system)\r\n2015-04-16T04:29:35Z|00002|timeval|WARN|faults: 2 minor, 0 major\r\n2015-04-16T04:29:35Z|00003|timeval|WARN|context switches: 0 voluntary, 8 involuntary\r\n2015-04-16T04:29:35Z|00004|coverage|INFO|Event coverage, hash=39783c6c:\r\n2015-04-16T04:29:35Z|00005|coverage|INFO|hmap_expand                      9\r\n2015-04-16T04:29:35Z|00006|coverage|INFO|hmap_pathological               14\r\n2015-04-16T04:29:35Z|00007|coverage|INFO|poll_fd_wait                     8\r\n2015-04-16T04:29:35Z|00008|coverage|INFO|util_xalloc                     52\r\n2015-04-16T04:29:35Z|00009|coverage|INFO|vconn_sent                       2\r\n2015-04-16T04:29:35Z|00010|coverage|INFO|vconn_received                   1\r\n2015-04-16T04:29:35Z|00011|coverage|INFO|vconn_open                       2\r\n2015-04-16T04:29:35Z|00012|coverage|INFO|stream_open                      2\r\n2015-04-16T04:29:35Z|00013|coverage|INFO|43 events never hit\r\n\r\nOFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0  \r\n  \r\n <\/pre>\n<p>\u305d\u3093\u306a\u611f\u3058\u3067\u3002<\/p>\n<p>\u53c2\u8003\u30b5\u30a4\u30c8<\/p>\n<p>ainoniwa.net\u3000<a href=\"http:\/\/www.ainoniwa.net\/pelican\/2014\/0524a.html\" target=\"_blank\">Ubuntu\u3067Open vSwitch\u3092\u4f7f\u3046\u3068\u304d\u306b\/etc\/network\/interfaces\u304c\u4f7f\u3048\u308b<\/a><\/p>\n<p>ranosgrant\u306e\u30d6\u30ed\u30b0\u3000<a href=\"http:\/\/ranosgrant.cocolog-nifty.com\/blog\/2013\/02\/2-openflow-4b98.html\" target=\"_blank\">2\u4e07\u5186\u3067 OpenFlow \u30b9\u30a4\u30c3\u30c1\u3092\u81ea\u4f5c\u3057\u3088\u3046<\/a><\/p>\n<p>Trema \u65e5\u8a18\u3000<a href=\"http:\/\/trema.hatenablog.jp\/entry\/20120403\/1333451177\" target=\"_blank\">Openvswitch \u3092 OpenFlow \u30b9\u30a4\u30c3\u30c1\u3068\u3057\u3066\u4f7f\u3046<\/a><\/p>\n<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.vincentina.net\/?p=5256\" data-text=\"OpenvSwitch\u3092\u4f7f\u3063\u3066Trema\u306e\u691c\u8a3c\u3092\u3057\u3088\u3046\" data-via=\"TakekenTw\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u6e96\u5099 OpenvSwitch\u306fOpenstack\u3067\u3082\u767b\u5834\u3057\u307e\u3057\u305f\u3001\u4eee\u60f3\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30b9\u30a4\u30c3\u30c1\u3067\u3059\u3002 OpenFlow\u30b9\u30a4\u30c3\u30c1\u304c\u306a\u3044\u3068OpenFlow\u5b9f\u8df5\u5165\u9580\u3092\u8aad\u3093\u3067\u3044\u3066\u3082\u7269\u8db3\u308a\u306a\u3044\u5185\u5bb9\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3001\u3053\u3084\u3064\u306bOpenF &hellip; <a href=\"https:\/\/www.vincentina.net\/?p=5256\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;OpenvSwitch\u3092\u4f7f\u3063\u3066Trema\u306e\u691c\u8a3c\u3092\u3057\u3088\u3046&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[],"class_list":["post-5256","post","type-post","status-publish","format-standard","hentry","category-network"],"_links":{"self":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/5256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5256"}],"version-history":[{"count":0,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/5256\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}