IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Synchronisation d'horloge sans aller/retour


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Synchronisation d'horloge sans aller/retour
    Bonjour tout le monde,

    Ca fait un paquet de temps que je ne suis pas venu par ici...
    Et en plus, je viens avec une question !!

    Imaginez deux systèmes, l'un fixe, l'autre mobile.
    Pour des raisons précises, il faut que l'horloge du mobile soit synchronisée avec celle du système fixe.
    Il existe beaucoup d'algorithmes, mais j'ai une contrainte, selon moi, très gênante : je ne peux pas communiquer dans les deux sens.
    Le fixe peut envoyer son horloge, mais le mobile ne peut pas parler.
    Le délai de transmission n'étant pas connu mais est borné (on connait le min et le max) et relativement constant. Autre contrainte : au démarrage du système, on ignore quelle est sa valeur.

    Est-il possible de synchroniser l'horloge du mobile dans ces conditions ??
    Et tant qu'à faire, est-il possible d'estimer le délai de transmission ?
    Ca me parait plus que compliqué, car de mon point de vue, ça ressemble à une boucle ouverte...
    Mais peut-être qu'il y a des "astuces" ?

    Merci d'avance pour vos idées !!
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Sans communication bidirectionnelle et sans connaitre le délai de transmission, ca ne me parait pas bien possible.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    En imaginant une communication bidirectionnelle, quel est le meilleur algorithme ?
    Effectivement, sans aller/retour, je ne vois pas non plus comment c'est possible.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    En imaginant une communication bidirectionnelle, quel est le meilleur algorithme ?
    Effectivement, sans aller/retour, je ne vois pas non plus comment c'est possible.
    Je dirais le Precision Time Protocol (PTP).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    J'ai omis quelques contraintes...
    Donc, pas d'A/R, un délai de transmission variable.
    Cependant, on peut considérer que A (fixe) envoie un signal périodique, de période connue, que l'on peut considérer sans biais.
    Donc, B reçoit des messages périodiquement, dont il connait l'instant relatif d'envoi. Le temps de propagation est variable, mais entre des bornes fixes et surtout, on peut faire en sorte que B connaisse une valeur probable de ce temps de transmission.

    Est-ce que pour autant, une synchronisation est possible ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    J'ai omis quelques contraintes...
    Donc, pas d'A/R, un délai de transmission variable.
    Cependant, on peut considérer que A (fixe) envoie un signal périodique, de période connue, que l'on peut considérer sans biais.
    Donc, B reçoit des messages périodiquement, dont il connait l'instant relatif d'envoi. Le temps de propagation est variable, mais entre des bornes fixes et surtout, on peut faire en sorte que B connaisse une valeur probable de ce temps de transmission.

    Est-ce que pour autant, une synchronisation est possible ?
    Si le temps de propagation est variable il n'y a pas grand chose qu'on puisse faire, a part des moyennes ou des rattrapages.

    Le protocole PTP a besoin d'un seul échange aller/retour pour estimer l'offset et le délai. Si pendant cet échange l'offset et le délai son constant, on a une bonne estimation de ces 2 paramètres.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    OK, donc en imaginant un A/R à l'init, faire du rattrapage est possible ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    OK, donc en imaginant un A/R à l'init, faire du rattrapage est possible ?
    Il faut faire de A/R de temps en temps pour vérifier que l'offset entre les 2 horloges reste stable ( = que les deux horloges tournent à la meme vitesse )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Et une fois que les horloges sont synchronisées, il est possible d'avoir une estimation précise du délai de transmission instantané... OK, il faut donc pouvoir avec un échange au moins une fois de temps en temps...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    Et une fois que les horloges sont synchronisées, il est possible d'avoir une estimation précise du délai de transmission instantané... OK, il faut donc pouvoir avec un échange au moins une fois de temps en temps...
    Oui. Avec un aller/retour on peut calculer l'offset et le délai.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Ca veut dire quoi "synchronisation" ?
    Pour pouvoir constater que 2 horloges sont synchronisées, il faut soit qu'elles aient un protocole pour se mettre d'accord, soit qu'elles soient observées par un système tiers.
    P.S. Un certain Albert E a beaucoup étudié cette question, il y a 105 ans.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  12. #12
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Oui. Avec un aller/retour on peut calculer l'offset et le délai.
    Hmmm, pas tout à fait... sauf si quelque chose m'échappe .
    Si on prend le schéma sur Wikipedia :


    On connait T1, T'1, T2, T'2 (et même T3, T'3).
    Soit :
    T'1-T1 = o + delta_1
    T'2-T2 = o + delta_2
    (T'3-T3 = o + delta_3)

    delta_1 = delta + erreur_1
    delta_2 = delta + erreur_2
    (delta_3 = delta + erreur_3)

    On pourra approcher o seulement à |erreur_1+erreur_2|/2.
    Idem pour delta.

    On ne peut pas faire mieux ??
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  13. #13
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    T'1-T1 = offset_1 + delay_1
    T'2-T2 = offset_2 + delay_2

    "One assumption is that this exchange of messages happens over a period of time so small that this offset can safely be considered constant over that period."
    offset_1 = -offset_2

    (attention, les signes sont opposés)

    "Another assumption is that the transit time of a message going from the master to a slave is equal to the transit time of a message going from the slave to the master."
    delay_1 = delay_2

    ==>

    (1) T'1-T1 = offset + delay
    (2) T'2-T2 = -offset + delay

    (1)+(2) --> (T'1-T1)+(T'2-T2) = 2*delay
    (1)-(2) --> (T'1-T1)-(T'2-T2) = 2*offset

    delay = ((T'1-T1)+(T'2-T2))/2
    offset = ((T'1-T1)-(T'2-T2))/2
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #14
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    On est d'accords. Mais si les deux délais ne sont pas égaux, on ne peut pas faire le calcul sans erreur. Aucune solution ne permettrait de contrer cela (au moins en partie) ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  15. #15
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    On est d'accords. Mais si les deux délais ne sont pas égaux, on ne peut pas faire le calcul sans erreur. Aucune solution ne permettrait de contrer cela (au moins en partie) ?
    Une fois l'offset/delai évalué avec la méthode précédente, on peut affiner les choses.

    Ce que croit le serveur, c'est que la liaison est symétrique:

    serveur --- delay --> client
    serveur <-- delay --- client

    Si le serveur envoie un message a l'heure Ta, le client devrait le recevoir à l'heure Ta+offset+delay
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Ta .......... Ta + offset
    |  ---        |
    |     ---     |
    |        ---> Ta + offset + delay
    |             |

    En réalité, la liaison est asymétrique:

    serveur --- d1 --> client
    serveur <-- d2 --- client

    Experience:

    Le serveur envoie un message contenant son heure et son estimation de la liaison symétrique : (Ta,offset,delay)

    En théorie, le client devrait recevoir le message à l'heure T'a_theoric = Ta + offset + delay
    En réalité, le client reçoit le message à l'heure T'a_observed = Ta + offset + d1

    Le client peut alors calculer l'erreur d'estimation du délai :

    T'a_observed - T'a_theoric = (Ta + offset + d1) - (Ta + offset + delay) = d1-delay

    ==> d1 = T'a_observed - T'a_theoric + delay

    Le delai moyen (qui a été correctement évalué) est de (d1+d2)/2 = delay

    ==> d2 = 2*delay - d1
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  16. #16
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Donc, au pire, on fait une erreur d'estimation de |d2-d1|/2.
    Et cette erreur sera faite à la fois sur l'offset et sur le délai estimé.
    Too bad :/

    Et en utilisant le retour (T'3, T3) on peut affiner. Mais on ne pourra pour autant jamais avoir un offset nul (donc une sychro "parfaite"), même en répétant ce processus...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  17. #17
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    Donc, au pire, on fait une erreur d'estimation de |d2-d1|/2.
    Et cette erreur sera faite à la fois sur l'offset et sur le délai estimé.
    Too bad :/

    Et en utilisant le retour (T'3, T3) on peut affiner. Mais on ne pourra pour autant jamais avoir un offset nul (donc une sychro "parfaite"), même en répétant ce processus...
    Je pense meme qu'il a été prouvé que ca ne pouvait pas être possible.

    (google: "Fundamentals of Large Sensor Networks: Connectivity, Capacity, Clocks and Computation")
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  18. #18
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci pour le lien .

    On peut peut-être approcher d'un minimum ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  19. #19
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par progfou Voir le message
    Merci pour le lien .

    On peut peut-être approcher d'un minimum ?
    En faisant des boucles d'estimation d'offset, puis de délai (d1/d2), ... On doit approcher d'un minimum. Je crois me souvenir qu'il est calculé dans le document que j'ai cité.

    Si tu as vraiment besoin d'une précision si poussée, le plus simple c'est de tirer un fil entre le client/serveur et de générer un signal d'horloge.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #20
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Si tu as vraiment besoin d'une précision si poussée, le plus simple c'est de tirer un fil entre le client/serveur et de générer un signal d'horloge.
    Par fil aussi il y a des délais de propagation.
    Le vrai pb se pose si les 2 horloges sont mobiles
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

Discussions similaires

  1. WebControl Calendar sans aller retour serveur ?
    Par dymezac dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/05/2007, 13h04
  2. Réponses: 4
    Dernier message: 28/08/2006, 14h47
  3. Réponses: 13
    Dernier message: 30/11/2004, 06h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo