Pregunta

Estoy creando una aplicación Ethernet en la que enviaré paquetes desde un lado y los recibiré por el otro.Quiero calcular el retraso en los paquetes en el lado del receptor como en RFC 3393.Así que tengo que poner marcas de tiempo en el paquete en el lado del remitente y luego tomar las marcas de tiempo en el lado del receptor tan pronto como recibo el paquete.Restando los valores obtendré la diferencia en marcas de tiempo y luego restando este valor con la diferencia subsiguiente obtendré un retraso de ipdv unidireccional. Ambos relojes no están sincronizados. Así que cualquier ayuda es muy apreciada.Gracias.

¿Fue útil?

Solución

RFC 3393 es para medir la diferencia en el retraso del paquete, no para medir el retraso en sí.

Para dar un ejemplo:estás escribiendo una aplicación de transmisión de video.Desea almacenar en búfer la menor cantidad de datos de video posible (para que el video comience a reproducirse lo antes posible).Digamos que los datos siempre siempre siempre Se necesitan 20 ms para llegar de la máquina A a la máquina B.En este caso (y suponiendo que la máquina A pueda enviar los datos de vídeo tan rápido como sea necesario reproducirlos), no necesita ningún búfer.Tan pronto como reciba el primer fotograma, podrá empezar a jugar, con la seguridad de saber que cuando se necesite el siguiente fotograma, ya habrá llegado (porque los datos siempre tardan exactamente 20 ms en llegar y la máquina A envía al menos la misma cantidad). rápido mientras juegas).

Esto funciona sin importar cuánto duren esos 20 ms, siempre que sean siempre iguales.Podrían ser 1000 ms: el primer fotograma tarda 1000 ms en llegar, pero aún puedes empezar a jugar tan pronto como llegue, porque el siguiente fotograma también tardará 1000 ms y se envió justo detrás del primer fotograma; en otras palabras, ya está en su camino y estaré aquí momentáneamente.Obviamente el mundo real no es así.

Tome el otro extremo:la mayoría de las veces, los datos llegan en 20 ms.Excepto a veces, cuando se necesitan 5000 ms.Si no mantiene ningún búfer y el retraso en los fotogramas del 1 al 50 es de 20 ms, podrá reproducir los primeros 50 fotogramas sin problemas.Luego, el fotograma 51 tarda 5000 ms en llegar y te quedas sin datos de vídeo durante 5000 ms.El usuario va y visita otro sitio para ver sus lindos videos de gatos.Lo que realmente necesitabas era un búfer de 5000 ms de datos; entonces habrías estado bien.

Ejemplo largo, punto breve:no te interesa lo que absoluto retraso en los paquetes, te interesa saber cuál es el diferencia en ese retraso es: así de grande debe ser su búfer.

Para medir el absoluto retraso, tendría que sincronizar los relojes de ambas máquinas.La máquina A enviaría un paquete con la marca de tiempo 12337849227 28 y cuando llegó a la máquina B en el momento 12337849227 48, sabrías que el paquete tardó 20 ms en llegar allí.

Pero como estás interesado en el diferencia, necesita (como describe RFC 3393) varios paquetes de la máquina A.La máquina A envía el paquete 1 con marca de tiempo 1233784922 72 8, luego 10 ms después envía el paquete 2 con la marca de tiempo 1233784922 73 8, luego 10 ms después envía el paquete 3 con la marca de tiempo 1233784922 74 8.

La máquina B recibe el paquete 1 en lo que cree que es la marca de tiempo 1233784922 12 8.En este caso (desde la perspectiva de la máquina B), el retraso unidireccional entre la máquina A y la máquina B ha sido -600 ms.Obviamente esto es una completa tontería, pero no nos importa.La máquina B recibe el paquete 2 en lo que cree que es la marca de tiempo 1233784922 15 8.El retraso unidireccional ha sido de -580 ms.La máquina B recibe el paquete 3 en lo que cree que es la marca de tiempo 1233784922 16 8.El retraso unidireccional fue nuevamente de -580 ms.

Como se indicó anteriormente, no nos importa cuál sea el retraso absoluto, por lo que ni siquiera nos importa si es negativo, tres horas o lo que sea.Lo que nos importa es que la cantidad de retraso varió en 20 ms.Entonces necesitas un búfer de 20 ms de datos.

Tenga en cuenta que aquí estoy pasando por alto por completo el tema de la deriva del reloj (es decir, los relojes de las máquinas A y B funcionan a velocidades ligeramente diferentes, de modo que, por ejemplo, el tiempo de la máquina A avanza a una velocidad de 1,00001 segundos por cada segundo que realmente pasa). aprobado).Si bien esto introduce inexactitud en las mediciones, es probable que su efecto práctico no sea un problema en la mayoría de las aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top