一种数据处理方法、装置、电子设备、服务器及存储设备转让专利
申请号 : CN202110288512.2
文献号 : CN112671810B
文献日 : 2021-06-01
发明人 : 阎博 , 孙亮 , 王东升 , 周木子 , 王晟
申请人 : 紫光恒越技术有限公司
摘要 :
权利要求 :
1.一种数据处理方法,其特征在于,包括:采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
将多个所述报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;基于报文结构体中的源IP地址和目的IP地址来判断RTSP报文以及RTP报文是否属于同一RTSP媒体流;
采用所述工作线程对接收到的多个报文结构体进行处理;
所述采用所述工作线程对接收到的多个报文结构体进行处理,包括:采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;
采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述多个报文结构体分发至多个工作线程,包括:
以报文结构体中的MBUF中的源IP地址和目的IP地址作为键计算第一哈希值,并将第一哈希值存储到所述MBUF的哈希字段,得到新哈希字段;
根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的工作线程中,其中,新哈希字段相同的报文结构体分发至同一工作线程。
3.根据权利要求1所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,包括:
采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息;
根据所述RTSP报文结构体的四元组信息在当前的工作线程的RTSP哈希树上的对应的第一目标哈希节点;
若查找到所述第一目标哈希节点,则将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
若未查找到所述第一目标哈希节点,则根据所述RTSP报文结构体的四元组信息在所述RTSP哈希树上建立对应的第一目标哈希节点,并将所述RTSP报文结构体中的RTSP报文信息存储到所述第一目标哈希节点;
判断是否获取到所述RTSP媒体流的所有RTSP报文信息;
若是,则保存当前的工作线程所需的所有RTSP报文信息。
4.根据权利要求3所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息,还包括:
若否,则返回执行所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理的步骤,其中每次处理的RTSP报文结构体为不同的RTSP报文结构体。
5.根据权利要求3所述的数据处理方法,其特征在于,所述采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理,包括:采用所述工作线程的第二子线程对接收到的一RTP报文结构体进行解析,得到所述RTP报文结构体的四元组信息;
根据所述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流的RTSP节点,并获取该RTSP节点对应的RTSP报文信息;
根据所述RTSP报文信息以及双向链表生成第二键值对,并将所述第二键值对存储到当前工作线程的RTP哈希树,其中,所述双向链表用于存储所述RTP报文结构体;
若所述双向链表中挂载的RTP报文结构体的数量超过预设阈值,则从所述RTP报文结构体中提取出RTP报文,并根据对应的所述RTSP报文信息对所述RTP报文的有效负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
6.根据权利要求3所述的数据处理方法,其特征在于,所述采用工作线程的第一子线程对接收到的一个RTSP报文结构体进行处理,得到所述RTSP报文结构体的四元组信息,包括:采用工作线程的第一子线程提取一个RTSP报文结构体的SDP信息和通告的RTP的信息;
根据所述DP信息和通告的RTP的信息得到所述RTSP报文结构体的四元组信息。
7.一种数据处理装置,其特征在于,包括:捕获模块,用于采用多个MBUF从至少两个RTSP媒体流中捕获RTSP报文以及RTP报文,得到对应的报文结构体;所述报文结构体包括捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;
分发模块,用于将多个所述报文结构体分发至多个工作线程,其中,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到同一所述工作线程中;基于报文结构体中的源IP地址和目的IP地址来判断RTSP报文以及RTP报文是否属于同一RTSP媒体流;
处理模块,用于采用所述工作线程对接收到的多个报文结构体进行处理;
所述处理模块具体用于:
采用工作线程的第一子线程对接收到的RTSP报文结构体进行处理,得到当前的工作线程所需的所有RTSP报文信息;
采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
8.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1‑6任一项所述的方法。
9.一种存储设备,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1‑6任一项所述的方法。
10.一种服务器,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1‑6任一项所述的方法。
说明书 :
一种数据处理方法、装置、电子设备、服务器及存储设备
技术领域
背景技术
过DPDK提供的网卡驱动和函数API,可以高速率处理数据包,极大的提升应用程序的工作效
率。
求(Request 报文),服务端响应和回复请求(Response 报文);另一方面是对媒体流进行控
制,如暂停播放和快进播放等控制。
在高带宽和高吞吐量的场景。
发明内容
的RTP报文结构体;
包括:
信息存储到所述第一目标哈希节点;
还包括:
进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
括:
及捕获RTP报文的RTP报文结构体;
一方面提供的所述方法中的步骤。
一方面提供的所述方法中的步骤。
捕获RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构
体分发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分
发到同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而
实现对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和
RTP报文结构体分发到同一所述工作线程中,从而可以提高处理效率。
明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
具体实施方式
此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因
此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的
范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做
出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
报文的RTP报文结构体。
RTP报文结构体两种。该RTSP报文结构体为MBUF捕获RTSP报文封装形成,该RTP报文结构体
为MBUF捕获RTP报文封装形成。其中,该RTSP媒体流可以为音频流,可以为视频流,也可以为
音视频流。在本实施例中,该RTSP媒体流为音频流与视频流的结合。
的哈希字段设置为零,从而使得MBUF在捕获报文后,可以释放掉哈希字段为零的MBUF,仅仅
保留哈希字段不为零的MBUF,从而将捕获的RTSP报文以及RTP报文之外的报文去除。
RTP报文封装得到报文结构体均存储至该一个Ring队列中。采用该种环形队列可以实现将
该环形队列中的报文结构体在不同的工作线程之间传递。
体中的IP地址和目的IP地址来判断RTSP报文以及RTP报文是否属于同一RTSP媒体流,从而
使得避免属于同一RTSP媒体的报文分发到不同的工作线程中,可以提高处理效率。
结构体进行处理,例如进行检测、播放或者写入等操作。
储到所述MBUF的哈希字段得到新哈希字段;S1022、根据所述MBUF中的新哈希字段将所述多
个报文结构体分发到不同的工作线程中,新哈希字段相同的报文结构体分发至同一工作线
程。
在同一RTSP媒体流中的所有MBUF的哈希值是相同的,因此,采用哈希值相同的报文结构体
发送到同一个工作线程可以避免将属于同RTSP媒体流的RTSP报文和RTP报文分发到了不同
的工作线程中,导致处理效率下降。
b、采用工作线程的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
信息。其中,在该步骤b中,对RTP报文结构体进行处理可以为检测、播放或者写入等操作。
RTSP报文信息存储到所述第一目标哈希节点;
常是554或8554,因此客户端接收来自服务端RTSP报文的源端口号是554或8554。需要保留
TCP报文中源端口号为554或8554的buf,释放掉其他的TCP报文对应的Mbuf。
等)。从而基于该SDP信息和通告的RTP的信息可以得到该RTSP报文结构体的四元组信息,也
即是源IP地址、目的IP地址、源端口号和目的端口号。
中,所述RTP报文结构体的四元组信息的哈希值为第二键值对的键,所述双向链表作为第二
键值对的值;
点;若查找到,则将对应RTP报文结构体挂载在所述双向链表中,若未查找到,则返回执行所
述步骤S1042。
负荷字段进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
个字节,可以判断报文是否是RTP报文。释放非RTP报文对应的Mbuf,保留RTP报文结构体。
体流下的查询等处理效率;采用双向链表结构,可以动态存储不固定个数的RTP报文。增大
整个系统的吞吐量和RTSP媒体流的处理上限,提升在高带宽模式下的处理能力。
RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构体分
发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到
同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而实现
对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和RTP报
文结构体分发到同一所述工作线程中,从而可以提高处理效率。
结构体以及捕获RTP报文的RTP报文结构体;MBUF为存储器缓存结构体,其用于捕获RTSP媒
体流中的RTSP报文以及RTP报文从而形成报文结构体。其中,该报文结构体有RTSP报文结构
体以及RTP报文结构体两种。该RTSP报文结构体为MBUF捕获RTSP报文封装形成,该RTP报文
结构体为MBUF捕获RTP报文封装形成。其中,该RTSP媒体流可以为音频流,可以为视频流,也
可以为音视频流。在本实施例中,该RTSP媒体流为音频流与视频流的结合。
用于分发该多个报文结构体的分发单元从该缓冲队列中获取需要进行分发的多个报文结
构体进行分发。在分发报文结构体时,可以基于报文结构体中的IP地址和目的IP地址来判
断RTSP报文以及RTP报文是否属于同一RTSP媒体流,从而使得避免属于同一RTSP媒体的报
文分发到不同的工作线程中,可以提高处理效率。
处理,然后再结合对RTSP报文结构体的处理结果来对RTP报文结构体进行处理,例如进行检
测、播放或者写入等操作。
字段得到新哈希字段;根据所述MBUF中的新哈希字段将所述多个报文结构体分发到不同的
工作线程中,新哈希字段相同的报文结构体分发至同一工作线程。
相同的,因此,采用哈希值相同的报文结构体发送到同一个工作线程可以避免将属于同
RTSP媒体流的RTSP报文和RTP报文分发到了不同的工作线程中,导致处理效率下降。
的第二子线程根据所需的所有RTSP报文信息对RTP报文结构体进行处理。
文结构体进行处理可以为检测、播放或者写入等操作。
信息存储到所述第一目标哈希节点;
此客户端接收来自服务端RTSP报文的源端口号是554或8554。需要保留TCP报文中源端口号
为554或8554的buf,释放掉其他的TCP报文对应的Mbuf。
信息和通告的RTP的信息可以得到该RTSP报文结构体的四元组信息,也即是源IP地址、目的
IP地址、源端口号和目的端口号。
述RTP报文结构体的四元组信息的哈希值为第二键值对的键,所述双向链表作为第二键值
对的值;
查找到,则将对应RTP报文结构体挂载在所述双向链表中,若未查找到,则返回执行根据所
述RTP报文结构体的四元组信息在当前的工作线程的RTSP哈希树查找属于同一RTSP媒体流
的RTSP节点.
进行处理,直至处理完该工作线程获取的所有RTP报文结构体。
文是否是RTP报文。释放非RTP报文对应的Mbuf,保留RTP报文结构体。
RTSP报文得到的RTSP报文结构体以及捕获RTP报文的RTP报文结构体;将多个报文结构体分
发至多个工作线程,属于同一所述RTSP媒体流的RTSP报文结构体和RTP报文结构体分发到
同一所述工作线程中;采用所述工作线程对接收到的多个报文结构体进行处理;从而实现
对RTSP媒体流的快速处理,由于采用将于同一所述RTSP媒体流的RTSP报文结构体和RTP报
文结构体分发到同一所述工作线程中,从而可以提高处理效率。
和/或其他形式的连接机构(未标出)互连并相互通讯,存储器302存储有处理器301可执行
的计算机程序,当计算设备运行时,处理器301执行该计算机程序,以执行时执行上述实施
例的任一可选的实现方式中的方法。其中,该电子设备3可以为服务器。
性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access
Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable
Read‑Only Memory, 简称EEPROM),可擦除可编程只读存储器(Erasable Programmable
Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Red‑Only Memory,
简称PROM),只读存储器(Read‑Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光
盘。
辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可
以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间
的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连
接,可以是电性,机械或其它的形式。
个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的
目的。
的关系或者顺序。
任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。