注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

Linux网络传输的path MTU的获取和SCTP协议的“Chunk Bundling”功能  

2014-04-16 22:39:50|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ifconfig   可以查看MTU,但不是实际的值来的吧,应该是配置的。

这个ifconfig是通过
ioctl  的 SIOCGIFMTU 参数来读取出来的。可以strace ifcofnig 跟踪系统调用。

---------

标准的MTU获取方法应该这个 “Path MTU Discovery”
http://en.wikipedia.org/wiki/Path_MTU_Discovery
在IP头部设置Don't Fragment (DF)标识,不停的发更大的包,直到传输过程中最小允许的那个设备丢包,并回复 Internet Control Message Protocol (ICMP) Fragmentation Needed (Type 3, Code 4) message containing its MTU 包
Linux每十分钟就探测一次? mtu_expires 

SCTP协议会根据MTU大小做“ Chunk Bundling”,可以在允许的范围内把多个data chunk放到一个IP packet里面一次性的发送出去。和TCP的Nagle算法类似的作用吧

1.5.5. Chunk Bundling

http://tools.ietf.org/html/rfc4960#section-1.5.5
http://tools.ietf.org/html/rfc4960#section-3

6.10. Bundling

http://tools.ietf.org/html/rfc4960#section-6.10




SCTP协议文档的MTU探测和TCP的不同

7.3. Path MTU Discovery

http://tools.ietf.org/html/rfc4960#section-7.3

就像TCP有nodelay选项禁用nagle算法一样,sctp也是有一个SCTP_NODELAY选项来来禁止这个bundling的。
http://linux.die.net/man/7/sctp
SCTP_NODELAY
Turn on/off any Nagle-like algorithm. This means that packets are generally sent as soon as possible and no unnecessary delays are introduced, at the cost of more packets in the network. Expects an integer boolean flag.

Linux内核的sctp实现,这个SCTP_NODELAY选项默认是不开的,
参见内核代码source/net/sctp/socket.c
3966 /* Enable Nagle algorithm by default. */


一些sigtran实现的sctp协议申明它是支持根据MTU来做bundling 操作的,这样确实可以充分利用带宽。包太小了,是没法达到理论带宽的

http://www.radisys.com/products/trillium/ss7-sigtran/sctp-software/
Segmentation of user datagram to conform to the path MTU size
Optional bundling of multiple user datagrams into one SCTP datagram to improve bandwidth utilization

但实际测试发现没有这个功能,很接近时刻发送多个data chunk没有被放到一个sctp packet里面去。
怀疑是在virtualbox虚拟机上面“Path MTU Discovery”方法不能正常工作,没有ICMP回应错误?


  评论这张
 
阅读(500)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017