CN110247863A - 数据包处理方法、装置、sdn交换机及存储介质 - Google Patents

数据包处理方法、装置、sdn交换机及存储介质 Download PDF

Info

Publication number
CN110247863A
CN110247863A CN201910629685.9A CN201910629685A CN110247863A CN 110247863 A CN110247863 A CN 110247863A CN 201910629685 A CN201910629685 A CN 201910629685A CN 110247863 A CN110247863 A CN 110247863A
Authority
CN
China
Prior art keywords
data packet
thread
matching
port
receiving
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
CN201910629685.9A
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.)
Guangzhou Vcmy Technology Co Ltd
Original Assignee
Guangzhou Vcmy Technology 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 Guangzhou Vcmy Technology Co Ltd filed Critical Guangzhou Vcmy Technology Co Ltd
Priority to CN201910629685.9A priority Critical patent/CN110247863A/zh
Publication of CN110247863A publication Critical patent/CN110247863A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及计算机网络技术领域,提供一种数据包处理方法、装置、SDN交换机及存储介质,所述方法包括:通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包;通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口;将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。与现有技术相比,本发明通过接收线程对数据包进行分流,从而实现多个数据包的并行化处理,提高了SDN交换机对于数据包的处理效率。

Description

数据包处理方法、装置、SDN交换机及存储介质
技术领域
本发明涉及计算机网络技术领域,具体而言,涉及一种数据包处理方法、装置、SDN交换机及存储介质。
背景技术
SDN交换机将硬件和软件解耦合,用户可以通过软件控制器下发流表转发策略给SDN交换机,SDN交换机通过流表对数据转发进行抽象,以灵活实现网络需求。SDN交换机接收到数据包后,首先,在流表中找到与数据包中的包头字段相匹配的流表项,然后,根据找到的匹配的流表项中的指令集字段对数据包进行处理,最终将处理后的数据包发送出去。SDN交换机对于数据包的处理效率直接影响SDN交换机的性能,如何提升SDN交换机对于数据包的处理效率是本领域亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种数据包处理方法、装置、SDN交换机及存储介质,通过对数据包进行分流,实现数据包的并行化处理,提升了SDN交换机对于数据包的处理效率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种数据包处理方法,应用于SDN交换机,SDN交换机包括多个端口,SDN交换机预先运行有多个接收线程、多个匹配线程及多个发送线程,所述方法包括:通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包;通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口;将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。
第二方面,本发明实施例还提供了一种数据包处理装置,应用于SDN交换机,SDN交换机包括多个端口,SDN交换机预先运行有多个接收线程、多个匹配线程及多个发送线程,所述装置包括分流模块、匹配模块及发送模块,其中,分流模块用于通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包;匹配模块用于通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口;发送模块用于将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。
第三方面,本发明实施例还提供了一种SDN交换机,所述SDN交换机包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的数据包处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述数据包处理方法。
相对现有技术,本发明实施例提供的一种数据包处理方法、装置、SDN交换机及存储介质,SDN通过接收线程收到数据包后,首先通过接收线程对数据包进行分流,确定数据包对应的目标匹配线程,通过目标匹配线程对数据包进行流表匹配,确定数据包应该发往的目标端口,最终通过与目标匹配线程对应的发送线程将数据包从目标端口发送出去。与现有技术相比,本发明实施例采用多个接收线程、多个匹配线程及多个发送线程,通过接收线程对数据包进行分流,通过匹配线程对数据包进行流表匹配,通过发送线程按照匹配结果将数据包发送出去,从而实现多个数据包的并行化处理,提高了SDN交换机对于数据包的处理效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的应用场景的示意图。
图2示出了本发明实施例提供的数据包处理方法流程图。
图3示出了本发明实施例提供的多线程工作流示意图。
图4示出了本发明实施例提供的数据包处理装置的方框示意图。
图5示出了本发明实施例提供的SDN交换机的方框示意图。
图标:10-SDN交换机;101-存储器;102-网卡;103-处理器;104-总线;20-SDN控制器;30-通信设备;200-数据包处理装置;201-分流模块;202-匹配模块;203-发送模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
SDN交换机中存储有流表,流表中记录了SDN交换机转发数据包的规则,SDN交换机依据流表中的规则实现数据包的转发。SDN交换机对数据包的处理包括:接收数据包、对数据包进行流表匹配及根据匹配结果发送数据包,当数据包的数量较多或者流表的规模过大时,所有数据包的处理需要查找同一张流表,会导致流表的访问和查找成为瓶颈,大大降低了SDN交换机处理数据包的效率。
针对这一问题,申请人提出一种数据包处理方法、装置、SDN交换机及存储介质,通过对数据包进行分流,使得数据包被分流到不同的匹配线程进行独立的流表匹配处理,避免了所有数据包对同一个流表访问,导致SDN交换机处理数据包的效率降低的问题。
请参照图1,图1示出了本发明实施例提供的应用场景的示意图。图1中,SDN交换机10与SDN控制器20、及通信设备30通信连接,SDN交换机10上存在多个端口:端口1~端口n。当SDN交换机10接收到数据包后,通过接收线程对数据包进行分流,确定数据包对应的目标匹配线程,通过目标匹配线程对数据包进行流表匹配,当存在与数据包匹配的流表项时,根据匹配的流表项从端口1~端口n中确定目标端口,将数据包通过与目标匹配线程对应的发送线程从目标端口发送至通信设备30,当不存在与数据包匹配的流表项时,从SDN控制器20获取与数据包匹配的流表项,并将该流表项加入目标匹配线程对应的流表中,根据该流表项从端口1~端口n中确定目标端口,最终将数据包通过与目标匹配线程对应的发送线程从目标端口发送至通信设备30。
需要说明的是,通信设备30可以是另一个SDN交换机10,或者是主机、服务器等可以接收数据包的通信设备,本申请对此不予限定。
请参照图2,图2示出了本发明实施例提供的数据包处理方法流程图,该方法包括以下步骤:
步骤S101,通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包。
在本实施例中,SDN交换机10预先运行有多个接收线程、多个匹配线程及多个发送线程,SDN交换机10具有多个逻辑核,逻辑核也称CPU逻辑核,逻辑核是通过物理核虚拟而成的,物理核也称CPU物理和,每个物理核对应CPU上一个真实存在的CPU核,有独立的电路元件以及缓存,可以独立地执行指令,多个逻辑核可以基于同一个物理核虚拟而成。每一接收线程与多个逻辑核中的任一逻辑核预先绑定,每一匹配线程与多个逻辑核中的任一逻辑核预先绑定,每一发送线程预先与多个逻辑核中的任一逻辑核预先绑定,每一接收线程、每一匹配线程及每一发送线程各自绑定的逻辑核之间可以相同,也可以不同,本实施例对此不予限定。
在本实施例中,SDN交换机10包括多个端口,每一接收线程负责接收来自至少一个端口的数据包,例如,SDN交换机10上包括5个端口:端口1-端口5,接收线程有3个,接收线程A、接收线程B和接收线程C,接收线程A可以接收来自端口1和端口2的数据包,接收线程B可以接收来自端口3的数据包,接收线程C可以接收来自端口4和端口5的数据包。
需要说明的是,同一个端口的数据包只能由同一个接收线程负责接收。
作为一种具体实施方式,接收线程接收数据包可以通过如下方式:
首先,SDN交换机10上运行的操作系统的内核空间预先加载用户空间UIO(Userspace I/O,UIO)模块。
在本实施例中,UIO模块可以使接收线程在用户空间接收数据包,且可以使发送线程在用户空间发送数据包。由于接收和发送数据包均在用户空间进行,而没有在内核空间进行,由此避免了在内核空间进行数据包的收发带来的频繁的上下文切换、系统调用、内存拷贝等开销,提高了SDN交换机10处理数据包的效率。
其次,通过每一接收线程获取数据包中的预设字段的值,其中,预设字段是由分流策略预先确定的。
在本实施例中,分流策略用于将SDN交换机10收到的多个数据包进行划分,划分为同一个类别的数据包最终由同一个匹配线程进行流表匹配。预设字段可以是源IP地址、目的IP地址、源端口、目的端口等多个字段中的一个或者多个的组合。
第三,对数据包中的预设字段的值进行哈希计算,得到哈希值。
在本实施例中,数据包中的预设字段可以是数据包的包头中的字段,哈希计算可以是取模、MD5或者其他哈希算法,例如,采用取模算法,预设字段为源端口,数据包中的源端口为21,取模算法采用对5取模,则进行哈希计算得到的哈希值为:21%5=1。
最后,依据哈希值从多个匹配线程中确定目标匹配线程。
在本实施例中,目标匹配线程为多个匹配线程中与哈希值匹配的匹配线程,是对对应的数据包进行流表匹配的匹配线程。作为一种具体实现方式,可以将分流后的数据包放入接收队列中,每个接收队列设置一个编号,可以根据数据包中预设字段的哈希值确定对应的接收队列的编号,确定方法可以是数据包中预设字段的哈希值当做接收队列的编号,将数据包放入对应编号的接收队列中,也可以是数据包中预设字段的哈希值再做一次运算或者映射,以运算或者映射的结果当做接收队列的编号,本实施例对此不予限定。每个接收队列可以对应一个匹配线程,即该匹配线程只从对应的接收队列中取数据包进行流表匹配。
需要说明的是,引入接收队列只是一种具体实现方式,为了将接收的数据包暂存起来等待匹配线程的处理,以免在接收的数据包的数量非常多时,引起数据包的阻塞,造成SDN交换机10性能的较大波动。在没有接收队列的情况下,只要能够建立分流后的数据包与匹配线程之间的对应关系,使得分流后的数据包有对应的匹配线程进行流表匹配即可,例如,为匹配线程编号,根据数据包中预设字段值进行哈希运算后的哈希值确定匹配线程的编号,将数据包交由对应的匹配线程进行流表匹配也是可以实现的。
步骤S102,通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口。
在本实施例中,每一匹配线程均对应一个流表,每一匹配线程依据自己的流表对自己需要处理的数据包进行流表匹配。在确定数据包对应的目标匹配线程后,目标匹配线程首先对数据包进行解析,得到数据包中的匹配字段的值,当目标匹配线程对应的流表中存在与数据包中的匹配字段的值匹配的目标匹配项时,依据目标匹配项从多个端口中确定目标端口,当目标匹配线程对应的流表中不存在与数据包中的匹配字段的值匹配的目标匹配项时,从SDN控制器20中获取目标匹配项,依据目标匹配项从多个端口中确定目标端口、并将目标匹配项加入目标匹配线程对应的流表中。
作为一种具体的流表匹配方式,可以是:
首先,对数据包进行解析,得到数据包中的匹配字段的值。
在本实施例中,匹配字段可以是数据包中的包头字段,匹配字段可以是:入端口、源MAC地址、目的MAC地址、以太网类型、VLAN ID、VLAN优先级、源IP地址、目的IP地址、IP协议、IP TOS位、TCP/UDP源端口和TCP/UDP目的端口。
其次,当目标匹配线程对应的流表中存在与数据包中的匹配字段的值相匹配的目标匹配项时,依据目标匹配项从多个端口中确定目标端口。
最后,当目标匹配线程对应的流表中不存在与数据包中的匹配字段的值相匹配的目标匹配项时,从SDN控制器20获取目标匹配项;依据目标匹配项从多个端口中确定目标端口;将目标匹配项添加至目标匹配线程对应的流表中。
在本实施例中,每一匹配线程对应的流表中都可以包含匹配项,每个匹配项包括匹配域及与该匹配域对应的指令集字段,匹配域可以是匹配字段的集合,指令集字段通常也称为动作字段,用于指示SDN交换机10对匹配的数据包应该如何处理,例如:转发还是丢弃,如果是转发,通过SDN交换机10的哪个端口转发等。例如,目标匹配项为:IP地址为1.1.1.1的数据包应该通过SDN交换机10的2号端口发送出去,则根据该目标匹配项就可以确定IP地址为1.1.1.1的数据包对应的目标端口为SDN交换机10的2号端口。
需要说明的是,此处的目标端口是指SDN交换机10的多个端口中的其中一个,与数据包中的包头字段中的目的端口是不一样,数据包中的包头字段中的目的端口是应用层传输数据包的标识。
步骤S103,将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。
在本实施例中,每一匹配线程对应一个发送线程,即经过每一匹配线程进行流表匹配后的数据包、由与该匹配线程对应的发送线程发送出去。由于步骤S102已经确定数据包应该发送的目标端口,则与目标匹配线程对应的发送线程将数据包通过SDN交换机10的目标端口发送出去。
在本实施例中,作为一种具体实施方式,每一匹配线程对应一个发送队列,每一匹配线程首先将进行流表匹配后的数据包放入对应的发送队列中,每一发送队列与一个发送线程对应,即每一发送线程只从与该发送线程对应的发送队列中获取数据包。因此,经过目标匹配线程进行流表匹配后的数据包可以首先放入与目标匹配线程对应的发送队列,与该发送队列对应的发送线程从该发送队列中获取数据包,并将数据包通过目标端口发送出去。
需要说明的是,此处的发送队列和步骤S101中的接收队列类似,也只是一种具体实现方式,为了便于将待发送的数据包暂存起来,等待发送线程从对应的发送队列中取出后对数据包进行发送,以免在待发送数据包的数量非常多时,引起数据包的阻塞,造成SDN交换机10性能的较大波动。
请参照图3,图3示出了本发明实施例提供的多线程工作流示意图。图3中,SDN交换机10包括5个端口:端口1-端口5、3个接收线程:接收线程1-接收线程3、3个接收队列:接收队列1-接收队列3、3个匹配线程:匹配线程1-匹配线程3、3个发送队列:发送队列1-发送队列3、3个发送线程:发送线程1-发送线程3。
接收线程1负责接收来自端口1和端口2的数据包,接收线程2负责接收来自端口3和端口4的数据包,接收线程3负责接收来自端口5的数据包。接收队列1和匹配线程1对应,即匹配线程1只从接收队列1中取数据包,匹配线程1和发送队列1对应,即匹配线程1将流表匹配后的数据包放入发送队列1中,发送队列1和发送线程1对应,即发送线程1只从发送队列1中取数据包,并将取到的数据包发送至目标端口,其中,目标端口是匹配线程1进行流表匹配后确定的。接收线程2、接收队列2、匹配线程2、发送队列2、发送线程2与之类似,不再赘述,接收线程3、接收队列3、匹配线程3、发送队列3、发送线程3与之类似,也不再赘述。
下面以端口1和端口2的数据包为例说明整个多线程工作流的其中一个线程工作流,接收线程1接收来自端口1和端口2的数据包,对于接收的每个数据包,按照数据包中的预设字段的值做哈希计算得到哈希值,根据哈希值确定每个数据包应该进入的接收队列,图3中接收线程1与接收队列1、接收队列2、接收队列3之间均存在有向箭头,意思是接收线程1处理的数据包可能进入接收队列1、接收队列2、接收队列3中的任意一个,具体需要根据每个数据包中的预设字段的值做哈希计算得到哈希值确定。对于进入接收队列1的数据包,会由匹配线程1对该数据包进行流表匹配后进入发送队列1,发送线程1从发送队列1中取出该数据包,根据匹配线程1进行流表匹配确定的目标端口,将该数据包发送至对应的目标端口。接收队列1中的数据包经过匹配线程1进行流表匹配后确定的目标端口可以是端口1-端口5中的任意一个,具体哪个端口为目标端口,是根据匹配线程1中的流表中的与该数据包匹配的流表项确定的,因此,在图3中,发送线程1与端口1-端口5之间均存在有向箭头,表示发送线程1中的数据包可能通过端口1-端口5中的任意一个端口发送出去。
端口3和端口4的数据包的线程工作流与之类似,端口5的数据包的线程工作流也与之类似,具体不再赘述。
需要说明的是,图3只是一个示意例子,实际上,SDN交换机10的端口可以有很多,具体看实际场景的需要,接收线程、匹配线程和发送线程的个数也可以有多个,具体也可以根据实际需要进行设定,接收队列和发送队列如前文所述,只是一种具体实施方式,没有接收队列和发送队列不影响本发明实施例的实施、且也属于本发明实施例保护的范围。
在本实施例中,通过接收线程对数据包进行分流,确定对数据包进行流表匹配的目标匹配线程,目标匹配线程对数据包进行流表匹配处理后得到对应的目标端口,最终由发送线程通过目标端口将数据包发送出去,与现有技术相比,具有以下有益效果:
第一,对数据包的接收、流表匹配、发送均采用多个独立线程并发处理,实现了数据包的每个处理环节全流程的并发处理,极大地提升了SDN交换机10处理数据包的效率。
第二,每一匹配线程均有独立的流表,根据自己的流表对对应的数据包进行流表匹配,避免所有数据包同时访问同一个流表,形成访问瓶颈,导致SDN交换机10处理数据包的效率降低的问题。
第三,对接收线程、匹配线程、发送线程均进行独立逻辑核的绑定,避免多逻辑核多线程环境下带来的严重的锁竞争的问题,有助于提升SDN交换机10处理数据包的效率。
第四,接收线程和发送线程均运行于用户空间,避免了内核空间处理数据包带来的频繁的上下文切换、系统调用、内存拷贝等开销,有助于提升SDN交换机10处理数据包的效率。
请参照图4,图4示出了本发明实施例提供的数据包处理装置200的方框示意图,数据包处理装置200应用于SDN交换机10,SDN交换机10包括多个端口,SDN交换机10预先运行有多个接收线程、多个匹配线程及多个发送线程,SDN交换机10具有多个逻辑核,每一接收线程与多个逻辑核中的任一逻辑核预先绑定,每一匹配线程与多个逻辑核中的任一逻辑核预先绑定,每一发送线程预先与多个逻辑核中的任一逻辑核预先绑定。数据包处理装置200包括分流模块201、匹配模块202及发送模块203。
分流模块201,用于通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包。
在本实施例中,作为一种实施方式,分流模块201具体用于:通过每一接收线程获取数据包中的预设字段的值,其中,预设字段是由分流策略预先确定的;对数据包中的预设字段的值进行哈希计算,得到哈希值;依据哈希值从多个匹配线程中确定目标匹配线程。
匹配模块202,用于通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口。
在本实施例中,作为一种实施方式,匹配模块202具体用于:对数据包进行解析,得到数据包中的匹配字段的值;当目标匹配线程对应的流表中存在与数据包中的匹配字段的值相匹配的目标匹配项时,依据目标匹配项从多个端口中确定目标端口。
在本实施例中,作为另一种实施方式,匹配模块202具体还用于:当目标匹配线程对应的流表中不存在与数据包中的匹配字段的值相匹配的目标匹配项时,从SDN控制器获取目标匹配项;依据目标匹配项从多个端口中确定目标端口;将目标匹配项添加至目标匹配线程对应的流表中。
发送模块203,用于将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。
请参照图5,图5示出了本发明实施例提供的SDN交换机10的方框示意图。SDN交换机10可以是,但不限于,主机、虚拟机、实体服务器、实体服务器上的虚拟机等能提供与所述服务器或者虚拟机有相同功能的实体或者虚拟的服务端。SDN交换机10的操作系统可以是,但不限于,Windows系统、Linux系统等。所述SDN交换机10包括存储器101、网卡102、处理器103和总线104,所述存储器101、网卡102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的机器可执行指令,在存储101中存储的机器可执行指令被处理器103调用或者执行时,该机器可执行指令促使处理器103执行上述实施例中的数据包处理方法。
其中,存储器101可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网卡102实现该SDN交换机10与SDN控制器20、以及通信设备30之间的通信连接。
网卡102可以是以太网网卡,网卡102上存在多个端口,如图1中所示的端口1-端口n。
总线104可以是ISA总线、PCI总线或EISA总线等。图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的数据包处理方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述数据包处理方法。
综上所述,本发明实施例提供了一种数据包处理方法、装置、SDN交换机及存储介质,应用于SDN交换机,SDN交换机包括多个端口,SDN交换机预先运行有多个接收线程、多个匹配线程及多个发送线程,所述方法包括:通过每一接收线程对数据包进行分流,从多个匹配线程中确定目标匹配线程,其中,每一接收线程接收来自至少一个端口的数据包;通过目标匹配线程对数据包进行流表匹配,从多个端口中确定目标端口;将匹配后的数据包通过与目标匹配线程对应的发送线程发送至目标端口,以使数据包从目标端口发送出去。与现有技术相比,本发明实施例采用多个接收线程、多个匹配线程及多个发送线程,通过接收线程对数据包进行分流,通过匹配线程对数据包进行流表匹配,通过发送线程按照匹配结果将数据包发送出去,从而实现多个数据包的并行化处理,提高了SDN交换机对于数据包的处理效率。

