Re: Why do we have or should have keep-alive packets?

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

 




So,

From all the thread so far

* I have some ideas of what RTP-like applications want. I'm not sure there is a need to send/receive a 0-byte Data packet as a way to make keep-alives happen. (To me, it seems RTP-NOP packets should not be re-encoded as 0-byte Data packet).

* I suggest the standard send/receive calls are not allowed to send null packets (although RFC4340 does allow it, is this right?).

* One option may be to call a socket function to ask DCCP to generate packets at least every "x" seconds. *IF* that's all that is needed that seems to me to be OK. If an APP (e.g. RTP) want to explicitly send something - then it could actually send a packet across the API.

* The last part is what should appear on the wire: IMHO, I think someone now needs to look at the Specs and how a receiver handles this in DCCP - to figure out what a receiver does when it gets a 0-byte DCCP Data packet, and therfore what the side-effects are. If these are in any way "odd" then we should be using a different packet format for this purpose (rather than over-loading an existing packet type).

Someone here can look at the final point, but that's not going to happen for a wee while (into April)

Gorry

Phelan, Tom wrote:

Hi Gorry,
See inline...
Tom P.

-----Original Message-----
From: Gorry Fairhurst [mailto:gorry@xxxxxxxxxxxxxx] Sent: Tuesday, March 27, 2007 10:58 AM
To: Arjuna Sathiaseelan
Cc: dccp@xxxxxxxx
Subject: Re:  Why do we have or should have keep-alive packets?

Arjuna Sathiaseelan wrote:

Dear Tom,
OK, so at least two of us agree that DCCP SHOULD NOT generate
DCCP-Data packets on its own (zero length or otherwise) :-).
:)

So nobody has yet explained why DCCP can't do this for it's own purpose (although I am not advocating this).

[Tom P.] I'm not saying that DCCP can't do keep-alives, just that it
shouldn't use zero-length DCCP-Data packets for that purpose.  DCCP-Data
packets are supposed to be for user data, usurping them for
DCCP-specific uses corrupts that.



Therefore it seems to me that applications MAY use zero-length packets
as they see fit.  The question left is "is RTP an application?"  To
me, RTP has many more of the characteristics of a transport protocol
>> than an
application, but it is consistently used over some transport protocol,
so what is it?


I think this has two perspectives:

1) From the RTP's point of view, it has characteristics of a transport
protocol, and infact RTP is a transport protocol for real-time

applications.

2)From the underlying transport protocol which carries the RTP

packets, RTP

would be considered as an application layer entity?



So, the model I think that Colin has in mind for RTP over DCCP (chime

in

if I get it wrong, Colin) is that a real-time application gives data

to

RTP, RTP wraps that data in RTP packets and gives that to DCCP, who
wraps the RTP packets in DCCP packets.  So from DCCP's point of view,
RTP is the application, and the (real) application has no way of
directly sending DCCP packets.  That says that RTP MAY send

zero-length

packets.


True. I think so too.


I got all that, until the last sentence, which didn't seem to make any sense at all. HOW can an application (or upper layer) send zero bytes of

data ... AFAIK, we no interfaces to do this, even if it were sensible, which I doubt.

[Tom P.] Well, one way would be to have an ioctl or sockopt to do it.
Another, riskier, way is to interpret a write with zero length as a
command to send a zero-length packet.  The protocol has the capability,
making an API for doesn't seem like a big deal :-).


One question that I still have is who is responsible for recognizing
idle and sending something?  Is it the RTP stack?  Or should the app
send a NOP packet that the RTP stack translates to a zero-length

packet?
No!

[Tom P.] No what?  App send a NOP that gets translated?  That seems
silly to me too.



I am trying to find answers to these questions too. Maybe Colin is the

right

person who can shed some light :).

Regards
Arjuna

[snipped]

?


Gorry








[Index of Archives]     [Linux Kernel Development]     [Linux DCCP]     [IETF Annouce]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [DDR & Rambus]

  Powered by Linux