CN103905331A - 一种实时媒体数据传输方法、装置及系统 - Google Patents
一种实时媒体数据传输方法、装置及系统 Download PDFInfo
- Publication number
- CN103905331A CN103905331A CN201210576431.3A CN201210576431A CN103905331A CN 103905331 A CN103905331 A CN 103905331A CN 201210576431 A CN201210576431 A CN 201210576431A CN 103905331 A CN103905331 A CN 103905331A
- Authority
- CN
- China
- Prior art keywords
- real
- packet
- time media
- client
- response message
- 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
本发明公开了一种实时媒体数据传输方法、装置及系统,该方法包括:安全穿越网关STG在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。采用上述技术方案,能够较好地节省系统资源,提高基于TCP的实时媒体数据的传输效率。
Description
技术领域
本发明涉及多媒体数据处理技术领域,尤其是涉及一种实时媒体数据传输方法、装置及系统。
背景技术
网络地址转换/防火墙穿越(NAT/FT,Network Address Translation/FirewallTraversal),是一种保证位于NAT设备后的主机与外部的主机之间能够正常通信的技术。
由于IPv4地址紧缺及网络安全问题,多数企业用户在网络出口处设置了NAT/NAPT设备建立一个私有IP地址、私有端口与公网IP、公网端口之间的绑定,为内网主机分配公网地址和端口与外部主机进行通信。会话发起协议(SIP,Session Initiation Protocol)是一个基于文本的应用层协议,会话建立的有关IP地址信息在数据包中传输,但是NAT是对TCP/IP以下协议层进行处理,无法解析应用层的SIP数据包,无法完成正常的SIP会话建立过程。从安全方面考虑,多数企业在网络出口处设置了防火墙,对通过设置的防火墙的IP数据包按照相关策略进行过滤。防火墙在访问列表配置时,除打开网内业务需要的知名端口外(如http的80端口),其它端口一般都配置为拒绝。对于基于SIP的多媒体通信应用而言,需要在控制信令中动态地协商媒体流端口,并维护多个UDP流实现媒体流的发送和接收。动态分配的端口为在防火墙上配置固定的包过滤策略带来了困难,对于不支持SIP应用网关(SIP ALG)的防火墙,无法获取动态端口信息,导致媒体报文不能通过。
随着多媒体处理技术的发展,基于流媒体传输的多媒体应用得到了迅速的发展。而音/视频等媒体流对实时性要求很高,通常采用基于UDP的RTP协议来传输。但为了节省IPv4地址空间及保障网络安全,在CM-IMS网络中多数企业用户在出网处部署NAT、防火墙及HTTP代理,但是,由部署的NAT、防火墙及HTTP代理等设备,会使实时媒体数据传输产生下述缺陷:
第一种缺陷:如图1a所示,某些防火墙会对协议进行限制,采用UDP协议的数据不能通过,导致基于UDP的SIP和RTP数据也无法通过。
第二种缺陷:如图1b所示,CM-IMS需要使用大量UDP端口进行媒体数据传输,防火墙可能无法开放大量UDP端口
第三种缺陷:防火墙实现SIP ALG功能,但其对SIP消息的修改不符合CM-IMS要求,导致核心网无法正确处理SIP消息。
针对上述缺陷,一种解决方式是在会话边界控制器(SBC,Session BorderController)处部署STG设备,STG可与SBC分设或合设。客户端与STG之间建立隧道(tunnel),隧道类型包括TLS(Transport Layer Security)及DTLS(Datagram Transport Layer Security),如图1c所示,分别将数据加密后封装在payload中。如果将基于UDP的SIP消息或RTP消息利用DTLS方式封装并传输,其行为类似UDP的方式。如果是利用TLS方式封装并传输,其行为与TCP类似。由于TCP的拥塞控制机制(丢包认为是网络拥塞,重传丢包并将发送速度减慢)和可靠性连接机制(丢包重传,实时媒体对实时性要求高,超过一定时间的重传没有意义),导致利用TLS传实时媒体效果不好。基于此提出一种利用TCP协议承载实时媒体的方案,应用于Client与STG Server的TLS隧道传输过程中。由于TCP协议存在丢包重传的可靠性保障机制,丢包后发送速率减半的拥塞控制机制等,在具体实施中需要占用大量的传输资源和时间上的开销,使得基于TCP传输实时媒体数据的效率不高。基于此,现有技术中提出两种解决方案:
第一种方案:TCP-RTM的方法。该种方法需要对接收方和发送方的协议栈进行更改,然后给予更改后的协议栈来传输实时媒体数据。
第二种方案:在TCP层和底层协议栈之间增加一个工作层的方法。具体实施中,在TCP层和底层协议栈之间增加一个工作层NDIS,位于TCP层之下、网卡之上,完成基于TCP的数据包封包以及数据包的过滤接收。对于承载实时媒体的数据包,通过NDIS层直接交给应用层,对于普通TCP数据包,则交给标准TCP/IP协议栈进行传输。
上述两种方案,其中第一种方案,需要分别对发送方和接收方的协议栈进行改动,而第二种方案,则需要额外增加一个工作层,两种技术方案复杂度比较高,比较浪费系统资源,进而影响基于TCP的实时媒体数据的传输效率。
发明内容
本发明实施例提供了一种实时媒体数据传输方法、装置及系统,能够较好地节省系统资源,提高基于TCP的实时媒体数据的传输效率。
一种实时媒体数据传输方法,包括:安全穿越网关STG在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
一种实时媒体数据传输方法,包括:安全穿越网关STG在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;在预设时长内,判断是否接收到客户端发来的响应消息;根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小;通过调整后的发送窗口发送实时媒体数据。
一种实时媒体数据传输装置,包括:判断单元,在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;保存单元,用于根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;发送单元,用于读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
一种实时媒体数据传输装置,包括:发送单元,用于在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;判断单元,用于在预设时长内,判断是否接收到客户端发来的响应消息;调整单元,用于根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小;所述发送单元,还用于通过调整后的发送窗口发送实时媒体数据。
一种实时媒体数据传输系统,包括至少一个客户端和至少一个安全穿越网关STG,其中所述客户端,用于向STG发送实时媒体数据包,以及接收STG发来的实时媒体数据包,并向所述STG发送响应信息;所述STG,用于在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息;以及在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;在预设时长内,判断是否接收到客户端发来的响应消息;根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小,通过调整后的发送窗口发送实时媒体数据。
采用上述技术方案,STG在确定出接收到的数据包类型是实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包,并根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中,在进行实时媒体数据包读取时,首先读取顺序队列中的数据包,若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。相对现有技术来说,由于没有回复重复ACK,因此发送实时媒体数据包的发送速率不会降低(例如减半),从而提高了实时媒体数据包的发送效率。
并且,STG在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包,在预设时长内,判断是否接收到客户端发来的响应消息,根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小。发送窗口的调整回根据响应消息进行适应性调整,与其他条件没有关系,从而能够较好地提升网络的吞吐量,提升高实时媒体数据传输的效率。
附图说明
图1a~图1b为现有技术中,提出的部署NAT、防火墙及HTTP代理设备的系统结构图;
图1c为现有技术中,提出的实时媒体数据包封装示意图;
图2为本发明实施例一中,提出的实时媒体数据传输系统结构图;
图3为本发明实施例二中,提出的实时媒体数据传输方法流程图;
图4为本发明实施例二中,提出的实时媒体数据传输装置结构图;
图5为本发明实施例二中,提出的TCP数据包的格式示意图;
图6为本发明实施例二中,提出的实时媒体数据传输装置结构图;
图7为本发明实施例三中,提出的实时媒体数据传输方法流程图。
具体实施方式
针对现有技术中存在的实时媒体数据传输浪费系统资源,传输效率较低的问题,本发明实施例这里提出的技术方案,通过在安全穿越网关(STG,SecurityTraversing Gateway)出增加传输实时媒体数据的功能,在接收实时媒体数据时,采用丢包忽略方式,而在发送实时媒体数据时,发送数据包的速度取决于接收方的缓存,从而使得网络侧的丢包不再影响发送窗口的大小,并且不需要对协议栈进行改造,易于实现,较好地节省了系统资源,提高了实时媒体数据的传输效率。
下面将结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细地阐述。
实施例一
本发明实施例一这里提出一种实时媒体数据传输系统,如图2所示包括至少一个客户端和至少一个STG,客户端和STG之间既传输信令数据也传输实时媒体数据。其中:
所述客户端,用于向STG发送实时媒体数据包,以及接收STG发来的实时媒体数据包,并向所述STG发送响应信息。
具体地,客户端向STG发送实时媒体数据包,即STG接收实时媒体数据,可以称之为上行链路的实时媒体数据包传输,而客户端接收STG发来的实时媒体数据包,即STG发送实时媒体数据,可以称之为下行链路的实时媒体数据包传输。其中客户端向STG发送的是标准的基于TCP的实时媒体数据包或者是基于UDP的数据包。
所述STG,具备上行链路的数据传输功能和/或下行链路的数据传输功能。本发明实施例一这里以STG同时具备上行上行链路的数据传输功能和下行链路的数据传输功能进行详细阐述。在上行链路中,STG用于在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
在下行链路中,STG用于在确定出待发送的数据包类型是基于TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包,在预设时长内,判断是否接收到客户端发来的响应消息;根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小。
其中,本发明实施例一这里提出的实时媒体数据传输系统,具体实施中,系统中包含的所有客户端可以均位于NAT/FW/HTTP代理设备后,即通过STG设备与IMS核心网连接,也可以是一部分客户端位于NAT/FW/HTTP代理设备后,而另一部分客户端直接与IMS核心网连接。
具体地,本发明实施例这里提出的技术方案中,STG可以作为实时媒体数据传输系统中的一个独立组成设备,也可以是集成在SBC设备中的一个模块。
实施例二
基于上述实施例一提出的实时媒体数据传输系统的系统架构,本发明实施例一这里以两个客户端,两个STG设备为例来详细阐述实时媒体数据传输方法。
需要说明的是,本发明实施例二这里提出的STG既具有上行链路和/或下行链路的数据传输功能,为便于阐述,本发明实施例二这里以两个STG为例来进行详细阐述,其中,STG1具备上行链路的数据传输功能,用于接收客户端Client1发送的实时媒体数据包,STG2具备下行链路的数据传输功能,用于向客户端Client2发送实时媒体数据包,STG1和STG2之间通过IMS核心网络进行连接,传输实时媒体数据包。其中,Client1位于STG1之后,即Client1通过STG1和IMS核心网络进行连接向Client2发送实时媒体数据包,Client2位于STG2之后,即Client2通过STG2和IMS核心网络进行连接,接收Client1发送的实时媒体数据包。如图3所示,其具体处理流程如下述:
步骤201,STG1接收Client1发来的数据包。
其中,在数据传输层,Client1按照顺序向STG1按照顺序发送数据包,Client1发送的数据包类型可以但不限于是基于TCP的数据包或者是基于UDP的数据包。
步骤202,STG1判断接收到的数据包类型是否是基于TCP传输的实时媒体数据包,在判断结果为是时,执行步骤203,反之,正常传输接收到的数据包。
步骤203,STG1在确定出接收到的数据包类型是基于TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包。
其中,STG1可以根据接收到的实时媒体数据包的序号,确定所述实时媒体数据包是否是按序到达,如果是,确定所述实时媒体数据是正确排序的数据包,如果否,确定所述实时媒体数据是错误排序的数据包。
具体地,STG1接收到Client1发来的实时媒体数据包之后,通过查询基于TCP的实时媒体数据包包头的序号,来判断实时媒体数据包是否是按照顺序到达的。
步骤204,根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中。
其中,在STG1的传输层可以维护两个队列,即顺序队列和乱序队列。根据步骤203中的判断结果,如果实时媒体数据包是按照顺序到达的,则将该实时媒体数据包保存在维护的顺序队列中,并且,下一数据包接收指针Rcv_next_ptr指向该保存的实时媒体数据包之后,较佳地,还可以向Client1发送响应信息ACK,Client1在接收到ACK之后,会继续发送新的实时媒体数据包。如果实时媒体数据包是乱序到达的,则将该实时媒体数据包保存在维护的乱序队列中,并向Client1回复ACK,该ACK与上一个ACK的内容相同,客户端统计重复接收到的ACK的数量信息,当超过三个时,即某一实时媒体数据包需要进行三次重发时,将该ACK对应的实时媒体数据包丢弃,并将发送窗口减小至原来的二分之一,通过减小后的发送窗口继续发送实时媒体数据包。
步骤205,STG1依次读取顺序队列中存储的实时媒体数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包。
其中在实时媒体数据包传输时,STG1依次读取顺序队列中存储的实时媒体数据包,在读取后,读取指针Read_ptr会依次指向顺序队列中的下一个将要读取的实时媒体数据包。例如,假设顺序队列中共有三个实时媒体数据包,分别标识为T1,T2和T3,如果T1正在被读取,则Read_ptr指针指向下一个要被读取的实时媒体数据包T2。
步骤206,若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
其中,假设乱序队列中依次存储着数据包T4和T5,当顺序队列中没有新接收的数据包时,则在乱序队列中获得数据包T4,将数据包T4放置在顺序队列中,并且,Rcv_next_ptr和Read_ptr同时指向顺序队列中最新接收到的实时媒体数据包。例如,将T4放置在顺序队列中,STG1读取T4,并且向Client1回复正确读取数据包的ACK,指示Client1发送实时媒体数据包,Client1在接收到ACK后,会继续发送实时媒体数据包T6,STG1将接收到的T6存储到顺序队列中,此时Rcv_next_ptr和Read_ptr同时指向T6,STG1在读取T4之后,会读取接收到的T6。
较佳地,在上述步骤206之后,还可以包括:
若STG在设定时长内未接收到客户端发来的数据包,则重新发送响应信息,指示客户端发送数据包。
可以在STG1的应用层设置一个定时器,并将该定时器周期性启动,如果定时器超时时,STG1还没有接收到Client1发送的实时媒体数据包,则可以指示传输层发送重复的ACK,指示Client1发送实时媒体数据包。
具体实施中,采用本发明实施例这里提出的技术方案,STG没有收到任何实时媒体数据包时,不会回复响应消息ACK,或者是回复的响应消息ACK丢失。可以但不限于包括下述两种情况:
第一种情况:STG支持周期性发送心跳消息,如果到达规定时间后STG还未收到客户端发来的新实时媒体数据包,则可以发送心跳消息(例如发送重复的ACK)。
第二种情况:在STG处设置定时器,超时后重新发送重复的响应消息ACK,并等待客户端发送的实时媒体数据包的到来。
第三种情况:通过在客户端设置的定时器,当客户端设置的定时器超时后,则将发送速率减半并重传未被确认的实时媒体数据包。
上述过程是STG接收Client发送的实时媒体数据包并进行读取的处理过程,在整个处理过程中,STG收到正确排序的数据包,则实时与现有技术中相同的处理方案,对当前实时媒体数据包进行确认或对前几个实时媒体数据包进行一并确认,同时发送响应信息ACK给客户端,请求发送端发送新的数据包。并且STG将正常顺序的实时媒体数据包就放置在顺序队列中,将乱序到达的实时媒体数据包放置乱序队列中,在进行实时媒体数据包读取时,若顺序队列中没有新的数据包,则将乱序队列中取出从第一个开始的顺序排列的实时媒体数据包放置在顺序队列中,并且rcv_next_ptr指针跳过前面没有正常接收的实时媒体数据包并回复ACK请求下一个实时媒体数据包。由于没有回复重复ACK,因此发送实时媒体数据包的发送速率不会降低(例如减半),从而提高了实时媒体数据包的发送效率。只有STG未读取数据,STG回复重复ACK或客户端发送实时媒体数据包超时时,实时媒体数据包重传,则发送实时媒体数据包的发送速率减半,而此时,由于在STG中维护顺序队列(即相当于设置了实时媒体数据播放缓冲区),因此不会影响用户感知。
相应地,本发明实施二这里还提出一种实时媒体数据传输装置,如图4所示,包括:
判断单元301,在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包。
保存单元302,用于根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中。
发送单元303,用于读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
具体地,上述发送单元303,还用于若在设定时长内未接收到客户端发来的数据包,则重新发送响应信息,指示客户端发送数据包。
如图3所示,在STG1接收到实时媒体数据包之后,通过IMS核心网发送给STG2,由STG2将实时媒体数据包发送给客户端Client2。具体处理过程如下述:
步骤401,STG在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包。
具体地,STG2判断待发送给Client2的数据包类型是否是实时媒体数据,如果是,则向Client2发送实时多媒体数据包。
步骤402,在预设时长内,判断是否接收到客户端发来的响应消息。
步骤403,根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小,并通过调整后的发送窗口发送实时媒体数据包。
其中,若在预设时长内,接收到客户端发来的响应消息,确定所述响应消息是否是正常响应消息,如果是,且重复接收到的响应信息数量小于预设数值,确定所述接收响应消息中包含的通告窗口信息,其中所述通告窗口信息是客户端的缓存空间剩余容量信息,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;如果否,且重复接收到的响应消息数量大于预设数值,重新发送与所述响应消息对应的实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;若在预设时长内未收到客户端发来的响应消息,STG重新发送最后一个实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整为原来的二分之一。
具体地,通告窗口信息是接收方(例如本发明实施例这里的客户端)回复的响应信息ACK里所携带的内容,为接收端的缓存空间剩余大小,即默认的缓存空间大小和接收端收到的且还未递交给应用层的数据之间的差值。
具体实施中,STG2向Client2发送实时媒体数据包之后,具体处理情况可以但不限于是下述几种:
第一种情况:Client2在正确接收到该实时媒体数据包之后,会向STG2发送响应消息ACK0,是STG2在接收到Client2反馈的正常响应消息ACK0之后,会根据ACK0中包含的通告窗口信息,调整发送实时媒体数据包的发送窗口,通过调整后的发送窗口继续向Client2发送实时媒体数据包。其中,通告窗口默认值可以为64kb。
第二种情况:STG2向Client2发送实时媒体数据包之后,如果重复接收到Client2反馈的响应消息ACK0,且重复接收的数量小于预设数值,例如3个,继续传输新的实时媒体数据包,并且根据重复重复接收到的响应消息ACK0中包含的通告窗口信息,来调整发送实时媒体数据包的发送窗口,通过调整后的发送窗口继续向Client2发送实时媒体数据包。
第三种情况:STG2向Client2发送实时媒体数据包之后,如果重复接收到Client2反馈的响应消息ACK0,且重复接收的数量大于预设数值,例如3个,则STG2重新发送该重复接收到的响应消息ACK0对应的实时媒体数据包,并且根据重复重复接收到的响应消息ACK0中包含的通告窗口信息,来调整发送实时媒体数据包的发送窗口,通过调整后的发送窗口继续向Client2发送实时媒体数据包。
第四种情况:如果STG2在预设时长内没有收到Client2反馈的响应消息ACK0,则STG2向Client2再次发送最后一次发送的实时媒体数据包,并调整发送实时媒体数据包的发送窗口,将发送窗口调整至先前的二分之一,通过调整后的发送窗口继续发送实时媒体数据包。
上述下行链路的实时媒体数据传输过程中,STG本地缓存基于TCP传输的实时媒体数据包,在接收到客户端的正常响应消息ACK时,发送新的实时媒体数据包,当接收到客户端发来的的三个重复的响应消息ACK或STG的定时器超时时,则会迅速从本地重传实时媒体数据包,并且发送窗口始终等于接收方的通告窗口的大小。其中,基于TCP传输的实时媒体数据包包头格式如图5所示,Window部分即为通告窗口大小。STG收到数据包之后,查看ACK位是否为1,如果是,将发送窗口调至通告窗口大小。
相应地,本发明实施例这里还提出一种实时媒体数据传输装置,如图6所示,包括:
发送单元501,用于在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包。
判断单元502,用于在预设时长内,判断是否接收到客户端发来的响应消息。
调整单元503,用于根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小。
具体地,上述调整单元503,具体用于若在预设时长内,接收到客户端发来的响应消息,确定所述响应消息是否是正常响应消息,如果是,且重复接收到的响应消息数量小于预设数值,确定所述接收响应消息中包含的通告窗口信息,其中所述通告窗口信息是客户端的缓存空间剩余容量信息,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;如果否,且重复接收到的响应消息数量大于预设数值,重新发送与所述响应信息对应的实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;若在预设时长内未收到客户端发来的响应消息,STG重新发送最后一个实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整为原来的二分之一。
实施例三
基于上述实施例一阐述的系统架构,本发明实施例三这里提出一种实时媒体数据传输方法。
需要说明的是,本发明实施例三这里提出的STG既具有上行链路和/或下行链路的数据传输功能,为便于阐述,本发明实施例三这里以两个客户端、一个STG为例来进行详细阐述,其中,STG具备上行链路的数据传输功能,用于接收客户端Client1发送的实时媒体数据包,通过IMS核心网向客户端Client2发送实时媒体数据包。其中,Client1位于STG之后,即Client1通过STG和IMS核心网络进行连接向Client2发送实时媒体数据包,Client2侧传输数据时则不需要进行穿越防火墙或者代理设备。如图7所示,具体处理过程如下述:
步骤701~步骤706,STG接收Client1发来的数据包,并在确定数数据包类型是实时媒体数据之后,采用本发明实施例这里提出的实时媒体数据传输方法。
其中,Client1和STG之间的实时媒体数据传输方法,请参见上述实施例二中步骤201~步骤206中的详细阐述,这里不再赘述。
步骤707,在下行链路中,Client2侧在进行数据传输时,不需要穿越防火墙或代理设备,因此,在Client2侧,设置在SBC中的STG与Client2之间进行数据传输是,可以基于UDP进行数据传输。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种实时媒体数据传输方法,其特征在于,包括:
安全穿越网关STG在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;
根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;
STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;
若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
2.如权利要求1所述的方法,其特征在于,还包括:
若STG在设定时长内未接收到客户端发来的数据包,则重新发送响应信息,指示客户端发送数据包。
3.如权利要求1所述的方法,其特征在于,判断所述实时媒体数据是否是正确排序的数据包,包括:
根据接收到的实时媒体数据包的序号,确定所述实时媒体数据包是否是按序到达,如果是,确定所述实时媒体数据是正确排序的数据包,如果否,确定所述实时媒体数据是错误排序的数据包。
4.一种实时媒体数据传输方法,其特征在于,包括:
安全穿越网关STG在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;
在预设时长内,判断是否接收到客户端发来的响应消息;
根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小;
通过调整后的发送窗口发送实时媒体数据。
5.如权利要求4所述的方法,其特征在于,根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小,包括:
若在预设时长内,接收到客户端发来的响应消息,确定所述响应消息是否是正常响应消息,如果是,且重复接收到的响应消息数量小于预设数值,确定所述接收响应消息中包含的通告窗口信息,其中所述通告窗口信息是客户端的缓存空间剩余容量信息,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;如果否,且重复接收到的响应信息数量大于预设数值,重新发送与所述响应消息对应的实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;
若在预设时长内未收到客户端发来的响应消息,STG重新发送最后一个实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整为原来的二分之一。
6.一种实时媒体数据传输装置,其特征在于,包括:
判断单元,在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;
保存单元,用于根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;
发送单元,用于读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息。
7.如权利要求6所述的装置,其特征在于,所述发送单元,还用于若在设定时长内未接收到客户端发来的数据包,则重新发送响应信息,指示客户端发送数据包。
8.一种实时媒体数据传输装置,其特征在于,包括:
发送单元,用于在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;
判断单元,用于在预设时长内,判断是否接收到客户端发来的响应消息;
调整单元,用于根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小;
所述发送单元,还用于通过调整后的发送窗口发送实时媒体数据。
9.如权利要求8所述的装置,其特征在于,所述调整单元,具体用于若在预设时长内,接收到客户端发来的响应消息,确定所述响应消息是否是正常响应消息,如果是,且重复接收到的响应消息数量小于预设数值,确定所述接收响应消息中包含的通告窗口信息,其中所述通告窗口信息是客户端的缓存空间剩余容量信息,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;如果否,且重复接收到的响应信息数量大于预设数值,重新发送与所述响应消息对应的实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整至与确定出的通告窗口信息相同;若在预设时长内未收到客户端发来的响应消息,STG重新发送最后一个实时媒体数据包,并将发送实时媒体数据包的发送窗口的大小调整为原来的二分之一。
10.一种实时媒体数据传输系统,其特征在于,包括至少一个客户端和至少一个安全穿越网关STG,其中
所述客户端,用于向STG发送实时媒体数据包,以及接收STG发来的实时媒体数据包,并向所述STG发送响应信息;
所述STG,用于在确定出接收到的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,判断所述实时媒体数据是否是正确排序的数据包;根据判断结果,将正确排序的数据包保存在维护的顺序队列中,以及将错误排序的数据包保存在维护的乱序队列中;STG依次读取顺序队列中的数据包,并向客户端发送响应信息,其中所述响应信息用于指示客户端发送数据包;若顺序队列中没有新接收的数据包,则在乱序队列中依次读取按序排列的数据包并放置在顺序队列中,并向客户端发送响应信息;以及在确定出待发送的数据包类型是基于传输控制协议TCP传输的实时媒体数据时,向客户端发送实时多媒体数据包;在预设时长内,判断是否接收到客户端发来的响应消息;根据判断结果,STG调整发送实时媒体数据包的发送窗口的大小,通过调整后的发送窗口发送实时媒体数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210576431.3A CN103905331B (zh) | 2012-12-26 | 2012-12-26 | 一种实时媒体数据传输方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210576431.3A CN103905331B (zh) | 2012-12-26 | 2012-12-26 | 一种实时媒体数据传输方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103905331A true CN103905331A (zh) | 2014-07-02 |
CN103905331B CN103905331B (zh) | 2017-05-03 |
Family
ID=50996486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210576431.3A Active CN103905331B (zh) | 2012-12-26 | 2012-12-26 | 一种实时媒体数据传输方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103905331B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055504A (zh) * | 2016-05-17 | 2016-10-26 | 华为技术有限公司 | 控制数据传输的方法、装置及计算机设备 |
CN110113293A (zh) * | 2018-02-01 | 2019-08-09 | 腾讯科技(深圳)有限公司 | Tcp数据传输控制方法和装置、存储介质及电子装置 |
CN110677468A (zh) * | 2019-09-23 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置以及设备 |
CN113747503A (zh) * | 2021-08-05 | 2021-12-03 | 维沃移动通信有限公司 | 数据传输方法、装置及发送端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1558638A (zh) * | 2004-01-18 | 2004-12-29 | 中兴通讯股份有限公司 | 一种基于消息的处理器间通信方法 |
CN101162968A (zh) * | 2006-12-08 | 2008-04-16 | 中兴通讯股份有限公司 | 前向通用路由封装包的乱序调整方法 |
CN101399838A (zh) * | 2008-10-29 | 2009-04-01 | 成都市华为赛门铁克科技有限公司 | 报文处理方法、装置和系统 |
CN101741857A (zh) * | 2009-12-11 | 2010-06-16 | 中兴通讯股份有限公司 | 机顶盒基于sip协议与pc客户端互通的方法及系统 |
CN102447751A (zh) * | 2012-01-13 | 2012-05-09 | 中兴通讯股份有限公司 | 一种VoIP应用进行NAT穿越的方法及系统 |
-
2012
- 2012-12-26 CN CN201210576431.3A patent/CN103905331B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1558638A (zh) * | 2004-01-18 | 2004-12-29 | 中兴通讯股份有限公司 | 一种基于消息的处理器间通信方法 |
CN101162968A (zh) * | 2006-12-08 | 2008-04-16 | 中兴通讯股份有限公司 | 前向通用路由封装包的乱序调整方法 |
CN101399838A (zh) * | 2008-10-29 | 2009-04-01 | 成都市华为赛门铁克科技有限公司 | 报文处理方法、装置和系统 |
CN101741857A (zh) * | 2009-12-11 | 2010-06-16 | 中兴通讯股份有限公司 | 机顶盒基于sip协议与pc客户端互通的方法及系统 |
CN102447751A (zh) * | 2012-01-13 | 2012-05-09 | 中兴通讯股份有限公司 | 一种VoIP应用进行NAT穿越的方法及系统 |
Non-Patent Citations (2)
Title |
---|
DAVID D. CLARK: "WINDOW AND ACKNOWLEDGEMENT STRATEGY IN TCP", 《RFC》 * |
J. POSTEL: "Transmission Control Protocol", 《RFC》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055504A (zh) * | 2016-05-17 | 2016-10-26 | 华为技术有限公司 | 控制数据传输的方法、装置及计算机设备 |
CN106055504B (zh) * | 2016-05-17 | 2019-08-16 | 华为技术有限公司 | 控制数据传输的方法、装置及计算机设备 |
CN110113293A (zh) * | 2018-02-01 | 2019-08-09 | 腾讯科技(深圳)有限公司 | Tcp数据传输控制方法和装置、存储介质及电子装置 |
CN110113293B (zh) * | 2018-02-01 | 2021-08-13 | 腾讯科技(深圳)有限公司 | Tcp数据传输控制方法和装置、存储介质及电子装置 |
CN110677468A (zh) * | 2019-09-23 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置以及设备 |
CN113747503A (zh) * | 2021-08-05 | 2021-12-03 | 维沃移动通信有限公司 | 数据传输方法、装置及发送端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103905331B (zh) | 2017-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xu et al. | CMT-NC: improving the concurrent multipath transfer performance using network coding in wireless networks | |
TWI277325B (en) | Packet transmitting method of wireless network | |
US8169911B2 (en) | Method for transmitting a data stream with anticipation of acknowledgments, correspondence input device and computer-readable storage medium | |
JP5523350B2 (ja) | Tcpフロー制御のための方法及び装置 | |
CN108270682A (zh) | 一种报文传输方法、终端、网络设备及通信系统 | |
US20030131079A1 (en) | Performance enhancing proxy techniques for internet protocol traffic | |
JP2006261873A (ja) | パケット転送装置およびその転送制御方式 | |
JP2013510524A (ja) | データ伝送方法、装置及びシステム | |
CN101436978A (zh) | 使用udp协议进行可靠数据传输的方法 | |
EP3281380B1 (en) | Method and system for the scheduling of packets in a bundling scenario based on tcp tunnels and native tcp information | |
GB2519491A (en) | Method and system for increasing data flow transmission | |
WO2013167065A2 (zh) | 一种协同业务传输中的数据重传方法及接入网网关 | |
CN109067796A (zh) | 一种数据传输方法及装置 | |
CN103905331A (zh) | 一种实时媒体数据传输方法、装置及系统 | |
CN104184646A (zh) | Vpn网络数据交互方法和系统及其网络数据交互设备 | |
US9819730B2 (en) | System and method for network access based on application layer data | |
CN102340828A (zh) | 一种通过基站提高终端处理性能的方法及基站 | |
CN104168273A (zh) | 一种瘦ap模式下实现tcp代理的方法及系统 | |
WO2015024260A1 (zh) | 数据传输方法、用户设备和代理设备 | |
CN105635076A (zh) | 一种媒体传输方法和设备 | |
CN100464547C (zh) | 一种实现不同通信协议设备间信息传输的方法 | |
CN101465858B (zh) | 监控业务中实现私网穿越的方法、网络设备和服务器 | |
CN104012054A (zh) | 视频处理方法、设备及系统 | |
EP3367599B1 (en) | Method and system for transferring data within a layered architecture of network components | |
WO2013097611A1 (zh) | 一种数据处理方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |