Squid internals Flow of a typical request fwdStart() first checks the miss ACL (through aclCheckFast()) If the request can be forwarded we handle the internal requests (icons, urns, cachemgr) If the request is an external request we hand it off to peerSelect() to select a peer peerSelect() checks to see whether we can satisfy this request from a peer or whether we need to go directly to the source (checking the ACLs as we go) If we do not find a peer then we pick an origin server (its complex) and try a connection through fwdConnectStart()