55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
= QoS 0 Verlust von Nachrichten
|
|
|
|
|
|
$ docker run --rm -it --net host eclipse-mosquitto \
|
|
mosquitto_sub --debug --topic demo/qos0 -q 0
|
|
|
|
|
|
In separatem Terminal wird nun das Netzwerk so konfiguriert, dass es
|
|
hohe Latenzen (3 Sekunden) gibt, dies macht es leichter, zum richtigen Zeitpunkt
|
|
die Verbindung zu unterbrechen:
|
|
|
|
(falls Docker genutzt wird)
|
|
$ docker run --rm -it --net host --cap-add NET_ADMIN alpine:3
|
|
# apk -U add iptables iproute2 iproute2-ss
|
|
|
|
(ohne Docker, Debian/Ubuntu)
|
|
$ sudo apt install -y iptables iproute2
|
|
$ sudo bash
|
|
|
|
|
|
# iptables -t mangle -A POSTROUTING -o lo -p tcp --sport 1883 -j MARK --set-mark 1
|
|
# iptables -t mangle -A PREROUTING -i lo -p tcp --dport 1883 -j MARK --set-mark 1
|
|
|
|
# tc qdisc add dev lo root handle 1: prio
|
|
# tc filter add dev lo parent 1:0 protocol ip handle 1 fw flowid 1:1
|
|
# tc qdisc add dev lo parent 1:1 handle 10: netem delay 3s
|
|
|
|
|
|
Im ersten Terminal werden nun mehrere Nachrichten versandt:
|
|
|
|
$ docker run --rm -it --net host eclipse-mosquitto \
|
|
mosquitto_pub -t demo/qos0 -q 0 -m "this will be save #1"
|
|
|
|
$ docker run --rm -it --net host eclipse-mosquitto \
|
|
mosquitto_pub -t demo/qos0 -q 0 -m "this will be lost #2"
|
|
|
|
(Nach ca. 6 Sekunden werden die TCP Verbindungen im zweiten Terminal unterbrochen)
|
|
# ss -t -K sport = :1883
|
|
|
|
(Neuer Versand funktioniert)
|
|
$ docker run --rm -it --net host eclipse-mosquitto \
|
|
mosquitto_pub -t demo/qos0 -q 0 -m "this will be save #3"
|
|
|
|
|
|
|
|
Anschließendes Aufräumen:
|
|
|
|
# iptables -t mangle -F
|
|
# tc qdisc del dev lo root
|
|
|
|
|
|
|
|
= Quellen
|
|
|
|
Wireshark: https://www.wireshark.org/ |