Hello, Kristof.

20.05.2016 11:53, Kristof Provost пишет:
Hi Max,


On 19 May 2016, at 19:49, Max wrote:
The number of used frags (almost) never decreases. I don't have enough experience in programming. But I guess that the problem may be in "frag->fr_timeout = time_second;" in pf_fillup_fragment() (pf_norm.c). It should be "frag->fr_timeout = time_uptime;". Actually, I don't now the difference between those variables. So, correct me if I'm wrong.

I think you’re right. If I’m reading the code right time_second is unix time,
but time_uptime is the number of seconds the system has been up.

Either one should work, but we have to be consistent.
The rest of the code seems to use time_uptime, so this untested patch should fix your problem.

diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c
index a2841a2..dbc8818 100644
--- a/sys/netpfil/pf/pf_norm.c
+++ b/sys/netpfil/pf/pf_norm.c
@@ -374,7 +374,7 @@ pf_fillup_fragment(struct pf_fragment_cmp *key, struct pf_frent *frent,
                }

                *(struct pf_fragment_cmp *)frag = *key;
-               frag->fr_timeout = time_second;
+               frag->fr_timeout = time_uptime;
                frag->fr_maxlen = frent->fe_len;
                TAILQ_INIT(&frag->fr_queue);


I rebuilt the kernel. It seems the problem is gone.


P.P.S. I confirm the bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201519.

It’s on my list, but unfortunately it’s a very long list.

I'll wait for the patch. Thank you.


Regards,
Kristof

Here are some statistics:


# sh -c "while true ; do date; { vmstat -z; pfctl -si; } | sed -n '1p;/frag/p'; echo; sleep 5; done"
Fri May 20 13:07:11 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       0,     132,      71, 0,   0
pf frag entries:         40,   5000,       0,     600,     147, 0,   0
  fragment                               4            0.0/s

...

Fri May 20 16:07:16 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       0,     132,     761, 0,   0
pf frag entries:         40,   5000,       0,     600,    1531, 0,   0
  fragment                               4            0.0/s

Fri May 20 16:07:21 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       1,     131,     771, 0,   0
pf frag entries:         40,   5000,       1,     599,    1551, 0,   0
  fragment                               5            0.0/s

...

Fri May 20 16:07:56 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       1,     131,     771, 0,   0
pf frag entries:         40,   5000,       1,     599,    1551, 0,   0
  fragment                               5            0.0/s

Fri May 20 16:08:01 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       0,     132,     771, 0,   0
pf frag entries:         40,   5000,       0,     600,    1551, 0,   0
  fragment                               5            0.0/s

...

Fri May 20 16:11:12 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       0,     132,     771, 0,   0
pf frag entries:         40,   5000,       0,     600,    1551, 0,   0
  fragment                               5            0.0/s

Fri May 20 16:11:17 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       1,     131,     781, 0,   0
pf frag entries:         40,   5000,       1,     599,    1571, 0,   0
  fragment                               6            0.0/s

...

Fri May 20 16:11:42 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       1,     131,     781, 0,   0
pf frag entries:         40,   5000,       1,     599,    1571, 0,   0
  fragment                               6            0.0/s

Fri May 20 16:11:47 MSK 2016
ITEM                   SIZE  LIMIT     USED     FREE      REQ FAIL SLEEP
pf frags:               120,      0,       0,     132,     781, 0,   0
pf frag entries:         40,   5000,       0,     600,    1571, 0,   0
  fragment                               6            0.0/s

_______________________________________________
freebsd-pf@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-pf
To unsubscribe, send any mail to "freebsd-pf-unsubscr...@freebsd.org"

Reply via email to