Let's imagine the following situation: We have 115,2 kbits/s ppp (modem) internet link (115,2/10
= 11,5 kbytes/s). Note: with eth connections
(network card) we would divide 115,2 by 8; with ppp we divide by 10, because
of start/stop bits (8 + 1 + 1 = 10). We have some LAN stations and their users are doing bulk downloads
all the time. We want web pages to open fast, no matter how
many dowloads are happening. Our internet interface is ppp0. Our LAN interface is eth0. Our network is 192.168.1.0/24
Believe it or not, shaping the incoming traffic is an easy
task and you don't have to read tons of books about routing or queuing algorithms. To make it work, we need at least Squid proxy; if we want to fine tune
it, we will have to get familiar with ipchains or iptables and CBQ. To test our efforts, we can install IPTraf. Squid is probably the most advanced HTTP proxy server available for Linux.
It can help us save bandwidth in two ways: The first is a main characteristic of proxy servers -- they keep downloaded
web pages, pictures, and other objects in memory or on a disk. So, if two people are
requesting the same web page, it isn't downloaded from the internet,
but from the local proxy. Apart from normal caching, Squid has a special feature called delay
pools. Thanks to delay pools, it is possible to limit internet traffic in a
reasonable way, depending on so-called 'magic words', existing in any given
URL. For example, a magic word could be '.mp3', '.exe' or '.avi', etc.
Any distinct part of a URL (such as .avi) can be defined as a magic word.
With that, we can tell the Squid to download these kinds of files at a
specified speed (in our example, it will be about 5 kbytes/s). If our
LAN users download files at the same time, they will be downloaded
at about 5 kbytes/s altogether, leaving remaining bandwidth for web pages,
e-mail, news, irc, etc. Of course, the Internet is not only used for downloading files via web
pages (http or ftp). Later on, we will deal with limiting bandwidth for Napster,
Realaudio, and other possibilities. |
|