From ef41ffa3fd070200117c9828e69ee730a69d41d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0pa=C4=8Dek?= Date: Thu, 23 May 2024 11:25:54 +0200 Subject: [PATCH 1/2] Use valid DNS queries as largest UDP and TCP test payloads EDNS0 option PADDING is used to inflate the queries. Largest UDP payload over IPv4 is 65507 bytes, 65527 for the IPv6. We go with IPv4. Oversized payloads are already tested using largest TCP payload (65535 bytes). Generated with dnspython 2.6.1: import dns.message m = dns.message.make_query('.', 'TYPE666') print(len(m.to_wire(max_size=65535))) m.options.append(dns.edns.GenericOption(dns.edns.OptionType.PADDING, '\x00' * 65475)) print(len(m.to_wire(max_size=65535))) binary = m.to_wire(max_size=65535) import struct binary = struct.pack('>H', len(binary)) + binary open('output.blob', 'wb').write(binary) --- src/test/largesttcp.blob | Bin 65537 -> 65537 bytes src/test/largestudp.blob | Bin 65509 -> 65509 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/test/largesttcp.blob b/src/test/largesttcp.blob index 9608069073f1610ad9bcf4ecbfd893b429266a9e..8103923887005ece1103110af97e1730eb8e7c55 100644 GIT binary patch literal 65537 zcmeIuK@os35Cgz#hbKmArXH|`Dje{rkfUdV*-ReEcQfbJB6fFL^t%(s>h zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF d5FkK+009C72oNAZfB*pk1PBlyK!CvS1wQJi2p0eV literal 65537 zcmeIufdBvi0K*`E>ir;vP+`D;0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 vV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|q`YhlmgH diff --git a/src/test/largestudp.blob b/src/test/largestudp.blob index cf58abd2a021b3aabe0f851c42402d510f17ba9b..acfd065c4a8385ef66fcae0f711c35ffd10ca6d9 100644 GIT binary patch literal 65509 zcmeIuF%f_;5Cp&vLx~a0;32lKlOio15c1@0Fne>wUAy^Sy+y39wAk*N=l;~q8Apy< zLVy4P0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U fAV7cs0RjXF5FkK+009C72oNAZfB*pkzYzEU68Hzh literal 65509 zcmeIufdBvi00JO?&OsjJLZ~SQ3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd w0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%=cMFhd^m;s5{u From 1ef5b4117ec7bc5dc4ab46b4de717b3eb7387ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jerry=20Lundstr=C3=B6m?= Date: Mon, 27 May 2024 17:39:17 +0200 Subject: [PATCH 2/2] largest blobs - Add script to generate largest blobs --- src/test/Makefile.am | 6 ++++++ src/test/gen-largest-blob.py | 12 ++++++++++++ 2 files changed, 18 insertions(+) create mode 100755 src/test/gen-largest-blob.py diff --git a/src/test/Makefile.am b/src/test/Makefile.am index 155e9cf..1586fa9 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -8,6 +8,12 @@ CLEANFILES = test*.log test*.trs \ TESTS = test1.sh test2.sh test3.sh test4.sh test5.sh test6.sh test7.sh +largesttcp.blob: + $(srcdir)/gen-largest-blob.py 20065 65503 $(srcdir)/largesttcp.blob + +largestudp.blob: + $(srcdir)/gen-largest-blob.py 20065 65475 $(srcdir)/largestudp.blob + EXTRA_DIST = $(TESTS) \ datafile datafile2 updatefile datafile3 datafile4 datafile5 datafile6 \ empty.blob emptypayload.blob largesttcp.blob largestudp.blob \ diff --git a/src/test/gen-largest-blob.py b/src/test/gen-largest-blob.py new file mode 100755 index 0000000..64399bf --- /dev/null +++ b/src/test/gen-largest-blob.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 + +import sys +import dns.message +import struct + +m = dns.message.make_query('.', 'TYPE666') +m.id = int(sys.argv[1]) +m.use_edns(0, options=[dns.edns.GenericOption(dns.edns.OptionType.PADDING, '\x00' * int(sys.argv[2]))]) +binary = m.to_wire(max_size=65535) +binary = struct.pack('>H', len(binary)) + binary +open(sys.argv[3], 'wb').write(binary)