采用下一代互联网协议:部署IPv6以进行UBER工程

0.
采用下一代互联网协议:部署IPv6以进行UBER工程

自2009年3月推出以来,优步致力于履行其使运输使运输为可靠的运输,而且每个人都适合每个人。在2017年,我们在路上很好。

在2014年初,Uber应用程序可用100个城市;到2016年初,这个号码已经增长到了400个城市在全球范围内,提供超越乘车共享的运输服务。大约在同一时间,就在2015年新年前夕,我们撞上了10亿骑马克;2016年6月之后,我们就撞上了20亿骑车。这些数字只会增加,因为我们继续扩大到更多城市,以获得可靠的运输方式照亮地球仪。然而,为了扩大优步的服务规模,我们需要确保我们的运营符合适当的互联网协议(IP)。

图1:优步覆盖范围跨越数百个城市和六大洲,如地图上的蓝点所示。

优步的当前基础设施建立在互联网协议版本4(IPv4)地址标准,由多个数据中心组成,位于几个网络中Point-of-Presences(流行音乐)和云。但是,优步快速超出IPv4;为了最佳支持我们的扩展,我们的基础架构需要通过采用下一个IP来跟上用户增长:互联网协议版本6(IPv6)

2016年,优步开始通过调整我们现有的基础架构来推出IPv6数据中心架构,以促进这种扩展。在本文中,我们讨论设计新网络以适应优步工程的增长的最佳实践,以及在我们的基础架构更新中学到的经验教训,以提供IPv6支持。

从IPv4跳转到IPv6

根据这一点互联网协会(ISOC),世界于2011年2月耗尽IPv4的43亿地址。IPv4地址总数超过40亿,远远低于世界上移动设备的总数。再加上物联网(IoT)的发展,我们很快就会发现自己非常缺乏IP地址。

到2011年,其中三个区域互联网注册机构(RIRS),包括亚太网络信息中心(APNIC)reéseauxjeonensens(成熟),和拉丁美洲和加勒比网络信息中心(曲线),已经耗尽了所有免费IPv4地址的分配。上2015年9月24日,这美国注册机构互联网号码(ARIN)也宣布他们也用完了可用的IPv4地址。

1996年首次定义,互联网协议版本6(IPv6)是Internet协议(IP)地址标准的最新版本,并包含在使用IPv4的许多挑战内容,包括更大的地址空间多播基地规格,和无状态地址自动配置(SLAAC)。IPv6可以容纳超过340个未达径的地址,足以处理世界当前的IP需求-而且肯定是优步。

图2:以上地图展示全球国家/地区的IPv6部署能力。(由APNIC提供)

一种地图由APNIC(上图)创建,在全球范围内显示IPv6能力,在许多国家的零范围内,比利时超过56%。测量关于2011年互联网协会采取的IPv6的全球使用表明,自2012年以来,世界各地的主要ISP运营商,特别是在美国,在其网络中部署IPv6取得了重大进展。在北美航空公司中,目前的IPv6部署范围从27.93%(COX Communications.84.36%(Verizon无线)。

这些测量数据表明,互联网上的IPv6流量正在稳步增长,但仍远低于IPv4流量。此外,截至2017年4月,谷歌报告显示,在谷歌用户中,IPv6连接的可用性是16%,而IPv4连接的可用性是84%;同样,网络信息公司alexa.据透露,截至2017年3月8日,其排名第一的1,000个网站的用户少于20%的用户可以访问IPv6连接。

测量IPv6采用,书面在2014年计算机械协会会议,预测“到2019年,分配的IPv6前缀的数量将是IPv4的约25- .50,而IPv6到IPv4流量比将在.03和5.0之间的某处。换句话说,IPv6似乎是一大部分的交通。“这些研究结果表明,在目前的增长率下,IPv6采用将太慢,以适应世界迅速增强的连接需求。

Uber的IPv6部署

目前,优步运营着数万台服务器,并在其网络上托管了超过800万个IPv4地址。

在2014年之前,优步的数据中心托管在管理的托管设施中。2014年,我们建立了我们的第一家北美数据中心,以满足我们的能力需求,并为用户提供更可靠的服务;2015年,优步扩展了北美数据中心足迹,在两个海岸上建造了更多;在2016年,优步建立了一些网络弹出窗口并扩展到云中。随着我们的用户基础整个2017年的增长,IPv6部署将为我们的扩展至关重要。

对于我们来说,三个关键因素使我们在我们的网络上部署IPv6将使我们以规模维持我们的架构的稳定性至关重要:

  • 慷慨的IP分配:我们网络的大小在过去几年中迅速增长,支持我们的数据中心中的数千个服务器机架。每个机架都被分配出A / 24 IPv4子网申请评论(RFC)1918 IP空间,每个机架包含256个IPv4地址。在大多数机架部署中,我们托管的服务器不超过48台。
  • 资源限制在我们增长的这个阶段,我们已经使用了超过50%的10.0.0.0/8 IPv4子网作为内部使用。如果我们不过渡到IPv6,很可能我们的RFC1918互联网工程专责小组(IETF)分配私有IP地址方法的备忘录)空间可以在可预见的未来耗尽。
  • 重叠的IP地址:传统上,优步的网络为其资源定义了自己的IP地址。当优步开始与其他公司合并时,一些IPv4地址重叠在两个不同组织的两个内部网络之间。

