一种基于Flow Director实现IPv4 GRE报文负载均衡的方法技术

技术编号:28300701 阅读:44 留言:0更新日期:2021-04-30 16:28
本发明专利技术提供了一种基于Flow Director实现IPv4 GRE报文负载均衡的方法,包括发送端发送报文和接收端收取报文两个部分。所述发送端发送报文部分包括如下步骤:发送端应用程序根据payload报文的类型,计算出hash值;将hash值写入Delivery Header IP报文头中的标识字段;将报文交给网卡并从队列发送出去。所述接收端收取报文部分包括如下部分:接收端应用程序需要初始化网卡的Flow Director功能,设置IP报文头中标识字段和硬件队列的映射关系。网卡接收到GRE报文后,根据映射关系,将数据报文送入指定的队列。应用程序可以从队列中收取报文,进一步处理。本发明专利技术可以充分利用网卡的多队列功能,提升数据报文的处理性能;同时保证了同一条数据流送入相同的队列进行处理和数据报文的有序处理。

【技术实现步骤摘要】
一种基于FlowDirector实现IPv4GRE报文负载均衡的方法
本专利技术涉及互联网领域,具体涉及一种基于FlowDirector实现IPv4GRE报文负载均衡的方法。
技术介绍
GRE(GenericRoutingEncapsulation,通用路由封装),是一个通用的路由封装协议,用于在任意的网络层之上封装另一个网络协议。GRE报文结构如图1所示。对于IPv4网络,DeliveryHeader包含以太帧头和IPv4报文头。网卡接收到IPv4数据报文后,会根据报文中的源IP、目的IP、源端口号、目的端口号、协议号5元组来进行RSS操作,同一条数据流RSS计算出的hash值相同,被网卡送入同一个队列进行处理,以此保障数据流的有序处理。对于DeliveryHeader为IPv4类型的GRE报文,即使payload中数据报文不同,但Deliveryheader中以太帧和IPv4报文头完全相同。因此即使网卡有多个硬件队列,数据流量也仅会送入一个队列进行处理。导致数据报文采用GRE封装后,不能充分发挥网卡的性能。Intel8259910G和IntelXL71040G类型网卡,提供了FlowDirector功能。该2类网卡可以根据数据报文头前64字节中的任意位置的字段进行匹配,可以将匹配的数据报文送入指定的硬件队列。
技术实现思路
本专利技术的目的在于根据DeliveryHeaderIPv4报文头中的16位标识字段来实现负载均衡。为实现上述目的,本专利技术提供的具体技术方案如下:一种基于FlowDirector实现IPv4GRE报文负载均衡的方法,其特征在于,包括发送端发送报文和接收端收取报文两个部分。所述发送端发送报文部分包括如下步骤:步骤1.1:发送端应用程序根据payload报文的类型,计算出hash值。步骤1.2:将hash值写入DeliveryHeaderIP报文头中的标识字段;步骤1.3:将报文交给网卡,网卡将报文从队列发送出去。所述步骤1具体包括:步骤1.1.1:payload报文即承载在GRE隧道上的用户报文,如果用户报文为IP报文,使用五元组进行hash,所述五元组包括源IP、源端口、协议、目的端口和目的IP;步骤1.1.2:使用对称KEY进行hash计算,以保证同一条流的上下行报文的hash值相同;步骤1.1.3:如果报文为非IP报文,hash值直接填充为0即可。Hash值的计算可以根据具体需求使用SMAC+DMAC、SIP+DIP、SIP等,只需保证接收端和发送短hash计算方式一致即可。所述接收端收取报文部分包括如下部分:步骤2.1:接收端应用程序初始化网卡的FlowDirector功能,步骤2.2:接收端应用程序设置FlowDirector取值在报文中的offset和length;步骤2.3:接收端应用程序设置FlowDirector获取的值与网卡硬件队列的映射关系,设置网卡硬件队列和应用程序各处理模块的映射关系;步骤2.4:网卡接收到GRE报文后,根据FlowDirector获取的值和网卡硬件队列的映射关系,将数据报文送入指定的队列;步骤2.5:映射在不同网卡硬件队列的接收端应用程序的各处理模块获取到所需流量,做进一步处理。所述IPv4网络中,传递头DeliveryHeader包含以太帧头和IPv4报文头。所述IPv4GRE报文头中的16位标识字段用以实现负载均衡。本专利技术提供的一种基于FlowDirector实现IPv4GRE报文负载均衡的方法应用于DeliveryHeader为IPv4类型的GRE报文,可以充分利用网卡的多队列功能,提升数据报文的处理性能;同时保证了同一条数据流送入相同的队列进行处理,保证了数据报文的有序处理。附图说明图1为GRE报文封装结构图;图2为IPv4报文头格式图;图3为发送端处理流程图;图4为接收端处理流程图。具体实施方式下面结合附图和实施例对本专利技术进行详细的描述,但并不以此作为对本申请保护范围的限定。通用路由封装GRE,是一个通用的路由封装协议,用于在任意的网络层之上封装另一个网络协议。GRE报文结构如图1所示。对于IPv4网络,DeliveryHeader包含以太帧头和IPv4报文头。基于FlowDirector实现IPv4GRE报文负载均衡的方法,包括发送端发送报文和接收端收取报文两个部分。如图3所示:所述发送端发送报文部分包括如下步骤:步骤1.1:发送端应用程序根据payload报文的类型,计算出hash值。步骤1.2:将hash值写入DeliveryHeaderIP报文头中的标识字段;步骤1.3:将报文交给网卡,网卡将报文从队列发送出去。所述步骤1具体包括:步骤1.1.1:payload报文即承载在GRE隧道上的用户报文,如果用户报文为IP报文,网卡接收到IPv4数据报文后,会根据报文中的源IP、目的IP、源端口号、目的端口号、协议号5元组来进行RSS操作,同一条数据流RSS计算出的hash值相同,被网卡送入同一个队列进行处理,以此保障数据流的有序处理。步骤1.1.2:使用对称KEY进行hash计算,以保证同一条流的上下行报文的hash值相同;步骤1.1.3:如果报文为非IP报文,hash值直接填充为0即可。Hash值的计算可以根据具体需求使用SMAC+DMAC、SIP+DIP、SIP等,只需保证接收端和发送短hash计算方式一致即可。如图4所示:所述接收端收取报文部分包括如下部分:步骤2.1:接收端应用程序初始化网卡的FlowDirector功能,步骤2.2:接收端应用程序设置FlowDirector取值在报文中的offset和length;步骤2.3:接收端应用程序设置FlowDirector获取的值与网卡硬件队列的映射关系,设置网卡硬件队列和应用程序各处理模块的映射关系;步骤2.4:网卡接收到GRE报文后,根据FlowDirector获取的值和网卡硬件队列的映射关系,将数据报文送入指定的队列;步骤2.5:映射在不同网卡硬件队列的接收端应用程序的各处理模块获取到所需流量,做进一步处理。所述IPv4网络中,传递头DeliveryHeader包含以太帧头和IPv4报文头。所述IPv4GRE报文头中的16位标识字段用以实现负载均衡。对于DeliveryHeader为IPv4类型的GRE报文,即使payload中数据报文不同,但Deliveryheader中以太帧和IPv4报文头完全相同。因此即使网卡有多个硬件队列,数据流量也仅会送入一个队列进行处理。导致数据报文采用GRE封装后,不能充分发挥网卡的性能。Intel8259910G和IntelXL71040G类本文档来自技高网...

【技术保护点】
1.一种基于Flow Director实现IPv4 GRE报文负载均衡的方法,其特征在于,包括发送端发送报文和接收端收取报文两个部分。/n

【技术特征摘要】
1.一种基于FlowDirector实现IPv4GRE报文负载均衡的方法,其特征在于,包括发送端发送报文和接收端收取报文两个部分。


2.根据权利要求1所述的基于FlowDirector实现IPv4GRE报文负载均衡的方法,其特征在于,所述发送端发送报文部分包括如下步骤:
步骤1.1:发送端应用程序根据payload报文的类型,计算出hash值。
步骤1.2:将hash值写入DeliveryHeaderIP报文头中的标识字段;
步骤1.3:将报文交给网卡,网卡将报文从队列发送出去。


3.根据权利要求1所述的基于FlowDirector实现IPv4GRE报文负载均衡的方法,其特征在于,所述步骤1具体包括:
步骤1.1.1:payload报文即承载在GRE隧道上的用户报文,如果用户报文为IP报文,使用五元组进行hash,所述五元组包括源IP、源端口、协议、目的端口和目的IP;
步骤1.1.2:使用对称KEY进行hash计算,以保证同一条流的上下行报文的hash值相同;
步骤1.1.3:如果报文为非IP报文,hash值直接填充为0即可。Hash值的计算可以根据具体需求使用SMAC+DMAC、SIP+DIP、SIP等,只需保证接收端和发送短has...

【专利技术属性】
技术研发人员:关洪涛谭航张玉军胡德强王阳刘军凯
申请(专利权)人:江苏省未来网络创新研究院
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1