-
Notifications
You must be signed in to change notification settings - Fork 908
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dnsdist: add support for incoming DoQ #13280
Conversation
ab81558
to
bc1dc86
Compare
This seems fixed with dnspython >= 2.4.0, see rthalley/dnspython#954 |
One issue is that
|
e8f1e96
to
abcecbc
Compare
|
Why the per-version private directory? |
Sorry, that's a thinko. Multiple versions of the same product are irrelevant. Would still need one .so for each product. |
15c9b97
to
cecb4da
Compare
Ah, yes, good one! |
* ``idleTimeout=5``: int - Set the idle timeout, in seconds. | ||
* ``internalPipeBufferSize=0``: int - Set the size in bytes of the internal buffer of the pipes used internally to pass queries and responses between threads. Requires support for ``F_SETPIPE_SZ`` which is present in Linux since 2.6.35. The actual size might be rounded up to a multiple of a page size. 0 means that the OS default size is used. The default value is 0, except on Linux where it is 1048576 since 1.6.0. | ||
* ``maxInFlight=0``: int - Maximum number of in-flight queries. The default is 0, which disables out-of-order processing. | ||
* ``congestionControlAlgo="reno"``: str - The congestion control algorithm to be chosen between ``reno``, ``cubic`` and ``bbr`` |
Check failure
Code scanning / check-spelling
Unrecognized Spelling
3b50840
to
1116b9f
Compare
I pushed two commits:
|
209c3b7
to
563a0f7
Compare
For the record, this PR now builds Quiche for all supported distributions except el-7 ( |
918da60
to
a5ec588
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Basic local test looks good.
I'm seeing a few errors in the regression tests in debian bookworm:
FAILED test_Async.py::TestAsyncFFI::testAcceptThenDrop - doqclient.StreamRese...
FAILED test_Async.py::TestAsyncFFI::testDrop - doqclient.StreamResetError: St...
FAILED test_Async.py::TestAsyncLua::testAcceptThenDrop - doqclient.StreamRese...
FAILED test_Async.py::TestAsyncLua::testDrop - doqclient.StreamResetError: St...
FAILED test_RulesActions.py::TestAdvancedEDNSVersionRule::testBadVers - Asser...
======= 5 failed, 646 passed, 2 skipped, 7 warnings in 192.73s (0:03:12) =======
Also: the CI regression tests have quite some failures.
pdns/dnsdistdist/doq.cc
Outdated
{ | ||
/* don't keep that pointer around, it will be invalidated if the buffer is ever resized */ | ||
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) | ||
auto* dnsHeader = reinterpret_cast<struct dnsheader*>(unit->query.data()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should watch out for unaligned access here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have looked into this, and also other places where it might happen, which led to a pretty big commit: ca0346f I think we might want to make this a separate PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I pushed a new commit taking care of potential unaligned accesses in the DoQ code. I'll open a new PR for the existing code once we have merged this one.
Embedded BoringSSL does not build on OpenBSD and the quiche install script has some Linuxism and fixed target locations. It's a pity quiche does not seem to be packaged on the platforms I looked at. |
a5ec588
to
a161783
Compare
Do you mean |
|
5e266bb
to
d5d9573
Compare
Rebased on master to fix a conflict. |
There's an issue on macOS: while the link works and produces an executable, I get
when I try to run it. This is not a blocker for an alpha2 release as far as I am concerned. It appears that after renaming/moving a library, you need to use With that, dnsdist starts up and my QUIC tests work! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested this successfully on Debian bookworm and macOS and I read through the code (though not in great detail), saw two small nits in addition to my earlier comments that were already addressed. Great work!
Co-authored-by: Otto Moerbeek <[email protected]>
Co-authored-by: Otto Moerbeek <[email protected]>
Nice, I have pushed that change! I wonder what that tool does exactly, but that's a discussion for another day :) |
Pondering how to solve the OpenBSD build, might try not using the built-in BoringSSL and just link everything against the BoringSSL package, not using LibreSSL at all. |
Short description
A few items on the todo list:
Closes #9897
Checklist
I have: