Add labs
This commit is contained in:
73
01-basics/lab14/lab.txt
Normal file
73
01-basics/lab14/lab.txt
Normal file
@ -0,0 +1,73 @@
|
||||
= QoS 1 Nachlieferung
|
||||
|
||||
Subscribe mit expliziter Client ID und "clean session" auf "false".
|
||||
|
||||
$ docker run --rm -it --net host eclipse-mosquitto \
|
||||
mosquitto_sub --debug --topic demo/qos1 --qos 1 --disable-clean-session --id demo
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
Ermittlung des Ports des Subscribers:
|
||||
|
||||
# ss -t sport = :1883
|
||||
|
||||
|
||||
|
||||
Im ersten Terminal werden nun mehrere Nachrichten versandt:
|
||||
|
||||
$ docker run --rm -it --net host eclipse-mosquitto \
|
||||
mosquitto_pub -t demo/qos1 -q 1 -m "This is delivered. #1"
|
||||
|
||||
$ docker run --rm -it --net host eclipse-mosquitto \
|
||||
mosquitto_pub -t demo/qos1 -q 1 -m " #### This could be delivered later. #2"
|
||||
|
||||
Nach ca. 3 Sekunden werden die TCP Verbindungen des Subscribers im zweiten Terminal unterbrochen)
|
||||
# ss -t -K sport = :60804
|
||||
|
||||
Optional: Im ersten Terminal wird mittels mehrfachem CTRL-C der Subscriber beendet.
|
||||
Anschließend erfolgt neuer Start.
|
||||
|
||||
$ docker run --rm -it --net host eclipse-mosquitto \
|
||||
mosquitto_sub --debug -t demo/qos1 --qos 1 --disable-clean-session --id demo
|
||||
|
||||
|
||||
Testen Sie auch, was passiert, wenn beim Neustart ein völlig anderes Topic angegeben wird -
|
||||
wird die nicht erhaltene Nachricht trotzdem ausgeliefert?
|
||||
|
||||
$ docker run --rm -it --net host eclipse-mosquitto \
|
||||
mosquitto_sub --debug -t demo/othertopic --qos 1 --disable-clean-session --id demo
|
||||
|
||||
|
||||
|
||||
Anschließendes Aufräumen:
|
||||
|
||||
# iptables -t mangle -F
|
||||
# tc qdisc del dev lo root
|
||||
|
||||
|
||||
|
||||
= Quellen
|
||||
|
||||
Wireshark: https://www.wireshark.org/
|
||||
Reference in New Issue
Block a user