Open vSwitch使用笔记

1. Open
vSwitch介绍

1.1虚拟化网络架构图

1.2 Open
vSwitch功能介绍

2. 安装,启动,关闭

2.1 源码安装

2.2 apt安装

2.3 启动脚本

2.4 关闭脚本

2.5 virsh启动

3. 配置,使用

3.1流规则

3.2VLAN

3.3 sflow

3.4接入物理机

4. 遇到的问题

4.1找不到opevswitch_mod.ko brcompatd.ko内核模块怎么办?

4.2 Xen无法创建虚拟机?

4.3关于兼容模块brcompatd.ko

4.4 tap和vif的区别

4.5深入认识taptun

4.6当没有内核支持的时候,如何使用ovs

4.7什么叫虚拟边缘网络?

4.8关于软交换(待续)

4.9网络设备虚拟化(待续)

4.10网桥能有IP么?

 

 

 

 

 

1.Open vSwitch介绍

1.1虚拟化网络架构图:

1.2 Open
vSwitch功能介绍:


  

Open vSwitch的目标,是做一个具有产品级质量的多层虚拟交换机。通过可编程扩展,可以实现大规模网络的自动化(配置、管理、维护)。它支持现有标准管理接口和协议(比如netFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag等,熟悉物理网络维护的管理员可以毫不费力地通过Open vSwitch转向虚拟网络管理)。

下文将会介绍几个配置实例:安全方面的VALN,流量监控方面的sflow,访问控制方面的openflow

2. 安装,启动,关闭

2.1 源码安装

从官方网站http://openvswitch.org/中下载Open vSwitch源代码包,最新版本可使用下面的链接:http://openvswitch.org/releases/openvswitch-1.1.0pre2.tar.gz,下载完后输入以下命令解压

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># tar –xzvf openvswitch-1.1.0pre2.tar.gz</span><span style="font-family:'sans serif',tahoma,verdana,helvetica;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline; line-height:1.5"><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span></span>

进入解压后目录,输入以下命令配置Open vSwitch工程,生成Makefile文件。

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># ./configure --with-linux=/lib/modules/`uname -r`/build</span>

–with- linux:生成内核模式的Open vSwitch时需指定的内核源码编译目录

指定Open
vSwitch的安装位置加参数:–prefix=/…

如有其他问题可参考源码根目录下的帮助文件:INSTALL.Linux

 

编译、链接、生成和安装Open vSwitch,命令如下,make install目录只安装Open vSwitch除内核模块外的其他所有模块,如ovs-vsctl、ovs-vswitchd、ovs-ofctl等

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># make</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># make install</span>

卸载原有虚拟网桥模块,命令如下,如果Xend正常启动,将自动加载linux虚拟网桥模块bridge.ko。

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># rmmod bridge</span>

如果无法卸载,可用“lsmod”命令查看已加载的依赖于bridge的内核模块,并用“rmmod 模块名”卸载,常见的无法卸载的情况可通过预先执行下面两条命令解决。

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># /etc/init.d/iptables stop</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># rmmod xt_physdev</span>

加载Open
vSwitch内核模块openvswitch_mod.ko和linux虚拟网桥兼容模块brcompat_mod.ko

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko</span><span style="font-family:'sans serif',tahoma,verdana,helvetica;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline; line-height:1.5"><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span></span>

根据ovsdb模板vswitch.ovsschema创建ovsdb数据库ovs-vswitchd.conf.db,用于存储虚拟交换机的配置信息,只需第一次运行Open
vSwitch时创建

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># ovsdb-tool create</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">usr</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>local</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">etc</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">conf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db
openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1.1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0pre2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovsschema</span>

启动ovsdb数据库服务器,Open vSwitch虚拟网桥模块将通过ovsdb-server获得虚拟交换机配置信息,“—detach”表示以后台方式运行, ovsdb-server其他参数请参考“ovsdb-server –help”

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># ovsdb-server</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">usr</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>local</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">etc</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">conf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">remote</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">punix</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">usr</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>local</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">run</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">sock </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">remote</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">Open_vSwitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">manager_options </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">private</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">key</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">private_key </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">certificate</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">certificate </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">bootstrap</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ca</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">cert</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ca_cert </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">detach</span>

初始化Open
vSwitch控制接口,以便用ovs-vsctl管理配置虚拟交换机

[root@localhost ~]#
ovs-vsctl –no-wait init

 

启动Open
vSwitch用户态模块,unix:后的文件为socket文件,为ovsdb-server监听的socket文件。

[root@localhost ~]#
ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock –detach

 

启动linux原有虚拟网桥兼容模块用户态组件ovs-brcompatd,该模块必须在ovsdb-server和ovs-vswitchd启动后才能启动。

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">root@localhost </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">~]</span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"># ovs-brcompatd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">pidfile </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">detach</span>

2.2 apt-get安装

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">$apt</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">get install openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-*</span>

注意:使用deb安装openvswitch-datapath*也是需要依赖/lib/modules/`uname -r`/build,否则无法编译内核模块

2.3 启动脚本:(见ovs-start.sh)

<span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#!/bin/bash</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#./configure --with-l26=/lib/modules/`uname -r`/build</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#echo "close applications or modules depending on bridge.ko"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#if service iptables status|grep running > /dev/null 2>&1; then</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#/etc/init.d/iptables stop;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#fi</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#if lsmod|grep xt_physdev > /dev/null 2>&1; then</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#rmmod xt_physdev;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#fi</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"remove module bridge"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> lsmod</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">grep bridge </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> rmmod bridge </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"bridge.ko removed"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"Failed to remove kernel module bridge"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> exit </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"clean obsolete socket files in /var/run/openvswitch/"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>for</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> i </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>in</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">`ls /var/run/openvswitch/|grep "ctl$"`</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>do</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> rm </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">run</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">$i</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>done</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"insert kernel module openvswitch_mod.ko"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> lsmod</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">grep bridge </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"bridge is already running"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>elif</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> lsmod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> grep openvswitch_mod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"module openvswitch_mod exist"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> insmod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">、、/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">lib</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dkms</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1.4</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">3.2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">30</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> \ </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">generic</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">x86_64</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">module</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch_mod</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ko </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"openvswitch_mod.ko inserted"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"failed to insert openvswitch_mod.ko"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> exit </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#first use this when install</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovsdb</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tool create </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">usr</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>local</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">etc</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">conf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db \ </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">lib</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dkms</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1.4</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">build</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovsschema </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#before starting  ovs-vswitchd ,wo  need to start its config database</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"start daemon ovsdb-server"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ps </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ef</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">grep </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">E </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"[[:digit:]][[:space:]]+ovsdb-server"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"ovsdb-server is already running"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovsdb</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">server </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"/usr/local/etc/ovs-vswitchd.conf.db"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">remote</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">punix</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">run</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">sock </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">remote</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">Open_vSwitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">manager_options </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">private</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">key</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">private_key </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">certificate</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">certificate </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">bootstrap</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ca</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">cert</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">SSL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ca_cert </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">detach </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#initialize the db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">no</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">wait init </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#start vswitch itself</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"start daemon ovs-vswitchd"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ps </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ef</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">grep </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">E </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"[[:digit:]][[:space:]]+ovs-vswitchd"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"ovs-vswitchd is already running"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd unix</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">run</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">db</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">sock </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">detach </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"start daemon ovs-brcompatd"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> lsmod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> grep brcompat_mod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"module ovs-brcompatd exist"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> insmod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">var</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">lib</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dkms</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">openvswitch</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1.4</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">3.2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">30</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">generic</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">x86_64</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">module</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">brcompat_mod</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ko</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"module ovs-brcomptd inserted"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"failed to insert module ovs-brcomptd"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> exit </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">brcompatd </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">pidfile </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">--</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">detach </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock ;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"add and configure bridge ovsbr0"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl list</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">br</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">|</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">grep ovsbr0 </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>&</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>then</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> echo </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"bridge ovsbr0 already exists"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">>/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">null </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>else</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl add</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">br ovsbr0 </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>fi</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ifconfig ovsbr0 up </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#ifconfig ovsbr0 172.16.18.230/16</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#echo "attach all interfaces to bridge ovsbr0"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#if /usr/sbin/brctl show |grep peth0 > /dev/null 2>&1; then</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#echo "peth0 is added" >/dev/null;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#else</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#ovs-vsctl add-port xenbr0 peth0 > /dev/null 2>&1;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#for i in `ifconfig|grep vif|awk '{print $1}'`;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#do</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#ovs-vsctl add-port ovsbr0 $i > /dev/null 2>&1;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#done</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#fi</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#echo "Open vSwitch started successfully"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#ovs-vsctl add-port xenbr0 peth0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">etc</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">init</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">.</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">d</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">networking restart</span>

2.4 关闭脚本:(见ovs-stop.sh)

<span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#!/bin/sh</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> kill </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">`cd /var/run/openvswitch && cat ovs-brcompatd.pid  ovsdb-server.pid ovs-vswitchd.pid ovs-controller.pid  ovs-monitor-ipsec.pid`</span>

使用libvirt/virsh启动虚拟机:

阅读源代码目录下的INSTALL.Libvirt

将原来的配置文件中的下列部分:

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">...</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">interface type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'network'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">mac address</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'52:54:00:71:b1:b6'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">source network</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'default'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">address type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'pci'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> domain</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x0000'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> bus</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x00'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> slot</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x03'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>function</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x0'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"></</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">interface</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">...</span>

改成这个样子:

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">...</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">interface type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'bridge'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">mac address</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'52:54:00:71:b1:b6'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">source bridge</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'ovsbr'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">virtualport type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'openvswitch'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">address type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'pci'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> domain</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x0000'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> bus</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x00'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> slot</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x03'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>function</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">'0x0'</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"></</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">interface</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">...</span>



3. 配置 

3.1 ovs-vsctl使用:

添加名为br0的网桥

ovs-vsctl
add-br br0

删除名为br0的网桥

ovs-vsctl
del-br br0

列出所有网桥

ovs-vsctl
list-br

判断网桥br0是否存在

ovs-vsctl
br-exists br0

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

ovs-vsctl
list-ports br0

将网络接口eth0挂接到网桥br0

ovs-vsctl
add-port br0 eth0

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

ovs-vsctl
del-port br0 eth0

列出已挂接eth0网络接口的网桥

ovs-vsctl
port-to-br eth0

 

3.2 流规则:

每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分:

基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。

条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。其中dldatalink的缩写,nwnetwork的缩写,tptransport的缩写。

动作字段包括正常转发normal、定向到某交换机端口outputport、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

实例:

1.    
查看虚拟交换机
ovsbr0的信息:

$ovs-ofctl  show ovsbr0

2.    
查看
ovsbr0上各交换机端口的状态

$ovs-ofctl  dump-ports ovsbr0

3.    
查看
ovsbr0上的所有流规则

$ovs-ofctl  dump-flows ovsbr0

4.    
丢弃从
2号端口发来的所有数据包

$ovs-ofctl  add-flow ovsbr0
idle_timeout=0,in_port=2,actions=drop

注意:此处的in_port是指虚拟网卡(vif,tap)的号码,并非传输层的端口号(www:80,ftp:21,22),通过ovs-ofctl  show ovsbr0可查得端口号,传输层的端口号有tp_src/tp_dst指定。

5.    
删除条件字段中包含
in_port=2的所有流规则

$ovs-ofctl  del-flows ovsbr0 in_port=2

6.    
丢弃所有收到的数据包

$ovs-ofctl  add-flow ovsbr0
dl_type=*,nw_src=ANY,action=drop

注意: (1)流规则中可包含通配符和简写形式,任何字段都可等于*ANY

 (2)简写形式为将字段组简写为协议名,目前支持的简写有iparpicmptcpudp,与流规则条件字段的对应关系如下:

dl_type=0×0800 <=> ip
dl_type=0×0806 <=> arp
dl_type=0×0800,nw_proto=1 <=> icmp
dl_type=0×0800
nw_proto=6 <=> tcp
dl_type=0×0800
nw_proto=17 <=> udp
1.1.0 即以后版本支持)

dl_type=0x86dd. <=> ipv6
dl_type=0x86dd,nw_proto=6. <=> tcp6
dl_type=0x86dd,nw_proto=17. <=> udp6
dl_type=0x86dd,nw_proto=58. <=> icmp6

 

3.3 测试VALN

参考文章:

http://openvswitch.org/support/config-cookbooks/vlan-configuration-cookbook/

配置实例:

在两台xen+openvswitch的服务器上172.16.19.206172.16.19.208,启动四个虚拟机(206VM3, VM4; 208:VM1, VM2 ),结构图如下所示:

配置如下:

1.在206:

Ifconfig eth1
172.16.19.206/16 up

(1)创建网桥:

Ovs-vsctl add-br ovsbr0
#注意创建网桥之后,会在网桥上创建同名的端口
ovsbr0,类型为internal,用于给网桥配置IP方便管理等。

(2)让网桥ovsbr接管eth0:

Ovs-vsctl add-port
ovsbr0 eth0

(3)配置网桥的IP:

Ifconfig eth0 0.0.0.0

Ifconfig ovsbr0
172.16.19.230/16 up

(4)创建虚拟机:

Virsh create VM1.xml

Virsh create VM2.xml

(5)查看网桥:

Ovs-vsctl show ovsbr0

会发现ovsbr0下面会有6个端口ovsbr0,eth0,tap1.0,tap2.0,vif1.0,vif2.0(关于tapvif参见其他内容,在本服务器上起作用的是tap,具体哪个起作用还需要测试)

2. 在208上,配置类似:

3.配置VLAN

(1)VM1, VM2属于VLAN1

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port tap2.0
tag=1

VM1VM2之间可以互ping,

 

(2)VM1属于VLAN1,
VM2
属于VLAN1

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port tap2.0
tag=2

VM1VM2之间无法互ping,

 

(3)VM1, VM2, VM3,VM4属于VLAN1

208上:

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port
tap1.0 tag=1

206上:

Ovs-vsctl set port tap3.0
tag=1

Ovs-vsctl set port tap4.0
tag=1

VM1, VM2, VM3,VM4之间可以互ping,

 

(4)VM1, VM3,属于VLAN1,
VM2,VM4
属于VLAN2

208上:

Ovs-vsctl set port
tap1.0 tag=1

Ovs-vsctl set port
tap2.0 tag=2

206上:

Ovs-vsctl set port
tap3.0 tag=1

Ovs-vsctl set port
tap4.0 tag=2

在我的试验中,VM1, VM2,
VM3,VM4
之间无法互ping,而理论上应该是VM1VM3可以互ping,VM2VM4之间可以互ping。目前还不知道什么原因造成的。待续。。。

 

 

 

 

3.4 Sflow:

1.下面先来关注几个问题:

(1) Sflow是什么呢? 与sflow相应的有一个Netflow sFlowNetflow聽起來很相似,但在骨子裡卻不一樣。Netflow會針對所有流經的網路封包去取得其特徵,包含Source IP
address
Destination IP addressSource
port for UDP or TCP, 0 for other protocols
Destination
port for UDP or TCP, type and code for ICMP, or 0 for other protocols
IP protocolIngress interface (SNMP ifIndex)IP Type of Service這些資訊。 
由於Netflow會對所有流經的封包進行處理,若網路流量極大時,Netflow所提供的資料量亦會隨之增加,若資料量太大,後端分析引擎可能會不堪負荷,進而影響資料判讀時的正確性。 
sFlow
的作法和Netflow不同,sFlow以取樣的方式取出資料的摘要,使用者可以自訂其取樣大小及取樣週期,即使流經大量網路流量,但sFlow經取樣後的資料相對於Netflow而言會大量的減少,如此一來就可以兼顧資料正確性並確保後端分析引擎處理能力。 
在實務上,sFlow較常運用於高速網路的環境,也是因為其具有此特性的關係。sFlow提供的資料格式在之後實作的階段會加以展示,在此不多作說明。 
在實作時,會遭遇到許多的困難,這是因為sFlow僅在部分設備上提供,也不像Netflow,在Linux中可使用nfdump套件來產生符合其格式的流量。 

(2)  是不是open
vswitch
支持了sflow就不支持了netflow?不是,在其官方的介绍里(上文的官方图片),可以看到也是支持netflow的。目前我的做法是,使用sflowtoolsflow转换为netflow

2.配置实例:

目标流量导出,并可以使用snorttcpdump对流量进行监控和分析。

配置图如下所示:

208服务器上安装xenopenvswitch,并启动两个虚拟机VM1,VM2。不在赘述。

(1)  
配置
sflow流量导出

#!/bin/sh

COLLECTOR_IP=172.16.18.18

COLLECTOR_PORT=6343

AGENT_IP=eth1

HEADER_BYTES=128

SAMPLING_N=2

POLLING_SECS=1

ovs-vsctl –
–id=@sflow create sflow agent=${AGENT_IP}
target=\”${COLLECTOR_IP}:${COLLECTOR_PORT}\” header=${HEADER_BYTES}
sampling=${SAMPLING_N} polling=${POLLING_SECS} — set bridge ovsbr0
sflow=@sflow

这是配置sflow的一个脚本,现在解释其中的意思:

COLLECTOR_IP是指进行流量监控的机器,本次实例中是指172.16.18.18

COLLECTOR_PORT=6343 是指把流量发到COLLECTOR_IP6343端口

AGENT_IP=eth1是指把流量从本地的eth1端口发出去

并指定每1poolling一次,每次的取样频率为64(即,每隔64Packet取样一次)

(2)  
转换
sflow

现在让VM1(ip:x.x.x241) ping VM2(ip: x.x.x242)

执行上面那个脚本,在18.18机器上用snort会看到206发到18.18的包,而不会看到241242之间通信的数据包。因为241242通信的数据被sflow封装起来之后再发给18.18.如果想看到这个数据,需要将sflow转换为snorttcpdump的格式,具体命令如下:

$sflowtool
–p 6343 –t | snort –r –

或者

$sflowtool
–p 6343 –t | tcpdump –X –r -

(3)  
sflowtool的使用:

-f可以转发到另一台机器上

$sflowtool  –p 6343 –t –f x.x.x.x/6343

-c可以将sflow转换为netflow

其他的使用信息,参见 man sflowtool

 

3.5 Ovs接入物理机器

目的:open vswitch不仅可以控制虚拟机(VM1, VM2),也可以控制物理机器(PY1)

配置图如下:

具体配置如下:

(1)  
由网桥
ovsbr0接管eth0eth2

Ovs-vsctl add-port
ovsbr0 eth0

Ovs-vsctl add-port
ovsbr0 eth2

(2)  
Eth0接外网,
eth1hub

(3)  
208上启动两个虚拟机VM1,VM2。并配置IPx.x.x.241, x.x.x.242

(4)  
配置物理机
PY1IP, x.x.x.250

(5)  
现在已经联通了,下面测试一下,可以有
250 ping 241, 启动sflow便可观测到相应的信息。

 

4. 遇到的问题

4.1找不到opevswitch_mod.ko brcompatd.ko内核模块怎么办?

编译安装和apt安装都需要编译内核模块,而编译内核模块需要安装linux-header,即需要/lib/modules/`uname -r`/build,下的内容。请确保系统已安装linux-header

4.2
Xen无法创建虚拟机?

查看xen日志文件,并判断错误原因

$tail
–n 100 /var/log/xen/qemu-dm-XXX.log

(1)  
如果出现以下错误:

$tail -n 100
/var/log/xen/qemu-dm-u3.log

domid: 44

-c config qemu
network with xen bridge for

tap44.0 ovsbr0

can’t add tap44.0 to
bridge ovsbr0: Operation not supported

/etc/xen/scripts/qemu-ifup:
could not launch network script

Could not
initialize device ‘tap’

需要加载open vswitchbridge的兼容模块brcompatd.ko,即

$insmod
/path/to/brcompatd.ko

(2)一切都配置妥当的时候,我还遇到个错误,导致虚拟机无法正常启动,是因为xml配置文件中<interface>部分写在了<disk>的前面,改过来之后就好了。

4.3  
关于兼容模块
brcompatd.ko

看看官方给出的解释:http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.bridge;hb=HEAD
 
This file documents how Open vSwitch may be used as a drop-in
replacement for a Linux kernel bridge in an environment that includes
elements that are tightly tied to the Linux bridge tools
(e.g. "brctl") and architecture.  We recommend directly using the
management tools provided with Open vSwitch rather than these
compatibility hooks for environments that are not tightly tied to the
Linux bridging tools; they are more efficient and better reflect the
actual operation and status.。。。。

大致意思是有很多工具,软件等等和Linux kernel bridge的关联比较紧密,比如我们使用的xen-4.1。上一小节提到xen无法创建,错误里面有句话是 /etc/xen/scripts/qemu-ifup: could not launch network script”,而查看这个脚本,里面的内容是:

#!bin/sh

Echo
–c `config qemu network with xen bridge for`

Echo
$*

Ifconfig
$1 0.0.0.0 up

Brctl addif $2 $1

此处便发现这个脚本使用Brctl,而其依赖于linux bridge

