1、引言
一直以来,网络和应用的SLA(Service Level Agreement,服务水平协议)都是通过下面的这些参数界定的:
(1)可用性。包括正常运行时间/停机时间、平均修复时间、保护倒换。
(2)性能。包括可用性(吞吐量)、链路突发性、服务完整性(丢帧率)、传输延迟(时延)、帧延迟变化(数据包抖动)。
尽管这些参数对于表征和界定SLA非常有用,但是它们只涵盖了最多到网络IP层的网络性能。借助这些参数,服务提供商和最终用户可知晓网络有传输帧的能力,但是不知道能让它们的关键应用达到什么级别的性能。
2、通信网络协议
为了成功交换信息,两台联网设备需要一系列协议,以允许应用进行通信。这一协议组就是TCP/IP,它由7层组成,每一层都有特定的功能并向更高的层提供服务。顶层即应用层利用它下面的层来与另一台终端设备通信,在这个过程中最重要的层就是传输层,因为它确保数据从网络层传输到应用层。
用户终端通常采用UDP(用户数据报协议)和TCP(传输控制协议)进行通信,这些协议也是TCP/IP协议栈的组成部分。根据运行的应用不同,采用的传输协议可能不同。如果应用是实时性的并且允许丢失少量的信息,将采用UDP,因为它简单、有效并且比TCP速度快。对于IPTV、VoIP或在线游戏等应用,它是非常合适的协议。但是,这种协议不具备TCP提供的可靠性和顺序保证,信息可能杂乱无章地到达或在没有通知的情况下丢失。如果应用需要在两台联网设备之间可靠和有效的传输,例如电子邮件、客户关系管理、企业资源规划和文件传输等应用,应采用TCP。
TCP比UDP更复杂,它有多个参数可进行配置以优化其利用率。可是,在不同的应用中使用的默认值会降低网络传输的性能,使服务提供商和最终用户在网络传输能力上出现争议。
3、网络的TCP吞吐量
在TCP中一些特定参数将影响设备在网络上有效传输信息的能力,如传输窗口的大小、传输段的大小以及重传超时。TCP外部参数也将影响其性能,其中环回延迟和丢帧率在TCP链路的运行中扮演最重要的角色。此外,如所使用的应用、TCP/IP栈的类型以及运行这些应用的计算机/服务器的性能等因素也会影响其传输性能。
从纯理论的角度看,TCP最大的吞吐量可通过公式(容量=带宽×环回时间,也称作带宽延迟乘积)定义。表1列出了基于40 ms环回时间的不同线路容量。
表1中“容量(字节)”这一列的理论值指示在任何给定的时间系统中的最大字节数,在此数值下能够最大化占满线路以及TCP可重新发送任何丢弃或错误的数据段。在标准的TCP应用中,传输窗口允许的最大容量是65535字节。也就是说在45 Mbit/s和更高的速率、环回时间为40 ms的情况下,运行普通TCP的服务器不能l00%占满线路。因此,除非将传输窗口扩展到超过65535字节,否则最终用户在40 ms环回时间下将无法以超过13.1 Mbit/s的速率传输数据。以上都是理论值,在现实网络中达不到这样的吞吐量。
表1 基于40 ms环回时间的不同线路容量
4、测试TCP性能的好处
如上所述,网络上的TCP性能取决于多个参数,那么服务提供商应该如何选择?服务提供商曾采用RFC 2544(网络互连设备的基准测试技术)中的方法进行测试。如果在网络上运行的应用基于UDP,此方法是评估网络性能的有效方式。吞吐量、丢帧、突发性和延迟测试是网络质量的全面快照,并以所有当前SLA为基础。但是,如果在网络上运行的应用基于TCP,此方法只能一般性地描述网络的好坏,无法评估最终用户将体验到的服务质量。
最终用户总是根据端对端模式测试TCP性能。他们的测试要么以运行他们应用的计算机/服务器提供的带宽统计数据为基础,要么使用软件仿真TCP通信。这样做会让他们得出服务提供商的网络有故障的结论,因为他们的测试结果显示他们获得的最大吞吐量与预期应该得到的带宽相差甚远。用来测试的软件工具运行在计算机和操作系统上,可是每个操作系统的设置并不一样,有些锁定了它们的TCP/IP堆栈并使用为TCP定义的基本分窗口方案,即65535字节;同时,这些软件工具受限于运行它们的计算机,计算机性能不佳导致测量结果也不理想。因此,这种测量并不能反映真正的网络性能。