虚拟机网卡和linuxbridge上tap设备的关系

上传人:沈*** 文档编号:101913228 上传时间:2022-06-05 格式:DOC 页数:9 大小:294.50KB
收藏 版权申诉 举报 下载
虚拟机网卡和linuxbridge上tap设备的关系_第1页
第1页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第2页
第2页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第3页
第3页 / 共9页
资源描述:

《虚拟机网卡和linuxbridge上tap设备的关系》由会员分享,可在线阅读,更多相关《虚拟机网卡和linuxbridge上tap设备的关系(9页珍藏版)》请在装配图网上搜索。

1、虚拟机网卡和 linux bridge 上 tap 设备的关系1. 虚拟机进程使用ps -ef |grep kvm可以看到虚拟机进程信息如下:/usr/libexec/qemu-kvm -name instance-0000001d -S -machine pc-i440fx-rhel7.1.0,accel=kvm,usb=off -cpu Broadwell,+abm,+pdpe1gb,+hypervisor,+rdrand,+f16c,+osxsave,+vmx,+ss,+ds,+vme -m 64 -realtime mlock=off -smp 1,sockets=1,cores=1,

2、threads=1 -uuid 687fd29c-13c2-433b-941c-2414da556bdb -smbios type=1,manufacturer=Fedora Project,product=OpenStackNova,version=12.0.0-1.el7,serial=a373d218-fea2-4c1c-b255-26714654fdbe,uuid=687fd29c-13c2-433b-941c-2414da556bdb,family=VirtualMachine-no-user-config-nodefaults-chardevsocket,id=charmonito

3、r,path=/var/lib/libvirt/qemu/instance-OOOOOO1d.monitor,server,nowait-monchardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard-no-hpet -no-shutdown -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.O,addr=Ox5.Ox7-deviceich9-usb-uhci1,mast

4、erbus=usb.O,firstport=O,bus=pci.O,multifunction=on,addr=Ox5-deviceich9-usb-uhci2,masterbus=usb.O,firstport=2,bus=pci.O,addr=Ox5.Ox1-deviceich9-usb-uhci3,masterbus=usb.O,firstport=4,bus=pci.O,addr=Ox5.Ox2-devicevirtio-serial-pci,id=virtio-serialO,bus=pci.O,addr=Ox6-drivefile=rbd:vms/687fd29c-13c2-433

5、b-941c-2414da556bdb_disk:id=cinder:key=AQBqCA9X18xZOxAAWVDkhAOsKZIQY6oAf9cjlg=:auth_supported=cephx;none:mon_host=192.168.44.130:6789,if=none,id=drive-virtio-disk0,format=raw,cache=none-device virtio-blk-pci,scsi=off,bus=pci.O,addr=Ox7,drive=drive-virtio-diskO,id=virtio-diskO,bootindex=1-drivefile=r

6、bd:vms/687fd29c-13c2-433b-941c-2414da556bdb_disk.config:id=cinder:key=AQBqCA9X18xZOxAAWVDkhAOsKZIQY6oAf9cjlg=:auth_supported=cephx;none:mon_host=192.168.44.130:6789,if=none,id=drive-ide0-1-1,readonly=on,format=raw,cache=none-deviceide-cd,bus=ide.1,unit=1,drive=drive-ideO-1-1,id=ideO-1-1-netdevtap ,f

7、d=25, id=hostnetO ,vhost=on,vhostfd=26-devicevirtio-net-pci,netdev=hostnetO,id=netO,mac=fa:16:3e:36:cO:a7,bus=pci.O,addr=Ox3-chardevfile,id=charserialO,path=/var/lib/nova/instances/687fd29c-13c2-433b-941c-2414da556bdb/console.log-deviceisa-serial,chardev=charserialO,id=serialO-chardevpty,id=charseri

8、al1-deviceisa-serial,chardev=charserial1,id=serial1-chardevspicevmc,id=charchannelO,name=vdagent-devicevirtserialport,bus=virtio-serialO.O,nr=1,chardev=charchannelO,id=channelO,name=com.redhat.spice.O-chardevsocket,id=charchannel1,path=/var/lib/libvirt/qemu/org.qemu.guest_agent.0.instance-0000001d.s

