TR-069 小註解

TR-069 是個什麼東西呢? 它是一個 CPE (Client Premium Equipment) 管理的機制, 由 DSL forum 所提出, 正式名稱是 CPE WAN Management Protocol (CWMP). 舉凡可以透過網際網路上網的設備, 都是 TR-069 所考慮的客戶端設備.

對賣 IP STB 的廣播公司來說, 客戶升級失敗導致退貨是他們擔憂的一件事. 怎麼樣能夠讓客戶無痛升級呢? 首先就是要搞懂客戶家裡的網路設定, 甚至是設備的型號和版本, 對吧! 加入相容於 TR-069 軟體, 就相當於有了一個植入客戶產品裡面的木馬模組可以裡應外合.

當然, TR-069 可以做的事情不只是升級這一件事是, 舉凡轉移設定檔, 增減服務項目, 管理與收費 (pay-per-view), 家庭監控都在它鎖定的服務項目之內. 簡單地說, 只要 IC 設計公司可以提供 TR-069 的支援, 那麼影片供應商或是系統廠就可以輕易地換 IC solution, 而不用擔心原先設計了一堆程式都要重新來過. 

 TR-069 只是一個比較廣泛的規範, 它的親朋好友還包括了下面這些.

既然 TR-069 是基於網路的協議, 順便也展示一下它的 protocol stack. 出現在 stack 最上層的 ACS 表示 Auto Configuration Servers, 它相對於用戶端的 CPE. TR-069 就是溝通它們用的. 我們可從下圖看到它基於 SOAP (Simple Object Access Protocol) 和 RPC (remote procedure call), 而且可以加密.  其中 TLS = transport layer security, 而 SSL = Secure Sockets Layer, 是 TLS 的前身, 它的知名度也比較高.

[ref]

1. SPEC: TR-069 Issue 1 Amendment 4.

2. BawBaw 私人招待所

3. Overview of TR-069

DSM-CC 小註解

網路上不容易找到把 DSM-CC 講清楚的網站, 雖然官網或許講得很詳細, 但是如果有人想在 3 分鐘內知道這個名詞的屬性, 應該不能靠官網. 

DSM-CC 全名是 Digital Storage of Media Command and Control Protocol , 功用在於提供互動電視的下載機制.

如果要和 MPEG TS (transport stream) 一起傳輸, 就必須將 DSM-CC 的 message 包裝成 private section. 這種 DSM-CC section 和 TS 的 private section 相容, 因此可以在廣播碼流中夾帶 DSM-CC 的訊息. MPEG2 TS 夾帶 DSM-CC 訊息的格式請參考 [1].

DSM-CC 必須將一個可執行的程式, 切割成小段 (data pipe), 加入同步訊息 (data stream), 打包進 bit stream (multi-protocol encapsulation). 由於廣播的特性在於不知道使用者何時開機, 換台,…等等, 所以這些 DSM-CC 的服務 (service domain) 都必須週期性地出現在 TS 碼流當中. 這種特性稱為 Carousel (旋轉木馬), 亦即每隔一段時間就會再出現.    

像是 MPEG video 都有 GOP (group of picture), DSM-CC 的內容也分成 group. 於是有 group 外的 DSI (download server Initiate) 存放參考資訊, 以 group 形式出現的 DII (download info indication) 和 DDB (download data block).

如果是 object carousel, DSM-CC 的 service domain 分為三種 object: service gateway, directory, file. 看起來很複雜, 其實就是 service 的根目錄 (root), 文件夾 (folder), 和檔案 (file). 也就是傳過來的應用程式要放在哪裡的意思. 此時 DSI 負責存 service gateway info.

當收完 object carousel 之後, service 存放位置應該都已經確定了. 此時 data carousel 會將真正的 data (如應用程式) 放在 DDB 中傳輸 (以 group 出現).

對一個 STB 軟體來說, TS demuxer 解析了 PAT, PMT, 自然可以找到 data stream. DSM-CC 再負責從中間組合出應用程式. 這裡有個 trade-off 就是一次要組合幾個 module (object 或是 data) 才好? 如果看到一個 module 就收一個, 可能同時要收一大堆 module, 結果把記憶體弄爆! 一次如果只處理一個 module, 可想而知那個旋轉木馬不知道要繞幾圈才能把所需要的 module 都收齊, 速度一定其慢無比了.  

[Note]

1. http://www.360doc.com/content/10/0224/11/59579_16643719.shtml

2. 中文論文: 數位視訊廣播多媒體家用平台之DSM-CC軟體設計與實現