尽管当前的网络已非常发达,但平时的工作生活中还是会遇到不少上网慢的情况,造成上网慢的原因多是因为“带宽窄,链路差”。
什么是带宽窄?
一种就是绝对意义的带宽窄,比如在光纤都已比较普及的情况下还用ADSL上网,就是真正的带宽窄了;
另一种则是相对的带宽窄,比如总带宽并不低,但是应用的人数较多、并发的流量较大,就造成相对的贷款窄。
尤其在企业级的网络应用中,发生相对性的带宽窄的情况特别常见,在这种情况下,在既有带宽条件不太好改变的情况下,通过部署应用交付进行网络优化,并打开其中一项“单边加速”功能成为了一种比较好的解决方式,有助于实现加速访问的效果。那么,什么是单边加速呢?国内知名应用交付企业太一星晨的技术哥对此进行了深入浅出的解读。
从TCP协议说起:了解上网慢的“元凶”
要想了解单边加速,首先还要从“TCP协议”说起。TCP是一种面向连接的、可靠的、基于字节流的传输通信协议,由IETF的RFC 793定义——RFC早在1981年就已经被提出了。
在传输数据之前,TCP需要在两个通信端之间建立起一个连接,即一个TCP通道。这就是TCP经典的“三次握手”:
客户端发出指令—> 服务器响应“收到指令”—> 客户端确认“服务器已收到指令的过程”
同时,在这三次握手过程中还包括MSS、时间戳、SACK、窗口等多种参数协议。直观看来,这个过程确实显得有些麻烦,不过,在早期网络带宽较小,传输速率较慢的时期,“TCP协议”却是一种非常靠谱的传输方式。
首先,TCP协议将要发送的数据根据字节进行编号,然后顺序发送出去,并等待对方的确认。如果一旦收不到对方的确认,TCP协议就会一而再、再而三的重新发送数据,直到收到确认信息为止。在早期网络环境下,这种方式是非常有必要的,因为网速太低,发生丢包也不足为奇了。
同时,TCP协议另一大突出特征是将发送的数据以字节为单位进行编号,并从TCP通道发送到对端。这就涉及到了TCP的流控,还有各种各样的窗口,以及一堆复杂的算法。
简单来说,当上网时,TCP总是试图使劲发数据,而一旦对方没收到(中间出现丢包、乱序或者延迟等情况),它又会主动将发送速度降到0,然后又一点一点试图再恢复,直到重新把数据塞满带宽。即使吞吐已经接近带宽了,TCP依然会慢慢增加数据的发送,直到又一次触发丢包点,然后又猛的降下来。
因此,实际的TCP的传输吞吐曲线是上下不停波动的。特别是在链路状态不好的情况下,波动的平均线往往被压得很低:一方面由于频繁触发丢包,一方面由于恢复速度缓慢(隔包确认)。
单边加速:如何让网络快起来?
如果说TCP协议是一名80后,那么单边加速就是一名00后,更了解这个时代主流需求特征。
在具体操作中,单边加速并不直接更改TCP协议栈,而是通过在转发报文中增加发送一些报文,来引导快速启动,触发快速重传、快速恢复等,从而达到加速的目的。
目前做单边加速一般是做如下改进:
1.在慢启动阶段,自动更改CWND的值;
2. 通过RTT的探测,更精确的预测到可能丢包的发生,提前触发快速重传,进入拥塞避免,实现了TCP的“满血复活”;
3. 更精确拥塞控制算法,让TCP的传输吞吐平均值更接近带宽;
4. 流量整形,避免乱序触发重复ACK,降低TCP传输速度。
由于这个修改过程只是通过设备自动修改TCP的协商参数,所以就不再需要客户端。
为了能清晰看到单边加速的效果,太一星晨技术哥特别展示了T-Force 应用交付设备在其公司办公网实网测试的效果对比。
在未开启单边加速时,公司宽带连接到国内几大主干网的长途网络数值分别是:联通223K/秒,电信456K/秒,铁通603K/秒;除铁通正常外,联通与电信都相对较慢。
未开启单边加速时测试结果
在开启单边加速后,几大主干网络的长途网络数值则发生了明显的变化,分别是联通联通437K/秒,电信638K/秒,铁通543K/秒;电信与铁通都达到了正常水平,联通虽然仍稍慢一些,但已比之前提升不少。
开启单边加速时测试结果
不过,太一星晨技术哥进一步指出,单边加速只能针对TCP的业务,对于视频、语音等基于UDP传输的数据是无法生效的。
此外,单边加速一般是在链路质量较差的网络环境下才能发挥显性的作用,在带宽足够的情况下,效果对比则不会太明显。但无论如何,开启单边加速,对网络优化终归还是会起到一定的效果,尤其是在网络带宽较低且一时间难以改变现状的情况下,通过应用交付部署并开启单边加速功能就不失为一项好的选择。