阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 14.04安装OVS虚拟OpenFlow交换机配置总结

212次阅读
没有评论

共计 2358 个字符,预计需要花费 6 分钟才能阅读完成。

一、Ubuntu 14.04 安装 OVS

sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source

(与网上之前的资料相比,没有安装 openvswitch-brcompat,提示没有这个包。笔者目前的使用来看没有问题,可能是 Linux 内核或 OVS 版本变化造成的,不再需要安装?)

二、配置 OVS 虚拟 OpenFlow 交换机

1. 新建一个桥(交换机),命名为 s1:

sudo ovs-vsctl add-br s1

注意:进行 OVS 设置时很容易造成虚拟交换机与物理交换机构成二层环路(比如虚拟交换机包含两块网卡,而这两块网卡都连接到物理交换机上,就是一个环路),一旦有广播报文,比如 ARP 请求,就会引发广播风暴,使网络瘫痪。因此,应该把虚拟交换机开启 STP 支持,避免广播风暴:

ovs−vsctl set bridge 交换机名 stp_enable=true

2. 启动要添加到虚拟交换机 s1 上的物理端口(物理网卡,这里是 eth0 和 eth3)。如果 ifconfig 里已经有了,那就不用重新启动了。

sudo ifconfig eth3 up

sudo ifconfig eth0 up

3. 添加物理端口到虚拟交换机 s1:

sudo ovs-vsctl add-port s1 eth3

sudo ovs-vsctl add-port s1 eth0

4. 设置 IP:

OpenFlow 交换机与控制器连接需要用到 TCP 连接,因此交换机需要设置 IP。但当把物理端口添加到虚拟交换机上之后,这些物理端口上原先的 IP 设置将失效(IP 属于三层,而交换机工作在二层),无法与外界进行三层的互联。解决方法是添加一个类型为 internal 的端口,然后设置 IP 和路由(本例是添加一个名为 veth3 的虚拟端口):

首先,如果原先端口有设置 IP,应将其重置:

sudo ifconfig eth3 0

然后添加虚拟端口:

sudo  ovs-vsctl add-port s1 veth3

sudo ovs-vsctl set interface veth3 type=internal

这时如果执行 ifconfig 就会发现多了一个名为 veth3 的端口。然后设置该端口并添加路由:

sudo  ifconfig veth3 192.168.1.3 netmask 255.255.255.0

sudo  route add default gw 192.168.1.1 veth3

P.S. 后来看到网上说其实不需要额外添加 veth3,因为创建 s1 后会自动生成一个名为 s1 的 internal 端口,直接设置它就可以。

5. 连接远程控制器(本例中控制器为 POX,IP 是 192.168.1.100):

连接控制器之前控制器要先启动。然后连接:

sudo ovs-vsctl set-controller s1 tcp:192.168.1.100:6633

这时远程控制器就能看到连接信息,比如:INFO:openflow.of_01:[00-d0-f8-0f-d6-e9 2] connected

三、常用 OVS 操作

1. 添加网桥:ovs-vsctl add-br 交换机名

2. 删除网桥:ovs-vsctl del-br 交换机名

3. 添加端口:ovs-vsctl add-port 交换机名 端口名(网卡名)

4. 删除端口:ovs-vsctl del-port 交换机名 端口名(网卡名)

5. 连接控制器:ovs-vsctl set-controller 交换机名 tcp:IP 地址: 端口号

6. 断开控制器:ovs-vsctl del-controller 交换机名

7. 列出所有网桥:ovs-vsctl list-br

8. 列出网桥中的所有端口:ovs-vsctl list-ports 交换机名

9. 列出所有挂接到网卡的网桥:ovs-vsctl port-to-br 端口名(网卡名)

10. 查看 open vswitch 的网络状态:ovs-vsctl show

11. 查看 Open vSwitch 中的端口信息(交换机对应的 dpid,以及每个端口的 OpenFlow 端口编号,端口名称,当前状态等等):ovs-ofctl show 交换机名

12. 修改 dpid:ovs-vsctl set bridge 交换机名 other_config:datapath-id= 新 DPID

13. 修改端口号:ovs-vsctl set Interface 端口名 ofport_request= 新端口号

14. 查看交换机中的所有 Table:ovs-ofctl dump-tables ovs-switch

15. 查看交换机中的所有流表项:ovs−ofctl dump−flows ovs-switch

16. 删除编号为 100 的端口上的所有流表项:ovs-ofctl del-flows ovs-switch “in_port=100”

17. 添加流表项(以“添加新的 OpenFlow 条目,修改从端口 p0 收到的数据包的源地址为 9.181.137.1”为例):

ovs-ofctl add-flow ovs-switch “priority=1 idle_timeout=0,in_port=100,actions=mod_nw_src:9.181.137.1,normal”

(更多说明请查阅:《基于 Open vSwitch 的 OpenFlow 实践》http://www.linuxidc.com/Linux/2017-06/144770.htm)

18. 查看 OVS 的版本信息:ovs-appctl –version

19. 查看 OVS 支持的 OpenFlow 协议的版本:ovs-ofctl –version

更多设置可查看官方文档。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/144769.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2358字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中