Skip to content

Commit e60ce1c

Browse files
authored
Merge pull request #138 from joeysk2012/kernel-param
Add conditional sysctl config during install.
2 parents d538437 + 71b29dc commit e60ce1c

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

GNUmakefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
pkgname=amazon-ec2-net-utils
2-
version=2.7.1
2+
version=2.7.2
33

44
# Used by 'install'
55
PREFIX?=/usr/local
@@ -9,12 +9,13 @@ SYSTEMDDIR=${DESTDIR}/usr/lib/systemd
99
SYSTEMD_SYSTEM_DIR=${SYSTEMDDIR}/system
1010
SYSTEMD_NETWORK_DIR=${SYSTEMDDIR}/network
1111
SHARE_DIR=${DESTDIR}/${PREFIX}/share/${pkgname}
12+
SYSCTLDIR=${DESTDIR}/etc/sysctl.d
1213

1314
SHELLSCRIPTS=$(wildcard bin/*.sh)
1415
SHELLLIBS=$(wildcard lib/*.sh)
1516
UDEVRULES=$(wildcard udev/*.rules)
1617

17-
DIRS:=${BINDIR} ${UDEVDIR} ${SYSTEMDDIR} ${SYSTEMD_SYSTEM_DIR} ${SYSTEMD_NETWORK_DIR} ${SHARE_DIR}
18+
DIRS:=${BINDIR} ${UDEVDIR} ${SYSTEMDDIR} ${SYSTEMD_SYSTEM_DIR} ${SYSTEMD_NETWORK_DIR} ${SHARE_DIR} ${SYSCTLDIR}
1819

1920
.PHONY: help
2021
help: ## show help
@@ -37,6 +38,7 @@ install: ${SHELLSCRIPTS} ${UDEVRULES} ${SHELLLIBS} | ${DIRS} ## Install the soft
3738
$(foreach f,${SHELLLIBS},tgt=${SHARE_DIR}/$$(basename $f);\
3839
install -m644 $f $$tgt;${call varsubstlibs,$$tgt};)
3940
$(foreach f,${UDEVRULES},install -m644 $f ${UDEVDIR};)
41+
install -m644 sysctl/90-ena-tuning-defaults.conf ${SYSCTLDIR}/90-ena-tuning-defaults.conf
4042
$(foreach f,$(wildcard systemd/network/*.network),install -m644 $f ${SYSTEMD_NETWORK_DIR};)
4143
$(foreach f,$(wildcard systemd/system/*.service systemd/system/*.timer),install -m644 $f ${SYSTEMD_SYSTEM_DIR};)
4244

amazon-ec2-net-utils.spec

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: amazon-ec2-net-utils
2-
%define base_version 2.7.1
2+
%define base_version 2.7.2
33
%define source_version %{base_version}%{?_source_version_suffix}
44
Version: %{base_version}%{?_rpm_version_suffix}
55
Release: 1%{?dist}
@@ -39,21 +39,35 @@ make install DESTDIR=%{buildroot} PREFIX=/usr
3939
%{_bindir}/set-hostname-imds
4040
%dir %{_datarootdir}/amazon-ec2-net-utils
4141
%{_datarootdir}/amazon-ec2-net-utils/lib.sh
42+
/etc/sysctl.d/90-ena-tuning-defaults.conf
4243

4344
%post
4445

45-
setup_policy_routes() {
46+
setup_interfaces() {
4647
local iface node
48+
49+
# Apply global sysctl defaults for new interfaces
50+
sysctl -p /etc/sysctl.d/90-ena-tuning-defaults.conf >/dev/null || true
51+
4752
for node in /sys/class/net/*; do
48-
iface=$(basename $node)
49-
unset ID_NET_DRIVER
50-
eval $(udevadm info --export --query=property /sys/class/net/$iface)
51-
case $ID_NET_DRIVER in
52-
ena|ixgbevf|vif)
53-
systemctl restart policy-routes@${iface}.service
54-
systemctl start refresh-policy-routes@${iface}.timer
55-
;;
56-
esac
53+
iface=$(basename $node)
54+
unset ID_NET_DRIVER
55+
eval $(udevadm info --export --query=property /sys/class/net/$iface)
56+
case $ID_NET_DRIVER in
57+
ena|ixgbevf|vif)
58+
# Apply per-interface sysctl tuning or else we need to reboot.
59+
cat > /etc/sysctl.d/90-ena-tuning-${iface}.conf <<EOF
60+
# amazon-ec2-net-utils ENA tuning:
61+
net.ipv4.neigh.${iface}.delay_first_probe_time=1
62+
net.ipv4.neigh.${iface}.base_reachable_time_ms=5000
63+
net.ipv4.neigh.${iface}.retrans_time_ms=500
64+
net.ipv4.neigh.${iface}.ucast_solicit=0
65+
EOF
66+
sysctl -p /etc/sysctl.d/90-ena-tuning-${iface}.conf >/dev/null || true
67+
systemctl restart policy-routes@${iface}.service
68+
systemctl start refresh-policy-routes@${iface}.timer
69+
;;
70+
esac
5771
done
5872
}
5973

@@ -68,15 +82,22 @@ if [ $1 -eq 1 ]; then
6882
if [ -d /run/systemd/system ]; then
6983
systemctl stop NetworkManager.service
7084
systemctl start systemd-networkd.service
71-
setup_policy_routes
85+
setup_interfaces
7286
systemctl start systemd-resolved.service
7387
fi
7488
elif [ $1 -gt 1 ]; then
7589
# This is an upgrade, there's less setup to do, but we do want to
7690
# ensure we apply any configuration introduced by the new version
7791
systemctl daemon-reload
78-
setup_policy_routes
92+
setup_interfaces
7993
fi
8094

81-
%changelog
95+
%postun
96+
# Make sure to config is revertable upon downgrade if something goes south.
97+
if [ -f /etc/sysctl.d/90-ena-tuning-defaults.conf ]; then
98+
rm -f /etc/sysctl.d/90-ena-tuning-defaults.conf
99+
fi
100+
rm -f /etc/sysctl.d/90-ena-tuning-*.conf
101+
sysctl --system >/dev/null || true
82102

103+
%changelog

sysctl/90-ena-tuning-defaults.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# ENA tuning for EC2 networking
2+
net.ipv4.neigh.default.delay_first_probe_time=1
3+
net.ipv4.neigh.default.base_reachable_time_ms=5000
4+
net.ipv4.neigh.default.retrans_time_ms=500
5+
net.ipv4.neigh.default.ucast_solicit=0
6+
net.ipv4.tcp_syn_retries=3

0 commit comments

Comments
 (0)