专利转让平台_买专利_卖专利_中国高校专利技术交易-买卖发明专利上知查网

全部分类
全部分类
基于FPGA的高速网络数据流负载均衡调度方法

基于FPGA的高速网络数据流负载均衡调度方法

IPC分类号 : H04L12/803

申请号
CN201310056497.4
可选规格
  • 专利类型: 发明专利
  • 法律状态: 有权
  • 申请日: 2013-02-22
  • 公开号: CN103139093A
  • 公开日: 2013-06-05
  • 主分类号: H04L12/803
  • 专利权人: 桂林电子科技大学

专利摘要

本发明公开一种基于FPGA的高速网络数据流负载均衡调度方法,该方法充分发挥FPGA并行计算的优势,前端并发执行哈希运算和根据队列组的拥塞程度依概率来选择输出端口,并采取流映射端口优先的策略;后端根据输出端口并发将数据包从相应PHY端口发出,将数据包相应信息写入PHY端口对应FIFO并按周期反馈当前最大剩余数据量,以及统计并反馈本周期内的最小流量端口同时基于速率反馈动态调整下一次统计的周期,使其能适应突发流量,并在保证流粒度的前提下,实现高速网络数据流的瞬时均衡。

权利要求

1.基于FPGA的高速网络数据流负载均衡调度方法,其特征是包括如下步骤:

S1.数据包首部信息提取,FPGA采用TEMAC核将物理层比特流封装成MAC帧,然后再相应提取源IP地址、目的IP地址、源端口、目的端口、复位RST、同步SYN和终止FIN;

S2.哈希运算,对提取的源IP地址、目的IP地址、源端口和目的端口进行四元组哈希运算,并将哈希结果对4求模取余数;

S3.流映射表管理,包括流映射表的写操作管理、读操作管理和清除操作管理;即

S31.判断TCP新建连接,若SYN=1,则根据在本周期中队列组中最大剩余数据量,判断是否存在队列拥塞,若最大剩余数据量没有超过一定门限值则视为没有拥塞,则不做任何处理;若最大剩余量超过该门限且存在某种梯度时视为轻度、中度与重度拥塞,则分别按某种概率增长方式依概率选中最小流量端口作为当前数据包的输出端口,并标记流映射端口有效,同时将该数据包对应的源IP地址和目的IP地址写入CAM中,并将该CAM地址作为RAM地址,将该输出端口值存入RAM中,以备后续同一条流的数据包访问;若SYN=0,则执行S32;

S32.判断TCP复位,若RST=1,则将数据包对应的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,则将该CAM地址写入指定FIFO,以示该CAM地址单元已被清除,若匹配CAM不命中,则不做任何处理;若RST=0,执行S33;

S33.将数据包相应的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,则将该命中的CAM地址作为地址访问RAM,得到该数据包的输出端口,并标记流映射端口有效,再判断TCP终止,若FIN=1,则再将该CAM地址写入指定FIFO,以示该CAM地址单元已被清除,若FIN=0,则表示该数据包为普通数据包,跳出此步;若匹配CAM不命中,则不做任何处理;

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中将前一个周期中端口速率以及当前端口速率按一定关联因子计算出速率,进而依据当前端口流量得出下一个统计周期值。

说明书

技术领域

本发明涉及互联网技术领域,具体涉及一种基于FPGA的高速网络数据流负载均衡调度方法。

背景技术

目前现有网络的各个核心部分随着业务量的提高以及访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做硬件升级,这样将造成现有资源的巨大浪费,针对这种情况,一些负载均衡方法应运而生。

当网络应用的访问量不断增长,单个处理单元无法满足负载需求或者网络应用流量将要出现瓶颈时,负载均衡才会起到作用,其将单个重负载节点的计算分担到多台低速节点上做并行处理,使得系统处理能力得到大幅度提高。为增加网络吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性,选择合理的负载均衡方法至关重要。

目前常用的负载均衡方法中轮循调度、加权轮循调度、地址散列调度等为静态负载均衡方法,另外最小连接调度、最小数据包均衡、最快响应时间均衡等为动态负载均衡方法。然而单一的负载均衡方法很难满足网络应用多样性与复杂性要求,另外以上负载均衡方法都没有考虑各个子通道的当前流量负载情况,故而导致在各子通道中流量均衡度不高;此外现有的负载均衡方法中鲜有考虑流粒度(属于同一条TCP流的数据包必须被调度到相同的子通道中)问题,这在很大程度上影响了入侵检测、协议还原等对数据流的完整性需求。

FPGA(Field Programmable Gate Array,现场可编程门阵列)不仅解决了定制电路的不足,也结合了软件与硬件各自的优点,和纯软件实现速度相比得到了极大的提高,和纯硬件实现相比又有了更大的灵活性。除此之外,FPGA有丰富的片内资源,减少了外围电路设计,提高了系统的稳定度。

发明内容

本发明所要解决的技术问题是现有的负载均衡方法均衡度不高的不足,提供一种基于FPGA的高速网络数据流负载均衡调度方法。

