Search squid archive

Re: Scaling concurrent TCP sessions beyond ephemeral port range

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

 



On 9/8/22 19:41, Praveen Ponakanti wrote:
  * We have a large number of workers (30) to help with handling a
    high RPS. However, TCP session reuse does not seem to be optimal
    even with server_persistent_connections enabled as a new outbound
    session would have to be opened up if the request is proxied by a
    kid worker that doesn’t already have a connection to that
    destination. Is there something that can be done to improve this
    with later versions of squid? Would be glad to help out if anyone
    has some suggestions.

If your only concern is TCP, and the number of servers is large, then it would be possible to share open Squid-server connections among workers by adding code that would exchange open TCP socket descriptors using UDS messages, but I doubt it is worth doing (a lot of complexity but not enough gain). There may also be some advanced/modern kernel tricks that we can teach Squid to use for sharing connections, but, again, I doubt the complexity would be worth the benefits from such reuse.

If most TCP servers are known a priori, and there are few of them, then cache_peer standby=N feature for them might be useful.

If you are dealing with TLS sessions as well, then we should add a shared memory TLS session cache that all workers can tap into.


Cheers,

Alex.

On Tue, Jun 21, 2022 at 2:11 PM Alex Rousskov wrote:

    On 6/19/22 12:48, Praveen Ponakanti wrote:

     > What is the process to have this code patch upstreamed for future
    squid
     > versions?

    In short, just post a quality pull request on GitHub (or find somebody
    who can guide your code towards official acceptance for you). For
    details, please see https://wiki.squid-cache.org/MergeProcedure
    <https://wiki.squid-cache.org/MergeProcedure>


    Thank you,

    Alex.


     > On Fri, May 20, 2022 at 9:31 PM Amos Jeffries
    <squid3@xxxxxxxxxxxxx <mailto:squid3@xxxxxxxxxxxxx>
     > wrote:
     >
     >     On 20/05/22 19:44, Praveen Ponakanti wrote:
     >      > Hi Alex,
     >      >
     >      > Thanks for going through several steps to help mitigate
    src port
     >      > exhaustion. We are looking to achieve 400-500% more
     >      > concurrent connections if we could :) as there is a
     >     significant buffer
     >      > on the available CPU.
     >
     >     Then you require at least 4, maybe 5, IP addresses to handle
    that many
     >     concurrent connections with Squid.
     >
     >
     > We would like to investigate going beyond the ephemeral port
    range for
     > some specific destination IP:PORT addresses. For that it appears
    squid
     > does not round-robin requests if we use multiple
    tcp_outgoing_addresses.
     > We could use ACL’s to pick a different outbound IP based on the
    clients
     > source IP, however that is not very ideal in our environment as our
     > clients aren’t always equally split by subnet. However, if we could
     > split by the client’s source port that might help achieve this. For
     > example something like:
     >
     >
     > acl pool1 clientport 0-32768
     >
     > acl pool2 clientport 32769-65536
     >
     >
     > tcp_outgoing_address 10.1.0.1 pool1
     >
     > tcp_outgoing_address 10.1.0.2 pool2
     >
     >
     > Squid's ACLs currently do not allow filtering by the client's source
     > port. We could look into a separate patch to add this
    functionality to
     > squid’s ACL code if that makes sense. Or is there a better way to
     > achieve this?
     >
     >
     > Thanks
     >
     > Praveen
     >
     >
     >      > The option to use multiple tcp_outoing_addresses appears to be
     >     promising
     >      > along with some tweaks to the TCP timeouts. I guess we
    could use
     >     ACLs to
     >      > pick a different outbound IP based on the requesting client's
     >     prefix. We
     >      > had not considered that option as the ephemeral ports were
    no longer
     >      > available to other applications when squid uses most of
    them with a
     >      > single outbound IP configured. We are also looking to
    modify the
     >     code to
     >      > use the IP_BIND_ADDRESS_NO_PORT sockopt as that could help
    delay
     >     port
     >      > assignment with the bind() call on the outbound TCP
    sessions (to
     >      > hopefully allow access to the 4-tuple on the socket).
     >
     >     Patches welcome.
     >
     >     However, please be aware that use of the 4-tuple is often no
    different
     >     from the 3-tuple since the dst-port is typically identical
    for all
     >     outgoing traffic to a given dst-IP.
     >
     >
     >     Cheers
     >     Amos
     >     _______________________________________________
     >     squid-users mailing list
     > squid-users@xxxxxxxxxxxxxxxxxxxxx
    <mailto:squid-users@xxxxxxxxxxxxxxxxxxxxx>
     >     <mailto:squid-users@xxxxxxxxxxxxxxxxxxxxx
    <mailto:squid-users@xxxxxxxxxxxxxxxxxxxxx>>
     > http://lists.squid-cache.org/listinfo/squid-users
    <http://lists.squid-cache.org/listinfo/squid-users>
     >     <http://lists.squid-cache.org/listinfo/squid-users
    <http://lists.squid-cache.org/listinfo/squid-users>>
     >
     >
     > _______________________________________________
     > squid-users mailing list
     > squid-users@xxxxxxxxxxxxxxxxxxxxx
    <mailto:squid-users@xxxxxxxxxxxxxxxxxxxxx>
     > http://lists.squid-cache.org/listinfo/squid-users
    <http://lists.squid-cache.org/listinfo/squid-users>

    _______________________________________________
    squid-users mailing list
    squid-users@xxxxxxxxxxxxxxxxxxxxx
    <mailto:squid-users@xxxxxxxxxxxxxxxxxxxxx>
    http://lists.squid-cache.org/listinfo/squid-users
    <http://lists.squid-cache.org/listinfo/squid-users>


_______________________________________________
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