Search squid archive

Re: Re: squid qos_flows - copying mark from client side to upstream request?

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

 



Hi


So for example I mark clients that have passed a captive portal test
with some mark, I need that mark copying up to requests coming from
squid so that I know they effectively come from a validated client
As Amos says, this is probably the wrong way to do it. If you want to
see an example of how I did it, then check out this page:

http://andybev.com/index.php/PortalShaper

I use iptables to drop (or redirect) all packets that are received from
clients that have not passed the captive portal.

Technically I don't just track pass/fail...

Users have a choice of gateways to use the internet via (each will have a cost). Their choice of gateway is marked on packets from their machine, we then route through the appropriate gateway based on the connection mark (hence why I need it passed upstream through squid)

Also we mark each connection with a unique per user mark so that iptables can account for the traffic they consume and bill them. Technically this could be done inside squid, but all other traffic is accounted in iptables and there is some hairy calculations needed to bill differently for different gateways, so I don't want to reproduce this in multiple locations

Hence I think I need to implement the reverse of the current code?


Now, as for implementation, I don't have the code in front of me, but I think I noticed there is a single code path to open a new upstream connection? At present this applies a packet mark based on tcp_outgoing_mark. Is the client connection information available at this point, so that I could mark the connection at this point based on the client connection mark?

However, I think squid uses persistent connections to upstream? (I will always have another proxy as my upstream). If so then actually I need to reset the mark for each request? Where would be the correct location to put the marking code in this case, ie I guess where the packet is sent to the upstream socket? (I guess I need to be careful about pipelining also?)

Thanks for your thoughts

Ed W






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

  Powered by Linux