
Ich teste den Opus-Codec und den VoIP-Stack, der ihn verwendet. Ich habe ein synthetisches Testprogramm, das intern Opus-RTP-Verkehr zwischen zwei Ports auf der Loopback-Schnittstelle sendet + die resultierenden Audiodaten in Dateien schreibt, um weitere Analysen zu ermöglichen.
Mit dem Linux-Dienstprogramm „tc“ kann ich verschiedene Netzwerkstörungen simulieren.
Ich habe mich jedoch darauf beschränkt, so etwas wie „plötzliche Netzwerkverzögerung“ zu simulieren. Entschuldigen Sie mein schlechtes Englisch!
Dies sollte so aussehen, als würde das Netzwerk für 1 Sekunde angehalten und danach alle verzögerten Pakete so schnell wie möglich an ihre Ziele gesendet.
Ist eine Implementierung mit dem Dienstprogramm „tc“ möglich?
Ich habe versucht, den Befehl „tc“ auszuführen, um während des synthetischen Testvorgangs eine Verzögerung von 1000 ms zu erreichen. Dies hat jedoch nicht den gewünschten Effekt.
Kann jemand einen Rat geben?
Danke :)
Antwort1
Dies sollte so aussehen, als würde das Netzwerk für 1 Sekunde angehalten und danach alle verzögerten Pakete so schnell wie möglich an ihre Ziele gesendet.
Das ist tatsächlich möglich ... Vonman tc
:
netem
Network Emulator ist eine Erweiterung der Verkehrssteuerungsfunktionen von Linux, die es ermöglicht, Paketen, die von einer ausgewählten Netzwerkschnittstelle ausgehen, Verzögerungen, Paketverluste, Duplikate und weitere Eigenschaften hinzuzufügen.
... und vonman tc-netem
:
Slot
Verzögern Sie die Zustellung angesammelter Pakete innerhalb eines Slots. Jeder verfügbare Slot kann mit einer Mindestverzögerung für den Empfang und einer optionalen Maximalverzögerung konfiguriert werden.
... Sie können also so etwas tun:
sudo tc qdisc add dev interface root netem slot 1000ms 1000ms
... wobei interface
der Name Ihrer gewünschten Netzwerkschnittstelle ist, wie er beispielsweise in der Ausgabe von angezeigt wird ip a
.
Dadurch werden alle gesendeten Pakete auf der angegebenen Schnittstelle für eine Weile gespeichert 1000ms
und dann alle auf einmal freigegeben (in einem Ausbruch).
BeachtenDadurch delay
wird andererseits 1000ms
jedem übertragenen Paket auf der angegebenen Schnittstelle eine Verzögerung von hinzugefügt.