No obtener gigbit de un enlace gigabit?

Acabo de actualizar mi LAN a gigabit. Esto es lo que netperf tiene que decir sobre las cosas.

Antes de:

marcus@lt:~$ netperf -H 192.168.1.1 TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 10.02 94.13 

Después:

 marcus@lt:~$ netperf -H 192.168.1.1 TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 (192.168.1.1) port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 10.01 339.15 

¿Sólo 340 Mbps? ¿Que pasa con eso?

Información de fondo: Estoy conectando a través de un conmutador gigabit a un sheevaplug. Tengo cableado Cat5e en las paredes y la carrera es quizás 30 pies. Si no está familiarizado con netperf, tiene una tendencia a dar resultados muy estables y nunca mentir.

Echa un vistazo a este hilo . Uno de los colaboradores (Frennzy) esboza esto muy bien. Voy a citar:

La velocidad "real" de gigabit ethernet es …

1Gbps.

Es decir, transferirá bits a razón de mil millones por segundo.

Cuánto rendimiento de datos se obtiene está relacionado con varios factores diversos:

Conexión de la NIC al sistema (PCI vs PCIe vs Northbridge, etc).

HDD.

Contención del autobús.

Protocolo de capa 3/4 y gastos generales asociados.

Eficiencia de la aplicación (FTP vs. SMB / CIFS, etc.)

Tamaño del marco.

Distribución del tamaño del paquete (en relación con la eficiencia del rendimiento total)

Compresión (hardware y software).

Contención de búfer, ventanas, etc.

Capacidad y arquitectura de la infraestructura de red (número de puertos, capacidad del backplane, contención, etc.)

En resumen, no lo sabrás, hasta que lo pruebes. NetCPS es una buena herramienta para esto, al igual que muchos otros.

Y esto, más tarde en el hilo (mi resaltado):

Deja de pensar así. Detenlo ahora. Todos ustedes.

Por mucho que desee calcular kilo o mega byte por segundo de transferencia, el hecho es que es variable, incluso cuando la velocidad de la red sigue siendo constante. Red "velocidad" (bits por segundo) es absoluta. El rendimiento de la red (datos reales de la carga útil por segundo) no lo es.

Para el OP: ¿verá, en general, transferencias de datos más rápidas al cambiar de 100Mbps a 1000Mbps? Casi definitivamente. ¿Será en cualquier lugar cercano al máximo teórico? No. ¿Valdrá la pena? Eso es para que usted decida.

Si desea hablar sobre velocidades de red, hable acerca de las velocidades de red. Si desea hablar de rendimiento de datos, hable acerca del rendimiento de datos. Los dos no están atados juntos en una manera 1-1.

El término "máximo teórico" se lanza alrededor, pero tiene una aplicación práctica con tecnologías de Ethernet. En un sistema CSMA / CD como Ethernet, sólo se puede enviar alrededor de la mitad del ancho de banda de tráfico como el cable sostiene, a menudo un poco menos. La razón es porque una vez que intenta ir más allá de ese 'máximo', entonces los transceptores comenzarán a detectar colisiones más de lo que están transmitiendo paquetes. A continuación, el back-off exponencial entra en juego y la transmisión de paquetes se degrada aún más. Token ring consiguió alrededor de esto, pero tenía muchos de sus propios problemas y realmente no se utiliza mucho más, creo. Ethernet / IP se convirtió en el estándar de facto.

Las tecnologías de enlace ascendente, como T3, utilizan pares asíncronos que permiten el rendimiento completo en cada cable, pero tampoco es un protocolo basado en Ethernet.

Mientras esté utilizando dispositivos Ethernet estándar básicos, siempre habrá el 'máximo teórico'.

Hablar de CSMA / CD en el contexto de GbE es totalmente falsa. Gigabit Ethernet, o cualquier Ethernet "full-duplex", no utiliza CSMA / CD. Y aunque GbE todavía mantuvo la posibilidad teórica para la operación half-duplex, no estoy seguro de que haya algún kit de producción GbE real que haya hecho half-duplex.

En cuanto a por qué el OP sólo consiguió 300 bits Mbit / s a ​​través de un enlace de 1000 Gbit / s, sugeriría recopilar estadísticas netstat para TCP de antes y después de cada ejecución netperf e incluir las opciones de línea de comandos globales -c y -C Para ver cuál es la utilización de la CPU en ambos extremos. Tal vez algo está dejando paquetes, o tal vez la CPU de un lado o el otro se está saturando. Si los sistemas de cada extremo son multicore, compruebe definitivamente las utilizaciones por núcleo con una herramienta externa o vadear a través de la salida de depuración de netperf.

Otras preguntas netperf probablemente mejor dejar a la netperf-talk en netperf.org mailing list.