【问题标题】:When is forward error correction a good idea for packets?什么时候前向纠错对数据包来说是个好主意?
【发布时间】:2009-02-12 20:42:06
【问题描述】:

系统可以使用 UDP 并使用前向纠错来传输整个消息,而无需重新传输,即使丢失了一些数据包。这在实践中是否有效,或者额外的开销是否浪费太多?

【问题讨论】:

    标签: network-protocols error-correction


    【解决方案1】:

    我认为它对于语音 (VoIP) 等一些应用程序很有用,在这些应用程序中,您希望避免错误,并且您永远不想停止(重新传输 NAK 数据包)并等待(直到重新传输) .

    因此它可以在Real-time Transport Protocol UDP 风格之上实现。

    延迟会不会很糟糕?

    您是在问前向纠错是否会增加端到端延迟?如果是这样,我认为答案是否定的,但它确实增加了所需的带宽。

    我相信您总是需要一些延迟,以避免抖动;例如,您可能会说“让我们将整个语音通道延迟 200 毫秒,因此任何/每个数据包都可能需要 0 到 200 毫秒才能通过互联网,然后重新组装并通过 D-to-A 转换器发送另一端。”

    考虑到这些数字,没有前向纠错可能意味着,在每 200 毫秒的周期内,您发送 10 个数据包,每个数据包包含 20 毫秒的数据……如果一个数据包丢失,那就是一个间隙(故障)在另一端。

    然而,进行一些前向纠错可能意味着,在每 200 毫秒的周期内,您仍然发送 10 个数据包……每个数据包包含 20 毫秒的数据,加上已经在另一个数据包中传输的 10 毫秒的数据(或,也许您发送 30 个数据包而不是 20 个)。然后,如果任何单个数据包丢失,它所携带的数据将被冗余传送(其他两个数据包各有一半),这避免了解码输出中的任何故障。

    【讨论】:

    • 延迟会不会很糟糕?
    • 前向纠错不会引入延迟,它只是使用更多带宽。它不会延迟任何东西,也不意味着重新传输。
    【解决方案2】:

    对于存储介质(例如硬盘驱动器和光盘)也很有意义,因为您不能只返回源头来获取未损坏的数据。事实上,硬盘驱动器和光盘都非常广泛地使用前向纠错。

    前向纠错也广泛用于无线通信中,其中错误往往一次只删除几位。不是将整个数据包丢失为单个位错误,而是使用前向纠错来修复损坏的位。

    【讨论】:

      【解决方案3】:

      取决于应用程序。

      对于游戏等应用程序,纠错始终是必要的,因为即使丢失了一点数据也不会产生太大影响。

      但是,如果应用程序需要特定的有序数据,则需要进行某种纠错。

      不是“开销”的问题,而是“应用”的问题。

      【讨论】:

        【解决方案4】:

        简单的答案是,如果您通过高带宽、高延迟(即“长距离”)链路发送,前向纠错是有意义的。否则,它可能不会。

        【讨论】:

          【解决方案5】:

          当重传的“价格”高于您愿意支付的价格时。
          以卫星为例,它的传播时间很长,最好多发送几个字节,然后再发送一个数据包。

          【讨论】:

          • 问题是关于数据包级别的纠错,即发送更多的数据包来恢复丢失的数据包。
          猜你喜欢
          • 2011-07-13
          • 1970-01-01
          • 2011-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-23
          • 1970-01-01
          相关资源
          最近更新 更多