kvm网络虚拟化介绍
本文目录
QEMU网络类型介绍
在QEMU中,主要给出了客户机提供了4种不同的网络配置方案:
1、基于网桥(Bridge)的虚拟化网卡模式
2、基于NAT的虚拟网络模式
3、QEMU内置的用户网络模式
4、直接分配网络设置模式
网桥和NAT是基于linux-bridge实现的软件虚拟网络模式,QEMU是QEMU软件虚拟的网络模式,第四种网络模式是直接基于物理网卡分配给客户机使用,比如说一台物理机上有eth0和eth1两块物理网卡,直接把eth0这块网卡直接分配给某一个客户机使用。
备注:
qemu-kvm完整路径是/usr/libexec/qemu-kvm
,为了避免每次输入完整路径可以使用软链接方式进行设置,命令如下:
ln -sv /usr/libexec/qemu-kvm /usr/bin/
虚拟化网卡设置命令
qemu-kvm命令行中基本的"-net"参数的细节如下:
-net nic[, vlan=n ] [,m acaddr=mac] [,model=type ][,name=name] [,addr=addr] [,vectors=v]
执行这个命令行会让QEMU建立一个新的网卡并将其连接到n号VLAN上
其中:
"-net nic"是必需的参数,表明这是一个网卡的配置。
1)vlan=n, 表示将网卡放入到编号为n的VLAN,默认为0。
2)macaddr=mac, 设置网卡的MAC地址,默认会根据宿主机中网卡的地址来分配。若局域网中客户机太多,建议自己设置MAC地址,以防止MAC地址冲突。
3)model= type, 设置模拟的网卡的类型,在qemu-kvm中默认为rtl8139。使用qemu-kvm -net nic,model=? 查询kvm支持的网卡类型
4)name=name, 为网卡设置一个易读的名称,该名称仅在QEMU monitor中可能用到。
5)addr=addr, 设置网卡在客户机中的PCI设备地址为addr。
6)vectors=v, 设置该网卡设备的MSI-X向量的数量为n,仅对使用virtio驱动的网卡有效。设置为"vectors=0"是关闭virtio网卡的MSI-X中断方式。
示例:
-net vlan=0,macaddr=fe:54:00:86:0d:04,model=rtl8139 ,name=eth0,addr=0x0
如果需要向一个客户机提供多个网卡,可以多次使用"-net"参数
查看虚拟化网卡
qemu-kvm提供了对一系列主流和兼容性良好的网卡的模拟,通过"-net nic,model=?"参数可以查询到当前的qemu-kvm工具实现了哪些网卡的模拟。
- "rtl8139"网卡模式是qemu-kvm默认的模拟网卡类型,RTL8139是Realtek半导体公司的一个10/100M网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对RTL8139网卡驱动的提供支持
- "e1000"是提供Intel e1000系列的网卡模拟,纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡。
- virtio类型是qemu-kvm对半虚拟化IO(virtio)驱动的支持
这三个网卡的最大区别(此处指最需要关注的地方)是速度:
rtl8139 10/100Mb/s
e1000 1Gb/s
virtio 10Gb/s
以下是两种常用的网络虚拟化方案介绍。
网桥模式
在QEMU/KVM的网络使用中,网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。
即使宿主机只有一个网卡设备,使用bridge模式也可知让多个客户机与宿主机共享网络设备,网络示意图如下所示:
如上图,网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/75e05a9db1904fa2b1b8c3d53ed35984.png
以下是ifconfig命令输出内容,其他br0为网桥接口,eth0为真实网卡
在这台主机上创建一个虚拟机后,还会多出一个vnet0网卡,虚拟网卡vnet#是创建虚拟机的时候自动创建的。我们要做的就是将br0关联到虚拟网卡vnet#上
NAT模式
NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。
从图上可以看出,虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界