4.4  
tap和
vif的区别
PV虚机只有一个vifX.N,而HVM虚机不安装PV
Driver
的时候会有两个网络接口vifX.NtapX.N,而且实际上使用的是tapX.NHVM虚机安装PV
Driver
并重启后,tapX.N会消失,使用vifX.N(若不重启还是使用tapX.N

 

tap interfaces -> qemu-emulated NICs (realtek model by default),
used 

when no PV drivers installed (using OS’ own driver for that model) 

vif interfaces (the one that you can rename) -> xen network frontend 
NICs, used when you have PV drivers installed (like GPLPV, 
http://meadowcourt.org/downloads/

 

the vif is a
virtual interface that works
 with
pv drivers in domU.  The tap is a Qemu interface that is used with
 HVMs that don’t have pv drivers.
 So, if you start a HVM domU, you’ll
 
have the vif that Xen creates and the tap that
Qemu creates, if pv
 drivers are
available, then once they are loaded Domu uses them and the
 tap goes away, but if not then both
remain, but only the tap interface
 is
being used.  Obviously, if you need more detailed explaination, then
 I’m of no further use.:) 

 

4.5  
深入认识
taptun

官方FAQ: http://vtun.sourceforge.net/tun/faq.html

TUN时点对点的设备,tap表示以太网设备的,做为虚拟网卡驱动,Tun/tap驱动程序的数据接收和发送并不直接和真实网卡打交道,而是通
过用户态来转交。在
linux下,要实现核心态和用户态数据的交互,有多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交 互;通过proc文件系统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用设备驱动相应的例程,设备驱动本身就
是核心态和用户态的一个接口,
Tun/tap驱动就是利用设备文件实现用户态和核心态的数据交互。

当没有内核模块支持的时候,Open vSwitch完全运行于用户态,ovs的数据通路有tun来实现。

参见4.6,当没有内核支持的时候,如何使用ovs

         为了对tap/tun有更深入的体会,下面将观看tun源代码,并使用tun写个程序。

tun源代码可从此处获得http://vtun.sourceforge.net/tun/index.html。其头文件是”if_tun.h”,这个适用于编程时用的。另外要编译tun.c,将tun作为内核模块加载进去。下面是tun.c中几段代码

<span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/* file_operations 结构体,将正常的文件操作对应于tun相应的函数,这样可以像操作文件一样操作tun*/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>static</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>struct</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> file_operations tun_fops </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> owner</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> THIS_MODULE</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> llseek</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_lseek</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> read</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_read</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> write</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_write</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> poll</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_poll</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ioctl</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_ioctl</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> open</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_open</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> release</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_chr_close</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> fasync</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">:</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_chr_fasync </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">};</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>static</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>struct</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> miscdevice tun_miscdev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> TUN_MINOR</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"net/tun"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_fops </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">};</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/*c语言中的 __init 保证该函数只执行一次 */</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">int</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> __init tun_init</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>void</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> printk</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">KERN_INFO </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"Universal TUN/TAP device driver %s "</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"(C)1999-2000 Maxim Krasnyansky\n"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> TUN_VER</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">misc_register</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_miscdev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">))</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> printk</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">KERN_ERR </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"tun: Can't register misc device %d\n"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> TUN_MINOR</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>return</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">EIO</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>return</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>void</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> tun_cleanup</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>void</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> misc_deregister</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_miscdev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/*加载tun模块*/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> module_init</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_init</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> module_exit</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun_cleanup</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span>

 

下面应用一下tun,写个程序体会一下(tun源码中的一个example)

<span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><stdio.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><fcntl.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><unistd.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><sys/time.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><sys/types.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#include</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><linux/if_tun.h></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#87ceeb;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">#define</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> max</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">a</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">b</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">((</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">a</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)>(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">b</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">?</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">a</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">):(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">b</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">))</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">int</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> main</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">int</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> argc</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>char</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">*</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">argv</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[])</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>char</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1600</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">];</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#98fb98;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">int</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">l</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fm</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> fd_set fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">argc </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> printf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"Usage: bridge tap|tun\n"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> exit</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> sprintf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"/dev/%s%d"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">argv</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">],</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">0</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> f1 </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> open</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> O_RDWR</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> sprintf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffa0a0;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">"/dev/%s%d"</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">argv</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">[</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">],</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> f2 </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> open</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> O_RDWR</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> fm </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> max</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">+</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">;</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ioctl</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> TUNSETNOCSUM</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> ioctl</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> TUNSETNOCSUM</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>while</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">){</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> FD_ZERO</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> FD_SET</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> FD_SET</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> select</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fm</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> NULL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> NULL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> NULL</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> FD_ISSET</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> l </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> read</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>sizeof</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">));</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> write</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">l</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>if</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> FD_ISSET</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">&</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">fds</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">)</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">{</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> l </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> read</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f2</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>sizeof</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">));</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> write</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">(</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">f1</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">buf</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">,</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">l</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">);</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">}</span>

 

 

4.6   当没有内核支持的时候,如何使用ovs?
参考官方文档:
http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.userspace;hb=HEAD
当没有内核模块支持的时候,ovs可以完全在用户空间运行,当然要损失一部分性能。下面介绍做法。
出了内核模块openvswitch_mod.ko和brcompatd.ko模块的编译和安装省略之外,其他部分正常。
     如4.5中提到的用户态和核心态的转换有那么几种方式,ovs的用户态的转换需要内核的tun/tap驱动可以正常使用。查看/sys/class/misc/tun中是否存在,如果没有存在加载相应模块  ”modprobe tun”
 tun 设备也必须存在于/dev/net/tun目录下面。如果没有则创建之,创建的方法如下: 

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">mkdir </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">net
mknod </span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">dev</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">net</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">/</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">tun c </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">10</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> </span><span style="font-family:inherit;color:#cd5c5c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">200</span>

