9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

  • 2019-11-07
  • 本文字数:2714 字

    阅读完需:约 9 分钟

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

4 各场景下探测报文的生命周期

BB 被设计为支持多种网络场景,能应对物理云和跨域互通的网络复杂性。这章节我们以探测物理云和跨域为例,详细分析下 BB 探测报文的生命周期。


  • 物理云


公有云互通物理云场景下,探测报文生命周期如下:


公有云—> 物理云



1)BigBrother 向公有云宿主机发送探测报文


2)ovs 收到报文后镜像至 BigBrother


3)ovs 将报文送至实例


4)实例回应报文


5)ovs 将回应报文镜像至 BigBrother


6)物理云核心交换机收到报文,并发送给汇聚交换机


7)8)9)10)物理云汇聚交换机发送报文给 vpcgw,vpcgw 处理报文后回送至汇聚交换机


11)在物理云汇聚交换机配置 ERSPAN,将报文镜像至 BigBrother。


物理云—> 公有云



1)BigBrother 向 vpcgw 发送探测报文


2)3)vpcgw 处理报文后回送至汇聚交换机


4)在物理云汇聚交换机配置 ERSPAN,将报文镜像至 BigBrother


5)汇聚交换机将报文送至 phost 的上联 Tor


6)Tor 将报文送至 phost


7)phost 回应报文


8)在 phost 的上联 Tor 配置 ERSPAN,将报文镜像至 BigBrother


9)报文送至公有云宿主机 ovs


10)ovs 收到报文后镜像至 BigBrother


  • 跨域网关


公有云跨域互通场景下,探测报文生命周期如下:


本地域—> 地域 B



1)BigBrother 向本域主机发送探测报文


2)ovs 收到报文后镜像至 BigBrother


3)ovs 将报文送至实例


4)实例回应报文


5)ovs 将回应报文镜像至 BigBrother


6)ovs 将报文送至 sdngw


7)sdngw 将报文镜像至 BigBrother


地域 B—> 本地域



1)BigBrother 向本域 sdngw 发送探测报文


2)sdngw 收到报文后镜像至 BigBrother


3)sdngw 将报文送至对端 sdngw 进行转发


4)本域 sdngw 收到对端回应报文


5)sdngw 将回应报文镜像至 BigBrother


6)sdngw 将报文送至本地域宿主机


7)ovs 将报文镜像至 BigBrother

三、Bigbrother 服务框架

整个 BB 检测系统由若干个组件配合完成,minitrue 用于将用户传入的参数转化为注包的范围,telescreen 用于构造报文及收发报文。


1 服务框架图

API: FE 服务对外提供的 HTTP 接口,用于创建任务和查询任务进度;


Logic:业务处理层,⽤于分析⼊参并将其转换为若干源⽬主机对放入 Disruptor 中;


Disruptor:此组件为开源高性能队列;


Sender:将 Disruptor 中 pop 的数据组装成 GRE packet,并发送给 EntryPoint;


Receiver:接收从 EndPoint 上报的 GRE packet;


Analysis:将接收的报⽂存入内存中,同时对报文进⾏分析。

2 Task 的执行及结果分析

1)task


上文中我们详细介绍了 BB 探测报文的设计和生命周期,但是我们还有一个问题需要解决:提高 BB 的并发能力。按照上文的介绍,每次 BB 只能执行一次探测,顺序执行才能保证检测结果的准确性,所以我们设计利用 TCP 报头中的序列号来提高并发。


以下是一个 TCP 报文的首部结构:



其中 32 位的 Seq 序列号就是我们要利用的,在 BB 探测过程中每个 Seq 序列号都唯⼀标识⼀个 pair 对,然后我们将 Seq 序列号分成了两部分:



  • Task_id:⽤于标识一个 Task,由于仅有 5 位,所以每次同时进⾏的 Task 不能超过 32 个 ;

  • Pair_id:用于标识在一个 Task 内,待检测的一个 pair 对。


因此,我们可以将 BB 并发的任务数提高到了 32 个,而每个任务支持最大的检测 pair 对数可以达到 2 的 27 次方,相当于每个任务都可以支持一个容量为 10000 台云主机的 VPC 进行 Full Mesh 检测,足以覆盖现有用户的网络规模。


2)task 的执行


当运维同学在 mafia(任务控制台)上点击创建一个 BB task 进行连通性检查时,会经历以下几个过程:



  • 请求发送给 minitrue 服务,根据输入的参数来确定探测范围;

  • minitrue 将计算得到的探测范围以源、目节点列表的形式发送给 telescreen 服务;

  • telescreen 构建 Gre 报文,并放入高性能队列中进行发包;同时,telescreen 会监听网卡获取镜像报文回来的报文并存入内存;

  • minitrue 的分析程序定时获取 telescreen 的收包结果并进行分析;

  • 最后运维同学可以在 mafia 上看到最终的探测结果。



3)task 的结果分析


task 执行结束后,运维同学可以在 mafia 查看到最后的检测报告,包括发送的总 pair 数、收到的 pair 数、成功以及失败的数量。同时,检测失败的源目详细信息也会展示出来,最终以 bitmap 的方式呈现出来,0 表示没有收到报文,1 表示收到报文。


我们以下图的结果为例,解释其含义。图中是检测 ip pair(10.9.88.160<—>10.8.17.169)的双向连通性。



我们再回顾下第二章中 BigBrother 检测的流程图,首先 BigBrother 会模拟 10.9.88.160 向 10.8.17.169 的宿主机上发送探测报文,报文的内容为< flag=SYN, nw_src=10.9.88.160, nw_dst=10.8.17.169>。如果 10.8.17.169 —>10.9.88.160 单向连通性正常的话,BigBrother 最终会收到 3 个报文:


