From: Tom Ammon on
Hi,

I've been trying to figure out how to adjust the ARP timeout on kernel
2.6.9 and I found the following in /proc/sys/net/ipv4/neigh/ib0 (its an
IB interface I am interested in changing) with the following values.
This is on kernel 2.6.9-89ELsmp (RHEL4) :

[root(a)up255 ib0]# cat anycast_delay
99
[root(a)up255 ib0]# cat app_solicit

0
[root(a)up255 ib0]# cat base_reachable_time
30
[root(a)up255 ib0]# cat delay_first_probe_time
5
[root(a)up255 ib0]# cat gc_stale_time
60
[root(a)up255 ib0]# cat locktime
99
[root(a)up255 ib0]# cat mcast_solicit
3
[root(a)up255 ib0]# cat proxy_delay
79
[root(a)up255 ib0]# cat proxy_qlen
64
[root(a)up255 ib0]# cat retrans_time
99
[root(a)up255 ib0]# cat ucast_solicit
3
[root(a)up255 ib0]# cat unres_qlen
3

When I test this, along with per-flow ECMP (using the iproute2 utils), I
see that the ARP cache is timing out about every 10 minutes (I observe
this by load balancing an iperf flow between two different gateway
machines and then graphing the interface traffic)

On a newer kernel, 2.6.18-164.11.1.el5 (RHEL5), I see mostly the same
parms available, but a few new ones have been added. However, all of the
parms that are the same name between the two kernels are the same values:

[root(a)gateway2 ib0]# cat anycast_delay
99
[root(a)gateway2 ib0]# cat app_solicit

0
[root(a)gateway2 ib0]# cat base_reachable_time
30
[root(a)gateway2 ib0]# cat base_reachable_time_ms
30000
[root(a)gateway2 ib0]# cat delay_first_probe_time
5
[root(a)gateway2 ib0]# cat gc_stale_time
60
[root(a)gateway2 ib0]# cat locktime
99
[root(a)gateway2 ib0]# cat mcast_solicit
3
[root(a)gateway2 ib0]# cat proxy_delay
79
[root(a)gateway2 ib0]# cat proxy_qlen
64
[root(a)gateway2 ib0]# cat retrans_time
99
[root(a)gateway2 ib0]# cat retrans_time_ms
1000
[root(a)gateway2 ib0]# cat ucast_solicit
3
[root(a)gateway2 ib0]# cat unres_qlen
3

Yet when I observe the same traffic flow with this machine, the ARP
cache times out about once per minute.

Is there another set of parameters somewhere that govern how often the
kernel times out the ARP cache? If so, where might I find that? Is there
any kernel documentation that talks about changing ARP timers on the
linux kernel?

Tom Ammon

--
--------------------------------------------------------------------
Tom Ammon
Network Engineer
Office: 801.587.0976
Mobile: 801.674.9273

Center for High Performance Computing
University of Utah
http://www.chpc.utah.edu

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Eric Dumazet on
Le mardi 09 mars 2010 à 12:32 -0700, Tom Ammon a écrit :
> Hi,
>
> I've been trying to figure out how to adjust the ARP timeout on kernel
> 2.6.9 and I found the following in /proc/sys/net/ipv4/neigh/ib0 (its an
> IB interface I am interested in changing) with the following values.
> This is on kernel 2.6.9-89ELsmp (RHEL4) :
>

> When I test this, along with per-flow ECMP (using the iproute2 utils), I
> see that the ARP cache is timing out about every 10 minutes (I observe
> this by load balancing an iperf flow between two different gateway
> machines and then graphing the interface traffic)
>

10 minutes seems out of specs.

> On a newer kernel, 2.6.18-164.11.1.el5 (RHEL5), I see mostly the same
> parms available, but a few new ones have been added. However, all of the
> parms that are the same name between the two kernels are the same values:
>

> Yet when I observe the same traffic flow with this machine, the ARP
> cache times out about once per minute.
>

This seems normal, old kernels were a bit lazy about arp.


> Is there another set of parameters somewhere that govern how often the
> kernel times out the ARP cache? If so, where might I find that? Is there
> any kernel documentation that talks about changing ARP timers on the
> linux kernel?
>

I would suggest :

man 7 arp

http://linux.die.net/man/7/arp



base_reachable_time
Once a neighbour has been found, the entry is considered to be
valid for at least a random value between base_reachable_time/2
and 3*base_reachable_time/2. An entry's validity will be
extended if it receives positive feedback from higher level
protocols. Defaults to 30 seconds.

gc_interval
How frequently the garbage collector for neighbour entries
should attempt to run. Defaults to 30 seconds.

gc_stale_time
Determines how often to check for stale neighbour entries. When
a neighbour entry is considered stale it is resolved again
before sending data to it. Defaults to 60 seconds.



and "ip -s neigh"


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/