发新话题
打印

linux网络部分的sk_buff的默认大小是多少?

linux网络部分的sk_buff的默认大小是多少?

  linux网络部分的sk_buff的默认大小是多少?sk_buff中协议部分和实际数据之和是从sk_buff->head到sk_buff->tail 还是从sk_buff->data到sk_buff->tail .
  这些数据是不是小于某个特定值?
        

TOP

实际数据都在data中,但没必要直接使用,各协议头位置都已经在结构中定义好了,直接用就行      

TOP

问题是这样的,我的ip包大小大于device中的mtu(最小数据单元)时必然对ip包进行分组,我看有关linux网络的文档时看见说每个mtu使用一个sk_buff结构,我的想法是发送时将sk_buff结构全部发送(无线发送,无线部分采用802.11封装格式,要求sk_buff的大小小于802.11的有效载荷长度),在接收方将sk_buff收到后用net_if()提交到上层取出ip分组,当ip包的所有分组都收到后重组,重组后在放到sk_buff中用net_if()提交到上层。(是不是ip分组的重组过程是系统完成的,重组后自动放在了sk_buff结构中?驱动程序不用管?)
  我的想法是不是太麻烦,或许就是错误的,请大侠指教!      

TOP

data-->tail 是本协议层要处理的数据
head-->end 是全部的数据缓冲区。
alloc_skb( size,flag)中的size就是想分配的head-->end大小,这个函数本身没有限制mtu的大小。      
天给的苦向谁诉,伤痛又有谁清楚。 只影单飞无人顾,步步都是坎坷路。 天给的苦说不出,只好躲在心里哭。 痛到深处说不出,苍天怎知人孤独。

TOP

分片那是操作系统完成的事,不用你去作,底层驱动只需要完成DL层和Ph层就行了      

TOP

发新话题