Ik beheer ook een netwerk in een studentenhuis (20 clients) en heb o.a. lopen worstelen met het verdelen en limiteren van bandbreedte. Een eerste stap was het installeren van een proxy server. Dit heeft welliswaar niks met bandbreedte management te maken, maar vermindert eerder het verkeer van het internet. Zelf heb ik geexperimenteerd met de proxy server
SQUID, vooral omdat het gratis is en veel functionaliteit heeft. SQUID werkt onder alle BSD en Linux distributies. Je kan het ook met enige moeite werkend krijgen onder NT, maar of je dat wilt is een tweede. Aangezien het alleen met HTTP, FTP en gopher data objecten werkt, helpt het je dus niet met het beperken van dataverkeer van P2P clients. Er schijnen wel caches ontwikkeld te zijn danwel ontwikkeld te worden voor P2P clients zoals KaZaA. Eentje heet
PeerCache die draait onder (free)BSD, maar op de site is vooralsnog geen demo versie beschikbaar en volgens mij is het ook niet voor thuisgebruik bedoeld. Er staan in elk geval geen prijzen op de site vermeld.
Ik heb heel lang lopen zoeken naar verschillende mogelijkheden om dit aan de server zijde te regelen en ben o.a. op de volgende mogelijkheden gestuit. Ik neem dus niet mogelijkheden zoals
netlimiter mee, omdat dit actie aan de client zijde vereist.
a) Hardwarematig via een
packeteer. of de duurdere professionele managable routers. Voor een studentenhuis niet betaalbaar.
b) Je hebt windows 2000 Server. Dan kun je een vaste bandbreedte per subnet opgeven, onder meer via
Subnet Bandwidth Manager. Verschillende computers een verschillend subnet. Dit is ook niet ideaal, omdat je per gebruiker bandbreedte kan toewijzen (i.c.m. een goed geconfigureerde DHCP server), maar niet per poort, tijdstip v.d. dag, etc. Verder is Windows 2000 Server ook niet goedkoop, maar een studentenhuis weet vast wel een goedkoop adresje voor een licentie
c)Je kan een server met het programma
Total Traffic Control gebruiken. Duur programma, maar niet zo duur als een packeteer. je kan hier heel veel instellen, ook allerlei dingen waar je niks mee te maken wilt hebben. Ik heb de demo versie geprobeerd, maar kwam niet erg ver.
d) QoS (Quality of Service) in Windows 2K/XP. Een halve oplossing, want je kan geen vaste bandbreedte specificeren per computer (zeg computer a krijgt 50 kB down, 25 kb up). en de programma's moeten QoS ondersteunen.
e) Winroute. In winroute kun je aan traffic shaping doen. Dat wil zeggen dat je FTP verkeer voorrang geeft boven HTTP ofzo. Maar wederom kun je geen absolute waarden invoeren of waarden per gebruiker specificeren.
Ik ben uiteindelijk bij Linux uitgekomen, omdat het met Linux mogelijk is per gebruiker (IP adres), per poort, zowel up- als downstream, en per tijdstip van de dag bandbreedtes op verschillende manieren te verdelen. Alles staat uitgebreid beschreven in
Advanced Linux Routing HOWTO en verscheidene andere HOWTO's.
A small list of things that are possible:
*Throttle bandwidth for certain computers
*Throttle bandwidth TO certain computers
*Help you to fairly share your bandwidth
*Protect your network from DoS attacks
*Protect the Internet from your customers
*Multiplex several servers as one, for load balancing or enhanced availability
*Restrict access to your computers
*Limit access of your users to other hosts
*Do routing based on user id (yes!), MAC address, source IP address, port, type of service, time of day or content
Currently, not many people are using these advanced features. This is for several reasons. While the provided documentation is verbose, it is not very hands-on. Traffic control is almost undocumented.
Deze functionaliteit zit standaard ingebakken in de Linux kernel > versie 2.? en vind je dus terug bij alle grote distributies, zoals
Mandrake,
Debian,
Slackware, etc. Nu is er ooit een script geschreven dat dit voor je regelt, omdat het nog vrij ingewikkeld is:
CBQ.init (gebaseerd dus op Class Based Queeing). Ik heb het aan de praat gekregen, maar tot op de dag van vandaag blijf ik ermee prutsen, omdat het toch niet helemaal doet wat het moet doen. Nu moet ik wel toegeven dat we echt hele brakke oude hardware gebruiken voor de server en regelmatig hebben we vage crashes.
CBQ.init is a shell script that allows for easy setup of simple CBQ-based traffic control on Linux. CBQ (Class Based Queueing) is part of the Linux QoS implementation, which is accesible via utilities from the iproute2 package. This bash script parses human-readable config files and does all needed manipulation with 'tc' linux kernel utilities
Het werkt sowieso niet helemaal nauwkeurig, omdat
CBQ works by making sure that the link is idle just long enough to bring down the real bandwidth to the configured rate. To do so, it calculates the time that should pass between average packets.
Ik zou ook wel eens over de ervaring van anderen met CBQ en CBQ.init willen praten, omdat ik ermee blijf prutsen en wat vooor scripts gebruiken jullie. Heeft iemand echt goed werkende, alles omvattende scripts die hij/zij wil delen?
Er is ook een
GUI voor CBQ.init, een grafisch frontend dat de configuratie makkelijk zou moeten maken. Het grote nadeel is dat het veel minder flexibel is en ook minder functionaliteit kent.
Overigens is er ook zoiets als H.T.B. (Hierarchichal token bucket) traffic control:
HTB uses the concepts of tokens and buckets along with the class-based system and filters to allow for complex and granular control over traffic. With a complex borrowing model, HTB can perform a variety of sophisticated traffic control techniques
HTB.init is een shell script dat afgeleid is van CBQ.init, maar dan gebaseerd op een H.T.B. ipv C.B.Q. discipline. H.T.B. zit nog niet in de officiele Linux kernel en heeft ook een gepatchde versie van iproute2 nodig. Het schijnt wel beter te moeten werken, omdat het ontwikkeld is om de zwakheden van C.B.Q. aan te pakken. Je hoort er weinig over en ik heb het ook nog nooit gebruikt zien worden.
Ik ben nu bezig in ons studenthuis een
Windows Update server te installeren, omdat het onzin is als alle clients steeds maar weer dezelfde updates installeren. Het grote probleem is dat het niet onder Linux gerealiseerd kan worden. Op zich logisch, maar wel lastig als je maar 1 server tot je beschikking hebt waar al noodgedwongen Linux op draait. Ik zal mijn ervaringen hierover binnenkort delen.
Nog een handige
link waar je alles terug kunt vinden over dhcpd.conf voor het configureren van je DHCP/ BOOTP server.
Hier staan wat voorbeelden voor een dhcpd.conf bestand. Je zult dit goed moeten configureren als je onder Linux iets met CBQ.init wilt doen, omdat CBQ.init niet met MAC adressen om kan gaan. Je kan dmv je DHCP server een IP adres (en gatewaty, DNS server adressen, etc. toewijzen aan een specifiek MAC adres en zo het probleem omzeilen.
[
Voor 26% gewijzigd door
Verwijderd op 13-01-2004 20:51
]