DZ先生怪谈国标28181之目录订阅与通知

1. 自述

今日DZ先生主要讲的课题是:目录订阅和通知

2. 订阅的作用

有人肯定会问,这个订阅是干嘛用的,简单点来讲就是保持上下级域之间的目录结构,设备状态保持一致。举个小例子:这边有两台sip服务器A和B,A和B通过国标对接,A把资源推送给B,B订阅A域的系统ID,A上的一个摄像头原来在线的,现在离线了,那么A就会通知B,我这儿有个摄像头离线了,然后B也让A推送过来的这个摄像头离线,此外每当A上的设备离线,上线,增加,删除,目录更新时,都会向B发送通知哦!好了小伙伴们,通过这个小例子,你明白他的作用没?

3. 订阅方式(详细见IETF RFC 3265)

小伙伴们根据你的工作经验,你认为A域订阅B域,有几种订阅方式?

根据DZ君的工作经验,目前DZ君只遇到了A域订阅B域的系统ID,因为DZ君遇到的平台还不可以订阅下级域的目录,也没有操作过其他的订阅方式。

没关系,那就跟DZ君一起学习下国标28181-2016里的定义吧,咱一起学习一起进步。

国标标准定义了以下几种订阅方式:

1)A订阅B的系统ID------最常用的

    释:B 域检测到直属目录和下级域的目录变更事件时应向 A 域发送通知消息;

2)A订阅B的下级域系统ID

    释:B 域检测到对应此ID 的下级系统范围内的目录变更事件时应向 A 域发送通知消息;

3)A订阅B的行政区划编码

    释:B 域检测到属于此行政区划的目录变更事件时应向 A 域发送通知消息

4)A订阅B的设备ID

    释:B 域检测到该设备及其下属子设备发生目录变更事件时应向A 域发送通知消息;

5)A订阅B的上报业务分组ID,虚拟组织ID

    释:B 域检测到该业务分组、 虚拟组织下属虚拟组织、 设备发生目录变更事件时应向 A 域发送通知消息 

4. 刷新订阅

    A 域在初始订阅成功之后, 应在过期之前向 B 域发送刷新订阅消息, 进行订阅状态维护。

    刷新订阅消息与初始订阅消息属于同一会话, 并且 Expire 头域值大于0. 

    初始化订阅时,Expire头域值国标定义可以配置,默认为600s。

5. 取消订阅(两种方式:主动和被动)

    主动: A订阅B,A主动取消订阅。取消订阅请求应与初始订阅请求属于同一会话, 并且 Expire 头域值为0

    被动: A订阅B,B 域可通过发送subscription-state 头域为terminated 的 NOTIFY 消息主动结束订阅, NOTIFY

               消息体可为空, 订阅方接收到该消息后回复200 OK 响应。

6. 信令流程

 

命令流程描述如下:
1: 订阅域向被订阅域发送初始订阅SUBSCRIBE 消息, 订阅目的域的目录变更事件, 消息头域中使用 Event 头域描述订阅事件, 消息体中携带订阅的详细参数, 使用 Expire 头域指定订阅过期时间;
2: 被订阅域设备收到订阅消息后, 向订阅域发送200 OK 响应;
3: 对于初始订阅操作, 被订阅域立即发送 NOTIFY 消息携带离线及其他异常状态设备目录,消息头域中使用 Event 头域描述订      阅事件;

4: 订阅域收到 NOTIFY 消息后回复200 OK 响应;

5: 被订阅域目录变更后, 通过 NOTIFY 消息将变更事件通知订阅域, 消息头域中使用 Event头域描述订阅事件;

 

6: 订阅域收到 NOTIFY 消息后回复200 OK 响应;
7: 订阅域在过期之前向被订阅域发送刷新订阅 SUBSCRIBE 消息, 订阅目的域的目录变更事件, 消息头域中使用 Event 头域描述订     阅事件, 消息体中携带订阅的详细参数, 使用 Expire 头域指定订阅过期时间;
8: 被订阅域设备收到订阅消息后, 向订阅域发送200 OK 响应;
9: 被订阅域目录变更后, 通过 NOTIFY 消息将变更事件通知订阅域, 消息头域中使用 Event头域描述订阅事件;
10: 订阅域收到 NOTIFY 消息后回复200 OK 响应;
11: 订阅域向被订阅域发送取消订阅SUBSCRIBE 消息, 消息头域中使用 Event 头域描述订阅事件, 消息体中携带订阅的详细参数,Expire 头域值为0;

 

12: 被订阅域设备收到订阅消息后, 向订阅域发送200 OK 响应, 取消向订阅域发送目录变更通知消息。

7. 实例分析

第一步:SUBSCRIBE消息

第三步:NOTIFY消息,初始订阅上报离线及异常设备状态

 

第五步: NOTIFY消息暂时没抓,后期补上

第七步:刷新订阅是比较难抓的,有机会抓来展示

第九步:后期补上

第11步:来看下主动取消吧,被动取消有机会可以的话,补上,因为DZ在做的时候是先取消的订阅,在订阅的,所以这边的CALL-id和订阅的CALL-ID不一致

 

8.订阅消息与通知消息体(国标规范)

订阅消息消息体示例如下:
< ? xml version="1.0" ?>
<Query>
< ! -- 命令类型: 目录订阅(必选) -->
<CmdType>Catalog</CmdType>
< ! -- 命令序列号(必选) -->
<SN> 命令序列号</SN>
< ! -- 订阅的系统/行政区划/设备/业务分组/虚拟组织编码(必选) -->
<DeviceID> 订阅编码</ DeviceID>
</Query>

通知消息消息体示例如下, 增加/更新目录通知消息中Item 的字段参数应遵循 A.2.1g) 的规定:
< ? xml version="1.0" ?>
<Notify>
< ! -- 命令类型: 目录订阅(必选) -->
<CmdType>Catalog</CmdType>
< ! -- 命令序列号(必选) -->
<SN> 命令序列号</SN>
< ! -- 订阅的系统/行政区划/设备/业务分组/虚拟组织编码(必选) -->
<DeviceID> 订阅编码</DeviceID>
< ! -- 通知消息中SumNum 取值与 DeviceList 中 Num 取值相同(必选) -->
<SumNum>2</SumNum>

<DeviceList Num="2">

 

 

<Item>
< ! -- 状态改变的系统/设备/行政区划编码(必选) -->
<DeviceID> 编码1</DeviceID>
< ! -- 状态改变事件 ON: 上线, OFF: 离线, VLOST: 视频丢失,DEFECT: 故障,
ADD: 增加,DEL: 删除,UPDATE: 更新(必选) -->
<Event>OFF</Event>
</Item>

 

 

<Item>

 

< ! -- 状态改变的系统/设备/行政区划编码(必选) -->
<DeviceID> 编码n</DeviceID>
< ! -- 状态改变事件 ON: 上线, OFF: 离线, VLOST: 视频丢失,DEFECT: 故障,
ADD: 增加,DEL: 删除,UPDATE: 更新(必选) -->
<Event>ADD</Event>
<Name>IPC_天山视频</Name>
< Manufacturer>XXX</Manufacturer>
< Model>1.0</Model>
<Owner>0</Owner>
<CivilCode>650102</CivilCode>
<Address>axy</Address>
<Parental>0</Parental>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
</DeviceList>
</Notify

 

 

DZ先生个人官方微信

 

【文献来源】

《公共安全视频监控联网系统 信息传输、交换、控制技术要求 》

 RFC 3265

 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值