IP冲突-- Gratuitous ARP

主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为Gratuitous ARP,主要有两个用途:
(1)检查重复地址(如果收到ARP响应表明存在重复地址)。

       在windows NT下,网卡启动时,TCP/IP协议栈初始化时会最大发送3次Gratuitous ARP请求(初始化1次,0.5s,1s时各一次),当请求收到回应,Window NT将关闭协议栈,并警告用户IP冲突。

      弹框或小黄条大家应该都不陌生,如果设置的只有一个静态IP,因为协议栈被关闭,无法上网。查看ipconfig 看不到受影响的IP地址。也就是说,IP地址谁先拿到就是谁的。


(2)用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。

       Windows NT 启动的时候广播 Gratuitous ARP,除了确认IP冲突外,那就是更新周边设备的ARP缓存。这对高可用方案中快速切换尤为重要,当IP 对应的MAC地址变了,如果周边设备缓存未更新、等到数据发送失败ICMP应答后重新发送ARP请求已经过了很长时间了。

      注意此策略在Window Server 2008 下有所改动,Server 2008 在收到Gratuitous ARP 时并不会更新自己的路由表,Windows是为了考虑Gratuitous ARP 请求可能是冲突的设备发出来的,如果更新缓存会带来不少问题。怎么说了更与不更都会有些问题,最好的解决方案莫过于VRRP 实现的VIP地址,使用虚拟的MAC地址,在IP漂移的时候不必考虑ARP缓存问题。

     

到这也许会疑问我为啥只说Windows,是因为linux 压根不识别Gratuitous ARP:不发送、也不处理。这就是说linux下IP冲突问题就大发了,每次你问IPXX是谁?都有两个人回答你…当然具体数据发给了谁,看运气,对于服务器谁得应答先到,对于网络设备那就不同厂商的不一个样了,反正就是乱套了。

也许会想,还挺不错啊,变相的负载均衡。。。(类似 LVS DR模式)不过听网建的同学说,linux IP冲突会造成网络设备的负担,网络设备ARP 缓存处理需要靠CPU计算,两台机器搞来搞去就把设备CPU跑到90%+。

 

 

参考资料:

http://wiki.wireshark.org/Gratuitous_ARP

http://support.microsoft.com/kb/199773

http://serverfault.com/questions/268253/windows-2008-ignores-gratuitous-arp-requests

转载于:https://www.cnblogs.com/lulu/archive/2013/06/10/3131275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值