CN106789917A - 数据包处理方法及装置 - Google Patents

数据包处理方法及装置 Download PDF

Info

Publication number
CN106789917A
CN106789917A CN201611059280.9A CN201611059280A CN106789917A CN 106789917 A CN106789917 A CN 106789917A CN 201611059280 A CN201611059280 A CN 201611059280A CN 106789917 A CN106789917 A CN 106789917A
Authority
CN
China
Prior art keywords
packet
stored
array
found
sequence number
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
Application number
CN201611059280.9A
Other languages
English (en)
Other versions
CN106789917B (zh
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.)
Beijing One Hundred Internet Technology Co Ltd
Original Assignee
Beijing One Hundred Internet 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 Beijing One Hundred Internet Technology Co Ltd filed Critical Beijing One Hundred Internet Technology Co Ltd
Priority to CN201611059280.9A priority Critical patent/CN106789917B/zh
Publication of CN106789917A publication Critical patent/CN106789917A/zh
Application granted granted Critical
Publication of CN106789917B publication Critical patent/CN106789917B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate

Landscapes

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

Abstract

本发明提供了一种数据包处理方法及装置,该方法包括:获取待存储数据包序号;根据第一数组的长度值和待存储数据包序号,确定第一数组中用于存储待存储数据包的第一位置和待存储数据包的掩码值;将待存储数据包存于第一数组中第一位置,将待存储数据包的掩码值存在第二数组中、与第一位置相同位置;获取待查找数据包序号;根据第一数组的长度值和待查找数据包序号,确定第一数组中用于存储待查找数据包的第二位置和待查找数据包对应的掩码值,根据第二位置和待查找数据包对应的掩码值,判断待查找数据包是否存储于第一数组中。通过本发明能够解决相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题。

Description

