mirror of https://framagit.org/bortzmeyer/echoping
Sample script to simulate network problems on Linux
parent
808788265e
commit
8039f8cd6e
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Dangerous. Use only if you know what you do.
|
||||
|
||||
# Linux-only
|
||||
|
||||
# Configure the Linux traffic control to lose packets, in order to test
|
||||
# echoping.
|
||||
|
||||
# http://linux-net.osdl.org/index.php/Netem
|
||||
|
||||
DEVICE="tap0"
|
||||
PROTOCOL="udp"
|
||||
DEST_PORTS="7 53"
|
||||
# In percent
|
||||
LOSS=20
|
||||
# In milli-seconds
|
||||
DELAY=40
|
||||
CLEAN_FIRST="YES"
|
||||
USE_IPTABLES="YES"
|
||||
|
||||
# Do not touch afterwards
|
||||
INTERESTING="4"
|
||||
PLAIN="0"
|
||||
|
||||
if [ ! -z "$CLEAN_FIRST" ]; then
|
||||
tc qdisc del dev ${DEVICE} root
|
||||
iptables -t mangle -F INPUT
|
||||
iptables -t mangle -F OUTPUT
|
||||
fi
|
||||
|
||||
tc qdisc add dev ${DEVICE} root handle 1: prio
|
||||
|
||||
tc qdisc add dev ${DEVICE} parent 1:2 handle ${INTERESTING}: \
|
||||
netem delay ${DELAY}ms loss ${LOSS}%
|
||||
|
||||
#tc qdisc add dev ${DEVICE} parent ${INTERESTING}:1 \
|
||||
# tbf rate 20kbit buffer 1600 limit 3000
|
||||
|
||||
if [ -z "$USE_IPTABLES" ] || [ "$USE_IPTABLES" = "NO" ]; then
|
||||
for port in ${DEST_PORTS}; do
|
||||
# Note: $PROTOCOL is ignored...
|
||||
tc filter add dev ${DEVICE} protocol ip parent 1:0 prio 2 u32 \
|
||||
match ip dport ${port} 0xffff flowid 10:5
|
||||
done
|
||||
else
|
||||
tc filter add dev ${DEVICE} protocol ip parent 1:0 prio 2 \
|
||||
handle ${INTERESTING} fw flowid 10:5
|
||||
# Not perfect: it seems all ports are affected :-(
|
||||
for port in ${DEST_PORTS}; do
|
||||
# Ingress
|
||||
iptables -t mangle -A INPUT -i ${DEVICE} -p ${PROTOCOL} --sport ${port} \
|
||||
-j MARK --set-mark ${INTERESTING}
|
||||
# Egress
|
||||
iptables -t mangle -A OUTPUT -o ${DEVICE} -p ${PROTOCOL} --dport ${port} \
|
||||
-j MARK --set-mark ${INTERESTING}
|
||||
done
|
||||
fi
|
Loading…
Reference in New Issue