¿Qué otros factores afectan la velocidad de una conexión aparte de la latencia y la distancia física?

El rendimiento de la red es un tema muy complejo, ya que depende de muchos factores. La latencia por sí sola no es suficiente para explicarlo todo, pero es un indicador muy útil y puede usarse para comprender la velocidad percibida de la mayoría de las conexiones. Sin embargo, hay otros factores, algunos que contribuyen a la latencia y otros que pueden tener diferentes efectos en el rendimiento percibido.

Centrémonos en la red. El rendimiento del punto final (tanto el servidor como la estación de usuario) también es importante, pero lo resumiré aquí.

En primer lugar, tenga en cuenta que la latencia solo explica cuánto tiempo tarda un paquete de datos en viajar desde el origen hasta el destino. Los protocolos de la capa superior pueden comportarse de manera muy diferente, incluso para la misma latencia. TCP estará limitado por el algoritmo de ventanas. UDP puede seguir enviando datos a toda velocidad (y esa es una de las razones por las que se usa con frecuencia para la transmisión en vivo, donde la retransmisión de paquetes perdidos tiene poco sentido).

La latencia total es la suma de la latencia a lo largo de la ruta de transmisión, e incluye tanto el “tiempo de vuelo” (tiempo que pasa un paquete viajando por el cable o la fibra; esta es la parte que depende de la distancia física) y el tiempo total de procesamiento en cada uno de los nodos intermedios. Para cualquier ruta dada, una distancia más corta y tiempos de procesamiento / cambio más rápidos le brindarán un mejor rendimiento. Pero incluso una corta distancia puede implicar muchos saltos, lo que puede afectar el rendimiento.

Eso nos lleva a cambiar el tiempo . Hay varias cosas que se hacen en cada enrutador que pueden afectar su velocidad. La velocidad de procesamiento es una de ellas. Los enrutadores más antiguos se ejecutaban en software, e incluso algunos enrutadores modernos basados ​​en hardware todavía dependen de rutas de conmutación de software para algunos casos específicos. La encapsulación y la decapsulación también pueden llevar algún tiempo. Algunos protocolos requieren una encapsulación más compleja (recálculo de CRC, etc.) y pueden tomar más tiempo o requerir un hardware más rápido que otros protocolos. Otro factor es la codificación y decodificación complejas (+ corrección de errores), que se utilizan en algunos casos (xDSL y las radios de modulación adaptativa son buenos ejemplos). La codificación compleja puede imponer retrasos severos en cada salto, especialmente si el enlace está sujeto a ruido.

Si un enlace está congestionado, las políticas de colas serán un factor importante. El proveedor de servicios puede optar por priorizar cierto tráfico por alguna razón particular, ya sea técnica, política o puramente empresarial. Un factor similar es el almacenamiento en búfer realizado a nivel de interfaz. Incluso con varias colas, un enrutador puede descartar paquetes si está sujeto a una ráfaga de tráfico que no tiene forma de salir del enrutador. Los enrutadores 10GE más nuevos y de alta velocidad ahora cuentan con buffers de más de 1 GB de RAM por interfaz para adaptarse a eso.

En los últimos años se ha dicho mucho sobre la discriminación o la conformación del tráfico (y su contraparte, que es la neutralidad de la red). Tenga en cuenta que las colas simples no son lo mismo, porque las políticas de colas tienen más que ver con lo que sucede cuando el enlace ya está congestionado (y el rendimiento será malo de todos modos), y la discriminación de tráfico se realiza a un nivel mucho más alto (discriminando aplicaciones específicas como como P2P), mucho antes de que el enlace se congestione.

Por último, pero no menos importante, tiene la selección de ruta . Los usuarios finales rara vez piensan en ello porque no están expuestos directamente a él, pero impacta mucho en el rendimiento. Las redes reales tienen varias rutas posibles y elegir la “mejor” es probablemente la mejor manera de garantizar una velocidad óptima para cualquier conexión. Elegir un camino más corto o menos congestionado te dará un mejor rendimiento. El problema es que el enrutamiento de Internet se realiza a un nivel muy alto y es muy, muy difícil (o incluso imposible) ajustarlo para conexiones individuales. Las CDN abordan este problema utilizando una combinación de técnicas, que incluyen trucos de DNS, redirección de HTTP, IP Anycast y otras técnicas.

Al final, como puede ver, hay muchas cosas que afectan el rendimiento de la red. No es solo una cuestión de tasa de bits o latencia, aunque estos pueden ser los factores dominantes para algunos escenarios comunes. Hay mucho que saber para poder sintonizarlo. Y eso es todo abstrayendo servidores, equilibradores de carga y otras partes.

Carlos ya ha dado una explicación muy profunda de los factores que afectan el rendimiento de la red. Solo agregaría algunos puntos:

Las decisiones de enrutamiento de Internet también se basan en parte en los intereses comerciales de los ISP y su deseo de controlar la selección del próximo salto. Los ISP a menudo eligen enrutar el tráfico a través de rutas de red que tienen el mayor beneficio financiero para ellos y no se basan en métricas de rendimiento.

Las relaciones entre pares también pueden afectar el rendimiento de la red. Se sabe que los ISP proporcionan rutas de red de mejor rendimiento a sus pares pagos en comparación con sus pares libres de liquidación. También se han documentado casos de ISP que crean congestión artificial en algunos nodos de la red para cobrar tarifas premium a los proveedores de servicios por las rutas no congestionadas.

La selección de ruta BGP también juega un papel en la determinación del rendimiento de Internet. Sin embargo, esto se ha mitigado en cierta medida con la aparición de plataformas como Datapath.io.

Un problema realmente interesante que recientemente salió a la luz en este dominio es la idea de la acumulación de búfer. Aquí se menciona una de las mejores explicaciones que he visto:
http://arstechnica.com/tech-poli