Soluzione 1:
Alla fine ho deciso di impostare solo la larghezza di banda/latenza in uscita sul server, e poi di fare lo stesso sul client, raggiungendo 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 50ms
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
Cliente: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
Soluzione 2:
Circa 80-90 kByte / s è cosa aspettarsi da
tc filter add ... police rate 1.0mbit ...
Chiedi che i dati in entrata vengano buttati via quando arrivano a 1 mBit/s, ovvero circa 125 kByte/s. Il server remoto scenderà quindi a un valore notevolmente inferiore a quello (forse la metà, non sono sicuro). Successivamente, tutti i pacchetti passano, quindi l'estremità remota aumenta lentamente la velocità fino a raggiungere nuovamente i 125 kByte / s. Ottieni una media throughput notevolmente inferiore a 125 kByte / s, che è tipico dell'ingress shaping.
Sono un po' sorpreso che la velocità raggiunga i 2 MByte/s con il filtro dei criteri di ingresso già installato. Dove hai misurato - sul client downstream (programma) o su qualche router upstream? O forse hai prima avviato la connessione e solo successivamente hai attivato il filtro dei criteri di ingresso?