CN113261242B - 通信系统和由通信系统实现的方法 - Google Patents

通信系统和由通信系统实现的方法 Download PDF

Info

Publication number
CN113261242B
CN113261242B CN201980086852.8A CN201980086852A CN113261242B CN 113261242 B CN113261242 B CN 113261242B CN 201980086852 A CN201980086852 A CN 201980086852A CN 113261242 B CN113261242 B CN 113261242B
Authority
CN
China
Prior art keywords
switch
packet
vpc
gateway
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980086852.8A
Other languages
English (en)
Other versions
CN113261242A (zh
Inventor
韩力
程钢
赵巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202310273527.0A priority Critical patent/CN116319169A/zh
Publication of CN113261242A publication Critical patent/CN113261242A/zh
Application granted granted Critical
Publication of CN113261242B publication Critical patent/CN113261242B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/4645Details on frame tagging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/08Learning-based routing, e.g. using neural networks or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本公开提供通信系统和由通信系统实现的方法。本文讨论的技术包括在与可编程交换机相关联的存储器中存储快路径表和慢路径表,该存储器例如可编程交换机的缓存。分流控制器可以控制快路径和/或慢路径表的内容,从而可以控制可编程交换机的行为。如果接收到的分组在慢路径表中生成命中,则可编程交换机可以将分组路由引导到网关。如果接收到的分组在快路径表中生成命中,则可以将分组直接转发到虚拟私有云(VPC)、其虚拟交换机和/或虚拟机(VM)。

Description

通信系统和由通信系统实现的方法
相关申请的交叉引用
本公开要求于2018年12月28日提交的名称为“Overlay Network Routing Usinga Programmable Switch”的美国申请No.16236335的优先权权益,其全部内容通过引用结合于本文。
技术领域
本公开涉及通信领域,具体涉及使用可编程交换机进行覆盖网络路由。
背景技术
由云服务提供商提供的主要服务之一是向其用户提供提供商的基础设施(例如,处理器内核、存储空间)以用于运行虚拟机(VM)。用户可以经由虚拟私有云(VPC)远程访问在基础设施上运行的VM的实例。可以在网络控制器(NC)处接收从寻求访问在VPC中运行的特定VM实例的客户驻地设备(CPE)生成的网络业务流,网络控制器(NC)将网络业务流转发到交换机,交换机经由根据外部网关协议(例如,外部网关协议(EGP)、边界网关协议(BGP))通告的路由将业务流转发到适当的网关。该网关又经由MAC地址将业务转发到运行VM的适当物理机器。换句话说,网关处理进出覆盖网络的所有分组。
然而,用户对于远程VPC访问越来越需要较大的容量和性能。例如,最近的带宽需求已经增加了四倍,然后又增加了两倍以上。此外,用户需要增加端口密度。在频繁的VM改变期间,在不经历增加的等待时间和降低的每连接一致性(PCC)的情况下,在网关处处理进出覆盖网络的所有分组不向VPC(其需要某种形式的业务分割)提供端口密度和/或带宽。对较多路由的需求也增加了——在一些情况下,用户需要20000个路由每VPC。对于托管大约1000个用户的客户交换机,这意味着客户交换机会需要支持多达2千万个路由。目前没有这种设备。
此外,多个租户可以共享提供商的同一物理基础设施。云服务提供商可以实现网络功能虚拟化(NFV)以允许租户在多租户网络中形成覆盖网络。通常,NFV部署在x86系统上并形成覆盖网络层。使用x86系统增加了网络架构的灵活性,并允许新的特征被快速应用到基础设施。然而,x86系统导致管理成本高、功耗高、性能有限和可扩展性差。
为了隔离租户的业务流,提供商可以为各个VM主机部署虚拟路由引导和转发(VRF)。部署VRF包括为各个VM主机生成路由表,使得接收目的地为特定VM主机的分组的路由器可以使用与该VM主机相关联的路由表来路由引导分组。然而,这增加了占用空间的路由表和底层网络中的开放连接的数量。用于处理所有这种业务流的覆盖解决方案此时是非常昂贵的(例如,能够处理数千和/或数百万连接的路由器各个都会花费一百万美元或更多)。此外,处理这些连接的路由器通常具有静态分配的资源,例如存储器空间,随着租户数量的增长,这也导致可扩展性的瓶颈。
发明内容
提供了一种系统,所述通信系统包括交换机和分流控制器,其中,所述分流控制器包括:一个或更多个处理器;以及第一存储器,所述第一存储器存储第一指令的,所述第一指令在被执行时,使所述分流控制器:存储快路径表和慢路径表;确定所述快路径表的用于对所述交换机进行编程的子集;从所述分流控制器向所述交换机发送将所述子集插入存储在所述交换机处的连接表中的指令;以及其中:所述交换机包括专用集成电路ASIC,所述ASIC被配置成至少部分地基于所述连接表中的条目来转发网络业务流,以及所述交换机至少部分地基于所述子集将网络业务流绕过网关转发到虚拟机VM主机。
还提供了一种方法,所述方法包括以下步骤:在分流控制器处存储第一表;存储第一路由指令作为所述第一表中的第一条目,其中,所述第一路由指令在由交换机执行时使所述交换机在客户设备与虚拟机VM主机和第一虚拟私有云VPC中的至少一者之间转发与第一租户相关联的第一网络业务流;存储第二路由指令作为所述第一表中的第二条目,所述第二路由指令与第二租户相关联,所述第二租户与第二VM和第二VPC中的至少一者相关联;至少部分地基于缓存管理指令确定所述第一表的条目的要向所述交换机发送的子集;以及从所述分流控制器向所述交换机发送所述子集。
还提供了一种非暂时性计算机可读介质,所述非暂时性计算机可读介质具有连接表和指令集,所述指令集在被执行时使与网络交换机相关联的专用电路ASIC:存储连接表,所述连接表包括存储在分流控制器处的完整表的散列子集,所述散列子集包括多个键-值对;从所述分流控制器接收第一键-值对的指令以及将所述第一键-值对插入所述连接表或从所述连接表中删除第二键-值对的指令中的至少一者;将所述第一键-值对插入所述连接表;经由与所述网络交换机相关联的端口接收分组;以及至少部分地基于所述第一键-值对转发所述分组。
附图说明
参照附图描述详细说明。在附图中,附图标记的最左边的数字表示附图标记首次出现的附图。不同附图中相同的附图标记表示相似或相同的项目。
图1例示了用于处理通过网关进出覆盖网络的网络业务流的示例架构的框图。
图2例示了用于处理进出虚拟私有云的网络业务流的示例网络架构的概况的框图。
图3例示了用于处理进出虚拟私有云的网络业务流的示例设备的框图。
图4A和图4B分别示出了交换机和/或分流控制器的上行操作和下行操作。
图5例示了虚拟路由引导控制器的框图,该虚拟路由引导控制器存储示例性快路径表和/或慢路径表并将与其相关的规则推送到交换机。
图6例示了在交换机处使用快路径的示例缓存查找和分组转发的框图。
图7例示了在交换机处使用慢路径的示例缓存查找和分组转发的框图。
图8描绘了包括VPC控制器和/或VRC的示例分流控制器架构的框图,VPC控制器和/或VRC用于确定连接的路由、维持连接状态、向CPE通告路由,和/或控制交换机。
具体实施方式
本公开总体涉及用于处理传送点(PoD)(例如,从客户驻地设备(CPE)接收入口分组和/或向CPE发送出口分组的提供商基础设施)与在VM主机处运行的虚拟机(VM)实例之间的网络业务流的技术(例如,机器、处理)。VM实例可以在虚拟私有云(VPC)内运行。本文讨论的技术可以包括用于处理这种(和其它)业务的网络架构,该网络架构包括分流控制器(OC)和/或可编程交换机专用集成电路(ASIC),以下称为CSW。在一些示例中,这些部件可以从网关分流分组转发和/或路由引导操作中的至少一些操作。
在其它技术中,网关处理进出覆盖网络的所有分组。例如,在其他技术中,交换机接收到的对等互联业务流可以被路由引导到网关(例如,作为下一跳),使得网关可以进行路由引导和MAC地址查找以在VPC和CPE之间正确地路由引导分组。在一些示例中,网关可在x86机器上运行。然而,在一些示例中,本文所讨论的技术可以包括使用减少网络等待时间、支持全二等分业务流、减少能量使用、减少主动管理以及增加各连接的一致性的操作和硬件设置来绕过网关。
根据本文讨论的一些技术,OC可以包括VPC控制器和/或虚拟路由引导控制器(VRC)。VPC控制器可以(1)经由VPC控制台从客户机接收指令,所述指令可以包括由软件定义的网络(SDN)指令(例如虚拟交换机(Vswitch)子网定义、由用户定义的路由、由用户定义的互联网协议(IP)地址);(2)与其他VPC控制器和/或网关(例如在其他区域和/或可用性区域中)接收和/或配置跨区域路由;(3)与VRC协同地学习和/或发布边界网关协议(BGP)路由;和/或(4)与VPC交换机和/或网关协同地配置到VM主机和/或VM实例的路由。
在一些示例中,VPC控制器可以配置要从VRC直接向CPE和/或经由CSW向CPE通告的BGP会话。在附加或另选示例中,VPC控制器可以配置CSW与VM主机和/或VM实例之间的绕过了网关的路由。在完成路由时,无论是BGP路由还是CSW与VM主机之间的路由,VPC控制器可以将用于该路由的规则推送到VRC。
在一些示例中,VPC控制器的操作可以由VRC执行,反之亦然。附加地或另选地,在一些示例中,OC可以被配置成自动执行用户指定的网络连接性策略以自动化多区域多VPC虚拟网络,自动检测地址冲突并控制用户相关的路由改变以确保网络连接和用户业务流不受影响或中断,即使当虚拟网络拓扑频繁改变时(例如VM迁移到新的虚拟交换机和/或子网);和/或向用户提供定制网络连接性策略的能力(例如,经由与VPC控制器接口的面向客户机的VPC控制台)。
VRC可以被配置成从VPC控制器接收规则。在一些示例中,VRC和/或VPC控制器可以将规则配置成键-值表中的条目,并且可以管理该表中的条目,使得各连接/路由存在一个条目。VRC可以维护为入口分组(即从CPE接收的进入分组)设定规则的键-值表即“入口键-值表”、和/或为出口分组(例如流向用户的分组、在区域之间流动的分组、在提供商基础设施之间流动的分组)设定规则的键-值表即“出口键-值表”。
在一些示例中,VRC可以确定存储在VRC处的表的用于对CSW进行编程的子集。例如,VRC可以确定用于对CSW编程的入口键-值表的一部分和出口键-值表的一部分。在一些示例中,用该表的一部分对CSW编程可以包括对该表的该部分进行散列以确定被推送到CSW的经散列的表。CSW从VRC接收的表可以作为“连接表”存储在CSW的缓存中。VRC可以附加地或另选地确定何时在存储在CSW处的连接表中添加和/或删除条目。VRC可以推送指令以将条目添加到CSW的控制(Control)或从CSW的控制删除条目以远程控制CSW的行为,以及对CSW进行远程编程以在一些情况下绕过网关,如下所述。VRC可以附加地或另选地解决CSW处的冲突(例如,由于匹配的表键和/或散列冲突而导致的假阳性,其中两个键/值对实际上是唯一的,但生成相同的概要)。
CSW可以从VRC接收规则(例如,以存储在VRC处的表的一部分和/或经散列的部分的形式),并且可以将接收到的规则存储在CSW的缓存中的连接表中。在一些示例中,连接表可以包括经散列的入口键-值表和/或出口键-值表。在一些示例中,CSW可以包括和/或置换底层交换机,并且可以至少部分地基于是由OC编程的来辅助绕过网关。
为了绕过网关,本文讨论的技术可以包括将至少一些分组处理从网关分流到CSW和/或OC。例如,CSW的ASIC可以接收进入分组,并且可以至少部分地基于ASIC的编程经由慢路径或快路径来路由引导进入分组,所述ASIC的编程可以包括连接表。快路径可以绕过网关,而慢路径可以将分组转发到作为下一跳的网关。为了确定使用哪个路径用于分组,在接收到分组时,CSW可以在连接表中进行查找,以确定与该分组相关联的分组数据是否在连接表中的至少一个条目中生成命中。如果该分组生成了命中,则CSW可以经由快路径路由引导分组,其可以包括将分组绕过网关直接转发到VPC(例如,通过重写和/或封装分组)。在一些示例中,VM主机和/或VPC交换机可以是快路径中从CSW的下一跳。在VPC交换机接收从CSW转发的分组的示例中,VPC交换机可以解封装分组并将解封装的分组转发到VM主机和/或VM实例。
在另一方面,当分组没有生成与连接表的命中(即,“错过”,其中连接表中的查找没有返回任何结果)时,CSW可以经由慢路径转发分组。例如,在CSW搜索连接表时生成错过的分组可以是在尚未创建会话的云覆盖网络中接收到的第一分组(例如传输控制协议(TCP)同步(SYN)消息)。CSW可以通过将该分组转发到网关来经由慢路径路由引导该分组。然后,网关可以实现各种会话建立功能,例如配置路由(例如标识最快路径)、MAC地址查找等,并且在完成这些功能时,网关可以将分组转发到适当的VPC。
在一些示例中,在处理分组和/或执行会话建立功能之后,网关可以向OC(例如向VPC控制器和/或VRC)报告诸如路由配置、MAC地址等的会话信息。OC可以使用会话信息来生成入口表和/或出口表中的键-值条目,并且可以将指令推送到CSW以在CSW上的连接表中插入该条目。在一些示例中,VRC可以附加地或另选地确定要从连接表中删除的条目(例如,为了在缓存中腾出空间,因为CSW存储器分配会是有限的,例如3MB或更少)。插入的该条目可以使CSW经由快路径路由引导为该新会话接收的后续分组(例如,来自同一源和/或针对同一目的地的分组)。
这样,对应于同一会话的入口分组可能不再到达网关,并且CSW可以完全负责直接向VPC转发分组。例如,对于可基于现存路径(由存储在CSW处的连接表中的规则反映和/或由OC和/或网关协商)转发的分组,CSW可以将分组转发到适当的物理机器(例如,使用MAC地址、VxLAN网络标识(VNI),VM主机IP地址)。这样,入口分组可以不再到达VPC网关,并且交换机ASIC可以完全负责直接向VPC转发分组。该技术可以减少总的网络等待时间,同时仍然支持全二等分业务流并增加各连接的一致性。此外,该技术可以免除部署虚拟路由引导和转发(VRF)的需要,如下面更详细地讨论的。由于VRF是“繁重的”协议,因此回避其使用可减少提供商网络上的存储器使用、计算时间和/或能量使用。
在一些示例中,CSW可以生成假阳性命中。例如,如果TCP SYN分组生成命中,则不应该是真实情况,因为TCP SYN分组应该触发将新条目插入到连接表中。CSW可以向OC转发该分组和/或去歧义请求。OC可以通过在完整的入口表/出口表中查找分组信息并路由引导该分组来解决假阳性,假阳性在一些情况下可以由散列冲突生成。在一些示例中,OC可以包括用于规则处理的多个流水线和/或级,其可以包括针对会话在入口表/出口表中生成键-值条目和/或对该条目散列。在一些示例中,OC的两个不同级可以使用不同的散列函数和/或散列盐。因此,OC可以将冲突的条目迁移到不同的流水线/级,从而可以为冲突的条目生成新的散列。冲突条目可以用新散列条目(其使用不同的盐和/或散列函数进行了散列)替换,并且VRC可以将该新散列条目推送到CSW。
在其他技术中,提供商网络可以使用VRF(例如经由本文讨论的连接表方案)来隔离网络业务流。例如,配置在x86机器上或在网络功能虚拟化(NFV)架构的部件上的路由器可以使用VRF方案来路由引导业务流,所述VRF方案对各个不同的客户机和/或VM主机采用不同的路由表。根据该方案,路由器可以使用对应于某个客户机或VM主机的路由表来路由引导从该客户机接收的分组。然而,随着客户机数量的增加,提供商资源分配变得不太灵活,并且随着路由表的激增,静态分配的资源(例如存储空间)会变成瓶颈。此外,随着底层连接的激增,能够处理数千或数百万路由的路由器此时是极其昂贵的。
然而,根据本文讨论的技术,CSW可以附加地或另选地被配置成在不使用VRF的情况下隔离客户机业务流。例如,CSW可以至少部分地基于诸如虚拟LAN(VLAN)标签、目的地因特网协议(IP)地址等的与入口分组相关联的数据来将分组直接路由引导到VPC交换机和/或VM主机(将客户机业务流与其他客户机隔离)。在一些示例中,CSW可以在不使用VRF的情况下(并且不将路由器配置成传送VRF)完成此操作。例如,CSW可以使用接收分组、分组的VLAN标签和/或目的地IP地址(例如VM IP地址)的交换机接口来确定与适当的VPC交换机和/或VM主机相对应的VxLAN网络标识(VNI),以经由快路径来路由引导入口业务流。在该示例中,CSW可以根据VPC VNI封装VM主机IP(例如,虚拟隧道端点(VTEP)地址,其可以是提供商的针对该目的地VM的地址和/或可以由分组中的客户机的目的地IP地址参照)并将其发送到VPC交换机。对于经由慢路径路由引导的入口业务流,CSW可以使用接收分组、与分组相关联的VLAN标签、和/或分组所针对的无类别域间路由(CIDR)块(例如,目的地子网)的交换机接口来确定在其中封装分组的全局VNI和/或要将封装后的分组转发到的网关IP。经由慢速或快路径路由引导入口分组可以包括从VLAN解封装分组并将分组封装在VxLAN中。
对于出口业务流,CSW可以使用与在CSW处接收到的分组相关联的VNI来确定应当与出口分组相关联的接口、VLAN标签和/或下一跳。路由引导出口业务流可以包括从VxLAN解封装出口分组并将出口分组封装在VLAN中。因此,在本文描述的入口业务流和出口业务流处理过程之间,提供商可以选择不部署VRF,同时仍然保持租户隔离。
在CSW和/或路由器进行VRF的示例中,VRC可以将BGP路由和/或下一跳通告到由CSW维护的VRF中。这可以允许VRC向CPE通告BGP路由。例如,根据第一个技术,网关(例如VPC网关)可以运行与交换机的BGP会话以向交换机通告VPC地址前缀,然后交换机经由CPE将VPC地址前缀转发到用户的网络,并且网关还可以经由交换机从CPE接收CPE前缀。然后,网关可以为CPE前缀和/或VPC地址前缀配置路径规则。交换机从驻地上主机接收的目的地为VPC的第3级业务流可以在虚拟可扩展局域网(LAN)(VxLAN)隧道中隧穿。由于隧道是无状态的,返回路径上的从VPC VM到驻地上设备的业务流可以遵循由虚拟联网数据平面编排的优化路径,绕过VPC网关被直接转发到CSW。然而,这不能提供BGP路由引导来满足某些用户的要求,因为在该第一个技术中,控制和数据平面两者都会聚在CSW处。
然而,根据本文讨论的至少一个技术,VRC可以进行BGP路由引导,由此将BGP路由引导从CSW和/或网关分流到VRC。VRC还可以减少数据平面中的跳数和各个剩余跳的等待时间,消除在一些架构中位于VPC之前的负载平衡器,并且提高架构的弹性,使得来自CSW的流可以通过控制BGP对等互联而在VPC网关之间快速故障切换。在一些示例中,VRC可以直接向CPE通告BGP路由,或者VRC可以经由CSW通告BGP路由。
入口分组可以另选地且等同地被称为“上行”分组,并且入口分组向提供商基础设施的核心(例如到VM主机)的流向被称为“上行”,并且出口分组可以另选地且等同地被称为“下行”分组,并且出口分组向因特网、其它区域和/或CPE的流向被称为“下行”。
示例架构
图1例示了根据第一个技术的第一示例网络架构100的框图,第一个技术用于处理通过网关104进出诸如VPC 102(1)的覆盖网络的网络业务流。图1示出了第一网关104(1)直到第m个网关104(M)。在一些示例中,对于各个VPC可以有多个网关和/或对于各个网关可以有多个VPC。根据第一个技术,网关104可以提供用于因特网可路由业务的VPC路由表中的目标,并且可以对已经分配了公共IPv4地址的VM实例执行网络地址转换(NAT)。在一些示例中,网关104可以是虚拟私有网关(VGW),用于动态地路由引导到其他网关和/或VPC(可能在不同的可用性区和/或区域中)的虚拟私有网络(VPN)连接,和/或VGW可以中继进出VPC的业务流。网关104还可以经由BGP会话来与其他网关(例如,诸如区域106(0)的不同区域中的网关)对等互联。
根据第一个技术,可以在PoD处接收从CPE 108接收的网络业务流,并将其转发到路由器110。PoD的拓扑未在本文的任何附图中示出,因为存在多种拓扑结构(例如,叶-主干、核心/聚合/接入),并且这些拓扑中的每个拓扑结构最终可以在CPE和路由器108(和/或在其它附图中示出的CSW)之间中继分组。路由器110(和/或其他附图中所示的CSW)本身可以是PoD拓扑的一部分(例如其可以是边界主干交换机)。然而,在其它示例中,路由器110是边界主干交换机的下一跳。无论如何,由于PoD拓扑中的潜在变化,没有描绘PoD拓扑。
在一些示例中,在路由器110处接收的分组(112)可以在VPN中隧穿(例如802.1Q隧穿(Q-in-Q)),并且可以在帧中包括一个或更多个VLAN标签。路由器110可以接收分组112并且可以解封装Q-in-Q入口分组112并且将解封装的分组封装(114)为VxLAN上行分组114。然后,路由器108可以根据VRF路由表将VxLAN上行分组114转发到适当的网关104(1)。在一些示例中,为了以实施租户之间的路由隔离的方式封装和转发VxLAN上行分组114,根据第一个技术,可以将单独的VNI映射到各个VRF实例,并且各个租户可以具有其自己的VRF路由实例。各个VRF实例可以与路由表相关联,并且VRF可以需要对各个数据分组的下一跳进行指定的转发表、可以被调用来转发分组的设备的列表、以及对如何转发分组进行管理的一组规则和路由协议。这些表防止业务被转发到特定VRF路径之外,并且还将应当保持在VRF路径之外的业务保持在外部。当客户机/连接激增时,这会导致存储器受限设备处的瓶颈,并且会招致高能耗和计算周期。
根据第一个技术,网关104(1)可以是客户交换机从CPE 106接收的目的地为VPC102(1)和/或VM主机118(1)的对等互联业务流的下一跳。网关104可以接收VxLAN上行分组114,对其解封装,并且在执行路由和/或MAC查找之后将解封装的分组经由数据平面118转发到正确的VM主机116。VM主机116可以包括运行可以创建,运行和/或管理一个或更多个VM实例的管理程序(hypervisor)的物理机器。例如,VM主机可以包括处理器的一个或更多个内核和/或相关联的存储器,并且VM实例可在处理器的一个或更多个内核上运行,这依赖于租户与提供商之间的服务级别协议(SLA)。
在一些示例中,网关104可以运行与路由器110的BGP会话120,并向路由器110通告VPC地址前缀,然后路由器110可以将VPC地址前缀转发122到CPE 108。网关104(1)还可以经由路由器110从CPE接收CPE前缀。
由于VxLAN隧道是无状态的,所以返回路径上的从VPC VM到CPE的业务流遵循由虚拟联网数据平面118编排的优化路径,其可以绕过网关104(1)而被直接转发到客户交换机。这不能提供BGP路由引导服务来满足某些用户的要求,因为控制和数据平面两者都会聚在客户交换机处。
然而,在网关处处理进出覆盖网络的所有分组也引起各种问题。例如,网络不能符合严格的性能保证,除非通过过供应,这导致浪费(例如,能量使用增加、热量增加、处理循环未使用、硬件寿命降低);覆盖系统特有的操作和管理机制对底层传输拓扑没有可见性,这妨碍了通过必要的跨覆盖网络和底层网络的工具包进行故障排除;并且底层内的影响整个结构的二等分带宽的故障(例如当以太网束中的链路发生故障时)对于叠加的覆盖网络是透明的,除非反馈机制将状态传播到边缘设备以执行头端重新路由决定,或者以某种方式将覆盖业务流的某些知识暴露给底层,使得底层传输将关键流引导离开由故障引起的业务流拥塞点。然而,这些是高度危险的方法,其可能侵蚀租户与其它租户的业务流隔离。此外,随着各个租户所需的端口和连接的数量的增加,经由网关将所有分组路由引导到覆盖网络中和路由出覆盖网络不能提供SLA中规定的等待时间和PCC要求,和/或可能不存在能够处理所需连接的数量的(稳定的,非β)硬件,或者硬件成本过高。
随后的附图和讨论描述了克服这些和其它缺陷,并且改进提供商架构和资源供应的技术。
示例架构
图2例示了根据本文讨论的用于处理进出诸如VPC 202(1)的提供商核心服务的网络业务流的技术的示例网络架构200的概观的框图。在随后的附图中更详细地讨论了架构的部件的操作。示例网络架构200可以包括OC 204和/或交换机ASIC 206(“CSW 206”)。在一些示例中,OC 204可以包括VPC控制器208和/或VRC 210。在一些示例中,VRC 210可以对CSW206进行远程编程和控制。在一些示例中,当处理租户业务流和/或租户网络配置(例如,建立子网、将子网连接到因特网、实例化VM实例)时,OC 204和CSW 206可以协同绕过网关。
在附加或另选示例中,示例网络架构200可以在不使用VRF的情况下隔离租户业务流。例如,(1)CSW 206可以基于入口分组的VLAN标签和/或目的地IP(例如VM IP地址)来找到目的地VPC(例如对应于VPC的VxLAN网络标识(VNI)),和/或(2)CSW 206可以至少部分地基于入口分组的目的地IP(例如,VM IP地址)来找到VM主机的IP地址(例如,VxLAN虚拟隧道端点(VTEP)地址)。在一些示例中,CSW 206可以使用VPC VNI和/或VM主机地址来封装CSW206。
VRC 210可以附加地或另选地被配置成与CPE 212进行对等互联,并且直接向CPE212通告外部网关协议(例如,外部网关协议(EGP)、BGP、多协议BGP(MP-BGP))路由214。在其他示例中,CSW 206可以向CPE 212通告BGP路由214,从VRC 210向CPE 212路由引导BGP路由通告,和/或VRC 210可以向CPE 212本身通告BGP路由。在至少一个示例中,并且非限制性地,VRC 210可以向VPC控制器208和/或CPE 212通告MP-BGP路由,并且CSW 206可以向CPE212转发该通告。在一些示例中,VRC 210可以建立和/或维护BGP协议会话214,并且可以通过与VPC控制器208协同来学习适当的路由,因为VPC控制器208可以包括提供商VPC信息(例如,与上面运行了特定VM实例的物理机器相关联的网络数据,诸如MAC地址和/或VxLAN地址)和/或客户定义的信息(例如,由客户定义的子网、与特定VM实例相关联的由客户定义的IP地址)。
在一些情况下,VRC 210还可以从CPE 212接收用户路由配置。例如,用户路由配置可以指定与VM实例相关联的新的虚拟交换指令、新的子网和/或新的由用户定义的IP地址。
在一些示例中,CSW 206可以接收和解码包括在目的地为覆盖网络的互联网协议(IP)(例如,Q-in-Q,IPv4,IPv6)业务流216中的上行分组,和/或可以将从覆盖网络到CPE212的下行分组编码成下行IP业务流216。例如,IP业务流216可以包括5元组,该5元组可以包括源地址、目的地地址(例如,VLAN地址)、源端口,目的地端口和/或协议号。在接收到针对覆盖网络而约束的上行分组(例如,IP业务流216中的至少一些)时,CSW 206可以经由快路径218将该分组直接转发到VPC 202(1),或者经由慢路径220将该分组转发到网关222(1)(或者,在一些情况下,该慢路径可以被指向OC 204)。
例如,经由快路径218转发上行分组可以包括解封装分组(例如,解封装来自VLAN的分组)和/或封装目的地为VPC 202(1)的分组。封装帧格式可以包括虚拟可扩展LAN(VxLAN)、使用通用路由封装的网络虚拟化(NVGRE)、大量链路的透明互连(TRILL)、位置/标识分离协议(LISP)等。如下文更详细地论述,CSW 206可以使用连接表(例如,从VRC 210推送到CSW 206)来维持每一连接状态,且因此可至少部分地基于存储在CSW 206处的连接表来转发/封装分组。因此,快路径218可以是CSW 206和VPC 202(1)之间的VxLAN(和/或其它封装帧格式)隧道。
在一些示例中,被路由引导到VPC 202(1)的分组(例如,通过封装分组并转发分组)可以被VPC路由器224(1)接收。在一些示例中,VPC路由器224(1)可以是对经由快路径接收到的分组进行解封装并将该分组路由引导到适当的VM主机(例如,224(1)-(P)之一)的逻辑路由器。在一些情况下,VPC路由器224(1)可以包括虚拟交换机,例如应用虚拟交换机(AVS),其可以是管理程序的一部分。在附加或另选示例中,分组可以被直接输送到VM主机226。无论如何,如本文所使用的,“将分组转发到VPC 202(1)”最终使得分组被输送到目的地VM主机和/或VM实例。在一些示例中,VPC 202可以包括一个或更多个VM主机226。VM主机226(P)可以包括可创建、运行和/或管理(托管)一个或更多个VM实例的一个或更多个内核和/或存储器和/或管理程序。在一些示例中,在可用性区和/或区域228中可以有多个VPC。例如,第m个区域228(M)被描绘为包括多达N个VPC 202(N)。在一些示例中,区域228可以包括一个或更多个网关222,并且不同区域的网关可以经由外部边界协议会话彼此对等互联。在一些示例中,与区域228(1)相关联的网关224(1)可以是与区域228(M)相关联的网关222(M)的对等体。在一些示例中,可以在不同区域中的网关之间建立数据平面。另外地或可选地,单独的VRC 210可以被分配给与区域228内的VPC连接的CPE的子集,并且区域228可以与多个VRC相关联。单独的VRC 210可以与不同区域中的一个或更多个VRC对等互联。此外,在单个区域中可以存在VRC的分层结构(例如,前端VRC、后端VRC、前端VRC、后端VRC、中央VRC)。
在一些示例中,经由慢路径220转发分组可以包括:当在CSW 206处的连接表中不存在针对分组的规则时(例如,分组包括TCP SYN消息、VRC尚未针对与该分组相关联的连接将新条目推送到CSW 206、该分组创建散列冲突,如下面更详细地讨论的),将该分组转发到网关222(1)。在这种情况下,网关222(1)可以执行路由引导(例如,标识到VPC 202(1)的最快路由)、MAC地址查找等,以在CPE 212和VPC 202(1)和/或与VPC 202(1)相关联的VM主机226之间建立连接。在一些情况下,CSW 206在经由慢路径218转发分组时,CSW 206可以保持将分组封装在VLAN中,但是也可以考虑其他方法。
在分组被转发到网关222(1)的示例中,网关222(1)可以向OC 204推送连接状态信息和/或OC 204可以周期性地从网关222(1)拉出新的路由配置(230)。例如,路由配置可以指定与CPE 212和VPC 202(1)之间的路径相关联的MAC地址、路由等。在一些示例中,VPC控制器208可以接收该数据并且可以将其至少一些发送到VRC 210(230)。VRC 210转而可以至少部分地基于用户路由配置的该部分来生成虚拟路由引导对象(VRO),并且可以通过(根据VRO)推送对CSW 206处的连接表进行规则添加和/或删除的指令以使得从CSW 206接收到的后续分组经由快路径218转发而控制(232)CSW 206。因此,VRC 210可以控制CSW 206的操作。
另外地或另选地,VRC 210可以至少部分地基于VRC 210处的缓存管理策略来控制连接表中的条目(例如,通过发送指令来添加或删除条目)。在一些情况下,缓存管理策略可以包括:确定最近最少使用的(LRU)连接,并发送删除对应于LRU连接的LRU条目的指令(以及类似技术);确定最近最多使用的(MRU)连接,并发送添加对应于MRU连接的MRU条目的指令(以及类似技术);和/或机器学习模型,所述机器学习模型将MRU连接(例如关于CPE 212、VPC 202(1)和/或其间的路由的信息)作为输入并且输出与超过阈值概率的被启动概率相关联的一个或更多个其它连接。
换言之,机器学习模型被配置成接收关于连接的数据(例如,新连接被打开或重启的通知和/或相关联的网络信息),并且机器学习模型可以确定在不久的将来(例如,在下一分钟、在下5分钟、在下一小时)可能被启动的连接的子集。例如,某个公司的办公室中的某个用户可能倾向于第一个访问VM实例,而其它用户可能随后到达办公室并登录。机器学习的模型不需要知道这些细节,而是可以通过无监督的学习技术来学习基于观察变为活动的一个或更多个连接而有可能被打开的其它连接。
在一些实例中,CSW 206可以包括边缘交换机,例如在提供商网络的面向用户的边缘处的交换机,虽然在其他实例中CSW 206可以位于其他地方。在一些示例中,虽然路由器通常将在网络层(第3层)和网桥处路由引导数据,而交换机将在数据链路层(第2层)处路由引导数据,但是CSW 206可以是被配置成接收第3层业务流并通过利用由存储在CSW 206处的连接表指定的路由细节而经由VxLAN隧道来路由引导该业务流的交换机。
示例设备
图3例示了用于处理进出虚拟私有云的网络业务流的示例设备300和交换机302的框图。示例设备300可以是组成OC 204的一个或更多个设备。例如,示例设备300可以包括VPC控制器304和/或VRC 306,其可以分别表示VPC控制器208和VRC210。在一些情况下,VPC控制器304和VRC 306可以在同一机器上或在不同机器上工作。在一些情况下,计算设备300可以包括服务器,诸如刀片服务器。计算设备300可以包括x86或类似的微处理器配置。例如,示例设备300可以包括处理器308、存储器310、输入/输出(I/O)设备312和/或用于经由网络316与其它设备建立通信的网络接口314。交换机302可以表示CSW 206,并且可以包括ASIC318、端口320和存储器322。
处理器308可以表示一个或更多个处理器,例如包括一个处理器的单处理器系统,或包括多个处理器(例如,两个、四个、八个或其他合适的数量)的多处理器系统。处理器308可以是能够执行指令的任何合适的处理器。例如,在各种实现方式中,处理器308可以是实现诸如x86、ARM、PowerPC、SPARC或MIPSISA或任何其它合适的ISA等各种指令集架构(ISA)中的任一种的通用或嵌入式处理器。在多处理器系统中,各个处理器308可以共同地但不是必须实现相同的ISA。处理器308可以包括一个或更多个中央处理单元(CPU)和/或一个或更多个图形处理单元(GPU)。在至少一个示例中,处理器308包括x86系统。
存储器310和存储器322可以包括被配置成存储可以由处理器308访问的可执行指令/模块\数据和/或数据项的非暂时性计算机可读介质。在各种实现中,非暂时性计算机可读介质可以使用任何合适的存储器技术来实现,诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器或任何其它类型的存储器。在所示示例中,实现诸如上述操作的期望操作的程序指令和数据被示为存储在非暂时性计算机可读存储器中。在其他实现方式中,程序指令和/或数据可以被接收、发送或存储在不同类型的计算机可访问介质上,例如非暂时性计算机可读介质,或与该非暂时性计算机可读介质分开的类似介质上。一般而言,非暂时性计算机可读存储器可以包括耦接到计算设备300和/或交换机302和/或经由I/O装置312和/或网络接口314和/或端口320可用的存储介质或存储器介质,例如闪存存储器(例如,固态存储器)、磁或光介质(例如盘)。经由非暂时性计算机可读介质存储的程序指令和数据可以通过传输介质或信号(例如电、电磁或数字信号)来传输,这些传输介质或信号可以经由通信介质(例如网络和/或无线链路)来传送,例如可以经由网络接口314和/或端口320来实现。
I/O设备312可以包括被配置成协同处理器308、存储器310、网络接口314和/或示例计算设备300的任何其他硬件和/或提供商网络基础设施之间的I/O业务流的I/O接口。I/O接口可执行协议、定时或其它数据变换以将来自一个部件(例如非暂时性计算机可读媒体)的数据信号转换成适合于由另一部件(例如处理器)使用的格式。I/O接口可以包括对通过各种类型的外围总线(例如,外围部件互连(PCI)总线标准、通用串行总线(USB)标准或其变体)附接的装置的支持。I/O接口的功能可以被分成两个或多个分离的部件,例如北桥和南桥。此外,I/O接口的一些或全部功能(例如对存储器310的接口)可被直接并入到处理器308和/或示例计算装置300的一个或更多个其它部件和/或提供商网络基础设施中。I/O设备312可以包括外部和/或内部扬声器、显示器、输入设备等。
网络接口314可以被配置成在示例计算设备300与提供商的网络基础设施和/或CPE的其它设备之间建立通信链路(例如网络316)。例如,网络接口314可以被配置成允许例如与交换机302交换数据。网络接口314可以使得能够经由诸如Wi-Fi网络的无线通用数据网络和/或诸如蜂窝通信网络、卫星网络等的通信网络进行无线通信。在附加或另选示例中,网络接口314可以包括提供商的网络基础设施的节点之间的硬连线连接。
存储器310可以存储VPC控制器304和/或VRC 306,其中的每一者都可以由处理器308执行以使处理器308完成本文讨论的功能。在一些情况下,VPC控制器304和/或VRC 306可以与网关222在同一服务器上执行。
在一些示例中,VPC控制器304可以在提供商的网络基础设施内分配和/或跟踪VPC和/或VM实例被分配到的物理机器(例如,核心、刀片服务器、机架)。跟踪VPC可以包括将物理机器数据与用户数据(例如与用户相关联的IP地址)和/或由用户定义的数据(例如,子网、用户指定的地址)相关联。在一些情况下,VPC控制器304可以跟踪一个区域内的所有连接,并且可以与其它区域的VPC控制器进行对等互联。VPC控制器304可以包括路由配置部件324,路由配置部件324跟踪区域中的VPC和/或可以配置通过提供商基础设施到VPC的路由。VPC控制器304可以至少部分地基于以下内容来配置到VPC的路由:从网关接收了与VM实例/VPC相关联的MAC地址和/或其它标识;从其它区域中的VPC控制器接收了跨区域路由;接收了由用户定义的网络配置指令(诸如从VPC控制台接收的虚拟交换机、子网和/或路由的定义)(例如,CPE可以经由对CPE可用的应用编程接口(API)来提供这些信息)、和/或由VRC306通告的BGP路由。在一些情况下,VPC控制器304可以跟踪上述任何信息作为连接状态数据。
在一些情况下,VPC控制器304可以将路由数据326的至少一个子集推送到VRC306。例如,路由数据326可以是包括连接细节的路由配置,其包括将分组从CPE路由引导到VPC以及反向的适当细节。在一些示例中,在提供商的网络基础设施(例如,网络的前端、网络的后端或网络的中央部分)内可以存在VRC的分层结构。VPC控制器304可以至少部分地基于与VRC 306相关联的VPC和/或CPE(例如,VRC 306可以控制与那些CPE和/或VPC相关联的交换机和/或路由)来(从与区域中的所有活动连接相关联的所有路由中)确定路由326的子集。VPC控制器304还可以确定将VRC 306与VPC和/或CPE的特定子集相关联。
VRC 306可以包括虚拟路由引导对象(VRO)生成器328、缓存管理部件330和/或BGP接口332。在一些情况下,在从VPC控制器304接收到路由326时,VRO生成器328可以生成包括以下至少一者的VRO:与CPE相关联的虚拟网段的标识(例如三维地址空间,包括VPC和子网);虚拟路由引导类型的标识(例如,虚拟交换机和/或子网、BGP会话的专用端点);虚拟网段的属性(例如区域、VPC、虚拟交换机);虚拟路由数据信道转发信息(如隧道ID、网关虚拟IP地址);网络连接性策略信息(例如虚拟网段范围);释放范围(如虚拟路由器(VR)、边界路由器(BR)、控制交叉点(CxP),可以是双向的,出站可以触及并且进入方向是到达);网络节点对网络业务流的路由引导的状态(例如,连接性、路由等的指示,其可以包括分组计数、成功传送、故障、中断等);冲突或不存在冲突的指示(例如,关于VRC 306在与VRC 306相关联的层中识别冲突路由的指示);一个或更多个VRC已接受VRO的指示;在交换机302处已部署VRO的指示;和/或网络业务流已在CPE与VPC之间被成功路由引导的指示。
VRO可以由处理器308执行和/或可以包括逻辑数据。例如,当连接是活动的时、用于该连接的路由已被配置成不与其它路由冲突(从而隔离了租户)等时,VRO可以使VRC 306向交换机302发送规则。VRO还可以确定何时使交换机304从连接表334中删除规则,从而停止分组沿着快路径和/或慢路径传递(或根本不传递)。例如当VRO正在执行时,可以基于存储在VRO中的数据确定应释放连接,并且VRO可以使指令被发送到交换机302,该指令使交换机302删除连接表334中对应于该连接的条目。
换言之,VRC可以通过与VRC管理的连接相关联的VRO来配置针对诸如交换机302这样的底层数据平面节点的分组转发策略。附加地或另选地,VRC 306可以通过至少部分地基于网络连接性策略计算相关的BGP和/或MP-BGP路由(例如经由BGP接口332)来控制VPC路由。这些也可以被包括在VRO中,因为在一些示例中,交换机302可以向CPE转发BGP和/或MP-BGP通告。
在一些情况下,VRC 306可以包括缓存管理部件330。缓存管理部件330可以确定要向交换机304发送的规则。在一些情况下,向交换机304发送规则可以包括发送在连接表334中添加条目和/或从连接表334中删除条目的指令。在一些示例中,发送子集可以至少部分地基于在VRC 306处并且从交换机304接收到对于在交换机304处接收的分组在连接表334中未发现匹配条目的指示,和/或关于当分组包括同步消息(和/或其它会话建立消息)(诸如传输控制协议(TCP)同步(SYN)消息)时该分组与连接表334中的条目相匹配的指示。
在一些示例中,缓存管理部件330可以包括缓存管理策略336、模型338和/或散列级340。缓存管理部件330可以至少部分地基于缓存管理策略336和/或模型338的输出来确定要推送到交换机302的一组规则。例如,缓存管理策略336可以包括一个或更多个缓存置换策略,诸如例如,确定LRU连接、MRU连接,时间感知最近最少使用(TLRU)连接、分段LRU连接、连接的低相互参照新近度集(LIRS)等。模型338可以包括使用无监督学习技术(尽管在其他示例中可以使用监督技术)生成的机器学习模型。因此,模型338可以包括神经网络,例如随机森林和/或决策树的提升集合;有向非循环图(DAG)(例如其中节点被组织为贝叶斯网络);深度学习算法,例如人工神经网络(ANN)(例如递归神经网络(RNN)、残差神经网络(ResNet))、深度信念网络(DBN)、深度叠加网络(DSN);在一些情况下,模型338可以接收变为活动的一个或更多个连接作为输入,并且基于这些输入,模型338可以输出一个或更多个其他连接的标识。
在缓存管理部件330标识了连接的子集时,缓存管理部件330可以经由网络316向交换机302发送与连接的子集相关联的规则和指令,以在连接表334中插入和/或删除条目。请注意,从VRC 306发送到交换机302的规则的子集对应于VRC 306确定的与VRC 306相关联的层/区域中的路由326相关联的连接中活动或可能变为活动的连接子集,其为VPC控制器304维护的所有活动连接的进一步的子集。
在一些示例中,缓存管理部件330可以将路由326维持为与快路径相关联的快表和/或与慢路径相关联的慢表。在一些示例中,对于由VRC 306管理的各个连接,缓存管理部件可以将以下数据分别存储在快路径表和/或慢路径表中:
Figure GDA0003851989050000151
表1快路径表
Figure GDA0003851989050000161
表2慢路径表
在一些示例中,缓存管理部件330可以对该表进行散列以节省存储器和/或因为交换机304处的存储器322可能是有限的。在一些示例中,缓存管理部件330可以使用超过一个散列级340来生成多个概要。VRC 306可以将在单个概要中与另一条目冲突的条目迁移到不同的散列级,从而改变与第一条目相关联的第一概要(而不是底层信息)。该条目的这种迁移可以包括使用与最初用于生成第一概要的盐不同的盐(例如散列函数可以基于的加密随机数(nonce))来生成包括该条目的新概要。
在一些示例中,交换机302可以包括ASIC 318,ASIC 318专用于转发在端口320处接收的分组。为了决定将在端口320处接收到的分组转发到何处(分组是入口分组和/或出口分组),存储器322可以存储连接表334,并且可以确定接收到的分组是否与连接表中的条目相匹配。在一些情况下,存储器322可以包括与ASIC 318相关联的缓存。连接表334可以包括由快表和/或慢表的条目进行散列而生成的概要。在一些示例中,从VRC 306接收到的添加和/或删除连接表334的条目的指令可以使交换机302对连接表334的一个或更多个条目进行重新散列以生成新的概要,尽管在一些示例中VRC 306可进行散列并可以将所得概要推送到连接表334以用于条目。在一些情况下,连接表334可以包括与VPC VNI和/或目的地IP地址相关联的5元组。5元组可以是散列键,并且VPC VNI和/或目的地IP地址可以是散列值。在一些示例中,交换机302可以是位于提供商网络的面向用户的边缘处的边缘交换机,尽管交换机302也可以另外定位。
示例操作
图4A和图4B例示了CSW 400和OC 402的操作图,在一些情况下,CSW 400和OC 402一起工作以路由引导在CPE 404和VM实例406之间的网络业务流绕过网关408。在一些情况下,网关408可以是管理程序的一部分。如上所述,OC 402可以包括VPC控制器410和/或VRC412,并且这些部件可在同一机器或不同机器上执行。注意,虽然下面的讨论具体涉及了VM实例406,但是应当理解,可以将分组传递到与用户定义的子网相关联的VM主机或VPC的另一部件。
图4A例示了当从CPE 404接收到目的地为VPC 406的入口分组时,本文所讨论的部件的上行工作。在一些情况下,CSW 400可以在CSW 400的端口处从CPE 404接收入口分组,并且在操作414,CSW 400可以在连接表中执行查找以确定入口分组是否生成与连接表中的至少一个条目的命中。在一些示例中,CSW 400可以在进行查找之前解封装入口分组(例如,从VLAN解封装),但是在其他示例中,入口分组可以保持被封装。CSW 400可以使用包含在分组内的数据的至少一部分(例如,分组报头/脚注中的路由数据的至少一部分)来确定入口分组是否生成命中。例如,CSW400可以确定明文数据是否匹配连接表中的条目,和/或CSW400可以对包含在分组中的数据进行散列,以查看散列后的数据是否匹配连接表中的散列键。在一些示例中,CSW 400可以确定入口分组是否匹配快路径表中的交换机接口标识、VLAN标签和/或目的地IP地址(例如,VMIP)和/或慢路径表中的交换机接口标识、LAN标签、目的地子网(例如,CIDR块)。
如果CSW 400确定入口分组生成命中(416),则CSW 400可以将入口分组转发到VPC路由器418,其可以包括封装入口分组,并且VPC路由器418可以解封装分组并将分组转发到运行VM实例406的适当VM主机。这是快路径。在一些示例中,VPC路由器418可以是虚拟交换机。在一些示例中,CSW 400可以使用为VM主机指定VPC VNI和/或VTEP地址的VxLAN协议(或任何其它第3层协议)来封装入口分组。例如,CSW 400可以使用VLAN标签和目的地IP地址(例如,VM IP地址)来找到可以被映射到VNI的目的地VPC,并且在识别了目的地VPC之后,CSW 400可以使用目的地IP来找到VM主机的IP地址(例如,VxLAN VTEP地址)。在一些示例中,各个VNI/VPC可以被映射到针对同一VPC中的不同VM主机的不同目的地VTEP。在一些实例中,各个VLAN标签可以被映射到针对不同VPC的不同VNI。将各个VNI/VPC映射到针对同一VPC中的不同VM主机的不同目的地VTEP可以增加网络和服务器资源利用,降低功耗,和/或释放CPU和存储器,从而增加可以由租户占用的可用计算带宽。
在一些情况下,在确定入口分组生成命中之后,CSW 400还可以确定入口分组是否包括尝试建立连接的同步消息,例如TCP SYN消息。如果没有,则CSW 400可以将入口分组转发(416)到VPC路由器418。然而,如果入口分组包括TCP SYN消息并且匹配连接表中的条目,则CSW 400可以将通知和/或入口分组发送到VRC412(操作420),而不是将入口分组转发到适当的VPC路由器418。
在入口分组包括同步消息并且与连接表中的条目相匹配的情况下,CSW 400可以将通知和/或入口分组发送到VRC 412,因为很可能存在散列冲突(例如,其中对两组不同的数据进行散列导致相同的概要)。当CPE 404初始化连接时,CPE 404可以发送同步消息,因此在连接表中不应该有条目,因为还没有配置连接,并且因此VRC 412还必须将规则推送到CSW 400。
在接收到通知和/或入口分组之后,VRC 412可以配置针对入口分组的路由(例如,通过与VPC控制器410和/或网关408通信),经由该路由转发入口分组,生成针对入口分组的新规则,和/或将新规则推送到CSW 400。为了避免散列冲突问题,VRC 412可以通过使用与引起散列冲突的条目所使用的级和/或盐不同的级和/或盐来对快表和/或慢表中的条目进行散列来生成规则。标识引起冲突的条目的信息可以被包括在从CSW 400发送到VRC 412的通知中。
如果CSW 400确定入口分组不匹配连接表中的任何条目(操作422,“错过”),则CSW400可以将入口分组转发到网关408,使得网关408可以进行路由引导和/或MAC地址查找以正确地路由引导入口分组。网关408然后可以将入口分组转发到VM实例406。这是慢路径。
在一些示例中,网关408和VPC控制器410可以协同以进行路由配置(424)(例如,当分组经由慢路径被转发到网关408并且当发生路由冲突时未配置路由/连接)。例如,VPC控制器410可以接收跨区域路由、BGP通告(来自VRC 412)、用户定义的网络配置(例如子网定义、由用户定义的IP地址)等,并且可以接收与VM实例相关联的MAC地址,并且可以配置从CPE到VM实例的路由。
在完成了路由配置时,VPC控制器410可以将路由配置与CPE 404和该新连接相关联地存储。VPC控制器410可以将至少一些路由配置数据推送(426)到VRC 412,并且VRC转而可以对CSW 400进行编程(428)以将条目添加到与新连接相关联的连接表,使得可以经由快路径来路由引导从CPE 404接收的后续分组。如上所述,VRC 412可以是分层地组织的多个VRC之一,因此VRC 412可以负责处理区域中所有连接的子集,因此可以控制一个或更多个交换机。因此,在一些示例中,VPC控制器410可以在向VRC 412发送路由配置信息之前确定VRC 412是用于处理连接的适当VRC 412(例如,使用负载平衡技术和/或因为VRC 412与已经分配给CPE 404的提供商资源相关联)。
图4B例示了当从VM实例406接收到目的地为CPE 404的出口分组时,本文所讨论的部件的下行操作。在一些示例中,在CSW 400处从VPC 406接收的出口分组(例如,通过经由VPC路由器418的快路径、通过经由网关408的慢路径)可以被封装在VxLAN报头中。在接收到出口分组时,CSW 400可以进行缓存查找430,以确定与出口相关联的VNI是否在出口表中生成命中。另外地或可选地,在接收到出口分组和/或在出口表中生成命中时,CSW 400可以解封装该出口分组。
如果缓存查找430未生成命中(错过432),则CSW 400可以丢弃该分组和/或CSW400可以向与VM实例406相关联的管理程序和/或OC 402转发该分组和/或通知。
如果缓存查找430生成命中(434),则CSW 400可以从VxLAN报头解封装出口分组,和/或如果VM实例406(或VPC路由器418或网关408)未使用VLAN协议封装出口分组,则可以使用VLAN或类似协议封装出口分组。例如,VLAN报头/标签可以指定交换机接口、VLAN标签和下一跳ID,使得CSW 400可以适当地转发出口分组,使得其到达CPE 404。
示例VRC和CSW操作
图5例示了VRC 412的框图,VRC 412存储示例性快路径表500和/或慢路径表502并将与其有关的规则推送到CSW 400。在一些情况下,VPC控制器410可以将一组路由配置(504)推送到VRC 412。在一些情况下,该组路由配置可以与在与VPC控制器410相关联的区域中的连接的子集相关联,并且VRC 412可以负责管理该连接的子集。在一些情况下,VRC412可以将路由配置504作为键-值对存储在散列表中。表500和/或表502可以包括散列表。
例如,快路径表500的键506可以将VLAN标签和/或目的地地址(例如,VMIP)映射到值508,该值508可以是与VPC相关联的VNI。另外地或另选地,目的地地址(例如VMIP)和/或VNI可以映射到VM主机地址,该VM主机地址可以包括诸如VxLAN隧道端点地址这样的VTEP地址。换言之,VPC可以被映射到同一VPC中不同VM主机的不同目的地VTEP。在一些情况下,VTEP可以位于包含分组被寻址到的VM实例的管理程序内(并且当管理程序运行多个VM时,管理程序可以执行VM之间的路由引导功能)。
在一些示例中,慢路径表502的键510可以将VLAN标签和/或CIDR块标识(例如子网标识)映射到值512,该值512可以包括全局VNI(例如一系列和/或一组VNI)和/或网关IP地址(例如在网关408处终止的VTEP地址)。
附加地或可选地,键506和/或510可以包括交换机接口标识,其可以标识提供商网络的进出点(例如,干线端口、到IP网络的IP接口、机架、网络控制器、叶/主干)。
VRC 412可以推送将这些条目中的至少一个条目从快路径表500和/或慢路径表502插入到CSW 400处的连接表334中的指令,从而对CSW 400进行编程(514)以经由与该至少一个条目相关联的路由来转发分组。在一些情况下,VRC 412可以将条目作为“规则”来推送,其可以包括快路径表500和/或慢路径表502的5元组的任何部分。在一些情况下,被推送到CSW 400的规则可以是通过对快路径表500和/或慢路径表502的条目进行散列而生成的概要。
如上所述,VRC 412可以至少部分地基于存储在VRC 412处的模型338和/或缓存管理策略336来确定快路径表500和/或慢路径表502的要发送到CSW 400的子集。
图6例示了CSW 400处的示例缓存查找414和分组转发的框图。在一些示例中,当CSW 400接收到用户IP(上行/入口)业务流时(其可以包括接口标识、VLAN标签和/或VM IP地址),CSW 400可以解封装(602)业务流(例如从VLAN)和/或使用快路径表(如果可用,诸如当已经为与该业务流相关联的CPE建立了连接时)来识别VNI和/或VM主机IP地址,利用VNI和/或VM主机IP地址来封装(604)业务流(例如,在终止于在VM主机上运行的管理程序的VxLAN隧道中)。然后,CSW400可以根据任何技术,例如通过至少部分地基于IP地址610识别下一跳标识608,来将业务流转发到网络中的后续节点,其可以包括进行IP路由引导606。在一些示例中,键610/值608对可以是连接表334的一部分。此时,CSW 400可以将业务流转发到与下一跳ID相关联的下一节点,和/或CSW 400可以附加地或另选地标识与下一跳ID608/612相关联的一组MAC地址610。CSW 400和/或上游节点可以更新与该组MAC地址608相关联的MAC地址614。这些MAC地址可以由节点用来将业务转发到VM主机。
图7例示了CSW 400处的示例缓存查找430和分组转发的框图。在一些示例中,当CSW 400接收到目的地为CPE(例如,来自VPC/VM主机,封装在VxLAN中)的下行业务流700时,CSW 400可以确定与下行业务流相关联的VNI。至少部分地基于该VNI,CSW 400可以确定与VNI相关联的交换机接口标识、VLAN标签和/或下一跳ID。在一些示例中,VNI可以被映射到CSW 400处的连接表中存储的出口表中的交换机接口标识、VLAN标签和/或下一跳ID。
如果CSW 400确定VNI不与出口表中的数据相关联,则CSW 400可以丢弃业务流和/或可以通知VRC、VPC和/或VPC控制器。如果CSW 400确定VNI与出口表中的数据相关联,则CSW 400可以解封装(702)下行业务流(例如,通过从VxLAN报头解封装业务流)和/或封装(704)下行业务流(例如,使用VLAN协议、交换机接口标识、VLAN标签和/或下一跳ID)。CSW400和/或上游节点可以附加地或另选地进行IP路由引导706,IP路由引导706可以包括识别与下一跳ID 710相关联的一组MAC地址708以及更新用于转发业务流的MAC地址712。
示例VPC控制器和VRC
图8示出了包括VPC控制器410和/或VRC 412的示例分流控制器架构800的框图,VPC控制器410和/或VRC 412用于确定用于连接的路由,维持连接状态,向CPE 802(1)-(R)通告路由,和/或控制CSW。在一些示例中,可以存在多个VRC412(1)-(S)。VRC 412(1)-(S)可以分层地组织,使得各个VRC与提供商网络的不同部分相关联。例如,可以为相应的VRC指派网络中所有活动连接的连接子集,和/或VRC可以在网络的不同深度(例如,前端、后端、中心、第2层、第3层)工作。注意,从这里开始,VRC被共同地讨论和/或单独地作为VRC 412讨论。换句话说,VRC 412(1)-(S)中的任一个或更多个可以完成本文讨论的动作。
在一些示例中,通过使用VRC,CSW不需要使用VRF来分段,并且CPE 800(R)可以经由BGP和/或MP-BGP(例如,由VRC代理808(S)运行的BGP会话804(T)和806(U))直接向VRC412通信(发送命令、指令、分组、用户定义的路由等)。在一些示例中,用户可以经由诸如OpenAPI、Swift等的API与VRC 412通信。
在一些情况下,CPE 802(R)和VRC 412之间的业务流可以通过CSW 400传递,但是CSW 400可以将业务流从CPE 802(R)传送到VRC 412(反之亦然),从而允许用户直接与VRC412通话。因此,在该图中没有例示CSW 400。为区域中的活动连接的子集部署VRC还可以置换和/或补充位于VPC之前的负载平衡器。在可能不利的其他示例中,网关408可以向CPE通告BGP路由。在一些示例中,网关408可以完全由VPC控制器410、VRC 412和/或CSW 400置换。
在一些示例中,用户可以向VRC 412发送用户定义的规则/路由配置(例如新的子网、新的虚拟交换指令、与VM关联的用户定义的IP地址),并且VRC 412可以向VPC控制器410发送用户定义的规则/路由配置的至少一部分。在一些示例中,VPC控制器410可以居中地位于提供商网络的网络拓扑中,但是也可以设想其它技术。
VRC 412可以向CPE 802(1)-(R)和VPC控制器410和/或任何其它节点公布(808)BGP和/或MP-BGP路由。VPC控制器410可以最终负责管理其上运行VM实例的VM主机(例如物理机器和/或管理程序),这可以包括迁移VM实例/管理程序、实例化VM实例、将资源(例如特定内核/物理机器)指派给特定VPC、跟踪与指派给VPC的资源相关联的路由数据(例如MAC地址、IP地址)等。
例如,关于第n个VPC 810(N),VPC控制器410可以向VPC 810(N)分配一个或更多个物理机器(例如处理器内核和/或存储器),并且CPE 802(R)可以要求VM实例812(P)与用户定义的IP地址和私有子网相关联地被实例化(例如,响应于经由VPC控制台814从用户接收的指令)。VPC控制器410可以从VRC 412(S)和/或VPC控制台814接收要实例化的VM实例的用户要求和用户路由配置,并且可以配置通过提供商网络的连接和路由细节,使得VM 812(P)与CPE 802(R)之间的业务流与其他租户隔离。为了实现隔离和成功的分组路由,VPC控制器410可以从VPC控制台(例如API接口)和/或从VRC 412接收用户定义的路由(816),从与同VPC控制器410对等互联的不同区域相关联的VPC控制器820接收跨区域路由818(例如,这可以包括与VPC控制器816协商路由,使得VPC 808(N)可以跨越多个区域而不创建路由冲突),学习从VRC 412接收的BGP路由(808),用VPC路由器824配置最终快路径路由(822),和/或用网关408配置最终慢路径路由(826)。
在一些情况下,VPC路由器824可以包括位于管理程序内的虚拟交换机,并且VPC控制器410可以通过与VPC路由器824通信来将最终路由(822)配置成快路径连接,以将VPC路由器824设置为来自CSW 400的VxLAN隧道的端点。将VPC路由器824设置为VxLAN隧道的端点可以包括将VPC 810(N)映射到VNI和/或将VPC VNI、交换机接口、VLAN标签和/或VM IP地址(其中的一个或更多个可以是用户定义的,而不是提供商定义的)映射到VPC路由器824。然后,VPC控制器410可以将与该快路径连接相关的路由数据推送到负责CPE 802(R)与VM 812(P)之间的连接的VRC 412(S),例如针对存储在VRC 412(S)处的快速表中的条目。进而,VRC412(S)可以向CSW 400发送至少部分地基于缓存管理策略和/或模型输出在与连接相关联的连接表中插入条目的指令,如上面进一步讨论的。
在一些示例中,VPC控制器410可以通过与网关408(其可以与VM 812(P)在其上运行的VM主机相关联)通信以在CSW 400和网关408之间建立连接,来将与网关408的最终路由(824)配置成慢路径连接。然后,VPC控制器410可以将与该慢路径连接相关的路由数据推送到负责CPE 802(R)与VM 812(P)之间的连接的VRC 412(S),例如针对存储在VRC 412(S)处的慢速表中的条目。进而,VRC412(S)可以向CSW 400发送至少部分地基于缓存管理策略和/或输出的模型在与该连接相关联的连接表中插入条目的指令,如上面进一步讨论的。
在一些示例中,VRC 412可以自动化用户指定的网络连接性策略以自动化多区域多VPC虚拟网络,自动检测地址冲突并控制路由改变以确保网络连接性和用户业务流不受影响和中断(即使当提供商网络拓扑频繁改变时,诸如当VM实例迁移到新的虚拟交换机或子网时),和/或可以向用户提供定制网络连接性策略的能力。
例如,至少部分地基于用户指定的网络连接性策略(例如,“路由配置”),VRC 412可以计算相关的BGP路由,并且可以配置到底层数据平面节点的分组转发策略。在一些情况下,单个VRC 412可以在多个网络拓扑层中操作和/或可以将不同的VRC分配给各个不同的网络拓扑层。例如,这些层可以包括:VR层,其中VRC可以对当前VR/VPC连接性和路由进行管理和控制(例如,VPC对等互联);BR层,其中VRC可以对当前BR连接性和路由进行管理和控制(例如,跨区域VPC对等互联);和/或CxP层,其中VRC可以管理和控制当前CxP连接性和路由进行管理和控制(例如,跨区域多BR VPC对等互联)。
在一些情况下,VRC 412可以包括VRO,VRO包括用于实现这种管理和控制的可执行和/或逻辑部件。例如,VRO可以包括:与CPE相关联的虚拟网段的标识(例如三维地址空间包括VPC和子网);虚拟路由引导类型的标识(例如虚拟交换机和/或子网、BGP会话的专用端点);虚拟网段的属性(例如区域、VPC、虚拟交换机);虚拟路由数据信道转发信息(例如隧道ID、网关虚拟IP地址);网络连接性策略信息(如,虚拟网段范围);释放范围(例如虚拟交换机、VR、BR、CxP,可以是双向的,出站可以到达,进入方向是到达);网络节点对网络业务流的路由引导的状态(例如,连接性、路由等的指示,其可以包括分组计数、成功传递、故障、中断等);冲突或不存在冲突的指示(例如,VRC 306标识在与VRC 306相关联的层中的冲突路由的指示);一个或更多个VRC已接受VRO的指示;在交换机302处已经部署VRO的指示;和/或网络业务流在CPE和VPC之间被成功路由引导的指示。
在一些示例中,活动VRC(例如,当前正在配置与其相关联的连接/VRO的VRC)可与VPC通信以建立管理和控制条款和/或路由配置来生成VRO,并且在成功生成VRO之后,活动VRC可以与活动VRC之上和/或之下的层中的VRC交换VRO(包括新生成的VRO)。其它层中的VRC可以至少部分地基于VRO是否在与其它VRC相关联的层中产生冲突来选择接受或拒绝VRO。在接受新生成和交换的VRO时,活动VRC可以通过操作VRO来实现网络连接性策略和路由控制。在一些情况下,VRC412可以为各个CPE 802生成VRO。
下面描述VRO的生成和交换以保证至少上行隔离。在一些示例中,VRO交换可包括最底层(例如虚拟交换层)的第一VRC生成初始VRO并检查是否存在路由冲突以及接受或拒绝当前虚拟路由决定(例如由VPC控制器410和/或另一VRC 412作出)。如果VRC接受路由决定,则VRC可以指示VRO在与第一VRC相关联的层处被接受,并且与和第一VRC相关联的层相比,第一VRC可以将VRO传递到与上层和/或下层相关联的VRC,依此类推,直到所有相关VRC已接受VRO。例如,相关VRC可以是针对正被路由引导的连接控制网络连接性的VRC,和/或与和新的/修改的连接相关的最高层相关联的VRC以及下面的层的所有VRC(例如,如果在BR层做出改变(例如,用户定义新的子网),则相关VRC可以包括与BR层相关联的VRC和与VR层相关联的VRC,但不包括与CxP层相关联的VRC)。在一些情况下,用户指定的范围可以确定VRO达到的VRC的限度。
在一些情况下,如果在用户定义的范围的最高层处接受的VRO被检测为在VRC之间向下/向下,则与最高层或下面的任何层中的至少一个层相关联的VRC可以检查是否存在路由冲突。如果VRC检测到路由冲突,则VRC可以通过向CSW 400发送指令来停止下行链路处理,和/或VRC可以经由VPC控制器向底层数据转发节点发送冲突路由的身份标识。
示例条款
A.一种系统,所述系统包括交换机和分流控制器,其中,所述分流控制器包括:一个或更多个处理器;以及存储第一指令的第一存储器,所述第一指令在被执行时,使所述分流控制器:存储快路径表和慢路径表;确定所述快路径表的用于对所述交换机进行编程的子集;从所述分流控制器向所述交换机发送将所述子集插入存储在所述交换机处的连接表中的指令;以及其中:所述交换机包括专用集成电路ASIC,所述ASIC被配置成至少部分地基于所述连接表中的条目来转发网络业务流,以及所述交换机至少部分地基于所述子集将网络业务流绕过网关转发到虚拟机VM主机。
B.根据段落A所述的系统,其中,所述快路径表的第一条目包括键和值,其中:所述键至少包括虚拟局域网VLAN标签和目的地互联网协议IP并且,以及所述值至少包括虚拟私有云VPC虚拟可扩展局域网VxLAN网络标识VNI和虚拟机VM IP地址。
C.根据段落A或B所述的系统,其中,所述子集包括所述第一条目,并且所述交换机包括与第二存储器相关联,所述第二存储器存储所述连接表和第二指令,所述第二指令在被执行时使所述ASIC:接收目的地为VPC中VM的分组;确定所述分组与VLAN标签和目的地IP地址相关联;从VLAN封装中解封所述分组;至少部分地基于所述VNI和所述VM IP地址来封装和转发所述分组。
D.根据段落A至C中的任一项所述的系统,其中,至少部分地基于所述VNI和所述VMIP地址来封装和转发所述分组的处理绕过了所述网关。
E.根据段落A至D中的任一项所述的系统,其中,确定所述子集的处理至少部分地基于机器学习模型,所述机器学习模型确定所述子集的条目与最有可能保持活动或在一段时间内变为活动的一个或更多个连接相关联。
F.根据段落A至E中的任一项所述的系统,其中,确定所述子集的处理至少部分地基于缓存置换指令。
G.根据段落A至F中的任一项所述的系统,其中,所述缓存置换指令包括用于确定所述快表的最近最少使用的条目的指令。
H.根据段落A至G中的任一项所述的系统,其中,所述第一指令还使所述分流控制器:从所述交换机接收分组和所述分组不与所述连接表中的条目相关联的指示;确定所述分组与所述快路径表中的第一条目相关联;以及从所述分流控制器向所述交换机发送将所述第一条目插入到所述连接表中的指令。
I.根据段落A至H中的任一项所述的系统,其中,所述指令还使所述交换机删除最近最少使用的条目。
J.根据段落A至I中的任一项所述的系统,其中,所述第一指令还使所述分流控制器:确定所述分组与所述慢路径表中的第二条目相关联;以及从所述分流控制器向所述网关和VPC控制器中的至少一者发送所述分组,其中,所述网关或所述VPC控制器为所述分组配置路由。
K.根据段落A至J中的任一项所述的系统,其中,所述第一指令还使所述分流控制器:确定所述分组不与所述快路径表或所述慢路径表中的条目相关联;以及从所述分流控制器向所述网关和VPC控制器中的至少一者发送所述分组,其中,所述网关或所述VPC控制器为所述分组配置路由。
L.一种方法,所述方法包括:在分流控制器处存储第一表;存储第一路由指令作为所述第一表中的第一条目,其中,所述第一路由指令在由交换机执行时使所述交换机在客户设备与第一虚拟机VM主机和第一虚拟私有云VPC中的至少一者之间转发与第一租户相关联的第一网络业务流;存储第二路由指令作为所述第一表中的第二条目,所述第二路由指令与第二租户相关联,所述第二租户与第二VM和第二VPC中的至少一者相关联;至少部分地基于缓存管理指令确定所述第一表的条目的要向所述交换机发送的子集;以及从所述分流控制器向所述交换机发送所述子集。
M.根据段落L所述的方法,其中,发送所述子集的步骤还包括发送指令,所述指令在由所述交换机执行时使所述交换机至少部分地基于所述子集转发在所述交换机处接收到的网络。
N.根据段落L或M所述的方法,所述方法还包括:存储所述第二路由指令作为第二表中的第二条目,其中,所述第二路由指令在由所述分流控制器或所述交换机中的至少一者执行时使所述分流控制器或所述交换机在客户设备和与所述第一VPC关联的网关之间转发与所述第一租户关联的网络业务流;在所述分流控制器处从所述交换机接收关于在所述交换机处接收的分组与包括所述子集的连接表中的任何条目都不匹配的通知;以及至少部分地基于所述第二条目从所述分流控制器向所述网关发送所述分组。
O.根据段落L至N中的任一项所述的方法,所述方法还包括至少部分地基于接收到所述通知,从所述分流控制器向所述交换机发送所述第一条目。
P.根据段落L至O中的任一项所述的方法,所述方法还包括:在所述分流控制器处从所述网关接收与由所述网关确定的路由配置相关联的路由信息,所述路由信息用于将所述分组传送到所述第一VM主机和所述第一VPC中的至少一者;以及至少部分地基于所述路由信息生成所述第一路由指令。
Q.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质具有连接表和指令集,所述指令集在被执行时使与网络交换机相关联的专用电路ASIC:存储连接表,所述连接表包括存储在分流控制器处的完整表的散列子集,所述散列子集包括多个键-值对;从所述分流控制器接收第一键-值对以及将所述第一键-值对插入所述连接表的指令和从所述连接表中删除第二键-值对的指令中的至少一个;将所述第一键-值对插入所述连接表;经由与所述网络交换机相关联的端口接收分组;以及至少部分地基于所述第一键-值对转发所述分组。
R.根据段落Q所述的非暂时性计算机可读介质,其中:所述网络交换机被部署为网络架构的边缘的一部分,所述分组包括互联网层协议,并且转发所述分组的处理包括至少部分地基于覆盖协议封装所述分组,其中,所述覆盖协议的路由细节由所述键-值对的值指定。
S.根据段落Q或R所述的非暂时性计算机可读介质,所述指令集还使所述ASIC:接收第一分组,其中,所述第一分组与也与所述分组相关联的第一租户相关联;确定与所述第一分组关联的路由信息与所述连接表的条目的键不匹配;以及从所述网络交换机向所述分流控制器发送所述第一分组和关于所述第一分组与所述键不匹配的通知中的至少一者;以及其中,所述第一键-值对是至少部分地响应于发送所述第一分组和所述通知中的至少一者而接收的。
T.根据段落Q至S中的任一项所述的非暂时性计算机可读介质,其中,至少部分地基于所述第一键-值对来转发所述分组的处理包括绕过网关并将所述分组转发到虚拟机VM主机和虚拟私有云VPC中的至少一者。
本文描述的模块表示可以存储在任何类型的计算机可读介质中并且可以在软件和/或硬件中实现的指令。以上描述的所有方法和处理可以在软件代码模块和/或由一个或更多个计算机或处理器、硬件或其某种组合执行的计算机可执行指令中实现,并且经由软件代码模块和/或由一个或更多个计算机或处理器、硬件或其某种组合执行的计算机可执行指令而完全自动化。另选地,这些方法中的一些或全部可以在专用计算机硬件中实现。
除非另有明确说明,条件性语言,例如“可以”、“能够”、“可”或“可能”,在上下文中应理解为表示某些示例包括某些特征、元件和/或步骤,而其他示例不包括。因此,这种条件性语言一般不旨在暗示一个或更多个示例以任何方式需要某些特征,元素和/或步骤,或者一个或更多个示例必须包括用于在有或没有用户输入或提示的情况下决定是否在任何特定示例中包括或执行某些特征、元素和/或步骤的逻辑。
除非另有明确说明,否则诸如短语“X、Y或Z中的至少一者”的连接语言应理解为表示项目、等可以是X、Y或Z,或其任何组合,包括多个相应元素。除非明确描述为单数,否则“一”意指单数和复数。
本文描述的和/或在附图中描绘的流程图中的任何例程描述、元素或块应被理解为潜在地表示包括用于实现例程中的特定逻辑功能或元素的一个或更多个计算机可执行指令的代码的模块、段或部分。另选的实现方式包括在本文描述的示例的范围内,其中元件或功能可以从所示出或讨论的顺序中删除或不按顺序执行,包括基本上同步地、以相反的顺序、具有附加的操作、或省略操作,这依赖于本领域技术人员将理解的所涉及的功能。
应当强调的是,可以对上述示例进行许多变化和修改,这些变化和修改的元素应被理解为其他可接受的示例。所有这些修改和变化旨在包括在本公开的范围内。

Claims (20)

1.一种通信系统,所述通信系统包括交换机和分流控制器,其中,所述分流控制器包括:
一个或更多个处理器;以及
第一存储器,所述第一存储器存储第一指令,所述第一指令在被执行时,使所述分流控制器:
存储快路径表和慢路径表;
确定所述快路径表的用于对所述交换机进行编程的子集;
从所述分流控制器向所述交换机发送将所述子集插入存储在所述交换机处的连接表中的指令;以及
其中:
所述交换机包括专用集成电路ASIC,所述ASIC被配置成至少部分地基于所述连接表中的条目来转发网络业务流,以及
所述交换机至少部分地基于所述子集将所述网络业务流绕过网关转发到虚拟机VM主机,并且
其中,所述快路径表包含关于快路径的信息,所述快路径用于所述交换机转发所述网络业务流使得所述网络业务流绕过所述网关,并且所述慢路径表包含关于慢路径的信息,所述慢路径用于所述交换机转发所述网络业务流使得所述网络业务流转发到所述网关作为下一跳。
2.根据权利要求1所述的通信系统,其中,所述快路径表的第一条目包括键和值,其中:
所述键至少包括虚拟局域网VLAN标签和目的地互联网协议IP地址,并且
所述值至少包括虚拟私有云VPC虚拟可扩展局域网VxLAN网络标识VNI和虚拟机VM IP地址。
3.根据权利要求2所述的通信系统,其中,所述子集包括所述第一条目,并且所述交换机包括第二存储器,所述第二存储器存储所述连接表和第二指令,所述第二指令在被执行时使所述ASIC:
接收目的地为VPC中的VM的分组;
确定所述分组与VLAN标签和目的地IP地址相关联;
从VLAN封装中解封所述分组;并且
至少部分地基于所述VNI和所述VM IP地址来封装和转发所述分组。
4.根据权利要求3所述的通信系统,其中,至少部分地基于所述VNI和所述VM IP地址来封装和转发所述分组的处理绕过了所述网关。
5.根据权利要求1所述的通信系统,其中,确定所述子集的处理至少部分地基于机器学习模型,所述机器学习模型确定所述子集的条目与最有可能保持活动或在一段时间内变为活动的一个或更多个连接相关联。
6.根据权利要求1所述的通信系统,其中,确定所述子集的处理至少部分地基于缓存置换指令。
7.根据权利要求6所述的通信系统,其中,所述缓存置换指令包括用于确定所述快路径表的最近最少使用的条目的指令。
8.根据权利要求1所述的通信系统,其中,所述第一指令还使所述分流控制器:
从所述交换机接收分组和所述分组不与所述连接表中的条目相关联的指示;
确定所述分组与所述快路径表中的第一条目相关联;以及
从所述分流控制器向所述交换机发送将所述第一条目插入到所述连接表中的指令。
9.根据权利要求8所述的通信系统,其中,所述指令还使所述交换机删除最近最少使用的条目。
10.根据权利要求8所述的通信系统,其中,所述第一指令还使所述分流控制器:
确定所述分组与所述慢路径表中的第二条目相关联;以及
从所述分流控制器向所述网关和VPC控制器中的至少一者发送所述分组,其中,所述网关或所述VPC控制器为所述分组配置路由。
11.根据权利要求8所述的通信系统,其中,所述第一指令还使所述分流控制器:
确定所述分组不与所述快路径表或所述慢路径表中的条目相关联;以及
从所述分流控制器向所述网关和VPC控制器中的至少一者发送所述分组,其中,所述网关或所述VPC控制器为所述分组配置路由。
12.根据权利要求1所述的通信系统,其中,所述第一指令还使得所述分流控制器:
存储第一路由指令作为所述快路径表中的第一条目,其中,当所述第一路由指令由所述交换机执行时,使所述交换机在客户设备与第一虚拟机VM主机和第一虚拟私有云VPC中的至少一者之间转发与第一租户相关联的第一网络业务流;
存储与第二租户相关联的第二路由指令作为所述快路径表中的第二条目,所述第二租户与第二VM或第二VPC中的至少一者相关联;
至少部分基于缓存管理指令确定所述快路径表的所述子集;并且
从所述分流控制器向所述交换机发送所述子集。
13.根据权利要求12所述的通信系统,其中,发送所述子集还包括:
发送指令,当该指令由所述交换机执行时,使所述交换机至少部分基于所述子集来转发在所述交换机处接收的所述网络业务流。
14.根据权利要求12所述的通信系统,其中,第一指令还使得所述分流控制器:
存储第二路由指令作为所述慢路径表中的第二条目,其中,当所述第二路由指令由所述分流控制器或所述交换机中的至少一者执行时,使得所述分流控制器或所述交换机在所述客户设备和与所述第一VPC相关联的所述网关之间转发与所述第一租户相关联的所述网络业务流;
从所述交换机接收关于在所述交换机处接收的分组与包括所述子集的所述连接表中的任何条目都不匹配的通知;以及
至少部分基于第二条目从所述分流控制器向所述网关发送所述分组。
15.根据权利要求14所述的通信系统,其中,所述第一指令还使得所述分流控制器:
至少基于接收到所述通知,从所述分流控制器向所述交换机发送所述第一条目。
16.根据权利要求14所述的通信系统,其中,所述第一指令还使得所述分流控制器:
在所述分流控制器处从所述网关接收与由所述网关确定的路由配置相关联的路由信息,所述路由信息用于将所述分组传送到所述第一VM主机和所述第一VPC中的至少一者;以及
至少部分基于所述路由信息生成所述第一路由指令。
17.一种由具有一个或更多个处理器、交换机、分流控制器和存储器的通信系统实现的方法,该方法包括以下步骤:
由所述分流控制器在所述存储器中存储快路径表和慢路径表;
由所述分流控制器确定所述快路径表的用于对所述交换机进行编程的子集;
由所述分流控制器向所述交换机发送将所述子集插入在所述交换机处存储的连接表的指令,以及
由所述交换机的专用集成电路ASIC至少部分基于所述连接表中的条目转发网络业务流,
其中:
所述交换机至少部分地基于子集将所述网络业务流绕过网关转发到虚拟机VM主机,并且
其中,所述快路径表包含用于所述交换机转发所述网络业务流使得所述网络业务流绕过所述网关的快路径,所述慢路径表包含用于所述交换机转发所述网络业务流使得所述网络业务流转发到所述网关作为下一跳的慢路径。
18.根据权利要求17所述的方法,其中,所述快路径表的第一条目包括键和值,其中:
所述键至少包括虚拟局域网VLAN标签和目的地互联网协议IP地址,并且
所述值至少包括虚拟私有云VPC虚拟可扩展局域网VxLAN网络标识VNI和虚拟机VM IP地址。
19.根据权利要求18所述的方法,其中,所述子集包括所述第一条目,并且所述方法还包括:
由所述交换机的所述ASIC接收目的地为VPC中的VM的分组;
由所述交换机的所述ASIC确定所述分组与VLAN标签和目的地IP地址相关联;
由上述交换机的所述ASIC从VLAN封装中解封所述分组;以及
由所述交换机的所述ASIC至少部分地基于所述VNI和所述VM IP地址来封装和转发所述分组。
20.根据权利要求19所述的方法,其中,至少部分地基于所述VNI和所述VM IP地址来封装和转发所述分组的处理绕过了所述网关。
CN201980086852.8A 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法 Active CN113261242B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310273527.0A CN116319169A (zh) 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法、分流控制器、交换机

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/236,335 2018-12-28
US16/236,335 US11258635B2 (en) 2018-12-28 2018-12-28 Overlay network routing using a programmable switch
PCT/CN2019/128975 WO2020135659A1 (en) 2018-12-28 2019-12-27 Overlay network routing using a programmable switch

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310273527.0A Division CN116319169A (zh) 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法、分流控制器、交换机

Publications (2)

Publication Number Publication Date
CN113261242A CN113261242A (zh) 2021-08-13
CN113261242B true CN113261242B (zh) 2023-03-03

Family

ID=71123208

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310273527.0A Pending CN116319169A (zh) 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法、分流控制器、交换机
CN201980086852.8A Active CN113261242B (zh) 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310273527.0A Pending CN116319169A (zh) 2018-12-28 2019-12-27 通信系统和由通信系统实现的方法、分流控制器、交换机

Country Status (3)

Country Link
US (1) US11258635B2 (zh)
CN (2) CN116319169A (zh)
WO (1) WO2020135659A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220337604A1 (en) * 2019-09-24 2022-10-20 Pribit Technology, Inc. System And Method For Secure Network Access Of Terminal
US11381557B2 (en) * 2019-09-24 2022-07-05 Pribit Technology, Inc. Secure data transmission using a controlled node flow
US11444828B2 (en) * 2020-02-12 2022-09-13 Ciena Corporation Identifying border gateway protocol (BGP) anomalies at scale
CN113285892A (zh) * 2020-02-20 2021-08-20 华为技术有限公司 报文处理系统、方法、机器可读存储介质以及程序产品
US11683271B1 (en) * 2020-03-13 2023-06-20 Cisco Technology, Inc. Differential processing of packets using service function instances identified by service function values in packets
US11552848B2 (en) * 2020-04-13 2023-01-10 Arista Networks, Inc. System and method for managing a network device
US11675946B1 (en) * 2020-07-13 2023-06-13 Sprint Spectrum Lp Programmable network switch for user plane function
US11128695B1 (en) * 2020-09-16 2021-09-21 Cloudflare, Inc. Traffic load balancing between a plurality of points of presence of a cloud computing infrastructure
CN114500162A (zh) * 2020-10-23 2022-05-13 中国移动通信有限公司研究院 Sd-wan系统和数据转发方法
CN114884810A (zh) * 2022-03-25 2022-08-09 阿里云计算有限公司 基于sdn的网络数据传输方法、接入方法和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106130900A (zh) * 2016-08-05 2016-11-16 浪潮(北京)电子信息产业有限公司 一种虚拟化网络分布式路由实现方法及系统
WO2017113300A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 路由确定方法、网络配置方法以及相关装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443440B2 (en) * 2008-04-05 2013-05-14 Trend Micro Incorporated System and method for intelligent coordination of host and guest intrusion prevention in virtualized environment
US8743696B2 (en) 2009-08-07 2014-06-03 Cisco Technology, Inc. Mobile transport solution for offloading to an alternate network
US8493851B2 (en) 2010-05-07 2013-07-23 Broadcom Corporation Method and system for offloading tunnel packet processing in cloud computing
US10142218B2 (en) * 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
WO2012167184A2 (en) 2011-06-02 2012-12-06 Interdigital Patent Holdings, Inc. Methods, apparatus, and systems for managing converged gateway communications
US20130142201A1 (en) 2011-12-02 2013-06-06 Microsoft Corporation Connecting on-premise networks with public clouds
KR101394424B1 (ko) * 2013-04-22 2014-05-13 한국인터넷진흥원 하이퍼바이저 기반 침입 방지 플랫폼 및 가상화 네트워크 침입 방지 시스템
US9692698B2 (en) 2014-06-30 2017-06-27 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9699060B2 (en) * 2014-12-17 2017-07-04 Vmware, Inc. Specializing virtual network device processing to avoid interrupt processing for high packet rate applications
US9998565B2 (en) * 2015-05-25 2018-06-12 Juniper Networks, Inc. Selecting and monitoring a plurality of services key performance indicators using TWAMP
CN105591873B (zh) * 2015-10-27 2019-03-15 新华三技术有限公司 一种虚拟机隔离方法和装置
US10048977B2 (en) 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10003521B2 (en) * 2016-04-28 2018-06-19 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Fibre channel N_port virtualization gateway with shortcut path logic
US10348556B2 (en) * 2016-06-02 2019-07-09 Alibaba Group Holding Limited Method and network infrastructure for a direct public traffic connection within a datacenter
US10367757B2 (en) 2016-08-27 2019-07-30 Nicira, Inc. Extension of network control system into public cloud
CN114697189A (zh) 2016-08-27 2022-07-01 Nicira股份有限公司 网络控制系统到公共云中的扩展
US10484233B2 (en) 2017-06-08 2019-11-19 At&T Intellectual Property I, L.P. Implementing provider edge with hybrid packet processing appliance
IT201800002192U1 (it) 2018-03-20 2019-09-20 SGW-LBO solution for the MEC platform
CN108768817B (zh) * 2018-05-22 2020-07-28 腾讯科技(深圳)有限公司 一种虚拟化网络组网系统、数据包发送方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017113300A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 路由确定方法、网络配置方法以及相关装置
CN106130900A (zh) * 2016-08-05 2016-11-16 浪潮(北京)电子信息产业有限公司 一种虚拟化网络分布式路由实现方法及系统

Also Published As

Publication number Publication date
US11258635B2 (en) 2022-02-22
US20200213154A1 (en) 2020-07-02
CN113261242A (zh) 2021-08-13
CN116319169A (zh) 2023-06-23
WO2020135659A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
US11095558B2 (en) ASIC for routing a packet
CN113273142B (zh) 通信系统和通信方法
CN113261242B (zh) 通信系统和由通信系统实现的方法
CN113302898B (zh) 通信系统、通信方法、非暂时性计算机可读介质
US11283707B2 (en) Segment routing with fast reroute for container networking
CA3106407C (en) Multi-cloud connectivity using srv6 and bgp
US10116559B2 (en) Operations, administration and management (OAM) in overlay data center environments
US10333836B2 (en) Convergence for EVPN multi-homed networks
US20210226910A1 (en) Efficient arp bindings distribution in vpn networks
CN113765782A (zh) 使用前缀独立收敛的针对底层故障的局部修复
US10187290B2 (en) Method, system, and apparatus for preventing tromboning in inter-subnet traffic within data center architectures
WO2016089575A1 (en) Inter-domain service function chaining
US10848432B2 (en) Switch fabric based load balancing
RU2675212C1 (ru) Адаптивная балансировка нагрузки при обработке пакетов

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant