Squid is a highly flexible, widely used Internet proxy caching server
for Linux and UNIX platforms. Squid caches HTTP and FTP URLs, gopher
objects, and DNS look-ups, for lower latency and faster performance.
Squid can also distribute an Internet connection to other computers within the
network, connected either over an intranet or dial-up, DSL, ISDN, or
cable lines, for example.
Squid is generally regarded as more difficult to configure and
maintain than many of its commercial counterparts. Still, Squid is
very popular among users ranging from small businesses to large
ISPs. Available at no cost off the Web, Squid offers a wide
range of advanced features.
“The user experience is enhanced with Squid, because some pages are
delivered more quickly. Also, to a certain extent our bandwidth is
reduced,” says Alex Vas, CEO of Vasnet Communications, an ISP in
India. Vasnet is supporting 5,000 dial-up users on Squid and other
no-cost Linux software, operating on IBM Netfinity servers.
“It’s very easy to rapidly and cheaply get a PC+Linux+Squid
up-and-running at any point where you find http traffic congestion. It
also scales up! Only the largest money-is-no-object caches seem to be
running anything else,” says Donovan Barda of Minkirri, an Australian
ISP that runs Linux.
When deployed for peer-to-peer caching, Squid allows multiple caches
to be configured in hierarchical relationships, through the use of ICP
(Internet cache protocol). Peer-to-peer caching can come into play
either for distributing load, or for sharing proxy hits among multiple
At Minkirri, Baarda is currently using peer-to-peer caching for
load-balancing multiple links to different upstream proxies.
Squid can also generate and exchange cache digests, which index
objects stored in the cache for sharing among multiple peers.
Caching can be tuned along more than 100 different criteria. To spread
response handling across multiple interfaces, for instance, users can
modify outgoing ports. For more rapid performance, users can enable
and configure memory pools.
Other major features of Squid include transparent caching, and the
ability to be used as a simultaneous forward and reverse Web proxy. As
a reverse Web proxy, Squid acts as a “stand-in” for the content
In transparent caching, Web requests are intercepted by the proxy
server transparently. Client software thinks it is talking to the
originating server, when it is actually talking to the proxy
server. Transparent caching requires routing or redirecting Squid
through the use of either a switch or (starting with Squid 2.3) a
Cisco router running WCCP 1.0.
Squid requires plenty of RAM and disk space. For a 1 to 1.5 Mbps
Internet connection, the recommended configuration calls for an 800MHz
processor, 256 megabytes of RAM, a 30 GB 7200 RPM disk, and a NIC
(network interface card).
Unlike commercial products, Squid can’t be configured through either a
GUI or a command line interface. Instead, the user must edit either
the etc/squid.conf or mime.conf file. Squid also doesn’t support SNMP
e-mail or pager notification, a standard feature in commercial
Squid can be monitored, though, through the use of either its own
Cache Manager, an SNMP NMS, or local processors. Through Cache
Manager, users can look up HTTP request rates, service times, and
traffic rates, for instance. NMSes can query the Squid MIB for
software version, memory, disk space, and a number of other criteria.
Many tools are already available for expanding upon Squid’s basic
features. Squid2MySQL is an accounting system for Squid. Another tool,
authored by Baarda, is pyredir, is a redirector for Squid implemented
Through open source development, other new capabilities are also on
the way. Current projects include a new storage interface, satellite
link enhancements, and a Windows ports of Squid, for instance.
- The Squid Homepage: http://www.squid-cache.org/
- Squid2MySQL: http://evc.fromru.com/squid2mysql/
- The Cacheability Engine: a tool for analyzing the potential benefits of cacheing web
- Webmin: a useful, web-based administrative tool for configuring many Linux and UNIX
including squid: http://www.webmin.com/webmin/