netfilter之conntrack笔记

netfilter之conntrack笔记一、控制结构sk_buff和网络报文的存储空间二、分片的网络报文与scatter/gatherIO网络报文在内存中不一定是连续存储的,同一个网络报文有可能被分成几片存放在内存的不同位置(不要和IP分片混淆,IP分片是将一个网络报文分成多个网络报文,这里是将一个网络报文分成几片存放在不同的内存空间)。为了记录网络报文的长度,在sk_buff里增加了一个变

一、控制结构 sk_buff 和网络报文的存储空间

  
netfilter之conntrack笔记

二、分片的网络报文与scatter/gather IO

netfilter之conntrack笔记

网络报文在内存中不一定是连续存储的,同一个网络报文有可能被分成几片存放在内存的不同位置(不要和IP分片混淆,IP分片是将一个网络报文分成多个网络报文,这里是将一个网络报文分成几片存放在不同的内存空间)。

为了记录网络报文的长度,在sk_buff里增加了一个变量data_len。这个变量记录的是在frags和frag_list里面存储的报文的长度。原有的变量len记录网络报文的总长度。truesize是 head所指的存储区的大小。

Skb比较复杂的部分在于skb_shared_info 部分,alloc_skb()在为数据分配空间的时候,会在这个数据的末尾加上一个skb_shared_info 结构,这个结构就是用于scatter/gather IO的实现的。它主要用于提高性能,避免数据的多次拷贝。例如,当用户用sendmsg分送一个数组结构的数据时,这些数据在物理可能是不连续的(大多数情况),在不支持scatter/gather IO 的网卡上,它只能通过重新拷贝,将它重装成连续的skb(skb_linearize),才可以进行DMA操作。而在支持S/G IO 上,

今天的文章netfilter之conntrack笔记分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/57827.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注