CN116915709B - 负载均衡的方法及装置、电子设备和存储介质 - Google Patents
负载均衡的方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116915709B CN116915709B CN202311178973.XA CN202311178973A CN116915709B CN 116915709 B CN116915709 B CN 116915709B CN 202311178973 A CN202311178973 A CN 202311178973A CN 116915709 B CN116915709 B CN 116915709B
- Authority
- CN
- China
- Prior art keywords
- message
- flow
- target
- elephant
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 241000406668 Loxodonta cyclotis Species 0.000 claims abstract description 196
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000006870 function Effects 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 241000480130 Liusus Species 0.000 claims description 8
- 230000032683 aging Effects 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 8
- 238000004590 computer program Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005923 long-lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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/38—Flow based 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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- 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/76—Routing in software-defined topologies, e.g. routing between virtual machines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
- H04L47/225—Determination of shaping rate, e.g. using a moving window
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开公开了负载均衡的方法及装置、电子设备和存储介质,涉及数据处理技术领域,获取目标报文中预设数量的报文头部信息;根据报文头部信息确定其对应的报文流是否为大象流;在确定报文流为大象流时,根据报文流速率和其对应的多个出端口进行计算,得到转发报文流的目标出端口;在确定目标报文命中大象流流表时,基于大象流流表中的目标出端口对目标报文进行转发,大象流流表存储目标出端口的相关信息;在确定目标报文未命中大象流流表时,基于老鼠流流表确定目标报文的转发出端口,以对目标报文进行转发。与相关技术相比,通过将老鼠流和大象流的转发出端口分离,防止过多流量聚集在同一出端口而发生拥塞状况,从而实现更优良的负载均衡效果。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种负载均衡的方法及装置、电子设备和存储介质。
背景技术
云计算借助于软件定义网络(Software-defined Networking,SDN)和虚拟扩展局域网技术(Virtual eXtensible Local Area Network,VXLAN)可随时向世界各地的用户提供各类服务,已成为现代社会的核心基础设施。当前,超大的网络规模和超高的链路负载给流量控制带来巨大挑战,因此负载均衡(Load Balancing,LB)的实现成为保证云计算网络稳定运行的关键。
目前为了实现云计算网络中流量的负载均衡,通常采用调整多条冗余路径的权重,或在专用的软件负载均衡设备之外,额外配备一台可编程交换机的方式来实现负载均衡,但在采用上述方式实现负载均衡时会存在一些缺陷,例如,在采用第一种方式时,会导致在相邻两次下发均衡策略这段时间内无法对流量路径进行调整,而且同一流所有报文的出端口总是相同,且其一般没有区分大象流与老鼠流,只是对流数进行均衡,调控粒度很粗;在采用第二种方式时,会导致可编程交换机到达不同服务器的链路状态未被考虑,例如多台服务器共享同一物理链路,因此,可编程交换机无法实现流量在各条链路的传输均衡。综上所述,现有技术实现的负载均衡存在效果较差的问题。
发明内容
本公开提供了一种负载均衡的方法、装置、电子设备和存储介质。其主要目的在于解决现有技术实现的负载均衡存在效果较差的问题。
根据本公开的第一方面,提供了一种负载均衡的方法,其中,包括:
获取目标报文中预设数量的报文头部信息;
根据所述报文头部信息确定其对应的报文流是否为大象流;
在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;
在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;
在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
可选的,所述基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发包括:
在确定所述目标报文未命中所述大象流流表时,则确定所述目标报文属于老鼠流中的报文;
在确定所述目标报文属于老鼠流中的报文时,则根据所述老鼠流流表确定所述目标报文到达时刻与其所属报文流的上一目标报文的到达时刻的时间间隔;
在确定所述时间间隔大于预设时间间隔时,则从多个出端口中选择一个出端口对所述目标报文进行转发;
在确定所述时间间隔小于或等于所述预设时间间隔时,则根据所述上一目标报文选定的出端口对所述目标报文进行转发。
可选的,所述根据所述报文头部信息确定其对应的报文流是否为大象流包括:
通过哈希函数求解所述报文流对应的目标哈希桶;
通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;
在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理;
在确定处理后的所述记录信息对应的计数值大于大象流阈值时,则确定所述记录信息对应的所述报文流为大象流。
可选的,所述在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理包括:
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值相同时,则将所述记录信息中包括的计数值和得票数值分别加一;
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值不相同时,则将所述记录信息中包括的所述计数值和所述得票数值均置位为一,且将所述时间窗口值更新为当前窗口值;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内存在可用的所述存储单元时,则在可用的所述存储单元中增加所述报文流的记录信息,其中,所述记录信息包括的时间窗口值设置为所述当前时间窗口值,所述计数值和所述得票数值均置位为一;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内不存在可用的所述存储单元时,则查询记录时间最老化的其他记录信息,使用所述报文流对应的所述记录信息覆盖所述其他记录信息;
在确定多条所述其他记录信息的最老化时间相同时,则在所述其他记录信息中确定得票数值最小的一项所述其他记录信息并将其得票数值减一,当其得票数值为零时,将所述报文流对应的所述记录信息存储于其所在的所述存储单元。
可选的,所述在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口包括:
分别计算所述报文流对应的多个所述出端口对应的带宽;
将所述带宽分别与所述报文流速率进行比较,确定可转发所述报文流的所述出端口;
分别计算可转发所述报文流的所述出端口在转发所述报文流时,剩余可用带宽的值;
确定最大所述剩余可用带宽的值对应的所述出端口为目标出端口。
可选的,在所述将所述带宽分别与所述报文流速率进行比较之后,所述方法还包括:
在确定不存在可转发所述报文流的出端口时,则从已分配至多个所述出端口中的其他大象流中选择一条速率大于所述报文流速率的目标其他大象流,且所述目标其他大象流存在除多个所述出端口之外的其他出端口;
将所述目标其他大象流从其所在的所述出端口中移除,并将所述报文流分配至所述目标其他大象流原所在的所述出端口,该所述出端口作为所述报文流的所述目标出端口。
可选的,在所述将所述目标其他大象流从其所在的所述出端口中移除之后,所述方法包括:
根据所述目标其他大象流对应的速率及其对应的多个出端口进行计算,重新确定转发所述目标其他大象流对应的所述目标出端口;
在确定多个所述出端口均不满足转发所述目标其他大象流的条件时,移除一个大象流替换为所述目标其他大象流,若连续替换预设数量的大象流之后,最后被移除的大象流未能确定其对应的所述目标出端口,则停止确定所述报文流对应的所述目标出端口,并降低所述报文流的发送速率。
可选的,所述根据所述报文头部信息确定其对应的报文流是否为大象流还包括:
获取所述报文头部信息内所述报文流对应的根节点到叶子节点的路径标识;
根据所述路径标识确定所述叶子节点,并获取所述叶子节点内保存的所述报文流的速率;
基于所述报文流的速率确定所述报文流是否为大象流。
可选的,所述从多个出端口中选择一个出端口对所述目标报文进行转发包括:
将所述报文流对应的所述报文头部信息和其对应的寄存器值作为关键字,根据所述关键字使用哈希函数从多个出端口中选择一个出端口对所述目标报文进行转发,其中,所述寄存器值可被可编程交换机的系统时间或者随机数替换,替换后的所述系统时间或者所述随机数作为所述关键字的一部分。
根据本公开的第二方面,提供了一种负载均衡的装置,包括:
获取单元,用于获取目标报文中预设数量的报文头部信息;
第一确定单元,用于根据所述报文头部信息确定其对应的报文流是否为大象流;
第一计算单元,用于在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;
转发单元,用于在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;
第二确定单元,用于在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
可选的,所述第二确定单元包括:
第一确定模块,用于在确定所述目标报文未命中所述大象流流表时,则确定所述目标报文属于老鼠流中的报文;
第二确定模块,用于在确定所述目标报文属于老鼠流中的报文时,则根据所述老鼠流流表确定所述目标报文到达时刻与其所属报文流的上一目标报文的到达时刻的时间间隔;
第一转发模块,用于在确定所述时间间隔大于预设时间间隔时,则从多个出端口中选择一个出端口对所述目标报文进行转发;
第二转发模块,用于在确定所述时间间隔小于或等于所述预设时间间隔时,则根据所述上一目标报文选定的出端口对所述目标报文进行转发。
可选的,所述第一确定单元包括:
求解模块,用于通过哈希函数求解所述报文流对应的目标哈希桶;
第一确定模块,用于通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;
处理模块,用于在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理;
第二确定模块,用于在确定处理后的所述记录信息对应的计数值大于大象流阈值时,则确定所述记录信息对应的所述报文流为大象流。
可选的,所述处理模块还用于:
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值相同时,则将所述记录信息中包括的计数值和得票数值分别加一;
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值不相同时,则将所述记录信息中包括的所述计数值和所述得票数值均置位为一,且将所述时间窗口值更新为当前窗口值;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内存在可用的所述存储单元时,则在可用的所述存储单元中增加所述报文流的记录信息,其中,所述记录信息包括的时间窗口值设置为所述当前时间窗口值,所述计数值和所述得票数值均置位为一;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内不存在可用的所述存储单元时,则查询记录时间最老化的其他记录信息,使用所述报文流对应的所述记录信息覆盖所述其他记录信息;
在确定多条所述其他记录信息的最老化时间相同时,则在所述其他记录信息中确定得票数值最小的一项所述其他记录信息并将其得票数值减一,当其得票数值为零时,将所述报文流对应的所述记录信息存储于其所在的所述存储单元。
可选的,所述第一计算单元包括:
第一计算模块,用于分别计算所述报文流对应的多个所述出端口对应的带宽;
比较模块,用于将所述带宽分别与所述报文流速率进行比较,确定可转发所述报文流的所述出端口;
第二计算模块,用于分别计算可转发所述报文流的所述出端口在转发所述报文流时,剩余可用带宽的值;
确定模块,用于确定最大所述剩余可用带宽的值对应的所述出端口为目标出端口。
可选的,所述装置还包括:
选择单元,用于在确定不存在可转发所述报文流的出端口时,则从已分配至多个所述出端口中的其他大象流中选择一条速率大于所述报文流速率的目标其他大象流,且所述目标其他大象流存在除多个所述出端口之外的其他出端口;
第一移除单元,用于将所述目标其他大象流从其所在的所述出端口中移除,并将所述报文流分配至所述目标其他大象流原所在的所述出端口,该所述出端口作为所述报文流的所述目标出端口。
可选的,所述装置包括:
第二计算单元,用于根据所述目标其他大象流对应的速率及其对应的多个出端口进行计算,重新确定转发所述目标其他大象流对应的所述目标出端口;
第二移除单元,用于在确定多个所述出端口均不满足转发所述目标其他大象流的条件时,移除一个大象流替换为所述目标其他大象流,若连续替换预设数量的大象流之后,最后被移除的大象流未能确定其对应的所述目标出端口,则停止确定所述报文流对应的所述目标出端口,并降低所述报文流的发送速率。
可选的,所述第一确定单元还用于:
获取所述报文头部信息内所述报文流对应的根节点到叶子节点的路径标识;
根据所述路径标识确定所述叶子节点,并获取所述叶子节点内保存的所述报文流的速率;
基于所述报文流的速率确定所述报文流是否为大象流。
可选的,所述第一转发模块还用于:
将所述报文流对应的所述报文头部信息和其对应的寄存器值作为关键字,根据所述关键字使用哈希函数从多个出端口中选择一个出端口对所述目标报文进行转发,其中,所述寄存器值可被可编程交换机的系统时间或者随机数替换,替换后的所述系统时间或者所述随机数作为所述关键字的一部分。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如前述第一方面所述的方法。
本公开提供的负载均衡的方法、装置、电子设备和存储介质,获取目标报文中预设数量的报文头部信息;根据所述报文头部信息确定其对应的报文流是否为大象流;在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。与相关技术相比,通过所述报文头部信息确定其对应的报文流是否为大象流,在确定所述报文流为大象流时则求解所述大象流固定转发的所述目标出端口,基于所述目标出端口对所述大象流进行转发,在确定所述报文流为老鼠流时,基于老鼠流流表确定所述报文流的转发出端口,通过将所述老鼠流和所述大象流的转发出端口分离,防止过多流量聚集在同一出端口而发生拥塞状况,从而实现更优良的负载均衡效果。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例所提供的一种负载均衡的方法的流程示意图;
图2为本公开实施例提供的一种老鼠流负载均衡原理示意图;
图3为本公开实施例提供的一种负载均衡的装置的结构示意图;
图4为本公开实施例提供的另一种负载均衡的装置的结构示意图;
图5为本公开实施例提供的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本公开实施例的负载均衡的方法、装置、电子设备和存储介质。
图1为本公开实施例所提供的一种负载均衡的方法的流程示意图。
如图1所示,该方法包含以下步骤:
步骤101,获取目标报文中预设数量的报文头部信息。
作为上述步骤101的细化,为了判断可编程交换机中转发的流的种类,通过在所述可编程交换机中抽样获取预设数量的目标报文的报文头部信息,通过所述报文头部信息可计算所述目标报文对应流的速率,应当明白的是,所述目标报文中包括但不限于一条流对应的所述目标报文,由于所述可编程交换机往往为多条流转发,因此在获取所述目标报文时,往往为多条流对应的目标报文,在获取多条流对应的所述目标报文的基础上,从而获取了多条流对应的目标报文的报文头部信息。
步骤102,根据所述报文头部信息确定其对应的报文流是否为大象流。
作为上述步骤102的细化,在得到所述报文头部信息之后,便可基于所述报文头部信息实现所述可编程交换机中转发的流的种类的确定,所述流即为所述报文流,所述报文流的种类包括大象流和老鼠流,大象流指的是通过网络链路进行大量的、持续的数据传递过程,例如虚机的迁移、数据的迁移、视频、存储、MapReduce等。这种数据流通常需要占用较大的带宽,并且持续时间较长。与之相对的是老鼠流,指通过网络链路进行少量的、短时间的数据传递过程,例如发邮件、看网页、聊微信等。
在一些实施例中,根据所述报文头部信息确定其对应的所述报文流是否为大象流。
在一些实施例中,在根据所述报文头部信息确定其对应的报文流不为所述大象流时,则确定所述报文流为老鼠流。
步骤103,在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息。
作为上述步骤103的细化,为了实现当所述报文流为大象流时,得到对所述报文流进行转发的固定且唯一的目标出端口,需要根据所述报文流的转发速率和所述报文流对应的多个出端口进行计算,得到转发所述报文流的所述目标出端口,其中,所述报文流的转发速率可根据所述报文流对应的目标报文的报文头部信息进行计算得到,且基于所述报文头部信息还可得到所述报文流对应的多个出端口的信息,所述多个出端口为在多条冗余路径协议中所述报文流对应的多个所述出端口。
在一些实施例中,步骤101,步骤102及步骤103在所述可编程交换机的控制平面执行,最终经步骤103得到所述报文流对应的固定且唯一的目标出端口。
步骤104,在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息。
作为上述步骤104的细化,所述确定所述目标报文命中所述大象流流表即表明所述大象流流表中存在所述目标报文对应的报文流的目标出端口,进一步的,即为所述大象流流表中存在所述目标报文对应的所述报文流转发的下一跳地址,当所述大象流流表中存在所述目标报文对应的报文流的目标出端口时,则通过所述目标出端口对所述目标报文进行转发。
在一些实施例中,步骤104在所述可编程交换机的数据平面进行执行,在所述可编程交换机的控制平面计算得到所述报文流对应的所述目标出端口之后,将所述目标出端口的信息下发至所述数据平面中的所述大象流流表,根据存储有所述目标出端口信息的大象流流表实现对大象流的转发。
步骤105,在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
作为上述步骤105的细化,所述确定所述目标报文未命中所述大象流流表,即表示所述大象流流表中不存在所述目标报文对应的报文流的目标出端口,进一步的,即为所述大象流流表中不存在所述目标报文对应的所述报文流转发的下一跳地址,从而根据老鼠流流表确定所述目标报文的转发出端口,并基于确定的所述出端口对所述目标报文进行转发。
需要了解的是,步骤105的执行条件确定所述目标报文未命中所述大象流流表即为无法根据所述大象流流表实现对该目标报文对应的报文流的转发,从而根据所述老鼠流流表对该报文流进行转发,而步骤103则是在确定所述报文流为大象流时,计算该报文流的目标出端口,即在确定所述报文流为大象流时,实现该报文流目标出端口的确定,且在确定该报文流对应的所述目标报文命中大象流流表时,则基于所述大象流流表将所述目标报文从所述目标出端口进行转发,步骤105包括对所述报文流对应的转发端口的确定即步骤105也执行与步骤103相似的步骤。
本公开提供的负载均衡的方法,获取目标报文中预设数量的报文头部信息;根据所述报文头部信息确定其对应的报文流是否为大象流;在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。与相关技术相比,通过所述报文头部信息确定其对应的报文流是否为大象流,在确定所述报文流为大象流时则求解所述大象流固定转发的所述目标出端口,基于所述目标出端口对所述大象流进行转发,在确定所述报文流为老鼠流时,基于老鼠流流表确定所述报文流的转发出端口,通过将所述老鼠流和所述大象流的转发出端口分离,防止过多流量聚集在同一出端口而发生拥塞状况,从而实现更优良的负载均衡效果。
作为本公开实施例的细化,在执行步骤105所述基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发时,可以采用但不限于以下实现方式,例如:在确定所述目标报文未命中所述大象流流表时,则确定所述目标报文属于老鼠流中的报文;在确定所述目标报文属于老鼠流中的报文时,则根据所述老鼠流流表确定所述目标报文到达时刻与其所属报文流的上一目标报文的到达时刻的时间间隔;在确定所述时间间隔大于预设时间间隔时,则从多个出端口中选择一个出端口对所述目标报文进行转发;在确定所述时间间隔小于或等于所述预设时间间隔时,则根据所述上一目标报文选定的出端口对所述目标报文进行转发。
为了更清楚的说明老鼠流负载均衡的原理,图2为本公开实施例提供的一种老鼠流负载均衡原理示意图,其中,DIP为路由前缀,Reg为寄存器值;在上述说明中已知,先根据目标报文未命中所述大象流流表确定所述目标报文对应的报文流为老鼠流,考虑到老鼠流一般呈现出瞬时突发的特征,因此,本实施例在数据平面完成老鼠流的负载均衡功能。此算法一旦某个端口的利用率达到较高值或者发生拥塞,则直接调整可编程交换机数据平面的流表内容,使得下一跳为拥塞端口的老鼠流随机地选择其余可用端口,同时尽量避免在接收端发生报文逆序现象。具体步骤包括:老鼠流f的报文查找数据平面的流表获取对应的下一跳集合后,其中,老鼠流f包括老鼠流f1和老鼠流f2,如图2所示,老鼠流f1和老鼠流f2对应的下一跳集合分别为port={4,6}和{2,1}。
以老鼠流f的报头值和其对应的寄存器值为关键字,通过哈希函数h(.)为其在下一跳集合中随机地选择某个出端口。如图2所示,当寄存器值分别为1和2时,老鼠流f2和f1的下一跳分为端口2和端口6。注意,此处寄存器值除非显式地修改否则不会改变。在这种情况下,老鼠流f先后到达的报文总是选择相同地下一跳。
根据老鼠流f所选择出端口的状态(利用率和拥塞程度)决定是否修改f所对应寄存器的值。如图2所示,若流f1当前选定的出端口6的队列长度过长,则将其对应的寄存器值从2修改成1,因为后续f1的报文会选择出端口4。
将老鼠流f的报文按照上述查找结果从指定出端口发送出去,同时发送镜像包文修改对应计数器值。
作为上述实施例的细化,在执行步骤102所述根据所述报文头部信息确定其对应的报文流是否为大象流时,可以采用但不限于以下实现方式,例如:通过哈希函数求解所述报文流对应的目标哈希桶;通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理;在确定处理后的所述记录信息对应的计数值大于大象流阈值时,则确定所述记录信息对应的所述报文流为大象流。
为了将经过可编程交换机的大象流从众多老鼠流中识别出来,并且准确测出其速率。采用哈希的方式来索引大象流的存储记录,并采用哈希桶加投票的方式来解决哈希冲突问题,即多个流映射到同一存储单元的场景。借助于哈希,部署在可编程交换机控制平面的大象流探测算法能线速地处理从可编程交换机数据平面抽样上送的报文头部,而且能精确地识别出大象流并记录其链路速率,同时能够自动地淘汰众多无用的老鼠流记录。
作为上述实施例的细化,所述大象流的识别包括:在接收到报文流对应的目标报文后,利用哈希函数求解出报文流所对应的哈希桶。遍历哈希桶内的预设数量的存储单元,若所述报文流已被记录在此哈希桶内,则在满足预设预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理,所述记录信息即为所述报文流记录在哈希桶内的信息,若处理后记录信息的计数值大于大象流阈值,则将所述记录信息对应的报文流鉴定为大象流并通知上层应用,同时将所述报文流对应的记录信息从此哈希桶内清除。
作为上述实施例的细化,在执行所述在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理时,可以采用但不限于以下实现方式,例如:在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值相同时,则将所述记录信息中包括的计数值和得票数值分别加一;在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值不相同时,则将所述记录信息中包括的所述计数值和所述得票数值均置位为一,且将所述时间窗口值更新为当前窗口值;在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内存在可用的所述存储单元时,则在可用的所述存储单元中增加所述报文流的记录信息,其中,所述记录信息包括的时间窗口值设置为所述当前时间窗口值,所述计数值和所述得票数值均置位为一;在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内不存在可用的所述存储单元时,则查询记录时间最老化的其他记录信息,使用所述报文流对应的所述记录信息覆盖所述其他记录信息;在确定多条所述其他记录信息的最老化时间相同时,则在所述其他记录信息中确定得票数值最小的一项所述其他记录信息并将其得票数值减一,当其得票数值为零时,将所述报文流对应的所述记录信息存储于其所在的所述存储单元。
作为上述实施例的细化,前述实施例具体可理解为:若报文流之前记录的时间窗口与当前时间窗口相同,则直接将报文流对应的计数值和得票数值分别加1;若时间窗口与当前时间窗口不同,则表明原本记录的报文流信息已过时,则将时间窗口更新为当前时间窗口,同时将计数值和得票数值置位为1。若在此哈希桶内未找到报文流对应的记录信息且哈希桶内存在可用的存储单元,则直接将报文流记录新加到此单元内,报文流时间窗口、计数值和得票数值分别设置为当前时间窗口。若在此哈希桶内未找到报文流对应的记录信息且哈希桶内已无可用的存储单元,则首先寻找记录时间最老化者,将报文流记录在此单元内以覆盖原有的过时信息;如果记录时间都相同,则寻找得票数值最小者,将其对应值减1即可;一旦得票数值变为零,则将报文流直接存储在此单元中。此处并非直接覆盖计数值最小的记录而是利用得票数的原因在于防止大象流被老鼠流错误地踢走。虽然后续大象流会再度被存储到此哈希桶内,但是其对应的计数值已不再能准确地反应大象流的速率。
作为上述实施例的细化,在执行步骤103所述在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口时,还可以采用但不限于以下实现方式,例如:分别计算所述报文流对应的多个所述出端口对应的带宽;将所述带宽分别与所述报文流速率进行比较,确定可转发所述报文流的所述出端口;分别计算可转发所述报文流的所述出端口在转发所述报文流时,剩余可用带宽的值;确定最大所述剩余可用带宽的值对应的所述出端口为目标出端口。
作为上述实施例的细化,为了求出每个出端口期望承担的大象流流量速率,本实施例提供了公式(1),其中,公式(1)如下所示:
公式(1)
其中,S为所有大象流的速率之和,为可编程交换机的端口带宽,K为可编程交换机的端口数量,W为K个端口带宽之和,/>是指平均每个端口应该预留多少带宽给老鼠流。对于带宽较小的端口,大象流均衡算法倾向给它分配更少的大象流,以用于承担大量瞬发的老鼠流。
为了更清楚的说明大象流对应的目标出端口的确定过程,本实施例提供示例性说明,例如:给定速率为s、下一跳可选端口集合为{p1, p2, p3}的大象流f,首先,查看各个端口的可分配带宽和/>,确定当前仍可放入大象流f的端口,不妨设端口p1和p3满足条件,即/>和/>;其次,计算可用端口p1和p3在放入f后的剩余可用带宽,不妨设/>-f;最后,将大象流f的下一跳出端口设置为唯一端口p3,同时将/>地值减去大象流f的速率s。通过为每个大象流指定其唯一的下一跳,使得每个端口被分配的速率之和尽可能等于期望带宽为/>。
需要了解的是,本公开提及的老鼠流为确定为老鼠流的报文流,大象流为确定为大象流的报文流,其识别方式,在上述实施例中已经说明。
作为上述实施例的细化,在所述将所述带宽分别与所述报文流速率进行比较之后,所述方法还可以采用但不限于以下实现方式,例如:在确定不存在可转发所述报文流的出端口时,则从已分配至多个所述出端口中的其他大象流中选择一条速率大于所述报文流速率的目标其他大象流,且所述目标其他大象流存在除多个所述出端口之外的其他出端口;将所述目标其他大象流从其所在的所述出端口中移除,并将所述报文流分配至所述目标其他大象流原所在的所述出端口,该所述出端口作为所述报文流的所述目标出端口。
与前述示例性说明承接,为了便于理解上述实施例所涉及的步骤,本实施例对前述示例性说明进行续展,例如:若所有可用端口的剩余带宽都无法容纳下此大象流f,即,则从已分配到端口p1、p2和p3的大象流中挑选一条速率大于s、且存在非p1、p2或p3的可用端口,不妨设原本放入端口p2的大象流f’被选中,则将大象流f’从端口p2中踢出并将流f分配到其中,大象流f’即为所述目标其他大象流。
作为上述实施例的细化,在所述将所述目标其他大象流从其所在的所述出端口中移除之后,所述方法还可以采用但不限于以下实现方式,例如:根据所述目标其他大象流对应的速率及其对应的多个出端口进行计算,重新确定转发所述目标其他大象流对应的所述目标出端口;在确定多个所述出端口均不满足转发所述目标其他大象流的条件时,移除一个大象流替换为所述目标其他大象流,若连续替换预设数量的大象流之后,最后被移除的大象流未能确定其对应的所述目标出端口,则停止确定所述报文流对应的所述目标出端口,并降低所述报文流的发送速率。
与前述示例性说明承接,为了便于理解上述实施例所涉及的步骤,本实施例对前述示例性说明进行续展,例如:将大象流f’作为新的当前处理流,进而在其可用端口集合内按照上述处理大象流f的方式进行处理。若连续替换了k个大象流之后仍然无法成功将第k个被踢出的大象流分配到合适端口,则放弃处理大象流f并上报SDN控制器降低其发送速率。
作为上述实施例的细化,在执行步骤102根据所述报文头部信息确定其对应的报文流是否为大象流时,还可以采用但不限于以下实现方式,例如:获取所述报文头部信息内所述报文流对应的根节点到叶子节点的路径标识;根据所述路径标识确定所述叶子节点,并获取所述叶子节点内保存的所述报文流的速率;基于所述报文流的速率确定所述报文流是否为大象流。
通过二叉树或者字典树记录所述报文流的速率,即通过根节点到叶子节点的路径标识标记一条所述报文流,叶子节点记录该一条报文流的速率,以确定该一条所述报文流是否为大象流。
示例性的,即用二叉树或者字典树记录网络中流的速率,通过根节点到叶子节点的路径标识标记一条报文流,叶子节点记录此报文流的速率。
作为上述实施例的细化,在执行所述从多个出端口中选择一个出端口对所述目标报文进行转发时,可以采用但不限于以下实现方式,例如:将所述报文流对应的所述报文头部信息和其对应的寄存器值作为关键字,根据所述关键字使用哈希函数从多个出端口中选择一个出端口对所述目标报文进行转发,其中,所述寄存器值可被可编程交换机的系统时间或者随机数替换,替换后的所述系统时间或者所述随机数作为所述关键字的一部分。
综上所述,本实施例能实现以下效果:
1. 通过将所述老鼠流和所述大象流的转发出端口分离,防止过多流量聚集在同一出端口而发生拥塞状况,从而实现更优良的负载均衡效果。
2.无需SDN控制器的参与,也无需主动发送探测报文来获取网络链路或应用服务器的状态信息,仅利用可编程交换机的局部信息即可实现负载均衡,现网增量部署容易实现。
3.仅需获取可编程交换机局部信息,无需发送任何探测报文或者获取服务器状态,不会引起高带宽开销,存储和计算的压力小。
与上述的负载均衡的方法相对应,本发明还提出一种负载均衡的装置。由于本发明的装置实施例与上述的方法实施例相对应,对于装置实施例中未披露的细节可参照上述的方法实施例,本发明中不再进行赘述。
图3为本公开实施例提供的一种负载均衡的装置的结构示意图,如图3所示,包括:
获取单元21,用于获取目标报文中预设数量的报文头部信息;
第一确定单元22,用于根据所述报文头部信息确定其对应的报文流是否为大象流;
第一计算单元23,用于在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;
转发单元24,用于在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;
第二确定单元25,用于在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
本公开提供的负载均衡的装置,获取目标报文中预设数量的报文头部信息;根据所述报文头部信息确定其对应的报文流是否为大象流;在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。与相关技术相比,通过所述报文头部信息确定其对应的报文流是否为大象流,在确定所述报文流为大象流时则求解所述大象流固定转发的所述目标出端口,基于所述目标出端口对所述大象流进行转发,在确定所述报文流为老鼠流时,基于老鼠流流表确定所述报文流的转发出端口,通过将所述老鼠流和所述大象流的转发出端口分离,防止过多流量聚集在同一出端口而发生拥塞状况,从而实现更优良的负载均衡效果。
图4为本公开实施例提供的另一种负载均衡的装置的结构示意图,所述第二确定单元25包括:
第一确定模块251,用于在确定所述目标报文未命中所述大象流流表时,则确定所述目标报文属于老鼠流中的报文;
第二确定模块252,用于在确定所述目标报文属于老鼠流中的报文时,则根据所述老鼠流流表确定所述目标报文到达时刻与其所属报文流的上一目标报文的到达时刻的时间间隔;
第一转发模块253,用于在确定所述时间间隔大于预设时间间隔时,则从多个出端口中选择一个出端口对所述目标报文进行转发;
第二转发模块254,用于在确定所述时间间隔小于或等于所述预设时间间隔时,则根据所述上一目标报文选定的出端口对所述目标报文进行转发。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述第一确定单元22包括:
求解模块221,用于通过哈希函数求解所述报文流对应的目标哈希桶;
第一确定模块222,用于通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;
处理模块223,用于在确定所述记录信息满足预设标准条件时,对所述记录信息执行与所述预设标准条件相对应的处理;
第二确定模块224,用于在确定处理后的所述记录信息对应的计数值大于大象流阈值时,则确定所述记录信息对应的所述报文流为大象流。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述处理模块223还用于:
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值相同时,则将所述记录信息中包括的计数值和得票数值分别加一;
在确定所述目标哈希桶内已经存在所述报文流的记录信息,且所述记录信息中的时间窗口值与所述报文流当前时间窗口值不相同时,则将所述记录信息中包括的所述计数值和所述得票数值均置位为一,且将所述时间窗口值更新为当前窗口值;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内存在可用的所述存储单元时,则在可用的所述存储单元中增加所述报文流的记录信息,其中,所述记录信息包括的时间窗口值设置为所述当前时间窗口值,所述计数值和所述得票数值均置位为一;
在确定所述目标哈希桶内不存在所述报文流的记录信息,且所述目标哈希桶内不存在可用的所述存储单元时,则查询记录时间最老化的其他记录信息,使用所述报文流对应的所述记录信息覆盖所述其他记录信息;
在确定多条所述其他记录信息的最老化时间相同时,则在所述其他记录信息中确定得票数值最小的一项所述其他记录信息并将其得票数值减一,当其得票数值为零时,将所述报文流对应的所述记录信息存储于其所在的所述存储单元。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述第一计算单元23包括:
第一计算模块231,用于分别计算所述报文流对应的多个所述出端口对应的带宽;
比较模块232,用于将所述带宽分别与所述报文流速率进行比较,确定可转发所述报文流的所述出端口;
第二计算模块233,用于分别计算可转发所述报文流的所述出端口在转发所述报文流时,剩余可用带宽的值;
确定模块234,用于确定最大所述剩余可用带宽的值对应的所述出端口为目标出端口。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述装置还包括:
选择单元26,用于在确定不存在可转发所述报文流的出端口时,则从已分配至多个所述出端口中的其他大象流中选择一条速率大于所述报文流速率的目标其他大象流,且所述目标其他大象流存在除多个所述出端口之外的其他出端口;
第一移除单元27,用于将所述目标其他大象流从其所在的所述出端口中移除,并将所述报文流分配至所述目标其他大象流原所在的所述出端口,该所述出端口作为所述报文流的所述目标出端口。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述装置包括:
第二计算单元28,用于根据所述目标其他大象流对应的速率及其对应的多个出端口进行计算,重新确定转发所述目标其他大象流对应的所述目标出端口;
第二移除单元29,用于在确定多个所述出端口均不满足转发所述目标其他大象流的条件时,移除一个大象流替换为所述目标其他大象流,若连续替换预设数量的大象流之后,最后被移除的大象流未能确定其对应的所述目标出端口,则停止确定所述报文流对应的所述目标出端口,并降低所述报文流的发送速率。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述第一确定单元22还用于:
获取所述报文头部信息内所述报文流对应的根节点到叶子节点的路径标识;
根据所述路径标识确定所述叶子节点,并获取所述叶子节点内保存的所述报文流的速率;
基于所述报文流的速率确定所述报文流是否为大象流。
进一步地,在本实施例一种可能的实现方式中,如图4所示,所述第一转发模块253还用于:
将所述报文流对应的所述报文头部信息和其对应的寄存器值作为关键字,根据所述关键字使用哈希函数从多个出端口中选择一个出端口对所述目标报文进行转发,其中,所述寄存器值可被可编程交换机的系统时间或者随机数替换,替换后的所述系统时间或者所述随机数作为所述关键字的一部分。
需要说明的是,前述对方法实施例的解释说明,也适用于本实施例的装置,原理相同,本实施例中不再限定。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备300包括计算单元301,其可以根据存储在ROM(Read-OnlyMemory,只读存储器)302中的计算机程序或者从存储单元308加载到RAM(Random AccessMemory,随机访问/存取存储器) 303中的计算机程序,来执行各种适当的动作和处理。在RAM 303中,还可存储设备300操作所需的各种程序和数据。计算单元301、ROM 302以及RAM303通过总线304彼此相连。I/O(Input/Output,输入/输出) 接口305也连接至总线304。
设备300中的多个部件连接至I/O接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元301的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元) 、各种专用的AI(ArtificialIntelligence,人工智能) 计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital Signal Processor,数字信号处理器) 、以及任何适当的处理器、控制器、微控制器等。计算单元301执行上文所描述的各个方法和处理,例如负载均衡的方法。例如,在一些实施例中,负载均衡的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到RAM 303并由计算单元301执行时,可以执行上文描述的方法的一个或多个步骤。备选地,在其他实施例中,计算单元301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行前述负载均衡的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific StandardProduct,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑设备) 、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory,可擦除可编程只读存储器) 或快闪存储器、光纤、CD-ROM(Compact Disc Read-Only Memory,便捷式紧凑盘只读存储器) 、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode-Ray Tube, 阴极射线管)或者LCD(Liquid Crystal Display, 液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(LocalArea Network,局域网)、WAN(Wide Area Network,广域网) 、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称 "VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
其中,需要说明的是,人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (11)
1.一种负载均衡的方法,其特征在于,包括:
获取目标报文中预设数量的报文头部信息,并将所述报文头部信息对应的报文流通过哈希函数求解所述报文流对应的目标哈希桶;
通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;若存在所述报文流的记录信息,则对所述记录信息中的计数值和得票数值进行投票计数处理;若不存在所述报文流的记录信息,则在所述存储单元中增加所述报文流的记录信息,对所述记录信息中的计数值和得票数值进行投票计数处理;并将投票计数处理后的所述记录信息对应的计数值与大象流阈值进行比较,以确定所述记录信息对应的所述报文流是否为大象流;
在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;
在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;
在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
2.根据权利要求1所述的方法,其特征在于,所述基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发包括:
在确定所述目标报文未命中所述大象流流表时,则确定所述目标报文属于老鼠流中的报文;
在确定所述目标报文属于老鼠流中的报文时,则根据所述老鼠流流表确定所述目标报文到达时刻与其所属报文流的上一目标报文的到达时刻的时间间隔;
在确定所述时间间隔大于预设时间间隔时,则从多个出端口中选择一个出端口对所述目标报文进行转发;
在确定所述时间间隔小于或等于所述预设时间间隔时,则根据所述上一目标报文选定的出端口对所述目标报文进行转发。
3.根据权利要求1所述的方法,其特征在于,所述若存在所述报文流的记录信息,则对所述记录信息中的计数值和得票数值进行投票计数处理包括:
在所述记录信息中的时间窗口值与所述报文流当前时间窗口值相同时,则将所述记录信息中包括的计数值和得票数值分别加一;
在所述记录信息中的时间窗口值与所述报文流当前时间窗口值不相同时,则将所述记录信息中包括的所述计数值和所述得票数值均置位为一,且将所述时间窗口值更新为当前窗口值;
所述若不存在所述报文流的记录信息,则在所述存储单元中增加所述报文流的记录信息,对所述记录信息中的计数值和得票数值进行投票计数处理包括:
在所述目标哈希桶内存在可用的所述存储单元时,则在可用的所述存储单元中增加所述报文流的记录信息,其中,所述记录信息包括的时间窗口值设置为所述当前时间窗口值,所述计数值和所述得票数值均置位为一;
在所述目标哈希桶内不存在可用的所述存储单元时,则查询记录时间最老化的其他记录信息,使用所述报文流对应的所述记录信息覆盖所述其他记录信息;
在确定多条所述其他记录信息的最老化时间相同时,则在所述其他记录信息中确定得票数值最小的一项所述其他记录信息并将其得票数值减一,当其得票数值为零时,将所述报文流对应的所述记录信息存储于其所在的所述存储单元;
所述将投票计数处理后的所述记录信息对应的计数值与大象流阈值进行比较,以确定所述记录信息对应的所述报文流是否为大象流包括:
在确定处理后的所述记录信息对应的计数值大于大象流阈值时,则确定所述记录信息对应的所述报文流为大象流。
4.根据权利要求1所述的方法,其特征在于,所述在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口包括:
分别计算所述报文流对应的多个所述出端口对应的带宽;
将所述带宽分别与所述报文流速率进行比较,确定可转发所述报文流的所述出端口;
分别计算可转发所述报文流的所述出端口在转发所述报文流时,剩余可用带宽的值;
确定最大所述剩余可用带宽的值对应的所述出端口为目标出端口。
5.根据权利要求4所述的方法,其特征在于,在所述将所述带宽分别与所述报文流速率进行比较之后,所述方法还包括:
在确定不存在可转发所述报文流的出端口时,则从已分配至多个所述出端口中的其他大象流中选择一条速率大于所述报文流速率的目标其他大象流,且所述目标其他大象流存在除多个所述出端口之外的其他出端口;
将所述目标其他大象流从其所在的所述出端口中移除,并将所述报文流分配至所述目标其他大象流原所在的所述出端口,该所述出端口作为所述报文流的所述目标出端口。
6.根据权利要求5所述的方法,其特征在于,在所述将所述目标其他大象流从其所在的所述出端口中移除之后,所述方法包括:
根据所述目标其他大象流对应的速率及其对应的多个出端口进行计算,重新确定转发所述目标其他大象流对应的所述目标出端口;
在确定多个所述出端口均不满足转发所述目标其他大象流的条件时,移除一个大象流替换为所述目标其他大象流,若连续替换预设数量的大象流之后,最后被移除的大象流未能确定其对应的所述目标出端口,则停止确定所述报文流对应的所述目标出端口,并降低所述报文流的发送速率。
7.根据权利要求1所述的方法,其特征在于,所述根据所述报文头部信息确定其对应的报文流是否为大象流还包括:
获取所述报文头部信息内所述报文流对应的根节点到叶子节点的路径标识;
根据所述路径标识确定所述叶子节点,并获取所述叶子节点内保存的所述报文流的速率;
基于所述报文流的速率确定所述报文流是否为大象流。
8.根据权利要求2所述的方法,其特征在于,所述从多个出端口中选择一个出端口对所述目标报文进行转发包括:
将所述报文流对应的所述报文头部信息和其对应的寄存器值作为关键字,根据所述关键字使用哈希函数从多个出端口中选择一个出端口对所述目标报文进行转发,其中,所述寄存器值可被可编程交换机的系统时间或者随机数替换,替换后的所述系统时间或者所述随机数作为所述关键字的一部分。
9.一种负载均衡的装置,其特征在于,包括:
获取单元,用于获取目标报文中预设数量的报文头部信息,并将所述报文头部信息对应的报文流通过哈希函数求解所述报文流对应的目标哈希桶;
第一确定单元,用于通过遍历所述目标哈希桶内存在的存储单元,根据所述报文头部信息确定所述目标哈希桶内是否已经存在所述报文流的记录信息,所述目标哈希桶存在预设数量的所述存储单元;若存在所述报文流的记录信息,则对所述记录信息中的计数值和得票数值进行投票计数处理;若不存在所述报文流的记录信息,则在所述存储单元中增加所述报文流的记录信息,对所述记录信息中的计数值和得票数值进行投票计数处理;并将投票计数处理后的所述记录信息对应的计数值与大象流阈值进行比较,以确定所述记录信息对应的所述报文流为大象流;
第一计算单元,用于在确定所述报文流为大象流时,则根据所述报文流速率和其对应的多个出端口进行计算,得到转发所述报文流的目标出端口,所述报文头部信息包括所述报文流速率和所述出端口的信息;
转发单元,用于在确定所述目标报文命中大象流流表时,则基于所述大象流流表中的所述目标出端口对所述目标报文进行转发,所述大象流流表存储所述目标出端口的相关信息;
第二确定单元,用于在确定所述目标报文未命中所述大象流流表时,则基于老鼠流流表确定所述目标报文的转发出端口,以对所述目标报文进行转发。
10. 一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
11.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311178973.XA CN116915709B (zh) | 2023-09-13 | 2023-09-13 | 负载均衡的方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311178973.XA CN116915709B (zh) | 2023-09-13 | 2023-09-13 | 负载均衡的方法及装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116915709A CN116915709A (zh) | 2023-10-20 |
CN116915709B true CN116915709B (zh) | 2024-01-05 |
Family
ID=88351512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311178973.XA Active CN116915709B (zh) | 2023-09-13 | 2023-09-13 | 负载均衡的方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116915709B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011143652A2 (en) * | 2010-05-14 | 2011-11-17 | Extreme Networks, Inc. | Methods, systems, and computer readable media for stateless load balancing of network traffic flows |
CN106487676A (zh) * | 2016-10-27 | 2017-03-08 | 盛科网络(苏州)有限公司 | 一种基于大象流的动态ecmp芯片实现方法 |
CN114268584A (zh) * | 2020-09-16 | 2022-04-01 | 华为技术有限公司 | 转发报文的方法和相关装置 |
CN114884883A (zh) * | 2022-06-16 | 2022-08-09 | 深圳星云智联科技有限公司 | 一种流量转发方法、装置、设备及存储介质 |
-
2023
- 2023-09-13 CN CN202311178973.XA patent/CN116915709B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011143652A2 (en) * | 2010-05-14 | 2011-11-17 | Extreme Networks, Inc. | Methods, systems, and computer readable media for stateless load balancing of network traffic flows |
CN106487676A (zh) * | 2016-10-27 | 2017-03-08 | 盛科网络(苏州)有限公司 | 一种基于大象流的动态ecmp芯片实现方法 |
CN114268584A (zh) * | 2020-09-16 | 2022-04-01 | 华为技术有限公司 | 转发报文的方法和相关装置 |
CN114884883A (zh) * | 2022-06-16 | 2022-08-09 | 深圳星云智联科技有限公司 | 一种流量转发方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116915709A (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11171891B2 (en) | Congestion drop decisions in packet queues | |
US10735325B1 (en) | Congestion avoidance in multipath routed flows | |
US10742722B2 (en) | Server load balancing | |
US10778588B1 (en) | Load balancing for multipath groups routed flows by re-associating routes to multipath groups | |
US10693790B1 (en) | Load balancing for multipath group routed flows by re-routing the congested route | |
CN107005485A (zh) | 一种确定路由的方法、对应装置及系统 | |
US10819640B1 (en) | Congestion avoidance in multipath routed flows using virtual output queue statistics | |
CN107276916B (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN110474845A (zh) | 流表项淘汰方法及相关装置 | |
CN108683607A (zh) | 虚拟机流量控制方法、装置和服务器 | |
TW201528734A (zh) | 服務品質虛擬化之方法及裝置 | |
CN116938777B (zh) | 网络遥测的方法及装置、电子设备和存储介质 | |
CN107113323B (zh) | 一种数据存储方法、装置和系统 | |
CN116915709B (zh) | 负载均衡的方法及装置、电子设备和存储介质 | |
US9137158B2 (en) | Communication apparatus and communication method | |
US10594631B1 (en) | Methods and apparatus for memory resource management in a network device | |
CN111740922A (zh) | 数据传输方法、装置、电子设备及介质 | |
WO2023125380A1 (zh) | 一种数据管理的方法及相应装置 | |
CN109547352B (zh) | 报文缓存队列的动态分配方法和装置 | |
CN108566335B (zh) | 一种基于NetFlow的网络拓扑生成方法 | |
US10116588B2 (en) | Large receive offload allocation method and network device | |
CN108235158B (zh) | 光网络多播业务的处理方法和装置 | |
CN111224964A (zh) | 访问控制方法及设备 | |
CN117579543B (zh) | 一种数据流分割方法、装置、设备和计算机可读存储介质 | |
CN115988574B (zh) | 基于流表的数据处理方法、系统、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |