让我们设想以下情况
我们有一个 115.2 kbits/s ppp (调制解调器) 互联网连接 (115.2/10 = 11.5 kbytes/s)。 注意:对于 eth 连接(网卡),我们将 115.2 除以 8;对于 ppp,我们除以 10,因为有起始位/停止位 (8 + 1 + 1 = 10)。
我们有一些局域网工作站,其用户一直在进行批量下载。
我们希望网页打开速度快,无论有多少下载正在进行。
我们的互联网接口是 ppp0。
我们的局域网接口是 eth0。
我们的网络是 192.168.1.0/24
信不信由你,限制传入流量是一项简单的任务,你无需阅读大量关于路由或队列算法的书籍。
为了使其工作,我们至少需要 Squid 代理;如果我们想进行微调,我们将不得不熟悉 ipchains 或 iptables 和 CBQ。
为了测试我们的工作成果,我们可以安装 IPTraf。
Squid 可能是 Linux 上可用的最先进的 HTTP 代理服务器。它可以帮助我们通过两种方式节省带宽
第一个是代理服务器的主要特性 —— 它们将下载的网页、图片和其他对象保存在内存或磁盘上。因此,如果两个人请求相同的网页,它不会从互联网下载,而是从本地代理下载。
除了正常的缓存外,Squid 还有一个称为延迟池的特殊功能。 借助延迟池,可以以合理的方式限制互联网流量,具体取决于任何给定 URL 中存在的所谓“魔法词”。 例如,魔法词可以是 '.mp3'、'.exe' 或 '.avi' 等。 URL 的任何不同部分(例如 .avi)都可以定义为魔法词。
这样,我们可以告诉 Squid 以指定的速度下载这些类型的文件(在我们的示例中,大约为 5 kbytes/s)。 如果我们的局域网用户同时下载文件,他们将以大约 5 kbytes/s 的总速度下载,从而为网页、电子邮件、新闻、irc 等留下剩余带宽。
当然,互联网不仅用于通过网页(http 或 ftp)下载文件。 稍后,我们将处理限制 Napster、Realaudio 和其他可能性的带宽。