- From: Gunnar Hellstrom <gunnar.hellstrom@omnitor.se>
- Date: Wed, 05 Feb 2014 21:08:04 +0100
- To: "Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com>, Martin Thomson <martin.thomson@gmail.com>, Adam Bergkvist <adam.bergkvist@ericsson.com>
- CC: Web-rtc <public-webrtc@w3.org>
- Message-ID: <52F29A24.60707@omnitor.se>
On 2014-02-05 19:56, Makaraju, Maridi Raju (Raju) wrote: >> If an application opens a data channel and requests the unreliable type >> with maximum 7 retries. >> And it turns out that the reliable type by default makes maximum 5 retries. >> >> Will the channel establishment then accept to extend to 7 retries? >> Or what will happen? >> >> It looks a bit strange to have an unreliable channel that is more >> reliable than the reliable one. >> But without documentation about the default retries for the reliable >> channel this situation might very well happen because the application >> programmer does not know the figure. >> >> If it is agreed that it is illogical to set the unreliable channel more >> reliable than the reliable one, an addition to the API could say: >> "If the MaxRetries parameter is higher than the default maximum number >> of retries used for reliable channels, the channel will use the default >> number, but in other aspects perform as an unreliable channel (e.g. no >> channel disconnect after exceeded number of retries)." > [Raju] I want to point out one of the important characteristic of "reliable channel", which is if data can't be delivered (aftere set retransmissions) then the SCTP association is aborted and closed. This is per SCTP RFC 4960 "8.1. Endpoint Failure Detection"(http://tools.ietf.org/html/rfc4960#page-100). Good. This is my *assumption* of what would be the result of that failure. Please verify: It will cause an onerror callback. And an onclose as well? At least the onerror would need a reason parameter, indicating transmission error. What was successfully transmitted may approximately be judged by looking at the remaining sendbuffer. But there is always a risk that the receiver received something successfully but the sender never got the acknowledgement, so exact state cannot be judged. The receiving side will at least get an onclose callback. That will be either by signaling from the sender or by timeout on of heartbeats on the channel. There is also an ICE continuity check that can fail in bad communications environments and cause the SCTP association to abort and close. This can happen also for an unreliable channel. That type will be signalled by an onerror callback, and a parameter indicating the problem type. Both ends will get the indication and both reliable and unreliable channels will be closed. Note that heartbeats and ICE connectivity checks can cause failure also on idle channels. > But with "unreliable channel", data is attempted per retransmission parameters and the SCTP association stays up even if data can't be delivered after all the attempts are exhausted. > What this means is, by using unreliable channel a single chat message failure won't drop the entire chat session. > > So, IMHO, having unreliable data retransmitted more times than reliable is not bad and may be desired by some applications (e.g. retransmit faster and give up sooner) and it is upto the application to set those parameters diligently. Having said that, keeping a reasonable upper limit on # of retransmissions and retransmission interval makes lot of sense though; but tying them to reliable channel parameters is not needed. Yes, I realize that that is not as illogical as it first appears by the type names. Thanks Gunnar > > Regards > Raju
Received on Wednesday, 5 February 2014 20:08:42 UTC