最近有個現場在對接大華 ICC 平臺時,客戶反饋:EasyGBS 級聯成功,但 ICC 顯示下級離線。EasyGBS 成功對接過很多家國標平臺,但這種情況確實少見。
我們遠程過去確認配置無誤后,就進行了抓包,拿到包我就納悶了,怎么第一次 Register 直接就返回200OK了呢?
因為 GB28181 基本注冊流程是,如果帶了鑒權,應有兩次 Register (如下圖),但實際上,EasyGBS 第一次注冊時,上級就響應成功了。
碰巧當時大華的工程師在現場升級軟件,我就讓他幫忙看看報文。他說 ICC 平臺是不校驗用戶名和密碼的。于是客戶用大華 NVR 接入大華 ICC 測試,發現以下參數并不會影響設備在線。
大華工程師對比了報文,說是 EasyGBS 注冊時填的 Domain 域是 10 位數字,但大華的 Domain 要求必須是 “IP: 端口” 格式。
國標在這塊規定的是:
1. 宜采用 ID 統一編碼的前十位編碼;
2. 擴展支持十位編碼加 “.spvmn.cn” 后綴格式;
3. 或采用IP:port格式,port宜采用5060。
誠實說,我是不太接受這個說法的,不過有思路總要試試,于是就改成了“IP:Port” 的格式,結果照樣不行。
后面我又嘗試了海康 NVR、大華 NVR,還有我們 EasyGBD 設備,都能正常上線。所以問題不在設備本身,因為這些設備注冊時,上級平臺返回 200OK 后,還會繼續發一系列請求。于是我就參考這些能上線的設備的報文,把?REGISTER、Keepalive、DeviceInfo、Catalog、DeviceStatus、SUBSCRIBE 等交互報文逐行進行對比,反復修改嘗試,折騰了一禮拜,愣是沒找出哪兒有問題。
在我黔驢技窮的時候,轉折來了!
旁邊同事提議,要不用已發布的穩定版試試?結果居然輕輕松松注冊上線了!這事兒就離譜。我又換了不同操作系統和架構的設備測試,排除了代碼層面的問題。
但就在調試過程中,我無意加了個 ONVIF 設備,級聯之后發現大華 ICC 平臺顯示在線了?!經過再一次反復注冊、仔細核對報文,發現只有共享的通道 ID 不一樣。
我就琢磨:難道上級平臺會校驗通道 ID?這讓我想起年初一個客戶現場,當時華為的 IVS3800 也會校驗下級平臺的通道 ID,并要求第 11 到 13 位必須是 132,不然就會設備顯示在線,通道卻是離線的。所以當時我們修改了非國標設備轉國標的通道 ID,默認讓第 11 到 13 位是 132—— 說不定這就是添加 ONVIF?設備后能在線的原因。
再一次選擇控制變量法,我參考了海康 NVR 和大華 NVR 的注冊報文,結果還真跟通道 ID 有關!目前測試的結果是:通道 ID 的第 11 到 13 位必須是 132 或者 188 才行。
總結一下:
大華 ICC 平臺會校驗下級共享通道的 ID,而且對 11~13 位有特殊要求,否則上來的設備會顯示離線,目前已知 132 和 118 都可以上線。