CN114039912A - 基于物理硬件地址生成虚拟专用网络地址的路由区分符 - Google Patents

基于物理硬件地址生成虚拟专用网络地址的路由区分符 Download PDF

Info

Publication number
CN114039912A
CN114039912A CN202011087745.8A CN202011087745A CN114039912A CN 114039912 A CN114039912 A CN 114039912A CN 202011087745 A CN202011087745 A CN 202011087745A CN 114039912 A CN114039912 A CN 114039912A
Authority
CN
China
Prior art keywords
route
network
virtual
address
node
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.)
Granted
Application number
CN202011087745.8A
Other languages
English (en)
Other versions
CN114039912B (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.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
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 Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN114039912A publication Critical patent/CN114039912A/zh
Application granted granted Critical
Publication of CN114039912B publication Critical patent/CN114039912B/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • 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]
    • 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/04Interdomain routing, e.g. hierarchical 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/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • 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/66Layer 2 routing, e.g. in Ethernet based MAN's

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及基于物理硬件地址生成虚拟专用网络地址的路由区分符,描述了用于改进路由通告的技术。在一个示例中,方法包括:通过网络装置生成包括路由区分符值和与计算节点相关联的网络地址的虚拟专用网络地址,该路由区分符值基于计算节点的层二物理硬件地址;并且通过网络装置输出包括虚拟专用网络地址的虚拟专用网络路由。

Description

基于物理硬件地址生成虚拟专用网络地址的路由区分符
技术领域
本公开涉及计算机网络,并且更具体地涉及控制虚拟网络内的分组转发。
背景技术
在典型的云数据中心环境中,存在提供计算功能(例如,计算节点)和/或存储容量(例如,存储节点)以运行各种应用的互连服务器的大量集合。例如,数据中心包括托管(host)用于数据中心的客户的应用和服务的设施。数据中心例如托管诸如联网和存储系统、冗余电源以及环境控制的所有基础设施设备。在典型的数据中心中,服务器集群经由通过一层或多层物理网络交换机和路由器提供的高速交换结构互连。更复杂的数据中心为遍布全世界的基础设施提供位于各种物理托管设施中的用户支持设备。
软件定义网络(SDN)平台可以在数据中心中使用,并且在一些情况下,可以在虚拟路由器中使用逻辑上集中并且物理分布的SDN控制器和分布式转发平面,该虚拟路由器将网络从数据中心的物理路由器和交换机延伸到托管在虚拟化服务器(被称为计算节点)中的虚拟覆盖网络。SDN控制器提供虚拟化网络的管理、控制和分析功能,并且通过与虚拟路由器通信来编排虚拟路由器。
发明内容
通常,本公开例如描述了用于诸如在软件定义网络系统中改进路由通告(routeadvertisement)的技术。例如,本公开描述了用于使用托管虚拟网络目的地的计算节点的物理硬件地址生成和编码虚拟专用网络(VPN)地址的路由区分符的技术。例如,软件定义网络(SDN)控制器的控制节点基于发起VPN路由的计算节点的层二介质访问控制地址生成路由区分符。本公开的技术可以改进软件定义网络(SDN)平台内的流量流的转发。例如,该技术使得SDN控制器能够以避免接收装置接收可能在分布式SDN平台中引起路由问题的重复路由的方式转发从由SDN控制器管理的计算节点接收的路由。
在一些示例中,计算节点可以执行虚拟路由器以实现具有由计算节点托管的虚拟网络目的地的一个或多个虚拟网络的转发平面。在一些示例中,虚拟网络目的地是虚拟工作负载。SDN控制器的控制节点和计算节点的虚拟路由器进行通信以共享信息,以控制虚拟网络内的租户流量的转发到达这些虚拟网络目的地。与不同SDN控制器相关联的计算节点和控制节点可以布置在SDN集群中。
在一些示例中,响应于从计算节点接收指定虚拟专用网络路由的消息传递协议消息,SDN控制器的控制节点将到虚拟网络目的地的虚拟专用网络路由发送到SDN系统中的路由协议对等体。在一些情况下,诸如在多个SDN集群的情况下,可以通过不同SDN集群中的计算节点生成重复的VPN路由。为了避免这种问题并且区分VPN路由,虚拟专用网络路由包括由控制节点基于计算节点的物理硬件地址(例如,介质访问控制(MAC)地址)而不是基于计算节点的网络地址(例如,互联网协议(IP)地址)生成的路由区分符。通过基于L2物理硬件地址生成路由区分符,虚拟专用网络路由的对等接收者可以唯一地识别该路由。相对照地,当控制节点基于跨不同SDN集群可能不是全局唯一的计算节点的虚拟路由器的本地唯一IP地址生成路由区分符时,从控制节点接收虚拟专用网络路由的路由协议对等体可能不会将虚拟专用网络路由识别为不同的路由,并且因此,可能中断到目的地的流量转发。
本公开的技术可以提供一个或多个技术优点。例如,基于计算节点的物理硬件地址的路由区分符可以使得诸如SDN网关路由器的接收路由对等体能够适当地区分从不同SDN集群发起但是具有相同子网地址的虚拟专用网络路由。这导致SDN网关路由器将路由适当地存储为不同的虚拟路由,而不是存储单个路由,并且仅选择发起虚拟路由的一个计算节点,同时丢弃另一计算节点的流量,或者不适当地负载平衡跨两个计算节点的流量。
在一个示例方面,方法包括:通过SDN控制器并且基于计算节点的层二物理硬件地址生成与计算节点相关联的网络地址的路由区分符值;并且通过SDN控制器输出包括路由区分符值和与计算节点相关联的网络地址的路由。
在另一示例方面,SDN控制器包括与存储器通信的处理电路,该处理电路被配置为:基于计算节点的层二(L2)物理硬件地址生成与计算节点相关联的网络地址的路由区分符值;并且输出包括路由区分符值和与计算节点相关联的网络地址的路由。
在又一示例方面,计算机可读存储介质包括指令,当运行时,该指令使SDN控制器的一个或多个处理器:基于计算节点的层二物理硬件地址生成与计算节点相关联的网络地址的路由区分符值;并且输出包括路由区分符值和与计算节点相关联的网络地址的路由。
在又一方面,方法包括:通过网络装置生成包括路由区分符和与计算节点相关联的网络地址的虚拟专用网络地址,该路由区分符值基于计算节点的层二物理硬件地址;并且通过网络装置输出包括虚拟专用网络地址的虚拟专用网络路由。
在附图和以下描述中阐述了一个或多个示例的细节。从说明书和附图以及从权利要求中,其他特征、目标和优点将显而易见。
附图说明
图1是示出其中可以实现本文描述的技术的示例的具有数据中心的示例网络系统的框图。
图2是根据本公开的技术进一步详细示出图1的数据中心的示例实现的框图。
图3A和图3B是根据本公开的技术进一步详细示出图2的数据中心的示例实现的框图。
图4是进一步详细示出图2的数据中心的示例实现的框图。
图5是根据本公开的技术进一步详细示出SDN控制器的控制节点的示例的框图。
图6A至图6B是根据本公开的技术进一步详细示出计算节点的示例的框图。
图7是示出根据本文描述的技术的包括基于与计算节点相关联的物理硬件地址生成的路由区分符的虚拟专用网络地址的示例路由通告的框图。
图8是示出根据本公开的技术的SDN控制器的示例操作的流程图。
图9是示出根据本公开的技术的网络装置的示例操作的流程图。
贯穿附图和文本,相同的参考字符表示相同的元件。
具体实施方式
图1是示出其中可以实现本文描述的技术的示例的具有数据中心10的示例网络系统5的框图。在网络系统5中,SDN控制器32A至32B(“SDN控制器32”)、计算节点26A至26X(“计算节点26”)、SDN网关8A至8B(“SDN网关8”)以及互联网协议(IP)结构20的节点根据本文描述的技术操作以确保在云数据中心内执行的客户流量流和客户应用继续而不中断。
通常,数据中心10为通过服务供应商网络6耦接到数据中心10的客户4提供应用和服务的操作环境。客户4通过供应商边缘(PE)装置12耦接到服务供应商网络6。数据中心10托管诸如联网和存储系统、冗余电源以及环境控制的基础设施设备。服务供应商网络6可以耦接到由其他供应商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。
在一些示例中,数据中心10可以表示多个地理分布的网络数据中心中的一个。如图1的示例所示,数据中心10是为客户4提供网络服务的设施。客户4可以是诸如企业和政府或个人的集体实体。例如,网络数据中心可以为多个企业和终端用户托管网络服务。其他示例服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学或超级计算等。在一些示例中,数据中心10是个体网络服务器、网络对等体或其他。
在该示例中,数据中心10包括经由通过一层或多层物理网络交换机和路由器提供的IP结构20互连的一组存储系统和应用服务器。计算节点26是用作数据中心的计算节点的服务器。在一些示例中,术语“计算节点”和“服务器”在本文中可互换使用来指计算节点26。例如,计算节点26中的每一个可以提供用于执行一个或多个客户指定的虚拟机(图1中的“VM”)的操作环境。通过耦接到脊交换机(spine switch)22A至22M(统称为“脊交换机22”)的分布层的一组互连的叶交换机(1eaf switch)24A至24N(统称为“叶交换机24”)而提供IP结构20。叶交换机24还可以被称为架顶式(TOR)交换机。脊交换机22还可以被称为脊交换机。尽管未示出,但是数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、安全装置(诸如防火墙、入侵检测和/或入侵防御装置)、服务器、计算机终端、膝上型计算机、打印机、数据库、无线移动装置(诸如蜂窝电话或个人数字助理)、无线接入点、桥接器、电缆调制解调器、应用加速器或其他网络装置。
在该示例中,叶交换机24和脊交换机22为计算节点26提供到IP结构20的冗余(多宿主)连接。脊交换机22聚集流量流,并且提供叶交换机24之间的高速连接。叶交换机24是提供层二(例如,MAC)和/或层3(例如,IP)路由和/或交换功能的网络装置。叶交换机24和脊交换机22各自包括一个或多个处理器和存储器,并且能够执行一个或多个软件处理。SDN网关8(也称为网关路由器)是执行层3路由的路由装置以通过服务供应商网络6在数据中心10与客户4之间路由网络流量。SDN网关8提供冗余网关以在IP结构20与服务供应商网络6之间转发和接收分组。
SDN控制器32A提供根据本公开的一个或多个示例的用于促进数据中心10内的一个或多个虚拟网络的操作的逻辑上并且在一些情况下物理上集中的控制器。贯穿本公开,术语SDN控制器和虚拟网络控制器(“VNC”)可以互换使用。在一些示例中,SDN控制器32A响应于经由北向应用编程接口(API)31从编排引擎30接收的配置输入而操作,该北向应用编程接口(API)31进而响应于从管理员28接收的配置输入而操作。在2013年6月5日提交的并且题为PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS的国际申请号PCT/US2013/044378中找到了关于结合数据中心10的其他装置或其他软件定义网络而操作的SDN控制器32A的额外信息,将其通过引用并入本文,如本文充分阐述的。
在一些示例中,编排引擎30管理数据中心10的功能,诸如计算、存储、联网以及应用资源。例如,编排引擎30可以为数据中心10内或跨数据中心的租户创建虚拟网络。编排引擎30可以将虚拟机(VM)附接到租户的虚拟网络。编排引擎30可以将租户的虚拟网络连接到某个外部网络,例如,互联网或VPN。编排引擎30可以跨一组VM或到租户网络的边界实现安全策略。编排引擎30可以在租户的虚拟网络中部署网络服务(例如,负载平衡器)。
在一些示例中,SDN控制器32A管理网络和联网服务,诸如负载平衡、安全以及经由南向API 33将资源从计算节点26分配到各种应用。即,南向API 33表示由SDN控制器32A利用的一组通信协议,以使网络的实际状态与由编排引擎30指定的期望状态等同。例如,一个这样的通信协议可以包括诸如可扩展消息传递和出席协议(XMPP)的消息传递协议。例如,SDN控制器32A通过配置物理交换机(例如叶交换机24、脊交换机22)、物理路由器、物理服务节点(诸如防火墙和负载平衡器)以及虚拟服务(诸如VM中的虚拟防火墙)来实现来自编排引擎30的高级请求。SDN控制器32A维护状态数据库内的路由、联网和配置信息。SDN控制器32A将路由信息和配置信息的合适子集从状态数据库传送到计算节点26A至26X中的每一个上的虚拟路由器(VR)代理36A至36X(图1中的“VA”)。
与不同SDN控制器相关联的计算节点和控制节点可以布置在SDN集群中。集群是形成SDN控制器的一组真实和/或虚拟服务器,包括由SDN控制器管理的控制节点和计算节点。例如,如图1所示,系统可以包括可以各自与不同的服务器集群相关联的两个独立的SDN控制器32A和32B。在一些示例中,SDN控制器32B管理第二组计算节点(未示出)。在其他示例中,SDN控制器32B管理计算节点26的子集,而SDN控制器SDN 32A管理计算节点26的不同的非重叠的子集。
通常,任意两个网络装置之间(诸如IP结构20内的网络装置之间或计算节点26与客户4之间或计算节点26之间)的流量例如可以使用许多不同的路径遍历物理网络。例如,两个网络装置之间可能存在若干相等成本的不同路径。在一些情况下,可以在每个网络交换节点处使用称为多路径路由的路由策略将属于从一个网络装置到另一网络装置的网络流量的分组分布到各种可能的路径中。例如,互联网工程任务组(IETF)RFC 2992“Analysisof an Equal-Cost Multi-Path Algorithm”描述了一种用于沿着相等成本的多个路径路由分组的路由技术。RFC 2992的技术通过对在单个确定性路径上发送来自具体网络流的所有分组的分组报头字段进行散列来分析涉及将流分配到仓的一个具体多路径路由策略。
例如,“流”可以由在分组报头中使用的五个值或“五元组”(即,用于通过物理网络路由分组的协议、源IP地址、目的地IP地址、源端口和目的地端口)来定义。例如,协议指定通信协议(诸如TCP或UDP),并且源端口和目的地端口是指连接的源端口和目的地端口。与具体流条目匹配的一组一个或多个分组数据单元(PDU)表示流。可以使用PDU的任何参数(诸如源和目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签以及接收流的网络装置的入口端口)对流进行广泛地分类。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、源自具体MAC地址或IP地址的所有PDU、具有相同VLAN标签的所有PDU或者在相同交换机端口处接收的所有PDU。
如本文所描述的,计算节点26中的每一个包括为数据中心10内的对应虚拟网络执行多个路由实例并且将分组路由到在由服务器提供的操作环境内执行的适当虚拟机的相应虚拟路由器(图1中的“VR”)。由计算节点26A的虚拟路由器例如从底层物理网络结构接收的分组可以包括外部报头以允许物理网络结构将有效载荷或“内部分组”隧道化到执行虚拟路由器的计算节点26的网络接口的物理网络地址。外部报头不仅可以包括服务器的网络接口的物理网络地址,而且还可以包括虚拟网络标识符(诸如虚拟可扩展LAN(VXLAN)标签或多协议标签交换(MPLS)标签),该虚拟网络标识符识别虚拟网络中的一个以及由虚拟路由器或接口执行的对应路由实例。即,MPLS标签可以映射到路由实例或接口。内部分组包括具有符合由虚拟网络标识符识别的虚拟网络的虚拟网络寻址空间的目的地网络地址的内部报头。在一些方面,虚拟路由器缓冲并聚集在递送到分组的适当路由实例之前从底层物理网络结构接收的多个隧道化分组。
在图1的示例中,SDN控制器32A学习路由和其他信息(诸如配置信息)并且将其分布到数据中心10中的所有计算节点。在从SDN控制器32A接收路由信息时,在计算节点内运行的VR代理36通常利用转发信息对数据转发元件(虚拟路由器)进行编程。SDN控制器32A使用诸如XMPP协议的消息传递协议将路由和配置信息发送到VR代理36。在XMPP中,SDN控制器32和代理在同一信道上传送路由和配置。当从VR代理36接收覆盖网络路由(虚拟路由)时,SDN控制器32A用作消息传递协议客户端,并且在这种情况下,VR代理36用作消息传递协议服务器。相对照地,当SDN控制器将路由(包括从SDN网关或其他计算节点学习的覆盖网络路由)发送到VR代理36时,SDN控制器32A用作到作为消息传递协议客户端的VR代理36的消息传递协议服务器。
根据本公开的技术,SDN控制器32A的控制节点使用托管虚拟网络目的地的计算节点的物理硬件地址生成和编码虚拟专用网络地址的路由区分符。虚拟网络目的地可以是虚拟网络端点,该虚拟网络端点例如是计算节点工作负载并且可以表示虚拟机和/或容器。例如,响应于从计算节点26接收指定VPN路由的消息传递协议消息,SDN控制器32A的控制节点将到虚拟网络目的地的VPN路由发送到SDN系统中的一个或多个路由协议对等体(诸如SDN网关8)。在其他字段中,VPN路由包括具有由控制节点生成的路由区分符值的路由区分符字段。
路由区分符是附接到路由的标识符,使得路由器能够区分路由属于哪个VPN或虚拟专用LAN服务(VPLS)。每个路由实例可以具有与其相关联的一个或多个唯一路由区分符(RD)。RD用于在VPN周围设置边界,使得可以在不同的VPN中使用相同的IP地址前缀而不使其重叠。如果实例类型是VRF,则需要路由区分符语句。
如本文所描述的,控制节点基于计算节点的层二(L2)物理硬件地址(例如,介质访问控制(MAC)地址)而不是基于计算节点的网络地址(例如,互联网协议(IP)地址)生成路由区分符值。控制节点可以经由地址解析协议或邻居发现协议请求和响应从计算节点获得计算节点的L2物理硬件地址,或者在一些示例中,可以经由包括在VPN路由中的相同消息传递协议消息发送计算节点的MAC地址。
在另一示例中,网络装置可以生成包括路由区分符值和与计算节点相关联的网络地址的虚拟专用网络地址,该路由区分符值基于计算节点的层二物理硬件地址。网络装置输出包括虚拟专用网络地址的虚拟专用网络路由。与计算节点相关联的网络地址是由计算节点执行的虚拟网络端点的虚拟网络地址。
通过基于L2物理硬件地址生成路由区分符,虚拟路由的对等接收者可以在更多情况下唯一地识别路由。相对照地,当SDN控制器32基于跨不同的SDN集群可能不是全局唯一的计算节点26的虚拟路由器的本地唯一IP地址生成由计算节点26通告的路由的路由区分符时,从SDN控制器32接收虚拟路由的路由协议对等体可能不会将虚拟路由识别为不同的路由,并且因此,可能中断到目的地的流量转发。
本公开的技术可以提供一个或多个技术优点。例如,诸如SDN网关路由器8的接收路由对等体可以适当地区分与具有相同子网地址的不同SDN集群中的不同计算节点相关联的虚拟路由(VPN路由)。这导致SDN网关路由器8将路由适当地存储为不同的虚拟路由,而不是存储单个路由并且仅选择发起虚拟路由的一个计算节点,同时丢弃另一计算节点的流量,或者不适当地负载平衡跨两个计算节点的流量。
此外,如果接收路由对等体还被配置为使得其知道新的路由区分符类型,则接收路由对等体还可以学习包含在所接收的路由中的MAC地址。例如,SDN网关路由器8A可以基于所接收的路由的路由区分符学习并且存储计算节点26A的MAC地址,并且SDN网关路由器8A可以进而将MAC地址通告为EVPN类型2路由,并且直接与计算节点26A形成VXLAN隧道。
图2是根据本公开的技术进一步详细示出图1的数据中心10的示例实现方式的框图。在图2的示例中,数据中心10包括计算节点26A至26X,该计算节点26A至26X包括虚拟路由器42A至42X(统称为“虚拟路由器42”,有时称为“虚拟路由器(vrouter)”)。响应于从SDN控制器32A接收的指令,虚拟路由器42动态地创建和管理可用于应用实例之间的通信的一个或多个虚拟网络(“VN1、VN0”)46。
在一个示例中,虚拟路由器42将虚拟网络执行为覆盖网络,该覆盖网络提供将应用的虚拟地址与应用正在其上执行的计算节点26A至26X(“计算节点26”)中的一个计算节点的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自身的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术在物理网络上在虚拟网络46内和跨虚拟网络46传输分组。
每个虚拟路由器42在每个计算节点26的管理程序、主机操作系统或其他组件内执行。每个计算节点26表示能够执行虚拟机48的x86或其他通用或专用服务器。在图2的示例中,虚拟路由器42A在管理程序40(也经常称为虚拟机管理器(VMM))内执行,该管理程序40提供允许多个操作系统在一个计算节点26上同时运行的虚拟化平台。在图2的示例中,虚拟路由器42A管理虚拟网络46,每个虚拟网络46提供用于在由管理程序40提供的虚拟化平台之上执行一个或多个虚拟机(VM)48的网络环境。每个VM 48与虚拟网络VN0至VN1中的一个虚拟网络相关联,并且表示诸如网络服务器、数据库服务器、企业应用的运行客户应用或托管用于创建服务链的虚拟化服务的租户VM。在一些情况下,任意一个或多个计算节点26或另一计算装置直接托管客户应用,即,不作为虚拟机。本文所引用的虚拟机(例如,VM 48、计算节点26或托管客户应用的独立计算装置)可以可选地被称为“主机”。
在主机上运行的VM 48的每个接口连接到VRF,该VRF包含对应网络的转发表,该转发表包含该接口的IP地址。vRouter仅具有在该主机上具有接口的网络的VRF,包括连接到主机的物理接口的结构VRF。虚拟网络使用封装隧道在不同主机上的VM 48之间传输分组,并且结构VRF与VM VRF之间发生封装和解封装。
通常,每个VM 48可以是任意类型的软件应用,并且被分配用于在对应虚拟网络46内使用的虚拟地址,其中,每个虚拟网络可以是由虚拟路由器42A提供的不同虚拟子网。VM48可以被分配其自身的虚拟层3(L3)IP地址,例如用于发送和接收通信,但是不知道虚拟机正在其上执行的物理计算节点26A的IP地址。以这种方式,“虚拟地址”是与底层物理计算机系统(例如,图2的示例中的计算节点26A)的逻辑地址不同的应用的地址。虚拟地址在本文中还可以被称为“虚拟接口”。
在一个实现方式中,每个计算节点26包括与SDN控制器32A通信的VR代理36A至36X中的对应一个VR代理,并且响应于此,指导虚拟路由器42以便控制虚拟网络46的覆盖并且协调计算节点26内的数据分组的路由。通常,每个VR代理36与SDN控制器32A通信,该SDN控制器32A生成命令以控制通过数据中心10的分组的路由。
VR代理36在用户空间中执行,并且用作VM 48与SDN控制器32A之间的控制平面消息的代理。例如,VM 48可以请求经由VR代理36A使用其虚拟地址发送消息,并且VR代理36A可以进而发送消息并且请求针对发起第一消息的VM 48的虚拟地址接收对消息的响应。在一些情况下,VM 48调用由VR代理36A的应用编程接口呈现的程序或函数调用,并且VR代理36A还处理消息的封装,包括寻址。
在一些示例实现方式中,每个计算节点26A进一步包括与编排引擎30直接通信的编排代理(图2中未示出)。例如,响应于来自编排引擎30的指令,编排代理传送在相应计算节点26上执行的具体VM 48的属性,并且可以创建或终止各个VM。
在一个示例中,网络分组(例如,由虚拟网络域内的虚拟机48执行的应用的实例生成或消费的层3(L3)IP分组或层二(L2)以太网分组)可以被封装在由物理网络传输的另一分组(例如,另一IP或以太网分组)中。在虚拟网络中传输的分组在本文中可以被称为“内部分组”,而物理网络分组在本文中可以被称为“外部分组”或“隧道分组”。可以在虚拟路由器42内(例如,在每个计算节点26上运行的管理程序或主机操作系统内)执行虚拟网络分组在物理网络分组内的封装和/或解封装。作为另一示例,在IP结构20的边缘处在第一跳架顶式(TOR)交换机24处执行封装和解封装功能,该第一跳架顶式(TOR)交换机24是从发起分组的应用实例移除的一跳。该功能在本文中被称为隧道化,并且可以在数据中心10内使用来创建一个或多个覆盖网络。除IP-in-IP之外,可以使用的其他示例隧道协议包括GRE上的IP、VxLAN、GRE上的MPLS、UDP上的MPLS。
如上所述,SDN控制器32A提供逻辑集中式控制器,用于促进数据中心10内的一个或多个虚拟网络的操作。例如,SDN控制器32A维护路由信息库,例如,存储物理网络以及数据中心10的一个或多个覆盖网络的路由信息的一个或多个路由表。类似地,虚拟路由器42维护诸如一个或多个路由和/或转发表的路由信息。在一个示例实现方式中,管理程序40的虚拟路由器42A实现每个虚拟网络46的网络转发表(NFT)44。通常,每个NFT 44存储对应虚拟网络46的转发信息,并且识别数据分组将被转发到何处并且分组是否将被封装在隧道协议中,诸如利用可以包括虚拟网络协议堆栈的不同层的一个或多个报头的隧道报头。
例如,虚拟机VM1 48可以通过内部链路将“内部分组”发送到虚拟路由器42A。虚拟路由器42A使用NFT1来查询分组的虚拟网络目的地网络地址。NFT1指定虚拟路由器42A的出站接口和分组的封装。虚拟路由器30A应用该封装以添加隧道报头以生成外部分组,并且在出站接口上输出外部分组,在这种情况下朝向叶交换机24A输出外部分组。
路由信息例如将分组关键信息(例如,目的地IP信息和来自分组报头的其他选择信息)映射到由虚拟路由器42和IP结构20提供的网络内的一个或多个指定的下一跳。在一些情况下,下一跳是链式下一跳,其指定在转发分组时对每个分组执行的一组操作,诸如可以用于洪泛下一跳和多播复制。如图2所示,每个虚拟网络46提供用于通过IP结构20建立的覆盖网络的封装的分组通信的通信框架。以这种方式,与任意虚拟机48相关联的网络分组可以经由覆盖网络作为封装的分组通信传输。
每个VR代理36可以通过XMPP会话将消息发送到SDN控制器32A,该消息将虚拟路由传送到计算节点26的VM的虚拟接口(虚拟地址)。虚拟路由在本文中还可以被称为覆盖网络路由。例如,VR代理36A发送包含计算节点26A的虚拟路由的XMPP消息37A。SDN控制器32A接收消息并且存储虚拟路由以覆盖路由信息,并且可以进而将从第一VR代理36接收的一个或多个覆盖路由通告到SDN网关8(例如,经由BGP的多协议扩展(MP-BGP)),诸如经由路由通告38A。MP-BGP是允许分布不同的地址族的BGP的扩展。如果两个集群之间存在网关路由器(如图3B所示),则SDN控制器32A还可以将覆盖路由通告到其他控制节点54,诸如通告到SDN32B的控制节点。在一些示例中,任意虚拟路由可以包括前缀、与计算节点26的服务器相关联的下一跳地址以及识别在下一跳服务器处配置的虚拟路由和转发实例的标签或其他数据。虚拟路由还可以包括路由区分符(RD)。
在Rosen等人的“BGP/MPLS IP Virtual Private Networks(VPNs)”,Request forComments 4364,Network Working Group,February 2006中更完整地描述了基于IP的VPN的一个示例,其全部内容通过引用并入本文。在S.Mackie等人的“BGP-Signaled End-System IP/VPNs,”Network Working Group Internet-Draft,December 15,2016中描述了BGP信令IP/VPN的进一步细节,其全部内容通过引用并入本文。在T.Bates等人的“Multiprotocol Extensions for BGP-4,”Request for Comments 4760,NetworkWorking Group,January 2007中描述了BGP的多协议扩展,其全部内容通过引用并入本文。
路由区分符是在BGP-MPLS VPN的上下文中使用的地址限定符。路由区分符用于区分由不同的MP-BGP对等体发送的VPNv4(可选地,“VPN-IPv4”)路由。路由区分符是8字节字段。路由区分符与4字节IP地址一起形成12字节VPNv4前缀。由于VPNv4路由没有存储在任意路由装置的转发信息库(FIB)中,因此其从不用于转发决策。路由区分符(RD)是由两个主要字段:类型字段(2位组)和值字段(6位组)组成的8位组值。类型字段确定应该如何解释值字段。以下类型如表1所示定义:
类型编号
类型0 2字节ASN+4字节子字段
类型1 4字节IP+2字节子字段
类型2 4字节ASN+2字节子字段
表1
利用类型2VPN路由,在SDN控制器的控制节点处,将在虚拟节点内启动的VM的/32IP地址添加到与虚拟节点(VN)相对应的VRF上。VRF具有类似路由目标(RT)和路由区分符(RD)的常见属性。利用类型2VPN路由,控制节点使用计算节点的IP生成RD,该IP为4字节IP地址和2字节虚拟网络ID。VN-ID由配置模块顺序分配,并且跨每个路由实例的集群是唯一的。通常利用类型1RD通告VPNv4路由。例如,对于IP地址为10.204.217.108的计算节点和VNID为0的VRF,在不存在本公开的技术的情况下,由控制节点生成的RD将为10.204.217.108:0。
SDN控制器的每个控制节点将从计算节点接收的XMPP路由作为VPNv4路由朝向其他BGP扬声器通告,例如,路由通告38A。BGP扬声器可以包括其他控制节点54以及诸如SDN网关路由器8的外部BGP扬声器。
本文描述的SDN架构支持控制数据和管理接口的分离。假设管理接口被分配了IP地址,该IP地址从外界可到达并且需要是唯一的。然而,控制数据网络从专用寻址空间获取,并且在集群本地。这可以跨多个独立的集群重复使用。
响应于接收到路由通告38A,SDN网关8A(网关路由器)存储VPN路由。然后,SDN网关8A可以将路由通告到其路由对等体,诸如其他网关路由器、其他SDN控制器控制节点以及计算节点。SDN网关8A可以根据所存储的VPN路由转发网络流量。例如,SDN网关8A可以将虚拟路由存储到包括虚拟网络目的地的虚拟网络的虚拟路由和转发(VRF)实例,并且基于由SDN网关8A存储的虚拟路由将流量转发到计算节点26A。
仅出于示例的目的示出图2所示的数据中心10的架构。可以在图2的示例数据中心10以及本文未具体描述的其他类型的数据中心中实现本公开所阐述的技术。本公开中的任何内容不应被解释为将本公开的技术限制到图2所示的示例架构。
图3A和图3B是根据本公开的技术示出在图2的数据中心中通告VPN路由的控制节点的示例的框图。图3A示出了与两个不同的SDN集群(被称为集群60A和集群60B)对等的单个网关路由器(SDN网关8A)的情景。在两个集群中,使用同一子网作为控制数据网络。集群60A和集群60B中的计算节点54A和54N还可以具有相同的IP地址(10.10.10.10/32)。可能存在这样的可能性:在两个集群中,VN可以获得相同的VN-ID。vhost0是计算节点上的逻辑接口。VN-ID是由配置节点生成并且被发送到控制节点的2字节ID。
在这种情况下,对于相同的VM IP地址,响应于从对应计算节点26A、26X接收相应的XMPP消息37B、37C,控制节点54A和54N中的每个控制节点将经由MP-BGP发出类似的VPNv4路由38B、38C。这将导致SDN网关8A接收两个相同的VPNv4条目并且将其存储到其VPN路由58的路由表。然后,SDN网关8A运行“最佳路由选择算法”,并且仅选择要进一步通告的一个VPN路由192.168.1.100:1:10.10.10.10/96。这可能导致以下情况:由于期望路由被SDN网关8A解释为重复,因此期望路由根本没有单独通告出去。在分布式SDN架构中,这是非常可能的情况,因为当涉及控制数据网络的地址分配、VN-ID和VN子网的分配时,两个集群是独立的。
可选选项是使用诸如每个SDN集群的2字节RDClusterSeed的配置播种参数。然后,RD将由2字节RDClusterSeed加上来自控制IP的2字节加上2字节组成。尽管这更接近于解决问题,但是其不是完全故障安全(fail-safe)的,因为并未保证RDClusterSeed跨集群将是唯一的。
图3B是示出分别从控制节点54A、54N接收BGP-MP消息38D、38E的网关节点72A的框图,其中,BGP-MP消息包括根据本公开的技术生成的路由区分符。为了完全克服RD碰撞问题,本公开提出通过控制节点54改变RD值的生成。并非使用控制节点26的IP地址,本文描述的技术使用计算节点的L2物理硬件地址,诸如计算节点26的控制数据接口的6字节MAC地址。为此,控制节点54可以使用6字节MAC地址的管理员字段和子管理员字段来通告RD。这将被通告为新的类型5RD路由,如表2所示。尽管针对类型值5描述了新的RD路由类型,但是可以使用另一值。RD路由类型的值由互联网编号分配机构(IANA)分配。
类型(2字节) 值(6字节)
新的值5 计算节点的控制数据接口的MAC地址
表2
由于MAC地址在任意集群内的任意计算节点26上是唯一的,因此保证了VPNv4路由的唯一性。在图3B的示例中,MAC地址被用作生成RD值的基础。计算节点26A的MAC地址为aa:bb:cc:dd:ee:01,并且计算节点26X的MAC地址为aa:bb:cc:dd:ee:02。计算节点26A发送XMPP消息37D,并且计算节点26X发送XMPP消息37E。在一些示例中,XMPP消息37D、37E指定对应计算节点的MAC地址。控制节点54可以存储XMPP消息中指定的MAC地址。在其他示例中,如果XMPP消息没有指定MAC地址,并且如果控制节点54没有为计算节点26存储的MAC地址,控制节点54已经从计算节点26接收到XMPP消息,则控制节点54可以将ARP请求或邻居发现协议请求发送到计算节点26以获得其MAC地址。即使跨两个不同集群的计算节点IP、VN-ID以及VM-IP相同,所发出的VPNv4路由也会由于计算节点的唯一MAC地址不同。这将导致SDN网关8A接收两个唯一的VPNv4条目:aa:bb:cc:dd:ee:01:10.10.10.10/96和aa:bb:cc:dd:ee:02:10.10.10.10/96。不需要“最佳路由选择算法”,并且SDN网关8A将进一步存储和通告这两个路由。
这导致SDN网关路由器8A将两个路由适当地存储为不同的虚拟路由,而不是存储单个路由并且仅选择计算节点中发起虚拟路由的一个计算节点同时丢弃另一计算节点的流量,或者不适当地负载平衡跨两个计算节点的流量。例如,并非将每个可选分组发送到集群60A并且将其余的可选分组发送到集群60B,如负载平衡分组到由不同控制节点通告的两个看似相同的路由可能发生的那样,SDN网关路由器8A可以将流量正确地转发到正确的集群和目的地,从而改进网络功能和用户体验。
尽管出于示例的目的描述了SDN集群(控制节点服务器和计算节点服务器的集合)方面,但是在一些示例中,本公开的技术可以应用于不必涉及多个SDN集群的系统。例如,集群中的一个VM可能需要与由一些路由装置管理的裸金属服务器(BMS)通信。在这种情况下,本公开的技术可以应用于VM到BMS通信。
图4是进一步详细示出图2的数据中心的示例实现方式的框图。在图4的示例中,SDN控制器32A包括一个或多个分析节点50A至50X(统称为“分析节点50”)、一个或多个配置节点52A至52X(统称为“配置节点52”)以及控制节点54A至54X(统称为“控制节点54”)。通常,节点50、52以及52中的每个节点可以实现为单独的软件过程,并且节点可以分布在提供用于执行软件的环境的多个硬件计算平台上。此外,每个节点维护存储在集中式或分布式数据库内的状态数据库56。在一些示例中,状态数据库56是NoSQL数据库。在一些示例中,状态数据库56是数据库集群。
通常,分析节点50的任务是收集、存储、关联和分析来自数据中心10内的虚拟和物理网络元件的信息。该信息可以包括用于管理数据中心10的路由和网络配置的统计、日志、事件和错误。分析节点50将该信息存储在状态数据库56中。
配置节点52将编排引擎30的高级数据模型转换为适于与诸如物理交换机22、24和VR代理36的网络元件交互的低级模型。配置节点52将SDN控制器32A的配直状态的持久副本保持在状态数据库56(“状态数据56”)内。
控制节点54实现负责维护短暂网络状态的逻辑集中式控制平面。控制节点54彼此交互,并且与诸如计算节点26的VR代理36和虚拟路由器42的网络元件交互,以确保网络状态最终与由编排引擎30指定的期望状态一致。通常,控制节点54从配置节点52接收SDN控制器32A的配置状态信息,并且经由IBGP彼此交换路由,以确保所有控制节点54具有相同的网络状态。此外,控制节点54经由XMPP与计算节点26上的VR代理36交换路由。
控制节点54还例如经由XMPP将诸如路由实例和转发策略的配置状态信息传送到VR代理36,以便安装在相应的虚拟路由器42内。在一些示例中,控制节点54可以代表计算节点26代理流量。这些代理请求可以通过XMPP接收。此外,控制节点54经由BGP与SDN网关8A交换路由,并且经由Netconf与服务节点21交换SDN控制器32A的配置状态。如本文所描述的,控制节点54被配置为基于计算节点26的层二(L2)物理硬件地址生成与计算节点26相关联的网络地址的路由区分符值,并且输出包括路由区分符值和与计算节点相关联的网络地址的路由。
配置节点52提供发现服务,客户4可以使用该发现服务来定位网络内可用的各种服务。例如,如果VR代理36A尝试与控制节点54A连接,则其使用由配置节点52提供的发现服务来发现控制节点54A的IP地址。在VM 48上执行的客户端可以使用本地配置、DHCP或DNS来定位配置节点52内的服务发现服务器。
在一些示例中,配置节点52呈现与编排引擎30接口的北向API。编排引擎30使用该接口来使用高级数据模型安装配置状态。配置节点52进一步包括消息总线,以促进内部组件之间的通信。配置节点52进一步包括发现编排引擎30的高级模型变化并且将这些变化转换为由SDN控制器32A管理的低级数据模型的对应变化的转换器。配置节点52进一步包括IF-MAP服务器,该IF-MAP服务器提供南向API以将所计算的低级配置向下推送到控制节点54。此外,配置节点52包括分布式应用管理器,该分布式应用管理器用于分配唯一对象标识符并且实现跨数据中心10的事务。
仅出于示例的目的示出图4所示的数据中心10的架构。可以在图4的示例数据中心10以及本文未具体描述的其他类型的数据中心中实现本公开所阐述的技术。本公开中的任何内容不应被解释为将本公开的技术限制到图4所示的示例架构。
图5是根据本公开的技术进一步详细示出SDN控制器的控制节点的示例的框图。控制节点54被配置为与多个其他类型的节点(包括配置节点52A至52X(“配置节点52”)、其他控制节点54B至54X、计算节点62A至62X(“计算节点62”)和网关节点72A至72N(“网关节点”))通信。控制节点54还与IP结构20通信,如本文所描述的,IP结构20可以由例如包括脊交换机和叶交换机的装置组成。控制节点54A提供用于执行协议70的操作环境。协议70可以包括例如XMPP过程70A、NETCONF过程70B、BGP过程70C和IF-MAP过程70D。
控制节点使用IF-MAP从配置节点接收配置状态。控制节点使用IBGP与其他控制节点交换覆盖网络路由,以确保所有控制节点具有相同的覆盖网络状态。控制节点使用XMPP与计算节点上的vRouter代理交换覆盖网络路由(例如,VPN路由)。控制节点还使用XMPP发送诸如路由实例和转发策略的配置状态。控制节点代表计算节点代理特定类型的流量。这些代理请求还通过XMPP接收。控制节点使用BGP与网关节点(路由器和交换机)交换覆盖网络路由。控制节点还使用NETCONF发送配置状态。
控制节点54A使用接口到元数据访问点(IF-MAP)过程70D从一个或多个配置节点52接收配置信息。IF-MAP过程70D可以包括用于执行软件指令的电路,该软件指令用于根据IF-MAP协议从配置节点52发送和接收通信。IF-MAP过程70D将从配置节点52接收的配置信息存储到配置状态66(“配置状态(CONFIG.STATE 66)”)。
控制节点54A使用BGP过程70C与包括控制节点54B至54X和网关节点72的BGP对等体交换BGP消息。网关节点72可以包括诸如SDN网关8的一个或多个SDN路由器。BGP过程70C例如可以实现多协议BGP(MP-BGP)。BGP过程70C可以包括用于执行软件指令的电路,该软件指令用于根据BGP协议与控制节点54B至54X发送和接收BGP消息,包括MP-BGP更新消息。BGP过程70C存储从来自网关节点72和控制节点54B至54X的BGP路由通告接收的覆盖网络路由以覆盖路由信息65。
控制节点54A根据XMPP使用XMPP过程70A与计算节点交换消息。控制节点54A经由XMPP会话交换消息。计算节点62可以与图1至图3中的计算节点26相对应。XMPP过程70A可以包括用于执行软件指令的电路,该软件指令用于根据XMPP协议与计算节点62交换XMPP消息。在P.Saint-Andre,Extensible Messaging and Presence Protocol(XMPP):Core,IETFRFC 6120,March 2011中进一步详细描述了XMPP,其全部内容通过引用并入本文。根据上下文,控制节点54A(并且更具体地,控制节点54A的XMPP过程70A)可以用作相对于一个计算节点62的XMPP客户端或XMPP服务器。例如,控制节点54A可以用作XMPP服务器,并且计算节点62可以是订阅由控制节点54A发布的信息(诸如来自各个计算节点62的配置状态66的配置信息和来自与各个计算节点62有关的覆盖路由信息65的路由信息)的XMPP客户端。
作为另一示例,控制节点54A可以用作作为XMPP服务器的一个或多个计算节点62的XMPP客户端,其中,控制节点54A订阅由计算节点62发布的信息,诸如由计算节点62从其他来源学习的路由信息。XMPP过程70A经由XMPP会话从计算节点62A接收覆盖网络路由,并且存储覆盖网络路由存储以覆盖路由信息65。由XMPP过程70A学习的覆盖网络路由可以被泄露到BGP过程70C,并且BGP过程70C进而可以将BGP路由通告发送到其BGP对等体(例如,其他计算节点或SDN网关),该BGP路由通告在经由XMPP从计算节点62学习的覆盖路由信息65中通告覆盖网络路由。在一些示例中,控制节点54A的NETCONF过程70B使得控制节点54A能够经由NetConf协议与网关节点72通信。
响应于XMPP过程70A从一个计算节点62接收到通告与一个计算节点62上的新的VM相关联的路由的XMPP消息,BGP过程70C基于XMPP消息生成路由通告,该路由通告包括新的VM的VPN路由。例如,该切换可能由于通过上述XMPP过程70A学习的覆盖网络路由的泄露而发生。控制节点54A基于对应计算节点的MAC地址,根据本文描述的技术生成路由区分符值。BGP过程70C在路由通告中包括VPN路由的路由区分符值。控制节点54A诸如经由MP-BGP会话将路由通告输出到网关节点72A至72N中的一个或多个。
在一些示例中,由控制节点54A从计算节点接收的XMPP消息可以指定对应计算节点的MAC地址。控制节点54A可以存储XMPP消息中指定的MAC地址,诸如以覆盖路由信息65。在其他示例中,如果XMPP消息没有指定MAC地址,并且如果控制节点54A没有为计算节点26存储的MAC地址,控制节点54已经从计算节点26接收到XMPP消息,则控制节点54A可以将ARP请求发送到计算节点26以获得其MAC地址。
图6A至图6B是根据本公开的技术进一步详细示出计算节点的示例的框图。在图6A至图6B的示例中,计算节点是图5的计算节点62A。计算节点62A可以是图1至图4的一个计算节点26。计算节点62A托管VM 82A至82N(“VM 82”),并且可以是例如通用x86服务器。例如,VM 82是诸如网络服务器、数据库服务器、企业应用的运行客户应用或托管用于创建服务链的虚拟化服务的租户VM。在一个示例配置中,Linux是主机操作系统(OS)。
计算节点中的两个组件实现了虚拟路由器,即,vRouter代理84和vRouter转发平面90。vRouter转发平面90位于内核(例如,Linux)中,并且vRouter代理84是本地控制平面。
vRouter代理84是在内核内运行的用户空间过程。vRouter代理84用作本地轻型控制平面,并且负责以下功能。vRouter代理84使用XMPP会话与控制节点54交换诸如路由的控制状态。vRouter代理84使用XMPP从控制节点54接收诸如路由实例和转发策略的低级配置状态。vRouter代理84将诸如日志、统计和事件的分析状态报告到分析节点50(图3)。vRouter代理84将转发状态安装到vRouter转发平面90中。vRouter代理84可以与计算节点62A的Nova代理(未示出)合作发现VM的存在和属性。vRouter代理84对每个新流的第一分组应用转发策略,并且在转发平面的流表中安装流的流条目。例如,vRouter代理84可以代理DHCP、ARP、DNS以及MDNS中的一个或多个。在一些实现方式中,可以包括额外的代理。每个vRouter代理84连接到至少两个控制节点54,以在主动-主动冗余模型中冗余。
在一些示例中,vRouter代理84从控制节点54接收ARP请求,以请求计算节点62A的控制数据接口的MAC地址。vRouter代理84生成指定MAC地址的ARP答复。
图6B进一步详细示出了计算节点62A的虚拟路由器(“vRouter”)转发平面90。vRouter转发平面90作为可加载的内核过程(例如,在Linux中)运行。vRouter转发平面90负责以下功能:vRouter转发平面90使得能够封装要发送到覆盖网络的分组和解封装要从覆盖网络接收的分组。
对于相应的租户A、B和C,路由实例92A至92C表示虚拟路由和转发实例(“VRF”)。路由实例92A至92C(“路由实例92”)包括对应的FIB94A至94C(“FIB 94”)和流表96A至96C(“流表96”)。vRouter转发平面90可以包括被称为“结构VRF”的额外VRF(未示出)。vRouter转发平面90将分组分配到路由实例94。基于MPLS标签或虚拟网络标识符(VNI)将从覆盖网络接收的分组分配到路由实例。到本地虚拟机的虚拟接口绑定到路由实例92。vRouter转发平面90在转发信息库(FIB)94(也被称为转发表)中查询目的地地址,并且将分组转发到正确的目的地。例如,路由可以是3层IP前缀或2层MAC地址。可以将计算节点62A的控制数据接口的MAC地址存储在一个或多个路由实例92中。
可以使用流表96应用转发策略:vRouter转发平面90将分组与流表匹配并且应用流动作。vRouter转发平面90将未发现流规则的分组(即,每个流的第一分组)发送到vRouter代理84,然后vRouter代理84将规则安装在流表96中。vRouter转发平面90将诸如DHCP、ARP、MDNS的特定分组发送到vRouter代理进行代理。
在主机上运行的VM 82的每个接口连接到VRF(路由实例92),该VRF(路由实例92)包含对应网络的转发表,该转发表包含该接口的IP地址。vRouter仅具有在该主机上具有接口的网络的VRF,包括连接到主机的物理接口的结构VRF。虚拟网络使用封装隧道在不同的主机上的VM 82之间传输分组并且结构VRF与VM VRF(路由实例92)之间发生封装和解封装。
当创建新的虚拟工作负载时,事件在编排引擎30中被看到,并且被发送到SDN控制器32A,SDN控制器32A然后将请求发送到vRouter代理84,以将路由安装在虚拟网络的VRF中,并且vRouter代理84然后在转发器中对其进行配置。
在具有单个接口的新的VM上配置网络的逻辑流程如下:使用UI、CLI或REST API在编排器或网络中定义网络和网络策略。网络主要被定义为IP地址池,当创建VM时,该IP地址池被分配给接口。
由编排器的用户请求启动VM,包括其接口处于哪个网络中。编排器选择要在其上运行的新的VM的主机,并且指示该主机上的vRouter代理84获取其图像并且启动该VM。从编排器的联网服务接收事件或API调用,指示为将要启动的新的VM的接口建立联网。这些指示被转换为REST调用,并且被发送到SDN控制器32。SDN控制器32将请求发送到vRouter代理84,以将新的VM虚拟接口连接到指定虚拟网络。vRouter代理84指示vRouter转发平面90将VM接口连接到虚拟网络的路由实例92。如果不存在路由实例92(VRF),则创建该实例,并且将接口连接到该实例。
vRouter代理84启动VM,该VM通常将被配置为使用DHCP来请求其每个接口的IP地址。vRouter代理84代理DHCP请求并且用接口IP、默认网关以及DNS服务器地址来响应。一旦该接口是有源的并且具有来自DHCP的IP地址,vRouter代理84将会利用VM虚拟接口的下一跳安装到VM的IP地址和MAC地址的路由。vRouter代理84分配接口的标签并且将该标签路由安装在MPLS表(例如,FIB 94)中。
vRouter代理84使用XMPP过程98与SDN控制器的控制节点建立XMPP会话。vRouter代理84的XMPP过程98从VM 82学习到虚拟接口(虚拟地址)的覆盖网络路由,并且将这些作为虚拟接口的虚拟路由存储到FIB 94。XMPP过程98经由XMPP会话将XMPP消息发送到控制节点54以通告覆盖网络路由。例如,vRouter代理84将XMPP消息37A发送到包含到新的VM的路由的SDN控制器32。路由具有vRouter在其上运行的服务器的网络地址的下一跳(例如,包括IPv4或IPv6的IP地址),并且使用刚刚分配的标签来指定封装协议。下一跳可以包括MAC地址。
SDN控制器32的控制节点将到新的VM的路由分配到在同一网络和其他网络中具有VM的其他vRouter,如网络策略所允许的。SDN控制器将策略所允许的其他VM的路由发送到新的VM的vRouter。例如,vRouter代理84XMPP过程98接收由SDN控制器的控制节点54A通告的虚拟路由,并且存储覆盖网络路由以覆盖路由信息104和一个或多个FIB 94。在该程序结束时,考虑新的VM,数据中心中的所有vRouter的VRF中的路由已更新,以实现所配置的网络策略。
图7是示出根据本文描述的技术的包括基于与计算节点相关联的物理硬件地址生成的路由区分符的虚拟专用网络地址的示例路由通告的框图。BGP更新消息600是符合MP-BGP的路由通告,并且包括通告分布式SDN系统的计算节点中的虚拟机的主机路由的MP-REACH-NLRI字段602。扩展的BGP更新消息600可以表示图2所示的路由通告38A的示例实例。出于说明的目的,使用符号而不是利用分组字段示出扩展的BGP更新消息600。
扩展的BGP更新消息600的MP-REACH-NLRI字段602指定了地址族标识符(AFI)字段604,该地址族标识符(AFI)字段604在该示例中值为1以指示IPv4网络地址,以及随后的AFI(SAFI)字段606的值,该AFI(SAFI)字段606的值为128以将虚拟路由识别为L3VPN路由。AFI字段604和SAFI字段606在一些情况下可以具有不同的值,如由私有方或互联网编号分配机构(IANA)分配的。在一些示例中,可以使用IPv6前缀代替IPv4前缀。
网络层可达性信息(NLRI)字段608指定了具有在前缀字段612中识别的IP地址10.10.10.10的计算节点虚拟机的主机路由。长度字段610A指定前缀字段612中的前缀值的长度。标签字段610B指定MPLS标签。前缀字段612包括指定由发起BGP更新消息600的控制节点生成的路由区分符值的路由区分符字段614A,该路由区分符值基于发起路由的计算节点的L2物理硬件地址。路由区分符字段614A还可以指定具有指示基于层二物理硬件地址生成路由区分符字段614A的值字段(用值“[MAC]”示出)的值的类型字段(用值“[类型]”示出)。例如,路由区分符类型将具有值(例如,5)以指定路由携带基于计算节点的MAC地址生成的路由区分符,如本文所描述的。路由区分符字段614A可以使用6字节MAC地址的管理员字段和子管理员字段两者,其中,RD字段包括新类型(2字节)和MAC(6字节)。IPv4前缀字段614B指定IPv4前缀的值。
图8是示出根据本公开的技术的SDN控制器的示例操作的流程图。例如,图8可以示出诸如图1至图2或图4的SDN控制器32A或32B的SDN控制器的示例操作。例如,图8可以示出图3至图5的控制节点54A至54N的示例操作。SDN控制器的控制节点基于计算节点的层二物理硬件地址生成与计算节点相关联的网络地址的路由区分符值(800)。例如,控制节点54A可以响应于从计算节点接收到XMPP消息而生成路由区分符值。控制节点54A可以响应于ARP请求从覆盖路由信息或从XMPP消息自身或从计算节点获得计算节点的L2物理硬件地址(例如,MAC地址)。计算节点的MAC地址可以被存储在计算节点的结构VRF中。
SDN控制器的控制节点输出包括路由区分符值和与计算节点相关联的网络地址的路由(802)。例如,路由可以是根据诸如图7的BGP更新消息600的路由协议的路由通告。路由可以指定诸如VPNv4路由的VPN路由。网络地址可以是与计算节点相关联的IP前缀。
尽管出于示例的目的描述了SDN控制器方面,但是在一些示例中,图8的技术可以由除了SDN控制器之外的网络装置来实现。在另一示例中,网络装置可以生成包括路由区分符值和与计算节点相关联的网络地址的虚拟专用网络地址,该路由区分符值基于计算节点的层二物理硬件地址。网络装置输出包括虚拟专用网络地址的虚拟专用网络路由。与计算节点相关联的网络地址是由计算节点执行的虚拟网络端点的虚拟网络地址。
图9是示出根据本公开的技术的网络装置的示例操作的流程图。图9可以示出诸如图1至图4的任意计算节点26或者图5至图6B的任意计算节点62的计算节点的示例操作。例如,图9可以示出诸如图1至图2或图4的SDN控制器32A或32B的SDN控制器的示例操作。例如,图9可以示出图3至图5和图6A的控制节点54A至54N的示例操作。图9还可以示出诸如图1至图2、图3B的SDN网关8A至8B或者图5的网关节点72的网关路由器的示例操作。
诸如如上所述,计算节点检测新的虚拟机(900)。计算节点获得新的虚拟机的IP地址(902)。计算节点经由诸如XMPP的消息传递协议将覆盖网络路由通告到SDN控制器的控制节点(904)。SDN控制器控制节点的控制节点经由XMPP会话从计算节点接收覆盖网络路由(906)。响应于接收到覆盖网络路由,控制节点基于计算节点的物理硬件地址生成路由区分符值(908)。在一些示例中,控制节点经由XMPP通告由相同的虚拟路由获得计算节点的物理硬件地址。在其他示例中,控制节点经由对计算节点的ARP请求获得计算节点的物理硬件地址。
在生成路由区分符值之后,控制节点发送包括基于计算节点的物理硬件地址生成的路由区分符值的路由通告(910)。路由通告包括路由区分符值作为计算节点的VPN路由的一部分。网关路由器接收包含包括路由区分符的VPN路由的路由通告(912)。响应于接收到路由通告,网关路由器存储VPN路由(914)。然后,网关路由器可以将VPN路由通告到诸如其他网关路由器、其他SDN控制器控制节点以及计算节点的其路由对等体。网关路由器可以根据所存储的VPN路由转发网络流量。例如,网关路由器可以将VPN路由存储到包括虚拟网络目的地的虚拟网络的虚拟路由和转发(VRF)实例,并且基于由网关路由器存储的VPN路由将流量转发到计算节点。然后,网关路由器基于所存储的VPN路由将虚拟机流量转发到计算节点(916)。
如果网关路由器从不同的SDN集群或BMS接收另一路由,则这两个VPN路由将不同,因为它们将具有不同的路由区分符,并且因此,这些VPN路由将由网关路由器存储为不同的路由,并且流量将不会在它们之间负载平衡。
在一些示例中,诸如如果接收网关路由器还被配置为使得其知道新的路由区分符类型,则网关路由器可以基于其从新的路由区分符学习MAC地址的能力包括其他功能。
尽管主要针对通告在计算节点上执行的虚拟机的虚拟网络地址来描述本技术,但是本技术同样适用于诸如容器的其他类型的工作负载。例如容器可以作为计算节点上的网荚(pod)工作负载的一部分执行,该网荚由SDN平台分配虚拟网络地址并且操作为虚拟网络目的地。
本公开所描述的技术可以至少部分地以硬件、软件、固件或其任意组合来实现。例如,所描述的技术的各个方面可以在一个或多个处理器(包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任意其他等效的集成或离散逻辑电路以及这些组件的任意组合)内实现。术语“处理器”或“处理电路”通常可以指单独的或结合其他逻辑电路的任意前述逻辑电路或任意其他等效电路。包括硬件的控制单元还可以执行本公开的一种或多种技术。
这样的硬件、软件和固件可以在同一装置内或在独立装置内实现,以支持本公开所描述的各种操作和功能。另外,所描述的单元、过程或组件中的任何一个可以一起或单独地实现为离散但可互操作的逻辑装置。将不同的特征描述为过程或单元旨在突出不同的功能方面,并且不必意味着这样的过程或单元必须由单独的硬件或软件组件来实现。而是,与一个或多个过程或单元相关联的功能可以由单独的硬件或软件组件来执行,或者集成在共同的或单独的硬件或软件组件内。
本公开所描述的技术还可以在包含指令的诸如计算机可读存储介质的计算机可读介质中体现或编码。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他处理器执行该方法,例如当执行该指令时。计算机可读介质可以包括非暂时性计算机可读存储介质和瞬态通信介质。有形且非暂时性的计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”是指物理存储介质,而不是信号、载波或其他瞬态介质。

Claims (20)

1.一种方法,包括:
通过软件定义网络(SDN)控制器并且基于计算节点的层二(L2)物理硬件地址生成与所述计算节点相关联的网络地址的路由区分符值;并且
通过所述SDN控制器输出包括所述路由区分符值和与所述计算节点相关联的所述网络地址的路由。
2.根据权利要求1所述的方法,进一步包括:
通过所述SDN控制器在虚拟网络目的地的覆盖网络路由中接收与所述计算节点相关联的所述网络地址;
其中,生成所述路由区分符值包括响应于接收到所述虚拟网络目的地的所述覆盖网络路由而生成所述路由区分符值。
3.根据权利要求2所述的方法,进一步包括:
通过所述SDN控制器在所述虚拟网络目的地的所述覆盖网络路由中接收所述L2物理硬件地址。
4.根据权利要求2所述的方法,其中,在所述覆盖网络路由中接收所述网络地址包括接收指定所述网络地址的消息传递协议消息。
5.根据权利要求4所述的方法,其中,所述消息传递协议包括可扩展消息传递和出席协议(XMPP),并且其中,经由控制节点与所述计算节点的虚拟路由器代理之间的XMPP会话接收所述消息传递协议消息,并且其中,输出所述路由包括经由所述控制节点与路由协议对等装置之间的多协议边界网关协议(MP-BGP)会话输出所述路由。
6.根据权利要求1所述的方法,进一步包括:
响应于地址解析协议请求或邻居发现协议请求,接收来自所述计算节点的消息中的所述L2物理硬件地址。
7.根据权利要求1至2中任一项所述的方法,其中,所述路由包括指定类型字段和值字段的路由区分符字段,其中,所述类型字段的类型值指示所述值字段是基于所述层二物理硬件地址生成的。
8.根据权利要求1至2中任一项所述的方法,其中,所述计算节点包括物理服务器,并且其中,所述L2物理硬件地址包括所述物理服务器的控制数据接口的介质访问控制(MAC)地址。
9.根据权利要求1至2中任一项所述的方法,其中,所述网络地址包括互联网协议版本四地址和互联网协议版本六地址中的一个。
10.根据权利要求1至2中任一项所述的方法,其中,输出所述路由包括将所述路由输出到网关路由器。
11.根据权利要求10所述的方法,进一步包括:通过所述网关路由器将所述路由存储到包括所述虚拟网络目的地的虚拟网络的虚拟路由和转发(VFR)实例;并且
通过所述网关路由器基于通过所述网关路由器存储的所述路由将流量转发到所述计算节点。
12.一种包括与存储器通信的处理电路的软件定义网络(SDN)控制器,所述处理电路被配置为:
基于计算节点的层二(L2)物理硬件地址生成与所述计算节点相关联的网络地址的路由区分符值;并且
输出包括所述路由区分符值和与所述计算节点相关联的所述网络地址的路由。
13.根据权利要求12所述的SDN控制器,其中,所述处理电路进一步被配置为:
在虚拟网络目的地的覆盖网络路由中接收与所述计算节点相关联的所述网络地址;并且
响应于接收到所述虚拟网络目的地的所述覆盖网络路由而生成所述路由区分符值。
14.根据权利要求13所述的SDN控制器,其中,所述处理电路进一步被配置为在所述虚拟网络目的地的所述覆盖网络路由中接收所述L2物理硬件地址。
15.根据权利要求13所述的SDN控制器,其中,所述覆盖网络路由包括指定所述网络地址的消息传递协议消息,其中,所述消息传递协议包括可扩展消息传递和出席协议(XMPP),并且其中,经由控制节点与所述计算节点的虚拟路由器代理之间的XMPP会话接收所述消息传递协议消息;并且
其中,输出所述路由包括经由所述控制节点与路由协议对等装置之间的多协议边界网关协议(MP-BGP)会话输出所述路由。
16.根据权利要求12至13中任一项所述的SDN控制器,其中,所述路由包括指定类型字段和值字段的路由区分符字段,其中,所述类型字段的类型值指示所述值字段是基于所述层二物理硬件地址生成的。
17.根据权利要求12至13中任一项所述的SDN控制器,其中,所述计算节点包括物理服务器,并且其中,所述L2物理硬件地址包括所述物理服务器的控制数据接口的介质访问控制(MAC)地址。
18.根据权利要求12至13中任一项所述的SDN控制器,其中,输出所述路由包括将所述路由输出到网关路由器,以通过所述网关路由器将所述路由存储到包括所述虚拟网络目的地的虚拟网络的虚拟路由和转发(VRF)实例,使得所述网关路由器可以基于所述路由将流量转发到所述计算节点。
19.一种方法,包括:
通过网络装置生成包括路由区分符值和与计算节点相关联的网络地址的虚拟专用网络地址,所述路由区分符值基于所述计算节点的层二物理硬件地址;并且
通过所述网络装置输出包括所述虚拟专用网络地址的虚拟专用网络路由。
20.根据权利要求19所述的方法,其中,与所述计算节点相关联的所述网络地址是由所述计算节点执行的虚拟网络端点的虚拟网络地址。
CN202011087745.8A 2020-07-20 2020-10-12 用于改进路由通告的方法以及软件定义网络控制器 Active CN114039912B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/933,684 2020-07-20
US16/933,684 US20220021613A1 (en) 2020-07-20 2020-07-20 Generating route distinguishers for virtual private network addresses based on physical hardware addresses

Publications (2)

Publication Number Publication Date
CN114039912A true CN114039912A (zh) 2022-02-11
CN114039912B CN114039912B (zh) 2023-12-19

Family

ID=72840319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011087745.8A Active CN114039912B (zh) 2020-07-20 2020-10-12 用于改进路由通告的方法以及软件定义网络控制器

Country Status (3)

Country Link
US (1) US20220021613A1 (zh)
EP (1) EP3944568A1 (zh)
CN (1) CN114039912B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11632268B2 (en) * 2021-03-30 2023-04-18 Juniper Networks, Inc. Generating route target values for virtual private network routes
US11671282B2 (en) * 2021-05-24 2023-06-06 Hewlett Packard Enterprise Development Lp Method and system for dynamically activating virtual networks in a distributed tunnel fabric
US11496396B1 (en) 2022-04-25 2022-11-08 Mimyr, Llc Distributed software-defined network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104521196A (zh) * 2012-06-06 2015-04-15 瞻博网络公司 针对虚拟网络分组流的物理路径确定
CN105306333A (zh) * 2014-06-30 2016-02-03 瞻博网络公司 跨越多个网络的服务链接
US20180006935A1 (en) * 2016-06-30 2018-01-04 Juniper Networks, Inc. Auto discovery and auto scaling of services in software-defined network environment
EP3382959A2 (en) * 2017-03-31 2018-10-03 Juniper Networks, Inc. Session-based traffic statistics logging for virtual routers
US10200274B1 (en) * 2017-02-17 2019-02-05 Juniper Networks, Inc. Enhanced traffic flow in software-defined networking controller-based architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10389591B2 (en) * 2016-10-28 2019-08-20 Microsoft Technology Licensing, Llc Autonomous configuration system for a service infrastructure
US11792044B2 (en) * 2020-01-03 2023-10-17 Nokia Solutions And Networks Oy Offset label for aggregating multicasts from multiple virtual private networks on a single multicast distribution tree

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104521196A (zh) * 2012-06-06 2015-04-15 瞻博网络公司 针对虚拟网络分组流的物理路径确定
CN105306333A (zh) * 2014-06-30 2016-02-03 瞻博网络公司 跨越多个网络的服务链接
US20180006935A1 (en) * 2016-06-30 2018-01-04 Juniper Networks, Inc. Auto discovery and auto scaling of services in software-defined network environment
US10200274B1 (en) * 2017-02-17 2019-02-05 Juniper Networks, Inc. Enhanced traffic flow in software-defined networking controller-based architecture
EP3382959A2 (en) * 2017-03-31 2018-10-03 Juniper Networks, Inc. Session-based traffic statistics logging for virtual routers

