CN110535813A - 内核态协议栈与用户态协议栈并存处理方法和装置 - Google Patents
内核态协议栈与用户态协议栈并存处理方法和装置 Download PDFInfo
- Publication number
- CN110535813A CN110535813A CN201810516951.2A CN201810516951A CN110535813A CN 110535813 A CN110535813 A CN 110535813A CN 201810516951 A CN201810516951 A CN 201810516951A CN 110535813 A CN110535813 A CN 110535813A
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- socket
- function
- message
- type
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000005314 correlation function Methods 0.000 claims abstract description 28
- 230000005540 biological transmission Effects 0.000 claims abstract description 22
- 230000009466 transformation Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 40
- 238000003672 processing method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 92
- 239000003550 marker Substances 0.000 description 9
- 238000000151 deposition Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000002054 transplantation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种内核态协议栈与用户态协议栈并存处理方法和装置,属于网络技术领域。方法包括:接管***套接字相关函数,使用符合POSIX标准一致的接口规范;改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。本发明实施例提供的内核态协议栈与用户态协议栈并存处理方法和装置,统一了内核态协议栈接口与用户态协议栈接口,实现了单应用多协议栈并存,对于需要使用用户态协议栈的应用程序,只需要根据用户态协议栈做简单的接口替换,应用程序源程序移植工作量小,***性能高。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种内核态协议栈与用户态协议栈并存处理方法和装置。
背景技术
随着网络通信技术的不断发展,网络通信的带宽与流量随之增大,网络协议栈的处理能力容易形成***性能的瓶颈。在传统的内核态协议栈中,网卡通过硬件中断通知协议栈有新的数据包到达,内核的网卡驱动程序负责处理这个硬件中断,将数据包从网卡队列拷贝到内核开辟的缓冲区中(DMA),然后数据包经过一系列的协议处理流程,最后送到用户程序指定的缓冲区中。在这个过程中,中断处理、内存拷贝、***调用(锁、软中断、上下文切换)等严重影响了网络数据包的处理能力。操作***的对应用程序和数据包处理的调度可能跨CPU调度,局部性失效进一步影响网络性能,而互联网的快速发展亟需高性能的网络处理能力。
用户态协议栈由于在用户态执行,没有了***调用和内存拷贝,使得***的网络性能有较大提升。用户态协议栈还可以根据不同需求做灵活定制,因此备受开发者青睐。现有的内核态协议栈与用户态协议栈并存处理方法中存在的主要问题是:让使用内核态协议栈的源程序与使用用户态协议栈的源程序并存,由于应用程序源程序无法局部改动,当应用程序从使用内核态协议栈移植到使用用户态协议栈时,需要修改大量的网络相关***调用接口,工作量大,导致***的整体性能不佳。
发明内容
本发明的实施例提供一种内核态协议栈与用户态协议栈并存处理方法和装置,用以解决应用程序从内核态协议栈切换到用户态协议栈过程中,应用程序源程序无法局部改动,移植工作量大的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种内核态协议栈与用户态协议栈并存处理方法,包括:
接管***套接字相关函数,使用符合POSIX标准一致的接口规范;
改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;
根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
在第一方面的第一种可能的实现方式中,改造接管后的***套接字相关函数,包括:
识别函数调用的套接字类型;
若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;
若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;
在所述创建套接字函数返回的文件描述符上添加协议栈标志位;
若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
在第一方面的第二种可能的实现方式中,所述改造应用程序对应的套接字函数,包括:
在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
在第一方面的第三种可能的实现方式中,根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,包括:
根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,包括:
根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第五种可能的实现方式中,包括:
根据报文头部特征,识别报文类型;
若报文类型为控制流,则使用内核态协议栈对报文进行处理;
若报文类型为数据流,则使用用户态协议栈对报文进行处理。
第二方面,本发明实施例提供一种内核态协议栈与用户态协议栈并存处理装置,包括:协议栈接口处理单元和报文处理单元;
所述协议栈接口处理单元用于接管***套接字相关函数,使用符合POSIX标准一致的接口规范;
所述协议栈接口处理单元还用于改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;
所述报文处理单元用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
在第二方面的第一种可能的实现方式中,协议栈接口处理单元用于改造接管后的***套接字相关函数,具体包括:
识别函数调用的套接字类型;
若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;
若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;
在所述创建套接字函数返回的文件描述符上添加协议栈标志位;
若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
在第二方面的第二种可能的实现方式中,协议栈接口处理单元用于改造应用程序对应的套接字函数,具体包括:
在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
在第二方面的第三种可能的实现方式中,所述报文处理单元用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,具体包括:
根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括协议栈类型选择单元;所述协议栈类型选择单元用于根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第五种可能的实现方式中,还包括协议栈类型识别单元;所述协议栈类型识别单元用于根据报文头部特征,识别报文类型;若报文类型为控制流,则使用内核态协议栈对报文进行处理;若报文类型为数据流,则使用用户态协议栈对报文进行处理。
本发明实施例提供的技术方案,通过接管***套接字相关函数,使用符合POSIX标准一致的接口规范,并进一步的通过改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一,进而根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。本发明实施例提供的技术方案,一方面,统一了内核态协议栈接口与用户态协议栈接口,方便应用程序源程序移植。另一方面,实现了单应用多协议栈并存,应用程序源程序可局部移植,降低了移植工作量。因此,本发明实施例提供的技术方案,对于需要使用用户态协议栈的应用程序,只需要根据用户态协议栈做简单的接口替换,应用程序源程序移植工作量小,***性能高。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被至少一个处理器执行时,可以实现上述第一方面或第一方面可能的实施方式以及有益效果。
第四方面,提供了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非易失性计算机可读存储介质,该计算机程序被执行时使计算机实现上述第一方面的方法的步骤,该计算机程序产品解决问题的实施方式以及有益效果可以参见上述第一方面或第一方面可能的实施方式以及有益效果,重复之处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明内核态协议栈与用户态协议栈并存处理方法实施例一的流程图;
图2为本发明实施例的双协议栈收包流程图;
图3为本发明实施例的双协议栈发包流程图;
图4为本发明装置实施例一的结构示意图;
图5为本发明装置实施例二的结构示意图;
图6为本发明另一个实施例提供的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
网路的核心是报文的转发过程,如果报文控制平面和数据转发平面不分离,报文先进入内核区然后拷贝到用户区,供给上层应用程序处理,并且为了全面的支持用户空间的各个功能,协议栈中嵌入了大量用于对接的接口。如果能让应用程序直接接管网络数据包处理、内存管理以及CPU调度,那么性能可以得到一个质的提升,特别是对于大规模的网络数据包。图1为本发明内核态协议栈与用户态协议栈并存处理方法实施例一的流程图,如图1所示,本实施例的方法可以包括以下内容。
S101、接管***套接字相关函数,使用符合POSIX标准一致的接口规范。
当数据报传输时需要跨越内核区和用户区时,数据报中断产生的上下文切换和数据复制的成本都极大限制了数据报文处理的速度,本实施例通过接管操作***的内核态协议栈接口可以绕过内核,利用用户态协议栈执行数据报传输。例如,可以用DPDK(DataPlane Development Kit,数据平面开发套件)来绕过内核。
S102、改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一。
现有的TCP/IP协议都是基于内核运行的,而用户态协议是另外开发的,用户态协议运行于内核之外。优选的,使用户态协议栈接口符合POSIX标准,以便于将内核态协议栈接口与用户态协议栈接口相统一。POSIX表示可移植操作***接口(Portable OperatingSystem Interface of UNIX,缩写为POSIX),POSIX标准定义了操作***应该为应用程序提供的接口标准。
具体的,改造接管后的***套接字相关函数,可以包括:识别函数调用的套接字类型;若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;在所述创建套接字函数返回的文件描述符上添加协议栈标志位;若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。改造应用程序对应的套接字函数,具体可以包括:在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
S103、根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈对报文进行处理。
具体的,根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
在具体应用中,通常根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。根据报文头部特征,识别报文类型;若报文类型为控制流,则使用内核态协议栈对报文进行处理;若报文类型为数据流,则使用用户态协议栈对报文进行处理。
图2为本发明实施例的双协议栈收包流程图。如图2所示,本实施例的双协议栈收包方法可以包括以下内容。
S201、网口接收报文。
S202、是否匹配用户态协议栈处理规则。
判断是否匹配用户态协议栈处理规则,如果为是,则执行S203,否则,执行S204。
S203、使用用户态协议栈处理报文。
S204、使用内核态协议栈处理报文。
S205、将报文交由上层应用程序处理。
具体过程为:网卡收到报文,根据用户设置的规则,判断是否需要走用户态协议栈,如果是,则进入用户态协议栈处理,否则进入内核态协议栈处理,协议栈处理完成后交由上层应用程序处理。
图3为本发明实施例的双协议栈发包流程图。如图3所示,本实施例的双协议栈发收包方法可以包括以下内容。
S301、上层应用程序报文。
S302、是否匹配用户态协议栈处理规则。
判断是否匹配用户态协议栈处理规则,如果为是,则执行S303,否则,执行S304。
S303、使用用户态协议栈处理报文。
S304、使用内核态协议栈处理报文。
S305、将报文交由网口发送出去。
具体过程为:上层应用程序要发送报文,根据用户设置规则,判断是否需要使用用户态协议栈,如果是,则进入用户态协议栈处理,否则进入内核态协议栈处理,协议栈处理完成后,从网口发送出去。
本实施中,一方面,通过统一内核态协议栈接口与用户态协议栈接口,方便应用程序源程序移植。另一方面,实现了单应用多协议栈并存,应用程序源程序可局部移植,降低了移植工作量。因此,本实施例提供的技术方案,对于需要使用用户态协议栈的应用程序,只需要根据用户态协议栈做简单的接口替换,应用程序源程序移植工作量小,***性能高。
如上所述的方法,优选的,用户态协议栈接口的类型参数中包括协议栈标志位,所述协议栈标志位用于标识协议栈类型。具体的,开发用户态协议栈过程中,应用程序创建套接字时,在类型参数的基础上添加一个用户态协议栈的协议栈标志位,应用程序其它套接字相关函数则无需改动。进一步的,根据协议栈接口的类型参数中是否包括协议栈标志位判断协议栈类型;根据判断出的协议栈类型,在返回的文件描述符上增加协议栈标志位。再进一步的,根据返回的文件描述符上的协议栈标志位选择协议栈,并在移除文件描述符上的协议栈标志位后调用选择的协议栈的函数。
本实施例中,无需使用用户态协议栈的源程序的框架设计和编码逻辑,对于需要使用用户态协议栈的应用程序源程序,只需要根据用户态协议栈做简单的接口替换。替换工作包括:
(1)应用程序创建套接字时,在类型参数的基础上添加一个协议栈标志位。
(2)应用程序其它套接字相关函数无需改动。
(3)应用程序接管***的套接字相关函数,使用与POSIX标准一致的接口。
对于创建套接字,将根据原有类型参数是否有协议栈标志,进行不同协议栈的套接字判断,在返回的文件描述符上新增协议栈标志位。
对于其它套接字相关函数,将根据文件描述符上的协议栈标志位,在移除标志位后,调用不同协议栈的函数。
如上所述的方法,优选的,所述报文传输规则,包括:若报文类型为控制流,则使用内核态协议栈对报文进行处理;若报文类型为数据流,则使用用户态协议栈对报文进行处理。
本实施例的方案,内核只用来处理控制流,所有数据流相关操作都在用户态进行处理,从而规避内核的包拷贝、线程调度、***调用、中断等性能瓶颈,并辅以各种性能调优手段,从而达到更高的性能。
图4为本发明装置实施例一的结构示意图,如图4所示,本实施例的装置可以包括:协议栈接口处理单元401和报文处理单元402。其中,协议栈接口处理单元401用于接管***套接字相关函数,使用符合POSIX标准一致的接口规范;协议栈接口处理单元401还用于改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;报文处理单元402用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
本实施例的装置可以用于执行图1所示方法实施例的方法,其实现原理和所要达到的技术效果类似,在此不再赘述。
如上所述的装置中,协议栈接口处理单元401用于改造接管后的***套接字相关函数,具体可以包括:识别函数调用的套接字类型;若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;在所述创建套接字函数返回的文件描述符上添加协议栈标志位;若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
如上所述的装置中,协议栈接口处理单元401用于改造应用程序对应的套接字函数,具体可以包括:在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
如上所述的装置中,报文处理单元402用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,具体可以包括:根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
本实施例的装置,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
图5为本发明装置实施例二的结构示意图,如图5所示,本实施例的装置还可以包括协议栈类型选择单元501和协议栈类型识别单元502,协议栈类型选择单元501用于根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。协议栈类型识别单元502用于根据报文头部特征,识别报文类型;若报文类型为控制流,则使用内核态协议栈对报文进行处理;若报文类型为数据流,则使用用户态协议栈对报文进行处理。
本实施例的装置,其实现原理和所要达到的技术效果上文中已有论述,在此不再赘述。
图6为本发明另一个实施例提供的装置的结构示意图,如图6所示,该装置包括至少一个处理器601(例如CPU),存储器603,和至少一个通信总线604,用于实现装置之间的连接通信。处理器601用于执行存储器603中存储的可执行模块,例如计算机程序。存储器603可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
在一些实施方式中,存储器603存储了程序605,程序605可以被处理器601执行,这个程序包括执行一种内核态协议栈与用户态协议栈并存处理方法,该方法包括:
接管***套接字相关函数,使用符合POSIX标准一致的接口规范;
改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;
根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
上述执行内核态协议栈与用户态协议栈并存处理方法的程序,优选地,改造接管后的***套接字相关函数,包括:
识别函数调用的套接字类型;
若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;
若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;
在所述创建套接字函数返回的文件描述符上添加协议栈标志位;
若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
上述执行内核态协议栈与用户态协议栈并存处理方法的程序,优选地,所述改造应用程序对应的套接字函数,包括:
在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
上述执行内核态协议栈与用户态协议栈并存处理方法的程序,优选地,根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,包括:
根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
上述执行内核态协议栈与用户态协议栈并存处理方法的程序,优选地,所述报文传输规则,包括:
根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。
上述执行内核态协议栈与用户态协议栈并存处理方法的程序,优选地,所述报文传输规则,包括:
根据报文头部特征,识别报文类型;
若报文类型为控制流,则使用内核态协议栈对报文进行处理;
若报文类型为数据流,则使用用户态协议栈对报文进行处理。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种内核态协议栈与用户态协议栈并存处理方法,其特征在于,包括:
接管***套接字相关函数,使用符合POSIX标准一致的接口规范;
改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;
根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
2.如权利要求1所述的方法,其特征在于,改造接管后的***套接字相关函数,包括:
识别函数调用的套接字类型;
若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;
若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;
在所述创建套接字函数返回的文件描述符上添加协议栈标志位;
若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
3.如权利要求1所述的方法,其特征在于,所述改造应用程序对应的套接字函数,包括:
在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
4.如权利要求1所述的方法,其特征在于,根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,包括:
根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
5.如权利要求1-4任一项所述的方法,其特征在于,所述报文传输规则,包括:
根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。
6.如权利要求1-4任一项所述的方法,其特征在于,所述报文传输规则,包括:
根据报文头部特征,识别报文类型;
若报文类型为控制流,则使用内核态协议栈对报文进行处理;
若报文类型为数据流,则使用用户态协议栈对报文进行处理。
7.一种内核态协议栈与用户态协议栈并存处理装置,其特征在于,包括:协议栈接口处理单元和报文处理单元;
所述协议栈接口处理单元用于接管***套接字相关函数,使用符合POSIX标准一致的接口规范;
所述协议栈接口处理单元还用于改造接管后的***套接字相关函数,以及改造应用程序对应的套接字函数,使得内核态协议栈接口与用户态协议栈接口相统一;
所述报文处理单元用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文。
8.如权利要求7所述的装置,其特征在于,协议栈接口处理单元用于改造接管后的***套接字相关函数,具体包括:
识别函数调用的套接字类型;
若所述函数调用的套接字类型是创建套接字函数,则继续判断所述创建套接字函数的类型参数是否含有协议栈标志位;
若所述创建套接字函数的类型参数不包含协议栈标志位,则在所述创建套接字函数的类型参数里添加协议栈标志位;
在所述创建套接字函数返回的文件描述符上添加协议栈标志位;
若所述函数调用的套接字函数类型不为创建套接字函数,则在所述套接字函数的类型参数上添加协议栈标志位。
9.如权利要求7所述的装置,其特征在于,协议栈接口处理单元用于改造应用程序对应的套接字函数,具体包括:
在应用程序执行创建操作时,在创建套接字函数的类型参数上添加协议栈标志位。
10.如权利要求7所述的装置,其特征在于,所述报文处理单元用于根据预先设置的报文传输规则,选择使用内核态协议栈或者用户态协议栈来处理应用程序的收发报文,具体包括:
根据返回的文件描述符上的协议栈标志位选择协议栈,当识别到套接字函数类型不为创建套接字函数时,在移除文件描述符上的协议栈标志位后调用选择的协议栈的套接字函数。
11.如权利要求7-10任一项所述的装置,其特征在于,还包括协议栈类型选择单元;所述协议栈类型选择单元用于根据报文处理效率需求对***套接字函数和应用程序对应的套接字函数的协议栈标志位进行设置。
12.如权利要求7-10任一项所述的装置,其特征在于,还包括协议栈类型识别单元;所述协议栈类型识别单元用于根据报文头部特征,识别报文类型;若报文类型为控制流,则使用内核态协议栈对报文进行处理;若报文类型为数据流,则使用用户态协议栈对报文进行处理。
13.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至6中任一项所述的内核态协议栈与用户态协议栈并存处理方法的步骤。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括存储了计算机程序的非易失性计算机可读存储介质,所述计算机程序被执行时使计算机实现权利要求1至6中任一项所述的内核态协议栈与用户态协议栈并存处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810516951.2A CN110535813B (zh) | 2018-05-25 | 2018-05-25 | 内核态协议栈与用户态协议栈并存处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810516951.2A CN110535813B (zh) | 2018-05-25 | 2018-05-25 | 内核态协议栈与用户态协议栈并存处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535813A true CN110535813A (zh) | 2019-12-03 |
CN110535813B CN110535813B (zh) | 2022-04-22 |
Family
ID=68656951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810516951.2A Expired - Fee Related CN110535813B (zh) | 2018-05-25 | 2018-05-25 | 内核态协议栈与用户态协议栈并存处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110535813B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111162833A (zh) * | 2020-04-08 | 2020-05-15 | 北京前沿探索深空科技有限公司 | 低轨卫星信息转发方法、装置、***以及控制器和介质 |
CN112261031A (zh) * | 2020-10-19 | 2021-01-22 | 腾讯科技(深圳)有限公司 | Tcp协议栈的更新方法、装置、设备及存储介质 |
CN112422453A (zh) * | 2020-12-09 | 2021-02-26 | 新华三信息技术有限公司 | 一种报文处理的方法、装置、介质及设备 |
CN112637329A (zh) * | 2020-12-21 | 2021-04-09 | 网络通信与安全紫金山实验室 | 一种多应用程序的标识方法、装置、设备及存储介质 |
CN112883007A (zh) * | 2021-02-20 | 2021-06-01 | 杭州迪普科技股份有限公司 | 用于Linux***的本机协议报文的处理方法及装置 |
CN113055269A (zh) * | 2019-12-27 | 2021-06-29 | 厦门网宿有限公司 | 虚拟专用网络数据的传输方法及装置 |
CN113259400A (zh) * | 2021-07-14 | 2021-08-13 | 南京易科腾信息技术有限公司 | 基于网络协议的网络交互***、方法及存储介质 |
CN114697194A (zh) * | 2022-02-17 | 2022-07-01 | 清华大学 | 阻塞式事件通知方法及装置 |
CN115174206A (zh) * | 2022-07-01 | 2022-10-11 | 江苏深网科技有限公司 | 透明网桥模式下的用户态应用安全检测方法及检测*** |
CN115334156A (zh) * | 2021-04-26 | 2022-11-11 | 深信服科技股份有限公司 | 报文的处理方法、装置、设备、存储介质 |
WO2022251998A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 支持多协议栈的通信方法及*** |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115827120A (zh) * | 2023-01-10 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
CN116846991A (zh) * | 2023-07-11 | 2023-10-03 | 中科驭数(北京)科技有限公司 | 网络应用数据转发方法及装置 |
CN117041379A (zh) * | 2023-07-10 | 2023-11-10 | 中科驭数(北京)科技有限公司 | 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置 |
CN117395329A (zh) * | 2023-12-13 | 2024-01-12 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070183418A1 (en) * | 2006-02-08 | 2007-08-09 | Level 5 Networks, Inc. | Method and apparatus for multicast packet reception |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN102339234A (zh) * | 2011-07-12 | 2012-02-01 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
US20120143979A1 (en) * | 2005-03-24 | 2012-06-07 | Olderdissen Jan Ra | Protocol stack using shared memory |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
US20160226961A1 (en) * | 2015-01-30 | 2016-08-04 | Nicira, Inc. | Edge datapath using user space network stack |
CN106302199A (zh) * | 2016-08-10 | 2017-01-04 | 成都广达新网科技股份有限公司 | 一种基于三层交换机设备的用户态协议栈实现方法及*** |
-
2018
- 2018-05-25 CN CN201810516951.2A patent/CN110535813B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120143979A1 (en) * | 2005-03-24 | 2012-06-07 | Olderdissen Jan Ra | Protocol stack using shared memory |
US20070183418A1 (en) * | 2006-02-08 | 2007-08-09 | Level 5 Networks, Inc. | Method and apparatus for multicast packet reception |
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN102339234A (zh) * | 2011-07-12 | 2012-02-01 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
US20160226961A1 (en) * | 2015-01-30 | 2016-08-04 | Nicira, Inc. | Edge datapath using user space network stack |
CN106302199A (zh) * | 2016-08-10 | 2017-01-04 | 成都广达新网科技股份有限公司 | 一种基于三层交换机设备的用户态协议栈实现方法及*** |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113055269A (zh) * | 2019-12-27 | 2021-06-29 | 厦门网宿有限公司 | 虚拟专用网络数据的传输方法及装置 |
CN113055269B (zh) * | 2019-12-27 | 2023-03-07 | 厦门网宿有限公司 | 虚拟专用网络数据的传输方法及装置 |
CN111162833A (zh) * | 2020-04-08 | 2020-05-15 | 北京前沿探索深空科技有限公司 | 低轨卫星信息转发方法、装置、***以及控制器和介质 |
CN112261031A (zh) * | 2020-10-19 | 2021-01-22 | 腾讯科技(深圳)有限公司 | Tcp协议栈的更新方法、装置、设备及存储介质 |
CN112261031B (zh) * | 2020-10-19 | 2023-08-29 | 腾讯科技(深圳)有限公司 | Tcp协议栈的更新方法、装置、设备及存储介质 |
CN112422453A (zh) * | 2020-12-09 | 2021-02-26 | 新华三信息技术有限公司 | 一种报文处理的方法、装置、介质及设备 |
CN112422453B (zh) * | 2020-12-09 | 2022-05-24 | 新华三信息技术有限公司 | 一种报文处理的方法、装置、介质及设备 |
CN112637329A (zh) * | 2020-12-21 | 2021-04-09 | 网络通信与安全紫金山实验室 | 一种多应用程序的标识方法、装置、设备及存储介质 |
CN112883007A (zh) * | 2021-02-20 | 2021-06-01 | 杭州迪普科技股份有限公司 | 用于Linux***的本机协议报文的处理方法及装置 |
CN115334156A (zh) * | 2021-04-26 | 2022-11-11 | 深信服科技股份有限公司 | 报文的处理方法、装置、设备、存储介质 |
WO2022251998A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 支持多协议栈的通信方法及*** |
CN113259400A (zh) * | 2021-07-14 | 2021-08-13 | 南京易科腾信息技术有限公司 | 基于网络协议的网络交互***、方法及存储介质 |
CN114697194A (zh) * | 2022-02-17 | 2022-07-01 | 清华大学 | 阻塞式事件通知方法及装置 |
CN114697194B (zh) * | 2022-02-17 | 2023-07-14 | 清华大学 | 阻塞式事件通知方法及装置 |
CN115174206A (zh) * | 2022-07-01 | 2022-10-11 | 江苏深网科技有限公司 | 透明网桥模式下的用户态应用安全检测方法及检测*** |
CN115174206B (zh) * | 2022-07-01 | 2024-04-02 | 江苏深网科技有限公司 | 透明网桥模式下的用户态应用安全检测方法及检测*** |
CN115460470A (zh) * | 2022-08-19 | 2022-12-09 | 武汉烽火技术服务有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115460470B (zh) * | 2022-08-19 | 2024-03-26 | 烽火通信科技股份有限公司 | 组播数据转发方法、装置、设备及可读存储介质 |
CN115827120B (zh) * | 2023-01-10 | 2023-05-23 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
CN115827120A (zh) * | 2023-01-10 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
WO2024148858A1 (zh) * | 2023-01-10 | 2024-07-18 | 苏州元脑智能科技有限公司 | 用户态网络栈调用、用户态接口设置方法和装置 |
CN117041379A (zh) * | 2023-07-10 | 2023-11-10 | 中科驭数(北京)科技有限公司 | 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置 |
CN117041379B (zh) * | 2023-07-10 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 同时监听用户态协议栈和内核态协议栈新建连接的方法及装置 |
CN116846991A (zh) * | 2023-07-11 | 2023-10-03 | 中科驭数(北京)科技有限公司 | 网络应用数据转发方法及装置 |
CN117395329A (zh) * | 2023-12-13 | 2024-01-12 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
CN117395329B (zh) * | 2023-12-13 | 2024-02-06 | 井芯微电子技术(天津)有限公司 | 收发以太二层协议报文的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110535813B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535813A (zh) | 内核态协议栈与用户态协议栈并存处理方法和装置 | |
CN106464530B (zh) | 网络更新的动态调度的方法和*** | |
CN105577567B (zh) | 基于Intel DPDK的网络数据包并行处理方法 | |
US9794370B2 (en) | Systems and methods for distributed network-aware service placement | |
CN104052789B (zh) | 用于虚拟联网***的负载平衡的方法和*** | |
CN104025049B (zh) | 生成指示寄存器活跃度的编译代码 | |
Morreale et al. | Software defined networking: Design and deployment | |
CN101390079B (zh) | 迁移拥有诸如硬件设备等资源的虚拟机 | |
EP4080362A2 (en) | Method and apparatus for creating a container | |
US20180131777A1 (en) | Systems and methods for decentralized service placement in a resource pool | |
US8813093B2 (en) | Integration of disparate applications on a network | |
CN110325968A (zh) | 分布式计算***中的***升级管理 | |
CN107526645A (zh) | 一种通信优化方法及*** | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN104253831A (zh) | 一种用于在云计算环境中部署应用的方法和*** | |
CN108737560A (zh) | 云计算任务智能调度方法及***、可读存储介质、终端 | |
CN108322325A (zh) | 一种虚拟机管理方法及装置 | |
CN103294556B (zh) | 用于主机***准入控制的方法和*** | |
CN110138553A (zh) | 一种IPSec VPN网关数据包处理装置及方法 | |
CN110149231A (zh) | 更新虚拟交换机的方法、装置、存储介质和设备 | |
CN108008950A (zh) | 一种用户界面更新的实现方法及装置 | |
CN108605017A (zh) | 查询计划和操作感知通信缓冲区管理 | |
US20230221981A1 (en) | Sidecar-based integration capabilities for containerized applications | |
CN110007877A (zh) | 主机与双控存储设备间数据传输方法、装置、设备及介质 | |
CN109802951A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220422 |