前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nebula:Slack 的覆盖全球性的开源网络

Nebula:Slack 的覆盖全球性的开源网络

作者头像
LiveVideoStack
发布2019-12-03 15:17:01
1.4K0
发布2019-12-03 15:17:01
举报
文章被收录于专栏:音视频技术

Nebula是Slack开发的高安全性与性能的网络服务,这可以为Slack的用户提供可靠的安全隔离,谁也不希望和同事讨论的内容被他人窃取。感谢学而思网校架构师刘连响对本文所做的技术审校。

文 / Ryan Huber

译 / Adrian Ng

技术审校 / 刘连响

原文 https://slack.engineering/introducing-nebula-the-open-source-global-overlay-network-from-slack-884110a5579

如何安全的连接分布在全球多个地区的多个云服务商的成千上万台机器?我们的答案是-Nebula,你想知道为什么吗?

在Slack,我们几年前已在研究这问题。我们尝试了许多方法来解决这个问题,但每种方法都在性能、安全性、特性或易用性方面艰难的权衡。我们很乐意在以后的演讲和写作中分享整这些经历,但是之前我们并没想过着手编写软件来解决这个问题。Slack的营业范围是为了促进人类关系而不是计算机。

什么是Nebula?

Nebula 是一个专注于性能、简单性和安全,可扩展的网络覆盖工具。它可以让你无缝连接全世界每个角落、任何地方的计算机。Nebula是便携式的,也可以通过Linux、OSX和Windows系统上运行(另外:我们有个早期的prototype也可以在iOS上运行了)。

我们需要注意的是Nebula包含了一些现有的概念,例如encryption、securitygroups、certificates及tunneling,之前这些单件都来自于各自的形式。Nebula的不同点是把它们都结合在一起,产生更理想的效果。

如今Nebula在Slack的每一台服务器上运行,全面地提供一个全球覆盖网络。这也许是你第一次听说Nebula,但是实际上在Slack已被应用上两年了。

Nebula从何而来

好几年前,Slack 使用 IPSec 提供区域间的加密连接。此方法起先的运行能力不错,但是随着更高的需求,在大规模网络管理方面捉襟见肘。它也带来一个性能影响,因为每一个发往另一个区域的packet都必须先通过IPSectunnel主机路由,在网络路由中添加了跃点(hop)。我们尝试了一些代替IPSec的解决方案,但是没有一个能满足我们的需求。

随着我们的软件堆栈和服务的复杂性越来越高,网络分割也变得越来越困难。其中我们的核心问题还是在于跨越各种网络边界时的分割。大多数云上服务商提供某种用户定义的网络主机分组,通常称为“securitygroups”,它允许你根据组成员身份筛选网络流量,而不是单独的IP地址或范围。很可惜的是许多securitygroups已被分离到宿主提供者的每个单独区域。此外,不同宿主提供程序之间没有可互操作的安全组版本。这表示当你扩展到多个区域或提供程序时,你唯一的选择还是按IP地址或IP网络范围进行网络分段,管理起来就变得更复杂了。

我们考虑到加密、分段和操作需求,我们决定创建自己的解决方案。

我们的目标

  1. 主机之间加密连接 – 这有可能是比较无趣但也是最重要的目标。它对本地和互联网上流量进行加密,是非常重要的。
  2. 对服务提供者是透明的 - 我们希望这个解决方案适用于任何计算机,无论是基于云的主机、数据中心中的服务器、单个笔记本电脑,还是位于地下室壁橱中的一组计算机。
  3. 允许高级流量过滤 – 该解决方案应使网络上的各个节点能够给予连接主机的标识(不仅仅是IP地址)允许或拒绝通信。特别是在处理短暂主机的时候,你不需考虑盒里应有的IP。
  4. 提供强身份认证 – 主机应该通过证书颁发机构颁发的certificate来标识自己,并且连接到对等方时会对用户定义的属性(数据中心、角色、环境等)进行编码。
  5. 性能要好 - 不会有性能损失,从而大大增加主机之间的延迟或减少可用带宽。
  6. 可测试性 – 首先系统应该先允许单独测试,这是现代团队发布软件的方式。当前大多数的网络管理都要求整个主机集进行全部或全部更改,这使得更改筛选规则变得越来越可怕。如果通过条例评估下推到各个主机,你就可以测试对筛选条例的更改,就像在将新软件版本分发到100%的主机之前测试的更改一样。
  7. 给每个人一匹小马 - 开个玩笑吧,我们的要求太多了,所以我想我们可以把以上合称为一个伸展性的目标。

软件编写

从一开始,我们就研究现代最好的加密策略。研究之中,我们发现了Trevor Perrin 所创建的Noise Protocol Framework,他也是Signal Protocol的合著者,这也是Signal Messenger的基础。在早期的规划,我们决定把Noise成为密钥交换和对称加密的基础。需要一提,我们并没有自己的crypto 密码。

当我们研究软件定义网络(SDN)和mesh网络软件时,Tinc出现了。在难以到达的节点之间,Tinc用来建立隧道的一些策略对于Nebula的设计有很大帮助。

和别人共享Nebula

在本版本发布之前,我们已经与一群工程师共享了Nebula,并收到了系统的积极反馈。Nebula对于连接数千台计算机的亮点极大,但对于连接两台或三台计算机的效果也一样很出色。

Nebula进行了系统上付费安全评估,同时进行了多次内部安全审查。我们正在将Nebula添加到我们的官方bug悬赏计划中,同时欢迎软件中遭遇的bug相关的回馈信息。

LiveVideoStack 秋季招聘

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒体技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。同时,也欢迎你利用业余时间、远程参与内容生产。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档