当前位置: 首页 > news >正文

HIK录像机GB28181对接相机不在线问题随笔

一、问题现象

【设备信息】型号:DS-8664N-I16-V3 V4.63.000 build 230412

【问题现象】HIK录像机使用GB28181对接异常相机无法正常上线,对接HIK相机可以正常上线。

【现场拓扑】现场拓扑如下

  1. NVR侧使用固定公网IP地址。
  2. IPC侧使用家用宽带的方式,通过国标跨公网接入NVR。

图1.1:网络拓扑

    上述拓扑与NVR使用GB接入三方平台的拓扑类似,只不过NVR此时充当了平台的角色。

二、问题排查过程

1、异常相机接入过程抓包及收集打印

    现场反馈HIK相机接入正常,但是三方相机接入异常,所以我们先抓包查看异常的三方相机完整的注册过程

图2.1:三方相机异常抓包1

图2.2:三方相机异常抓包2

从上图可发现,三方相机抓包分析结果如下

  1. 录像机发起Invite请求
  2. 三方相机回复200 OK
  3. 录像机回复ACK并发起三次握手请求
  4. 未收到回复设备一直在重传三次握手(详见图2.2)

由上图分析,设备侧发起主动请求,但是未收到回复,目前看起来应该是异常相机的问题?因为相机并未正常回复相关三次握手,导致设备一直在重传,无法获取相关参数。但结果真的如此吗?

因为HIK相机是正常的,我们先抓取HIK相机的包,对比分析下是否有区别。

2、HIK相机正常抓包过程

    因上述分析,我们决定抓取HIK相机的报文,对比分析下两个抓包有何区别。

图2.3:HIK相机正常抓包1

图2.4:HIK相机正常抓包2

图2.5:HIK相机正常抓包3

     由上述现象可以判断出:

  1. HIK的相机正常接入是存在一个切换被动的机制在的。
  2. 先主动取流,取不到之后,会切换被动取流。

那么问题来了,为什么第一次主动取流总会失败呢?

3.为什么主动取流会失败呢?

要确定这个问题,我们时候首先得对Invite报文中的报文进一步分析

图2.6  异常相机Invite回复分析

图2.7  HIK相机第一次Invite回复分析

图2.8  HIK相机第二次Invite回复分析

    由上图分析可知,相机200OK的C字段,IP一直是相机的内网IP,所以,在主动取流是取不到的,所以录像机必须得被动取流,即让相机主动和录像机建立连接
    根据上述分析录像机肯定是存在一个主动切换被动的逻辑在里面的,但是为什么三方相机无法正常上线,HIK相机可以正常上线呢?

4.进一步确认问题并检查相关逻辑。

    根据上述分析,我们在确定下正常HIK相机抓包和异常相机抓包有何不同。

图2.9:相机异常抓包1

图2.10:三方相机异常抓包2

图2.11:HIK相机正常抓包1

图2.12:HIK相机正常抓包2

    由上述抓包信息可以看出:

  1. 相机C字段回复的内网地址,录像机主动取流是取不到的(公网IP无法主动访问私网IP),所以问题点目前在于,录像机是否可以正常切换被动取流(invite中a字段setup:passive)。
  2. 异常的相机三次握手一直没有回应,导致设备侧一直在重传三次握手报文,取不到流。
  3. 正常的HIK相机在未收到录像机的三次握手后,会主动BYE掉连接,回收资源。

如上述分析,目前仅存在此一个疑点。是否此怀疑疑点便为三方相机无法接入的原因呢?

三、问题解决

【问题原因】将收集到的抓包提供给HIK同事分析,目前定位出原因为:

  1. HIK的NVR会先active去取流,海康的IPC 有超时机制,tcp建立连接超时,海康的IPC 会发bye 。NVR这个时候会发passive的invite.
  2. 现场的异常ipc超时没有发BYE造成HIK的NVR的主动的取流session一直没有释放,所以就不发invite了。导致问题出现

定位到问题原因与我们之前分析到的一致

四、问题遗留

此问题中抓包发现,存在以下遗留问题

  1. 目前HIK的录像机使用国标协议添加通道,协议类型自适应模式下虽然下发的是TCP取流但是仍无法切换passive取流
  2. 需要手动将通道管理界面,更改为TCP,才会切换被动取流。所以在国标跨公网接入IPC时候,仍需如下配置通道才可正常在线,配置如下图。

http://www.lryc.cn/news/362222.html

相关文章:

  • stm32-DMA转运数据
  • Java编程常见问题汇总一
  • 用Unityhub安装unity2018.3.0和vuforia
  • 智汇云舟与芯瞳完成兼容适配,共建国产化生态体系
  • 「动态规划」最大子数组和
  • 【LeetCode 130. 被围绕的区域】
  • 超市管理系统设计1——基本功能设计
  • 前端性能优化总结笔记
  • 51种企业应用架构模式详解
  • 零基础入门学习Python第二阶04SQL详解03
  • 【第二节】C/C++数据结构之线性表
  • 千帆 AppBuilder 工作流编排功能直播总结
  • Android百度人脸识别3.0配置
  • dolphinscheduler docker部署海豚mysql版本,docker重新封装正在运行服务为镜像
  • QAnything-1.4.01.4.1版本更新!使用指北!
  • 【ARM】Fusa Compiler 6.16 LTS的安全认证报告获取
  • 数据持久化第七课-URL重写与Ajax
  • 静态网页实现-人脸识别-案例(web)
  • ARM32开发——串口输入
  • 个人笔记--python用tanh画圆形,正方形,长方形(epsilon界面宽度)
  • 学习Java,stringbuilder用法
  • 16-云原生监控体系-rabbitmq_exporter监控 RabbitMQ-[部署Dashborad告警规则实战]
  • 四大运营商频段-2024
  • 260只出现一次的数字
  • 【高阶数据结构(八)】跳表详解
  • 用旧安卓手机当 linux 开发机
  • discuz如何添加主导航
  • [每日一练]患某种疾病的患者,正则表达式的匹配
  • PHP身份证识别接口、线上平台如何实现身份证实名认证功能?
  • 若依:mybatis查询的结果未映射到实体类报null