Live Streaming with CCN & Content Transmission with CCNx 21 Jun. 2012 Suphakit Awiphan Katto Laboratory, Waseda University
Outline Introduces the paper entitled Live Streaming with Content Centric Networking [1] Demonstrates how to perform content transmission with CCNx software [3] 2
Host-based Live Streaming 3
Host-based Live Streaming There are various media streaming techniques HTTP Live Streaming (HLS) is one of the most popular and promising method 4
HTTP Live Streaming Easy to be implemented encodes video stream divides the stream into a sequence of stream segments generates an extended M3U (m3u8) playlist which contains the metadata for various available sub-streams 5
Concerns on Host-based Scheme Bandwidth issue When client wants some data, it has to send requests, which travel through the network, to the server Client has to get the content from the specific server, even though there may be other users nearby having the same content and willing to share it 6
Concerns on Host-based Scheme Location dependence TCP/IP relies on data location IP address has to be known if a user wants to watch a live video 7
CCN Overview [2] 8
Content Centric Networking [2] Thin-waist (hourglass) model of network stack 9
Content Centric Networking [2] 10
Content Centric Networking [2] 11
Live Streaming with CCN [1] 12
Live Streaming with CCN [1] Exploit the caching mechanism of CCN to reduce network congestion and delivery delay Client can request video stream by sending Interest and get the response Data using CCN protocol instead of HTTP 13
Advantages of CCN Live Streaming [1] If Bob s video process is later than his roommate Video stream segments are already cached in the CCN router Bob can retrieve them from Content Store If the processes of two users are almost the same CCN router will forward only one Interest to the Internet according to Pending Interest Table (PIT) 14
Implementation [1] The authors implement CCN live streaming based on CCNx software Two main components ccnd: a routing daemon which every CCN node has to run ccn-repo: a CCN based application which is a repository that stores CCN data 15
Implementation - Producer side architecture [1] The authors run ccnd and ccn-repo Video input is decomposed into a sequence of segments An index file is generated All files are put into the repository using ccnputfile of CCNx 16
Implementation - Naming Model [1] The authors use their server with CCN name space ccnx:/ccn.tsinghua.edu.cn If user uploads a video named clock.avi Server will generate an index file named clock.m3u8 (playlist) in the name space ccnx:/ccn.tsinghua.edu.cn/user/clock.m3u8 All segment files are in ccnx:/ccn.tsinghua.edu.cn/user/clock/block1.ts 17
Implementation - Consumer side architecture [1] The authors implement a client software based on Andriod platform running ccnd There is media player which supports HTTP live streaming The HTTP proxy translates the HTTP request to CCN Interests and CCN responds to HTTP responds 18
Experiments A scenario of CCN live streaming experiments [1] 19
Experiments Results [1] The first case, all clients play the video at the same time Compared to HTTP live streaming, CCN live streaming can achieve better download speed and lower delay, because the PIT helps to reduce network congestion 20
Experiments Results [1] The second case, clients play the video one by one All clients excepts the first one have better download speed and delay This is due to the caching of CCN 21
CCNx Demonstration 22
CCNx Framework process ccndc App Lib unicast ccnd Lib local face face interest ccnd App Lib connection ccnr broadcast/ multicast face ccnd Lib ccnd machine 23
Content Transmission with CCNx [3] ccnsendchunks CCNx C API used to chop contents into small data units (chunks) and inject them into CCN The chunks are produced as the program receive Interests The default block size is 1024 bytes 24
Content Transmission with CCNx [3] ccncatchunks used for reading the content produced by ccnsendchunks ccncatchunks2 Similar to ccncatchunks but used when user specify different block size (e.g., 2048) as an option of ccnsendchunks 25
Content Transmission with CCNx [3] ccnputfile publishes a local filename or url as content with the name ccnxname The content is published as a collection of CCNx Data in accordance with the naming convention By default, ccnputfile will publish content with the version based on the local machine time 26
Content Transmission with CCNx [3] ccngetfile retrieves content published under the ccnxname writes it to the local file filename By default, ccngetfile will retrieve the latest version available 27
References [1] H, Xu, Z. Chen, R. Chen, and J. Cao Live Streaming with Content Centric Networking, Proc. International Conference on Networking and Distributed Computing, ICNDC 2012, Oct. 2012. [2] V. Jacobson, et al., Networking Named Content, Proc. ACM CoNEXT 2009, pp.1-12, Dec. 2009. [3] CCNx project, [Online] available at www.ccnx.org 28