一种报文处理方法,由计算机设备的网卡执行,该方法包括:网卡接收第一报文并确定第一报文的类型,然后根据第一报文的类型对第一报文执行第一旁路处理操作,用于使得部分报文不经过内核的处理,即使得部分报文的处理绕过臃肿的内核,从而提高报文的处理效率,提高网络传输性能,降低网络访问延迟。降低网络访问延迟。降低网络访问延迟。
【技术实现步骤摘要】
一种报文处理方法、网卡及服务器
[0001]本申请涉及计算机
,尤其涉及一种报文处理方法、网卡及服务器。
技术介绍
[0002]云技术是当今的研究热点,计算机设备和存储设备往往以集群化形式部署。随着集群规模越来越大,数据传输的流量也越来越大,网络传输性能成为影响数据传输效率的主要因素。
[0003]目前,由于计算机设备中需要限制不同的程序之间的访问能力,防止他们获取其他程序的内存数据,或者获取外围设备的数据,处理器划分出两个权限等级:用户态和内核态。当一个任务或者一个进程执行系统调用而在内核代码中执行时,我们就称该进程处于内核态。此时处理器处于特权级最高的内核代码中执行。当进程在执行用户自己的代码时,则称其处于用户态。此时处理器在特权级最低的用户代码中运行,仅能使用常规处理器指令集,不能使用操作硬件资源的处理器指令集。一般情况下,应用程序是运行在用户态,应用程序接收和发送的报文都需经由内核态的处理,具体地,接收的报文是由中央处理器(central processing unit,CPU)的协议栈处理;另一方面,发送的数据报文中的数据部分需要经由处理器转发给应用程序,这使得处理器的消耗变多,随着处理器接收或发送的报文数量增多,处理器的处理能力无法满足性能需求,不仅导致网络传输性能降低,网络访问延迟增大,还导致应用程序接收或发送数据的时延增加。因此,如何提供一种更高效的数据传输方法成为亟待解决的技术问题。
技术实现思路
[0004]本申请提供了一种报文处理方法、网卡及服务器,该方法用于使得部分报文不经过内核的处理,即使得部分报文的处理绕过臃肿的内核,从而提高报文的处理效率,提高网络传输性能,降低网络访问延迟。
[0005]第一方面,提供了一种报文处理方法,方法由计算机设备的网卡执行,该计算机设备通常为服务器,方法包括:网卡接收第一报文,该第一报文来自于另一服务器;网卡确定第一报文的类型,第一报文的类型可以是控制报文,也可以是数据报文,数据报文和控制报文分别在IP头部中对应不同的字段标识,相应地,网卡可以根据第一报文的IP头部中的字段标识确定第一报文的类型;网卡根据第一报文的类型对第一报文执行第一旁路处理操作,其中,第一旁路处理操作可以理解为旁路内核的操作,以使得第一报文不经过内核的处理,具体可以包括多种操作,本申请对此不做具体限定。
[0006]网卡根据第一报文的类型对第一报文执行第一旁路处理操作,使得部分报文不经过内核的处理,即部分报文的处理绕过了臃肿的内核,从而可以提高报文的处理效率,提高网络传输性能,降低网络访问延迟。
[0007]作为一种可实现的方式,计算机系统还包括操作系统,操作系统运行在用户态的应用程序;相应地,网卡根据第一报文的类型对第一报文执行第一旁路处理操作包括:当第
一报文的类型为数据报文时,网卡解析第一报文获得第一报文中的第一数据,第一报文是由报文首部(也称为报文头)和数据部分(也称为静荷数据(payload))组成,解析第一报文的过程则可以理解为剥离报文首部以得到数据部分的过程;解析第一报文所需的参数来自于内核,第一数据是指第一报文中的数据部分;网卡将第一数据存入第一存储空间,使得应用程序从第一存储空间中读取第一数据;其中,第一存储空间为计算设备中应用程序和网卡共享的存储空间,具体可以理解为,在内存中预留的用于存储报文中的数据的一块存储空间,第一存储空间也可以称为缓冲区;本申例对第一存储空间的大小不做具体限定,具体可以根据实际需求对第一存储空间的大小进行调整。
[0008]第一报文是由网卡解析,由于内核需要执行较多的操作,所以相比于由内核解析数据报文的方案,本申请能够提高第一报文的解析速度,从而提高网络传输的速度,降低网络传输的延迟;并且,由于内核运行在CPU上,所以本申请还可以降低CPU的处理开销,提升应用程序的性能。
[0009]并且,网卡解析第一报文以得到第一数据,并将第一数据存入第一存储空间中;由于第一存储空间是应用程序和网卡共享的,所以应用程序可以从第一存储空间中读取第一数据,而不需要网卡将第一报文上报至内核,再由内核将第一数据存入第一存储空间,从而缩短第一数据的传输路径和第一数据的拷贝次数;并且,应用程序可以在未接收到内核的通知的情况下,从第一存储空间中获取第一数据,以达到旁路内核的目的,从而提高第一数据的传输效率,提高网络传输性能,降低网络访问延迟。
[0010]作为一种可实现的方式,操作系统还包括内核;在网卡将第一数据存入第一存储空间之后,方法还包括:网卡触发中断处理操作,中断处理操作用于指示内核通知应用程序,从第一存储空间中读取第一数据;网卡触发中断处理操作的过程可以理解为,网卡改变处理器的一个寄存器的标识位,内核会检测该标识位;当内核检测到该标识位发生了变化,便会停止正在执行的操作,并执行该标识位对应的处理操作。
[0011]网卡触发中断处理操作,实现了第一报文的报文事件的上报,这样,内核中的事件管理模块便可以基于中断处理操作恢复内核事件机制,以将epoll监听事件、poll监听事件或select监听事件等返回给应用程序,使得应用程序从第一存储空间中读取第一数据,并根据上述监听事件确定是由哪一个服务器发起了访问请求。
[0012]作为一种可实现的方式,网卡触发中断处理操作包括:在网卡接收到第一指示的情况下,网卡触发中断处理操作,第一指示用于指示应用程序停止从第一存储空间中获取数据。
[0013]网卡在未接收到第一指示的情况下,可以不触发中断处理操作,并且,网卡可以不断地将接收到的数据报文中的数据部分存入第一存储空间,该第一存储空间通常位于内部存储器中,使应用程序可以不断从第一存储空间中读取数据;网卡在接收到第一指示的情况下,触发中断处理操作,以通知应用程序再次读取第一存储空间中的数据;因此本申请可以减少中断处理操作的触发次数,减少内核通知应用程序的次数,并且达到了旁路内核的目的,从而可以增强网络传输性能,降低网络传输延迟。
[0014]作为一种可实现的方式,网卡将第一数据存入第一存储空间包括:网卡通过直接存储器访问的方式将第一数据存入第一存储空间,直接存储器访问的方式可以理解为,将第一数据从一个地址空间复制到另外一个地址空间,该复制操作不需要依赖内核的大量中
断实现,具体可以由直接存储器访问控制器执行。
[0015]由于直接存储器访问的方式不需要依赖内核的大量中断实现,具体可以由直接存储器访问的方式控制器执行,所以可以提高第一数据的拷贝效率,提高网络传输性能,降低网络访问延迟。
[0016]第二方面,提供了一种报文处理方法,应用于计算机设备,该计算机设备通常为服务器,具体包括网卡和操作系统,操作系统包括运行在用户态的应用程序;方法包括:网卡通过第二旁路处理操作获取应用程序的第二数据,第二旁路处理操作可以理解为旁路内核的操作,即不经过内核获取第二数据的方式;网卡发送包含第二数据的第二报文。
[0017]网卡通过第二旁路处理操作获取应用程序的第二数据,并发送包含第二本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种报文处理方法,其特征在于,所述方法由计算机设备的网卡执行,所述方法包括:所述网卡接收第一报文;所述网卡确定所述第一报文的类型;所述网卡根据所述第一报文的类型对所述第一报文执行第一旁路处理操作。2.根据权利要求1所述的方法,其特征在于,所述计算机系统还包括操作系统,所述操作系统运行在用户态的应用程序;所述网卡根据所述第一报文的类型对所述第一报文执行第一旁路处理操作包括:当所述第一报文的类型为数据报文时,所述网卡解析所述第一报文获得所述第一报文中的第一数据;所述网卡将所述第一数据存入第一存储空间,所述第一存储空间为所述计算设备中所述应用程序和所述网卡共享的存储空间,使得所述应用程序从所述第一存储空间中读取所述第一数据。3.根据权利要求2所述的方法,其特征在于,所述操作系统还包括内核;在所述网卡将所述第一数据存入第一存储空间之后,所述方法还包括:所述网卡触发中断处理操作,所述中断处理操作用于指示所述内核通知应用程序,从所述第一存储空间中读取所述第一数据。4.根据权利要求3所述的方法,其特征在于,所述网卡触发中断处理操作包括:在所述网卡接收到第一指示的情况下,所述网卡触发中断处理操作,所述第一指示用于指示所述应用程序停止从所述第一存储空间中获取数据。5.根据权利要求2至4中任意一项所述的方法,其特征在于,所述网卡将所述第一数据存入第一存储空间包括:所述网卡通过直接存储器访问的方式将所述第一数据存入第一存储空间。6.一种报文处理方法,其特征在于,应用于计算机设备,所述计算机设备包括网卡和操作系统,所述操作系统包括运行在用户态的应用程序;所述方法包括:所述网卡通过第二旁路处理操作获取所述应用程序的第二数据;所述网卡发送包含所述第二数据的第二报文。7.根据权利要求6所述的方法,其特征在于,所述操作系统还包括运行在所述用户态的服务程序;所述网卡通过第二旁路处理操作获取所述应用程序的第二数据...
【专利技术属性】
技术研发人员:徐俊杰,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。