Question About TCP Reassembly Inside VImages

Jason Fines jason.fines at
Sat Nov 22 05:52:16 PST 2008

Thanks Julian,

I suspect you are correct as nmbclusters is a system wide sysctl variable
set at boot time and although V_tcp_reass_maxseg is set per vimage it is the
result of a constant operation done on nmbclusters (nmbclusters / 16).

What I've described is what I suspect is the root of my problem.  The
manifestation of this problem is that TCP packets passing through my
vimage(s) are not reassembled when they are out of order and I get an
exceptionally high value reported by netstat -m stating that packets were
dropped due to "insufficient memory".  Posts I've found on the net point to
the reassembly queue length, which in the vimages is zero for some reason.

Perhaps this additional information will help clarify my exact problem.


On Sat, Nov 22, 2008 at 5:12 AM, Julian Elischer <julian at>wrote:

> Jason Fines wrote:
>> Hello all,
>> I've got a question about setting the sysctl variable
>> net.inet.tcp.reass.maxsegments to a non-zero value inside my vimages.  I'm
>> currently running the FreeBSD 7 with the VIMAGE package available at
>> My problem is with TCP reassembly support inside of the vimages, namely
>> with
>> the tcp.reass.maxsegments sysctl variable.  I've tracked down where in the
>> code the variable is set to line 122 in tcp_reass_init() of
>> netinet/tcp_reass.c: "V_tcp_reass_maxseg = nmbclusters / 16;".  The line
>> clearly reads that maxsegments should be set to "nmbclusters /16", in the
>> main OS (not in any vimage) the value is correctly set to 1/16 of what my
>> nmbclusters sysctl variable is set to.  However, inside all my vimages
>> nmbclusters is set correctly, while reass.maxsegments is incorrectly set
>> to
>> zero!!!
> V_tcp_reass_maxseg is a macro that hides the fact that
> tcp_reass_maxseg is a PER Vimage variable.
> Part of the patch
> is to make some sysctls be per-vimage. I do not know exactly
> about that one.. I suspect it is actually a read-only
> whole-system value, and not per vimage.
>> Is it possible that nmbclusters when read on line 122 of
>> netinet/tcp_reass.c
>> is zero?  Has anyone else experienced this problem?  Is TCP reassembly not
>> supported/tested inside vimages?
>> Any help in this area would be greatly appreciated.
>> Thanks,
>> Jason
>> P.S. This technology is phenomenal, and thanks to everyone who is involved
>> developing it.
>> _______________________________________________
>> freebsd-virtualization at mailing list
>> To unsubscribe, send any mail to "
>> freebsd-virtualization-unsubscribe at"

More information about the freebsd-virtualization mailing list