vhost-net原理分析(一)

基本流程:

首先在libvirt中会去打开一个tap设备(virNetDevTapCreate),然后记录其fd。
在添加网卡的时候会传入如下的两个设备给qemu:
-netdev tap,fd=43,id=hostnet0,vhost=on,vhostfd=44
-device virtio-net-pci,pci_hotpluggable=on,netdev=hostnet0,id=net0 -----
vhost_net_init中会去初始化网卡后端,使用net->backend去记录backend fd。
qemu使用vhost_net_set_backend函数把fd传入到内核vhost中。
我们qemu或是vhost都是把数据发给tap设备就完了。 也就是vhost只管把读写这个fd就好了。

 

ovs的处理会复杂一点,当tap收到数据的时候会被OVS hook,在netdev_frame_hook中对数据进行转发。

qemu与ovs的通信能否更为简单呢? 经过tap这种虚拟网卡协议栈性能肯定会差一些。

posted @ 2017-11-21 16:22  你的KPI完成了吗  阅读(1007)  评论(0)    收藏  举报