|
一、KVM的网络功能
1、qemu-kvm所提供的网络模式
基于网桥的虚拟网卡;-net tap
基于NAT的虚拟网络;
Qemu内置的用户网络模式;-net user
直接分配网络设备(VT-d, SR-IOV)
-net nic:为VM添加虚拟网卡并指明虚拟网卡特性
-net user, -net tap: 定义虚拟网络,并指定如何将VM的虚拟网卡连入虚拟网络
-net none: 禁用vm的网络功能
-net nic -net tap, -net nic -net user
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]
-net nic,model=virtio
查看本机的qemu-kvm支持网络接口类型:
# qemu-kvm -net nic,model=?
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
注意:(1) 如果需要为VM添加多块网卡,则要多使用“-net nic”选项;
(2) 需要为VM的网卡指定MAC地址,地址范围属于“52:54:00”开头的地址块;
-net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]
ifname=
script=/path/to/some_script:虚拟机启动时,tap为其创建的Nic的后半段会保留在host上,在host之上通常需要将其添加至某桥上,实现虚拟网络功能;
downscript=/path/to/some_script: 虚拟机关闭时,如果处理此前的启动脚本为其设置网络;
kvm常用的虚拟网络模型:
桥接模型
NAT模型
路由模型
隔离模型
手动设置接口添加至指定桥的过程:
brctl addbr $BR
ip link set $IF up
ip link set $BR up
brctl addif $BR $IF
ip link set $BR promisc on
virtio半虚拟化:
HVM:虚拟化CPU
I/O半虚拟化分成两段:
前端驱动(virtio前半段):virtio-blk, virtio-net, virtio-pci, virtio-balloon, virtio-console
Linux:CentOS 4.8+, 5.3+, 6.0+, 7.0+
Windows:
virtio: 虚拟队列,virt-ring
transport:
后端处理程序(virt backend drivers):在QEMU中实现;
virtio-balloon:
ballooning: 让VM中运行的GuestOS中运行调整其内存大小;
# qemu-kvm -balloon virtio
手动查看GuestOS的内存用量:
info balloon
balloon N
virtio-net:
其依赖于GuestOS中的驱动,及Qemu中的后端驱动
GuestOS: virtio_net.ko
Qemu: qemu-kvm -net nic,model=?
qemu-kvm -net nic,model=virtio
Host中的GSO, TSO
关掉可能会提升性能:
ethtool -K $IF gso off
ethtool -K $IF tso off
ethtool -k $IF
vhost-net:用于取代工作于用户空间的qemu中为virtio-net实现的后端驱动以实现性能提升的驱动;
-net tap[,vnet_hdr=on|off][,vhost=on|off]
qemu-kvm -net tap,vnet_hdr=on,vhost=on
|
|