高效测试丨怿星RTP协议测试解决方案

近几年,车内音视频娱乐系统不断发展,功能不断丰富,对于音视频的传输需求也逐渐增多,随着车载以太网的日渐成熟,各主机厂逐步方案落地、成本逐步降低,基于车载以太网的音视频传输也在逐步应用,常用的有RTP(Real-time Transport Protocol)、AVB协议。

车载以太网OSI七层模型

AVB协议基于2层传输,层级简单、协议多,同时有QoS可以保证音视频的传输质量,可以应用于带交换机的场景,QoS可以保证时间延迟,不过AVB协议多,开发及使用成本较高;RTP协议位于5-7层,基于TCP/IP协议,其底层协议使用UDP,适用于简单的应用场景,如倒车影像等;在RTP进行音视频传输时,它只负责传输数据包,需要配合RTCP(Real-time Transport Control Protocol)来保证RTP数据包的服务质量,遵循的标准是RFC3550。

为了确保音视频传输的协议一致性及可靠性,根据使用的协议,需要对RTP或AVB进行测试;AVB已有成熟的商业软件测试方案,因此,本文针对RTP测试解决方案进行介绍,首先简介RTP/RTCP协议,在此基础上进行RTP测试方案的详细说明,最后以案例来介绍项目应用。

一、RTP&RTCP协议一致性测试内容

RTP和RTCP是相互配合的两个协议,RTP是音视频实时传输协议,RTCP是音视频实时控制协议,两者都是封装在UDP报文中传输;每一个RTP会话,将使用连续的2个端口号分别用于RTP和RTCP,RTP报文的有效载荷封装音、视频数据流,RTCP报文不封装任何音、视频数据流。为确保协议实施有效,针对RTP和RTCP进行一致性测试。

基于RTP数据组包/拆包示意图

1.1 RTP协议一致性测试

每帧RTP报文都是由头部(Header)和负载数据(Payload)两部分组成,RTP发送端将采集到的音视频信息封装成RTP包发送,RTP接收端获取到RTP数据包后解析数据,取得应用数据。

RTP头部前12个字节固定,存在于每一个RTP数据包中。

RTP Header结构

对RTP协议进行测试时,主要对RTP Header中的各个参数进行测试,RTP Payload内容与音视频编码方式有关,不在RTP协议测试范围内。针对RTP 的测试点列举如下:

1.2 RTCP协议一致性测试

RTCP监控服务质量并传送会话参与者信息,包括已发送的数据包数量、丢失的数据包数量等信息。RTP发送端以一定的时间间隔周期性的发送RTCP中的发送报告(SR),RTP接收端通过发送接收报告(RR)将RTCP反馈信息发送出去。RTCP常见报文类型有五种,如下表所示:

RTCP报文类型

由于不同应用场景下需要支持的RTCP报文类型可能不同,怿星根据协议强制要求的内容设计RTCP测试点并实现测试。

针对RTCP 的测试点列举如下:

RTCP测试点示例

二、RTP&RTCP协议一致性测试解决方案

在简要介绍RTP/RTCP协议及测试内容后,我们一起了解下RTP测试解决方案,其主要包括测试环境搭建、测试规范编写、测试工程开发及调试三部分。

2.1 RTP&RTCP测试环境

针对RTP/RTCP的测试,从测试系统角度出发,可以分为节点级测试和系统级测试。

整体的测试方案基于CANoe,硬件设备所需包含程控电源、Ethernet接口卡。

2.1.1节点级测试

  • 当测试环境中只有发送方时,Tester需要模拟接收方发送RR报文,报告已发送的数据包数量、丢失的数据包数量等信息,同时监控发送方发送的报文。
  • 当测试环境中只有接收方时,Tester需要模拟发送方发送RTP和SR报文,同时监控接收方发送的报文。

单节点RTP测试(仿真节点)简易图

单节点RTP测试拓扑

2.1.2系统级测试

当RTP发送方和接收方处于同一个测试环境下,即系统级测试环境下,Tester通过TAP方式监控它们之间的通讯来完成测试。

