In the SIRA STREAMS project we are looking at streaming live video over bandwidth limited and high latency links. The internet connections normally available at locations similar to our target sites are limited in bandwidth (the amount of data that can be moved through the link), reliability (how predictable the bandwidth is) and latency(how long it takes for a message to go from one end the connection to the other and back).
We have been building a platform that works with experimental and early stage technologies. We are exploring how new methods of streaming video perform and how they are effected by experimental changes to the underlying network layer. We want to measure the packet loss on a connection while competing Internet traffic and how the protocols used for transporting video react to that loss.
HTTP Live Streaming (HLS) is one of a few technologies that are aiming to change the way we handle streaming video. Most streaming video currently use a protocol called RTSP. using UDP as its method for transporting data across the network. HLS instead uses HTTP which uses TCP as its transport mechanism. TCP is connection oriented and guarantees that data will make it across the network while the connection exists, to do this TCP handles the details when packets get lost in the network. UDP is much simpler, instead of creating a connection a program using UDP for transport sends chunks of data across the network and has to handle packet loss itself. Methods to make TCP more reliable have been developed for 3 decades and there is continuing work to improve TCP.
Hyper Text Transfer Protocol(HTTP) is the protocol computers use to communicate on the web. By using HTTP and TCP, HLS can take advantage of the infrastructure that has been developed to make the web faster, more responsive and reliable.
NewCWV is a proposed modification to TCP under development at the University of Aberdeen. NewCWV aims to improve latency in long lived TCP connections. Normally HTTP connections are one shot, the client(web browser) requests a page, the server returns the page and the connection finishes. There is a technique called persistent HTTP where the same connection can be used for multiple requests in a row. By using a persistent connection we can avoid the overhead of starting the connection for each item we need in a web page.
A TCP connection has a parameter called the congestion window(sometimes cwnd) which governs how much send data can be outstanding without receiving an acknowledgement. When a TCP connection is created it will use a technique called slow start to gradually grow the congestion window to the maximum size the network can support. Normally after a period of inactivity on a TCP connection, the congestion window gets reduced down until it hits a base level. Once at a base level sending data will have to regrow the congestion window, experiencing a similar delay to starting a new connection.