免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2233 | 回复: 6
打印 上一主题 下一主题

删帖吧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-26 04:14 |只看该作者 |倒序浏览
本帖最后由 xyfree 于 2012-01-21 03:34 编辑

论坛徽章:
0
2 [报告]
发表于 2011-03-26 12:39 |只看该作者
我说一下我的理解,供大家参考。

首先,x86 上的网卡也可以分成几个层次来看,即使物理上在一个芯片上。大致分一下可以分成 phy 部分、MAC 部分和接口部分。

phy 部分负责网线差分信号和数字信号的转换,依照 RX_CLK 将转换后的数字信号送到 MAC;同时也会根据 TX_EN 将 MAC 送来的数字信号转换成差分信号。MAC 与 phy 之间接口规范通常称为 MII(Media Independent Interface) 接口,规格有 MII/RMII/GMII/RGMII/SGMII/XGMII 等。MII 中包含了 SMI(Serial Management Interface),由 MDC 和 MDIO 组成,用于 phy 芯片的访问。

MAC 部分则负责数据的处理的所有动作,包括数据接收、CRC 校验和补充、包长度检查(都是并行处理的);数据接受完毕后,MAC 需要进行 filter 功能,即广播包判断、组播包匹配、监听模式确认、MAC地址匹配等工作,如果失败则丢掉数据包,如果正常则准备交付给接口部分处理。发送方向较为简单,基本上发送数据和填充 CRC。

接口部分主要负责与数据到 host 之间传递,所在总线不同,机制也不同。

所以:

1、数据是否有效在不同的层次有不同的判断,不是一定要内核驱动处理的;例如,CRC 错误的包直接在 MAC 丢掉。

2、DDoS 更多的利用应用层和协议层的漏洞来进行的,就是为了消耗 CPU 和连接资源,而不是为了消耗网络带宽。

3、较长的报文会分片,也会分几次发送,因为有最大包长度限制;

4、中断产生跟接收包的个数不一定是线性关系,跟接口部分的设计有关,可能很多包只有一个中断,也可能一个包一个中断。

5、通常情况下,MAC 只关心二层的一些信息。

论坛徽章:
0
3 [报告]
发表于 2011-03-26 15:44 |只看该作者
本帖最后由 xyfree 于 2012-01-21 06:01 编辑

论坛徽章:
0
4 [报告]
发表于 2011-03-27 11:13 |只看该作者
就楼主的发帖时间,赞一个楼主的研究精神!

论坛徽章:
0
5 [报告]
发表于 2011-03-27 21:06 |只看该作者
回复 3# xyfree

1、网卡自身的确有缓冲区域,只要要保存一个包的长度,即通常所说的 FIFO,不只是网卡,串口及其他的所有控制器基本上都有。FIFO 只是跟控制器使用的,所谓的拷贝的确是不可避免的,即使串口设备也有所谓的一次“拷贝”。

2、不存在线性关系的意思是,有可能多个 buffer 填充好了,但是产生一次中断;同样一次中断可以尽可能多的收包。有些 MAC 有这样的机制,即所谓的缓冲区描述符,就是这样的机制。

3、即使不支持 DMA 的设备,也需要将数据从控制器的 FIFO 挪到内存中,无论是 CPU 单次访问还是 DMA。

4、设备到内存是必须的,至于到内核之后是否能零拷贝就要看驱动和用户程序设计了。

论坛徽章:
0
6 [报告]
发表于 2011-03-28 11:31 |只看该作者
数据到应用层其实是做了3次copy了?网卡接受数据的一次copy,网卡到内核的一次copy,内核到应用层的一次copy?
而IOCP是2次?网卡接受数据的一次,内核使用应用层传递进来的缓冲区copy网卡的数据,2次?

论坛徽章:
0
7 [报告]
发表于 2011-03-28 11:35 |只看该作者
对于第4条,0拷贝应该不是指进内核之后的事情吧,就像后半句所说,就要看驱动和用户程序设计了。
应该是从驱动层面就开始设计的方案。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP