Vegas A是TCP Vegas的修改。 Vegas A中的A表示自适应。TCPVegas具有固定的alpha和beta值。因此,当它与TCP Reno连接时,并不会做得更好。因此,在Vegas A中,这些常数不是固定的,而是根据吞吐量和队列中的额外数据而变化。
首先,常数alpha和beta的值分别为1和3,即
α = 1 and β = 3
根据网络状况,Vegas A中的这些值会动态变化。 Vegas A的拥塞恢复和缓慢启动阶段与TCP Vegas相同。仅在避免拥塞时进行更改
该算法中使用的术语如下所述。
Tht = actual throughput at time t
Tht-rtt = actual throughput at previous rtt
在这种情况下,基于diff的值会出现三种情况,即队列中的额外数据,如下所示。
- 情况1 :
如果diff的值介于常数alpha和beta之间,即α <= diff <= β
然后,它也有两种情况,如下所示。
- 如果在时间t的实际吞吐量的值大于在时间t的实际吞吐量的值(t-rtt),即
Tht > Tht-rtt
然后,将窗口大小增加1,
cwnd = cwnd + 1
α = α +1, β = β + 1
- 如果在时间t的实际吞吐量的值小于或等于在时间t的实际吞吐量的值(t-rtt),即
Tht <= Tht-rtt
然后,不对α和β进行更新。
更改常量值是因为即使diff位于两个常量之间,吞吐量也会增加。
因此,网络没有得到充分利用,并且仍然有一些带宽剩余。因此,发送数据的速率增加了。
常数值会增加,因为随着吞吐量的增加,因此为了最好地利用可用带宽,我们必须增加alpha和beta值。
- 如果在时间t的实际吞吐量的值大于在时间t的实际吞吐量的值(t-rtt),即
- 情况2:
如果diff的值小于常数alpha,即α > diff
然后,具有以下三种情况。
- 如果alpha的值大于1并且在时间t的实际吞吐量的值大于在时间(t-rtt)的实际吞吐量的值,即
α > 1 and Tht > Tht-rtt
然后,将窗口大小增加1,
cwnd = cwnd + 1
- 否则,如果alpha的值大于1并且在时间t的实际吞吐量的值小于在时间(t-rtt)的实际吞吐量的值,即
α > 1 and Tht < Tht-rtt
然后将窗口大小减小1,并将alpha和beta的值都减小1,
cwnd = cwnd – 1, α = α -1, β = β -1
- 否则,如果alpha的值为1,即
α = 1
然后,将窗口大小增加1。
- 如果alpha的值大于1并且在时间t的实际吞吐量的值大于在时间(t-rtt)的实际吞吐量的值,即
- 情况3:
如果diff的值大于beta,即,diff > β
然后,“增加”将窗口的大小减小1,并将“ alpha”和“ beta”的值都减小1。
cwnd = cwnd -1 α = α - 1 β = β - 1
在Vegas A中,如果diff并不总是表示系统带宽利用率较低,则取一个较小的值,因为可能存在alpha取值较大的情况,但是当拥塞发生时,较小的吞吐量值仍会使diff小于α。因此,我们需要减小窗口大小以及alpha和beta的值。