暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Gratuitous ARP|记一次业务迁移引发的灵异事件

小咩社长 2021-09-09
852
阅读提示|本文大概3393字   阅读需要9分钟


写在前面

    最近一客户跟我反馈说:涛哥,我们在做新老F5设备业务(同一个vlan64网段的业务)迁移的过程中,发现有的业务迁移没问题,有的业务迁移老失败,迁移失败的故障场景下,该业务IP地址ping和telnet都不通,整个迁移过程也都使用tcpdump在F5上抓包了,帮忙看看?

    以小咩以往的经验,大概率arp广播的问题,进一步和沟通并且结合数据包分析发现该故障并不简单,本着拔出萝卜带出泥的理念,给各位铁子们分享一下此次灵异事件。


网络结构


用户目前现网有一台F5 LTM 2000设备,设备系统版本为11.4.1,由于该设备型号较老,于是新采购了一台F5 LTM i2600设备(系统版本14.1.4)用于替换老F5 LTM 2000设备,但是为了保证业务的平缓迁移,没有采用一锅端,整机替换的方式去操作,而是先把新F5 LTM i2600设备接入网络(和LTM 2000在一个网段里),然后手动分批去迁移业务。以下是简图:


环境介绍:
1. 两台F5设备旁路接入网络
2. 同属vlan64网段,业务也是64网段
3. 迁移故障故障的业务为VIP1和VIP2 


业务迁移


业务迁移步骤(为了减少业务中断时间,整个业务迁移在1分钟以内操作完毕):
1. F5 LTM 2000设备业务VIP1和VIP2地址修改成其他IP地址(修改成其他地址而不是删除是为了减少回退的时间,迁移失败,可快速回退)
2. 新F5 LTM i2600设备创建VIP1和VIP2
3. 完成业务迁移,新设备i2600设备接管业务。


故障现象:

当执行第2步F5 LTM i2600设备创建VIP1和VIP2后(即完成业务迁移),客户端访问业务故障,并且ping、telnet都无法联通该业务地址。


故障定位


在整个业务迁移的过程中,在F5 LTM i2600设备上使用tcpdump抓包记录了整个迁移过程。

