本发明专利技术提供一种基于并行协议栈实例的数据包处理方法和装置,利用第一协议栈实例对向该第一协议栈实例分流的数据包进行低层协议处理,确定对低层协议处理后的数据包进行上层协议处理所需的目标socket之后,通过目标socket确定关联的第二协议栈实例,利用目标socket和第二协议栈实例,对低层协议处理后的数据包进行上层协议处理,由于采用了由不同的协议栈分别完成协议处理中的低层协议处理部分和上层协议处理部分,通过目标socket确定进行上层协议处理的第二协议栈实例,从而解决了由于APP指定的协议栈实例与网卡指定的协议栈实例冲突所导致的无法对数据包进行协议处理的技术问题。
【技术实现步骤摘要】
本专利技术涉及通信技术,尤其涉及一种基于并行协议栈实例的数据包处理方法和装置。
技术介绍
随着云计算的快速发展,对协议栈实例的处理能力提出了更高的要求。目前,通常采用多个协议栈实例共享套接字(socket)的方式,因此存在多协议栈实例之间对socket的竞争问题,进而提出了在中央处理器(central processing unit, CPU)的多核架构下并行协议栈实例,该并行协议栈实例包括至少两个协议栈实例,每个协议栈实例运行在CPU的一个虚拟中央处理器(virtual CPU, VCPU)上,采用独占协议栈实例所关联的socket的方式从而避免上述多协议栈实例之间对socket的竞争问题。当网卡根据分流策略,向各协议栈实例分流数据包时,各协议栈实例可利用与该协议栈实例关联的socket对数据包并行进行协议处理。但是应用(Applicat1n, APP)在指示创建进行上述协议处理所需的socket时,指定了 socket与协议找实例之间的关联关系,从而仅可由APP指定的相关联的协议找实例占用该socket对数据包进行协议处理,当网卡将数据包所分流到的协议栈实例,与该APP指定的socket相关联的协议栈实例不同时,即出现了 APP指定的协议栈实例与网卡指定的协议栈实例冲突的情况,无法对数据包进行协议处理。
技术实现思路
为解决现有技术的问题,本专利技术实施例提供一种基于并行协议栈实例的数据包处理方法和装置。第一方面是提供一种基于并行协议栈实例的数据包处理方法,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket ;根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理。在第一方面的第一种可能的实现方式中,所述根据所述目标socket,确定与所述目标socket关联的第二协议栈实例,包括:根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例;所述目标socket与所述每个协议栈实例之间的亲和性用于指示所述网卡向所述每个协议栈实例已分流的数据包中,需要利用所述目标socket进行上层协议处理的数据包数量。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例之前,还包括:根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性。结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述低层协议处理后的所述数据包的个数,更新所述亲和性图谱中所记载的所述目标socket与所述第一协议栈实例之间的亲和性之后,还包括:判断nXA是否大于B,其中,A为所述目标socket与所述第一协议栈实例之间的亲和性,B为所述亲和性图谱中记载的所述目标socket与关联的协议栈实例之间的亲和性,η为预设系数;则所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,包括:若nXA不大于B,则确定将所述亲和性图谱中记载的所述目标socket关联的协议栈实例作为与所述目标socket关联的所述第二协议栈实例。结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据亲和性图谱中所述目标socket与所述并行协议栈实例包含的每个协议栈实例之间的亲和性,确定与所述目标socket关联的所述第二协议栈实例,还包括:若nXA大于B,则将所述第一协议栈实例确定为与所述目标socket关联的所述第二协议栈实例,并将所述亲和性图谱中记载的所述目标socket关联的协议栈实例更新为所述第一协议栈实例。结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket,包括:在socket表中进行检索,获得对所述低层协议处理后的所述数据包进行上层协议处理所需的所述目标socket。结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理,包括:将所述低层协议处理后的所述数据包加入到所述目标socket的底层数据接收队列中;当根据所述第二协议栈实例对应的协议栈实例关联链表,轮询到所述目标socket时,利用所述第二协议栈实例对所述底层数据接收队列中的所述数据包进行所述上层协议处理;所述第二协议栈实例对应的协议栈实例关联链表用于指示与所述第二协议栈实例存在关联关系的socket。结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第七种可能的实现方式中,所述确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket之前,还包括:利用所述并行协议栈实例包括的各协议栈实例中的一个父协议栈实例,创建与所述各协议栈实例均不存在关联关系的所述目标socket ;所述父协议栈实例是应用APP采用随机方式或者参数指定方式或者负载均衡方式选定的。结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:接收所述应用APP发送的第一数据包;确定对所述第一数据包进行协议处理所需要的所述目标套接字socket ;确定与所述目标socket关联的所述第二协议栈实例;利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理。第二方面是提供一种基于并行协议栈实例的数据包处理方法,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:接收应用APP发送的第一数据包;确定对所述第一数据包进行协议处理所需要的目标套接字socket ;根据所述目标socket与第二协议栈实例的关联关系,确定与所述目标socket关联的所述第二协议栈实例;利用所述目标socket和所述第二协议栈实例,对所述第一数据包进行协议处理;其中,所述目标socket与所述第二协议栈实本文档来自技高网...
【技术保护点】
一种基于并行协议栈实例的数据包处理方法,其特征在于,所述并行协议栈实例中至少包括第一协议栈实例和第二协议栈实例,所述方法包括:利用所述第一协议栈实例对网卡向所述第一协议栈实例分流的所述数据包进行低层协议处理;确定对所述低层协议处理后的所述数据包进行上层协议处理所需的目标套接字socket;根据所述目标socket,确定与所述目标socket关联的第二协议栈实例;利用所述目标socket和所述第二协议栈实例对所述低层协议处理后的所述数据包进行所述上层协议处理;其中,所述低层协议处理和所述上层协议处理共同完成对所述数据包的完整协议处理。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨永强,戴芬,文刘飞,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。