¿El cubo de ráfaga hashlimit de iptables no se rellena?

¿El cubo de ráfaga hashlimit de iptables no se rellena?

Tengo entendido que se supone que el módulo hashlimit de netfilter implementa el algoritmo de depósito con fugas... estoy usando la siguiente configuración de iptables

iptables -A INPUT -s 207.[...] -m hashlimit --hashlimit-above 34722b/s \
--hashlimit-burst 600m --hashlimit-name hashlimitTable1 \
--hashlimit-htable-expire 604800000 -j DROP

esto funciona perfectamente para una única descarga grande de 700 MB, pero si espero tres horas después de que se complete la descarga y luego hago otra descarga, la regla sigue coincidiendo inmediatamente (sin ráfagas) y limita el ancho de banda a ~34kB/s.

y examinando cat /proc/net/ipt_hashlimit/hashlimitTable1programas después de la primera descarga grande

                     This seems to represent the burst "bucket" size
                      and it does go down and reach 0 after 600 MB
                      have been downloaded, but it never increases
                              no matter how long I wait.
                                       |
                                       |
604555 0.0.0.0:0->0.0.0.0:0 4194304000 0 1931967

¿Hashlimit no implementa el algoritmo del "depósito con fugas"? ¿O mi configuración es incorrecta?

deman 8 iptables-extensions|grep -e 'hashlimit-burst amount' -A 7

--hashlimit-burst amount
       Maximum  initial  number  of  packets to match: this number gets
       recharged by one every time the limit  specified  above  is  not
       reached,  up  to this number; the default is 5.  When byte-based
       rate matching is requested, this option specifies the amount  of
       bytes  that  can  exceed  the given rate.  This option should be
       used with caution -- if the entry expires, the  burst  value  is
       reset too.

esto indica que mi comportamiento esperado es correcto, pero tal vez deba asegurarme de que la regla coincida desde la perspectiva opuesta:

iptables -A INPUT -s 207.[...] -m hashlimit --hashlimit-upto 34722b/s \
--hashlimit-burst 600m --hashlimit-name hashlimitTable1 \
--hashlimit-htable-expire 604800000 -j ACCEPT;
iptables -A INPUT -s 207.[...] -j DROP;

Desafortunadamente, esto da como resultado exactamente el mismo comportamiento observado, incluso cuando se usa wget --limit-rate=1024 http://207.[...]/testFile.binpara descargar a una velocidad absurdamente baja de 1 KiBps durante más de 19 minutos, sin embargo, la cantidad máxima de tokens nunca aumenta por encima de cero y el ancho de banda después de esperar una hora adicional sin descargas aún está restringido. a ~34KBps...

He confirmado que el tiempo de caducidad, el intervalo de recolección de basura, htable-size y htable-max no tienen ningún efecto sobre el problema. Si hago que la expiración sea realmente corta, como 10 segundos, obviamente se restablecerá la ráfaga, pero eso resultaría en una violación del ancho de banda promedio.

información relacionada