CN109286686A - 基于轮询机制的负载均衡方法 - Google Patents
基于轮询机制的负载均衡方法 Download PDFInfo
- Publication number
- CN109286686A CN109286686A CN201811404230.9A CN201811404230A CN109286686A CN 109286686 A CN109286686 A CN 109286686A CN 201811404230 A CN201811404230 A CN 201811404230A CN 109286686 A CN109286686 A CN 109286686A
- Authority
- CN
- China
- Prior art keywords
- polling
- load
- flow table
- hash value
- balancing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1017—Server selection for load balancing based on a round robin mechanism
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于轮询机制的负载均衡方法,该方法包括:设置聚合流表,至少用于存储Hash值以及对应的成员出口;设置轮询表,至少用于存储负载均衡组中成员的轮询状态;当数据流到达交换机时,计算所述数据流的Hash值;根据所述Hash值查找聚合流表是否存在该记录,若存在,获取该记录对应的成员出口并通过该成员出口转发所述数据流;若不存在,查询轮询表获取成员出口,将该成员出口以及Hash值写入聚合流表,并通过该成员出口转发所述数据流。采用本发明公开的基于轮询机制的负载均衡方法,可以以较小的代价实现均匀的选路,且不会出现乱序。
Description
技术领域
本发明涉及一种负载均衡方法,特别涉及一种基于轮询机制的负载均衡方法,属于网络通信技术领域。
背景技术
会话保持是负载均衡最常见的问题之一,指针对一个流(通常以五元组标识),能够固定的保持从负载均衡组的某一个成员出去。当组成员发生变化的时候,会话保持能够做到:1)当前流所在成员组的成员数量发生变化时,当前流选中的成员不变;2)当前流选中的成员链路断开时,当前流要能够均匀的分摊到其他正常工作的链路上;3)组成员数量增加(或者是之前断开的链路,现在又恢复工作)时,不影响现在已经转发的流的选路。
静态Hash方法是一种传统的负载均衡方法,该方法基于报文字段,例如最常用的五元组(源IP地址,目的IP地址,四层协议类型,四层源端口,四层目的端口),通过Hash算法计算得到一个Hash值,然后用Hash值对成员数量取模,得到的值即选为当前出口。基于静态Hash的算法,由于采用Hash值对成员数量取模,所以一旦成员数量发生变化,模值随之变化,所有正在转发的流都会受到影响,无法做到会话保持。
动态负载均衡(Dynamic Load Balance,DLB)根据当前负载均衡组成员的负载状况来选择出口,针对每一个新流,DLB都会选择当前最轻的负载作为出口,并且保持该流后续报文仍然用这个成员作为出口,不发生变化。该方法虽然可以做到会话保持,但是需要动态评估当前组成员的负载状况,实现较为复杂,代价较大。并且,带宽是一个瞬时概念,而评估是基于一定的反馈机制,具有滞后性,不能及时反映出当前链路的真实负载状态。
轮询(Round Robin)机制也是负载均衡中常见的方法,传统的轮询机制对每一个报文做轮询,即每一个报文来了都依次选路,该方法容易导致同一个流的报文会从不同的成员端口发出去,造成转发乱序的后果。
在现有负载均衡的应用场景中,主要有ECMP和LAG,ECMP是三层等价路由,LAG是二层应用场景。如前所述的现有几种方案,或静态Hash存在选路不均匀的问题,或DLB存在实现复杂,反馈慢的问题,或常规轮询机制存在乱序的问题。
发明内容
针对现有技术的不足,本发明的主要目的在于:提出一种负载均衡的实现方法,以较小的代价实现相对均匀的选路,做到会话保持,且不会产生乱序。
为实现前述目的,本发明公开了一种基于轮询机制的负载均衡方法,该方法具体包括:
设置Flex Hash模块,至少用于基于报文内容计算当前数据流的Hash值;
设置负载均衡成员组表,至少用于存储负载均衡成员组的所有成员;
设置轮询表,至少用于存储所述负载均衡成员组的成员的轮询状态;
设置聚合流表,至少用于存储Hash值以及对应的成员出口;
当数据流到达交换机时,计算所述数据流的Hash值;根据该Hash值查找聚合流表是否存在该记录,若存在,获取该记录对应的成员出口并通过该成员出口转发所述数据流;若不存在,查询轮询表获取成员出口,将该成员出口以及Hash值写入聚合流表,并通过该成员出口转发所述数据流。
优选地,所述聚合流表具有老化机制,在一定周期内将处于老化状态的流表记录删除。
优选地,每个数据流的报文查到对应的流表后,更新流表为非老化状态;
按一定的老化周期扫描聚合流表中的每一条流表,将非老化状态的流表更新为老化状态,将已处于老化状态的流表删除。
优选地,将所述老化状态标记为0,所述非老化状态标记为1。
优选地,所述聚合流表的深度与所选取的Hash值相对应。
优选地,所述报文内容为五元组。
优选地,所述轮询表包括成员计数器,根据成员计数器值选择对应负载均衡组的成员出口。
优选地,每当查询轮询表获取成员出口后,所述成员计数器值加1。
与现有技术相比,本发明的优点在于:本发明公开的一种基于轮询机制的负载均衡方法,实现简单,可以以较小的代价实现相对均匀的选路,且不会出现同一流的转发乱序,做到会话保持。
附图说明
图1是本发明一典型实施例提出的交换机的负载均衡成员端口组示意图;
图2是本发明一典型实施例提出的基于轮询机制的负载均衡方法逻辑示意图。
具体实施方式
鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。
本发明所揭示的一种基于轮询机制的负载均衡方法,是在静态哈希选路机制的基础上,增加轮询表和聚合流表,基于聚合流进行轮询选路,该方法具体包括:
设置Flex Hash模块,至少用于基于报文内容计算当前数据流的Hash值。为避免网络设备的内存产生巨大消耗,本发明技术方案没有记录整个流的五元组(这样需要消耗的存储器(memory)会非常巨大,硬件实现难度较大),而是通过设置的Flex Hash模块基于报文内容计算得到一个Hash值,用以表征数据流。为了予以区分以便更好地理解,本发明实施例中将Flex Hash模块计算得到的hash值称之为“Hash B值”,具有相同Hash B值的流,则被视为同一个流进行处理,Hash B值的取值范围越大,能够区分的流的粒度也就越大。计算Hash B值的报文内容可采用五元组<源IP、目的IP、四层协议类型、四层源端口、四层目的端口>实现。
设置负载均衡成员组表(Member Table),至少用于存储负载均衡成员组的成员,以用于基于静态Hash机制选择成员出口。Member Table包含多条条目(Entry),每一条Entry对应一个成员(Member)的转发出口,有几个成员出口即对应几条Entry,根据负载均衡组的基址(Base)和成员数量即可索引得到当前负载均衡组的成员对应的Entry。例如某个存储芯片一共支持256个负载均衡组,1K(1000)个负载均衡组成员Member(即Memory深度为1K),那么每一个负载均衡组可以定义自己有几个成员,在负载均衡组Member Table的表中基于当前负载均衡组给出的base,以及当前的成员member,可以索引到一个具体的Member信息,也就是这个Member Memory的一条Index,然后便可以读取该Index对应的成员出口。
设置轮询表(RR Table),至少用于存储负载均衡组中所有成员的轮询状态,该表记录基于轮询(RR)算法选择成员出口时的RR状态的指针。对于每一个到达的新流,为其选择当前轮询到的成员出口,当下一个新流来了之后,会依次选择下一个成员出口。
设置聚合流表(Flow Table),至少用于存储Hash B值以及对应的成员出口。聚合流表的每一条entry代表了一组在一定Hash算法下具有相同Hash值(即本实施例所述的hash B值)的流,流表的深度要和选取使用的HashB值相对应,用于记录已经建立的一条流所选中的成员出口。
当数据流到达交换机时,通过Flex Hash模块计算当前数据流的Hash B值;根据所述Hash B值查找聚合流表是否存在该记录,若存在,表明当前流已存在,获取该记录对应的成员出口并通过该成员出口转发当前数据流;若不存在,表明当前流是一条新流,查询轮询表获取成员出口,将该成员出口以及Hash B值写入聚合流表,并通过该成员出口转发当前数据流。
进一步地,为聚合流表设置老化机制Aging,用于老化聚合流表中建立的流表记录。每一个流的报文来了之后都会更新流表的状态Bit为非老化状态(Bit=1),而Aging机制会在一定的老化周期内清除流表的状态为老化状态(Bit=0)。并且,当扫到一条流表的状态Bit为0时,那么老化发生,该条流表被删除。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1是本发明一典型实施例提出的交换机的负载均衡成员端口组示意,在交换机中包括一个负载均衡组,该负载均衡组包含四个成员端口:a、b、c、d,x为交换机输入端口。图2是本发明一典型实施例提出的基于轮询机制的负载均衡方法逻辑示意图,现结合图1、图2对该负载均衡方法的核心思想进行阐述,其过程如下:
(1)初始状态,负载均衡组的四个成员端口皆为UP空闲状态;Flow Table为空,轮询表RR Table的成员计数器CurrentMember默认为0,负载均衡组表Member Table依次存储相应成员端口a、b、c、d的信息。
(2)端口x收到流F0的报文;
(3)FlexHash模块可基于报文五元组内容计算流F0的HashB值,并根据该HashB值(Hash Value B)读取Flow Table的对应表项,此时Flow Table表无记录,表明F0是一个新流。获取RR Table当前成员计数器的值CurrentMember==0,表示当前的流F0需要选择第0个成员端口作为出口,即端口a。将端口a以及F0的Hash B值对应写入Flow Table,并基于Group Base以及当前选择的成员端口a,索引Member Table获得成员端口a的具体信息,将报文从端口a转发出去,同时RR Table中CurrentMember值加1。
(4)当流F0的下一个报文到达,首先根据Hash B值读取Flow Table的对应表项,获取得到成员端口a,将报文从端口a转发出去。
(5)端口x收到收到另一个流F1的报文;
(6)Flex Hash模块计算流F1的Hash B值,并根据该Hash B值读取Flow Table的对应表项,Flow Table表未读取到对应记录,表明F1是一个新流。获取RR Table当前成员计数器的值CurrentMember==1,表示当前的流F1需要选择第1个成员端口作为出口,即端口b。将端口b以及F1的Hash B值对应写入Flow Table,并索引Member Table获得成员端口b的具体信息,将当前报文从端口b转发出去,同时RR Table中CurrentMember值加1。
(7)交换机收到的新流的建立过程以及流的转发处理如上所示。其中,Flow Table的老化机制Aging以一定的时间间隔对每一条Entry进行扫描,删除老化的流表记录。
为了保证芯片的效率和内存的开销,本发明公开的基于轮询机制的负载均衡方法采用了基于报文内容计算得到的Hash值来代表一条数据流,如果多条流对应了同一个hash值,则简化成同一条流进行处理,这样可以提高硬件的速度,减少开销。本发明技术方案相较于DLB方法实现简单,可以以较小的代价实现更好的负载均衡;相对于对每个报文进行轮询选路的RR机制,由于增加了流表设置,能够平滑地针对每一条新流用轮询机制选择一个成员,而一旦选择了成员之后,将记入FlowTable,对后续具有相同Hash B值的流起到会话保持的作用,不会出现同一个流被不同端口转发的乱序问题。以聚合流的粒度来选择成员,虽然相对来说粒度变粗了,但是当实际中流量模型越分散,其效果会越好,不会出现某些成员被选中的次数过多,某些成员被选中的次数过少的情况。
应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于轮询机制的负载均衡方法,其特征在于包括:
设置Flex Hash模块,至少用于基于报文内容计算当前数据流的Hash值;
设置负载均衡成员组表,至少用于存储负载均衡成员组的所有成员;
设置轮询表,至少用于存储所述负载均衡成员组的成员的轮询状态;
设置聚合流表,至少用于存储数据流的Hash值以及对应的成员出口;
当数据流到达交换机时,计算当前数据流的Hash值;根据该Hash值查找聚合流表是否存在该记录,若存在,获取该记录对应的成员出口并通过该成员出口转发所述数据流;若不存在,查询轮询表获取成员出口,将该成员出口以及Hash值写入聚合流表,并通过该成员出口转发所述数据流。
2.根据权利要求1所述的基于轮询机制的负载均衡方法,其特征在于:
所述聚合流表具有老化机制,在一定周期内将处于老化状态的流表删除。
3.根据权利要求2所述的基于轮询机制的负载均衡方法,其特征在于:所述老化机制的过程具体包括:
每个数据流的报文查到对应的流表后,更新流表为非老化状态;
按一定的老化周期扫描聚合流表中的每一条流表,将非老化状态的流表更新为老化状态,将已处于老化状态的流表删除。
4.根据权利要求1所述的基于轮询机制的负载均衡方法,其特征在于:
所述聚合流表的深度与所选取的Hash值相对应。
5.根据权利要求1所述的基于轮询机制的负载均衡方法,其特征在于:
所述轮询表包括成员计数器,根据成员计数器值选择对应负载均衡组的成员作为转发出口。
6.根据权利要求1所述的基于轮询机制的负载均衡方法,其特征在于:所述报文内容为五元组。
7.根据权利要求3所述的基于轮询机制的负载均衡方法,其特征在于:将所述老化状态标记为0,所述非老化状态标记为1。
8.根据权利要求5所述的基于轮询机制的负载均衡方法,其特征在于:
每当查询轮询表获取成员出口后,所述成员计数器值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404230.9A CN109286686B (zh) | 2018-11-23 | 2018-11-23 | 基于轮询机制的负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404230.9A CN109286686B (zh) | 2018-11-23 | 2018-11-23 | 基于轮询机制的负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109286686A true CN109286686A (zh) | 2019-01-29 |
CN109286686B CN109286686B (zh) | 2021-05-14 |
Family
ID=65172534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811404230.9A Active CN109286686B (zh) | 2018-11-23 | 2018-11-23 | 基于轮询机制的负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109286686B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109905320A (zh) * | 2019-02-25 | 2019-06-18 | 杭州迪普科技股份有限公司 | 一种聚合端口的报文分配方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102577280A (zh) * | 2011-11-28 | 2012-07-11 | 华为技术有限公司 | 发送报文的方法、装置和系统 |
CN103595567A (zh) * | 2013-11-13 | 2014-02-19 | 杭州华三通信技术有限公司 | 一种聚合链路中的端口映射方法及装置 |
CN104022952A (zh) * | 2014-06-03 | 2014-09-03 | 杭州华三通信技术有限公司 | 一种报文转发方法及装置 |
CN106341336A (zh) * | 2016-08-29 | 2017-01-18 | 锐捷网络股份有限公司 | 一种通过聚合口转发报文的方法和装置 |
CN106572025A (zh) * | 2016-10-19 | 2017-04-19 | 盛科网络(苏州)有限公司 | 一种实现网络流量负载均衡的方法和装置 |
US20170262767A1 (en) * | 2016-03-09 | 2017-09-14 | Verizon Digital Media Services Inc. | Methods and systems for advanced content cacheability determination |
CN107454008A (zh) * | 2017-08-22 | 2017-12-08 | 济南浪潮高新科技投资发展有限公司 | 一种千兆万兆以太互通系统及方法 |
CN107566267A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 一种基于聚合链路的报文转发方法和装置 |
CN108632159A (zh) * | 2017-03-16 | 2018-10-09 | 哈尔滨英赛克信息技术有限公司 | 一种基于预测的网络业务流量负载均衡方法 |
-
2018
- 2018-11-23 CN CN201811404230.9A patent/CN109286686B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102577280A (zh) * | 2011-11-28 | 2012-07-11 | 华为技术有限公司 | 发送报文的方法、装置和系统 |
CN103595567A (zh) * | 2013-11-13 | 2014-02-19 | 杭州华三通信技术有限公司 | 一种聚合链路中的端口映射方法及装置 |
CN104022952A (zh) * | 2014-06-03 | 2014-09-03 | 杭州华三通信技术有限公司 | 一种报文转发方法及装置 |
US20170262767A1 (en) * | 2016-03-09 | 2017-09-14 | Verizon Digital Media Services Inc. | Methods and systems for advanced content cacheability determination |
CN107566267A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 一种基于聚合链路的报文转发方法和装置 |
CN106341336A (zh) * | 2016-08-29 | 2017-01-18 | 锐捷网络股份有限公司 | 一种通过聚合口转发报文的方法和装置 |
CN106572025A (zh) * | 2016-10-19 | 2017-04-19 | 盛科网络(苏州)有限公司 | 一种实现网络流量负载均衡的方法和装置 |
CN108632159A (zh) * | 2017-03-16 | 2018-10-09 | 哈尔滨英赛克信息技术有限公司 | 一种基于预测的网络业务流量负载均衡方法 |
CN107454008A (zh) * | 2017-08-22 | 2017-12-08 | 济南浪潮高新科技投资发展有限公司 | 一种千兆万兆以太互通系统及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109905320A (zh) * | 2019-02-25 | 2019-06-18 | 杭州迪普科技股份有限公司 | 一种聚合端口的报文分配方法和装置 |
CN109905320B (zh) * | 2019-02-25 | 2021-04-27 | 杭州迪普科技股份有限公司 | 一种聚合端口的报文分配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109286686B (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101924695B (zh) | 用于网络连接的方法和系统 | |
US6535504B1 (en) | Link aggregation path selection method | |
CN107094115B (zh) | 一种基于sdn的蚁群优化负载均衡路由算法 | |
US5398012A (en) | Distributed processing of route selection across networks and subnetworks | |
CN109547343B (zh) | 一种流量调度方法及系统 | |
KR101502263B1 (ko) | 하이브리드 통신 네트워크들에 대한 어드레싱 방식 | |
CN108259328B (zh) | 报文转发方法及装置 | |
CN102098224B (zh) | 数据流负荷分担方法及装置 | |
CN109347623A (zh) | 一种链路负载均衡应用中进行会话保持的方法及装置 | |
Wang et al. | Implementation of multipath network virtualization with SDN and NFV | |
CN103634224B (zh) | 网络中数据传输的方法和系统 | |
CN102970242B (zh) | 一种实现负载均衡的方法 | |
Kumar et al. | SCalable object-tracking through unattended techniques (SCOUT) | |
CN109600313A (zh) | 报文转发方法及装置 | |
CN109962760A (zh) | 一种适于无线tdma自组网的业务调度方法 | |
CN109981768A (zh) | 分布式网络存储系统中的io多路径规划方法及设备 | |
CN107332943A (zh) | 一种报文转发方法及装置 | |
CN104852859A (zh) | 一种聚合接口业务处理方法和设备 | |
CN109286686A (zh) | 基于轮询机制的负载均衡方法 | |
CN106341336B (zh) | 一种通过聚合口转发报文的方法和装置 | |
CN108418752A (zh) | 一种聚合组的创建方法和装置 | |
CN103534996B (zh) | 实现负载均衡的方法及设备 | |
CN101599910A (zh) | 报文发送的方法及设备 | |
CN103457976A (zh) | 数据下载方法和系统 | |
CN102904803B (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |