AVDECC 简析
Charles Chan @ 2023-12-26 #AVDECC,AVB @Ethernet
AVDECC 实体
从更宏观的角度,以设备实体为单位,一个 AVDECC 设备需要包含以下的功能组件。
@startmindmap
<style>
mindmapDiagram {
.op * {
LineStyle 4
}
}
</style>
* AVDECC End Station
**_ 具有一到多个 AVDECC 实体的终端设备
** 必选
*** AEM
****_ AVDECC Entity Model
**** ADP
*****_ AVDECC Discovery Protocol
*****_ 识别网络上当前可用的所有 AVDECC 实体\n并在它们被添加到网络或从网络移除时更新状态。
***** 宣布 AVDECC 实体可用(available)。
***** 宣布一个 AVDECC 实体即将离开(departing)。
***** 发现(discover)网络上的一个或所有 AVDECC 实体。
**** AECP
*****_ AVDECC Enumeration and Control Protocol
*****_ 为要携带的枚举和控制模型提供一种处理机制。
**** ACMP
*****_ AVDECC Connection Management Protocol
*****_ 在流利用者(Sink)和流源(Source)之间建立和断开连接。
*** 网络接口
*** AVTP Control
** 可选 <<op>>
*** 更多 AVDECC 实体/网络接口 对
*** gPTP
*** AVTPDU serdes
*** MAAP
*** FQTSS
*** SRP
@endmindmap
ADP
用于使 AVDECC 实体发现其他实体及被其他实体发现的机制。 ADP 报文的发送形式为多播。
@startmindmap
<style>
mindmapDiagram {
.op * {
LineStyle 4
}
}
</style>
* ADP
**_ AVDECC Discovery Protocol
**_ ADP 的目的地址固定为:91-e0-f0-01-00-00
** Advertising Entity State machine
***_ 用于在终端站上发布 AVDECC 实体的状态机
** Advertising Interface State machine
***_ 每个被发布的 AVDECC 实体对应的 AVB 接口状态机
** Discovery State machine
***_ 用于实现 AVDECC 控制器或请求发现其他 AVDECC 实体
***_ 可以要求指定 ID 的实体回复 ENTITY_AVAILABLE
***_ 可以要求所有实体(指定 ID 为 0 )回复 ENTITY_AVAILABLE
@endmindmap
当足够多的 ADP 报文于网络上流转之后,所有 AVDECC 终端都可以找到自己期望的另一个 终端。
ACMP
根据前文所述,每一个 AVDECC 实体中都必然包涵 ACMP 功能。 当终端通过 ADP 报文找到期望的、对应的 AVDECC 终端之后,就可以通过 ACMP 报文发起连接。 这个连接动作可能是预设的,也可能是用户手动操作而触发的。
@startmindmap
<style>
mindmapDiagram {
.op * {
LineStyle 4
}
}
</style>
* ACMP
**_ AVDECC Connection Management Protocol
** ACMP Controller \nstate machine
***_ 描述了 AVDECC 在 ACMP 会话中的主动参与方式。
***_ AVDECC 控制器可以独立于这些状态机来监视所有接收到的 ACMP 消息,\n用于跟踪网络上的连接状态。
*** Fast connect
****_ 启动过程中,Listener 根据预存的状态直接向\n Talker 发起连接
*** Fast disconnect
****_ 关机过程中,Listener 直接向 Talker 通知\n断开连接
*** Controller connect
****_ 由 Controller 通知 Listener 向 Talker\n 发送建立连接请求
*** Controller disconnect
****_ 由 Controller 通知 Listener 向 Talker\n 发送断开连接请求
** ACMP Listener \nState Machine
** ACMP Talker \nState Machine
@endmindmap
AECP
@startmindmap
<style>
mindmapDiagram {
.op * {
LineStyle 4
}
}
</style>
* AECP
**_ 所有 AECPDU 都是通过单播从 Controller 发送到 AVDECC 实体,并通过单播接收答复。
**_ 枚举(Enumeration)是获取对应的单个 AVDECC 实体的功能、格式和控制方式的过程。
**_ 控制(Control)是操作功能、格式和控制方式以将 AVDECC 实体配置为可用状态的过程。
** AEM format
***_ AVDECC 实体模型命令和响应允许 AVDECC 实体暴露 AVDECC 的实体模型。
*** AEM Commands
****_ 用于发送与 AVDECC 实体模型交互的实体模型命令。
*** AEM Responses
****_ 来自 AVDECC 实体,\n指示成功或失败并返回对应请求信息的实体模型响应。
*** AEM Entity State Machine
****_ 接受命令、处理命令并回复
*** AEM Controller State Machine
****_ 发送命令并处理回复
** Address Access Entity State Machine
***_ 处理地址访问命令的状态机。\n用于读取、写入或处理启动消息中包含的 TLV 数据。
***_ 这里的地址可以是寄存器地址,甚至用于固件升级功能。\n或者制定地址指针开始执行程序。
***_ 该命令从 AVDECC 控制器发送到目标 AVDECC 实体。
** Legacy AV/C Controller State Machine
***_ 处理遵循 IEEE 1394 AV/C 语义的传统 AV/C 命令/答复。
** Vendor Unique Controller State Machine
***_ 处理供应商自定义的 命令/答复。
** HDCP APM Entity State Machine
***_ 处理 HDCP APM 命令、用于传输 HDCP IIA 认证协议消息\n或 HDCP IIA 认证协议消息的一部分。
***_ 该命令从 AVDECC 控制器发送到目标 AVDECC 实体。
@endmindmap
AVDECC 角色
从功能角度, AVDECC 可以分成如下四种功能角色:
@startmindmap
<style>
mindmapDiagram {
.op * {
LineStyle 4
}
}
</style>
* AVDECC
** AVDECC Controller
***_ 具有 AVDECC 控制器角色的 AVDECC 实体、\n向其他 AVDECC 实体发起命令并从其接收响应。
*** 必选
****_ AEM format
****_ AEM Commands
****_ AEM Responses
****_ AEM Controller State Machine\n(支持部分指令,详情不在此展开。下同)
*** 可选 <<op>>
****_ ACMP Controller state machine
****_ AEM Controller State Machine
****_ AEM Entity State Machine
****_ Address Access Controller State Machine
****_ Legacy AV/C Controller State Machine
****_ Vendor Unique Controller State Machine
** AVDECC Talker
***_ 可以产生一个或多个 AVTP 流的 AVDECC实体。
*** 必选
****_ IEEE 1722 AVTP Talker
****_ ACMP Talker State Machine
****_ AEM format
****_ AEM Commands
****_ AEM Responses
****_ AEM Entity State Machine
*** 可选 <<op>>
****_ AEM Entity State Machine
****_ Address Access Entity State Machine
****_ Legacy A/VC Entity State Machine
****_ Vendor Unique Entity State Machine
** AVDECC Listener
***_ 可以接收一个或多个 AVTP 流的 AVDECC 实体。
*** 必选
****_ IEEE 1722 AVTP Listener
****_ ACMP Listener State Machine
****_ AEM format
****_ AEM Commands
****_ AEM Responses
****_ AEM Entity State Machine
*** 可选 <<op>>
****_ AEM Entity State Machine
****_ Address Access Entity State Machine
****_ Legacy A/VC Entity State Machine
****_ Vendor Unique Entity State Machine
** AVDECC Responder
***_ 不实现上述三中角色,但仍使用 AVDECC 协议的实体。
*** 必选
****_ AEM format
****_ AEM Commands
****_ AEM Responses
****_ AEM Entity State Machine
*** 可选 <<op>>
****_ AEM Entity State Machine
****_ Address Access Entity State Machine
****_ Legacy A/VC Entity State Machine
****_ Vendor Unique Entity State Machine
@endmindmap