CN117411878A - 云系统、报文处理方法、装置、及网卡 - Google Patents

云系统、报文处理方法、装置、及网卡 Download PDF

Info

Publication number
CN117411878A
CN117411878A CN202211210642.5A CN202211210642A CN117411878A CN 117411878 A CN117411878 A CN 117411878A CN 202211210642 A CN202211210642 A CN 202211210642A CN 117411878 A CN117411878 A CN 117411878A
Authority
CN
China
Prior art keywords
message
processing rule
network card
central node
network
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.)
Pending
Application number
CN202211210642.5A
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to PCT/CN2023/086557 priority Critical patent/WO2024007644A1/zh
Publication of CN117411878A publication Critical patent/CN117411878A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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

Landscapes

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

Abstract

本申请公开了一种云系统、报文处理方法、装置、及网卡,云系统包括:计算节点,用于插置网卡并运行第一虚拟实例;网卡,用于接收第一数据流中的第一报文;网络控制器,用于将一个或多个VPC中的至少一个虚拟实例的租户网络信息发送至第一中心节点;网卡,还用于在确定本地没有记录第一报文的处理规则的情况下将第一报文发送至第一中心节点;第一中心节点,用于生成第一数据流对应的第一报文处理规则;网卡,还用于接收并在本地记录第一中心节点发送的第一报文处理规则,以对第一数据流中的第一报文之后的报文进行处理和/或转发。本申请能够减少计算节点的资源占用,从而可以提供更多的资源给租户。

Description

