diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-03-18 12:18:19 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-03-29 15:35:38 +0200 |
commit | be5bbb9b06811b98f677460fd2b89001db580582 (patch) | |
tree | 51bdd9b9e918649776806605436fc2bde3878810 /README.md | |
parent | 3eb19cfd8a7c03920aeecae6692048429288af88 (diff) | |
download | passt-be5bbb9b06811b98f677460fd2b89001db580582.tar passt-be5bbb9b06811b98f677460fd2b89001db580582.tar.gz passt-be5bbb9b06811b98f677460fd2b89001db580582.tar.bz2 passt-be5bbb9b06811b98f677460fd2b89001db580582.tar.lz passt-be5bbb9b06811b98f677460fd2b89001db580582.tar.xz passt-be5bbb9b06811b98f677460fd2b89001db580582.tar.zst passt-be5bbb9b06811b98f677460fd2b89001db580582.zip |
tcp: Rework timers to use timerfd instead of periodic bitmap scan
With a lot of concurrent connections, the bitmap scan approach is
not really sustainable.
Switch to per-connection timerfd timers, set based on events and on
two new flags, ACK_FROM_TAP_DUE and ACK_TO_TAP_DUE. Timers are added
to the common epoll list, and implement the existing timeouts.
While at it, drop the CONN_ prefix from flag names, otherwise they
get quite long, and fix the logic to decide if a connection has a
local, possibly unreachable endpoint: we shouldn't go through the
rest of tcp_conn_from_tap() if we reset the connection due to a
successful bind(2), and we'll get EACCES if the port number is low.
Suggested by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -287,11 +287,9 @@ speeding up local connections, and usually requiring NAT. _pasta_: * ✅ all capabilities dropped, other than `CAP_NET_BIND_SERVICE` (if granted) * ✅ with default options, user, mount, IPC, UTS, PID namespaces are detached * ✅ no external dependencies (other than a standard C library) -* ✅ restrictive seccomp profiles (22 syscalls allowed for _passt_, 34 for +* ✅ restrictive seccomp profiles (25 syscalls allowed for _passt_, 37 for _pasta_ on x86_64) * ✅ static checkers in continuous integration (clang-tidy, cppcheck) -* 🛠️ rework of TCP state machine (flags instead of states), TCP timers, and code - de-duplication * 🛠️ clearly defined packet abstraction * 🛠️ ~5 000 LoC target * ⌚ [fuzzing](https://bugs.passt.top/show_bug.cgi?id=9), _packetdrill_ tests |