一种负载均衡方法、汇聚分流器及存储介质与流程

文档序号:24807200发布日期:2021-04-23 17:01阅读:219来源:国知局
一种负载均衡方法、汇聚分流器及存储介质与流程

1.本发明实施例涉及网络技术,尤其涉及一种负载均衡方法、汇聚分流器及存储介质。


背景技术:

2.在网络安全及数据流量分析领域,通常需要汇聚分流设备将多个来源的网络流量进行汇聚和分流,然后输出到后端设备进行检测或分析。分流的方式有多种;如果考虑数据报文的同宿同源,则需要将报文进行hash负载均衡输出;如果侧重数据报文分流的均匀性,则可以将报文轮询输出;如果后端设备需要多份相同的流量,则可以将报文复制输出。
3.在实现hash负载均衡输出时,需要将报文发到一个基于端口的负载均衡组里,计算hash后从某个端口输出。在某些应用场景下我们需要把基于端口负载均衡输出的流量打上特定的vlan标识,然后输出到后端设备,后端设备基于报文中打上的vlan标识进行过滤和转发。为流量打上vlan标识的方式同样是基于hash负载均衡。传统的汇聚分流设备无法基于端口和vlan进行两次负载均衡输出,因此,如何在汇聚分流设备中实现基于端口和vlan的两次负载均衡成为亟待解决的问题。


技术实现要素:

4.本发明实施例提供一种负载均衡方法、汇聚分流器及存储介质,可以在汇聚分流设备中实现基于端口和vlan的两次负载均衡。
5.第一方面,本发明实施例提供了一种负载均衡方法,由汇聚分流器执行,所述汇聚分流器包括输入处理器和输出处理器;
6.所述输入处理器获取报文数据包,将所述报文数据包中的查表信息赋值给元数据;
7.所述输入处理器确定所述元数据中与用户配置信息匹配的用于计算端口哈希值的第一哈希字段,基于所述第一哈希字段计算所述端口哈希值;
8.所述输入处理器根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口;
9.所述输出处理器确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值;
10.所述输出处理器根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
11.第二方面,本发明实施例还提供了一种汇聚分流器,该汇聚分流器包括:
12.输入处理器,用于获取报文数据包,将所述报文数据包中的查表信息赋值给元数据;确定所述元数据中与用户配置信息匹配的用于计算端口哈希值的第一哈希字段,基于所述第一哈希字段计算所述端口哈希值;根据所述端口哈希值和端口负载均衡相关表格确
定所述报文数据包的输出端口;
13.输出处理器,用于确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值;根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
14.第三方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由汇聚分流器执行时用于执行如本发明任意实施例所述的负载均衡方法。
15.本发明提供一种负载均衡方法、汇聚分流器及存储介质,通过输入处理器基于用户配置信息选择第一哈希字段,基于第一哈希字段计算端口哈希值,根据该端口哈希值和端口负载均衡相关表格确定报文数据包的输出端口,通过输出处理器基于用户配置信息选择第二哈希字段,基于第二哈希字段计算vlan哈希值,根据该vlan哈希值和vlan负载均衡相关表格确定报文数据包的vlan标识,并将vlan标识添加到该报文数据包,实现汇聚分流器同时具备基于端口的负载均衡输出及基于vlan的负载均衡打标签功能。
附图说明
16.图1为本发明实施例提供的一种负载均衡方法中控制平面的处理流程图;
17.图2为本发明实施例提供的一种负载均衡方法的流程图;
18.图3为本发明实施例提供的另一种负载均衡方法的流程图;
19.图4a为本发明实施例提供的又一种负载均衡方法的流程图;
20.图4b为本发明实施例提供的一种负载均衡方法中输入处理器的工作流程示意图;
21.图4c为本发明实施例提供的一种负载均衡方法中输出处理器的工作流程示意图;
22.图5为本发明实施例提供的一种汇聚分流器的结构框图。
具体实施方式
23.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
24.需要说明的是,本发明实施例中涉及的汇聚分流器是基于barefoot公司tofino芯片开发的汇聚分流设备。其中,tofino芯片基于pisa(protocol

independent switching architecture,一种可编程交换架构)交换架构,分为输入处理器ingress和输出处理器管线egress pipeline。可编程部分为解析器parser、mau(match action unit,匹配查表单元)、逆解析器deparser,本发明的主要工作集中于mau和deparser部分。例如,在ingress的mau部分通过多张表格实现基于端口的负载均衡组及hash字段选择和hash值计算逻辑,在egress的mau部分通过多张表格实现基于vlan的负载均衡组及hash字段选择和hash值计算逻辑,并在egress的deparser部分将选择的vlan组到原始报文数据包上。
25.在hash值计算时,需要从原始报文数据包解析出相应的字段。例如,基于源/目的ip计算hash,需要解码原报文数据包提取源/目的ip地址。本发明由用户灵活配置基于几元
组来计算hash值。
26.本发明实施例在数据平面实现报文数据包的转发逻辑。需要说明的是,数据平面的功能通过ingress和egress两部分实现。
27.在控制平面通过下发表项内容控制报文数据包的转发和处理。具体地,用户配置信息相关的命令经过分析处理后下发到控制平面,从而控制报文的转发。控制平面的处理流程如下:
28.1、在检测到用户输入的配置命令行时,控制平面解析配置命令行,得到命令行解析信息。
29.需要说明的是,命令行解析信息包括五元组过滤规则、plag port成员列表、plag hash字段选择表的配置信息、vlag vlan成员列表和vlag hash字段选择表的配置信息等。
30.2、解析plag port成员列表,建立基于port的负载均衡组。
31.需要说明的是,基于port的负载均衡组的组内包括多个终端节点,数据流量按照基于port的负载均衡算法转发到组内的每个终端节点上。
32.3、基于plag hash字段选择表的配置信息配置plag hash字段选择表。
33.需要说明的是,plag hash字段选择表,也称为基于端口的哈希字段选择表,数据平面通过查询该表获得用于计算端口哈希值的第一哈希字段。
34.4、解析vlag vlan成员列表,建立基于vlan的负载均衡组。
35.需要说明的是,基于vlan的负载均衡是由基于vlan的负载均衡组内选择一个vlan,将其标识添加至报文数据包的报头的操作。
36.5、基于vlag hash字段选择表的配置信息配置vlag hash字段选择表。
37.需要说明的是,vlag hash字段选择表,也称为基于vlan的哈希字段选择表,数据平面通过查询该表获得用于计算vlan哈希值的第二哈希字段以及hash函数。
38.图1为本发明实施例提供的一种负载均衡方法中控制平面的处理流程图。如图1所示,控制平面的处理流程包括:
39.步骤110、开始。
40.步骤120、检测用户配置命令行。
41.步骤130、解析命令行下发五元组过滤规则。
42.步骤140、解析plag port成员列表建立负载均衡组。
43.步骤150、配置plag hash字段选择表。
44.步骤160、解析vlag vlan成员列表建立负载均衡组。
45.步骤170、配置vlag hash字段选择表。
46.步骤180、结束。
47.图2为本发明实施例提供的一种负载均衡方法的流程图,该方法可以由汇聚分流器来执行,该汇聚分流器基于baeftoot公司tofino芯片开发,部署在现网的各个节点上,进行网络流量的汇聚和分流。该汇聚分流器包括输入处理器和输出处理器。如图1所示,该方法包括:
48.步骤210、所述输入处理器获取报文数据包,将所述报文数据包中的查表信息赋值给元数据。
49.其中,报文数据包是输入汇聚分流器的报文的数据包。报文数据包中具有五元组
信息和源mac信息、目的mac信息等。五元组信息包括源ip地址,源端口,目的ip地址,目的端口和传输层协议。
50.查表信息是报文数据包中用于查询控制访问列表acl的信息。例如,查表信息可以是五元组信息等。
51.元数据是预先定义的hash字段集合元数据metadata。metadata包括五元组信息和源/目的mac信息等。输入处理器通过parser模块解析报文数据包,得到五元组信息等查表信息,将五元组信息等查表信息赋值到相关的元数据中。
52.示例性地,当报文数据包进入汇聚分流器之后,通过输入缓存对报文数据包进行缓存。通过输入处理器的parser模块从输入缓存读取报文数据包,并对该报文数据包进行解包处理,得到五元组等查表信息。通过输入处理器将五元组等查表信息赋值到相关的metadata。需要说明的是,此处的metadata是ingress部分用于描述报文数据包中携带的查表信息的字段。
53.步骤220、所述输入处理器确定所述元数据中与用户配置信息匹配的用于计算端口哈希值的第一哈希字段,基于所述第一哈希字段计算所述端口哈希值。
54.其中,第一哈希字段是由用户配置的用于计算端口哈希值的字段内容。例如,用户配置基于源/目的ip计算端口哈希,则第一哈希字段即为报文数据包中携带的源/目的ip地址。或者,用户配置基于源/目的端口计算端口哈希,则第一哈希字段即为报文数据包中携带的源/目的端口号等。
55.由于已经将报文数据包中的五元组等查表信息赋值给元数据,则第一哈希字段可以是元数据中与用户配置信息匹配的字段内容。可以对元数据中与计算端口哈希值无关的其它参数进行赋值为零的处理,得到更新后的元数据。由于更新后的元数据中除第一哈希字段之外的参数均为零,则采用更新后的元数据计算端口哈希值,可以避免其它参数对计算端口哈希值产生影响。需要说明的是,还可以采用其它方式来避免元数据中与计算端口哈希值无关的参数对计算产生影响,本发明并不作具体限定。例如,对元数据中与计算端口哈希值无关的其它参数打上设定标识等。
56.步骤230、所述输入处理器根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口。
57.需要说明的是,端口负载均衡相关表格是与基于端口的负载均衡组相关的表项。例如,端口负载均衡相关表格可以包括port lag表、port group表和port index表等。
58.输出端口是汇聚分流器对报文数据包进行基于端口的负载均衡处理后,确定出来的用于输出报文数据包的端口。
59.具体地,输入处理器基于plag id查询port lag表得到port group id。然后,基于port group id查询port group表得到port index的集合。然后,输入处理器根据端口哈希值从port index的集合中选择目标port index,基于目标port index查询port index表得到所述报文数据包的输出端口。
60.其中,port lag表是以plag id为键值,并以port group id为数值的数据表。表1为本发明实施例提供的一种port lag表。
61.表1是一种port lag表。
62.键值对对象键值数值
1plag_1port_group_12plag_2port_group_23plag_3port_group_3
63.如表1所示,port lag表以键值对对象的形式存储plag id和port group id。
64.其中,port group表是以port group id为键值,并以port index id为数值的数据表。表2为本发明实施例提供的port group表。
65.表2是一种port group表。
66.键值对对象键值数值1port_group_1port_index_1,port_index_2,port_index_32port_group_2port_index_4,port_index_5,port_index_63port_group_3port_index_7,port_index_8,port_index_9
67.如表2所示,port group表以键值对对象的形式存储port group id和port index id。
68.其中,port index表是以port index为键值,并以端口标识为数值的数据表。表3为本发明实施例提供的port index表。
69.表3是一种port index表。
70.键值对对象键值数值1port_index_1port_12port_index_2port_23port_index_3port_34port_index_4port_45port_index_5port_56port_index_6port_67port_index_7port_78port_index_8port_89port_index_9port_9
71.如图3所示,port index表以键值对对象的形式存储port index id和port id。
72.需要说明的是,输入处理器根据端口哈希值从port index的集合中选择目标port index的方式有很多种,本发明实施例并不作具体限定。例如,可以对端口哈希值进行取模运算,得到取模结果,根据取模结果从port index的集合中选择目标port index。具体地,如果port index的集合中某一port index id与取模结果相同,则将该port index id对应的port index称为目标port index。例如,取模结果是3,则将port_index_3作为目标port index。
73.步骤240、所述输出处理器确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值。
74.其中,第二哈希字段是由用户配置的用于计算vlan哈希值的字段内容。例如,用户配置基于源/目的ip及源/目的端口来计算vlan哈希值,则第二哈希字段即为报文数据包中携带的源/目的ip地址以及源/目的端口号。
75.由于已经将报文数据包中的五元组等查表信息赋值给元数据,则第二哈希字段可
以是元数据中与用户配置信息匹配的字段内容。可以对元数据中与计算vlan哈希值无关的其它参数进行赋值为零的处理,得到更新后的元数据。由于更新后的元数据中除第二哈希字段之外的参数均为零,则采用更新后的元数据计算vlan哈希值,可以避免其它参数对计算vlan哈希值产生影响。需要说明的是,还可以采用其它方式来避免元数据中与计算vlan哈希值无关的参数对计算产生影响,本发明并不作具体限定。
76.步骤250、所述输出处理器根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
77.需要说明的是,vlan负载均衡相关表格是与基于vlan的负载均衡组相关的表项。例如,vlan负载均衡相关表格可以包括vlan lag表、vlan group表和vlan index表等。
78.vlan标识是汇聚分流器对报文数据包进行基于vlan的负载均衡处理后,确定出来的用于添加到报文数据包的vlan标签。
79.具体地,输出处理器获取具有vlag id和第二索引字段的报文数据包中的vlag id。然后,基于vlag id查询vlan lag表得到vlan_group id。输出处理器基于vlan_group id查询vlan group表得到vlan index的集合。输出处理器根据vlan哈希值从vlan index的集合中选择目标vlan index,基于目标vlan index查询vlan index表得到报文数据包的vlan标识。
80.其中,vlan lag表是以vlag id为键值,并以vlan_group id为数值的数据表。表4为本发明实施例提供的一种vlan lag表。
81.表4是一种vlan lag表。
82.键值对对象键值数值1vlag_1vlan_group_12vlag_2vlan_group_23vlag_3vlan_group_3
83.如表4所示,vlan lag表以键值对对象的形式存储vlag id和vlan group id。
84.其中,vlan group表是以vlan_group id为键值,并以vlan index为数值的数据表。表5为本发明实施例提供的vlan group表。
85.表5是一种vlan group表。
86.键值对对象键值数值1vlan_group_1vlan_index_1,vlan_index_2,vlan_index_32vlan_group_2vlan_index_4,vlan_index_5,vlan_index_63vlan_group_3vlan_index_7,vlan_index_8,vlan_index_9
87.如表5所示,vlan group表以键值对对象的形式存储vlag group id和vlan index id。
88.其中,vlan index表是以vlan index为键值,并以vlan标识为数值的数据表。表6为本发明实施例提供的vlan index表。
89.表6是一种vlan index表。
90.键值对对象键值数值
1vlan_index_1vlan_12vlan_index_2vlan_23vlan_index_3vlan_34vlan_index_4vlan_45vlan_index_5vlan_56vlan_index_6vlan_67vlan_index_7vlan_78vlan_index_8vlan_89vlan_index_9vlan_9
91.如表6所示,vlan index表以键值对对象的形式存储vlan index id和vlan id。
92.需要说明的是,输出处理器根据vlan哈希值从vlan index的集合中选择目标vlan index的方式有很多种,本发明实施例并不作具体限定。例如,可以对vlan哈希值进行取模运算,得到取模结果,根据取模结果从vlan index的集合中选择目标vlan index。具体地,如果vlan index的集合中某一vlan index id与取模结果相同,则将该vlan index id对应的vlan index称为目标vlan index。例如,取模结果是6,则将vlan_index_6作为目标vlan index。
93.在查询vlan index表得到报文数据包的vlan标识之后,获取输入缓存中的原始报文数据包,将该vlan标识添加到该原始报文数据包的包头得到新的报文数据包,通过输出端口输出该新的报文数据包。其中,输出端口通过输入处理器根据端口哈希值和端口负载均衡相关标识确定。
94.本实施例的技术方案,通过输入处理器基于用户配置信息选择第一哈希字段,基于第一哈希字段计算端口哈希值,根据该端口哈希值和端口负载均衡相关表格确定报文数据包的输出端口,通过输出处理器基于用户配置信息选择第二哈希字段,基于第二哈希字段计算vlan哈希值,根据该vlan哈希值和vlan负载均衡相关表格确定报文数据包的vlan标识,并将vlan标识添加到该报文数据包,实现汇聚分流器同时具备基于端口的负载均衡输出及基于vlan的负载均衡打标签功能。
95.图3为本发明实施例提供的另一种负载均衡方法的流程图,本实施例是对上述实施例进一步限定,如图3所示,该方法包括:
96.步骤310、所述输入处理器获取报文数据包,将所述报文数据包中的查表信息赋值给元数据。
97.具体地,输入处理器是tofino芯片的pisa交换架构的ingress。如上述记载,tofino芯片主要用于交换机、汇聚分流器等网络设备。本发明实施例中的汇聚分流器采用了tofino芯片。
98.示例性地,报文数据包达到汇聚分流器后,输入处理器通过解析器对报文数据包进行解包处理,以从报文数据包的包头取出相应的查表信息。然后,将查表信息赋值给相关的metadata中。
99.步骤320、输入处理器通过访问控制列表acl规则对所述元数据进行过滤,得到plag id和第一索引字段。
100.其中,acl规则包括基于用户配置的用于计算端口的端口哈希值的字段信息确定
的规则。plag id表示端口类型的lag标识。
101.具体地,通过metadata中的查表信息查询acl规则,获取匹配成功的acl规则包括的plag id及hash字段枚举值,将匹配得到的hash字段枚举值作为第一索引字段。其中,hash字段枚举值可以包括五元组hash和两元组hash等。如果基于源/目的ip地址计算hash,则hash字段枚举值可以是hash_sip、hash_dip等。
102.步骤330、输入处理器通过所述第一索引字段查询基于端口的哈希字段选择表,得到用于计算端口哈希值的第一哈希字段。
103.其中,基于端口的哈希字段选择表是由数据平面定义的,并基于控制平面的用户配置信息配置的表项。具体地,基于端口的哈希字段选择表中的数据以key

