背景
公司要搞BFCP项目,可惜网上资源较少,所以整理一下相关理解和问题修复记录。
BFCP
简介
BFCP背景信息不再赘述,推荐几篇我自己认为不错的BFCP相关资料
- 完整双流控制协议 (BFCP),SDP拓展和应用概论-part 1
- 完整双流控制协议 (BFCP),SDP拓展和应用概论-part 2
- 标准SIP发送双流BFCP协议报文分析
- rfc4582
- rfc8855
第1、2个链接是一篇文章的上下两节;第3个链接是一位大佬整理的各种BFCP的报文截图;第4、5个链接是RFC文档,是的,有2个版本。
通用名词解释
- bfcp_chair: 一个逻辑对象,如果floor有冲突时,由chair负责解决冲突。(注:加粗部分存疑)
- bfcp_server: 一个逻辑对象,具体作用还没有搞清楚。
- bfcp_participant: 一个逻辑对象,标识某个参与者(比如一场会议中的某个与会者)。
- conf-id: 会议id,用于唯一标识一场会议。
- transaction-id: 事务id。对应的request-response要求相同;bfcp_server主动发出的通知要求为0。
- user-id: 用户id,用于唯一标识一个用户。
- primitive:bfcp的方法,标准协议中提供了以下方法
+-------+--------------------+------------+ | Value | Primitive | Reference | +-------+--------------------+------------+ | 1 | FloorRequest | [RFC 4582] | | 2 | FloorRelease | [RFC 4582] | | 3 | FloorRequestQuery | [RFC 4582] | | 4 | FloorRequestStatus | [RFC 4582] | | 5 | UserQuery | [RFC 4582] | | 6 | UserStatus | [RFC 4582] | | 7 | FloorQuery | [RFC 4582] | | 8 | FloorStatus | [RFC 4582] | | 9 | ChairAction | [RFC 4582] | | 10 | ChairActionAck | [RFC 4582] | | 11 | Hello | [RFC 4582] | | 12 | HelloAck | [RFC 4582] | | 13 | Error | [RFC 4582] | +-------+--------------------+------------+
- attribute: bfcp-primitive的属性,其中部分属性支持内嵌其他属性
+------+---------------------------+------------+ | Type | Attribute | Reference | +------+---------------------------+------------+ | 1 | BENEFICIARY-ID | [RFC 4582] | | 2 | FLOOR-ID | [RFC 4582] | | 3 | FLOOR-REQUEST-ID | [RFC 4582] | | 4 | PRIORITY | [RFC 4582] | | 5 | REQUEST-STATUS | [RFC 4582] | | 6 | ERROR-CODE | [RFC 4582] | | 7 | ERROR-INFO | [RFC 4582] | | 8 | PARTICIPANT-PROVIDED-INFO | [RFC 4582] | | 9 | STATUS-INFO | [RFC 4582] | | 10 | SUPPORTED-ATTRIBUTES | [RFC 4582] | | 11 | SUPPORTED-PRIMITIVES | [RFC 4582] | | 12 | USER-DISPLAY-NAME | [RFC 4582] | | 13 | USER-URI | [RFC 4582] | | 14 | BENEFICIARY-INFORMATION | [RFC 4582] | | 15 | FLOOR-REQUEST-INFORMATION | [RFC 4582] | | 16 | REQUESTED-BY-INFORMATION | [RFC 4582] | | 17 | FLOOR-REQUEST-STATUS | [RFC 4582] | | 18 | OVERALL-REQUEST-STATUS | [RFC 4582] | +------+---------------------------+------------+
- 下图中蓝框中即为
conf-id
,transaction-id
,user-id
;
红框中为一个包含FloorRequestInformation
属性的FloorRequestStatus
方法,其中FloorRequestInformation
包含了OverallRequestStatus
属性。
开始/停止共享
- rfc中流程介绍:Floor Participant to Floor Control Server Interface
- 省流版流程图(注:红色字体或红色背景是我自己业务相关的关键节点,所以高亮,与标准协议无关)