= 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/