加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – skbuff frags和frag_list之间的区别

发布时间:2020-12-14 01:11:06 所属栏目:Linux 来源:网络整理
导读:sk_buff有两个地方可以存储下一个碎片数据: skb_shinfo(head)-frag_list skb_shinfo(head)-frags[] 请有人解释这两种处理碎片的方法之间的差异. 谢谢,最诚挚的问候! 解决方法 两者都用于不同的情况. 断支[] 当您的设备支持分散 – 聚集I / O,并且您希望它
sk_buff有两个地方可以存储下一个碎片数据:

skb_shinfo(head)->frag_list 
skb_shinfo(head)->frags[]

请有人解释这两种处理碎片的方法之间的差异.

谢谢,最诚挚的问候!

解决方法

两者都用于不同的情况.

断支[]

当您的设备支持分散 – 聚集I / O,并且您希望它进行数据组合等时,您可以填充frags []结构,从第2个片段开始直到第n个片段.第一个片段总是由数据和尾指针指定.其余的片段填充在frags []结构中.如果不使用分散集合,则此变量为空.

frag_list

这是IP片段列表.这将在ip_push_pending_frames期间填充.
说你的sk_buffs在这个安排中

sk_buff0->next = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn

调用ip_push_pending_frames之后

sk_buff0->frag_list = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn

简单的说

> frags []用于分散 – 聚集I / O缓冲区> frag_list用于ip片段

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读