Chinaunix首页 | 论坛 | 博客
  • 博客访问: 222253
  • 博文数量: 45
  • 博客积分: 2095
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-29 11:32
文章存档

2011年(2)

2010年(1)

2009年(1)

2008年(5)

2007年(1)

2006年(16)

2005年(19)

我的朋友

分类: LINUX

2006-07-18 17:24:52

增大了mtu到9000后发现ping使用-s 8962时可以ping通,而包大于8962时就收不到了,找了半天没有找到问题在哪里?
无奈只好把debug模式打开了跑,可是debug打开了跑就可以了,搞得我莫名其妙。
 
问题的解决:
由于Linux内核会在IP的payload上附加ip头,在加上fcs等标志,所以,ETH_DATA_LEN默认定为1500而ETH_FRAME_LEN为1514,所以,使用长度为mtu的数据缓冲区就导致数据接收不完整。把缓冲区长度设置为MTU+14问题解决。
而打开debug模式没有问题估计是由于debug模式下多创建了几个变量,长度多于14字节了,缓冲区没有溢出,所以就正确了。
 
还好没有溢出导致死机,不如更难调了,啊弥陀佛。。。。
 
不过发现大的mtu也还是没有什么明显的性能提升,看来还要找找别的原因。。。
阅读(1544) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~