Claims (10)

1.一种数据包处理方法,应用于SDN交换机,所述SDN交换机包括多个端口,所述SDN交换机预先运行有多个接收线程、多个匹配线程及多个发送线程,其特征在于,所述方法包括:
通过每一所述接收线程对数据包进行分流,从所述多个匹配线程中确定目标匹配线程,其中,每一所述接收线程接收来自至少一个所述端口的数据包;
通过所述目标匹配线程对所述数据包进行流表匹配,从所述多个端口中确定目标端口;
将匹配后的数据包通过与所述目标匹配线程对应的发送线程发送至所述目标端口,以使所述数据包从所述目标端口发送出去。
2.如权利要求1所述的数据包处理方法,其特征在于,所述通过每一所述接收线程对数据包进行分流,从所述多个匹配线程中确定目标匹配线程的步骤,包括:
通过每一所述接收线程获取所述数据包中的预设字段的值,其中,所述预设字段是由分流策略预先确定的;
对所述数据包中的预设字段的值进行哈希计算,得到哈希值;
依据所述哈希值从所述多个匹配线程中确定目标匹配线程。
3.如权利要求1所述的数据包处理方法,其特征在于,每一所述匹配线程均对应一个流表,所述通过所述目标匹配线程对所述数据包进行流表匹配,从所述多个端口中确定目标端口的步骤,包括:
对所述数据包进行解析,得到所述数据包中的匹配字段的值;
当所述目标匹配线程对应的流表中存在与所述数据包中的匹配字段的值相匹配的目标匹配项时,依据所述目标匹配项从所述多个端口中确定目标端口。
4.如权利要求3所述的数据包处理方法,其特征在于,所述SDN交换机与SDN控制器通信连接,所述通过所述目标匹配线程对所述数据包进行流表匹配,从所述多个端口中确定目标端口的步骤还包括:
当所述目标匹配线程对应的流表中不存在与所述数据包中的匹配字段的值相匹配的目标匹配项时,从所述SDN控制器获取所述目标匹配项;
依据所述目标匹配项从所述多个端口中确定目标端口;
将所述目标匹配项添加至所述目标匹配线程对应的流表中。
5.如权利要求1-4中任一项所述的数据包处理方法,其特征在于,所述SDN交换机具有多个逻辑核,每一所述接收线程与多个逻辑核中的任一逻辑核预先绑定,每一所述匹配线程与多个逻辑核中的任一逻辑核预先绑定,每一所述发送线程预先与多个逻辑核中的任一逻辑核预先绑定。
6.一种数据包处理装置,应用于SDN交换机,所述SDN交换机包括多个端口,所述SDN交换机预先运行有多个接收线程、多个匹配线程及多个发送线程,其特征在于,所述装置包括:
分流模块,用于通过每一所述接收线程对数据包进行分流,从所述多个匹配线程中确定目标匹配线程,其中,每一所述接收线程接收来自至少一个所述端口的数据包;
匹配模块,用于通过所述目标匹配线程对所述数据包进行流表匹配,从所述多个端口中确定目标端口;
发送模块,用于将匹配后的数据包通过与所述目标匹配线程对应的发送线程发送至所述目标端口,以使所述数据包从所述目标端口发送出去。
7.如权利要求6所述的数据包处理装置,其特征在于,所述分流模块具体用于:
通过每一所述接收线程获取所述数据包中的预设字段的值,其中,所述预设字段是由分流策略预先确定的;
对所述数据包中的预设字段的值进行哈希计算,得到哈希值;
依据所述哈希值从所述多个匹配线程中确定目标匹配线程。
8.如权利要求6所述的数据包处理装置,其特征在于,每一所述匹配线程均对应一个流表,所述匹配模块具体用于:
对所述数据包进行解析,得到所述数据包中的匹配字段的值;
当所述目标匹配线程对应的流表中存在与所述数据包中的匹配字段的值相匹配的目标匹配项时,依据所述目标匹配项从所述多个端口中确定目标端口。
9.一种SDN交换机,其特征在于,所述SDN交换机与SDN控制器通信连接,所述SDN交换机包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
CN201910629685.9A 2019-07-12 2019-07-12 数据包处理方法、装置、sdn交换机及存储介质 Pending CN110247863A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910629685.9A CN110247863A (zh) 2019-07-12 2019-07-12 数据包处理方法、装置、sdn交换机及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910629685.9A CN110247863A (zh) 2019-07-12 2019-07-12 数据包处理方法、装置、sdn交换机及存储介质

Publications (1)

Publication Number Publication Date
CN110247863A true CN110247863A (zh) 2019-09-17

Family

ID=67892017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910629685.9A Pending CN110247863A (zh) 2019-07-12 2019-07-12 数据包处理方法、装置、sdn交换机及存储介质

Country Status (1)

Country Link
CN (1) CN110247863A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631788A (zh) * 2021-01-06 2021-04-09 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器
CN113302979A (zh) * 2021-04-12 2021-08-24 香港应用科技研究院有限公司 一种加速通信网络中的用户平面功能(upf)模块中的数据包检测规则(pdr)匹配和数据包处理的方法
CN116192799A (zh) * 2022-12-12 2023-05-30 天翼安全科技有限公司 一种数据处理方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710497A (zh) * 2012-04-24 2012-10-03 汉柏科技有限公司 多核多线程网络设备的报文处理方法及系统
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
CN105868000A (zh) * 2016-06-14 2016-08-17 上海交通大学 一种针对网络i/o虚拟化的并行化可扩展数据处理方法
CN106254271A (zh) * 2016-08-08 2016-12-21 北京邮电大学 一种用于软件定义网络的可编程队列配置方法及装置
CN106656846A (zh) * 2017-01-17 2017-05-10 大连理工大学 一种sdn体系架构中协调层的构建方法
CN107666474A (zh) * 2016-07-30 2018-02-06 华为技术有限公司 一种网络报文处理方法、装置及网络服务器
CN109117270A (zh) * 2018-08-01 2019-01-01 湖北微源卓越科技有限公司 提高网络数据包处理效率的方法
US20190095231A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Dynamic platform feature tuning based on virtual machine runtime requirements

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710497A (zh) * 2012-04-24 2012-10-03 汉柏科技有限公司 多核多线程网络设备的报文处理方法及系统
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
CN105868000A (zh) * 2016-06-14 2016-08-17 上海交通大学 一种针对网络i/o虚拟化的并行化可扩展数据处理方法
CN107666474A (zh) * 2016-07-30 2018-02-06 华为技术有限公司 一种网络报文处理方法、装置及网络服务器
CN106254271A (zh) * 2016-08-08 2016-12-21 北京邮电大学 一种用于软件定义网络的可编程队列配置方法及装置
CN106656846A (zh) * 2017-01-17 2017-05-10 大连理工大学 一种sdn体系架构中协调层的构建方法
US20190095231A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Dynamic platform feature tuning based on virtual machine runtime requirements
CN109117270A (zh) * 2018-08-01 2019-01-01 湖北微源卓越科技有限公司 提高网络数据包处理效率的方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631788A (zh) * 2021-01-06 2021-04-09 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器
CN112631788B (zh) * 2021-01-06 2023-11-28 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器
CN113302979A (zh) * 2021-04-12 2021-08-24 香港应用科技研究院有限公司 一种加速通信网络中的用户平面功能(upf)模块中的数据包检测规则(pdr)匹配和数据包处理的方法
CN113302979B (zh) * 2021-04-12 2023-06-20 香港应用科技研究院有限公司 一种加速通信网络中的用户平面功能(upf)模块中的数据包检测规则(pdr)匹配和数据包处理的方法
CN116192799A (zh) * 2022-12-12 2023-05-30 天翼安全科技有限公司 一种数据处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US10447604B2 (en) Packet switching
US9965441B2 (en) Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
US11221972B1 (en) Methods and systems for increasing fairness for small vs large NVMe IO commands
KR101072078B1 (ko) 멀티코어 통신 처리를 위한 시스템 및 방법
US8005022B2 (en) Host operating system bypass for packets destined for a virtual machine
US20160182684A1 (en) Parallel processing of service functions in service function chains
CN110247863A (zh) 数据包处理方法、装置、sdn交换机及存储介质
US11314417B2 (en) Methods and systems for NVMe target load balancing based on real time metrics
US7715416B2 (en) Generalized serialization queue framework for protocol processing
US20220052936A1 (en) Methods and systems for smart sensor implementation within a network appliance data plane
US20120287782A1 (en) Programmable and high performance switch for data center networks
US11375006B1 (en) Methods and systems for rating workloads based on network interface device resources and for optimal scheduling
CN115917520A (zh) 用于通过分布式算法为可编程数据平面提供lpm实现的系统
Sadok et al. A case for spraying packets in software middleboxes
WO2018004977A1 (en) Technologies for adaptive routing using aggregated congestion information
US20120207176A1 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US11995004B2 (en) Methods and systems for using a packet processing pipeline to accelerate InfiniBand administrative operations
US11374872B1 (en) Methods and systems for adaptive network quality of service for latency critical applications
EP2417737B1 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US11770449B2 (en) Methods and systems for extending RDMA for dynamic/programmable remote operation registration and invocation
US8149709B2 (en) Serialization queue framework for transmitting packets
EP3491792B1 (en) Deliver an ingress packet to a queue at a gateway device
Huang et al. FGLB: A fine‐grained hardware intra‐server load balancer based on 100 G FPGA SmartNIC
US11757778B2 (en) Methods and systems for fairness across RDMA requesters using a shared receive queue
US20240163230A1 (en) Systems and methods for using a packet processing pipeline circuit to extend the capabilities of rate limiter circuits

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190917