系统级RTP测试(TAP连接方式)简易图

系统级RTP测试拓扑

2.2 RTP测试规范

测试RTP协议的目的是验证开发的样件符合RFC协议以及主机厂定义的规范,怿星参考RFC3550协议标准文档中对各个参数值的描述,以及主机厂定义的RTP协议应用规范文件,梳理测试规范V1.0版本,包含节点级和系统级、RTP和RTCP的测试内容。

RTP&RTCP测试规范

2.3 RTP测试工程

2.3.1 RTP测试工程开发框架

针对RTP/RTCP测试,在完成测试规范编写后,将对应开发测试脚本。首先梳理测试输入前置参数,通过excel方式进行配置填写,之后依据测试步骤进行参数解析、报文接收与处理、模拟报文发送、测试结果比对,最后保存测试log并输出测试报告。

RTP/RTCP测试工程开发框架

2.3.2 怿星RTP测试工程优势

操作简单、使用方便:测试人员只需将RTP相关的参数信息填写到Excel配置文件中,如RTP数据采样频率、SSRC值等,之后就可以在测试工程中勾选需要的用例执行自动化测试。

模块化、便于二次开发:测试工程将各个功能的实现进行模块化处理,便于在此基础上进行二次开发与调试。

规范脚本对照、报告可读性高:测试脚本是依据测试规范中测试用例描述的测试步骤,调用其余模块接口进行开发,实现测试脚本与测试步骤一一对照。测试报告中会打印每一个测试步骤的步骤描述、期望结果和实际结果,可以快速分析报告和测试Log。

测试方案应用案例

以下是在某项目中某case测试结果,该case测试目的是检查DUT发送的RTP报文参数Version字段值是否为2。Tester按照配置参数输入文件的内容,识别需要检查两个音频流的报文,根据输入的两个音频流的IP地址,端口号等信息,找到DUT发送报文中对应两个音频流的报文,提取其中的Version字段进行结果判断与输出。

测试Log如图所示:

RTP 测试log截图

测试报告打印如图所示,分别打印两个RTP音频流的测试结果。

RTP 测试报告截图

本文简要介绍车载音视频协议RTP和RTCP,RTP节点级、系统级测试环境及测试拓扑,RTP测试规范,RTP测试工程及脚本。测试工程使用方便、易操作,测试脚本支持二次开发,测试报告可读性高。

若有RTP测试需求,欢迎联系怿星咨询;同时如有AVB测试需求,怿星同样有完整的解决方案及测试服务,也欢迎大家咨询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/526609.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款很强大的SCADA工业组态软件

可以广泛应用于化工、石化、制药、冶金、建材、市政、环保、电力等几十个行业。 I官网网站:www.hcy-soft.com |体验地址:http://www.byzt.net:60/sm/ 一、产品简介 BY组态是完全自主研发的集实时数据展示、动态交互等一体的全功能可视化平台。帮助物联网、工业互联网、电力能…

两相欠压继电器 WY-35A3 额定输入电压100V 导轨安装 JOSEF约瑟

系列型号: WY-35A4电压继电器;WY-35B4电压继电器; WY-35C4电压继电器;WY-35D4电压继电器; WY-35A4D电压继电器;WY-35A4T电压继电器; WY-35B4D电压继电器;WY-35B4T电压继电器&#xf…

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 对接系统:管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌,先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务,涵盖电商业务全流程。 接入系统&#xff1…

Golang 开发实战day09 - package Scope

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 教程09 - package Sc…

2024年上半年WSK-PETS5报名及考试时间公布

4月1日,中国教育考试网发布了2024年上半年全国外语水平考试WSK(PETS5)的报名及考试通知,为方便关注者,知识人网小编特做全文转载。 国家公派留学人员全国外语水平考试(WSK-PETS5)成绩作为国家留…

二维相位解包理论算法和软件【全文翻译- 掩码(3.4)】

