Openvswitch研发白皮书v14.docx
《Openvswitch研发白皮书v14.docx》由会员分享,可在线阅读,更多相关《Openvswitch研发白皮书v14.docx(19页珍藏版)》请在冰豆网上搜索。
Openvswitch研发白皮书v14
技术文件
技术文件名称:
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引言3
1.1编写目的3
1.2术语、定义3
1.3缩略语3
1.4参考资料3
1.4.1きりんさん日記:
http:
//saburi380.blogspot.co.uk/3
1.4.2Openvswitch-1.4.1中README.RHEL3
1.4.3《NetworkWarrior》中文版3
2安装3
2.1安装概述3
2.2环境配置3
2.3部署流程4
2.3.1CentOS6.2编译环境的安装及部署4
2.3.2CentOS6.2下Openvswitch编译安装及部署4
2.3.3Ubuntu12.04下Openvswitch编译安装及部署7
2.3.4NoX的编译与安装部署8
3常用虚机操作9
3.1创建和启动虚拟机9
3.1.1创建虚拟机9
3.1.2启动虚拟机9
3.2VLAN配置9
3.2.1HostVLAN配置(以vlan号61为例)9
3.2.2虚机VLAN配置10
3.2.3虚机VLAN测试11
3.3GRE配置与测试13
3.3.1Host上的GRE配置13
3.3.2GRE隧道的测试14
3.4GRE+VLAN配置与测试14
4疑难问题14
1
引言
1.1编写目的
本文档编写目的是详细描述产品OVS安装部署方法,预期的读者和阅读建议预期的读者和阅读建议参见表1.1。
表1.1
读者分类
阅读重点
备注
实施工程师
了解如何操作
文档工程师
全文,为编写用户文档作准备。
1.2术语、定义
本文使用的专用术语、定义见表1.2。
表1.2术语
术语/定义
英文对应词
含义
1.3缩略语
本文使用的专用缩略语见表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《NetworkWarrior》中文版
2安装
2.1安装概述
本安装教程主要涉及在CentOS6.2环境下对Openvswitch1.4.1进行编译以及安装,并用Openvswitch(简称OVS)接管Linux系统的网络服务,同时配置VLAN,并对虚拟机进行VLAN划分。
2.2环境配置
一、CentOS环境
操作系统环境:
CentOS6.2
Openvswitch版本号:
Openvswitch1.4.x或者1.5.0
网卡数目:
一张网卡,连接的交换机端口设为Trunk缺省模式
二、Ubuntu12.04环境
操作系统环境:
Ubuntu12.04desktop
Openvswitch版本号:
Openvswitch1.4.0
网卡数目:
一张网卡,连接的交换机端口设为Trunk缺省模式
2.3部署流程
2.3.1CentOS6.2编译环境的安装及部署
1、升级CentOS6.2(可选)
command:
#yum-yupdate
2、必要环境包安装
准备安装包:
openvswitch-1.4.1.tar.gz
command:
#yum-yinstallqemu-kvmqemu-kvm-toolsmakegcckernel-headerskernel-developenssl-develautomakerpm-buildredhat-rpm-config
2.3.2CentOS6.2下Openvswitch编译安装及部署
1、编译openvswitch的rpm包
Command:
#mkdir-p~/rpmbuild/SOURCES
#cd~/rpmbuild/SOURCES
#wgethttp:
//openvswitch.org/releases/openvswitch-1.4.1.tar.gz
#cd/var/tmp
tarxzf~/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_64目录下,结果如下图所示:
Command:
#cd ~/rpmbuild/RPMS/x86_64
#rpm-ivh*rpm
结果如下图:
备注:
1、确认openvswitch是否安装完成
chkconfig--list|grepopenvswitch
结果如下图:
2、启动openvswitch:
serviceopenvswitchstart
结果如下图:
3、查询openvswitch的状态:
serviceopenvswitchstatus
结果如下图:
4、查看openvswitch的内核模块:
lsmod|grepopenvswitch
结果如下图:
3、添加和删除网卡的脚本
在/etc目录下创建脚本ovs-ifup和ovs-ifdown内容如下所示:
Ovs-ifup:
Ovs-ifdown
将两个文件属性修改为可执行文件:
#chmod+x/etc/ovs-ifup
#chmod+x/etc/ovs-ifdown
2.3.3Ubuntu12.04下Openvswitch编译安装及部署
1、环境配置
#apt-getupdate&&apt-getdist-upgrade
2、下载依赖包
#apt-getinstallaptitudeapt-show-versionsntpntpdatevimkvmlibvirt-binvlanvirtinstvirt-managervirt-vieweropenssh-serveriperfpvopenvswitch-controlleropenvswitch-brcompatopenvswitch-switchopenvswitch-datapath-source
3、启动openvswitch-switch
#serviceopenvswitch-switchstart
2.3.4NoX的编译与安装部署
1、系统环境与部署架构
系统环境:
Ubuntu10.04或者11.04desktop
部署架构:
Nox部署在服务器中某一个虚拟机上
2、NoX的编译
1、依赖包安装
#cd/etc/apt/sources.list.d
#sudowgethttp:
//openflowswitch.org/downloads/debian/nox.list
#sudoapt-getupdate
#sudoapt-getinstallnox-dependencies
# apt-getinstallpython-qt4python-simplejson
#apt-getinstallpython-qt4-sql
2、软件包编译安装
#gitclonegit:
//noxrepo.org/nox
#cdnox
#gitcheckout-bdestinyorigin/destiny
#./boot.sh
#mkdirbuild/
#cdbuild/
#../configure
#make-j5
3、安装结果图:
3常用虚机操作
3.1创建和启动虚拟机
安装基础环境:
(vnc环境)
#yum–yinstalltigervnc.X86_64
3.1.1创建虚拟机
(1)创建虚机镜像(例:
创建一个5G的空img)
#qemu-imgcreateXXXX.img5G
(2)启动镜像并安装操作系统
#/usr/libexec/qemu-kvm-m1024-hdaXXXX.img-bootorder=d-cdromYYYY.iso-vnc:
0
3.1.2启动虚拟机
(1)启动虚拟机:
/usr/libexec/qemu-kvm-m1024–netnic–nettap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown–drivefile=XXXX.img,boot=on-vnc0.0.0.0:
X–usbdevicetablet
3.2VLAN配置
准备工作:
(假设环境)已有的VLAN为60,61,62
1、修改ifcfg-eth0的配置文件,使它的BOOTPROTO为none(不要给eth0配置ip地址,以免和ovs发生冲突)
2、将vlan模块加入linux
#modprobe8021q
3.2.1HostVLAN配置(以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="setInterface$DEVICEexternal-ids:
iface-id=$(hostname-s)-$DEVICE-vif"
HOTPLUG=no
4、重启网络服务
#/etc/init.d/networkrestart
5、添加路由信息,设置网关
#routeadddefaultgw10.10.60.1
3.2.2虚机VLAN配置
(1)启动虚机
/usr/libexec/qemu-kvm-m1024–netnic–nettap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown–drivefile=XXXX.img,boot=on-vnc0.0.0.0:
X–usbdevicetablet
(2)将虚机加入VLAN
#ovs-vsctlsetporttap0(或其他虚机网卡)tag=61
(3)配置虚拟机ip地址为192.168.61.*网段,网关不填
例:
ipaddress:
192.168.61.101netmask:
255.255.255.0
如下图所示:
3.2.3虚机VLAN测试
测试环境:
Host1:
系统环境:
CentOS6.2
Openvswitch版本:
openvswitch1.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
Host2:
系统环境:
CentOS6.2
Openvswitch版本:
openvswitch1.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中pingvm2
测试结果:
vm1,vm2之间能够通信
测试:
修改vm1的tap0,使它与vm2不同
测试结果:
vm1,vm2无法通信
3.3GRE配置与测试
网络拓扑图:
环境准备:
1、2台服务器
2、每台服务器上有两张网卡eth0和eth1
3、每台服务器上有一个虚拟机
3.3.1Host上的GRE配置
Host1配置:
#ovs-vsctladd-brbr1
#ovs-vsctladd-portbr1eth0
#ifconfigbr110.10.40.5netmask255.255.255.0
#ifconfigbr1up
#ovs-vsctladd-portbr1gre1–setinterfacegre1type=greoptions:
remote_ip=10.10.40.6
Host2配置:
#ovs-vsctladd-brbr1
#ovs-vsctladd-portbr1eth0
#ifconfigbr110.10.40.6netmask255.255.255.0
#ifupbr1
#ovs-vsctladd-portbr1gre1–setinterfacegre1type=greoptions:
remote_ip=10.10.40.5
Host1上的VM1配置ip地址为:
10.1.1.20
Host2上的VM2配置ip地址为:
10.1.1.30
3.3.2GRE隧道的测试
查看配置:
在Host1中:
#ovs-vsctlshow(查看配置)
#ovs-appctlfdb/showbr1(查看虚机mac信息)
测试结果:
分别启动VM1和VM2,在VM1中pingVM2,能够通信。
3.4GRE+VLAN配置与测试
1、在3.3的GRE实验基础上
2、在Host1中将设置VM1的tag=61
#ovs-vsctlsetporttap0tag=61
3、在VM1中pingVM2
测试结果:
1)无法通信
2)将VM2的tag也改为61以后,双方又可以互相通信
3.5sFlow配置与测试
主机配置:
两张网卡
在host中配置命令:
#ovs-vsctl----id=@sflowcreatesflowagent=eth0target=\”10.10.60.52:
6343\”header=128sampling=64polling=10–setbridgebr0sflow=@sflow
备注:
10.10.60.52:
6343安装sFlowTrend软件
4疑难问题
1、VLAN配置完成后,VM可以与本机和远端物理机通信却无法和远端物理机上的VM通信。
问题出错原因:
两台VM的MAC地址相同所致
解决方案:
将两台VM的MAC地址改成不同的,即可通信。
2、ubuntu12.04中安装openvswitch完成并启动时遇到提示openvswitch_mod.kocannotfound的错误。
问题出错原因:
Openvswitch_mod.ko模块未加载进内核
解决方案:
输入以下命令一路确认即可。
#module-assistantauto-installopenvswitch-datapath