55 lines
1.6 KiB
Plaintext
55 lines
1.6 KiB
Plaintext
= 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/ |