- 6
- 0
- 约 12页
- 2016-12-23 发布于贵州
- 举报
Intel 82571 零拷贝的设计与实现本文主要阐述基于Intel网卡零拷贝的实现过程, 通常情况下网络数据包到达用户应用程序要经过如下几个过程: 网卡的物理硬件从物理媒体(通常情况下网线)上接收到得信号(数据帧)首先放在网卡自己的一个缓冲区(网卡RAM),在这一过程中通常要进行帧校验(比如FCS), 帧过滤等。如果网卡支持DMA就会启动DMA操作,把收到的数据帧通过DMA操作放到我们事先申请好的buffer中,DMA操作由硬件自动完成,当然用户要提供给DMA硬件操作必要的参数,包括DMA地址,DMA大小等,有可能还有地址对齐等要求。DMA的具体操作后面详细描述。这一步是DMA零拷贝最重要的一个环节,就是把网卡接收到的数据帧直接映射到用户层,不需要经过内核协议栈的处理。后面详细描述。网卡数据从网络到Linux内核的路径简要分析:网卡的主要工作原理:发送数据时,计算机把要传输的数据并行写到网卡的缓存,网卡对要传输的数据进编码(10M以太网使用曼切斯特码,100M以太网使用差分曼切斯特码),串行发到传输介质上.接收数据时,则相反。对于网卡而言,每块网卡都有一个唯一的网络节点地址,它是网卡生产厂家在生产时烧入ROM(只读存储芯片)中的,我们把它叫做MAC地址(物理地址),且保证绝对不会重复。MAC为48bit,前24比特由IEEE分配,是需要钱买的,后24bit由网卡生产厂家自行分配.
原创力文档

文档评论(0)