MBUF:存储器缓存

网络协议对内核的存储器管理能力提出了很多要求。
1、方便地操作可变长缓存
2、能在缓存头部和尾部添加数据 (如低层封装来自高层的数据 )
3、能从缓存中移去数据 (如,当数据分组向上经过协议栈时要去掉首部 )
4、能尽量减少为这些操作所做的数据复制。内核中的存储器管理调度直接关系到联网协议的性能。

mbuf全称即memory buffer,即存储器缓存,在内核中属于全局支持的范畴。从网络协议的角度来说,mbuf的主要用处是保存在进程和网络接口间相互传递的用户数据。当然,在实际使用中,mbuf除了保存用户数据以外,还需要保存其他各类数据,比如比较常见的网络报文头部的源地址与目的地址以及端口信息乃至Socket选项等。

1、m_next 指向mbuf链中的下一个mbuf的指针,m_next把多个mbuf连在一起,形成一条mbuf链表。
2、m_nextpkt 指向下一个mbuf链的指针,m_nextpkt把多个多个mbuf链表连在一起,形成一个mbuf链表的队列。
3、m_len 此mbuf中数据部分的大小
4、m_data 指向此mbuf中数据
5、m_type 此mbuf中数据的类型,可以为MT_DATA或MT_HEADER(比如存储的是TCP报文段分组的首部)
6、m_flags M_PKTHDR表示这个mbuf是此mubf链表中的第一个,即链表的头,0表示此mbuf只包含数据,M_EXT表示此mbuf用到了外部的簇来存储较大的数据。
7、m_pkthdr.len的值是这个分组的mbuf链表中所有数据的总长度。
8、m_pkthdr.rcvif 指向接口结构的指针。当为输出分组时为NULL,但对于接收的分组,它包含一个指向接收接口ifnet结构。
9、m_ext.ext_buf指向缓存的起始地址
1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值