安装OpenvSwitch (ovs)

简介

搭建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;
  • Ubuntu13.10(内核版本3.11);
  • OVS选择截稿前最新的Open vSwitch 2.3.0版本(2014年8月14日发布)。

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内核版本对应关系

ovs install-table 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用户进行操作。

# apt-get update
# apt-get install -y build-essential

 

注:正常运行使用OVS只需要安装上述依赖即可,如果需要进一步开发OVS可能需要其他环境依赖,可以自行度娘。

部署Open vSwitch 2.3.0

1.下载OVS 2.3.0安装包。

2. 解压OVS 2.3.0安装包。

4. 编译并安装OVS 2.3.0。

5. 如果需要OVS支持VLAN功能,还需要加载openvswitch.ko模块,如果不需要,此步可以忽略。

6. 我们需要安装并加载构建的内核模块。

注:若重启机器导致openvswitch没有启动(lsmod |grep openvswitch),如果重新加载。

7. 使用ovsdb工具初始化配置数据库。

至此,如果没有报错的话OVS的部署已经成功完成。如果中间步骤出现问题,请仔细检查是否按步骤进行或有无单词拼写错误。

启动Open vSwitch 2.3.0

1.在启动OVS之前,我们需要先启动ovsdb-server配置数据库。注意后面的命令大部分是由两个短“-”组成的。

2.首次用ovsdb-tool创建数据库时需用ovs-vsctl命令初始化下数据库。

3. 启动OVS主进程

4. 查看OVS进程是否启动。

root@ubuntu:/home/chulk/sdn/openvswitch-2.3.1# ps aux|grep ovs
root       1719  0.0  0.2  21212  2092 ?        Ss   02:53   0:00 ovsdb-server -v --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach --log-file
root       1724  0.3  0.2 243068  2452 ?        Ssl  02:53   0:12 ovs-vswitchd --pidfile --detach --log-file
root       2640  0.0  0.0  21072   572 ?        S<s  03:53   0:00 ovsdb-server: monitoring pid 2641 (healthy)    

 

5. 我们可以通过如下命令查看所安装OVS的版本号。

如果到这步你都没有问题,那么恭喜,你已经成功安装并启动了OVS 2.3.0。下面我们会介绍一些常用的操作命令。

Open vSwitch基本操作

1. OVS连接控制器

如果我们想让启动好的OVS连接一个控制器,我们可以按如下步骤做。相关控制器的安装部署可以参考之前的技术专栏相关文章:《常用SDN控制器安装部署之Floodlight篇》,《SDN常用控制器安装部署之POX篇》,《OpenDaylight与Mininet应用实战之基本环境搭建(一)》。这里我们以Floodlight控制器为例。

首先添加一个名为br0的网桥。

列出所有网桥。

启用该网桥。

此时再用ifconfig命令能在网络设备列表里看到名为br0的网桥即启动成功。

root@ubuntu:/home/chulk/sdn/openvswitch-2.3.1# ifconfig -a
br0       Link encap:Ethernet  HWaddr a6:0c:7f:2e:0a:47  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 00:50:56:2c:4f:1d  
          inet addr:172.16.26.136  Bcast:172.16.26.255  Mask:255.255.255.128
          inet6 addr: fe80::250:56ff:fe2c:4f1d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21635 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3669 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3550892 (3.5 MB)  TX bytes:536821 (536.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:6197 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1925113 (1.9 MB)  TX bytes:1925113 (1.9 MB)

ovs-system Link encap:Ethernet  HWaddr fa:6e:dd:da:2e:a7  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

我们可以用下面的命令将br0网桥连接至一个指定的控制器。

这里本文使用的控制器地址为172.16.26.136,端口为6653。即:

查看OVS是否连接上控制器。

 

2. 交换机相关操作

查看虚拟交换机的信息。

 

查看br0上各交换机端口的状态。

 

查看br0上所有的流规则

3. 网桥管理

之前已经添加了一个名为br0的网桥。

现在可以将网络接口eth0挂接到网桥br0上。

列出挂接到网桥br0上的所有网络接口。

查看结果,如图所示:

ovs install-操作-07

删除网桥br0上挂接的eth0网络接口。

 

删除名为br0的网桥。

4. OVS其它常用命令及选项如下表所示:

表2. ovs-vsctl常用命令及选项

ovs install-table1 ovs-vsctl命令

表3. ovs-ofctl常用命令及选项

ovs install-table2 ovs-ofctl命令

 

    参考:http://www.sdnlab.com/3166.html

       编译安装或升级 :源代码目录  INSTALL

   ubuntu apt-get 安装及操作: http://blog.csdn.net/sdnexplorer/article/details/26053713

posted on 2015-09-08 19:04  偏爱省略号  阅读(5980)  评论(0编辑  收藏  举报

导航