[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN112883007A - 用于Linux系统的本机协议报文的处理方法及装置 - Google Patents

用于Linux系统的本机协议报文的处理方法及装置 Download PDF

Info

Publication number
CN112883007A
CN112883007A CN202110193646.6A CN202110193646A CN112883007A CN 112883007 A CN112883007 A CN 112883007A CN 202110193646 A CN202110193646 A CN 202110193646A CN 112883007 A CN112883007 A CN 112883007A
Authority
CN
China
Prior art keywords
processing
kernel
mode
protocol stack
native
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110193646.6A
Other languages
English (en)
Inventor
刘昊
王晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202110193646.6A priority Critical patent/CN112883007A/zh
Publication of CN112883007A publication Critical patent/CN112883007A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及一种用于Linux系统的本机协议报文的处理、装置、电子设备及计算机可读介质。该方法包括:Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。本公开涉及的本机协议报文的处理方法、装置、电子设备及计算机可读介质,能够根据具体的应用场景来选择对本机报文处理的方式,满足不同场景的效率要求,还能够实现用户态和内核协议栈报文的交互。

Description

用于Linux系统的本机协议报文的处理方法及装置
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种本机协议报文的处理方法、装置、电子设备及计算机可读介质。
背景技术
随着信息技术的发展,linux系统在通讯领域得到广泛的应用。传统的Linux设备驱动模型,为了兼顾系统性能和I/O指令等特权指令的要求,设备驱动往往与操作系统内核运行在同一个地址空间,具有内核的所有权限。操作系统对运行在内核态的代码是无条件信任的,因此,设备驱动内一个小小的错误也将会导致一个系统范围内的故障。另外,内核驱动编程要遵循严格的限制,驱动开发、调试以及测试的工具匮乏,很难保证驱动的可靠性。所以用户态驱动编程已经成为一种趋势,越来越多的交换芯片厂商将自己SDK(软件开发包)迁移到用户态。
目前常用的SDK均是基于用户态的驱动开发,所以SDK的收发包都迁移到了用户态。之前的SDK收发包是内核态驱动完成的,报文可在内核态空间直接与内核协议栈交互。但是在硬件的实际应用场景中仍旧有一些需要在内核协议栈处理的协议报文,在目前的交互状态下无法处理,为了解决这个问题,因此,需要一种新的本机协议报文的处理方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种本机协议报文的处理方法、装置、电子设备及计算机可读介质,能够根据具体的应用场景来选择对本机报文处理的方式,满足不同场景的效率要求,还能够实现用户态和内核协议栈报文的交互。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提出一种本机协议报文的处理方法,该方法包括:Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。
在本公开的一种示例性实施例中,还包括:在所述Linux系统的内核态中创建虚拟文件系统,以实现所述硬件的读写操作。
在本公开的一种示例性实施例中,还包括:创建套接字缓存链,用于存储内核态协议栈发出的报文。
在本公开的一种示例性实施例中,将所述本机协议报文转发至内核态协议栈进行处理,包括:用户态驱动获取所述本机协议报文;将所述本机协议报文发送至所述内核态协议栈以生成处理结果;所述用户态驱动获取所述处理结果并发送至Linux系统。
在本公开的一种示例性实施例中,将所述本机协议报文发送至所述内核态协议栈,包括:基于对所述虚拟文件系统的写操作以将所述本机协议报文转发至内核态协议栈进行处理。
在本公开的一种示例性实施例中,将所述本机协议报文发送至所述内核态协议栈以生成处理结果,包括:将所述本机协议报文发送至所述内核态协议栈;所述内核态协议栈对所述本机协议报文进行处理生成处理结果。
在本公开的一种示例性实施例中,所述用户态驱动获取所述处理结果并发送至Linux系统,包括:所述内核态协议栈将处理结果加入所述套接字缓存链的队尾;所述用户态驱动由所述套接字缓存链读取所述处理结果;所述用户态驱动将所述处理结果发送至Linux系统。
在本公开的一种示例性实施例中,所述内核态协议栈将处理结果加入所述套接字缓存链的队尾,还包括:唤醒所述套接字缓存链的队列头。
在本公开的一种示例性实施例中,所述用户态驱动由所述套接字缓存链读取所述处理结果,包括:所述用户态驱动创建线程;基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果。
在本公开的一种示例性实施例中,基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果,包括:在所述套接字缓存链非空时,所述线程读取所述处理结果;在所述套接字缓存链为空时,所述线程处于休眠状态。
根据本公开的一方面,提出一种本机协议报文的处理装置,该装置包括:获取模块,用于Linux系统的硬件运行在用户态时获取本机协议报文;判断模块,用于判断所述本机协议报文的应用场景;用户态模块,用于在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;内核态模块,用于在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。
在本公开的一种示例性实施例中,还包括:创建模块,用于在所述Linux系统的内核态中创建虚拟文件系统,以实现所述硬件的读写操作;还用于创建套接字缓存链,用于存储内核态协议栈发出的报文。
根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本公开的本机协议报文的处理方法、装置、电子设备及计算机可读介质,Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理的方式,能够根据具体的应用场景来选择对本机报文处理的方式,满足不同场景的效率要求,还能够实现用户态和内核协议栈报文的交互。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种本机协议报文的处理方法的流程图。
图2是根据一示例性实施例示出的一种本机协议报文的处理方法及装置的示意图。
图3是根据另一示例性实施例示出的一种本机协议报文的处理方法的流程图。
图4是根据一示例性实施例示出的一种本机协议报文的处理装置的框图。
图5是根据一示例性实施例示出的一种电子设备的框图。
图6是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
本公开涉及的技术缩略语解释如下:
等待队列:等待队列,是指linux系统中进程所组成的队列,就是需要其他事件的发生才会自己本身被唤醒的进程,也就是说这些进程本身是在等待其他某些进程为他们提供进程发生的条件。他们是属于消费者的,但是他们要消耗的东西还没有产生,这些就是处于等待状态的进程,组成了等待队列。
SKB:Linux网络核心数据结构是套接字缓存(socketbuffer),简称SKB。它代表一个要发送或处理的报文,并贯穿于整个协议栈。
SDK:软件开发包,软件开发包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
现有处理方案中,本机的协议报文收发处理是标准的内核态协议报文收发处理流程,都是在内核态完成的具体如下:
(1)本机协议报文收包:驱动通过硬件收到报文后,根据报文的二层头判断是否为本机协议报文,如果是本机协议报文,则直接上送内核态协议栈处理。
(2)本机协议报文发包:内核态协议栈将报文发出后交给驱动处理,驱动通过硬件将报文发出去。
对于本机协议报文来说,如果硬件收报后直接交给内核态驱动处理,然后上送内核态协议栈是标准的通用处理流程。但是,现一些厂商的SDK通过硬件收报后交给用户态,用户态收到的本机报文是无法直接交给内核态协议栈处理的。而且,内核态协议栈发包后,也需要通过用户态将报文发出去。
为了解决现有技术中的困境,本公开提出一种本机协议报文的处理方法,下面借助具体的实施例对本公开的方法进行详细描述。
图1是根据一示例性实施例示出的一种本机协议报文的处理方法的流程图。本机协议报文的处理方法10至少包括步骤S102至S108。
如图1所示,在S102中,Linux系统的硬件运行在用户态时获取本机协议报文。由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据,并发送到网络,CPU划分出两个权限等级:用户态和内核态。
从宏观上来看,Linux操作系统的内核从本质上看是一种软件:控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。
在S104中,判断所述本机协议报文的应用场景。可根据本机协议报文中的报文数据判断报文的应用场景。
在S106中,在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理。比如视频流数据、语音流数据处理的报文属于实时场景类的报文,需由用户态协议栈进行处理。
在本公开中的用户态协议栈,可为符合报文收发标准的新类型用户态协议栈,在新类型的用户态协议栈中,用户态驱动收发的协议报文后可直接交给用户态协议栈来处理。
在S108中,在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。远程连接设备请求,查看设备信息等报文属于非实时场景的报文,可转发至内核协议栈进行处理。可基于对所述虚拟文件系统的写操作以将所述本机协议报文转发至内核态协议栈进行处理。
在非实时场景时,用户态驱动收发的协议报文,交给内核态驱动来处理。更具体的,如图2所示,用户态驱动获取所述本机协议报文;将所述本机协议报文发送至所述内核态协议栈以生成处理结果;所述用户态驱动获取所述处理结果并发送至Linux系统。
根据本公开的本机协议报文的处理方法,Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理的方式,能够根据具体的应用场景来选择对本机报文处理的方式,满足不同场景的效率要求,还能够实现用户态和内核协议栈报文的交互。
其中,用户态驱动收发的协议报文交给用户态协议栈来处理的方式,这种方案的的优点是协议报文处理的效率高、速度快,缺点是开发周期长,维护成本高。
其中,用户态驱动收发的协议报文交给内核态驱动来处理的方式,优点是内核协议栈成熟稳定、简单易用、无需重新开发,缺点就是用户态和内核态报文交互会影响本机协议报文处理效率。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
在一个实施例中,还包括:在所述Linux系统的内核态中创建虚拟文件系统,以实现所述硬件的读写操作。创建SKB链表头,将内核态协议栈发出的报文插入到链表尾部。SKB链表的队列的入队和出队的操作都是SKB提供。
在内核态创建一个proc类型的设备,实现该设备驱动的Read和Write操作。
其中,Read操作是用来解决内核态协议栈发包问题的。协议栈将报文发出来后,将本机协议报文加入到之前的创建的SKB链表队列的队尾里,并唤醒等待队列,SKB链表队列缓冲的协议报文等待被读取。队列用户态起一个线程对该设备以阻塞的方式进行读取操作,读取到SKB链表队列中的协议报文后,通过用户态将本机协议报文发出去,如果读不到则阻塞。
其中,Write操作是用来解决,用户态收到本机协议报文后无法上送内核协议栈的问题。用户态收到本机的协议报文后,通过对该proc设备的写操作,将报文交给内核态协议栈处理。
在一个实施例中,还包括:创建套接字缓存链,用于存储内核态协议栈发出的报文。在内核态创建一个proc类型的设备,实现该设备驱动的Read和Write操作。Linux系统上proc文件系统,是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
更进一步的,对SKB链表以阻塞的方式进行读取操作是通过等待队列的方式实现的。用户态线程对SKB链表进行读操作时,将该线程加入到等待队列,如果SKB队列非空,就取出报文并通过用户态发出去。如果为SKB队列为空则进程停止在此处并睡眠。本机报文从协议栈发出的时候,将报文入队到SKB链表队列中,并唤醒等待队列头。这样可实现内核态协议栈发出的本机报文通过用户态发出去。
图3是根据另一示例性实施例示出的一种本机协议报文的处理方法的流程图。图3所示的流程30是对图1所示的流程中S108“将所述本机协议报文转发至内核态协议栈进行处理”的详细描述。
如图3所示,在S302中,用户态驱动获取所述本机协议报文。
在S304中,将所述本机协议报文发送至所述内核态协议栈以生成处理结果。包括:将所述本机协议报文发送至所述内核态协议栈;所述内核态协议栈对所述本机协议报文进行处理生成处理结果。
在S306中,所述用户态驱动获取所述处理结果并发送至Linux系统。包括:所述内核态协议栈将处理结果加入所述套接字缓存链的队尾;所述用户态驱动由所述套接字缓存链读取所述处理结果;所述用户态驱动将所述处理结果发送至Linux系统。
其中,所述内核态协议栈将处理结果加入所述套接字缓存链的队尾,还包括:唤醒所述套接字缓存链的队列头。
其中,所述用户态驱动由所述套接字缓存链读取所述处理结果,包括:所述用户态驱动创建线程;基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果。
其中,基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果,包括:在所述套接字缓存链非空时,所述线程读取所述处理结果;在所述套接字缓存链为空时,所述线程处于休眠状态。
本公开的本机协议报文的处理方法,通过创建一个proc设备来实现用户态和内核协议栈报文的交互,通过创建SKB链表队列来实现用户态和内核协议栈之间交互报文的缓冲。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图4是根据一示例性实施例示出的一种本机协议报文的处理装置的框图。如图4所示,本机协议报文的处理装置40包括:获取模块402,判断模块404,用户态模块406,内核态模块408,创建模块410。
获取模块402用于Linux系统的硬件运行在用户态时获取本机协议报文;
判断模块404用于判断所述本机协议报文的应用场景;可根据本机协议报文中的报文数据判断报文的应用场景。
用户态模块406用于在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;比如视频流数据、语音流数据处理的报文属于实时场景类的报文,需由用户态协议栈进行处理。
内核态模块408用于在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。远程连接设备请求,查看设备信息等报文属于非实时场景的报文,可转发至内核协议栈进行处理。可基于对所述虚拟文件系统的写操作以将所述本机协议报文转发至内核态协议栈进行处理。
创建模块410用于在所述Linux系统的内核态中创建虚拟文件系统,以实现所述硬件的读写操作;还用于创建套接字缓存链,用于存储内核态协议栈发出的报文。
根据本公开的本机协议报文的处理装置,Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理的方式,能够根据具体的应用场景来选择对本机报文处理的方式,满足不同场景的效率要求,还能够实现用户态和内核协议栈报文的交互。
图5是根据一示例性实施例示出的一种电子设备的框图。
下面参照图5来描述根据本公开的这种实施方式的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:至少一个处理单元510、至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530、显示单元540等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元510执行,使得所述处理单元510执行本说明书中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元510可以执行如图1,图3中所示的步骤。
所述存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
所述存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备500’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备500交互的设备通信,和/或该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器560可以通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图6所示,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:Linux系统的硬件运行在用户态时获取本机协议报文;判断所述本机协议报文的应用场景;在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施例的方法。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

Claims (12)

1.一种用于Linux系统的本机协议报文的处理方法,包括:
Linux系统的硬件运行在用户态时获取本机协议报文;
判断所述本机协议报文的应用场景;
在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;
在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述Linux系统的内Z核态中创建虚拟文件系统,以实现所述硬件的读写操作。
3.如权利要求1所述的方法,其特征在于,还包括:
创建套接字缓存链,用于存储内核态协议栈发出的报文。
4.如权利要求1所述的方法,其特征在于,将所述本机协议报文转发至内核态协议栈进行处理,包括:
用户态驱动获取所述本机协议报文;
将所述本机协议报文发送至所述内核态协议栈以生成处理结果;
所述用户态驱动获取所述处理结果并发送至Linux系统。
5.如权利要求2或4所述的方法,其特征在于,将所述本机协议报文发送至所述内核态协议栈,包括:
基于对所述虚拟文件系统的写操作以将所述本机协议报文转发至内核态协议栈进行处理。
6.如权利要求4所述的方法,其特征在于,将所述本机协议报文发送至所述内核态协议栈以生成处理结果,包括:
将所述本机协议报文发送至所述内核态协议栈;
所述内核态协议栈对所述本机协议报文进行处理生成处理结果。
7.如权利要求3或4所述的方法,其特征在于,所述用户态驱动获取所述处理结果并发送至Linux系统,包括:
所述内核态协议栈将处理结果加入所述套接字缓存链的队尾;
所述用户态驱动由所述套接字缓存链读取所述处理结果;
所述用户态驱动将所述处理结果发送至Linux系统。
8.如权利要求7所述的方法,其特征在于,所述内核态协议栈将处理结果加入所述套接字缓存链的队尾,还包括:
唤醒所述套接字缓存链的队列头。
9.如权利要求7所述的方法,其特征在于,所述用户态驱动由所述套接字缓存链读取所述处理结果,包括:
所述用户态驱动创建线程;
基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果。
10.如权利要求9所述的方法,其特征在于,基于所述线程以阻塞的方式对所述套接字缓存链进行读取操作以获取所述处理结果,包括:
在所述套接字缓存链非空时,所述线程读取所述处理结果;
在所述套接字缓存链为空时,所述线程处于休眠状态。
11.一种用于Linux系统的本机协议报文的处理装置,包括:
获取模块,用于Linux系统的硬件运行在用户态时获取本机协议报文;
判断模块,用于判断所述本机协议报文的应用场景;
用户态模块,用于在所述应用场景为实时场景时,将所述本机协议报文转发至用户态协议栈进行处理;
内核态模块,用于在所述应用场景为非实时场景时,将所述本机协议报文转发至内核态协议栈进行处理。
12.如权利要求11所述的装置,其特征在于,还包括:
创建模块,用于在所述Linux系统的内核态中创建虚拟文件系统,以实现所述硬件的读写操作;还用于创建套接字缓存链,用于存储内核态协议栈发出的报文。
CN202110193646.6A 2021-02-20 2021-02-20 用于Linux系统的本机协议报文的处理方法及装置 Pending CN112883007A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110193646.6A CN112883007A (zh) 2021-02-20 2021-02-20 用于Linux系统的本机协议报文的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110193646.6A CN112883007A (zh) 2021-02-20 2021-02-20 用于Linux系统的本机协议报文的处理方法及装置

Publications (1)

Publication Number Publication Date
CN112883007A true CN112883007A (zh) 2021-06-01

Family

ID=76056663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110193646.6A Pending CN112883007A (zh) 2021-02-20 2021-02-20 用于Linux系统的本机协议报文的处理方法及装置

Country Status (1)

Country Link
CN (1) CN112883007A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259400A (zh) * 2021-07-14 2021-08-13 南京易科腾信息技术有限公司 基于网络协议的网络交互系统、方法及存储介质
CN113596171A (zh) * 2021-08-04 2021-11-02 杭州朗和科技有限公司 云计算数据交互方法、系统、电子设备及存储介质
CN114338448A (zh) * 2021-12-29 2022-04-12 北京天融信网络安全技术有限公司 性能测试方法、装置、电子设备及存储介质
CN115002028A (zh) * 2022-04-30 2022-09-02 济南浪潮数据技术有限公司 一种报文处理方法、装置及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070233876A1 (en) * 2006-03-30 2007-10-04 Thompson Belinda L Interprocess communication management using a socket layer
CN101226487A (zh) * 2008-01-30 2008-07-23 中国船舶重工集团公司第七〇九研究所 基于嵌入式Linux操作系统的内核级线程库的实现方法
CN103312601A (zh) * 2013-05-31 2013-09-18 汉柏科技有限公司 用户态到内核态的数据报文处理方法
CN110535813A (zh) * 2018-05-25 2019-12-03 网宿科技股份有限公司 内核态协议栈与用户态协议栈并存处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070233876A1 (en) * 2006-03-30 2007-10-04 Thompson Belinda L Interprocess communication management using a socket layer
CN101226487A (zh) * 2008-01-30 2008-07-23 中国船舶重工集团公司第七〇九研究所 基于嵌入式Linux操作系统的内核级线程库的实现方法
CN103312601A (zh) * 2013-05-31 2013-09-18 汉柏科技有限公司 用户态到内核态的数据报文处理方法
CN110535813A (zh) * 2018-05-25 2019-12-03 网宿科技股份有限公司 内核态协议栈与用户态协议栈并存处理方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
天夜创作室: "《Linux网络编程技术》", 30 November 2001, 人民邮电出版社 *
李杰: "《嵌入式Linux系统 开发原理与实战》", 30 November 2017, 北京理工大学出版社 *
高俊峰: "《高性能Linux服务器运维实战》", 31 May 2020, 《机械工业出版社》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259400A (zh) * 2021-07-14 2021-08-13 南京易科腾信息技术有限公司 基于网络协议的网络交互系统、方法及存储介质
CN113596171A (zh) * 2021-08-04 2021-11-02 杭州朗和科技有限公司 云计算数据交互方法、系统、电子设备及存储介质
CN113596171B (zh) * 2021-08-04 2024-02-20 杭州网易数之帆科技有限公司 云计算数据交互方法、系统、电子设备及存储介质
CN114338448A (zh) * 2021-12-29 2022-04-12 北京天融信网络安全技术有限公司 性能测试方法、装置、电子设备及存储介质
CN114338448B (zh) * 2021-12-29 2024-02-20 北京天融信网络安全技术有限公司 性能测试方法、装置、电子设备及存储介质
CN115002028A (zh) * 2022-04-30 2022-09-02 济南浪潮数据技术有限公司 一种报文处理方法、装置及介质
CN115002028B (zh) * 2022-04-30 2024-02-13 济南浪潮数据技术有限公司 一种报文处理方法、装置及介质

Similar Documents

Publication Publication Date Title
CN112883007A (zh) 用于Linux系统的本机协议报文的处理方法及装置
US20240106754A1 (en) Load Balancing Method for Multi-Thread Forwarding and Related Apparatus
JP2005222533A (ja) 挿入されたメッセージ修正を使用した、コード作成のため受信したメッセージディスパッチの調整
CN107404418B (zh) 互联网产品测试方法、装置、设备及存储介质
CN111190766A (zh) 基于HBase数据库的跨机房集群的容灾方法、装置和系统
CN110908707B (zh) 一种资源打包方法、装置、服务器及存储介质
CN114296646B (zh) 基于io业务的缓存方法、装置、服务器和存储介质
CN111026493B (zh) 界面渲染的处理方法和装置
US7539992B2 (en) Scheduling method, program product for use in such method, and task scheduling apparatus
CN109284108A (zh) 数据存储方法、装置、电子设备及存储介质
CN114816672A (zh) 虚拟机的创建方法、装置、电子设备和存储介质
US7934063B2 (en) Invoking externally assisted calls from an isolated environment
US10642667B1 (en) Apparatus, system, and method for efficiently sharing data between processes
CN112700515B (zh) 动画播放方法和装置、存储介质、电子设备
WO2024119930A1 (zh) 调度方法、装置、计算机设备和存储介质
CN100390741C (zh) 程序处理系统、程序处理方法以及计算机程序
CN106933646B (zh) 一种创建虚拟机的方法及装置
CN111352644A (zh) 小程序更新方法、装置、服务器及存储介质
CN114696888B (zh) 卫星测运控系统的端口任务处理方法、装置、设备及介质
CN113141407B (zh) 一种页面资源加载方法、装置和电子设备
CN116627686A (zh) 网络设备的软件故障处理方法及装置
CN111881025B (zh) 一种自动化测试任务调度方法、装置及系统
CN112613955A (zh) 订单处理方法、装置、电子设备及存储介质
US8560544B2 (en) Clustering of analytic functions
CN111666156B (zh) 一种容器编排方法、装置、设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210601

RJ01 Rejection of invention patent application after publication