一种组播视频存储的方法、系统及设备
技术领域
本发明涉及通信技术领域,尤其涉及一种组播视频存储的方法、系统及设备。
背景技术
视频监控技术使用模拟监控技术,随着数字技术的不断发展,数字监控逐渐应用到大规模网络监控中。现有技术中一个数字监控存储的结构如图1所示,包括多个包括EC(前端编码器应用程序)的客户端、IP SAN(IP StorageArea Net,IP存储区域网络)。其中,视频流通过客户端自带的initiator(客户端软件)与IP SAN提供的target(目标)建立iSCSI(Internet small computer systeminterface,小型计算机系统接口)连接,以数据块的方式写入存储系统。由于iSCSI协议是建立在TCP(Transmission Control Protocol,传输控制协议)协议上的,且TCP协议实现机制可以通过慢启动、超时重传、拥塞避免算法来保证存储数据流的完整性,因此,如果在iSCSI传输数据的过程中,出现网络质量下降的话,iSCSI协议可以利用TCP协议的实现机制进行数据重传或调整滑动窗口的大小保证存储数据的完整。例如,EC利用iSCSI协议把编码后的数据封装到iSCSI协议中,再把iSCSI协议封装到TCP协议中进行传输,当网络出现异常时,如果网络质量已经差到不能让iSCSI协议完成数据写入的工作,客户端软件initiator通过iSCSI协议向客户端中的应用程序报错,这时应用程序就会停止发送编码数据给客户端软件initiator,并周期性的尝试发送数据。
另外一种情况是网络质量并没有差到让客户端软件initiator通过iSCSI协议报错的地步,只是利用TCP协议反复重传需要的报文,这样客户端软件initiator并不会通过iSCSI协议报错,应用程序仍然源源不断地把编码数据传送给iSCSI客户端软件initiator,如果客户端软件initiator有缓存就把编码数据进行缓存,如果缓存溢出之后就丢弃后续的编码数据;如果没有缓存就直接丢弃 编码数据,客户端软件initiator也不会报错,这样最后存储到IPSAN上的视频流就会有丢失,直接的表现结果是在回放IPSAN上的视频时,图像质量可能就会很差。
因此,现有的技术不能保证从前端编码器直接存储到IPSAN上的图像质量,只有在进行存储图像回放时才能发现由于网络质量原因导致的存储视频质量很差甚至丢失。
发明内容
本发明实施例提供一种组播视频存储的方法、系统及设备,可以有效地利用网络带宽,减少不必要的报文重传。
本发明提供了一种组播视频存储的方法,应用于包括客户端和服务器端的系统中,所述客户端包括应用程序和客户端软件,所述方法包括以下步骤:
所述应用程序接收iSCSI告警报文;
所述应用程序降低向所述客户端软件发送数据流的速率。
所述服务器端监控出队列获得告警报文具体包括:
所述服务器端根据出队列中滑动窗口大小和所述窗口内数据被客户端请求重传的次数,决定向所述客户端发送iSCSI告警报文。
所述服务器端监控入队列获得告警报文具体包括:
所述服务器端对入队列进行监控,如果入队列数据超出预设值,周期性向所述客户端发送iSCSI告警报文。
所述客户端软件监控所述客户端出队列获得告警报文具体包括:
所述客户端软件监控出队列,如果出队列中滑动窗口大小和窗口内数据被请求重传的次数超出预设值,所述客户端软件向所述应用程序发送周期性告警报文。
所述如果出队列中滑动窗口大小和窗口内数据被请求重传的次数超出预设值,所述客户端软件向所述应用程序发送周期性告警报文具体包括:
对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,向所述应用程序周期性发送iSCSI告警报文;
对于滑动窗口大小为1时,记录所述出队列滑动窗口中数据报文的重传次数,当重传次数超过一个预定值,向所述应用程序周期性发送iSCSI告警报文。
还包括:
对窗口大小不为1时,跟踪窗口内所有数据报文的重传次数,如果超过预设窗口大小的数据报文产生了预定次数以上的重传,向所述应用程序周期性发送iSCSI告警报文。
所述应用程序降低向所述客户端软件发送数据流的速率具体包括:
所述应用程序降低存储流的发送码率或增加发送数据帧间隔。
所述应用程序降低向所述客户端软件发送数据流的速率之后还包括:
所述应用程序在所述iSCSI告警报文消失后恢复发送数据流的速率。
本发明提供了一种组播视频存储的系统,包括客户端和服务器端,
所述客户端,用于接收iSCSI告警报文时,通过应用程序降低向所述客户端软件发送数据流的速率;以及用于通过客户端软件检测iSCSI告警报文;
所述服务器端,用于监控出队列获得告警报文,将所述告警报文发送给所述应用程序;并且监控入队列获得告警报文,将所述告警报文通过所述客户端软件发送给所述应用程序;
其中,所述iSCSI告警报文通过以下方式之一或任意组合发送:
所述服务器端根据出队列中滑动窗口大小和所述窗口内数据被客户端请求重传的次数,决定向所述客户端发送iSCSI告警报文;
所述服务器端对入队列进行监控,如果入队列数据超出预设值,周期性向所述客户端发送iSCSI告警报文;
所述客户端软件监控出队列,如果出队列中滑动窗口大小和窗口内数据被请求重传的次数超出预设值,所述客户端软件向所述应用程序发送周期性 告警报文;
本发明提供了一种客户端,其特征在于,包括:
应用程序,用于接收iSCSI告警报文时,降低向所述客户端软件发送数据流的速率;
客户端软件,用于检测iSCSI告警报文。
客户端软件具体包括:
入队列监控单元,用于对入队列的数据进行监控;
第一告警发送单元,用于入队列数据超出预设值,周期性向服务器端发送iSCSI告警报文;
出队列监控单元,用于监控出队列中滑动窗口的大小和窗口内数据被发送端设备请求重传的次数;
第二告警发送单元,用于出队列中滑动窗口的大小和窗口内数据被请求重传的次数超出预设值时,周期性向所述应用程序发送iSCSI告警报文。
所述应用程序具体包括:
告警报文接收单元,用于从所述客户端软件接收告警报文,或从所述服务器端接收告警报文;
速率调整单元,用于周期性接收所述告警报文时,降低发送数据流的速率;所述告警报文消失时,恢复所述发送数据流的速率。
所述第二告警发送单元具体包括:
第一发送子单元,用于对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,周期性向所述应用程序发送iSCSI告警报文;和/或
第二发送子单元,用于对于滑动窗口大小为1时,当窗口中数据报文的重传次数超过预定值,周期性向所述应用程序发送iSCSI告警报文。
所述速率调整单元具体包括:
码率调整子单元,用于降低数据报文的发送码率;和/或
帧间隔调整子单元,用于增加数据报文的帧间隔。
本发明提供了一种服务器端,其特征在于,包括:
出队列监控单元,用于监控出队列中滑动窗口的大小和窗口内数据被发送端设备请求重传的次数,当出队列中滑动窗口的大小和窗口内数据被请求 重传的次数超出预设值时,周期性向所述应用程序发送iSCSI告警报文;
入队列监控单元,用于对入队列的数据进行监控,如果入队列数据超出预设值,周期性向所述客户端发送iSCSI告警报文。
所述出队列监控单元具体包括:
第一出队列监控子单元,用于对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,周期性向所述应用程序发送iSCSI告警报文;和/或第二出队列监控子单元,用于对于滑动窗口大小为1时,当窗口中数据报文的重传次数超过预定值,周期性向所述应用程序发送iSCSI告警报文。
本发明的实施例中,IPSAN和客户端能够对数据收发状态进行监控,并在客户端、服务器端或网络出现服务质量下降时进行告警,通告对方本身收发数据异常,以调整收发速率,进而有效地利用网络带宽,减少不必要的报文重传。
附图说明
图1是现有技术中监控存储示意图;
图2是本发明监控存储方案示意图;
图3是本发明监控存储方案中监控入队列和出队列示意图;
图4是本发明一种组播视频存储的方法流程图。
具体实施方式
本发明服务器端和客户端监控网络中的iSCSI报文,当网络质量很差时,导致写入磁盘失败并在多次尝试后仍然失败,就向应用程序报错;当网络质量比较差时,即TCP重传报文的次数不断增加,滑动窗口不断减小时,服务器端或客户端向应用程序发出告警,要求应用程序降低数据的发送速率,待告警消失后恢复数据的发送速率。
本发明的总体实施方案如图2和图3所示:客户端中的应用程序检测到iSCSI用户接口报错时,还是按照原流程处理,周期性尝试发送编码数据,检测到iSCSI用户接口产生告警时,应用程序降低存储流的发送码率或是增加帧间隔以减少向网络中发送存储流的大小,待告警消失后再逐渐恢复发送速率;在服务器和客户端对iSCSI应用中的TCP报文进行监控,并增加一种iSCSI告警报文,报文中可以携带信息,指示告警原因。
结合上述基本原理,本发明提供了一种组播视频存储的方法,应用于包括客户端和服务器端的系统中,所述客户端包括应用程序和客户端软件,所述方法如图4所示,包括以下步骤:
步骤s401,所述应用程序接收iSCSI告警报文。具体包括:所述服务器端监控出队列获得告警报文,所述服务器端将所述告警报文发送给所述应用程序;或所述客户端软件监控所述客户端出队列获得告警报文,所述客户端软件将所述告警报文发送给所述应用程序;或所述服务器端监控入队列获得告警报文,所述服务器端将所述告警报文通过所述客户端软件发送给所述应用程序。
步骤s402,所述应用程序降低向所述客户端软件发送数据流的速率。
所述服务器端监控出队列获得告警报文具体包括:所述服务器端根据出队列中滑动窗口大小和所述窗口内数据被客户端请求重传的次数,决定向所述客户端发送iSCSI告警报文。所述客户端软件监控所述客户端出队列获得告警报文具体包括:所述客户端软件监控出队列,如果出队列中滑动窗口大小和窗口内数据被请求重传的次数超出预设值,所述客户端软件向所述应用程序发送周期性告警报文。所述根据滑动窗口大小和窗口内数据被请求重传的次数,决定发送iSCSI告警报文具体包括:对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,向所述应用程序周期性发送iSCSI告警报文;对于滑动窗口大小为1时,记录所述出队列滑动窗口中数据报文的重传次数,当重传次数超过一个预定值,向所述应用程序周期性发送iSCSI告警报文。对窗口大小不为1时,跟踪窗口内所有数据报文的重传次数,如果超过预设窗口大小的数据报文产生了预定次数以上的重传,向所述应用程序周期性发送iSCSI告警报文。
所述服务器端监控入队列获得告警报文具体包括:所述服务器端对入队列进行监控,如果入队列数据超出预设值,周期性向所述客户端发送iSCSI告警报文。
本发明提供了一种组播视频存储的系统,包括客户端和服务器端,所述客户端具体包括:应用程序,用于接收iSCSI告警报文时,降低向所述客户端 软件发送数据流的速率;客户端软件,用于检测iSCSI告警报文;所述服务器端,用于监控出队列获得告警报文,将所述告警报文发送给所述应用程序;并且监控入队列获得告警报文,将所述告警报文通过所述客户端软件发送给所述应用程序。
其中,服务器端对TCP滑动窗口中入队列和出队列的数据报文进行监控。可以设置当入队列数据报文数量达到一定比例(如95%),表明队列中有大量报文等待服务器处理,不能再接收客户端发送过来更多的数据,此时服务器端应该周期性向initiator发送iSCSI告警报文直到队列大小恢复到一定的水平,如80%,消息中封装在iSCSI报文中并包含信息指示出服务器端接收队列已满。
对于出队列的数据报文,服务器需要监控滑动窗口的大小和窗口内数据报文被客户端请求重传的次数,对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,表明有大量发送出去的报文没有收到确认,由于网络丢包或是客户端入队列来不及调度导致的,此时原有的处理机制是服务器将等待客户端的确认报文并周期性的重传报文直到收到之间发送的数据报的确认而放大窗口,而本发明中需要服务器端同时向应用程序产生周期性告警,告警中包含数据报文等待确认的信息,指明服务器发送队列调度已满,降低应用程序发送数据报文的速率直到告警消失;对于滑动窗口大小为1的系统,需要记录窗口中数据报文的重传次数,当重传次数超过一个预定值的话(比如重传5次),服务器端就向应用程序告警,提示数据报文等待确认。对于滑动窗口中记录重传次数的机制适用于任何系统,只是对窗口大小不为1的系统需要跟踪窗口内所有数据报文的重传次数,如果超过窗口大小一半的数据报文都产生了预定次数以上的重传,系统也将产生周期性告警直到小于一半的数据报文产生少于预定次数的重传。
客户端initiator对TCP滑动窗口中入队列和出队列的数据报文进行监控。可以设置当入队列数据报文数量达到一定比例(如95%),这表明队列中有大量报文等待客户端处理,不能再接收服务器发送过来更多的数据,此时initiator端应该周期性向服务器端发送iSCSI告警报文直到队列大小恢复到一 定的水平(如80%),消息中封装在iSCSI报文中并包含信息指示出客户端接收队列已满;对于滑动窗口大小不为1时,当出队列中滑动窗口的大小减小到1时,表明有大量发送出去的数据报文没有收到确认,由于网络丢包或是服务器端入队列来不及调度导致的,此时客户端向用户应用程序进行周期性的iSCSI告警,告警中包含信息指示数据报文等待服务器确认;如果系统中滑动窗口大小本身就为1时,需要记录窗口中数据报文的重传次数,当重传次数超过一个预定值的话(比如重传5次),客户端就向应用程序告警,提示数据报文等待服务器确认。对于滑动窗口中记录重传次数的机制适用于任何系统,只是对窗口大小不为1的系统需要跟踪窗口内所有数据报文的重传次数,如果超过窗口大小一半的数据报文都产生了预定次数以上的重传,系统也将产生周期性告警直到小于一半的数据报文产生少于预定次数的重传。
上述组播视频存储的系统中,客户端软件具体包括:入队列监控单元,用于对入队列的数据进行监控;第一告警发送单元,用于入队列数据超出预设值,周期性向服务器端发送iSCSI告警报文;出队列监控单元,用于监控出队列中滑动窗口的大小和窗口内数据被发送端设备请求重传的次数;第二告警发送单元,用于出队列中滑动窗口的大小和窗口内数据被请求重传的次数超出预设值时,周期性向所述应用程序发送iSCSI告警报文。
应用程序具体包括:告警报文接收单元,用于从所述客户端软件接收告警报文,或从所述服务器端接收告警报文;速率调整单元,用于周期性接收所述告警报文时,降低发送数据流的速率;所述告警报文消失时,恢复所述发送数据流的速率。
所述第二告警发送单元具体包括:第一发送子单元,用于对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,周期性向所述应用程序发送iSCSI告警报文;和/或第二发送子单元,用于对于滑动窗口大小为1时,当窗口中数据报文的重传次数超过预定值,周期性向所述应用程序发送iSCSI告警报文。
所述速率调整单元具体包括:码率调整子单元,用于降低数据报文的发送码率;和/或帧间隔调整子单元,用于增加数据报文的帧间隔。
服务器端具体包括:出队列监控单元,用于监控出队列获得告警报文,将所述告警报文发送给所述应用程序;入队列监控单元,用于监控入队列获得告警报文,将所述告警报文通过所述客户端软件发送给所述应用程序。
所述出队列监控单元具体包括:第一出队列监控子单元,用于对于滑动窗口大小不为1时,当出队列滑动窗口大小减小到1时,周期性向所述应用程序发送iSCSI告警报文;和/或第二出队列监控子单元,用于对于滑动窗口大小为1时,当窗口中数据报文的重传次数超过预定值,周期性向所述应用程序发送iSCSI告警报文。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。