
技 术 文 件
技术文件名称:OVS安装部署维护使用说明书
技术文件编号:
版 本:V1.4
共XX页
(包括封面)
拟 制
审 核
批 准
修改记录
| 文件编号 | 版本号 | 拟制人/ 修改人 | 拟制/修改日期 | 更改理由 | 主要更改内容 (写要点即可) | 
| V1.0 | 尹雪蓉 | 2012-6-3 | 创建 | ||
| V1.1 | 尹雪蓉 | 2012-6-5 | 修改 | 增加debian中openvswitch的安装方法 | |
| V1.2 | 尹雪蓉 | 2012-6-13 | 修改 | 修改了一些bug,增加了vlan实验步骤,删除Debian安装方法,增加ubuntu12.04安装 | |
| V1.3 | 尹雪蓉 | 2012-6-19 | 修改+增加 | 修改了一些文字描述,增加了Nox部署方法,GRE实验配置测试以及GRE+VLAN实验 | |
| V1.4 | 尹雪蓉 | 2012-6-29 | 修改+增加 | 增加sFlow、Qos配置 | |
| 注1:每次更改归档文件(指归档到事业部或公司档案室的文件)时,需填写此表。 注2:文件第一次归档时,“更改理由”、“主要更改内容”栏写“无”。 | |||||
1
引言
1.1编写目的
本文档编写目的是详细描述产品OVS安装部署方法,预期的读者和阅读建议预期的读者和阅读建议参见表1.1。
表1.1
| 读者分类 | 阅读重点 | 备注 | 
| 实施工程师 | 了解如何操作 | |
| 文档工程师 | 全文,为编写用户文档作准备。 | 
本文使用的专用术语、定义见表1.2。
表1.2 术语
| 术语/定义 | 英文对应词 | 含 义 | 
本文使用的专用缩略语见表1.3,缩略语已按其第1个字母顺序排列。
表1.3 缩略语
| 缩略语 | 英文原文 | 中文含义 | 
1.4参考资料
1.4.1きりんさん日記: http://saburi380.blogspot.co.uk/
1.4.2Openvswitch-1.4.1中README.RHEL
1.4.3《Network Warrior》中文版
2安装
2.1安装概述
本安装教程主要涉及在CentOS6.2环境下对Openvswitch1.4.1进行编译以及安装,并用Openvswitch(简称OVS)接管Linux系统的网络服务,同时配置VLAN,并对虚拟机进行VLAN划分。
2.2环境配置
一、CentOS环境
操作系统环境:CentOS 6.2
Openvswitch版本号:Openvswitch 1.4.x或者1.5.0
网卡数目:一张网卡,连接的交换机端口设为Trunk缺省模式
二、Ubuntu12.04 环境
操作系统环境:Ubuntu 12.04 desktop
版本号:Openvswitch 1.4.0
网卡数目:一张网卡,连接的交换机端口设为Trunk缺省模式
2.3 部署流程
2.3.1 CentOS 6.2编译环境的安装及部署
1、升级CentOS 6.2 (可选)
command:
#yum -y update
2、必要环境包安装
准备安装包:
openvswitch-1.4.1.tar.gz
command :
# yum -y install qemu-kvm qemu-kvm-tools make gcc kernel-headers kernel-devel openssl-devel automake rpm-build redhat-rpm-config
2.3.2 CentOS6.2 下Openvswitch编译安装及部署
1、编译openvswitch的rpm包
Command:
# mkdir -p ~/rpmbuild/SOURCES
# cd ~/rpmbuild/SOURCES
# wget http://openvswitch.org/releases/openvswitch-1.4.1.tar.gz
# cd /var/tmp
tar xzf ~/rpmbuild/SOURCES/openvswitch-1.4.1.tar.gz
rpmbuild -bb -D `uname -r` openvswitch-1.4.1/rhel/openvswitch.spec
rpmbuild -bb -D `uname -r` openvswitch-1.4.1/rhel/openvswitch-kmod-rhel6.spec
备注:
紫红色部分为openvswitch源码包,后面版本号可变,改变范围为本手册环境配置部分内容中所支持的各个版本的openvswitch。
2、安装编译完成的rpm包
编译完成的rpm包默认在 ~/rpmbuild/RPMS/x86_目录下,结果如下图所示:
Command:
# cd ~/rpmbuild/RPMS/x86_
# rpm -ivh *rpm
结果如下图:
备注:
1、确认openvswitch是否安装完成
chkconfig --list | grep openvswitch
结果如下图:
2、启动openvswitch:
service openvswitch start
结果如下图:
3、查询openvswitch的状态:
service openvswitch status
结果如下图:
4、查看openvswitch的内核模块:
lsmod | grep openvswitch
结果如下图:
3、添加和删除网卡的脚本
在/etc目录下创建脚本ovs-ifup和ovs-ifdown内容如下所示:
Ovs-ifup:
Ovs-ifdown
将两个文件属性修改为可执行文件:
# chmod +x /etc/ovs-ifup
# chmod +x /etc/ovs-ifdown
2.3.3 Ubuntu12.04 下Openvswitch编译安装及部署
1、环境配置
# apt-get update && apt-get dist-upgrade
2、下载依赖包
# apt-get install aptitude apt-show-versions ntp ntpdate vim kvm libvirt-bin vlan virtinst virt-manager virt-viewer openssh-server iperf pv openvswitch-controller openvswitch-brcompat openvswitch-switch openvswitch-datapath-source
3、启动openvswitch-switch
# service openvswitch-switch start
2.3.4 NoX 的编译与安装部署
1、系统环境与部署架构
系统环境:
Ubuntu 10.04 或者11.04 desktop
部署架构:
Nox部署在服务器中某一个虚拟机上
2、NoX的编译
1、依赖包安装
#cd /etc/apt/sources.list.d
#sudo wget http://openflowswitch.org/downloads/debian/nox.list
#sudo apt-get update
#sudo apt-get install nox-dependencies
# apt-get install python-qt4 python-simplejson
#apt-get install python-qt4-sql
2、软件包编译安装
#git clone git://noxrepo.org/nox
#cd nox
#git checkout -b destiny origin/destiny
#./boot.sh
#mkdir build/
#cd build/
#../configure
#make -j 5
3、安装结果图:
3常用虚机操作
3.1创建和启动虚拟机
安装基础环境:(vnc环境)
# yum –y install tigervnc.X86_
3.1.1 创建虚拟机
(1)创建虚机镜像(例:创建一个5G的空img)
# qemu-img create XXXX.img 5G
(2)启动镜像并安装操作系统
# /usr/libexec/qemu-kvm -m 1024 -hda XXXX.img -boot order=d -cdrom YYYY.iso -vnc :0
3.1.2 启动虚拟机
(1) 启动虚拟机:
/usr/libexec/qemu-kvm -m 1024 –net nic –net tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown –drive file=XXXX.img,boot=on -vnc 0.0.0.0:X –usbdevice tablet
3.2VLAN配置
准备工作:(假设环境)已有的VLAN为60,61,62
1、修改ifcfg-eth0的配置文件,使它的BOOTPROTO为none (不要给eth0配置ip地址,以免和ovs发生冲突)
2、将vlan模块加入linux
# modprobe 8021q
3.2.1 Host VLAN配置 (以vlan 号61为例)
1、修改ovs中br0的配置文件(ifcfg-br0)
==> ifcfg-br0 <== (br0配置的地址可连接)
DEVICE=br0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=A.B.C.D (例:10.10.60.244)
NETMASK=X.Y.Z.0 (例:255.255.255.0)
HOTPLUG=no
2、修改eth0的配置文件
==> ifcfg-eth0 <== (将eth0桥接到br0)
DEVICE=eth0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br0
BOOTPROTO=none
HOTPLUG=no
3、修改eth0.61的配置文件
==> ifcfg-eth0.61 <==
DEVICE= eth0.61
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSIntPort
BOOTPROTO=none
IPADDR=A.B.C.D (例:192.168.61.1)
NETMASK=X.Y.Z.0 (例:255.255.255.0)
OVS_BRIDGE=br0
OVS_OPTIONS="tag=61"
OVS_EXTRA="set Interface $DEVICE external-ids:iface-id=$(hostname -s)-$DEVICE-vif"
HOTPLUG=no
4、重启网络服务
#/etc/init.d/network restart
5、添加路由信息,设置网关
#route add default gw 10.10.60.1
3.2.2 虚机VLAN配置
(1)启动虚机
/usr/libexec/qemu-kvm -m 1024 –net nic –net tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown –drive file=XXXX.img,boot=on -vnc 0.0.0.0:X –usbdevice tablet
(2)将虚机加入VLAN
#ovs-vsctl set port tap0(或其他虚机网卡)tag=61
(3)配置虚拟机ip地址为192.168.61.*网段,网关不填
例:ip address:192.168.61.101 netmask:255.255.255.0
如下图所示:
3.2.3 虚机VLAN测试
测试环境:
Host 1:
系统环境:CentOS 6.2
Openvswitch版本:openvswitch 1.4.1
IP:10.10.60.208
Netmask:255.255.255.0
Gateway:10.10.60.1
Vm1:
Ip:192.168.61.101
Netmask:255.255.255.0
Host 2:
系统环境:CentOS 6.2
Openvswitch版本:openvswitch 1.4.1
IP:10.10.60.244
Netmask:255.255.255.0
Gateway:10.10.60.1
Vm2:
Ip:192.168.61.111
Netmask:255.255.255.0
VLAN号均为61
测试:在vm1中ping vm2
测试结果:vm1,vm2之间能够通信
测试:修改vm1的tap0,使它与vm2不同
测试结果:vm1,vm2无法通信
3.3GRE配置与测试
网络拓扑图:
环境准备:
1、2台服务器
2、每台服务器上有两张网卡eth0和eth1
3、每台服务器上有一个虚拟机
3.3.1 Host 上的GRE配置
Host 1 配置:
#ovs-vsctl add-br br1
#ovs-vsctl add-port br1 eth0
#ifconfig br1 10.10.40.5 netmask 255.255.255.0
#ifconfig br1 up
#ovs-vsctl add-port br1 gre1 – set interface gre1 type=gre options:remote_ip=10.10.40.6
Host 2 配置:
#ovs-vsctl add-br br1
#ovs-vsctl add-port br1 eth0
#ifconfig br1 10.10.40.6 netmask 255.255.255.0
#ifup br1
#ovs-vsctl add-port br1 gre1 – set interface gre1 type=gre options:remote_ip=10.10.40.5
Host1 上的VM 1 配置ip地址为:10.1.1.20
Host2 上的VM 2 配置ip地址为:10.1.1.30
3.3.2 GRE隧道的测试
查看配置:
在Host 1中:
#ovs-vsctl show (查看配置)
#ovs-appctl fdb/show br1 (查看虚机mac信息)
测试结果:
分别启动VM1 和 VM2,在VM1中ping VM2,能够通信。
3.4GRE + VLAN配置与测试
1、在3.3的GRE实验基础上
2、在Host 1中将设置VM1的tag = 61
#ovs-vsctl set port tap0 tag=61
3、在VM1中ping VM2
测试结果:
1)无法通信
2)将VM2的tag也改为61以后,双方又可以互相通信
3.5sFlow配置与测试
主机配置:
两张网卡
在host中配置命令:
#ovs-vsctl -- --id=@sflow create sflow agent=eth0 target=\”10.10.60.52:6343 \” header=128 sampling= polling=10 – set bridge br0 sflow=@sflow
备注:
10.10.60.52:6343安装sFlowTrend软件
4疑难问题
1、VLAN配置完成后,VM可以与本机和远端物理机通信却无法和远端物理机上的VM通信。
问题出错原因:
两台VM的MAC地址相同所致
解决方案:
将两台VM的MAC地址改成不同的,即可通信。
2、ubuntu 12.04中安装openvswitch完成并启动时遇到提示openvswitch_mod.ko cannot found的错误。
问题出错原因:
Openvswitch_mod.ko模块未加载进内核
解决方案:
输入以下命令一路确认即可。
# module-assistant auto-install openvswitch-datapath
