链路聚合网络中发送视频监控业务报文的方法及设备
技术领域
本发明涉及通信领域,尤其涉及一种链路聚合网络中发送视频监控业务报文的方法及设备。
背景技术
视频监控是安防中非常重要的组成部分,经过几年国家“平安城市”工程的持续推进,视频监控已为各行各业所重视,并且视频监控技术也随着应用的广泛和深入已有长足和快速的发展。
监控系统通常包括摄像设备、报文转发设备以及监控客户端,摄像设备发送的监控报文通过报文转发设备向监控客户端发送。由于链路聚合的流量负载分担功能,现有技术中经常采用链路聚合方式传输监控业务报文。链路聚合是将两个或更多数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。例如图1所示的监控系统,左侧的3个摄像设备将监控报文发送至报文转发设备S1,S1通过聚合链路向S2转发监控业务报文,该聚合链路捆绑P1、P2和P3共三个物理端口,该三个物理端口为聚合链路的成员端口。链路聚合的流量负载分担是根据用户的MAC地址、IP地址、协议类型进行哈希运算,得到的结果与聚合链路的端口数进行取模运算来决定每条流量从哪个端口进行转发。
但是,采用链路聚合后通常一条流量通过一个端口进行转发,当该流量未完全开启码流平滑时,虽然经过了流量的负载分担,但经常会出现由于突发流量导致的端口缓存用尽情况,导致端口拥塞,而此时其他端口的缓存可能是空的。
为了克服端口拥塞,现有技术中提供了尾丢弃方式与随机早期检测方式。尾丢弃方式指的是当端口缓存用尽时,丢弃后来到达端口的报文。随机早期检测方式指的是设定端口的缓存队列的丢包上限与丢包下限,当端口平均队列长度达到丢包下限时,开始随机丢弃后续到达的报文,当端口平均队列长度达到丢包上限后,丢弃所有后续到达的报文。
若采用传统的尾丢弃技术,单端口拥塞已经发生,丢包无法避免。若采用随机早期检测机制,在拥塞发生前随机丢弃监控报文虽然可以避免拥塞的发生,但会导致该端口上流经的实况画面品质降低,甚至画面无法观看。
发明内容
本发明提供了一种链路聚合网络中发送视频监控业务报文的方法及设备,在避免聚合链路网络拥塞的同时有效防止实况画面品质的降低。
本发明提供了一种链路聚合网络中发送视频监控业务报文的方法,应用于设置有聚合链路的报文转发设备,所述聚合链路包括多个成员端口,每一成员端口的缓存队列设置丢包下限,所述报文转发设备设置与所述聚合链路对应的空闲缓存,该方法包括:
当有成员端口的平均队列长度超过丢包下限时,所述报文转发设备将后续到达所述成员端口的缓存队列的监控报文随机丢弃至所述空闲缓存;
所述报文转发设备根据预设策略将所述空闲缓存内存储的监控报文放入平均队列长度未达到丢包下限的成员端口的缓存队列进行转发。
所述每一成员端口的缓存队列还设置有丢包上限,
所述空闲缓存的大小通过下述方式设置:
(丢包上限-丢包下限)*所述聚合链路的成员端口的数量;或者
(丢包上限-丢包下限)*所述聚合链路的成员端口的数量*报文随机丢弃概率。
所述报文转发设备将后续到达所述成员端口的缓存队列的监控报文随机丢弃至所述空闲缓存具体包括:
所述报文转发设备根据存储的聚合链路与空闲缓存的对应关系,查找与所述成员端口所属聚合链路对应的空闲缓存;
所述报文转发设备将监控报文丢弃至查找到的空闲缓存。
所述报文转发设备根据预设策略将所述空闲缓存内存储的监控报文放入队列长度未达到丢包下限的成员端口的缓存队列包括:
所述报文转发设备根据未达到丢包下限的各成员端口的剩余缓存队列长度的比值,按比例将所述空闲缓存内存储的监控报文放入所述各成员端口的缓存队列;或者
所述报文转发设备根据所述各成员端口的剩余缓存队列长度的大小,在各成员端口的缓存队列依次放入预设数量的所述空闲缓存内存储的监控报文。
所述报文转发设备设置与所述聚合链路对应的空闲缓存包括:所述报文转发设备在共享缓存中设置与所述聚合链路对应的空闲缓存。
本发明提供一种报文转发设备,设置有包括多个成员端口的聚合链路,每一成员端口的缓存队列设置丢包下限,所述报文转发设备内设置有与所述聚合链路对应的空闲缓存,所述报文转发设备还包括:
检测单元,用于检测所述聚合链路的成员端口的平均队列长度;
丢弃单元,用于当所述检测单元检测到有成员端口的平均队列长度超过丢包下限时,将后续到达所述成员端口的缓存队列的监控报文随机丢弃至所述空闲缓存;
入队列单元,用于根据预设策略将所述空闲缓存内存储的监控报文放入平均队列长度未达到丢包下限的成员端口的缓存队列。
所述聚合链路的每一成员端口的缓存队列还设置有丢包上限,该设备还包括:
空闲缓存设置单元,用于通过下述方式设置所述空闲缓存的大小:
(丢包上限-丢包下限)*所述聚合链路的成员端口的数量;或者
(丢包上限-丢包下限)*所述聚合链路的成员端口的数量*报文随机丢弃概率。
所述丢弃单元还用于:
根据存储的聚合链路与空闲缓存的对应关系,查找与所述成员端口所属聚合链路对应的空闲缓存;
将监控报文丢弃至查找到的与所述成员端口所属聚合链路对应的空闲缓存。
所述入队列单元还用于:
根据未达到丢包下限的各成员端口的剩余缓存队列长度的比值,按比例将所述空闲缓存内存储的监控报文放入各成员端口的缓存队列;或者
根据所述各成员端口的剩余缓存队列长度的大小,在各成员端口的缓存队列依次放入预设数量的所述空闲缓存内存储的监控报文。
所述空闲缓存设置单元还用于:在共享缓存中设置与所述聚合链路对应的空闲缓存。
与现有技术相比,本发明至少具有以下优点:
报文转发设备设置与聚合链路对应的空闲缓存,当聚合链路的成员端口的平均队列长度超过丢包下限时,报文转发设备将需要丢弃的监控报文丢弃至空闲缓存,并将空闲缓存内的监控报文放入平均队列长度未达到丢包下限的聚合链路的成员端口的缓存队列,从而在聚合链路的一个成员端口流量较大时,通过其他成员端口进行负载均衡,有效避免由于监控报文丢弃导致的实况画面品质降低的问题。
附图说明
图1是本发明提供的链路聚合网络的架构示意图;
图2是本发明提供的链路聚合网络中发送视频监控业务报文的方法的流程示意图;
图3是本发明提供的报文转发设备的结构示意图。
具体实施方式
本发明的核心思想是:报文转发设备设置与聚合链路对应的空闲缓存;当聚合链路有成员端口的平均队列长度超过丢包下限时,报文转发设备将需要丢弃的报文丢弃至空闲缓存;报文转发设备根据预设策略将空闲缓存内存储的报文放入平均队列长度未达到丢包下限的聚合链路的成员端口的缓存队列。
本发明提供一种链路聚合网络中发送视频监控业务报文的方法,应用于如图1中S1所示的报文转发设备,S1设置有聚合链路,该聚合链路的成员端口包括P1、P2和P3,从摄像设备侧接收到的监控报文通过P1、P2和P3向监控客户端侧发送。P1、P2和P3的端口缓存大小相同,即P1、P2和P3的缓存队列长度的最大值相同,每一端口的缓存队列设置丢包下限,还可以设置丢包上限(下限与上限的值由用户根据实际需要设定),该丢包下限与上限均为端口平均队列长度的值。假定丢包下限是缓存队列长度的最大值的50%,丢包上限是缓存队列长度的最大值的90%,则端口平均队列长度低于缓存队列长度的最大值的50%时不丢弃后续到达该端口的缓存队列的报文,高于90%后丢弃所有后续到达该端口的缓存队列的报文,端口平均队列长度在丢包上限和下限之间时随机丢弃到达该端口的缓存队列的报文。S1随机丢包监控报文时还需要考虑随机丢弃概率,假设随机丢弃概率是50%,则有一半到达端口的缓存队列的监控报文被丢弃,例如,设备可以为后续到达该缓存队列的报文分配一个1~100的随机数,随机数高于50的监控报文不丢弃,随机数低于50的监控报文就直接丢弃。
该方法中,S1设置有与聚合链路对应的空闲缓存,上述被随机丢弃的监控报文被丢弃至该空闲缓存。当S1设置多个聚合链路时,每一聚合链路分配一个对应的空闲缓存,具体可以在聚合链路的逻辑接口UP时为聚合链路分配对应的空闲缓存。
空闲缓存的大小的设置方式包括但不限于:
(丢包上限-丢包下限)*聚合链路的成员端口的数量;或者
(丢包上限-丢包下限)*聚合链路的成员端口的数量*报文随机丢弃概率。
其中,聚合链路的成员端口为选中状态的成员端口,即当前可用于报文转发的成员端口。
例如,结合图1所示,S1的每个端口缓存队列的长度的最大值为PS,每个端口的丢包下限是缓存队列长度的最大值的50%,丢包上限是缓存队列长度的最大值的90%,则空闲缓存的大小LS为:
LS=3*(90%-50%)*PS,即LS=1.2PS。
结合图1所示,设置有聚合链路的报文转发设备以S1为例,报文转发设备的聚合链路的成员端口以P1、P2和P3为例,且P1、P2和P3属于同一聚合链路,P1、P2和P3的丢包上限为90%,下限为50%,则本发明提供的方法具体如图2所示,包括以下步骤:
步骤201,S1检测聚合链路中所有成员端口P1、P2和P3的平均队列长度。
S1以聚合链路为单位检测端口的平均队列长度。S1检测聚合链路中所有成员端口P1、P2和P3的平均队列长度,得到如表1所示的平均队列长度列表。
表1
聚合组1成员端口 |
当前平均队列长度 |
P1 |
50% |
P2 |
10% |
P3 |
20% |
步骤202,S1随机丢弃后续到达P1缓存队列的报文至空闲缓存。
具体的,由于P1的平均队列长度已经达到丢包下限50%,S1开始将后续到达P1缓存队列的监控报文随机丢弃。随机丢弃的所有报文都转存入为该聚合链路分配的空闲缓存中。
当S1内包括多个聚合链路时,S1需要存储聚合链路与空闲缓存的对应关系。在检测到去往P1缓存队列的报文时,S1首先查找与P1所属聚合链路对应的空闲缓存,然后将报文丢弃至查找到的空闲缓存。
步骤203,S1实时检测聚合链路中所有成员端口P1、P2和P3的平均队列长度,将空闲缓存中的报文放入平均队列长度未达到丢包下限的端口的缓存队列进行报文转发。
假定S1检测到P2和P3的端口缓存利用率未达到拥塞标准,即P2和P3的平均队列长度未达到丢包下限。此时S1根据预设策略将空闲缓存中的报文放入P2和P3的缓存队列进行报文转发。例如,S1根据P2和P3的剩余队列长度的比值,按比例将空闲缓存内存储的报文放入P2和P3的缓存队列;或者S1根据P2和P3的剩余缓存队列长度的大小依次放入预设数量的空闲缓存内存储的报文。对于前一种情况,S1具体可按照下述方式在P2和P3的缓存队列分配空闲缓存内的报文:根据P2、P3的当前队列长度的倒数作为权重来进行比较,比如P2∶P3=(1/10%)∶(1/20%)=10∶5,此时可将空闲缓存中报文按2∶1的比例分别放入P2和P3的队列中进行转发;若P2或P3的当前队列为空,则认为该端口最为优先,可将空闲缓存中的报文优先放入该端口队列中转发。S1根据P2和P3的剩余缓存队列长度的大小依次放入预设数量的空闲缓存内存储的报文,具体可以为:S1在P2和P3内循环放入预设数量的报文,直至空闲缓存内没有报文或者P2和P3达到丢包下限。
需要说明的是,当将空闲缓存内的报文转入到P2和P3缓存队列中时,假设此时又有一条突发的流量到了P3缓存队列时,此时P3的平均队列长度也超过了丢包下限,则随机丢弃后续到达P3缓存队列的监控报文至空闲缓存,之后的处理流程同上。另外,步骤203与之前步骤202之间并无必须的先后关系,可以并列执行。
需要说明的是,如果所有端口的缓存利用率都处于即将拥塞或拥塞的状态,这是链路设计带宽整体资源不够造成的,此时空闲缓存也填满,且无法再转到其他端口上转发,则空闲缓存将采取尾丢弃的策略进行处理,即丢弃后续到达空闲缓存的所有报文。
基于与上述方法实施例相同的技术构思,本发明还提供一种报文转发设备,该设备设置有包括多个成员端口的聚合链路,每一成员端口的缓存队列设置丢包下限,所述报文转发设备内设置有与所述聚合链路对应的空闲缓存,如图3所示,所述报文转发设备还包括:
检测单元11,用于检测所述聚合链路的成员端口的平均队列长度;
丢弃单元12,用于当所述检测单元11检测到有成员端口的平均队列长度超过丢包下限时,将后续到达所述成员端口的缓存队列的监控报文随机丢弃至所述空闲缓存;
入队列单元13,用于根据预设策略将所述空闲缓存内存储的监控报文放入平均队列长度未达到丢包下限的成员端口的缓存队列。
所述聚合链路的每一成员端口的缓存队列还设置有丢包上限,该设备还包括:
空闲缓存设置单元14,用于通过下述方式设置所述空闲缓存的大小:(丢包上限-丢包下限)*所述聚合链路的成员端口的数量;或者(丢包上限-丢包下限)*所述聚合链路的成员端口的数量*报文随机丢弃概率。所述空闲缓存设置单元14还用于:在共享缓存中设置与所述聚合链路对应的空闲缓存。
所述丢弃单元12还用于:根据存储的聚合链路与空闲缓存的对应关系,查找与该成员端口所属聚合链路对应的空闲缓存;将监控报文丢弃至查找到的与该成员端口所属聚合链路对应的空闲缓存。
所述入队列单元13还用于:根据未达到丢包下限的所述聚合链路的各成员端口的剩余队列长度的比值,按比例将所述空闲缓存内存储的监控报文放入所述聚合链路的各成员端口的缓存队列;或者根据所述聚合链路的各成员端口的剩余缓存队列长度的大小,在各成员端口的缓存队列依次放入预设数量的所述空闲缓存内存储的监控报文。
本发明中,报文转发设备设置与聚合链路对应的空闲缓存,当聚合链路的成员端口的平均队列长度超过丢包下限时,报文转发设备将需要丢弃的监控报文丢弃至空闲缓存,并将空闲缓存内的监控报文放入平均队列长度未达到丢包下限的聚合链路的成员端口的缓存队列,从而在聚合链路的一个成员端口流量较大时,通过其他成员端口进行负载均衡,有效避免由于监控报文丢弃导致的实况画面品质降低的问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。