summaryrefslogtreecommitdiff
path: root/test/scripts/1990-TCP-Fast-Open/1990
blob: 04b41a7af8b644f55439c7c6a987c057ec70f78b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# TCP Fast Open
#
# Linux:
# Both server and client-side TFO support must be enabled in the
# kernel, 'sudo sh -c "echo 3 > /proc/sys/net/ipv4/tcp_fastopen"'.
#
# A packet capture on the loopback interface will show the TFO
# option on the SYN, but the fast-output SMTP banner will not
# be seen unless you also deliberately emulate a long path:
# 'sudo tc qdisc add dev lo root netem delay 50ms'
# You'll need iproute-tc installed, for the tc command.
# You'll need kernel-modules-extra installed, or you get
# an unhelpful error from RTNETLINK.
# To tidy up:  'sudo tc qdisc delete dev lo root'
#
sudo perl
system ("tc qdisc add dev lo root netem delay 50ms");
****
#
# First time runs will see a TFO request option only; subsequent
# ones should see the TFO cookie and fast-output SMTP banner
# (currently on a separate packet after the server SYN,ACK but before
# the client ACK).
#
# The client log => lint.ex  should have a "TFO" element.
# Assuming this is the first run since boot, the a@test recipient will not.
#
sudo perl
system ("ip tcp_metrics delete 127.0.0.1");
****
#
# The server log <= line for b@test.ex  should have a "TFO" element, but
# this will only be obtained when the above delay is inserted into the
# loopback net path.
#
#
#
# FreeBSD: it looks like you have to compile a custom kernel, with
# 'options TCP_RFC7413' in the config.  Also set
# 'net.inet.tcp.fastopen.enabled=1' in /etc/sysctl.conf
# Untested.
#
exim -DSERVER=server -bd -oX PORT_D
****
#
exim a@test.ex
Testing
****
sleep 3
#
exim b@test.ex
Testing
****
sleep 3
#
#
sudo perl
system ("tc qdisc delete dev lo root");
****
#
killdaemon
no_msglog_check