Limita la larghezza di banda e la latenza in entrata e in uscita in Linux


15

Mi rendo conto che molte domande simili sono già state poste, ma finora non ho ancora trovato una soluzione al mio problema.

Ho un server Linux virtuale (con Debian Squeeze) che utilizzo per testare la velocità del sito Web al fine di misurare l'aumento e la riduzione del tempo di caricamento di tali siti Web. Sto tentando di limitare la larghezza di banda e la latenza di questo server per poter avvicinarmi ai tempi di caricamento del mondo reale sui siti Web, ma finora non sono riusciti.

Quello che voglio specificamente è il seguente:

  • Per impostare una latenza in entrata e in uscita di 50 ms.
  • Per impostare un limite di larghezza di banda in entrata di 512 kbps.
  • Per impostare un limite di larghezza di banda in uscita di 4096 kbps.

Ho letto su netem e ho usato il tccomando, ma è ancora un po 'sopra la mia testa. Sono riuscito a mettere insieme questo comando per controllare la latenza che sembra funzionare, ma non sono nemmeno sicuro che gestisca solo la latenza in uscita o entrambi:

tc qdisc add dev eth0 root netem delay 50ms

Qualche guru della rete che mi può aiutare?

Modificare:

Dopo ulteriori ricerche sono arrivato a metà del mio obiettivo, usando questo comando tutto il traffico in uscita si comporta come voglio:

tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000

Tuttavia, non sono ancora riuscito a limitare correttamente il traffico in entrata. Ho imparato che dovrei usare un "filtro Ingress Policer". Ho provato a farlo proprio con il comando qui sotto, giocando con valori diversi, ma senza fortuna.

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop

Tuttavia, la larghezza di banda è influenzata dal comando, i valori sopra riportati fanno iniziare la velocità a 2 MB / se, man mano che il trasferimento procede, scendendo lentamente a circa 80-90 kB / s che raggiunge dopo circa 30 secondi di trasferimento.

Qualche idea su cosa sto facendo di sbagliato?


netem delay 50msnon limita la latenza. Aumenta la latenza 50msrispetto a ciò che altrimenti sarebbe stato.
Kasperd,

In effetti hai ragione. Rimosso il limite di parole perché era un aumento di 50ms che stavo effettivamente cercando (dato che era una macchina virtuale sullo stesso computer, la latenza originale era comunque abbastanza vicina a 0)
yzfr1

Risposte:


12

Alla fine ho deciso semplicemente di impostare la larghezza di banda / latenza in uscita sul server e di fare lo stesso sul client, ottenendo effettivamente lo stesso risultato.

Questi sono i comandi che ho eseguito rispettivamente sul server e sul client per raggiungere i miei obiettivi:

Server: 4 Mbit 50 ms

tc qdisc add dev eth0 handle 1: root htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 4Mbit
tc qdisc add dev eth0 parent 1:11 handle 10: netem delay 50ms

Client: 512 kbit 50 ms

tc qdisc add dev vmnet1 handle 1: root htb default 11
tc class add dev vmnet1 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev vmnet1 parent 1:1 classid 1:11 htb rate 512kbit
tc qdisc add dev vmnet1 parent 1:11 handle 10: netem delay 50ms

Lo cerco da mesi. Grazie. Una domanda? Come si cancella la regola? tc class del dev eth0 root mostra le risposte RTNETLINK: nessun file o directory simile
Nur

È stato qualche mese fa, ma mi sembra di ricordare che è abbastanza per rimuovere il qdisc: tc qdisc del dev eth0 root
yzfr1

2

Alcuni 80-90 kByte / s riguardano cosa aspettarsi

    tc filter add ... police rate 1.0mbit ...

Chiedete che i dati in arrivo vengano gettati via quando arrivano a 1 mBit / s, cioè circa 125 kByte / s. Il server remoto scenderà quindi a un livello notevolmente inferiore (forse la metà, non sono sicuro). Successivamente, arrivano tutti i pacchetti, quindi l'estremità remota aumenta lentamente fino a raggiungere nuovamente 125 kByte / s. Si ottiene una velocità media considerevolmente inferiore a 125 kByte / s, tipico della modellatura dell'ingresso.

Sono un po 'sorpreso che la velocità dovrebbe raggiungere i 2 MByte / s con il filtro della politica di ingresso già in atto. Dove hai misurato - sul client downstream (programm) o su un router upstream? O forse hai avviato la connessione per la prima volta e solo dopo hai attivato il filtro dei criteri di ingresso?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.