[Ns-developers] ns3 TCP merge candidate

Gustavo Carneiro gjcarneiro at gmail.com
Thu Jan 24 05:33:18 PST 2008


On 24/01/2008, Mathieu Lacage <mathieu.lacage at sophia.inria.fr> wrote:
>
> On Thu, 2008-01-24 at 11:46 +0000, Gustavo Carneiro wrote:
>
> > The correct design is IMHO to make applications only handle "fully
> > prepared" sockets, i.e. it should be the resonsibility of the client
> > code to create and connect the socket prior to handling it to the
> > Application class.  Then  the Application can just use SendTo (),
> > which works equally well for both stream and datagram sockets
> > (right?).
>
> SendTo on a stream socket should be prepared to the fact that a stream
> socket might send only part of the input packet so, it should be
> prepared to re-invoke SendTo with a part of the input packet.


Correction on my last post: Application should use Send(), not SendTo():

       If  sendto() is used on a connection-mode (SOCK_STREAM,
SOCK_SEQPACKET)
       socket, the parameters to and tolen are ignored (and the error
EISCONN
       may  be  returned when they are not NULL and 0), and the error
ENOTCONN
       is returned when the socket was not actually connected.  Otherwise,
the
       address  of  the  target is given by to with tolen specifying its
size.
       For sendmsg(), the address of the target is given by msg.msg_name,
with
       msg.msg_namelen specifying its size.

It's true what you say.  Application should be prepared to re-send part of a
packet in case Send() returns a size < packet.Size ().

However, I have to question a more basic assumption.  Why does Application
work with stream sockets at all?  At least for the onoff application it does
not make complete sense.  You ask it to send data at a specified data rate,
but TCP congestion/flow control will limit the data rate by which you can
send.  How will this interaction work?

-- 
Gustavo J. A. M. Carneiro
INESC Porto, Telecommunications and Multimedia Unit
"The universe is always one step beyond logic." -- Frank Herbert


More information about the Ns-developers mailing list