防火墙 Keepalived 异常双活恢复后部分外网访问中断问题分析

冯亚伟(去哪儿网 NETOPS)
2014年7月加入去哪儿网,拥有丰富的网络运维经验,现负责公司IDC和骨干传输网络的运维工作。

1. 故障描述

1、19:01 在 fw4 仍然为 master 的状态下 fw3 独自提升为 master 状态;

2、19:27 fw3 独自放弃 master 状态,故障开始;

3、19:44 发现机器 server1 请求外部接口异常;

4、19:48 清理机器 server1 上的 arp 缓存,机器恢复;

5、19:51 在 fw4 上发送 vip 的免费 arp 刷新内部服务器上的 arp 表项后,故障恢复。


2. 涉及到的关键知识点

2.1 linux 系统的 arp cache 状态

REACHABLE 状态:arp 条目对应的邻居可达,可以直接用该 arp 条目。REACHABLE 超时时间是15s~45s之间的随机值。使用 arp 条目成功发送数据包后(如 tcp 得到 ack,icmp request 得到 reply),会重置超时计时器。

STALE 状态:arp 条目从 REACHABLE 状态超时后,进入 STALE 状态,该状态不确定 arp 条目对应的邻居是否可达,但是在使用该条目再次发送数据包之前不会对其可达性进行检测。

DELAY 状态:使用处于 STALE 状态的 arp 条目发送出去数据包后,arp 条目从 STALE 状态进入 DELAY 状态,DELAY 状态超时时间为5s,在 DELAY 状态会进行邻居不可达检测,如果确认邻居依然可达则条目进入 REACHABLE 状态,否则进入 PROBE 状态。

PROBE 状态:会发送3次单播 arp 以确认邻居可达性,发送间隔为1s。若收到 arp 应答,则条目进入 REACHABLE 状态,否则进入 FAILED 状态。

FAILED 状态:向条目中的 IP 地址发送数据包时,会重新发送广播 arp,解析 IP 对应的 MAC 地址。

2.2 邻居不可达检测

分两种方式:

1、通过上层协议进行邻居可达性确认,例如当 TCP 收到了 ACK,ICMP 收到了 echo reply 时,证明邻居可达;

2、使用 arp 条目中的 MAC 地址作为目的 MAC 地址,发送单播 arp 进行检测,如果能收到 arp 应答,则证明邻居可达。

2.3 Linux6.0 和 Linux7.0系统对 STALE 状态的 ARP 条目进行邻居不可达检测的区别

Linux6.0:

图1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值