Question

Je construis une application Ethernet dans lequel je vais envoyer des paquets d'un côté et recevant de l'autre côté. Je veux calculer retard dans les paquets du côté du récepteur dans la RFC 3393. Je dois mettre un horodatages dans le paquet du côté émetteur, puis prendre les horodateurs à côté du récepteur dès que je reçois le paquet. Soustrayant les valeurs i obtiendrai la différence des horodateurs, puis en soustrayant cette valeur avec la différence suivante je vais obtenir un moyen ipdv retarder. Les deux horloges ne sont pas synchronisées. Ainsi, toute aide est grandement appréciée. Merci.

Était-ce utile?

La solution

RFC 3393 est pour mesurer la variance dans le retard de paquet, et non pour la mesure du retard lui-même.

Pour donner un exemple: vous écrivez une application de streaming vidéo. Vous voulez tampon que peu de données vidéo possible (pour que la vidéo commence à jouer le plus rapidement possible). Disons que les données toujours toujours toujours prend 20ms pour obtenir de la machine A à la machine B. Dans ce cas (et en supposant que la machine A peut envoyer les données vidéo aussi vite qu'il a besoin de jouer), vous n » t besoin d'aucun tampon du tout. Dès que vous recevez la première image, vous pouvez commencer à jouer, en sachant qu'au moment où la trame suivante est nécessaire, il sera arrivé (car les données prend toujours exactement 20ms pour arriver et la machine A envoie au moins vite que vous jouez).

Cela fonctionne, peu importe combien de temps que 20ms est, tant qu'il est toujours le même. Il pourrait être 1000ms - la première image prend 1000ms pour arriver, mais vous pouvez toujours commencer à jouer dès qu'il arrive, parce que l'image suivante prendra également 1000ms et a été envoyé juste derrière la première image - en d'autres termes, il est déjà en chemin et sera ici momentanément. Il est évident que le monde réel est pas comme ça.

Prenez l'autre extrême: la plupart du temps, les données arrivent à 20ms. Sauf parfois, quand il prend 5000ms. Si vous gardez pas de tampon et le retard sur les trames 1 à 50 est 20ms, alors vous pouvez jouer les 50 premières images sans problème. Ensuite, cadre 51 prend 5000ms pour arriver et vous n'a plus aucune information vidéo pour 5000ms. L'utilisateur va et rend un autre site pour leurs vidéos mignonnes de chat. Qu'est-ce que vous avez vraiment besoin était un tampon de 5000ms de données -. Alors vous auriez été bien

Exemple long, court point: vous n'êtes pas intéressé par ce que le absolu retard sur les paquets est, vous êtes intéressé par ce que la variance dans ce délai est -. c'est la taille de votre tampon doit être

Pour mesurer la absolue retard, vous devriez avoir les horloges sur les deux machines soient synchronisées. Machine A enverrait un paquet avec horodatage 12337849227 28 et quand cela est arrivé à la machine B au moment 12337849227 48 , vous sauriez le paquet avait pris 20ms pour y arriver.

Mais puisque vous êtes intéressé par le variance , vous avez besoin (comme RFC 3393 décrit) plusieurs paquets de la machine A. La machine A envoie le paquet 1 avec horodatage 1233784922 72 8, puis 10 ms plus tard envoie le paquet 2 avec horodatage 1233784922 73 8, puis 10 ms plus tard envoie paquet 3 avec horodatage 1233784922 74 8.

Machine B reçoit le paquet 1 à ce qu'il pense timestamp 1233784922 12 8. Le retard à sens unique entre la machine A et la machine B est dans ce cas (du point de vue de la machine B) été -600ms. Ceci est évidemment complètement foireux, mais nous ne se soucient pas. La machine B reçoit le paquet 2 à ce qu'il pense timestamp 1233784922 15 8. Le retard à sens unique a été -580ms. La machine B reçoit paquet 3 à ce qu'il pense timestamp 1233784922 16 8. Le retard à sens unique a été à nouveau -580ms.

Comme ci-dessus, nous ne se soucient pas ce que le retard absolu est - si nous ne se soucient même pas si elle est négative, ou trois heures, ou autre chose. Ce que nous soucions est que le retard varie par 20ms. Vous avez donc besoin d'un tampon de 20ms de données.

Notez que je suis entièrement lustrage sur la question de l'horloge dérive ici (à savoir les horloges sur les machines A et la course B à des taux légèrement différents, de sorte que le temps de par exemple la machine A avance à un taux de 1.00001 secondes pour chaque seconde qui en fait passé). Bien que cela ne présente inexactitude dans les mesures, son effet pratique ne devrait pas être un problème dans la plupart des applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top