在KVM中,可以使用网桥+VLAN实现虚拟交换机,也可以使用Open vSwitch实现。

    Open vSwitch即开放的软件虚拟交换机,能够达到产品级的质量,也就是说可以部署一些生产环境使用。它不光支持基本的二层交换,还支持标准的管理机接口和协议(如NetFlow,sFlow,SPAN,RSAPN,CLI,LACP,802.1ag),同时也支持OpenFlow,可以很好第与SDN体系融合。

官方网站http://www.openvswitch.org/features/

虚拟化云计算-centos7上安装测试Open vSwitch_第1张图片

一、安装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

image.png



二、使用ovs-vsctl管理OVS

OVS提供了不同的管理工具,其中最常用的是ovs-vsctl

  1. 网桥相关的操作

ovs-vsctl add-br br0                #增加网桥
ovs-vsctl add-port br0 eth0         #将网卡加网桥

虚拟化云计算-centos7上安装测试Open vSwitch_第2张图片

查看OVS中所有网桥及端口信息

ovs-vsctl show

虚拟化云计算-centos7上安装测试Open vSwitch_第3张图片

此时,将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        #增加网桥的默认路由

虚拟化云计算-centos7上安装测试Open vSwitch_第4张图片


image.png

修改网卡eth0配置文件,不配置ip地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0

虚拟化云计算-centos7上安装测试Open vSwitch_第5张图片


新建网卡br0的配置文件,按照以下填写ip地址

vim /etc/sysconfig/network-scripts/ifcfg-br0


虚拟化云计算-centos7上安装测试Open vSwitch_第6张图片



三、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

虚拟化云计算-centos7上安装测试Open vSwitch_第7张图片

ovs-vsctl list port

虚拟化云计算-centos7上安装测试Open vSwitch_第8张图片

    由上面的信息可以看到,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

配置完成后,查看相关信息

虚拟化云计算-centos7上安装测试Open vSwitch_第9张图片


虚拟化云计算-centos7上安装测试Open vSwitch_第10张图片


五、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

虚拟化云计算-centos7上安装测试Open vSwitch_第11张图片

3、查看接口统计

ovs-ofctl dump-ports br0

虚拟化云计算-centos7上安装测试Open vSwitch_第12张图片