CN103139093B - 基于fpga的高速网络数据流负载均衡调度方法 - Google Patents
基于fpga的高速网络数据流负载均衡调度方法 Download PDFInfo
- Publication number
- CN103139093B CN103139093B CN201310056497.4A CN201310056497A CN103139093B CN 103139093 B CN103139093 B CN 103139093B CN 201310056497 A CN201310056497 A CN 201310056497A CN 103139093 B CN103139093 B CN 103139093B
- Authority
- CN
- China
- Prior art keywords
- port
- packet
- address
- output port
- addressable memory
- 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.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于FPGA的高速网络数据流负载均衡调度方法,该方法充分发挥FPGA并行计算的优势,前端并发执行哈希运算和根据队列组的拥塞程度依概率来选择输出端口,并采取流映射端口优先的策略;后端根据输出端口并发将数据包从相应PHY端口发出,将数据包相应信息写入PHY端口对应FIFO并按周期反馈当前最大剩余数据量,以及统计并反馈本周期内的最小流量端口同时基于速率反馈动态调整下一次统计的周期,使其能适应突发流量,并在保证流粒度的前提下,实现高速网络数据流的瞬时均衡。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种基于FPGA的高速网络数据流负载均衡调度方法。
背景技术
目前现有网络的各个核心部分随着业务量的提高以及访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做硬件升级,这样将造成现有资源的巨大浪费,针对这种情况,一些负载均衡方法应运而生。
当网络应用的访问量不断增长,单个处理单元无法满足负载需求或者网络应用流量将要出现瓶颈时,负载均衡才会起到作用,其将单个重负载节点的计算分担到多台低速节点上做并行处理,使得系统处理能力得到大幅度提高。为增加网络吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性,选择合理的负载均衡方法至关重要。
目前常用的负载均衡方法中轮循调度、加权轮循调度、地址散列调度等为静态负载均衡方法,另外最小连接调度、最小数据包均衡、最快响应时间均衡等为动态负载均衡方法。然而单一的负载均衡方法很难满足网络应用多样性与复杂性要求,另外以上负载均衡方法都没有考虑各个子通道的当前流量负载情况,故而导致在各子通道中流量均衡度不高;此外现有的负载均衡方法中鲜有考虑流粒度(属于同一条TCP流的数据包必须被调度到相同的子通道中)问题,这在很大程度上影响了入侵检测、协议还原等对数据流的完整性需求。
FPGA(FieldProgrammableGateArray,现场可编程门阵列)不仅解决了定制电路的不足,也结合了软件与硬件各自的优点,和纯软件实现速度相比得到了极大的提高,和纯硬件实现相比又有了更大的灵活性。除此之外,FPGA有丰富的片内资源,减少了外围电路设计,提高了系统的稳定度。
发明内容
本发明所要解决的技术问题是现有的负载均衡方法均衡度不高的不足,提供一种基于FPGA的高速网络数据流负载均衡调度方法。
为解决上述问题,本发明是通过以下方案实现的:
基于FPGA的高速网络数据流负载均衡调度方法,包括如下步骤:
S1.数据包首部信息提取,FPGA采用TEMAC(TriModeEthernetMAC,三态以太网MAC)核将物理层比特流封装成MAC帧,然后再相应提取源IP地址、目的IP地址、源端口、目的端口、复位RST、同步SYN和终止FIN;
S2.哈希运算,对提取的源IP地址、目的IP地址、源端口和目的端口进行四元组哈希运算,并将哈希结果对4求模取余数;
S3.流映射表管理,包括流映射表的写操作管理、读操作管理和清除操作管理;即
S31.判断TCP新建连接,若SYN=1,则根据在本周期中队列组中最大剩余数据量,判断是否存在队列拥塞,若最大剩余数据量没有超过一定门限值则视为没有拥塞,则不做任何处理;若最大剩余量超过该门限且存在某种梯度时视为轻度、中度与重度拥塞,则分别按某种概率增长方式依概率选中最小流量端口作为当前数据包的输出端口,并标记流映射端口有效,同时将该数据包对应的源IP地址和目的IP地址写入CAM(ContentAddressableMemory,内容可寻址存储器)中,并将该CAM地址作为RAM(RandomAccessMemory,随机存储器)地址,将该输出端口值存入RAM中,以备后续同一条流的数据包访问;若SYN=0,则执行S32;
S32.判断TCP复位,若RST=1,则将数据包对应的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,则将该CAM地址写入指定FIFO(FirstInputFirstOutput,先入先出队列),以示该CAM地址单元已被清除,可以为S31中新建连接提供备用,尽量解决CAM不够用情况,若匹配CAM不命中,则不做任何处理;若RST=0,执行S33;
S33.将数据包相应的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,则将该命中的CAM地址作为地址访问RAM,得到该数据包的输出端口,并标记流映射端口有效,再判断TCP终止,若FIN=1,则再将该CAM地址写入指定FIFO,以示该CAM地址单元已被清除,可以为S31中新建连接提供备用,尽量解决CAM不够用情况,若FIN=0,则表示该数据包为普通数据包,跳出此步;若匹配CAM不命中,则不做任何处理;
S4.输出端口选择,根据流映射表与哈希值来选择当前数据包的输出端口,即在流映射端口有效时优先选择流映射端口为输出端口,在流映射端口无效时选择哈希值为输出端口;
S5.数据输入输出管理,包含将数据包写入至缓冲池与读取到对应PHY(Physicallayer,物理层)端口;
S51.从缓冲器接收数据包,并传递该数据包长度信息,另外根据输出端口修改相应指定字段,并将该数据包存储至缓冲池中,同时记录一次数据包传输的首地址;
S52.根据上述记录中的首地址,读取缓冲池中的数据包,根据修改的输出端口字段发送至相应输出队列,使之从该端口发出;
S6.队列分发与存储管理,将数据包相应信息分发存储至PHY端口对应FIFO中,并经过一定周期后反馈当前队列组最大剩余数据量;
S7.流量统计与反馈,在一定周期内统计并反馈当前最小流量端口,并基于速率反馈动态调整下一次统计的周期。
上述方案中,步骤S2与S3并发执行,此外步骤S5、S6与S7也并发执行。
上述方案中,步骤S2中所述哈希运算最好为移位异或哈希运算。
上述方案中,为了加快数据包处理速率,步骤S5中的数据包的写入与读取最好以块为单位,其中一个块中有多个数据包。
上述方案中,步骤S7中将前一个周期中端口速率以及当前端口速率按一定关联因子计算出速率,进而依据当前端口流量得出下一个统计周期值。
本发明的有益效果在于:通过本发明可以利用FPGA实现高速网络数据流负载均衡调度,且该调度方法能适应突发流量,并在保证流粒度的前提下,实现高速网络数据流的瞬时均衡。
附图说明
图1是本发明优选实施例的负载均衡调度方法总体框架示意图;
图2是本发明优选实施例的负载均衡调度方法流程图;
图3是本发明优选实施例的流映射管理流程图。
具体实施方式
下面结合附图,给出本发明的具体实施例。需要说明的是:实施例中的参数并不影响本发明的一般性。
参见图1与图2,其中图1是本发明的总体框架示意图,图2是本发明的整体流程图。
本发明具体设计是:首先提取数据包的首部信息,对其首部信息并发执行哈希运算和流映射管理,同时将数据包存储到一个数据缓冲器中,若流映射表端口有效则优先选择流映射端口为输出端口,否则以哈希值作为输出端口;根据输出端口并发执行将数据包从相应端口发出,保证了数据包先后顺序以及流的相关性,将数据包长度信息写入端口对应的FIFO,以及周期性访问该队列组来统计在该周期中最小流量端口并将其反馈,同时基于速率反馈动态调整下一次周期的大小,使其适应网络突发流量。其中每一个先入先出队列对应一个千兆以太网(GBE,GigaBitEthernet)端口。上述设计充分发挥FPGA并行计算优势,提高网络吞吐量,实现高速网络数据流瞬时动态均衡。
结合图2、图3对基于FPGA的高速网络数据流负载均衡调度过程做进一步说明。具体包含如下步骤:
S1.数据包首部信息提取,FPGA采用TEMAC核将物理层比特流封装成MAC帧,然后再相应提取源IP地址、目的IP地址、源端口、目的端口、复位RST、同步SYN、终止FIN;
S2.哈希运算,对提取的源IP地址、目的IP地址、源端口、目的端口四元组哈希运算,将哈希结果对4求模取余数。在S2中的哈希运算采用移位异或哈希运算,提高了哈希值的均衡性,由于移位异或哈希为本领域熟知技术,在这里不再详细描述;
需要指出的是:S2与后续S3为并发执行,为描述方便记为S2与S3。
S3.流映射管理,该过程包括流映射表写操作管理、读操作管理和清除操作管理,参见图3,具体包括如下步骤:
S31.判断TCP新建连接,若SYN=1,根据在本周期中队列组中最大剩余数据量,判断是否存在队列拥塞,若最大剩余数据量,以下简称最大剩余量,小于初始值的70%时视为没有拥塞,则不做任何处理;若最大剩余量超过70%但小于等于80%时视为轻度拥塞,则以1/4为概率选中最小流量端口作为当前数据包的输出端口,并标记流映射端口有效,同时将该数据包对应源IP地址、目的IP地址写入CAM中,并将该CAM地址作为RAM地址,将该输出端口值存入RAM中,以备后续同一条流的数据包访问;若最大剩余量超过80%但小于等于90%时视为中度拥塞,则以1/2为概率选中最小流量端口作为当前数据包的输出端口,后续操作与上类同;若最大剩余量超过90%时视为重度拥塞,则将最小流量端口作为当前数据包的输出端口,即以概率为1选中最小流量端口,后续操作与上类同,不再赘述;若SYN=0,则执行S32;
S32.判断TCP复位,若RST=1,则该数据包相应源IP地址、目的IP地址匹配CAM,若命中,则将该CAM地址写入指定FIFO,以示该CAM地址单元已被清除,可以为S31中新建连接提供备用,尽量解决CAM不够用情况,这里不再赘述,若不命中,则不做任何处理;若RST=0,执行S33;
S33.将数据包相应源IP地址、目的IP地址匹配CAM,若命中,则将该命中的CAM地址作为地址访问RAM,得到该数据包的输出端口,并标记流映射端口有效,再判断TCP终止,若FIN=1,则再将该CAM地址写入指定FIFO,以示该CAM地址单元已被清除,可以为S31中新建连接提供备用,尽量解决CAM不够用情况,若FIN=0,则表示该数据包为普通数据包,跳出此步;若匹配CAM不命中,则不做任何处理;
S4.选择输出端口,选择器根据流映射端口有效优先选择流映射端口为该数据包的输出端口,否则选择哈希值为其输出端口,然后将该输出端口转发出去;
S5.数据输入输出管理,包含将数据包写入至缓冲池与读取到对应PHY端口,具体包括如下步骤:
S51.从缓冲器接收数据包,并传递该数据包长度信息,另外根据输出端口修改相应指定字段,并将该数据包存储至缓冲池中,同时记录一次数据包传输的首地址;
S52.根据上述记录中的首地址,读取缓冲池中的数据包,根据修改的输出端口字段发送至相应输出队列,使之从该端口发出;
在步骤S5中的数据包的写入与读取可以以单个数据包为单位,但为了能够加快数据包处理速率,在本发明优选实施例中,步骤S5中的数据包写入与读取以块为单位,其中一个块中有多个数据包。
需要指出的是:步骤S5与后续步骤S6和S7为并发执行,为描述方便记为S5、S6与S7。
S6.队列分发与存储管理,将接收到的数据包长度信息根据输出端口将其分发存储至PHY端口对应FIFO中,并经过一定周期后反馈当前队列组最大剩余数据量;
S7.流量统计与反馈,在一定周期内统计并反馈当前最小流量端口,并基于速率反馈动态调整下一次统计的周期,采用将前一个周期中端口速率以及当前端口速率按一定关联因子计算出速率,进而依据当前端口流量得出下一个统计周期值,使其满足突发流量的处理需求。初始时设置统计周期为2s。
以上内容是结合具体的优选实施方式对本发明的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应该视为属于本发明的权利要求书的保护范围。
Claims (5)
1.基于FPGA的高速网络数据流负载均衡调度方法,其特征是包括如下步骤:
S1.数据包首部信息提取,FPGA采用TEMAC核将物理层比特流封装成MAC帧,然后再相应提取源IP地址、目的IP地址、源端口、目的端口、复位RST、同步SYN和终止FIN;
S2.哈希运算,对提取的源IP地址、目的IP地址、源端口和目的端口进行四元组哈希运算,并将哈希结果对4求模取余数;
S3.流映射表管理,包括流映射表的写操作管理、读操作管理和清除操作管理;即
S31.判断TCP新建连接,若SYN=1,则根据在本周期中队列组中最大剩余数据量,判断是否存在队列拥塞,若最大剩余数据量没有超过一定门限值则视为没有拥塞,则不做任何处理;若最大剩余量超过上述门限值且存在某种梯度时视为轻度、中度与重度拥塞,则分别按某种概率增长方式依概率选中最小流量端口作为当前数据包的输出端口,并标记流映射端口有效,同时将该数据包对应的源IP地址和目的IP地址写入内容可寻址存储器中,并将该内容可寻址存储器地址作为RAM地址,将该输出端口值存入RAM中,以备后续同一条流的数据包访问;若SYN=0,则执行S32;
S32.判断TCP复位,若RST=1,则将数据包对应的源IP地址和目的IP地址匹配内容可寻址存储器,若匹配内容可寻址存储器命中,则将该内容可寻址存储器地址写入指定FIFO,以示该内容可寻址存储器地址单元已被清除,若匹配内容可寻址存储器不命中,则不做任何处理;若RST=0,执行S33;
S33.将数据包相应的源IP地址和目的IP地址匹配内容可寻址存储器,若匹配内容可寻址存储器命中,则将该命中的内容可寻址存储器地址作为地址访问RAM,得到该数据包的输出端口,并标记流映射端口有效,再判断TCP终止,若FIN=1,则再将该内容可寻址存储器地址写入指定FIFO,以示该内容可寻址存储器地址单元已被清除,若FIN=0,则表示该数据包为普通数据包,跳出此步;若匹配内容可寻址存储器不命中,则不做任何处理;
S4.输出端口选择,根据流映射表与哈希值来选择当前数据包的输出端口,即在流映射端口有效时优先选择流映射端口为输出端口,在流映射端口无效时选择哈希值为输出端口;
S5.数据输入输出管理,包含将数据包写入至缓冲池与读取到对应PHY端口;即
S51.从缓冲器接收数据包,并传递该数据包长度信息,另外根据输出端口修改相应指定字段,并将该数据包存储至缓冲池中,同时记录一次数据包传输的首地址;
S52.根据上述记录中的首地址,读取缓冲池中的数据包,根据修改的输出端口字段发送至相应输出队列,使之从该输出端口发出;
S6.队列分发与存储管理,将数据包相应信息分发存储至PHY端口对应FIFO中,并经过一定周期后反馈当前队列组最大剩余数据量;
S7.流量统计与反馈,在一定周期内统计并反馈当前最小流量端口,并基于速率反馈动态调整下一次统计的周期。
2.根据权利要求1所述的基于FPGA的高速网络数据流负载均衡调度方法,其特征是,
步骤S2与S3并发执行,此外步骤S5、S6与S7也并发执行。
3.根据权利要求1所述的基于FPGA的高速网络数据流负载均衡调度方法,其特征是,
步骤S2中所述哈希运算为移位异或哈希运算。
4.根据权利要求1所述的基于FPGA的高速网络数据流负载均衡调度方法,其特征是,
步骤S5中的数据包的写入与读取以块为单位,其中一个块中有多个数据包。
5.根据权利要求1所述的基于FPGA的高速网络数据流负载均衡调度方法,其特征是,
步骤S7中将前一个周期中端口速率以及当前端口速率按一定关联因子计算出速率,进而依据当前端口流量得出下一个统计周期值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310056497.4A CN103139093B (zh) | 2013-02-22 | 2013-02-22 | 基于fpga的高速网络数据流负载均衡调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310056497.4A CN103139093B (zh) | 2013-02-22 | 2013-02-22 | 基于fpga的高速网络数据流负载均衡调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103139093A CN103139093A (zh) | 2013-06-05 |
CN103139093B true CN103139093B (zh) | 2016-01-27 |
Family
ID=48498419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310056497.4A Expired - Fee Related CN103139093B (zh) | 2013-02-22 | 2013-02-22 | 基于fpga的高速网络数据流负载均衡调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103139093B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401799A (zh) * | 2013-07-30 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 负载均衡的实现方法和装置 |
CN104104611B (zh) * | 2014-07-10 | 2017-12-12 | 浪潮(北京)电子信息产业有限公司 | 一种实现集群负载均衡调度的方法及装置 |
CN105893200A (zh) * | 2014-10-21 | 2016-08-24 | 北京京航计算通讯研究所 | 一种基于模型替换的FPGA中blackbox的等效性检查方法 |
CN106681687B (zh) * | 2016-12-30 | 2018-08-07 | 周阳 | 一种fifo数据均衡输出方法及其输出装置 |
CN108322402B (zh) * | 2017-01-18 | 2022-05-10 | 华为技术有限公司 | 报文处理方法、设备及系统 |
CN106850453B (zh) * | 2017-02-24 | 2020-12-29 | 台州市吉吉知识产权运营有限公司 | 一种确定智能终端数据发送时间的方法、装置及系统 |
CN108696447A (zh) * | 2018-08-03 | 2018-10-23 | 中国航空工业集团公司雷华电子技术研究所 | 一种自适应调节dsp间数据流负载的方法 |
CN112559397A (zh) * | 2019-09-26 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 一种装置和方法 |
CN112995245B (zh) * | 2019-12-12 | 2023-04-18 | 郑州芯兰德网络科技有限公司 | 一种基于fpga的可配置负载均衡系统与方法 |
CN111526089B (zh) * | 2020-04-14 | 2021-08-17 | 北京交通大学 | 一种基于变长粒度的数据融合传输与调度的装置 |
CN114710811B (zh) * | 2022-04-07 | 2024-10-01 | 中国联合网络通信集团有限公司 | 数据流转发方法、装置、电子设备及存储介质 |
CN116996446B (zh) * | 2023-07-26 | 2024-08-02 | 中科驭数(北京)科技有限公司 | 哈希负载均衡方法、装置、设备及介质 |
CN118316603B (zh) * | 2024-06-05 | 2024-10-18 | 南京信息工程大学 | 一种基于fpga的加密流量识别与特征提取方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977162A (zh) * | 2010-12-03 | 2011-02-16 | 电子科技大学 | 一种高速网络的负载均衡方法 |
CN102075423A (zh) * | 2011-01-10 | 2011-05-25 | 中国人民解放军国防科学技术大学 | 基于硬件多级表的输出流量控制方法 |
-
2013
- 2013-02-22 CN CN201310056497.4A patent/CN103139093B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977162A (zh) * | 2010-12-03 | 2011-02-16 | 电子科技大学 | 一种高速网络的负载均衡方法 |
CN102075423A (zh) * | 2011-01-10 | 2011-05-25 | 中国人民解放军国防科学技术大学 | 基于硬件多级表的输出流量控制方法 |
Non-Patent Citations (1)
Title |
---|
面向并行网络流量分类的负载均衡算法;李国平等;《计算机工程与设计》;20121231;第33卷(第12期);4427-4431 * |
Also Published As
Publication number | Publication date |
---|---|
CN103139093A (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103139093B (zh) | 基于fpga的高速网络数据流负载均衡调度方法 | |
US10944660B2 (en) | Managing congestion in a network | |
CN103117948B (zh) | 基于fpga的分级并行高速网络tcp流重组方法 | |
CN104954247B (zh) | 用于数据中心覆盖网络的主机网络加速器 | |
CN109479032B (zh) | 网络设备中的拥塞避免 | |
CN104348740B (zh) | 数据包处理方法和系统 | |
CN101977162B (zh) | 一种高速网络的负载均衡方法 | |
CN104954253B (zh) | 用于数据中心覆盖网络的基于PCIe的主机网络加速器(HNA) | |
CN108476177A (zh) | 用于处理功能可扩展性的数据平面 | |
US20070053294A1 (en) | Network load balancing apparatus, systems, and methods | |
US9900090B1 (en) | Inter-packet interval prediction learning algorithm | |
CN104954252B (zh) | 在高性能、可扩展和无掉话的数据中心交换结构内的流控制 | |
CN101136854B (zh) | 一种实现数据包线速处理的方法和装置 | |
CN105915462B (zh) | 一种面向tcp会话的对称性rss电路 | |
WO2021066893A1 (en) | Multi-path packet descriptor delivery scheme | |
US10419965B1 (en) | Distributed meters and statistical meters | |
CN107659515A (zh) | 报文处理方法、装置、报文处理芯片及服务器 | |
CN103281252A (zh) | 一种基于多路径传输的报文流量控制方法和装置 | |
US20120307641A1 (en) | Dynamic Flow Segregation for Optimal Load Balancing Among Ports in an Etherchannel Group | |
CN101394362A (zh) | 基于流分片的对多核网络处理器进行负载均衡的方法 | |
WO2016019554A1 (zh) | 一种队列管理的方法和装置 | |
CN105049368A (zh) | 一种混合网络下基于优先权的负载均衡算法 | |
CN102882809B (zh) | 一种基于报文缓存的网络限速方法及装置 | |
Hu et al. | Load balancing with multi-level signals for lossless datacenter networks | |
US9344384B2 (en) | Inter-packet interval prediction operating algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160127 |
|
CF01 | Termination of patent right due to non-payment of annual fee |