1*8a405552SWillem de Bruijn#!/bin/bash 2*8a405552SWillem de Bruijn# SPDX-License-Identifier: GPL-2.0 3*8a405552SWillem de Bruijn# 4*8a405552SWillem de Bruijn# Set standard production config values that relate to TCP behavior. 5*8a405552SWillem de Bruijn 6*8a405552SWillem de Bruijn# Flush old cached data (fastopen cookies). 7*8a405552SWillem de Bruijnip tcp_metrics flush all > /dev/null 2>&1 8*8a405552SWillem de Bruijn 9*8a405552SWillem de Bruijn# TCP min, default, and max receive and send buffer sizes. 10*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_rmem="4096 540000 $((15*1024*1024))" 11*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_wmem="4096 $((256*1024)) 4194304" 12*8a405552SWillem de Bruijn 13*8a405552SWillem de Bruijn# TCP timestamps. 14*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_timestamps=1 15*8a405552SWillem de Bruijn 16*8a405552SWillem de Bruijn# TCP SYN(ACK) retry thresholds 17*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_syn_retries=5 18*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_synack_retries=5 19*8a405552SWillem de Bruijn 20*8a405552SWillem de Bruijn# TCP Forward RTO-Recovery, RFC 5682. 21*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_frto=2 22*8a405552SWillem de Bruijn 23*8a405552SWillem de Bruijn# TCP Selective Acknowledgements (SACK) 24*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_sack=1 25*8a405552SWillem de Bruijn 26*8a405552SWillem de Bruijn# TCP Duplicate Selective Acknowledgements (DSACK) 27*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_dsack=1 28*8a405552SWillem de Bruijn 29*8a405552SWillem de Bruijn# TCP FACK (Forward Acknowldgement) 30*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_fack=0 31*8a405552SWillem de Bruijn 32*8a405552SWillem de Bruijn# TCP reordering degree ("dupthresh" threshold for entering Fast Recovery). 33*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_reordering=3 34*8a405552SWillem de Bruijn 35*8a405552SWillem de Bruijn# TCP congestion control. 36*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_congestion_control=cubic 37*8a405552SWillem de Bruijn 38*8a405552SWillem de Bruijn# TCP slow start after idle. 39*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_slow_start_after_idle=0 40*8a405552SWillem de Bruijn 41*8a405552SWillem de Bruijn# TCP RACK and TLP. 42*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_early_retrans=4 net.ipv4.tcp_recovery=1 43*8a405552SWillem de Bruijn 44*8a405552SWillem de Bruijn# TCP method for deciding when to defer sending to accumulate big TSO packets. 45*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_tso_win_divisor=3 46*8a405552SWillem de Bruijn 47*8a405552SWillem de Bruijn# TCP Explicit Congestion Notification (ECN) 48*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_ecn=0 49*8a405552SWillem de Bruijn 50*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_pacing_ss_ratio=200 51*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_pacing_ca_ratio=120 52*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_notsent_lowat=4294967295 > /dev/null 2>&1 53*8a405552SWillem de Bruijn 54*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_fastopen=0x70403 55*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_fastopen_key=a1a1a1a1-b2b2b2b2-c3c3c3c3-d4d4d4d4 56*8a405552SWillem de Bruijn 57*8a405552SWillem de Bruijnsysctl -q net.ipv4.tcp_syncookies=1 58*8a405552SWillem de Bruijn 59*8a405552SWillem de Bruijn# Override the default qdisc on the tun device. 60*8a405552SWillem de Bruijn# Many tests fail with timing errors if the default 61*8a405552SWillem de Bruijn# is FQ and that paces their flows. 62*8a405552SWillem de Bruijntc qdisc add dev tun0 root pfifo 63*8a405552SWillem de Bruijn 64