Mercurial > hg > nginx
view auto/module @ 9138:a90f79792b5d
QUIC: optimized ACK delay.
Previously ACK was not generated if max_ack_delay was not yet expired and the
number of unacknowledged ack-eliciting packets was less than two, as allowed by
RFC 9000 13.2.1-13.2.2. However this only makes sense to avoid sending ACK-only
packets, as explained by the RFC:
On the other hand, reducing the frequency of packets that carry only
acknowledgments reduces packet transmission and processing cost at both
endpoints.
Now ACK is delayed only if output frame queue is empty. Otherwise ACK is sent
immediately, which significantly improves QUIC performance with certain tests.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 27 Jul 2023 16:37:17 +0400 |
parents | 4b1299b1856a |
children |
line wrap: on
line source
# Copyright (C) Ruslan Ermilov # Copyright (C) Nginx, Inc. case $ngx_module_type in HTTP_*) ngx_var=HTTP ;; *) ngx_var=$ngx_module_type ;; esac if [ "$ngx_module_link" = DYNAMIC ]; then for ngx_module in $ngx_module_name; do # extract the first name break done DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module" eval ${ngx_module}_MODULES=\"$ngx_module_name\" if [ -z "$ngx_module_order" -a \ \( "$ngx_module_type" = "HTTP_FILTER" \ -o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ] then eval ${ngx_module}_ORDER=\"$ngx_module_name \ ngx_http_copy_filter_module\" else eval ${ngx_module}_ORDER=\"$ngx_module_order\" fi srcs= shrd= for src in $ngx_module_srcs do found=no for old in $DYNAMIC_MODULES_SRCS do if [ $src = $old ]; then found=yes break fi done if [ $found = no ]; then srcs="$srcs $src" else shrd="$shrd $src" fi done eval ${ngx_module}_SRCS=\"$srcs\" eval ${ngx_module}_SHRD=\"$shrd\" DYNAMIC_MODULES_SRCS="$DYNAMIC_MODULES_SRCS $srcs" if test -n "$ngx_module_incs"; then CORE_INCS="$CORE_INCS $ngx_module_incs" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi libs= for lib in $ngx_module_libs do case $lib in LIBXSLT | LIBGD | GEOIP | PERL) libs="$libs \$NGX_LIB_$lib" if eval [ "\$USE_${lib}" = NO ] ; then eval USE_${lib}=DYNAMIC fi ;; PCRE | OPENSSL | ZLIB) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) libs="$libs $lib" ;; esac done eval ${ngx_module}_LIBS=\'$libs\' elif [ "$ngx_module_link" = YES ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done elif [ "$ngx_module_link" = ADDON ]; then eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \ $ngx_module_name\" srcs= for src in $ngx_module_srcs do found=no for old in $NGX_ADDON_SRCS do if [ $src = $old ]; then found=yes break fi done if [ $found = no ]; then srcs="$srcs $src" fi done NGX_ADDON_SRCS="$NGX_ADDON_SRCS $srcs" if test -n "$ngx_module_incs"; then eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\" fi if test -n "$ngx_module_deps"; then NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" fi for lib in $ngx_module_libs do case $lib in PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP) eval USE_${lib}=YES ;; MD5 | SHA1) # obsolete ;; *) CORE_LIBS="$CORE_LIBS $lib" ;; esac done fi