]> git.ipfire.org Git - thirdparty/squid.git/blob - doc/release-notes/release-3.2.sgml
Merged from parent (trunk r11691, v3.2.0.11+).
[thirdparty/squid.git] / doc / release-notes / release-3.2.sgml
1 <!doctype linuxdoc system>
2 <article>
3 <title>Squid 3.2.0.11 release notes</title>
4 <author>Squid Developers</author>
5
6 <abstract>
7 This document contains the release notes for version 3.2 of Squid.
8 Squid is a WWW Cache application developed by the National Laboratory
9 for Applied Network Research and members of the Web Caching community.
10 </abstract>
11
12 <toc>
13
14 <sect>Notice
15 <p>
16 The Squid Team are pleased to announce the release of Squid-3.2.0.11 for testing.
17
18 This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.2/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.
19
20 While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
21
22 We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/BugReporting"> for how to submit a
23 report with a stack trace.
24
25 <sect1>Known issues
26 <p>
27 Although this release is deemed good enough for use in many setups, please note the existence of <url url="http://bugs.squid-cache.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.2&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" name="open bugs against Squid-3.2">.
28
29 <sect1>Changes since earlier releases of Squid-3.2
30 <p>
31 The 3.2 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.2/changesets/" name="viewed here">.
32
33 <sect>Major new features since Squid-3.1
34 <p>Squid 3.2 represents a new feature release above 3.1.
35
36 <p>The most important of these new features are:
37 <itemize>
38 <item>Fixed CVE-2009-0801 : NAT interception vulnerability to malicious clients.
39 <item>SMP scalability
40 <item>Helper Multiplexer and On-Demand
41 <item>Helper Name Changes
42 <item>Multi-Lingual manuals
43 <item>Solaris 10 pthreads Support (Experimental)
44 <item>Surrogate/1.0 protocol extensions to HTTP
45 <item>Logging Infrastructure Updated
46 <item>Client Bandwidth Limits
47 <item>Better eCAP support
48 <item>Cache Manager access changes
49 </itemize>
50
51 Most user-facing changes are reflected in squid.conf (see below).
52
53
54 <sect1>Fixed CVE-2009-0801 : NAT interception vulnerability to malicious clients.
55 <p>Details in Advisory <url url="http://www.squid-cache.org/Advisories/SQUID-2011_1.txt" name="SQUID-2011:1">
56
57 <p>Squid locates the authority-URL details available in an HTTP request as
58 defined by RFC 2616 and validates that all found representations are
59 <em>textually</em> equivalent. In the case of intercepted traffic the
60 client destination IP is also compared to the Host: authority domains
61 DNS entries.
62
63 <p>When the Host: authority contradicts another authority source Squid will log
64 "SECURITY ALERT: Host: header forgery detected" and respond with a 409 Conflict
65 error status page.
66
67
68 <sect1>SMP scalability
69 <p>The new "workers" squid.conf option can be used to launch multiple worker
70 processes and utilize multiple CPU cores. The overall intent is to make
71 multiple workers look like one to an outside observer, while providing
72 knobs to customize each worker behavior if needed.
73
74 <p>By default, all worker processes are configured identically and do what a
75 single Squid instance would have done. Squid.conf macro substitutions and
76 conditionals (see below) can be used to customize individual worker
77 configurations. In the paragraphs below, "can share" implies "will share by
78 default".
79
80 <p>Workers can share HTTP, HTTPS, SNMP, ICP, and HTCP listening addresses.
81 Configuration related to ICP and HTCP clients must be adjusted to avoid
82 source address conflicts: Modify the IP address and/or the port used for
83 the protocol. Workers do not share DNS addresses by default because the OS
84 assigns each worker a unique DNS port.
85
86 <p>Workers can share logs.
87
88 <p>Workers cannot share caches, for now. Cache_dir options must be adjusted to
89 point each disk-caching worker to its own disk area. ICP and HTCP responses
90 are based on the responding worker cache state. Overall, SMP Squid behaves
91 as a Squid farm behind a load-balancer with no cache affinity awareness.
92 This is perfect for non-caching Squids but inappropriate for Squids that
93 must coordinate caching activities (in-between environments are in a gray
94 area requiring case-by-case analysis).
95
96 <p>Cache manager statistics are reported from a worker point of view, for now.
97 Though some reports are combined. SNMP statistics are combined across all
98 workers.
99
100 <p>Startup, reconfiguration, shutdown, and log rotation are handled as for a
101 monolithic Squid. Abnormally terminated workers are restarted while
102 other workers continue serving traffic.
103
104 <sect2>Squid.conf macros and conditionals
105 <p>Added support for process_name and process_number macros as well as simple
106 if-statement conditionals in squid.conf. These features allow individual
107 worker customization in SMP mode. For details, search for "Conditional
108 configuration" and "SMP-Related Macros" sections in squid.conf.documented.
109
110
111 <sect1>Helper Multiplexer
112 <p>The helper multiplexer's purpose is to relieve some of the burden
113 Squid has when dealing with slow helpers. It does so by acting as a
114 middleman between squid and the actual helpers, talking to Squid via
115 the multiplexed concurrent variant of the helper protocol and to the
116 helpers via the non-concurrent variant.
117
118 <p>Helpers are started on demand, and in theory the muxer can handle up to
119 1k helpers per instance. It's up to squid to decide how many helpers
120 to start.
121
122 <p>The muxer knows nothing about the actual messages being passed around,
123 and as such can't really (yet?) compensate for broken helpers.
124 It is not yet able to manage dying helpers, but it will.
125
126 <p>To configure the multiplexer add its binary name (usually /usr/share/libexec/helper-mux.pl)
127 in front of the name of whichever helper is being multiplexed. It takes the helper binary
128 path and parameters as its own command parameters. The <em>concurrency</em> setting already
129 existing in Squid is used to configure how many child helpers it may run.
130
131 <p>For example, a traditional configration is
132 <verb>
133 url_rewrite_program /your/redirector.sh
134 url_rewrite_children 5
135 </verb>
136 the alternative multiplexer configuration is:
137 <verb>
138 url_rewrite_program /usr/share/libexec/helper-mux.pl /your/redirector.sh
139 url_rewrite_children 1 concurrency=5
140 </verb>
141
142 <p>Helpers which are already concurrent protocol enabled gain little benefit from the multiplexer
143 on most systems. However on some systems where Squid spawning helpers causes excess memory usage
144 the reduction in direct helper spawned by Squid can result in a great reduction in resource use.
145
146 <p>The helper can be controlled using various signals:
147 <itemize>
148 <item>SIGHUP: dump the state of all helpers to STDERR
149 </itemize>
150
151
152 <sect1>Helpers On-Demand
153 <p>Traditionally Squid has been configured with a fixed number of helpers and started them during
154 it's start and reconfigure phases. This forces the hard configuration problem of how many helpers
155 will be needed to be solved before starting Squid in production use.
156
157 <p>The on-demand helpers feature allows greater flexibility and resolves this problem by allowing
158 maximum, initial and idle thresholds to be configured. Squid will start the initial set during
159 start and reconfigure phases. However over the operational use new helpers up to the maxium will
160 be started as load demands. The idle threshold determins how many more helpers to start if the
161 currently running set is not enough to handle current request loads.
162
163 <p>For example, a traditional configration is
164 <verb>
165 auth_param ntlm /usr/libexec/squid/ntlm_auth
166 auth_param ntlm children 200
167 </verb>
168 the alternative on-demand configuration could be:
169 <verb>
170 auth_param ntlm /usr/libexec/squid/ntlm_auth
171 auth_param ntlm children 200 startup=10 idle=2
172 </verb>
173
174 <p>The example still permits up to 200 helpers to be running at once under peak traffic loads.
175 But only starts 10 when Squid is initialized resulting in a faster boot up.
176 When client requests threaten to overload the running helpers an additional 2 will be started.
177
178 <p>NOTE: if no <em>startup</em> and <em>idle</em> values are specified the traditional behaviour
179 of starting the maximum number of helpers will occur.
180
181
182 <sect1>Helper Name Changes
183 <p>To improve the understanding of what each helper does and where it should be used the helper binaries
184 which are bundled with Squid have undergone a naming change in this release.
185
186 <p>Below is a list of the old helper names and what their names have changed to.
187 For several helpers the directory name used in --enable-X-helpers configure option has also changed.
188
189 <sect2>Basic Authentication protocol helpers
190 <p><itemize>
191 <item>squid_db_auth - basic_db_auth - Retrieve authentication details from a simple SQL database table.
192 <item>getpwnam_auth - basic_getpwname_auth - Authenticate with local system user accounts.
193 <item>squid_ldap_auth - basic_ldap_auth - Authenticate with LDAP user accounts.
194 <item>MSNT-multi-domain - basic_msnt_multi_domain_auth - Authenticate with any one of multiple Windows Domain Controllers.
195 <item>msnt_auth - basic_msnt_auth - Authenticate with Windows Domain Controllers selected by username.
196 <item>ncsa_auth - basic_ncsa_auth - Authenticate with NCSA httpd-style password file.
197 <item>yp_auth - basic_nis_auth - Authenticate with NIS security system.
198 <item>pam_auth - basic_pam_auth - Authenticate with the system PAM infrastructure.
199 <item>pop3.pl - basic_pop3_auth - Authenticate with a mail server POP3/SMTP credentials.
200 <item>squid_radius_auth - basic_radius_auth - Authenticate with RADIUS.
201 <item>squid_sasl_auth - basic_sasl_auth - Authenticate with SASL.
202 <item>smb_auth - basic_smb_auth - Authenticate with Samba SMB.
203 <item>mswin_sspi - basic_sspi_auth - Authenticate with a Windows Domain Controller using SSPI.
204 </itemize>
205
206 <sect2>Digest Authentication protocol helpers
207 <p><itemize>
208 <item>digest_pw_auth - digest_file_auth - Authenticate against credentials stored in a simple text file.
209 </itemize>
210
211 <sect2>External ACL helpers
212 <p><itemize>
213 <item>mswin_check_ad_group - ext_ad_group_acl - Check logged in users Group membership using Active Directory.
214 <item>ip_user_check - ext_file_userip_acl - Restrict users to cetain IP addresses, using a text file backend.
215 <item>squid_kerb_ldap - ext_kerberos_ldap_group_acl - Check logged in Kerberos or NTLM users Group membership using LDAP.
216 <item>squid_ldap_group - ext_ldap_group_acl - Check logged in users Group membership using LDAP.
217 <item>mswin_check_lm_group - ext_lm_group_acl - Check logged in users Group membership using LanManager.
218 <item>squid_session - ext_session_acl - Maintain a session cache of client identifiers (usually IP address).
219 <item>squid_unix_group - ext_unix_group_acl - Check logged in users Group membership using local UNIX groups.
220 <item>wbinfo_group.pl - ext_wbinfo_group_acl - Check logged in users Group membership using wbinfo.
221 </itemize>
222
223 <sect2>Negotiate Authentication protocol helpers
224 <p><itemize>
225 <item>squid_kerb_auth - negotiate_kerberos_auth - Authenticate with Kerberos servers.
226 <item>mswin_sspi - negotiate_sspi_auth - Authenticate with a Windows Domain Controller using SSPI.
227 <item>negotiate_wrapper - negotiate_wrapper_auth - Split Negotiate traffic between Kerberos and NTLM helpers.
228 </itemize>
229
230 <sect2>NTLM Authentication protocol helpers
231 <p><itemize>
232 <item>no_check.pl - Deprecated. - Use the faster and less easily decrypted ntlm_fake_auth instead.
233 <item>fakeauth_auth - ntlm_fake_auth - Perform NTLMSSP to recover the username but don't verify the password.
234 <item>ntlm_auth - ntlm_smb_lm_auth - Perform SMB LanManager domain-less authentication over NTLM protocol.
235 <item>mswin_ntlm_auth - ntlm_sspi_auth - Perform NTLMSSP authentication using Windows native Security Support Provider Interface API.
236 </itemize>
237
238 <sect2>URL re-write helpers
239 <p>This group of helpers have been bundled to demonstrate how to code URL re-writers:
240 <itemize>
241 <item>url_fake_rewrite - Accept various url_rewrite details and log the input.
242 </itemize>
243
244
245 <sect1>Multi-Lingual manuals
246 <p>The man(8) and man(1) pages bundled with Squid are now provided online for all
247 versions and beginning with 3.2 they are available in languages other than English (where translated).
248
249 <p>Details in <url url="http://wiki.squid-cache.org/Features/QualityOfService" name="The Squid wiki">
250
251 <p>3.1 began the Internationalization of Squid with the public facing error pages.
252 This move begins the Localization of the internal administrator facing manuals.
253
254
255 <sect1>Solaris 10 pthreads Support (Experimental)
256 <p>Automatic detection and use of the pthreads library available from Solaris 10
257
258 <p>The result of this addition means that faster more efficient AUFS cache storage mechanisims
259 are now available in Solaris 10.
260
261 <p>Support is experimental at this stage due to lack of feedback on the results of enabling it.
262 We recommend giving AUFS a try for faster disk storage and encourage feedback.
263
264
265 <sect1>Surrogate/1.0 protocol extensions to HTTP
266 <p>The <em>Surrogate</em> extensions to HTTP protocol enable an origin web server to specify separate
267 cache controls for a reverse proxy acting on its behalf. Previously this was closely tied with the ESI
268 feature support in Squid. This release opens Surrogate support to all reverse proxies.
269
270 <p>Reverse proxy requests sent on to the web server include the HTTP header <em>Surrogate-Capabilities:</em>
271 specifying the capabilities of the reverse proxy along with an ID which can be used to target reponses with
272 a <em>Surrogate-Control:</em> HTTP header used instead of the <em>Cache-Control:</em> header.
273
274 <p>The default surrogate ID is generated automatically from the Squid site-unique hostname as found by the
275 automatic detection or manual configuration of <em>visible_hostname</em> although can be configured
276 separately with the <em>httpd_accel_surrogate_id</em> option.
277
278 <p><em>Security Considerations:</em> Websites sould be careful of accepting any surrogate ID.
279 Older releases of Squid leak the Surrogate-Control headers to external servers.
280 This 3.2 series of Squid will now prevent this leakage of its own ID destined responses, however it is possible
281 and for some uses desirable to receive external reverse-proxies <em>Surrogate-Capabilities:</em> headers.
282
283 <p><em>NOTE:</em> Several operating system distributions historically package Squid with a forced value of
284 <em>visible_hostname localhost</em>. If this is done on a Surrogate enabled install a manual re-configuration
285 is required to prevent an unacceptable surrogate ID of 'localhost' being generated.
286
287
288 <sect1>Logging Infrastructure Updated
289 <p>The advanced logging modules introduced in Squid-2.7 are now available from Squid-3.2.
290
291 <p>This feature is documented at http://wiki.squid-cache.org/Features/LogModules
292
293 <p>The new infrastructure currently supports several different channels types (modules) ranging from
294 direct filesystem logging (stdio, daemon) to network logging (syslog, UDP and TCP). The daemon logging
295 interface allows for a custom helper to be written to process logs in real-time.
296
297 <p>Upgrading: the <em>access_log</em> was previously logge via what is now called the <em>stdio</em> module.
298 This is still supported and used by default if no module is named. For best performance particularly in SMP
299 environments we recommend the <em>daemon</em> be used. The provided <em>log_file_daemon</em> helper
300 performs the traditional logging to local filesystem.
301
302 <p>Additional to this the cache.log can now be limited to a smaller number of files stored.
303 Traditionally cache.log.N has been fixed at the same number of rotated files as access.log.N through the
304 <em>logfile_rotate</em> setting. The <em>debug_options</em> setting can now be used to configure the number
305 of debug cache.log files to rotate through with a <em>rotate=N</em> option. This is particularly useful for
306 logging a single cache.log at relatively high debug levels on a high-traffic system. Or one which is
307 required to store a long period of access.log and needs to conserve disk space.
308
309 <p>The referer_log and useragent_log directives have been converted to built-in log formats.
310 These logs are now created using an access_log line with the format "referrer" or "useragent".
311
312
313 <sect1> Client Bandwidth Limits
314 <p>In mobile environments, Squid may need to limit Squid-to-client bandwidth
315 available to individual users, identified by their IP addresses. The IP
316 address pool can be as large as a /10 IPv4 network (4 million unique IP
317 addresses) and even larger in IPv6 environments. On the other hand, the code
318 should support thousands of connections coming from a single IP (e.g.,
319 a child proxy).
320
321 <p>The implementation is based on storing bandwidth-related "bucket" information
322 in the existing "client database" hash (client_db.cc). The old code already
323 assigned each client IP a single ClientInfo object, which satisfies the
324 client-side IP-based bandwidth pooling requirements. The old hash size is
325 increased to support up to 32K concurrent clients if needed.
326
327 <p>Client-side pools are configured similarly to server-side ones, but there is
328 only one pool class. See client_delay_pools,
329 client_delay_initial_bucket_level, client_delay_parameters, and
330 client_delay_access in squid.conf. The client_delay_access matches the client
331 with delay parameters. It does not pool clients from different IP addresses
332 together.
333
334 <p>Special care is taken to provide fair distribution of bandwidth among clients
335 sharing the same bucket (i.e., clients coming from the same IP address).
336 Multiple same-IP clients competing for bandwidth are queued using FIFO
337 algorithm. If a bucket becomes empty, the first client among those sharing
338 the bucket is delayed by 1 second before it can attempt to receive more
339 response data from Squid. This delay may need to be lowered in
340 high-bandwidth environments.
341
342
343 <sect1>Better eCAP Suport
344 <p>Support for libecap version 0.2.0 has been added with this series of Squid. Bringing
345 better support for body handling, and logging.
346
347
348 <sect1>Cache Manager access changes
349 <p>The Squid Cache Manager has previously only been accessible under the cache_object://
350 URL scheme. Which has restricted its reporting to tools which can send arbitrary
351 URI to the proxy.
352
353 <p>This version of Squid now provides access through the http:// and https:// URL schemes
354 allowing web browsers access without having to use the cachemgr.cgi gateway and enabling
355 the use of HTTPS security were desired.
356
357 <p>The cache manager is available under the path prefix /squid-internal-mgr/. For example
358 the URL http://example/com/squid-internal-mgr/menu will bring up the manager menu. This
359 means there are some configuration changes required to lock down manager access.
360 The <em>manager</em> ACL needs changing to:
361 <verb>
362 acl manager url_regex -i ^cache_object:// ^https?://[^/]+/squid-internal-mgr/
363 </verb>
364
365
366 <sect>Changes to squid.conf since Squid-3.1
367 <p>
368 There have been changes to Squid's configuration file since Squid-3.1.
369
370 This section gives a thorough account of those changes in three categories:
371
372 <itemize>
373 <item><ref id="newtags" name="New tags">
374 <item><ref id="modifiedtags" name="Changes to existing tags">
375 <item><ref id="removedtags" name="Removed tags">
376 </itemize>
377 <p>
378
379 <sect1>New tags<label id="newtags">
380 <p>
381 <descrip>
382 <tag>adaptation_send_client_ip</tag>
383 <p>Same as depricated icap_send_client_ip
384 but applies to both ICAP and eCAP.</p>
385
386 <tag>adaptation_send_username</tag>
387 <p>Same as depricated icap_send_client_username
388 but applies to both ICAP and eCAP.</p>
389
390 <tag>adaptation_uses_indirect_client</tag>
391 <p>Same as depricated icap_uses_indirect_client
392 but applies to both ICAP and eCAP.</p>
393
394 <tag>client_delay_pools</tag>
395 <p>New setting for client bandwith limits to specifies the number
396 of client delay pools used.
397
398 <tag>client_delay_initial_bucket_level</tag>
399 <p>New setting for client bandwith limits to determine the initial
400 bucket size as a percentage of max_bucket_size from
401 client_delay_parameters.
402
403 <tag>client_delay_parameters</tag>
404 <p>New setting for client bandwith limits to configures client-side
405 bandwidth limits.
406
407 <tag>client_delay_access</tag>
408 <p>New setting for client bandwith limits to determines the
409 client-side delay pool for the request.
410
411 <tag>client_dst_passthru</tag>
412 <p>New setting to disable extra Host: header security on interception proxies.
413 Impacts cache integrity/reliability and client browser security.
414 <p><em>IMPORTANT:</em> disabling this directive only allows Squid to change the
415 destination IP to another source indicated by Host: domain DNS or
416 cache_peer configuration. It <em>does not</em> affect Host: validation.
417
418 <tag>cpu_affinity_map</tag>
419 <p>New setting for SMP support to map Squid processes onto specific CPU cores.
420
421 <tag>connect_retries</tag>
422 <p>Replacement for <em>maximum_single_addr_tries</em>, but instead of only applying to hosts with single addresses.
423 This directive applies to all hosts, extending the number of connection attempts to each IP address.
424
425 <tag>dns_packet_max</tag>
426 <p>New setting to configure maximum number of bytes packet size to advertise via EDNS.
427 Set to "none" (the initial default) to disable EDNS large packet support.
428
429 <tag>else</tag>
430 <p>Part of conditional SMP support syntax. see <em>if</em>
431
432 <tag>endif</tag>
433 <p>Part of conditional SMP support syntax. see <em>if</em>
434
435 <tag>eui_lookup</tag>
436 <p>Whether to lookup the EUI or MAC address of a connected client.
437
438 <tag>icap_206_enable</tag>
439 <p>New option to toggle whether the ICAP 206 (Partial Content) responses extension.
440 Default is on.
441
442 <tag>if</tag>
443 <p>New conditional syntax for SMP multiple-worker.
444 If-statements can be used to make configuration directives depend on conditions.
445 <p>The else part is optional. The keywords <em>if</em>, <em>else</em> and <em>endif</em>
446 must be typed on their own lines, as if they were regular configuration directives.
447
448 <tag>max_stale</tag>
449 <p>Places an upper limit on how stale content Squid will serve from the cache if cache validation fails
450
451 <tag>memory_cache_mode</tag>
452 <p>Controls which objects to keep in the memory cache (cache_mem)
453 <verb>
454 'always' Keep most recently fetched objects in memory (default)
455
456 'disk' Only disk cache hits are kept in memory, which means
457 an object must first be cached on disk and then hit
458 a second time before cached in memory.
459
460 network Only objects fetched from network is kept in memory
461 </verb>
462
463 <tag>logfile_daemon</tag>
464 <p>Ported from 2.7. Specify the file I/O daemon helper to run for logging.
465
466 <tag>tproxy_uses_indirect_client</tag>
467 <p>Controls whether the indirect client address found in the X-Forwarded-For
468 header is used for spoofing instead of the directly connected client address.
469 Requires both <em>--enable-follow-x-forwarded-for</em> and <em>--enable-linux-netfilter</em>
470
471 <tag>workers</tag>
472 <p>Number of main Squid processes or "workers" to fork and maintain.
473 In SMP mode, each worker does nearly all what a single Squid daemon
474 does (e.g., listen on http_port and forward HTTP requests).
475 <verb>
476 0: "no daemon" mode, like running "squid -N ..."
477 1: "no SMP" mode, start one main Squid process daemon (default)
478 N: start N main Squid process daemons (i.e., SMP mode)
479 </verb>
480
481 <tag>write_timeout</tag>
482 <p>New setting to limit time spent waiting for data writes to be confirmed.
483 </descrip>
484
485 <sect1>Changes to existing tags<label id="modifiedtags">
486 <p>
487 <descrip>
488 <tag>access_log</tag>
489 <p>New <em>stdio</em> module to send log data directly from Squid to a disk file.
490 This is the historic behaviour of Squid before logging modules were introduced, and
491 remains the default used when no module is selected.
492 It is recommended to upgrade logging to the faster <em>daemon:</em> module.
493 <p>New <em>daemon</em> module to send each log line as text data to a file I/O daemon handling the slow disk I/O.
494 New installs, or installs with no logs configured explicitly will use this module by default.
495 <p>New <em>tcp</em> module to send each log line as text data to a TCP receiver.
496 <p>New <em>udp</em> module to send each log line as text data to a UDP receiver.
497 <p>New format <em>referrer</em> to log with the format prevously used by referer_log directive.
498 <p>New format <em>useragent</em> to log with the format prevously used by useragent_log directive.
499
500 <tag>acl : random, localip, localport</tag>
501 <p>New type <em>random</em>. Pseudo-randomly match requests based on a configured probability.
502 <p>Renamed <em>myip</em> to <em>localip</em>. It matches the IP which the client connected to.
503 <p>Renamed <em>myport</em> to <em>localport</em>. It matches the port which the client connected to.
504 <p>The <em>localip</em>/<em>localport</em> differ from earlier releases where they matched a mix of
505 of an invalid IP and port 0, the client destination IP/port or the Squid listening IP/port.
506 This definition is now consistent across all modes of traffic received by Squid.
507 <p>The <em>manager</em> ACL requires adjustment to cover new cache manager access:
508 <verb>
509 acl manager url_regex -i ^cache_object:// ^https?://[^/]+/squid-internal-mgr/
510 </verb>
511
512 <tag>auth_param</tag>
513 <p>New options for Basic, Digest, NTLM, Negotiate <em>children</em> settings.
514 <em>startup=N</em> determins minimum number of helper processes used.
515 <em>idle=N</em> determines how many helper to retain as buffer against sudden traffic loads.
516 <em>concurrency=N</em> previously called <em>auth_param ... concurrency</em> as a separate option.
517 <p>Removed Basic, Digest, NTLM, Negotiate <em>auth_param ... concurrency</em> setting option.
518
519 <tag>cache_dir</tag>
520 <p><em>min-size</em> option ported from Squid-2
521
522 <tag>cache_peer</tag>
523 <p><em>htcp-*</em> options collapsed into <em>htcp=</em> taking an optional comma-separated list of flags.
524 The old form is deprecated but still accepted.
525
526 <tag>clientside_mark</tag>
527 <p>New configuration parameter <em>clientside_mark</em>
528 <p>Allows packets leaving Squid on the client side to be marked with a Netfilter mark value in the same way as the existing clientside_tos feature.
529 <p>This feature is only available for Netfilter environments.
530
531 <tag>deny_info</tag>
532 <p>Support URL format tags. For dynamically generated URL in denial redirect.
533 <p>Support the full range of 200-599 HTTP status codes.
534 3xx status only available when redirecting to a URI.
535 Other status only available when supplying an error template body.
536
537 <tag>external_acl_type</tag>
538 <p>New format tags and option parameters:
539 <p><em>%SRCEUI48</em> EUI-48 / MAC address of client from ARP lookup.
540 <p><em>%SRCEUI64</em> EUI-64 of clients with SLAAC address.
541 <p><em>%EXT_LOG</em> log= message returned by previous external ACL calls. An updated version may be returned.
542 <p><em>%EXT_TAG</em> tag= value returned by previous external ACL calls. Tag may not be altered once set.
543 <p><em>children-max=N</em> determins maximum number of helper processes used.
544 <p><em>children-startup=N</em> determins minimum number of helper processes used.
545 <p><em>children-idle=N</em> determines how many helper to retain as buffer against sudden traffic loads.
546 <p>Deprecated <em>children=N</em> in favor of <em>children-max=N</em>.
547
548 <tag>http_port act-as-origin vhost no-vhost</tag>
549 <p><em>act-as-origin</em> ported from 2.7.
550 This option corrects several HTTP header issues when operating as a reverse proxy and cache.
551 Notably the externally visible aging of objects stored in the server-side cache.
552 <p><em>vhost</em> is deprecated. <em>accel</em> mode, reverse proxy, now defaults to always enable HTTP/1.1 virtual domain support.
553 <p><em>no-vhost</em> option is added to disable the new reverse proxy behaviour.
554
555 <tag>icap_send_client_ip</tag>
556 <p>Deprecated in favor of adaptation_send_client_ip
557 which applies to both ICAP and eCAP.</p>
558
559 <tag>icap_send_client_username</tag>
560 <p>Deprecated in favor of adaptation_send_username
561 which applies to both ICAP and eCAP.</p>
562
563 <tag>icap_uses_indirect_client</tag>
564 <p>Deprecated in favor of adaptation_uses_indirect_client
565 which applies to both ICAP and eCAP.</p>
566
567 <tag>logformat</tag>
568 <p><em>%&lt;a</em> Server or Peer IP address from the last server connection (next hop).
569 <p><em>%&gt;bs</em> Number of HTTP-equivalent message body bytes received from the next hop.
570 <p><em>icap::%&gt;bs</em> Number of message body bytes received from the ICAP server.
571 <p><em>%sn</em> Unique sequence number per log line. Ported from 2.7
572 <p><em>%&gt;eui</em> EUI logging (EUI-48 / MAC address for IPv4, EUI-64 for IPv6).
573 Both EUI forms are logged in the same field. Type can be identified by length or byte delimiter.
574 <p><em>%err_code</em> The ID of an error response served by Squid or a similar internal error identifier
575 <p><em>%err_detail</em> Additional err_code-dependent error information.
576 <p><em>%&gt;la</em> Rename of %la to indicate being a client connection detail.
577 <p><em>%&gt;lp</em> Rename of %lp to indicate being a client connection detail.
578 <p><em>%&lt;p</em> Server or Peer port number from the last server connection (next hop).
579
580 <tag>memory_pools_limit</tag>
581 <p>Memory limits have been revised and corrected from 3.1.4 onwards.
582 <p>Please check and update your squid.conf to use the text <em>none</em> for no limit instead of the old 0 (zero).
583 <p>All users upgrading need to be aware that from Squid-3.3 setting this option to 0 (zero) will mean zero bytes of memory get pooled.
584
585 <tag>qos_flows</tag>
586 <p>New options <em>mark</em> and <em>tos</em> and <em>miss</em>
587 <p><em>tos</em> retains the original QOS functionality of the IP header TOS field.
588 <p><em>mark</em> offers the same functionality, but with a netfilter mark value.
589 <p>These options should be placed immediately after qos_flows.
590 <p>The <em>tos</em> value is optional in order to maintain backwards compatability.
591 <p>The preserve-miss functionality is available with the <em>mark</em> option and requires no kernel patching.
592 It does, however, require libnetfilter_conntrack.
593 This will be included by default if available (see the --without-netfilter-conntrack configure option for more details).
594 <p><em>miss</em> sets a value for a cache miss. It is available for both the tos and mark options and takes precedence over the preserve-miss feature.
595
596 <tag>range_offset_limit</tag>
597 <p>Added ACL support for control over when the limit applies and when it is avoided.
598
599 <tag>refresh_pattern</tag>
600 <p>New option <em>max-stale=</em> to provide a maximum staleness factor. Squid won't
601 serve objects more stale than this even if it failed to validate the object.
602
603 <tag>tcp_outgoing_address</tag>
604 <p>This parameter is now compatible with persistent server connections.
605 The IPv6 magic 'to_ipv6' hacks needed in 3.1 are now no longer necessary.
606
607 <tag>tcp_outgoing_mark</tag>
608 <p>New configuration parameter <em>tcp_outgoing_mark</em>
609 <p>Allows packets leaving Squid on the server side to be marked with a Netfilter mark value in the same way as the existing tcp_outgoing_tos feature.
610 <p>This feature is only available for Netfilter environments.
611
612 <tag>tcp_outgoing_tos</tag>
613 <p>This parameter is now compatible with persistent server connections.
614
615 <tag>windows_ipaddrchangemonitor</tag>
616 <p>Now only available to be set in Windows builds.
617
618 <tag>url_rewrite_children</tag>
619 <p>New options <em>startup=N</em>, <em>idle=N</em>, <em>concurrency=N</em>
620 <itemize>
621 <item>startup=N allow finer tuning of how many helpers are started initially.
622 <item>idle=N allow fine tuning of how many helper to retain as buffer against sudden traffic loads.
623 <item>concurrency=N was previously called url_rewrite_concurrency as a distinct directive.
624 </itemize>
625
626 </descrip>
627
628
629 <sect1>Removed tags<label id="removedtags">
630 <p>
631 <descrip>
632 <tag>emulate_httpd_log</tag>
633 <p>Replaced by <em>common</em> format option on an <em>access_log</em> directive.
634
635 <tag>forward_log</tag>
636 <p>Obsolete.
637
638 <tag>ftp_list_width</tag>
639 <p>Obsolete.
640
641 <tag>ignore_expect_100</tag>
642 <p>Obsolete.
643
644 <tag>log_fqdn</tag>
645 <p>Obsolete. Replaced by automatic detection of the %>A logformat tag.
646
647 <tag>log_ip_on_direct</tag>
648 <p>Obsolete. Use a custom log with <em>%&lt;A</em> format tag to receive server FQDN or peer name.
649
650 <tag>maximum_single_addr_tries</tag>
651 <p>The behaviour controlled by this directive is no longer possible.
652 It has been replaced by <em>connect_retries</em> option which operates a little differently.
653
654 <tag>referer_log</tag>
655 <p>Replaced by the <em>referrer</em> format option on an <em>access_log</em> directive.
656
657 <tag>url_rewrite_concurrency</tag>
658 <p>Replaced by url_rewrite_children ... concurrency=N option.
659
660 <tag>useragent_log</tag>
661 <p>Replaced by the <em>useragent</em> format option on an <em>access_log</em> directive.
662 </descrip>
663
664
665 <sect>Changes to ./configure options since Squid-3.1
666 <p>
667 There have been some changes to Squid's build configuration since Squid-3.1.
668
669 This section gives an account of those changes in three categories:
670
671 <itemize>
672 <item><ref id="newoptions" name="New options">
673 <item><ref id="modifiedoptions" name="Changes to existing options">
674 <item><ref id="removedoptions" name="Removed options">
675 </itemize>
676
677
678 <sect1>New options<label id="newoptions">
679 <p>
680 <descrip>
681 <tag>--enable-auth-basic[=HELPERS]</tag>
682 <p>Specified without any parameters all helpers will be auto-built.
683 <p>With an explicit empty list <em>=""</em> protocol support will be built but no helpers.
684 <p>With an explicit list protocol support and just those helpers will be built.
685
686 <tag>--enable-auth-digest[=HELPERS]</tag>
687 <p>Specified without any parameters all helpers will be auto-built.
688 <p>With an explicit empty list <em>=""</em> protocol support will be built but no helpers.
689 <p>With an explicit list protocol support and just those helpers will be built.
690
691 <tag>--enable-auth-negotiate</tag>
692 <p>Specified without any parameters all helpers will be auto-built.
693 <p>With an explicit empty list <em>=""</em> protocol support will be built but no helpers.
694 <p>With an explicit list protocol support and just those helpers will be built.
695
696 <tag>--enable-auth-ntlm</tag>
697 <p>Specified without any parameters all helpers will be auto-built.
698 <p>With an explicit empty list <em>=""</em> protocol support will be built but no helpers.
699 <p>With an explicit list protocol support and just those helpers will be built.
700
701 <tag>--enable-build-info</tag>
702 <p>Add an additional string in the output of "squid -v".
703
704 <tag>--enable-eui</tag>
705 <p>Enable Support for handling EUI operations.
706 This includes ARP lookups for MAC (EUI-48) addresses and the ACL arp type tests.
707
708 <tag>--enable-log-daemon-helpers</tag>
709 <p>Build helpers for logging I/O.
710
711 <tag>--enable-url-rewrite-helpers</tag>
712 <p>Build helpers for some basic URL-rewrite actions. For use by url_rewrite_program.
713 If omitted or set to =all then all bundled helpers that are able to build will be built.
714 If set to a specific list of helpers then only those helpers will build.
715 Currently one demo helper <em>fake</em> is provided in shell and C++ forms to demonstrate
716 the helper protocol usage and provide exemplar code.
717
718 <tag>--with-swapdir=PATH</tag>
719 <p>Location to display in documentation for the default cache.
720 Updated to indicate /var/cache/squid in accordance with the filesystem layout standards.
721 Squid-3 no longer builds an implicit disk cache at this location, so the change is not expected
722 to have any effect on existing builds other than fixing some mysterious lack of core dumps.
723 The old /var/cache location was often non-writable which blocked core dumps creation.
724
725 <tag>--without-netfiler-conntrack</tag>
726 <p>Disables the libnetfilter_conntrack library being used for the new qos_flows option <em>mark</em>.
727 default is to auto-detect the library and use where available.
728 </descrip>
729
730 <sect1>Changes to existing options<label id="modifiedoptions">
731 <p>
732 <descrip>
733 <tag>--enable-auth</tag>
734 <p>No longer takes a list of arguments. This option now is restricted to building with or without for authentication.
735 <p>The new <em>--enable-auth-X</em>/<em>--disable-auth-X</em> parameters determine which authentication protocols and helpers are built.
736
737 </descrip>
738 </p>
739
740 <sect1>Removed options<label id="removedoptions">
741 <p>
742 <descrip>
743 <tag>--enable-arp-acl</tag>
744 <p>Replaced by --enable-eui
745
746 <tag>--enable-auth-basic-helpers</tag>
747 <p>replaced by <em>--enable-auth-basic</em>.
748
749 <tag>--enable-auth-digest-helpers</tag>
750 <p>replaced by <em>--enable-auth-digest</em>.
751
752 <tag>--enable-auth-negotiate-helpers</tag>
753 <p>replaced by <em>--enable-auth-negotiate</em>.
754
755 <tag>--enable-auth-ntlm-helpers</tag>
756 <p>replaced by <em>--enable-auth-ntlm</em>.
757
758 <tag>--enable-referer-log</tag>
759 <p>Obsolete.
760
761 <tag>--enable-useragent-log</tag>
762 <p>Obsolete.
763
764 </descrip>
765
766
767 <sect>Options Removed since Squid-2
768
769 <p>Some squid.conf and ./configure options which were available in Squid-2.6 and Squid-2.7 are made obsolete in Squid-3.2.
770
771 <sect1>Removed squid.conf options since Squid-2.7
772 <p>
773 <descrip>
774 <tag>auth_param</tag>
775 <p><em>blankpassword</em> option for basic scheme removed.
776
777 <tag>authenticate_ip_shortcircuit_access</tag>
778 <p>Not safe for general use.
779 An external_acl_type helper may be used to bypass authentication if that is suitable.
780
781 <tag>authenticate_ip_shortcircuit_ttl</tag>
782 <p>Not safe for general use.
783 An external_acl_type helper may be used to bypass authentication if that is suitable.
784
785 <tag>cache_peer</tag>
786 <p><em>http11</em> Obsolete.
787
788 <tag>external_acl_type</tag>
789 <p>Format tag <em>%{Header}</em> replaced by <em>%>{Header}</em>
790 <p>Format tag <em>%{Header:member}</em> replaced by <em>%>{Header:member}</em>
791
792 <tag>header_access</tag>
793 <p>Replaced by <em>request_header_access</em> and <em>reply_header_access</em>
794
795 <tag>http_port</tag>
796 <p><em>no-connection-auth</em> replaced by <em>connection-auth=[on|off]</em>. Default is ON.
797 <p><em>transparent</em> option replaced by <em>intercept</em>
798 <p><em>http11</em> obsolete.
799
800 <tag>http_access2</tag>
801 <p>Replaced by <em>adapted_http_access</em>
802
803 <tag>httpd_accel_no_pmtu_disc</tag>
804 <p>Replaced by <em>http_port disable-pmtu-discovery=</em> option
805
806 <tag>incoming_rate</tag>
807 <p>Obsolete.
808
809 <tag>redirector_bypass</tag>
810 <p>Replaced by <em>url_rewrite_bypass</em>
811
812 <tag>server_http11</tag>
813 <p>Obsolete.
814
815 <tag>upgrade_http0.9</tag>
816 <p>Obsolete.
817
818 <tag>zph_local</tag>
819 <p>Replaced by <em>qos_flows local-hit=</em>
820
821 <tag>zph_mode</tag>
822 <p>Obsolete.
823
824 <tag>zph_option</tag>
825 <p>Obsolete.
826
827 <tag>zph_parent</tag>
828 <p>Replaced by <em>qos_flows parent-hit=</em>
829
830 <tag>zph_sibling</tag>
831 <p>Replaced by <em>qos_flows sibling-hit=</em>
832
833 </descrip>
834
835 <sect1>Removed squid.conf options since Squid-2.6
836 <p>
837 <descrip>
838 <tag>cache_dir</tag>
839 <p><em>read-only</em> option replaced by <em>no-store</em>.
840
841 </descrip>
842
843 <sect1>Removed ./configure options since Squid-2.7
844 <p>
845 <descrip>
846 <tag>--enable-coss-aio-ops</tag>
847 <p>Obsolete.
848
849 <tag>--enable-devpoll</tag>
850 <p>Replaced by automatic detection.
851
852 <tag>--enable-dlmalloc=LIB</tag>
853 <p>Obsolete.
854
855 <tag>--enable-epoll</tag>
856 <p>Replaced by automatic detection.
857
858 <tag>--enable-forward-log</tag>
859 <p>Obsolete.
860
861 <tag>--enable-heap-replacement</tag>
862 <p>Obsolete.
863
864 <tag>--enable-htcp</tag>
865 <p>Obsolete. Enabled by default.
866
867 <tag>--enable-large-cache-files</tag>
868 <p>Obsolete.
869
870 <tag>--enable-mempool-debug</tag>
871 <p>Obsolete.
872
873 <tag>--enable-multicast-miss</tag>
874 <p>Obsolete.
875
876 <tag>--enable-poll</tag>
877 <p>Replaced by automatic detection.
878
879 <tag>--enable-select</tag>
880 <p>Replaced by automatic detection.
881
882 <tag>--enable-select-simple</tag>
883 <p>Replaced by automatic detection.
884
885 <tag>--enable-snmp</tag>
886 <p>Obsolete. Enabled by default.
887
888 <tag>--enable-truncate</tag>
889 <p>Obsolete.
890
891 <tag>--disable-kqueue</tag>
892 <p>Obsolete. Disabled by default.
893
894 </descrip>
895
896
897 <sect>Regressions since Squid-2.7
898
899 <p>Some squid.conf and ./configure options which were available in Squid-2.7 are not yet available in Squid-3.2
900
901 <p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
902
903 <sect1>Missing squid.conf options available in Squid-2.7
904 <p>
905 <descrip>
906 <tag>acl</tag>
907 <p><em>urllogin</em> option not yet ported from 2.6
908 <p><em>urlgroup</em> option not yet ported from 2.6
909
910 <tag>broken_vary_encoding</tag>
911 <p>Not yet ported from 2.6
912
913 <tag>cache_dir</tag>
914 <p><em>COSS</em> storage type is lacking stability fixes from 2.6
915 <p>COSS <em>overwrite-percent=</em> option not yet ported from 2.6
916 <p>COSS <em>max-stripe-waste=</em> option not yet ported from 2.6
917 <p>COSS <em>membufs=</em> option not yet ported from 2.6
918 <p>COSS <em>maxfullbufs=</em> option not yet ported from 2.6
919
920 <tag>cache_peer</tag>
921 <p><em>idle=</em> not yet ported from 2.7
922 <p><em>monitorinterval=</em> not yet ported from 2.6
923 <p><em>monitorsize=</em> not yet ported from 2.6
924 <p><em>monitortimeout=</em> not yet ported from 2.6
925 <p><em>monitorurl=</em> not yet ported from 2.6
926
927 <tag>cache_vary</tag>
928 <p>Not yet ported from 2.6
929
930 <tag>collapsed_forwarding</tag>
931 <p>Not yet ported from 2.6
932
933 <tag>error_map</tag>
934 <p>Not yet ported from 2.6
935
936 <tag>external_acl_type</tag>
937 <p><em>%ACL</em> format tag not yet ported from 2.6
938 <p><em>%DATA</em> format tag not yet ported from 2.6
939
940 <tag>external_refresh_check</tag>
941 <p>Not yet ported from 2.7
942
943 <tag>http_port</tag>
944 <p><em>urlgroup=</em> not yet ported from 2.6
945
946 <tag>ignore_ims_on_miss</tag>
947 <p>Not yet ported from 2.7
948
949 <tag>location_rewrite_access</tag>
950 <p>Not yet ported from 2.6
951
952 <tag>location_rewrite_children</tag>
953 <p>Not yet ported from 2.6
954
955 <tag>location_rewrite_concurrency</tag>
956 <p>Not yet ported from 2.6
957
958 <tag>location_rewrite_program</tag>
959 <p>Not yet ported from 2.6
960
961 <tag>refresh_pattern</tag>
962 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
963 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
964 <p><em>negative-ttl=</em> not yet ported from 2.7
965
966 <tag>refresh_stale_hit</tag>
967 <p>Not yet ported from 2.7
968
969 <tag>storeurl_access</tag>
970 <p>Not yet ported from 2.7
971
972 <tag>storeurl_rewrite_children</tag>
973 <p>Not yet ported from 2.7
974
975 <tag>storeurl_rewrite_concurrency</tag>
976 <p>Not yet ported from 2.7
977
978 <tag>storeurl_rewrite_program</tag>
979 <p>Not yet ported from 2.7
980
981 <tag>update_headers</tag>
982 <p>Not yet ported from 2.7
983
984 <tag>zero_buffers</tag>
985 <p>Not yet ported from 2.7
986
987 </descrip>
988
989 <sect1>Missing ./configure options available in Squid-2.7
990 <p>
991 <descrip>
992 <tag>--without-system-md5</tag>
993
994 </descrip>
995
996 </article>