OpenAVNU 带宽预留协议SRP代码分析

本文深入探讨了OpenAVNU中的SRP协议,分析了其带宽预留功能、状态管理和局限性,提出如何简化数据流描述以支持更多类型的流。着重讨论了MSRP架构、优点与不足,并指出了软件的扩展需求.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenAVNU 带宽预留协议SRP代码分析

AVNU

AVNU由专业的汽车,消费电子和工业制造公司组成的联盟,它们共同致力于建立开放AVB和TSN标准的互操作性的认证。

OpenAVNU

AVNU在github 上开放了其代码,成为OpenAVNU,地址:

https://github.com/Avnu/OpenAvnu

OpenAVNU是AVNU组织按照AVB协议开放的AVB源码,它集合了多家公司开发的开放软件。如:Intel等等。内容涵盖了AVB能力的硬件driver和应用层上的AVTP包,talker/listener的简单实现,gPTP代码,SRP等等。本文就说说SRP的代码。

 

但是已经多年没有人维护代码,也没有人回答问题。所以其稳定性和系统完整性并不完美。但是目前也没有更好的AVB源码,只能作为参考,Po哥仔细看了下SRP系统代码,大概是如下架构:

MMRP是对MAC地址管理,MVRP是对VLAN进行管理,MSRP是对streams进行管理,对stream带宽预留的信息就是存在于MSRP中。下面专门分析下MSRP:

OpenAVNU中的MSRP:

msrp.c维护了一个数据库:

struct msrp_database {
struct mrp_database mrp_db;
	struct msrp_attribute *attrib_list;
	int send_empty_LeaveAll_flag;
	struct eui64set interesting_stream_ids;
	int enable_pruning_of_uninteresting_ids;
}

msrp维护每个消息的属性,形成链表管理。

struct msrp_attribute {
    struct msrp_attribute *prev;
	struct msrp_attribute *next;
    uint32_t type;
    union {
	    msrpdu_talker_fail_t talk_listen;
	    msrpdu_domain_t domain;
    } attribute;
    uint32_t substate;      /*for listener events */
    uint32_t operation;     /* DECLARE or REGISTER */
    mrp_applicant_attribute_t applicant;
    mrp_registrar_attribute_t registrar;
}

 

 

优点缺点:

SRP管理系统对带宽的预留,属于在发送数据流之前进行带宽注册发布,对连接的路径节点都进行管理评估,如果可能出现带宽不够,连接talker和listener,就会报告failure。

Po哥认为其优点在于:

  • 详细描述流的状况,在发送之前保障发送效果,从而达到确定性传输。
  • 状态机机制,talker, listener,switch协同工作
  • 专有ethertype二层包发送MSPDU,方便switch转发,抓包
  • 应用层管理,易于开发

但是,如此一来也带来了缺点

  • 因为是对发送前的带宽预留的管理,对流描述的限制多,导致状态多,故障多;
  • SRP依赖对流的描述信息。为了带宽预留准确,结合FQTSS,带宽信息来源需要talker 产生STREAMID (包含ID),class级别,如class A级别,是125us发送一次,这样限制过于僵硬,数据流必须用AVTP二层网络数据包格式。

另外,这套OpenAVNU软件有如下问题:

  • 只支持单个接口输入,可以实现talker和listener的SRP管理,但是无法支持switch上的端口管理;
  • 虽然可以接收domain的信息报文,但不支持Switch内部MRP属性转发机制MAP。SRP没有实现switch部分,基本没有实用意义。

需要增加部分:

  • 需要增加多口支持
  • 需要增加SWITCH内部MAP功能,用于数据包属性信息更新到switch内部其它网络口。

 

那么就有一个问题,如何能够既利用上SRP的带宽预留功能和状态管理,又能简化数据流的描述信息,只要一个通用接口,用于描述数据流的情况,就能够启动SRP预留过程,这样就能够不止支持AVTP流,而且能否支持RTP流等等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值