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时候,仍需如下配置通道才可正常在线,配置如下图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/688253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转ChatGPT:最全学术论文提示词分享【上】

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在当今数字时代,人工智能(AI)技术正迅速改变各行各业的运作方式。特别是,OpenAI的ChatGPT等语言模型以其强大的文本生成能力,…

从零开始实现自己的串口调试助手(8)-循环发送

循环发送 准备 创建槽函数 设置QSpinBox的最大值 注意: // 我们不能在qt的ui线程中延时,否则将导致页面刷新问题 //QThread::msleep(ui->spinBox->text().toInt());//设置下次发送时间间隔 定时器实现 关联信号与槽: //添加自动换行定…

C++学习/复习13--list概述

一、list概念 1.带头双向链表 2.构造函数 3.迭代器(其迭代器需尤其注意) 4、size 5.front/back 6.插入删除 删除时的迭代器失效 由于list的节点特殊,既有数据又有指针,其实现需要节点/迭代器/list各成一类再组合

UI框架与MVC模式详解(1)——逻辑与数据分离

【效率最高的耦合方式】 以实际的例子来说明,更容易理解些。 这里从上到下,从左到右共有8个显示项,如果只需要显示这8个,不会做任何改变,数据固定,那么我们只需要最常规的思路去写就好,这是最…

【小海实习日记】Git使用规范

1.Git使用流程 1.1 从master分支拉一个分支,命名要符合规范且清晰。 1.2 commit到本地,push 到远端。 1.3 在Gitlab创建MR,选择develp分支。 1.4 如果要修改的话,先把Gitlab上的MR修改为Draft(修改态),然后在本地修改代…

SwiftUI获取用户的位置信息(CLLocationManager,CLLocationManagerDelegate)

本篇文章将会介绍一下在SwiftUI中如何通过CorLocation框架获取用户的位置信息,因为获取位置信息属于用户的隐私信息,所以需要在Info.plist文件里面加上访问位置权限的说明。 关于位置信息,可以请求两种级别的许可:always和when i…

图的创建和BFS,DFS遍历

图的创建 图是一种用于表示对象及其关系的抽象数据结构,由节点(也称为顶点)和连接节点的边组成。图可以分为有向图(Directed Graph)和无向图(Undirected Graph),以及加权图&…

Redis的事务与关系型数据库事务有何不同?

引言:关于 Redis 的事务很多人可能都是一知半解,大多数人只了解数据库的事务,并且是单体事务,对于 Redis 事务和常见关系型数据库的事务的区别还没有去了解过,本文就来详细进行介绍。 题目 Redis的事务与关系型数据库…

git【工具软件】分布式版本控制工具软件

一、Git 的介绍 git软件的作用:管理软件开发项目中的源代码文件。 常用功能: 仓库管理、文件管理、分支管理、标签管理、远程操作 功能指令: add,commit,log,branch,tag,remote…

UE5 Mod Support 思路——纯蓝图

原创作者:Chatouille 核心功能 “Get Blueprint Assets”节点,用于加载未来的mod。用基础类BP_Base扩展即可。打包成补丁,放到Content\Paks目录下,即可让游戏访问到内容。 与文中所写不同的地方 5.1或者5.2开始,打…

mysql optimizer_switch : 查询优化器优化策略深入解析

码到三十五 : 个人主页 在 MySQL 数据库中,查询优化器是一个至关重要的组件,它负责确定执行 SQL 查询的最有效方法。为了提供DBA和开发者更多的灵活性和控制权,MySQL 引入了 optimizer_switch 系统变量。这个强大的工具允许用户开…

自动驾驶仿真(高速道路)LaneKeeping

前言 A high-level decision agent trained by deep reinforcement learning (DRL) performs quantitative interpretation of behavioral planning performed in an autonomous driving (AD) highway simulation. The framework relies on the calculation of SHAP values an…

Go微服务: 基于使用场景理解分布式之二阶段提交

概述 二阶段提交(Two-Phase Commit,2PC)是一种分布式事务协议,用于在分布式系统中确保多个参与者的操作具有原子性即所有参与者要么全部提交事务,要么全部回滚事务,以维持数据的一致性它分为两个阶段进行&…

3038. 相同分数的最大操作数目 I

题目 给你一个整数数组 nums,如果 nums 至少包含 2 个元素,你可以执行以下操作: 选择 nums 中的前两个元素并将它们删除。一次操作的分数是被删除元素的和。 在确保所有操作分数相同的前提下,请你求出最多能进行多少次操作。 …

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班!小班教学!目前还有3个名额,招满为止!有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课! 这个课程支持升级成双核A…

李廉洋:6.7黄金亚盘洗盘暴跌,美盘最新分析策略。

黄金消息面分析:美联储降息可能是经济出现麻烦的信号。自去年10月以来,美国股市一直在上涨,原因是尽管利率持续走高,但美国经济和企业盈利仍保持强劲。如果市场对2024年下半年降息的信心增强,那么硬着陆的可能性就会增…

python-df的合并与Matplotlib绘图

1 数据连接 concat merge join (append 作为了解) append 竖直方向追加, 在最新的pandas版本中已经被删除掉了, 这里推荐使用concat 1.1 pd.concat 两张表, 通过行名、列名对齐进行连接 import pandas as pd df1 …

MS1112驱动开发

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

【电路笔记】-分贝

分贝 分贝是以 10 为底的对数比,用于表示电路中功率、电压或电流的增加或减少。 1、概述 一般来说,分贝是响度的度量。 在设计或使用放大器和滤波器电路时,计算中使用的一些数字可能非常大或非常小。 例如,如果我们将两个放大器级级联在一起,功率或电压增益分别为 20 和…

嵌入式Linux系统编程 — 2.1 标准I/O库简介

目录 1 标准I/O库简介 1.1 标准I/O库简介 1.2 标准 I/O 和文件 I/O 的区别 2 FILE 指针 3 标准I/O库的主要函数简介 4 标准输入、标准输出和标准错误 4.1 标准输入、标准输出和标准错误概念 4.2 示例程序 5 打开文件fopen() 5.1 fopen()函数简介 5.2 新建文件的权限…