Repository 32bit  Forum
Repository 64bit  Wiki

[Risolto]Limitare la banda per un host

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[Risolto]Limitare la banda per un host

Messaggioda Ansa89 » dom ott 16, 2011 12:47

Devo limitare la velocità di trasmissione (e ricezione) di un dato host della mia rete, verso internet; per farlo pensavo di aggiungere una regola di shaping al server che gestisce il traffico da/verso internet.
Ho già provato a guardare la bibbia del traffic shaping, ma non ci ho capito molto.
Inoltre su internet ho trovato un paio di siti che propongono qualche soluzione, ma usano sempre regole diverse e non capisco quale devo usare io :( .

Qualcuno può aiutarmi a capire come muovermi tra le varie tipologie di traffic shaping e consigliarmene una che faccia al caso mio?
Ultima modifica di Ansa89 il ven ott 21, 2011 8:22, modificato 1 volta in totale.
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1

Re: Limitare la banda per un host

Messaggioda shark1500 » dom ott 16, 2011 14:32

Ma non te l'hanno insegnato al laboratorio di reti?
Avatar utente
shark1500
Linux 2.6
Linux 2.6
 
Messaggi: 785
Iscritto il: gio apr 03, 2008 13:33
Località: Modna
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde

Re: Limitare la banda per un host

Messaggioda Ansa89 » dom ott 16, 2011 16:08

A reti ci hanno detto che esiste il traffic shaping e ci hanno fatto un esempio con il tbf, ma in rete si trovano quasi esclusivamente esempi con il htb, quindi mi vengono dei dubbi (quelli scritti nel primo post).
Inoltre a reti si agiva direttamente sull'host, invece io devo agire sul server al quale si connette l'host.

In ogni caso mi restano delle perplessità su come funziona e come si configura per bene la limitazione della banda per uno specifico host.
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1

Re: Limitare la banda per un host

Messaggioda shark1500 » dom ott 16, 2011 20:35

Se non ricordo male sono semplicemente due classi di utilizzo diverse. Ti consiglio di mettere su al volo una lan di prova in virtuale e fare le prove li` sopra. Puoi mettere traquillamente il traffic shaping sul server che fa da routing.
Avatar utente
shark1500
Linux 2.6
Linux 2.6
 
Messaggi: 785
Iscritto il: gio apr 03, 2008 13:33
Località: Modna
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde

Re: Limitare la banda per un host

Messaggioda ocman » lun ott 17, 2011 18:23

scusate l'intromissione.
personalmente volevo segnalare che da tempo sto utilizzando per un caso simile il sistema operativo solaris (versione s10u9 in poi, incluso Sol11Exp o OpenIndiana)
con queste versioni infatti il traffic shaping è integrato nello stack di rete di ogni interfaccia reale o virtuale che sia ed è molto semplice da configurare.
non so se hai la possibilità di provarlo ma con questo riusciresti a assegnare limiti di bandwidth anche a livello subnet/protocollo/porta e non di generico host.

Dal manuale: http://download.oracle.com/docs/cd/E199 ... #scrolltoc
Codice: Seleziona tutto
Create flows according to the attribute you have determined for each flow.

# flowadm add-flow -l link -a attribute=value[,attribute=value] flow

attribute

    Refers to one of the following classifications by which you can organize network packets into a flow:

        IP address

        Transport protocol (UDP, TCP, or SCTP)

        Port number for an application (for example port 21 for FTP)

        DS field attribute, which is used for quality of service in IPv6 packets only. For more information about the DS field, refer to DS Codepoint in System Administration Guide: IP Services.

flow

    Refers to the name that you assign to the particular flow.

For more details about flows and flow attributes, see the flowadm(1M) man page.
Implement resource controls on the flows by setting the appropriate flow properties.

# flowadm set-flowprop -p property=value[,property=value,...] flow

You can specify the following flow properties that control resources:

maxbw

    The maximum amount of the link's bandwidth that packets identified with this flow can use. The value you set must be within the allowed range of values for the link's bandwidth. To display the possible range of values for a link's bandwidth, check the POSSIBLE field in the output that is generated by the following command:

    # dladm show-linkprop -p maxbw link

priority

    The priority given to packets in this flow. The possible values are high, medium, and low. The default value is medium.



come funziona?
http://conferences.sigcomm.org/sigcomm/ ... rs/p45.pdf
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Limitare la banda per un host

Messaggioda shark1500 » lun ott 17, 2011 20:00

Ho sentito dire che e` anche facile fare traffic shaping con OpenBSD.
Ansa, se hai tempo puoi provare anche questa soluzione.
Avatar utente
shark1500
Linux 2.6
Linux 2.6
 
Messaggi: 785
Iscritto il: gio apr 03, 2008 13:33
Località: Modna
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde

Re: Limitare la banda per un host

Messaggioda ocman » mar ott 18, 2011 19:00

metodo carino su linux con tc e eptables

http://ebtables.sourceforge.net/examples/example5.html
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Limitare la banda per un host

Messaggioda Ansa89 » mer ott 19, 2011 7:44

ocman ha scritto:scusate l'intromissione.
personalmente volevo segnalare che da tempo sto utilizzando per un caso simile il sistema operativo solaris (versione s10u9 in poi, incluso Sol11Exp o OpenIndiana)
con queste versioni infatti il traffic shaping è integrato nello stack di rete di ogni interfaccia reale o virtuale che sia ed è molto semplice da configurare.
non so se hai la possibilità di provarlo ma con questo riusciresti a assegnare limiti di bandwidth anche a livello subnet/protocollo/porta e non di generico host.

Dal manuale: http://download.oracle.com/docs/cd/E199 ... #scrolltoc
Codice: Seleziona tutto
Create flows according to the attribute you have determined for each flow.

# flowadm add-flow -l link -a attribute=value[,attribute=value] flow

attribute

    Refers to one of the following classifications by which you can organize network packets into a flow:

        IP address

        Transport protocol (UDP, TCP, or SCTP)

        Port number for an application (for example port 21 for FTP)

        DS field attribute, which is used for quality of service in IPv6 packets only. For more information about the DS field, refer to DS Codepoint in System Administration Guide: IP Services.

flow

    Refers to the name that you assign to the particular flow.

For more details about flows and flow attributes, see the flowadm(1M) man page.
Implement resource controls on the flows by setting the appropriate flow properties.

# flowadm set-flowprop -p property=value[,property=value,...] flow

You can specify the following flow properties that control resources:

maxbw

    The maximum amount of the link's bandwidth that packets identified with this flow can use. The value you set must be within the allowed range of values for the link's bandwidth. To display the possible range of values for a link's bandwidth, check the POSSIBLE field in the output that is generated by the following command:

    # dladm show-linkprop -p maxbw link

priority

    The priority given to packets in this flow. The possible values are high, medium, and low. The default value is medium.



come funziona?
http://conferences.sigcomm.org/sigcomm/ ... rs/p45.pdf

shark1500 ha scritto:Ho sentito dire che e` anche facile fare traffic shaping con OpenBSD.
Ansa, se hai tempo puoi provare anche questa soluzione.

Grazie per le segnalazioni, ma preferisco farlo da linux (solo per il motivo che ho già configurato tutto il serverino e mi scoccia dover ricominciare tutto da zero per mettere solaris o openBSD).


ocman ha scritto:metodo carino su linux con tc e eptables

http://ebtables.sourceforge.net/examples/example5.html

Ebtables purtroppo lavora solo con indirizzi mac (almeno mi è sembrato di capire così dalla guida che mi hai linkato), io invece ho bisogno di limitare il traffico per tutta una rete (di cui non conosco i mac a priori).
Soluzione:
Codice: Seleziona tutto
# iptables -t mangle _PARAMETRI_DEL_CASO_ -j MARK --set-mark _NUMERO_

In questo modo marco le connessioni che mi interessano e ne posso limitare il traffico (in sostanza è l'analogo di quello che c'è scritto nella guida che mi hai proposto, solo che si usa iptables).
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1

Re: Limitare la banda per un host

Messaggioda shark1500 » mer ott 19, 2011 11:11

Se non ricordo male con tc puoi farlo senza problemi, senza nemmeno dover utilizzare iptables.
Avatar utente
shark1500
Linux 2.6
Linux 2.6
 
Messaggi: 785
Iscritto il: gio apr 03, 2008 13:33
Località: Modna
Slackware: current
Kernel: 2.6.27.7-smp
Desktop: kde

Re: Limitare la banda per un host

Messaggioda ocman » mer ott 19, 2011 11:17

se sei dietro ad un router il mac è solo uno
ocman
Linux 2.4
Linux 2.4
 
Messaggi: 239
Iscritto il: gio lug 31, 2008 17:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Limitare la banda per un host

Messaggioda Ansa89 » mer ott 19, 2011 16:37

ocman ha scritto:se sei dietro ad un router il mac è solo uno

Non sono dietro un router.


shark1500 ha scritto:Se non ricordo male con tc puoi farlo senza problemi, senza nemmeno dover utilizzare iptables.

Forse sì, ma continua a esserci il problema che qualcuno dovrebbe spiegarmi come.
Inoltre nella guida postata da ocman si usa il cbq e vorrei capire le differenze che ci sono con il tbf e il htb (e se queste differenze sono rilevanti per quello che devo fare io).

In parole povere: sono ancora in alto mare e devo fare un mucchio di prove (per il momento non sono ancora riuscito a limitare il traffico).
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1

Re: Limitare la banda per un host

Messaggioda rik70 » gio ott 20, 2011 11:25

Forse shorewall potrebbe fare al caso tuo, se non ti disturba utilizzarlo come firewall:

http://www.shorewall.net/traffic_shaping.htm

http://www.shorewall.net/simple_traffic_shaping.html

Ti servono - credo - le libmnl e le xtables-addons che trovi su netfilter.org (se non ci sono nella distro che utilizzi).

Ciao
rik70
Linux 2.6
Linux 2.6
 
Messaggi: 995
Iscritto il: gio mar 10, 2011 9:21
Slackware: 13.1
Kernel: 3.11.9-smp
Desktop: LXDE

Re: Limitare la banda per un host

Messaggioda Ansa89 » gio ott 20, 2011 15:09

rik70 ha scritto:Forse shorewall potrebbe fare al caso tuo, se non ti disturba utilizzarlo come firewall:

http://www.shorewall.net/traffic_shaping.htm

http://www.shorewall.net/simple_traffic_shaping.html

Grazie per la segnalazione.
Per le impostazioni del firewall preferirei usare direttamente iptables, senza passare attraverso altri tool.
Magari faccio ancora qualche tentativo e se vedo che proprio non ci salto fuori, provo shorewall.


rik70 ha scritto:(se non ci sono nella distro che utilizzi)

Uso debian: "xtables-addons" c'è tra i pacchetti di default; invece "libmnl" lo trovo solo per la versione testing e unstable.
Tuttavia, tra i pacchetti disponibili c'è già "shorewall", quindi non credo che dovrò preoccuparmi per "libmnl".
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1

Re: Limitare la banda per un host

Messaggioda Ansa89 » ven ott 21, 2011 8:20

Risolto:
Codice: Seleziona tutto
#!/bin/bash

# IP di cui limitare il traffico
IP="x.x.x.x"

# Interfaccia del server verso la lan
# Serve per configurare la velocità di download
IN_IF="in"
# Interfaccia del server verso internet
# Serve per configurare la velocità di upload
OUT_IF="out"

# Massima velocità di download (kbps/kbit/mbps/mbit)
DOWN="max_d"
# Massima velocità di upload (kbps/kbit/mbps/mbit)
UP="max_u"

# Se la rete non è usata, l'host può arrivare a questa velocità di download (kbps/kbit/mbps/mbit)
CEIL_DW="ceil_d"
# Se la rete non è usata, l'host può arrivare a questa velocità di upload (kbps/kbit/mbps/mbit)
CEIL_UP="ceil_u"

# Uso htb per la root handle
tc qdisc add dev $IN_IF root handle 1:0 htb
tc qdisc add dev $OUT_IF root handle 1:0 htb

# Aggiungo le classi, impostando come rate massimo
# la velocità che l'host può raggiungere quando la rete
# non viene usata (uso sempre htb)
tc class add dev $IN_IF parent 1:0 classid 1:1 htb rate $CEIL_DW
tc class add dev $OUT_IF parent 1:0 classid 1:1 htb rate $CEIL_UP

# Aggiungo le classi per impostare il limite della banda
# e aggiungo il "ceil" per consentirne il prestito
tc class add dev $IN_IF parent 1:1 classid 1:10 htb rate DOWN ceil $CEIL_DW
tc class add dev $OUT_IF parent 1:1 classid 1:10 htb rate UP ceil $CEIL_UP

# Uso sfq per gestire la coda di pacchetti che arrivano alle classi
tc qdisc add dev $IN_IF parent 1:10 handle 30:0 sfq perturb 10
tc qdisc add dev $OUT_IF parent 1:10 handle 30:0 sfq perturb 10

# Aggiungo il filtraggio vero e proprio della banda
tc filter add dev $IN_IF parent 1:0 prio 1 protocol ip u32 match ip dst $IP flowid 1:10
tc filter add dev $OUT_IF parent 1:0 prio 1 protocol ip u32 match ip src $IP flowid 1:10
Avatar utente
Ansa89
Iper Master
Iper Master
 
Messaggi: 2621
Iscritto il: mer ago 29, 2007 16:57
Località: Modena
Nome Cognome: Stefano Ansaloni
Slackware: 13.1
Kernel: 3.16.1-ck1
Desktop: XFCE 4.6.1


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite