1.04k likes | 1.24k Views
點對點即時串流分享傳輸系統之研製與效能 評估 Implementation and performance evaluation of a Peer-to-Peer Real-time streaming media system. Presenter : Kuei -Yu Hsu Advisor : Dr . Kai-Wei Ke Oral Defense Date : 2014/7/30. Outline. Introduction Network Structure Multicast Transmission P2P Streaming System
E N D
點對點即時串流分享傳輸系統之研製與效能評估Implementation and performance evaluation of a Peer-to-Peer Real-time streaming media system Presenter: Kuei-Yu Hsu Advisor: Dr. Kai-Wei Ke Oral Defense Date: 2014/7/30
Outline • Introduction • Network Structure • MulticastTransmission • P2PStreaming System • Overlay Network • MPEG-2Transport Stream • System Implementation • Streaming Encode module • Network Management module • Streaming Transfer module • Routing Algorithm module • Streaming Decode module • SystemResult & Evaluation • Conclusion
Network Structure • 主從式(Client-Server)架構 • 為傳統最簡單的一對多存取架構。 • 網路使用者以及許多影音串流應用系統的增加,單一伺服器的主從式網路架構已難以負擔大量使用者的需求。
Network Structure (cont.) • 內容傳遞網路(Content Delivery Network, CDN)架構 • 伺服器端採用叢集式(Cluster)的伺服器以及分散式(Distributed)的架構,提供區域性的存取。 • 伺服器維護耗費高成本。
Network Structure (cont.) • 點對點(Peer-to-Peer, P2P)架構 • 用戶端採用分散式的特性,除了可以接收資料,更多了將資料分享給別人的能力。
Network Structure (cont.) • 混合式HybridCDN-P2P架構 • 整合伺服端的叢集分散式架構,以及用戶端的點對點架構。
MulticastTransmission (cont.) • 網路層群播(IP Multicast, IPM) • 需要特定的硬體與軟體支持,以及Internet Group Management Protocol (IGMP)協定 • 布置不易
MulticastTransmission • 應用層群播(Application Layer Multicast, ALM) • 將IPM中「路由器」所必須處理之工作,改為全部都由參與群播的「群組成員」負責。 • 實行較容易
P2PStreaming System(Push) • 資料依照指示路徑被傳遞下去 • 樹狀存取架構,資料來源為其父節點。 • 資料在同一路徑上重複傳送機率低,頻寬使用率也較低。 • 維護與管理較為複雜 • 適用於中、小規模的系統
P2PStreaming System(Pull) • 節點主動發送請求要資料。 • 網狀存取架構,資料來源不固定,節點間彼此互相傳輸。 • 資料在同一路徑上重複傳送機率較高,頻寬使用率也較高。 • 維護較為容易 • 適合大規模的系統
MPEG Bit Stream • 重要欄位: • Elementary stream (ES): 經過MPEG-2編碼壓縮後的資料、影像與聲音資料,影像與聲音通常會是一個access units,ES之格式包含 • Digital Control Data • Digital Audio (sampled and compressed) • Digital Video (sampled and compressed) • Digital Data (synchronous, or asynchronous) • Packetized elementary stream(PES):經由Packetizer切割並且封裝的ES
Two Kind of Data Streaming • Program Stream(PS): • 資料片段較大,適用於穩定無損耗的環境 • 一個PS只能傳輸一個節目(Program) • 應用於DVD或硬碟等儲存媒體 • Transport Stream(TS): • 資料片段細小固定188bytes,容許於較不穩定的環境中使用 • 多工特性使一個TS可同時傳輸多個節目(Program) • 應用於DVB-T、IPTV的串流傳輸 PS PES PES … PES … TS TS TS TS PES1 Part1 PES1 Part2 PES1 Part3 PESnPartm
TSPacket Encapsulation (cont.) • TS封包封裝於IP/UDP/RTP之下 • 在Ethernet中傳輸最大為1370 bytes • 一個UDP封包中,最多可乘載7個188 bytes的TS封包 • (14bytes + 20bytes + 8bytes + 12bytes) + 188bytes * 7 =54bytes overhead + 1316byte payload= 1370bytes
TSPacket Encapsulation 7TSpackets
TS HeaderAnalysis • 一個TS封包188bytes=4 bytes header + 184 bytes payload • TS封包重要欄位: • Sync Byte: 用來做資料同步的起始欄位 • Packet Identifier(PID): 辨別不同資料類型 (e.q. Video, Audio) • Continuity Counter(CC): 範圍為0~15,用來檢查TS資料的連續性 • Program Counter Reference(PCR): 主要用於音訊與視訊同步之參考
Systeminteraction • 本系統共有5個模組 • 串流來源發送模組:產生並發送串流來源 • 網路管理模組:大量封包進出系統之管理 • 串流轉送模組:串流封包的排序與播送 • 路由演算法模組:串流傳遞方向之決策 • 串流解碼播放模組:串流資料解碼與播放
Streaming Encode module • 使用VLC command-line • 媒體來源一:選擇本機端影音檔案 • 媒體來源二:擷取攝影裝置
Network Management module • 網路管理模組使用輸入輸出完成端口(Input/Output Completion Port, IOCP)處理應用程式與Windows作業系統間輸入輸出(Input/Output)的執行。 • IOCP是一個由Microsoft公司所研發的系統內核調用機制,提供於Windows作業系統上開發程式之API。 • 使用非同步(asynchronous)與多執行緒(multiple thread)的操作架構,能夠快速處理大量的I/O資料。 • I/O包含了Windows作業系統所有的資料進出之動作,本系統I/O處理主要為封包的傳送與接收。
IOCPAsynchronous • 同步:系統會等待I/O工作的完成才會接著去處理下一個工作。 • 非同步:不等待前一個工作完成,系統會馬上指派執行緒去處理下一個工作。
IOCPArchitecture & flow • IOCP建立一個執行緒池(thread pool) • 完成之I/O會放進完成佇列中 • 建立檢查傳輸狀態之執行緒,並將其放入等待佇列中 • 執行緒主動檢查I/O項目是否已被正確完成
Streaming Transfer module • 串流轉送模組主要為處理封包排序與遞送。 • 因本系統使用的是原始的RTP封包,所以接收端所收到的封包上記錄的參考時間是來源提供者的時間。 • 播放器所參考之時間為作業系統之時間
Streaming Transfer module • 當播放器的參考時間慢於封包上的時間資訊,可能會造成播放器緩衝溢出(overflow)的情形,溢出之封包將會被丟棄。 • 當播放器的參考時間快於封包上的時間資訊,此時緩衝可能就容易呈現空(empty)等待的狀態。
Streaming Transfer module • 播放時間同步可讓串流資料可以穩定地播送、順利地被播放器解碼。 • 計算封包2與封包3的時間差距,並依此時間差距設定一個倒數計時器。 • 封包3等待計時器倒數完畢之通知,當時間倒數完畢後,封包3即會被送出。
Routing Algorithm module • 路由演算法模組為封包傳遞到目的節點的轉送決策與管理。 • 推式分享傳輸機制:使用ALM之概念於覆疊網路上建置一套具快速恢復機制之演算法。 • 分散式多源轉送樹(Distributed Multisource Forwarding Trees, DMFT) • 叢集分散式多源轉送樹(Cluster-based Distributed Multisource Forwarding Trees, CDMFT) • 拉式分享傳輸機制: 基於BitTorrent的概念修改,使其適用於串流資料的傳遞。
DMFT • 鄰近成員資訊表(Neighbor Information Table, NIT): • 每個成員都會有一張NIT表格,記錄自己與群組中其他成員的距離 • 資料轉送表(Data Forwarding Table, DFT): • 每個成員亦都會有一張DFT表格,維護群組的樹狀傳遞架構
Five Mechanism • 新成員加入:若自己為群組中的第一個節點,則自成一群組並等待其他節點加入;若加入的是一個已存在之群組,則與群組中之任一節點發送連線請求。 • 建構樹狀路徑:依據NIT表格所提供之資訊,選擇距離自己最近的節點來當作子節點。 • 修剪重複路徑:節點距離相同所產生之分歧,有可能會發生ㄧ節點同時擁有一個以上的父節點之情況。 • 成員離開恢復:成員離開有兩種,一種是主動通知離開,另一種則是未通知直接關閉斷線。 • 定時輪詢回報:設定每隔一段時間發送一個心跳封包(Heart Beat, HB)輪詢檢查群組中是否有異常斷線的節點。
Update NIT(cont.) • 每個成員都會有一張NIT表格。 • 每當有一個新成員加入,NIT表格就會加入新成員的距離資訊。
Update NIT • 當有成員離開群組,將剔除掉該成員之資訊。 • 接著再重新調整樹狀架構,恢復傳送機制。
DMFTflow chart (1) Member Join (2) Construct Routing Tree (3) Prune Duplicate Path (5) Inquire at regular time (4) Recover Tree Structure
CDMFT • 叢集分散式多源轉送樹(Cluster-based Distributed Multisource Forwarding Trees, CDMFT) • 為了降低控制封包的數量,CDMFT使用叢集的方式管理成員。
Pull-basedStreamingSystem • 使用主動要求資料的方式,向擁有資源的節點要資料。 • 原始BitTorrent機制中必須要有明確的資源大小,知道檔案的開始和結尾,才能夠完成細切的動作。 • 本論文使用RTP封包的時間戳記作為串流細切的參考依據。
Streaming Decode module • 使用VLC-QtLibrary,將VLCmediaplayer嵌入QtC++系統中。 • VLC-QtLibrary是一個用來連結Qt應用開發框架與LibVLC Library的免費函式庫 • Qt是一個跨平台的應用程式與使用者介面框架 • 使用Qt開發之應用有:Skype、VLC media player、Adobe Photoshop Elements、VirtualBox……等 • LibVLC Library多媒體框架為VLC media player所提供之函式庫 • 使用LibVLC所開發的應用程式有:FreeTuxTV、Kamoso、SopCast Player等等
Streaming MediaDialog 媒體來源一:選擇本機端影音檔案 媒體來源二:擷取攝影裝置
Testing Environment • 6個路由器: • Catalyst 3560-eight ports四個 • Cisco 1800 Series-two ports兩個 • 9個網路區段 • 4台電腦