免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5695 | 回复: 36

[网络子系统] skb占用page的释放时机 [复制链接]

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-24 11:31 |显示全部楼层
标准的网卡驱动在收包时,当从网卡硬件得到一个完整的数据包后会使用一个skb封装这个数据包,这个数据包中可能会包含若干个页面,一般在skb_shinfo(skb)->frags中。当这个skb组好后,网卡驱动调用netif_rx_ni或netif_rx将这个skb提交给协议栈。我的理解是:当这个skb被提交给协议栈后,这个skb与网卡驱动就没有什么关系了,协议栈什么时候释放skb及skb中的页面,以及是否释放这个skb或skb中的页面也是未知的。
请教各位大侠,skb及相关页面是在何时释放的?如何能保证其能被及时、准确的释放?不知这种“延迟释放”的模式有啥好处,kernel为何这样设计?

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2014-02-24 12:57 |显示全部楼层
ref count?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-24 14:20 |显示全部楼层
回复 2# openspace
呵呵,这个太精炼了~~,不好理解,能否再详细些~


   

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2014-02-25 08:43 |显示全部楼层
回复 3# humjb_1983


我的理解是,引用和释放的场景非常复杂,难以枚举
通过 Ref count,用的时候加,释放的时候减
等减到 0,就可以释放掉了

比如 skb 使用的 page,在 TCP/IP 栈中会被多次使用,不能要求
每一层的知道其他曾的引用使用情况,只能控制自己使用的时候正
确的获取/释放引用就可以了。一般这类结构,释放的函数都会检测
ref count,如果减到0,就真正的释放了,否则只是计数减1

论坛徽章:
0
发表于 2014-02-25 09:43 |显示全部楼层
humjb_1983 发表于 2014-02-24 14:20
回复 2# openspace
呵呵,这个太精炼了~~,不好理解,能否再详细些~


linux内核源码剖析:TCP/IP实现(上、下册)
这书介绍的还不错
这书,我还没看完,不过开头部分讲了,skb申请和释放
你看了 肯定懂:)

论坛徽章:
1
lufei
日期:2016-06-17 17:49:16
发表于 2014-02-25 14:06 |显示全部楼层
kfree_skb()

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-26 08:40 |显示全部楼层
openspace 发表于 2014-02-25 08:43
回复 3# humjb_1983

呵呵,理论上确实是这样的~
但是由于skb使用的地方比较复杂,难以理清楚确切的所有释放点,不确认其中是否有泄露的情况~,
在我们的测试中,发现在关机的时候,有skb未被正确释放的情况,不知协议栈中是否确有这样的漏洞,或者说协议栈设计时就允许存在不释放的skb的情况。
谢谢!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-26 11:11 |显示全部楼层
kkddkkdd11 发表于 2014-02-25 09:43
linux内核源码剖析:TCP/IP实现(上、下册)
这书介绍的还不错
这书,我还没看完,不过开头部分讲了,sk ...

呵呵,正常的流程基本是清楚的,但具体的代码流程要复杂得多,感谢~~

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2014-02-26 12:46 |显示全部楼层
回复 7# humjb_1983


一个测试方法是:进行大数据量传输,看看会不会有 oom 出现

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-02-26 13:37 |显示全部楼层
openspace 发表于 2014-02-26 12:46
回复 7# humjb_1983

呵呵,这个没有,这个现象也是偶现,而且未释放的skb也很少~,应不至于OOM。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP