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

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



Rémi Denis-Courmont wrote:
On Monday 08 December 2008 10:25:52 ext Christian Haas, you wrote:
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.
But only regarding one session.


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.

...is "the same entity" meaning the client or the state machine that handles one session? If it is the client, then setting up 20 sessions with each requiring 5 seconds on the server to be set up will have the 20th prepared after 20*5 seconds. And only after that time, the first session will be available for some further control again.


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.
I agree with you that requests /regarding one RTSP session/ need to be in strict order, but I don't see a reason to impose this order down to the control connection. All I want and need is to control several sessions in parallel (and I don't only mean SETUP, all other methods as well) -- those regarding one session need to be ordered of course (serialized, always awaiting the response of the previous).


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 understand that for pooling CSeq isn't required, but it makes life (implementation) a bit easier, as described in the other mail. Personally, I wouldn't have that much problems without a CSeq (as I'm the server implementor), but I guess that some clients [of mine] might resort to abuse the first Timestamp field (which the server needs to mirror, like the CSeq). Assuming parallel control of sessions is allowed, reading message traces is a bit easier with simple sequence numbers than with complex session identifier. Though I have to admit, this is a mood point.

But apart from the form of referencing requests/responses to sessions, what about SET_PARAMETER and GET_PARAMETER, which are not required to be bound to a session and might only operate on given resources 'globally'? I'd also like to be able to control two or more different resources in parallel, having one operation not to wait for the completion of an operation on another resource. Without CSeq nor a Session, how can these responses be matched to the original request? If these transactions need to be strictly ordered as well, then RTSP is going to be very unpractical for two agents communicating about more than one resources/sessions.

Regards,
ch

_______________________________________________
mmusic mailing list
mmusic at ietf.org
https://www.ietf.org/mailman/listinfo/mmusic