开源夏令营中期报告
来源:互联网 发布:java应用开发框架 编辑:程序博客网 时间:2024/05/16 23:41
知识总结
通过几周对于linux kernel和qemu代码的深入阅读,在不断code和debug过程中总算对于virtio-net以及虚拟机工作原理有了清晰的认识。
先介绍kvm基本结构,如图所示:
Qemu通过Kvm提供的LibKvm应用程序接口,借助ioctl系统调用创建和运行虚拟机。原有的Linux在用户模式和内核模式的基础上,增加了客户模式。虚拟机作为host的一个进程运行。在虚拟机运行下,三种模式分工为:
客户模式:执行非I/O客户代码。虚拟机运行在客户模式下。
内核模式:实现客户模式的切换。处理因为I/O或者其他指令引起的从客户模式的退出。Kvm Driver运行在这种模式。
用户模式:代表客户执行I/O指令,Qemu运行在这种模式。
三种模式之间的切换过程如下图所示:
关于virtio-net,作为guest驱动,关系到如何与host通信,以及借助host联网,可从下图看出:
当数据包到达主机物理网卡后,调用物理网卡的驱动程序,其中利用Linux内核中的软件网桥实现数据转发。在软件网桥这一层,会判断数据包是发往那个设备的,同时调用网桥的发送函数,相对应的端口发送数据包。如果数据包是发往虚拟机的,则通过tap进行转发,tap设备由两部分组成,网络设备和字符设备。网络设备负责接收和发送数据包,字符设备负责将数据包往内核空间和用户空间转发。
已实现功能
按照预定计划,为virtio-net编写ethtool支持,实现selftest,以测试virtio-net网卡的各项功能。到目前为止,已初步完成收发包、功能协商和重置功能测试。
后期工作展望
- 针对以往发现的CVE(包括qemu, vhost_net, tun, host kernel network core等其它)的回归测试例。
- 能够用ethtool检测到virtio-net设备的故障,例如通过修改QEMU的代码,在设备响应中注入错误,能够在ethtool中捕获到。
0 0
- 开源夏令营中期报告
- 开源夏令营中期报告
- 开源夏令营中期报告
- 开源夏令营中期报告
- csdn开源夏令营-ospaf中期报告
- 开源夏令营之项目汇报6(中期报告)
- 开源夏令营(4)中期检查报告
- 【开源夏令营】PFIF公益寻人平台(五)中期报告
- 开源夏令营中期总结
- 【中期报告】2014年CSDN开源夏令营(7月6日~8月2日)中期报告
- CSDN开源夏令营:中期完成情况
- csdn开源夏令营中期总结
- 开源夏令营第五周--中期总结
- 开源夏令营中期总结及第四周工作总结
- 开源夏令营--结题报告
- 开源夏令营结题报告
- 中期报告
- 中期报告
- ffplay windows编译
- GCC使用教程
- Linux下thread编程(1)
- 用Jersey、Grizzly在eclipse中开发第一个RESTful服务helloworld
- priority_queue(优先队列)
- 开源夏令营中期报告
- 无向图的边双连通分量
- voj1312 环形dp 记忆化搜索
- Huawei/华为Honor 荣耀(U8860) root教程_方法
- 表达式求值
- MyEclipse详细优化配置,背景颜色,字体,加载模块
- 【滚动条】jquery.mCustomScrollbar在IE的兼容模式下问题
- Android对TextView背景设为椭圆形框
- hdu 4747 Mex 线段树