This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RedBoot sequencenumber generation


>>>>> Roland =?iso-8859-15?q?Ca=DFebohm?= writes:

> On Dienstag, 16. März 2004 18:05, Mark Salter wrote:
>> >>>>> Roland =?iso-8859-15?q?Ca=DFebohm?= writes:
>> >
>> > Hello Mark,
>> > thanks for helping.
>> >
>> > In most cases it works, but if the initial sequencenumber, which
>> > is now a pseudo random number, is anyhow in the window of the
>> > TIME_WAIT connections of the host I get the old problem.
>> > The SYN packet don't get a responce and will be retransmitted
>> > on and on with the same sequencenumber.
>> 
>> Retransmitting the same seqnum with the SYN is okay. Interestingly,
>> the RFCs state that while in the TIME_WAIT state, the server refuses
>> connection requests using the same tcp socket pair. In the tcpdump
>> you sent, the second connection uses a different socket pair (port
>> 7800 vs 7801). Some BSD stacks are more stringent and refuse to reuse
>> the local port number while in TIME_WAIT. It looks like this is the
>> problem you are running into.
>> 
>> However, there is hope. Most BSD implementations allow a new
>> connection in TIME_WAIT iff the new seqnum is greater than the
>> final seqnum of the connection in TIME_WAIT. So, here's the same
>> patch, but with an extra manipulation of initial_seqnum when an
>> active close FIN is received from the server.
>> 

> Going back I think the not working connection was after a reboot
> of RedBoot. I tried multiple times and it worked and then I reseted
> RedBoot. The next try wasn't working. Then I think it is the same
> socket pair of a connection in TIME_WAIT used before rebooting.

> So at least after a reboot it is possible to come in this state,
> there must be a way out (I hope).

Hmm, I think that the only way out after a RedBoot reset is to
wait it out. After a reset, RedBoot would have no way to know how
to set the initial seqnum to get around the TIME_WAIT state on
the server.

RFC 1185 has some good discussion on this subject.

--Mark

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]