作者:张博利
编辑:Alex
▼扫描下图两个维度代码以了解音频和视频技术会议更多信息▼
摘要:本文始于SRT协议的工作流程,重点是介绍和分析SRT协议的数据包结构,并示例如何使用Wireshark软件包软件进行链接失败分析以解决实际工作中的问题。
引述
SRT(安全可靠运输)协议是安全可靠的传输协议。这是一种新兴的音频传输协议,可以在公共互联网环境中实现高质量和低质量的真实视频和音频传输。
对公共网络传输技术的SRT协议(上)的分析重点是如何衡量SRT协议的可靠性,以及如何在不同的应用程序方案中配置SRT链接的参数。本文将从SRT的工作流程开始协议分析SRT协议的数据包结构。之后,它将介绍如何使用Wireshark软件来关闭分析以消除链接故障或获取链接信息。
SRT协议中最常用的工作模式是“ Caller-Listener”模式。与此固定端口建立SRT连接。调用和监视的作用主要在SRT协议握手阶段。无论是编码还是解码端,都可以是呼叫人员或听众的角色。
图1显示了SRT协议的工作流程。整个过程包括诸如握手,参数交换,数据传输和连接之类的步骤。此外,在传输有效数据时,双方将发送控制数据以完成功能,例如数据包丢失恢复和连接维护。
图1 SRT协议工作流程
根据基于UDP的数据传输协议,SRT协议已得到改进。RFC草案已于2020年3月10日提交给IETF,这也表明SRT协议已进入相对稳定的开发轨道。
众所周知,SRT的传统领域是点的真实音频和视频传输。在过去的两年中,SRT协议在向上推动中迅速开发。关键点是SRT的StreamID函数,并且流式函数包含在SRT握手数据包的配置扩展模块中。
通常,SRT协议包含两种类型的数据包:信息数据包和控制数据包。它们的区别是首先是SRT的最高位(徽标),0代表信息数据包,0表示信息数据包。1表示控制数据包。CONTROL数据包还包括握手,确认ACK,NAK答案,ACKACK,keepalive和shutdown和关闭。
2.1信息数据包结构
图2显示了SRT信息数据包的结构,该结构包含需要传输的有效数据。SRT的第一个长度为16字节,最高位是徽标位置。SRT信息数据包的第一部分包含四个区域:数据包序列编号,数据包序列号,时间戳和目的地。
图2 SRT信息包
2.2握手数据包结构
握手数据包分为HSV4版本(SRT版本<1.3)和HSv5版本(SRT版本>= 1.3),图3是握手数据包的HSV5版本的结构。HSV5握手数据包主要包括五个区域:SRT的第一个,握手控制信息(CIF.HSV5),握手请求/响应扩展模块(HSREG/HSRSP),加密加密加密延伸模块(KMREG/KMRSP)和配置扩展模块(我们遍地)。专注于前三个区域,请参见握手数据包的结构,请参见图3:
图3 HSV5握手数据包
1.所有SRT控制数据包的第一部分基本相同,包括四个区域:控制类型和保留区域,其他信息,时间戳和目的地便携式单词。其中,控制类型字段为0表示握手数据包。
2.握手控制信息区域(CIF.HSV5)中更重要的字段如下:
1000
未知的原因
1008
旧版本
1001
系统功能错误
1009
收集模式插座冲突
1002
拒绝
1010
密码错误
1003
资源分配问题
1011
需要密码
1004
握手中的错误数据
1012
流徽标冲突
1005
积压溢出
1013
国会控制类型冲突
1006
内部程序错误
1014
包装过滤器冲突
1007
这组单词已关闭
1015
团体冲突
表1错误代码和错误类型对应表1
3.摇动请求扩展模块(HSREG)中更重要的字段如下:
4. comreq和配置扩展模块配置
2.3 ACK数据包结构
ACK数据包是从SRT接收端到发送端的积极响应。接收ACK后,将认为相应的数据包已成功交付。ACK数据包还包含接收端估计的链接数据,可用作发送端端拥塞控制的参考。显示了ACK数据包结构。在图4中,其中一些是更重要的领域,如下所示:
图4 ACK控制数据包
2.4 NAK包结构
当SRT接收终端找到接收数据包序列编号不是连续的,将判断数据包被丢失,并立即响应发送者以否定响应(NAK)packet.in fordef.in添加,SRT接收终端will will还报告具有一定间隔期的NAK报告,包括间隔期间所有丢失的包装序列编号。发送NAK的重复机制主要是为了防止NAK数据包在反向传输中丢失。丢失数据包。
图5 NAK控制数据包
2.5 Ackack包结构
ACKACK的主要作用是计算链接的循环延迟(RTT),RTT作为重要的链接信息将包含在ACK数据包中。有关ACKACK数据包结构,请参见图6。首先,ACK数据包和ACKACK数据包包括准确的时间戳和ACK序列号。当发送端传输到接收方ACK数据包时,可接受的终端将立即返回ACKACK数据包。该号码“对应于ACK软件包,一一将ACK封装与Ackack软件包相对应,并减少其时间戳记以获取链接延迟(RTT)。
图6 ACKACK数据包结构
2.6连接和连接以关闭数据包结构
SRT中的最后两种数据包类型连接到Keepalive数据包和连接的关闭(关闭)数据包。有关它们的数据包结构,请参见图7和8。
图7连接以保持数据包结构
图8连接以关闭数据包结构
Wireshark是行业广泛使用的开源数据包分析软件。它可以拦截各种类型的网络数据包并显示该数据包的详细信息。随着无线电和电视行业的IPIANTIONT的连续发展,Wireshark的使用变得越来越频繁。它对类比的重要性,波形在SDI信号上监测以及代码流分析仪在TS流信号中的作用。
以下是使用Wireshark软件的链接分析的两个示例:
3.1场景连接失败
在SRT链接的施工过程中,不可避免地会有连接故障的情况。原因是多样的。目前,我们可以使用Wireshark的数据包分析功能来判断错误的类型。
图9是失败连接后的包装数据。请参阅下面的视频以获取软件包视频。首先,您可以观察到双方不断交换握手数据包,表明握手不成功,但另一方面,它也表明IP地址和端口表明数字设置正确,双方可以正常交流。
对于双方的SRT版本高于1.3,SRT握手过程需要两次和前进。有四个握手数据包,第一个握手数据包必须是HSV4版本握手数据包。一个握手数据包。然后观察到第四个握手数据包的“握手类型”字段是1002否决,这意味着“拒绝端”,“拒绝”,“终端”,“,”,,“,”,,“拒绝”,,“拒绝”,“拒绝”,“拒绝”这意味着双方可能不匹配参数并导致握手故障。
然后,我们查看第二个握手袋,这是听众对呼叫派对发送的回应。其中,“加密字段”区域是AES-128,也就是说,另一方必须以AES-128的方式响应加密。从呼叫方发出的第三个握手袋,这是第三个握手袋听众。“扩展字段”区域中的KMREQ模块不是,这意味着握手软件包没有加密的扩展模块,也就是说,对另一方的加密要求没有响应。
在上述分析之后,我们可以知道这种连接故障是因为听众要求响应AES-128末尾的加密要求,并且呼叫者对加密没有响应。如果我们想成功连接,我们需要了解侦听器的加密密码,然后在呼叫者侧选择AES-128的加密方法。
图9场景1:通过分析软件包找到故障的原因
3.2场景2获取链接信息
Internet链接中的RTT环旅行时间表示时间在发件人和接收端之间花费往返的时间。链接的RTT值以及RTT的波动性确定SRT链接延迟参数的设置,但是在实际工作中,由于防火墙,通常很难直接获得RTT值。获取相应的信息。
从图10可以看出,该链接的RTT为20.61毫秒,RTT的更改为9.786毫秒,这也表明该链路的RTT不稳定,RTT波动含义也会浮动,从而可以波动,从而带来带来的链接。整个SRT链路误差控制能力中的波动,这也意味着我们必须根据链接的特征调整参数。
图10方案2:RTT估值和RTT估值的变化
由于其出色的性能,较低的软件和硬件要求以及开源的免费功能,因此SRT的应用已在各个领域越来越广泛地使用。在过去的两年中,它在向上推动方面也有很大的发展。对SRT协议的数据包结构进行旨在帮助我们使用包装软件来分析和判断失败,以快速而准确地解决实际工作中的问题。我希望本文可以为所有人带来一些帮助,并欢迎大家讨论和交流。
参考:
[1] https://datatracker.ietf.org/doc/html/draft-sharabayko-mops-srt/
[2] SRT协议技术概述[M/OL]。(2018-10)[2020-07]。https://www3.haivision.com/e/38322/srt-tech/8MWJCV/129375769.4BGYXYD2XSXSXPPXDU78YOJBOTOMMS
[3] https://github.com/haivision/srt/blob/master/docs/api.md
[4] SRT部署指南,v1.1,第01期[m/ol]。(2018-10)[2020-07]。
进一步阅读:
公共网络传输技术的SRT协议分析(第1部分)
关于作者:
张·博利(Zhang Boli),安海广播电视的工程师。
原始:https://juejin.cn/post/7098539243470864391