Search squid archive

Re: Delay Pools question

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

 



Odin Ali wrote:
Hello All,

I would like to configure delay pools to grant 512kbps of bandwidth to
an entire network of users and I would like each connection to share
the 512kbps if the file they are downloading is less than 10Meg but to
have the connection throttled to 80kbps if the file is greater than
10Meg.

How do I accomplish this?

Here is what I'm currently using:

acl Staff_networks src 10.0.0.0/255.0.0.0
delay_pools 1
delay_class 1 2
delay_parameters 2 64000/64000 10000/10000000
delay_access 2 allow Staff_networks


Is this correct? If not what would be the correct configuration and if
it is not too much trouble could a brief explanation be given please.

This is the method I would use to effect this policy (but you have some errors). The alternative (once it becomes possible with code currently in Squid2HEAD) would be to trust the Content_Length header returned by the remote server (if such a header is even returned).

I am familiar with delay pools configuration in general. I just don't
completely understand what the number after the slash in
delay_parameters represents.
That is, in this line:

delay_parameters 2 64000/64000 10000/10000000
                                         ^                    ^

What does the second 64000 and the last 10000000 represent?

With a class 2 delay pool, you have two buckets of chips that you can redeem for a bit from the internet, an aggregate bucket and an individual one. You have to redeem one chip from BOTH buckets to receive an internet bit. Your buckets are refilled at a specific rate (governed by the numbers in question) until it is full. Currently you have specified an aggregate bucket of 512kbits, with a refill rate of 512kbits/second. In other words, the aggregate bucket starts off with 64000 chips in it, and refills at a rate of 64000 chips per second. Everyone that is placed in this delay pool will be contending for chips from this bucket (remember they need one of each type). Your individual bucket starts of with 10000 chips (80kbits) and has a refill rate of 10000000 chips per second (about 1.2mbits/second). This bucket will never empty, as the rate will be limited by the aggregate bucket. To do what you want, you would be better off reversing these two numbers. Start the bucket off with 10000000 chips, and refill it at a rate of 10000 chips per second. While this will not give you the "rate limit large files" exactly, that particular scheme could be circumvented by downloading lots of little parts (each less than 10Meg) of a large file.

acl Staff_networks src 10.0.0.0/255.0.0.0
delay_pools 1
delay_class 1 2
delay_parameters 1 64000/64000 10000000/10000
delay_access 1 allow Staff_networks


In your original example, you have specified delay_parameters and delay_access for delay_pool 2, which is not defined. Being able to name the pools would be a nice feature, as would giving the delay_classes names instead of numbers...

Lastly, the individual bucket in a class 2 delay pool only keys off the last octet in the client IP (in other words, 10.1.1.237 and 10.242.79.237 would share the same individual bucket). If you really serve a /8 network (as your Staff_networks acl alludes), then a class 4 delay pool (from Squid 3) would be a better choice (with the delay_parameters line set to...

delay_parameters 1 64000/64000 -1/-1 -1/-1 10000000/10000

...to put each authenticated user into a different individual bucket).

I created this delay pool by following examples and could not find
detailed explanations for these 2 parameters.

Any help would be appreciated.

I hope the allegory is in some way useful, and I sincerely hope that I have not confused you further.

Thanks.
Odin

Chris

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

  Powered by Linux