Tempi di trasferimento FTP dolorosamente elevati, tempi di risposta interattivi di login troppo lunghi, ottenendo 1 mbps dalla vostra rete a 100 mbps. Anche se preferisco sempre dare la colpa alla rete, devo ammettere che a volte non è la rete.
La prima cosa da cercare quando si ha a che fare con un problema di prestazioni TCP è un problema Ethernet di basso livello e di gran lunga il problema più comune è un mismatch duplex. Ethernet può funzionare sia in modalità full o half duplex. In modalità full duplex sia l'adattatore del modulo che il dispositivo a cui è collegato, il suo link peer, (tipicamente uno switch ma non sempre) può trasmettere contemporaneamente. In modalità half duplex solo un lato può trasmettere. C'è una finestra temporale in cui entrambi i lati possono pensare di poter trasmettere e farlo, quando ciò accade viene dichiarata una collisione, entrambi i lati smettono di trasmettere, aspettano un tempo casuale e riprovano. È importante capire che, quando entrambi i lati sono in modalità half duplex, queste collisioni non riducono significativamente la velocità di trasmissione della rete.
In un mismatch duplex un lato è in modalità full duplex e il suo link peer è in modalità half duplex. Il lato in modalità half duplex può subire collisioni tardive e collisioni eccessive, questi tipi di errori riducono significativamente la produttività. Qualsiasi collisione tardiva o eccessiva è indice di un problema. Il rallentamento della rete può apparire sproporzionato rispetto al numero di collisioni tardive ed eccessive perché in una condizione di disallineamento duplex anche le collisioni normali ridurranno il throughput perché il link peer non ritrasmetterà il frame poiché non riconoscerà una collisione in modalità full duplex.
Allora, come si fa a capire se questo sta succedendo a te? Il "
netstat -interface
Il comando "comando" visualizzerà le statistiche che permetteranno di determinare se si sta verificando un disallineamento duplex. Nell'esempio seguente, le statistiche per l'adattatore attivo del comando #sdlmux.m16.11-3
sono visualizzati. Ho rimosso le statistiche per l'adattatore di standby per risparmiare spazio e ho aggiunto i numeri di linea.Se l'adattatore è in modalità half duplex, si vedranno i conteggi positivi nelle righe 25 (Transmit frame was deferred), 26 (Transmit frame after a single retry) e 27 (Transmit frame after multiple retry). Questi sono i normali contatori di collisione. Se vedete conteggi positivi nelle righe 24 (Trasmetti frame scartato, collisioni tardive) e/o 28 (Trasmetti frame scartato, riprova eccessiva) probabilmente avete o avete avuto un mismatch duplex. Questi contatori vengono azzerati solo quando l'adattatore viene azzerato, quindi i valori positivi sono un'indicazione che c'è stato un problema; i contatori che continuano a salire sono un'indicazione che si ha ancora un problema. Se l'adattatore è in modalità full duplex e si vede un valore positivo nella linea 32 (Receive frame scartati, CRC scadente) il link peer è probabilmente in modalità half duplex.
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
Come siete entrati in questo scenario di disallineamento bifamiliare? Naturalmente è possibile avere un dispositivo configurato per funzionare in modalità full duplex e il link peer configurato per la modalità half duplex MA lo scenario più comune è quello di avere un dispositivo configurato per il full duplex e il link peer configurato per l'auto-negoziazione. La maggior parte dei dispositivi configurati per il full duplex non si auto-negoziano e secondo le specifiche di auto-negoziazione il lato che cerca di auto-negoziare deve ricadere in modalità half duplex quando non vede il protocollo di auto-negoziazione dal link peer.
Di default gli adattatori Ethernet utilizzati da OpenVOS si auto-negozieranno, quindi a meno che il link peer non sia configurato anche per l'auto-negoziazione o per la modalità half duplex si otterrà un mismatch duplex. Per impostare un adattatore per una specifica modalità duplex è necessario aggiungere il parametro
“-duplex full”
oppure “-duplex half”
stringa al campo dei parametri nella voce devices.tin per l'adattatore. È necessario impostare anche la velocità. La OpenVOS Streams TCP/IP Administrator's Guide (R419) lo descrive in dettaglio.Un'ultima nota: se l'adattatore funziona a 1 gigabit, allora funzionerà anche in modalità full duplex. Nessuno supporta la modalità half duplex gigabit.