劉偉東 楊俊康
(作者單位:紫金電視調(diào)頻轉(zhuǎn)播臺)
廣播電視是引導(dǎo)全社會樹立正確價值觀,弘揚社會主旋律、傳播正能量、推動科學(xué)文化傳播和社會發(fā)展的重要媒介[1],也是黨和政府傳播意識形態(tài)、鞏固黨和人民共同思想基礎(chǔ)的有效途徑[2]。
在如今的數(shù)字化時代,媒體融合發(fā)展是傳統(tǒng)廣電創(chuàng)新轉(zhuǎn)型的趨勢,也是國家戰(zhàn)略。要實現(xiàn)媒體融合,就需要在智慧廣電建設(shè)的路徑下去推動,媒體融合是方向,智慧廣電是實踐路徑。國家廣播電視總局也在2018年11月印發(fā)《關(guān)于促進智慧廣電發(fā)展的指導(dǎo)意見》,為智慧廣電的發(fā)展指明了要點,推動智慧廣電建設(shè)[3]。
在智慧廣電建設(shè)中,智慧運維又是重要環(huán)節(jié)。它通過數(shù)字化、網(wǎng)絡(luò)化、智慧化的方式助力廣播電視安全播出,是保障廣電視聽安全的重要舉措[4]。
發(fā)射臺智慧運維一般過程是數(shù)據(jù)采集、存儲管理、處理分析、智能控制、可視化呈現(xiàn)、異態(tài)報警通知,涉及物聯(lián)網(wǎng)、流媒體、數(shù)據(jù)存儲、專用算法、萬維網(wǎng)(World Wide Web, Web)、移動開發(fā)等技術(shù)??蓪崿F(xiàn)節(jié)傳設(shè)備、發(fā)射機、信源/節(jié)目、動力環(huán)境等的智能監(jiān)管。但他們都是獨立的業(yè)務(wù)模塊,需要一個將分散業(yè)務(wù)整合起來的功能,這就需要提到本次介紹的全節(jié)點動態(tài)鏈路圖。
鏈路圖是一種圖形化表示系統(tǒng)內(nèi)組件間邏輯關(guān)系的展示方式。在鏈路圖中,通常通過節(jié)點或符號來表示一個組件,以組件之間的連線或者箭頭來表示組件間的邏輯關(guān)系。
發(fā)射臺的全節(jié)點動態(tài)鏈路圖(見圖1)能夠?qū)崿F(xiàn)對眾多節(jié)傳設(shè)備、發(fā)射機實時工況監(jiān)測、信源狀態(tài)監(jiān)測、節(jié)目播出情況監(jiān)測。同時,展示頻點發(fā)射鏈路中信號的流向,即從衛(wèi)星、光纖、微波接收信號開始,到發(fā)射塔發(fā)射結(jié)束的全鏈路監(jiān)控展示。
全節(jié)點動態(tài)鏈路圖是發(fā)射臺智慧運維系統(tǒng)的重要組成部分,它在全鏈路監(jiān)測環(huán)節(jié)具有如下三點重要作用:
(1)直觀展示廣電傳輸網(wǎng)絡(luò)的結(jié)構(gòu)和連接關(guān)系,使信號傳輸過程的監(jiān)測和管理變得更加方便。
(2)展示系統(tǒng)內(nèi)各設(shè)備節(jié)點的實時工況、信源/節(jié)目情況,幫助值班人員更簡單、清晰地了解整個系統(tǒng)的運行狀態(tài)。
(3)當發(fā)生故障時,可以協(xié)助值班人員快速定位故障點,使故障能夠得到及時處理。
總而言之,全節(jié)點動態(tài)鏈路圖可以滿足全鏈路集中監(jiān)管需求,提高值班人員監(jiān)管效率,助力整套發(fā)射系統(tǒng)穩(wěn)定運行,在一定程度上降低了播出風(fēng)險。
系統(tǒng)總體為瀏覽器/服務(wù)器模式(Browser/Server,B/S)架構(gòu)。其中,瀏覽器作為全節(jié)點動態(tài)鏈路圖的用戶顯示前端,擺脫了固定在應(yīng)用程序(Application,App)上使用的限制,打開手機、平板或是計算機中的瀏覽器,使用局域網(wǎng),即可訪問全節(jié)點動態(tài)鏈路圖頁面,隨時隨地進行監(jiān)測監(jiān)管。
全節(jié)點動態(tài)鏈路圖整合了節(jié)傳設(shè)備、發(fā)射機、信源節(jié)目等對象,每一個對象都擁有一個管理層,管理層獲取對象的實時工況信息、判斷報警,并與全節(jié)點動態(tài)鏈路圖共享數(shù)據(jù)、實時聯(lián)動。
節(jié)傳設(shè)備在通信網(wǎng)絡(luò)中,一般充當服務(wù)器的角色。也就是說,通信另一方的客戶端需要知道設(shè)備的網(wǎng)絡(luò)IP地址,然后才能進行鏈接并通信。發(fā)射臺里節(jié)傳設(shè)備眾多,如果是手動管理地址,那么需要逐個設(shè)置每個節(jié)傳設(shè)備的IP地址,這是一件相當煩瑣、重復(fù)性高,且容易出錯的事情。
更加方便快捷,并且更不易出錯的IP地址管理方式應(yīng)該是啟用動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol, DHCP),讓DHCP服務(wù)器動態(tài)分配IP地址給每個設(shè)備。但IP動態(tài)分配后,設(shè)備管理端又無法直接獲取設(shè)備的IP地址,這時就需要通過設(shè)備發(fā)現(xiàn)來獲取。
IP地址動態(tài)分配后,局域網(wǎng)內(nèi)每臺設(shè)備的IP地址就是變化的,設(shè)備就需要一種方式將自己的IP地址通知給管理端。傳輸控制協(xié)議(Transmission Control Protocol, TCP)只能在知道目標IP端口的情況下,點對點通信,所以選擇用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol, UDP)下的廣播或組播進行一對多通信。將自己的IP按一定協(xié)議封裝后,“喊”給局域網(wǎng)內(nèi)的所有通信對象“聽”,客戶端“聽到”后按預(yù)先約定協(xié)議解析后便能得到對方的IP地址。
由于廣播傳播數(shù)據(jù)時,會把同一數(shù)據(jù)包復(fù)制給網(wǎng)絡(luò)中的所有主機,浪費了一定的帶寬,特定條件還可能造成廣播風(fēng)暴,引起網(wǎng)絡(luò)癱瘓。反觀組播,其數(shù)據(jù)只傳遞給加入該組的成員主機,傳播過程中只有一份數(shù)據(jù),在臨近成員主機的組播路由器時才復(fù)制并分發(fā)數(shù)據(jù)給成員主機,節(jié)省了網(wǎng)絡(luò)帶寬。選擇UDP組播方式傳遞IP地址給客戶端是最佳方案。
但UDP不提供傳輸可靠性,消息存在丟失的可能,需要在通信協(xié)議上確保通信的可靠性。因此,需學(xué)習(xí)TCP協(xié)議底層通信機制,即通過確認應(yīng)答來相互確認已收到對方發(fā)送的消息,同時聯(lián)合超時重傳機制,確保設(shè)備發(fā)現(xiàn)過程的可靠性。
最后,在數(shù)據(jù)通信時采用面向鏈接的、可靠傳輸?shù)腡CP協(xié)議,以便及時發(fā)現(xiàn)節(jié)傳設(shè)備損壞、斷電、斷網(wǎng)等突然“下線”的情況,發(fā)現(xiàn)流程如下:
2.2.1 設(shè)備端發(fā)現(xiàn)流程
(1)設(shè)備接入網(wǎng)絡(luò)并獲取DHCP動態(tài)分配的網(wǎng)絡(luò)IP地址。
(2)空閑時主動發(fā)送UDP組播消息,通告自己上線。
(3)利用定時器中斷的觸發(fā)時間,等待管理端回復(fù)上線確認。
(4)如果中斷觸發(fā)前仍未收到管理端上線確認消息,再次通告上線消息。
(5)否則,向管理端進行UDP點對點回復(fù)上線完成消息,并關(guān)閉該中斷。
(6)開啟TCP服務(wù)等待管理端鏈接。
2.2.2 管理端發(fā)現(xiàn)流程
(1)管理端接入網(wǎng)絡(luò)并獲取分配的網(wǎng)絡(luò)IP地址。
(2)加入同一組播地址,接收設(shè)備上線通知。
(3)收到設(shè)備上線消息后,針對該設(shè)備進行UDP點對點回復(fù)上線確認消息。
(4)利用定時器,等待設(shè)備上線完成消息。
(5)如果超時前收到上線完成消息,以TCP客戶端身份鏈接設(shè)備端。
(6)否則,再次進行UDP點對點回復(fù)上線確認。
發(fā)射機廠家繁多,同一廠家的發(fā)射機協(xié)議版本也多,需要想辦法封裝發(fā)射機協(xié)議細節(jié),解耦通信上下游的協(xié)議依賴,將添加或改變協(xié)議的影響控制在最小范圍。
最終選擇在管理層與發(fā)射機之間添加嵌入式層來封裝協(xié)議細節(jié),嵌入式層對接發(fā)射機,將各種各樣的發(fā)射機協(xié)議轉(zhuǎn)換為統(tǒng)一的協(xié)議后發(fā)送給管理層。
嵌入式層與管理端序列化協(xié)議設(shè)計如下:
(1)報頭/報尾:確定協(xié)議的開始/結(jié)束。
(2)消息ID:表示消息號,是單調(diào)遞增的數(shù)字,具有唯一性、有序性的特點,讓消息具有冪等性。
(3)模塊類型/模塊地址:用來區(qū)分功能模塊,將采集、控制、設(shè)置、空中下載(Over-the-Air,OTA)等劃分為獨立模塊,并通過模塊地址尋址。
(4)命令代碼:表示操作指令,用來區(qū)分協(xié)議類型。
(5)數(shù)據(jù)長度:描述數(shù)據(jù)段的長度(字節(jié))。
(6)數(shù)據(jù)段區(qū)域承載通信的內(nèi)容。
(7)檢驗和:保證通信內(nèi)容的完整性、準確性,通信的兩端均以消息相同部分作為計算參數(shù),使用相同的算法進行計算,如果接收端計算的結(jié)果與校驗和不同,則表明傳輸過程出現(xiàn)了差錯[5]。
數(shù)據(jù)段為參數(shù)列表,其為封裝發(fā)射機協(xié)議細節(jié)的關(guān)鍵。
一個參數(shù)由參數(shù)代碼、參數(shù)長度、參數(shù)內(nèi)容組成,參數(shù)列表表示多個參數(shù)的集合。
(1)參數(shù)代碼:描述參數(shù)值的類型。
(2)參數(shù)長度:描述參數(shù)值占用字節(jié)數(shù)。
(3)參數(shù)值:表示參數(shù)的內(nèi)容。
通過列表化發(fā)射機屬性后,管理層以及后續(xù)層級看不到各式各樣發(fā)射機協(xié)議上發(fā)射機屬性的差異,只需統(tǒng)一以列表的方式識別參數(shù),通過參數(shù)代碼判斷參數(shù)類型,隨后進行相應(yīng)邏輯處理即可。也就達成了封裝發(fā)射機協(xié)議細節(jié),解耦通信上下游的協(xié)議依賴的目的。
對比參數(shù)列表方案與常用方案,通過結(jié)構(gòu)體方式描述協(xié)議(在數(shù)據(jù)段填“普通舊數(shù)據(jù)”類型結(jié)構(gòu)體)。假設(shè)發(fā)射機生產(chǎn)廠家數(shù)為M,每個廠家有N種發(fā)射機,通信鏈路有K層:
(1)結(jié)構(gòu)體方案:K層通信鏈路,序列化反序列化次數(shù)之和為2(K-1),接入全部N×M種協(xié)議。因為每種協(xié)議發(fā)射機屬性不同,所以數(shù)據(jù)段承載的結(jié)構(gòu)體也必然不同,而每種結(jié)構(gòu)體都需要獨立的序列化與反序列化代碼。最終,序列化與反序列化代碼一共需要增加(N×M)×2(K-1)處。
(2)參數(shù)列表方案:K層通信鏈路,序列化反序列化次數(shù)之和為2(K-1),接入全部N×M種協(xié)議。由于以同樣的結(jié)構(gòu)傳遞N×M協(xié)議,所以反序列化處代碼可通用,僅需增加1處即可;序列化處需要將N×M種協(xié)議轉(zhuǎn)換為參數(shù)列表,需要增加(N×M)處代碼。最終,序列化與反序列化代碼一共需增加N×M+1處代碼。
參數(shù)列表化方案比常用方案減少了(N×M)×2(K-1)-N×M+1處代碼,提高了編碼效率,也減少了產(chǎn)生程序錯誤的可能。
節(jié)目來自組播信源流,一個信源流內(nèi)包含多套節(jié)目。為了達到實時播放的目的,需要實現(xiàn)流媒體服務(wù)器推送視頻/音頻流,網(wǎng)頁前端播放器在下載的同時進行播放。
國內(nèi)主流的直播流媒體協(xié)議有動態(tài)碼率自適應(yīng)技術(shù)(HTTP Live Streaming, HLS)、實時消息傳輸協(xié)議(Real Time Messaging Protocol, RTMP)、HTTP-FLV(即將音視頻數(shù)據(jù)封裝成FLV,然后通過HTTP協(xié)議傳輸給客戶端)。
HLS通過超文本傳輸協(xié)議(Hypertext Transfer Protocol, HTTP)傳輸,優(yōu)點是能夠避免防火墻攔截,自帶動態(tài)碼率自適應(yīng),支持平臺多。其缺點是播放時會不停獲取視頻切片,延遲較高。
RTMP通過TCP傳輸,延遲低,長時間播放穩(wěn)定,計算機平臺普遍可播放,但不支持HTML5(構(gòu)建Web內(nèi)容的一種語言描述方式),也存在被防火墻攔截的可能。
HTTP-FLV通過HTTP傳輸,能夠避免防火墻攔截,播放時沒有復(fù)雜交互,延遲較低,支持HTML5。
對比之后,最終選擇HTTP-FLV方式實現(xiàn)流媒體服務(wù)器的推流。
流媒體服務(wù)器運行流程如圖2所示:
圖2 流媒體服務(wù)器運行流程
由于發(fā)射臺性質(zhì)的差異,各臺站的節(jié)傳設(shè)備種類、節(jié)目類型、信號傳輸拓撲結(jié)構(gòu)均有所差異,為了適應(yīng)這種差異化,真實布局臺站的實際傳輸鏈路,全節(jié)點動態(tài)鏈路圖需要做到可編輯。
編輯主要涉及兩點:一是管理鏈路與節(jié)點基本屬性,同時負責(zé)管理鏈路與節(jié)點間的歸屬關(guān)系、節(jié)點與具體節(jié)傳設(shè)備/發(fā)射機/節(jié)目的對應(yīng)關(guān)系;二是可拖拽式布局,主要負責(zé)節(jié)點在鏈路中的布局,反映鏈路節(jié)點的上下游關(guān)系。經(jīng)過編輯后,真實鏈路布局便以邏輯關(guān)系的形式映射在鏈路圖中。
在全節(jié)點動態(tài)鏈路圖中的每個設(shè)備節(jié)點、發(fā)射機節(jié)點、節(jié)目節(jié)點均有全局唯一的ID,數(shù)據(jù)在節(jié)傳設(shè)備、發(fā)射機管理層、流媒體服務(wù)器與全節(jié)點動態(tài)鏈路圖Web服務(wù)器間流轉(zhuǎn)時,通過ID來將每個節(jié)點進行區(qū)分。每當節(jié)點對應(yīng)設(shè)備工況發(fā)生變化或報警發(fā)生時,網(wǎng)頁前端根據(jù)唯一ID精準顯示。
全節(jié)點動態(tài)鏈路圖接入并聯(lián)動了節(jié)傳設(shè)備、發(fā)射機、信源節(jié)目,將智慧運維系統(tǒng)分散、獨立的業(yè)務(wù)模塊整合起來,直觀、實時地展示鏈路內(nèi)各節(jié)點設(shè)備的工況信息,實現(xiàn)全鏈路的集中監(jiān)管,使智慧運維系統(tǒng)更加完善,定位排障更加容易,監(jiān)管更加高效,系統(tǒng)更加穩(wěn)定。