Xen-network 学习笔记-1 (TechDiary-20110222)

本文探讨了Xen网络驱动的工作原理,涉及domU和dom0之间的数据包传输、共享内存页的作用、包传输的细节以及在不同情况下的处理方式。作者试图通过代码分析和实验验证理解Xen网络接口的具体实现,并发现了Xen环境下缺少某些模块的问题,同时对Linux下设备文件和socket操作进行了思考。后续计划深入研究源代码以解决疑问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天没有按照预定计划把Xen的network搞清楚,晚上抽了点时间看了下,暂时先写点吧...

其实我一直没有搞清楚整个网络发包手包的过程具体的是怎么样的,抽象的来说知道大概的意思:

发包的时候,domU的net-frontend发个tx_request到ring上,然后通过shared-memory-page把包数据从domU传到dom0,然后dom0中的net-backend收到这个request后,将传送过来的数据包通过真实的驱动传到NIC上,物理上传送数据,如果成功,则将该tx_request所占据的ring写上response,传送回domU,不成功的话则写上出错信息,来决定是否重发;

收包的时候,NIC收到包通过DMA传到DMA ring上,之后dom0通过真实的driver将DMA ring上的包转成skb_buffer,然后通过net-backend发送一个rx_request给domU,并通过shared_memory_page将数据包传送给domU,之后domU写上rx_response。

以上是通过这一段时间的学习想出来的,通俗来说只是一段YY,正确性不敢保证,更主要的是之中的细节一点都没有头绪,比如说:

Transmit的时候,domU和dom0之间数据包的传输到底是怎么样的,一个shared_memory_page又能代表什么呢?包应该是在domU的协议层就封装好了,dom0的驱动和单纯linux的驱动所做的工作有什么不同呢?如果包的大小超过了MTU,那么是又backend来进行segmentation还是又NIC硬件来做呢?<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值