简介
搭建SDN环境少不了SDN交换机,SDN交换机跟普通交换机最大的区别就是将普通交换机的数据平面和控制平面相分离,SDN交换机只负责数据的转发,而控制指令则由更上一级的控制器下发。
Open vSwitch(下面简称OVS)是一个高质量的、多层虚拟交换机。OVS遵循开源Apache2.0许可,通过可编程扩展,OVS可以实现大规模网络的自动化(配置、管理、维护),同时支持现有标准管理接口和协议(比如NetFlow、sFlow、SPAN、RSPAN、CLI、LACP、802.1ag等)。此外OVS支持多种linux虚拟化技术,包括Xen/XenServer, KVM,和 VirtualBox等。
本文通过Ubuntu平台安装部署OVS,并介绍OVS上的一些常用操作,让读者进一步了解OpenFLow交换机。
实验环境
1. 本文基于下列环境安装:
- 虚拟机Vmware Workstation 10.0.3;
- Ubuntu14.04(内核版本3.13);
- OVS选择截稿前最新的Open vSwitch 2.3.3版本。
2. OVS2.3.0版本最新特性及改进如下:
- OpenFlow 1.1,1.2,和1.3协议现在在OVS vswitchd中默认启用。
- Linux内核数据面现在提供一个优化的流匹配过程的精确匹配缓存。
- 数据面流现在有部分通配符tranport端口匹配字段。这减少了用户空间的向上调用,但会增加数据面中不同的掩模数。
- 提供megaflows在Linux内核下数据平面的操作。
- 添加IPFIX支持SCTP流和模板ICMPv4 / V6流。
- Linux内核支持到3.14。
- 添加dpdk实验支持。
3. OVS各版本支持的Linux内核如下,可以根据下表选择适合的Linux系统安装。
表1. OVS与Linux内核版本对应关系
4. OVS各模块简要介绍如下:
- ovs-vswitchd:主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;
- ovsdb-server:轻量级数据库服务器,提供ovs-vswitchd获取配置信息;
- ovs-dpctl:用来配置switch内核模块;
- 一些Scripts and specs 辅助OVS安装在Citrix XenServer上,作为默认switch;
- ovs-vsctl:查询和更新ovs-vswitchd的配置;
- ovs-appctl:发送命令消息,运行相关daemon。
此外,OVS也提供了支持OpenFlow的特性实现,包括:
- ovs-ofctl:查询和控制OpenFlow交换机和控制器;
- ovs-pki:OpenFlow交换机创建和管理公钥框架;
- ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息。
准备工作
在正式下载安装OVS之前我们需要安装一些系统组件及库文件以作为OVS正确运行的环境依赖。请切换至root用户进行操作。
注:正常运行使用OVS只需要安装上述依赖即可,如果需要进一步开发OVS可能需要其他环境依赖,可以自行度娘。
部署Open vSwitch 2.3.3
1.下载OVS 2.3.3安装包。
2. 解压OVS 2.3.3安装包。
3. 构建基于Linux内核的交换机。
6. 我们需要安装并加载构建的内核模块。
启动Open vSwitch 2.3.3
1.在启动OVS之前,我们需要先启动ovsdb-server配置数据库。注意后面的命令大部分是由两个短“-”组成的。
5. 我们可以通过如下命令查看所安装OVS的版本号。
如果到这步你都没有问题,那么恭喜,你已经成功安装并启动了OVS 2.3.3。下面我们会介绍一些常用的操作命令。
OVS停止脚本
kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid` (注意这个的`是键盘左上角的符号,而不是引号‘)
##cat ovs-brcompatd.pid ovs-controller.pid ovs-monitor-ipsec.pid##
进入OpenvSwitch的安装路径,杀死ovsdb-server 、ovs-vswitchd 进程。
OVS首次安装使用一切OK,重启后遇到下面问题请参见链接文章:
Protected: OVS重启后使用出现error message “ovs-vsctl: Error detected while setting up ‘br0’
Open vSwitch基本操作(以下Vincent尚未实验)
1. OVS连接控制器
如果我们想让启动好的OVS连接一个控制器,我们可以按如下步骤做。相关控制器的安装部署可以参考之前的技术专栏相关文章:《常用SDN控制器安装部署之Floodlight篇》,《SDN常用控制器安装部署之POX篇》,《OpenDaylight与Mininet应用实战之基本环境搭建(一)》。这里我们以Floodlight控制器为例。
首先添加一个名为br0的网桥。
我们可以用下面的命令将br0网桥连接至一个指定的控制器。
此时我们再打开Floodlight的Web界面能看到控制器、已连接至该控制器的交换机以及主机的信息。Floodlight控制器Web界面的url为http://<controller IP>:8080/ui/index.html。
2. 交换机相关操作
查看虚拟交换机的信息。
查看br0上各交换机端口的状态。
查看br0上所有的流规则
之前已经添加了一个名为br0的网桥。
现在可以将网络接口eth0挂接到网桥br0上。
删除网桥br0上挂接的eth0网络接口。
表2. ovs-vsctl常用命令及选项
表3. ovs-ofctl常用命令及选项