Squid Web Cache wiki

Squid Web Cache documentation

๐Ÿ”— Feature: HTTP/1.1 support

๐Ÿ”— Summary

Squid-3.2 claims HTTP/1.1 support. Squid v3.1 claims HTTP/1.1 support but only in sent requests (from Squid to servers).

Earlier Squid versions do not claim HTTP/1.1 support by default because they cannot fully handle Expect:100-continue, 1xx responses, and/or chunked messages.

Co-Advisor tests no longer detect RFC MUST-level violations in Squid trunk when it comes to requirements unrelated to caching. Many caching-related requirements are still violated. The โ€œcompliance percentageโ€ in the project header is essentially a marketing gimmick (i.e., meaningless or misleading but technically correct information). We are actively working on fixing all known violations detected by Co-Advisor.

๐Ÿ”— Checklist

Squid v4+ compliance with RFC MUST-level requirements as of August 2018: HTTP-1.1-Checklist_2018-08-09.ods.

Squid v3 and v2 results collected in August 2013: HTTP-1.1-Checklist_2013-08-21.ods.

The linked document contains the results of automated Co-Advisor HTTP/1.1 compliance tests for several Squid versions. Each test consists of almost 900 individual test cases, targeting various MUSTs in RFC 2616 and 7230-7235. Each Squid v3+ column summarizes the results of several tests. These tests were identical from HTTP point of view. If a given test case showed different results during those tests, the exact test case outcome could not be determined. Such outcomes are marked with a letter โ€˜Uโ€™. All other markings correspond to stable results. Some test cases fail due to lack of an HTTP/1.1 feature support in Squid, incompatibility with the test suite, a test suite bug, or other reasons. Such test cases are marked with question marks. The remaining test case outcomes are successes and violations. Only successful outcomes count towards the โ€œtest cases passedโ€ percentage.

The tests are on vanilla Squid with no special alterations made during build. The 2.7 test appears to have been done with the configurable HTTP/1.1 advertisement to Servers turned on.

๐Ÿ”— Compliance

The following compliance notes apply to Squid-3.2 and later. Older Squid did not even conditionally comply with HTTP/1.1.

๐Ÿ”— Message Syntax and Routing

Specification Document: RFC 7230

  1. HTTP/1.1 requires that we upgrade to our highest supported version. This has been found problematic with certain broken clients and servers.
    • NP: ICY protocol seems to be the main breakage. So ICY support has been implemented natively to fix this.
    • NP: Sharepoint and several other MS products break with authentication loops when different HTTP/1.x versions are advertised on server and client side (as seen with Squid-3.1). This is resolved with Squid-3.2 advertising HTTP/1.1 in both sides.
  2. HTTP/1.1 requires support for chunked encoding in both parsers and composers. This applies to both responses and requests.
    • Both Squid-3 and Squid-2 contain at least response chunked decoding. The chunked encoding portion is available from Squid-3.2 on all traffic except CONNECT requests.
    • Squid is missing support for chunked encoding trailers.
    • Squid is missing support for deflate and gzip transfer encodings.
    • Squid is missing support for HTTP message Trailers.

Specification Document: RFC 2817

  1. Squid is conditionally compliant with this feature. Always ignores the header content and ensures Upgrade header is dropped safely.
  2. Squid with ssl-bump feature enabled will attempt to upgrade CONNECT requests to TLS regardless of the presence of Upgrade headers.

๐Ÿ”— Semantics and Content

Specification Document: RFC 7231

  1. The forwarding path needs to be cleaned up to better separate HTTP messages and actual content, allowing for proper forwarding of 1xx responses. 1xx forwarding has been implemented in Squid-3.2 but the forwarding path still needs further work to make this efficient.
    • This is likely to touch the store API as today all messages go via the store, even if just an interim 1xx response.

Specification Document: RFC 7238

๐Ÿ”— Conditional Requests

Specification Document: RFC 7232

๐Ÿ”— Range Requests

Specification Document: RFC 7233

๐Ÿ”— Caching

Specification Document: RFC 7234

๐Ÿ”— Authentication

Specification Document: RFC 7235

Specification Document: RFC 2617

Specification Document: RFC 4559

Categories: Feature,WantedFeature

Navigation: Site Search, Site Pages, Categories, ๐Ÿ”ผ go up