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

上传人:汽*** 文档编号:470302091 上传时间:2024-02-07 格式:DOC 页数:9 大小:294.50KB
返回 下载 相关 举报
虚拟机网卡和linuxbridge上tap设备的关系_第1页
第1页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第2页
第2页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第3页
第3页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第4页
第4页 / 共9页
虚拟机网卡和linuxbridge上tap设备的关系_第5页
第5页 / 共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方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以 使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。ethoeLh 1vnilOVirtual Machine ielhOxTietlVirtual Machin* 1ethO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号