CN112153013A - 一种Socket数据转发方法、装置、电子设备和存储介质 - Google Patents
一种Socket数据转发方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112153013A CN112153013A CN202010909650.3A CN202010909650A CN112153013A CN 112153013 A CN112153013 A CN 112153013A CN 202010909650 A CN202010909650 A CN 202010909650A CN 112153013 A CN112153013 A CN 112153013A
- Authority
- CN
- China
- Prior art keywords
- socket data
- data
- forwarding
- socket
- program
- 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
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种socket数据转发方法、装置、电子设备和存储介质,其中,一种socket数据转发方法包括:接收到socket数据后,调用eBPF程序;利用所述eBPF程序对所述socket数据进行分配并转发。在本申请提供的方法中,eBPF程序是在内核态中运行的,因此由eBPF程序所进行的操作都是在内核态中完成的,减少了数据拷贝次数,解决了传输过程中多次数据拷贝,导致操作系统中数据传输速度慢的问题。
Description
技术领域
本申请涉及计算机领域,特别是涉及一种Socket数据转发的方法、装置、电子设备和存储介质。
背景技术
代理服务程序的主要功能是在两个TCP连接之间转发数据,在网关或网络代理等业务场景下,代理服务程序的使用频率十分高。但是代理服务程序在进行转发的过程中,要将传输的数据进行多次拷贝,降低了数据转发的效率。
在传统技术中,Linux操作系统的标准I/O接口是基于数据拷贝操作的,在这一过程中,会进行用户态和内核态的切换,且发生四次数据拷贝,而传输过程中的数据拷贝,导致了极大的CPU(Central Processing Unit,中央处理器)开销,造成了限制操作系统数据传输速度的问题。
目前针对传统技术中造成了限制操作系统数据传输速度的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种socket数据转发方法、装置、电子设备和存储介质,以至少解决相关技术中限制操作系统数据传输速度的问题。
第一方面,本申请实施例提供了一种socket数据转发方法,该方法包括:
接收到socket数据后,调用eBPF程序;
利用所述eBPF程序对所述socket数据进行分配并转发。
在其中一些实施例中,所述接收到socket数据后,调用eBPF包括:Linux操作系统的内核接收到所述socket数据后,通过触发eBPF程序中的钩子函数,调用所述eBPF程序。
在其中一些实施例中,所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。
在其中一些实施例中,所述利用所述eBPF程序对所述socket数据进行分配并转发,包括:
在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据;
在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述协议栈对所述socket数据处理并转发。
第二方面,本申请实施例提供了一种socket数据转发装置,该装置包括接收调用模块和分配转发模块;
所述接收调用模块,用于接收到socket数据后,调用eBPF程序;
所述分配转发模块,用于利用所述eBPF程序对所述socket数据进行分配并转发。
在其中一些实施例中,所述接收调用模块还用于在接收到所述socket数据后,触发eBPF程序中的钩子函数,利用所述钩子函数调用所述eBPF程序。
在其中一些实施例中,所述分配转发模块中的所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。
在其中一些实施例中,所述分配转发模块包括socket数据出口单元和协议栈单元;
所述socket数据出口单元,用于在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据;
所述协议栈单元,用于在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,所述协议栈对所述socket数据处理并转发。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的socket数据转发方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的socket数据转发方法。
相比于相关技术,本申请实施例提供的一种Socket数据转发的方法、装置、电子设备和存储介质,通过接收到socket数据后,调用eBPF程序;利用所述eBPF程序对所述socket数据进行分配并转发。在本申请提供的方法中,由于eBPF程序是在内核态中运行的,因此由eBPF程序所进行的操作都是在内核态中完成的,减少了数据拷贝次数,解决了传输过程中多次数据拷贝,导致操作系统中数据传输速度慢的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种socket数据转发方法的流程图;
图2是根据本申请实施例的另一种socket数据转发方法的流程图;
图3是根据本申请实施例的一种socket数据转发装置的结构图;
图4是根据本申请实施例的另一种socket数据转发装置的结构图;
图5是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本发明可以应用在任何Linux操作系统的发行版本中的socket数据传输。
本发明使用的eBPF(Extended Berkeley Packet Filter)是最新加入Linux内核的模块,虽然源于BPF(Berkeley Packet Filter)的网络包过滤,但是相比于BPF,加入了JIT(Just-In-Time),使得它实际上成了内核中的一个虚拟机。eBPF程序支持自己的字节码语言,基于该字节码语言编译成内核原生代码,并且在内核中运行。
本发明就是利用eBPF的技术,将本来在用户态执行的socket(套接字)转发功能下沉到内核态运行,减少了上下文切换,缩短转发逻辑路径,释放CPU算力,加速转发流程。
本发明中使用的协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程,由上层协议到底层协议,再由底层协议到上层协议。协议栈主要分为以下几种:
OSI协议栈:OSI协议栈是由国际标准化组织为提倡世界范围的互操作性而定义的。它通常被用于其它协议栈进行比较的标准。
TCP/IP协议组:传输控制协议/因特网协议(TCP/IP)是最早的网络协议栈之一。其中IP部分提供了一种对互联网络连接的最好定义,并且被许多厂商用于在局域或广域互联产品。
ZigBee协议栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4的PHY和MAC层,以及ZigBee堆栈层:网络层、应用层和安全服务提供层。
本实施例还提供了一种socket数据转发方法,可用于Linux操作系统中socket数据的转发。图1是根据本申请实施例的一种socket数据转发方法的流程图,如图1所示,所述方法包括:
步骤S101,接收到socket数据后,调用eBPF程序。接收上述socket数据的是Linux操作系统的内核。
步骤S102,利用所述eBPF程序对所述socket数据进行分配并转发。eBPF(ExtendedBerkeley Packet Filter)起源于Berkeley Packet Filter,是一个网络包过滤软件,同时eBPF程序支持自己的字节码语言,也可以基于该字节码语言编译成内核原生代码。eBPF程序在Linux操作系统的内核中运行。
通过上述步骤S101至步骤S102中,本申请实施例通过接收到socket数据后,调用eBPF程序;利用所述eBPF程序对所述socket数据进行分配并转发。在本申请提供的方法中,eBPF程序是在内核态中运行的,因此由eBPF程序所进行的操作都是在内核态中完成的,减少了数据拷贝次数,解决了传输过程中多次数据拷贝,导致操作系统中数据传输速度的问题。
在一个可选实施例中,所述接收到socket数据后,调用eBPF包括:Linux操作系统的内核接收到所述socket数据后,通过触发eBPF程序中的钩子函数,调用所述eBPF程序。接收到的socket数据触发在协议栈中预设的钩子函数后,Linux操作系统的内核会回调eBPF程序的功能函数,截留socket数据。
在一个可选实施例中,所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。其中,共享内存(shared memory)是指在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。
在一个可选实施例中,上述步骤S102,利用所述eBPF程序对所述socket数据进行分配并转发,包括:
在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据。该socket数据出口指的是一个socket流量接口。
在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述协议栈对所述socket数据处理并转发。交由协议栈处理即将该socket数据交给用户态的应用程序处理,会发生一次内核态到用户态的切换,同时也会产生一次数据拷贝。
上述共享内存中的过滤条件中包括所述socket数据的源地址、目的IP地址(Internet Protocol Address)和目的计算机端口(port)。每个socket数据都有它的源地址和指定的目的IP地址和目的计算机端口。在eBPF程序截留所述socket数据后,会判断所述socket数据的源地址是否和过滤条件中的源地址相同,若相同,则将该socket数据转发至过滤条件中源地址指定的IP地址和目的计算机端口;若不相同,则将所述socket数据交由协议栈处理即将该socket数据交给用户态的应用程序处理。
本实施例还提供了一种socket数据转发方法,可用于Linux操作系统中socket数据的转发。图2是根据本申请实施例的另一种socket数据转发方法的流程图,如图2所示,所述方法包括:
步骤S201,接收到socket数据后,调用eBPF程序。接收上述socket数据的是Linux操作系统的内核。
步骤S202,在所述socket数据符合过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据。该socket数据出口指的是一个socket流量接口。
步骤S203,在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述协议栈对所述socket数据处理并转发。交由协议栈处理即将该socket数据交给用户态的应用程序处理,会发生一次内核态到用户态的切换,同时也会产生一次数据拷贝。
通过上述步骤S201至步骤S203中,首先Linux操作系统的内核接收socket数据后,该socket数据会触发eBPF程序中的钩子函数,触发钩子函数后,Linux操作系统的内核会回调eBPF的功能函数,截留上述socket数据,eBPf程序会根据socket数据是否符合共享内存中的过滤条件对该socket数据进行处理,若符合,则将该socket数据交给用户态的应用程序,会产生一次内核态到用户态的切换,发生一次数据拷贝。在本申请提供的方法中,当socket数据符合共享内存中的过滤条件时,所有的操作都是在内核态中完成的,只有当socket数据不符合共享内存中的过滤条件时,会产生一次内核态到用户态的切换,发生一次数据拷贝。相比于传统技术中需要经过两次内核态与用户态的切换,四次数据拷贝,本申请提供的方法不需要经四次的数据拷贝,极大的节约了CPU的开销,提高了操作系统传输数据的速度。
在一个可选实施例中,所述接收到socket数据后,调用eBPF包括:Linux操作系统的内核接收到所述socket数据后,通过触发eBPF程序中的钩子函数,调用所述eBPF程序。接收到的socket数据触发在协议栈中预设的钩子函数后,Linux操作系统的内核会回调eBPF程序的功能函数,截留socket数据。
在一个可选实施例中,所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。其中,共享内存指(shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。
应该理解的是,虽然图1-图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图2中的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
本实施例还提供了一种socket数据转发装置,可用于Linux操作系统中socket数据的转发。图3是根据本申请实施例的一种socket数据转发方法的结构图,如图3所示,所述装置包括接收调用模块31和分配转发模块32。
上述接收调用模块31,用于接收到socket数据后,调用eBPF程序。接收上述socket数据的是Linux操作系统的内核。
上述分配转发模块32,用于利用所述eBPF程序对所述socket数据进行分配并转发。eBPF(Extended Berkeley Packet Filter)起源于Berkeley Packet Filter,是一个网络包过滤软件,同时eBPF程序支持自己的字节码语言,也可以基于该字节码语言编译成内核原生代码。eBPF程序在Linux操作系统的内核中运行。
通过上述接收调用模块31和分配转发模块32,接收到socket数据后,调用eBPF程序;利用所述eBPF程序对所述socket数据进行分配并转发。在本申请提供的方法中,eBPF程序是在内核态中运行的,因此由eBPF所进行的操作都是在内核态中完成的,减少了数据拷贝次数,解决了传输过程中多次数据拷贝,导致操作系统中数据传输速度慢的问题。
在一个可选实施例中,所述接收调用模块31还用于在接收到所述socket数据后,触发eBPF程序中的钩子函数,利用所述钩子函数调用所述eBPF程序。接收到的socket数据触发预设在协议栈中预设的钩子函数后,Linux操作系统的内核会回调eBPF程序的功能函数,截留socket数据。
在一个可选实施例中,所述分配转发模块32中的所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。其中,共享内存指(shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。
在一个可选实施例中,所述接收分配转发模块32包括socket数据出口单元和协议栈单元;
所述数据出口单元,用于在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据。该socket数据出口指的是一个socket流量接口。
所述协议栈单元,用于在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,所述协议栈对所述socket数据处理并转发。交由协议栈处理即将该socket数据交给用户态的应用程序处理,会发生一次内核态到用户态的切换,同时也会产生一次数据拷贝。
本实施例还提供了一种socket数据转发装置,可用于Linux操作系统中socket数据的转发。图4是根据本申请实施例的另一种socket数据转发方法的结构图,如图4所示,所述装置包括接收调用模块41、socket数据出口单元42和协议栈单元43。
上述接收调用模块41,用于接收到socket数据后,调用eBPF程序。接收上述socket数据的是Linux操作系统的内核。
上述socket数据出口单元42,用于在所述socket数据符合过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据。该socket数据出口指的是一个socket流量接口。
协议栈单元43,用于在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述协议栈对所述socket数据处理并转发。交由协议栈处理即将该socket数据交给用户态的应用程序处理,会发生一次内核态到用户态的切换,同时也会产生一次数据拷贝。
通过上述接收调用模块41、socket数据出口单元42和协议栈单元43,首先Linux操作系统的内核接收socket数据后,该socket数据会触发eBPF程序中的钩子函数,触发钩子函数后,Linux操作系统的内核会回调eBPF的功能函数,截留上述socket数据,eBPf程序会根据socket数据是否符合共享内存中的过滤条件对该socket数据进行处理,若符合,则将该socket数据交给用户态的应用程序,会产生一次内核态到用户态的切换,发生一次数据拷贝。在本申请提供的方法中,当socket数据符合共享内存中的过滤条件时,所有的操作都是在内核态中完成的,只有当socket数据不符合共享内存中的过滤条件时,会产生一次内核态到用户态的切换,发生一次数据拷贝。相比于传统技术中需要经过两次内核态与用户态的切换,四次数据拷贝,本申请提供的方法不需要经四次的数据拷贝,极大的节约率CPU的开销,提高了操作系统传输数据的速度。在本申请提供的方法中,当socket数据符合共享内存中的过滤条件时,所有的操作都是在内核态中完成的,只有当socket数据不符合共享内存中的过滤条件时,会产生一次内核态到用户态的切换,发生一次数据拷贝。相比于传统技术中需要经过两次内核态与用户态的切换,四次数据拷贝,本申请提供的方法不需要经四次的数据拷贝,极大的节约了CPU的开销。
在一个可选实施例中,所述接收调用模块31还用于Linux操作系统的内核接收到所述socket数据后,通过触发eBPF程序中的钩子函数,调用所述eBPF程序。接收到的socket数据触发在协议栈中预设的钩子函数后,Linux操作系统的内核会回调eBPF程序的功能函数,截留socket数据。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种socket数据转发装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
在一个实施例中,图5是根据本申请实施例的电子设备的内部结构示意图,如图5所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图5所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库动态方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
步骤S101,接收到socket数据后,调用eBPF程序。
步骤S102,利用所述eBPF程序对所述socket数据进行分配并转发。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
步骤S201,接收到socket数据后,调用eBPF程序。
步骤S202,在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据。
步骤S203,在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述该协议栈对该socket数据进行处理。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种socket数据转发方法,其特征在于,所述方法包括:
接收到socket数据后,调用eBPF程序;
利用所述eBPF程序对所述socket数据进行分配并转发。
2.根据权利要求1所述的方法,其特征在于,所述接收到socket数据后,调用eBPF包括:Linux操作系统的内核接收到所述socket数据后,通过触发eBPF程序中的钩子函数,调用所述eBPF程序。
3.根据权利要求1所述的方法,其特征在于,所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。
4.根据权利要求3所述的方法,其特征在于,所述利用所述eBPF程序对所述socket数据进行分配并转发,包括:
在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据;
在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,通过所述协议栈对所述socket数据处理并转发。
5.一种socket数据转发装置,其特征在于,所述装置包括接收调用模块和分配转发模块;
所述接收调用模块,用于接收到socket数据后,调用eBPF程序;
所述分配转发模块,用于利用所述eBPF程序对所述socket数据进行分配并转发。
6.根据权利要求5所述的装置,其特征在于,所述接收调用模块还用于在接收到所述socket数据后,触发eBPF程序中的钩子函数,利用所述钩子函数调用所述eBPF程序。
7.根据权利要求5所述的装置,其特征在于,所述分配转发模块中的所述eBPF程序是根据共享内存中配置的过滤条件对所述socket数据进行分配的。
8.根据权利要求7所述的装置,其特征在于,所述分配转发模块包括socket数据出口单元和协议栈单元;
所述socket数据出口单元,用于在所述socket数据符合所述过滤条件的情况下,将所述socket数据分配给socket数据出口,通过socket数据出口转发所述socket数据;
所述协议栈单元,用于在所述socket数据不符合所述过滤条件的情况下,将所述socket数据分配给协议栈,所述协议栈对所述socket数据处理并转发。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的一种socket数据转发方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至4中任一项所述的一种socket数据转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010909650.3A CN112153013B (zh) | 2020-09-02 | 2020-09-02 | 一种Socket数据转发方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010909650.3A CN112153013B (zh) | 2020-09-02 | 2020-09-02 | 一种Socket数据转发方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112153013A true CN112153013A (zh) | 2020-12-29 |
CN112153013B CN112153013B (zh) | 2023-04-18 |
Family
ID=73889885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010909650.3A Active CN112153013B (zh) | 2020-09-02 | 2020-09-02 | 一种Socket数据转发方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112153013B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114036569A (zh) * | 2021-11-25 | 2022-02-11 | 江苏安超云软件有限公司 | 基于eBPF的数据安全传输方法及装置 |
CN114039930A (zh) * | 2021-11-16 | 2022-02-11 | 中国联合网络通信集团有限公司 | 数据包处理方法及系统 |
CN114979303A (zh) * | 2022-04-29 | 2022-08-30 | 京东科技信息技术有限公司 | 网络数据包的服务质量处理方法、装置、设备和可读介质 |
CN115277558A (zh) * | 2022-07-29 | 2022-11-01 | 中国电信股份有限公司 | 报文发送方法、装置、计算机存储介质及电子设备 |
CN115904253A (zh) * | 2023-01-09 | 2023-04-04 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、一种存储系统及设备和介质 |
CN115277558B (zh) * | 2022-07-29 | 2024-06-07 | 中国电信股份有限公司 | 报文发送方法、装置、计算机存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633110A (zh) * | 2005-01-14 | 2005-06-29 | 中国科学院计算技术研究所 | 基于Linux内核的流量分析方法 |
CN102098227A (zh) * | 2011-03-03 | 2011-06-15 | 成都市华为赛门铁克科技有限公司 | 报文捕获方法及内核模块 |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
CN110855610A (zh) * | 2019-09-30 | 2020-02-28 | 视联动力信息技术股份有限公司 | 一种数据包的处理方法、装置及存储介质 |
US20200274952A1 (en) * | 2017-11-06 | 2020-08-27 | Intel Corporation | Technologies for programming flexible accelerated network pipeline using ebpf |
-
2020
- 2020-09-02 CN CN202010909650.3A patent/CN112153013B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633110A (zh) * | 2005-01-14 | 2005-06-29 | 中国科学院计算技术研究所 | 基于Linux内核的流量分析方法 |
CN102098227A (zh) * | 2011-03-03 | 2011-06-15 | 成都市华为赛门铁克科技有限公司 | 报文捕获方法及内核模块 |
US20200274952A1 (en) * | 2017-11-06 | 2020-08-27 | Intel Corporation | Technologies for programming flexible accelerated network pipeline using ebpf |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
CN110855610A (zh) * | 2019-09-30 | 2020-02-28 | 视联动力信息技术股份有限公司 | 一种数据包的处理方法、装置及存储介质 |
Non-Patent Citations (2)
Title |
---|
DOG250: "eBPF/sockmap实现socket转发offload", 《CSDN博客》 * |
IYACONTROL: "聊聊最近很火的eBPF", 《KUBERNETES SOLUTIONS》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114039930A (zh) * | 2021-11-16 | 2022-02-11 | 中国联合网络通信集团有限公司 | 数据包处理方法及系统 |
CN114039930B (zh) * | 2021-11-16 | 2023-12-01 | 中国联合网络通信集团有限公司 | 数据包处理方法及系统 |
CN114036569A (zh) * | 2021-11-25 | 2022-02-11 | 江苏安超云软件有限公司 | 基于eBPF的数据安全传输方法及装置 |
CN114979303A (zh) * | 2022-04-29 | 2022-08-30 | 京东科技信息技术有限公司 | 网络数据包的服务质量处理方法、装置、设备和可读介质 |
CN114979303B (zh) * | 2022-04-29 | 2024-04-05 | 京东科技信息技术有限公司 | 网络数据包的服务质量处理方法、装置、设备和可读介质 |
CN115277558A (zh) * | 2022-07-29 | 2022-11-01 | 中国电信股份有限公司 | 报文发送方法、装置、计算机存储介质及电子设备 |
CN115277558B (zh) * | 2022-07-29 | 2024-06-07 | 中国电信股份有限公司 | 报文发送方法、装置、计算机存储介质及电子设备 |
CN115904253A (zh) * | 2023-01-09 | 2023-04-04 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、一种存储系统及设备和介质 |
CN115904253B (zh) * | 2023-01-09 | 2023-06-13 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、一种存储系统及设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112153013B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112153013B (zh) | 一种Socket数据转发方法、装置、电子设备和存储介质 | |
US11777790B2 (en) | Communications methods and apparatus for migrating a network interface and/or IP address from one Pod to another Pod in a Kubernetes system | |
US11824962B2 (en) | Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks | |
US8589920B2 (en) | Resource allocation | |
CN107707622B (zh) | 一种访问桌面云虚拟机的方法、装置及桌面云控制器 | |
US10810034B2 (en) | Transparent deployment of meta visor into guest operating system network traffic | |
CN108965348B (zh) | 网络安全防护方法、设备及计算机可读存储介质 | |
US10191760B2 (en) | Proxy response program, proxy response device and proxy response method | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
US20230046979A1 (en) | Microservice call method and apparatus, device, and medium | |
EP4209905A1 (en) | Service mesh system employing microservice, and service governance method | |
CN111371694B (zh) | 一种分流方法、装置和系统、处理设备和存储介质 | |
CN107995326B (zh) | 一种容器网络的管理方法及装置 | |
CN112929264B (zh) | 业务流量传输方法、系统及网络设备 | |
CN113900774B (zh) | 云操作系统的虚拟机控制方法、装置以及存储介质 | |
CN114281263A (zh) | 容器集群管理系统的存储资源处理方法、系统和设备 | |
CN112702362B (zh) | Tcp/ip协议栈的增强方法、装置、电子设备及存储介质 | |
CN112243036B (zh) | PaaS服务的数据处理方法及装置、设备、存储介质 | |
JP2007513409A (ja) | コンピューティング装置における資源の割振り | |
US10846156B2 (en) | Methods, devices and computer program products for managing software function | |
US10791088B1 (en) | Methods for disaggregating subscribers via DHCP address translation and devices thereof | |
CN109257227B (zh) | 数据传输中的偶联管理方法、装置及系统 | |
US8521701B2 (en) | Reducing data transfer for matching patterns | |
US20200145371A1 (en) | Electronic apparatus for providing fast packet forwarding with reference to additional network address translation table | |
CN113918353B (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 |