【技术实现步骤摘要】
多协议栈负载均衡方法及装置
本专利技术涉及通信
,特别是涉及一种多协议栈负载均衡方法及装置。
技术介绍
云计算的快速发展,使得计算的工作越来越集中在数据中心完成,而终端更多的是利用网络快速的将请求的任务发送到数据中心,所以终端对计算能力的需求在降低,而对网络能力的需求在增加。而协议栈作为应用和物理网络之间的桥梁却没有得到快速发展,已经逐渐成为了两者之间的瓶颈。多个协议栈组合处理单个或者多个端口的扩展方式已经成为必然。此时,要采用分流算法将属于相同连接的数据包转发给不同的协议栈,由于所有协议栈共用一个分发模块,不算是真正的并行处理,容易在分发模块处出现性能瓶颈。现在商用10G网卡大部分具备有RSS(ReceiveSideScaling,接收方扩展)等分流功能,通过对接收的网络数据包基于三元组/五元组进行哈希(hash),完成硬件分流的任务,将属于同一个连接的数据包发给网卡的同一个RSS网卡收队列,即发给同一个协议栈实例来处理。如图1所示,每个网卡接口100有多个协议栈,如协议栈0,协议栈1、协议栈2、协议栈3,每个协议栈绑定至少1个RSS网卡收、发队列,RSS网卡收队列由对应的协议栈处理。例如,通常通过防火墙网关发出的数据包具有相同的IP(InternetProtocol,网络协议),如果网卡的RSS分流只是基于源、目的IP以及协议三元组来进行哈希(hash)分流的话,这些通过同一个网关的数据包很可能分配到了同一个RSS网卡收队列,导致和该队列相连的协议栈可能存在过载的情况。因此,基于数据包的三元组/五元组进行简单hash分流,存在不能通过感知协议栈的 ...
【技术保护点】
一种多协议栈负载均衡方法,其特征在于,所述方法包括:响应应用的请求创建第一套接字并部署在所有的协议栈上;接收请求连接的数据包;判断所述请求连接的数据包的协议类型,如果所述协议类型是传输控制协议,则:创建第二套接字以建立会话连接;根据每个协议栈的负载情况,为所述第二套接字选择一个协议栈;在所述第二套接字的数据包通过网卡的默认分流规则不能分流到所述选择的协议栈所绑定的接收方扩展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.一种多实例协议栈负载均衡装置,其特征在于,所述装置包括:协议栈模块、网卡、数据分发模块以及负载均衡模块,所述协议栈模块包括多个协议栈,其中:所述数据分发模块,用于响应应用的请求创建第一套接字并部署在所有的协议栈上;所述协议栈模块,用于接收请求连接的数据包,判断所述请求连接的数据包的协议类型;所述数据分发模块,用于,如果所述协议类型是传输控制协议,则创建第二套接字以建立会话连接;所述负载均衡模块,用于,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。