Erstens der einfache Weg: rsync
hat einen --bwlimit
Parameter. Das ist eine konstante Rate, aber Sie können sie verwenden, um sie leicht zu drosseln.
Wenn Sie nun die adaptive Rate wünschen, gibt es das Linux-Verkehrssteuerungs-Framework , das eigentlich ziemlich kompliziert ist. Mir sind mehrere Referenzen bekannt:
Persönlich, wenn ich dies einrichten muss, benutze ich tcng , um die Aufgabe zu vereinfachen. Hier ist ein Beispiel:
dev office {
egress {
class ( <$ssh> )
if ip_tos_delay == 1 && tcp_sport == PORT_SSH ;
class ( <$kyon> )
if ip_dst == 172.16.1.62; // monitoring host
class ( <$fast> )
if ip_tos_delay == 1;
class ( <$default> )
if 1;
htb() {
class ( rate 1440kbps, ceil 1440kbps ) {
$ssh = class ( rate 720kbps, ceil 1440kbps ) { sfq; };
$kyon = class ( rate 360kbps, ceil 1440kbps ) { sfq; };
$fast = class ( rate 180kbps, ceil 1440kbps ) { sfq; };
$default = class ( rate 180kbps, ceil 1440kbps ) { sfq; };
}
}
}
}
In diesem Beispiel wird der über die Büroschnittstelle gesendete Datenverkehr in mehrere Klassen eingeteilt: ssh, kyon, fast und default. Die Verbindung (eine T1, als diese verwendet wurde) ist auf 1440 KBit / s begrenzt (diese muss geringfügig unter der tatsächlichen Verbindungsrate liegen, damit die Pufferung auf der Linux-Box und nicht auf einem Router erfolgt). Sie können sehen, dass ssh 720 kbps, kyon 360 usw. zugewiesen ist. Alle können bis zur vollen Rate (der Obergrenze) platzen. Wenn es Streit gibt, fungiert die 'Rate' als Verhältnis, so dass ssh 1/2, kyon 1/4 usw. gegeben wird. Das 'sfq' sagt, wie mehrere ssh-Sitzungen behandelt werden sollen; sfq ist eine Form von Round-Robin.