Lessons from the Internet¶
Despite the fact that cloud computing and the Internet differ along many dimensions, we think the Internet provides a useful set of historical lessons. In the early 1960s several groups were developing packet switching technology. These early networks worked well, but were incompatible with each other. The community faced a choice: should it standardize on a single networking technology, or could it find a way to accommodate diversity? In 1972 Robert Kahn proposed openarchitecture networking [32], which advocated a universal interoperability layer that could allow any two networks to interconnect. This became the Internetworking Protocol (IP). IP and the protocols above it were all that was needed in the ARPAnet, which was a single coherent network. However, as the ARPAnet grew into the Internet, and the Internet grew to include separate Autonomous Systems (ASes, which are independently run networks), the Internet needed some way for packets in one network to reach another. This was not about low-level compatibility in network technologies, this was a question of routing: how can the network successfully direct packets over a set of independently run networks.
尽管云计算和互联网在许多方面存在差异,我们认为互联网提供了一套有用的历史教训。早在1960年代初期,多个团队正在开发分组交换技术。这些早期的网络运行良好,但它们彼此不兼容。社区面临一个选择:是应该标准化一种网络技术,还是找到一种方式来适应多样性?1972年,罗伯特·卡恩提出了开放架构网络的概念【32】,该概念倡导一个通用的互操作层,允许任何两个网络互联。这成为了互联网协议(IP)。在ARPAnet中,IP和其之上的协议是所有需要的,因为ARPAnet是一个单一的、连贯的网络。然而,当ARPAnet发展成为互联网,互联网又进一步扩展为包括独立运行的自治系统(AS,即独立运行的网络)时,互联网需要一种方式让一个网络中的数据包能够到达另一个网络。这不仅仅是网络技术层面的低级别兼容性问题,而是关于路由的问题:如何让网络成功地通过一组独立运行的网络传送数据包。
The Border Gateway Protocol (BGP) was invented to solve this problem, and is now the “glue” that makes the set of independently run networks appear as a coherent whole to users. This was a technical solution, but an economic problem remained: when networks interconnect, does money change hands, and if so, who pays whom? A set of business practices have emerged for these “peering” or interconnection agreements. For instance, customers pay providers, but two networks of similar size and capability might do paymentfree peering. These peering arrangements are technically straightforward, but bring up thorny policy questions such as: can provider A charge Internet service B for carrying B’s traffic, even if B is not directly connected to A. Thus, issues of unfair competition arise in these agreements (and are related to questions of network neutrality).
边界网关协议(BGP)就是为了解决这个问题而发明的,现在它是将一组独立运行的网络在用户面前呈现为一个连贯整体的“粘合剂”。这解决了技术问题,但经济问题仍然存在:当网络互联时,是否涉及资金往来?如果是,谁向谁付款?在这些“对等”或互联协议中,逐渐形成了一套商业惯例。例如,客户向提供商付款,但两个规模和能力相似的网络可能进行无偿的对等互联。这些对等互联的技术实现相对简单,但也带来了棘手的政策问题,比如:提供商A是否可以向互联网服务商B收取传输B流量的费用,即使B并未直接连接到A。因此,这些协议中出现了不公平竞争的问题(并且与网络中立性问题相关)。
Thus, there were three key design decisions that allowed the Internet to provide a uniform interface to a huge infrastructure made out of heterogeneous technologies (from Ethernet to ATM to wireless) and competing companies. The first is a “compatibility” layer that masks technological heterogeneity. The second is interdomain routing that glues the Internet together, making it appear as one network to end users. The third is a set of economic agreements, forming what we will call a “peering” layer, that allow competing networks to collaborate in creating a uniform network.
因此,有三个关键的设计决策使互联网能够为由多种异构技术(从以太网到ATM到无线网络)和竞争公司构建的庞大基础设施提供统一的接口。第一个是“兼容性”层,它屏蔽了技术异质性。第二个是域间路由,它将互联网粘合在一起,使其在终端用户看来像是一个统一的网络。第三个是经济协议,形成了我们称之为“对等层”的结构,允许竞争网络协作,共同创建一个统一的网络。
What lessons does this teach us about the cloud? To fulfil the vision of utility computing, applications should be able to run on any cloud provider (i.e., write-once, run-anywhere). Moreover, users should not have to manage the deployments on individual clouds, or face significant impediments moving from one cloud to another. In short, it should be as easy for a developer to build a multi-cloud application, as it is to build an application running on a single cloud. We call this Sky computing. We use this term because utility computing implies that the infrastructure is a public utility, whereas Sky computing refers to building the illusion of utility computing on an infrastructure consisting of multiple and heterogeneous competing commercial cloud providers.
这给我们在云计算方面带来了哪些启示呢?为了实现实用计算的愿景,应用程序应该能够在任何云提供商上运行(即“一次编写,处处运行”)。此外,用户不应该需要管理各个云上的部署,或者在从一个云迁移到另一个云时遇到重大障碍。简而言之,开发者构建一个多云应用程序的难度应该与构建一个在单个云上运行的应用程序一样简单。我们称之为“天空计算”(Sky Computing)。我们使用这个术语,因为实用计算意味着基础设施是公共的,而天空计算则指的是在由多个异构、相互竞争的商业云提供商组成的基础设施上,构建出实用计算的幻象。
We contend that the three design issues the Internet had to address are exactly the pieces needed to create Sky computing out of our current set of clouds. We need a compatibility layer to mask low-level technical differences, an intercloud layer to route jobs to the right cloud, and a peering layer that allows clouds to have agreements with each other about how to exchange services. In the next three sections we describe these layers in more detail. We then conclude by speculating about the future.
我们主张,互联网必须解决的三大设计问题,正是从现有云体系中创建“天空计算”所需的关键部分。我们需要一个兼容层来屏蔽底层技术差异,一个跨云层(intercloud layer)来将任务路由到合适的云,以及一个对等层,使云服务之间能够就如何交换服务达成协议。在接下来的三部分中,我们将更详细地描述这些层。然后,我们将对未来进行一些推测。
Table 1 illustrates the similarity between the proposed Sky architecture and the Internet: routers are similar to servers, ASes are similar to availability zones, and ISPs are similar to cloud providers. Like in the Internet where IP is oblivious to routing packets between routers in the same ISP or across ISPs, an application built on the intercloud layer should be oblivious of the cloud it is running on.
表1展示了所提议的天空架构与互联网之间的相似性:路由器类似于服务器,自治系统(ASes)类似于可用区,互联网服务提供商(ISPs)类似于云服务提供商。正如在互联网中,IP协议不在意数据包是在同一个ISP的路由器之间传输还是跨ISP传输,基于跨云层构建的应用程序也不应关心其运行在哪个云上。