21edqwq 发表于 2016-7-27 09:05:01

虚拟化五、KVM网络功能详解

一、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

页: [1]
查看完整版本: 虚拟化五、KVM网络功能详解