TCP是一种可靠的传输层协议,它提供了全双工连接的字节流服务。TCP的带宽使它适合于远距离的IP网络,这种网络出现包丢失和包失序的可能性较大。真正是使TCP变得复杂的是流量控制和拥塞控制机制。流量控制和拥塞控制机制通常相互影响,所以对高性能的网络来时,进行适当的调整是十分重要的。这里我们就详细的介绍一下如何根据实际部署调整TCP。
在发送端调整TCP
在发送端进行TCP调整,能够控制注入网络和远端客户终端的数据的大小。有几个并发的机制,使得调整TCP变得更复杂。所以,为了更好的理解,我们将把这几个部分分开介绍,然后再介绍这些机制如何合并在一起工作。我们将介绍两个阶段:启动阶段和稳定状态阶段。启动阶段的TCP调整与我们能够向网络中发送数据包的速度有关。稳定状态阶段的TCP调整与TCP通信的其它方面有关,比如调整计时器,最大窗口大小,等等。
启动阶段
在启动阶段的调整中,我们介绍TCP发送者如何在一个特定连接上开始发送数据。新建连接的一个问题是不知道网络管道的传输能力。所以我们以这样的方式开始,以越来越快的速度发送数据包,直到我们知道网络的传输能力,然后再根据传输能力进行调整。宏观行为的改变需要手动的TCP调整,比如当我们在像无线网那样的低速信道中或者在10Gbit/sec这样的高速信道时。在最开始的时候就发送最大的数据包会造成灾难性的后果。最好是根据传输情况,慢慢的增加发送的速度。
在这一阶段,拥塞窗口比接收窗口要小得多。这说明发送者通过计算拥塞窗口并根据拥塞窗口大小限制发送的数据,控制着发送给接收者的流量大小。任何小的流量突增都可以被队列吸收。有三种重要的TCP可调参数:
tcp_slow_start_initial:在socket连接建立后,立即创建初始的拥塞窗口。
tcp_slow_start_after_idle:先休止一段时间,再初始化拥塞窗口。现在我们已经有了一些关于网络传输能力的预备知识,我们就可以直接告诉大家慢慢的增大拥塞窗口,而不必从头讲起了。
tcp_cwnd_max:限制运行的最大拥塞窗口。如果接收窗口增大了,那么tcp_cwnd_max也跟着增大到和接收窗口一样大。
在不同类型的网络中,你可以稍微调整这些参数的值,来控制你能够发送数据的速度。如果你的网络管道比较小,你可能就希望减少数据包,反之,如果你的网络管道比较大,你可能就希望加快发送数据包的速度,充分利用网络带宽。
稳定状态阶段
在稳定状态阶段,当情况稳定并且初始化的启动阶段完成以后,socket连接就达到相对稳定的状态,这时的调整就仅限于根据网络和客户端的拥塞情况减少延迟。我们必须以平均状况传输,因为网络和客户端数据的接收能力总会有一些波动。对这一阶段的TCP调整,我们看一下下面的网络属性:
传播延迟——这一属性主要受距离远近的影响。它表示一个数据包通过网络所需的时间。在广域网中,需要对这一属性进行调整使得尽量充分利用信道,增加允许发送的数据包。
连接速度——这一属性是网络管道的带宽。对56kbit/sec的拨号连接和10Gbit/sec的光学局域网,连接速度的调整方法是不同的。
总之,TCP的调整也要根据网络的类型和相关的主要属性(传播延迟,连接速度和错误率)而改变。有些情况下,这些属性也会通过评估返回的响应来进行自调节。我们将针对各种新型的网络技术:光学广域网、局域网、无线网,等等——介绍如何根据具体情况调整TCP。
本文来源:塞迪网 作者:佚名