AT&T Video Optimizer
Video Streaming and Concurrent Sessions
Introduction
Adaptive bitrate streaming has meant less buffering, faster startup time and a better user experience for streaming every kind of network condition.
Understanding the number of concurrent sessions related to each segment/manifest, and the relationship of your video streaming performance is a good idea.
Background
First, some definitions are in order.
A connection is a pathway from one point on a network to another point. A request is sent and a response received using that connection.
More specifically, a TCP connection is a pathway between two points on a network using the Transport Layer as part of the Internet Protocol stack, where the two points have completed a TCP three-way handshake. For a TCP connection to exist does not require data to be sent between the two endpoints. TCP connection is also referred to as a TCP socket.
The transfer of data over an established TCP connection is considered a session.
A session between a client and a server may also use multiple TCP connections to improve performance. But this adds complexity.
Concurrent Sessions is the sum of all of the logical TCP connection existing at a given point in time.
Now let's review video segments and manifests/playlists.
For adaptive bitrate streaming to work, the video player (or client) on a user's device must be made aware of the available streams at differing bit rates, to allow the player/client to switch dynamically between encodings if the available bandwidth changes. This information is communicated through a text-based manifest, or playlist file.
In MPEG DASH streaming these files are called manifests. In Apple HTTP Live Streaming (HLS) they are called Media Playlists. Either way, it is a list of media file resources, each of which refers to one video segment that is part of larger stream.
Each manifest can open up multiple concurrent sessions for the related segment.
The Issue
Understanding the number of concurrent sessions for each video segment is a good idea, because using too many concurrent sessions may cause problems with smooth delivery of content.
Like many aspects of video streaming, managing the number of concurrent TCP sessions related to each video segment is a balancing act. Up to a certain point, opening new sessions may be beneficial, but opening too many concurrent TCP sessions may create issues.
There is no one answer for all video streams, so knowledge of your particular streams and your goals is the key.
Best Practice Recommendation
After serving your video streams, it is a good practice to review how they are performing, and analyze the actual results. You can use Video Optimizer to monitor the validity of the streaming strategy you've chosen.
Video Optimizer can help you identify the number of concurrent sessions associated with any one selected manifest file (and the related video segment).
On the Best Practices tab under the Video Concurrent test result section, there is a table detailing concurrent sessions with the length of time for that amount of overlap (concurrency).
Matching this information and the actual performance quality of the video can then help you determine what effect opening that number of sessions may be having on performance.
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.