value的形式进行关联存储。例如,基于端口的哈希字段选择表是以hash字段枚举值为键值,并以第一哈希字段为数值的数据表。哈希字段索引表还可以包括动作action字段,action字段与键值关联存储,且action字段内容由数据平面定义。表7为本发明实施例提供的基于端口的哈希字段选择表。
104.键值对对象键值动作第一哈希字段1hash_fivetupleset_five_tuple_hashsip+dip+sport+dport+proto2hash_fourtupleset_four_tuple_hashsip+dip+sport+dport3hash_ippairset_ippair_hashsip+dip+0+0+04hash_srcipset_srcip_hashsip+0+0+0+05hash_dstipset_dstip_hash0+dip+0+0+0
105.如表7所示,基于端口的哈希字段选择表中,键值包括五元组哈希、四元组哈希、ip对哈希、源ip哈希和目的ip哈希,与键值对应的动作分别为设置五元组哈希、设置四元组哈希、设置ip对哈希、设置源ip哈希以及设置目的ip哈希,与键值对应的第一哈希字段分别为sip+dip+sport+dport+proto、sip+dip+sport+dport、sip+dip+0+0+0、sip+0+0+0+0以及0+dip+0+0+0。
106.具体地,输入处理器以第一索引字段为键值查询基于端口的哈希字段选择表,查询结果包括基于端口的哈希字段选择表中与第一索引字段关联存储的第一哈希字段,以及基于端口的哈希字段选择表中与第一索引字段关联存储的动作。第一哈希字段即为计算基于端口哈希值所需的字段内容。
107.步骤340、输入处理器根据所述第一哈希字段修改所述元数据中设定字段的取值,基于修改后的元数据计算所述端口哈希值。
108.示例性地,输入处理器根据查询基于端口的哈希字段选择表得到的动作修改元数据中除第一哈希字段之外的剩余字段,得到修改后的元数据。可以采用预先配置的hash计算函数基于修改后的元数据计算所述端口哈希值。例如,预先配置hash计算函数是crc hash函数。可选地,还可以通过查表的方式得到hash计算函数。采用查表得到的hash计算函数基于修改后的元数据计算所述端口哈希值。需要说明的是,在通过查表的方式得到hash计算函数的示例中,所查询的表项可以是以hash函数枚举值为键值(key),动作(action)是通过hash函数和hash字段计算hash值的数据表。其中,hash函数枚举值可以通过acl规则过滤得到。
109.具体地,根据查询基于端口的哈希字段选择表得到的动作修改元数据中除第一哈
希字段之外的剩余字段可以是:将元数据中除第一哈希字段之外的剩余字段赋值为零,得到修改后的元数据。
110.步骤350、输入处理器根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口。
111.示例性地,基于匹配得到的plag id,依次查询port lag表和port group表得到port index的集合。根据计算得到的端口哈希值从port index的集合中选择目标port index。基于目标port index查询port index表得到port id。
112.步骤360、输出处理器确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值。
113.步骤370、输出处理器根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
114.本发明实施例,通过访问控制列表acl规则对元数据进行过滤,得到plag id和第一索引字段,通过第一索引字段查询基于端口的哈希字段选择表得到第一哈希字段;将元数据中除第一哈希字段之外的剩余字段赋值为零,得到修改后的元数据,基于修改后的元数据计算端口哈希值;根据端口哈希值和端口负载均衡相关表格确定报文数据包的输出端口,解决了基于端口的hash字段选择、hash值计算和负载均衡的问题。此外,输出处理器确定元数据中与用户配置信息匹配的用于计算vlan哈希值的第二哈希字段,采用第二哈希字段计算vlan哈希值;根据vlan哈希值和vlan负载均衡相关表格确定报文数据包的vlan标识,将vlan标识添加到报文数据包的包头得到新的报文数据包,通过输出端口发送新的报文数据包,从而实现了基于算口和vlan的两次负载均衡。
115.图4a为本发明实施例提供的又一种负载均衡方法的流程图,本实施例是对上述实施例进一步限定,如图4a所示,该方法包括:
116.步骤401、所述输入处理器获取报文数据包,将所述报文数据包中的查表信息赋值给元数据。
117.步骤402、输入处理器通过访问控制列表acl规则对所述元数据进行过滤,得到plag id和第一索引字段。
118.步骤403、输入处理器通过所述第一索引字段查询基于端口的哈希字段选择表,得到用于计算端口哈希值的第一哈希字段。
119.步骤404、输入处理器根据所述第一哈希字段修改所述元数据中设定字段的取值,基于修改后的元数据计算所述端口哈希值。
120.步骤405、输入处理器根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口。
121.步骤406、输入处理器获取通过访问控制列表acl规则对所述元数据进行过滤得到的vlag id和第二索引字段。
122.需要说明的是,步骤406在将所述报文数据包中的查表信息赋值给元数据之后执行。
123.其中,acl规则包括基于用户配置的用于计算vlan哈希值的字段信息确定的规则。vlag id表示vlan类型的lag标识。
124.具体地,通过metadata中的查表信息查询acl规则,获取匹配成功的acl规则包括的vlag id及hash字段枚举值,将匹配得到的hash字段枚举值作为第二索引字段。
125.步骤407、输入处理器将所述vlag id和第二索引字段添加至所述报文数据包的包头,发送具有所述vlag id和第二索引字段的报文数据包给所述输出处理器。
126.示例性地,输入处理器将vlag id和第二索引字段添加至报文数据包的报文头,并发到输出处理器管线egress pipeline。
127.图4b为本发明实施例提供的一种负载均衡方法中输入处理器的工作流程示意图。如图4b所示,输入处理器执行时实现如下步骤:
128.步骤421、开始。
129.步骤422、汇聚分流器收包。
130.步骤423、ingress parser解码。
131.步骤424、提取五元组信息到metadata。
132.步骤425、基于五元组查询acl规则。
133.步骤426、提取plag id及两元组hash索引,提取vlag id及四元组hash索引。
134.需要说明的是,步骤426中的两元组hash索引即为第一索引字段。如果用户配置基于源/目的ip计算端口哈希值,则两元组hash索引包括源/目的ip。四元组hash索引即为第二索引字段。如果用户配置基于源/目的ip及源/目的端口计算vlan哈希值,则四元组hash索引包括源/目的ip以及源/目的端口。
135.步骤427、以两元组hash索引做key查询hash字段选择表。
136.步骤428、将metadata中源/目的端口及协议号赋值为零。
137.步骤429、用更新后的metadata计算crc hash值。
138.步骤4210、通过plag id查port lag表得到port group id。
139.步骤4211、通过port group id查port group表得到port index的集合,结合hash值选择port index。
140.步骤4212、通过port index查port index表得到的出接口port id。
141.步骤4213、将vlag id及四元组hash索引打包头。
142.步骤4214、组包后发到egress pipeline。
143.步骤4215、结束。
144.步骤408、输出处理器获取具有所述vlag id和第二索引字段的报文数据包中的所述第二索引字段。
145.示例性地,输出处理器通过逆解析器解码报文数据包,提取vlag id和第二索引字段。
146.步骤409、输出处理器以所述第二索引字段作为键值查询基于vlan的哈希字段选择表,得到用于计算vlan哈希值的第二哈希字段。
147.其中,基于vlan的哈希字段选择表是由数据平面定义的,并基于控制平面的用户配置信息配置的表项。具体地,基于vlan的哈希字段选择表中的数据以key

