一种用于智能网卡的流量负载均衡方法

文档序号:7857634阅读:176来源:国知局
专利名称:一种用于智能网卡的流量负载均衡方法
技术领域
本发明涉及计算机领域,尤其涉及一种用于智能网卡的流量负载均衡方法。
背景技术
目前,随着信息技术和网络应用以几何性和爆炸性的速度 急剧发展,网络分析的重要性越来越明显。而同时,多核服务器的应用也越来越广泛。传统网络分析设备一般由多核X86服务器及其上运行的相应软件组成。传统的发挥多核处理器优势的软件架构为,服务器网卡收到的所有包根据IP地址分流,均匀分为多条流,只考虑源目的地址,不考虑数据包的业务类型。而网络分析软件起多条线程,每条线程地位平等,处理的业务完全相同,接收一条数据包流进行处理。传统的做法虽然发挥了服务器多核处理器的并行处理能力,但是每条线程必须具备全功能,处理全业务。在今后网络应用越来越丰富,网络环境越来越复杂的情况下,每扩展对ー种业务的支持,所有线程都会同时加重ー层负担。所以这种软件架构下的线程负担过重,无法实现轻量线程,要发挥它的性能最多只能开和服务器核数相同的线程数,无法实现轻松的功能扩展。浪费过多服务器处理器性能资源,在网络流量较大的情况下容易出现丢包现象。

发明内容
本发明针对根据IP包源目的地址进行平均分流,把全业务数据包平均分配到多核服务器各个线程上处理,导致浪费服务器处理器性能资源,无法实现轻量级线程,功能扩展麻烦,应用负担过重的问题,提出一种用于智能网卡的流量负载均衡方法。该方法基于智能网卡技术,智能网卡采用多核网络处理器,处理性能高,软件开发配置灵活,可以充分根据使用者的要求开发。在该方法中智能网卡本身分为网络接ロ模块、分流模块、数据处理模块、DMA模块,充分发挥了智能网卡软件功能強大,硬件资源丰富的优势。本发明的技术方案是
智能网卡将收到的网络流量根据用户配置的不同分流方式,包括接收数据包中五元组的任意组合、协议、UDP载荷的动态字段,送到分流控制模块进行分流,计算出分流号,送到接插网卡的服务器上的对应处理程序进行处理。本发明所述方法具体包含如下步骤
1)智能网卡加载驱动,为每个上层应用或应用的线程分配独立的收包缓存,包括收包缓存的首地址、一套读写指针,都配置到网卡相应的寄存器中;同时为每个上层应用或应用的线程分配相应的DMA资源;
2)根据每个应用或线程的需求,在后台服务器端配置相应的分流算法,相同分流算法的应用或线程组成ー个分流组,同一个分流组之间流量均衡分配;各分流算法配置有查询匹配条件、查询终结条件和优先级;3)智能网卡收到数据包后,在分流控制模块中,根据分流算法的条件来过滤数据包,判断当前数据包的分流算法,从优先级高的分流算法开始查询,若满足高优点级分流算法的匹配条件,则送到相应的分流组;若不满足,则该优先级分流算法查询终结,进入下一歩流程。4)对依次降低优先级的分流算法重复3)所述步骤,直到查询完所有应用配置的分流算法,对数据包执行默认的分流算法;
5)对于数据包命中了分流算法后,分流模块将该分流算法对应的分流号和数据包同时送入数据处理模块; 6)数据处理模块对数据包进行预处理,将一部分包处理工作放在网卡上完成;其处理过程由用户配置,根据不同分流算法配置相应的处理方式,包括流还原、内容匹配、协议识别的动作;
7)数据包的预处理完成后,智能网卡数据处理模块将数据包、预处理结果和分流号都送到DMA模块,DMA模块根据分流号,选择相应的主机缓存,进行DMA操作,把数据包和预处理结果送到主机上,并更新相应的读写指针通知主机。8)主机上运行的不同应用或线程在各自的分流号上取得相应的数据包。并同时获得对应的预处理结果,加速处理过程。本发明的分流算法可由各个应用或线程独立配置。本发明中,配置相同分流算法的应用或线程组成ー个分流组。分流组内数据包按流量均衡分配至组内各个分流号上。不同分流算法之间存在优先级,同时每ー个分流算法设置查询终结条件。网卡分流模块对每ー个数据包从高优先级到低优先级直至默认分流算法逐级查询,命中分流算法后直接将分流号和数据包送至后续数据处理模块进行数据包预处理。本发明中,数据处理模块对数据包进行预处理。预处理流程由各个应用或线程根据自己的分流算法确定。本发明中,DMA模块根据分流模块确定的分流号,选取相应的收包缓存,发起DMA操作,送入主机内存中并修改相应的读写指针通知主机应用程序或线程。主机应用程序直接在分配给自己的收包缓冲区内取得自己要处理的数据包。本发明的有益效果
本发明根据服务器配置为支持的每个上层软件线程提供了一个专用的流缓冲区域,同时,应用或线程可以根据自己的需要配置专有的分流算法。智能网卡会把命中相应分流算法的数据包送到对应分流号的收包缓冲区内,供应用或线程提取使用。并且,智能网卡还能对数据包进行诸如流还原、内容匹配、协议识别等预处理操作,大大减轻应用或线程的负担。本发明中,利用本发明的流量负载均衡方法,可以避免传统方法导致浪费服务器处理器性能资源,无法实现轻量级线程,功能扩展麻烦,应用负担过重的问题。


图I是本发明的系统结构示意图。
图2是本发明的分流模块示意图。
具体实施方式
下面结合附图和实施例对本发明作进ー步的说明。本方法包含以下步骤
I)智能网卡驱动加载吋,为每个上层应用或应用的线程分配独立的收包缓存,以及相应的DMA资源。包括收包缓存的首地址、一套读写指针,都配置到网卡相应的寄存器中。2)每个应用或线程都可以根据自己的需求,配置自己所需的分流算法。相同分流算法的应用或线程可以组成ー个分流组,同一个分流组之间流量均衡分配。分流算法配置有优先级和查询终结条件。3)收到数据包后,智能网卡先进行高优先级的分流处理,若满足条件则送到相应的分流组。若不满足(即满足查询终结条件),则进入下一歩流程。4)对低优先级的分流算法重复3)所述步骤,直到查询完所有应用配置的分流算法,对数据包执行默认的分流算法。5)数据包命中了分流算法后,分流模块将分流号和数据包同时送入数据处理模块。6)数据处理模块对数据包进行预处理,其目的是将一部分包处理工作放在网卡上完成,减轻主机应用的负担。其处理过程由用户配置,可根据不同分流算法配置不同的处理方式,包括流还原、内容匹配、协议识别等动作。7)数据包的预处理完成后,智能网卡数据处理模块将数据包、预处理结果和分流号都送到DMA模块。DMA模块根据分流号,选择相应的主机缓存,进行DMA操作,把数据包和预处理结果送到主机上。并更新相应的读写指针通知主机。8)主机上运行的不同应用或线程在各自的分流号上取得相应的数据包。并同时获得对应的预处理结果,加速处理过程。本发明根据服务器配置为支持的每个上层软件线程提供了一个专用的流缓冲区域,同时,应用或线程可以根据自己的需要配置专有的分流算法。智能网卡会把命中相应分流算法的数据包送到对应分流号的收包缓冲区内,供应用或线程提取使用。并且,智能网卡还能对数据包进行诸如流还原、内容匹配、协议识别等预处理操作,大大减轻应用或线程的负担。利用本发明的流量负载均衡方法,可以避免传统方法导致浪费服务器处理器性能资源,无法实现轻量级线程,功能扩展麻烦,应用负担过重的问题。本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
权利要求
1.一种用于智能网卡的流量负载均衡方法,所述智能网卡,其包括以下内容 网络接口模块、分流控制模块、数据处理模块、DMA模块;其中分流控制模块、数据处理模块在硬件上都基于多核网络处理器。
2.根据权利要求I所述的用于智能网卡的流量负载均衡方法,其特征在于 智能网卡将收到的网络流量根据用户配置的不同分流方式,包括接收数据包中五元组的任意组合、协议、UDP载荷的动态字段,发送到分流控制模块进行分流,识别出分流算法和分流号,发送到接插智能网卡的服务器上与各分流号对应的处理程序进行处理。
3.根据权利要求I 2所述的用于智能网卡的流量负载均衡方法,其包括以下步骤 1)智能网卡加载驱动,为每个上层应用或应用的线程分配独立的收包缓存,包括收包缓存的首地址、一套读写指针,都配置到网卡相应的寄存器中;同时为每个上层应用或应用的线程分配相应的DMA资源; 2)根据每个应用或线程的需求,在后台服务器端配置相应的分流算法,相同分流算法的应用或线程组成一个分流组,同一个分流组之间流量均衡分配;各分流算法配置有查询匹配条件、查询终结条件和优先级; 3)智能网卡收到数据包后,在分流控制模块中,根据分流算法的条件来过滤数据包,判断当前数据包的分流算法,从优先级高的分流算法开始查询,若满足高优点级分流算法的匹配条件,则送到相应的分流组;若不满足,则该优先级分流算法查询终结,进入下一步流程; 4)对依次降低优先级的分流算法重复3)所述步骤,直到查询完所有应用配置的分流算法,对数据包执行默认的分流算法; 5 )对于数据包命中了分流算法后,分流模块将该分流算法对应的分流号和数据包同时送入数据处理模块; 6)数据处理模块对数据包进行预处理,将一部分包处理工作放在网卡上完成;其处理过程由用户配置,根据不同分流算法配置相应的处理方式,包括流还原、内容匹配、协议识别的动作; 7)数据包的预处理完成后,智能网卡数据处理模块将数据包、预处理结果和分流号都送到DMA模块,DMA模块根据分流号,选择相应的主机缓存,进行DMA操作,把数据包和预处理结果送到主机上,并更新相应的读写指针通知主机; 8)主机上运行的不同应用或线程在各自的分流号上取得相应的数据包,并同时获得对应的预处理结果,加速处理过程。
4.根据权利要求3所述的用于智能网卡的流量负载均衡方法,其特征在于 分流算法由各个应用或线程独立配置。
5.根据权利要求3所述的用于智能网卡的流量负载均衡方法,其特征在于 配置相同分流算法的应用或线程组成一个分流组,分流组内数据包按流量均衡分配至组内各个分流号上,不同分流算法之间存在优先级,同时每一个分流算法设置查询匹配条件和查询终结条件,网卡分流模块对每一个数据包从高优先级到低优先级直至默认分流算法逐级查询,命中分流算法后直接将分流号和数据包送至后续数据处理模块进行数据包预处理。
6.根据权利要求3所述的用于智能网卡的流量负载均衡方法,其特征在于数据处理模块对数据包进行预处理,预处理流程由各个应用或线程根据已配置的分流算法确定。
7.根据权利要求3所述的用于智能网卡的流量负载均衡方法,其特征在于 DMA模块根据分流模块确定的分流号,选取相应的收包缓存,发起DMA操作,送入主机内存中并修改相应的 读写指针通知主机应用程序或线程,主机应用程序直接在分配给自己的收包缓冲区内取得自己要处理的数据包。
全文摘要
一种用于智能网卡的流量负载均衡方法,当服务器接收数据时,智能网卡根据用户配置的不同分流方式,包括接收数据包中五元组的任意组合、协议、UDP载荷的动态字段,送到分流控制模块进行分流,计算出分流号,再送至数据处理模块进行数据包预处理。最后把数据包、分流号和预处理结果送至DMA模块,把数据包DMA至主机相应收包缓存供主机应用或线程提取处理。利用本发明的流量负载均衡方法,可以避免传统方法导致浪费服务器处理器性能资源,无法实现轻量级线程,功能扩展麻烦,应用负担过重的问题。
文档编号H04L12/56GK102769575SQ20121028155
公开日2012年11月7日 申请日期2012年8月8日 优先权日2012年8月8日
发明者周立, 周青, 孙传明, 张晓明, 李建昂, 汪立东, 王勇, 王维晟, 邹昕, 鲁松 申请人:南京中兴特种软件有限责任公司, 国家计算机网络与信息安全管理中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1