多协议栈负载均衡方法及装置制造方法及图纸

技术编号:11498729 阅读:144 留言:0更新日期:2015-05-22 17:48
本发明专利技术公开了多协议栈负载均衡方法和装置,包括:响应应用的请求创建第一套接字并部署在所有的协议栈上;接收请求连接的数据包;判断该请求连接的数据包的协议类型,如果协议类型是TCP协议,则创建第二套接字以建立会话连接;根据每个协议栈的负载情况,为该第二套接字选择一个协议栈,在该第二套接字的数据包通过网卡的默认分流规则不能分流到选择的协议栈所绑定的RSS网卡收队列上时,根据该网卡的分流策略在网卡上创建匹配流表,并在接收到数据包后,把接收的该第二套接字的数据包分流到该RSS网卡收队列上;完成该第二套接字与该选择的协议栈间的数据包分发。通过上述方式,本发明专利技术能够在多协议栈环境下,通过对协议栈和应用的负载感知,与RSS网卡收、发队列、流表匹配结合,实现协议栈的负载均衡,减少CPU的数据分发开销。

【技术实现步骤摘要】
多协议栈负载均衡方法及装置
本专利技术涉及通信
,特别是涉及一种多协议栈负载均衡方法及装置。
技术介绍
云计算的快速发展,使得计算的工作越来越集中在数据中心完成,而终端更多的是利用网络快速的将请求的任务发送到数据中心,所以终端对计算能力的需求在降低,而对网络能力的需求在增加。而协议栈作为应用和物理网络之间的桥梁却没有得到快速发展,已经逐渐成为了两者之间的瓶颈。多个协议栈组合处理单个或者多个端口的扩展方式已经成为必然。此时,要采用分流算法将属于相同连接的数据包转发给不同的协议栈,由于所有协议栈共用一个分发模块,不算是真正的并行处理,容易在分发模块处出现性能瓶颈。现在商用10G网卡大部分具备有RSS(ReceiveSideScaling,接收方扩展)等分流功能,通过对接收的网络数据包基于三元组/五元组进行哈希(hash),完成硬件分流的任务,将属于同一个连接的数据包发给网卡的同一个RSS网卡收队列,即发给同一个协议栈实例来处理。如图1所示,每个网卡接口100有多个协议栈,如协议栈0,协议栈1、协议栈2、协议栈3,每个协议栈绑定至少1个RSS网卡收、发队列,RSS网卡收队列由对应的协议栈处理。例如,通常通过防火墙网关发出的数据包具有相同的IP(InternetProtocol,网络协议),如果网卡的RSS分流只是基于源、目的IP以及协议三元组来进行哈希(hash)分流的话,这些通过同一个网关的数据包很可能分配到了同一个RSS网卡收队列,导致和该队列相连的协议栈可能存在过载的情况。因此,基于数据包的三元组/五元组进行简单hash分流,存在不能通过感知协议栈的真实负载情况进行灵活的负载均衡分发的缺点。
技术实现思路
本专利技术实施方式提供一种多协议栈负载均衡方法及装置,能够在多协议栈环境下,通过对协议栈以及应用的负载感知,与RSS网卡收/发队列、流表匹配相结合,实现协议栈的负载均衡,减少了CPU的数据分发开销。第一方面提供一种多协议栈负载均衡方法,该方法包括:响应应用的请求创建第一套接字并部署在所有的协议栈上;接收请求连接的数据包;判断请求连接的数据包的协议类型,如果协议类型是传输控制协议,则:创建第二套接字以建立会话连接;根据每个协议栈的负载情况,为第二套接字选择一个协议栈;在第二套接字的数据包通过网卡的默认分流规则不能把数据包分流到选择的协议栈所绑定的接收方扩展RSS网卡收队列上时,根据网卡的分流策略在网卡上创建匹配流表,并在接收到数据包后,把接收的第二套接字的数据包分流到RSS网卡收队列上;进行第二套接字与选择的协议栈间的数据包分发。结合第一方面,在第一方面的第一种可能的实现方式中,还包括:会话结束后,释放第二套接字,并删除网卡上创建的匹配流表。结合第一方面,在第一方面的第二种可能的实现方式中,如果协议类型是用户数据报协议,则:由收到请求连接的数据包的协议栈进行协议处理。结合第一方面,在第一方面的第三种可能的实现方式中,在响应应用的请求创建第一套接字并部署在所有的协议栈上的步骤之前,对网卡和所有的协议栈进行初始化配置,包括:读取并存储网卡的硬件配置信息;获取用户配置信息,并结合硬件配置信息形成网卡配置策略,写入网卡;启动多个协议栈,并根据网卡配置策略,为每个协议栈至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。结合第一方面,在第一方面的第四种可能的实现方式中,响应应用的请求创建第一套接字并部署在所有的协议栈上包括:调用应用编程接口创建第一套接字;第一套接字创建后,调用bind函数将第一套接字绑定到特定的IP地址,并调用listen函数监听指定端口的数据包请求;收到第一套接字的监听方法调用时,将第一套接字部署在所有的协议栈上。结合第一方面,在第一方面的第五种可能的实现方式中,创建第二套接字以建立会话连接的步骤包括:根据各协议栈的网络运行的实际情况,创建第二套接字。结合第一方面,在第一方面的第六种可能的实现方式中,创建第二套接字以建立会话连接的步骤包括:将接收的对端发送的请求连接的数据包转给应用;待应用确认后创建第二套接字。结合第一方面,在第一方面的第七种可能的实现方式中,会话结束包括接收并响应应用下发的释放第二套接字的请求,或者接收并响应对端发送的连接释放请求。第二方面提供一种多协议栈负载均衡方法,该方法包括:创建第一套接字,并根据每个协议栈的负载情况,为第一套接字选择一个协议栈以建立会话连接;若第一套接字的数据包通过网卡的默认分流规则不能分流到协议栈所绑定的接收方扩展RSS网卡收队列上,则根据网卡的分流策略在网卡上创建匹配流表,并在接收到数据包后,把接收的数据包分流到RSS网卡收队列上;进行第一套接字与选择的协议栈间的数据包分发。结合第二方面,在第二方面的第一种可能的实现方式中,还包括:会话结束后,释放第一套接字,并删除网卡上创建的匹配流表结合第二方面,在第二方面的第二种可能的实现方式中,在创建第一套接字之前,对网卡和所有的协议栈进行初始化配置,包括:读取并存储网卡的硬件配置信息;获取用户配置信息,并结合硬件配置信息形成网卡配置策略,写入网卡;启动多个协议栈,并根据网卡配置策略,为每个协议栈至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。结合第二方面,在第二方面的第三种可能的实现方式中,会话结束包括接收并响应应用下发的释放第一套接字的请求,或者接收并响应对端发送的连接释放请求。第三方面提供一种多实例协议栈负载均衡装置,该装置包括:协议栈模块、网卡、数据分发模块以及负载均衡模块,协议栈模块包括多个协议栈,其中:数据分发模块,用于响应应用的请求创建第一套接字并部署在所有的协议栈上;协议栈模块,用于接收请求连接的数据包,判断请求连接的数据包的协议类型;数据分发模块,用于,如果协议类型是传输控制协议,则创建第二套接字以建立会话连接;负载均衡模块,用于,如果协议类型是传输控制协议,则根据每个协议栈的负载情况,为第二套接字选择一个协议栈,并在第二套接字的数据包通过网卡的默认分流规则不能分流到选择的协议栈所绑定的接收方扩展RSS网卡收队列上时,根据网卡的分流策略在网卡上创建匹配流表,并在接收到数据包后,把接收的第二套接字的数据包分流到RSS网卡收队列上;数据分发模块,还用于进行第二套接字与选择的协议栈间的数据包分发。结合第三方面,在第三方面的第一种可能的实现方式中,在会话结束后,协议栈模块,还用于,控制选择的协议栈释放第二套接字;负载均衡模块,还用于删除网卡上创建的匹配流表。结合第三方面,在第三方面的第二种可能的实现方式中,协议栈模块,还用于,如果协议类型是用户数据报协议,则控制收到请求连接的数据包的协议栈进行协议处理。结合第三方面,在第三方面的第三种可能的实现方式中,负载均衡模块,还用于对网卡和所有的协议栈进行初始化配置,包括:具体用于读取并存储网卡的硬件配置信息,获取用户配置信息并结合硬件配置信息形成网卡配置策略,写入网卡;协议栈模块,还用于启动多个协议栈,并根据网卡配置策略,为每个协议栈至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。结合第三方面,在第三方面的第四种可能的实现方式中,数据分发模块,用于响应应用的请求创建第一套接字并部署在所有的协议栈上,具体为:数据分发模块用于响应应用调用本文档来自技高网
...
多协议栈负载均衡方法及装置