9、ock,server,nowait-device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=org.qemu.guest_agent.0-deviceusb-tablet,id=inputO-vncO.O.O.O:O-ken-us-spiceport=59O1,addr=O.O.O.O,disable-ticketing,disable-copy-paste,disable-agent-file-xfer,seamless-migration=on-ken-us -device

10、qxl-vga,id=videoO,ram_size=671O8864,vram_size=671O8864,vgamem_mb=16,bus=pci.O,addr=Ox2-deviceAC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -msg timestamp=on 关注其中的网卡配置参数:? 从 HOST角度:-netdev tap ,fd=25,id=hostnetO ,vhost=on,vhostfd=26?从 GUEST角度:-device virt

11、io-net-pci,netdev=hostnetO,id=netO ,mac=fa:16:3e:36:cO:a7,bus=pci.O,addr=Ox3可以看到, host 上使用 tap 类型的网卡,开启了 vhost-net 技术。vhost-net技术是在半虚拟化技术virtio上提出的,而virtio则是基于全虚拟化技术而言的。所以在了解vhost-net技术之前,需要先了解一下tun/tap工作原理、全虚拟化技术、virtio技术。2. Tap/Tun工作原理TUN/TAP虚拟网络设备的原理比较简单,他在Linux内核中添加了一个 TUN/TAP虚拟网络设备的驱动程序和一个与之相关连

12、的字符设备/dev/net/tun,字符设备tun作为用户空间和内核空间交换数据的接口。用户空间的应用程序可以通过这个设备文件来和内核中的驱动程序进行交互,其操作方式和普通的文件操作无异。当内核将数据包发送到虚拟网络设备时,数据包被保存在设备相关的一个队列中,直到用户空间程序通过打开的字符设备tun的描述符读取时,它才会被拷贝到用户空间的缓冲区中,其效果就相当于,数据包直接发送到了用户空间。通过系统调用 write发送数据包时其原理与此类似。从结构上来说,Tun/tap驱动并不单纯是实现网卡驱动,同时它还实现了字符设备驱动 部分。以字符设备的方式连接用户态和核心态。下面是示意图:Tun/tap

13、驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分。利用网卡驱动部分接收来自TCP/IP协议栈的网络分包并发送或者反过来将接收到的网络分包传给协议栈处理,而字符驱动部分则将网络分包在内核与用户态之间传送,模拟物理链路的数据接收和发送。Tun/tap驱动很好的实现了两种驱动的结合。3. Tap/Tun Device 在 libvirt 中的应用?将guest system的网络和 host system的网络连在一起。?通过TUN/TAP adapter,会生成一个在 host system上的虚拟网卡 tap?tun建立了 point to point的网络设备,使得gue

14、st system的网卡和tap虚拟网卡成为?从而guest system的所有网络包,host system都能收到。Tun/tap驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分虚拟机ethotun/tap字符设备文件/dev/ net/tuntun/tap字符设备驱动虚拟网卡ytapOUser Modeker nel Modetu n/tap虚拟网卡驱动物理机? 虚拟机将网络包通过字符设备写入 /dev/net/tun( Host上);? 字符设备驱动将数据包写入虚拟网卡驱动;? 虚拟网卡驱动将包通过 TCP/IP协议栈写给Host上的虚拟网卡tap0 ;? 在HO

15、ST上通过路由规则(通过网桥(东西向流量)、网桥和路由器(南北向流量), 包从eth0出去。4. Linux全虚拟机网络桥接模型KVM客户机网络连接有两种方式:用户网络(User Networking ):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。 NAT方式。虚拟网桥(Virtual Bridge ):这种方式要比用户网络复杂一些,但是设置好后客户机与互联 网,客户机与主机之间的通信都很容易。Bridge方式。Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以 使虚拟机成为网络中具有独

16、立IP的主机。桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。ethoeLh 1vnilOVirtual Machine ielhOxTietlVirtual Machin* 1ethO在Linux中的虚拟机的网卡都包含前半段和后半段, 机上。上图ethO为虚拟机上的网卡,对应的后半段为前半段在虚拟机上,后半段在宿主vnetO,vnetO为tap设备。在虚拟机 上所有发往ethO的数据就直接发往 vnetO 了,也可以将vnetO看作一块网卡。在宿主机中创建一个桥设备,把宿主机的ethO放在桥上,这样虚拟机上的ethO将报文

17、发给vnetO,再直接发给宿主机上的ethO,将源地址改为宿主机上的ethO的地址当响应报文到达物理机上的ethO时如何判断此响应报文是发给虚拟机的还是物理机自己的?物理机会先创建一个虚拟网卡,在物理机上打开混杂模式(无论mac地址是不是自己的都将接收响应报文),如果mac地址是自己的则转发给虚拟网卡,如果不是自己的则转发给 vnetO,这就是桥接模型,因为物理机的网卡具有桥的功能所以叫做桥接模型。5. Qemi全虚拟化网桥模式下的VM的收发包的流程5ilect| fd read/v; rite irecein?* serdbrctJTCP/IP StackbrnBridgeFp1edit n

18、fUser spaceKernel spaceHardware如图中所示,红色箭头表示数据报文的入方向,步骤:1. 网络数据从Host上的物理网卡接收,到达网桥;2. 由于ethO与tapl均加入网桥中,根据二层转发原则,brO将数据从tapl 口转发出去,即数据由Tap设备接收;3. Tap设备通知对应的fd数据可读;4. fd的读动作通过tap设备的字符设备驱动将数据拷贝到用户空间,完成数据报文 的前端接收。6. 半虚拟化(Para-virtualizaiton) I/O 驱动 virtioKVM/QEMU勺vitio实现采用在 Guest OS内核中安装前端驱动(Front-end dr

19、iver )和在QEMU中实现后端驱动(Back-end )的方式。前后端驱动通过vring直接通信,这就绕过了经过KVM内核模块的过程,达到提高I/O 性能的目的。纯软件模拟的设备和Virtio设备的区别:virtio省去了纯模拟模式下的异常捕获环节,Guest OS可以和QEMU的I/O模块直接通信。Vitio需要让客户机知道自己运行在虚拟化环境中。使用Virtio的完整虚拟机I/O流程:Host数据发到 Guest:1. KVM通过中断的方式通知 QEMU去获取数据,放到 virtio queue中2. KVM 再通知 Guest去virtio queue 中取数据。7. Vhost-n

20、et 驱动:virtio在宿主机中的后端处理程序(backe nd) 般是由用户空间的QEMI提供的,然而如果对于网络I/O 请求的后端处理能够在在内核空间来完成,则效率会更高,会提高网 络吞吐量和减少网络延迟。在比较新的内核中有一个叫做“vhost- net ”的驱动模块,它是作为一个内核级别的后端处理程序,将virtio-net的后端处理任务放到内核空间中执行(在Host Kernel中直接实现了 virtio 设备的模拟),减少内核空间到用户空间的切换,从 而提高效率。Virtio-net 和 vhost-net 的比较:VirtioVhost-net备注:当客户机通过 DMA (Dir

21、ect Memory Access )访问大块I/O时,QEMU 模拟 程序将不会把结果放进共享页中,而是通过内存映射的方式将结果直接写到客户机的内存中,然后通知KVM模块告诉客户机 DMA操作已经完成。8. 结论:/ctev/net/tijnH13mi邊将1HUB-JVlrtla-I综上,虚拟机网卡ethO存在于虚拟机上 (即guest),网桥tap设备则存在于宿主机 (即 host )上,是两个设备。这两个设备是一对设备,同时出现、同时消失,组合在一起完成虚 拟机和外部的通信。两个设备通过host上的/dev/net/tun设备、内核网卡驱动、共享队列实 现数据包的通信。9. 参考文档:1

22、. KVM介绍(3): I/O 全虚拟化和准虚拟化KVM I/O QEMU Full-Virtualizait onPara-virtualizatio nhttp:/www.c nblogs.eom/sammyliu/p/4543657.html2. KVM介绍(4): I/O 设备直接分配和 SR-IOV KVM PCI/PCIe Pass-Through SR-IOVhttp:/www.c nblogs.eom/sammyliu/p/4548194.html3. KVM虚拟化技术实战与原理解析4. 细说KVM虚拟化两种网络模式配置及原理 ngrace/p/5752382.html5. Qemu Libvirt & KVMpopsuper

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!