Search squid archive

Re: server persistent connections and cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Resuming the above conversation; When looking at the cache log and the code, I find that when peek is done at step 1 and then bumped, the connection gets pinned after httpsPeeked() is called

Log:

2018/07/23 11:40:29.572 kid1| 17,4| AsyncCallQueue.cc(55) fireNext: entering ConnStateData::ConnStateData::httpsPeeked(local=4.16.205.42:33596 remote=96.43.144.26:443        FD 15 flags=1, request=0x559f3b1a6ed0*5)
 40056 2018/07/23 11:40:29.572 kid1| 17,4| AsyncCall.cc(38) make: make call ConnStateData::ConnStateData::httpsPeeked [call261]
 40057 2018/07/23 11:40:29.572 kid1| 45,9| cbdata.cc(419) cbdataReferenceValid: 0x559f3b64b4a8
 40058 2018/07/23 11:40:29.572 kid1| 45,9| cbdata.cc(419) cbdataReferenceValid: 0x559f3b64b4a8
 40059 2018/07/23 11:40:29.572 kid1| 45,9| cbdata.cc(419) cbdataReferenceValid: 0x559f3b64b4a8
 40060 2018/07/23 11:40:29.572 kid1| 45,9| cbdata.cc(419) cbdataReferenceValid: 0x559f3b64b4a8
 40061 2018/07/23 11:40:29.572 kid1| 17,4| AsyncJob.cc(123) callStart: Http1::Server status in: [ job10]
 40062 2018/07/23 11:40:29.572 kid1| 45,9| cbdata.cc(419) cbdataReferenceValid: 0x559f3b64b4a8
 40063 2018/07/23 11:40:29.572 kid1| 33,3| Pipeline.cc(35) front: Pipeline 0x559f3b64b4f0 front 0x559f3b1a9190*2
 40064 2018/07/23 11:40:29.572 kid1| 33,3| Pipeline.cc(35) front: Pipeline 0x559f3b64b4f0 front 0x559f3b1a9190*3
 40065 2018/07/23 11:40:29.572 kid1| 33,3| client_side.cc(4089) unpinConnection:
 40066 2018/07/23 11:40:29.572 kid1| 33,3| client_side.cc(3927) pinConnection: local=4.16.205.42:33596 remote=96.43.144.26:443 FD 15 flags=1

I assume that a pinned connection means a server connection which MUST have a 1:1 relationship with some client connection. Accordingly, if the client terminates, then the server connection should also be closing. From the post: http://lists.squid-cache.org/pipermail/squid-users/2015-June/004298.html  

1. Are there any security reasons behind pinning the connection when a peek is done at Step1 such that server connection get closed if corresponding client closes. Why is that done?

2.a)  I see a stmt "reusing a pinned conn" in the function selectPeerForIntercepted(). From the logs, I dont find this function getting called. Under what scenario will this get called? In other words, what is the scenario where a pinned connection can be reused? 

   b) Which configure option is used to enable #if STRICT_ORIGINAL_DST ?

#if STRICT_ORIGINAL_DST
if (isIntercepted && useOriginalDst) {
        selectPeerForIntercepted();
        // 3.2 does not suppro re-wrapping inside CONNECT.
        // our only alternative is to fake destination "found" and continue with the forwarding.
        startConnectionOrFail();
        return;
    }
#endif


On Wed, Jul 18, 2018 at 5:00 PM, Alex Rousskov <rousskov@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
On 07/18/2018 03:03 PM, Vishali Somaskanthan wrote:

> I had a problem after sending too many requests to the same server where
> my persistence stopped working suddenly.

Please note that there are many reasons why a proxy may close a
connection. For pinned to-server connections (like those created by
SslBump), it may not be possible to open a new to-server connection so
Squid should close both from-client and to-server connections.

In general, a client should not rely on a connections staying persistent
except in some very unusual/special circumstances.


> 1. What is the relationship between the caching and the persistence
> connection established?

Virtually none. Caching decisions are done primarily based on request
and response headers.


> 2. When will squid use cached results and when will it not if the cache
> deny all directive weren't specified.

Squid will deliver a response from the cache when HTTP rules and Squid
configuration allow a hit. The details are too complex to document here.


> 3. However, this didn't work fully. Even with /cache deny all/
> directive, persistence wasn't working when I peeked at the sslBump step
> 1 and then Bumped. 
> Persistence worked only when I directly did sslbump allow all (without
> peeking at first step).

Bumping step should not affect connection persistence AFAICT. I do not
know why it does in your case. This could be a Squid bug or a
misunderstanding. If you can reproduce, Squid logs should contain
reasons for each connection closure (but it may be difficult to find).


HTH,

Alex.



--
Regards,
Vishali Somaskanthan
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users

[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux