公网传输技术之SRT协议解析(下)

      最后更新:2022-05-17 18:25:49 手机定位技术交流文章

      作者:张博力

      编辑:Alex

      关于视听技术会议的进一步详情

      从SRT协议进程开始,这一条侧重于SRT软件包的结构,并举例说明Wiresark捕获程序可如何用于将故障分析联系起来,以解决实际问题。

      引 言

      《可持续运输安全协议》是一项安全可靠的传输协议,能够在公共互联网背景下提供高质量的低延迟实时音频传输。

      公共网络传输技术的SRT协议分析(上线)侧重于如何评估SRT协议的可靠性。以及如何在各种方案中建立SRT连接。本文作为下篇,我们从SRT协议开始审查SRT协议的数据包结构。其次是关于如何利用Wiresark方案进行渔获分析的例子。因此,您可以修复断开的链接或获取链接的细节 。

      1

      SRT协议工作流程

      在SRT协议中,Caller-Listener Forml是最常用的工作方式。收听者(听众)将不断收听其设定的 UDP 端口。呼叫者( Caller)通过获得听众的公共IP地址和固定端口启动 SRT 连接。电话和收听者在SRT协议的握手阶段发挥了重要作用。呼叫者或听众的功能可以在编码或解码结尾处播放。

      图1描述了SRT协议序列,其中包括握手、参数交换、数据传输和连接关闭等阶段。 此外,双方在提供有效数据的同时,还发送控制数据,以完成处置回收、连接维护等等。

      图1说明了SRT程序过程。

      2

      SRT数据包结构

      2020年3月10日,根据 " 团结和民主 " 协议(基于UDP的数据传输议定书)修改的 " 团结和民主 " 协议 " 的 " 团结和民主 " 协议 " 于2020年3月10日向独立贸易工作组提交了一份 " 自由竞争委员会 " 草案,指出 " 团结和独立贸易工作组 " 协议处于更稳定的发展轨道上。

      众所周知,SRT惠益的常规领域是点对点实时音频和视频通信。而近两年,SRT协议的向上流动一直在加速。许多知名的平台和企业主张通过特别培训协议,作为替代RTMP的替代措施,以取得进步。关键是 SRT 中的溪流ID 函数 。SRT 握手数据包配置扩展模块中有串流ID 功能。

      总的来说,RT协议中有两类数据包:数据包(数据包)和控制包(控制包)。他们可以分辨第一个SRT顶部和第一个SRT顶部之间的区别。0代表信息数据包,1代表控制数据包。控制包中还包括握手、积极回答(ACK)、消极反应(NAK)和积极回应(ACKACK)。连接维护( 保持)、 连接关闭( 关闭) 和其他类型

      2.1

      信息数据包结构

      SRT最初由16个字节领导,最高排位是标识,SRT资料袋首先包括四个领域:数据集序列号、报告序列号、时间戳和目的地最终公布身份。

      数据集序列号:SRT采用基于序列号的数据包交付方法,为发送者提供的每个数据包指定数据集编号+1。

      序号:序号是单独统计的,前面有四个标记(见图2)。

      时间戳:以连接创建点( StartTime)为基础的微秒相对时间戳。

      入境终点IP:在重复许多路线时,使用不同的SRT流进行区分。

      图2:SRT数据包

      2.2

      握手数据包结构

      这是第一次我听说握手数据包被分离成HSv4版本(SRT版本=1)。图3描述了HSv5握手数据包的结构。SRT第一,然后是握手控制信息(cif.com.hsv5)、握手/响应扩展模块(hsreg/hsrsp)、加密扩展模块(kmreg/kmrsp)和配置扩展模块(配置)。本节着重介绍前三个区域的情况。图3显示了握手工具包的结构:

      图3:HSv5的握手数据包。

      1. 所有SRT控制包的第一部分大致相同,有四个区域:控制类型和保留区、补充资料、时间戳、目的地最后套装和0个握手控制类型字段。

      2个Handshake控制信息区(cif.org)。 以下是hsv5中最重要的领域:

      ISN:随机创建的数据包的初始序列号,然后用作所有信息数据包的基准号。

      实地的初步作用是确定握手工具箱放置的握手阶段(例如,听电话模式)。握手分为两个阶段:上岗和总结。对用户而言,第二份工作更为关键。当握手失败时,“握手类型”栏将显示错误代码。表1显示每个错误代码的错误类型。

      表1涉及错误代码和错误类型。

      SRT Socket ID : 此字段应该与 SRT 第一部分的目标字符串 ID 区分开来, 它只在握手阶段活动, 而目标端字符串 ID 在整个数据传输操作中都活动 。

      为了防止DoS攻击,只有监听方制作同时的饼干,由监听方的主机、端口和当前时间制作,准确度为一分钟。

      以下是握手请求延期模块(HSREG)中最重要的领域:

      SRT版本:只要任何一方的SRT版本均大于1.3。为了建立连接,双方将利用HSv4作为握手手段。HSV4握手需要三、四次往返旅行。然而最近的HSv5握手只需要两次往返旅行。出于兼容性的考虑,即使双方的SRT版本也超过1.3。第一个握手请求也是以 HSv4 格式提出。

      SRT标记:对于各种SRT设置和功能,有8个单独的SRT标记。

      1. 变式3在发送和接收指令中实现双向传输功能。双向通信可具体说明双向通信的固定延迟。对于标准单向传输,如果A将信息传送给B,延缓期应等于A和Recallancy传输方向出现的最大拖延。双方在握手后决定推迟。在单向传输时,有编码将同侪关系和对应关系设为单一值。这一基本配置对单向传输的运作没有影响。

      使用 CONFIG 配置扩展模块的 四. KKMREQ 加密扩展模块

      由于篇幅的原因,最后两项不必要的扩大不再得到彻底审查。加密扩展模块(KMREQ)主要负责实施SRT AES128/AES192/AES256加密功能。SRT_CMD_SID、SRT_CMD_Concess、SRT_CMD_FILTER和SRT_CMD_GROUP是四类配置扩展模块(CONFIG)。SRT_CMD_SID扩展模块是SRT上游履行溪流开发功能所必需的。有兴趣的朋友可以检查自己的行李。

      2.3

      ACK数据包结构

      ACK数据包代表SRT接收器对发件人的好回答当发件人收到ACK时,相应的数据包被视为已成功发送。与接收最终估计数的链接也包含在ACK数据集中。可用于指导发送-终端拥堵管理。图4说明了ACK数据包的结构。更为重要的领域包括:

      图4:ACK的控制数据捆绑

      此字段的值为 2, 并反映了 ACK 数据包 。

      它还包括一个独立的ACK序列号,主要用于ACK包件和ACKACK包件之一。

      最近收到的数据集之一的值乘以1:字段等于最近收到的信息包之一的序列号乘以1。例如, ACK 软件包中的字段是 6, 它是 6 。最初的五个数据组已经抵达。发送者有能力把他们赶出缓冲区。必须注意到,这个领域与数据包的序列号相关联。这跟ACK序列号无关

      RRT 圆纹时间值: ACK 数据包与ACKACK 数据包之间的连接时间延迟 。

      随着时间的推移,RRT价值的变化:这一变化衡量了RTT波动的程度,值越高,链接RTT的波动越大。

      接收端可使用缓冲数据:值越高,就越多的缓冲数据可用于在接收端解码缓冲值,最大值由延迟时间参数(Latance)设定。

      链带带宽值:对这一连接带宽的估计。

      验收率估价:接收端底部网络带宽估计值。

      2.4

      NAK数据包结构

      当SRT接收器发现收到的数据包的序列号不是连续的时,它报告:他们最终将能够确定缺少一个数据包。并即时响应发送者的负回答(NAK)数据包。此外,SRT接收器还将定期提交NAK报告。它包含临时期间所有缺失的成套序列号。对NAK方法的反复分配主要是为了防止NAK数据包在逆向传输期间丢失。图5说明了NAK数据包的结构。控件类型字段的值为 3。软件包包括一份丢失的数据集序列号清单。

      图5:NAK的控制数据包

      2.5

      ACACKACK数据包结构结构

      ACKACK的主要功能是计算返回链接(RTTs)的延迟时间。ACK 数据包将包括RRT作为关键连接信息。ACACKACK数据包结构结构参见图6。首先,ACK数据包和ACKACK数据包都提供准确的时间戳和ACK序列号。当发送者将ACK数据包发送给接收者时,接收器将立即恢复到ACKACK数据包。然后发件人将使用ACK序列号,将ACK包与ACKACK包一一匹配。并且通过在彼此间穿梭而获得后向和后方的连接。

      图6 ACACKACK数据包结构结构

      2.6

      连接维护和数据包结构关闭

      保存和关闭(关闭)数据包是SRT的最后两个数据包,如图7和图8所示。

      图7:为保持数据包结构完整而链接。

      图8:连接-关闭数据集的结构

      3

      Wiresark 抢抢袋检查

      Wiresark是工业中常用的开放源码数据包分析方案。它能够拦截广泛的网络数据包。并显示数据包的信息由于信息技术部门越来越以知识产权为基础,因此越来越难以理解。无线电通信也越来越受欢迎。其意义相当于波形监视器对空间数据基础设施信号的影响。代码流分析器对TS流信号的影响

      以下是使用Wiresark软件进行连接分析的两个实例:

      3.1

      场景一 连接失败

      由于若干原因,在SRT链接的开发过程中肯定会出现连接失败,然后我们可以利用Wiresark的捕获和分析功能来确定不正确的类型。

      图9显示了连接失败后的抓取数据,而抓取视频在影片底部。 最初,双方不断握手,这表明握手失败,但IP地址和端口号配置正确,双方能够定期对调。

      在3种情况中,两种形式的特别困难调查都大于1种。SRT握手涉及两次往返旅行。有四种不同的握手方式。第一个握手包必须包含 HSV4握手。这样我们就能找到最初的握手方式然后将第四个握手数据包的“握手类型”字段设置为 1002, 反转 。翻译为"从另一边拒绝"这表明,双方在一个参数上可能存在差异,导致握手失败。

      然后,我检查了第二次握手。这是收听者对来电者的回答AES-128用于“加密字段”字段。这表明另一方必须对使用AES-128的加密作出反应。考虑第三个手提包。这是来电者给听众的讯息在“扩展字段”部分中, KMREQ 模块不在此列。它声称,握手袋没有加密的扩展模块。也就是说,它们未能达到对方的加密标准。

      经过以上的分析,我们可以推断,由于收听方要求用AES-128的方式对加密需求作出反应,连接失败了。打电话的人没有提供加密的答案。如果要成功连接,对于收听者,我们需要 获得加密密码。在呼叫器下,选择 AES -128加密技术

      图9 假设情景一:通过抓包分析发现过失

      3.2

      第二场景涉及获取连接信息。

      因特网链接(RTT-Round Trip时间)的一次性延迟是发送者与接收端之间旅行的数据所需时间。SRT延迟参数由链接的RTT值和RTT的波动性决定。然而,在实践中,有时由于防火墙等因素,直接无法获得难民审查小组的编号。这将使我们能够通过使用Wiresark程序分析ACK数据包收集必要的信息。

      如图10所示,连接RRT所需的时间是20.61毫秒。RRT的改变是9.786毫秒它还表明,该链接的RTT并不稳定。并且因为RTT不同, 卸下袋子的时间也不同。因此,工管系统整个误差控制链的能力各有不同。它还意味着,必须根据该链接的特点对设置进行调整。

      图10 设想情景二:RRT估价变化和RRT估价

      总 结

      SRT协议的基础是提高性能、减少硬件和软件要求以及免费开放源码特性。它正越来越多地在各个部门就业。过去两年中,在向上调动方面也有重大变化。了解SRT协议的数据包格式 使我们能够使用抓捕程序 来进行过失调查和判断这样,在实践中出现的问题就得到迅速和准确的纠正。我们相信,这份文件对我们大家将有所帮助。还鼓励对话和交流。

      参考文献:

      [1]https://datatracker.ietf.org/doc/html/draft-sharabayko-mops-srt/

      [2]SRT Protocol Technical Overview[M/OL].(2018-10) [2020-07]. https://www3.haivision.com/e/38322/srt-tech/8mwjcv/1293755769?h=XZ8B52VndjJ2-4BgYxY0yd2XSxpPXDU78YojBOTOmMs

      [3]https://github.com/Haivision/srt/blob/master/docs/API.md

      [4]SRT Deployment Guide,v1.1,Issue 01[M/OL].(2018-10) [2020-07].www3.haivision.com/srt-alliance-guide.

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/25097.html

          热门文章

          文章分类