aboutsummaryrefslogtreecommitdiffstats
path: root/research/experiments/019-idle-links/ngtcp2/build.sh
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-29 16:13:48 +0100
committereunhhu <[email protected]>2026-09-29 16:13:48 +0100
commit1e562fb73527adb46a6ce8f4f302e22460aedf95 (patch)
tree1fda2af52fe8dee2232a00f82407c2f2ff5159a7 /research/experiments/019-idle-links/ngtcp2/build.sh
parent500ab6a026c5cb39e04ed74c0cbdf9d482035413 (diff)
downloadpure-1e562fb73527adb46a6ce8f4f302e22460aedf95.tar.gz
pure-1e562fb73527adb46a6ce8f4f302e22460aedf95.zip
Put ngtcp2 beside quinn in M5, as the design planned
ngtcp2 1.25.0 with OpenSSL 3.5's QUIC TLS (its ossl backend), fetched and built into build/third by ngtcp2/build.sh; drain.c does in C what the quinn harness does: one connection, one stream, "pure" and then the messages each after its u32 length, counted by the service, packets in GSO bursts. Its stream bytes are a function of their offset, so what ngtcp2 keeps to send again points into a pattern that never changes. run.py's drain_ngtcp2 measures both sides' CPU as drain_quic does. Five rounds each, both sides' CPU a message: 61 B Pure 0.280, ngtcp2 0.270, quinn 0.310 us; 1 KiB 2.62, 3.54, 3.94; 16 KiB 40.2, 54.4, 60.2.
Diffstat (limited to 'research/experiments/019-idle-links/ngtcp2/build.sh')
-rwxr-xr-xresearch/experiments/019-idle-links/ngtcp2/build.sh16
1 files changed, 16 insertions, 0 deletions
diff --git a/research/experiments/019-idle-links/ngtcp2/build.sh b/research/experiments/019-idle-links/ngtcp2/build.sh
new file mode 100755
index 0000000..e76017a
--- /dev/null
+++ b/research/experiments/019-idle-links/ngtcp2/build.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# ngtcp2 1.25.0 with its OpenSSL 3.5 backend, into build/third (not kept in
+# the repository), and drain.c against it: build/third/ngtcp2-drain.
+set -e
+root=$(cd "$(dirname "$0")/../../../.." && pwd)
+third=$root/build/third
+if [ ! -f "$third/prefix/lib/libngtcp2.a" ]; then
+ mkdir -p "$third"
+ [ -d "$third/ngtcp2" ] || git clone -q --depth 1 --branch v1.25.0 https://github.com/ngtcp2/ngtcp2 "$third/ngtcp2"
+ mkdir -p "$third/ngtcp2/b"
+ (cd "$third/ngtcp2/b" && cmake -DENABLE_LIB_ONLY=ON -DENABLE_OPENSSL=ON -DENABLE_SHARED_LIB=OFF -DBUILD_TESTING=OFF \
+ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$third/prefix" .. > /dev/null && make -s -j4 > /dev/null &&
+ make -s install > /dev/null)
+fi
+cc -O2 -g -std=c17 -Wall -Wextra -Werror -I"$third/prefix/include" "$(dirname "$0")/drain.c" \
+ "$third/prefix/lib/libngtcp2_crypto_ossl.a" "$third/prefix/lib/libngtcp2.a" -lssl -lcrypto -o "$third/ngtcp2-drain"