Uploaded image for project: 'Traffic Server'
  1. Traffic Server
  2. TS-3995

"[hcoofsr] conditional request, 200 response, send back 304 if possible [crc=304]" breaks akamaihd.net live streaming

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • 5.3.2
    • None
    • Cache, Core, HTTP

    Description

      Caching proxy running ATS 5.3.x (5.3.0, 5.3.1, 5.3.2 all fail) with proxy.config.http.cache.when_to_revalidate = 4 breaks akamaihd.net live streaming.

      The actual problem is that ATS rewrites origin response from 200 to 304, due to If-Modified-Since conditional header in client's request. As per ATS logic object is unmodified, but in fact it is. Most probably player and server somehow play with if-modified-since/last-modified headers pair to communicate position in the live stream. What is obvious is that Last-Modified = If-Modified-Since.

      As result, Akamai player keeps repeating the said request, expecting it's 200, but getting 304 thus live video freezes forever, just a few seconds after start.

      IMHO when proxy.config.http.cache.when_to_revalidate = 4, ATS shall not interfere with origin response in this manner.

      Here's a debug log of request and response headers at different states in a single transaction:

      +++++++++ Incoming Request +++++++++
      -- State Machine Id: 168
      GET http:///z/delayed/indvsa2015_INDVSSATEST1DAY1_1@336263/464_209823ecd2922291-p.bootstrap?g=YCEAMIWDQZQT&hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8&hdcore=3.7.0&plugin=aasp-3.7.0.39.44 HTTP/1.1
      Host: sshds5-lh.akamaihd.net
      Connection: keep-alive
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
      X-Requested-With: ShockwaveFlash/19.0.0.226
      Accept: */*
      DNT: 1
      Referer: http://www.hotstar.com/
      Accept-Encoding: gzip
      Accept-Language: en-US,en;q=0.8,bg;q=0.6
      Cookie: _alid_=PmjLqgcUUqw6TP5gtK/xbg==; hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8
      If-Modified-Since: Thu, 05 Nov 2015 02:30:28 GMT
      
      +++++++++ Proxy's Request +++++++++
      -- State Machine Id: 168
      GET /z/delayed/indvsa2015_INDVSSATEST1DAY1_1@336263/464_209823ecd2922291-p.bootstrap?g=YCEAMIWDQZQT&hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8&hdcore=3.7.0&plugin=aasp-3.7.0.39.44 HTTP/1.1
      Host: sshds5-lh.akamaihd.net
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
      X-Requested-With: ShockwaveFlash/19.0.0.226
      Accept: */*
      DNT: 1
      Referer: http://www.hotstar.com/
      Accept-Encoding: gzip
      Accept-Language: en-US,en;q=0.8,bg;q=0.6
      Cookie: _alid_=PmjLqgcUUqw6TP5gtK/xbg==; hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8
      If-Modified-Since: Thu, 05 Nov 2015 02:30:28 GMT
      
      +++++++++ Proxy's Request after hooks +++++++++
      -- State Machine Id: 168
      GET /z/delayed/indvsa2015_INDVSSATEST1DAY1_1@336263/464_209823ecd2922291-p.bootstrap?g=YCEAMIWDQZQT&hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8&hdcore=3.7.0&plugin=aasp-3.7.0.39.44 HTTP/1.1
      Host: sshds5-lh.akamaihd.net
      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
      X-Requested-With: ShockwaveFlash/19.0.0.226
      Accept: */*
      DNT: 1
      Referer: http://www.hotstar.com/
      Accept-Encoding: gzip
      Accept-Language: en-US,en;q=0.8,bg;q=0.6
      Cookie: _alid_=PmjLqgcUUqw6TP5gtK/xbg==; hdntl=exp=1446809835~acl=%2f*~data=hdntl~hmac=ebaedb13781605ce7f9f26b84e1346a7d43ecf0dfcc99e6b53e32487565ba3f8
      If-Modified-Since: Thu, 05 Nov 2015 02:30:28 GMT
      
      +++++++++ Incoming O.S. Response +++++++++
      -- State Machine Id: 168
      HTTP/1.1 200 OK
      Server: AkamaiGHost
      Mime-Version: 1.0
      Content-Type: video/abst
      Content-Length: 122
      Last-Modified: Thu, 05 Nov 2015 02:30:28 GMT
      Expires: Thu, 05 Nov 2015 11:38:01 GMT
      Cache-Control: max-age=0, no-cache
      Pragma: no-cache
      Date: Thu, 05 Nov 2015 11:38:01 GMT
      Connection: keep-alive
      Set-Cookie: _alid_=PmjLqgcUUqw6TP5gtK/xbg==; path=/z/delayed/indvsa2015_INDVSSATEST1DAY1_1@336263/; domain=sshds5-lh.akamaihd.net
      
      +++++++++ Base Header for Building Response +++++++++
      -- State Machine Id: 168
      HTTP/1.1 200 OK
      Server: AkamaiGHost
      Mime-Version: 1.0
      Content-Type: video/abst
      Content-Length: 122
      Last-Modified: Thu, 05 Nov 2015 02:30:28 GMT
      Expires: Thu, 05 Nov 2015 11:38:01 GMT
      Cache-Control: max-age=0, no-cache
      Pragma: no-cache
      Date: Thu, 05 Nov 2015 11:38:01 GMT
      Connection: keep-alive
      Set-Cookie: _alid_=PmjLqgcUUqw6TP5gtK/xbg==; path=/z/delayed/indvsa2015_INDVSSATEST1DAY1_1@336263/; domain=sshds5-lh.akamaihd.net
      
      +++++++++ Proxy's Response 2 +++++++++
      -- State Machine Id: 168
      HTTP/1.1 304 Not Modified
      Date: Thu, 05 Nov 2015 11:38:01 GMT
      Expires: Thu, 05 Nov 2015 11:38:01 GMT
      Cache-Control: max-age=0, no-cache
      Connection: keep-alive
      
      +++++++++ Proxy's Response (Client Conditionals) +++++++++
      -- State Machine Id: 168
      HTTP/1.1 304 Not Modified
      Date: Thu, 05 Nov 2015 11:38:01 GMT
      Expires: Thu, 05 Nov 2015 11:38:01 GMT
      Cache-Control: max-age=0, no-cache
      Connection: keep-alive
      
      

      Attachments

        Activity

          People

            amc Alan M. Carroll
            ngorchilov Nikolai Gorchilov
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: