基于并行协议栈实例的数据包处理方法和装置制造方法及图纸

技术编号:11793611 阅读:81 留言:0更新日期:2015-07-29 19:58
本发明专利技术提供一种基于并行协议栈实例的数据包处理方法和装置,通过根据网卡的分流策略信息确定数据包的分流策略,根据该数据包的分流策略,确定第一协议栈实例,进而在第一协议栈实例上创建目标socket,以便当数据包分流到第一协议栈实例时,第一协议栈实例利用目标socket对该数据包进行协议处理,避免出现APP指定的针对目标socket的协议栈实例与网卡指定的协议栈实例冲突的情况,解决了无法对该数据包进行协议处理的技术问题。

【技术实现步骤摘要】

本专利技术涉及通信技术,尤其涉及一种基于并行协议栈实例的数据包处理方法和装置
技术介绍
随着云计算的快速发展,对协议栈实例的处理能力提出了更高的要求。目前,通常采用多个协议栈实例共享套接字(socket)的方式,因此存在多协议栈实例之间对socket的竞争问题,进而提出了在CPU的多核架构下并行协议栈实例,该并行协议栈实例包括至少两个协议栈实例,每个协议栈实例运行在CPU的一个虚拟处理器(virtual CPU,VCPU)上,采用独占协议栈实例所关联的socket的方式从而避免上述多协议栈实例之间对socket的竞争问题。当网卡根据分流策略,向各协议栈实例分流数据包时,各协议栈实例可利用与该协议栈实例关联的socket对数据包并行进行协议处理。但是应用(Applicat1n, APP)在指示创建进行上述协议处理所需的socket时,指定了 socket与协议栈实例之间的关联关系,从而仅可由相关联的协议栈实例占用该socket对数据包进行协议处理,当网卡将数据包分流到的协议栈实例,与该socket相关联的协议栈实例不同时,即出现了 APP指定的协议栈实例与网卡指定的协议栈实例冲突的情况,无法对数据包进行协议处理。
技术实现思路
本专利技术实施例提供一种基于并行协议栈实例的数据包处理方法和装置。第一个方面是提供一种基于并行协议栈实例的数据包处理方法,获得网卡的分流策略信息;根据所述分流策略信息确定数据包的分流策略;监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。在第一方面的第一种可能的实现方式中,所述分流策略信息中包括网卡的分流策略。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则所述根据所述分类策略信息确定数据包的分流策略,包括:根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;所述方法还包括:将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。结合第一方面,在第一方面的第三种可能的实现方式中,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:识别所述APP指示创建所述目标socket时所采用的方式;则所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。结合第一方面,在第一方面的第四种可能的实现方式中,所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket之前,还包括:识别所述APP指示创建所述目标socket时所采用的方式;若所述采用的方式为调用绑定bind方式和/或监听listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket ;所述根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,包括:监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,还包括:若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。结合第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket之后,还包括:若收到UDP类型的数据包,则由收到所述UDP类型数据包的协议栈实例对所述UDP类型的数据包进行协议处理。在第一方面的第七种可能的实现方式中,所述监听到应用APP创建目标套接字socket的指示之后,还包括:向所述应用APP发送已创建所述目标socket的伪结果。第二方面是提供一种基于并行协议栈实例的数据包处理装置,包括:获得模块,用于获得网卡的分流策略信息;确定模块,用于根据所述分流策略信息确定数据包的分流策略;第一创建模块,用于监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。在第二方面的第一种可能的实现方式中,所述分流策略信息中包括网卡的分流策略。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述分流策略信息中还包括如下信息中的至少一种:硬件配置信息、软件配置信息;则所述确定模块,具体用于根据所述硬件配置信息和/或所述软件配置信息对所述网卡的分流策略进行调整,确定所述数据包的分流策略;所述装置还包括:写卡模块,用于将所述数据包的分流策略写入所述网卡,以使所述网卡根据所述数据包的分流策略,将所述数据包分流到所述第一协议栈实例。结合第二方面,在第二方面的第三种可能的实现方式中,所述装置,还包括:识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;则所述第一创建模块,具体用于若所述采用的方式为调用连接connect方式,则根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。结合第二方面,在第二方面的第四种可能的实现方式中,所述装置,还包括:识别模块,用于识别所述APP指示创建所述目标socket时所采用的方式;第二创建模块,用于若所述采用的方式为调用绑定bind方式和/或监听listen方式,则在所述并行协议栈实例所包括的各协议栈实例上均创建所述目标socket ;所述第一创建模块,具体用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示,根据所述数据包的分流策略,确定所述第一协议栈实例,在所述第一协议栈实例上创建所述目标socket。结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述装置,还包括:第一处理模块,用于监听到所述创建了所述目标socket的各协议栈实例中的一个协议栈实例发送的TCP连接建立成功的指示之前,若收到TCP类型的数据包且未监听到TCP连接建立成功的指示,则由收到所述TCP类型的数据包的协议栈实例对所述TCP类型的数据包进行协议处理。结合第二方面的第四种可能的实现方式,在第二方面的第六种可能的实现方式中,所述装置,还包括:第二处理模块,用于在所本文档来自技高网...

【技术保护点】
一种基于并行协议栈实例的数据包处理方法,其特征在于,包括:获得网卡的分流策略信息;根据所述分流策略信息确定数据包的分流策略;监听到应用APP创建目标套接字socket的指示时,根据所述数据包的分流策略,确定第一协议栈实例,在所述第一协议栈实例上创建所述目标socket,以便所述第一协议栈实例利用所述目标socket对所述数据包进行协议处理。

【技术特征摘要】

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

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

1