Fru*_*ate 7 video internet latency qos lag
我的室友是一名来自中国的国际学生,喜欢使用位于该地区(我们在美国东海岸)的网站在线观看中国电视节目。但这会导致我们的网络延迟高得离谱,在 ping 4.2.2.2 时达到约 400 毫秒,范围从 100 到 1000+(正常情况下为 20-40 毫秒)。不幸的是,她想在这个问题上装傻,所以我必须找到一种不需要她遵守的方法来解决这个问题。
我当前的路由器 (Netgear N150 WPN824N) 不支持 QoS 或任何具有它的流行自定义固件 (AFAIK)。所以我正在考虑购买一个更昂贵的内置 QoS 的路由器,或者一个更便宜的支持 Tomato、dd-wrt 或其他东西的路由器。但我不完全确定问题是什么,或者 QoS 是否会帮助它(即,人们在花钱之前最想知道的事情)。最有可能的罪魁祸首是 tv.sohu.com,它不是英文网站,而且视频内容大多受地区限制。所以我真正可以测试的是站点本身的延迟(距离我住的地方大约 350 毫秒)。我不知道这是否是带宽问题,或者该站点是否使用某种奇怪的自定义协议,或者其他任何可能是这里的因素。我不是网络人,所以除了高带宽消耗,我
不过,我确实知道我一开始的互联网连接一般。当我尝试从 Steam 下载游戏时,我的峰值速度约为 2.5 兆字节/秒,这会导致大量延迟。但是 2.5 mbps 是一个很大的带宽,我无法想象那个网站消耗那么多。
室友通过观看中文网站的视频而延迟互联网连接。QoS 可以解决问题吗?
我没有阅读你的整个故事,但根据你提出的问题,答案通常不是真的。在某些理想情况下,如果您使用某些高优先级服务(如 IP 语音)并且数据包被正确标记并且您的上游提供商尊重 QoS ,则 QoS 可能会部分解决问题。但是如果你的数据包和你室友的数据包的优先级相同,这对你没有帮助。
您想要的是某种Active Queue Management。
当你的室友看视频时会发生什么?好吧,您的共享路由器/调制解调器接收了大量数据。为了防止丢失这个以调制解调器可以接收的速度传入的数据,它在调制解调器内创建了一个越来越大的内部缓冲区,将所有数据包数据排队。
它必须这样做,因为它从多个地方(您的下载、室友的下载等)无序接收 IP 数据包,并且必须将这些部分重新组合在一起以形成完整的 TCP 数据包。所以它创建了这个巨大的缓冲区以避免丢失任何数据包;否则,如果缓冲区较小,则必须丢弃一些数据包,这可能导致需要重新发送数据。
不幸的是,一旦缓冲区超过一定大小,缓冲区的好处就会被其缺点所抵消。“膨胀”缓冲区的主要缺点是接收数据包时存在巨大的延迟。
延迟意味着发送或接收数据的应用程序必须等待极长的时间来确认它是否正确发送或接收。由于 TCP 套接字中的数据被另一方“确认”以确认“好的,我明白了!”,另一端可能会在一定的延迟后假设数据包丢失,并尝试重新发送反正。所以,大缓冲区的目标是防止重新发送,但在这样做的过程中,它导致了重新发送!!!每次重新发送只会消耗/浪费更多带宽,以及更多延迟。
从概念上讲,活动队列管理是一种尝试智能地限制缓冲区可以增长的大小的解决方案。通过保持缓冲区尽可能小,同时又足够大以防止大多数数据因等待无序数据包而丢失,您可以防止缓冲区膨胀。
研究人员多年来一直试图做的事情(我们在 2012 年 5 月才取得部分成功)是设计一种算法,无需任何手动用户配置或调整即可实现适当的主动队列管理 (AQM)(因为将是耗时且烦人的)。只是一种“灵丹妙药”,可以适当地平衡队列大小,以最大限度地减少数据包丢失并同时最大限度地减少延迟。
到目前为止,我们发现唯一在家用路由器上取得巨大成功的是受控延迟 (CoDel) 主动队列管理,它是 Linux 内核的最新成员。
CoDel 非常有用,因为它控制数据包的延迟(延迟)。对于这个问题,它是如何做到的有点太技术性了。
CoDel 上的一些链接,以便您可以阅读它:
编辑:QoS 只是解决方案的一半。基于端口的 QoS(例如给你的数据包更高的优先级)只会让你走这么远;它根本不会减少缓冲区膨胀,并且您的延迟仍然很高。但是您的丢包率可能会略有下降。
CoDel与QoS相结合,在您的路由器上使用CeroWRT,确实是最好的方法。
如果您 100% 确信该问题仅在室友播放视频时才会出现,那么 QoS 将帮助您解决此问题。
没有“来自中国的怪异协议”或任何可能扰乱您的延迟的东西。这都是为了让你的连接饱和。当排队的数据包数量超出了连接的处理能力时,每个数据包都必须“等待”,这显然需要 400 毫秒。
通过使用 QoS,您可以(为自己)留出足够的空间,以确保数据包能够通过,而无需在大量流视频数据包旁边排队。