网络虚拟化
- 11 分钟
大型数据中心是支持云服务的核心基础结构的一部分。 为了实现成本效益,这些数据中心必须具有易于配置和更新的敏捷网络。 这些网络还必须符合网络虚拟化的概念。 网络虚拟化是在物理网络之上创建虚拟网络,其方式类似于在物理服务器上创建虚拟机的方式。 尽管本模块不涉及对数据中心网络及其基础技术的全面理解,但了解网络虚拟化的原因却非常重要。
设计云数据中心所面临的挑战
计算机网络是节点和链接的集合。 节点是任何网络设备,例如交换机、路由器或服务器。 链接是网络中两个节点之间的物理或逻辑连接。 网络还具有标识资源(地址)和标签。 此外,通常还需要一种机制来识别设备(IP 地址和 MAC 地址)、链接(流 ID)和网络(VLAN ID 和 VPN ID),以管理和监视虚拟化基础结构。 高级组织结构(例如网络拓扑)就是通过组合这些资源创建的。
大型数据中心网络的设计者必须满足几个(有时是相互矛盾的)需求1。 他们必须:
- 确保使用可缩放的拓扑以应对未来需求
- 最大化吞吐量同时最小化硬件成本
- 确保其设计可保证系统在故障情况下的可用性和完整性
- 具有节能功能以降低运营成本(并且环保)
在设计大型数据中心的网络时,一个重要的考虑因素是选择正确的网络结构。 选项包括以太网、InfiniBand 和其他高速结构,例如 Myrinet。 每个选项都具有不同的成本、延迟、带宽和通信条件,必须谨慎进行选择。 本课程不涉及对这些结构进行物理比较。 我们更感兴趣的是为互连这些资源而选择的拓扑和寻址方案。 例如,如果我们选择使用以太网寻址网络,其中使用平面的 6 字节 MAC 地址来标识终结点,则这类网络很可能是平面的。 这意味着为每个接口分配一个不依赖于其位置的 MAC 地址。 由于必须存储所有地址,因此这样的设置会导致路由困难并且转发表很大。
因此,我们主要依靠分层路由来构建可缩放的网络。 寻址和路由通常根据基于 IP 的路由,其中根据每个终结点在层次结构中的位置为其分配 IP 地址。 但是,这会限制虚拟机的移动性:必须使用其他策略来处理 VM 在主机之间的迁移。 此外,通常还很难确定性地分配 IP 地址,因为这样做会泄露有关 VM 服务器位置的信息。 数据中心网络拓扑选择是一个活跃的研究领域,其重点是基于树或递归的固定拓扑和可变拓扑。
除了拓扑和寻址方案外,决定路由机制也非常重要。 在集中式路由中,单个中央控制器会创建查找表来确定转发操作。 此方法在理论上是最佳方法,因为中央控制器对数据中心网络具有完全的可见性,并使其更易于配置和了解故障所带来的影响。 但是,该控制器带来了瓶颈和单一故障点,导致在传播转发表时产生巨大的开销。 在基于每个路由器和交换机上的本地信息进行决策时,可以使用分布式方法来代替集中式路由。
可以对大型数据中心内的流量进行精心设计,以最大程度地减少拥塞和延迟。 如果数据包组在顺序或逻辑上相关,则将其归类为“流”。 路由协议通过在多个并行路径中的两个节点之间分发数据来实现负载均衡。 数据中心的设计必须针对其中特定的流模式进行优化。 这就是能够分析流量对数据中心设计者来说很重要的原因。 路由协议必须能够感知状态,这样它们就可以优先选择空闲路由而不是繁忙路由,并将流分散在多个并行路径上。
最后,数据中心网络必须设计为具有容错能力。 此类网络通常使用 gossip 协议,相邻网络之间可以互相通信以快速共享有关故障的信息。 设计此类机制至关重要,这样就不会占用大量带宽。 此外,还必须具有从故障中恢复和重新合并网络中的故障组件的机制。
网络虚拟化
到目前为止,很明显,实现大型数据中心网络很复杂,并且需要更高级别的抽象以易于设计和配置。 但是,对于云数据中心而言,情况甚至更加复杂,这主要是由于多租户需求。 云计算范例仅在可以确保多个租户之间彼此隔离时才有意义。 云服务提供商必须确保流量隔离,以使租户的流量对其他租户不可见。 例如,一个租户承载的银行应用程序收到或发送的数据包必须对其他租户中的游戏应用程序不可见。 地址空间也必须隔离,以便每个租户都可以访问自己的专用地址空间。
流量和地址空间的隔离都是通过为每个租户构建虚拟网络来实现的,这些网络之间的流量被限制在几个严格定义的通道上。 这些虚拟网络是建立在物理网络之上的“覆盖”。 覆盖网络是虚拟网络,其中租户的分离隐藏在基础物理基础结构中。 这样做是为了使基础传输网络无需知道不同的租户即可正确转发流量。 网络虚拟化是指预配这些覆盖,将它们与租户的网络接口相关联,并在启动、停止和终止 VM 实例时维护此网络的生命周期2。
虚拟化网络的一个重要优势是,它使 VM 可以在主机之间迁移,同时保留其网络状态(IP 和 MAC 地址)。 MAC 地址的更改会导致许多意外中断,例如,使软件许可证失效。 可以按层次结构为物理主机分配 IP 地址,而 VM 可以从该子网的有效地址池中获得 IP 地址。
网络虚拟化的另一个驱动因素是维护转发表的复杂性增加。 云数据中心必须为每个 VM 维护一个 MAC 地址,而不是为每个物理服务器维护一个 MAC 地址。这导致了对转发节点容量的巨大需求。
虚拟化还可以帮助单个租户控制其在网络视图中使用的地址。 因此,覆盖网络必须使租户能够使用所需的任何地址,而无需检查所有相邻租户的网络。 这些地址也应独立于云服务提供商的基础结构使用的地址。 虚拟网络使用这种地址分隔来限制在其上发送的数据包的范围。 使数据包只能通过受控的出口点跨越网络边界。
最后,由于存在多个租户和共享网络带宽的过量使用,从而带来了流量和流管理方面的挑战。 CSP 必须确保服务质量 (QoS) 符合保证的 SLA,并且必须根据预配的峰值利用率来确定每个租户的流量。
总之,网络虚拟化只是一种共享机制,它使多个隔离的虚拟网络可以使用相同的物理网络基础结构。 这种共享使虚拟网络可以像虚拟机一样动态、准确地按需进行分配和部署3。 在实践中,云服务的使用者必须能够部署支持物理网络所有功能的虚拟网络,包括子网、无类域间例程 (CIDR) 寻址、防火墙和对等互连,以便云计算成为有用的计算范例。 这正是 Amazon、Microsoft 和 Google 等云服务提供商所允许执行的操作。
案例研究:Azure 中的虚拟网络
所有主要的云服务提供商都支持虚拟网络,但有时会使用不同的术语和抽象。 例如,Azure 不提供虚拟防火墙,但是它确实支持网络安全组 (NSG),这是一种防火墙抽象。 图 10 显示了一个 Azure 虚拟网络 (VNet),该网络配置为通过虚拟 Web 服务器为客户提供内容,该服务器的前端是分配了虚拟公共 IP 地址的虚拟负载均衡器。 负载均衡器和 Web 服务器 VM 位于一个子网中,而后端数据库和其他资源则隔离在一个完全不同的子网中。 每个子网都位于不同的 NSG 中,且都应用了不同的防火墙规则。 例如,面向公众的子网向外部世界开放端口 80 和 443 以支持 HTTP 和 HTTPS 流量,而专用子网只能从其他子网进行访问,并且仅开放 Web 服务器连接到数据库所需的那些端口。 图中未显示其他虚拟网络资源,例如将 VM 连接到网络的虚拟网络接口卡 (NIC)。
图 10:Azure 中的虚拟网络。
这反映了可为物理网络设计的拓扑,以支持安全性和可伸缩性。 这只是优秀的云管理员使用虚拟网络可以完成的工作的冰山一角。 例如,Azure 支持 VNet 对等互连。 即使网络位于不同的 Azure 区域中,此技术也可以连接两个或多个虚拟网络。 它还支持点到站点和站点到站点的虚拟专用网 (VPN),使本地设备和网络设备能够安全地连接到虚拟网络。 最后,Azure ExpressRoute 可提供本地网络与虚拟网络之间的安全、专用和高带宽的连接。 AWS 和 Google 通过虚拟私有云(AWS 和 Google)、AWS Direct Connect 和 Google Cloud 互连等服务来执行此操作。
总之,虚拟网络与虚拟机一样是一项成熟的技术,在云计算环境中同样重要。 尽管详细信息对用户大多是隐藏的,但数据中心及其网络是由专家精心设计的,以支持虚拟网络及其所需的一切内容。
参考资料
刘、杨、穆巴拉、乔希·克和韦拉加万、马拉蒂、林、董、汉迪、穆尼尔(2013年)。 “数据中心网络:拓扑、体系结构和 Fault-Tolerance 特征。斯普林格科学和商业媒体。
刘、杨、穆巴拉、乔希·克和韦拉加万、马拉蒂、林、东、哈姆迪、穆尼尔(2014年)。 “问题语句:网络虚拟化的覆盖层。RFC 7364。
温、海明和蒂瓦里、普拉巴哈特·库马尔和勒恩戈克、Tho(2013年)。 “无线虚拟化”。斯普林格