CN112671810A - 一种数据处理方法、装置、电子设备、服务器及存储设备 - Google Patents
一种数据处理方法、装置、电子设备、服务器及存储设备 Download PDFInfo
- Publication number
- CN112671810A CN112671810A CN202110288512.2A CN202110288512A CN112671810A CN 112671810 A CN112671810 A CN 112671810A CN 202110288512 A CN202110288512 A CN 202110288512A CN 112671810 A CN112671810 A CN 112671810A
- Authority
- CN
- China
- Prior art keywords
- message
- rtsp
- rtp
- thread
- information
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备、服务器及存储设备。该数据处理方法,包括:采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将所述多个报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理。
Description
技术领域
本申请涉及计算机网络技术领域,具体而言,涉及一种数据处理方法、装置、电子设备、服务器及存储设备。
背景技术
DPDK是基于Linux系统,为数据面快速报文处理应用程序提供一个完整框架的开源开发平台。DPDK采用轮询、零拷贝、大页内存和CPU亲和等机制,大大提高了运作效率。通过DPDK提供的网卡驱动和函数API,可以高速率处理数据包,极大的提升应用程序的工作效率。
RTSP是用于在IP网络上传输媒体流的常用应用层协议之一。RTSP基于TCP,在媒体流中主要有两方面作用:一方面是在服务端和客户端建立连接,如客户端向服务端发起请求(Request 报文),服务端响应和回复请求(Response 报文);另一方面是对媒体流进行控制,如暂停播放和快进播放等控制。
基于LibPcap数据捕获机制需额外引入频繁的中断处理以及数据拷贝,资源开销也十分庞大。而将RTSP报文和RTP报文统一处理,影响了在多线程下的处理效率,不适应于在高带宽和高吞吐量的场景。
针对上述问题,目前尚未有有效的技术解决方案。
发明内容
本申请实施例的目的在于提供一种数据处理方法、装置、电子设备、服务器及存储设备,可以提高效率。
第一方面,本申请实施例提供了一种数据处理方法,包括:
采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
将所述多个报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;
采用所述工作线程对接收到的多个报文结构体进行处理。
可选地,在本申请实施例所述的数据处理方法中,所述将所述多个报文结构体分发至多个工作线程,包括:
以报文结构体中的MBUF中的源IP地址和目的IP地址作为键计算第一哈希值,并将第一哈希值存储到所述MBUF的哈希字段,得到新哈希字段;
根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的工作线程中,其中,新哈希字段相同的报文结构体分发至同一工作线程。
可选地,在本申请实施例所述的数据处理方法中,所述采用所述工作线程对接收到的多个报文结构体进行处理,包括:
采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;
采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
可选地,在本申请实施例所述的数据处理方法中,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,包括:
采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息;
根据所述RTSP报文结构体的四元组信息在当前的工作线程的RTSP哈希树上的对应的第一目标哈希节点;
若查找到所述第一目标哈希节点,则将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
若未查找到所述第一目标哈希节点,则根据所述RTSP报文结构体的四元组信息在所述RTSP哈希树上建立对应的第一目标哈希节点,并将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
判断是否获取到所述RTSP媒体流的所有RTSP报文信息;
若是,则保存当前的工作线程所需的所有RTSP报文信息。
可选地,在本申请实施例所述的数据处理方法中,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,还包括:
若否,则返回执行所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理的步骤,其中每次处理的RTSP报文结构体为不同的RTSP报文结构体。
可选地,在本申请实施例所述的数据处理方法中,所述采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理,包括:
采用所述工作线程的第二子线程对接收到的一RTP报文结构体进行解析,得到所述RTP报文结构体的四元组信息;
根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点,并获取该RTSP节点对应的RTSP报文信息;
根据所述RTSP报文信息以及双向链表生成第二键值对,并将所述第二键值对存储到当前工作线程的RTP哈希树,其中,所述双向链表用于存储所述RTP报文结构体;
若所述双向链表中挂载的RTP报文结构体的数量超过预设阈值,则从所述RTP报文结构体中提取出RTP报文,并根据对应的所述RTSP报文信息对所述RTP报文的有效负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
可选地,在本申请实施例所述的数据处理方法中,所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息,包括:
采用工作线程的第一子线程提取一个RTSP报文结构体的SDP信息和通告的RTP的信息;
根据所述DP信息和通告的RTP的信息得到所述RTSP报文结构体的四元组信息。
第二方面,本申请实施例还提供了一种数据处理装置,包括:
捕获模块,用于采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
分发模块,用于将所述多个报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;
处理模块,用于采用所述工作线程对接收到的多个报文结构体进行处理。
第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第五方面,本申请实施例提供一种存储设备,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
由上可知,本申请实施例提供的数据处理方法及装置通过采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构体分发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而实现对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中,从而可以提高处理效率。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种数据处理方法的一种流程图。
图2为本申请实施例提供的一种数据处理装置的第一种结构示意图。
图3为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1是本本申请一些实施例中的一种数据处理方法的流程图。其中,该数据处理方法包括以下步骤:
S101、采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体。
S102、将多个报文结构体分发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中。
S103、采用所述工作线程对接收到的多个报文结构体进行处理。
其中,在该步骤S101中,MBUF为存储器缓存结构体,其用于捕获RTSP媒体流中的RTSP报文以及RTP报文从而形成报文结构体。其中,该报文结构体有RTSP报文结构体以及RTP报文结构体两种。该RTSP报文结构体为MBUF捕获RTSP报文封装形成,该RTP报文结构体为MBUF捕获RTP报文封装形成。其中,该RTSP媒体流可以为音频流,可以为视频流,也可以为音视频流。在本实施例中,该RTSP媒体流为音频流与视频流的结合。
其中,在捕获RTSP报文以及RTP报文时,利用DPDK的端口RSS哈希值配置规则,将与RTSP报文以及RTP报文中的对应Mbuf中的哈希字段设置为非零,其他类型报文的对应Mbuf的哈希字段设置为零,从而使得MBUF在捕获报文后,可以释放掉哈希字段为零的MBUF,仅仅保留哈希字段不为零的MBUF,从而将捕获的RTSP报文以及RTP报文之外的报文去除。
其中,采用MBUF捕获RTSP报文或RTP报文得到的报文结构体均存储在缓冲队列中,例如该缓冲队列可以为环形队列,例如Ring队列。其中,各个RTSP媒体流中的RTSP报文或RTP报文封装得到报文结构体均存储至该一个Ring队列中。采用该种环形队列可以实现将该环形队列中的报文结构体在不同的工作线程之间传递。
其中,在该步骤S102中,用于分发该多个报文结构体的分发单元从该缓冲队列中获取需要进行分发的多个报文结构体进行分发。在分发报文结构体时,可以基于报文结构体中的IP地址和目的IP地址来判断RTSP报文以及RTP报文是否属于同一RTSP媒体流,从而使得避免属于同一同一RTSP媒体的报文分发到不同的工作线程中,可以提高处理效率。
其中,在该步骤S103中,每一工作线程依次对接收到的报文结构体进行处理。处理时,先对RTSP报文结构体进行处理,然后再结合对RTSP报文结构体的处理结果来对RTP报文结构体进行处理,例如进行检测、播放或者写入等操作。
具体地,在一些实施例中,该步骤S102可以包括以下子步骤:S1021、以所述报文结构体中的MBUF中的源IP地址和目的IP地址作为键计算第一哈希值,并将所述第一哈希值存储到所述MBUF的哈希字段得到新哈希字段;S1022、根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的工作线程中,新哈希字段相同的报文结构体分发至同一工作线程。
其中,在该步骤S1021中,该源IP地址为发出该RTSP媒体流的服务器的网络地址,该目的IP地址为接收该RTSP媒体流的终端设备的网络地址。其中,在该步骤S1022中,由于在同一RTSP媒体流中的所有MBUF的哈希值是相同的,因此,采用哈希值相同的报文结构体发送到同一个工作线程可以避免将属于同RTSP媒体流的RTSP报文和RTP报文分发到了不同的工作线程中,导致处理效率下降。
在一些实施例中,该步骤S103可以包括以下子步骤:a、采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;b、采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
其中,在该步骤a中,该RTSP报文信息为音频和/或视频流的编码格式信息。其中,如果该RTSP多媒体流为音频和视频的结合,则该RTSP报文信息为音频和视频流的编码格式信息。其中,在该步骤b中,对RTP报文结构体进行处理可以为检测、播放或者写入等操作。
具体地,在一些实施例中,该步骤a包括以下子步骤:
S1031、采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息;
S1032、根据所述RTSP报文结构体的四元组信息在当前的工作线程的RTSP哈希树上的对应的第一目标哈希节点;
S1033、若查找到所述第一目标哈希节点,则将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
S1034、若未查找到所述第一目标哈希节点,则根据所述RTSP报文结构体的四元组信息在所述RTSP哈希树上建立对应的第一目标哈希节点,并将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
S1035、判断是否获取到所述RTSP媒体流的所有RTSP报文信息;
S1036、若否,则返回执行所述步骤S1031。
S1037、若是,则保存当前的工作线程所需的所有RTSP报文信息。
其中,在该步骤S1031中,由于RTSP报文的传输层为TCP,因此,可以基于此识别出TCP报文。TCP报文中包括RTSP报文以及其他类型的报文。由于,RTSP报文的服务端端口号通常是554或8554,因此客户端接收来自服务端RTSP报文的源端口号是554或8554。需要保留TCP报文中源端口号为554或8554的buf,释放掉其他的TCP报文对应的Mbuf。
其中,在该步骤S1032中,对于RTSP报文结构体,主要获取RTSP报文中加载的SDP信息(如音视频的编码格式信息)和通告的RTP的信息(如RTP的源端口号、目的端口号、SSRC等)。从而基于该SDP信息和通告的RTP的信息可以得到该RTSP报文结构体的四元组信息,也即是源IP地址、目的IP地址、源端口号和目的端口号。
具体地,在一些实施例中,该步骤b包括以下子步骤:
S1041、采用所述工作线程的第二子线程对接收到的RTP报文结构体进行解析,得到所述RTP报文结构体的四元组信息;
S1042、根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点,并获取该RTSP节点对应的RTSP报文信息;
S1043、根据所述RTSP报文信息以及双向链表生成第二键值对,并将所述第二键值对存储到当前工作线程的RTP哈希树,其中,所述双向链表用于存储所述RTP报文结构体。其中,所述RTP报文结构体的四元组信息的哈希值为第二键值对的键,所述双向链表作为第二键值对的值;
S1044、对于所述工作线程接收到的其他RTP报文结构体,先根据所述RTP报文结构体的四元组信息计算对应的哈希值;根据所述哈希值在所述RTP哈希树中查找对应的RTP节点;若查找到,则将对应RTP报文结构体挂载在所述双向链表中,若未查找到,则返回执行所述步骤S1042。
S1045、若所述双向链表中挂载的RTP报文结构体的数量超过预设阈值,则从所述RTP报文结构体中提取出RTP报文,并根据对应的所述RTSP报文信息对所述RTP报文的有效负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
其中,在该步骤S1041中,常用RTP报文的传输层为UDP,因此可以基于此识别出UDP报文,该UDP报文中有RTP报文和其他报文。根据UDP报文的Payload(净负荷字段)起始的几个字节,可以判断报文是否是RTP报文。释放非RTP报文对应的Mbuf,保留RTP报文结构体。
其中,在该步骤S1042中,从RTP报文结构体的Mbuf中解析出源端口号、目的端口号、Sequence Number(TCP序列号)和SSRC信息,从而得到该RTP报文结构体的四元组信息。
其中,在该步骤S1045中,该预设阈值可以为根据该RTSP媒体流的数据量或者码率设置的经验值,当然其并不限于此。
各模块相互协作,保证RTSP媒体流的高效处理,且在一定线程个数内,随着工作模块个数的增加,该流程处理能力逐步提升。并且采用哈希树结构,极大的提升了在多RTSP媒体流下的查询等处理效率;采用双向链表结构,可以动态存储不固定个数的RTP报文。增大整个系统的吞吐量和RTSP媒体流的处理上限,提升在高带宽模式下的处理能力。
由上可知,本申请实施例提供的数据处理方法通过采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构体分发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而实现对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中,从而可以提高处理效率。
如图2所示,本申请实施例还提供了一种数据处理装置的结构示意图。该装数据处理装置包括:捕获模块201、分发模块202、处理模块203。
其中,该捕获模块201用于采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;MBUF为存储器缓存结构体,其用于捕获RTSP媒体流中的RTSP报文以及RTP报文从而形成报文结构体。其中,该报文结构体有RTSP报文结构体以及RTP报文结构体两种。该RTSP报文结构体为MBUF捕获RTSP报文封装形成,该RTP报文结构体为MBUF捕获RTP报文封装形成。其中,该RTSP媒体流可以为音频流,可以为视频流,也可以为音视频流。在本实施例中,该RTSP媒体流为音频流与视频流的结合。
其中,该分发模块202用于将所述多个报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;用于分发该多个报文结构体的分发单元从该缓冲队列中获取需要进行分发的多个报文结构体进行分发。在分发报文结构体时,可以基于报文结构体中的IP地址和目的IP地址来判断RTSP报文以及RTP报文是否属于同一RTSP媒体流,从而使得避免属于同一同一RTSP媒体的报文分发到不同的工作线程中,可以提高处理效率。
其中,该处理模块203用于采用所述工作线程对接收到的多个报文结构体进行处理。每一工作线程依次对接收到的报文结构体进行处理。处理时,先对RTSP报文结构体进行处理,然后再结合对RTSP报文结构体的处理结果来对RTP报文结构体进行处理,例如进行检测、播放或者写入等操作。
具体地,在一些实施例中,该分发模块202用于以所述报文结构体中的MBUF中的源IP地址和目的IP地址作为键计算第一哈希值,并将所述第一哈希值存储到所述MBUF的哈希字段得到新哈希字段;根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的工作线程中,新哈希字段相同的报文结构体分发至同一工作线程。
其中,该源IP地址为发出该RTSP媒体流的服务器的网络地址,该目的IP地址为接收该RTSP媒体流的终端设备的网络地址。由于在同一RTSP媒体流中的所有MBUF的哈希值是相同的,因此,采用哈希值相同的报文结构体发送到同一个工作线程可以避免将属于同RTSP媒体流的RTSP报文和RTP报文分发到了不同的工作线程中,导致处理效率下降。
在一些实施例中,该处理模块203用于采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
其中,该RTSP报文信息为音频和/或视频流的编码格式信息。其中,如果该RTSP多媒体流为音频和视频的结合,则该RTSP报文信息为音频和视频流的编码格式信息。对RTP报文结构体进行处理可以为检测、播放或者写入等操作。
具体地,在一些实施例中,该处理模块203用于:
采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息;
根据所述RTSP报文结构体的四元组信息在当前的工作线程的RTSP哈希树上的对应的第一目标哈希节点;
若查找到所述第一目标哈希节点,则将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
若未查找到所述第一目标哈希节点,则根据所述RTSP报文结构体的四元组信息在所述RTSP哈希树上建立对应的第一目标哈希节点,并将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
判断是否获取到所述RTSP媒体流的所有RTSP报文信息;
若否,则返回执行执行采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理。
若是,则保存当前的工作线程所需的所有RTSP报文信息。
其中,由于RTSP报文的传输层为TCP,因此,可以基于此识别出TCP报文。TCP报文中包括RTSP报文以及其他类型的报文。由于,RTSP报文的服务端端口号通常是554或8554,因此客户端接收来自服务端RTSP报文的源端口号是554或8554。需要保留TCP报文中源端口号为554或8554的buf,释放掉其他的TCP报文对应的Mbuf。
其中,对于RTSP报文结构体,主要获取RTSP报文中加载的SDP信息(如音视频的编码格式信息)和通告的RTP的信息(如RTP的源端口号、目的端口号、SSRC等)。从而基于该SDP信息和通告的RTP的信息可以得到该RTSP报文结构体的四元组信息,也即是源IP地址、目的IP地址、源端口号和目的端口号。
具体地,在一些实施例中,该处理模块203用于:
采用所述工作线程的第二子线程对接收到的RTP报文结构体进行解析,得到所述RTP报文结构体的四元组信息;
根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点,并获取该RTSP节点对应的RTSP报文信息;
根据所述RTSP报文信息以及双向链表生成第二键值对,并将所述第二键值对存储到当前工作线程的RTP哈希树,其中,所述双向链表用于存储所述RTP报文结构体。其中,所述RTP报文结构体的四元组信息的哈希值为第二键值对的键,所述双向链表作为第二键值对的值;
对于所述工作线程接收到的其他RTP报文结构体,先根据所述RTP报文结构体的四元组信息计算对应的哈希值;根据所述哈希值在所述RTP哈希树中查找对应的RTP节点;若查找到,则将对应RTP报文结构体挂载在所述双向链表中,若未查找到,则返回执行根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点.
若所述双向链表中挂载的RTP报文结构体的数量超过预设阈值,则从所述RTP报文结构体中提取出RTP报文,并根据对应的所述RTSP报文信息对所述RTP报文的有效负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
其中,常用RTP报文的传输层为UDP,因此可以基于此识别出UDP报文,该UDP报文中有RTP报文和其他报文。根据UDP报文的Payload(净负荷字段)起始的几个字节,可以判断报文是否是RTP报文。释放非RTP报文对应的Mbuf,保留RTP报文结构体。
其中,从RTP报文结构体的Mbuf中解析出源端口号、目的端口号、Sequence Number和SSRC信息,从而得到该RTP报文结构体的四元组信息。
其中,该预设阈值可以为根据该RTSP媒体流的数据量或者码率设置的经验值,当然其并不限于此。
由上可知,本申请实施例提供的数据处理装置通过采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构体分发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而实现对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中,从而可以提高处理效率。
请参照图3,图3为本申请实施例提供的一种电子设备的结构示意图,本申请提供一种电子设备3,包括:处理器301和存储器302,处理器301和存储器302通过通信总线303和/或其他形式的连接机构(未标出)互连并相互通讯,存储器302存储有处理器301可执行的计算机程序,当计算设备运行时,处理器301执行该计算机程序,以执行时执行上述实施例的任一可选的实现方式中的方法。其中,该电子设备3可以为服务器。
本申请实施例提供一种存储设备,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random AccessMemory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory, 简称EEPROM),可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory, 简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种数据处理方法,其特征在于,包括:
采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
将多个所述报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;
采用所述工作线程对接收到的多个报文结构体进行处理。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述多个报文结构体分发至多个工作线程,包括:
以报文结构体中的MBUF中的源IP地址和目的IP地址作为键计算第一哈希值,并将第一哈希值存储到所述MBUF的哈希字段,得到新哈希字段;
根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的工作线程中,其中,新哈希字段相同的报文结构体分发至同一工作线程。
3.根据权利要求1所述的数据处理方法,其特征在于,所述采用所述工作线程对接收到的多个报文结构体进行处理,包括:
采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;
采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
4.根据权利要求3所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,包括:
采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息;
根据所述RTSP报文结构体的四元组信息在当前的工作线程的RTSP哈希树上的对应的第一目标哈希节点;
若查找到所述第一目标哈希节点,则将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
若未查找到所述第一目标哈希节点,则根据所述RTSP报文结构体的四元组信息在所述RTSP哈希树上建立对应的第一目标哈希节点,并将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
判断是否获取到所述RTSP媒体流的所有RTSP报文信息;
若是,则保存当前的工作线程所需的所有RTSP报文信息。
5.根据权利要求4所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,还包括:
若否,则返回执行所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理的步骤,其中每次处理的RTSP报文结构体为不同的RTSP报文结构体。
6.根据权利要求4所述的数据处理方法,其特征在于,所述采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理,包括:
采用所述工作线程的第二子线程对接收到的一RTP报文结构体进行解析,得到所述RTP报文结构体的四元组信息;
根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点,并获取该RTSP节点对应的RTSP报文信息;
根据所述RTSP报文信息以及双向链表生成第二键值对,并将所述第二键值对存储到当前工作线程的RTP哈希树,其中,所述双向链表用于存储所述RTP报文结构体;
若所述双向链表中挂载的RTP报文结构体的数量超过预设阈值,则从所述RTP报文结构体中提取出RTP报文,并根据对应的所述RTSP报文信息对所述RTP报文的有效负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
7.根据权利要求4所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息,包括:
采用工作线程的第一子线程提取一个RTSP报文结构体的SDP信息和通告的RTP的信息;
根据所述DP信息和通告的RTP的信息得到所述RTSP报文结构体的四元组信息。
8.一种数据处理装置,其特征在于,包括:
捕获模块,用于采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
分发模块,用于将多个所述报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;
处理模块,用于采用所述工作线程对接收到的多个报文结构体进行处理。
9.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-7任一项所述的方法。
10.一种存储设备,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1-7任一项所述的方法。
11.一种服务器,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288512.2A CN112671810B (zh) | 2021-03-18 | 2021-03-18 | 一种数据处理方法、装置、电子设备、服务器及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110288512.2A CN112671810B (zh) | 2021-03-18 | 2021-03-18 | 一种数据处理方法、装置、电子设备、服务器及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671810A true CN112671810A (zh) | 2021-04-16 |
CN112671810B CN112671810B (zh) | 2021-06-01 |
Family
ID=75399548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110288512.2A Active CN112671810B (zh) | 2021-03-18 | 2021-03-18 | 一种数据处理方法、装置、电子设备、服务器及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671810B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114285906A (zh) * | 2021-12-24 | 2022-04-05 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN114598669A (zh) * | 2022-03-07 | 2022-06-07 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221099A1 (en) * | 2002-05-21 | 2003-11-27 | General Instrument Corporation | Association of security parameters for a collection of related streaming protocols |
CN102594621A (zh) * | 2012-02-21 | 2012-07-18 | 德科仕通信(上海)有限公司 | 一种高性能ip媒体流监测方法及系统 |
CN103731641A (zh) * | 2014-01-14 | 2014-04-16 | 深圳英飞拓科技股份有限公司 | 监控设备的视频流数据分发方法及装置 |
CN104283777A (zh) * | 2013-07-03 | 2015-01-14 | 华为技术有限公司 | 报文压缩的方法和装置 |
CN106603977A (zh) * | 2016-12-12 | 2017-04-26 | 深圳市中博睿存科技有限公司 | 基于Linux多核环境的视频采集方法及装置 |
CN110072128A (zh) * | 2019-04-22 | 2019-07-30 | 北京开广信息技术有限公司 | 媒体流的实时推送方法及服务器 |
CN112057832A (zh) * | 2020-07-28 | 2020-12-11 | 浙江工业大学 | 一种基于移动流媒体技术的实景骑行训练系统 |
-
2021
- 2021-03-18 CN CN202110288512.2A patent/CN112671810B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221099A1 (en) * | 2002-05-21 | 2003-11-27 | General Instrument Corporation | Association of security parameters for a collection of related streaming protocols |
CN102594621A (zh) * | 2012-02-21 | 2012-07-18 | 德科仕通信(上海)有限公司 | 一种高性能ip媒体流监测方法及系统 |
CN104283777A (zh) * | 2013-07-03 | 2015-01-14 | 华为技术有限公司 | 报文压缩的方法和装置 |
CN103731641A (zh) * | 2014-01-14 | 2014-04-16 | 深圳英飞拓科技股份有限公司 | 监控设备的视频流数据分发方法及装置 |
CN106603977A (zh) * | 2016-12-12 | 2017-04-26 | 深圳市中博睿存科技有限公司 | 基于Linux多核环境的视频采集方法及装置 |
CN110072128A (zh) * | 2019-04-22 | 2019-07-30 | 北京开广信息技术有限公司 | 媒体流的实时推送方法及服务器 |
CN112057832A (zh) * | 2020-07-28 | 2020-12-11 | 浙江工业大学 | 一种基于移动流媒体技术的实景骑行训练系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114285906A (zh) * | 2021-12-24 | 2022-04-05 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN114285906B (zh) * | 2021-12-24 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、电子设备及存储介质 |
CN114598669A (zh) * | 2022-03-07 | 2022-06-07 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
CN114598669B (zh) * | 2022-03-07 | 2024-03-19 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112671810B (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112671810B (zh) | 一种数据处理方法、装置、电子设备、服务器及存储设备 | |
US9906630B2 (en) | Processing data packets in performance enhancing proxy (PEP) environment | |
US20230060066A1 (en) | Data transmission method and apparatus, computer readable medium, and electronic device | |
US9398117B2 (en) | Protocol data unit interface | |
CN109525495B (zh) | 一种数据处理装置、方法和fpga板卡 | |
CN112035182A (zh) | 一种基于kong的API网关监控方法及系统 | |
US11165845B2 (en) | Method and apparatus for efficiently prioritizing elements in a video stream for low-bandwidth transmission | |
CN110740144B (zh) | 确定攻击目标的方法、装置、设备及存储介质 | |
CN113986811B (zh) | 一种高性能内核态网络数据包加速方法 | |
CN109889922B (zh) | 流媒体数据的转发方法、装置、设备和存储介质 | |
CN109617833B (zh) | 多线程用户态网络协议栈系统的nat数据审计方法和系统 | |
US7613825B2 (en) | Hierarchical packet processing system and method, relay device and server | |
EP3408989B1 (en) | Detecting malware on spdy connections | |
WO2016197659A1 (zh) | 网络媒体流收包方法、装置及系统 | |
CN106549969B (zh) | 数据过滤方法及装置 | |
CN112383801B (zh) | 媒体流分发方法、装置、分发服务器及存储介质 | |
US20110282926A1 (en) | Relay apparatus, recording medium storing a relay program, and a relay method | |
CN116560809A (zh) | 数据处理方法及装置、设备、介质 | |
CN108200481B (zh) | 一种rtp-ps流处理方法、装置、设备及存储介质 | |
CN115550470A (zh) | 工控网络数据包解析方法、装置、电子设备与存储介质 | |
CN115914380A (zh) | 基于Zlib压缩算法的云计算资源管理器通信延迟优化方法 | |
CN114679574B (zh) | 监控数据分发方法及监控数据分发装置 | |
CN117041272B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115086285B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
US20230353285A1 (en) | Data transmission method, data transmission apparatus, computer-readable medium, electronic device, and computer program product |
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 |