本节我们将研究从质量图中提取掩码的问题。掩码是一个质量图,其像素只有两个值:0 或 1。零值像素标志着质量最低的相位值,这些相位值将被屏蔽、零权重或忽略。第 5 章中的某些 L/ 正则算法需要使用掩码来定义零权重。掩码还可用于某些路径跟踪算法,如第 4.5 节中将要介绍的…

11-新热文章-实时计算

热点文章-实时计算 1 今日内容 1.1 定时计算与实时计算 1.2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例 Springboot集成kafkaStream 实时计算 用户行为发送消息 kafkaStream聚合处理消息 更新文章行为数量 替换热点文章数据 2 实时…

蓝桥杯—PCF8951

1.整个系统靠SDA和SCL实现完善的全双工数据传输 2.引脚图 AN1为光明电阻 AN3为滑动变阻 A0-A2均接地 时钟线连P20 地址线连P21 实物图 iic总线 谁控制时钟线谁是主设备 时序相关 官方提供的底层驱动代码 /* # I2C代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成…

基于机器学习的信用卡办卡意愿模型预测项目

基于机器学习的信用卡办卡意愿模型预测项目 在金融领域,了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术,我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库,构建…

MySQL高级篇(B-Tree、Btree)

目录 1、Btree(B-Tree) 1.1、B-Trees的特点 二叉树缺点:顺序插入时,会形成一个链表,查询性能大大降低。大数据量情况下,层级较深,检索速度慢。红黑树:大数据量情况下,层…

算法练习第12天|● 239. 滑动窗口最大值● 347.前 K 个高频元素

239.滑动窗口的最大值 力扣原题 题目描述: 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff…

用函数指针写两个操作数的相关运算

文章目录 概要整体架构流程代码实现小结 概要 我们以加,减,乘,除为例来示范 整体架构流程 首先我们先实现一个菜单功能来进行选择:把他封装成一个menu函数 然后把加减乘除分别用不同的函数实现 为了选择我们选择使用switch来…

docker安装rabbitmq消息队列并登录管理端

docker安装rabbitmq消息队列并登录管理端 1.官方镜像 该镜像包含用户操作界面 2.Docker运行,并设置开机自启动 docker run -d --restartalways --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management然后可以在浏览器访问15672端口管理界面&a…

Hadoop安装部署-SecondaryNameNode备份版

Hadoop分布式文件系统支持NameNode节点的高可用性,本文主要描述Secondary NameNode数据备份版本的安装部署。 如上所示,NameNode主节点同步数据到NameNode备份节点,当NameNode主节点发生故障变得不可用时, NameNode主节点重新启动…

使用nodejs搭建脚手架工具并发布到npm中

使用nodejs搭建脚手架工具并发布到npm中 一、安装环境依赖及脚手架搭建过程二、搭建Monorepo 风格的脚手架工程三、脚手架的必备模块命令参数模块获取命令参数设置子命令用户交互模块文件拷贝模块脚手架中的路径处理目录守卫文件拷贝模块动态文件生成模块mustache简介自动安装依…

libVLC 提取视频帧

在前面的文章中,我们使用libvlc_media_player_set_hwnd设置了视频的显示的窗口。 libvlc_media_player_set_hwnd(vlc_mediaPlayer, (void *)ui.widgetShow->winId()); 如果我们想要提取每一帧数据,将数据保存到本地,该如何操作呢&#x…

017——DS18B20驱动开发(基于I.MX6uLL)

目录 一、 模块介绍 1.1 简介 1.2 主要特点 1.3 存储器介绍 1.4 时序 1.5 命令 1.5.1 命令大全 1.5.2 命令使用 1.5.3 使用示例 1.6 原理图 二、 驱动程序 三、 应用程序 四、 测试 一、 模块介绍 1.1 简介 DS18B20 温度传感器具有线路简单、体积小的特点&…

mysql慢sql排查与分析

当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化: 标题开启慢查询日志: 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启,可以…

关于Ansible模块 ⑤

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》与《关于Ansible的模块 ③》之后,继续学习ansible常用模块之…

数据结构算法题 2(力扣)——链表

1. 分割链表(OJ链接) 题目描述:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。 本题做法是:遍历链表将链表分为两部分&#xf…