Also Published As

Publication number Publication date
EP3944568A1 (en) 2022-01-26
CN114039912B (zh) 2023-12-19
US20220021613A1 (en) 2022-01-20

Similar Documents

Publication Publication Date Title
EP3920484B1 (en) Liveness detection and route convergence in software-defined networking distributed system
EP3920483B1 (en) Local repair for underlay failure using prefix independent convergence
US10757006B1 (en) Enhanced traffic flow in software-defined networking controller-based architecture
CN114697252B (zh) 计算机网络方法、软件定义网络控制器及存储介质
CN110120934B (zh) 应用防火墙策略的方法、软件定义网络控制器和介质
US8953441B2 (en) Re-routing network traffic after link failure
US8750288B2 (en) Physical path determination for virtual network packet flows
CN111756566B (zh) 支持和不支持issu装置的混合网络中软件升级部署
CN114039912B (zh) 用于改进路由通告的方法以及软件定义网络控制器
EP3809641A1 (en) Improved port mirroring over evpn vxlan
CN110120916B (zh) Bgp会话的优先级形成
US20230254183A1 (en) Generating route target values for virtual private network routes
US11652727B2 (en) Service chaining with physical network functions and virtualized network functions
CN112583710A (zh) 软件定义网络中的辅助复制
CN115150326B (zh) 为虚拟专用网络路由生成路由目标值

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