云系统、报文处理方法、装置、及网卡
技术领域
本申请涉及网络通信领域,尤其涉及一种云系统、报文处理方法、装置、及网卡。
背景技术
虚拟交换机(virtual switch)在云计算领域扮演着非常重要的角色,它旨在通过对报文处理规则进行编排来实现大规模网络自动化,从而实现云网络场景下复杂业务报文的分发。
虚拟交换机通常部署在运行虚拟实例的计算节点上,并且虚拟交换机的功能实现需要耗费一定的计算资源,其中,虚拟实例可以是虚拟机(virtual machine,VM)或者容器(container)等。然而,计算节点上有限的计算资源和存储资源在被虚拟交换机的控制管理功能、转发功能以及大量报文处理规则占用之后,能够留给租户使用的资源会大幅下滑。如何控制计算节点的资源占用,成为亟待解决的问题。
发明内容
本申请提供了一种云系统、报文处理方法、装置、及网卡,能够减少计算节点的计算资源占用,使得计算节点上可以提供更多的计算资源供租户使用。
第一方面,本申请提供一种云系统,包括:计算节点,用于插置网卡并运行第一虚拟实例;网卡,用于接收第一数据流中的第一报文,其中第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文;网络控制器,用于将一个或多个虚拟私有云(virtual private cloud,VPC)中的至少一个虚拟实例的租户网络信息发送至第一中心节点;网卡,还用于在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有上述一个或多个VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,上述至少一个虚拟实例包括第一虚拟实例和第二虚拟实例;第一中心节点,用于接收第一报文,根据上述一个或多个VPC中的至少一个虚拟实例的租户网络信息生成第一数据流对应的第一报文处理规则,并根据第一报文处理规则对第一报文进行处理和/或转发;网卡,还用于接收第一中心节点发送的第一报文处理规则并在本地记录第一报文处理规则;网卡,还用于根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发。
也就是说,虚拟交换机的报文处理功能卸载到了计算节点上的网卡,网卡负责根据本地存储的报文处理规则执行相应的报文处理和/或转发。如果网卡接收到某个报文(假设是第一数据流中的第一报文),本地却没有第一报文的报文处理规则(即与第一报文能够匹配的报文处理规则)来指导该如何处理第一报文,网卡就会把第一报文发送至第一中心节点(第一中心节点本地记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息,包括第一虚拟实例和第二虚拟实例的租户网络信息),以便在第一中心节点上学习相应的报文处理规则。第一中心节点接收到网卡发来的第一报文后,可以本地记录的上述信息生成第一数据流对应的第一报文处理规则,该第一报文处理规则用于指导如何对第一数据流的报文进行处理和/或转发。然后,第一中心节点将生成的该第一报文处理规则发送给网卡。网卡将接收到的第一报文处理规则记录在本地,从而可以根据本地记录的该第一报文处理规则后续接收到的第一数据流中的报文进行处理和/或转发。
在本方案中,网络控制器将一个或多个VPC中的至少一个虚拟实例的租户网络信息发送到了第一中心节点上,以便第一中心节点可以基于上述信息生成计算节点所需的转发规则,而不需要网络控制器来负责向各个计算节点卸载所需的转发规则,减轻了网络控制器的压力。由于网络控制器不需要将大量实例的位置信息发送到承载实例的各个计算节点上,因此减少了计算节点的内存占用。
并且,由于报文处理规则的生成和卸载全都交由远端的第一中心节点来实现,而不是在计算节点本地实现,因此减少了对计算节点的中央处理单元(central processingunit,CPU)资源的消耗,从而可以有更多的计算资源留给租户使用,可以在计算节点上为租户创建更多的虚拟实例。计算节点上的网卡只需要根据第一中心节点远程卸载的报文处理规则进行相应的报文处理和/或转发,简化了计算节点的功能,提升了计算节点的可靠性,便于实现计算节点的轻量化升级、降低计算节点的成本。
基于第一方面,在可能的实施方案中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合,则:第一中心节点,具体用于根据上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表(access control list,ACL)规则、链接会话信息中的一者或任意组合生成该第一报文处理规则。
可以看出,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息可以包括很多内容,数据量通常是很大的。本申请实施例将上述这些信息记录在第一中心节点,而不在计算节点上记录,可以大幅减少计算节点上的内存占用,并且由于不需要向计算节点下发大量上述信息,可以显著提升计算节点上的虚拟实例的创建速度。
基于第一方面,在可能的实施方案中,上述网卡还用于:从中心节点集群中确定第一中心节点,其中,中心节点集群包括多个中心节点,多个中心节点中的每个中心节点均记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息。
在本方案中,中心节点可以集群化部署,每个中心节点上都具有一个或多个VPC中的至少一个虚拟实例的租户网络信息,均可以向计算节点上的网卡提供卸载所需的报文处理规则的服务。当网卡发现本地没有记录能与当前接收到的报文相匹配的报文处理规则时,该网卡/网卡所在的计算节点可以从上述多个中心节点中选择一个中心节点,即确定第一中心节点,进而将报文转发至第一中心节点,以便第一中心节点将相应的报文处理规则发送到网卡。应理解,本方案可以将不同计算节点上的网卡卸载报文处理规则的需求分摊到不同的中心节点上,可以在一定程度上减轻各个中心节点的压力、实现负载均衡,从而提高中心节点可用性。
基于第一方面,在可能的实施方案中,上述网卡具体用于:先从上述多个中心节点中确定处于在线状态的中心节点,再从处于在线状态的中心节点中确定第一中心节点。
应理解,中心节点有可能会因为故障、升级、重启等因素导致暂时处于下线状态,处于下线状态的中心节点暂时无法向网卡提供卸载报文处理规则的服务。在本方案中,网卡可以先确定多个中心节点各自的状态,例如通过心跳保活机制检测各个中心节点的状态,然后将处于下线状态的中心节点排除,仅从在线的中心节点中去确定第一中心节点。可以理解的是,本方案下的网卡只会将第一报文发送到在线的中心节点上,从而确保能够学习到所需的报文处理规则,可以实现中心节点的故障隔离或者是无损升级,即个别中心节点的下线不影响网卡获取所需的报文处理规则,可靠性高。
基于第一方面,在可能的实施方案中,上述网卡具体用于:接收第一数据流中的第二报文,根据本地记录的第一报文处理规则将第二报文转发至第一虚拟实例,其中,第二报文是第一数据流中位于第一报文(即首个报文)之后的报文。
也就是说,在第一中心节点将第一数据流对应的第一报文处理规则发送至网卡,并且网卡将该第一报文处理规则记录在了本地之后,当网卡接收到第一数据流的后续报文时,就可以直接根据本地记录的该第一报文处理规则将报文转发到第一虚拟实例(即此时的第一报文处理规则指示了该如何对第一数据流的报文进行转发),实现了快速转发,而不需要再将报文上送至中心节点。
基于第一方面,在可能的实施方案中,上述第一中心节点还用于:生成携带上述第一报文处理规则的隧道协议报文,然后向网卡发送该隧道协议报文;相应的,网卡还用于:接收第一中心节点发送的该隧道协议报文,根据该隧道协议报文获得第一报文处理规则并在本地记录第一报文处理规则。
在本方案中,第一中心节点可以通过隧道协议将报文处理规则发送到计算节点上的网卡。其中,隧道协议可以是可拓展虚拟局域网络-通用协议封装(virtual extensiblelocal area network-generic protocol encapsulation,VXLAN-GPE)协议、通用路由封装(generic routing encapsulation,GRE)协议等,本申请不做具体限定。应理解,第一中心节点通过隧道协议将报文处理规则卸载到计算节点上的网卡,网卡对该隧道协议报文进行解封装,将获得的报文处理规则安装在本地,而不需要经过该网卡所在的计算节点的内核协议栈的处理,不占用计算节点本身的CPU资源,可以提高报文处理规则卸载的效率。
基于第一方面,在可能的实施方案中,第一虚拟实例的租户网络信息包括第一虚拟实例对应的访问控制规则,上述访问控制规则包括安全组规则和/或ACL规则,第一中心节点具体用于:在根据第一虚拟实例对应的访问控制规则和第一报文的源地址确定第一数据流的报文不允许通过的情况下,生成第一报文处理规则,其中第一报文处理规则指示丢弃第一数据流的报文。
其中,访问控制规则用于实现访问控制检查功能,可以由租户自定义,以保证网络安全。例如,访问控制规则可以是安全组规则、ACL规则等,以控制进/出虚拟实例或者是进/出虚拟实例所在子网的数据流,从而实现一定程度的安全防护。
在本方案中,第一中心节点记录有一个或多个VPC中的至少一个虚拟实例对应的访问控制规则,于是第一中心节点可以基于上述访问控制规则执行相应的访问控制检查功能。当第一中心节点接收到网卡发送的报文时,可以根据该报文中携带的源地址以及该报文的目的地址指示的虚拟实例所对应的访问控制规则确定该报文是否是允许通过的,如果确定该报文是不允许通过,则第一中心节点可以直接丢弃该报文,并且生成一条报文转发规则发送至网卡,该报文转发规则指示对该报文所在数据流中的后续报文进行丢弃操作,而不需要执行转发操作,以符合租户设置的访问控制规则的要求,实现相应的安全防护。
基于第一方面,在可能的实施方案中,网卡还用于:在确定本地记录的第一报文处理规则满足过期条件的情况下,删除本地记录的第一报文处理规则。
也就是说,网卡上设置了针对报文处理规则的过期机制(或者叫老化机制/存活机制):当网卡上记录的某个报文处理规则满足过期条件时,网卡就删除该报文处理规则,以节省存储资源。其中,过期条件可以是存储时长超过预设时长(或者称为过期时间/存活时间),或者是未被匹配的时长超过预设值,本申请不做具体限定。
基于第一方面,在可能的实施方案中,第一中心节点还用于:生成对应第一数据流的第一会话表项,第一会话表项包括第一报文处理规则;在删除本地记录的第一报文处理规则之后,网卡还用于:接收第一数据流中的第三报文,在确定本地没有记录第三报文的报文处理规则的情况下,将第三报文发送至第一中心节点,其中,第三报文是第一数据流中的第一报文之后的报文;第一中心节点还用于:在确定第三报文属于第一会话表项对应的第一数据流的情况下,将第一会话表项中的第一报文处理规则发送至网卡。
在本方案中,第一中心节点还负责实现会话匹配功能。当网卡将第一数据流的首个报文(即第一报文)送至第一中心节点时,第一中心节点先根据第一报文的目的地址指示的第一虚拟实例的租户网络信息中的访问控制规则进行相应的访问控制检查,确定第一报文是允许通过的报文之后,再根据第一虚拟实例的租户网络信息生成第一数量对应的第一报文转发规则,还生成对应第一数据流的一条会话表项,该会话表项包括第一报文处理规则,记录了从第一报文的源虚拟实例(第一报文的源地址指示的虚拟实例)到目的虚拟实例(第一报文的目的地址指示的虚拟实例)的一个连接状态。比如,可以是传输控制协议(transmission control protocol,TCP)、租户数据报协议(user datagram protocol,UDP)、因特网控制报文协议(internet control message protocol,ICMP)等协议的连接状态。
网卡接收第一中心节点发送的第一报文转发规则并记录在本地,以便对之后接收到的第一数据流的报文进行相应的处理和/或转发。当网卡上记录的第一报文转发规则满足过期条件时,网卡会自动删除本地记录的该第一报文转发规则。而如果该网卡又接收到了第一数据流的报文(第一报文的后续报文),但此时网卡本地已经没有第一数据流对应的报文处理规则了,它无法确定该如何处理该报文,则网卡会将该报文发送至第一中心节点,以重新学习相应的报文处理规则。当第一中心节点接收到该报文时,首先查询会话表,判断该报文在会话表中是否有匹配的会话表项。第一中心节点确定该报文与之前生成的一条会话表项是匹配的,即确定该报文属于该会话表项对应的数据流/连接,然后根据该会话表项得到第一报文处理规则,进而将第一报文处理规则再次发送到该网卡上进行存储。应理解,本方案下的第一中心节点只需要对数据流的首个报文进行访问控制检查,即可记录一个连接状态(会话表项),当有该数据流的后续报文来到第一中心节点时,它只需要根据之前生成的会话表项来确定相应的报文处理规则,而不需要再执行访问控制检查,从而可以提升卸载报文处理规则的效率。
基于第一方面,在可能的实施方案中,上述网卡设置有处理器和内存,该处理器执行该内存中的指令以运行该网卡的操作系统。
第二方面,本申请还提供一种报文转发方法,该方法包括:网卡接收第一数据流中的第一报文,其中,网卡插置于运行第一虚拟实例的计算节点,第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文;网卡在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,上述至少一个虚拟实例包括第一虚拟实例和第二虚拟实例;网卡接收第一中心节点发送的第一报文处理规则并在本地记录第一报文处理规则;网卡根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发。
基于第二方面,在可能的实施方案中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、ACL规则、链接会话信息中的一者或任意组合。
基于第二方面,在可能的实施方案中,在所述将第一报文发送至记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息的第一中心节点之前,该方法还包括:网卡从中心节点集群中确定第一中心节点,其中,中心节点集群包括多个中心节点,多个中心节点中的每个中心节点均记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息。
基于第二方面,在可能的实施方案中,所述网卡从中心节点集群中确定第一中心节点,包括:网卡从多个中心节点中确定处于在线状态的中心节点,从处于在线状态的中心节点中确定第一中心节点。
基于第二方面,在可能的实施方案中,所述网卡根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发,包括:网卡接收第一数据流中的第二报文,根据本地记录的第一报文处理规则将第二报文转发至第一虚拟实例,其中,第二报文是第一数据流中的第一报文之后的报文。
基于第二方面,在可能的实施方案中,所述网卡接收第一中心节点发送的第一数据流对应的第一报文处理规则并在本地记录第一报文处理规则,包括:网卡接收第一中心节点发送的携带有第一数据流对应的第一报文处理规则的隧道协议报文;网卡根据隧道协议报文获得第一报文处理规则并在本地记录第一报文处理规则。
基于第二方面,在可能的实施方案中,该方法还包括:在确定本地记录的第一报文处理规则满足过期条件的情况下,网卡删除本地记录的第一报文处理规则。
基于第二方面,在可能的实施方案中,在网卡删除本地记录的第一报文处理规则之后,该方法还包括:网卡接收第一数据流中的第三报文,其中,第三报文是第一数据流中的第一报文之后的报文;在确定本地没有记录第三报文的报文处理规则的情况下,网卡将第三报文发送至第一中心节点。
基于第二方面,在可能的实施方案中,上述网卡设置有处理器和内存,该处理器执行该内存中的指令以运行该网卡的操作系统。
第三方面,本申请还提供一种报文处理装置,该装置包括:接收模块,用于接收第一数据流中的第一报文,其中,装置插置于运行第一虚拟实例的计算节点,第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文;处理模块,用于在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,至少一个虚拟实例包括第一虚拟实例和第二虚拟实例;接收模块,还用于接收第一中心节点发送的第一报文处理规则;处理模块,还用于在装置本地记录第一报文处理规则;处理模块,还用于根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发。
基于第三方面,在可能的实施方案中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、ACL规则、链接会话信息中的一者或任意组合。
基于第三方面,在可能的实施方案中,处理模块还用于:从中心节点集群中确定第一中心节点,其中,中心节点集群包括多个中心节点,多个中心节点中的每个中心节点均记录有上述一个或多个VPC中的至少一个虚拟实例的租户网络信息。
基于第三方面,在可能的实施方案中,处理模块具体用于:从多个中心节点中确定处于在线状态的中心节点;从处于在线状态的中心节点中确定第一中心节点。
基于第三方面,在可能的实施方案中,接收模块还用于:接收第一数据流中的第二报文;处理模块具体用于:根据装置本地记录的第一报文处理规则将第二报文转发至第一虚拟实例,其中,第二报文是第一数据流中的第一报文之后的报文。
基于第三方面,在可能的实施方案中,接收模块具体用于:接收第一中心节点发送的携带有第一数据流对应的第一报文处理规则的隧道协议报文;处理模块具体用于:根据隧道协议报文获得第一报文处理规则并在装置本地记录第一报文处理规则。
基于第三方面,在可能的实施方案中,处理模块还用于:在确定本地记录的第一报文处理规则满足过期条件的情况下,删除装置本地记录的第一报文处理规则。
基于第三方面,在可能的实施方案中,接收模块还用于:接收第一数据流中的第三报文,其中,第三报文是第一数据流中的第一报文之后的报文;处理模块还用于:在确定本地没有记录第三报文的报文处理规则的情况下,网卡将第三报文发送至第一中心节点。
基于第三方面,在可能的实施方案中,装置设置有处理器和内存,处理器执行内存中的指令以运行装置的操作系统。
第四方面,本申请还提供一种网卡,包括处理器和存储器;该处理器用于执行该存储器中存储的指令,以使得该网卡执行第二方面中任一项所述的方法。
附图说明
图1是本申请实施例提供的一种全软件实现的虚拟交换机的示意图;
图2是本申请实施例提供的一种基于智能网卡的卸载方案示意图;
图3是本申请实施例提供的一种报文在计算节点中的流向示意图;
图4是本申请实施例提供的一种云系统的示意图;
图5是本申请实施例提供的一种报文处理方法的流程示意图;
图6是本申请实施例提供的一种基于心跳机制检测各个中心节点的状态的示意图;
图7是本申请实施例提供的一种计算节点上的网卡针对报文的处理过程示意图;
图8是本申请实施例提供的一种中心节点针对报文的处理过程示意图;
图9是本申请实施例提供的一种报文在中心节点和两个计算节点之间的流向示意图;
图10是本申请实施例提供的又一种云系统的示意图;
图11是本申请实施例提供的一种报文处理装置的结构示意图。
具体实施方式
下面对本申请实施例涉及的应用场景进行介绍。
传统的物理网络是为了使计算节点(如物理服务器、台式计算机等计算设备)之间能够收发数据而在计算节点之间建立的网络,一般包括交换机、路由器等物理网络设备。虚拟网络则是为了使运行于计算节点之上的虚拟实例(如虚拟机或容器)之间能够通信而相互逻辑连接所形成的网络。基于网络虚拟化技术,在物理网络之上可以构建一个或多个虚拟网络,虚拟网络与物理网络的地址空间是解耦的,通常不需要改变物理网络。
类似于物理网络中的物理交换机,虚拟网络中也有相应的虚拟交换机以模拟物理交换机的功能。虚拟交换机通常部署在运行虚拟实例的计算节点中,虚拟机交换机可以为同一个计算节点上的不同虚拟实例之间进行数据转发,还可以通过连接本计算节点上的物理网卡以连接到物理网络,进而实现不同计算节点上的虚拟实例之间的通信。也就是说,虚拟交换机是虚拟网络中的虚拟实例与物理网络的桥梁,虚拟实例通过虚拟交换机连接到物理网络。
在第一种实现方式中,虚拟交换机的功能全都由软件来实现(即全功能软件实现)。
例如,如图1所示,虚拟交换机1(软件程序)运行于计算节点A,两端分别连接物理网卡1、虚拟机VM1和VM2。虚拟交换机1对内提供虚拟机的虚拟接入端口,对外与计算节点A上的物理网卡1相连,以软件的形式为计算节点A上的虚拟机提供基本的二三层网络转发功能。类似的,虚拟交换机2(软件程序)运行于计算节点B,两端分别连接物理网卡2、虚拟机VM3和VM4。
在软件定义网络(software defined network,SDN)架构下,可以实现网络的数据平面与控制平面的分离,控制平面由SDN控制器实现,虚拟交换机负责数据平面的工作。由SDN控制器通过南向接口向各个虚拟交换机(部署在计算节点中)下发相应的报文处理规则、访问控制规则等,从而控制各个虚拟交换机的数据转发。其中,SDN架构中控制平面与数据平面之间的通信接口叫做“南向接口”,如OpenFlow协议、网络配置协议(networkconfiguration protocol,NETCONF)等。具体的,如图1所示,假设计算节点A中的VM1要与计算节点B中的VM3通信,VM1将首个报文发送至虚拟交换机1。而虚拟交换机1在本地的转发表中没有查询到能够匹配该报文的报文处理规则,于是通过南向接口将该报文转发到SDN控制器。然后,SDN控制器根据上述报文生成相应的报文处理规则,并通过南向接口将该报文处理规则下发至虚拟交换机1。该报文处理规则下发完成后,虚拟交换机1才能够处理VM1发往VM3的后续报文,VM1和VM3才能够正常通信。也就是说,报文处理规则的生成和下发均由SDN控制器来实现,虚拟交换机只需按照SDN控制器下发的报文处理规则执行相应的报文处理和/或转发操作。
可以理解的是,在需要大批量创建虚拟机的业务场景下,上述方式要求SDN控制器向这些虚拟机所在的所有计算节点上的虚拟交换机都下发相关的报文处理规则、访问控制规则等,以实现虚拟机之间的正常通信,进而提供相应的业务服务。然而,SDN控制器通过南向接口下发单条报文处理规则均为毫秒级,这部分时间开销对业务的影响会非常大。并且,由于上述虚拟交换机是全功能软件实现的,功能复杂、可靠性差,对计算节点的CPU性能消耗较高,致使计算节点上能够留给租户的计算资源大幅下降。
在第二种实现方式中,虚拟交换机的功能可以由软件和硬件共同实现。
例如,虚机交换机的数据面功能(匹配报文处理规则、执行报文处理/转发等)卸载到智能网卡(smart network interface controller,Smart-NIC)上,控制面的功能(生成和卸载报文处理规则等)由软件实现,以减轻虚拟交换机的功能对计算节点的CPU资源的消耗。具体的,如图2所示,假设计算节点A上的虚拟机VM1和VM2分别属于第一虚拟网络和第二虚拟网络(第一虚拟网络和第二虚拟网络中包含的其他虚拟机位于其他计算节点上),为了实现VM1与第一虚拟网络中的其他虚拟机之间的通信,以及实现VM2与第二虚拟网络中的其他虚拟机之间的通信,SDN控制器需要把第一虚拟网络以及第二虚拟网络相关的模糊转发规则、访问控制规则等发送至计算节点A上的控制平面1,即SDN控制器需要将计算节点上的虚拟实例所在的所有虚拟网络相关的所有模糊转发规则、访问控制规则等都下发至该计算节点上进行存储。
假设图2中的计算节点A中的VM1要与计算节点B中的VM3通信,再参见图3中的步骤①,VM1可以通过基于单根输入/输出虚拟化(single root input/output virtualizationSR-IOV)技术实现的直通(passthrough)方式,将本次通信的首个报文直接发送至智能网卡1。但是,在智能网卡1存储的转发表中没有查询到与该报文匹配的报文处理规则,智能网卡1将该报文上送至控制平面1,以学习相应的报文处理规则。如图3中的步骤②所示,控制平面1根据该报文以及SDN控制器下发的虚拟网络相关的模糊转发规则等计算生成一条最终的精确报文处理规则,即完成精确报文处理规则的学习,然后通过API调用将生成的精确的报文处理规则下沉至智能网卡1。此后,如图3中的步骤③所示,从VM1发往VM3的后续报文便可以在智能网卡1中匹配到这条精确的报文处理规则,智能网卡1可以直接根据该精确的报文处理规则对报文进行处理和/或转发。
可以看出,上述方式是在计算节点本地进行报文处理规则的生成和卸载的(占用计算节点的CPU资源),因此SDN控制器需要向各个计算节点下发一个或多个虚拟网络相关的所有模糊转发规则、访问控制规则等。这不仅给SDN控制器带来较大的压力,还会占用各个计算节点的内存资源。尤其是在虚拟网络规模较大的场景下(如百万虚拟机规模的虚拟网络),其上述规则整体的数据量较大,SDN控制器下发这些规则到计算节点会很耗时,影响计算节点上的虚拟实例的启动速度。而且上述规则将会大量占用计算节点的内存资源,致使计算节点上能够留给租户的虚拟实例使用的资源大幅降低、虚拟实例可靠性降低,并且导致计算节点上只能承载较少的虚拟实例(虚拟实例密度低)。
为了减少计算节点的资源占用,本申请实施例提供一种报文处理方法:网络控制器将一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息发送至第一中心节点,而不发送到计算节点,以减少计算节点的内存占用;中心节点基于网络控制器发送的上述信息可以生成计算节点所需的报文处理规则,进而卸载到计算节点上的网卡进行存储。也就是说,报文处理规则的生成和卸载迁移到了第一中心节点上实现,而不是在计算节点本地实现,可以释放计算节点的CPU资源。
为了便于理解本申请实施例的技术方案,下面先介绍本申请实施例涉及的系统架构。
请参见图4,图4是本申请实施例提供的一种云系统的示意图,包括网络控制器100、中心节点200和计算节点300,其中,计算节点300上插置/集成有网卡302,下面分别进行具体介绍。
(1)网络控制器100:用于向中心节点200发送一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息。
应理解,虚拟网络是通过网络虚拟化技术在一个底层/基础(underlay)的物理网络之上构建出的一张虚拟的逻辑网络,即叠加/重叠(overlay)网络。虚拟网络可以基于使用通用路由协议封装的网络虚拟化(network virtualization using generic routingencapsulation,NVGRE)、可拓展虚拟局域网络(virtual extensible local areanetwork,VXLAN)等网络虚拟化技术来实现,本申请实施例不做具体限定。
例如,虚拟网络可以是基于VXLAN技术实现的虚拟私有云(virtual privatecloud,VPC)。VPC是一种基于云数据中心构建的云上私有网络,可以为租户在云数据中心上的云服务器(即虚拟机)、云容器、云数据库等云上虚拟实例资源构建隔离、私密的虚拟网络环境,不同VPC之间逻辑隔离。租户可以在控制台上针对其VPC做一些租户配置,比如,租户可以自定义VPC、在VPC中按需划分子网、配置路由转发规则、带宽包等等中的一种或多种,还可以通过配置安全组规则、网络ACL规则等访问控制规则来保障网络安全。其中,安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等虚拟实例提供访问策略。安全组创建后,租户可以在安全组中定义相应的安全组规则,当虚拟实例加入该安全组后,即受到这些规则的保护。网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的数据流,子网中的所有虚拟实例均受到该子网对应的网络ACL规则的访问控制。
需要说明的是,某个虚拟网络中的某个虚拟实例的租户网络信息,指的是该虚拟网络的所有配置中与该虚拟实例相关的配置/规则。比如,租户可以在云数据中心上构建一个自己专属的VPC,并且在控制台(即云服务厂商的云管理平台提供的租户界面/API)上针对该VPC(中的虚拟实例)配置一些访问控制规则、报文处理规则、路由转发规则、位置信息、带宽包等等中的一种或多种,以满足租户的需求。对于该VPC中的某个虚拟机,该虚拟机的租户网络信息即为该VPC的所有配置中与该虚拟机相关的那部分配置/规则。
其中,某个虚拟实例的位置信息可以包括该虚拟实例的物理位置信息和虚拟位置信息。物理位置信息指示虚拟实例所在的计算节点300,可以包括虚拟实例所在的计算节点300的地址信息,比如网际协议(internet protocol,IP)地址、源媒体接入控制(mediaaccess control,MAC)地址等网络地址。虚拟位置信息指示虚拟实例所在的虚机网络以及虚拟实例在虚拟网络中的相关配置,比如,可以包括虚拟实例所在的虚拟网络、子网和/或安全组的标识、虚拟实例所对应的虚拟端口,等等。
在一种可能实施例中,网络控制器100可以接收云管理平台发过来的租户网络信息,有部分租户网络信息(例如安全组规则)可以是租户在云管理平台输入配置的,有部分可以是云管理平台预设的。例如,网络控制器100可以是SDN控制器,它可以通过南向接口向各个中心节点100发送一个或多个VPC中的至少一个虚拟实例的租户网络信息。
在一种可能的实施方案中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合。
在一种可能的实施例中,某个虚拟实例在某个虚拟网络中对应的租户网络信息,可以包括该虚拟实例在该虚拟网络中对应的访问控制规则。其中,访问控制规则可以包括安全组规则和/或访问控制列表规则。
以虚拟网络是租户创建的某个VPC为例,租户在该VPC中划分了子网1和子网2,并且为子网1设置了对应的网络ACL规则,以控制进出子网1的数据流,即子网1中的虚拟实例均受到该网络ACL规则的保护。租户在子网1中还设置了一个安全组A,并定义了安全组A对应的安全组规则,以控制进出安全组A的数据流,即安全组A中的虚拟实例均受到该安全组规则的保护。也就是说,该安全组A中的所有虚拟实例不仅受到该安全组A的安全组规则的保护,还受到子网1对应的网络ACL规则的保护,上述安全组A的安全组规则和子网1的网络ACL规则均与安全组A中的虚拟实例具有对应关系。中心节点200上可以记录有租户针对该VPC配置的所有访问控制规则(包括安全组规则和网络ACL规则),于是中心节点200可以基于这些访问控制规则执行相应的访问控制检查功能(在后文具体介绍)。
需要说明的是,网络控制器100仅向中心节点200发送一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息,供中心节点200根据这些信息生成精确的报文处理规则(无需计算节点300进行二次计算)以下发到计算节点300,而不会向计算节点300发送上述这些信息。仅在中心节点200保存模糊转发规则,例如,同子网内的二层转发位置表、跨子网的三层转发位置表、安全组规则、ACL规则以及链接会话信息等等,可以大幅减少计算节点300上的内存占用,并且由于不需要向计算节点300下发大量模糊转发规则,可以显著提升计算节点300上的虚机或容器的创建速度。其中,同子网内的二层转发位置表可以例如是从“VXLAN网络标识(VXLAN network identifier,VNI)+虚拟机的MAC地址”到“远端的VXLAN隧道终端(vxlan tunnel end point,VTEP)的IP地址+本地端口标识”的一个映射表,跨子网的三层转发位置表可以例如是从“(虚拟路由转发(virtual routing forwarding,VRF)+iface IP”到“网关的MAC地址+虚拟机的MAC地址+VNI+远端VTEP的IP地址”的一个映射表。
(2)中心节点200:可以是云数据中心中的物理服务器、计算机等计算设备,也可以由多个计算设备共同组成一个中心节点200,本申请实施例不做具体限定。
中心节点200用于存储网络控制器100发送的一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息,并且基于上述信息生成计算节点300上的网卡302所需的报文处理规则,进而卸载至该网卡302。其中,虚拟实例可以虚拟机或者容器等,本申请实施例不具体限定。
在一种可能的实施例中,如图4所示,中心节点200包括控制平面201和网卡202。其中,网卡202提供网络接口,以便中心节点200能够接入物理网络(如数据中心内部网络),进而能够与网络控制器100、计算节点300进行通信。控制平面201用于根据本地记录的上述一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息生成计算节点300上的网卡302所需的报文处理规则,然后通过网卡202将生成的报文处理规则发送至网卡302,即卸载报文处理规则。关于中心节点200如何生成计算节点300所需的报文处理规则,将在后文进行介绍,此处不赘述。
在一种可能的实施例中,在云系统中可以有一个中心节点,也可以有多个中心节点200(即中心节点集群)。每个中心节点200均可以接收并记录网络控制器100发送的一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息,并且可以基于上述信息生成计算节点300上的网卡302所需的报文处理规则。
可选的,多个中心节点200可以记录有相同的一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息,此时,这多个中心节点200都可以负责向上述相同的一个或多个虚拟网络中的至少一个虚拟实例所在的计算节点300上的网卡302卸载所需的报文处理规则。多个中心节点200上也可以记录不同的虚拟网络中的虚拟实例的租户网络信息,此时,这多个中心节点200可以分别负责向不同的虚拟网络中的虚拟实例所在的计算节点300上的网卡302卸载所需的报文处理规则。
例如,假设要求中心节点200和计算节点300位于同一区域(region)内,可以选取region内的一个或多个计算设备作为中心节点200,该region内的其他计算设备分别作为一个计算节点300,用以运行租户创建的虚拟实例。中心节点200上可以记录该region中建立的所有虚拟网络的中的虚拟实例的租户网络信息,于是该中心节点200可以向该region内的所有计算节点300上的网卡302提供卸载报文处理规则的服务。
在可能的实施例中,中心节点200还用于接收并存储网络控制器100发送的一个或多个虚拟网络中配置的访问控制规则,从而能够在中心节点200上实现访问控制检查功能。关于中心节点200实现访问控制检查的具体过程,将在后文介绍,此处不赘述。
在可能的实施例中,中心节点200可以通过隧道协议,如VXLAN-GPE协议、GRE协议等,将网卡302所需的报文处理规则封装到隧道协议报文,然后发送至网卡302上。相应的,网卡302对接收到的隧道协议报文进行解析,即可获得相应的报文处理规则,进而可以记录在本地,进而可以根据本地记录的报文处理规则执行相应的报文处理和/或转发。
需要说明的是,由于中心节点200本地记录有的一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息,因此,原本在计算节点300本地执行的计算精确报文处理规则的动作,现在可以放在中心节点200上来实现,完成了计算节点300网络计算功能池化。中心节点200将生成的精确转发规则下发给计算节点300,计算节点300无需额外计算就可以实现相应的报文转发。例如,一条精确转发规则可以是从“源IP地址+目的IP地址+源MAC地址+目的IP地址+VNI+协议号+源端口+目的端口”到“动作(比如可以包括设置源IP、设置目的IP、设置源MAC、设置目的MAC、tunnel_push、output”的一个映射。
(3)计算节点300:可以是云数据中心中的物理服务器、台式计算机等计算设备,本申请实施例不做具体限定。云系统中可以有一个或多个计算节点300,本申请实施例也不做具体限定。
应理解,云数据中心中通常有多个计算节点300,计算节点300是云数据中心向租户提供虚拟实例资源(运行租户创建的虚拟实例)的物理实体,但租户通常不会感知物理实体的存在。云数据中心的各个计算节点300上可以承载/运行租户创建的一个或多个虚拟实例,即计算节点300作为虚拟实例的宿主机,租户可以基于其在云数据中心中创建的这些虚拟实例部署自身的业务/服务。虚拟实例可以是虚拟机、容器等,本申请实施例不做具体限定,为了便于描述,后文中的虚拟实例主要是以虚拟机为例进行说明,但并不代表只能是虚拟机。
在本申请实施例中,网卡302用于实现虚拟交换机的数据面功能(匹配报文处理规则、执行报文处理和/或转发操作等)。具体的,网卡302上可以存储中心节点302下发的报文处理规则,进入网卡302的报文(可以是源自本计算节点300或其他计算节点300上的虚拟实例的报文)与网卡302本地存储的报文处理规则进行匹配,网卡302可以根据匹配到的报文处理规则来对该报文进行处理和/或转发。
在一具体实施例中,如图4所示,计算节点300上运行着一个或多个虚拟实例,并且该计算节点上插置(或集成)有一个网卡302。其中,网卡302可以基于SR-IOV技术生成一定数量的虚拟功能(virtual function,VF),每个VF可以直通到虚拟实例作为虚拟网卡使用,实现旁路宿主(即计算节点300)内核,不占用计算节点300的CPU资源。网卡302还提供网络接口,计算节点300上运行的虚拟实例可以直接通过该网卡302接入物理网络,进而能够与其他计算节点300上运行的虚拟实例进行通信。
在可能的实施例中,如图4所示,计算节点300还可以包括确定模块301,确定模块301可以用于从中心节点集群(包括多个中心节点200)中确定一个中心节点200。具体的,当进入网卡302的某个报文无法匹配到网卡302本地存储的任何报文处理规则时,确定模块301可以负责从多个中心节点200中确定一个中心节点200,进而通过网卡302将上述报文转发至确定的中心节点200,以便在该中心节点200上学习相应的报文处理规则,学习到的报文处理规则会卸载到网卡302中进行存储。关于如何从多个中心节点200中确定一个中心节点200,将在后文具体介绍,这里不赘述。
基于上述系统架构,下面具体介绍本申请提供的报文处理方法的实施例。
请参见图5,图5是本申请实施例中提供的一种报文处理方法的流程示意图,可以包括如下步骤:
S501、网卡302接收第一数据流中的第一报文,其中,该网卡302插置于运行第一虚拟实例的计算节点300,第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文。
需要说明的是,在一段时间段内,经过同一个网络的一系列具有相同属性的顺序发送的报文集合可以抽象为一个流(flow),或者叫数据流。数据流的判断标准一般由网络管理员定义,可以针对不同的数据流执行不同的策略。
例如,网络管理员可以把具有相同的源IP地址和目的IP地址的数据报文统称为一个数据流,这里的源IP地址和目的IP地址即为该数据流的属性。再如,网络管理员还可以把具有相同的TCP/IP四元组、五元组或者七元组的数据报文归到同一个数据流中,这些数据报文具有相同的四元组、五元组或者七元组信息,即为该数据流的属性。其中,四元组可以为源IP地址、目的IP地址、源端口和目的端口;五元组可以为IP地址、目的IP地址、协议号、源端口和目的端口;七元组可以为源MAC地址、目的MAC地址、源IP地址、目的IP地址、协议号、源端口和目的端口。
S502、网卡302在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有网络控制器100发送的一个或多个VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,上述至少一个虚拟实例包括第一虚拟实例和第二虚拟实例。
需要说明的是,上述网络控制器100可以是诸如SDN控制器、网络控制设备等,本申请实施例不做具体限定。
在一具体实施例中,报文处理规则包括匹配条件和动作。
以OpenFlow技术为例,OpenFlow中的流表(flow table)由一条条的流表项(即OpenFlow的报文处理规则)组成,每条流表项都有对应的一个流,每条流表项用于指示对应的流的处理方式。每个流表项都包括匹配域(即报文处理规则中的匹配条件)、计数器(用于统计数据流量相关信息)和动作表(即报文处理规则中的动作)。
其中,匹配域用来识别该条流表项对应的流,也叫待匹配内容,由多个匹配项/字段组成,可以涵盖物理层(比如入端口)、链路层(比如源MAC地址、目的MAC地址等)、网络层(比如源IP、目的IP、IP服务标识等)和传输层(比如源端口号、目的端口号)的标识。租户可以根据需要自定义匹配域中的匹配项,每个匹配项都可以通配。网络运营商可以决定使用何种粒度的流,比如,运营商只需要根据目的IP进行路由,那么流表项中可以只有目的IP地址这个匹配项是有效的,其他全为通配。
其中,流表项中的动作表定义了匹配到该流表项的报文需要进行的处理,即用于指示与该流表项的匹配域能够匹配的报文的处理方式。比如,可以包括转发至某一个端口(输出端口)、对报文进行封装或解封装、修改报文头中的某字段、丢弃报文、转发到某个特定位置(如网关)等处理动作和转发动作中的一项或者多项。
下面结合图6,对计算节点300上的网卡302接收到报文后的处理过程进行举例介绍。
当计算节点300上的网卡302接收到某个报文时(可以是源自本计算节点300或其他计算节点300上的虚拟实例的报文),对该报文进行解析,以获得该报文的属性信息(比如五元组信息)。然后,查询网卡302本地存储的流表,该流表中包含一条或多条报文处理规则,每条报文处理规则均包括相应的匹配条件和动作。将该报文的属性与流表中的各报文处理规则中的匹配条件进行比较,以确定该报文在流表中是否有匹配的报文处理规则。如果该报文的属性满足某一条报文处理规则中的匹配条件,则说明该报文与该报文处理规则匹配,网卡302便可以根据匹配到的报文处理规则中所规定的动作对该报文进行处理和/或转发。如果网卡302本地没有记录能够匹配该报文的报文处理规则,即该报文与网卡302中存储的所有报文处理规则均不匹配,则网卡302无法确定该如何处理该报文,网卡302就会将该报文转发至第一中心节点,以学习相应的报文处理规则。由前文的描述可知,第一中心节点上记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息,所以第一中心节点可以生成网卡302所需的精确的报文处理规则,进而卸载到网卡302上。
在可能的实施例中,可以有一个或多个中心节点200,因此,可以先从一个或多个中心节点200中确定一个中心节点200(即第一中心节点),再将第一报文转发至确定的中心节点200。
具体的,若只有一个中心节点200,则该中心节点200即为第一中心节点,则网卡302可以直接把第一数据流中的第一报文发给第一中心节点,以学习对应第一数据流的报文处理规则,用于指导第一数据流的报文该如何进行处理。若有多个中心节点200(即中心节点200集群化部署),从多个中心节点200中确定第一中心节点可以有多种不同的方式,本申请实施例不做具体限定,下面以方式一、方式二和方式三为例进行描述:
方式一、如图4所示,当计算节点300上的网卡302确定自身没有记录能够匹配第一报文的报文处理规则时,可以向计算节点300中的确定模块301发送匹配失败信息,该匹配失败信息表示网卡302上没有匹配当前报文(即第一报文)的报文处理规则以指导该报文该如何处理。在接收到网卡302的匹配失败信息后,确定模块301可以从多个中心节点200中随机选择一个中心节点200作为第一中心节点,或者采用某种选择算法从多个中心节点200中选择一个中心节点200作为第一中心节点,然后指示网卡302将当前报文转发至第一中心节点。
关于选择算法,本申请实施例不做具体限定。例如,可以采用取余算法,假设有N个中心节点200,N为大于1的正整数,并且N个中心节点200具有一定的先后顺序关系,确定模块301可以将当前的选择次数除以中心节点的个数N,如果余数是k则选择第k+1个中心节点200作为第一中心节点,其中,k为小于N的自然数。
方式二、确定模块301中可以存储有一个等价多路径(equal-cost multi-path,ECMP)路由表,包括分别去往多个中心节点200的多个路由表项。如图4所示,当计算节点300上的网卡302确定自身没有匹配第一报文的报文处理规则时,可以将第一报文上送至确定模块301。确定模块301可以根据第一报文携带的信息(比如第一报文的五元组信息,本申请实施例不具体限定),从上述ECMP表中选择出一个路由表项,被选中的路由表项对应的中心节点200即为第一中心节点。例如,确定模块301可以基于一致性哈希(consistenthashing)算法,对第一报文的报文头中携带的五元组信息进行哈希计算,再根据计算得到的哈希值从ECMP表中确定一个路由表项,即确定出第一中心节点。除了一致性哈希算法,也可以采用其他负载均衡的策略,本申请实施例不做具体限定。
然后,确定模块301指示网卡302根据上述路由表项将第一报文发送至第一中心节点。在一具体实施例中,网卡302可以将第一报文作为内层报文进行外层封装,即添加外层报文头,从而得到一个报文处理规则请求报文。其中,外层报文头中记录的源地址为计算节点300的网络地址,目的地址为第一中心节点的网络地址。网卡302根据确定模块301选中的路由表项将该报文处理规则请求报文发送至第一中心节点。
方式三、当网卡302确定自身没有匹配第一报文的报文处理规则时,可以告知确定模块301。然后,确定模块301先从多个中心节点200中确定处于在线状态的中心节点200,再从处于在线状态的中心节点200中确定第一中心节点,并指示网卡302将第一报文发送至第一中心节点。也就是说,通过判断各个中心节点200是否处于在线状态,可以排除掉下线的中心节点200,仅从在线的中心节点200中确定第一中心节点,处于在线状态的中心节点200可能有一个或者多个。如果只有一个处于在线状态的中心节点,即可直接将其确定为第一中心节点。如果有多个处于在线状态的中心节点200,则可以参照前述方式一或者方式二,从在线的多个中心节点200中确定第一中心节点。因此,第一报文只会发往在线的中心节点200,而不会发往下线的中心节点200,以保证网卡302能够学习到所需的报文处理规则,报文处理规则卸载的可靠性高。
关于确定模块301如何确定各个中心节点200是否处于在线状态,在可能的实施例中,可以基于心跳保活机制来实现。比如,如图7所示,计算节点300还可以包括健康检查模块303,它可以按照一定的时间间隔、周期性地向各个中心节点200发送一个心跳包。对于在线状态的中心节点200来说,它在接收到来自计算节点300的心跳包时,可以向该计算节点300发送一个反馈消息,以告知本中心节点200是在线的。而对于下线状态的中心节点200(可能是升级、重启或者故障等原因导致下线),它无法向计算节点300及时发送反馈消息,暂时无法向计算节点300提供卸载报文处理规则的服务。因此,健康检查模块303可以通过向某个中心节点200发送心跳包,根据反馈消息确定各个中心节点200的状态:如果在设定时间内能够接收到某个中心节点200的反馈消息,就可以确定该中心节点200处于在线状态;如果在设定时间内没有接收到某个中心节点200的反馈消息,就可以确定该中心节点200处于下线状态。因此,确定模块301可以向健康检查模块303获取各个中心节点200的状态信息,以确定哪些中心节点200是处于在线状态的,进而从处于在线状态的中心节点200中来选择第一中心节点(可以参照前述方式一或者方式二)。
需要说明的是,在上述多种方式中,确定模块301和/或健康检查模块303的功能也可以直接下沉到网卡302,即网卡302可以自行从多个中心节点200中确定第一中心节点,不占用计算节点300的CPU资源。
503、第一中心节点接收网卡302发送的第一报文,根据上述一个或多个VPC中的至少一个虚拟实例的租户网络信息生成第一数据流对应的第一报文处理规则。
具体来说,第一中心节点接收到网卡302发送的第一数据流中的第一报文之后,可以根据第一报文中携带的目的地址确定第一报文是要发往哪一个虚拟实例(此处是第一虚拟实例),即确定目的虚拟实例。由前文对云系统的介绍可知,第一中心节点上记录有一个或多个VPC中的至少一个虚拟实例(包括第一虚拟实例和第二虚拟实例)的租户网络信息,因此,第一中心节点可以根据一个或多个VPC中的至少一个虚拟实例的租户网络信息生成第一数据流对应的第一报文处理规则,该第一报文处理规则指示如何对第一数据流中的报文进行处理和/或转发。
关于租户网络信息,请参见云系统中的相关介绍,这里不重复。
在可能的实施例中,第一中心节点可以通过隧道协议,将生成的第一报文处理规则发送至计算节点300上的网卡302进行存储,即第一中心节点可以将第一报文处理规则封装在隧道协议报文中,然后将携带有第一报文处理规则的该隧道协议报文发送给网卡302。相应的,网卡302对接收到的该隧道协议报文进行解析,即可获得第一报文处理规则,进而记录在本地,从而可以根据第一报文处理规则对后续接收到的第一数据流的报文进行处理和/或转发。其中,隧道协议可以是VXLAN GPE协议、GRE协议等,本申请实施例不具体限定。
应理解,本申请实施例基于隧道协议卸载报文处理规则到计算节点300上的网卡302,不涉及计算节点300操作系统内核及网络协议栈开销,不占用计算节点300的CPU资源,可以提升报文处理规则卸载效率,使得虚拟实例间可以快速实现正常通信。
在可能的实施例中,第一中心节点根据第一报文的目的地址指示的第一虚拟实例的租户网络信息生成第一数据流对应的第一报文处理规则,并且生成对应第一数据流的第一会话表项,第一会话表项包括该第一报文处理规则。应理解,会话表项记录了一个TCP、UDP或者ICMP等协议的连接状态,根据会话表项可以确定报文所属的连接以及相应的报文处理规则。
在可能的实施例中,在第一中心节点生成第一数据流对应的第一报文处理规则之后,第一中心节点可以根据第一报文处理规则对第一报文进行处理和/或转发。
例如,第一中心节点生成的第一报文处理规则指示将第一数据流的报文发往第一虚拟实例所在的计算节点300,于是,第一中心节点可以直接根据第一报文处理规则的指示对第一报文进行外层封装处理,添加上外层报文头,其中,外层报文头中携带有第一虚拟实例所在的计算节点300的网络地址。然后,第一中心节点通过自身的网卡202将封装了外部头的第一报文发往物理网络,物理网络中的网络设备可以根据外层报文头的信息进行路由/转发,最终可以发送到第一虚拟实例所在的计算节点300上的网卡302,网卡302对接收到的报文进行解封装得到第一报文,进而将第一报文转发到第一虚拟实例。也就是说,第一中心节点在生成第一数据流对应的第一报文处理规则之后,可以直接对第一数据流的第一报文进行处理和/或转发,从而可以尽快将第一报文发送至第一虚拟实例,减少第一报文的时延。
在可能的实施例中,第一中心节点上记录的第一虚拟实例的租户网络信息包括第一虚拟实例对应的访问控制规则;第一中心节点可以根据第一报文的目的地址指示的第一虚拟实例对应的访问控制规则,生成第一数据流对应的第一报文处理规则。其中,在根据第一虚拟实例对应的访问控制规则和第一报文的源地址确定第一数据流的报文不允许通过的情况下,生成第一报文处理规则,此时的第一报文处理规则指示的处理动作是丢弃掉第一数据流的报文。
例如,假设租户在第一虚拟实例所在的VPC1中设置了一些访问控制规则,包括安全组A的安全组规则,其规定了来自某个地址范围的报文不允许通过。用户将第一虚拟实例设置在该安全组A中,于是安全组A的安全组规则即为第一虚拟实例在VPC1中对应的访问控制规则。第一报文的源地址指示了第二虚拟实例,如果第二虚拟实例的网络地址符合上述安全组A的安全组规则中所设定的地址范围,则可以确定第一数据流的报文(包括第一报文)不允许通过,此时第一中心节点可以生成相应的报文处理规则,以指示丢弃第一数据流的报文,从而能够阻挡来自该地址范围的报文进入第一虚拟实例。如果第二虚拟实例的网络地址不符合上述地址范围,则可以确定第一数据流的报文是允许通过的,此时第一中心节点可以生成相应的报文处理规则,以指示将第一数据流的报文转发至第一虚拟实例。
需要说明的是,对第一数据流的报文进行处理和转发,可以是:先对第一数据流的报文进行相应的封装/解封装、根据租户购买的带宽包对报文进行限速、流量计费、信息统计等处理,然后再将第一数据流的报文(可以是封装后的)转发至该报文的目的地址所指示的第一虚拟实例。如果只是对第一数据流的报文进行处理,则可以是对第一数据流的报文进行如丢弃、信息统计等处理操作,而不执行转发操作。如果只是对第一数据流的报文进行转发,则可以是直接将第一数据流的报文转发至该报文的目的地址所指示的第一虚拟实例,还可以是将第一数据流的报文先转发到某个特征的位置(比如某个通信网关)处,而不是直接转发至该报文的目的地址所指示的第一虚拟实例。
S504、第一中心节点将第一报文处理规则发送至网卡302,相应的,网卡302接收第一中心节点发送的第一报文处理规则并在本地记录第一报文处理规则。
也就是说,第一中心节点根据网卡302发送的第一报文生成一条精确的报文处理规则(即第一报文处理规则)后,将第一报文处理规则卸载到网卡302上。网卡302将接收到的第一报文处理规则记录在本地,比如可以记录在网卡302上用于记录报文处理规则的某个存储区域/位置(比如转发表、流表等)。
S505、网卡302接收第一数据流中的第二报文,根据本地记录的第一报文处理规则对第二报文进行处理和/或转发,其中,第二报文是第一数据流中位于第一报文之后的报文。
也就是说,在网卡302从第一中心节点学习到第一数据流对应的第一报文处理规则并将第一报文处理规则记录在本地之后,当第一数据流的后续报文来到该网卡302时,该网卡302便可以直接根据本地记录的第一报文处理规则进行相应的报文处理和/或转发,而无需再上送至中心节点200。
在可能的实施例中,网卡302中设置有报文处理规则过期机制:当计算节点300上的网卡302中存储的某报文处理规则满足过期条件时,计算节点300上的网卡302就自动删除该报文处理规则,以减少网卡302的内存占用。其中,过期条件可以是存储时长超过预设时长(或者称为:过期时间/存活时间),或者是未被匹配的时长超过预设值,本申请实施例不做具体限定。因此,当网卡302中存储的上述第一报文处理规则满足过期条件时,第一报文处理规则就会被网卡302主动删除。
在可能的实施例中,在网卡302删除了本地记录的第一报文处理规则之后,计算节点300接收到了第一数据流中的第三报文,第三报文是第一数据流中位于第一报文之后的报文。然而,此时的网卡302本地已经没有与第一数据流对应的报文处理规则了,网卡302不知道该如何处理和/或转发该第三报文,于是将第三报文转发至第一中心节点(确定第一中心节点的方式请参见前文介绍)。当第一中心节点接收到第三报文时,先查询会话表,以确定是否有第三报文匹配的会话表项。第一中心节点发现第三报文与之前生成的与第一数据流对应的第一会话表项(第一中心节点之前根据第一数据流中的第一报文生成的)能够匹配,即确定第三报文属于第一会话表项所对应的第一数据流,于是可以直接将第一会话表项中的第一报文处理规则发送到计算节点300上的网卡302。网卡302接收第一中心节点发送的第一报文转发规则,并将第一报文转发规则重新记录到本地,该第一报文转发规则会重新计算过期时间。于是,网卡302可以根据本地记录的第一报文转发规则对后续接收到的第一数据流的报文进行处理和/或转发。
可以理解的是,当中心节点200具有与网卡302发送的某个报文匹配的会话表项时,就说明之前已经有同一数据流的报文上传到了该中心节点200,并且通过了访问控制检查,所以才会生成对应该数据流的这条会话表项。因此,该中心节点200可以直接基于匹配的会话表项确定报文处理规则,进而将报文处理规则卸载到网卡302,无需再次执行访问控制检查,既可以减少对中心节点200的性能消耗,也可以提高卸载报文处理规则的效率。
下面再结合图8,对中心节点200接收到网卡302发送的报文后的处理过程进行举例说明。
如图8所示,当某个中心节点200接收到某个计算节点300上的网卡302发来的报文时,对该报文进行解析,以确定该报文的属性(如五元组),进而根据该报文的属性去查询中心节点200上的会话表。如果该报文与会话表中的某一条会话表项能够匹配,则中心节点200可以直接根据该会话表项确定一条报文处理规则,然后将报文处理规则发送至计算节点300上的网卡302进行存储。显然,如果报文有匹配的会话表项,中心节点200就可以直接根据会话表项确定相应的报文处理规则,而无需对该报文执行访问控制检查,可以缩短卸载报文处理规则的时间,提高中心节点200卸载报文处理规则的效率。如果会话表中没有与该报文匹配的会话表项,则中心节点200再去查询相应的访问控制规则,以确定该报文是否允许通过。如果根据该报文的源地址和该报文的目的地址指示的虚拟实例所对应的访问控制规则,确定该报文允许通过,则继续根据该报文中携带的目的地址指示的目的虚拟实例的租户网络信息生成相应的报文处理规则,此时该报文处理规则指导如何将相应数据流的报文转发至目的虚拟实例,并生成新的会话表项加入会话表中。如果根据该报文的源地址和该报文的目的地址指示的虚拟实例所对应的访问控制规则,确定该报文不允许通过,则生成相应的报文处理规则,此时该报文处理规则指示的处理动作是丢弃掉相应数据流的报文。最后,中心节点200将生成的报文处理规则发送至网卡302进行本地存储,从而完成报文处理规则的卸载。
下面再结合图9,对图5提供的报文处理方法进行整体举例说明。
如图9所示,图中示例性的绘出了两个计算节点300,分别是计算节点A和计算节点B。其中,计算节点A上运行有虚拟机VM1和VM2这两个虚拟实例,计算节点B上运行有虚拟机VM3和VM4这两个虚拟实例,并且VM1和VM3属于同一个虚拟网络(假设是VPC1)。此时计算节点A上的VM1需要与计算节点B上的VM3进行通信,于是VM1将本次通信的第一数据流中的第一报文(首个报文)发送至计算节点A上的网卡302。其中,第一报文的报文头中携带的五元组信息(源MAC地址、目的MAC地址、源IP地址、目的IP地址、协议号)依次为VM1的MAC地址、VM3的MAC地址、VM1的IP地址、VM3的IP地址、6(表示是TCP协议)。
如图9中的步骤①所示,VM1将第一报文发送到计算节点A上的网卡302。该网卡302将第一报文与自身存储的转发表中的报文处理规则进行比较,发现第一报文没有匹配上任何一条报文处理规则,即计算节点A上的网卡302中没有与第一数据流对应的报文处理规则来指导第一数据流的报文该如何进行处理和/或转发。于是,该网卡302将第一报文发送至计算节点A上的确定模块301。该确定模块301中存储有一个ECMP路由表,包括分别去往多个中心节点200的多个路由表项。该确定模块301根据第一报文中携带的五元组信息进行哈希计算,再根据计算得到的哈希值从ECMP表中确定一个路由表项,该路由表项对应的中心节点200即为第一中心节点。然后网卡302根据确定模块301所确定的该路由表项将第一报文发送至第一中心节点。
第一中心节点根据计算节点A上传的第一报文的目的地址指示的VM3的租户网络信息,生成第一数据流对应的第一报文处理规则,该第一报文处理规则指示如何对第一数据流进行处理和转发。应理解,虚拟网络与物理网络的地址空间是解耦的,第一报文的报文头中携带的IP地址、MAC地址都是VPC1中的地址,仅在VPC1中有意义,而物理网络中的网络设备需要使用一组指向计算节点B的外部头域才能将第一报文转发到计算节点B。因此,第一中心节点生成的第一报文处理规则所规定的动作指示的是对第一报文进行相应的外层封装,在外部头中添加上计算节点B的信息,如外层报文头中携带的目的地址为VM3所在的计算节点B的网络地址,以便物理网络中的网络设备能够根据外部头中的信息将报文转发至计算节点B,进而转发至VM3。如图9中的步骤②所示,第一中心节点生成第一报文处理规则之后,可以直接根据第一报文处理规则对第一报文进行相应的封装处理,然后通过网卡202转发至物理网络,使得封装后的第一报文能够通过物理网络的传输来到计算节点B上的网卡302。相应的,计算节点B上的网卡302对收到的报文进行解封装可以得到第一报文,进而转发到VM3。
需要说明的是,计算节点B上的网卡302得到上述封装的第一报文时,如果该网卡302中有匹配的报文处理规则,则可以直接根据该报文处理规则进行处理和/或转发。而如果该网卡302中没有匹配的报文处理规则,它便无法确定该如何对其进行处理和/或转发。于是,计算节点B上的网卡302同样会把第一报文发送到某个中心节点200上,以学习相应的报文处理规则。在可能的实施例中,在计算节点A将第一报文发往中心节点200时,中心节点200既可以生成计算节点A上的网卡302所需的第一数据流对应的第一报文处理规则(指示对第一数据流的报文进行相应的外部封装,并通过相应的端口转发进入物理网络),也可以生成计算节点B上的网卡302所需的第一数据流对应的第二报文处理规则(指示对报文进行解封装,并通过VM3对应的虚拟机端口转发至VM3),再分别卸载到相应的网卡302上。
如图9中的步骤③所示,当VM1发往VM3的后续报文来到计算节点A上的网卡302时,这些报文能够与该网卡302上存储的第一报文处理规则匹配,此时就不需要把报文上送到第一中心节点。计算节点A上的网卡302可以直接根据第一报文处理规则对这些报文进行相应的处理并输入物理网络,从而转发到计算节点B上的网卡302,最终能够转发到VM3。
综上所述,在本申请实施例提供的报文处理方法中,网络控制器100不需要跟大量的计算节点300进行交互,只需要与少量的中心节点200进行交互,只会将一个或多个VPC中的至少一个虚拟实例的租户网络信息发送到各个中心节点200。相对于网络控制器100将上述信息下发到各个计算节点300上的方案,本申请实施例的方法不需要网络控制器100向各个计算节点300下发上述信息,可以减少各个计算节点300上的内存占用。
本申请实施例的方法仅在中心节点200保存一个或多个VPC中的至少一个虚拟实例的租户网络信息,由中心节点200负责向各个计算节点300上的网卡302卸载其所需的精确的报文处理规则,中心节点200还可以实现访问控制检查、流量统计等功能,网卡302只需要根据中心节点200远程卸载的报文处理规则进行简单的报文处理和/或转发。也就是说,虚拟交换机的复杂功能(精确报文处理规则的生成和卸载、访问控制检查等)都放在了中心节点200上实现,中心节点200执行了原来由计算节点300执行的功能,实现网络部分的集中处理,可以节约计算节点300的资源,不占用计算节点300的CPU资源,简化了计算节点300的功能,使得计算节点300的可靠性大大提升,也便于实现计算节点300的轻量化升级、降低计算节点300的成本。中心节点200还支持集群化部署,每个中心节点200上都记录有一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息。因此,各计算节点300上的网卡302可以将报文处理规则请求分摊到中心节点集群中的不同中心节点200上,以减轻各个中心节点200的压力,提升可靠性。
在本申请实施例中,网卡302将下线状态的中心节点200排除,只会把报文发送到在线的中心节点200上,从而能够支持对中心节点200进行故障隔离、支持中心节点200的无损升级。即部分中心节点200因故障或者升级等因素下线不会影响网卡302获取所需的报文处理规则,其他在线状态的中心节点200仍然可以正常提供卸载报文处理规则的服务,保证了高可用性。而且,通过中心节点200的资源池化(计算节点300网络计算功能池化),一个中心节点200上记录的一个或多个虚拟网络中的至少一个虚拟实例的租户网络信息(一份信息,提供集中式的模糊转发规则管理),即可满足多个计算节点300的需求。比如,中心节点200和计算节点300可以按照1:1000的数量配比,即中心节点200上记录的一份信息即可满足与该虚拟网络相关的上千台计算节点300上的网卡302的报文处理规则卸载需求,可以解决云数据中心整体内存耗费严重的问题。
需要说明的是,本申请实施例的计算节点300和网卡302获取所需的报文处理规则、报文转发均在租户态完成,不涉及计算节点300的操作系统内核以网络协议栈开销。因此,计算节点300上的网卡302获取到所需的报文处理规则的时间较短(微秒级别),从而可以提升计算节点300的虚拟实例启动效率。即使是在需要大批量创建虚拟实例的业务场景下,由于卸载报文处理规则的时间开销很小,虚拟实例间可以快速实现通信,从而可以快速为租户提供相应的业务服务。还需要说明的是,本申请实施例的报文处理方法可以适用于计算、存储、虚拟实例迁移等场景。在虚拟实例迁移场景下,本申请实施例的方法由于卸载报文处理规则的时间大大缩短,能够提升虚拟实例在不同计算节点300之间的迁移效率。
如图10所示,本申请还提供一种云系统1000,包括网络控制器100、第一中心节点和计算节点300,该计算节点300上插放置有网卡302。
计算节点300,用于插置网卡302并运行第一虚拟实例。
网卡302,用于接收第一数据流中的第一报文,其中第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文。
网络控制器100(例如是SDN控制器),用于将一个或多个VPC中的至少一个虚拟实例的租户网络信息发送至第一中心节点。
网卡302,还用于在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有上述一个或多个VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,上述至少一个虚拟实例包括第一虚拟实例和第二虚拟实例。
第一中心节点,用于接收第一报文,根据上述一个或多个VPC中的至少一个虚拟实例的租户网络信息生成第一数据流对应的第一报文处理规则,并根据第一报文处理规则对第一报文进行处理和/或转发。
网卡302,还用于接收第一中心节点发送的第一报文处理规则并在本地记录第一报文处理规则。
网卡302,还用于根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发。
在可能的实施例中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合,则:第一中心节点,具体用于根据上述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、ACL规则、链接会话信息中的一者或任意组合生成该第一报文处理规则。
在可能的实施例中,上述网卡302还用于:从中心节点集群中确定第一中心节点,其中,中心节点集群包括多个中心节点,多个中心节点中的每个中心节点均记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息。
在可能的实施例中,上述网卡302具体用于:先从上述多个中心节点中确定处于在线状态的中心节点,再从处于在线状态的中心节点中确定第一中心节点。
在可能的实施例中,上述网卡302具体用于:接收第一数据流中的第二报文,根据本地记录的第一报文处理规则将第二报文转发至第一虚拟实例,其中,第二报文是第一数据流中位于第一报文(即首个报文)之后的报文。
在可能的实施例中,上述第一中心节点还用于:生成携带上述第一报文处理规则的隧道协议报文,然后向网卡302发送该隧道协议报文;相应的,网卡302还用于:接收第一中心节点发送的该隧道协议报文,根据该隧道协议报文获得第一报文处理规则并在本地记录第一报文处理规则。
在可能的实施例中,第一虚拟实例的租户网络信息包括第一虚拟实例对应的访问控制规则,上述访问控制规则包括安全组规则和/或ACL规则,第一中心节点具体用于:在根据第一虚拟实例对应的访问控制规则和第一报文的源地址确定第一数据流的报文不允许通过的情况下,生成第一报文处理规则,其中第一报文处理规则指示丢弃第一数据流的报文。
在可能的实施例中,网卡302还用于:在确定本地记录的第一报文处理规则满足过期条件的情况下,删除本地记录的第一报文处理规则。
在可能的实施例中,第一中心节点还用于:生成对应第一数据流的第一会话表项,第一会话表项包括第一报文处理规则;在删除本地记录的第一报文处理规则之后,网卡302还用于:接收第一数据流中的第三报文,在确定本地没有记录第三报文的报文处理规则的情况下,将第三报文发送至第一中心节点,其中,第三报文是第一数据流中的第一报文之后的报文;第一中心节点还用于:在确定第三报文属于第一会话表项对应的第一数据流的情况下,将第一会话表项中的第一报文处理规则发送至网卡302。
在可能的实施例中,上述网卡302设置有处理器和内存,该处理器执行该内存中的指令以运行该网卡302的操作系统。
上述网络控制器100、第一中心节点均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来介绍网络控制器100的实现方式。类似的,第一中心节点的实现方式可以参考网络控制器100的实现方式。
作为软件功能单元的一种举例,网络控制器100可以包括运行在计算虚拟实例上的代码。其中,计算虚拟实例可以是物理主机(计算设备)、虚拟机、容器等计算设备中的至少一种。进一步地,上述计算设备可以是一台或者多台。例如,网络控制器100可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的region中,也可以分布在不同的region中。用于运行该代码的多个主机/虚拟机/容器可以分布在相同的AZ中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个VPC中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内。同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
作为硬件功能单元的一种举例,网络控制器100可以包括至少一个计算设备,如服务器等。或者,网络控制器100也可以是利用ASIC实现、或PLD实现的设备等。其中,上述PLD可以是CPLD、FPGA、GAL或其任意组合实现。
网络控制器100包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。网络控制器100包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,网络控制器100包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,上述云系统1000可以对应与图4中的云系统,用于实现图5的报文处理方法的任一实施例,具体请参见上文描述,这里不赘述。
请参见图11,本申请实施例还提供一种报文处理装置1100,包括接收模块1101和处理模块1102。
接收模块1101,用于接收第一数据流中的第一报文,其中,装置插置于运行第一虚拟实例的计算节点,第一报文的目的地址为第一虚拟实例的网络地址,第一报文的源地址为第二虚拟实例的网络地址,第一报文为第一数据流的首个报文。
处理模块1102,用于在确定本地没有记录第一报文的报文处理规则的情况下,将第一报文发送至记录有一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,至少一个虚拟实例包括第一虚拟实例和第二虚拟实例。
接收模块1101,还用于接收第一中心节点发送的第一报文处理规则。
处理模块1102,还用于在装置本地记录第一报文处理规则。
处理模块1102,还用于根据第一报文处理规则对第一数据流中的第一报文之后的报文进行处理和/或转发。
在可能的实施例中,上述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、ACL规则、链接会话信息中的一者或任意组合。
在可能的实施例中,处理模块1102还用于:从中心节点集群中确定第一中心节点,其中,中心节点集群包括多个中心节点,多个中心节点中的每个中心节点均记录有上述一个或多个VPC中的至少一个虚拟实例的租户网络信息。
在可能的实施例中,处理模块1102具体用于:从多个中心节点中确定处于在线状态的中心节点;从处于在线状态的中心节点中确定第一中心节点。
在可能的实施例中,接收模块1101还用于:接收第一数据流中的第二报文;处理模块1102具体用于:根据装置本地记录的第一报文处理规则将第二报文转发至第一虚拟实例,其中,第二报文是第一数据流中的第一报文之后的报文。
在可能的实施例中,接收模块1101具体用于:接收第一中心节点发送的携带有第一数据流对应的第一报文处理规则的隧道协议报文;处理模块1102具体用于:根据隧道协议报文获得第一报文处理规则并在装置本地记录第一报文处理规则。
在可能的实施例中,处理模块1102还用于:在确定本地记录的第一报文处理规则满足过期条件的情况下,删除装置本地记录的第一报文处理规则。
在可能的实施例中,接收模块1101还用于:接收第一数据流中的第三报文,其中,第三报文是第一数据流中的第一报文之后的报文;处理模块1102还用于:在确定本地没有记录第三报文的报文处理规则的情况下,网卡将第三报文发送至第一中心节点。
在可能的实施例中,报文处理装置1100设置有处理器和内存,处理器执行内存中的指令以运行报文处理装置1100的操作系统。
其中,接收模块1101和处理模块1102均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以处理模块1102为例,介绍处理模块1102的实现方式。类似的,接收模块1101的实现方式可以参考处理模块1102的实现方式。
模块作为软件功能单元的一种举例,处理模块1102可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,处理模块1102可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,处理模块1102可以包括至少一个计算设备,如服务器等。或者,处理模块1102也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
处理模块1102包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。处理模块1102包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,处理模块1102包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,处理模块1102可以用于执行图5的报文处理方法中网卡302侧的任意步骤,接收模块1101可以用于执行图5的报文处理方法中网卡302侧的任意步骤,接收模块1101和处理模块1102负责实现的步骤可根据需要指定,接收模块1101和处理模块1102分别实现图5的报文处理方法中网卡302侧的不同的步骤来实现报文处理装置1100(可以对应于图10中的网卡302)的全部功能。
本申请实施例还提供一种网卡,包括处理器和存储器;该处理器用于执行该存储器中存储的指令,以使得该网卡执行图5的报文处理方法中网卡302侧的任一实施例的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (29)

1.一种云系统,其特征在于,包括:
计算节点,用于插置网卡并运行第一虚拟实例;
所述网卡,用于接收第一数据流中的第一报文,其中,所述第一报文的目的地址为所述第一虚拟实例的网络地址,所述第一报文的源地址为第二虚拟实例的网络地址,所述第一报文为所述第一数据流的首个报文;
网络控制器,用于将一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息发送至第一中心节点;
所述网卡,还用于在确定本地没有记录所述第一报文的报文处理规则的情况下,将所述第一报文发送至记录有所述一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的所述第一中心节点,其中,所述至少一个虚拟实例包括所述第一虚拟实例和所述第二虚拟实例;
所述第一中心节点,用于接收所述第一报文,根据所述一个或多个VPC中的至少一个虚拟实例的租户网络信息生成所述第一数据流对应的第一报文处理规则,并根据所述第一报文处理规则对所述第一报文进行处理和/或转发;
所述网卡,还用于接收所述第一中心节点发送的所述第一报文处理规则并在本地记录所述第一报文处理规则;
所述网卡,还用于根据所述第一报文处理规则对所述第一数据流中的所述第一报文之后的报文进行处理和/或转发。
2.根据权利要求1所述的系统,其特征在于,所述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括所述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合,则:
所述第一中心节点,具体用于根据所述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合生成所述第一报文处理规则。
3.根据权利要求1或2所述的系统,其特征在于,所述网卡还用于:
从中心节点集群中确定所述第一中心节点,其中,所述中心节点集群包括多个中心节点,所述多个中心节点中的每个中心节点均记录有所述一个或多个VPC中的至少一个虚拟实例的租户网络信息。
4.根据权利要求3所述的系统,其特征在于,所述网卡具体用于:
从所述多个中心节点中确定处于在线状态的中心节点,从所述处于在线状态的中心节点中确定所述第一中心节点。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述网卡具体用于:接收所述第一数据流中的第二报文,根据本地记录的所述第一报文处理规则将所述第二报文转发至所述第一虚拟实例,其中,所述第二报文是所述第一数据流中的所述第一报文之后的报文。
6.根据权利要求1至5中任一项所述的系统,其特征在于,所述第一中心节点还用于:生成携带所述第一报文处理规则的隧道协议报文,向所述网卡发送所述隧道协议报文;
所述网卡还用于:接收所述第一中心节点发送的所述隧道协议报文,根据所述隧道协议报文获得所述第一报文处理规则并在本地记录所述第一报文处理规则。
7.根据权利要求1至6中任一项所述的系统,其特征在于,所述第一虚拟实例的租户网络信息包括所述第一虚拟实例对应的访问控制规则,所述访问控制规则包括安全组规则和/或访问控制列表规则,所述第一中心节点具体用于:在根据所述第一虚拟实例对应的访问控制规则和所述第一报文的源地址确定所述第一数据流的报文不允许通过的情况下,生成所述第一报文处理规则,所述第一报文处理规则指示丢弃所述第一数据流的报文。
8.根据权利要求1至7中任一项所述的系统,其特征在于,所述网卡还用于:在确定本地记录的所述第一报文处理规则满足过期条件的情况下,删除本地记录的所述第一报文处理规则。
9.根据权利要求8所述的系统,其特征在于,所述第一中心节点还用于:生成对应所述第一数据流的第一会话表项,所述第一会话表项包括所述第一报文处理规则;
在所述删除本地记录的所述第一报文处理规则之后,所述网卡还用于:接收所述第一数据流中的第三报文,在确定本地没有记录所述第三报文的报文处理规则的情况下,将所述第三报文发送至所述第一中心节点,其中,所述第三报文是所述第一数据流中的所述第一报文之后的报文;
所述第一中心节点还用于:在确定所述第三报文属于所述第一会话表项对应的所述第一数据流的情况下,将所述第一会话表项中的所述第一报文处理规则发送至所述网卡。
10.根据权利要求1至9中任一项所述的系统,其特征在于,所述网卡设置有处理器和内存,所述处理器执行所述内存中的指令以运行所述网卡的操作系统。
11.一种报文处理方法,其特征在于,所述方法包括:
网卡接收第一数据流中的第一报文,其中,所述网卡插置于运行第一虚拟实例的计算节点,所述第一报文的目的地址为所述第一虚拟实例的网络地址,所述第一报文的源地址为第二虚拟实例的网络地址,所述第一报文为所述第一数据流的首个报文;
所述网卡在确定本地没有记录所述第一报文的报文处理规则的情况下,将所述第一报文发送至记录有一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,所述至少一个虚拟实例包括所述第一虚拟实例和所述第二虚拟实例;
所述网卡接收所述第一中心节点发送的所述第一报文处理规则并在本地记录所述第一报文处理规则;
所述网卡根据所述第一报文处理规则对所述第一数据流中的所述第一报文之后的报文进行处理和/或转发。
12.根据权利要求11所述的方法,其特征在于,所述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括所述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合。
13.根据权利要求11或12所述的方法,其特征在于,在所述将所述第一报文发送至记录有一个或多个VPC中的至少一个虚拟实例的租户网络信息的第一中心节点之前,所述方法还包括:
所述网卡从中心节点集群中确定所述第一中心节点,其中,所述中心节点集群包括多个中心节点,所述多个中心节点中的每个中心节点均记录有所述一个或多个VPC中的至少一个虚拟实例的租户网络信息。
14.根据权利要求13所述的方法,其特征在于,所述网卡从中心节点集群中确定所述第一中心节点,包括:所述网卡从所述多个中心节点中确定处于在线状态的中心节点,从所述处于在线状态的中心节点中确定所述第一中心节点。
15.根据权利要求11至14中任一项所述的方法,其特征在于,所述网卡根据所述第一报文处理规则对所述第一数据流中的所述第一报文之后的报文进行处理和/或转发,包括:所述网卡接收所述第一数据流中的第二报文,根据本地记录的所述第一报文处理规则将所述第二报文转发至所述第一虚拟实例,其中,所述第二报文是所述第一数据流中的所述第一报文之后的报文。
16.根据权利要求11至15中任一项所述的方法,其特征在于,所述网卡接收所述第一中心节点发送的所述第一数据流对应的第一报文处理规则并在本地记录所述第一报文处理规则,包括:
所述网卡接收所述第一中心节点发送的携带有所述第一数据流对应的所述第一报文处理规则的隧道协议报文;
所述网卡根据所述隧道协议报文获得所述第一报文处理规则并在本地记录所述第一报文处理规则。
17.根据权利要求11至16中任一项所述的方法,其特征在于,所述方法还包括:
在确定本地记录的所述第一报文处理规则满足过期条件的情况下,所述网卡删除本地记录的所述第一报文处理规则。
18.根据权利要求17所述的方法,其特征在于,在所述网卡删除本地记录的所述第一报文处理规则之后,所述方法还包括:
所述网卡接收所述第一数据流中的第三报文,其中,所述第三报文是所述第一数据流中的所述第一报文之后的报文;
在确定本地没有记录所述第三报文的报文处理规则的情况下,所述网卡将所述第三报文发送至所述第一中心节点。
19.根据权利要求11至18中任一项所述的方法,其特征在于,所述网卡设置有处理器和内存,所述处理器执行所述内存中的指令以运行所述网卡的操作系统。
20.一种报文处理装置,其特征在于,包括:
接收模块,用于接收第一数据流中的第一报文,其中,所述装置插置于运行第一虚拟实例的计算节点,所述第一报文的目的地址为所述第一虚拟实例的网络地址,所述第一报文的源地址为第二虚拟实例的网络地址,所述第一报文为所述第一数据流的首个报文;
处理模块,用于在确定本地没有记录所述第一报文的报文处理规则的情况下,将所述第一报文发送至记录有一个或多个虚拟私有云VPC中的至少一个虚拟实例的租户网络信息的第一中心节点,其中,所述至少一个虚拟实例包括所述第一虚拟实例和所述第二虚拟实例;
所述接收模块,还用于接收所述第一中心节点发送的所述第一报文处理规则;
所述处理模块,还用于在所述装置本地记录所述第一报文处理规则;
所述处理模块,还用于根据所述第一报文处理规则对所述第一数据流中的所述第一报文之后的报文进行处理和/或转发。
21.根据权利要求20所述的装置,其特征在于,所述一个或多个VPC中的至少一个虚拟实例的租户网络信息包括所述一个或多个VPC中的至少一个虚拟实例的子网转发位置表、跨子网的三层转发位置表、安全组规则、访问控制列表规则、链接会话信息中的一者或任意组合。
22.根据权利要求20或21所述的装置,其特征在于,所述处理模块还用于:
从中心节点集群中确定所述第一中心节点,其中,所述中心节点集群包括多个中心节点,所述多个中心节点中的每个中心节点均记录有所述一个或多个VPC中的至少一个虚拟实例的租户网络信息。
23.根据权利要求22所述的装置,其特征在于,所述处理模块具体用于:
从所述多个中心节点中确定处于在线状态的中心节点;
从所述处于在线状态的中心节点中确定所述第一中心节点。
24.根据权利要求20至23中任一项所述的装置,其特征在于,
所述接收模块还用于:接收所述第一数据流中的第二报文;
所述处理模块具体用于:根据所述装置本地记录的所述第一报文处理规则将所述第二报文转发至所述第一虚拟实例,其中,所述第二报文是所述第一数据流中的所述第一报文之后的报文。
25.根据权利要求20至24中任一项所述的装置,其特征在于,
所述接收模块具体用于:接收所述第一中心节点发送的携带有所述第一数据流对应的所述第一报文处理规则的隧道协议报文;
所述处理模块具体用于:根据所述隧道协议报文获得所述第一报文处理规则并在所述装置本地记录所述第一报文处理规则。
26.根据权利要求20至25中任一项所述的装置,其特征在于,所述处理模块还用于:
在确定本地记录的所述第一报文处理规则满足过期条件的情况下,删除所述装置本地记录的所述第一报文处理规则。
27.根据权利要求26所述的装置,其特征在于,
所述接收模块还用于:接收所述第一数据流中的第三报文,其中,所述第三报文是所述第一数据流中的所述第一报文之后的报文;
所述处理模块还用于:在确定本地没有记录所述第三报文的报文处理规则的情况下,所述网卡将所述第三报文发送至所述第一中心节点。
28.根据权利要求20至27中任一项所述的装置,其特征在于,所述装置设置有处理器和内存,所述处理器执行所述内存中的指令以运行所述装置的操作系统。
29.一种网卡,其特征在于,包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述网卡执行如权利要求11-19中任一项所述的方法。
CN202211210642.5A 2022-07-06 2022-09-30 云系统、报文处理方法、装置、及网卡 Pending CN117411878A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2023/086557 WO2024007644A1 (zh) 2022-07-06 2023-04-06 云系统、报文处理方法、装置、及网卡

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210788663 2022-07-06
CN2022107886639 2022-07-06

Publications (1)

Publication Number Publication Date
CN117411878A true CN117411878A (zh) 2024-01-16

Family

ID=89489585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211210642.5A Pending CN117411878A (zh) 2022-07-06 2022-09-30 云系统、报文处理方法、装置、及网卡

Country Status (1)

Country Link
CN (1) CN117411878A (zh)

Similar Documents

Publication Publication Date Title
US10917351B2 (en) Reliable load-balancer using segment routing and real-time application monitoring
US20210036951A1 (en) Segment routing with fast reroute for container networking
US10645201B2 (en) Packet handling during service virtualized computing instance migration
US10523598B2 (en) Multi-path virtual switching
US9942148B1 (en) Tunneled packet aggregation for virtual networks
US10534601B1 (en) In-service software upgrade of virtual router with reduced packet loss
US9882776B2 (en) Methods and apparatus for configuring a virtual network switch
US10606454B2 (en) Stage upgrade of image versions on devices in a cluster
CN113273142B (zh) 通信系统和通信方法
US20170366605A1 (en) Providing data plane services for applications
CN113261240A (zh) 使用可编程客户机进行多租户隔离
CN114531405B (zh) 一种流表处理方法及相关设备
US20170331741A1 (en) Mac chaining load balancer
US11128489B2 (en) Maintaining data-plane connectivity between hosts
US20160320818A1 (en) Dynamic management of power supply units
US9008080B1 (en) Systems and methods for controlling switches to monitor network traffic
CN113326228B (zh) 基于远程直接数据存储的报文转发方法、装置及设备
US20150188731A1 (en) Programmable Distributed Networking
CN110061912B (zh) 仲裁虚拟节点的冗余控制平面之间的主控权
US20180176145A1 (en) Switch fabric based load balancing
US11165703B2 (en) Prefix-based fat flows
US11336570B1 (en) Layer three multi-homing for virtual networks
US11405320B2 (en) Systems and methods for scalable validation of multiple paths in a network using segment routing
CN117411878A (zh) 云系统、报文处理方法、装置、及网卡
EP3734916A1 (en) Prefix-based fat flows

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication