[ECOS] Not responding to TCP SYN
Fri Dec 12 03:36:00 GMT 2003
You can decrease the maximum segment lifetime for the
TCP session. Once 2*msl expires, the session exits
FIN_WAIT state and becomes available again.
There's two ways to do it ...
1) tcp_msl is a global variable that defaults to 30sec
(I think!!). Since tcp_msl is a global variable, you
can have your application set it to a smaller value.
2) If you get the eCos from the CVS repository, Andrew
Lunn put in a sysctl interface that will allow you to
manipulate tcp_msl in a more standard way.
--- Lars Haugaard Kristensen <firstname.lastname@example.org> wrote:
> Thanks! This seems to be the problem. I'm not
> exactly a TCP shark :)
> Is there any way I can avoid having these sockets
> hanging in the FIN_WAIT
> state? As far as I can see, it requires that clients
> close their end of
> the socket gracefully. There is no way that I can
> guarantee that they will
> (I don't write the clients). Otherwise, this seems
> to me like an
> opportunity to perform DoS attacks.
> Increasing the number of sockets doesn't seem like
> an option. I don't need
> many concurrent connections. I just need to be able
> to handle a large
> amount of connections within a short time.
> I'm sorry if this is not eCos-specific.
> On Thu, 11 Dec 2003, Jay Foster wrote:
> > Sounds like you probabaly have exhausted your
> supply of sockets (they're all
> > in the FIN_WAIT state). You can try increasing
> the number of sockets.
> > Jay
> > -----Original Message-----
> > From: Lars Haugaard Kristensen
> > Sent: Thursday, December 11, 2003 12:59 PM
> > To: email@example.com
> > Subject: [ECOS] Not responding to TCP SYN
> > Hi list!
> > I've been working with eCos for a month or so, and
> I really like it so
> > far. Unfortunately, I'm having problems with TCP
> connections. I use eCos
> > from cvs (checkout from december 2nd). I have the
> same problem in both of
> > the following setups:
> > 1) Linux synthetic target, FreeBSD TCP/IP stack
> > 2) I386 PC target, I82559 NIC, OpenBSD TCP/IP
> > I run the server_test.c test (not modified) on the
> target machine. On the
> > client (a linux 2.4 machine) I run the following:
> > $ while true; do echo a | netcat target 7734; done
> > It works fine. The server sends a message like
> "Hello 10.0.0.2:31234",
> > reads "a\n", and closes the connection. However,
> after some number of
> > iterations the server stops responding. Then,
> after a while, it starts
> > responding again.
> > This has been tested in both setups. I have used
> tcpdump to try to figure
> > out what goes wrong. I've attached a trace file. I
> used the synthetic
> > target (10.0.0.3) and a linux host (10.0.0.2) when
> doing this trace. It
> > seems that after 15 succesfull connections, the
> target does not respond to
> > the 16th SYN packet. The client retries with an
> increasing delay, until it
> > finally gets a SYN ACK reply.
> > When running on i386 and using the OpenBSD stack I
> can connect 62 times
> > before it stops responding. Otherwise, the
> behaviour is the same. I tried
> > increasing the CYGPKG_NET_MEM_USAGE option with no
> > The target seems to still respond to icmp echo and
> arp requests while it
> > refuses to answer TCP SYN.
> > I have the same problem with my own applications.
> I have been unable to
> > make this work smoothly in any configuration.
> > Any suggestions to what is wrong? Could this be an
> eCos bug, or am I doing
> > something stupid? :)
> > Lars Kristensen
> Before posting, please read the FAQ:
> and search the list archive:
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss
More information about the Ecos-discuss