写点什么

微软将开源其对抗云网络中断的秘密武器

  • 2018-08-28
  • 本文字数:1605 字

    阅读完需:约 5 分钟

完全复制或模拟云网络是不可能的,因为很明显——云网络的规模太大了。但是微软攻克了这个难题。

8 月初,微软的研究人员在微软研究院 Faculty Smmit 上接受采访时称,他们设计了一款开放网络模拟器(Open Network Emulator,简称 ONE),可以通过模拟整个 Azure 网络基础架构,来查找最终导致网络中断的错误,故障和其他恶意软件。并且!微软打算开源这项技术

近一年来,微软一直利用 ONE 模拟器测试将要被部署到生产中的更改。研究人员说,微软的网络工程师在使用过程中,从这些更改中找到了数百个 bug,防止了可能出现的重大中断错误。

计算机网络是复杂的玩意儿,因为这样的复杂性也变得很脆弱:网络规模越大,单个错误造成的损害就越大。

回想一下之前各大公有云服务的故障,给用户带来的影响,这样的一款模拟器如果能稳定投入使用,应该能防止不少问题的发生。

ONE 能在软件中模拟所有组成网络的硬件和软件设备,以及它们相互连接的方式。它在 Docker 容器和虚拟机中运行,其构建目的是为了防止变更引起的网络崩溃,在网络变更投入生产之前对它们进行测试和检查。其工作原理是对整个网络进有效的复制。当网络工程师和运营商进行更改时,它们实际上只是对模拟器进行更改,而不是对底层网络进行更改。

“因为它对底层网络的模仿程度如此惊人,以至于你无法区分,”微软研究院移动性和网络总监 Victor Bahl 解释说。如今,当 Azure 网络工程师进行更改时,这些更改首先被应用于 ONE 模拟系统,但是实际上,他们也不知道自己是否对网络做了更改。因为实际上被改变的是模拟器。ONE 能惟妙惟肖地模拟底层的网络,让人无法区分它们。

“我们认为,这个对每个人都那么重要的资源,如果只是为我们所用,那不是一件正确的事。因此,我们想让整个社区都能使用它。”Bahl 在 8 月初的采访中这样说道。

Bahl 解释说,让公众得以接触该技术不仅有助于大型企业提高网络正常运行时间,而且也给学生和研究人员提供了一种工具,他们可以用ONE来模拟超大规模网络,比如微软、谷歌和亚马逊已经建立的网络,并在不访问实际网络的情况下进行创新

同时,这也将给网络产品供应商们提供一种大规模测试新的控制平面软件的方法。

微软还未透露何时开源 ONE。在 GitHub 上搜索 ONE 还没有任何结果。

去年,在 ONE 投入使用 6 个月之后,微软首次对外披露了这个系统 ( https://www.microsoft.com/en-us/research/event/faculty-summit-2018/ )。在当时,它被称为“CrystalNet”,寓意是可以显示网络未来的水晶球。

微软的研究人员当时就已经暗示在考虑向公众发布这项技术。他们于今年 6 月的 Sigcomm 大会上确认以 ONE 的名字将该系统进行开源。

微软的研究人员在提交给 Sigcomm 的 ONE 的描述中提到:“我们的网络是庞大的、异构的、复杂的,并且一直在变动。在这样的环境中,那些由设备故障触发的小问题、错误的设备软件、配置错误、未经证实的管理工具和无法避免的人为错误都会很快引发大型中断。因此,在生产环境中部署更改之前对每个更改的影响能力进行验证,这对维护和提高我们网络的可靠性是至关重要的。”

根据 Sigcomm 的论文所述,到目前为止,Azure 网络工程师已经使用 ONE 超过了一年的时间。他们已经“在 ONE 模拟器上花了数百万小时,并且在变更中找到了数百个错误,防止了可能出现的重大中断。”

2018 年微软 Azure 云计算服务的收入强势增长了 89%,在 Gartner 2018 年的云基础设施魔力象限中占据领导者地位,紧跟 AWS 排第二,并且与 AWS 的差距在缩小。

随着各家公司对云服务的依赖日益增加,确保这些云服务不宕机比以往更重要。但是,无论系统设计地多好,运行它们的工程师有多聪明机警,人类总是偶尔会犯错。而在超大规模网络更改的过程中出现的细微错误会导致大型中断。在超大规模网络中,像这样的中断会影响数百万人,Bahl 说:“我可不希望成为这种灾难的源头。”

如果在模拟系统中,更改没有造成任何错误,就会自动传播到生产网络。

感谢张婵对本文的策划及审校。

2018-08-28 12:322242
用户头像

发布了 199 篇内容, 共 88.7 次阅读, 收获喜欢 295 次。

关注

评论

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

为什么 Python 的 f-string 可以连接字符串与数字?

Python猫

Python 开源 编程语言 后端 C语言

熟练HTML5+CSS3,每天复习一遍

我是哪吒

面试 大前端 28天写作 2月春节不断更

安卓软件开发!Android线程池基础入门和简单实践以及使用技巧,面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

Elasticsearch filter vs. query 对比

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

我要看 SICP 了!

十元

LeetCode题解:53. 最大子序和,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

诊所数字化:搭建网络路径的信息铺设策略

boshi

数字化转型 医疗 七日更 28天写作

SICP 习题答案1.1 - 1.5

十元

程序员如何技术划水,Android项目开发如何设计整体架构?Android岗

欢喜学安卓

android 程序员 面试 移动开发

在gradle中构建java项目

程序那些事

Java maven Gradle 程序那些事 构建工具

读书总结2020

IT民工大叔

#读书

大厂面试:求解集装箱港口翻箱问题的最短路径

华为云开发者联盟

算法 路径 模型

Kafka.02 - Topic 介绍

insight

kafka 2月春节不断更

著名的Java并发编程大师都这么说了,你还不知道伪共享么!

看点代码再上班

Java 后端

重大更新!一文了解京东通用目标重识别开源库FastReID V1.0

京东科技开发者

AI 监控

都在说云原生,它的技术图谱你真的了解吗?

云原生

《TestNG》源码学习笔记

吴大山

go get下载包失败问题

happlyfox

Proxy 28天写作 Go 语言

Golang代码测试:一点到面用测试驱动开发

华为云开发者联盟

测试 TDD 代码 Go 语言

AI窥人(三):你想靠AI实现永生吗?

脑极体

工作日志2-19

技术骨干

构建万物可信互联的基石,带你深度剖析区块链跨链的关键技术,满满是干货!

华为云开发者联盟

区块链 智能合约 云原生 跨链技术 分布式账本技术

week12 作业

zbest

日记 2021年2月20日(周六)

Changing Lin

2月春节不断更

数据库的两个好帮手:pagehack和pg_xlogdump

华为云开发者联盟

数据库 故障 GaussDB pagehack pg_xlogdump

【STM32】CubeMX+HAL 点亮 LED

AXYZdong

硬件 stm32 2月春节不断更

Linux 多线程详解 —— 什么是线程

赖猫

Linux 线程 Linux内核

ZEGO全新语音聊天解决方案,4步搭建爆火的语音聊天室

ZEGO即构

Spring Boot(一):入门篇

海鸥云

spring Boot Starter

产品经理问我:手动创建线程不香吗,为什么非要用线程池呢?

Java鱼仔

Java 线程池

可能是Java 8 Optional最佳实践

ES_her0

28天写作

微软将开源其对抗云网络中断的秘密武器_微软_Yevgeniy Sverdlik_InfoQ精选文章