为了在用户空间使用ovs,需要创建一个网桥br0,并设置其datapath_type为”netdev”:

<span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl add</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">br br0
ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl </span><span style="font-family:inherit;color:#f0e68c;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"><strong>set</strong></span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;"> bridge br0 datapath_type</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">=</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">netdev
ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl add</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">port br0 eth0
ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl add</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">port br0 eth1
ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vsctl add</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">port br0 eth2
ovs</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">-</span><span style="font-family:inherit;color:#ffffff;padding:0px; margin:0px; font-style:inherit; vertical-align:baseline;">vswitchd</span>

将会创建一个和网桥br0同名的 tap设备作为网桥的本地interface。
 
 
4.7 什么叫虚拟边缘网络?

一般来说:虚拟边缘网络是指如何对虚拟机的流量进行转发和策略控制。由于虚拟机是共驻于宿主机上,因此有两个选择,一个是在主机侧直接用软件来实现,一个是把它发出去到硬件上做完决策后再发回来。

4.8 关于软交换(待续)

详细中文介绍可以参考这里

http://hi.baidu.com/cattydong/item/952033177ada9df6ddeeca2d

http://hi.baidu.com/cattydong/item/304c153be4149bf197f88d43

 

关于这方面的内容,open vswitch的官方网站也有两篇论文

http://openvswitch.org/papers/hotnets2009.pdf

http://openvswitch.org/papers/dccaves2010.pdf

 

4.9网络设备虚拟化(待续)

Virtio

I/O 虚拟化

虚拟 LANs

硬件加速

 

4.9网桥能有IP么?

可以有,目前我知道的一个作用是便于远程控制。

Ovs-vsctl add-br ovsbr0 或者brctl addbr br0

在创建网桥的时候,还会创建一个同名的端口ovsbr0或者br0,可以在这个上面配置IP。



ubuntu 14.04安装OVS虚拟OpenFlow交换机配置总结
一、安装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 实践》)
18.查看 OVS 的版本信息:ovs-appctl --version
19.查看 OVS 支持的 OpenFlow 协议的版本:ovs-ofctl --version
更多设置可查看官方文档。


Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此外,它被设计位支持跨越多个物理服务器的分布式环境,类似于VMware的vNetwork分布式vswitch或Cisco Nexus 1000 V。Open vSwitch支持多种linux 虚拟化技术,包括Xen/XenServer, KVM和irtualBox。当前最新代码包主要包括以下模块和特性:

  • ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;
  • ovsdb-server 轻量级数据库服务器,提供ovs-vswitchd获取配置信息;
  • ovs-brcompatd 让ovs-vswitch替换Linuxbridge,包括获取bridge ioctls的Linux内核模块;
  • ovs-dpctl 用来配置switch内核模块;

一些Scripts and specs 辅助OVS安装在Citrix XenServer上,作为默认switch;

  • ovs-vsctl 查询和更新ovs-vswitchd的配置;
  • ovs-appctl 发送命令消息,运行相关daemon;
  • ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表。

此外,OVS也提供了支持OpenFlow的特性实现,包括

  • ovs-openflowd:一个简单的OpenFlow交换机;
  • ovs-controller:一个简单的OpenFlow控制器;
  • ovs-ofctl 查询和控制OpenFlow交换机和控制器;
  • ovs-pki :OpenFlow交换机创建和管理公钥框架;
  • ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;

内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联一下流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后碰到相同类型的数据包可以在内核中执行操作)。

二、open vswitch常用操作

以下操作都需要root权限运行,在所有命令中br0表示网桥名称,eth0为网卡名称。

添加网桥:

#ovs-vsctl add-br br0

列出open vswitch中的所有网桥:

#ovs-vsctl list-br

判断网桥是否存在

#ovs-vsctl br-exists br0

将物理网卡挂接到网桥:

#ovs-vsctl add-port br0 eth0

列出网桥中的所有端口:

#ovs-vsctl list-ports br0

列出所有挂接到网卡的网桥:

#ovs-vsctl port-to-br eth0

查看open vswitch的网络状态:

#ovs-vsctl show

删除网桥上已经挂接的网口:

#vs-vsctl del-port br0 eth0

删除网桥:

#ovs-vsctl del-br br0

三、使用open vswitch构建虚拟网络

1、构建物理机和物理机相互连接的网络

在安装open vswitch的主机上有两块网卡,分别为eth0、eth1,把这两块网卡挂接到open vswitch的网桥上,然后有两台物理机host1、host2分别连接到eth0和eth1上,实现这两台物理机的通信。构建结果图如下:

执行以下命令:

#ovs-vsctl add-br br0 //建立一个名为br0的open vswitch网桥
#ovs-vsctl add-port br0 eth0 //把eth0挂接到br0中
#ovs-vsctl add-port br0 eth1 //把eth1挂接到br0中

2、构建虚拟机与虚拟机相连的网络

在安装open vswitch的主机上安装两个虚拟机,把两个虚拟机的网卡都挂接在open vswitch的网桥上,实现两台虚拟机的通信,构建结果图如下:

执行以下命令:

# ovs-vsctl add-br br0 //建立一个名为br0的open vswitch网桥

如果使用vbox或virt-manager把bridge设置为br0即可,如果使用cli kvm则先创建两个文件,用于虚拟网卡的添加于删除。假设这两个文件分别为/etc/ovs-ifup和/etc/ovs-ifdown,则向这两个文件中写入以下内容
/etc/ovs-ifup

#!/bin/sh

switch='br0'
/sbin/ifconfig $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1

 

/etc/ovs-ifdown

#!/bin/sh

switch='br0'
/sbin/ifconfig $1 0.0.0.0 down
ovs-vsctl del-port ${switch} $1

使用以下命令建立虚拟机

kvm -m 512 -net nic,macaddr=00:11:22:33:44:55-net \

tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive\

file=/path/to/disk-image,boot=on

kvm -m 512 -net nic,macaddr=11:22:33:44:55:66-net \

tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive\

file=/path/to/disk-image,boot=on

3、构建虚拟机与物理机相连的网络

在装有open vswitch的主机上有一个物理网卡eth0,一台主机通过网线和eth0相连,在open vswitch的主机上还装有一台虚拟机,把此虚拟机和连接到eth0的主机挂接到同一个网桥上,实现两者之间的通信,构建结果图如下:

执行命令:

# ovs-vsctl add-br br0 //建立一个名为br0的open vswitch网桥
# ovs-vsctl add-port br0 eth0 //把eth0挂接到br0中
# kvm -m 512 -net nic,macaddr=00:11:22:33:44:55-net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive\
file=/path/to/disk-image,boot=on  //ovs-ifup和ovs-ifdown和上一节中相同

4、构建网桥和网桥相连的网络

以上操作都是将多个主机(物理机或虚拟机)连接到同一个网桥上,实现它们之间的通信,但是要构建复杂的网络,就需要多个网桥,在装有open vswitch的主机上建立两个网桥,实现它们之间的连接,构建结果如下:

执行命令:

ovs-vsctl add-br br  添加一个名为br0的网桥
ovs-vsctl add-br br1    //添加一个名为br0的网桥

ovs-vsctl add-port br0 patch-to-br1    //为br0添加一个虚拟端口

ovs-vsctl set interface patch-to-br1type=patch      //把patch-to-br1的类型设置为patch
ovs-vsctl set interface patch-to-br1 options:peer=patch-to-br0     把对端网桥和此网桥连接的端口名称设置为patch-to-br0

ovs-vsctl add-port br1 patch-to-br0    //为br0添加一个虚拟端口
ovs-vsctl set interface patch-to-br0type=patch      //把patch-to-br0的类型设置为patch

ovs-vsctl set interface patch-to-br0options:peer=patch-to-br1     //把对端网桥和此网桥连接的端口名称设置为patch-to-br1

ovs-vsctl set interface patch-to-br0type=patch 和ovs-vsctl set interface patch-to-br0 options:peer=patch-to-br1是对ovs-database的操作,有有兴趣的同学可以参考ovs-vswitchd.conf.db.5

5、在不同的主机之间构建网桥之间的连接

在两台机器上分别安装上open vswitch并创建网桥,分别为两个网桥添加物理网卡,然后通过网线连接两个网桥,实现两个网桥之间的互通。构建结果图如下:

执行命令:
host1

#ovs-vsctl add-br br0           //添加名为br0的网桥
#ovs-vsctl add-port br0 eth0    //把eth0挂接到br0上

host2

#ovs-vsctl add-br br0             //添加名为br0的网桥
#ovs-vsctl add-port br0 eth0      //把eth0挂接到br0上

然后使用网线把host1的eth0和host2的eth0相连即可。

 

使用上边五种方法的组合就可以构建出各种复杂的网络,为各种实验提供网络的支持。




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值