Red Hat Bugzilla – Bug 428934
Can not send redirect packet when jiffiess wraparound
Last modified: 2014-06-18 04:29:45 EDT
Description of problem:
In linux kernel, if time_after(jiffies, (rt->u.dst.rate_last
+(ip_rt_redirect_load << rt->u.dst.rate_tokens)) == false,
router will not send redirect packet. Here define b = rt->u.dst.rate_last
+(ip_rt_redirect_load << rt->u.dst.rate_tokens),
1. If (jiffies - b <= 0x7fffffff), time_after(jiffies, b) == true, router can
send redirect packet.
2. If (jiffies - b > 0x7fffffff), time_after(jiffies, b) == false, router can
not send redirect packet.
when I add a router after system boot
jiffies = (unsigned long)(-300000),
rt->u.dst.rate_last = 0,
rt->u.dst.rate_tokens = 0,
b = 20,
then time_after((unsigned long)(-300000), 20) == false,
redirect packet can not be send even if router is used in the first time.
When router send a redirect packet in time b, and before jiffies increased to
0x7fffffff + b, router can send redirect packet.
But if a redirect packet must be send in 0x80000000+ b, time_after(jiffies, b)
== false, redirect packet will not be send also.
So between time (0x80000000+ b) to time b, router do not send redirect packet.
That is to say, in a circle of jiffies, router has 24.9 days can not send
redirect packet (0x80000000/1000/60/60/24=24.9).
jiffies 0 b
0x80000000+b b 0x7fffffff+b
|<----jiffies - b < 0x7fffffff--->|
Version-Release number of selected component (if applicable):
Steps to Reproduce:
HOST1 does not receive the redirect packet from ROUTER
HOST1 can receive the redirect packet from ROUTER
Created attachment 291815 [details]
the patch for the ip_rt_send_redirect of the kernel
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release. Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products. This request is not yet committed for inclusion in an Update
Committed in 68.28.EL . RPMS are available at http://people.redhat.com/vgoyal/rhel4/
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.