Low Latency Live

Overview

Use the Low Latency Live rule to enable advanced features for the optimized delivery of Low Latency DASH and/or HLS streams. This rule is available for sites configured for the Live traffic type.

Warning:

The Low Latency Live rule is designed to optimize live streams for low-latency delivery, but only works if your entire workflow supports the LL-DASH or LL-HLS streaming protocols. For best results, ensure that both your origin and player are fully configured for one or both of these protocols, as enabling the rule without full end-to-end support for LL-DASH and/or LL-HLS, could degrade performance instead of improving it.

Configure the Rule

Here, we'll describe how to configure the rule with the Delivery Service Management UI.

API Users may choose to build the site configuration offline.

To configure a Low Latency Live rule:

  1. Make sure the host is configured for the Live traffic type.

  2. Navigate to the Select Rule dialog.

  3. In the Select Rule dialog, choose Low Latency Live.

  4. In the Low Latency Live Rule dialog, select the Low Latency DASH or Low Latency HLS option.

    LLLRuleWithBothOptionsDisplayed.png

  5. Select Add Rule.

Implementing the Low Latency HLS Option

This section provides additional instructions for implementing the Low Latency HLS option.

  • Configure a Cache Key Management Rule
    Configure a Cache Key Management rule to ensure the following query parameters are included in the cache key: _HLS_msn, _HLS_part, and _HLS_skip. This is essential for ensuring accurate content delivery in Low Latency HLS streaming.

    For example:
    cacheKeyMgtLLLHLS.png

    Learn how to Configure a Cache Key Management rule


  • Adjust Origin Read Timeout to Support EXT-X-PRELOAD-HINT
    If you are using the LL-HLS protocol's EXT-X-PRELOAD-HINT functionality, consider adjusting the Read Timeout setting in the origin configuration. Learn how to Configure an Origin

    A client using EXT-X-PRELOAD-HINT can anticipate upcoming segments and request them before they are available from the origin. To prevent timeouts when the client requests a segment before it is ready, set the origin read timeout to 1.5 to 2.5 times the segment duration.

    For example, if segments are 2-4 seconds long, a suitable Read Timeout value is 6 seconds.

    originReadTimeoutLLL1.png


SVTA Component: MI.TrafficType

When you save the configuration version, the hints array with the ll-dash or ll-hls value is added to the MI.TrafficType SVTA component in the configuration JSON. The hint informs the CDN that the traffic it will handle is streaming video using the Low-Latency DASH or Low-Latency HLS protocol so the CDN can apply protocol-specific optimizations.

The following configuration triggers optimized processing for Low-Latency DASH:

{
    "generic-metadata-type": "MI.TrafficType",
    "generic-metadata-value": {
        "traffic-type": "live",
        "hints": [
            "ll-dash"
        ]       
    }
}


This is an example of the MI.TrafficType component configured to trigger optimized processing for Low-Latency HLS, along with the MI.Cache component, as an example of how to set up a Cache Key Management rule to include the required query parameters:

{
    "generic-metadata-type": "MI.TrafficType",
    "generic-metadata-value": {
        "traffic-type": "live",
        "hints": [
            "ll-hls"
        ]
    }
},
{
    "generic-metadata-type": "MI.Cache",
    "generic-metadata-value": {
        "exclude-path-pattern": "",
        "include-query-strings": [
            "_HLS_msn",
            "_HLS_skip",
            "_HLS_part"
        ]
    }  
}



This is an example of the MI.TrafficType component, along with the MI.ComputedCacheKey component, as an example of how to set up an advanced Cache Key Management rule to include the required query parameters:

{
    "generic-metadata-type": "MI.TrafficType",
    "generic-metadata-value": {
        "traffic-type": "live",
        "hints": [
            "ll-hls"
        ]
    }
},
{
    "generic-metadata-type": "MI.ComputedCacheKey",
    "generic-metadata-value": {
        "expression": "req.uri.path . '&' . '?' . req.uri.querykv._HLS_msn . '&' . req.uri.querykv._HLS_skip . '&' . req.uri.querykv._HLS_part"
    }
}