在进行广泛的研究,测量和其他分析之后,我们实现了我们的雷竞技是骗人的基础设施的三个主要领域,需要更新,以支持IPv6部署:

  • 网络体系结构
  • 软件支持
  • 供应商支持

首先,我们将讨论Uber的数据中心网络中每个区域的化妆,然后我们将如何解决我们为IPv6准备它们的方式。

网络架构

Uber的网络架构主要由三个部分组成:

硬件

优步的硬件是统一和一致的,允许模块化和可扩展的数据中心设计。每个设备通常使用相同的硬件模型应用,并且易于根据我们的需求来缩放或下降。我们的网络设备支持100G / 50G / 25G以太网,如将到服务器的下行链路。

自动化

对于Uber这样一个庞大的系统,自动化工具是构建、管理和运营我们网络的必要工具。我们的网络数据中心构建使用零接触供应工具实现自动化,日常网络管理借助内部自动化工具来管理我们的网络配置和IP管理,以及智能监控工具来在出现任何问题时提醒我们。

网络设计

我们的数据中心设计如下秘密地设计在IETF中定义RFC 7938,“使用BGP在大规模数据中心路由”,“这概述了如何使用边境网关协议(BGP)作为动态路由协议。基于我们的网络架构,我们的带宽是与快速收敛性和有限故障域的分支。供应商互操作性也通过我们用于构建我们的网络的功能集,如下所示:

图3:高级UBER网络拓扑由多个连接到边缘骨干网的集群组成。

在结束设计之上,我们将数据中心分段为模块化窗格和集群。每个POD由相同数量的服务器机架组成,每个群集由多个服务器吊舱组成。因此,网络被分成小,相同的单位,并遵循所有豆荚之间的均匀高性能连接。优步的数据中心由连接到我们的多个集群组成边缘骨干网络,然后连接到互联网。

为了最好地支持优步网络中的带宽消费者,主要包括内部的东西技术,比如Hadoop,我们的集群架构遵循了1:1的解阻塞网络模型,如下面的IPv4 fabric网络架构所示:

图4:IPv4架构遵循1:1解阻塞网络模型。

随着时间的推移,引入了一个织物平面概念,我们的网络设计以保持冗余,同时保持每个网络层的大量共享带宽。另一方面,1:1解锁超额订阅率意味着任何服务器主机都可以在与此IP结构网络中的另一个主机通信时将其上行链路带宽端到端保持一端结束。

要在此网络架构的顶部部署IPv6,我们将IPv6指定为每个服务器机架和群集;虽然服务器机架与A / 64 IPv6子网分配,但群集分配并使用子网/ n,n <64汇聚。这些子网从分配的A / 32全局唯一IPv6地址块分配区域互联网注册表(RIR),保留给内部网络使用。IPv6的分配和管理是使用前面提到的自动化过程来处理的。

由于我们的数据中心网络具有模块化配置,因此我们的CLOS设计仅使用一个自上而下的协议,外界网关协议(EBGP),与在从IPv4迁移到IPv6时,使用需要重新配置的协议,使我们的机架的本机IPv6分配能够快速而无痛。我们的数据中心集群的每个组件,例如机架子网,Pod子网,环回,带外子网和点对点子网,请遵循相同的IPv6分配过程。这些自动IPv6地址生成工具使用与我们的IPv4地址分配方案相似的逻辑。

最后,我们的骨干网络使用路由协议,如BGP和到底是什么——却可以轻松更新,以支持IPv6,而无需更大的操作中断。

软件支持

我们的网络支持软件的能力也需要更新IPv6部署,特别是因为它与促进我们服务的IPv6流量有关。实施对IPv6的软件支持是一项非常具有巨大协作的努力,跨越优步跨越多个团队,包括工程安全和站点可靠性工程。

一些工程师培训才能编写仅编写IPv4代码,因此它们的IPv6兼容性应用程序和工具也可以是IPv4的能力。IPv4和IPv6地址在地址的长度,前缀和所代表的方式中不同。从IPv4代码转移到支持IPv6的代码中,我们面临的常见应用问题的一些示例包括:

  • 前缀长度设置为普通IPv4前缀的代码,例如/24,将不再适合IPv6前缀长度。
  • Code that is written to split “a.b.c.d” into a tuple of (“a”,”b”,”c”,”d”) will fail to catch IPv6 addresses because they are separated by a colon (“:”) instead of a period (“.”).
  • 预计将拆分“主机:端口”的代码,例如,“A B C D:8080“进入(”a.b.c.d“,”80“)将失败”2002:a:b:c :: ff“:8080”传递给它。类似地,预期加入的代码(“a.b.c.d”,“80”)“a.b.c.d:8080”将以“2002:a:b:c :: ff:8080”格式创建无效的IPv6地址。
  • 代码正则表达式用于匹配IPv4地址的用于在接收IPv6地址时将产生无效结果。
  • 具有硬编码列尺寸的数据库将IPv4地址存储为“varchar(16)”由于“a.b.c.d \ 0”将无法存储IPv6地址。

超级的基础设施使用haproxy在区域间路由时。像haproxy.cfg yaml这样被广泛使用的配置(配置)文件存储了它们的IPv4地址和主机名。所有服务配置文件也将必须审查和范围,以更新包括IPv6地址,而我们启用IPv6跨所有主机。

我们现在不再硬编码IPv4地址,而是在代码中使用主机名DNS解决转型问题。我们正在培训我们的开发人员如何使用ipv6支持的工具,例如,getaddrinfo(3),以促进这种转变。

供应商支持

多年来一直积极参与支持IPv6的网络设备和服务器的主要硬件供应商,结果已经在其中实现了大量IPv6功能。然而,鉴于短时间IPv6一直在生产及其缺乏运营经验,仍然存在许多错误,而更多的组织开始部署IPv6在生产中。IPv6的质量保证(QA)需要赶上IPv4的QA控制。

随着越来越多的组织在云上部署他们的服务,供应商正在加速他们对IPv6的支持,包括亚马逊AWS.谷歌GCP.,和微软Azure.

IPv6在Uber的部署:2017年及以后

优步是目前实验室测试其IPv6部署,并通过设计文档的指导,包括IPv6寻址和功能RFC。在我们以满量程部署到生产中的IPv6之前,需要在分期环境中进行深入的负载测试,以发现任何可能的问题。

我们希望全面部署IPv6能带来一些直接的好处,包括但不限于:

  • 前端:我们的前端将能够服务本地IPv6流量。
  • 组织合并:我们将采用更可扩展的解决方案来处理使用IPv6的重叠IPv4地址。
  • 汽车卸载:目前,Uber的停车自动车辆的汽车对接站是一个/ 24个IPv4子网。此目前的设计是为了保留IPv4资源,同时保持配置一致为工程师。此外,IPv6可以为我们的汽车卸载网络架构提供更可扩展的解决方案。值得注意的是,当用户的IOS或Android软件能够支持它时,我们的IPv6解决方案仅适用于汽车卸载。

文字-动作:采用IPv6

企业中的IPv6部署需要很多规划 - 它永远不是“零或所有”实现。为了更广泛地支持连通性和技术创新的增长,我们鼓励开发人员编写在应用程序级别上支持IPv4和IPv6的代码。我们也希望您加入我们在自己的网络中倡导部署IPv6。

随着时间的推移,这个不断增长的早期采用者社区可以收集统计数据和指标,这将帮助我们在IPv4完全耗尽之前优化IPv6的设计和性能。我们可以一起努力建设一个更好的互联网。

如果这类工作兴趣您,请考虑申请职务在优步的核心基础设施团队。

Jean He是优步核心基础设施团队的网络工程师。

评论