SIP
協議的本質是協商,基於這種通訊協議,通訊雙方須要直接或者間接得到對方的接口(通常就是地址和端口)。所以,須要在系統中保存和管理各類設備的接口信息,以便能完成正常的通訊。在GB/T 28181中,這種需求經過SIP
協議的REGISTER
和MESSAGE
消息來實現。網絡
其中,REGISTER消息用來進行設備或者系統(下級平臺)的註冊處理,其攜帶事先約定的信息經過挑戰式註冊(兩次註冊:第一次上級平臺回覆401消息並攜帶認證參數;第二次註冊攜帶處理後的認證參數)的方式完成接口信息提交(第二個REGISTER消息中的CONTACT字段攜帶下級平臺的接口地址和端口)。這裏,在最後一條200 OK消息中,上級平臺會攜帶當前的系統時間,用如下級平臺的校時處理(但,設備不必定具有系統校時功能,可採用DVR或者NVR的間接校時)。國標中對於註冊間隔(即過時註冊時間)沒有作明確的規定,可是,通常取expires=3600(秒),即一小時。此外,刷新註冊(即會話內註冊),必須保持call-id, from/to tag的一致,不然上級平臺會將註冊消息斷定爲初始註冊(替代原有註冊,可能致使上下線的操做)。只有當下級平臺感知本身離線的狀況下(註冊消息上級回覆403或者心跳消息上級回覆3次408),才應發起初始註冊。code
若是在規定的註冊間隔中,上級平臺沒有接收到下級平臺的刷新註冊消息,那麼會致使下線操做。爲了不網絡延遲和處理帶來的延遲,下級平臺應適當提早刷新註冊的時間(例如,expires=3600時每隔3590秒註冊一次)。注:不可太過頻繁的進行註冊(例如,1分鐘註冊一次),不然可能會被有黑名單的上級平臺屏蔽致使一段時間沒法正常通訊,這是上級平臺的保護措施。接口
一樣,心跳消息用於更細粒度的檢測下級平臺或者設備的健康情況。心跳消息通常以1分鐘爲時間間隔,由下級平臺或者設備向上級平臺發送。這裏,若是是設備,而且包含子設備,例如,DVR或者NVR,其子設備因爲不直接和平臺進行註冊,狀態應由父設備向平臺報送,採用心跳消息中擴展的INFO字段來完成(每次都攜帶離線子設備列表在父設備心跳當中,沒有攜帶的子設備默認在線)。心跳消息用來檢測離線的默認規則是3次心跳回復408消息,即3分鐘內連續3次心跳都沒有成功即斷定離線。資源
註冊心跳是GB/T 28181的基礎功能,按照協議進行正常的註冊和心跳是其餘功能的保障。設備或者平臺頻繁的上下線會致使一系列的重複操做,浪費大量的計算資源。目前,也有意見是取消REGISTER消息,直接使用心跳MESSAGE來完成該功能,正在商討中。基礎