Skip to content

Commit 75b30b4

Browse files
committed
Fixed typos and missing scripts
1 parent ffda583 commit 75b30b4

File tree

13 files changed

+523
-4
lines changed

13 files changed

+523
-4
lines changed

bibliography.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ Whenever possible, the bibliography includes stable hypertext links to the refer
348348
.. .. [Stewart1998] Stewart, J., `BGP4: Inter-Domain Routing In The Internet <http://books.google.com/books?id=UEcHpN4QHrAC>`_, Addison-Wesley, 1998
349349
.. .. [Stoll1988] Stoll, C., `Stalking the wily hacker <http://doi.acm.org/10.1145/42411.42412>`_, Communications ACM 31, 5 (May. 1988), 484-497.
350350
.. [SV1995] M. Shreedhar and G. Varghese. `Efficient fair queueing using deficit round robin <http://doi.acm.org/10.1145/217391.217453>`_ SIGCOMM Computer Communication Review 25, 4 (October 1995), 231-242.
351-
.. [TKU2019] Turkovic, B., Kuipers, F., Uhlig, S. `Fifty Shades of Congestion Control: A Performance and Interactions Evaluation<https://arxiv.org/abs/1903.03852>`_, CoRR abs/1903.03852 (2019)
351+
.. [TKU2019] Turkovic, B., Kuipers, F., Uhlig, S., `Fifty Shades of Congestion Control: A Performance and Interactions Evaluation <https://arxiv.org/abs/1903.03852>`_ CoRR abs/1903.03852 (2019)
352352
.. .. [TE1993] Tsuchiya, P. F. and Eng, T., `Extending the IP internet through address reuse <http://doi.acm.org/10.1145/173942.173944>`_. SIGCOMM Computer Communication Review 23, 1 (Jan. 1993), 16-33.
353353
.. .. [Thomborson1992] Thomborson, C., `The V.42bis Standard for Data-Compressing Modems <http://www.computer.org/portal/web/csdl/doi/10.1109/40.166712>`_, IEEE Micro, September/October 1992 (vol. 12 no. 5), pp. 41-53
354354
.. [Unicode] The Unicode Consortium. `The Unicode Standard <http://unicode.org/versions/Unicode5.0.0/>`_, Version 5.0.0, defined by: The Unicode Standard, Version 5.0 (Boston, MA, Addison-Wesley, 2007
@@ -507,6 +507,7 @@ Whenever possible, the bibliography includes stable hypertext links to the refer
507507
Hinden
508508
Hiromi
509509
Hogg
510+
Hong
510511
Hopps
511512
Hornig
512513
Hostetler

conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232

3333
#extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinxcontrib.mscgen','sphinx.ext.graphviz','sphinxcontrib.tikz']
3434
#mscgen
35-
#mscgen_args=['-T eps']
35+
mscgen_args=['-T eps']
3636
mscgen_epstopdf='/usr/bin/epstopdf'
37-
#mscgen_epstopdf_args=['--debug']
37+
mscgen_epstopdf_args=['--debug']
3838

3939
# Localisation
4040

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// O. Bonaventure, 2019
2+
// This script demonstrates the establishment of a TCP connection by a client
3+
//
4+
// enforce strict segment checking (and turn off gso) to measure probe length
5+
--strict_segments
6+
--ip_version=ipv6
7+
--local_ip=fd::1
8+
--gateway_ip=fd::2
9+
--remote_ip=fd::3
10+
11+
12+
`../common/defaults.sh
13+
ip -6 route change fd::3 via fd::2 dev tun0 advmss 1000 mtu lock 1460 initcwnd 4
14+
ethtool -K tun0 gso off tso off
15+
../common/set_sysctls.py /proc/sys/net/ipv4/tcp_timestamps=0 \
16+
/proc/sys/net/ipv4/tcp_syn_retries=3 \
17+
/proc/sys/net/ipv4/tcp_synack_retries=3 \
18+
/proc/sys/net/ipv4/tcp_sack=0 \
19+
/proc/sys/net/ipv4/tcp_dsack=0 \
20+
/proc/sys/net/ipv4/tcp_frto=0 \
21+
/proc/sys/net/ipv4/tcp_reordering=3 \
22+
/proc/sys/net/ipv4/tcp_congestion_control=reno \
23+
/proc/sys/net/ipv4/tcp_slow_start_after_idle=1 \
24+
/proc/sys/net/ipv4/tcp_early_retrans=0 \
25+
/proc/sys/net/ipv4/tcp_recovery=0 \
26+
/proc/sys/net/ipv4/tcp_ecn=0 \
27+
/proc/sys/net/ipv4/tcp_fastopen=0 \
28+
/proc/sys/net/ipv4/tcp_window_scaling=0 \
29+
/proc/sys/net/ipv4/tcp_rmem="64000 64000 64000" \
30+
/proc/sys/net/ipv4/tcp_wmem="64000 64000 64000" \
31+
/proc/sys/net/ipv4/tcp_retries1=3 \
32+
/proc/sys/net/ipv4/tcp_retries2=3 \
33+
`
34+
35+
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
36+
+0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
37+
+0 setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
38+
39+
+0 connect(4, ..., ...) = -1 EINPROGRESS (Operation now in progress)
40+
+0 > S 0:0(0) <mss 1000>
41+
// TCP State is now SYN_SENT
42+
+0 %{ print "State@1", tcpi_state }%
43+
+.1 < S. 0:0(0) ack 1 win 10000 <mss 1000>
44+
+0 > . 1:1(0) ack 1
45+
+0 %{ print "State@2", tcpi_state }%
46+
// TCP State is now ESTABLISHED
47+
48+
+1 < R 1:1(0) ack 1 win 229
49+
50+
// Reset sysctls
51+
`/tmp/sysctl_restore_${PPID}.sh`
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//
2+
// enforce strict segment checking (and turn off gso) to measure probe length
3+
--strict_segments
4+
--ip_version=ipv6
5+
--local_ip=fd::1
6+
--gateway_ip=fd::2
7+
--remote_ip=fd::3
8+
9+
10+
`../common/defaults.sh
11+
ip -6 route change fd::3 via fd::2 dev tun0 advmss 1000 mtu lock 1460 initcwnd 4
12+
ethtool -K tun0 gso off tso off
13+
../common/set_sysctls.py /proc/sys/net/ipv4/tcp_timestamps=0 \
14+
/proc/sys/net/ipv4/tcp_syn_retries=3 \
15+
/proc/sys/net/ipv4/tcp_synack_retries=3 \
16+
/proc/sys/net/ipv4/tcp_sack=0 \
17+
/proc/sys/net/ipv4/tcp_dsack=0 \
18+
/proc/sys/net/ipv4/tcp_frto=0 \
19+
/proc/sys/net/ipv4/tcp_reordering=3 \
20+
/proc/sys/net/ipv4/tcp_congestion_control=reno \
21+
/proc/sys/net/ipv4/tcp_slow_start_after_idle=1 \
22+
/proc/sys/net/ipv4/tcp_early_retrans=0 \
23+
/proc/sys/net/ipv4/tcp_recovery=0 \
24+
/proc/sys/net/ipv4/tcp_ecn=0 \
25+
/proc/sys/net/ipv4/tcp_fastopen=0 \
26+
/proc/sys/net/ipv4/tcp_window_scaling=0 \
27+
/proc/sys/net/ipv4/tcp_rmem="64000 64000 64000" \
28+
/proc/sys/net/ipv4/tcp_wmem="64000 64000 64000" \
29+
/proc/sys/net/ipv4/tcp_retries1=3 \
30+
/proc/sys/net/ipv4/tcp_retries2=3 \
31+
`
32+
33+
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
34+
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
35+
+0 bind(3, ..., ...) = 0
36+
+0 listen(3, 1) = 0
37+
38+
//TCP three-way handshake
39+
+0 < S 0:0(0) win 4000 <mss 1000>
40+
+0 > S. 0:0(0) ack 1 <...>
41+
42+
+.1 < . 1:1(0) ack 1 win 4000
43+
+0 accept(3, ..., ...) = 4
44+
45+
// write ten bytes
46+
+0 write(4, ..., 10)=10
47+
+0 > P. 1:11(10) ack 1
48+
+.1 < . 1:1(0) ack 11 win 4000
49+
50+
// read two bytes
51+
+.1 < P. 1:3(2) ack 11 win 4000
52+
+0 > . 11:11(0) ack 3
53+
+.2 read(4,...,1000)=2
54+
55+
//Packetdrill closes connection gracefully
56+
+0 < F. 3:3(0) ack 11 win 4000
57+
+0 > . 11:11(0) ack 4
58+
59+
//Kernel closes connection gracefully
60+
+0 close(4) = 0
61+
+0 > F. 11:11(0) ack 4
62+
+0 < . 4:4(0) ack 12 win 4000
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
// O. Bonaventure, 2019
2+
// This script demonstrates the utilisation of Fast retransmit
3+
// and RTO with a simplified TCP stack
4+
//
5+
// enforce strict segment checking (and turn off gso) to measure probe length
6+
--strict_segments
7+
--ip_version=ipv6
8+
--local_ip=fd::1
9+
--gateway_ip=fd::2
10+
--remote_ip=fd::3
11+
12+
13+
`../common/defaults.sh
14+
ip -6 route change fd::3 via fd::2 dev tun0 advmss 1000 mtu lock 1460 initcwnd 16
15+
ethtool -K tun0 gso off tso off
16+
../common/set_sysctls.py /proc/sys/net/ipv4/tcp_timestamps=0 \
17+
/proc/sys/net/ipv4/tcp_syn_retries=3 \
18+
/proc/sys/net/ipv4/tcp_synack_retries=3 \
19+
/proc/sys/net/ipv4/tcp_sack=0 \
20+
/proc/sys/net/ipv4/tcp_dsack=0 \
21+
/proc/sys/net/ipv4/tcp_frto=0 \
22+
/proc/sys/net/ipv4/tcp_reordering=3 \
23+
/proc/sys/net/ipv4/tcp_congestion_control=reno \
24+
/proc/sys/net/ipv4/tcp_slow_start_after_idle=1 \
25+
/proc/sys/net/ipv4/tcp_early_retrans=0 \
26+
/proc/sys/net/ipv4/tcp_recovery=0 \
27+
/proc/sys/net/ipv4/tcp_ecn=0 \
28+
/proc/sys/net/ipv4/tcp_fastopen=0 \
29+
/proc/sys/net/ipv4/tcp_window_scaling=0 \
30+
/proc/sys/net/ipv4/tcp_rmem="64000 64000 64000" \
31+
/proc/sys/net/ipv4/tcp_wmem="64000 64000 64000" \
32+
/proc/sys/net/ipv4/tcp_retries1=3 \
33+
/proc/sys/net/ipv4/tcp_retries2=3 \
34+
`
35+
36+
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
37+
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
38+
+0 bind(3, ..., ...) = 0
39+
+0 listen(3, 1) = 0
40+
41+
+.1 < S 0:0(0) win 50000 <mss 1000>
42+
+0 > S. 0:0(0) ack 1 win 20000 <mss 1000>
43+
+0 < . 1:1(0) ack 1 win 50000
44+
45+
+.1 accept(3, ..., ...) = 4
46+
// initial congestion window is 16KBytes
47+
// server sends 8000 bytes
48+
+0 %{ print "retransmissions @1: ",tcpi_bytes_retrans }%
49+
+.1 write(4, ..., 8000) = 8000
50+
+0 > . 1:1001(1000) ack 1
51+
+0 > . 1001:2001(1000) ack 1
52+
+0 > . 2001:3001(1000) ack 1 // lost
53+
+0 > . 3001:4001(1000) ack 1 // lost
54+
+0 > . 4001:5001(1000) ack 1
55+
+0 > . 5001:6001(1000) ack 1
56+
+0 > . 6001:7001(1000) ack 1
57+
+0 > P. 7001:8001(1000) ack 1
58+
59+
// client acks one segments
60+
+.1 < . 1:1(0) ack 1001 win 50000
61+
+0 < . 1:1(0) ack 2001 win 50000
62+
+0 < . 1:1(0) ack 2001 win 50000
63+
+0 < . 1:1(0) ack 2001 win 50000
64+
+0 < . 1:1(0) ack 2001 win 50000
65+
// server retransmits after three duplicate acks
66+
+0 > . 2001:3001(1000) ack 1
67+
+0 < . 1:1(0) ack 2001 win 50000
68+
+0 < . 1:1(0) ack 2001 win 50000
69+
// client acks retransmission
70+
+0 %{ print "retransmissions @2: ",tcpi_bytes_retrans }% // prints 1000
71+
+0 %{ print "RTO @2: ",tcpi_rto }% // prints 224000
72+
+.1 < . 1:1(0) ack 3001 win 50000
73+
74+
+.024 > . 3001:4001(1000) ack 1
75+
// client acks everything
76+
+.1 < . 1:1(0) ack 8001 win 50000
77+
78+
+2 < R 1:1(0) ack 8001 win 50000
79+
80+
81+
//`/tmp/sysctl_restore_${PPID}.sh`

exercises/packetdrill_scripts/frr.pkt

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// O. Bonaventure, 2019
2+
// This script demonstrates the utilisation of Fast retransmit
3+
// with a simplified TCP stack
4+
//
5+
// enforce strict segment checking (and turn off gso) to measure probe length
6+
--strict_segments
7+
--ip_version=ipv6
8+
--local_ip=fd::1
9+
--gateway_ip=fd::2
10+
--remote_ip=fd::3
11+
12+
13+
`../common/defaults.sh
14+
ip -6 route change fd::3 via fd::2 dev tun0 advmss 1000 mtu lock 1460 initcwnd 16
15+
ethtool -K tun0 gso off tso off
16+
../common/set_sysctls.py /proc/sys/net/ipv4/tcp_timestamps=0 \
17+
/proc/sys/net/ipv4/tcp_syn_retries=3 \
18+
/proc/sys/net/ipv4/tcp_synack_retries=3 \
19+
/proc/sys/net/ipv4/tcp_sack=0 \
20+
/proc/sys/net/ipv4/tcp_dsack=0 \
21+
/proc/sys/net/ipv4/tcp_frto=0 \
22+
/proc/sys/net/ipv4/tcp_reordering=3 \
23+
/proc/sys/net/ipv4/tcp_congestion_control=reno \
24+
/proc/sys/net/ipv4/tcp_slow_start_after_idle=1 \
25+
/proc/sys/net/ipv4/tcp_early_retrans=0 \
26+
/proc/sys/net/ipv4/tcp_recovery=0 \
27+
/proc/sys/net/ipv4/tcp_ecn=0 \
28+
/proc/sys/net/ipv4/tcp_fastopen=0 \
29+
/proc/sys/net/ipv4/tcp_window_scaling=0 \
30+
/proc/sys/net/ipv4/tcp_rmem="64000 64000 64000" \
31+
/proc/sys/net/ipv4/tcp_wmem="64000 64000 64000" \
32+
/proc/sys/net/ipv4/tcp_retries1=3 \
33+
/proc/sys/net/ipv4/tcp_retries2=3 \
34+
`
35+
36+
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
37+
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
38+
+0 bind(3, ..., ...) = 0
39+
+0 listen(3, 1) = 0
40+
41+
+.1 < S 0:0(0) win 50000 <mss 1000>
42+
+0 > S. 0:0(0) ack 1 win 20000 <mss 1000>
43+
+0 < . 1:1(0) ack 1 win 50000
44+
45+
+.1 accept(3, ..., ...) = 4
46+
// initial congestion window is 16KBytes
47+
// server sends 8000 bytes
48+
+0 %{ print "retransmissions @1: ",tcpi_bytes_retrans }%
49+
+.1 write(4, ..., 8000) = 8000
50+
+0 > . 1:1001(1000) ack 1
51+
+0 > . 1001:2001(1000) ack 1
52+
+0 > . 2001:3001(1000) ack 1
53+
+0 > . 3001:4001(1000) ack 1
54+
+0 > . 4001:5001(1000) ack 1
55+
+0 > . 5001:6001(1000) ack 1
56+
+0 > . 6001:7001(1000) ack 1
57+
+0 > P. 7001:8001(1000) ack 1
58+
59+
// client acks two segments
60+
+.1 < . 1:1(0) ack 1001 win 50000
61+
+0 < . 1:1(0) ack 2001 win 50000
62+
+0 < . 1:1(0) ack 2001 win 50000
63+
+0 < . 1:1(0) ack 2001 win 50000
64+
+0 < . 1:1(0) ack 2001 win 50000
65+
// server retransmits after three duplicate acks
66+
+0 > . 2001:3001(1000) ack 1
67+
+0 < . 1:1(0) ack 2001 win 50000
68+
+0 < . 1:1(0) ack 2001 win 50000
69+
// client acks everything
70+
+0 %{ print "retransmissions @2: ",tcpi_bytes_retrans }%
71+
+.1 < . 1:1(0) ack 8001 win 50000
72+
73+
74+
+2 < R 1:1(0) ack 8000 win 50000
75+
76+
77+
//`/tmp/sysctl_restore_${PPID}.sh`
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// O. Bonaventure, 2019
2+
// This script demonstrates a connect created by a client and immediately
3+
// closed without sending/receiving data
4+
//
5+
//
6+
// enforce strict segment checking (and turn off gso) to measure probe length
7+
--strict_segments
8+
--ip_version=ipv6
9+
--local_ip=fd::1
10+
--gateway_ip=fd::2
11+
--remote_ip=fd::3
12+
13+
14+
`../common/defaults.sh
15+
ip -6 route change fd::3 via fd::2 dev tun0 advmss 1000 mtu lock 1460 initcwnd 4
16+
ethtool -K tun0 gso off tso off
17+
../common/set_sysctls.py /proc/sys/net/ipv4/tcp_timestamps=0 \
18+
/proc/sys/net/ipv4/tcp_syn_retries=3 \
19+
/proc/sys/net/ipv4/tcp_synack_retries=3 \
20+
/proc/sys/net/ipv4/tcp_sack=0 \
21+
/proc/sys/net/ipv4/tcp_dsack=0 \
22+
/proc/sys/net/ipv4/tcp_frto=0 \
23+
/proc/sys/net/ipv4/tcp_reordering=3 \
24+
/proc/sys/net/ipv4/tcp_congestion_control=reno \
25+
/proc/sys/net/ipv4/tcp_slow_start_after_idle=1 \
26+
/proc/sys/net/ipv4/tcp_early_retrans=0 \
27+
/proc/sys/net/ipv4/tcp_recovery=0 \
28+
/proc/sys/net/ipv4/tcp_ecn=0 \
29+
/proc/sys/net/ipv4/tcp_fastopen=0 \
30+
/proc/sys/net/ipv4/tcp_window_scaling=0 \
31+
/proc/sys/net/ipv4/tcp_rmem="64000 64000 64000" \
32+
/proc/sys/net/ipv4/tcp_wmem="64000 64000 64000" \
33+
/proc/sys/net/ipv4/tcp_retries1=3 \
34+
/proc/sys/net/ipv4/tcp_retries2=3 \
35+
`
36+
37+
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 4
38+
+0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
39+
+0 setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
40+
41+
+0 connect(4, ..., ...) = -1 EINPROGRESS (Operation now in progress)
42+
+0 > S 0:0(0) <mss 1000>
43+
+0 %{ print "State@1", tcpi_state }%
44+
+.1 < S. 0:0(0) ack 1 win 10000 <mss 1000>
45+
+0 > . 1:1(0) ack 1
46+
+0 %{ print "State@2", tcpi_state }%
47+
48+
+.1 close(4)=0
49+
+0 > F. 1:1(0) ack 1
50+
+0 < . 1:1(0) ack 2 win 10000
51+
+.1 < F. 1:1(0) ack 2 win 10000
52+
+0 > . 2:2(0) ack 2
53+
// Reset sysctls
54+
`/tmp/sysctl_restore_${PPID}.sh`

0 commit comments

Comments
 (0)