BigBrother:UCloud 全链路大规模网络连通性检测系统详解

虚拟网络排查问题困难,传统的 traceroute 等工具很难起到太大作用,大部分情况下都需要到宿主机、混合云网关上抓包来 troubleshooting,耗时又费力。有些场景中包的传送路径比较长(如跨域、混合云等),可能丢包的地方比较多,更增加了故障排查的难度。

为此,我们设计了一款支持全链路大规模的网络连通性内部检测系统 BigBrother。基于 TCP 报文的染色可将检测报文和用户流量区分开,能支持物理云和跨地域的复杂场景,还打造了完整的检测框架,帮助运维同事直接定位故障点,或一键判断虚拟网络是否存在问题。

BigBrother 上线后即用于云主机迁移前后的连通性验证,保证出现异常后可以及时告警回滚。从 8 月初至今历时两个月,共迁移 2000 多台主机,及时发现迁移异常近 10 起。

BigBrother:UCloud全链路大规模网络连通性检测系统详解

一、第一代网络连通性工具的不足

在设计 BigBrother 这前,我们也有第一代的网络连通性检查工具,原理就是通过 SSH 跳转到目标宿主机上,利用 ovs 的 packet out 命令将构造的报文发出去,最后在对端的宿主机上 tcpdump 该报文,从而验证两端的连通性。但是从它的原理就不难看出,这种检测方式有着很大的缺点:

  • 检测效率低下,无论是 ssh、packet out,还是 tcpdump 都无法支持大规模的快速检查;
  • 适应的场景有限,对于部分 dpdk、p4 网关类产品,无法通过 tcpdump 进行抓包判断。

因此做一款支持全链路大规模的连通性检测系统是非常有必要的,我们的目标就是让运维、NOC 的同学能够迅速发现并解决网络不通的问题,同时为我们的虚拟网络服务变更保驾护航。

二、BigBrother 的实现原理

BigBrother(下文简称 BB)一词源自乔治奥威尔的小说《1984》,将此检测系统命名为 BigBrother 寓意就是可以将全网资源连通情况都实时监控起来。整个 BB 检测系统由若干个组件配合完成,mafia 提供 console 进行创建及展示 task 的结果,minitrue 用于将用户传入的参数转化为注包的范围,telescreen 用于构造报文及收发报文。

1、Entrypoint 和 Endpoint

在具体介绍 BB 的原理前,我们先来看两个概念。在我们的虚拟网络中,每个实例(uhost、umem、udb 等)都是通过接入点来接入虚拟网络,接入点由两部分组成:

  • Entrypoint: inbound/outbound 报文都是经由 Entrypoint 进行接受和发送的。
  • Endpoint:连接实例的端点,Endpoint 为最接近实例的网元。

例如在公有云场景中,entrypoint 和 endpoint 都是 openvswitch,而在物理云场景中,entrypoint 是我们的物理云转发网关(vpcgw、hybridgw),endpoint 则是物理云主机的上联 ToR。

BigBrother:UCloud全链路大规模网络连通性检测系统详解

以上就是各种场景中的接入点说明,之所以要明确这两个概念,是因为在 BB 系统中,我们将 Entrypoint 作为注包点,向其发送 GRE 探测报文,同时将 Endpoint 作为采样点,Endpoint 会识别并镜像特殊的探测报文至 BB。

2 、检测流程

检测方案如图所示,可分为两部分组成,在图中的流向分为橙色和紫色。

BigBrother:UCloud全链路大规模网络连通性检测系统详解

以橙色流向部分为例(SRC->DST):1)BigBrother 模拟 DST 向 Endpoint 发送探测报文;2)SRC 端 Entrypoint 收到该探测报文后转发给 Endpoint;3)Endpoint 将该报文镜像至 BigBrother;4)Endpoint 将报文正常转发至实例;5)实例回复报文给 Endpoint;6)Endpoint 收到该回复报文后进行 GRE 封装,然后镜像至 BigBrother;7)Endpoint 将报文正常转发至 Entrypoint;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值