为解决上述问题,本发明是通过以下方案实现的:

基于FPGA的高速网络数据流负载均衡调度方法,包括如下步骤:

S1.数据包首部信息提取,FPGA采用TEMAC(TriMode Ethernet MAC,三态以太网MAC)核将物理层比特流封装成MAC帧,然后再相应提取源IP地址、目的IP地址、源端口、目的端口、复位RST、同步SYN和终止FIN;

S2.哈希运算,对提取的源IP地址、目的IP地址、源端口和目的端口进行四元组哈希运算,并将哈希结果对4求模取余数;

S3.流映射表管理,包括流映射表的写操作管理、读操作管理和清除操作管理;即

S31.判断TCP新建连接,若SYN=1,则根据在本周期中队列组中最大剩余数据量,判断是否存在队列拥塞,若最大剩余数据量没有超过一定门限值则视为没有拥塞,则不做任何处理;若最大剩余量超过该门限且存在某种梯度时视为轻度、中度与重度拥塞,则分别按某种概率增长方式依概率选中最小流量端口作为当前数据包的输出端口,并标记流映射端口有效,同时将该数据包对应的源IP地址和目的IP地址写入CAM(Content Addressable Memory,内容可寻址存储器)中,并将该CAM地址作为RAM(Random Access Memory,随机存储器)地址,将该输出端口值存入RAM中,以备后续同一条流的数据包访问;若SYN=0,则执行S32;

S32.判断TCP复位,若RST=1,则将数据包对应的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,则将该CAM地址写入指定FIFO(First Input First Output,先入先出队列),以示该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(Physical layer,物理层)端口;

S51.从缓冲器接收数据包,并传递该数据包长度信息,另外根据输出端口修改相应指定字段,并将该数据包存储至缓冲池中,同时记录一次数据包传输的首地址;

S52.根据上述记录中的首地址,读取缓冲池中的数据包,根据修改的输出端口字段发送至相应输出队列,使之从该端口发出;

S6.队列分发与存储管理,将数据包相应信息分发存储至PHY端口对应FIFO中,并经过一定周期后反馈当前队列组最大剩余数据量;

S7.流量统计与反馈,在一定周期内统计并反馈当前最小流量端口,并基于速率反馈动态调整下一次统计的周期。

上述方案中,步骤S2与S3并发执行,此外步骤S5、S6与S7也并发执行。

上述方案中,步骤S2中所述哈希运算最好为移位异或哈希运算。

上述方案中,为了加快数据包处理速率,步骤S5中的数据包的写入与读取最好以块为单位,其中一个块中有多个数据包。

上述方案中,步骤S7中将前一个周期中端口速率以及当前端口速率按一定关联因子计算出速率,进而依据当前端口流量得出下一个统计周期值。

本发明的有益效果在于:通过本发明可以利用FPGA实现高速网络数据流负载均衡调度,且该调度方法能适应突发流量,并在保证流粒度的前提下,实现高速网络数据流的瞬时均衡。

附图说明

图1是本发明优选实施例的负载均衡调度方法总体框架示意图;

图2是本发明优选实施例的负载均衡调度方法流程图;

图3是本发明优选实施例的流映射管理流程图。

具体实施方式

下面结合附图,给出本发明的具体实施例。需要说明的是:实施例中的参数并不影响本发明的一般性。

参见图1与图2,其中图1是本发明的总体框架示意图,图2是本发明的整体流程图。

本发明具体设计是:首先提取数据包的首部信息,对其首部信息并发执行哈希运算和流映射管理,同时将数据包存储到一个数据缓冲器中,若流映射表端口有效则优先选择流映射端口为输出端口,否则以哈希值作为输出端口;根据输出端口并发执行将数据包从相应端口发出,保证了数据包先后顺序以及流的相关性,将数据包长度信息写入端口对应的FIFO,以及周期性访问该队列组来统计在该周期中最小流量端口并将其反馈,同时基于速率反馈动态调整下一次周期的大小,使其适应网络突发流量。其中每一个先入先出队列对应一个千兆以太网(GBE,Giga Bit Ethernet)端口。上述设计充分发挥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。

以上内容是结合具体的优选实施方式对本发明的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应该视为属于本发明的权利要求书的保护范围。

基于FPGA的高速网络数据流负载均衡调度方法专利购买费用说明

专利买卖交易资料

Q:办理专利转让的流程及所需资料

A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。

1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。

2:按规定缴纳著录项目变更手续费。

3:同时提交相关证明文件原件。

4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。

Q:专利著录项目变更费用如何缴交

A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式

Q:专利转让变更,多久能出结果

A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。

动态评分

0.0

没有评分数据
没有评价数据
×

打开微信,点击底部的“发现”

使用“扫一扫”即可将网页分享至朋友圈

×
复制
用户中心
我的足迹
我的收藏

您的购物车还是空的,您可以

  • 微信公众号

    微信公众号
在线留言
返回顶部