Qemu端loopback功能实现

来源:互联网 发布:铜板街软件 编辑:程序博客网 时间:2024/05/16 05:37

一、Qemu代码调研

分析现有qemu代码,发现hw/net/e1000.c中已有对于e1000的loopback功能实现,其工作原理如图所示:

qemu模拟出来的e1000网卡与主机之间通过tap虚拟网卡(或其他如hub等)进行通信,如上图的peer指针,e1000的loopback功能实现要点在于将Tx的数据包直接调用sender->info->receive,而不是发送数据包时的sender->peer->info->receive,这样Tx的数据包进入Rx流程,到达guest OS进入接收处理流程。

二、virtio-net loopback实现

仿照e1000的流程,对于virtio-net,只需要在Tx发送流程中做同样处理,Tx最终调用函数在virtio_net_flush_tx中.同时增加控制接口与guest OS中的virtio-net driver进行交互,以便在virtio-net driver中控制virtio-net是否工作在loopback模式。
0 0