Vegas A (改进的 TCP-Vegas)
TCP Vegas是一种改进的TCP Vegas算法。它依赖于往返时间(RTT)值的精确计算来确定基础RTT。TCP根据往返时间(RTT)在不同阶段检测并避免拥塞。这里的A代表自适应(Adaptive)。TCP Vegas更注重数据包延迟而不是数据包丢失。TCP Vegas算法最初由Larry L Peterson和Lawrence Brakmo于1994年提出。通过在传输过程中保持拥塞窗口较小,TCP Vegas能够在减少数据包丢失的同时获得更高的吞吐量。
定义
TCP Vegas是一种避免在不同初始阶段发生拥塞的算法,即TCP拥塞避免算法。TCP根据往返时间(RTT)在不同阶段检测并避免拥塞。
TCP Vegas能够检测网络拥塞,并能识别端到端测量往返时间(RTT)的问题。
拥塞避免机制
为了提高网络效率,需要估计可用的网络带宽。TCP利用网络反馈来控制网络流量速率。
TCP负责使用带宽估计方案检查带宽的可用性和最大使用量。
TCP拥塞避免算法是TCP Vegas,它更关注数据包延迟而不是数据包丢失。它决定数据包发送速率。
在当今世界,现代技术中涌现出更高效的拥塞控制技术,例如5G、物联网等,这些技术都使用了能够适应其性能的TCP Vegas。因此,TCP Vegas主要可见于最新的互联网中,而不是路由器或任何操作系统中。TCP Vegas比其他现有网络更稳定和公平。
TCP Vegas算法
TCP Vegas包含两个参数α和β。根据队列中数据差异的值,存在三种情况。
算法中使用的术语如下:
t时刻的实际吞吐率 = 在没有拥塞的情况下达到的数据速率。
t时刻的预期吞吐率 = 发生拥塞时的速率。
RTT = 往返时间。
差值(Diff) = 预期速率 – 实际速率
如果Diff值恒定,即位于α和β之间,则会出现两种情况:
情况一) − 如果Diff小于α,则窗口大小(cw)增加1。
情况二) − 如果Diff大于β,则窗口大小(cw)减少1。
这里α和β是阈值。
此外,如果RTT值很大,则窗口大小(cw)减小,这是由β阈值触发的,导致窗口大小减小。我们还可以看到由于队列中数据包负载过重而导致的拥塞。
如果RTT值较小,则窗口大小(cw)避免风险,这是由α阈值触发的。我们还可以看到队列为空。但是,需要避免不利用全部可用带宽的风险。因此,增加窗口大小(cw)。
由于TCP Vegas依赖于BaseRTT的精确值,如果BaseRTT值过小,则协议吞吐量将保持在可用带宽以下。
简单来说,如果数据队列过长,则网络中会发生拥塞。
而如果数据队列为空,则会存在不利用带宽的风险。阈值触发根据实际值和预期值的变化来避免拥塞。
与TCP Vegas相关的問題是重新路由
重新路由可能导致吞吐量大幅下降。如果交换机更改了路由,则在没有明确信号的情况下,它无法检测到终端主机。如果新路由的传播延迟较长,则TCP Vegas无法判断这是由于路由更改还是网络拥塞导致的往返延迟。但是,如果大部分数据包经历较短的往返延迟,则Base RTT将被更新。
由于积压,延迟会变短,但在恢复稳定后会再次变长。
TCP Vegas的优点
在TCP Vegas中,即使数据包丢失率为1/2到1/5,也能实现40%到70%的吞吐量。
它还有助于保持高吞吐量并避免不必要的数据包丢失。但是,我们需要注意在某些情况下保持参数优化性能和修改。
TCP Vegas的缺点
随着负载增加或路由器缓冲区数量减少,Vegas拥塞避免机制的效果不佳。
Vegas限制其对路由器缓冲区的利用,如阈值所指定,因此TCP Vegas在使用路由器缓冲区方面不够积极。
结论
TCP Vegas有助于提高网络性能。它减少了延迟并增加了吞吐量。通过有效地利用可用带宽,而不是积极地重传以实现吞吐量。吞吐量最小化,而传输最大化。
如果收到重复的ACK,则会发生重传过程。这有助于将窗口大小减小到一半。当我们将TCP Vegas与TCP Reno进行比较时,TCP Vegas的性能要好得多。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP