AT&T Video Optimizer
Video Streams and TCP Connections
To manage the efficiency of the network connections used in video streaming, it is important to be able to view the number of separate TCP connections for a given video, and whether they are persistent or not.
TCP stands for Transport Control Protocol. You will often see it referred to along with the related Internet Protocol, as TCP/IP, which is at the center of all Internet traffic. TCP is used by many of the most popular applications on the internet, including streaming media applications.
TCP is a connection-oriented, end-to-end reliable protocol which supports multi-network applications. TCP is able to operate above a wide spectrum of communication systems ranging from hard-wired connections to packet-switched or circuit-switched networks.
Because TCP was designed with a series of requests and responses to verify file transfers, it is ideal for applications that need guaranteed delivery. It provides handling for both timeouts and retransmissions, by establishing virtual connection between two endpoints. Each endpoint is defined by an IP address and a TCP port number.
Like so many other issues in video streaming, managing the type and number of TCP connections is a balancing act.
Creating more TCP streams to send video will give the client more flexibility to choose the best quality based on the available bitrate and display capabilities.
However, each different version adds additional complexity to the process, and may require more organization of media files. The added complexity may be worth the extra work, but it is good to examine the results to know if your strategy is successful.
An example of the added complexity of spreading delivery of one video over more than one TCP connection is that each additional video file needs to be tracked, and each needs to be stored.
Best Practice Recommendation
It is a good practice to understand how efficiently you are using TCP connections to stream video.
When determining streaming efficiency in relationship to TCP, two questions arise:
- How many separate TCP connections are being used for a single video?
- What kind of TCP connections do you have?
Using more than one connection may offer some load balancing opportunities, and can give the streaming client more flexibility to choose the best quality based on the available bitrate and display capabilities.
However, each additional connection adds additional complexity and may not improve delivery. It is also good to be aware if your connections are persistent or not. Sending small video segment (chunks) over non-persistent connections can result in more overhead because of the need to establish a TCP connection to the server after each segment.
Each video file is unique and every situation is different. It is up to the developer, video producer, or content provider, to experiment and determine the most efficient approach.
To help you make the right choices for your app, the Video Optimizer will determine (1) if video segments are being sent over one TCP connection or multiple connections, and (2) whether TCP connections carrying your video are persistent, or non-persistent.
Video and other types of rich media are on the rise in mobile apps and in the future we plan on offering more guidance on streaming and other video technology in our Mobile Development Best Practices recommendations.