2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:131017

评论

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

OPPO应用分发的燎原之火,照亮开发者的增长之路

脑极体

AI 应用

构建工作流自动化的 5 个最佳工具

NocoBase

自动化 工作流 业务流程自动化 流程自动化 开发流程自动化工具

京东APP百亿级商品与车关系数据检索实践

京东科技开发者

区块链开发入门: 原理、技术与实践

区块链软件开发推广运营

交易所开发 区块链开发 链游开发 dapp开发链游开发 链游开发代币开发

我的豆包MarsCode 体验官之旅

TRAE.ai

AI 人工智能、

创新数据新要素发展新质生产力!天翼云助力数字经济高质量发展

天翼云开发者社区

云计算 天翼云

过关斩将!天翼云红盾安全团队荣获双项大奖!

天翼云开发者社区

云计算 互联网大会 天翼云

公链数字钱包开发:加密钱包App原生开发指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

内容出海新浪潮:AI工具迅猛发展,剑指视频翻译

阿里云CloudImagine

云计算 音视频 视频云 AI视频翻译 短剧出海

Cloudera Impala与Hive:架构对比及协同工作机制

敏捷调度TASKCTL

hadoop cloudera 大数据平台 impala 大数据运维

GreptimeDB vs. InfluxDB 性能测试报告

Greptime 格睿科技

时序数据库 查询 写入

深圳计算科学研究院YashanDB数据库系统斩获“鼎新杯”二等奖

极客天地

TDengine 与北微传感达成合作,解决传统数据库性能瓶颈

TDengine

数据库 tdengine 时序数据库

简单三步完成 Telegram 生态的 Web3 冷启动

Footprint Analytics

Telegram Web 3.0

TapData 知识库 | 一文吃透数据整合(Data Consolidation)

tapdata

数据库 什么是ETL

万界星空科技专门针对数字化改造申报的MES

万界星空科技

可视化 数字化 智能制造 mes 万界星空科技mes

高效项目管理:利用低代码平台简化项目实施流程的策略与实践

天津汇柏科技有限公司

项目管理 低代码平台

【论文速读】| 针对大语言模型的有效且具有规避性的模糊测试驱动越狱攻击

云起无垠

精准监控,高效分析 —— 淘宝API助力商家实现商品信息精细化管理

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

日志审计是什么?为什么企业需要日志审计?

ServiceDesk_Plus

日志审计 合规性管理 审计日志

解析阿里巴巴商品详情API返回的JSON数据结构

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

解锁电商决策新视角:淘宝天猫商品评论数据API接口的深度探索

代码忍者

pinduoduo API API 性能测试

关于并发编程与线程安全的思考与实践

京东科技开发者

ChatGPT背后的AI背景、技术门道和商业应用(万字长文,建议收藏)

京东科技开发者

洋葱学园联合火山引擎打造AI智能学伴,聚焦精准学、陪伴学

新消费日报

gpt-4o-audio-preview 发布,支持 STT/TTS 不含实时音频;Ministral 3B/8B 端侧模型发布

RTE开发者社区

【CEO访谈】从愿景到领导力:7thonline 的崛起之路

第七在线

时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard

TDengine

时序数据库 #TDengine 数据库、

火盾云APP盾的 防御机制及其应用场景

HUODUNYUN

节点 DDoS 应用安全防护 APP盾 游戏盾

Java常用类——包装类 小白版个人推荐

不在线第一只蜗牛

Java

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