📹 第十章 GB/T 28181协议原理
📄 一句话概括

平台级联就是「下级往上级注册」,注册有方向,所以连线是线性的。 五十个平台,树上 49 条连接,网上 2450 条——这就是国标选树的原因。

📝 本节和前面几节的关系

前面几节都是单个平台内部的事。这一节往外看一层:平台和平台之间怎么连。 Demo 把「星型」和「网状」的连接数算出来对比。

一、单向注册,所以是树

国标里的互联只有一种方向:下级平台主动往上注册,上级不往下注册。 这个方向性不是随便定的, 它保证了「谁负责」这件事永远清楚——下级挂了上级知道(心跳超时),上级挂了下级只能重连。 由此得到一个直接结论:连线数随平台数线性增长,不是平方。 n 个平台组成一棵树,只需要 n 减 1 条注册关系。 如果改成「两两互相注册」会怎样:连接数变成 n 乘 n 减 1, 十个平台就是 90 条,五十个就是 2450 条。 更麻烦的是「谁说了算」——两个平台互相注册,出了事没人能判定谁是权威。

二、树的三个代价

第一,深度受限。 每多一级,信令就多转发一跳,省市区所四级下来,一次点播要多等好几次往返。 所以国标实践里级联一般不超过三级。 第二,上级是单点。 中间那台平台挂了,下面整片失联,而且是「注册关系全断」,不是「少几路视频」。 所以真实项目里上级都要做双机热备。 第三,编号不能乱。 国标编号的前 8 位是「中心编码」,下级平台注册到上级时,这个前 8 位必须是上级分配的那个。 很多人自己随便编一个,结果能注册上、但目录同步不下来——因为上级按前缀过滤,不认这个号。 第三条是实施时最容易翻车的地方,而且它不报错:注册返回 200,一切看起来正常, 就是目录里一条设备都没有。 遇到这种现象,第一件事就是拿两边的编号前缀对一遍。

三、动手 Demo:平台级联,连线的数量是平方级的

分别算「星型(单上级)」和「网状(两两注册)」的连接数,看差距随平台数怎么变。

for n in (2, 5, 10, 50):
    star = n - 1          # 树上每个平台只挂一个上级
    mesh = n * (n - 1)    # 网状两两注册
    print(n, star, mesh, mesh / star)

实跑输出:

--------------------------------------------------------------------
平台级联,连线的数量是平方级的
--------------------------------------------------------------------
**「SIP 监控域互联」听起来抽象,其实就是「平台之间互相注册」**。
**而注册是有方向的:下级往上级注册,上级不往下级注册。**

**这就决定了连线数不是平方,是线性的**:
  平台数     星型(单上级)     网状(两两)     差多少
  ---------------------------------------------------------
  **2**      **1**              **2**            **2 倍**
  **5**      **4**              **20**           **5 倍**
  **10**     **9**              **90**           **10 倍**
  **50**     **49**             **2450**         **50 倍**

**最后一行说明国标为什么坚持「树」而不是「网」**:**五十个平台两两注册要 2450 条连接**,
**而树上只要 49 条。**
**更关键的是「谁说了算」**——**网状结构里两个平台互相注册,出了事没人能判定谁是权威。**

**树结构也有代价,而且很现实**:

  问题               具体是什么
  --------------------------------------------------------
  **深度受限**       **每多一级,转发多一跳,延迟多一份**
  **上级是单点**     **中间那台挂了,下面整片失联**
  **编号不能乱**     **下级平台的前 8 位必须归上级管**

**第三行是实施时最容易翻车的地方**:**国标的 20 位编号里,前 8 位是「中心编码」**,
**而下级平台注册到上级时,这个前 8 位必须是上级分配的那个。**
**很多人自己随便编一个,结果能注册上、但目录同步不下来**——**因为上级按前缀过滤,不认这个号。**

最后一行的差距是 50 倍:五十个平台,树上 49 条连接,网上 2450 条。 而连接数还只是账面的——每条连接还要发心跳、还要同步目录,真实开销是连接数的好几倍。 这也解释了国标为什么规定「心跳周期 60 秒」: 它是在「发现得够快」和「信令别把网络占满」之间取的折中。级联层数越多,这个折中越保守。 代码里的 star = n - 1 有个前提:所有平台都挂在同一个上级下面。 真实的多级级联是「树高大于 2」的结构, 但连接数依然是「平台数减一」——树的一个重要性质:n 个节点,永远只有 n 减 1 条边。

30 秒实验

  1. 算一下:一百个平台组成一棵树,要多少条注册关系?(99 条)
  2. 想一下:为什么两两注册在工程上是不可维护的?
  3. 想一下:编号前缀不对,为什么注册还会成功?

常见误区

  1. 以为「级联越多越好」。 每多一级多一跳延迟,实践上一般不超过三级。
  2. 以为「上级挂了只是看不到视频」。 注册关系全断,整片失联,必须做热备。
  3. 以为「编号随便编也能用」。 上级按前缀过滤,能注册上但目录同步不下来。
自测三问(点开对答案) 1. 平台级联的方向是? —— **下级往上注册,上级不往下注册**,所以是树。 2. n 个平台的树有多少条注册关系? —— **n 减 1 条**,这是树的性质,和层数无关。 3. 注册成功但目录为空,先查什么? —— **查两边的编号前 8 位是否一致**,上级按前缀过滤。

下一节看另一种情况:不会说 SIP 的设备怎么接进来。

相关笔记