TCP数据重传PK MRD冗余编码,哪个更优?

上周 与同事讨论这种冗余的 MRD 编码。

2 02 3 我的朋友从事自动驾驶工作。
他们的测试发现,MRD 的重传延迟比 TCP 低得多。

特别是 在5 G网络中,当MRD丢包率小于5 %时,剩余丢包率比TCP低3 个数量级。

但是有一个问题 如果丢包率持续高于2 0%,MRD的冗余数据会降低速度。

他们讨论了是否改变计划。
终于算账了 5 G网络丢包率基本稳定在2 %以下 使用MRD可以节省至少3 0%的带宽。
但是 有一个内置的系统团队坚持使用TCP重传。
他们说 MRD 太复杂 故障排除是一件令人头疼的事情。

算了 由你决定

CANoe自带的TCP_IP协议栈中TCP的重传参数是怎样的

嘿,兄弟,我们来谈谈CANoe的TCP/IP协议栈中继参数。
我以前做过一个项目,当时很难解释,但幸运的是我克服了这些问题,现在我可以告诉你。
我记得那是2 01 9 年,我们公司在成都用CANoe做了一个实验。
当时我正在配置TCP/IP协议栈,配置RTO和重传次数,真是头疼。

一开始我不太明白RTO(重传时间)的测量。
我认为只是设置一个值并在没有收到AKK时再次传递它。
后来了解到这个价格是根据RTT(往返时间)动态调整的。
CAoe 可以使用默认的固定值或更简单的算法。
比如我当时设置了一个初始RTO为1 秒,然后每次重传都可以大幅备份。

关于重传次数,CANoe默认是5 次,但我需要检查一下。
此时我需要使用CAPL语言写一些代码,模拟一个服务器,不返回ACK,看看客户端是如何传输的。

当时我搭建了一个测试环境,有两个节点,客户端和服务端。
我在客户端编写CAPL代码,通过Socket建立连接并发送数据包。
我直接在CAPL中写了oneethernetPacket来解析服务器端的TCP数据包,但没有发送ACK,迫使客户端重传。

然后我使用Wireshark捕获TCP流量,我看到,嘿,当然,我一开始没有收到ACK,1 秒后它开始重传。
每次重传,RTO 都会加倍。
在第五次重传时,会自动发送 RST 以重置连接。

这真的让我感到惊讶,特别是因为默认参数可能会根据 CANoe 版本而变化,你真的应该尝试一下。
我还记得服务器故意错过了第一个ACK,并观察到N+1 次重传触发了RST,因此我可以确定默认参数是否为真。

至于调试工具,我当时使用CANoe的Logging和Trace窗口来记录TCP事件,特别是RetransmitTimerExpired,非常有用。

最后,虽然CANoe尽管它默认使用可变 RTO 和 5 次重传,但值得通过模拟验证一些数字。
如果要修改参数,还是应该阅读文档或者配置协议栈的高级选项。
哎,话说回来,那个项目终于解决了,不过中间也很煎熬。
现在回想起来,这些都是宝贵的经历。
嘿兄弟,关于这个你有什么想了解的吗?

为什么TCP协议的重传率较高?

嘿嘿,你说的这些方法我都懂,但是具体用哪一种还要看情况。

我们来谈谈优化网络环境。
我在2 02 3 年负责这个项目,当时客户端吞吐量特别低,每次都有5 00ms的延迟。
我们希望提高吞吐量,但这是客户的预算。
于是我们就得想办法减少设备数量,关掉多余的交换机。
看来这样更有效。

另一个例子是设置 TCP 参数。
让我们这样做吧。
我的技术能力一般,不知道如何配置这些超时和窗口大小。
我记得有一次让运维同事做这个。
他表示,调整太大,网络会不稳定,调整太小,又容易重复。
我们需要找到一个平衡点。
这确实是一项技术工作。

还有UDP协议,我确实踩过。
曾经有一个视频直播项目,数据包的顺序尤为重要。
您认为观众观看屏幕跳跃的感受如何?我们尝试使用UDP,并收到了很多观众的投诉。
最后我又改成了TCP。
虽然中继速度有点高,但至少我能看。

网络加速软件,我时不时用一下。
比如浏览速度较慢的国外网站时,我就用这个,看起来确实更快。
但感觉这东西只是治标不治本。
网络本身不太好,起不了多大作用。

无论如何,都由你决定。
这取决于您的网络环境、数据的重要性以及您的预算。
我还在想...