Check the values of these sysctl MIBS

net.inet.ip.fw.dyn_keep_states

net.inet.ip.fw.dyn_keepalive

net.inet.ip.fw.dyn_short_lifetime

net.inet.ip.fw.dyn_udp_lifetime

net.inet.ip.fw.dyn_rst_lifetime

net.inet.ip.fw.dyn_fin_lifetime

net.inet.ip.fw.dyn_syn_lifetime

net.inet.ip.fw.dyn_ack_lifetime

On Thu, Feb 11, 2021 at 7:09 AM Andriy Gapon <a...@freebsd.org> wrote:

>
> Recently we encountered an interesting issue at work.
> By accident our software started to quickly re-use a source TCP port when
> connecting to a remote system.  That is, after a graceful shutdown of a
> connection (two FINs, etc), the software would quickly establish an
> identical
> connection by re-using the same local port and connecting to the same
> remote
> end-point.
>
> That did not work well for the application :)
> We saw problems where packets from the second connection would be dropped
> by
> ipfw.  That happened because there would be no dynamic rule to let the
> packets
> through even though the first connection worked without any issues.
>
> From a quick glance at the code it seems that the TCP protocol state kept
> by
> ipfw for dynamic rules is "append-only".  That is, bits can be set in it
> but
> never cleared.  So, when the first connection is closed the dynamic has
> "both
> syn" and "both fin" bits.  When the second connection is established
> before the
> rule is expired, the rule is re-used for it, but its state remains the
> same.
> And its expiry time remains dyn_fin_lifetime.  I think that that opens a
> race
> between the expiry timer (running every second) and the connection's
> packets
> given the short lifetime.
>
> Maybe I misanalyzed the situation and it's probably very rare.
> But still it's a valid use of TCP, so maybe ipfw could support it better
> (e.g.,
> by detecting "syn" after "both fin").
>
> --
> Andriy Gapon
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>


-- 

"Well," Brahmā said, "even after ten thousand explanations, a fool is no
wiser, but an intelligent person requires only two thousand five hundred."

- The Mahābhārata
_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to