tcp full sequence number wrap problem, breaks emulation
Brought to you by:
heidemann,
tom_henderson
Reported by Bob McConnell (rvm@cbord.com)
As I search for clues how to fix my problems, I found
this note in
> tcp-full.cc:
>
> * Some warnings and comments:
> * this version of TCP will not work correctly if
the sequence number
> * goes above 2147483648 due to sequence number wrap
>
> This problem is due to the use of signed integers for
a number of
> variables that should be unsigned. Has anyone fixed
this, or
> identified the scope of the changes needed? It
appears to be one of
> the triggers for my emulation failures.
Logged In: YES
user_id=1188103
I've encountered that problem, too, but took the lazy way
out and just didn't run extra long transfers. =)
It looks like curseq_ is a TracedInt defined in tcp.h. The
only reason this problem doesn't come up with one-way TCP
is that curseq_ represents packets there, but bytes in
Full-TCP.
The Traced{Int,Double} classes are defined in tclcl. I
guess we could add a TracedUnsigned? I can take a stab at
fixing this, but it will likely take me a while to get
around to it.
-Michele Weigle