假设我只是一个用户,我正在优化我的上传数据包,而不是每个人的吞吐量。
假设你所在的网络带宽有限,因为用户太多。编写一个代理,多次发送每个传出的数据包,以提高上传速度,这样有效吗?据我所知TCP 允许多次接收数据包。似乎随机早期检测和类似的算法是在所有数据包被汇集(或没有?)之后运行的,因此路由器在执行 QoS 时不会知道这些数据包来自同一个用户,或者 QoS 可能默认配置错误。
目标是为我的数据包增加冗余度,这样路由器就不会丢弃单个数据包,而是将每个数据包发送两次。虽然数据包丢失率会增加,但一对相同的数据包被删除的可能性很小。
下面是一个示例来说明我的意思:
网络中每秒有 110 个数据包,其中 10 个是我的。路由器只能发送 100 个数据包。因此 10/110 * 100% = 9% 的所有数据包将被丢弃。我每秒丢弃的数据包的平均值是 10*0.09 = 0.9。
但是如果我每秒发送 20 个数据包,那么 20/120*100% = 17% 的数据包将被丢弃。20*0.17 = 3.4 个数据包将被丢弃。但是每个数据包都会发送两次,因此我们可以假设第一批数据包中平均有 1.7 个数据包将被丢弃,第二批数据包中平均有 1.7 个数据包将被丢弃。每 20 个数据包中的 3.4 个数据包很可能是不同的,因此我的所有数据包都会到达目的地。
答案1
如果您的上行链路拥挤,那么通过数据包倍增对其施加更大的压力将会降低您的上传速度。
重点是,路径上的所有基础设施都会像尝试第一次复制一样努力地尝试重复的数据包(你不需要真正到达),因此,虽然链路上的数据包比例较高,但你的实际上需要数据包较低。
答案2
你不可能通过发送更多数据来奇迹般地提高吞吐量。那将是一台永动机。
既然您提到设置代理,那么您可以做的就是压缩数据。如果您发送/接收的数据是可压缩的,则可以设置 VPN 或 PPP 隧道并启用压缩。OpenVPN、pppd 和您可以用于此目的的各种其他工具支持各种不同的压缩模式。如果您的代理比本地端点具有更多的带宽,这将提高您的吞吐量,但有效性在很大程度上取决于数据的可压缩性。如果您的大部分带宽已经被压缩数据(例如流媒体)占用,那么您从中获得的收益可能不足以使这项练习值得。