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/CD
10 MAC Address: 00:00:a8:43:52:22
11 Device Name: #sdlmux.m16.11-3
12 Line Speed : 100 mb/s
13 Line Duplex: Full-Duplex
14
15 MAC Statistics:
16 Received frames : 20783181
17 Received multicast and broadcast frames : 2984375
18 Received octets : 1787913869
19 Transmitted frames : 9747015
20 Transmitted octets : 2780485819
21 LAN Chipset re-initialized : 0
22 SQE error : 0
23 Transmit ring full : 0
24 Transmit frame discarded, late collisions: 0
25 Transmit frame was deferred : 0
26 Transmit frame after a single retry : 0
27 Transmit frame after multiple retry : 0
28 Transmit frame discarded, excessive retry: 0
29 Receive frame discarded, lack of buffers : 0
30 Receive frame discarded, improper framing: 0
31 Receive frame discarded, an overflow : 0
32 Receive frame discarded, bad CRC : 674
33 Receive frame discarded, bad address : 0
34 Receive frame discarded, congestion : 0
35
36 MAC Summary:
37 Transmitted frames : 9747015
38 Transmitted octets : 2780485819
39 Retransmitted frames : 0
40 Received frames : 23767556
41 Received octets : 1787913869
42 Total of lost frames : 0
43 Partner Device Statistics:
. . . .
ready 08:35:14
你是怎么进入这种双工不匹配的情况的?当然可以让一台设备配置为全双工模式运行,而链路对等体配置为半双工模式,但最常见的情况是让一台设备配置为全双工,而链路对等体配置为自动协商。大多数设备在配置为全双工时不会自动协商,根据自动协商规范,试图自动协商的一方在没有看到链路对等体的自动协商协议时,必须退回到半双工模式。
默认情况下,OpenVOS使用的以太网适配器将自动协商,因此除非链路对等体也配置为自动协商或半双工模式,否则你将得到一个双工不匹配。要为一个特定的双工模式设置适配器,你需要添加以下信息
“-duplex full”
或 “-duplex half”
字符串到适配器的devices.tin条目中的参数字段。你还必须设置速度。OpenVOS Streams TCP/IP Administrator's Guide (R419) 详细介绍了这一点。最后要说明的是,如果适配器以千兆运行,那么它也将以全双工模式运行。没有人支持半双工千兆。