混合云场景下BGP冗余路径失效-事件复盘

云计算 混合云
整体看下来,问题其实很简单,认为有了子接口,又是不同as之间的EBGP邻居,不会受到as-path、水平分割这类防环逻辑的限制,但其实是思维定势的误区,造成了后面的周折和时间损耗。

1 问题背景

这是一份基础网络运维的事故复盘报告。

因为一些历史原因,我司各个环境之间的互联互通采用了串行连接,并且核心链路和转发节点使用了共享资源,既下图中红色部分。因为共享资源的可靠性和稳定性表现不佳且故障场景下的权限不足,倍受困扰后下定决心要改变这种局面。在梳理了现有资源之后,基础网络架构跃迁历程如下:

图片图片

  • 互联方式由之前身不由己的纯静态路由调整为全BGP环境。因为是混合云架构,所有邻居之间全部基于EBGP对接,子接口部署,路由结构如下图所示:

图片图片

  • as分布如图所示,看起来很棒:闭合连接/双上行/EBGP,这些特性配合BFD和触发更新,完全有能力在异常情况下实现毫秒级的路由收敛,踢出故障链路后使流量快速切换到备用路径。
  • 然而,不出意外的,我们遇到了意外———割接很顺利,架构变更按计划完成,但在验证高可用能力的过程中遇到了光路中断,造成EBGP-5邻居状态idle,导致办公环境与托管IDC失联:

图片图片

  • 确认问题链路两端模块的光功率均在合理区间,基本排除了模块故障的可能性。托管IDC侧挂表测试,OTDR显示近端衰减,确认链路状态不可用,锁定位置后反馈有管井临时施工造成链路中断。但EBGP邻居down了,理论上应该能够通过冗余路径学到路由才是,为什么会失联呢?

2 探索

于是问题排查的重心调整到高可用方向。

2.1 邻居状态确认

优先确认了所有EBGP邻居的关系状态,确保均为established。

图片图片

图片图片

2.2 路由有效性检查

其次检查办公环境和托管IDC内网出口方向的路由宣告详情,确认两侧BGP进程路由宣告成功。

图片图片

图片图片

2.3 路由过滤

再次则分别排查内网出口方向的前缀列表,确认已生效的过滤逻辑不存在误杀情况。

2.4 手搓新网段,触发路由更新

最后尝试在办公环境内网出口设备上新增loopback,配置并发布一个新的子网和相应的路由,随后检查EBGP邻居的路由收发情况,发现情况依旧。

3 分析原因

经过上述测试排查,发现如下特征————

  • 两端设备配置正确,且路由宣告正常;
  • 云上网络组件L3节点本地路由表中有直连邻居宣告的路由,说明可以收到正确且完整的路由更新;
  • 跨过云上网络组件后,再下一跳设备(也就是本文中问题链路的远端设备)的路由表中就找不到相应的路由信息了;
  • 再进一步测试,在托管IDC本地开debug实时打印路由更新,确认从云上EBGP邻居处收到的路由更新中,并不包含办公环境所属网段的路由信息。

综上,办公环境和托管IDC内网出口方向,两端设备都向云上L3节点宣告了本地路由,云上L3节点也能正常收到路由信息并加入自身的路由表,但是,云上L3节点并不会把这些路由信息再转发到远端的云下设备。折腾了近2个小时,过程中我甚至想到了古早概念-水平分割,但想到产品经理明确强调过:“专线接入点就是个渠道,当成链路看待就可以了”,加之方案设计时还额外增加了子接口的配置,结果还是在防环上踩了坑。最终又拉上云服务商的售后升级确认,才真正破案。万万妹想到哇,555555

4 解决方案

针对问题情况,揪着售后一起确认了各种细节后,敲定了解决方案————

  • 在云上再单独创建一个L3节点;
  • 这个新建的L3节点为办公环境和托管IDC分别连接一个专线接入点;
  • 托管IDC和办公环境的内网出口节点,各自再创建一个子接口,用于和新增的专线接入点对接,并与云上新建的L3节点建立EBGP邻居EBGP-6和EBGP-7;
  • 托管IDC和办公环境的内网出口节点,分别将本地的路由信息通过新建子接口发布给云上这个新的EBGP邻居;
  • 新增的EBGP-6和EBGP-7这两组邻居关系,可以为EBGP-5提供冗余路径和路由更新渠道,调整后的方案如下图所示:

图片图片

5 总结

整体看下来,问题其实很简单,认为有了子接口,又是不同as之间的EBGP邻居,不会受到as-path、水平分割这类防环逻辑的限制,但其实是思维定势的误区,造成了后面的周折和时间损耗。

诚然,BGPv4仍是当代互联网的基础,但云服务带来了新鲜内容,基于云的各种能力和产品,相较企业网和数通的传统技术概念有了明显变化,应该在掌握基础的前提下,明了新产品和新特性的更新迭代,真正理解这些不同之处的关联场景和针对的痛点,才能正确的发挥优势体现价值,给上层服务提供稳定和持久的支撑。

关于作者

宛景瑞,转转基础设施运维负责人。

责任编辑:武晓燕 来源: 转转技术
相关推荐

2022-12-05 09:31:21

云数据库FinOps

2020-02-26 09:00:30

程序员技能开发者

2018-12-26 15:24:57

IT专业人士混合云云计算

2021-10-11 07:01:33

混合云多云数据

2020-12-09 13:58:25

隐私安全网络安全信息安全

2011-06-21 09:44:28

混合交付云计算漏洞

2021-05-26 10:40:28

Vue3TypeScript前端

2013-06-21 09:31:01

混合云云爆发故障转移

2021-03-05 15:13:42

黑客SolarWinds吹哨人

2016-08-12 15:40:17

CCEKubernetes华为

2021-12-13 11:12:41

Spring事务失效

2022-02-14 16:53:57

Spring项目数据库

2013-02-25 14:31:10

2023-12-01 08:09:08

2024-10-17 08:39:32

2011-12-01 14:06:32

2018-01-12 06:50:17

云服务DevOps

2023-07-05 08:45:18

Spring事务失效场景

2022-05-26 08:23:05

MySQL索引数据库
点赞
收藏

51CTO技术栈公众号