数据包处理方法及装置
技术领域
本发明涉及计算机数据处理技术领域,具体而言,涉及一种数据包处理方法及装置。
背景技术
近年来,移动互联网音视频直播业务在教育、医疗、娱乐和体育等行业呈现井喷式增长,作为一种典型的实时多媒体通信业务,视频直播具有时效性、广播性、数据速率的相对稳定性等特性。
视频直播的主要过程为,数据源端将实时视频数据发送至视频直播服务器,视频直播服务器接收数据源端发送的实时视频数据,并发送至播放端进行播放,其中,视频直播服务器作为数据源端和播放端之间的数据中转媒介,需要实时存储一定量的数据,以响应播放端的重传请求。相关技术中,视频直播服务器通常采用顺序存储的方式存储接收到的数据包,具体过程为,视频直播服务器内设置有数组,视频直播服务器按照接收数据包的时间先后顺序,将各个数据包依次存储在数组中,且各个数据包在数组中的顺序与各个数据包的接收顺序一致。
由于相关技术中视频直播服务器存储数据包时,各个数据包在数组中的顺序与各个数据包的接收顺序一致,而视频直播服务器接收数据包的时间先后顺序与各个数据包之间的序号顺序可能并不一致,如视频直播服务器先接收到序号为3的数据包,再接收到序号为2的数据包,因此采用相关技术中的存储方式可能导致各个数据包在数组中的顺序与各个数据包之间的序号顺序不一致,如数组内序号为3的数据包在序号为2的数据包之前,导致查找某个序号的数据包时需要从数组的起始元素遍历到数组的结束元素,查找的时间复杂度高,查找效率低,不便于数据包的查找。
针对上述提到的相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题,目前尚未提出有效解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种数据包处理方法及装置,以解决相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题。
第一方面,本发明实施例提供了一种数据包处理方法,所述方法包括:获取待存储数据包以及所述待存储数据包携带的待存储数据包序号,所述待存储数据包包括直播视频流的数据包;提供用于存储所述待存储数据包的第一数组,根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值;提供用于存储所述待存储数据包对应的掩码值的第二数组,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,将所述待存储数据包对应的掩码值存储在所述第二数组中、与所述第一位置相同位置对应的存储空间内;获取待查找数据包携带的待查找数据包序号,所述待查找数据包包括直播视频流的数据包;根据所述第一数组的长度值和所述待查找数据包序号,确定所述第一数组中用于存储所述待查找数据包的第二位置和所述待查找数据包对应的掩码值,根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中。
结合第一方面,本发明实施例提供了第一方面第一种可能的实施方式,其中,所述根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中,包括:查找所述第二数组中与所述第二位置相同位置对应的存储空间,判断查找到的所述存储空间内存储的内容是否为所述待查找数据包对应的掩码值;若是,则确定所述待查找数据包存储在所述第一数组中所述第二位置对应的存储空间内,否则,确定所述待查找数据包未存储在所述第一数组中。
结合第一方面,本发明实施例提供了第一方面第二种可能的实施方式,其中,所述根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值,包括:计算所述待存储数据包序号相对于所述第一数组的长度值的取模结果和整除结果,将下标为所述取模结果的位置作为所述第一数组中用于存储所述待存储数据包的第一位置,将所述整除结果作为所述待存储数据包对应的掩码值。
结合第一方面,本发明实施例提供了第一方面第三种可能的实施方式,其中,所述获取待查找数据包携带的待查找数据包序号,包括:判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;若不连续,则将数据包序号位于前一个所述数据包序号和当前的所述数据包序号之间的直播视频流的数据包确定为所述待查找数据包,将位于前一个所述数据包序号和当前的所述数据包序号之间的数据包序号确定为所述待查找数据包携带的所述待查找数据包序号。
结合第一方面,本发明实施例提供了第一方面第四种可能的实施方式,其中,所述将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,包括:利用所述待存储数据包覆盖所述第一数组中所述第一位置对应的存储空间内的内容,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内。
第二方面,本发明实施例提供了一种数据包处理装置,所述装置包括:第一获取模块,用于获取待存储数据包以及所述待存储数据包携带的待存储数据包序号,所述待存储数据包包括直播视频流的数据包;确定模块,用于提供用于存储所述待存储数据包的第一数组,根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值;存储模块,用于提供用于存储所述待存储数据包对应的掩码值的第二数组,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,将所述待存储数据包对应的掩码值存储在所述第二数组中、与所述第一位置相同位置对应的存储空间内;第二获取模块,用于获取待查找数据包携带的待查找数据包序号,所述待查找数据包包括直播视频流的数据包;查找模块,用于根据所述第一数组的长度值和所述待查找数据包序号,确定所述第一数组中用于存储所述待查找数据包的第二位置和所述待查找数据包对应的掩码值,根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中。
结合第二方面,本发明实施例提供了第二方面第一种可能的实施方式,其中,所述查找模块包括:内容判断子模块,用于查找所述第二数组中与所述第二位置相同位置对应的存储空间,判断查找到的所述存储空间内存储的内容是否为所述待查找数据包对应的掩码值;结果确定子模块,用于若是,则确定所述待查找数据包存储在所述第一数组中所述第二位置对应的存储空间内,否则,确定所述待查找数据包未存储在所述第一数组中。
结合第二方面,本发明实施例提供了第二方面第二种可能的实施方式,其中,所述确定模块包括:计算子模块,用于计算所述待存储数据包序号相对于所述第一数组的长度值的取模结果和整除结果,将下标为所述取模结果的位置作为所述第一数组中用于存储所述待存储数据包的第一位置,将所述整除结果作为所述待存储数据包对应的掩码值。
结合第二方面,本发明实施例提供了第二方面第三种可能的实施方式,其中,所述第二获取模块包括:连续判断子模块,用于判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;序号确定子模块,用于若不连续,则将数据包序号位于前一个所述数据包序号和当前的所述数据包序号之间的直播视频流的数据包确定为所述待查找数据包,将位于前一个所述数据包序号和当前的所述数据包序号之间的数据包序号确定为所述待查找数据包携带的所述待查找数据包序号。
结合第二方面,本发明实施例提供了第二方面第四种可能的实施方式,其中,所述存储模块包括:覆盖存储子模块,用于利用所述待存储数据包覆盖所述第一数组中所述第一位置对应的存储空间内的内容,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内。
本发明实施例的数据包处理方法及装置,在存储数据包时,首先确定数据包的存储位置和掩码值,然后在第一数组中该存储位置存储数据包,在第二数组的该存储位置中存储该掩码值,依靠这种对应存储的方式,在查找某个数据包时,只需要计算数据包对应的掩码值和存储位置,根据该掩码值和存储位置就能够判断出该数据包是否被存储,无需在存储数据包的数组中从数组的起始元素遍历到数组的结束元素,因此能够降低时间复杂度,提高数据包的查找效率,解决相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的数据包处理方法的流程示意图;
图2为本发明实施例提供的第二数据存储待存储数据包对应的掩码值的示意图;
图3为本发明实施例提供的数据包处理装置的第一种结构示意图;
图4为本发明实施例提供的数据包处理装置的第二种结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题,本发明提供了一种数据包处理方法及装置,下面通过实施例进行具体描述。
图1为本发明实施例提供的数据包处理方法的流程示意图,该方法应用于服务器侧,如图1所示,该方法包括以下步骤:
步骤S102,获取待存储数据包以及该待存储数据包携带的待存储数据包序号,该待存储数据包包括直播视频流的数据包。
以视频直播为例,服务器获取视频源对应的终端发送的直播视频流的数据包,将该数据包作为待存储数据包,每个待存储数据包都携带有唯一的一个序号,该序号为待存储数据包序号,在采用数组存储各个待存储数据包时,理想状态下,按照各个待存储数据包序号存储各个待存储数据包,使得在服务器内,各个待存储数据包在数组内的顺序与各个待存储数据包序号的顺序一致。其中,待存储数据包的待存储数据包序号可以是视频源对应的终端在发送数据包时定义的。
步骤S104,提供用于存储待存储数据包的第一数组,根据第一数组的长度值和待存储数据包序号,确定第一数组中用于存储待存储数据包的第一位置和待存储数据包对应的掩码值。
在获取待存储数据包以及待存储数据包序号后,提供用于存储待存储数据包的第一数组,第一数组中包括多个数组元素,第一数组的长度为数组元素的数量和。在利用数组存储数据时,首先确定存储位置,如数组包括a1、a2、a3三个数组元素,每个数组元素对应一个存储位置,假设确定存储位置为a2,在确定存储位置后,将被存储的数据赋值给a2,从而将被存储的数据存储在位置a2对应的存储空间内。
本步骤中,根据第一数组的长度值和待存储数据包序号,确定第一数组中用于存储待存储数据包的第一位置和待存储数据包对应的掩码值,具体过程为:计算待存储数据包序号相对于第一数组的长度值的取模结果和整除结果,将下标为取模结果的位置确定第一数组中用于存储待存储数据包的第一位置,将整除结果作为待存储数据包对应的掩码值。
具体地,第一数组中包括多个数组元素,第一数组的长度为数组元素的数量和。设定待存储数据包序号为seq,第一数组的长度为size,经过以下取模和整除的运算:
index=seq%size
mask=seq/size
能够得到index和mask,其中,index可以理解为索引值,表示第一数组中用于存储待存储数据包的第一位置的下标,mask为待存储数据包对应的掩码值。需要说明的是,第一数组中各个数组元素从0开始计算下标,当index为0时,表示下标为0的位置,当index为1时,表示下标为1的位置,以此类推。
步骤S106,提供用于存储待存储数据包对应的掩码值的第二数组,将待存储数据包存储于第一数组中第一位置对应的存储空间内,将待存储数据包对应的掩码值存储在第二数组中、与第一位置相同位置对应的存储空间内。
在确定第一位置和掩码值之后,将待存储数据包存储于第一数组中第一位置对应的存储空间内,将待存储数据包对应的掩码值存储在第二数组中、与第一位置相同位置对应的存储空间内,其中,第二数组与第一数组长度相同,并各个数组元素一一对应,且第二数组与第一数组中数组元素的下标均从0开始。其中,第一数组和第二数组中元素的数量可以根据需要任意设定。
本实施例中,将待存储数据包存储于第一数组中第一位置对应的存储空间内,包括:利用待存储数据包覆盖第一数组中第一位置对应的存储空间内的内容,将待存储数据包存储于第一数组中第一位置对应的存储空间内,并且,将该待存储数据包作为第一数组中第一位置对应的元素。
比如,确定第一位置的下标为5,则将待存储数据包存储于第一数组中下标为5的位置对应的存储空间内,并将该待存储数据包作为第一数组中下标为5的元素。
本实施例中,采用数据覆盖的形式存储待存储数据包,同时,也采用数据覆盖的形式存储掩码值。
图2为本发明实施例提供的第二数据存储待存储数据包对应的掩码值的示意图。图2中,第二数组包括6个数组元素,也即包括6个存储位置,由于第一数组的布局与第二数组除了占用空间存在差异外,排列布局完全一致,因此图中省略第一数组。
在存储序号为233的数据包时,计算得到index为5、mask为38,因此将数据包存储在第一数组中下标为5的位置,将“38”存储在第二数组中下标为5的位置。
同理,在存储序号为235的数据包时,计算得到index为1、mask为39,因此将数据包存储在第一数组中下标为1的位置,将“39”存储在第二数组中下标为1的位置。
同理,在存储序号为234的数据包时,计算得到index为0、mask为39,因此将数据包存储在第一数组中的下标为0的位置,将“39”存储在第二数组中下标为0的位置。如此类推,将序号为236、237、238的数据包依次存储在第一数组中,将对应的掩码值依次存储在第二数组中。
图2中,步骤3和4展示了乱序插入序号为235和234的数据包,步骤8示例了序号为239的数据包替代序号为233的数据包的过程,据此可以看出,掩码值在存储时覆盖存储空间内之前存储的内容,使得掩码值的存储符合数据先入先出的原则,同样地,数据包在存储时覆盖存储空间内之前存储的内容,使得数据包的存储符合数据先入先出的原则,并且使得数据包和掩码值的删除无需额外操作。
由图2可知,序号相邻的数据包,数组的存储位置也相邻,或者首位相接;先后被写入相同index位置的数据包,可以通过mask值的不同来区分,便于数据包序号的区分。
本实施例中,第二数组每个元素占用的比特数n,只需满足n>log(max(seq))/size即可;例如RTP协议定义的包序号为2个字节,取值范围0到65535,若数据包存储数组长度为512,则n只需要7比特,即一个字节即可;当size取1时,n得到最大值16,此时每个掩码值也仅需要2个字节。由此可知,第二数组所占用的存储空间较小,不会对存储数据包造成影响,也不会影响数据包存储的效率。
步骤S108,获取待查找数据包携带的待查找数据包序号,该待查找数据包包括直播视频流的数据包。
在服务器存储数据包的过程中,最常用到的是查找数据包,即在获知某个数据包的序号时,查找该序号的数据包是否存储。
本步骤中,通过以下方式获取待查找数据包携带的待查找数据包序号:
(1)判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;
(2)若不连续,则将数据包序号位于前一个数据包序号和当前的数据包序号之间的直播视频流的数据包确定为待查找数据包,将位于前一个数据包序号和当前的数据包序号之间的数据包序号确定为待查找数据包携带的待查找数据包序号。
服务器在接收直播视频流的数据包的过程中,若发现当前接收到的数据包的数据包序号与前一个接收到的数据包的数据包序号不连续,则将二者之间的数据包确定为待查找数据包,同时将二者之间的序号确定为待查找数据包携带的待查找数据包序号。
比如,服务器当前接收到序号为3的数据包,前一个接收到序号为1的数据包,因此将序号为2的数据包确定为待查找数据包,将“2”确定为待查找数据包携带的待查找数据包序号。
又如,服务器当前接收到序号为4的数据包,前一个接收到序号为1的数据包,因此将序号为2、3的数据包确定为待查找数据包,将“2和3”确定为待查找数据包携带的待查找数据包序号。
步骤S110,根据第一数组的长度值和待查找数据包序号,确定第一数组中用于存储待查找数据包的第二位置和待查找数据包对应的掩码值,根据该第二位置和待查找数据包对应的掩码值,判断待查找数据包是否存储于第一数组中。
由于本实施例中在存储数据包时,先计算取模结果和整除结果,将下标为取模结果的位置作为数据包的存储位置,将整除结果作为数据包对应的掩码值,并在第一数组的该存储位置中存储数据包,在第二数据的该存储位置中存储掩码值,因此在查找数据包时,只需要获知该被查找数据包的存储位置和掩码值,并判断第二数组中该存储位置存储的是否为正确的掩码值即可。
因此本步骤中,根据第一数组的长度值和待查找数据包序号,确定第一数组中用于存储待查找数据包的第二位置和待查找数据包对应的掩码值,具体过程为,计算待查找数据包序号相对于第一数组的长度值的取模结果和整除结果,将下标为该取模结果的位置作为第一数组中用于存储待查找数据包的第二位置,将整除结果作为待查找数据包对应的掩码值。
然后,根据该第二位置和待查找数据包对应的掩码值,判断待查找数据包是否存储于第一数组中,具体为,查找第二数组中与第二位置相同位置对应的存储空间,判断查找到的存储空间内存储的内容是否为待查找数据包对应的掩码值;若是,则确定待查找数据包存储在第一数组中第二位置对应的存储空间内,否则,确定待查找数据包未存储在第一数组中。
比如,计算得到待查找数据包相对于第一数组的长度值的取模结果为3,整除结果为60,则判断第二数组中下标为3的位置对应的存储空间内存储的是否为60,若是,确定待查找数据包存储在第一数组中下标为3的位置对应的存储空间内,否则,确定待查找数据包未存储在第一数组中。
本实施例中,在存储数据包时,首先确定数据包的存储位置和掩码值,然后在第一数组中该存储位置存储数据包,在第二数组的该存储位置中存储该掩码值,依靠这种对应存储的方式,在查找某个数据包时,只需要计算数据包对应的掩码值和存储位置,根据该掩码值和存储位置就能够判断出该数据包是否被存储,无需在存储数据包的数组中从数组的起始元素遍历到数组的结束元素,因此能够降低时间复杂度,提高数据包的查找效率,解决相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题。
本发明的核心在于引入了第二数组来控制数据包队列的访问,与相关技术中的顺序存储、基于平衡二叉树的关联存储容器存储、基于哈希表的散列存储容器存储方式相比,本实施例中的数据包处理方法能够降低时间复杂度、并且支持先入先出的存储方式、而且支持正序遍历,并且由于第二数组仅占用很小的存储空间,因此除了数据包本身的存储空间之外,只额外消耗极少的存储空间即可实现,不仅满足视频直播服务器数据缓存队列的所有需求,并且达到了时间复杂度和空间复杂度最优的性能。
对应上述的数据包处理方法,本发明实施例还提供了一种数据包处理装置,图3为本发明实施例提供的数据包处理装置的第一种结构示意图,如图3所示,该装置包括:
第一获取模块31,用于获取待存储数据包以及所述待存储数据包携带的待存储数据包序号,所述待存储数据包包括直播视频流的数据包;
确定模块32,用于提供用于存储所述待存储数据包的第一数组,根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值;
存储模块33,用于提供用于存储所述待存储数据包对应的掩码值的第二数组,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,将所述待存储数据包对应的掩码值存储在所述第二数组中、与所述第一位置相同位置对应的存储空间内;
第二获取模块34,用于获取待查找数据包携带的待查找数据包序号,所述待查找数据包包括直播视频流的数据包;
查找模块35,用于根据所述第一数组的长度值和所述待查找数据包序号,确定所述第一数组中用于存储所述待查找数据包的第二位置和所述待查找数据包对应的掩码值,根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中。
图4为本发明实施例提供的数据包处理装置的第二种结构示意图,如图4所示:
确定模块32包括:计算子模块321,用于计算所述待存储数据包序号相对于所述第一数组的长度值的取模结果和整除结果,将下标为所述取模结果的位置作为所述第一数组中用于存储所述待存储数据包的第一位置,将所述整除结果作为所述待存储数据包对应的掩码值。
存储模块33包括:覆盖存储子模块331,用于利用所述待存储数据包覆盖所述第一数组中所述第一位置对应的存储空间内的内容,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内。
第二获取模块34包括:连续判断子模块341,用于判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;序号确定子模块342,用于若不连续,则将数据包序号位于前一个所述数据包序号和当前的所述数据包序号之间的直播视频流的数据包确定为所述待查找数据包,将位于前一个所述数据包序号和当前的所述数据包序号之间的数据包序号确定为所述待查找数据包携带的所述待查找数据包序号。
查找模块35包括:内容判断子模块351,用于查找所述第二数组中与所述第二位置相同位置对应的存储空间,判断查找到的所述存储空间内存储的内容是否为所述待查找数据包对应的掩码值;结果确定子模块352,用于若是,则确定所述待查找数据包存储在所述第一数组中所述第二位置对应的存储空间内,否则,确定所述待查找数据包未存储在所述第一数组中。
本发明实施例的数据包处理装置,在存储数据包时,首先确定数据包的存储位置和掩码值,然后在第一数组中该存储位置存储数据包,在第二数组的该存储位置中存储该掩码值,依靠这种对应存储的方式,在查找某个数据包时,只需要计算数据包对应的掩码值和存储位置,根据该掩码值和存储位置就能够判断出该数据包是否被存储,无需在存储数据包的数组中从数组的起始元素遍历到数组的结束元素,因此能够降低时间复杂度,提高数据包的查找效率,解决相关技术中查找某个序号的数据包时,查找的时间复杂度高,查找效率低,不便于数据包查找的问题。
本发明的核心在于引入了第二数组来控制数据包队列的访问,与相关技术中的顺序存储、基于平衡二叉树的关联存储容器存储、基于哈希表的散列存储容器存储方式相比,本实施例中的数据包处理方法能够降低时间复杂度、并且支持先入先出的存储方式、而且支持正序遍历,并且由于第二数组仅占用很小的存储空间,因此除了数据包本身的存储空间之外,只额外消耗极少的存储空间即可实现,不仅满足视频直播服务器数据缓存队列的所有需求,并且达到了时间复杂度和空间复杂度最优的性能。
本发明实施例所提供的数据包处理装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种数据包处理方法,其特征在于,所述方法包括:
获取待存储数据包以及所述待存储数据包携带的待存储数据包序号,所述待存储数据包包括直播视频流的数据包;
提供用于存储所述待存储数据包的第一数组,根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值;
提供用于存储所述待存储数据包对应的掩码值的第二数组,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,将所述待存储数据包对应的掩码值存储在所述第二数组中、与所述第一位置相同位置对应的存储空间内;
获取待查找数据包携带的待查找数据包序号,所述待查找数据包包括直播视频流的数据包;
根据所述第一数组的长度值和所述待查找数据包序号,确定所述第一数组中用于存储所述待查找数据包的第二位置和所述待查找数据包对应的掩码值,根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中,包括:
查找所述第二数组中与所述第二位置相同位置对应的存储空间,判断查找到的所述存储空间内存储的内容是否为所述待查找数据包对应的掩码值;
若是,则确定所述待查找数据包存储在所述第一数组中所述第二位置对应的存储空间内,否则,确定所述待查找数据包未存储在所述第一数组中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值,包括:
计算所述待存储数据包序号相对于所述第一数组的长度值的取模结果和整除结果,将下标为所述取模结果的位置作为所述第一数组中用于存储所述待存储数据包的第一位置,将所述整除结果作为所述待存储数据包对应的掩码值。
4.根据权利要求1所述的方法,其特征在于,所述获取待查找数据包携带的待查找数据包序号,包括:
判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;
若不连续,则将数据包序号位于前一个所述数据包序号和当前的所述数据包序号之间的直播视频流的数据包确定为所述待查找数据包,将位于前一个所述数据包序号和当前的所述数据包序号之间的数据包序号确定为所述待查找数据包携带的所述待查找数据包序号。
5.根据权利要求1所述的方法,其特征在于,所述将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,包括:
利用所述待存储数据包覆盖所述第一数组中所述第一位置对应的存储空间内的内容,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内。
6.一种数据包处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取待存储数据包以及所述待存储数据包携带的待存储数据包序号,所述待存储数据包包括直播视频流的数据包;
确定模块,用于提供用于存储所述待存储数据包的第一数组,根据所述第一数组的长度值和所述待存储数据包序号,确定所述第一数组中用于存储所述待存储数据包的第一位置和所述待存储数据包对应的掩码值;
存储模块,用于提供用于存储所述待存储数据包对应的掩码值的第二数组,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内,将所述待存储数据包对应的掩码值存储在所述第二数组中、与所述第一位置相同位置对应的存储空间内;
第二获取模块,用于获取待查找数据包携带的待查找数据包序号,所述待查找数据包包括直播视频流的数据包;
查找模块,用于根据所述第一数组的长度值和所述待查找数据包序号,确定所述第一数组中用于存储所述待查找数据包的第二位置和所述待查找数据包对应的掩码值,根据所述第二位置和所述待查找数据包对应的掩码值,判断所述待查找数据包是否存储于所述第一数组中。
7.根据权利要求6所述的装置,其特征在于,所述查找模块包括:
内容判断子模块,用于查找所述第二数组中与所述第二位置相同位置对应的存储空间,判断查找到的所述存储空间内存储的内容是否为所述待查找数据包对应的掩码值;
结果确定子模块,用于若是,则确定所述待查找数据包存储在所述第一数组中所述第二位置对应的存储空间内,否则,确定所述待查找数据包未存储在所述第一数组中。
8.根据权利要求6所述的装置,其特征在于,所述确定模块包括:
计算子模块,用于计算所述待存储数据包序号相对于所述第一数组的长度值的取模结果和整除结果,将下标为所述取模结果的位置作为所述第一数组中用于存储所述待存储数据包的第一位置,将所述整除结果作为所述待存储数据包对应的掩码值。
9.根据权利要求6所述的装置,其特征在于,所述第二获取模块包括:
连续判断子模块,用于判断当前接收到的直播视频流的数据包携带的数据包序号与前一个接收到的直播视频流的数据包携带的数据包序号是否连续;
序号确定子模块,用于若不连续,则将数据包序号位于前一个所述数据包序号和当前的所述数据包序号之间的直播视频流的数据包确定为所述待查找数据包,将位于前一个所述数据包序号和当前的所述数据包序号之间的数据包序号确定为所述待查找数据包携带的所述待查找数据包序号。
10.根据权利要求6所述的装置,其特征在于,所述存储模块包括:
覆盖存储子模块,用于利用所述待存储数据包覆盖所述第一数组中所述第一位置对应的存储空间内的内容,将所述待存储数据包存储于所述第一数组中所述第一位置对应的存储空间内。
CN201611059280.9A 2016-11-25 2016-11-25 数据包处理方法及装置 Active CN106789917B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611059280.9A CN106789917B (zh) 2016-11-25 2016-11-25 数据包处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611059280.9A CN106789917B (zh) 2016-11-25 2016-11-25 数据包处理方法及装置

