[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] Problems using TcpApp wit FullTcp



I also would like to take a look at your code. Currently I use a different
scheme to communicate between apps. eg.

1) create tcps
2) create apps
3) connect everything
4) if callback by app send , destroy app and close tcp
5) if tcp done, destroy self

This works fine as far as I can see (with a modificated tcp-full)
However it would be ineresting to use your code because the approach above
is probably not the most elegant way (it's easy to leave something behind)
I am also very interested in the reinitialisation code, because I have been
trying to implement that with no useable result.

So could you please send a copy of your source files (and maybe a simple tcl
script to demonstrate the procedure)

Mark Janssen

----- Original Message -----
From: Tarik Alj <[email protected]>
To: <[email protected]>
Cc: <[email protected]>
Sent: Tuesday, December 12, 2000 4:41 PM
Subject: Re: [ns] Problems using TcpApp wit FullTcp


> George,
>
> I'd be interested in using your code, then I could tell you if it passes
> our stuff :). We do not reuse agents but do maintain connections for long
time
> periods without sending stuff (basically we maintain a tcp connection open
for
> the duration of a VoIP call but only use it for signalling while
establishing
> the call and for tearing it up when the call is done). And yeah I have had
> problems with "done", Tcp basically was not in CLOSED state when killing
the
> agent.
> I also had problems with TcpApp::recv(), trying to delete curdata_ when
> it was actually null; this probably had to do with Tcp not being killed
> properly... Since TcpApp and FullTcp go hand in hand maybe there could be
some
> protection implemented there, 2c.
>
> >From the cvs-tree it says that Felix's fix has been incorporated as of
revision
> 1.81, so it should be working well as of ns-2.1b7. Plus a fix to the
reassembly
> queue in 1.83. Does your work applies to 1.83?
>
> Cheers,
>
> >
> >I've been using full-tcp a lot also, and experienced problems when
> >"re-using" the agents (mostly "hung" connections that would never
finish).
> >Secondly, the packet reassembly code I think is still buggy in that I
> >sometimes got the abort near the line that says "this should never
> >happen".
> >
> >I did three things:
> >
> >1) Added a "closed_ = 0" in reset (this is the same problem Tarik refers
> >to).  Without this fix, the "Agent/TCP done" proc is a one-shot, called
> >only once ever per agent.
> >
> >2) Added a "reinitialize" method callable from TCL, when essentially
> >returns the agent to a completely reinitialized state (identical almost
to
> >a newly created agent).
> >
> >3) Rewrote completely ReasseblyQueue::add(int, int, int) .. I tried for
> >several days to debug it and just could not.  I deduced from this that
the
> >code is much too complicated!  I of course think my rewrite is simpler
and
> >easier to understand (who doesn't?), and will contribute it to whoever
> >would like it.  I will caveat this with saying the validate suites claim
> >some problems after using my code, so it perhaps still has problems but I
> >haven't looked into it in detail.  There is the chance that with my code
> >the test suites are just "different", not "wrong", but I don't know that
> >yet.
> >
> >With these fixes, I have run literally 10's of millions of full-tcp
> >connections over the last couple of weeks, with no apparent problems.
> >
> >George
> >
> >
> > -George F. Riley ([email protected])
> >
>
>
> -Tarik