(1)< flag=SYN, nw_src=10.9.88.160,


nw_dst=10.8.17.169>


(2)< flag=ACK, nw_src=10.8.17.169,


nw_dst=10.9.88.160>


(3)< flag=ACK, nw_src=10.8.17.169,


nw_dst= 10.9.88.160>



上图 bitmap 后三位的结果为 111,表示这 3 个报文都收到了,即 10.8.17.169 —>10.9.88.160 单向的连通性正常。


反之亦然,前三位则表示 10.9.88.160 —> 10.8.17.169 单向的连通性情况,结果为 100,(2)(3)报文没有收到,即表示 10.9.88.160 —> 10.8.17.169 单向的连通性异常,虚机 10.9.88.160 没有回复报文,可以断定虚机内部异常或虚机内部存在 iptables 规则将探测报文过滤。

3 基于活跃 flow 的连通性检查

上文我们提到,运维同学可以在 mafia 上创建 BB task 来进行连通性的检查,通过传入 mac、子网 id、VPC id 来确定检测的范围,进而进行全量验证。但是大多数场景中,我们不需要进行全互联检查,这样不仅浪费时间而且还会对控制面造成一定的压力。我们仅需要针对指定范围内的活跃 flow 验证连通性即可,所以我们又引入了活跃 flow 检测的服务——river。river 是虚拟网络亿级别活跃流的分析系统,借助这个系统 BB 可以拿到用户的活跃通信源目,类似于缓存里的热点数据,这样可以让 BB 快速精准验证变更。



与上文全量 BB 探测的区别在于,minitrue 无须自己计算源、目节点列表,只需指定范围后向 river 获取活跃列表,然后通过常规的检测流程将列表传送给 telescreen 进行发包即可。

四、投入使用和未来计划

BigBrother 上线后就参与到了资源整合项目中,用于云主机迁移前后的连通性验证,保证出现异常后可以及时告警回滚。从 8 月初至今历时两个月,共迁移 2000 多台主机,及时发现迁移异常近 10 起。


  • 同时,我们对 BigBrother 后续版本也有着一定的规划,例如:

  • 除了对连通性的检测外,还需要有平均时延,最大时延对、丢包率的检测;

  • 打算基于 BigBrother 构建针对指定用户的内网全天候监控。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/M46d-Vync6M272dsGEg_tQ


2019-11-07 23:13973

评论

发布
暂无评论
发现更多内容

华为云CDN使能千行百业,业务价值不断凸显!

科技之光

全球累计用户达300万+,华为云桌面综合体验优秀!

科技之光

深度解决企业传统办公痛点,华为云桌面使能云上办公!

科技之光

十年磨一剑,华为云数据灾备解决方案为你解决后顾之忧

科技之光

你的下一个电脑桌面,为何是云桌面?

科技之光

JavaScript知识点总结

木偶

前端 js 10月月更

技术强、资源多,华为云等保合规解决方案助力企业快速过等保!

科技之光

何为云管平台?有什么作用?哪家好?

行云管家

云计算 云主机 云管理 云成本

华为云灾备解决方案,助力企业高效构建安全合规云灾备系统

科技之光

及时恢复,华为云灾备数据解决方案让你无忧办公

科技之光

可适配多企业需求,华为云等保合规安全解决方案选择灵活!

科技之光

云堡垒机相关概念汇总说明-行云管家

行云管家

云计算 网络安全 数据安全 堡垒机

华为云,高品质保障企业的等保安全

科技之光

华为云灾备服务,如何守护云上数据

科技之光

打造全栈安全防护体系,华为云等保合规解决方案帮企业30天过等保

科技之光

Docker | 容器数据卷详解

甜点cc

Docker 前端 10月月更

Wallys/IPQ4018/IPQ4028 2x2 2.4Ghz 2x2 5Ghz Industrial-grade //wifi5 Support 11ABGN/AC

wallys-wifi6

IPQ4018 IPQ4028

Docker | 部署nginx服务

甜点cc

nginx Docker 10月月更

华为云,中小型企业的等保安全专家

科技之光

华为云,助力企业快速省心过等保

科技之光

企业信息安全受威胁?且看华为云灾备如何破解

科技之光

2022年10月《中国数据库行业分析报告》重磅发布!精彩抢先看

墨天轮

数据库 oceanbase Milvus 向量计算 向量数据库

80Gbps 双向带宽,120Gbps 疾速传输,英特尔携新一代 Thunderbolt 引领行业快步向前

科技之家

2022 云栖大会 | 一体化大数据智能峰会预约开启

阿里云大数据AI技术

大数据 阿里云 开源

如何通过C#/VB.NET重命名Excel表格并设置选项卡颜色

在下毛毛雨

C# .net Excel 重命名工作表

git-secret:在 Git 存储库中加密和存储密钥(下)

SEAL安全

git 加密 makefile 密钥管理 10月月更

万物皆可DAO?一文带你全方位解读DAO类型

One Block Community

区块链 开发者 治理 DAO web3、

2022 云栖大会 | 开源人说预约:听百味技术人生,品激荡开源江湖

阿里云大数据AI技术

阿里云 开源

8K AV1视频解码大战:Intel神奇、NVIDIA差点、AMD无语

科技之家

BigBrother:UCloud全链路大规模网络连通性检测系统详解(下)_文化 & 方法_徐欢_InfoQ精选文章