Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

Cómo funciona SpeedTest y el resto de web que miden la velocidad

dserarols
1

Tengo una curiosidad técnica. ¿Alguien sabe cómo funcionan internamente las web que miden la velocidad de la conexiones como testdevelocidad o SpeedTest y si hay alguna diferencia importante? Y rizando más el rizo, ¿hay alguna diferencia con las medidas que hace, por ejemplo, la Playstation?

Lo que me gustaría averiguar, sin entrar demasiado en los detalles, es qué procesos intervienen. Por ejemplo, ¿se guardan datos en mi disco duro local, todo queda en la RAM? Mi idea es saber porque hay resultados tan dispares dejando de lado, evidentemente, que la red donde esté el servidor es muy determinante.

¡Gracias!

Afortunado de poder decir que mi vocación y mi profesión coinciden: redes, ordenadores, comunicaciones y nuevas tecnologías en general. Estoy aquí para aprender y si puedo, echar una mano.

Speedtest Iguana
rbetancor
3

De forma muy simplona, se basan en que conocen de antemano el tamaño del fichero a descargar, así que se ponen a descargarlo y el cliente (que es realidad quien mide), va actualizando los cálculos en tiempo real, según va recibiendo información de la red. Al final, te muestra una media de velocidad de descarga, basada en la simple división del tamaño del fichero entre el tiempo total que ha tardado en descargarlo.

Ya que saquen medidas más o menos precisas, latencias, jitters, etc… depende de lo complejo que sea el cliente de pruebas.

🗨️ 6
dserarols

Gracias, mis sensaciones iban por ahí.

La duda que tengo es, por ejemplo, si se escribe algo el el disco duro local (si lo hace, ¿con qué permisos? y entonces, mi velocidad se verá afectada por el rendimiento del disco, ¿no?)

🗨️ 5
rbetancor
3

No, no se escribe nada a disco, el cliente va descartando el contenido que descarga.

Si escribiese en disco, la medición de vería afectada por el rendimiento del disco.

🗨️ 1
dserarols

Ok, ¡gracias de nuevo!

License2Harm
1

No hay nada que te garantice que no se escribe en disco ya que no es difícil hacerlo y que no vea afectado el cálculo de la velocidad. Sin embargo, como no es algo que mejore el proceso, lo normal es que el disco no se use y sería algo muy raro.

Lo digo por si te preocupa que este tipo de tests escriban en disco.

🗨️ 1
dserarols

No es preocupación, es más por curiosidad.

djnacho
1

Como bien dice el compañero, no se escribe nada a disco, ya que siempre tendrás como límite la velocidad del dispositivo donde estés guardando los datos para realizar la descarga. Normalmente, lo que se suele hacer es utilizar un buffer en memoria, ya que la memoria tiene una velocidad de acceso ultra rápida, no limitada por el ancho de banda de las controladoras de almacenamiento. Eso lo hace el test de bandaancha.eu, mi propio test de BASpeed y aunque no tengo ni idea, seguramente lo hace speedtest.

dserarols

Muy interesante. ¡Gracias, Josh!

superllo
2

En el Firefox de Linux crea un espacio de varios gigas en la RAM para ir almacenando ahí los datos que descarga:

captura-pantalla-2020-07-13-11-09-49.webp
🗨️ 4
BocaDePez
BocaDePez

¿No utiliza Vd. espacio de intercambio? ¿Por qué? Todas las distribuciones lo recomiendan.

🗨️ 3
superllo
1

Porque tengo 12 gigas de RAM y no los lleno. Además solo tengo SSDs para almacenamiento y no es recomendable meter SWAP en esos dispositivos.

pepejil

Tú mismo lo has dicho, lo recomiendan. Pero no tiene por qué ser obligatorio si tienes un control sobre la memoria RAM que tienes instalada.

Además es dañino en SSD.

BocaDePez
BocaDePez

Gracias por sus respuestas.

Desconocía que fuera perjudicial para SSD (yo solo tengo SATA).

Un saludo.

djnacho

Te voy a explicar un poco como funciona internamente SpeedTest (sin revelar nada de rutinas internas). Lo primero de todo, speedtest tiene una base de datos de servidores con ficheros para poder realizar el test de velocidad. Esta base de datos se puede descargar de este enlace.

Si tenéis curiosidad de donde demonios he sacado esa lista de servidores, haciendo una simple búsqueda en Google con la frase "speedtest server list" (sin las comillas) muestra como primer resultado esa URL.

Esa URL devuelve un fichero XML que no es ni más ni menos que la base de datos de servidores mundial de speedtest. Cada linea representada por server url, es un servidor desde donde se puede realizar un test de velocidad. Como verás también en la base de datos, cada test está geoposicionado, de forma que cuando tu entras a speedtest, la propia página geoposiciona tu IP y busca los servidores que estén más cerca de tu IP (si tu ISP está listado también lo muestra y es el primero que se pone en la lista).

Ahora bien, tener una lista de servidores no nos sirve de nada sin datos que poder descargar para hacer el test. Esos datos provienen de los ficheros almacenados en dichos servidores. ¿Y cuales son? Pues es curioso, porque son imágenes de puntos aleatorios de unas determinadas dimensiones y archivos de texto enormes.

No se deberían ver esos archivos pero, en algún servidor si es posible ver los archivos a los cuales se accede. Un ejemplo es el de este servidor.

Como veis hay varios archivos JPG y TXT. Los archivos JPG se utilizarán probablemente para medir velocidades menores ya que los archivos grandes que pueden medir una velocidad de conexión grande (de 100 Mbps en adelante) serán probablemente los TXT (El JPG más grande es de 30 MB mientras que el TXT más grande es de 858 MB suficiente para medir cualquier conexión doméstica actual).

Bueno, pues teniendo el servidor y los archivos, únicamente queda medir el ping (es lo primero que mide speedtest) y luego la descarga y subida desde y hacia ese servidor. Los archivos de descarga ya los tenemos (en el párrafo anterior) y nos quedaría la subida, que sería generar un buffer en el cliente y desde ahí lanzarlo en bucle hacia el servidor del test de forma que mida la velocidad de subida.

A grandes rasgos, y sin desvelar rutinas internas de speedtest, esa es la forma en que se realizan los test de velocidad de speedtest. No es ningún misterio ya que se sabía de sobra que tienen un montón de servidores a nivel mundial y sólo quedaba saber como podían hacerlo (que visto lo visto, era lo previsible).

Un saludo 😊

PD: Todo lo que pongo en este hilo es accesible mediante URL's públicas y de acceso público, por lo que por si acaso alguien se lo pregunta, no estoy vulnerando nada (en todo caso, el orgullo de algún administrador de red, que se ha dejado algo abierto cuando debería estar cerrado, y que supongo que se cerrará en breve 😋).

dserarols

Fantástico, ¡muy interesante! ¡Mil gracias!

🗨️ 1
djnacho
1

No hay de que, para eso estamos 👍