value的形式进行关联存储。例如,基于vlan的哈希字段选择表是以hash字段枚举值为键值,并以第二哈希字段为数值的数据表。哈希字段索引表还可以包括动作action字段,action字段与键值关联存储,且action字段内容由数据平面定义。
148.步骤410、输出处理器根据所述第二哈希字段修改所述元数据中设定字段的取值,基于修改后的元数据计算所述vlan哈希值。
149.示例性地,输出处理器根据查询基于vlan的哈希字段选择表得到的动作修改元数据中除第二哈希字段之外的剩余字段,得到修改后的元数据。可以采用预先配置的hash计算函数基于修改后的元数据计算所述vlan哈希值。例如,预先配置hash计算函数是crc hash函数。可选地,还可以通过查表的方式得到hash计算函数。采用查表得到的hash计算函数基于修改后的元数据计算所述vlan哈希值。需要说明的是,在通过查表的方式得到hash计算函数的示例中,所查询的表项可以是以hash函数枚举值为键值(key),动作(action)是通过hash函数和hash字段计算hash值的数据表。其中,hash函数枚举值可以通过acl规则过滤得到。
150.具体地,输出处理器根据所述第二哈希字段修改所述元数据中设定字段的取值具体可以是:输出处理器将所述元数据中除所述第二哈希字段之外的剩余字段赋值为零,得到修改后的元数据。
151.步骤411、输出处理器根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
152.示例性地,基于解码报文数据包得到的vlag id依次查询vlan lag表和vlan group表得到vlan index的集合。根据计算得到的vlan哈希值从vlan index的集合中选择目标vlan index。基于目标vlan index查询vlan index表得到vlan id。将vlan id组到报文数据包的包头。通过上述基于端口的负载均衡确定的输出端口发送该具有vlan id的报文数据包到网络上。
153.图4c为本发明实施例提供的一种负载均衡方法中输出处理器的工作流程示意图。如图4c所示,输出处理器执行时实现如下步骤:
154.步骤431、开始。
155.步骤432、egress psrser解码。
156.步骤433、提取vlag id及四元组hash索引。
157.步骤434、以四元组hash索引做key值查询hash字段选择表。
158.步骤435、将metadata中协议号赋值为零。
159.步骤436、用更新后的metadata计算crc hash值。
160.步骤437、通过vlag id查vlan lag表得到vlan group id。
161.步骤438、通过vlan group id查vlan group表得到vlan index的集合,结合hash值选择vlan index。
162.步骤439、通过vlan index查vlan index表得到最终的要打在报文数据包中的vlan id。
163.步骤4310、将vlan id组到原始报文数据包。
164.步骤4311、通过所确定的port id对应的输出端口将打上vlan id的报文数据包发到网络上。
165.步骤4312、结束。
166.本发明实施例,通过访问控制列表acl规则对元数据进行过滤,得到plag id和第
一索引字段,以及vlag id和第二索引字段;通过第一索引字段查询基于端口的哈希字段选择表得到第一哈希字段;将元数据中除第一哈希字段之外的剩余字段赋值为零,得到修改后的元数据,基于修改后的元数据计算端口哈希值;根据端口哈希值和端口负载均衡相关表格确定报文数据包的输出端口,解决了基于端口的hash字段选择、hash值计算和负载均衡的问题。通过第二索引字段查询基于vlan的哈希字段选择表得到第二哈希字段;将元数据中除第二哈希字段之外的剩余字段赋值为零,得到修改后另一元数据,基于修改后的另一元数据计算vlan哈希值;根据vlan哈希值和vlan负载均衡相关表格确定vlan标识,解决了基于vlan的hash字段选择、hash值计算和负载均衡的问题;从而,使负载均衡设备同时具备基于端口的负载均衡输出及基于vlan的负载均衡打标签功能。
167.图5为本发明实施例提供的一种汇聚分流器的结构框图。该汇聚分流器用于执行本发明任意实施例提供的负载均衡方法,并通过执行该方法使汇聚分流器同时具备基于端口的负载均衡输出及基于vlan的负载均衡打标签功能。如图5所示,汇聚分流器500包括:
168.输入处理器510,用于获取报文数据包,将所述报文数据包中的查表信息赋值给元数据;确定所述元数据中与用户配置信息匹配的用于计算端口哈希值的第一哈希字段,基于所述第一哈希字段计算所述端口哈希值;根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口;
169.输出处理器520,用于确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值;根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
170.本发明实施例提供一种汇聚分流器,通过输入处理器基于用户配置信息选择第一哈希字段,基于第一哈希字段计算端口哈希值,根据该端口哈希值和端口负载均衡相关表格确定报文数据包的输出端口,通过输出处理器基于用户配置信息选择第二哈希字段,基于第二哈希字段计算vlan哈希值,根据该vlan哈希值和vlan负载均衡相关表格确定报文数据包的vlan标识,并将vlan标识添加到该报文数据包,实现汇聚分流器同时具备基于端口的负载均衡输出及基于vlan的负载均衡打标签功能。
171.可选地,输入处理器510还用于:
172.在将所述报文数据包中的查表信息赋值给元数据之后,通过访问控制列表acl规则对所述元数据进行过滤,得到plag id和第一索引字段,其中,所述acl规则包括基于用户配置的用于计算端口的端口哈希值的字段信息确定的规则,所述plag id表示端口类型的lag标识。
173.可选地,输入处理器510具体用于:
174.通过所述第一索引字段查询基于端口的哈希字段选择表,得到用于计算端口哈希值的第一哈希字段;
175.根据所述第一哈希字段修改所述元数据中设定字段的取值,基于修改后的元数据计算所述端口哈希值。
176.可选地,输入处理器510具体还用于:
177.将所述元数据中除所述第一哈希字段之外的剩余字段赋值为零,得到修改后的元
数据。
178.可选地,输入处理器510具体还用于:
179.基于所述plag id查询port lag表得到port group id,其中,所述port lag表是以plag id为键值,并以port group id为数值的数据表;
180.基于所述port group id查询port group表得到port index的集合,其中,所述port group表是以port group id为键值,并以port index id为数值的数据表;
181.根据所述端口哈希值从所述port index的集合中选择目标port index,基于所述目标port index查询port index表得到所述报文数据包的输出端口,其中,所述port index表是以port index为键值,并以端口标识为数值的数据表。
182.可选地,输入处理器510具体还用于:
183.对所述端口哈希值进行取模运算,根据取模运算结果从所述port index的集合中选择目标port index。
184.可选地,输入处理器510具体还用于:
185.在将所述报文数据包中的查表信息赋值给元数据之后,获取通过访问控制列表acl规则对所述元数据进行过滤得到的vlag id和第二索引字段,其中,所述acl规则包括基于用户配置的用于计算vlan哈希值的字段信息确定的规则;
186.将所述vlag id和第二索引字段添加至所述报文数据包的包头,发送具有所述vlag id和第二索引字段的报文数据包给所述输出处理器。
187.可选地,输出处理器520具体用于:
188.获取具有所述vlag id和第二索引字段的报文数据包中的所述第二索引字段;
189.以所述第二索引字段作为键值查询基于vlan的哈希字段选择表,得到用于计算vlan哈希值的第二哈希字段;
190.根据所述第二哈希字段修改所述元数据中设定字段的取值,基于修改后的元数据计算所述vlan哈希值。
191.可选地,输出处理器520具体还用于:
192.将所述元数据中除所述第二哈希字段之外的剩余字段赋值为零,得到修改后的元数据。
193.可选地,输出处理器520具体还用于:
194.获取具有所述vlag id和第二索引字段的报文数据包中的所述vlag id;
195.基于所述vlag id查询vlan lag表得到vlan_group id,其中,所述vlan lag表是以vlag id为键值,并以vlan_group id为数值的数据表;
196.基于所述vlan_group id查询vlan group表得到vlan index的集合,其中,所述vlan group表是以vlan_group id为键值,并以vlan index为数值的数据表;
197.根据所述vlan哈希值从所述vlan index的集合中选择目标vlan index,基于所述目标vlan index查询vlan index表得到所述报文数据包的vlan标识,其中,所述vlan index表是以vlan index为键值,并以vlan标识为数值的数据表。
198.本发明实施例所提供的汇聚分流器可执行本发明任意实施例所提供的负载均衡方法,具备执行方法相应的功能模块和有益效果。
199.本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行
指令在由计算机处理器执行时用于执行一种负载均衡方法,该方法包括:
200.所述输入处理器获取报文数据包,将所述报文数据包中的查表信息赋值给元数据;
201.所述输入处理器确定所述元数据中与用户配置信息匹配的用于计算端口哈希值的第一哈希字段,基于所述第一哈希字段计算所述端口哈希值;
202.所述输入处理器根据所述端口哈希值和端口负载均衡相关表格确定所述报文数据包的输出端口;
203.所述输出处理器确定所述元数据中与用户配置信息匹配的用于计算局域网交换技术vlan哈希值的第二哈希字段,基于所述第二哈希字段计算所述vlan哈希值;
204.所述输出处理器根据所述vlan哈希值和vlan负载均衡相关表格确定所述报文数据包的vlan标识,将所述vlan标识添加到所述报文数据包的包头得到新的报文数据包,通过所述输出端口发送所述新的报文数据包。
205.当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的负载均衡方法中的相关操作。
206.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
207.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1