分类: 系统运维
2011-11-26 11:22:53
前几天有反映AIX上网络有定时的刷arp情况,于是查了查AIX系统对于arp的处理,没直接解决问题,但总结了一下AIX上arp相关的一些知识。
ARP的普及知识就不讲了,AIX上对于ARP cache的调整通过 no 和 netstat工具来完成。下面就介绍AIX中与ARP table相关的可调整设置。
AIX系统arp表由一系列的buckets组成,这个buckets的数目通过arptab_nb参数定义,默认为149个。
每个bucket储存多少条arp cache条目由arptab_bsiz参数定义,默认为7个。
根据上面所述,默认设置下,AIX系统的主机arp cache table最多可以包含149*7=1043个条目。
当AIX主机需要与多于1043台机器通讯时,由于arp table容量不足,一条新的ARP解析结果出来后,需要先删除掉一条或数条旧的arp cache才能写入新主机的arp条目,如果刚删除的条目很快又被用到,则再次重复这一过程,这就会造成arp cache table的波动,从而对性能造成负面影响。
而上述的新主机arp解析过程,正常的通讯数据包需要等待ARP解析过程完成,它们就必须在一个队列中等待,假如这个队列满了,则数据包就会丢掉。这个队列的长度就是由arpqsize参数所决定的,默认值为12,即可以支持12个数据包排队等待。
到目前为止,提到了arpqsize, arptab_bsiz,和 arptab_nb三个参数,这三个参数可以通过no命令修改,并且必须重启系统后生效。
而正常情况下,一条arp cache条目没有被新条目“挤”出arp table时,它也有一个生存时间,这个时间由参数arpt_killc决定,该参数的单位是分钟,默认值为20,即一个缓存条目在arp table里的最长存在时间是20分钟,然后就被删除。可以根据实际情况调整arp cache的时长,这个调整是即时生效的,不需要重启系统。
总结AIX系统中与arp cache相关的参数有如下4个:
如何确定系统中当前ARP cache table有多大:可以使用 arp -a命令显示所有条目
显示统计以判断arp table是否足够大:
# netstat -p arp arp: 6 packets sent 0 packets purged如果purged条目计数过多,且在不断增长,则可以考虑增加arp cache table的大小了。