2012-12-17 7 views
5

Ich schreibe eine Anwendung, die auf einem Server läuft, wo ich die maximale Bandbreite für jeden Ethernet-Port einstellen muss (es gibt bis zu 6 Ports).Drosselungsbandbreite am Ethernet-Port

Offensichtlich kann ich die Bandbreite drosseln, die meine Anwendung verwendet, aber ich habe noch keine Informationen über das Drosseln der tatsächlichen Ethernet-Port-Bandbreite auf dem Computer gefunden.

Möchten Sie dies tun, indem Sie einen Treiber erstellen, der alle Ports überwacht? Kann mir jemand in die richtige Richtung zeigen?

+1

Ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –

+0

Hört sich gut an, danke. – DawnMage77

+0

Warum brauchen Sie es? Windows unterstützt das nicht - weil es kaum einen Anwendungsfall dafür gibt;) Mit einem Use Case könnten wir bessere Antworten liefern. – TomTom

Antwort

0

Ich denke, die einfachste Sache wäre, ein Ausgabegerät zu schaffen, das Sie mit Ihrem tatsächlichen Absender zusammensetzen können, der den Ausgang selbst drosseln würde, anstatt mit dem Ethernet-Port zu verwirren.

1

Wenn Sie Zugang zu einer Linux-Box haben, ist es einfach, so etwas zu tun. In der Tat können Sie alle Arten von Netzwerk Beeinträchtigungen hinzufügen, um es interessant zu machen.

Installieren Sie einfach zwei Netzwerkkarten und richten Sie das Netzwerk ein, um den Datenverkehr zwischenzuspeichern. (z. B. einen negativen Blip in der Leitung, die Beeinträchtigungen wie Verzögerung, Jitter, Bandbreitenrate usw. aufzählt)

Hier ist das Skript, das ich verwende, um die Leistung meiner Android-Audio-Streaming-Apps durch die Weitergabe der Android-Verkehr durch das Linux zu testen Box (mit einem WLAN-AP verbunden mit einer der Schnittstellen).

Hinzugefügt: Durch die Leistung meiner App zu testen, ich meine, wie würde die App verhalten sich in einem Netzwerk 4G während der Fahrt (das heißt eine Menge von Jitter). Oder ein Anwendungsfall in zu Hause mit Wi-Fi; Was passiert, wenn jeder im Haus beschließt, HD-Videos simultan zu streamen (d. h. Bandbreitenkonkurrenz mit einer Menge von Paketverlust).

#!/bin/bash 

ORIGINAL_PATH=$PATH 

#echo $ORIGINAL_PATH 

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game" 

#echo $PATH 
CTOSINTERFACE=eth1 # EGRESS interface on Bridge, facing the SERVER 
STOCINTERFACE=eth0 # EGGRES interface on Bridge, facing the CLIENT 

# Client To Server 
CDELAY=$1 
CJITTER=$2 
CLOSS=$3 
CDUPLICATE=$4 
CCORRUPT=$5 
CREORDER=$6 

# Server to Client 
SDELAY=$7 
SJITTER=$8 
SLOSS=$9 
SDUPLICATE=$10 
SCORRUPT=$11 
SREORDER=$12 

# Clear Latency/Loss/Jitter 
/sbin/tc qdisc del root dev $CTOSINTERFACE 2>/dev/null 
/sbin/tc qdisc del root dev $STOCINTERFACE 2>/dev/null 


# Client to Server Impairments (on Bridge) 
qdisc add dev $CTOSINTERFACE root netem delay ${CDELAY}ms ${CJITTER}ms loss $CLOSS% duplicate ${CDUPLICATE}% corrupt ${CCORRUPT} reorder ${CREORDER}% limit 10000000 2>&1 >/dev/null 
qdisc add dev $STOCINTERFACE root netem delay ${SDELAY}ms ${SJITTER}ms loss $SLOSS% duplicate ${SDUPLICATE}% corrupt ${SCORRUPT} reorder ${SREORDER}% limit 10000000 2>&1 >/dev/null 

#$PATH=$ORIGINAL_PATH 
export PATH=$ORIGINAL_PATH 
#echo $PATH 

und rufen Sie das Skript als

#sudo impare_network.sh 100 20 30 0 0 0 0 0 0 0 0 0 0 

Dies würde - auf der Aufwärtsstrecke (vom Client zum Server) - fügen Verzögerung von 100ms, einen Jitter von 20% (unter Verwendung von Normalverteilung) , Verlust von 30% Paketen.

0

In der Regel ist dies auf Betriebssystemebene ohne zusätzliche Software nicht möglich - der Anwendungsfall wird einfach als nicht wirklich wichtig angesehen und im Ernst: das ist richtig. Wenn ich Netzwerkgrenzen benötige, kann ich sie im Switch erzwingen.

Die einzige Ausnahme ist in Hyper-V, wo die Newwest-Version (in 2012 R2) die ausgehende Bandbreite begrenzen kann.

Im Allgemeinen - Sie benötigen Software von Drittanbietern zu tun, dass auf Windows, aber der Anwendungsfall ist wirklich nervös, denn im Allgemeinen ist es ein viel besserer Ort, um diese Grenze in der nächsten höheren Schalter zu setzen.