FTP传输时间高得令人痛苦,交互式登录响应时间太长,从100 mbps的网络中获得1 mbps的速度。虽然我总是喜欢责怪网络,但我不得不承认,有时不是网络的问题。
在处理TCP性能问题时,首先要寻找的是低级别的以太网问题,目前最常见的问题是双工不匹配。以太网可以在全双工或半双工模式下运行。在全双工模式下,模块的适配器和它所连接的设备,它的链路对等设备(通常是交换机,但并不总是)可以在同一时间传输。在半双工模式下,只有一方可以传输。有一个时间窗口,当双方都能认为可以传输并这样做,当发生这种情况时,就会宣布发生碰撞,双方都停止传输,随机等待一段时间,然后再尝试。需要了解的是,当双方都处于半双工模式时,这些碰撞并不会显著降低网络吞吐量。
在双工不匹配中,一方处于全双工模式,而其链路对等体处于半双工模式。处于半双工模式的一方可能会出现晚期碰撞和过度碰撞,这些类型的错误确实会显著降低吞吐量。 任何晚期或过度碰撞都是一个问题的迹象。网络速度减慢可能会出现与晚期和过度碰撞的数量不相称的情况,因为在双工不匹配的情况下,即使是正常的碰撞也会降低吞吐量,因为链路对等体在全双工模式下不会识别碰撞,所以不会重传帧。
那么如何判断这种情况是否发生在自己身上呢?在"
netstat -interface"命令将显示统计信息,以便您确定是否发生了双工不匹配。在下面的例子中,活动的适配器的统计信息为 #sdlmux.m16.11-3 接口都会显示。为了节省空间,我删除了备用适配器的统计数据,并添加了行号。如果适配器处于半双工模式,您将在第25行(传输帧被推迟)、第26行(单次重试后传输帧)和第27行(多次重试后传输帧)中看到正数。这些是正常的碰撞计数器。如果您在第24行(传输帧被丢弃,延迟碰撞)和/或第28行(传输帧被丢弃,过度重试)看到正数,您可能有或有双工不匹配。这些计数器只有在适配器复位时才会被重置,因此正值表明有问题;计数器继续上升表明您仍然有问题。如果适配器处于全双工模式,而你在第32行看到一个正值(接收帧丢弃,CRC不良),则链路对等体可能处于半双工模式。
1 netstat -interface #sdlmux.m16.11-3 2 3 Ethernet adapters are grouped 4 Number of failovers = 0 5 6 Active Device Statistics: 7 8 9 MAC Type : CSMA/CD10 MAC Address: 00:00:a8:43:52:2211 Device Name: #sdlmux.m16.11-312 Line Speed : 100 mb/s13 Line Duplex: Full-Duplex1415 MAC Statistics:16 Received frames : 2078318117 Received multicast and broadcast frames : 298437518 Received octets : 178791386919 Transmitted frames : 974701520 Transmitted octets : 278048581921 LAN Chipset re-initialized : 022 SQE error : 023 Transmit ring full : 024 Transmit frame discarded, late collisions: 025 Transmit frame was deferred : 026 Transmit frame after a single retry : 027 Transmit frame after multiple retry : 028 Transmit frame discarded, excessive retry: 029 Receive frame discarded, lack of buffers : 030 Receive frame discarded, improper framing: 031 Receive frame discarded, an overflow : 032 Receive frame discarded, bad CRC : 67433 Receive frame discarded, bad address : 034 Receive frame discarded, congestion : 035 36 MAC Summary:37 Transmitted frames : 974701538 Transmitted octets : 278048581939 Retransmitted frames : 040 Received frames : 2376755641 Received octets : 178791386942 Total of lost frames : 043 Partner Device Statistics: . . . . ready 08:35:14你是怎么进入这种双工不匹配的情况的?当然可以让一台设备配置为全双工模式运行,而链路对等体配置为半双工模式,但最常见的情况是让一台设备配置为全双工,而链路对等体配置为自动协商。大多数设备在配置为全双工时不会自动协商,根据自动协商规范,试图自动协商的一方在没有看到链路对等体的自动协商协议时,必须退回到半双工模式。
默认情况下,OpenVOS使用的以太网适配器将自动协商,因此除非链路对等体也配置为自动协商或半双工模式,否则你将得到一个双工不匹配。要为一个特定的双工模式设置适配器,你需要添加以下信息
“-duplex full” 或 “-duplex half” 字符串到适配器的devices.tin条目中的参数字段。你还必须设置速度。OpenVOS Streams TCP/IP Administrator's Guide (R419) 详细介绍了这一点。最后要说明的是,如果适配器以千兆运行,那么它也将以全双工模式运行。没有人支持半双工千兆。
