分享

三句话搞懂内核收包

 mzsm 2015-06-27

作者:新浪微博(@NP等不等于P

计算机学习微信公众号(jsj_xx)

1 数据结构

每个cpu都配有一个napi queue,用于放待处理的napi结构,napi结构里有对应的网卡、poll函数等重要信息(如果是非napi,每个cpu的这个napi queue里内置了2个东东:一个特殊的napi用于兼容napi处理,其含有一个特殊的poll函数;另外一个是input queue,用于存放收到的包)。

2 硬中断处理

当有包来时,收包的该网卡的对应硬中断(multiqueue时一个网卡会对应多个中断)在某个cpu上的处理:

1)调用函数将该网卡的该中断对应的napi结构(napi时,每个网卡的每个中断都会有一个对应的napi结构;非napi时,则使用该cpu的napi queue里内置的napi结构,同时会将包收至该napi queue里的input queue,一次硬中断里最多放1000个,否则丢弃)放到该cpu的napi queue里

2)然后触发软中断,剩下就是软中断的事了

3 软中断处理

该cpu上的软中断的处理:

逐个处理本cpu的napi queue里的各个napi结构体,其实就是调用该结构体里标识的网卡的poll函数进行收包并上送至协议栈(非napi时不需要poll了,直接从上述的input queue里读),处理时遵守三个原则:(第一个违反了则跳过该设备,后两个违反了则跳出本轮软中断,由下一轮软中断继续处理)

1)本轮软中断里该网卡的各个napi的总包数不超过64个

2)本轮软中断里所有收包数不能超过300个

3)本轮软中断里总耗时不能超过2ms

于我们

新浪微博(@NP等不等于P

计算机学习微信公众号(jsj_xx)

原创技术文章,感悟计算机,透彻理解计算机!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多