CN115904691A - 协调内核空间和用户空间之间的数据包处理 - Google Patents
协调内核空间和用户空间之间的数据包处理 Download PDFInfo
- Publication number
- CN115904691A CN115904691A CN202111375998.XA CN202111375998A CN115904691A CN 115904691 A CN115904691 A CN 115904691A CN 202111375998 A CN202111375998 A CN 202111375998A CN 115904691 A CN115904691 A CN 115904691A
- Authority
- CN
- China
- Prior art keywords
- space
- thread
- kernel
- user
- data packet
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/021—Ensuring consistency of routing table updates, e.g. by using epoch numbers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种系统可以包括一组处理器内核,被配置为内核空间中生成内核空间线程,并且在在Linux操作系统的用户空间中生成用户空间线程。每个内核空间线程可由处理器内核之一执行以执行操作。例如,内核空间线程可以接收经由网络从客户端设备发送的数据包。内核空间线程可以确定分派给正在执行内核空间线程的处理器内核的特定通信信道。内核空间线程可以基于从数据包中提取的信息来确定数据包是否满足条件。响应于确定数据包不满足条件,内核空间线程可以经由特定通信信道将数据从数据包发送到用户空间线程。用户空间线程可以被配置为接收和处理数据。
Description
技术领域
本公开通常涉及在计算系统中处理数据包。更具体地,但不是作为限制,本公开涉及协调操作系统中内核空间和用户空间之间的数据包处理。
背景技术
计算机使用操作系统来管理系统处理和资源。一些操作系统,如Linux操作系统,包括低级软件组件,称为内核,用于管理系统处理和资源。操作系统的内存可以分为两个不同的区域:内核空间和用户空间。内核空间是内核执行和提供其服务的地方。用户空间是用户处理(例如,除内核之外的所有)执行的地方。通常,内核空间仅能由用户处理通过系统调用来访问。系统调用是由内核执行的用于服务(如输入/输出(I/O)服务)的由用户处理的请求。用户处理可以调用系统调用,使内核在内核空间执行任务。相反,内核可以执行向上调用(upcall)。向上调用是由内核对用户处理在用户空间执行任务的请求。
附图说明
图1是根据本公开的一些方面的包括用于协调数据流的内核空间和用户空间的系统的示例的框图。
图2是根据本公开的一些方面的包括用于协调数据流的多个处理器内核的系统的框图。
图3是根据本公开的一些方面的由内核空间线程执行的用于控制(handle)数据包的处理的示例的流程图。
图4是根据本公开的一些方面的由内核空间线程和用户空间线程执行的用于控制数据包的处理的示例的流程图。
图5是根据本公开的一些方面的由生成映射的处理线程执行的处理的示例的流程图。
图6是根据本公开的一些方面的包括用于协调数据流的多个处理线程的系统的示例的框图。
具体实施方式
具有多个处理器内核的计算系统可以经由端口接收数据包。在一些情况下,可以在每个端口和每个处理器内核之间建立通信信道,以将数据包发送到处理器内核进行处理。例如,具有两个处理器内核和三个端口的计算系统可以建立六个通信信道,使得在第一处理器内核和三个端口之间存在第一组通信信道,并且在第二处理器内核和三个端口之间存在第二组通信信道。但是在给定有限数量的可用计算资源(例如,处理能力和存储器)的情况下,可以在给定计算系统上创建的通信信道的数量是有限制的。因此,这种方法可以快速达到可以创建的最大通信信道数量,从而导致缩放问题。
计算系统在如何控制数据包方面也会有其他问题。例如,每个数据包可以由任何处理器内核接收。但是,当处理器内核接收到数据包时,它可能会触发雷群问题(thundering herd problem),其中计算系统中的大量处理或线程同时被“唤醒”,并尝试处理数据包,即使只有一个处理或线程实际上可以这样做。这可能导致处理或线程不必要地消耗和竞争资源,这可能对计算系统的性能产生负面影响。计算系统也可能难以以特定顺序处理多个数据包。例如,计算系统可以为每个端口建立单个通信信道。单个端口可能有多个线程处理来自该端口的数据包。如果该端口以特定顺序接收到多个数据包,则多个线程可以处理多个数据包。因为一些线程可能比其他线程更快地处理数据包,或者因为数据处理如何在线程之间分布,所以多个数据包可能被无序(例如,以不同于数据包被接收的顺序的顺序)处理。这可能会在维护数据包顺序是重要的各种环境中引起问题。
本公开的一些示例可以通过生成内核空间线程到用户空间线程的一对一映射来克服一个或多个上述问题,使得相同类型的数据包由相同的内核空间线程和相同的用户空间线程来控制。内核空间线程是在内核空间中运行的处理线程,用户空间线程是在用户空间中运行的处理线程。更具体地,计算系统可以包括多个线程对,其中每个线程对包括单个内核空间线程和单个用户空间线程。用户空间线程可以在其自身和内核空间线程之间建立单个通信通道。Linux内核可以接收数据包,并根据预定义的分发方案在内核空间线程之间分发传入的数据包,例如,使得相同类型的数据包被一致地(consistently)分发到相同的内核空间线程。这反过来可能有助于确保数据包由相同用户空间线程控制。因为相同类型的数据包由相同的内核空间线程和相同的用户空间线程一致地处理,所以可以避免上述顺序问题。并且通过使用相同的内核空间线程和用户空间线程来一致地处理相同类型的数据包,也可以避免上述的缩放问题和雷群问题。
作为一个特定示例,上述技术可以由网络交换机、路由器或执行具有内核的Linux操作系统的其他网络组件来实现。在接收到数据包之后,网络组件的内核空间线程可以确定位于Linux内核中的流表中是否存在数据包的流路径。该流表可以是流路径的表。流路径可以对应于数据包类型,并且可以包括用于如何控制该类型的数据包的指令。如果存在针对数据包的流路径,内核空间线程可以在数据包上执行流路径中包含的指令。如果流路径不存在,内核空间线程可以经由通信信道将数据包发送(例如,经由向上调用)到对应于内核空间线程的用户空间线程,使得用户空间线程可以进一步处理数据包。例如,用户空间线程可以确定用于数据包的流路径。用户空间线程可以将描述流路径的数据发送到内核空间线程,内核空间线程可以接收数据并将流路径添加到流表。此后,内核空间线程可以接收与先前操作的数据包相似(例如,与其相同类型)的新数据包。因为内核空间线程现在可能在流表中具有必需的流路径信息,所以内核空间线程可以访问流路径并相应地控制数据包,而不是再次依赖用户空间线程来处理新的数据包。这可以减少时延并节省计算资源。
给出这些说明性示例是为了向读者介绍这里讨论的一般主题,而不是为了限制所公开概念的范围。以下部分参照附图描述了各种附加特征和示例,其中相似的数字指示相似的元件,但是,与说明性示例一样,不应用于限制本公开。
图1是根据本公开的一些方面的包括用于协调数据流的内核空间102和用户空间106的系统100的示例的框图。内核空间102和用户空间106可以存在于Linux操作系统的存储器中。内核空间102可以包括内核空间线程104a-f,其中内核空间线程104a-f是在内核空间102中执行的处理线程。用户空间106可以包括用户空间线程108a-f,其中用户空间线程108a-f是在用户空间106中执行的处理线程。内核空间线程104a-f和用户空间线程108a-f可以由处理器内核执行。
用户空间线程108a-f可以生成通信信道112a-f,用于使用户空间线程108a-f和内核空间线程104a-f能够彼此(例如,双向)通信。通信信道112a-f的示例可以包括网络链接套接字(netlink socket)或共享存储器位置。每个用户空间线程108可以生成一个通信信道112,并且每个通信信道112可以与一个内核空间线程104相关联。在一些示例中,成对的内核空间线程和用户空间线程,例如内核空间线程104a和用户空间线程108a,可以由相同的处理器内核或不同的处理器内核执行。
在生成通信信道之后,用户空间线程108a-f可以向内核空间线程104a-f发送通信信道112a-f的标识符。标识符的示例可以包括网络链接套接字ID或存储器位置。内核空间线程104a-f中的一个或多个可以使用标识符来生成映射120。映射120可以指示用户空间线程108a-f和内核空间线程104a-f之间的关系。例如,映射120可以定义通信信道标识符和执行内核空间线程104a-f的处理器内核之间的关系。这种映射120的示例在图1的虚线框中示出。
一旦生成了映射120,一个或多个客户端设备116可以向位于内核空间102内的处理线程110发出数据包118。因此,处理线程110是内核空间线程。处理线程110可以包括一个或多个分发方案122。数据包118可以包括数据包序列,该数据包序列可以由处理线程110根据分发方案122分发到各个内核空间线程104a-f。分发方案122可以预先定义。分发方案122的示例可以包括接收流操纵(“RFS”)、接收端缩放(“RSS”)和接收分组操纵(“RPS”)。
在接收到数据包118之后,内核空间线程104,例如内核空间线程104c,可以处理数据包118。在一些示例中,处理数据包118可以包括从数据包118中提取信息(例如,报头数据或有效载荷数据),并分析提取的信息以确定其是否满足一个或多个预定义标准。例如,系统100可以是诸如Open vSwitch的虚拟交换机的一部分。在一些这样的示例中,内核空间线程104c可以分析数据包118的报头数据,以确定数据包118是否对应于内核空间102中的流表124中定义的任何流路径126。如果数据包118对应于流表124中的流路径126,内核空间线程104c可以执行与对应于数据包118的流路径126相关联的动作。例如,内核空间线程104c可以将数据包118发送出系统100到达目的地。如果数据包118不对应于流表124中的任何流路径126,这可能意味着用于数据包118的流路径还不存在于流表124中。因此,内核空间线程104c可以与用户空间106协调,使得数据包118可以在用户空间106中被进一步处理。与用户空间106的协调可以包括将数据包118或从中提取的信息发送到用户空间106,用于由相应的用户空间线程进一步处理。
内核空间线程104c可以经由通信信道112a-f之一将数据包118或从中提取的信息发送到用户空间106。为了确定使用哪个通信信道,内核空间线程104c访问映射120。例如,内核空间线程104c可以确定哪个特定处理器内核正在执行内核空间线程104c。内核空间线程104c然后可以访问映射120以识别与该处理器内核相关联的特定通信信道112c。例如,通信信道112c可以在映射120中与执行内核空间线程104c的处理器内核相关联。因此,内核空间线程104c可以经由通信信道112c将数据包118发送到对应于该通信信道112c的任何用户空间线程108a-f。因为图1中用户空间线程108c对应于的通信信道112c,所以用户空间线程108c可以接收数据包118并对数据包118执行附加处理。例如,用户空间线程108c可以基于从数据包118提取的信息来确定用于数据包118的流路径。用户空间线程108c然后可以使得要被包括在流表124中的流路径。例如,用户空间线程108c可以指示到内核空间线程104c的流路径,内核空间线程104c又可以将该流路径合并到流表124中。
在上述示例中,内核空间线程104c响应于确定数据包118不满足一个或多个预定义标准,向用户空间线程108c提供数据包118。具体地,内核空间线程104c响应于确定数据包118不对应于流表124中的任何流路径126,向用户空间线程108c提供数据包118。但是,出于其他原因,内核空间线程104c可以附加地或替代地向用户空间线程108c提供数据包118。例如,内核空间线程104c可以响应于确定数据包118确实满足一个或多个预定义标准,向用户空间线程108c提供数据包118。在一个这样的示例中,内核空间线程104c可以确定数据包118具有在流表124中对应的流路径。但是该流路径可以包括用于内核空间线程104c向用户空间线程108c提供(例如,通过向上调用)数据包118的指令,使得用户空间线程108c可以进一步处理数据包118(例如,而不是内核空间线程104c)。例如,向特定的用户空间应用提供数据包118,或者因为内核空间线程104c不支持特定的计算操作,这可以被完成。基于这些指令,内核空间104c仍然可以向用户空间线程108c提供数据包118。
如上所述,处理线程110可以基于分发方案122将相同类型的数据包118转发给单个内核空间线程104。这可以允许数据包118由相同的内核空间线程104(并因此由相同的用户空间线程108)依次处理。通过按顺序处理数据包118,可以允许数据包118以与它们被处理线程110接收的顺序相同的顺序被发送到目的地。这样,数据包118的顺序可以被保留,使得它们以正确的顺序到达目的地。
尽管图1描绘了组件的特定数量和布置,但这是为了说明的目的,而非限制性的。其他示例可以包括更多组件、更少组件、不同组件或图1所示组件的不同布置。
图2是根据本公开的一些方面的包括用于协调数据流的多个处理器内核204a-d的系统202的框图。尽管图2示出了四个处理器内核204a-d,但是在其他示例中,系统202可以包括更多或更少的处理器内核。系统202可以包括Linux操作系统203,其包括内核空间102和用户空间106。内核空间102和用户空间106可以分别包含内核空间线程104a-d和用户空间线程108a-d。每个处理器内核204可以执行内核空间线程104和用户空间线程108。
处理器内核204a-d的非限制性示例包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、微处理器等。处理器内核204a-d可以执行存储在存储器中的指令来进行操作。指令可以包括由编译器或解释器从用任何合适的计算机编程语言(例如C、C++、C#等)编写的代码中生成的处理器专用指令。在一些示例中,指令可以对应于内核空间线程104a-d或用户空间线程108a-d。
系统202还可以包括存储器。存储器可以具有分派给内核空间102的一组存储器位置和分派给用户空间106的另一组存储器位置。存储器可以包括一个存储器设备或多个存储器设备。存储器可以是非易失性的,并且可以包括任何类型的在断电时保留存储信息的存储器。存储器的非限制性示例包括电可擦除可编程只读存储器(EEPROM)、闪存或任何其他类型的非易失性存储器。至少一些存储器可以包括处理器内核204a-d可以从中读取指令的非暂时性计算机可读介质。计算机可读介质可以包括能够向处理器内核204a-d提供计算机可读指令或其他程序代码的电子、光学、磁性或其他存储设备。计算机可读介质的非限制性示例包括磁盘、存储芯片、ROM、随机存取存储器(RAM)、ASIC、配置的处理器、光存储器或计算机处理器可以从中读取指令的任何其他介质。
处理器内核204a-d可以执行指令来进行操作。例如,客户端设备116可以向系统202发出数据包118。数据包118可以被分发到在处理器内核204a上执行的内核空间线程104a。内核空间线程104a可以从数据包118中提取信息206。内核空间线程104a可以使用信息206来确定数据包118是否满足条件。例如,条件可以是是否存在用于数据包118的流路径126。如果条件不满足,内核空间线程104a可以将数据包118或从中提取的信息206发送到对应于内核空间线程104a的用户空间线程108a。用户空间线程108a和内核空间线程104a可以由相同处理器内核204a执行。用户空间线程108a可以接收和处理数据包118或信息206。例如,用户空间线程108a可以检查、过滤或分析数据包118。基于处理结果,用户空间线程108a可以执行一个或多个计算操作。例如,用户空间线程108a可以将数据包118传递给诸如网络服务器的应用。作为另一个示例,用户空间线程108a可以确定用于数据包的流路径,并将该流路径插入流表。作为又一示例,用户空间线程108a可以拒绝数据包118(例如,如果数据包被确定为可疑或恶意的)。
图3是根据本公开的一些方面,由内核空间线程104a执行的用于控制数据包118的处理300的示例的流程图。其他示例可以包括比图3所示更多的步骤、更少的步骤、不同的步骤或不同顺序的步骤。图3的步骤将在下面参考上面结合图2讨论的组件进行讨论。
在框302中,在处理器内核204a上执行的内核空间线程104a接收经由网络从客户端设备116发送的数据包118。网络可以是局域网或互联网。
在框304中,内核空间线程104a从分配给处理器内核204a-d的一组通信信道112a-d中确定分配给包括内核空间线程104a的处理器内核204a的特定通信信道112a。内核空间线程104a可以通过访问位于存储器中的映射120来确定特定通信信道112a。每个通信信道112可以与单个处理器内核204相关联,并且映射120可以包括关联表。
在框306中,内核空间线程104a基于从数据包118中提取的信息206(例如,报头数据、有效载荷数据等)确定数据包118是否满足条件。例如,信息206可以包括源地址,诸如IP地址或MAC地址。内核空间线程104a可以访问位于存储器中的流表124,以确定是否存在用于具有特定源地址的数据包118的流路径126。如果存在用于源地址的流路径126,则数据包118满足条件,并且内核空间线程104a可以根据流路径126中的指令处理数据包118。如果数据包118不满足条件,则处理300继续到框308。
在框308中,响应于确定数据包118不满足条件,内核空间线程104a经由特定通信信道112a将数据从数据包118发送到多个用户空间线程108的用户空间线程108a。数据可以与信息206相同或不同。用户空间线程108a被配置成接收和处理数据。用户空间线程108a可以具有用于处理内核空间线程104a可能不具有的数据的额外的指令和资源。用户空间线程108a可以在处理之后将数据包118发送到目的地(例如,远离系统202)。
图4是根据本公开的一些方面,由内核空间线程104a和用户空间线程108a执行的用于控制数据包118的处理400的示例的流程图。其他示例可以包括比图4所示更多的步骤、更少的步骤、不同的步骤或不同顺序的步骤。图4的步骤将在下面参考上面结合图2讨论的组件进行讨论。
在框402中,内核空间线程104a确定流表124中是否存在用于数据包118的流路径126。为此,内核空间线程104a可以确定流表124中的流路径126是否与从数据包118中提取的信息206相关联。
在框404中,响应于确定流路径126不存在于流表124中,内核空间线程104a经由特定通信信道112a向用户空间线程108a发送数据包118。
在框406中,用户空间线程108a经由特定通信信道112a接收数据包118。
在框408中,响应于接收到数据包118,用户空间线程108a确定用于数据包118的流路径126。特别地,用户空间线程108a可以使用从数据包118中提取的信息206来确定流路径126。用户空间线程108a可以使用预定的用户定义的标准来为数据包118分配流路径。
在框410中,响应于确定流路径126,用户空间线程108a使得用于数据包118的流路径126被添加到流表124。例如,用户空间线程108a可以经由通信信道112a向内核空间线程104a指示流路径126。在一些示例中,通信信道112a可以是内核空间线程104a和用户空间线程108a之间的共享存储器位置。例如,用户空间线程108a可以将描述流路径126的数据存储在共享存储器位置中,并且内核空间线程104a可以访问共享存储器位置来检索数据。在其他示例中,通信信道112a可以是用于将描述流路径126的数据从用户空间线程108a发送到内核空间线程104a的网络链路套接字。内核空间线程104a然后可以将流路径126添加到流表124。可选地,用户空间线程108a可以直接将流路径126添加到流表124。将流路径126添加到流表124可以允许内核空间102接收的后续数据包118由内核空间线程104而不是用户空间线程108来处理,以便减少时延并节省计算资源(例如,处理能力和存储器)。
图5是根据本公开的一些方面的用于生成映射120的处理500的示例的流程图。其他示例可以包括比图5所示更多的步骤、更少的步骤、不同的步骤或不同顺序的步骤。图5的步骤将在下面参考上面结合图1-2讨论的组件进行讨论。
在框502中,一个或多个处理线程从用户空间线程108接收通信信道112的标识符。一个或多个处理线程的示例可以包括一个或多个内核空间线程104、处理线程110或它们的任意组合。每个用户空间线程108可以生成单个通信信道112。每个通信信道112可以与单个处理器内核204相关联。在一个示例中,用户空间线程108a可以生成具有标识符的通信信道112a。通信信道112a可以是具有网络链接套接字ID的网络链接套接字。处理线程可以从用户空间108a接收网络链接套接字ID。
在框504中,处理线程110基于标识符生成映射120。在一些示例中,映射120可以是通信信道标识符(例如,网络链接套接字ID)和处理器内核标识符之间的关联表。处理器内核标识符可以识别处理器内核204。处理器内核204可以执行发出通信信道标识符的用户空间线程108。通信信道可以在映射120中与处理器内核204相关的原因是内核空间102和用户空间106可以具有计算机系统的不同视图(view)(例如,处理器内核204a-d的可用数),因此在映射120中使用处理器内核可以在用户空间106和内核空间102之间提供公共索引机制。映射120可以由内核空间线程104访问,用于确定将数据包118发送到的通信信道,以供用户空间线程进一步处理。
虽然上述示例涉及内核空间线程向用户空间线程提供数据包,但是本公开并不旨在局限于这种布置。也可以应用类似的技术,使得内核空间线程向其他内核空间线程提供数据包,用户空间线程向其他用户空间线程提供数据包,或者用户空间线程向内核空间线程提供数据包。因此,系统中的任何处理线程都可以向任何其他处理线程提供数据包,而不管其他处理器线程是位于相同处理器内核上还是不同的处理器内核上。这将在下面参考图6进一步详细描述。
图6是根据本公开的一些方面的包括用于协调数据流的多个处理线程602a和602b的系统600的示例的框图。在一些示例中,诸如系统600的计算系统可以包括处理线程对。如图1和2所描绘的,处理线程对可以包括一个内核空间线程和一个用户空间线程。可选地,处理线程对可以包括计算系统中的任意两个线程,例如处理线程602a和602b。在图6所描绘的例子中,处理线程602a和602b可以两者都是用户空间线程或者两者都是内核空间线程。处理线程602a-b可以位于系统600中的存储器604中。如图6所示,处理线程602a-b可以由系统600中的单个处理器内核606执行,以协调数据流。可选地,处理线程602a可以由系统600中的第一处理器内核执行,而处理线程602b可以由第二处理器内核执行。
处理线程602a-b可以以类似于上面参照图1-5描述的系统和方法的方式协调数据流。例如,处理线程602b可以生成用于使处理线程602a-b能够彼此(例如,双向)通信的通信信道608。处理线程602b可以向处理线程602a发送通信信道608的标识符。处理线程602a可以使用该标识符来生成映射610,该映射可以指示处理线程602a-b之间的关系。处理线程602a可以从客户端设备614接收数据包612。处理线程602a可以处理数据包612,以确定数据包612是否对应于流表618中的流路径616。如果数据包612不对应于任何流路径616,则处理线程602a可以经由通信信道608将数据包612或从中提取的信息发送到处理线程602b。处理线程602b可以对数据包612执行进一步的处理。
在一些示例中,系统600可以使用较慢的处理路径或较快的处理路径来处理数据包612。较快的处理路径可以这样被指定,因为它以比较慢的处理路径更快的速率处理数据包。与在较慢的处理路径中处理数据包612相比,在较快的处理路径中处理数据包612可以导致数据包612的较快处理。系统600可以基于任何合适的标准,例如数据包612的一个或多个属性,在较慢的处理路径和较快的处理路径之间进行选择。例如,系统600(例如,处理线程602a)可以通过确定数据包612的属性并将其与流表618中存储的属性进行比较来选择用于数据包612的处理路径,以确定数据包612是否对应于流表618中的任何流路径616。如果数据包612对应于流表618中的流路径616,则可以选择快速处理路径。在快速处理路径中,处理线程602a可以从流表618中提取对应于流路径616的一个或多个动作,并将它们应用于数据包612。与在较慢的处理路径中进行的操作相比,这可能是相对快的处理。如果数据包612不对应于流表618中的任何流路径616,则可以选择较慢的处理路径。在较慢的处理路径中,处理线程602b可以接收数据包612并对其执行进一步的处理,例如通过执行一系列操作来确定将哪些动作应用于数据包612。这可能比简单地从流表618中提取现有动作,如在较快的处理路径中所做的那样,消耗更多的计算资源和花费更多的计算时间。
包括所示示例在内的某些示例的前述描述仅出于说明和描述的目的呈现,并不旨在穷举或将本公开限制于所公开的精确形式。对于本领域技术人员来说,在不脱离本公开的范围的情况下,其许多修改、改编和使用将是显而易见的。例如,这里描述的任何示例可以与任何其他示例相结合以产生进一步的示例。
Claims (20)
1.一种非暂时性计算机可读介质,包括可由处理器内核执行的程序代码,用于生成内核空间线程,所述内核空间线程被配置为:
接收经由网络从客户端设备发送的数据包;
从分发给多个处理器内核的多个通信信道中确定分发给包括内核空间线程的处理器内核的特定通信信道;
基于从数据包中提取的信息来确定数据包是否满足条件;以及
响应于确定数据包不满足条件,经由特定通信信道将数据从数据包发送到多个用户空间线程中的用户空间线程,所述用户空间线程被配置为接收和处理数据。
2.根据权利要求1所述的非暂时性计算机可读介质,还包括可由所述处理器内核执行的程序代码,用于使所述内核空间线程:
访问所述多个处理器内核到所述多个通信信道的映射,所述多个处理器内核中的每个处理器内核在到所述多个通信信道中的相应通信信道的映射中是相关的,其中所述多个通信信道中的每个通信信道用于向所述多个用户空间线程中的对应用户空间线程发送数据包;以及
基于所述映射确定特定通信信道。
3.根据权利要求1所述的非暂时性计算机可读介质,其中所述条件涉及在流表中具有对应流路径的数据包,并且还包括可由处理器内核执行的程序代码,用于使内核空间线程:
通过检查流表中是否存在用于数据包的流路径来确定数据包是否满足条件;以及
响应于确定所述流路径不存在于流表中,经由特定通信信道将数据发送到用户空间线程,所述用户空间线程被配置为:
经由特定通信信道接收数据;
响应于接收到数据,确定用于数据包的流路径;和
响应于确定所述流路径,使用于数据包的流路径被添加到所述流表中。
4.一种系统,包括:
多个处理器内核,被配置为在Linux操作系统的内核空间中生成多个内核空间线程,并且在Linux操作系统的用户空间中生成多个用户空间线程,所述多个内核空间线程中的每个内核空间线程可由所述多个处理器内核中的特定处理器内核执行,以:
接收经由网络从客户端设备发送的数据包;
从分发给多个处理器内核的多个通信信道中确定分发给包括内核空间线程的特定处理器内核的特定通信信道;
基于从数据包中提取的信息来确定数据包是否满足条件;以及
响应于确定数据包不满足条件,经由特定通信信道将数据从数据包发送到多个用户空间线程中的用户空间线程,所述用户空间线程被配置为接收和处理数据。
5.根据权利要求4所述的系统,其中所述条件涉及在流表中具有对应流路径的数据包,并且其中所述内核空间线程被配置为通过检查所述流表中是否存在用于所述数据包的流路径来确定所述数据包是否满足所述条件。
6.根据权利要求5所述的系统,其中,所述用户空间线程被配置为确定用于所述数据包的流路径,并且执行与所述数据包上的所述流路径相关联的一个或多个动作。
7.根据权利要求6所述的系统,其中所述用户空间线程被配置为使用于所述数据包的流路径被添加到所述流表。
8.根据权利要求5所述的系统,其中所述多个内核空间线程中的每个内核空间线程被配置为,响应于确定用于所述数据包的流路径存在于所述流表中,执行与所述数据包上的所述流路径相关联的一个或多个动作。
9.根据权利要求4所述的系统,其中所述多个处理器内核中的每个处理器内核被配置为执行所述多个内核空间线程中的单个内核空间线程,并且对应于所述多个通信信道中的单个通信信道。
10.根据权利要求4所述的系统,其中所述多个通信信道包括用于在内核空间和用户空间之间通信数据的多个网络链接套接字。
11.根据权利要求4所述的系统,其中所述多个通信信道包括在所述内核空间和所述用户空间之间的多个共享存储器位置,所述多个共享存储器位置用于在所述内核空间和所述用户空间之间通信数据。
12.根据权利要求4所述的系统,其中所述内核空间包括至少一个处理线程,所述至少一个处理线程被配置为:
通过网络从一个或多个客户端设备接收多个数据包;以及
根据一个或多个预定义的分发方案在多个内核空间线程之间分发多个数据包。
13.根据权利要求12所述的系统,其中所述多个数据包包括数据包序列,并且其中所述一个或多个预定义的分发方案被配置为使所述数据包序列中的每个数据包要被发送到用于由相同的内核空间线程进行处理的、所述多个内核空间线程中的相同内核空间线程。
14.根据权利要求4所述的系统,其中内核空间线程还被配置为:
访问所述多个处理器内核到所述多个通信信道的映射,所述多个处理器内核中的每个处理器内核在到所述多个通信信道中的相应通信信道的映射中是相关的,其中所述多个通信信道中的每个通信信道用于向所述多个用户空间线程中的对应用户空间线程发送数据包;以及
基于所述映射确定特定通信信道。
15.根据权利要求14所述的系统,其中,所述内核空间包括至少一个处理线程,所述至少一个处理线程被配置为从所述多个用户空间线程接收所述多个通信信道的多个标识符,并且基于所述多个标识符生成所述映射,所述多个用户空间线程的每个用户空间线程被配置为建立所述多个通信信道的相应通信信道,并且将所述相应通信信道的相应标识符发送到用于生成所述映射的所述至少一个处理线程。
16.一种方法,包括:
由在处理器内核上执行的内核空间线程接收经由网络从客户端设备发送的数据包;
由内核空间线程并且从分发给多个处理器内核的多个通信信道中确定分发给包括内核空间线程的处理器内核的特定通信信道;
由内核空间线程并且基于从数据包提取的信息确定数据包不满足条件;以及
响应于确定所述数据包不满足所述条件,由所述内核空间线程经由所述特定通信信道将来自所述数据包的数据发送到接收和处理所述数据的多个用户空间线程中的用户空间线程。
17.根据权利要求16所述的方法,其中所述条件涉及在流表中具有对应流路径的数据包,并且还包括:
由内核空间线程通过检查流表中是否存在用于数据包的流路径来确定数据包不满足条件;
响应于确定流路径不存在于流表中,由内核空间线程经由特定通信信道向用户空间线程发送数据;
由用户空间线程经由特定通信信道接收数据;
响应于接收到数据,由用户空间线程确定用于数据包的流路径;以及
响应于确定流路径,由用户空间线程使用于数据包的流路径被添加到流表中。
18.根据权利要求16所述的方法,进一步包括:
由多个处理器内核心中的至少一个处理器内核心通过网络从一个或多个客户端设备接收数据包序列;以及
由所述至少一个处理器内核基于一个或多个分发方案将所述数据包序列提供给多个内核空间线程中的相同内核空间线程,以使所述数据包序列要被相同内核空间线程处理。
19.根据权利要求16所述的方法,进一步包括:
由所述内核空间线程访问所述多个处理器内核到所述多个通信信道的映射,所述多个处理器内核中的每个处理器内核在到所述多个通信信道的相应通信信道的映射中是相关的,其中所述多个通信信道中的每个通信信道用于向所述多个用户空间线程的对应用户空间线程发送数据包;以及
由内核空间线程基于所述映射来确定特定通信信道。
20.根据权利要求19所述的方法,进一步包括:
由至少一个处理线程从多个用户空间线程接收多个通信信道的多个标识符,多个用户空间线程中的每个用户空间线程被配置为建立多个通信信道中的相应通信信道,并且将相应通信信道的相应标识符发送到用于生成所述映射的至少一个处理线程;以及
由至少一个处理线程基于多个标识符生成映射。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/411,564 US20230060132A1 (en) | 2021-08-25 | 2021-08-25 | Coordinating data packet processing between kernel space and user space |
US17/411,564 | 2021-08-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904691A true CN115904691A (zh) | 2023-04-04 |
Family
ID=78709255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111375998.XA Pending CN115904691A (zh) | 2021-08-25 | 2021-11-19 | 协调内核空间和用户空间之间的数据包处理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230060132A1 (zh) |
EP (1) | EP4141675A1 (zh) |
CN (1) | CN115904691A (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8811223B2 (en) * | 2009-06-22 | 2014-08-19 | Citrix Systems, Inc. | Systems and methods for distributing crypto cards to multiple cores |
US9847936B2 (en) * | 2015-06-25 | 2017-12-19 | Intel Corporation | Apparatus and method for hardware-accelerated packet processing |
US10812376B2 (en) * | 2016-01-22 | 2020-10-20 | Red Hat, Inc. | Chaining network functions to build complex datapaths |
CN115037575A (zh) * | 2017-12-26 | 2022-09-09 | 华为技术有限公司 | 报文处理的方法和装置 |
CN115486046B (zh) * | 2020-05-14 | 2024-06-11 | 深圳市欢太科技有限公司 | 基于开放虚拟软交换机ovs的数据包处理方法及设备 |
-
2021
- 2021-08-25 US US17/411,564 patent/US20230060132A1/en active Pending
- 2021-11-19 CN CN202111375998.XA patent/CN115904691A/zh active Pending
- 2021-11-19 EP EP21209171.4A patent/EP4141675A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230060132A1 (en) | 2023-03-02 |
EP4141675A1 (en) | 2023-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392429B2 (en) | Modifying application behaviour | |
US9264369B2 (en) | Technique for managing traffic at a router | |
US20070083924A1 (en) | System and method for multi-stage packet filtering on a networked-enabled device | |
EP3366014A1 (en) | Reduced orthogonal network policy set selection | |
US10630587B2 (en) | Shared memory communication in software defined networking | |
CN111181850B (zh) | 数据包泛洪抑制方法、装置和设备及计算机存储介质 | |
CN112165435A (zh) | 一种基于虚拟机网络服务质量的双向流量控制方法及系统 | |
CN111224882A (zh) | 报文处理方法及装置、存储介质 | |
Yang et al. | Performance modeling of linux network system with open vswitch | |
CN113206866B (zh) | 一种多区域场景下服务提供方法、装置及存储介质 | |
EP3097662B1 (en) | Methods, systems and computer readable media for testing network devices using simulated application traffic | |
CN115904691A (zh) | 协调内核空间和用户空间之间的数据包处理 | |
CN113347100B (zh) | 数据流传输方法、装置、计算机设备及存储介质 | |
Bolla et al. | OpenFlow in the small: A flexible and efficient network acceleration framework for multi-core systems | |
CN111240845B (zh) | 一种数据处理方法、装置和存储介质 | |
CN111404705B (zh) | 一种sdn的优化方法、装置及计算机可读存储介质 | |
Sapio et al. | Cross-platform estimation of network function performance | |
US10142245B2 (en) | Apparatus and method for parallel processing | |
WO2020150856A1 (en) | Determining spans for network configuration dependencies | |
TWI664842B (zh) | 網路封包智能處理系統及其方法 | |
US11882057B2 (en) | Pluggable cloud security system | |
CN116610455B (zh) | 一种可编程网元设备的资源约束描述系统及方法 | |
US20210382888A1 (en) | Hedged reads | |
KR20190048924A (ko) | 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법 | |
CN118057792A (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 |