免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15655 | 回复: 10
打印 上一主题 下一主题

询问一个关于ARP缓存的过期时间的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-12 11:48 |只看该作者 |倒序浏览
本帖最后由 jerrywjl 于 2010-05-12 11:50 编辑

各位,我有一个比较麻烦的问题求助:

情况大概是这样:

如果A和B两台机器活在同一个局域网内,假如A去ping B的时候,A的ARP缓存中肯定有B的记录,那么之后不管B死掉还是活着,多长时间之后A的ARP缓存中B的那条记录会被清除?

我翻阅了TCP/IP详解的英文版,其中4.5章节中,关于ARP缓存这部分明确说明,对于completed的arp记录,20分钟会过期;对于incompleted的ARP记录,3分钟就会过期。

但是我通过测试观察几次,发现每次B那条ARP缓存的生存时间都不一样,最长的不到8分钟,也就是7分30秒左右;最短的,不到四分钟。

我的脚本很简单:

#!/bin/bash

IP="10.66.129.193"

ret=0
while [ $ret -eq 0 ]; do
        arp -a | grep -q $IP;
        ret=$?
        if [ $ret -ne 0 ]; then
                break
        fi
done

上面脚本是在A机器上执行,即10.66.129.193就是B那台机器。也就是说,只要ARP记录在缓存中消失,就计算一个real time,不过结果显然和书上不一样。

那么哪位高人能解释一下:

Linux系统上的ARP缓存在建立之后到底多长时间能被清除;怎么计算或者有什么kernel参数去控制?

最后谢谢各位关注!

论坛徽章:
0
2 [报告]
发表于 2010-05-12 14:10 |只看该作者
顶之。

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
3 [报告]
发表于 2010-05-12 14:14 |只看该作者
Linux 的高级路由和流量控制 HOWTO 中文版
上面说是15分钟,但是看有的书上写
从伯克利系统演变而来的系统一般对完整的表项设置超时值为20分钟,而对不完整的表项设置超时值为3分钟当这些表项再次使用时,这些实现一般都把超时值重新设为20分钟

也不知道那个参数是设置缓冲时间的...

论坛徽章:
0
4 [报告]
发表于 2010-05-12 14:20 |只看该作者
Linux 的高级路由和流量控制 HOWTO 中文版
上面说是15分钟,但是看有的书上写
从伯克利系统演变而来的系统 ...
gamester88 发表于 2010-05-12 14:14



   
先感谢这位兄弟!TCP/IP详解中,的确是20分钟。根据实测的情况来看aix系统上也的确是20分钟。但是RHEL不是。每次时间都不同。
而且情况是,如果A机器ping了B机器,ARP的CACHE和ROUTE CACHE中都会有B机器的记录。ARP CACHE中的记录会在ROUTE CACHE的记录被清除之后清除。
那么route cache在系统上有没有什么参数,多长时间能够被清除?

我认为可能和这几个参数有关,但是很遗憾,找不到理论依据:

[root@dhcp-129-162 ~]# sysctl -a | grep route | grep gc | grep ipv4
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_timeout = 300
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_thresh = 32768

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
5 [报告]
发表于 2010-05-12 15:50 |只看该作者
本帖最后由 gamester88 于 2010-05-12 16:37 编辑

jerrywjl 老大看是这个不
  1. #sysctl -w net.link.ether.inet.max_age=<timeout_in_seconds>

  2. Default value is 20 minutes.
复制代码
这个参数fedora11好像用不成...


这个是bsd下的,redhat用不成...

论坛徽章:
0
6 [报告]
发表于 2010-05-12 17:16 |只看该作者
再次感谢这位兄弟。你找到的参数没错,但是不是for redhat的。很遗憾。而且redhat上测试的结果和这些参数也对应不上。这才是问题。

论坛徽章:
0
7 [报告]
发表于 2010-05-12 17:33 |只看该作者
你这个应该还要考虑网络的因素,arp随时都有可能被更新
http://linux-ip.net/html/ether-arp.html

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

论坛徽章:
0
8 [报告]
发表于 2010-05-12 17:44 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2010-05-12 23:48 |只看该作者
http://linux-ip.net/html/ether-arp.html

这个文档很不错,至少提供了多一些线索:


[root@tristan]# ip neighbor show 192.168.99.7
192.168.99.7 dev eth0 lladdr 00:80:c8:e8:1e:fc nud reachable     
[root@tristan]# ip neighbor show 192.168.99.7
192.168.99.7 dev eth0 lladdr 00:80:c8:e8:1e:fc nud stale         
[root@tristan]# ip neighbor show 192.168.99.7
192.168.99.7 dev eth0 lladdr 00:80:c8:e8:1e:fc nud delay         
[root@tristan]# ip neighbor show 192.168.99.7
192.168.99.7 dev eth0 lladdr 00:80:c8:e8:1e:fc nud probe         
[root@tristan]# ip neighbor show 192.168.99.7
192.168.99.7 dev eth0  nud incomplete                           

不过每个step中,具体涉及到每个环节用多少时间似乎讲得还是不够细。别怪我较真,因为我也是被人逼得,没辙。

感谢LS的两位兄弟先,希望有更多高手加入并提供更多线索。

论坛徽章:
0
10 [报告]
发表于 2010-05-21 12:20 |只看该作者
那谁,看到了都不帮顶吗?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP