多协议栈负载均衡方法及装置的制造方法_2

文档序号:8322288阅读:来源:国知局
载情况,为第二套接字选择一个协议栈,在第二套接字的数据包通过网卡的默认分流规则不能分流到选择的协议栈所绑定的RSS网卡收队列上时,根据网卡的分流策略在网卡上创建匹配流表,把接收的第二套接字的数据包分流到RSS网卡收队列上;如此通过对协议栈以及应用的负载感知,与RSS网卡收、发队列、流表匹配相结合,选择合适的协议栈以进行数据处理,使协议处理充分并行,提高协议处理能力,能够在多协议栈环境下,实现协议栈的负载均衡,减少了 CPU的数据分发开销。
【附图说明】
[0030]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
[0031]图1是现有技术中的多协议栈负载均衡装置结构示意图;
[0032]图2是本发明第一实施例的多协议栈负载均衡装置的结构示意图;
[0033]图3是本发明第二实施例的多协议栈负载均衡装置的结构示意图;
[0034]图4是本发明第一实施例的多协议栈负载均衡方法示意图;
[0035]图5是本发明第一实施例的多协议栈负载均衡方法初始化的流程示意图;
[0036]图6是本发明第二实施例的多协议栈负载均衡方法示意图;
[0037]图7是本发明第三实施例的多协议栈负载均衡装置的又一结构示意图;
[0038]图8是本发明第四实施例的多协议栈负载均衡装置的又一结构示意图。
【具体实施方式】
[0039]下面结合附图和实施方式对本发明进行详细说明。
[0040]首先请参见图2,图2是本发明第一实施例的多协议栈负载均衡装置的结构示意图。如图2所示,该多协议栈负载均衡装置10包括:协议栈模块12、数据分发模块13、负载均衡模块14、网卡16以及网卡驱动17,其中,协议栈模块12包括多个协议栈15,网卡16包括RSS网卡收、发队列18以及匹配流表19,RSS网卡收、发队列18包括RSS网卡收队列和RSS网卡发队列。
[0041 ] 在本实施例中,应用11调用应用编程接口通知数据分发模块13创建第一套接字。数据分发模块13用于响应应用11的请求创建第一套接字并部署在所有的协议栈15上。协议栈模块12用于接收请求连接的数据包,判断请求连接的数据包的协议类型,如果协议类型是UDP(User Datagram Protocol,用户数据报协议),则控制收到请求连接的数据包的协议栈15进行协议处理,当然,在本发明的其它实施例中,也可以由其它的协议栈处理。如果协议类型是TCP (Transmiss1n Control Protocol,传输控制协议),则:数据分发模块13还用于创建第二套接字以建立会话连接;负载均衡模块14用于根据每个协议栈的负载情况,为第二套接字选择一个协议栈15,并在第二套接字的数据包通过网卡16的默认分流规则不能分流到选择的协议栈15所绑定的RSS网卡收队列上时,根据网卡16的分流策略在网卡16上创建匹配流表19,并在接收到数据包后,把接收的数据包分流到RSS网卡收队列上。如此通过对协议栈以及应用的负载感知,与RSS网卡收、发队列、流表匹配相结合,选择合适的协议栈以进行数据处理,使协议处理充分并行,提高协议处理能力。数据分发模块13还用于进行第二套接字与选择的协议栈间的数据包分发。会话结束后,协议栈模块12还用于控制选择的协议栈15释放第二套接字,负载均衡模块14还用于删除网卡16上创建的匹配流表19。如此,在多协议栈环境下,通过对协议栈15以及应用的负载感知,与网卡16的RSS网卡收、发队列18、流表匹配19相结合,实现协议栈的负载均衡,减少了 CPU (CentralProcessing Unit,中央处理器)的数据包分发开销。其中,对端可以是网络中的其它客户端或者服务端。
[0042]在本实施例中,负载均衡模块14还用于对网卡16和所有的协议栈15进行初始化配置,包括:具体用于通过网卡驱动17读取并存储网卡16的硬件配置信息,获取用户配置信息,并结合硬件配置信息形成网卡配置策略,通过网卡驱动17写入网卡16 ;协议栈模块12还用于启动多个协议栈15,并根据网卡配置策略,为每个协议栈15至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。其中,网卡16的硬件配置信息包括RSS网卡收、发队列18的个数、最大可支持的流表匹配数。用户配置信息包括需开启的网卡硬件队列数、网卡16上数据包的分发策略等。
[0043]在本实施例中,第一套接字的目的地址为any,则表明这是一个服务端的套接字。第一套接字创建成功后,应用11调用bind函数把第一套接字绑定到指定的IP地址,并通过调用listen函数监听指定端口过来的数据包请求。当收到bind及listen方法调用时,数据分发模块13通知负载均衡模块14该套接字是一个服务端的套接字。负载均衡模块14通知各协议栈15,将第一套接字部署在所有的协议栈15上,每个协议栈15上都有一个第一套接字的PCB (Protocol Control Block,协议控制块)。其中,PCB包括建立连接以及数据包处理过程中涉及的各种变量。
[0044]在本实施例中,协议栈模块12接收对端发送的请求连接的数据包,数据分发模块13根据各协议栈15的网络运行的实际情况,创建第二套接字。并通知对端第二套接字是否创建成功,如果创建成功,则建立会话连接,可以进行会话;如果创建不成功,则建立会话连接失败,中断连接。其中,协议栈15的网络运行的实际情况包括是否已有相同端口的套接字创建、协议栈15中套接字的数量是否到达创建套接字的上限等信息。在本发明的其它实施例中,协议栈模块12将接收的对端发送的请求连接的数据包转给应用11,待应用11确认后数据分发模块13创建第二套接字,并将结果返回给对端。负载均衡模块14为第二套接字选择一个协议栈15时,通知协议栈15为第二套接字创建对应的PCB。第二套接字的数据包优先通过网卡16的默认分流规则分流到协议栈15所绑定的RSS网卡收队列上。如果第二套接字的数据包通过网卡16的默认分流规则不能分流到协议栈15所绑定的RSS网卡收队列上,则通过负载均衡模块14根据网卡16的分流策略在网卡16上创建匹配流表19,并在接收到数据包后,将接收第二套接字的数据包分流到RSS网卡收队列上以进行数据包的处理,即与对端进行会话。在本发明的实施例中,优选为基于五元组/三元组来进行数据包分流,而默认分流规则优选为哈希规则,在本发明的其它实施例中,也可以是基于其它元组来进行数据包分流,如二元组或四元组。其中,三元组信息包括目的端口、目的IP地址以及协议内容,五元组信息包括源端口、目的端口、源IP地址、目的IP地址和协议内容。在本实施例中,数据分发模块13还接收第二套接字的数据发送请求,并分发给对应的协议栈15 ;在第二套接字创建后,结合负载均衡信息,选择一个协议栈15以进行数据包的处理,并将处理后的网络数据包分发给第二套接字。
[0045]在本实施例中,数据分发模块13接收并响应应用11下发的释放第二套接字的请求,或者协议栈15接收并响应对端发送的连接释放请求,则表示会话结束。如果数据分发模块13接收并响应应用11下发的释放第二套接字的请求,则通知对应的协议栈15释放第二套接字及其相关的PCB,同时通知负载均衡模块14该第二套接字已经释放;负载均衡模块14收到数据分发模块13的第二套接字释放通知后,确认是否为该第二套接字在网卡上创建过匹配流表19,如果有,则通过调用网卡驱动17删除该匹配流表19。如果协议栈15接收并响应对端发送的连接释放请求,对应的协议栈15释放第二套接字,数据分发模块13通知应用11和负载均衡模块14第二套接字已经释放。负载均衡模块14再确认是否为该第二套接字在网卡上创建过匹配流表19,如果有,则通过调用网卡驱动17删除该匹配流表19。
[0046]请参见图3,图3是本发明第二实施例的多协议栈负载均衡装置的结构示意图。如图3所示,该多协议栈负载均衡装置包括:协议栈模块22、数据分发模块23、负载均衡模块24、网卡26以及网卡驱动27,其中,协议栈模块22包括多个协议栈25,网卡26包括RSS网卡收、发队列28以及匹配流表29,RSS网卡收、发队列28包括RSS网卡收队列和RSS网卡发队列。
[0047]在本实施例中,数据分发模块23用于响应应用21调用应用程序接口的通知创建第一套接字,每个应用21包括至少一个第一套接字。负载均衡模块24用于根据每个协议栈25的负载情况,为第一套接字选择一个协议栈25,以与对端建立会话连接,若第一套接字的数据包通过网卡26的默认分流规则不能分流到协议栈25所绑定的RSS网卡收队列上,则根据网卡26的分流策略在网卡26上创建匹配流表29,并在接收到数据包后,把接收的数据包分流到RSS网卡收队列上。数据颁发模块23还用于进行第一套接字与选择的协议栈25间的数据包分发。会话结束后,协议栈模块22用于控制选择的协议栈25释放第一套接字,负载均衡模块24还用于删除网卡26上创建的匹配流表29。其中,对端可以是网络中的服务端。
[0048]在本实施例中,负载均衡模块还用于对网卡和所有的协议栈进行初始化配置,包括:具体用于读取并存储网卡26的硬件配置信息,获取用户配置信息,并结合硬件配置信息形成网卡配置策略,通过网卡驱动27写入网卡26 ;协议栈模块22还用于启动多个协议栈25,并根据网卡配置策略,为每个协议栈25至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。其中,网卡26的硬件配置信息包括RSS网卡收队列的个数、最大可支持的流表匹配数,用户配置信息包括需开启的网卡硬件队列数、网卡26上数据包的分发策略等。
[0049]在本实施例中,协议栈模块22接收对端发送的请求连接的数据包,数据分发模块23根据各协议栈25的网络运行的实际情况,给应用21返回伪的结果,通知对端第一套接字是否创建成功,如果创建成功,则建立会话连接,可以进行会话;如果创建不成功,则建立会话连接失败,中断连接。在本发明的其它实施例中,协议栈模块22将接收的对端发送的请求连接的数据包转给应用21,待应用21确认后数据分发模块23创建第一套接字,并将结果返回给对端。数据分发模块23在创建第一套接字时,同时创建对应的PCB。其中,协议栈25的网络运行的实际情况包括是否已有相同端口的套接字创建、协议栈25中套接字的数量是否到达创建套接字的上限等信息。PCB包
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1