KVM网络虚拟化及openvswitch
Posted SYWcloud
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM网络虚拟化及openvswitch相关的知识,希望对你有一定的参考价值。
一、KVM网络虚拟化
1、传统的kvm网络流量:虚拟机--->QEMU网卡--->虚拟化层--->内核网桥--->物理网卡,通过virtio半虚拟化技术可以使虚拟机绕过QEMU网卡直接与虚拟化层进行通信(需要宿主机与虚拟机分别安装virtio驱动,就可以以virtio协议标准进行通信,不需要虚拟化层进行IO的捕获,提升效率)流量路劲为:虚拟机--->虚拟化层--->内核网桥--->物理网卡。
2、centos6之后的版本默认包含virtio的驱动,可通过内核配置文件查看是否包好virtio驱动:
[root@susu ~]# grep -i virtio /boot/config-3.10.0-693.el7.x86_64
CONFIG_VIRTIO_VSOCKETS=m
CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_VIRTIO_BLK=m
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_VIRTIO=m
# Virtio drivers
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
# CONFIG_VIRTIO_MMIO is not set
3、配置虚拟机使用virtio有三种方法:
1)用命令行启动虚拟机时加if=virtio参数,指明网卡类型
2)在virt-manager图形界面将NIC网卡类型改为virtio
3)修改虚拟机xml文件,网卡部分内容如下:
<interface type='direct'>
<mac address='52:54:00:2d:4c:17'/>
<source dev='em1' mode='bridge'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
4、全虚拟网卡与半虚拟化网卡性能比较,在centos系列系统中使用全虚拟化网卡大约有物理机50%的性能,而采用virtio半虚拟化可以达到物理网卡性能的70%-80%,windows系统比Linux系统要性能要下降不少,但是总体使用半虚拟化性能比全虚拟化提升50%左右,windows跟驱动有很大关系
二、openvswitch
1、openvswitch源码编译安装
1)到官网下载openvswitch源码包,地址http://www.openvswitch.org/download/,我下载的是openvswitch2.5.4长期支持版本
2)安装依赖包
yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config
yum -y install python-devel openssl-devel kernel-devel kernel-debug-devel libtool wget
3)创建编译目录
mkdir -p ~/rpmbuild/SOURCES
4)将安装包复制到~/rpmbuild/SOURCES目录并解压
cp openvswitch-2.5.5.tar.gz ~/rpmbuild/SOURCES
tar zxvf openvswitch-2.5.4.tar.gz
5)预处理
sed 's/openvswitch-kmod,//g' rhel/openvswitch.spec >rhel/openvswitch_no_kmod.spec
6)构建rpm包
rpmbuild -bb --nocheck openvswitch-2.5.4/rhel/openvswitch_no_kmod.spec
6)安装rpm包
yum localinstall ../RPMS/x86_64/openvswitch-2.5.4-1.x86_64.rpm
7)启动openvswitch,并设置为开机自启动
systemctl start openvswitch.service
systemctl enable openvswitch.service
2、通过git安装
1)先把ovs克隆到本地
git clone https://github.com/openvswitch/ovs.git
2)配置环境预准备
cd ovs
./boot.sh
3)准备环境
./configure
4)编译
make
5)安装
make install
6)检测模块是否装载成功
[root@suyiwen ovs]# lsmod | grep openvswitch
openvswitch 106996 2
nf_nat_ipv6 14131 1 openvswitch
nf_defrag_ipv6 35104 2 openvswitch,nf_conntrack_ipv6
nf_nat_ipv4 14115 2 openvswitch,iptable_nat
nf_nat 26787 4 openvswitch,nf_nat_ipv4,nf_nat_ipv6,nf_nat_masquerade_ipv4
nf_conntrack 133387 8 openvswitch,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4,nf_conntrack_ipv6
libcrc32c 12644 4 xfs,openvswitch,nf_nat,nf_conntrack
7)配置环境变量并启动ovs
[root@suyiwen ~]# export PATH=$PATH:/usr/local/share/openvswitch/scripts
[root@suyiwen ~]# ovs-ctl start
Starting ovsdb-server [ OK ]
system ID not configured, please use --system-id ... failed!
Configuring Open vSwitch system IDs [ OK ]
Starting ovs-vswitchd [ OK ]
Enabling remote OVSDB managers [ OK ]
3、初步测试ovs
创建名为br0的vswitch并查看状态
[root@suyiwen ~]# ovs-vsctl add-br br0
[root@suyiwen ~]# ovs-vsctl show
f51fc4fe-4a87-4670-a717-2ea0fa426ba2
Bridge "br0"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.9.90"
以上是关于KVM网络虚拟化及openvswitch的主要内容,如果未能解决你的问题,请参考以下文章