【技术保护点】
一种多协议栈负载均衡方法,其特征在于,所述方法包括:响应应用的请求创建第一套接字并部署在所有的协议栈上;接收请求连接的数据包;判断所述请求连接的数据包的协议类型,如果所述协议类型是传输控制协议,则:创建第二套接字以建立会话连接;根据每个协议栈的负载情况,为所述第二套接字选择一个协议栈;在所述第二套接字的数据包通过网卡的默认分流规则不能分流到所述选择的协议栈所绑定的接收方扩展RSS网卡收队列上时,根据所述网卡的分流策略在所述网卡上创建匹配流表,并在接收到数据包后,把接收的所述第二套接字的数据包分流到所述RSS网卡收队列上;进行所述第二套接字与所述选择的协议栈间的数据包分发。

【技术特征摘要】
1.一种多协议栈负载均衡方法,其特征在于,所述方法包括:响应应用的请求创建第一套接字并部署在所有的协议栈上;接收请求连接的数据包;判断所述请求连接的数据包的协议类型,如果所述协议类型是传输控制协议,则:创建第二套接字以建立会话连接;根据每个协议栈的负载情况,为所述第二套接字选择一个协议栈;在所述第二套接字的数据包通过网卡的默认分流规则不能分流到所述选择的协议栈所绑定的接收方扩展RSS网卡收队列上时,根据所述网卡的分流策略在所述网卡上创建匹配流表,并在接收到数据包后,把接收的所述第二套接字的数据包分流到所述RSS网卡收队列上;进行所述第二套接字与所述选择的协议栈间的数据包分发。2.根据权利要求1所述的方法,其特征在于,还包括:所述会话结束后,释放所述第二套接字,并删除所述网卡上创建的所述匹配流表。3.根据权利要求1所述的方法,其特征在于,如果所述协议类型是用户数据报协议,则:由收到所述请求连接的数据包的协议栈进行协议处理。4.根据权利要求1所述的方法,其特征在于,在所述响应应用的请求创建第一套接字并部署在所有的协议栈上的步骤之前,对所述网卡和所有的协议栈进行初始化配置,包括:读取并存储所述网卡的硬件配置信息;获取用户配置信息,并结合所述硬件配置信息形成网卡配置策略,写入所述网卡;启动多个协议栈,并根据所述网卡配置策略,为每个协议栈至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。5.根据权利要求1所述的方法,其特征在于,所述响应应用的请求创建第一套接字并部署在所有的协议栈上包括:调用应用编程接口创建所述第一套接字;所述第一套接字创建后,调用bind函数将所述第一套接字绑定到特定的IP地址,并调用listen函数监听指定端口的数据包请求;收到所述第一套接字的监听方法调用时,将所述第一套接字部署在所有的协议栈上。6.根据权利要求1所述的方法,其特征在于,所述创建第二套接字以建立会话连接的步骤包括:根据各协议栈的网络运行的实际情况,创建所述第二套接字。7.根据权利要求1所述的方法,其特征在于,所述创建第二套接字以建立会话连接的步骤包括:将接收的对端发送的所述请求连接的数据包转给所述应用;待所述应用确认后创建所述第二套接字。8.根据权利要求1所述的方法,其特征在于,所述会话结束包括接收并响应所述应用下发的释放所述第二套接字的请求,或者接收并响应对端发送的连接释放请求。9.一种多协议栈负载均衡方法,其特征在于,所述方法包括:创建第一套接字,并根据每个协议栈的负载情况,为所述第一套接字选择一个协议栈以建立会话连接;若所述第一套接字的数据包通过网卡的默认分流规则不能分流到所述选择的协议栈所绑定的接收方扩展RSS网卡收队列上,则根据所述网卡的分流策略在所述网卡上创建匹配流表,并在接收到数据包后,把接收的所述数据包分流到所述RSS网卡收队列上;进行所述第一套接字与所述选择的协议栈间的数据包分发。10.根据权利要求9所述的方法,其特征在于,还包括:所述会话结束后,释放所述第一套接字,并删除所述网卡上创建的所述匹配流表。11.根据权利要求9所述的方法,其特征在于,在所述创建第一套接字之前,对所述网卡和所有的协议栈进行初始化配置,包括:读取并存储所述网卡的硬件配置信息;获取用户配置信息,并结合所述硬件配置信息形成网卡配置策略,写入所述网卡;启动多个协议栈,并根据所述网卡配置策略,为每个协议栈至少绑定一个RSS网卡收队列以及一个RSS网卡发队列。12.根据权利要求9所述的方法,其特征在于,所述会话结束包括接收并响应应用下发的释放所述第一套接字的请求,或者接收并响应对端发送的连接释放请求。13.一种多实例协议栈负载均衡装置,其特征在于,所述装置包括:协议栈模块、网卡、数据分发模块以及负载均衡模块,所述协议栈模块包括多个协议栈,其中:所述数据分发模块,用于响应应用的请求创建第一套接字并部署在所有的协议栈上;所述协议栈模块,用于接收请求连接的数据包,判断所述请求连接的数据包的协议类型;所述数据分发模块,用于,如果所述协议类型是传输控制协议,则创建第二套接字以建立会话连接;所述负载均衡模块,用于,...

【专利技术属性】
技术研发人员:文刘飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1