-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
265 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,229 @@ | ||
--- | ||
layout: post | ||
title: AVDECC 简析 | ||
tag: [AVDECC,AVB] | ||
categories: [Ethernet] | ||
--- | ||
|
||
<!--break--> | ||
|
||
# AVDECC 实体 | ||
|
||
从更宏观的角度,以设备实体为单位,一个 AVDECC 设备需要包含以下的功能组件。 | ||
|
||
```plantuml | ||
@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 报文的发送形式为多播。 | ||
|
||
```plantuml | ||
@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 报文发起连接。 | ||
这个连接动作可能是预设的,也可能是用户手动操作而触发的。 | ||
|
||
```plantuml | ||
@startmindmap | ||
<style> | ||
mindmapDiagram { | ||
.op * { | ||
LineStyle 4 | ||
} | ||
} | ||
</style> | ||
* ACMP | ||
**_ AVDECC Connection Management Protocol | ||
** ACMP Controller state machine | ||
***_ 描述了 AVDECC 在 ACMP 会话中的主动参与方式。 | ||
***_ AVDECC 控制器可以独立于这些状态机来监视所有接收到的 ACMP 消息,\n用于跟踪网络上的连接状态。 | ||
*** Fast connect | ||
****_ 启动过程中,Listener 根据预存的状态直接向 Talker 发起连接 | ||
*** Fast disconnect | ||
****_ 关机过程中,Listener 直接向 Talker 通知断开连接 | ||
*** Controller connect | ||
****_ 由 Controller 通知 Listener 向 Talker 发送建立连接请求 | ||
*** Controller disconnect | ||
****_ 由 Controller 通知 Listener 向 Talker 发送断开连接请求 | ||
** ACMP Listener State Machine | ||
** ACMP Talker State Machine | ||
@endmindmap | ||
``` | ||
|
||
## AECP | ||
|
||
```plantuml | ||
@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 实体,指示成功或失败并返回对应请求信息的实体模型响应。 | ||
** State Machine | ||
*** 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 可以分成如下四种功能角色: | ||
|
||
```plantuml | ||
@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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters