Squid Web Cache Wiki

Squid Web Cache 文档

🔗 功能:延迟池

🔗 延迟池

作者:David Luyer

要启用延迟池功能,请在编译 Squid 前使用 –enable-delay-pools 进行配置。

🔗 此 FAQ 条目的术语

延迟池允许您限制客户端或客户端组的流量,具有各种功能。

这允许使用诸如创建多个类别 1 延迟池并将一定量的带宽分配给给定对象类型(通过使用 URL 正则表达式或类似方法)等选项,以及许多我确定我甚至没想到的其他用途,超越了最初的公平平衡,将相对较小的流量分配给大量用户。

🔗 延迟池存在一些限制

🔗 如何将 Squid 的总带宽限制为,例如,512 Kbps?

delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 64000/64000          # 512 kbits == 64 kbytes per second

1 秒的缓冲区(最大值 = 恢复值 = 64k 字节/秒)是因为请求了限制,并且没有请求对突发流量的响应。如果您希望它能够响应突发流量,请将 aggregate_max 增加到更大的值,这将处理流量突发。建议最大值至少是恢复值的两倍——如果只有一个对象正在下载,有时下载速率会低于请求的吞吐量,因为在需要补充时桶尚未清空。

🔗 如何将单个连接限制为 128 Kbps?

您无法限制单个 HTTP 请求的连接速度。您可以将单个主机限制为某种带宽速率。要限制特定主机,请为其定义一个acl,并使用上面的示例。要限制一组主机,则必须使用类别 2 或 3 的延迟池。例如:

acl only128kusers src 192.168.1.0/24
delay_pools 1
delay_class 1 3
delay_access 1 allow only128kusers
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000

有关这些标签的说明,请参阅配置文件。

上述解决方案提供了一个缓存总共 512kbit 的操作空间,并且每个 IP 地址仅从该池中获得 128kbit。

🔗 您个人如何使用延迟池?

我们有六个本地缓存对等节点,所有节点都带有“proxy-only no-delay”选项,因为它们是连接到快速以太网和微波(ATM)网络的快速机器。

对于本地访问,我们使用 dstdomain ACL,对于延迟池例外,我们也使用 dst ACL,因为延迟池 ACL 处理使用“快速查找”,这意味着(除其他外)它不会等待 DNS 查找(如果需要)。

我们的代理有两个虚拟接口,一个需要学生身份验证才能从不支付流量的部门连接,另一个使用延迟池。此外,主要 Unix 系统的用户可以选择慢速或快速流量,但必须为使用快速缓存的任何流量付费。慢速缓存的访问禁用 Ident 查找,因为它们不需要。慢速访问通过类别 3 延迟池延迟,以在部门之间以及用户之间实现公平性。我们认识到,主机的 Lynx 用户被分组在一个延迟桶中,但他们主要还是查看文本页面,所以这不算严重问题。如果确实存在问题,我们可以将这些主机纳入类别 1 延迟池并为其分配更大的配额。

我更喜欢使用慢速恢复速率和较大的最大速率,优先考虑那些查看网页的人,因为他们个人的桶在他们阅读时会填满,而下载大对象的则处于不利地位。这取决于您认为哪些客户端更重要。此外,一个单独的 8 位网络(一个住宅学院)已额外付费以获得更多带宽。

我配置文件中相关部分是(IP 地址等均已更改)

# ACL definitions
# Local network definitions, domains a.net, b.net
acl LOCAL-NET dstdomain a.net b.net
# Local network; nets 64 - 127.  Also nearby network class A, 10.
acl LOCAL-IP dst 192.168.64.0/18 10.0.0.0/8
# Virtual i/f used for slow access
acl virtual_slowcache myip 192.168.100.13
# All permitted slow access, nets 96 - 127
acl slownets src 192.168.96.0/19
# Special 'fast' slow access, net 123
acl fast_slow src 192.168.123.0/24
# User hosts
acl my_user_hosts src 192.168.100.2/31
# Don't need ident lookups for billing on (free) slow cache
ident_lookup_access allow my_user_hosts !virtual_slowcache
ident_lookup_access deny all
# Security access checks
http_access [...]
# These people get in for slow cache access
http_access allow virtual_slowcache slownets
http_access deny virtual_slowcache
# Access checks for main cache
http_access [...]
# Delay definitions (read config file for clarification)
delay_pools 2
delay_initial_bucket_level 50
delay_class 1 3
delay_access 1 allow virtual_slowcache !LOCAL-NET !LOCAL-IP !fast_slow
delay_access 1 deny all
delay_parameters 1 8192/131072 1024/65536 256/32768
delay_class 2 2
delay_access 2 allow virtual_slowcache !LOCAL-NET !LOCAL-IP fast_slow
delay_access 2 deny all
delay_parameters 2 2048/65536 512/32768

一些部门也使用相同的代码,使用类别 2 延迟池,以便在为不同实验室或学生提供不同性能方面有更大的灵活性。

🔗 哪里还可以了解更多关于延迟池的信息?

这在配置文件中也有很好的记录,并附有示例。Squid 安装时会附带 squid.conf.documented 或 squid.conf.default 文件。如果您不再有记录的配置文件,最新版本可在 squid-cache.org 网站上找到。

类别:功能

导航:站点搜索站点页面类别🔼 向上