]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-3.5.sgml
Merged from trunk
[thirdparty/squid.git] / doc / release-notes / release-3.5.sgml
CommitLineData
f2c46e40
AJ
1<!doctype linuxdoc system>
2<article>
3<title>Squid 3.5.0.0 release notes</title>
4<author>Squid Developers</author>
5
6<abstract>
7This document contains the release notes for version 3.5 of Squid.
8Squid is a WWW Cache application developed by the National Laboratory
9for Applied Network Research and members of the Web Caching community.
10</abstract>
11
12<toc>
13
14<sect>Notice
15<p>
16The Squid Team are pleased to announce the release of Squid-3.5.0.0 for testing.
17
18This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.5/"> or the
19 <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.
20
21While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
22
23We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/BugReporting">
24 for how to submit a report with a stack trace.
25
26<sect1>Known issues
27<p>
28Although this release is deemed good enough for use in many setups, please note the existence of
29<url url="http://bugs.squid-cache.org/buglist.cgi?query_format=advanced&amp;product=Squid&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;version=3.5" name="open bugs against Squid-3.5">.
30
31<sect1>Changes since earlier releases of Squid-3.5
32<p>
33The 3.5 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.5/changesets/" name="viewed here">.
34
35
36<sect>Major new features since Squid-3.4
37<p>Squid 3.5 represents a new feature release above 3.4.
38
39<p>The most important of these new features are:
40<itemize>
41 <item>Support libecap v1.0
4e022adf 42 <item>Authentication helper query extensions
27dad1a3
AJ
43 <item>Support named services
44 <item>Upgraded squidclient tool
45 <item>Helper support for concurrency channels
a5b14a8c 46 <item>Receive PROXY protocol, Versions 1 & 2
f2c46e40
AJ
47</itemize>
48
49Most user-facing changes are reflected in squid.conf (see below).
50
51
52<sect1>Support libecap v1.0
53<p>Details at <url url="http://wiki.squid-cache.org/Features/BLAH">.
54
55<p>The new libecap version allows Squid to better check the version of
56 the eCAP adapter being loaded as well as the version of the eCAP library
57 being used.
58
59<p>Squid-3.5 can support eCAP adapters built with libecap v1.0,
60 but no longer supports adapters built with earlier libecap versions
61 due to API changes.
62
63
4e022adf
AJ
64<sect1>Authentication helper query extensions
65<p>Details at <url url="http://www.squid-cache.org/Doc/config/auth_param/">.
66
67<p>The new <em>key_extras</em> parameter allows sending of additional
68 details to the authentication helper beyond the minimum required for
69 the HTTP authentication. This is primarily intended to allow switching
70 of authentication databases based on criteria such as client IP subnet,
71 Squid receiving port, or in reverse-proxy the requested domain name.
72
73<p>In theory any <em>logformat</em> code may be used, however only the
74 codes which have available details at the time of authentication
75 will send any meaningful detail.
76
77
27dad1a3
AJ
78<sect1>Support named services
79<p>Details at <url url="http://wiki.squid-cache.org/MultipleInstances">.
80<p>Terminology details at <url url="http://wiki.squid-cache.org/Features/SmpScale#Terminology">.
81
82<p>The command line option <em>-n</em> assigns a name to the Squid service
83 instance to be used as a unique identifier for all SMP processes run as
84 part of that instance. This allows multiple instances of Squid service to
85 be run on a single machine without background SMP systems such as shared
86 memory and inter-process communication becoming confused or requiring
87 additional configuration.
88
89<p>A service name is always used. When the <em>-n</em> option is missing
90 from the command line the default service name is <em>squid</em>.
91
92<p>When multiple instances are being run the <em>-n</em> service name is
93 required to target all other options such as <em>-z</em> or <em>-k</em>
94 commands at the correct service.
95
96<p>The squid.conf macro ${service_name} is added to provide the service name
97 of the process parsing the config.
98
99
100<sect1>Upgraded squidclient tool
101<p>The <em>squidclient</em> has begun the process of upgrading to support
102 protocols other than HTTP.
103
104<sect2>Debug levels
105<p>The tool displays the server response message on STDOUT unless the <em>-q</em>
106 command line option is used. Error messages will be output to STDERR.
107 All other possible output is considered debug and output to STDERR using
108 a range of debug verbosity levels (currently 1, 2 and 3).
109
110<p>When the <em>-v</em> command line option is used debugging is enabled.
111 The level of debug display is raised for each repetition of the option.
112
113<sect2>PING
114<p>When <em>--ping</em> is given the tool will send its message repeatedly
115 using whichever protocol that message has been formatted for.
116 Optional parameters to limit the number of pings and their frequency are
117 available.
118
119<p>Older tool versions also provide this feature but require the loop count
120 parameter to be set to enable use of the feature.
121
122<sect2>HTTPS
123<p>When Squid is built with the GnuTLS encryption library the tool is able
124 to open TLS (or SSL/3.0) connections to servers.
125
ae06fcd7 126<p>The <em>--https</em> option enables TLS using default values.
27dad1a3 127
ae06fcd7 128<p>The <em>--cert</em> option specifies a file containing X.509 client
27dad1a3
AJ
129 certificate and private key in PEM format to be loaded for use. Multiple
130 certificates are supported and the option may be used multiple times to
131 load certificates.
132 The default is not to use a client certificate.
133
134<p>The <em>--params</em> option specifies a library specific set of parameters
135 to be sent to the library for configuring the security context.
136 See <url url="http://gnutls.org/manual/html_node/Priority-Strings.html"> for
137 available GnuTLS parameters.
138
139<p>The <em>--trusted-ca</em> option specifies a file in PEM format containing
140 one or more Certificate Authority (CA) certificates used to verify the
141 remote server. This option may be used multiple times to load additional
142 CA certificate lists.
143 The default is not to use any CA, nor trust any server.
144
145<p>Anonymous TLS (using non-authenticated Diffi-Hellman or Elliptic Curve
146 encryption) is available with the <em>--anonymous-tls</em> option.
147 The default is to use X.509 certificate encryption instead.
148
149<p>When performing TLS/SSL server certificates are always verified, the
150 results shown at debug level 3. The encrypted type is displayed at debug
151 level 2 and the connection is used to send and receive the messages
152 regardless of verification results.
153
154
155<sect1>Helper support for concurrency channels
156<p>Helper concurrency greatly reduces the communication lag between Squid
157 and its helpers allowing faster transaction speeds even on sequential
158 helpers.
159
f80c51ec
AJ
160<p>The Digest authentication, Store-ID, and URL-rewrite helpers packaged
161 with Squid have been updated to support concurrency channels. They will
162 auto-detect the <em>channel-ID</em> field and will produce the appropriate
163 response format.
164 With these helpers concurrency may now be set to 0 or any higher number as desired.
27dad1a3
AJ
165
166
a5b14a8c 167<sect1>Receive PROXY protocol, Versions 1 & 2
00d0ce87
AJ
168<p>More info at <url url="http://www.haproxy.org/download/1.5/doc/proxy-protocol.txt">
169
170<p>PROXY protocol provides a simple way for proxies and tunnels of any kind to
171 relay the original client source details without having to alter or understand
172 the protocol being relayed on the connection.
173
a5b14a8c
AJ
174<p>Squid currently supports receiving HTTP traffic from a client proxy using this protocol.
175 An http_port which has been configured to receive this protocol may only be used to
8d757308
AJ
176 receive traffic from client software sending in this protocol.
177 Regular forward-proxy HTTP traffic is not accepted.
00d0ce87 178
a5b14a8c
AJ
179<p>The <em>accel</em> and <em>intercept</em> options are still used to identify the
180 traffic syntax being delivered by the client proxy.
181
9deb9a42 182<p>Squid can be configured by adding an <em>http_port</em>
00d0ce87
AJ
183 with the <em>proxy-surrogate</em> mode flag. The <em>proxy_forwarded_access</em>
184 must also be configured with <em>src</em> ACLs to whitelist proxies which are
185 trusted to send correct client details.
186
a5b14a8c 187<p>Forward-proxy traffic from a client proxy:
00d0ce87
AJ
188<verbatim>
189 http_port 3128 proxy-surrogate
190 proxy_forwarded_access allow localhost
191</verbatim>
192
a5b14a8c
AJ
193<p>Intercepted traffic from a client proxy or tunnel:
194<verbatim>
195 http_port 3128 intercept proxy-surrogate
196 proxy_forwarded_access allow localhost
197</verbatim>
198
199<p><em>Known Issue:</em>
200 Use of <em>proxy-surrogate</em> on <em>https_port</em> is not supported.
9deb9a42 201
00d0ce87 202
f2c46e40
AJ
203<sect>Changes to squid.conf since Squid-3.4
204<p>
205There have been changes to Squid's configuration file since Squid-3.4.
206
207<p>Squid supports reading configuration option parameters from external
208 files using the syntax <em>parameters("/path/filename")</em>. For example:
209<verb>
210 acl whitelist dstdomain parameters("/etc/squid/whitelist.txt")
211</verb>
212
ae06fcd7
AJ
213<p>The squid.conf macro ${service_name} is added to provide the service name
214 of the process parsing the config.
215
f2c46e40
AJ
216<p>There have also been changes to individual directives in the config file.
217
218This section gives a thorough account of those changes in three categories:
219
220<itemize>
221 <item><ref id="newtags" name="New tags">
222 <item><ref id="modifiedtags" name="Changes to existing tags">
223 <item><ref id="removedtags" name="Removed tags">
224</itemize>
225<p>
226
227<sect1>New tags<label id="newtags">
228<p>
229<descrip>
0f5964c3
AJ
230 <tag>collapsed_forwarding</tag>
231 <p>Ported from Squid-2 with no configuration or visible behaviour changes.
232 Collapsing of requests is performed across SMP workers.
233
00d0ce87
AJ
234 <tag>proxy_forwarded_access</tag>
235 <p>Renamed from <em>follow_x_forwarded_for</em> and extended to control more
236 ways for locating the indirect (original) client IP details.
237
0f5964c3
AJ
238 <tag>send_hit</tag>
239 <p>New configuration directive to enable/disable sending cached content
240 based on ACL selection. ACL can be based on client request or cached
241 response details.
242
27dad1a3
AJ
243 <tag>sslproxy_session_cache_size</tag>
244 <p>New directive which sets the cache size to use for TLS/SSL sessions cache.
245
246 <tag>sslproxy_session_ttl</tag>
247 <p>New directive to specify the time in seconds the TLS/SSL session is valid.
248
249 <tag>store_id_extras</tag>
250 <p>New directive to send additional lookup parameters to the configured
251 Store-ID helper program. It takes a string which may contain logformat %macros.
252 <p>The Store-ID helper input format is now:
ae06fcd7 253 <verb>
27dad1a3 254 [channel-ID] url [extras]
ae06fcd7
AJ
255 </verb>
256 <p>The default value for extras is: "%&gt;a/%>A %un %>rm myip=%la myport=%lp"
27dad1a3 257
0f5964c3
AJ
258 <tag>store_miss</tag>
259 <p>New configuration directive to enable/disable caching of MISS responses.
260 ACL can be based on any request or response details.
f2c46e40 261
27dad1a3
AJ
262 <tag>url_rewrite_extras</tag>
263 <p>New directive to send additional lookup parameters to the configured
264 URL-rewriter/redirector helper program. It takes a string which may
265 contain logformat %macros.
266 <p>The url rewrite and redirector helper input format is now:
ae06fcd7 267 <verb>
27dad1a3 268 [channel-ID] url [extras]
ae06fcd7 269 </verb>
27dad1a3
AJ
270 <p>The default value for extras is: "%>a/%>A %un %>rm myip=%la myport=%lp"
271
f2c46e40
AJ
272</descrip>
273
274<sect1>Changes to existing tags<label id="modifiedtags">
275<p>
276<descrip>
277 <tag>acl</tag>
278 <p>New type <em>adaptation_service</em> to match the name of any
279 icap_service, ecap_service, adaptation_service_set, or
280 adaptation_service_chain that Squid has used (or attempted to use)
281 for the HTTP transaction so far.
282
283 <tag>auth_param</tag>
284 <p>New parameter <em>key_extras</em> to send additional parameters to
285 the authentication helper.
286
27dad1a3
AJ
287 <tag>cache_dir</tag>
288 <p>New support for larger than 32KB objects in both <em>rock</em> type
289 cache and shared memory cache.
290 <p>New <em>slot-size=N</em> option for rock cache to specify the database
291 slot/page size when small slot sizes are desired. The default and
292 maximum slot size is 32KB.
293 <p>Removal of old rock cache dir followed by <em>squid -z</em> is required
294 when upgrading from earlier versions of Squid.
295
296 <tag>cache_peer</tag>
297 <p>New <em>standby=N</em> option to retain a set of N open and unused
298 connections to the peer at virtually all times to reduce TCP handshake
299 delays.
300 <p>These connections differ from HTTP persistent connections in that they
301 have not been used for HTTP messaging (and may never be). They may be
302 turned into persistent connections after their first use subject to the
303 same keep-alive critera any HTTP connection is checked for.
304
f2c46e40 305 <tag>forward_max_tries</tag>
ae06fcd7 306 <p>Default value increased to <em>25 destinations</em> to allow better
f2c46e40
AJ
307 contact and IPv4 failover with domains using long lists of IPv6
308 addresses.
309
27dad1a3
AJ
310 <tag>ftp_epsv</tag>
311 <p>Converted into an Access List with allow/deny value driven by ACLs
312 using Squid standard first line wins matching basis.
313 <p>The old values of <em>on</em> and <em>off</em> imply <em>allow all</em>
314 and <em>deny all</em> respectively and are now deprecated.
315 Do not combine use of on/off values with ACL configuration.
316
f2c46e40
AJ
317 <tag>http_port</tag>
318 <p><em>protocol=</em> option altered to accept protocol version details.
319 Currently supported values are: HTTP, HTTP/1.1, HTTPS, HTTPS/1.1
a5b14a8c
AJ
320 <p><em>New option <em>proxy-surrogate</em> to mark ports receiving PROXY
321 protocol version 1 or 2 traffic.
f2c46e40 322
ae06fcd7
AJ
323 <tag>https_port</tag>
324 <p><em>protocol=</em> option altered to accept protocol version details.
325 Currently supported values are: HTTP, HTTP/1.1, HTTPS, HTTPS/1.1
326
f2c46e40
AJ
327 <tag>logformat</tag>
328 <p>New format code <em>%credentials</em> to log the client credentials
329 token.
330 <p>New format code <em>%tS</em> to log transaction start time in
331 "seconds.milliseconds" format, similar to the existing access.log
332 "current time" field (%ts.%03tu) which logs the corresponding
333 transaction finish time.
334
335</descrip>
336
337<sect1>Removed tags<label id="removedtags">
338<p>
339<descrip>
340 <tag>cache_dir</tag>
27dad1a3 341 <p><em>COSS</em> storage type is formally replaced by Rock storage type.
f2c46e40
AJ
342
343 <tag>cache_dns_program</tag>
344 <p>DNS external helper interface has been removed. It was no longer
345 able to provide high performance service and the internal DNS
346 client library with multicast DNS cover all modern use-cases.
347
27dad1a3
AJ
348 <tag>cache_peer</tag>
349 <p><em>idle=</em> replaced by <em>standby=</em>.
350 <p>NOTE that standby connections are started earlier and available in
351 more circumstances than squid-2 idle connections were. They are
352 also spread over all IPs of the peer.
353
f2c46e40
AJ
354 <tag>dns_children</tag>
355 <p>DNS external helper interface has been removed.
356
00d0ce87
AJ
357 <tag>follow_x_forwarded_for</tag>
358 <p>Renamed <em>proxy_forwarded_access</em> and extended.
359
f2c46e40
AJ
360</descrip>
361
362
363<sect>Changes to ./configure options since Squid-3.4
364<p>
365There have been some changes to Squid's build configuration since Squid-3.4.
366
367This section gives an account of those changes in three categories:
368
369<itemize>
370 <item><ref id="newoptions" name="New options">
371 <item><ref id="modifiedoptions" name="Changes to existing options">
372 <item><ref id="removedoptions" name="Removed options">
373</itemize>
374
375
376<sect1>New options<label id="newoptions">
377<p>
378<descrip>
b2f0a375
AJ
379 <tag>BUILDCXX=</tag>
380 <p>Used when cross-compiling Squid.
381 <p>The path and name of a compiler for building cf_gen and related
382 tools used in the compile process.
383
384 <tag>BUILDCXXFLAGS=</tag>
385 <p>Used when cross-compiling Squid.
386 <p>C++ compiler flags used for building cf_gen and related
387 tools used in the compile process.
388
27dad1a3
AJ
389 <tag>--without-gnutls</tag>
390 <p>New option to explicitly disable use of GnuTLS encryption library.
391 Use of this library is auto-enabled if v3.1.5 or later is available.
392 <p>It is currently only used by the squidclient tool.
393
f2c46e40
AJ
394</descrip>
395
396<sect1>Changes to existing options<label id="modifiedoptions">
397<p>
398<descrip>
4f07726a
AJ
399 <tag>--enable-icap-client</tag>
400 <p>Deprecated. ICAP client is now auto-enabled.
401 Use --disable-icap-client to disable if you need to.
f2c46e40
AJ
402
403</descrip>
404</p>
405
406<sect1>Removed options<label id="removedoptions">
407<p>
408<descrip>
f2c46e40
AJ
409 <tag>--disable-internal-dns</tag>
410 <p>DNS external helper interface has been removed. It was no longer
411 able to provide high performance service and the internal DNS
412 client library with multicast DNS cover all modern use-cases.
413
c41db002
AJ
414 <tag>--enable-ssl</tag>
415 <p>Removed. Use <em>--with-openssl</em> to enable OpenSSL library support.
416
ae06fcd7
AJ
417 <tag>--with-coss-membuf-size</tag>
418 <p>The COSS cache type has been removed.
419 It has been replaced by <em>rock</em> cache type.
420
f2c46e40
AJ
421</descrip>
422
423
424<sect>Regressions since Squid-2.7
425
426<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-3.5
427
428<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
429
430<sect1>Missing squid.conf options available in Squid-2.7
431<p>
432<descrip>
433 <tag>broken_vary_encoding</tag>
434 <p>Not yet ported from 2.6
435
436 <tag>cache_peer</tag>
f2c46e40
AJ
437 <p><em>monitorinterval=</em> not yet ported from 2.6
438 <p><em>monitorsize=</em> not yet ported from 2.6
439 <p><em>monitortimeout=</em> not yet ported from 2.6
440 <p><em>monitorurl=</em> not yet ported from 2.6
441
442 <tag>cache_vary</tag>
443 <p>Not yet ported from 2.6
444
f2c46e40
AJ
445 <tag>error_map</tag>
446 <p>Not yet ported from 2.6
447
448 <tag>external_refresh_check</tag>
449 <p>Not yet ported from 2.7
450
451 <tag>location_rewrite_access</tag>
452 <p>Not yet ported from 2.6
453
454 <tag>location_rewrite_children</tag>
455 <p>Not yet ported from 2.6
456
457 <tag>location_rewrite_concurrency</tag>
458 <p>Not yet ported from 2.6
459
460 <tag>location_rewrite_program</tag>
461 <p>Not yet ported from 2.6
462
463 <tag>refresh_pattern</tag>
464 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
465 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
466 <p><em>negative-ttl=</em> not yet ported from 2.7
467
468 <tag>refresh_stale_hit</tag>
469 <p>Not yet ported from 2.7
470
471 <tag>update_headers</tag>
472 <p>Not yet ported from 2.7
473
474</descrip>
475
476</article>