【问题标题】:WebRTC channel reliabilityWebRTC 信道可靠性
【发布时间】:2019-06-15 00:16:50
【问题描述】:

我想检查一下我对 WebRTC 数据通道的理解是否正确,特别是通过将 orderedmaxRetransmitsmaxPacketLifeTime 属性更改为 RTCDataChannelInit 字典可以实现的不同类型的通道.我的以下假设是否正确:

  1. 创建一个可靠有序通道,类似于 TCP,但基于消息而不是流:
RTCPeerConnection.createDataChannel("label", {
    ordered: true 
});
  1. 创建一个可靠无序通道(是否也应指定maxRetransmitsmaxPacketLifeTime以实现可靠性?)
RTCPeerConnection.createDataChannel("label", {
        ordered: false    
});
  1. 创建一个不可靠无序通道,如UDP
RTCPeerConnection.createDataChannel("label", {
    ordered: false,
    maxRetransmits: 0
});
  1. 创建一个不可靠“sequenced”通道,即如果较晚的消息到达,较早的消息将被丢弃
RTCPeerConnection.createDataChannel("label", {
    ordered: true,
    maxRetransmits: 0
});

【问题讨论】:

    标签: webrtc rtcdatachannel rtcpeerconnection


    【解决方案1】:

    你所有的假设都是正确的。


    对于第一种和第二种情况,根据section 6.2 RTCDataChannel of WebRTC W3C Candidate Recommendation,不设置maxRetransmitsmaxPacketLifeTime 会导致可靠 通道,如下(我的粗体和斜体):

    RTCDataChannel 可以配置为在不同的可靠性模式下运行。可靠的通道确保数据通过重传传递到其他对等方。不可靠通道被配置为限制重传次数(maxRetransmits)或设置允许传输(包括重传)的时间(maxPacketLifeTime)。这些属性不能同时使用,尝试这样做会导致错误。 不设置任何这些属性会导致可靠的频道。


    第三种情况,即设置ordered: falsemaxRetransmits: 0,根据draft-ietf-rtcweb-data-channel-13 section 6.1创建类似UDP的unreliableunordered通道,如下(粗体和斜体是我的):

    o [RFC3758] 中定义的部分可靠性扩展必须是 支持的。除了定时可靠性 PR-SCTP 策略 在 [RFC3758] 中定义,在 [RFC3758] 中定义的有限重传策略 [I-D.ietf-tsvwg-sctp-prpolicies] 必须支持。 限制 重传次数为零并结合无序交付 提供类似 UDP 的服务,每个用户消息都在其中发送 仅一次并按收到的顺序交付。


    第四种情况,即设置ordered: truemaxRetransmits: 0,创建了一个不可靠有序("sequenced")通道.根据RFC 3758 section 1.3的一段话存在这种类型的频道,如下(我的粗体和斜体):

    1. 除了像 UDP 一样提供无序、不可靠的数据传输之外,PR-SCTP 还可以提供有序、不可靠的数据传输服务。

    关于第四种情况,我不知道"ordered"是如何在"unreliable"数据通道上实现的。但我认为https://jameshfisher.com/2017/01/17/webrtc-datachannel-reliability/ 的猜测是正确的。如果较晚的消息到达,接收者可能会丢弃较早的消息。

    根据RFC 3758 section 3.6的最后一段,这个猜测似乎是正确的,如下(我的粗体和斜体):

    请注意,在收到 FORWARD TSN 并更新累积 确认点,如果被跳过的 TSN 确实到达(即, 由于网络重新排序),那么接收器将遵循正常 RFC 2960 [2] 中定义的用于处理重复数据的规则。这 意味着接收者将丢弃该块并将其报告为 在下一个出站 SACK 块中重复。

    RFC 3758draft-ietf-rtcweb-data-channel-13 sectinon 5 引用,而WebRTC W3C Candidate Recommendation 又被WebRTC W3C Candidate Recommendation 引用。

    【讨论】:

      【解决方案2】:

      前三个假设正确,第四个假设不正确。

      根据 webrtc-pc 规范 maxPacketLifeTime 或 maxRetransmits 只能在不可靠模式下使用。

      https://www.w3.org/TR/webrtc/#dfn-maxretransmits

      第四种情况创建可靠有序的通道。

      更多信息 - https://www.html5rocks.com/en/tutorials/webrtc/datachannels/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-06
        • 2016-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 2018-02-14
        相关资源
        最近更新 更多