[glux] NetShaper 8.0 stable

Pietro Bertera dr.iggy@iol.it
Tue, 25 Mar 2003 01:50:17 +0100


Ciao,
ho finito di testare (forse) NetShaper.

ho messo tutto su web.

http://www.makkia.net/projects/netshaper/

manca ancora la documentazione.

allo stato attuale netshaper opera traffic shaping secondo regole che si 
possono creare combinando le seguenti opzioni:

-s <host> specifica un host sorgente
-d <host> specifica un host destinazione
-sport <port> specifica una porta sorgente
-dport <port> specifica una porta destinazione
-p <proto> specifica il protocollo (TCP o UDP) (default tcp)
-i <iface> specifica un'interfaccia di input
-o <iface> specifica un'inetrfaccia di output
-t <time> specifica il massimo timeout di permanenza dei pacchetti in 
millisec
<bandwidth> Banda esperessa in Bytes/sec

<host> supporta sia i nomi, sia gli ip che le sottoreti (queste sia 
nella forma /xxx che in notazione puntata)

La granularità minima è data dalla regola:

netshaper 1000000

che impone che tutto il traffico venga limitato a 1000000 B/s

La granularità massima è quindi:

netshaper -s 192.168.2.0/24 -d 192.168.2.10 -p tcp -i eth0 -o eth1 
-sport 80 -dport 4456 -t 1500 1000000

Questa regola impone che tutti i dati provenienti dalla sottorete 
192.168.2.0/24 destinati all' host 192.168.2.10 co protocollo tcp, 
entranti da eth0, uscenti da eth1, con porta sorgente 80 e porta 
destinazione 4456 abbiano velocità non superiore ai 1000000 B/s
e che i pacchetti non permangano nelle code + di 1500 millisecondi.

(il timeout è arrotondato alla decina di millisecondo + vicina)

Ogni volta che viene scritta una regola viene aggiornata una proc entry 
(/proc/netshaper/rules) in cui sono elencate tutte le regole.
in questa entry vengono anche rappresentati quanti byes sono residenti 
nelle code (per ogni singola regola) nel momento in cui si è letta la 
/proc entry.

NetShaper supporta anche architetture multiprocessore (non ho ancora 
testato a fondo pero'...).

Per poterlo compilare occorre avere un kernel 2.4 il supporto per il 
Netfilter, il supporto per lkm, e i sorgenti dek kernel per le librerie.

per compilaro: gcc -c netshaoer_mod.c -Wall -I{percorso dei src}/include

poi installare il modulo con:

insmod netshaper_mod.o

compilare il componente in userspace:

gcc -o netshaper netshaper.c

poi usare e abusare dell'eseguibile creato.

Chiunque ha dubbi, domande proposte mi contatti.