在KVM中,可以使用网桥+VLAN实现虚拟交换机,也可以使用Open vSwitch实现。
Open vSwitch即开放的软件虚拟交换机,能够达到产品级的质量,也就是说可以部署一些生产环境使用。它不光支持基本的二层交换,还支持标准的管理机接口和协议(如NetFlow,sFlow,SPAN,RSAPN,CLI,LACP,802.1ag),同时也支持OpenFlow,可以很好第与SDN体系融合。
官方网站http://www.openvswitch.org/features/
一、安装Open vSwitch
1、安装KVM包
yum install kvm libvirt-bin virtinst
2.加载802.1Q
yum install vconfig modprobe 802.1q
3.使用yum安装
yum install openvswitch openvswitch-devel openvswitch-test openvswitch-debuginfor
启动服务
systemctl enable openvswitch systemctl start openvswitch
安装完成后,检查版本
ovs-vsctl show
二、使用ovs-vsctl管理OVS
OVS提供了不同的管理工具,其中最常用的是ovs-vsctl
网桥相关的操作
ovs-vsctl add-br br0 #增加网桥 ovs-vsctl add-port br0 eth0 #将网卡加网桥
查看OVS中所有网桥及端口信息
ovs-vsctl show
此时,将eth0加入到br0网桥后,eth0的Ip地址就失效了,也不需要配置eth0地址,按照如下方式配置eth0网卡地址为0,配置网桥br0的地址为管理地址
ifconfig eth0 0 ifconfig br0 172.31.208.60 netmask 255.255.255.0 route add default gw 172.31.208.1 dev br0 #增加网桥的默认路由
修改网卡eth0配置文件,不配置ip地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
新建网卡br0的配置文件,按照以下填写ip地址
vim /etc/sysconfig/network-scripts/ifcfg-br0
三、OVS的数据库配置与网络配置文件的关系
OVS的配置写在一个ovsdb数据库中。ovsdb是一个非常轻量级的数据库,是一个提供增查删改等功能的临时配置缓存。
OVS数据库操作的一般格式为:
ovs-vsctl list/set/get/add/remove/clear/destroy table record colunm [value]
默认情况下,ovsdb中有以下数据表:bridge,controller,interface,mirror,netflow,open_vswitch,port,qos,ssl,sflow。即table可为其中的任意一个,rdcord为数据表中name字段的值,
colum为数据表中任意一个字段的字段名,即value字段值。
例如,使用ovs-vsctl list bridge命令查询ovsdb的bridge表中关于桥与网卡的信息
ovs-vsctl list bridge
ovs-vsctl list port
由上面的信息可以看到,bridge数据表中br0的桥包括了br0和eh3端口的uuid,这样就完整的记录了桥与端口的关系。同时在显示port的时候,也看到每个桥
会‘隐含’建立同名的短裤。但是,数据库中不记录每个桥的ip地址,即ip地址信息仍由/etc/sysconfig/network-script/ifcfg-br0保存。这就是ovsdb与/etc/sysconfig/network-script/ifcfg-br0文件间的关系。
四、VLAN的设置及VLAN接口IP地址
OVS设置trukn和access
将eth0作为trunk接口加入到br0中
ovs-vsctl add-br br0 #增加网桥 ovs-vsctl add-port br0 eth0 #将网卡加网桥
在br0中增加vlan10与vlan20端口,分别属于vlan10与vlan20
ovs-vsctl add-port br0 vlan10 tag=10 #设置trunk ovs-vsctl add-port br0 vlan20 tag=20
配置vlan10端口ip地址
ovs-vsctl set Interface vlan10 type=internal ifconfig vlan10 192.168.10.1 netmask 255.255.255.0 ovs-vsctl set Interface vlan20 type=internal ifconfig vlan20 192.168.20.1 netmask 255.255.255.0
配置完成后,查看相关信息
五、OVS支持OpenFlow的SDN模式
在SDN模式下,交换机通过OpenFlow协议与控制(controller)连接,控制确定转发表后下发到交换机,交换机根据转发表在各个端口间转发数据
OVS安装完成后,OVS控制器会自动安装。控制器工作在操作系统的6633端口,若要将OVS与控制器连接,那么需要OVS中创建一个网桥,此网桥包含
物理网卡,并透过物理网卡与操作系统中的OVS OpenFlow控制连接
举例如下:
ovs-vsctl add-br br1 ovs-vsctl add-port br1 eth1 ifconfig eth1 0 ifconfig br1 172.31.208.61 netmask 255.255.255.0
设置OVS与控制器连接
ovs-vsctl set-controller br1 tcp: 172.31.208.61
使用ovs-vsctl show检查状态
在OVS控制器上操作OVS时,可以使用ovs-ofctl命令来处理
六、OVS的常用操作命令
1、查看当前流表
ovs-ofctl dump-flows br0 ovs-ofctl -O OpenFlow13 dump-flows br0 ovs-appctl bridge/dump-flows br0
2、查看接口id
ovs-appctl dpif/show
3、查看接口统计
ovs-ofctl dump-ports br0