PS:由于新老F5设备在同一个二层网络里,所以可以抓取到新老F5设备广播的arp数据包。

    #在F5 LTM i2600设备上使用tcpdump抓取arp包
    tcpdump -s0 -nni 0.0:nnn arp -vw var/tmp/arp20210901.pcap
    复制

    过滤业务IP地址10.xx.64.224触发出来的gratuitous ARP (以下简称garp)数据包:


    数据包解析:

    1. 其中标红部分触发出来的garp数据包为文章第二部分业务迁移步骤一“F5 LTM 2000设备业务VIP1和VIP2地址修改成其他IP地址”动作触发出来的garp数据包。

    2. 绿色部分garp数据包为第二部分业务迁步骤二“新F5 LTM i2600设备创建VIP1和VIP2”动作触发出来的garp数据

    3. 其中MAC 19:85为F5 LTM 2000的设备Mac,e1:06为F5 LTM i2600设备的MAC

    4. 抓包截图最后一部分未标注的数据包即12:05分触发的garp数据包暂时忽略,是由于业务不通,通过黑科技手动强制触发让F5 LTM i2600广播10.xx.64.224的数据包,去强制刷上联交换机arp缓存,解决故障,这个我们最后介绍。


    这里我们重点关注数据包解析1、2、3部分,通过这拆解这是三个部分的数据包我们可以得知故障的原因:
    1. 业务迁移步骤一,我们是分别修改VIP1和VIP2的IP地址,不管是先修改80还是修改443的VIP(有先后顺序,无法同时修改),都会触发一次该F5设备所有VIP的GARP广播即全量GARP广播,自然会包括10.xx.64.224,正如抓包截图标红所见,既然是全量的garp广播,自然会有一个持续时间(即在该时间内把所有的VIP的garp广播出去,根据当前F5设备上的业务量,广播持续时间无法控制)。
    2. 业务迁移步骤二,我们在F5 LTM i2600设备手动去创建VIP1和VIP2,可以看到该动作触发了该10.xx.64.224地址的garp广播,如绿色部分。
    3. 最后我们看到在F5 LTM i2600设备广播完10.xx.64.224 的garp后,又抓到了F5 LTM 2000设备发出的10.xx.64.224的garp数据包。
    故障包我们已经抓到,并且我们可以下结论,但是看到这我们可能会有以下几个疑惑:
    1. 为什么老的F5 LTM 2000设备在修改完VIP1后发了多次10.xx.64.224的garp数据包?
    2. 为什么F5 LTM i2600设备在添加完VIP1后发了只发了一次10.xx.64.224的garp数据包


    带着这些疑问我们接着往下看


    拔出萝卜带出泥


    是什么原因导致了,以上的问题?

    开始之前我们在回顾下两台F5设备的系统版本,F5 LTM 2000 系统版本为11.4.1,F5 LTM i2600系统版本为14.1.4


    F5 设备garp广播机制介绍


    其他的GARP触发行为我们这里不做讨论,我们看标注部分介绍:在创建和修改VIP地址时设备会广播该IP的GARP。

    老版本F5 设备VIP广播机制


    目前用户现网的F5 LTM 2000设备系统版本为11.4.1,通过介绍我们可以看到,在老版本的系统下,当disable、enable某一个VIP地址时会全量更新该设备上所有VIP的GARP数据包,但是细心的铁子可能会说,用户迁移环境是修改VIP地址啊,不是disable或者enable VIP啊,没错,但是通过抓包可以看到,当你修改某一个业务VIP地址时,也会全量触发所有VIP地址的GARP,以下是抓到的数据包:


    新版本F5 设备VIP广播机制


    新版本F5设备VIP广播机制为,当修改或者创建某一个业务的VIP地址时,只会触发更新该VIP地址的GARP,以下是数据包:


    故障总结


    通过以上F5新旧版本的的GARP的广播机制结合具体的操作步骤我们可以还原故障问题:

    1. 当手动修改F5 LTM 2000 VIP地址时,此时会触发该设备所有VIP的GARP的数据包(由于无法同时修改两个VS IP地址,此时F5 LTM 2000发送的GARP数据包中包含 10.xx.64.224,具体是随机发送还是有优先级算法控制无法考证)。
    2. 当手动在F5 LTM i2600设备上创建VIP1和VIP2时,设备只会广播10.xx.64.224GARP
    3.  由于第1步和第2步操作间隔很短(用户为了考虑业务迁移过程中中断时间短,手速很快,5s左右可以完成整个迁移动作),此时步骤一F5 LTM 2000设备还没将所有VIP的GARP广播完毕,并且步骤二10.xx.64.224的GARP是先于老F5设备F5 LTM 2000 10.xx.64.224GARP广播
    4. 老F5设备F5 LTM 2000的10.xx.64.224 GARP(可以迟到但是不会缺席) 覆盖掉了步骤2中新 F5 LTM i2600 10.xx.64.224 GARP。
    5. 业务迁移故障


    优化

    抓包也抓到了问题,并且知道了F5 GARP广播机制,在这种同网段,业务迁移前后地址不变的场景,如何去解决呢,其实有以下几种方式去解决这个问题:
    1. 手动去清交换机的arp
    2. 手速放慢:即等老F5设备所有VIP地址的GARP广播完毕后再去新F5设备上去创建VIP地址
    3. 当发现业务迁移到新F5设备上不通时,在新F5设备上执行以下命令强制触发该VIP的GARP广播去更新上联交换设备的arp缓存(推荐,上文中12:05分触发的garp数据包就是该命令触发出来的)
      tmsh modify ltm virtual-address 10.xx.64.224 arp disabled
      tmsh modify ltm virtual-address 10.xx.64.224 arp enabled
      复制

      - EOF -

      推荐阅读  点击标题可跳转

      1、别慌!一文给你说透如何快速应对CVE-2021-229**系列漏洞

      2、一文读懂F5 REST API的细粒度角色访问控制

      3、使用Rancher Server自动下发F5负载均衡策略实践|环境搭建

      4、tcpdump抓包拆解flannel vxlan模式下的容器跨主机通信流程

      5、Rancher Server自动下发F5负载均衡策略实践|7层负载均衡

      6、IPv6 NOERROR|记一次因IPv6解析问题导致手机APP页面加载缓慢


      觉得本文对你有帮助,请分享给更多人


      文章转载自小咩社长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论