CN108881069B - 多播流量的转发方法、装置和服务器 - Google Patents
多播流量的转发方法、装置和服务器 Download PDFInfo
- Publication number
- CN108881069B CN108881069B CN201810674282.1A CN201810674282A CN108881069B CN 108881069 B CN108881069 B CN 108881069B CN 201810674282 A CN201810674282 A CN 201810674282A CN 108881069 B CN108881069 B CN 108881069B
- Authority
- CN
- China
- Prior art keywords
- meter
- multicast traffic
- exit port
- flow table
- kernel state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种多播流量的转发方法、装置和服务器,其中,该方法应用于虚拟交换机,该方法包括:如果接收到多播流量,获取多播流量对应的出端口;对于每个出端口,检查该出端口是否配置有meter通道;如果是,在多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;根据meter列表生成与多播流量匹配的内核态流表,以使多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;根据内核态流表转发多播流量。本公开可以避免多播流量在转发过程中被多次限速,使得流量的限速方式与预期更加匹配,从而提高了网络带宽的稳定性。
Description
技术领域
本公开涉及云计算技术领域,尤其是涉及一种多播流量的转发方法、装置和服务器。
背景技术
OVS(Openvswitch,开放虚拟交换机)是一种广泛应用于虚拟平台的开源软件;OVS通过软件的方式形成交换机部件,可以实现传统物理交换机的网桥(Bridge)转发功能,及其他网络特性;相对于物理交换机,OVS具备配置更灵活、部署更方便、开发新特性更快捷等优势。
随着云计算的发展,虚拟机应用日益普遍,OVS技术通过对虚拟机进行流量限速,从而实现云环境中的用户管理、网络控制等应用。现有的OVS流表可以实现入端口和出端口方向上的流量限速,然而当OVS转发多播流量(包括广播流量和组播流量)时,受自身转发机制的影响,多播流量到达实际的出端口之前,可能会流经其他出端口,从而受到多个出端口的限速,多次限速导致该多播流量与实际出端口的限速需求不符,限速准确性较差。
发明内容
有鉴于此,本公开的目的在于提供一种多播流量的转发方法、装置和服务器,以避免多播流量在转发过程中被多次限速,使得流量的限速方式与预期更加匹配,从而提高网络带宽的稳定性。
为了实现上述目的,本公开采用的技术方案如下:
第一方面,本公开提供了一种多播流量的转发方法,该方法应用于虚拟交换机,该方法包括:如果接收到多播流量,获取多播流量对应的出端口;对于每个出端口,检查该出端口是否配置有meter通道;如果是,在多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;根据meter列表生成与多播流量匹配的内核态流表,以使多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;根据内核态流表转发多播流量。
第二方面,本公开提供了一种多播流量的转发装置,该装置应用于虚拟交换机,该装置包括:获取模块,用于如果接收到多播流量,获取多播流量对应的出端口;检查模块,用于对于每个出端口,检查该出端口是否配置有meter通道;添加模块,用于如果该出端口配置有meter通道,在多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;流表生成模块,用于根据meter列表生成与多播流量匹配的内核态流表,以使多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;转发模块,用于根据内核态流表转发多播流量。
第三方面,本公开实施方式提供了一种服务器,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述多播流量的转发方法。
第四方面,本公开实施方式提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述多播流量的转发方法。
上述多播流量的转发方法、装置、服务器和机器可读存储介质,将多播流量的每个出端口添加至meter列表中对应的meter通道的端口组中;再根据该meter列表生成与多播流量匹配的内核态流表,以使该多播流量按照各出端口对应的meter通道转发多播流量;该方式可以避免多播流量在转发过程中被多次限速,使得流量的限速方式与预期更加匹配,从而提高了网络带宽的稳定性。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施方式提供的多播流量的转发方法的应用场景示意图;
图2为本公开实施方式提供的通过TC队列实现端口出流量限速的示意图;
图3为现有的OVS转发多播流量的流程示意图;
图4为本公开实施方式提供的一种多播流量的转发方法的流程图;
图5为本公开实施方式提供的通过meter通道对虚拟机端口进行流量控制的示意图;
图6为本公开实施方式提供的另一种多播流量的转发方法的流程图;
图7为本公开实施方式提供的虚拟交换机通过meter通道限速的原理示意图;
图8为本公开实施方式提供的另一种多播流量的转发方法的流程图;
图9为本公开实施方式提供的一种多播流量的转发装置的结构示意图;
图10为本公开实施方式提供的一种服务器的结构示意图。
具体实施方式
为使本公开实施方式的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
为了更好地理解本公开的技术方案,下面首先对多播流量的转发方法的应用场景进行描述。如图1所示,主机1和主机2通过物理网络连接,且主机1和主机2上分别配置有虚拟机VM(Virtual Machine,虚拟机)和虚拟交换机,虚拟交换机内设置有多个虚拟端口,虚拟端口用于连接虚拟机内部端口(即虚拟网卡),实现虚拟机和虚拟交换机的连通,虚拟机可以通过虚拟交换机转发数据,虚拟交换机通过物理端口与外界通信,物理端口设置在物理网卡上;连接主机上物理网卡的虚拟端口与外部的物理网络进行通信;连接虚拟网卡的虚拟端口与该主机上的虚拟机连接,用于实现虚拟机与外部网络,或虚拟机之间的数据交换,一台虚拟交换机可以管理一台主机上的虚拟机(如图1所示)。虚拟网卡通常设置在虚拟机上;一台虚拟机可以设置一个或多个虚拟网卡,当虚拟机设置多个虚拟网卡时,可以使该虚拟机连接不同的虚拟网络。下述实施方式中,虚拟机也可以简称为VM,如VM1即虚拟机1。
OVS管理虚拟机网卡时,通常会对网卡对应的虚拟机端口vnet进行IP/MAC绑定;在转发过程中,如果OVS接收到虚拟机端口发出的报文,会检查该报文的源MAC/IP地址是否与该端口绑定的IP/MAC一致;一致时,才将该报文转发至物理网络;如果OVS从物理端口接收到报文,也会检查该报文的目的MAC/IP地址是否与对应端口绑定的IP/MAC一致;一致时,才将该报文转发至虚拟机。
虚拟交换机在对所连接的虚拟机进行限速时,除了OVS流表方式,还有一种TC(Traffic Control,流量控制)队列的方式。如图2所示的通过TC队列实现端口出流量限速的示意图。对于虚拟交换机的出流量,即虚拟交换机输出至虚拟机或外部的物理网络的流量,对应虚拟端口可以根据流量的特性(例如,协议类型、地址、协议端口等)将出流量进行分类,归类至不同的队列中,再依照各队列设置的限速措施进行限速处理。如图2所示,每个虚拟端口可以设置多个root qdisc,每个root qdisc下,还可以设置多个child class,且该child class可以设置多级,直至leaf class。
上述这种基于TC队列的流限速方式中,流量转发至对应的出端口后,再依据该出端口上TC队列的限速措施进行限速处理,因此,即使是多播流量,也是在到达实际的出端口后才进行限速处理,所以一般不会出现多次限速的情况;但是,由于TC队列是针对各个端口进行配置的,因此最大限速生效范围为端口,端口间相互独立,导致无法实现共同限速。同时,随着流量特性和端口数量的增加,TC队列配置较为复杂,不如OVS流表配置灵活,不利于后续的扩展和维护。另外,基于TC队列的流限速方式还存在如下缺陷:入端口的TC功能不支持队列,导致入端口的方向上不能实现多种参数特性流量的共同限速;并且,TC可配置的队列数有限,通常仅适用于流量限速需求简单、限速配置规模较小的OVS中。
对于采用OVS流表方式进行限速的情况,如图3所示,OVS通过物理网络端口eth0接收到多播流量,该多播流量需要发送至虚拟机VM1和VM2;OVS通常会随机生成发送顺序,先后将该多播流量发送至VM1对应的虚拟机端口vnet1和VM2对应的vnet2;由于发送顺序随机,OVS可能先发送该多播流量至vnet1,再从vent1发送该多播流量至vnet2,该OVS也可以先发送该多播流量至vnet2,再从vent2发送该多播流量至vnet1。
图3中以OVS先发送该多播流量至vnet1,再从vent1发送该多播流量至vnet2为例;假设vnet1的meter通道meter1的带宽速率为5M,vent2的meter通道meter2的带宽速率为10M;即多播流量预期通过vnet1时限速为5M,通过vent2时限速为10M,各虚拟机端口之间的配置限速应当相互独立,互不影响。如果多播流量以100M的速率进入物理网络端口eth0后,先转发至vent1,该vent1先将多播流量的带宽速率限制在5M后,该多播流量再以5M的速率发送至vent2,此时多播流量就会以5M的速率进入vent2,与vent2预期的带宽速率(10M)不符,这是由于发送至vnet2的多播流量匹配了不相关的配置(即vnet1的meter通道)导致的。
而如果OVS先发送该多播流量至vnet2,再从vent2发送该多播流量至vnet1,由于vent2的meter通道meter2的带宽速率较高(10M),即使多播流量先限速至10M,再限速至5M,该多播流量到达虚拟机端口的带宽速率与各虚拟机端口的带宽速率相符。但OVS对多播流量转发机制中,会随机生成该多播流量的内核态流表,导致多播流量向各虚拟机端口的发送顺序随机不可控,下述表1中为用于转发多播流量的两种可能的内核态流表。
表1
表1为现有OVS环境中的内核态流表,该流表的actions(动作域)描述了报文转发动作的具体动作,如方式1,actions:meter(1),1,meter(2),2,含义为先转发到端口1(即上述vent1),并按照meter1在端口1对流量限速,再转发到端口2(即上述vent2),并按照meter2在端口2对流量限速;方式2中,actions:meter(2),2,meter(1),1,其含义为流量先转发的端口2,并按照meter2在端口2对流量限速,再转发到端口1,在端口1对流量限速。
其中,actions:meter(2),2,meter(1),1,为开源OVS支持的内核流表动作,第一个meter(2)表示按照meter2的配置限速,第二个2为转发到端口2。
由表1可知,当按照方式1进行转发时,多播流量到达vent2的限速速率为5M,而不是预期的10M。当该OVS中存在多个虚拟机端口,或多播流量指定发送的虚拟机端口较多时,这种随机机制产生的内核态流表种类会更多;随着虚拟机端口的增加,多播流量可能被匹配到不相关配置的可能性增加,受到的限速次数也会增加,因而该多播流量最终的限速速率会更加不可预计;尤其该多播流量为组播流量时,虚拟机作为客户端接收该组播流量,上述这种限速问题会导致用户明显感受到网络带宽不稳定,用户体验度受到影响。
基于上述问题,本公开实施方式提供了一种多播流量的转发方法、装置和服务器;该技术可以应用于云计算、大数据平台等多种虚拟化网络的控制管理中,下面进行具体描述。首先,参见图4为一种多播流量的转发方法的流程图;该方法应用于虚拟交换机,该方法包括如下步骤:
步骤S402,如果接收到多播流量,获取多播流量对应的出端口;
通常,虚拟交换机可以通过流量的目的地址确定该流量是否为多播流量,例如,如果目的地址为单播MAC,则该流量为单播流量;如果目的地址为组播MAC,则该流量为组播流量;如果目的地址为广播MAC(如ff-ff-ff-ff-ff-ff),则该流量为广播流量;其中,组播流量和广播流量均可以称为上述多播流量。
当流量为多播流量时,其目的地址对应的出端口通常为多个,除非该虚拟交换机仅连接一个出端口,或者该多播流量指定仅发送至该虚拟交换机所连接的一个出端口(同时还指定发送其他虚拟交换机连接的出端口),这两种特殊情况下,一般不存在多播流量被多次限速的可能。
步骤S404,对于每个出端口,检查该出端口是否配置有meter通道;
通常情况下,为了对虚拟机进行流量控制,每个出端口上都配置有对应的meter通道,图5中以三个虚拟机端口为例,虚拟机端口vnet0的meter通道为meter1,vnet1的meter通道为meter1,vnet2的meter通道为meter2;各虚拟机端口之间的meter通道可以相同也可以不相同;例如,vnet0和vnet1的meter通道相同,说明vnet0和vnet1使用相同的通道限速,两个端口出方向流量共享该通道限定的带宽资源,例如,如果vnet0占用了8M带宽资源,vnet1就只能使用剩余的2M带宽资源。
上述针对端口配置的meter通道,对于单播和多播都适用,meter通道表示限速配置,而配置的用户态流表或内核态流表中的各个流表可以同时包含端口标识和meter通道标识,表示与该流表的匹配域匹配的流在端口标识对应的端口按照meter通道标识对应的meter通道进行限速。
一个端口可以配置多个meter通道,其中一种方式可以配置多条与该端口相关的流表,每条流表都配置一个meter通道;另一种方式可以在与该端口相关的一条流表中配置多个meter通道。这种在一个端口配置多个meter通道的方式,会使该端口的限速结果为限速值最小的meter通道。
但是,部分出端口也可能不配置meter通道,即从该出端口发出的流量不受限速控制,直接转发出去。在实际实现时,可以通常查找该虚拟交换机的用户态流表或内核态流表(例如,流表中的action字段),确定各出端口是否配置有meter通道,并获取每个出端口的meter通道。
步骤S406,如果是,在该多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;
其中,meter列表可以在检查出第一个配置有meter通道的出端口时生成,并将该出端口添加至meter列表。后续继续检查该多播流量的其它出端口是否配置有meter通道,如果有,也将该出端口添加至该meter列表中。
下述表2所示为采用上述随机机制产生的内核态流表的actions字段(即动作域),其中一种转发执行顺序对应的meter列表,结合图5,可知该列表中每个表项对应一个出端口,该出端口通过配置的meter通道进行流量控制,根据现有OVS对多播报文的串行处理机制,基于表2中的顺序,该多播流量先转发至vnet0,受meter1通道限速,再转发至vnet2,受meter2通道限速,最后发送至vnet1,受meter1通道限速。
表2
meter-1,outport-vnet0 |
meter-2,outport-vnet2 |
meter-1,outport-vnet1 |
而本实施方式中,上述多播流量的meter列表中,每个表项对应一个meter通道,该meter通道可以用于同时控制该表项中端口组中的各个出端口;下述表3为其中一种实现方式,结合图5,可以根据meter列表的表项数量,预先复制该多播流量;其中复制的多播流量分别转发至vnet0和vnet1,在vnet0和vnet1处受meter1的限速;以及将复制的多播流量转发至vnet2,在vnet2处受meter2的限速。
表3
meter(1,[outport-vnet0,outport-vnet1]) |
meter(2,[outport-vnet2]) |
假设该虚拟交换机又增加了一个出端口vnet3,该vnet3配置的meter通道为meter2,此时则在上述表3的第二个表项中添加该出端口vnet3,即形成下述表4。
表4
meter(1,[outport-vnet0,outport-vnet1]) |
meter(2,[outport-vnet2,outport-vnet3]) |
而如果vnet3配置的meter通道在当前的多播流量的meter列表中没有设置表项,例如,meter3;且该多播流量需要转发至该vnet3,此时,则需要在meter列表增加新的表项,如下述表5所示。
表5
meter(1,[outport-vnet0,outport-vnet1]) |
meter(2,[outport-vnet2]) |
meter(3,[outport-vnet3]) |
当然,上述多播流量的meter列表还可以以其他形式实现,不限定于表3至表5所列的形式,例如,通过recirc命令也可以建立该meter列表。
步骤S408,根据meter列表生成与该多播流量匹配的内核态流表,以使多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;
步骤S410,根据上述内核态流表转发多播流量。
虚拟交换机中,上述内核态流表用于实际转发流量,用户态流表用于保存用户的流表设定配置,包括各个出端口的meter通道等;通常只有在内核态流表查找不到对应的流表项时,会通过软件流程生成对应的内核态流表,指明该类报文的转发行为;虚拟机端口的名称、用户态id和内核态id的对应关系为:vnet0/0x10/0x10,vnet1/0x11/0x11,vnet2/0x12/0x12,此处假设用户态id和内核态id均是内核态流表中的端口标识,以该端口标识作为索引值,便于在流量到达端口时,快速查找到该端口对应的内核态流表。
在实际转发流量过程中,具体可以先提取流量中的关键字(key),这些关键字通常是表征该流量特性的参数。使用提取的关键字查找内核态流表,找到与该流量匹配的内核态流表,从该内核态流表中得到转发动作(action),依照该转发动作转发此流量;因此,为了改变多播流量的转发方式,可以根据上述meter列表生成该多播流量对应的内核态流表中的转发动作,即action字段。
内核态流表的生成过程可以包括:如果第一个报文到达OVS,在现有的内核态流表中找不到与该报文匹配的内核态流表时,可以执行upcall(开源OVS的机制)过程,upcall即软件处理,upcall过程中软件根据该报文对应的用户态流表配置生成新的内核态流表A,当相同或其他能匹配该内核态流表A的报文再到达OVS时,就按照内核态流表A的action对报文进行处理。
结合图5,下述表6为多播流量的用户态流表和内核态流表。
表6
其中,内核态流表的action字段由表1中的“actions:meter(1),1,meter(2),2”变更为了表6中的“actions:meter(1,[10,11]),meter(2,[12])”;通常,内核态流表中的actions字段中使用的是虚拟机端口对应的内核态id。
按照上述内核态流表转发多播流量时,可以使该多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;例如,在vnet0和vnet1上按照meter1转发,在vnet2上按照meter2转发。
上述多播流量的转发方法中,将多播流量的每个出端口添加至meter列表中对应的meter通道的端口组中;再根据该meter列表生成多播流量匹配的内核态流表,以使该多播流量按照各出端口对应的meter通道转发多播流量;该方式可以避免多播流量在转发过程中被多次限速,使得流量的限速方式与预期更加匹配,从而提高了网络带宽的稳定性。
本发明实施方式还提供了另一种多播流量的转发方法,该方法中,通过扩展内核态流表中的转发动作更改多播流量的转发方式,如图6所示,该方法具体包括如下步骤:
步骤S602,接收来自外部的物理网络的流量;
虚拟交换机通过物理网络端口接收该流量,该物理网络端口如图3或图5中所示的eth0,该eth0与外部的物理网络连接。
步骤S604,对该流量进行合法性检查;
通常,该合法性检查包括确认该流量与流表中匹配域匹配是否正常、检查该流量的格式、校验信息等是否合法等。
步骤S606,判断该流量是否为多播流量;如果是,执行步骤S608;如果否,执行步骤S626;
如上所述,可以通过流量的目的地址确定该流量是否为多播流量;如果该流量的目的地址为多播MAC(包括上述组播MAC或广播MAC),则该流量可以确定为多播流量。
步骤S608,获取该多播流量对应的出端口,将第一个出端口作为当前出端口;
步骤S610,检查当前出端口是否配置有meter通道;如果是,执行步骤S612;如果否,执行步骤S618;
虚拟交换机的用户态流表保存有较为全面的出端口与meter通道的对应关系,因而可以通过用户态流表查找到当前出端口的meter通道;
图7所示为通过meter通道限速的原理示意图;假设该虚拟交换机的虚拟端口vnet1连接虚拟机,以及物理网络端口eth1和eth2连接外部网络。针对这三个端口,图7给出了针对上行流量和下行流量的OVS流表,具体包括:第一条流表:输入端口=vnet1,匹配域1,actions:meter1;第二条流表:输入端口=vnet1,匹配域2,actions:meter2;第三条流表:输入端口=eth1,匹配域3,actions:meter1;第四条流表:输入端口=eth2,匹配域4,actions:meter2;
对于虚拟机的上行流量,输入端口为vnet1,由图7的OVS流表可知,vnet1配置有两条流表,即上述第一条流表和第二条流表,每个匹配域中定义了匹配的特性参数,例如,上述流量的地址、协议类型、协议端口和是否共享带宽等;如果流量与匹配域1相匹配,则执行动作meter1,通过meter1中的带宽速率或突发流量进行限速,限速完毕后,发送至出端口eth1,再转发至外部网络;如果流量与匹配域2匹配,则执行动作meter2,通过meter2中的带宽速率或突发流量进行限速,限速完毕后,发送至出端口eth1,再转发至外部网络。
对于虚拟机的下行流量,输入端口可能为eth1或eth2,以eth1为例,如果下行流量至eth1,且该流量与匹配域3匹配,则命中上述第三条流表,执行该流表的actions中的动作,即用meter1中的带宽速率或突发流量进行限速,若未被丢弃,则发送至vnet1,再转发给虚拟机。
步骤S612,判断该多播流量的meter列表中是否存在当前出端口的meter通道;如果是,执行步骤S614;如果否,执行步骤S616;
步骤S614,将该出端口添加至对应的meter通道的端口组中,然后执行步骤S620;
例如,出端口vnetX的meter通道为meterX,且meter列表中已存在该meterX对应的表项,如该表项为:meter(X,[outport-vnet0]);此时,可以将该出端口vnetX添加至meterX通道对应的表项中,添加后的表项为:meter(X,[outport-vnet0,outport-vnetX])。
步骤S616,在该meter列表中创建新的meter通道表项;例如,创建的新的meter通道表项为:meter(X,outport-vnetX)。具体也可以参见上述表3至表5相关的内容,以便于理解上述步骤S614和S616。
步骤S618,从当前出端口正常转发出该多播流量;
步骤S620,判断是否遍历完该多播流量的所有出端口,如果是,执行步骤S622;如果否,执行步骤S621;
步骤S621,将当前出端口的下一个出端口更新为当前出端口,继续执行步骤S610;
步骤S622,生成与该多播流量匹配的内核态流表,且该内核态流表的动作域为meter列表;该meter列表中的每条meter表项包括meter通道标识和meter通道标识对应的出端口,用以实现按照meter通道标识复制所述多播流量至所述meter通道标识对应的出端口,在所述出端口按照该出端口的meter通道标识对应的meter通道转发多播流量。
上述meter列表中meter表项的形式可以是:meter(x,[端口1,端口2,…端口n]),其中,x为meter通道标识,端口1和端口2对应的限速通道均为meter1;具体而言,如果meter表项表示为meter(Y,[outport-vnet0,outport-vnet1,outport-vnet2]),则出端口vnet、vnet1和vnet2需要按照meterY转发该多播流量。
步骤S624,从内核流表查找该多播流量对应的流表,按照查找到的流表中的动作域转发该多播流量,然后结束。
例如,当内核态流表为下述表7所示时,该多播流量可以复制成两份备份,其中一个备份发送至端口10,端口11和端口12,限速通道为meterY;另一个备份发送至端口13,限速措施为meterZ。
表7
步骤S626,确定该流量为单播流量,按照单播流程处理该单播流量;该单播流量可能被转发,可能被丢弃或作其他进一步处理。
上述多播流量的转发方法中,通过meter列表扩展内核态流表中的转发动作,出端口接收到的多播流量仅受到一个限速通道的控制,可以使该多播流量按照各出端口对应的meter通道转发多播流量;避免了多播流量在虚拟交换的流限速配置环境下,出端口方向的多播流量可能被匹配不相关的配置,导致被多次限速的问题,限速方式与出端口一一对应,限速方式与预期更加匹配,从而提高了网络带宽的稳定性。
同时,上述方式完善了虚拟交换机生成用户态流表的过程,可以使每个多播流量生成唯一的内核态流表,提高了流量的转发方式的可控性。
本发明实施方式还提供了另一种多播流量的转发方法,该方法中,通过recirc命令生成内核态流表中的转发动作,从而更改多播流量的转发方式,如图8所示,该方法具体包括如下步骤:
步骤S802,接收来自外部的物理网络的流量;
步骤S804,对该流量进行合法性检查;
步骤S806,判断该流量是否为多播流量;如果是,执行步骤S808;如果否,执行步骤S826;
步骤S808,获取该多播流量对应的出端口,将第一个出端口作为当前出端口;
步骤S810,检查当前出端口是否配置有meter通道;如果是,执行步骤S812;如果否,执行步骤S818;
步骤S812,判断当前出端口的meter通道是否已存在对应的recirc流表;如果是,执行步骤S814;如果否,执行步骤S816;
步骤S814,将该出端口添加至该recirc流表的动作域所包括的端口组中;
步骤S816,创建一个新的meter通道表项,为该表项分配一个内核态流表标识recirc_id;
通过上述步骤S816和S818可以为该出端口的meter通道创建新的recirc流表。例如,当前出端口vnet2的meter通道为meter2,则对应的meter通道表项为meter2,outport-vnet2;再为该表项分配一个内核态流表标识,如recirc(c),则对应的recirc流表为recirc_id(c),meter2,outport-vnet2。
步骤S818,设置recirc_id对应的内核态流表与多播流量匹配,内核态流表的动作域为recirc_id对应的meter表项,然后执行步骤S822。
在转发过程中,上述recirc_id可以指示具体跳转到哪个内核态流表,进而再根据跳转到的内核态流表转发该多播流量。
步骤S820,从当前出端口正常转发出该多播流量,然后结束。
步骤S822,判断是否遍历完该多播流量的所有出端口,如果是,执行步骤S824;如果否,执行步骤S823。
步骤S823,将当前出端口的下一个出端口更新为当前出端口,继续执行步骤S810。
步骤S824,从内核流表查找该多播流量对应的流表,按照查找到的流表中的动作域转发该多播流量。
继续参阅图5,多播流量进入该虚拟交换机后,生成的recirc流表可以如下述表8所示,对应的用户态流表和内核态流表如下述表9所示。
表8
recirc_id(1),meter-1,outport-vnet0,outport-vnet1 |
recirc_id(2),meter-2,outport-vnet2 |
表9
表8中,与recirc流表recirc_id(1),meter-1,outport-vnet0,outport-vnet1匹配的内核态流表的动作域actions:meter(1),10,11,该转发动作即recirc流表中recirc_id(1)对应的meter表项;与recirc流表recirc_id(2),meter-2,outport-vnet2匹配的内核态流表的动作域actions:meter(2),12,该转发动作即recirc流表中recirc_id(2)对应的meter表项。
步骤S826,确定该流量为单播流量,按照单播流程处理该单播流量。
上述方法中,通过recirc命令生成内核态流表中的转发动作,同样避免了多播流量在虚拟交换的流限速配置环境下,出端口方向的多播流量可能被匹配不相关的配置,导致被多次限速的问题,限速方式与出端口一一对应,限速方式与预期更加匹配,从而提高了网络带宽的稳定性。
需要说明的是,上述各方法实施方式均采用递进的方式描述,每个实施方式重点说明的都是与其他实施方式的不同之处,各个实施方式之间相同相似的部分互相参见即可。
对应于上述方法实施方式,参见图9所示的一种多播流量的转发装置的结构示意图,该装置应用于虚拟交换机,该装置包括:
获取模块90,用于如果接收到多播流量,获取多播流量对应的出端口;
检查模块91,用于对于每个出端口,检查该出端口是否配置有meter通道;
添加模块92,用于如果该出端口配置有meter通道,在多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;
流表生成模块93,用于根据meter列表生成与多播流量匹配的内核态流表,以使多播流量在meter列表包括的出端口上,按照该出端口对应的meter通道转发多播流量;
转发模块94,用于根据内核态流表转发多播流量。
上述流表生成模块还用于:生成与多播流量匹配的内核态流表的动作域为meter列表,meter列表中的每条meter表项包括meter通道标识和meter通道标识对应的出端口,用以实现按照meter通道标识复制所述多播流量至所述meter通道标识对应的出端口,在所述出端口按照该出端口的meter通道标识对应的meter通道转发多播流量。
上述流表生成模块还用于:为meter列表包括的每条meter表项分配一个内核态流表标识recirc_id;设置recirc_id对应的内核态流表与多播流量匹配,内核态流表的动作域为recirc_id对应的meter表项。
上述转发模块还用于:如果接收到单播流量,从单播流量对应的出端口转发单播流量。
本实施方式提供了一种与上述方法实施方式相对应的服务器。图10为该服务器的结构示意图,如图10所示,该服务器包括处理器1001和存储器1002;其中,存储器1002用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述多播流量的转发方法。
图10所示的服务器还包括总线1003和转发芯片1004,处理器1001、转发芯片1004和存储器1002通过总线1003连接。该服务器可以是网络边缘设备。
其中,存储器1002可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线1003可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
转发芯片1004用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的IPv4报文或IPv6报文通过网络接口发送至用户终端。
处理器1001可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1001中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1001可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施方式中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施方式所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1002,处理器1001读取存储器1002中的信息,结合其硬件完成前述实施方式的方法的步骤。
本发明实施方式还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述多播流量的转发,具体实现可参见方法实施方式,在此不再赘述。
本发明实施方式所提供的多播流量的转发装置及服务器,其实现原理及产生的技术效果和前述方法实施方式相同,为简要描述,装置实施方式部分未提及之处,可参考前述方法实施方式中相应内容。
最后应说明的是:以上所述实施方式,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施方式对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施方式所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施方式技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种多播流量的转发方法,其特征在于,所述方法应用于虚拟交换机,所述方法包括:
如果接收到多播流量,获取所述多播流量对应的出端口;
对于每个所述出端口,检查该出端口是否配置有限速meter通道;
如果是,在所述多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;
根据所述meter列表生成与所述多播流量匹配的内核态流表,以使所述多播流量在所述meter列表包括的出端口上,按照该出端口对应的meter通道转发所述多播流量;
根据所述内核态流表转发所述多播流量。
2.根据权利要求1所述的方法,其特征在于,根据所述meter列表生成与所述多播流量匹配的内核态流表的步骤,包括:
生成与所述多播流量匹配的内核态流表,所述内核态流表的动作域为所述meter列表,所述meter列表中的每条meter表项包括meter通道标识和所述meter通道标识对应的出端口,用以实现按照meter通道标识复制所述多播流量至所述meter通道标识对应的出端口,在所述出端口按照所述meter通道标识对应的meter通道转发所述多播流量。
3.根据权利要求1所述的方法,其特征在于,根据所述meter列表生成与所述多播流量匹配的内核态流表的步骤,包括:
为所述meter列表包括的每条meter表项分配一个内核态流表标识recirc_id;
设置所述recirc_id对应的内核态流表与所述多播流量匹配,所述内核态流表的动作域为所述recirc_id对应的meter表项。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果接收到单播流量,从所述单播流量对应的出端口转发所述单播流量。
5.一种多播流量的转发装置,其特征在于,所述装置应用于虚拟交换机,所述装置包括:
获取模块,用于如果接收到多播流量,获取所述多播流量对应的出端口;
检查模块,用于对于每个所述出端口,检查该出端口是否配置有meter通道;
添加模块,用于如果该出端口配置有meter通道,在所述多播流量的meter列表中,将该出端口添加至对应的meter通道的端口组中;
流表生成模块,用于根据所述meter列表生成与所述多播流量匹配的内核态流表,以使所述多播流量在所述meter列表包括的出端口上,按照该出端口对应的meter通道转发所述多播流量;
转发模块,用于根据所述内核态流表转发所述多播流量。
6.根据权利要求5所述的装置,其特征在于,所述流表生成模块还用于:
生成与所述多播流量匹配的内核态流表,所述内核态流表的动作域为所述meter列表,所述meter列表中的每条meter表项包括meter通道标识和所述meter通道标识对应的出端口,用以实现按照meter通道标识复制所述多播流量至所述meter通道标识对应的出端口,在所述出端口按照所述meter通道标识对应的meter通道转发所述多播流量。
7.根据权利要求5所述的装置,其特征在于,所述流表生成模块还用于:
为所述meter列表包括的每条meter表项分配一个内核态流表标识recirc_id;
设置所述recirc_id对应的内核态流表与所述多播流量匹配,所述内核态流表的动作域为所述recirc_id对应的meter表项。
8.根据权利要求5所述的装置,其特征在于,所述转发模块还用于:
如果接收到单播流量,从所述单播流量对应的出端口转发所述单播流量。
9.一种服务器,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至4任一项所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810674282.1A CN108881069B (zh) | 2018-06-26 | 2018-06-26 | 多播流量的转发方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810674282.1A CN108881069B (zh) | 2018-06-26 | 2018-06-26 | 多播流量的转发方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108881069A CN108881069A (zh) | 2018-11-23 |
CN108881069B true CN108881069B (zh) | 2019-10-18 |
Family
ID=64294930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810674282.1A Active CN108881069B (zh) | 2018-06-26 | 2018-06-26 | 多播流量的转发方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881069B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115486046B (zh) * | 2020-05-14 | 2024-06-11 | 深圳市欢太科技有限公司 | 基于开放虚拟软交换机ovs的数据包处理方法及设备 |
CN111817961B (zh) * | 2020-08-06 | 2022-02-08 | 平安科技(深圳)有限公司 | Overlay网络中基于Open vSwitch内核态流表的分布式路由方法及装置 |
CN112153338A (zh) * | 2020-09-23 | 2020-12-29 | 平安国际智慧城市科技股份有限公司 | 视频分发方法、装置、电子设备及存储介质 |
CN114915602B (zh) * | 2021-01-29 | 2024-01-26 | 中移(苏州)软件技术有限公司 | 虚拟交换机中流表的处理方法、处理装置及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302028A (zh) * | 2016-09-22 | 2017-01-04 | 杭州华三通信技术有限公司 | 流量监控方法以及装置 |
CN106453126A (zh) * | 2016-11-29 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种虚拟机流量控制方法及装置 |
CN106487590A (zh) * | 2016-10-20 | 2017-03-08 | 国云科技股份有限公司 | 一种基于虚拟网络实现批量虚拟机端口限速的方法 |
CN107666446A (zh) * | 2017-09-14 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 下行流量、上行流量、双向流量限制方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8477610B2 (en) * | 2010-05-31 | 2013-07-02 | Microsoft Corporation | Applying policies to schedule network bandwidth among virtual machines |
CN106789677A (zh) * | 2017-02-20 | 2017-05-31 | 上海大学 | 基于SDN的支持QoS的多播路由构建方法及系统 |
-
2018
- 2018-06-26 CN CN201810674282.1A patent/CN108881069B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302028A (zh) * | 2016-09-22 | 2017-01-04 | 杭州华三通信技术有限公司 | 流量监控方法以及装置 |
CN106487590A (zh) * | 2016-10-20 | 2017-03-08 | 国云科技股份有限公司 | 一种基于虚拟网络实现批量虚拟机端口限速的方法 |
CN106453126A (zh) * | 2016-11-29 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种虚拟机流量控制方法及装置 |
CN107666446A (zh) * | 2017-09-14 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 下行流量、上行流量、双向流量限制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108881069A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11929945B2 (en) | Managing network traffic in virtual switches based on logical port identifiers | |
CN108881069B (zh) | 多播流量的转发方法、装置和服务器 | |
US10491516B2 (en) | Packet communication between logical networks and public cloud service providers native networks using a single network interface and a single routing table | |
US9838277B2 (en) | Packet copy management for service chain processing within virtual processing systems | |
US10812632B2 (en) | Network interface controller with integrated network flow processing | |
US10567482B2 (en) | Accessing endpoints in logical networks and public cloud service providers native networks using a single network interface and a single routing table | |
US10078526B2 (en) | Securing a managed forwarding element that operates within a data compute node | |
US9304801B2 (en) | Elastic enforcement layer for cloud security using SDN | |
EP3879759A1 (en) | Optimized datapath troubleshooting with trace policy engine | |
EP3482532A1 (en) | Automatic service function validation in a virtual network environment | |
CN105933248B (zh) | 基本虚拟网络环境内的服务插入 | |
US10057162B1 (en) | Extending Virtual Routing and Forwarding at edge of VRF-aware network | |
EP3673365A1 (en) | Accessing endpoints in logical networks and public cloud service providers native networks using a single network interface and a single routing table | |
EP4046351B1 (en) | Rtps discovery in kubernetes | |
US10129144B1 (en) | Extending virtual routing and forwarding using source identifiers | |
CN105743687B (zh) | 节点故障的判断方法及装置 | |
CN104683428A (zh) | 网络业务处理方法与装置 | |
CN107566238B (zh) | 一种用户态配置物理接口自动识别vlan帧和非vlan帧的方法 | |
CN103986660B (zh) | 加载微码的装置以及加载微码的方法 | |
WO2021135792A1 (zh) | 数据转发方法、转发器、系统、服务器和存储介质 | |
CN113596192A (zh) | 一种基于网闸组网的通信方法、装置、设备及介质 | |
CN114567679B (zh) | 数据传输方法及装置 | |
EP4304148A1 (en) | Edge services using network interface cards having processing units | |
WO2023088145A1 (zh) | 一种报文处理方法、装置及设备 | |
EP3701686B1 (en) | Optimized datapath troubleshooting |
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 |