Publications (2)

Publication Number Publication Date
CN106789917A true CN106789917A (zh) 2017-05-31
CN106789917B CN106789917B (zh) 2019-10-01

Family

ID=58911524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611059280.9A Active CN106789917B (zh) 2016-11-25 2016-11-25 数据包处理方法及装置

Country Status (1)

Country Link
CN (1) CN106789917B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351569A (zh) * 2019-06-25 2019-10-18 腾讯科技(深圳)有限公司 一种直播内容处理方法、装置、设备及介质
CN111027290A (zh) * 2019-11-22 2020-04-17 贝壳技术有限公司 一种数据报告命名方法、装置、电子设备和存储介质
CN112417227A (zh) * 2021-01-21 2021-02-26 国能信控互联技术有限公司 一种基于哈希表和红黑树的实时数据存储与查询方法
CN113783800A (zh) * 2021-11-10 2021-12-10 恒生电子股份有限公司 数据包处理方法、装置、计算机设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549535A (zh) * 2003-05-09 2004-11-24 华为技术有限公司 用rtp数据包的序号进行排序以消除其抖动延时的方法
CN103024453A (zh) * 2012-12-26 2013-04-03 广东威创视讯科技股份有限公司 非直接获取视频应用场合拼接视频同步播放方法及装置
CN103488717A (zh) * 2013-09-11 2014-01-01 北京华胜天成科技股份有限公司 一种无锁数据汇聚方法及装置
CN103701658A (zh) * 2013-11-18 2014-04-02 北京视联动力国际信息技术有限公司 一种视联网的网络状况测试方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549535A (zh) * 2003-05-09 2004-11-24 华为技术有限公司 用rtp数据包的序号进行排序以消除其抖动延时的方法
CN1277390C (zh) * 2003-05-09 2006-09-27 华为技术有限公司 用rtp数据包的序号进行排序以消除其抖动延时的方法
CN103024453A (zh) * 2012-12-26 2013-04-03 广东威创视讯科技股份有限公司 非直接获取视频应用场合拼接视频同步播放方法及装置
CN103488717A (zh) * 2013-09-11 2014-01-01 北京华胜天成科技股份有限公司 一种无锁数据汇聚方法及装置
CN103701658A (zh) * 2013-11-18 2014-04-02 北京视联动力国际信息技术有限公司 一种视联网的网络状况测试方法和装置
CN103701658B (zh) * 2013-11-18 2016-05-04 北京视联动力国际信息技术有限公司 一种视联网的网络状况测试方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351569A (zh) * 2019-06-25 2019-10-18 腾讯科技(深圳)有限公司 一种直播内容处理方法、装置、设备及介质
CN111027290A (zh) * 2019-11-22 2020-04-17 贝壳技术有限公司 一种数据报告命名方法、装置、电子设备和存储介质
CN112417227A (zh) * 2021-01-21 2021-02-26 国能信控互联技术有限公司 一种基于哈希表和红黑树的实时数据存储与查询方法
CN113783800A (zh) * 2021-11-10 2021-12-10 恒生电子股份有限公司 数据包处理方法、装置、计算机设备及可读存储介质

Also Published As

Publication number Publication date
CN106789917B (zh) 2019-10-01

Similar Documents

Publication Publication Date Title
CN106789917A (zh) 数据包处理方法及装置
CN106911780A (zh) 业务id生成方法、装置及系统
CN103873451B (zh) 一种数据同步的方法、设备和系统
CN104468401B (zh) 一种报文处理方法和装置
US20050259672A1 (en) Method to improve forwarding information base lookup performance
CN1270728A (zh) 快速路由查找的方法和系统
CN103096126B (zh) 协作式缓存集群中面向视频点播服务的协作式缓存方法及系统
CN104778222B (zh) 基于usb存储设备的媒体库建立及更新方法
CN107404530A (zh) 基于用户兴趣相似度的社交网络协作缓存方法及装置
CN102067617A (zh) 在内容分发网络中自组织的高速缓存的方法和装置
CN104349391B (zh) 一种WiFi工作站点的调度处理方法和装置
CN101588287B (zh) 对等网络数据调度和下载的方法、装置和系统
CN107835437A (zh) 基于多缓存服务器的调度方法和装置
CN107046501A (zh) 用于sdn的路径确定方法、装置、计算机设备及存储介质
CN101521553A (zh) 对等网络视频点播系统中用于提供数据分片的方法和装置
CN102916896A (zh) 多路端口镜像混合数据流分流方法及设备
CN108881444A (zh) 一种内容流行度分布不一致的雾无线接入网非同步编码缓存方法
CN108777809A (zh) 一种全景视频分片移动网络缓存方法及系统、全景视频下载方法
CN107547346A (zh) 一种报文传输方法和装置
CN106304154B (zh) 一种pdcp实体的数据传输方法及pdcp实体
CN110120965A (zh) 课件的下载方法、教学系统及存储介质
CN103973747B (zh) 一种获取内容的方法和装置
CN105915648A (zh) 基于缓存平台的资源调度方法和装置
CN106294191B (zh) 处理表的方法、访问表的方法和装置
CN107493245B (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