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

Re: [MMUSIC] I-D Action:draft-ietf-mmusic-rfc2326bis-19.txt



On Monday 08 December 2008 10:25:52 ext Christian Haas, you wrote:
> I'm just skimming through the spec and didn't find any reference to some
> functionality I hope that is not forbidden and requires the usage of
> reference numbers (i.e. CSeq):

> In our case of a RTSP server, a 'client' will have one TCP connection
> that controls several RTSP sessions; Without such reference numbers,
> this client would have to serialize all requests and wait for each
> response until it may proceed with any next request.

Requests always need to be serialized when using TCP, since we have only 
one "channel". You can pipeline outgoing requests without waiting for the 
response to the previous one.

> When 20 sessions 
> need to be created and for some reason the 10th resource needs some time
> to be set up, having a reference number this one doesn't affect the
> others since the responses can come back in any order and are properly
> assigned to the original requests.

The current spec requires that responses come in the same order as requests 
(section 12):

   (...) For RTSP where the relative order of requests will
   matter it is important to maintain the order of the requests.
   Because of this the the responding entity SHALL process the incoming
   requests in their sending order.  The sending order can be determined
   by the CSeq header and its sequence number.  For TCP the delivery
   order will be the same as the sending order.  The processing of the
   request SHALL also have been finished before processing the next
   request from the same entity.  The responses MUST be sent in the
   order the requests was processed.

I agree that CSeq would be useful, and even necessary, if response were not 
ordered. But they _are_ ordered, and hence CSeq is _useless_.

If you want a reference number, you can maintain a counter of request sent, 
and a counter of response received, and match them. As it happens, these 
counters will be equal to CSeq, except that you don't need to exchange them 
over the wire.

I would be very much against allowing disordered response, as it introduces 
horrible race condition in the protocol state machine: client and server must 
agree on the order of processing the requests.

> In some of our cases having the client open up a dedicated TCP
> connection per RTSP session is not an option (the client being a small
> embedded host). By the way, this would then also nullify the reason for
> having session identifiers at all.

Connection pooling does not require CSeq to work. And anyway, session 
identifiers are needed to switch control connection, for instance during a 
hand-over.

> I may have missed the point of your discussion whether a CSeq is useful
> or not [with only one session], but I don't see how to handle several
> sessions between one client and one server without.

CSeq equals the number of responses received this far. Hence sending it over 
the wire provide ABSOLUTE ZERO informations that is not already available 
otherwise. To put it another way, the entropy of CSeq is nul - it's pure 
waste.

-- 
Rémi Denis-Courmont
Maemo Software, Nokia Devices R&D
_______________________________________________
mmusic mailing list
mmusic at ietf.org
https://www.ietf.org/mailman/listinfo/mmusic