本发明专利技术公开了一种数据包的收发方法,包括以下步骤:响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;上层应用层基于轮询模式对数据包进行处理,并且响应于处理完成,内核态驱动再次打开中断响应;以及网卡对数据包进行识别分类并分发到对应的队列,并且处理模块根据不同队列采用不同线程进行处理。本发明专利技术还公开了一种计算机设备和可读存储介质。本发明专利技术提出的数据包的收发方法、设备及介质通过采用混合中断模式、流分类与多队列、硬件加速技术对操作系统内核协议栈做旁路处理,网络数据包不再经过内核协议栈,实现快速数据收发,提高网络数据包处理性能。
A method, equipment and medium for sending and receiving data packets
【技术实现步骤摘要】
一种数据包的收发方法、设备及介质
本专利技术涉及数据通信
,更具体地,特别是指一种数据包的收发方法、设备及可读介质。
技术介绍
随着信息技术的发展,网络应用已越来越普遍,由此带来的后台服务网络处理性能的要求也越来越高。传统的服务器操作系统对网络数据包的处理需要通过内核协议栈进行,效率低,处理性能慢。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提出一种数据包的收发方法、设备及介质,网卡收到数据包后通过采用混合中断模式、流分类与多队列、硬件加速技术对操作系统内核协议栈做旁路处理,网络数据包不再经过内核协议栈,实现快速数据收发,提高网络数据包处理性能。基于上述目的,本专利技术实施例的一方面提供了一种数据包的收发方法,包括如下步骤:响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;上层应用层基于轮询模式对数据包进行处理,并且响应于处理完成,内核态驱动再次打开中断响应;以及网卡对数据包进行识别分类并分发到对应的队列,并且处理模块根据不同队列采用不同线程进行处理。在一些实施方式中,还包括:响应于网卡无法识别数据包,将数据包发送到处理模块;处理模块基于预配置策略进行分类并发送到对应线程进行处理。在一些实施方式中,还包括:网卡基于checksumoffload功能对处理后的数据包进行校验和计算,并发送数据包。在一些实施方式中,网卡对数据包进行识别分类并分发到对应的队列包括:网卡对数据包进行识别,响应于数据包为普通IP数据包,基于RSS分类规则对数据包进行分类,并将数据包分发到对应的队列。在一些实施方式中,无法识别的数据包为特殊封装的IP数据包。本专利技术实施例的另一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;上层应用层基于轮询模式对数据包进行处理,并且响应于处理完成,内核态驱动再次打开中断响应;以及网卡对数据包进行识别分类并分发到对应的队列,并且处理模块根据不同队列采用不同线程进行处理。在一些实施方式中,还包括:响应于网卡无法识别数据包,将数据包发送到处理模块;处理模块基于预配置策略进行分类并发送到对应线程进行处理。在一些实施方式中,还包括:网卡基于checksumoffload功能对处理后的数据包进行校验和计算,并发送数据包。在一些实施方式中,网卡对数据包进行识别分类并分发到对应的队列包括:网卡对数据包进行识别,响应于数据包为普通IP数据包,基于RSS分类规则对数据包进行分类,并将数据包分发到对应的队列。本专利技术实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。本专利技术具有以下有益技术效果:通过采用混合中断模式、流分类与多队列、硬件加速技术对操作系统内核协议栈做旁路处理,网络数据包不再经过内核协议栈,实现快速数据收发,提高网络数据包处理性能。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本专利技术提供的数据包的收发方法的实施例的示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术实施例进一步详细说明。需要说明的是,本专利技术实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本专利技术实施例的限定,后续实施例对此不再一一说明。基于上述目的,本专利技术实施例的第一个方面,提出了一种数据包的收发方法的实施例。图1示出的是本专利技术提供的数据包的收发方法的实施例的示意图。如图1所示,本专利技术实施例包括如下步骤:S1、响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;S2、上层应用层基于轮询模式对数据包进行处理,并且响应于处理完成,内核态驱动再次打开中断响应;以及S3、网卡对数据包进行识别分类并分发到对应的队列,并且处理模块根据不同队列采用不同线程进行处理。在本专利技术的一些实施例中,采用混合中断轮询模式进行收包。采用中断机制可以降低延迟,使程序及时处理报文又不会一直占用CPU;采用轮询机制有利于大流量场景下的报文处理,提升程序吞吐率。若采用完全轮询方式会导致的CPU占用100%的问题,若使用休眠机制则可降低CPU占用但会引发延迟问题。利用网卡中断仅在有报文后才进行处理,可以有效降低对CPU的占用以及减少处延迟。若采用完全中断方式,则又会导致设备处理大量中断,CPU被中断占用,利用关闭中断,并轮询的方式可以减少中断带来的影响,提升程序在大流量情况下的性能。因此使用混合中断轮询模式是一种权衡资源占用,处理延迟,设备性能的较好的方式。在本专利技术的一些实施例中,支持流分类和多队列功能。上层应用程序可以使用多个线程从多个队列同时收报,并发处理方式可以充分利用多核CPU的性能。网卡对数据包进行识别分类,将数据包分发到对应的队列,处理模块根据不同队列采用不同线程进行处理。根据本专利技术的一些实施方式,还包括:响应于网卡无法识别数据包,将数据包发送到处理模块;处理模块基于预配置策略进行分类并发送到对应线程进行处理。响应于无法识别的上述数据包,网卡将数据包发送到处理模块,处理模块进行自动识别,并根据预配置的策略规则进行分类,然后再分发到不同的线程进行处理。使用策略配置可以让特定网络流进入指定的队列,然后由相应的线程进行处理。根据本专利技术的一些实施方式,还包括:网卡基于checksumoffload功能对处理后的数据包进行校验和计算,并发送数据包。IP/TCP/UDP头部的数据包报文的校验和计算会有较高性能消耗,尤其是数据量大的情况下。利用网卡的checksumoffload特性,发送数据包时利用硬件网卡进行校验和计算,提升上层处理程序的性能。根据本专利技术的一些实施方式,网卡对数据包进行识别分类并分发到对应的队列包括:网卡对数据包进行识别,响应于数据包为普通IP数据包,基于RSS分类规则对数据包进行分类,并将数据包分发到对应的队列。采用网卡的RSS分类规则进行分类,并将其分发到不同的队列,然后再由处理模块分别针对不同队列采用不同线程进行处理。利用硬件网卡的RSS直接分流提升性能。根据本专利技术的一些实施方式,无法识别的数据包为特殊封装的IP数据包。网卡无法识别特殊封装的IP数据包,如多层VLAN,PPPoE,MPLS,自定义封装等。响应于无法识别的上述数据包,网卡将数据包发送到处理模块,处理模块进行自动识别,并根据预配置的策略规则进行分类,然后再分发到不同的本文档来自技高网...
【技术保护点】
1.一种数据包的收发方法,其特征在于,包括:/n响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;/n上层应用层基于轮询模式对所述数据包进行处理,并且响应于处理完成,所述内核态驱动再次打开中断响应;以及/n所述网卡对所述数据包进行识别分类并分发到对应的队列,并且处理模块根据不同所述队列采用不同线程进行处理。/n
【技术特征摘要】
1.一种数据包的收发方法,其特征在于,包括:
响应于网卡接收到数据包,通过内核态驱动关闭中断响应并开启轮询模式;
上层应用层基于轮询模式对所述数据包进行处理,并且响应于处理完成,所述内核态驱动再次打开中断响应;以及
所述网卡对所述数据包进行识别分类并分发到对应的队列,并且处理模块根据不同所述队列采用不同线程进行处理。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述网卡无法识别所述数据包,将所述数据包发送到所述处理模块;
所述处理模块基于预配置策略进行分类并发送到对应线程进行处理。
3.根据权利要求1所述的方法,其特征在于,还包括:
网卡基于checksumoffload功能对处理后的所述数据包进行校验和计算,并发送所述数据包。
4.根据权利要求1所述的方法,其特征在于,所述网卡对所述数据包进行识别分类并分发到对应的队列包括:
所述网卡对所述数据包进行识别,响应于所述数据包为普通IP数据包,基于RSS分类规则对所述数据包进行分类,并将所述数据包分发到对应的队列。
5.根据权利要求2所述的方法,其特征在于,所述无法识别的所述数据包为特殊封装的IP数据包。
6.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储...
【专利技术属性】
技术研发人员:蒋海波,朱书衫,
申请(专利权)人:山东超越数控电子股份有限公司,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。