CN114697252A - 计算机网络方法、软件定义网络控制器及存储介质 - Google Patents
计算机网络方法、软件定义网络控制器及存储介质 Download PDFInfo
- Publication number
- CN114697252A CN114697252A CN202110313698.2A CN202110313698A CN114697252A CN 114697252 A CN114697252 A CN 114697252A CN 202110313698 A CN202110313698 A CN 202110313698A CN 114697252 A CN114697252 A CN 114697252A
- Authority
- CN
- China
- Prior art keywords
- node
- message
- route
- memory database
- nodes
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000004044 response Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000006855 networking Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 39
- 239000003795 chemical substances by application Substances 0.000 description 33
- 239000004744 fabric Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000005538 encapsulation Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 230000005641 tunneling Effects 0.000 description 4
- 238000013499 data model Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/645—Splitting route computation layer and forwarding layer, e.g. routing according to path computational element [PCE] or based on OpenFlow functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开描述了一种用于在分布式网络系统的节点之间共享路由的计算机网络方法、软件定义网络控制器及存储介质。示例性方法包括:由软件定义网络(SDN)控制器的控制节点从网络的多个计算节点中的一计算节点接收路由;由控制节点响应于接收路由来将路由更新发布至SDN控制器的内存数据库服务;并且响应于接收所发布的路由更新,由内存数据库服务将所发布的路由更新发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的多个计算节点中的任一计算节点。
Description
技术领域
本公开涉及一种计算机网络,并且更具体地,涉及虚拟网络内的通信路由。
背景技术
在通常的云数据中心环境中,存在提供运行各种应用的计算功能(例如,计算节点)和/或存储容量(例如,存储节点)的大量互连服务器。例如,数据中心包括为数据中心的客户托管应用和服务的设施。例如,数据中心托管全部的基础建设装备(诸如网络与存储系统、冗余电源、以及环境控制)。在通常的数据中心中,服务器集群经由通过一层或多层物理网络交换机和路由器提供的高速交换结构而互连。大多数精密的数据中心为位于各种物理托管设施中的订户支持装备提供遍布全世界的基础建设。
在数据中心中可以使用软件定义的网络(SDN)平台,并且在一些情况下,该软件定义的网络(SDN)平台可以使用逻辑上集中且物理上分布的SDN控制器以及虚拟路由器中的分布式转发平面,该虚拟路器由使网络从数据中心的物理路由器和交换机延伸至虚拟服务器中所托管的虚拟覆盖网络(被称为计算节点)。SDN控制器提供虚拟网络的管理、控制、以及分析功能并且通过与虚拟路由器通信来协调虚拟路由器。
发明内容
总体上,本公开描述了用于在分布式网络系统中的节点之间共享路由的技术,例如,诸如在软件定义的网络系统中。本公开描述了用于使用内存数据库来便于在分布式软件定义的网络系统中的节点之间通信路由的技术。技术采用了发布-订阅模型,其中,节点将路由更新发布至内存数据库或订阅从内存数据库接收路由更新。例如,SDN控制器的控制节点将路由更新发布至SDN控制器的内存数据库,以及由SDN控制器管理的计算节点订阅从内存数据库接收路由更新。路由更新可以包括被添加的路由(例如,通过被实例化的新虚拟机)或被删除的路由。
在一些示例中,计算节点可以执行虚拟路由器,以实现具有由计算节点托管的虚拟网络目的地的一个或多个虚拟网络的转发平面。在一些示例中,虚拟网络目的地是虚拟工作负荷。SDN控制器的控制节点与计算节点的虚拟路由器进行通信以共享信息,从而控制转发虚拟网络内的租户流量以到达这些虚拟网络目的地。可以将与不同SDN控制器相关联的计算节点和控制节点布置在SDN集群中。如本文描述,例如,在从SDN集群中的一个SDN控制器至另一SDN控制器发生故障转移时,使用用于分布路由的内存数据库服务可以帮助避免由于路由更新而使得SDN控制器变得超负荷的情形。
本公开的技术可以提供一个或多个技术优点。例如,本公开的技术可以提高诸如SDN平台的分布式网络系统内的规模和网络性能。技术能够通过对多个路由更新进行处理而不影响SDN控制器的网络性能的方式,使得SDN控制器将从计算节点接收的分布路由的功能外包至内存数据库服务。控制节点免于将指定路由实例路由发布至计算节点的任务。确切地,控制节点仅需要将所有路由发布至与控制节点相关联的内存数据库实例。
此外,节点通常保留内存数据库服务的节点最大存储值的四分之一。由于一些服务器具有大于128GB的随机存取存储器(RAM),所以即使在规模性的情景中,保留内存数据库中的路由的32GB的内存也不可能受限制。以这种方式,将SDN控制器与计算节点解耦成发布器与订阅器可以允许连接至控制节点的更大规模的计算节点。发布-订阅(“pub-sub”)模型也是健全的并且因此可以在低延迟和大量吞吐量关键的上下文中起到良好作用。
在一个示例中,方法包括:由软件定义网络(SDN)控制器的控制节点从网络的多个计算节点中的一计算节点接收路由;由控制节点响应于接收路由来将路由更新发布至SDN控制器的内存数据库服务;并且响应于接收所发布的路由更新,由内存数据库服务将所发布的路由发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的多个计算节点中的任一计算节点。
在另一示例性方面,SDN控制器包括:存储器;以及处理电路,被配置为:从网络的多个计算节点中的一计算节点接收路由;响应于接收路由,由SDN控制器的控制节点将路由更新发布至SDN控制器的内存数据库服务;响应于接收所发布的路由更新,由内存数据库服务将所发布的路由更新发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的多个计算节点中的任一计算节点。
在又一示例性方面,非易失性计算机可读存储介质包括指令,该指令用于使软件定义网络(SDN)控制器的可编程处理器:由SDN控制器的控制节点从网络的多个计算节点中的一计算节点接收路由;响应与接收路由,将路由更新发布至SDN控制器的内存数据库服务;并且响应于接收所发布的路由更新,由内存数据库服务将所发布的路由更新发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的多个计算节点中的任一计算节点。
在所附附图与下列描述中阐述了一个或多个示例的细节。从描述与附图及权利要求中,其他特征、目标、以及优点将变得显而易见。
附图说明
图1是示出具有可以实现本文描述的技术的示例的数据中心的示例性网络系统的框图。
图2是更详细地示出根据本公开的技术的一个或多个方面的图1中的数据中心的示例性实现方式的框图。
图3A和图3B是更详细地示出根据本公开的技术的一个或多个方面的图2中的数据中心的一些计算设备的示例性实现方式的框图。
图4是更详细地示出图2中的数据中心的示例性实现方式的框图。
图5是更详细地示出根据本公开的技术的一个或多个方面的SDN控制器的控制节点的示例的框图。
图6A和图6B是更详细地示出根据本公开的技术的一个或多个方面的计算节点的示例的框图。
图7是示出根据本公开的技术的一个或多个方面的SDN控制器的示例性操作的流程图。
图8是示出根据本公开的技术的网络设备的示例性操作的流程图。
贯穿图和文本,类似附图标记表示类似的元件。
具体实施方式
图1是示出具有可以实现本文描述的技术的示例的数据中心10的示例性网络系统5的框图。在网络系统5中,SDN控制器32A和32B(“SDN控制器32”)以及计算节点26A-26X(“计算节点26”)根据本文描述的技术进行操作,以减少由于另一控制节点关闭而导致控制节点超负荷而发生的中断,由此确保客户流量流和在云数据中心内执行的客户应用继续而不中断。
总体上,数据中心10为通过服务提供商网络6耦接到数据中心10的客户4的应用和服务提供操作环境。客户4通过提供商边缘(PE)设备12耦接至服务提供商网络6。数据中心10托管基础建设装备(诸如网络和存储系统、冗余电源、以及环境控制)。服务提供商网络6可以耦接至由其他提供商管理的一个或多个网络并且由此可以构成大规模公共网络基础建设(例如,互联网)的一部分。
在一些示例中,数据中心10可以表示多个地理上分布的网络数据中心中的一个。如图1的示例示出的,数据中心10是为客户4提供网络服务的设施。客户4可以是诸如企业和政府或个体的集合实体。例如,网络数据中心可以为若干企业和端用户托管网页服务。其他示例性服务可以包括数据存储、虚拟私有网络、流量工程、文件服务、数据挖掘、科学或超计算等。在一些示例中,数据中心10是单个网络服务器、网络对等体、或其他等。
在该示例中,数据中心10包括经由通过一层或多层物理网络交换机和路由器提供的互联网协议(IP)结构20而互连的存储系统与应用服务器的集合。计算节点26是用作数据中心的计算节点的服务器。在一些示例中,术语“计算节点”与“服务器”在本文中用于互换地指示计算节点26。例如,每个计算节点26可以为一个或多个客户指定的虚拟机(图1中的“VM”)的执行提供操作环境。IP结构20通过耦接至主干交换机22A-22M(被统称为“主干交换机22”)的分布层的互连叶片交换机24A-24N(被统称为“叶片交换机24”)的集合来提供。叶片交换机24也可以被称为架顶(TOR)交换机。尽管未示出,但数据中心10例如还可以包括一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙、入侵检测、和/或防入侵设备的安全设备、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、桥接器、电缆调制解调器、应用加速器、或其他网络设备。
在该示例中,叶片交换机24和主干交换机22为计算节点26提供到IP结构20的冗余(多宿主)连接。主干交换机22积累流量流并且提供叶片交换机24之间的高速连接。叶片交换机24是提供第2层(例如,MAC)和/或第3层(例如,IP)路由和/或交换机功能的网络设备。叶片交换机24和主干交换机22均包括能够执行一个或多个软件进程的一个或多个处理器和存储器。SDN网关8A和8B(“SDN网关8”)(也被称为网关路由器)是执行第3层路由以通过服务提供商网络6在数据中心10与客户4之间路由网络流量的路由设备。SDN网关8提供在IP结构20与服务提供商网络6之间转发并且接收分组的冗余网关。
SDN控制器32提供便于根据本公开的一个或多个示例的数据中心10内的一个或多个虚拟网络的操作的在逻辑上并且在一些情况下物理上集中的控制器。贯穿本公开,术语SDN控制器和虚拟网络控制器(“VNC”)可以互换使用。在一些示例中,SDN控制器32响应经由北向应用编程接口(API)31从编制引擎30接收的配置输入而操作,该SDN控制器32进而响应从管理人员28接收的配置输入而操作。关于结合数据中心10的其他设备或其他软件定义网络操作的SDN控制器的附加信息可在2013年6月5日提交的国际申请号PCT/US2013/044378并且题为“PHYSICAL PATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS”中找到,该申请通过引用并入本文,如在本文全面阐述一样。
在一些示例中,编制引擎30管理数据中心10的功能(诸如计算、存储、联网、以及应用资源)。例如,编制引擎30可以为数据中心10内或跨数据中心的租户创建虚拟网络。编制引擎30可以将虚拟机(VM)附接至租户的虚拟网络。编制引擎30可以将租户的虚拟网络连接至某个外部网络(例如,互联网或VPN)。编制引擎30可以跨一组VM或到租户网络的边界实现安全策略。编制引擎30可以将网络设备(例如,负荷平衡器)部署在租户的虚拟网络中。
通常,例如,任意两个网络设备之间(诸如IP结构20内的网络设备之间或计算节点26与客户4之间或计算节点26之间)的流量可以使用多个不同的路径遍历物理网络。例如,两个网络设备之间可以存在同等成本的若干不同路径。在一些情况下,属于从一个网络设备至另一网络设备的网络流量的分组在每个网络交换机节点处可以使用被称为多路径路由的路由战略在各种可能路径当中分发。例如,互联网工程任务组(IETF)RFC 2992“同等成本多路径算法的分析”描述了用于沿着同等成本的多个路径路由分组的路由技术。RFC2992的技术通过对经由单个确定性路径从具体网络流发送所有分组的分组报头字段进行散列来分析涉及流到箱(bin)的分配的一个具体多路径路由战略。
例如,可以通过分组报头中使用的五个值或“五元组”(即,用于通过物理网络路由分组的协议、源IP地址、目的IP地址、源端口、以及目的端口)定义“流”。例如,协议指定诸如TCP或UDP的通信协议,并且源端口与目的地端口(Source port and Destination port)指的是连接的源端口与目的地端口。与具体流条目匹配的一个或多个分组数据单元(PDU)的集合表示流。可以使用PDU的任意参数(诸如源与目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签、以及接收流的网络设备的入口端口)对流进行广泛地分类。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、源自具体MAC地址或IP地址的所有PDU、具有相同VLAN标签的所有PDU、或在同一交换机端口处接收的所有PDU。
每个计算节点26包括各个虚拟路由器(图1中的“VR”),该相应虚拟路由器(图1中的“VR”)针对数据中心10内的对应虚拟网络执行多个路由实例并且将分组路由至在由服务器提供的操作环境内执行的适当虚拟机。例如,由计算节点26A的虚拟路由器从底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”隧道至执行虚拟路由器的计算节点26的网络接口的物理网络地址。外部报头不仅可以包括服务器的网络接口的物理网络地址,而且还可以包括虚拟网络标识符(诸如虚拟可扩展LAN(VXLAN)标签或多协议标签交换(MPLS)标签),该虚拟网络标识符识别一个虚拟网络中以及由虚拟路由器执行的对应路由实例或接口。即,MPLS标签可以映射至路由实例或接口。内部分组包括具有与通过虚拟网络标识符识别的虚拟网络的虚拟网络寻址空间相一致的目的地网络地址的内部报头。在一些方面,在分组交付至适当路由实例之前,虚拟路由器缓冲并积累从底层物理网络结构接收的隧道的多个分组。
在一些示例中,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控制器32A和32B中的每个与服务器的同一集群相关联。在一些示例中,SDN控制器32A是管理计算节点的集合的活跃控制器,并且如果SDN控制器32A关闭,则SDN控制器32B作为用于计算节点的同一集合的备用控制器操作。
在图1的示例中,SDN控制器32A获知路由及其他信息(诸如配置信息等)并且将路由及其他信息(诸如配置信息)分发至数据中心10中的所有计算节点。在从SDN控制器32A接收路由信息时,在计算节点内运行的VR代理36通常利用转发信息来对数据转发元件(虚拟路由器)进行编程。SDN控制器32A使用诸如XMPP协议的消息传递协议将配置信息发送至VR代理36。在通常的操作中,SDN控制器32和代理通过同一XMPP信道传送路由和配置。
给定的SDN集群可以具有连接至单个控制节点的多个计算节点。在这种规模性设定中,控制节点的路由表可以包含大量的路由,该路由通常包括从计算节点向控制节点发送的XMPP路由和从其他控制节点或网关路由器发送的BGP路由。图1示出了具有两个控制节点(即,SDN控制器32A和SDN控制器32B)以及多个计算节点26的SDN集群。在该示例中,所有计算节点26具有作为主控制器的SDN控制器32A和作为辅助控制器的SDN控制器32B。因为这是规模性设定,所以SDN控制器32A和SDN控制器32B的路由表可以具有从上千至甚至上百万路由范围的条目。
在该情景中,假设SDN控制器32A关闭或重启。所有计算节点26现将SDN控制器32B标记为主控制器。现在,SDN控制器32B的责任是将其路由表中的所有路由下载至对应的计算节点26。同时,SDN控制器32B还必须监听来自计算节点的XMPP更新,并且相应地修改该SDN控制器32B的路由表。即使路由信息未改变,也存在大量的XMPP消息流。所有这些变动可能引起SDN控制器32B上的负荷峰值(spike in the load),从而在服务请求的同时使该SDN控制器32B慢下来。基于规模,该峰值的范围可以从几秒到几分钟。在集群的就地升级(in-place upgrade)之时问题变得尖锐,其中所有的控制器串行升级。
为了缓解这个问题,本公开的技术提议修改如何将路由从控制节点下载至计算节点。本公开描述了使用具有发布-订阅能力的内存数据库服务将路由从控制节点转移至计算节点。内存数据库服务(in-memory database service)34A可以是诸如Redis、Memcached、或其他内存数据库服务的外部服务。每个控制节点54可以具有对应的内存数据库服务实例并且可以将所有路由发布至内存数据库服务实例。内存数据库服务可以为每个路由实例(RI)创建信道并且关注计算节点可以订阅RI。内存数据库服务实例进而可以将这些路由发布至正好作为该发布-订阅模型中的订户的关注计算节点。内存数据库服务与计算节点之间的消息格式可以遵循发布-订阅消息范例。例如,内存数据库服务和计算节点或控制节点可以使用诸如Java消息服务(JMS)API的应用编程接口(API)进行通信。
在路由更新/删除的情况下,控制节点54可以更新内存数据库服务实例,该控制节点54进而将更新信息发布至所有关注计算节点26。控制节点54与计算节点26之间的XMPP配置和保持激活(keepalive)信道保持完整。
例如,控制节点54可以检测到计算节点不再响应(例如通过保持激活机制删除),并且作为响应,将删除从该计算节点获知的存储路由。然后,控制节点将反映删除从计算节点获知的存储路由的路由更新发布至内存数据库服务。
在控制节点54A关闭的情况下,计算节点26使用XMPP信道对此进行检测。然后,计算节点26可以从与控制节点54A相对应的内存数据库服务实例断开并且订阅诸如控制节点54B的新控制节点的内存数据库服务实例。如果诸如计算节点26B的计算节点关闭,则控制节点54A使用XMPP信道对该计算节点26B进行检测。删除从该计算节点26B获知的所有XMPP路由并且将所有XMPP路由发布至内存数据库服务实例。
本公开的技术可以提供一个或多个技术优点。例如,技术可以提供更多的扩展性。扩展网络的能力受分配给内存数据库的物理服务器的存储量的限制。可以在容器中实现的内存数据库服务是占据服务器中的较小覆盖区的有效、优化轻量级服务。内存数据库服务的操作并不明显地增加服务器的负担。此外,因为将一些路由分布功能和状态需求外包至内存数据库服务(通常针对发布订阅模型进行优化并且带有其自身高度可用性的库),所以对于未经历超负荷的控制节点,技术能够使用更简单并且因此更低廉的设备。
图2是更详细地示出根据本公开的技术的图1中的数据中心10的示例性实现方式的框图。在图2的示例中,数据中心10包括计算节点26A-26X,该计算节点26A-26X包括虚拟路由器42A-42X(被统称为“虚拟路由器42”,有时被称为“vRouter”)。虚拟路由器42响应于从SDN控制器32A接收的指令,动态地创建并管理可应用于应用实例之间的通信的一个或多个虚拟网络(“VN1、VN0”)46。
在一个示例中,虚拟路由器42将虚拟网络执行为覆盖网络,该覆盖网络提供使应用的虚拟地址从运行应用的计算节点26A-26X(“计算节点26”)中的一个的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自身的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术以通过物理网络在虚拟网络46内并跨虚拟网络46传输分组。
每个虚拟路由器42在每个计算节点26的管理程序、主机操作系统、或其他部件内执行。每个计算节点26表示能够执行虚拟机48的x86或其他通用或专用服务器。在图2的示例中,虚拟路由器42A在通常也被称为虚拟机管理器(VMM)的管理程序40内执行,该管理程序40提供允许多个操作系统在一个计算节点26上并发运行的虚拟化平台。在图2的示例中,虚拟路由器42A管理虚拟网络46,该虚拟网络46中的每个为一个或多个虚拟机(VM)48在由管理程序40提供的虚拟化平台的顶部上的运行提供网络环境。每个VM 48与虚拟网络VN0和VN1中的一个相关联并且表示运行诸如网页服务器、数据库服务器的客户应用、企业应用、或托管用于创建服务链的虚拟化服务的租户VM。在一些情况下,任一个或多个计算节点26或另一计算设备直接托管客户应用,即,不作为虚拟机。本文提及的虚拟机(例如,VM 48、计算节点26、或托管客户应用的单独的计算设备)可以被替代地称为“主机”。
在主机上运行的VM 48的每个接口连接至包含对应网络的转发表的路由转发(virtual routing forwarding,VRF),该对应网络包含该接口的IP地址。vRouter仅针对在该主机上具有其接口的网络具有VRF,该VRF包括连接至主机的物理接口的结构VRF。虚拟网络使用封装隧道在不同主机上的VM 48之间传输分组,并且封装和解封发生在结构VRF与VMVRF之间。
通常,每个VM 48可以是任何类型的软件应用并且被分配有用于在对应虚拟网络46内使用的虚拟地址,其中,每个虚拟网络可以是由虚拟路由器42A提供的不同虚拟子网。VM 48可以分配有例如用于发送并且接收通信的其自身的虚拟第3层(L3)IP地址,但不能感知运行虚拟机的物理计算节点26A的IP地址。以这种方式,“虚拟地址”是与底层物理计算机系统(例如,图2的示例中的计算节点26A)的逻辑地址不同的应用地址。本文中,虚拟地址也可以被称为“虚拟接口”。
在一个实现方式中,每个计算节点26包括与SDN控制器32A通信的VR代理36A-36X中的对应一个,并且响应于此而引导虚拟路由器42控制虚拟网络46的覆盖区并且协调数据分组在计算节点26内的路由。通常,每个VR代理36与SDN控制器32A通信,该SDN控制器32A通过数据中心10生成控制分组的路由的命令。
VR代理36在用户空间内执行并且作为VM 48与SDN控制器32A之间的控制平面消息的代理操作。例如,VM 48可以请求经由VR代理36A来使用该VM 48的虚拟地址发送消息,并且VR代理36A进而可以发送消息并请求针对发起第一消息的VM 48的虚拟地址接收对消息的响应。在一些情况下,VM 48调用由VR代理36A的应用编程接口呈现的过程或函数调用,并且VR代理36A也处理消息的封装,包括寻址。
在一些示例性的实现方式中,每个计算节点26A还包括与编制引擎30直接通信的编制代理(图2中未示出)。例如,响应于来自编制引擎30的指示,编制代理通知在相应计算节点26上执行的具体VM 48的属性,并且可以创建或终止各个VM。
在一个示例中,可以将通过由虚拟网络域内的虚拟机48运行的应用实例生成或消耗的网络分组封装在通过物理网络传输的另一分组(例如,另一IP或以太网分组)中,该网络分组例如为第3层(L3)IP分组或第2层(L2)以太网分组。本文中,在虚拟网络中传输的分组可以被称为“内部分组”,而物理网络分组在本文可以被称为“外部分组”或“隧道分组”。可以在虚拟路由器42内执行虚拟网络分组在物理网分组内的封装和/或解封,例如,在每个计算节点26上运行的管理程序或主机操作系统内。作为另一示例,在第一跳叶片交换机24(例如,架顶(TOR))的IP结构20的边缘处执行封装和解封功能,该第一跳叶片交换机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的出站接口和用于分组的封装。虚拟路由器42A应用封装以添加隧道报头从而生成外部分组并且在这种情况下通过出站接口向叶片交换机24A输出外部分组。
例如,路由信息将分组密钥信息(例如,目的地IP信息及来自分组报头的其他选择信息)映射至由虚拟路由器42和IP结构20提供的网络内的一个或多个指定下一跳。在一些情况下,下一跳是指定在转发分组时对每个分组执行的操作集合的链接下一跳,诸如用于泛洪下一跳和多播复制等。如图2中所示,每个虚拟网络46为通过IP结构20建立的覆盖网络的封装分组通信提供通信框架。以这种方式,与任何虚拟机48相关联的网络分组可以经由覆盖网络作为封装分组通信来传输。
SDN控制器32A接收消息并存储虚拟路由以覆盖路由信息,并且可以进而(例如,经由BGP的多协议扩展(MP-BGP))向SDN网关8通告从第一VR代理36接收的一个或多个覆盖路由。本文中,虚拟路由也可以被称为覆盖网络路由。例如,VR代理36A向计算节点26A发送包含虚拟路由的XMPP消息37A。SDN控制器32A接收消息并且存储虚拟路由以覆盖路由信息,并且进而可以(例如,经由BGP的多协议扩展(MP-BGP))将从第一VR代理36接收的一个或多个覆盖路由通知给SDN网关8。MP-BGP是允许分配不同地址族的BGP的扩展。如果两个集群之间存在网关路由器,SDN控制器32A还可以将覆盖路由通知给其他控制节点54。在一些示例中,任何虚拟路由可以包括前缀、与计算节点26的服务器相关联的下一跳地址、以及识别在下一跳服务器处配置的虚拟路由和转发实例的标签或其他数据。SDN控制器的每个控制节点将从计算节点接收的XMPP路由作为VPNv4路由通知给其他BGP扬声器。BGP扬声器能够包括其他控制节点54以及诸如SDN网关8的外部BGP扬声器。
在Rosen等人的“BGP/MPLS IP Virtual Private Networks(VPNs)”Request forComments 4364,Network Working Group,February 2006中对基于IP的VPN的一个示例进行了更全面地描述,其全部内容通过引用结合于此。在S.Mackie的等人的“BGP-SignaledEnd-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的多协议扩展进行了描述,其全部内容通过引用结合于此。
根据本公开的技术,除了向计算节点发布路由除外,控制节点54仍执行其常规的功能。确切地,对于该功能,在同一SDN控制器32内执行的内存数据库服务实例34A基于来自计算节点26的订阅来处理发布至计算节点26的路由。计算节点26可以容易地在任意时间点订阅或不订阅路由实例。
控制节点54中的每个可以是在组成SDN控制器32A的服务器的一个或多个集群上运行的虚拟机或容器。在一些示例中,内存数据库服务34A可以作为自身容器启动,在分开的容器中但在同一处地方,其中控制节点容器也在运行。在一些示例性的实现方式中,控制节点与内存数据库服务实例之间可以存在一对一的关系,且每个控制节点服务器中有一个容器。当服务于同一数据信道时,内存数据库服务可以使不同的控制节点54之间的路由信息同步。以这种方式,内存数据库服务具有控制节点的路由信息的副本,并且第一路由实例上的内存数据库服务与第二路由实例上的内存数据库服务具有相同的路由。以这种方式,每个活跃控制器具有作为内存中的发布-订阅服务操作的对应内存数据库容器,以对从控制节点54交换至计算节点26的路由进行处理。
这避免了当连接至多个计算节点的控制节点关闭时,控制节点中发生不必要的峰值,因此,例如,当在活跃-活跃故障或软件升级期间进行多次路由更新时,控制节点54不会变得超负荷。
仅出于示例性的目的示出了图2中所示的数据中心10的体系结构。在图2的示例性数据中心10以及本文未具体描述的其他类型的数据中心中可以实现本公开中所阐述的技术。本公开中的任何内容不得被视为使本公开的技术局限于图2示出的示例性体系结构。
图3A和图3B是更详细地示出根据本公开的技术的一个或多个方面的图2中的数据中心的一些计算设备的示例性实现方式的框图。在图3A的示例中,控制节点54A和54B均具有相应的内存数据库服务34A、34B,该控制节点54A和54B通过该相应的内存数据库服务34A、34B将路由更新传送至已经订阅接收路由更新的计算节点。在一些示例中,发布-订阅模型具有由内存数据库服务34A和34B(“内存数据库服务34”)定义的该发布-订阅模型自身的消息传递系统。消息传递系统可以包括消息服务API。内存数据库服务34可以构建发布模型。在图3A中,控制节点54A将路由更新发布至内存数据库服务34A内的红色信道和蓝色信道。计算节点26A订阅内存数据库服务34A的红色信道和蓝色信道。计算节点26A转发与红色VM 48和蓝色VM 48相关联的流量。
同样,控制节点54B将路由更新发布至内存数据库服务34B内的红色信道和蓝色信道。计算节点26B订阅内存数据库服务34B的红色信道,并且计算节点26C订阅内存数据库服务34B的蓝色信道。计算节点26B基于通过订阅红色信道接收的路由来转发与红色VM 48相关联的流量,并且计算节点26C基于通过订阅蓝色信道接收的路由来转发与蓝色VM 48相关联的流量。
图3B示出了计算节点26A、控制节点54A、以及内存数据库服务34A之间的示例性消息流。控制节点54A将承载配置信息的XMPP消息发送至计算节点26A。计算节点26A发送通知VRF的路由的XMPP消息。
计算节点26A通过将订阅消息发送至SDN控制器32A来订阅内存数据库服务34A的具体实例。控制节点54A不将计算节点26A视为订户。订户对具体类型的更新的请求作为订户状态存储在内存数据库服务34A中。在其他示例中,计算节点26A将单独的消息直接发送至内存数据库服务34A以订阅路由实例。例如,可以根据诸如Java消息服务(JMS)API的消息服务发送该消息。
控制节点54A仅使用消息服务API将路由发布至内存数据库服务实例。控制节点54A不需要存储保持跟踪路由需要发送到哪个计算节点或将路由发送至各个计算节点的状态信息。
控制节点54A与内存数据库服务34A具有单向通信,控制节点54A通过该单向通信将路由发布至内存数据库服务34A。内存数据库服务34A进而将VRF中的这些路由发送至作为订户的计算节点26A。每当接收该具体路由实例的路由更新时,内存数据库服务34A将路由更新即时地发布至已经订阅路由实例的任何计算节点26。这可以提高执行速度和控制节点上所占用的处理能力量。类似地,路由插销发布至计算节点26A订户。
图4是更详细地示出图2中的数据中心的示例性实现方式的框图。在图4的示例中,SDN控制器32A还括一个或多个分析节点50A-50X(被统称为“分析节点50”)、一个或多个配置节点52A-52X(统称“配置节点52”)、以及控制节点54A-54X(被统称为“控制节点54”)。通常,分析节点50、配置节点52、以及控制节点54中的每个可以实现为单独的软件进程,并且节点可以跨为软件的执行提供环境的多个硬件计算平台分配。而且,每个节点对存储在集中或分布式数据库内的状态数据库56进行维护。在一些示例中,状态数据库56是NoSQL数据库。在一些示例中,状态数据库56是数据库集群。
通常,分析节点50的任务是对来自数据中心10内的虚拟和物理网络元件的信息进行采集、存储、关联、以及分析。该信息可以包括在管理数据中心10的路由和网络配置时所使用的统计数据、日志、事件、以及误差。分析节点50将该信息存储在状态数据库56中。
配置节点52将编制引擎30的高级数据模型转换成适合于与网络元件(诸如主干交换机22、叶片交换机24、以及VR代理36)交互的低级模型。配置节点52将SDN控制器32A的配置状态的永久性副本保存在状态数据库56(“STATE DATA 56”)内。
控制节点54实现负责维护短暂网络状态的逻辑集中式控制平面。控制节点54彼此交互并且与网络元件(诸如计算节点26的VR代理36和虚拟路由器42)进行交互,以确保网络状态最终与由编制引擎30指定的期望状态一致。通常,控制节点54从配置节点52接收SDN控制器32A的配置状态信息并且经由IBGP彼此交换路由,以确保所有的控制节点54具有相同的网络状态。此外,控制节点54经由BGP与SDN网关8A交换路由并且经由Netconf与服务节点21交换SDN控制器32A的配置状态。
在一些示例中,配置节点52提供与编制引擎30接口的北向API。编制引擎30使用该接口以安装使用高级数据模型的配置状态。配置节点52还包括便于内部部件之间的通信的消息总线。配置节点52还包括发现编制引擎30的高级模型中的变化并且将这些变化转换成由SDN控制器32A管理的低级数据模型中的对应变化的转换器。配置节点52还包括提供南向API以将所计算的低级配置向下推送至控制节点54的IF-MAP服务器。此外,配置节点52包括用于分配唯一对象标识符并且实现跨数据中心10的交易的分布式应用管理器。
如本文描述,SDN控制器32A还包括内存数据库服务34A。内存数据库服务34A可以为SDN控制器32A的多个控制节点54提供发布-订阅功能。在一些示例中,内存数据库服务34A包括多个信道。在一些示例中,每个信道与不同的路由实例相关联。在一些示例中,每个信道与多个控制节点中不同的一个相对应。例如,内存数据库服务34A可以经由消息服务API与控制节点54A和计算节点26通信。内存数据库服务34A可以位于与控制节点驻留的任何容器不同的单独的容器中。
仅出于示例性的目的示出图4中所示的数据中心10的体系结构。在图4的示例性数据中心10、以及本文未具体描述的其他类型的数据中心中可以实现本公开中所阐述的技术。本公开中的任何内容不应被视为使本公开的技术局限于图4示出的示例性体系结构。
图5是更详细地示出根据本公开的技术的SDN控制器的控制节点的示例的框图。控制节点54被配置为与多个其他类型的节点通信,该节点包括配置节点52A-52X(“config.nodes 52”)、其他控制节点54B-54X、计算节点62A-62X(“计算节点62”)、以及网关节点72A-72N(“网关节点”)。例如,控制节点54还与本文描述的由包括主干交换机和叶片交换机的设备组成的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至图3B中的计算节点26相对应。XMPP进程70A可以包括用于根据XMPP协议执行与计算节点62交换XMPP消息的软件指令的电路。在P.Saint-Andre,Extensible Messaging and Presence Protocol(XMPP):Core,IETF RFC 6120,March 2011中对XMPP进行了进一步地描述,其全部内容通过引用结合于此。视上下文而定,控制节点54A(并且更具体地,控制节点54A的XMPP进程70A)相对于一个计算节点62可以用作XMPP客户端或XMPP服务器。例如,控制节点54A可以用作XMPP服务器,并且计算节点62可以是订阅由控制节点54A发布的信息(诸如对于各个计算节点62的来自配置状态66的配置信息)的XMPP客户端。
作为另一示例,控制节点54A可以充当作为XMPP服务器的一个或多个计算节点62的XMPP客户端,其中,控制节点54A订阅由计算节点62发布的信息(诸如由计算节点62从其他来源获知的路由信息)。XMPP进程70A经由XMPP会话从计算节点62A接收覆盖网络路由,并且将覆盖网络路由存储到覆盖路由信息65。通过XMPP进程70A获知的覆盖网络路由可能泄露至BGP进程70C,并且BGP进程70C进而可以经由XMPP将通知从计算节点62获知的覆盖路由信息65中的覆盖网络路由的BGP路由的通知发送至该BGP进程70C的BGP对等体(例如,其他计算节点或SDN网关)。在一些示例中,控制节点54A的NETCONF进程70B能够使控制节点54A经由NetConf协议与网关节点72通信。
根据本公开的技术,控制节点54A不将来自覆盖路由信息65的覆盖路由(VPN路由)直接发布给各个计算节点62,而是仅将所获知的VPN路由发布至内存数据库服务34A。
计算节点62A通过将订阅消息发送至SDN控制器32A来订阅内存数据库服务34A的具体实例。控制节点54A不将计算节点62A视为订户。订户对具体类型的更新的请求作为订户状态存储在内存数据库服务34A中。在一些示例中,计算节点62A将单独的消息直接发送至内存数据库服务34A以订阅路由实例。例如,可以根据诸如Java消息服务(JMS)API的消息服务发送该消息。
在一些示例性的实现方式中,由控制节点容器VM和内存数据库服务34A容器VM对同一的XMPP消息进行处理。例如,内存数据库服务34A可以打开不同的套接字并且仍理解传入的相同消息。内存数据库服务34A和控制节点54A可以监听传入的XMPP消息并且对其进行处理。内存数据库服务34A包括与计算节点62的vRouter通信的vRouter接口74。vRouter接口74可以是监听被引导至控制器的传入XMPP消息并且如同该XMPP消息是订阅请求一样对其进行处理的中介层。以这种方式,将内存数据库服务与SDN控制器进行集成。
响应于从通知与一个计算节点62上的新VM相关联的路由的一个计算节点62接收XMPP消息的XMPP进程70A,控制节点54A简单地使用消息服务API将路由发布至内存数据库服务实例。控制节点54A不需要存储保持跟踪路由需要发送到哪个计算节点或将路由发送至各个计算节点的状态信息。内存数据库服务34A进而将路由发送至之前已经订阅从与控制节点54A相关联的路由实例接收路由更新的任何计算节点62A-62X。计算节点62A接收并且存储到其的转发信息的路由,并且基于所接收的路由转发VM流量。路由撤回类似地进行通信。
图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(图4)。vRouter代理84将转发状态安装到vRouter转发平面90中。vRouter代理84可以与计算节点62A的Nova代理(未示出)协作发现VM的存在与属性。vRouter代理84对每个新流的第一分组应用转发策略并且将流的流条目安装到转发平面的流表中。例如,vRouter代理84可以代理DHCP、ARP、DNS、以及MDNS中的一项或多项。在一些实现方式中,可以包括附加的代理。每个vRouter代理84连接至至少两个控制节点54,以在活跃-活跃冗余模型中进行冗余。
计算节点62A参与本文描述的发布-订阅模型,其中,控制节点将路由更新发布至内存数据库,并且vRouter代理84订阅以从内存数据库接收路由更新。例如,SDN控制器的控制节点将路由更新发布至SDN控制器的内存数据库,并且由SDN控制器管理的计算节点62A订阅从内存数据库接收路由更新。路由更新可以包括添加的路由(例如,通过被实例化的新虚拟机84)或者删除的路由。vRouter代理84从内存数据库服务接收路由更新,并且基于路由更新对vRouter转发平面90进行更新。然后,基于vRouter转发平面状态将网络流量发送至VM 82或从VM 82接收网络流量。
图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地址。
使用流表96可以应用转发策略:vRouter转发平面90针对流表匹配分组并且应用流动作。vRouter转发平面90将未发现流规则的分组(即,每个流的第一分组)发送至vRouter代理84,然后该vRouter代理84将规则安装到流表96中。vRouter转发平面90将诸如DHCP、ARP、MDNS的特定分组发送至vRouter代理进行代理。
在主机上运行的VM 82的每个接口连接至包含对应网络的转发表的VRF(路由实例92),该对应网络包含该接口的IP地址。vRouter仅针对在该主机上具有其接口的网络具有VRF,该VRF包括连接至主机的物理接口的结构VRF。虚拟网络使用封装隧道在不同主机的VM82之间传输分组,并且封装与解封在结构VRF与VM VRF(路由实例92)之间进行。
当创建新的虚拟工作负荷时,在编制引擎30中发现事件并且将该事件发送至SDN控制器32A,然后,该SDN控制器32A向vRouter代理84发送请求以请求要安装到虚拟网络的VRF中的路由,并且vRouter代理84然后在转发器中对该请求进行配置。
用于利用单个接口配置新VM的网络的逻辑流如下:使用UI、CLI、或REST API在编制器或网络中定义网络和网络策略。网络主要定义为在创建VM时被分配给接口的IP地址的池。
由编制器的用户请求启动VM,该请求包括该VM的接口位于哪个网络中。编制器为新的VM选择要在其上运行的主机并且指示该主机上的vRouter代理84获取其图像并且启动VM。从编制器的网络服务接收事件或API调用,该编制器指示设定用于将要启动的新VM的接口的网络。这些指示被转换成REST调用并且发送至SDN控制器32。SDN控制器32向vRouter代理84发送请求,以请求将新VM虚拟接口连接到指定虚拟网络。vRouter代理84指示vRouter转发平面90将VM接口连接至虚拟网络的路由实例92。如果路由实例92(VRF)不存在,则创建该路由实例92(VRF),并且接口连接到该路由实例92(VRF)。
vRouter代理84使用DHCP启动通常被配置为请求其每个接口的IP地址的VM。vRouter代理84代理DHCP请求并且对接口IP、默认网关、以及DNS服务器地址做出响应。一旦接口被激活并且具有来自DHCP的IP地址,vRouter代理84将路由安装至VM的IP地址和具有到VM虚拟接口的下一跳的MAC地址。vRouter代理84为接口分配标签并且将标签路由安装到MPLS表(例如,FIB 94)中。
VRrouter代理84使用XMPP进程98与SDN控制器的控制节点建立XMPP会话。vRrouter代理84的XMPP进程98从VM 82获知到虚拟接口(虚拟地址)的覆盖网络路由并且将这些覆盖网络路由作为虚拟接口的虚拟路由存储至FIB 94。XMPP进程98经由XMPP会话将XMPP消息发送至控制节点54以通知覆盖网络路由。例如,vRrouter代理84将XMPP消息37A发送至包含到新VM的路由的SDN控制器32。路由具有运行vRouter的服务器的网络地址(例如,包括IPv4或IPv6的IP地址)的下一跳并且使用刚刚分配的标签指定封装协议。
计算节点62A发送订阅以从内存数据库服务接收路由的消息。在一些示例中,消息是当虚拟路由器出现或通知路由时发送的XMPP发现消息,控制节点正常接收并且处理该消息,并且内存数据库服务还将该消息解释为订阅消息。在其他示例中,使用诸如JMS API的消息服务API发送消息。计算节点26B从内存数据库服务接收路由更新。计算节点26B将路由更新存储至对其的转发信息(诸如一个FIB 94)。然后,计算节点26B基于已更新的转发信息将虚拟机流量转发至计算节点26A。
SDN控制器32的控制节点将到新VM的路由发布至内存数据库服务34A,该内存数据库服务34A进而将路由发布至具有同一网络中的VM的任意其他vRouter,基于此,vRouter订阅路由实例。vRouter代理84接收由内存数据库服务34A发布的虚拟路由,并且将覆盖网络路由存储至覆盖路由信息及一个或多个FIB 94。考虑到新的VM,在该过程结束时,数据中心中的全部vRouter的VRF中的路由已更新以执行所配置的网络策略。
内存数据库服务可以将数据存储为表格并且可以通过任意合适的方式发送表格的条目。vRouter代理被配置为识别由内存数据库服务发布的路由。在一些示例中,所发布的路由可以以XMPP消息形式发送,该XMPP消息添加有作为VRF名称的订阅旗标的字段,以能够与内存数据库服务交互。以这样的方式,在一些示例性的实现方式中,可以利用XMPP消息作为管理发布-订阅功能的机制。在其他示例中,可以使用诸如JMS API的消息服务来管理发布-订阅功能。
图7是示出根据本公开的技术的诸如SDN控制器的网络系统的示例性操作的流程图。例如,图7可以示出诸如图1和图2或图4中的SDN控制器32A或32B的SDN控制器的示例性操作。例如,图7可以示出图3A至图5中的控制节点54A-54N的示例性操作。诸如控制节点54A的控制节点从诸如计算节点26A的计算节点接收路由更新(700)。更具体地,可以从计算节点上执行的虚拟路由器接收路由更新。路由更新可以是诸如VPN路由、诸如VPNv4路由的覆盖网络路由。路由更新可以指示路由或路由撤回(诸如计算节点变得不可达到的情况)。例如,可以经由XMPP消息从虚拟路由器发送路由更新。计算节点26A可以是网络中的若干计算节点中的一个。响应于接收路由更新,控制节点将路由更新发布至SDN控制器的内存数据库服务(702)。内存数据库服务进而将路由更新发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的任意计算节点(704)。
尽管出于示例性的目的在SDN控制器方面进行了描述,然而,在一些示例中,通过SDN控制器之外的网络设备可以实现图7中的技术。此外,尽管相对于通知包括在计算节点上执行的虚拟机的虚拟网络地址的覆盖网络路由对技术进行了描述,然而,技术类似地适用于诸如容器的其他类型的工作负荷。例如,容器可以作为计算节点上的网荚(pod)工作负荷的一部分执行,该网荚由SDN平台分配虚拟网络地址并且作为虚拟网络目的地操作。
图8是示出根据本公开的技术的网络设备的示例性操作的流程图。图8可以示出诸如图1至图4中的任意计算节点26或图5至图6B中的任意计算节点62的计算节点的示例性操作。例如,图8可以示出诸如图1和图2或图4中的SDN控制器32A或32B的SDN控制器的示例性操作。例如,图8可以示出图3A至图5和图6A中的控制节点54A-54N的示例性操作。
诸如计算节点26B的计算节点发送订阅从内存数据库服务接收路由的消息(800)。在一些示例中,消息是在虚拟路由器出现或通知路由时发送的XMPP发现消息,控制节点接收并且对该消息进行正常处理并且内存数据库服务还将该消息解释为订阅消息。在其他示例中,使用诸如JMS API的消息服务API发送消息。SDN控制器的内存数据库服务从订阅内存数据库服务信道的计算节点接收消息(802),并且更新订阅数据,以指示计算节点26B已经订阅内存数据库服务的信道(804)。
与之前提及的步骤并行、在之前提及的步骤之前、或在之前提及的步骤之后,计算节点26A对诸如上述的新的虚拟机进行检测(806)。计算节点获得新的虚拟机的IP地址(808)。计算节点经由诸如XMPP的消息传递协议将覆盖网络路由通知给SDN控制器的控制节点(810)。SDN控制器的控制节点经由XMPP会话从计算节点接收覆盖网络路由(812)。响应于接收路由,控制节点将路由发布至SDN控制器的内存数据库服务(814)。内存数据库服务进而将路由更新发送至已经订阅接收与控制节点相关联的内存数据库实例的路由更新的任意计算节点(816)。在一些示例中,内存数据库服务使用消息服务API发送消息。
计算节点26B从内存数据库服务接收路由更新(818)。计算节点26B将路由更新存储至其的诸如一个FIB 94的转发信息(图6B)(820)。然后,计算节点26B基于已更新的转发信息将虚拟机流量转发至计算节点26A(822)。
至少在硬件、软件、固件、或其任意组合中可以部分实现本公开中所描述的技术。例如,可以在一个或多个处理器内实现所描述的技术的各个方面,该一个或多个处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)、或任意其他等效的集成或离散逻辑电路、以及该部件的任意组合。术语“处理器”或“处理电路”通常可以指单独或结合其他逻辑电路的上述任意逻辑电路、或任意其他等效电路。包括硬件的控制单元还可以执行本公开的一种或多种技术。
可以在同一设备内或单独的设备内实现该硬件、软件、以及固件,以支持本公开中所描述的各种操作和功能。此外,可以一起实现、或作为离散、但可相互操作的逻辑设备单独实现所描述的任意单元、进程、或部件。作为进程或单元的不同特征的描述旨在突出不同的功能方面并且并不一定必须默示该进程或单元必须由单独的硬件或软件部件实现。确切地,可以通过单独的硬件或软件部件执行与一个或多个进程或单元相关联的功能,或将与一个或多个进程或单元相关联的功能集成在共同或单独的硬件或软件部件内。
本公开中所描述的技术还可以涵盖或被编码成包含指令的计算机可读介质(诸如计算机可读存储介质)。例如,当执行指令时,涵盖或被编码成计算机可读介质的指令可以使可编程处理器或其他处理器执行方法。计算机可读介质可以包括非易失性的计算机可读存储介质和临时通信介质。有形并且非易失性的计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、硬盘、CD-ROM、软盘、磁带、磁性介质、光学介质、或其他计算机可读存储介质。术语“计算机可读存储介质”是指物理存储介质、而非信号、载波波、或其他临时介质。
Claims (17)
1.一种计算机网络方法,包括:
由软件定义网络控制器的控制节点从网络中的多个计算节点中的一计算节点接收路由;
由所述控制节点响应于接收所述路由来将路由更新发布至所述软件定义网络控制器的内存数据库服务;并且
由所述内存数据库服务响应于接收到所发布的路由更新,来将所发布的路由更新发送至所述多个计算节点中的已经订阅接收与所述控制节点相关联的内存数据库实例的路由更新的任一计算节点。
2.根据权利要求1所述的方法,其中,接收所述路由包括:接收指定所述路由的可扩展消息与存在协议消息,并且其中,所述可扩展消息与存在协议消息经由所述控制节点与所述计算节点的虚拟路由器代理之间的可扩展消息与存在协议会话接收。
3.根据权利要求1所述的方法,其中,所述计算节点包括第一计算节点,所述方法还包括:在发送所发布的路由更新之前,
由所述内存数据库服务从所述多个计算节点中的一第二计算节点接收订阅所述路由更新的消息;并且
由所述内存数据库服务基于来自所述第二计算节点的所述消息而存储订阅数据。
4.根据权利要求3所述的方法,其中,从所述第二计算节点接收订阅所述路由更新的所述消息包括:经由所述控制节点与所述第二计算节点的虚拟路由器代理之间的可扩展消息与存在协议会话来接收可扩展消息与存在协议消息。
5.根据权利要求3所述的方法,其中,从所述第二计算节点接收订阅所述路由更新的所述消息包括:使用消息服务应用编程接口接收所述消息。
6.根据权利要求1至5中任一项所述的方法,其中,将所述路由更新发布至所述内存数据库服务包括:使用消息服务应用编程接口发布所述路由更新。
7.根据权利要求1至5中任一项所述的方法,还包括:
由所述控制节点检测到所述计算节点不再做出响应;
由所述控制节点响应于检测来删除从所述计算节点获知的存储路由;并且
由所述控制节点将反映删除从所述计算节点获知的所述存储路由的路由更新发布至所述内存数据库服务。
8.根据权利要求1至5中任一项所述的方法,其中,所述软件定义网络控制器包括多个控制节点,所述控制节点是所述多个控制节点中的一个控制节点,并且其中,所述内存数据库服务包括多个信道,所述多个信道中的每个信道与所述多个控制节点中的一个不同的控制节点相对应。
9.一种软件定义网络控制器,包括:
存储器;以及
处理电路,被配置为:
从网络中的多个计算节点中的一计算节点接收路由;
响应于接收所述路由,由所述软件定义网络控制器的控制节点将路由更新发布至所述软件定义网络控制器的内存数据库服务;并且
响应于接收所发布的路由更新,由所述内存数据库服务将所发布的路由更新发送至所述多个计算节点中的已经订阅接收与所述控制节点相关联的内存数据库实例的路由更新的任一计算节点。
10.根据权利要求9所述的软件定义网络控制器,其中,所述路由包括:指定所述路由的可扩展消息与存在协议消息,并且其中,所述可扩展消息与存在协议消息经由所述控制节点与所述计算节点的虚拟路由器代理之间的可扩展消息与存在协议会话接收。
11.根据权利要求9所述的软件定义网络控制器,其中,所述计算节点包括第一计算节点,其中,所述处理电路还被配置为:
在发送所发布的路由更新之前,由所述内存数据库服务从所述多个计算节点中的第二计算节点接收订阅所述路由更新的消息;并且
基于来自所述第二计算节点的所述消息更新数据结构以存储订阅数据。
12.根据权利要求11所述的软件定义网络控制器,其中,为了从所述第二计算节点接收订阅所述路由更新的所述消息,所述处理电路还被配置为经由所述控制节点与所述第二计算节点的虚拟路由器代理之间的可扩展消息与存在协议会话,接收可扩展消息与存在协议消息。
13.根据权利要求11所述的软件定义网络控制器,其中,为了从所述第二计算节点接收订阅所述路由更新的所述消息,所述处理电路还被配置为使用消息服务应用编程接口接收所述消息。
14.根据权利要求9至13中任一项所述的软件定义网络控制器,其中,为了将所述路由更新发布至所述内存数据库服务,所述处理电路还被配置为使用消息服务应用编程接口发布所述路由更新。
15.根据权利要求9至13中任一项所述的软件定义网络控制器,其中,所述处理电路还被配置为:
检测到所述计算节点不再做出响应;
删除从所述计算节点获知的存储路由;并且
将反映删除从所述计算节点获知的所述存储路由的更新发布至所述内存数据库服务。
16.根据权利要求9至13中任一项所述的软件定义网络控制器,其中,所述软件定义网络控制器包括多个控制节点,所述控制节点是所述多个控制节点中的一个控制节点,并且其中,所述内存数据库服务包括多个信道,所述多个信道中的每个信道与所述多个控制节点中的一个不同的控制节点相对应。
17.一种编码有指令的计算机可读存储介质,所述指令用于使一个或多个可编程处理器执行根据权利要求1至8中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/247,933 US11528213B2 (en) | 2020-12-30 | 2020-12-30 | Sharing routes using an in-memory data store in a distributed network system |
US17/247,933 | 2020-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114697252A true CN114697252A (zh) | 2022-07-01 |
CN114697252B CN114697252B (zh) | 2024-02-02 |
Family
ID=75173082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110313698.2A Active CN114697252B (zh) | 2020-12-30 | 2021-03-24 | 计算机网络方法、软件定义网络控制器及存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11528213B2 (zh) |
CN (1) | CN114697252B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US9774537B2 (en) | 2014-09-30 | 2017-09-26 | Nicira, Inc. | Dynamically adjusting load balancing |
US11722367B2 (en) | 2014-09-30 | 2023-08-08 | Nicira, Inc. | Method and apparatus for providing a service with a plurality of service nodes |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
US11659061B2 (en) * | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11368387B2 (en) | 2020-04-06 | 2022-06-21 | Vmware, Inc. | Using router as service node through logical service plane |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US20230026330A1 (en) * | 2021-07-24 | 2023-01-26 | Vmware, Inc. | Network management services in a point-of-presence |
US11973644B2 (en) * | 2021-12-30 | 2024-04-30 | King Fahd University Of Petroleum And Minerals | Distributed software-defined networking (SDN) control plane framework |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034077A (zh) * | 2015-03-18 | 2016-10-19 | 华为技术有限公司 | 一种动态路由配置方法、装置及系统 |
CN107888499A (zh) * | 2017-11-17 | 2018-04-06 | 北京邮电大学 | 一种基于sdn的发布订阅系统及消息转发方法 |
US10200274B1 (en) * | 2017-02-17 | 2019-02-05 | Juniper Networks, Inc. | Enhanced traffic flow in software-defined networking controller-based architecture |
CN109617820A (zh) * | 2019-02-15 | 2019-04-12 | 中国联合网络通信集团有限公司 | 一种sdn系统和路由更新方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8750288B2 (en) | 2012-06-06 | 2014-06-10 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US10756956B2 (en) * | 2018-03-05 | 2020-08-25 | Schweitzer Engineering Laboratories, Inc. | Trigger alarm actions and alarm-triggered network flows in software-defined networks |
US11411872B2 (en) * | 2019-10-11 | 2022-08-09 | University Of South Florida | Network latency optimization |
-
2020
- 2020-12-30 US US17/247,933 patent/US11528213B2/en active Active
-
2021
- 2021-03-24 CN CN202110313698.2A patent/CN114697252B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034077A (zh) * | 2015-03-18 | 2016-10-19 | 华为技术有限公司 | 一种动态路由配置方法、装置及系统 |
US10200274B1 (en) * | 2017-02-17 | 2019-02-05 | Juniper Networks, Inc. | Enhanced traffic flow in software-defined networking controller-based architecture |
CN107888499A (zh) * | 2017-11-17 | 2018-04-06 | 北京邮电大学 | 一种基于sdn的发布订阅系统及消息转发方法 |
CN109617820A (zh) * | 2019-02-15 | 2019-04-12 | 中国联合网络通信集团有限公司 | 一种sdn系统和路由更新方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220210047A1 (en) | 2022-06-30 |
US11528213B2 (en) | 2022-12-13 |
CN114697252B (zh) | 2024-02-02 |
EP4024787A1 (en) | 2022-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114697252B (zh) | 计算机网络方法、软件定义网络控制器及存储介质 | |
EP3920484B1 (en) | Liveness detection and route convergence in software-defined networking distributed system | |
US10757006B1 (en) | Enhanced traffic flow in software-defined networking controller-based architecture | |
EP3920483B1 (en) | Local repair for underlay failure using prefix independent convergence | |
US10083026B1 (en) | In-service software upgrade of software-defined networking controller | |
CN110120934B (zh) | 应用防火墙策略的方法、软件定义网络控制器和介质 | |
US8953441B2 (en) | Re-routing network traffic after link failure | |
US10715419B1 (en) | Software defined networking between virtualized entities of a data center and external entities | |
CN112583710B (zh) | 软件定义网络中的辅助复制 | |
CN111756566B (zh) | 支持和不支持issu装置的混合网络中软件升级部署 | |
US11336570B1 (en) | Layer three multi-homing for virtual networks | |
US12081367B2 (en) | Generating route target values for virtual private network routes | |
CN114039912B (zh) | 用于改进路由通告的方法以及软件定义网络控制器 | |
CN111756565B (zh) | 管理分支网络内的卫星设备 | |
EP4024787B1 (en) | Sharing routes using an in-memory data store in a distributed network system |
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 |