cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
阅读:1623回复:3

数据包经过路由器路由时是否要重新计算ip的校验和?(急)

楼主#
更多 发布于:2005-07-01 18:34
数据包经过路由器路由时是否要重新计算ip的校验和?

现在我拦截了ip数据包,修改了ip报头数据,需要计算ip校验和.我使用了比较一般的算法计算的,但是在有的计算机上非常占用cpu时间,该如何解决这个问题啊,谁有ip校验和的优化算法?


如何做能够把cpu降下来呢?

谢谢了!
走走看看开源好 Solaris vs Linux
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-07-01 20:20
数据包经过路由器路由肯定要重新计算ip的校验和!
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2005-07-01 21:51
是的!

在驱动中如果占cpu比率比较大,应该如何把cpu利用率降下来呢?
走走看看开源好 Solaris vs Linux
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-02 14:34
/* The function in 2.2 was invalid, producing wrong result for
 * check=0xFEFF. It was noticed by Arthur Skawina _year_ ago. --ANK(000625)
 */
static inline
int ip_decrease_ttl(struct iphdr *iph)
{
       u32 check = iph->check;
       check += __constant_htons(0x0100);
       iph->check = check + (check>=0xFFFF);
       return --iph->ttl;
}
Linux协议栈中的做法,值得参考,建议朋友这些问题的时候多去阅读Linux或者FreeBSD的源码。
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
游客

返回顶部