= QoS 0 TCP Absicherung Ziel ist zu sehen, wie TCP bei Verbindungsproblemen die Applikationsschicht absichert. Dazu wird für den TCP Port 1883 ein Paketverlust von 50% konfiguriert und Anschließend Nachrichten versendet und konsumiert. $ docker run --rm -it --net host eclipse-mosquitto \ mosquitto_sub --debug --topic demo/qos0 -q 0 $ docker run --rm -it --net host eclipse-mosquitto \ mosquitto_pub --topic demo/qos0 -q 0 --message "before tcp loss" In separatem Terminal wird nun das Netzwerk so konfiguriert, dass es hohen IP Paketverlust (50%) gibt: (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 loss 50% 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 save #2" $ 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/