这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于netJobAdd: ring buffer overflow

共6条 1/1 1 跳转至

关于netJobAdd: ring buffer overflow

菜鸟
2007-03-13 17:47:15     打赏

各位好:

我用ixp425做一个应用网关,现在在板子的一个网口上(ixe0)截获所有的进出数据包,当数据包有网关发往外网时,对数据包的source ip和destnation ip进行修改,当数据包由外网返回时,在将 数据包的ip修改回原样,这类似与NAT功能,但又和NAT有些区别。

当我用ipfilterhook获取数据并修该后,可以通过ixp425上网,但速度很慢,经常出现netJobAdd: ring buffer overflow的提示,着是不是说明我的内存队列以满,出现了丢包现象,网络处理器无法应对大量数据的修改呢?

那我应该怎样才能从根本上解决这个问题呢?我已经查阅了很多帖子但都没有很好的解决方法,望有类似经验的朋友不吝赐教,谢谢!!




关键词: 关于     netJobAdd     buffer     overf    

菜鸟
2007-03-15 23:02:00     打赏
2楼

我检查了我的函数好象并没有问题,我把NUM_128的参数调整到很大以后,目前没有出现overflow的现象,但我不知道ring buffer overflow和NUM_128参数的调整是否有直接关系?

请问netjobadd 的默认值可以修改吗,在那里修改??谢谢!!


菜鸟
2007-03-16 18:36:00     打赏
3楼

感谢 fxhskwm的热心帮助,

我还在继续努力中,谢谢


菜鸟
2007-03-20 18:37:00     打赏
4楼

thanks a lot

i know what i should do

again thaks


菜鸟
2007-04-26 05:56:00     打赏
5楼

woodhead,你好;

我现在已经把tNettask的priority设置成了 10,我程序中使用了ipfilterhook函数,我查看了一下,他的pri是30,按说这样就不应该出现ring buffer overflow的状况了,但是有时还是回出现,尤其是访问大流量的网站时,例如sina等,这有时什么原因呢?出现overflow 一段时间后,板子就无法实现正常的包修改工作了,必须重新启动,这让我很苦恼,有办法根除这个问题吗??

希望得到您的帮助,谢谢!


菜鸟
2007-04-26 16:44:00     打赏
6楼

yaopg,你好;

我一开始也是这么考虑的把buffer调整的大一些,

-> memShow

SUMMARY:

status bytes blocks avg block max block
------ ---------- --------- ---------- ----------
current
free 20188296 209 96594 19350504
alloc 5749368 428 13433 -
cumulative
alloc 6789500 3585 1893 -
value = 0 = 0x0
->
->
->
-> mbufShow
type number
--------- ------
FREE : 129
DATA : 3
HEADER : 868
SOCKET : 0
PCB : 0
RTABLE : 0
HTABLE : 0
ATABLE : 0
SONAME : 0
ZOMBIE : 0
SOOPTS : 0
FTABLE : 0
RIGHTS : 0
IFADDR : 0
CONTROL : 0
OOBDATA : 0
IPMOPTS : 0
IPMADDR : 0
IFMADDR : 0
MRTABLE : 0
TOTAL : 1000
number of mbufs: 1000
number of times failed to find space: 0
number of times waited for space: 0
number of times drained protocols for space: 0
__________________
CLUSTER POOL TABLE
_______________________________________________________________________________
size clusters free usage
-------------------------------------------------------------------------------
64 100 99 5
128 15000 14131 3136
256 256 256 0
512 100 100 0
1024 50 50 0
2048 50 50 0
-------------------------------------------------------------------------------
value = 80 = 0x50 = 'P'

因为128的包站决大部分,所以我吧NUM_128调成15000,但是问题还是回出现ring buffer overflow! 同时tNetTask的priority也调整了(=10),不知道问题在那里?

还有一事不明

size clusters free usage
-------------------------------------------------------------------------------
64 100 99 5
128 15000 14131 3136

这里cluster!=free+usage, 是不是因为usage中有释放了重新使用的?


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]