ESFQ : Une discipline ? equitable , minimisant la dispersion et adapt?ee aux bas d?ebits ? O. ABUAMSHA1 ; 2 , J.-M . FOURNEAU 1 & N. PEKERGIN1 ; 3 1 PRiSM , Universit?e de Versailles Saint-Quentin 45 av . des Etats Unis , 78 035 Versailles Cedex , FRANCE 2 ISSAT , BP 7028 , Damas , SYRIE 3 CERMSEM , Universit?e Paris 1 , Paris , FRANCE email : fabu,jmf,nihg@prism.uvsq.fr tel : 33 1 39 25 40 77 , fax : 33 1 39 25 40 57 R?esum?e Dans le contexte des r?eseaux RNIS-LB offrant une garantie de service et de d?ebit , il faut d?efinir et utiliser des disciplines de service plus ? equitables que FIFO . Des disciplines ayant cette propri?et?e dite de `` Fair Queueing '' ont d?ej?a ? et?e propos?ees mais elles souffrent d'autres probl?emes comme une gigue importante des flux ? a bas d?ebit . Nous proposons un nouvel algorithme de calcul de marques garantissant l' ? equit?e et plus satisfaisant en ce qui concerne la dispersion des d?elais et les services aux flux ? a bas d?ebit . Ce m?ecanisme est illustr?e sur des exemples . On ? evoque ? egalement comment utiliser une discipline de ce type pour garantir des taux de perte distincts pour des classes de trafics . Mot-cl ? es : R?eseaux ATM , Fair Queuing , gigue , delai , temps virtuel , eligibilit?e . ESFQ : A fair discipline minimising discrepancy and adapted to low-throughput applications . abstarct The high speed integrated services networks -LRB- ISDN -RRB- need a more fair packet service discipline than the traditional FCFS . Such disciplines that verify fairness in processor sharing , throughput and delay are already suggested and they are called `` Fair Queuing disciplines '' . Many of these FQ schemes suffer from other inconvenients ; such as large discrepancies in output flows and high delays for low-throughput flows . We present here a new discipline that provides better service quality for low-throughput applications and that reduces the discrepancies . The performance of the discipline is compared to other well-known FQ disciplines through several examples at the end of this work . ? Ce travail est , en partie , financ?ee par le CNET , gr ^ ace ? a une CTI . 1 INTRODUCTION 1 1 Introduction Dans les RNIS-LB , il est apparu que la discipline FIFO employ?ee dans les commutateurs ne serait pas suffisante pour prot?eger les flux r?egul?es , de flux perturbateurs . Pour garantir un d?ebit , il convient donc de d?efinir de nouvelles disciplines de service ayant une propri?et?e d' ? equit?e qui permettent , en quelque sorte , d'isoler les flux . Ceci suppose , bien s ^ ur , la d?eclaration des param?etres du flux et une proc?edure de lissage et de contr ^ ole du flux . Parmi les diff?erentes approches , une des plus int?eressantes consiste ? a simuler un syst?eme fluide et ? a essayer de synchroniser certaines des dates du syst?eme fluide et du syst?eme r?eel et discret . Le mod?ele fluide consiste ? a remplacer les paquets ou les cellules par un fluide infiniment divisible et le multiplexage physique est remplac?e par un m?elange proportionnellement aux taux de r?eservation . C'est le principe du GPS -LRB- Generalized Processor Sharing -RRB- et de sa version discr?ete -LRB- PGPS -RRB- pr?esent?e par Parekh et Gallager -LSB- 8 -RSB- . Dans la plus part des travaux sur l' ? equit?e dans les commutateurs , on a adopt?e la d?efinition propos?ee par Golestani -LSB- 2 -RSB- . Intuitivement , un serveur est dit ? equitable s ` il partage sa puissance entre les sessions proportionnellement ? a leurs r?eservations et s ` il distribue la puissance inutilis?ee par les sessions inactives de fa?con ? equitable parmi les actives . Pour caract?eriser l' ? equit?e math?ematiquement , Golestani a introduit la notion du service normalis?e : la quantit?e de service fournie ? a une session divis?ee par sa r?eservation -LRB- le param?etre ? -RRB- . Ainsi , un serveur est dit ? equitable si l' ? ecart de service normalis?e entre n'importe quelles deux sessions actives -LRB- i ; j -RRB- , reste born?ee par une quantit?e que l'on appelle l'indice d' ? equit?e F -LRB- i ; j -RRB- du serveur . Intuitivement , plus cet indice est petit , meilleure est l' ? equit?e . Ainsi , le mod?ele fluide qui est ? a la base a-t-il un indice d' ? equit?e nul . Malheureusement l' ? equit?e math?ematique n'est pas suffisante . Bennett et Zhang -LSB- 1 -RSB- ont pu constater un d?efaut dans PGPS : les temps de s?ejour des paquets peuvent avoir une tr?es grande variabilit?e . Cette gigue appara ^ ? t ? egalement dans presque toutes les disciplines propos?ees , malgr?e la garantie de d?ebit . De plus , PGPS d?efavorise plut ^ ot les sessions ? a bas d?ebit . Enfin la discipline propos?ee par Bennett et Zhang -LRB- WF2Q -RRB- , tout comme PGPS , a une grande complexit?e d'impl ? ementation puisqu'elle n?ec?essite le calcul de toutes les dates d' ? evolution du syst?eme fluide simul?e . Nous proposons donc de tenir compte de ces trois remarques pour d?efinir un nouvel algorithme de contr ^ ole de marque garantissant l' ? equit?e et une faible dispersion et favorisant les sessions ? a bas d?ebit . Cet algorithme a ? egalement une complexit?e tr?es inf?erieure ? a celle de PGPS et WF2Q . La suite du papier est organis?e comme suit : dans le chapitre II , nous pr?esentons un rapide panorama des disciplines propos?ees en montrant les probl?emes de dispersion qui ne sont pas pris en compte par la d?efinition de l' ? equit?e . Puis , nous proposons dans le chapitre III un nouvel algorithme de calcul des marques qui a deux avantages : il favorise les flux ? a bas d?ebit et il ? evite une trop grande gigue . Nous illustrons par quelques exemples ce comportement . 2 Un bref panorama des disciplines assurant l' ? equit?e L'objectif de ce chapitre est de pr?esenter un tour d'horizon des diff?erentes disciplines dites `` Fair Queuing '' propos?ees pour satisfaire les exigences d'un RNIS avec garanties de d?ebit . Par souci de concision , on ne consid?ere que les disciplines dites `` Fair Queuing '' . On note que dans la litt?erature , l'appellation `` Fair Queueing '' est r?eserv?ee aux disciplines reposant sur la simulation d'un mod?ele fluide pour obtenir un ordre selon lequel les paquets seront servis dans le commutateur . Il faut donc distinguer ces disciplines des disciplines , pourtant ? equitables , qui d?e - 2 UN BREF PANORAMA DES DISCIPLINES ASSURANT L' ? EQUIT?E 2 finissent des tranches -LRB- ou Frames -RRB- de temps o?u chaque session dispose d'une quantit?e de service r?eserv?ee . Weighted Round-Robin -LSB- 6 -RSB- et ses variantes : Hierarchical Round-Robin -LSB- 7 -RSB- et Deficit Round-Robin -LSB- 11 -RSB- ainsi que Stop-and-Go queuing d?efini par Golestani -LSB- 3 -RSB- font partie de cette classe de disciplines qui g?erent des tranches de temps . Ce mod?ele fluide qui est la base des autres ? etudes est d?enomm?e GPS -LRB- `` Generalized Processor Sharing '' -RRB- . L'avantage du mod?ele fluide est de consid?erer un syst?eme partageable sans contrainte sur les tailles respectives des paquets et ceci jusqu'au niveau du bit . Il ne s ` agit donc que d'un mod?ele th?eorique d'une discipline consid?er?ee comme parfaite en terme d' ? equit?e . Toutefois , l'approximation du comportement de GPS est ? a la base de la conception de plusieurs disciplines qui servent des flots discrets avec ? equit?e . Et l' ? ecart entre la quantit?e de service fournie ? a un client avec une discipline discr?ete pendant un intervalle de temps et entre la quantit?e fournie par GPS pendant la m ^ eme p?eriode , repr?esente un indicateur sur l' ? equit?e de la discipline discr?ete . Supposons que N sessions partagent un serveur de taux r qui n'est jamais au repos s ` il y a du travail en attente dans le syst?eme -LRB- work-conserving -RRB- . On associe ? a chaque session i un nombre r?eel positif ? i. Si Si -LRB- t1 ; t2 -RRB- est la quantit?e de travail fourni ? a la session i pendant la p?eriode -LSB- t1 ; t2 -RSB- alors GPS est d?efini de fa?con ? a v?erifier que : Si -LRB- t1 ; t2 -RRB- Sj -LRB- t1 ; t2 -RRB- > = ? i ? j ; j = 1 ; 2 ; : : ; N Pour toute session i active pendant l'intervalle -LSB- t1 ; t2 -RSB- . On en d?eduit que : Si -LRB- t1 ; t2 -RRB- > = ? i Pj ? j -LRB- t2 ? t1 -RRB- r et que le taux de service garanti ? a la session i est : ri = ? i Pj ? j r L'int ? er ^ et de GPS est qu'une borne sup?erieure sur le d?elai pour une session donn?ee est uniquement fonction de la taille de la file d'attente de la session en question et est ind?ependant du reste des sessions . D'autre part , si les arriv?ees sont liss?ees par un m?ecanisme de contr ^ ole -LRB- de type `` Leaky Bucket '' -RRB- , alors une garantie de d?elai dans le pire des cas peut ^ etre fournie . Ce d?elai maximal peut ^ etre atteint si toutes les sessions ? emettent les quantit?es maximales de flots qui leur sont autoris?ees -LSB- 9 -RSB- . 2.1 La discipline `` PGPS '' Le principe est de simuler un serveur GPS et de servir les paquets dans leur ordre de fin de service . Le temps virtuel -LRB- c'est ? a dire le temps simul?e -RRB- ? evolue lin?eairement selon l'expression suivante : vPGPS -LRB- t -RRB- = v -LRB- t0 -RRB- + r -LRB- t ? t0 -RRB- Pi2B -LRB- t0 ; t -RRB- ? i o?u B -LRB- t0 ; t -RRB- est l'ensemble des sessions actives pendant l'intervalle -LSB- t0 ; t -RSB- . On remarque que la pente change ? a chaque fois que cet ensemble change -LRB- par des fins ou des d?ebuts de transmission -RRB- . Donc v -LRB- t -RRB- est lin?eaire par morceaux . Le calcul des instants de d?ebut Sji 2 UN BREF PANORAMA DES DISCIPLINES ASSURANT L' ? EQUIT?E 3 et de fin de service virtuels F ji du paquet j de la session i , de taille lji et dont la date d'arriv ? ee est aji , suit les ? equations suivantes : Sji = max -LRB- F j ? 1 i ; v -LRB- aji -RRB- -RRB- F ji = Sji + lji : r ? i On marque les paquets qui int?egrent le syst?eme ? a ces instants , et on sert le paquet qui a la plus petite marque de fin de service virtuelle . L'inconv ? enient de ce sch?ema de calcul de d?ebuts et de fins de service virtuels est que la mise ? a jour du temps virtuel est tr?es co ^ uteuse dans les r?eseaux hauts d?ebits , o?u les commutateurs sont sens?es servir un nombre tr?es important de sessions , ce qui m?ene ? a des variations continues de l'ensemble des sessions actives . Pourtant , PGPS reste le sch?ema qui simule le mieux GPS . De plus , Parekh a d?emontr?e que pour un paquet donn?e p , le retard entre l'instant de fin de son service r?eel dans un serveur PGPS -LRB- FPGPS -LRB- p -RRB- -RRB- et l'instant de fin de service virtuel -LRB- FGPS -LRB- p -RRB- -RRB- est au maximum ? egal ? a la dur?ee de service d'un paquet de longueur maximal , c?ad : Propri?et?e 1 FPGPS -LRB- p -RRB- ? FGPS -LRB- p -RRB- < = lmax r On en d?eduit un corollaire de comparaison de charge et de quantit?e de service dans les deux syst?emes r?eel et virtuel . Le retard de PGPS est born?e par rapport au GPS , mais un serveur PGPS peut servir un paquet tr?es en avance par rapport au GPS , et cette avance n'est pas suffisament contrainte . Ce qui provoque un probl?eme de dispersion dans le service de paquets d'une m ^ eme session et donc de la gigue . Par d?efinition , PGPS ne peut ? eviter ce probl?eme . La solution propos?ee , par exemple dans -LSB- 1 -RSB- , consiste ? a modifier la s?election du paquet ? a servir . C'est un principe de ce type que nous avons retenu . 2.2 La discipline `` SCFQ '' -LRB- Self-Clocked Fair Queuing -RRB- Cette discipline a ? et?e propos?ee par Golestani -LSB- 4 -RSB- pour r?esoudre le probl?eme de la complexit?e de calcul du temps virtuel de la discipline PGPS . En fait , le sch?ema de calcul des marques ne changent pas , on sert toujours le paquet ? a la plus petite marque de fin de service , mais on calcule le temps virtuel diff?eremment . On n'utilise que l'information disponible dans le syst?eme r?eel sans faire r?ef?erence ? a un syst?eme et un temps virtuels -LRB- d' o?u vient le qualificatif `` Self-Clocked '' -RRB- , ainsi : vSCFQ -LRB- t -RRB- = la marque de fin de service du paquet en cours de service ? a l'instant t : Clairement une telle simplification introduit de l'in ? equit?e , qui reste cependant limit?ee . De plus , SCFQ a deux inconv?enients . Premi?erement , pour une session donn?ee , la latence d?epend du nombre de sessions dans le syst?eme . Et surtout cette discipline a le m ^ eme probl?eme d'agglutinement des paquets que PGPS . Une variante de SCFQ a ? et?e propos?ee par Jim Roberts , sous le nom de `` Virtual Spacing '' -LSB- 10 -RSB- . La diff?erence r?eside dans la d?efinition du temps virtuel : vSCFQ -LRB- t -RRB- = la marque de fin de service du dernier paquet servi avant l'instant t 2 UN BREF PANORAMA DES DISCIPLINES ASSURANT L' ? EQUIT?E 4 2.3 La discipline `` SFQ '' -LRB- Starting-time Fair Queuing -RRB- La discipline SFQ -LSB- 5 -RSB- diff?ere ? egalement de SCFQ par le choix du temps virtuel : vSFQ -LRB- t -RRB- = la marque de d?ebut de service du paquet en cours de service ? a l'instant t De plus , les paquets sont ordonn?es selon leurs marques de d?ebut et non plus de fin de service . L'avantage le plus important de SFQ est que cette discipline ne sanctionne pas les sessions ? a bas d?ebits comme les disciplines reposant sur les marques de fin de service . En effet , puisque les poids -LRB- ? i -RRB- i affect?ee aux diff?erentes sessions correspondent ? a leurs taux d'arriv ? ee -LRB- du moins pour les sessions respectant leur contrat , ce qui est le cadre de ce travail -RRB- , alors une session ? a bas d?ebit i a un param?etre ? i qui est petit , donc un temps d'ex ? ecution virtuel de ses paquets -LRB- lxi?i r -RRB- qui est grand et une marque de fin ? egalement grande . En cons?equence , les paquets de cette session doivent attendre la fin de service des autres sessions ? a d?ebit plus ? elev?e m ^ eme si elles ont ? emis leurs paquets plus tard mais avec des dur?ees de service virtuel plus petites . Donc intuitivement , en privil?egiant cette fois les paquets des sessions ? a bas d?ebit , on ne modifera que peu l'indice d' ? equit?e , puisque il y a peu de paquets pour ces sessions de paquets . 2.4 La discipline `` WF2Q '' -LRB- Worst-case Fair , Fair Queuing -RRB- WF2Q -LSB- 1 -RSB- consiste ? a modifier la politique de s?election du paquet ? a servir dans PGPS pour ? eviter une trop grande gigue . En effet , Bennett et Zhang montrent un exemple type de la dispersion provoqu?ee par PGPS . On le r?esume ci-dessous -LRB- voir ? egalement la figure -RRB- : On consid?ere 11 sessions qui partagent un serveur de capacit?e 1 , avec ? 1 = :5 , ? i = :05 pour les autres sessions . On suppose que tous les paquets ? emis sont de longueur 1 . A l'instant 0 , la session 1 ? emet 11 paquets tandis que chacune des autres sessions ? emet un seul paquet . Le calcul des marques donne les valeurs suivantes : 8 > < > : S11 = ; F 11 = 2 ; Si1 = 2 -LRB- i ? 1 -RRB- ; F i1 = 2i ; pour les paquets i = 2 ; : :11 S1j = ; F 1j = 20 ; pour les sessions j = 2 ; : :11 Ainsi , les dix premiers paquets de la session 1 sont servis en premier , ensuite , les autres sessions doivent ^ etre servies avant le 11 - ? eme paquet de la premi?ere session qui doit attendre 10 slots pour pouvoir partir . Et si ce sch?ema d'arriv ? ees continue , c?ad , la session 1 ? emet un paquet par slot et les autres sessions en ? emettent un tous les dix slots , le flux de sortie de la premi?ere session ? evolue en deux p?eriodes de dur?ee 10 , de silence et d' ? emission de 10 paquets cons?ecutifs . De plus , si on suppose qu'il y a n sessions de bas d?ebits qui partagent le commutateur avec la session 1 , alors les p?eriodes seront de longueur n ce qui augmente gravement la dispersion de service de la session 1 . Une telle dispersion peut provoquer la d?egradation de la qualit?e de service alors que le d?ebit est garanti . Pour supprimer ce probl?eme , Bennett et Zhang tentent de minimiser , ? a tout instant , l' ? ecart entre le syst?eme fluide GPS et le syst?eme discret PGPS . On rappelle que Parekh a d?emontr?e que le syst?eme GPS ne peut ^ etre en avance que d'un paquet au maximum . Par contre , il ne pr?ecise rien sur l'avance de PGPS par rapport a GPS . Donc , pour atteindre son objective , WF2Q doit ? egalement borner l'avance du syst?eme discret par rapport au syst?eme fluide . Ceci est fait par une petite modification de la politique de s?election du paquet ? a servir qui est la suivante : 3 LA DISCIPLINE ESFQ -LRB- ELIGIBLE STARTING-TIME FAIR QUEUEING -RRB- 5 Si un paquet doit commencer son service ? a l'instant t , alors au lieu de prendre celui qui a la marque de fin de service minimale , on consid?ere l'ensemble des paquets en attente qui ont virtuellement commenc?e leur service ? a une date inf?erieure ou ? egale ? a t : E -LRB- t -RRB- = n pji : Sji < = t o , et dans cet ensemble , on choisit le paquet de marque de fin de service minimale . Les auteurs d?emontrent que cette discipline conserve le travail , et que : FWF 2Q p ? FGPS p < = lmax r SGPS i -LRB- 0 ; t -RRB- ? SWF 2Q i -LRB- 0 ; t -RRB- < = lmax SWF2Q i -LRB- 0 ; t -RRB- ? SGPS i -LRB- 0 ; t -RRB- < = -LRB- 1 ? ? i r -RRB- li ; max Une v?erification rapide de l'exemple ? evoqu?e au d?ebut de ce paragraphe , montre que la discipline WF2Q va servir alternativement un paquet de la premi?ere session et un paquet d'une session de bas d?ebit , ce qui supprimera le ph?enom?ene d'oscillation entre une p?eriode de commutation et une p?eriode d'attente . Mais puisque le calcul des marques est du m ^ eme type que PGPS , cette nouvelle discipline est tout aussi complexe . On a appliqu?e aux diff?erentes disciplines pr?esent?ees ici le m ^ eme exemple de trafic tir?e de -LSB- 1 -RSB- qui a relev?e le probl?eme de dispersion g?en?er?ee par la discipline PGPS -LRB- voir figure 4 -RRB- . Le comportement des disciplines ressemblait ? a un slot pr?es ? a celui de PGPS . Il nous a donc paru int?eressant de combiner les points positifs des disciplines SFQ et WF2Q pour obtenir la politique que nous avons appel?e ESFQ -LRB- Eligible Starting-time Fait Queueing -RRB- . Il est ? a noter qu'une telle modification apport?ee ? a SCFQ , par d?efinition d'une fonction eligibilit?e , ne permet pas d' ? eliminer le ph?enom?ene de dispersion mais le retarde uniquement . 3 La discipline ESFQ -LRB- Eligible Starting-time Fair Queueing -RRB- On reprend donc l'id ? ee de s?electionner le paquet ? a servir -LRB- de marque de fin de service virtuelle minimale -RRB- parmi les paquets qui ont virtuellement d?ej?a commenc?e leur service , ceux que l'on appelle les paquets ? eligibles , ainsi on ? evite que les paquets partent dans le syst?eme discret trop en avance par rapport au syst?eme fluide . Il est clair que ceci va augmenter la latence . On applique cette id?ee ? a la discipline SFQ , ce qui garantit une meilleure complexit?e de calcul des marques que celle de PGPS et WF2Q . En fait , l'application directe de cette modification introduit des oscillations ind?esirables dans la fonction du temps virtuel v -LRB- t -RRB- . Ceci vient du fait que le temps virtuel est calcul?e en fonction de la marque du paquet en cours de service alors que le temps virtuel de PGPS en est ind?ependant . Or , par d?efinition , le temps virtuel doit ^ etre croissant car il refl?ete l' ? evolution du service dans le syst?eme au cours du temps . Pour ? eviter les oscillations , on a d?efini v -LRB- t -RRB- comme suit : v -LRB- t -RRB- = max -LRB- v -LRB- ti ? 1 -RRB- ; marque du paquet en service dans -LSB- ti ; ti +1 -LSB- -RRB- ; t 2 -LSB- ti ; pour ti +1 -LSB- o?u marque est la marque de d?ebut de service pour SFQ . Remarque 1 Il n'est pas inutile de noter les r?egles que l'on adopte pour la gestion du syst?eme , ? a savoir : Le i - ? eme service se fait dans -LSB- ti ? 1 ; ti -LSB- . Les arriv?ees pendant cet intervalle prennent v -LRB- aj -RRB- = v -LRB- ti ? 1 -RRB- = marque du paquet en service dans -LSB- ti ? 1 ; ti -LSB- . 3 LA DISCIPLINE ESFQ -LRB- ELIGIBLE STARTING-TIME FAIR QUEUEING -RRB- 6 D'autre part , on d?efinit l'ensemble des paquets ? eligibles ? a l'instant ti comme 1 : E -LRB- ti -RRB- = ae p : S -LRB- p -RRB- < = max -LRB- ti ; min q S -LRB- q -RRB- -RRB- oe Cette d?efinition garantit que E -LRB- ti -RRB- n'est jamais vide car au cas o?u tous les paquets ont des marques de d?ebut qui d?epassent l'instant r?eel de s?election , on va consid?erer les paquets avec la marque minimale . Ceci permet de v?erifier que la discipline est `` work-conserving '' . On va alors montrer que cette nouvelle discipline -LRB- que l'on appelle dans la suite ESFQ -RRB- est ? equitable , calculer son indice d' ? equit?e . Ainsi , le i +1 - ? eme paquet ? a servir pendant -LSB- ti ; ti +1 -LSB- , v?erifie : pi +1 = Arg minp2E -LRB- ti -RRB- F -LRB- p -RRB- et le temps virtuel pendant cette p?eriode sera v -LRB- t -RRB- = max -LRB- v -LRB- ti ? 1 -RRB- ; S -LRB- pi +1 -RRB- -RRB- . Les marques des paquets sont calcul?ees comme pour les autres disciplines FQ : Soit le paquet j de la session s qui arrive pendant la i - ? eme p?eriode -LSB- ti ? 1 ; ti -LSB- et qui sera ins?erer dans le syst?eme ? a l'instant ti : S -LRB- pjs -RRB- = max -LRB- v -LRB- ti ? 1 -RRB- ; F -LRB- pj ? 1 s -RRB- -RRB- -LRB- 1 -RRB- F -LRB- pjs -RRB- = S -LRB- pjs -RRB- + ljs ? s -LRB- 2 -RRB- Avant de donner l'indice d' ? equit?e de ESFQ , on pr?esente quelques lemmes et remarques qui permettent de mieux comprendre le m?ecanisme de ESFQ . Remarque 2 Soit deux paquets p1 , p2 tels que S -LRB- p1 -RRB- < S -LRB- p2 -RRB- . p2 peut passer devant p1 si F -LRB- p1 -RRB- > F -LRB- p2 -RRB- , c?ad si l1 = ? 1 > l2 = ? 2 . Lem me 1 Si F -LRB- p -RRB- < = v -LRB- t -RRB- , alors p est servi avant t. D?emonstration Par construction , v -LRB- t -RRB- est la marque de d?ebut de service virtuel d'un certain paquet que l'on note p ? . On a : F -LRB- p -RRB- < = v -LRB- t -RRB- = S -LRB- p ? -RRB- -RRB- S -LRB- p -RRB- < F -LRB- p -RRB- < = S -LRB- p ? -RRB- < F -LRB- p ? -RRB- Notons t ? le premier instant o?u p ? devient ? eligible . On a deux cas ? a consid?erer : Soit p est d?ej?a servi avant t ? ce qui finit la d?emonstration , soit il ne l'est pas , donc , p et p ? font partie de E -LRB- t -RRB- pour tout t > t ? , or F -LRB- p -RRB- < F -LRB- p ? -RRB- , alors l'instant o?u p v?erifie le minimum pr?ec?edera celui de p ? . 2 Remarque 3 Inversement , si p n'est pas servi avant t , alors soit p n'est pas encore ? eligible , c?ad S -LRB- p -RRB- > max -LRB- t ; minc2tetei -LRB- t -RRB- S -LRB- c -RRB- -RRB- soit F -LRB- p -RRB- > v -LRB- t -RRB- ou plus pr?ecis?ement F -LRB- p -RRB- > = F -LRB- p ? -RRB- o?u p ? est le paquet en service ? a l'instant t. Lem me 2 Par construction , soit v -LRB- t -RRB- < = t soit 8j ; S -LRB- tetej -LRB- t -RRB- -RRB- > t. Ce qui peut ^ etre reformul?e ainsi : 8t ; v -LRB- t -RRB- < = max -LRB- t ; min c2tetei -LRB- t -RRB- S -LRB- c -RRB- -RRB- 1 : on suppose que le paquet p n'est pas servi car autrement , il n'est plus d?efini dans le syst?eme 3 LA DISCIPLINE ESFQ -LRB- ELIGIBLE STARTING-TIME FAIR QUEUEING -RRB- 7 D?emonstration On suppose que t 2 -LSB- ti ; ti +1 -LSB- , donc v -LRB- t -RRB- = v -LRB- ti -RRB- . Il suffit d'examiner le cas des instants de d?ebut de service , l'extension ? a un instant quelconque est imm?ediat . On a deux cas ? a consid?erer : -LCB- v -LRB- ti -RRB- est ? egal ? a la marque du paquet en service : Soit S -LRB- p -RRB- < = ti alors v -LRB- ti -RRB- < = ti soit S -LRB- p -RRB- = minp2tetei -LRB- ti -RRB- S -LRB- p -RRB- > ti ce qui donne l'autre partie du lem me . -LCB- v -LRB- ti -RRB- = v -LRB- ti ? 1 -RRB- ce qui arrive quand la marque du paquet pi +1 ? a servir ? a partir de l'instant ti est plus petite que la marque du paquet servi ? a la p?eriode pr?ec?edente pi . Il y a aussi deux cas ? a consid?erer : soit S -LRB- pi -RRB- < S -LRB- pi ? 1 -RRB- ce qui veut dire que pi n'avait pas une valeur minimale de la marque alors par r?ecurrence on d?eduit que v -LRB- ti -RRB- = v -LRB- ti ? 1 -RRB- < = ti ? 1 < = ti , soit S -LRB- pi -RRB- = S -LRB- pi ? 1 -RRB- ce qui nous ram?ene au premier cas . 2 On note djs -LRB- resp . f js -RRB- le d?ebut -LRB- resp . la fin -RRB- de service du paquet pjs dans le temps r?eel . Il faut ? egalement remarquer que puisque v -LRB- t -RRB- < = t une session r?ecemment activ?ee est tout de suite ? eligible , ce qui parait une propri?et?e souhaitable pour une discipline ? equitable . Lem me 3 F -LRB- pjs -RRB- < = v -LRB- djs -RRB- + ljs?s . D?emonstration Ceci vient de la construction de v -LRB- t -RRB- . On a soit v -LRB- djs -RRB- = S -LRB- pjs -RRB- ce qui donne l' ? egalit?e , soit v -LRB- djs -RRB- > S -LRB- pjs -RRB- ce qui donne l'in ? egalit?e stricte . 2 3.1 Indice d' ? equit?e Par d?efinition , l'indice d' ? equit?e est l' ? ecart maximal possible entre les quantit?es de service normalis?e offertes ? a deux sessions pendant n'importe quel intervalle de temps -LSB- t1 ; t2 -RSB- o?u les deux sessions sont continuellement ? a charge non nulle . C'est : jSi -LRB- t1 ; t2 -RRB- ? Sj -LRB- t1 ; t2 -RRB- j < = FESFQ -LRB- i ; j -RRB- Le lem me suivant sert ? a encadrer la quantit?e de service qu'une session active re?coit pendant un intervalle de temps o?u sa charge n'est jamais nulle . Lem me 4 Pour toute session s et pour tout intervalle de temps -LSB- t1 ; t2 -RSB- o?u la charge de la session s est continuellement non nulle , la quantit?e de service offerte ? a s v?erifie : ? s -LRB- v2 ? v1 -RRB- ? 2lmax s < = Ss -LRB- t1 ; t2 -RRB- < = ? s -LRB- v2 ? v1 -RRB- + 2lmax s o?u v1 = v -LRB- t1 -RRB- et v2 = v -LRB- t2 -RRB- . D?emonstration On note pks le paquet qui ? a l'instant t1 , est en t ^ ete du tampon li?e ? a la session s. Il est le premier paquet ? a ^ etre servi dans l'intervalle -LSB- t1 ; t2 -RSB- . On sait que Sks < = v1 + lmax s?s car , par hypoth?ese , la session s est continuellement active pendant -LSB- t1 ; t2 -RSB- , donc , si elle devient active ? a l'instant t1 , le premier paquet arriv?e -LRB- en occurrence , pks -RRB- prend comme marque , le temps virtuel actuel du syst?eme . Sinon , le paquet pk ? 1 s a d?ej?a ? et?e servi avant t1 et avait une marque Sk ? 1 s < = v1 , d' o?u , on d?eduit que Sks < = v1 + lmax s?s . 3 LA DISCIPLINE ESFQ -LRB- ELIGIBLE STARTING-TIME FAIR QUEUEING -RRB- 8 Si v2 > v1 + 2 lmax s?s , il y a au moins un paquet servi pendant l'intervalle -LSB- t1 ; t2 -RSB- car F ks sera strictement inf?erieur ? a v2 -LRB- le service de pks peut ^ etre commenc?e avant t1 -RRB- . Dans le cas contraire , v2 < = v1 +2 lmax s?s , l'encadrement de Ss -LRB- t1 ; t2 -RRB- est trivialement v?erifi?ee . Dans la suite , on ne consid?ere que le cas non trivial . On note pms le dernier paquet ? a commencer son service avant t2 -LRB- son service peut ne pas ^ etre termin?e ? a t2 -RRB- . Puisque s est continuellement charg?ee , on peut d?emontrer par r?ecurrence que Fms = Sks + Pmi = k lis?s . La suite de la d?emonstration se ram?ene ? a l' ? etude de plusieurs cas de figure selon que les paquets pks et pms sont enti?erement servis dans l'intervalle -LSB- t1 ; t2 -RSB- ou non . On va essayer de tout r?esumer dans un syst?eme d'in ? egalit?es qui serviront ? a v?erifier l'encadrement de la quantit?e de service Ss -LRB- t1 ; t2 -RRB- 1 . pks commence son service avant t1 : D'apr ? es la dynamique de la discipline , on sait que Sks < = v1 et F ks > = v1 . Donc , v1 ? lks ? s < = Sks < = v1 -LRB- 3 -RRB- et que Sk +1 s < = v1 + lks ? s -LRB- 4 -RRB- 2 . pks commence son service apr?es t1 : Dans ce cas-l ? a , on ne peut pas savoir si Sks est inf?erieur ? a v1 ou non mais on sait toujours que Sks < = v1 + lmax s?s D'un autre c ^ ot?e , puisque pks n'est pas en service ? a l'instant t1 , d'apr ? es la remarque3 , F ks > v1 . On r?esume : v1 ? lks ? s < Sks < = v1 + lmax s ? s -LRB- 5 -RRB- Quant au paquet pms , on sait qu'il commence son service avant t2 , alors , Fms < = v2 + lmax s ? s -LRB- 6 -RRB- Pour le calcul du minorant , on doit consid?erer deux cas 1 . pms finit son service avant t2 : D'apr ? es la remarque3 , soit le paquet suivant est non ? eligible ? a l'instant t2 et on a Sm +1 s > = v2 -LRB- lemme2 -RRB- , soit il est ? eligible mais avec une marque Fm +1 s > v2 . Et dans les deux cas , en rappelant que Fms = Sm +1 s , on a : Fms > = v2 ? lmax s ? s -LRB- 7 -RRB- 4 EXEMPLES ET COMMENTAIRES 9 2 . pms finit son service apr?es t2 : alors , Fm ? 1 s + lms ? s = Fms > = v2 -LRB- 8 -RRB- la borne sup?erieure : On sait que Ss -LRB- t1 ; t2 -RRB- < = mX i = k lis = ? s -LRB- Fms ? Sks -RRB- La majoration d?ecoule des in?egalit?es -LRB- 3 -RRB- -LRB- 5 -RRB- et -LRB- 6 -RRB- . la borne inf?erieure : La somme cumul?ee de tailles de paquets de la session s qui ont ? et?e enti?erement transmis durant l'intervalle -LSB- t1 ; t2 -RSB- repr?esente une borne inf?erieure de la quantit?e de service Ss -LRB- t1 ; t2 -RRB- . L'utilisation des in?egalit?es ci-dessus selon les diff?erents cas de figure possibles m?ene toujours ? a la borne inf?erieure propos?ee par le lem me . 2 Proposition 1 L'indice d' ? equit?e de ESFQ est : FESFQ -LRB- i ; j -RRB- = 2 -LRB- lmax j ? j + lmax i ? i -RRB- La formule d?ecoule directement du lem me pr?ec?edent . A titre de comparaison , rappelons les indices d' ? equit?e tir?es de -LSB- 2 -RSB- pour les disciplines d?ej?a cit?ees FGPS -LRB- i ; j -RRB- = -LRB- 9 -RRB- FPGPS -LRB- i ; j -RRB- = max li ? i + Ci ; lj ? j + Cj ; li ? i + lmax ? j ; lj ? j + lmax ? i ! -LRB- 10 -RRB- o?u Ci = min ? -LRB- N ? 1 -RRB- lmax ? i ; max n = 1 : : N ln ? n ? -LRB- 11 -RRB- FSCFQ -LRB- i ; j -RRB- = li ? i + lj ? j -LRB- 12 -RRB- FSFQ -LRB- i ; j -RRB- = li ? i + lj ? j -LRB- 13 -RRB- -LRB- 14 -RRB- 4 Exemples et commentaires Le pemier exemple est celui propos?e par Zhang et Bennett dans -LSB- 1 -RSB- . Il s ` agit d'un serveur FQ partag?e par 11 sessions CBR o?u la premi?ere session a une r?eservation de 50 % de la puissance du serveur et qui envoie des batchs de 10 cellules tous les vingts slots ; Les autres sessions ont une r?eservation de 5 % et envoient donc une cellule par 20 slots . 4 EXEMPLES ET COMMENTAIRES 10 1 2 3 4 5 6 7 8 9 10 11 10 20 30 40 Sessions slot repartition de service dans un serveur ESFQ ou WF2Q 1 2 3 4 5 6 7 8 9 10 11 10 20 30 40 Sessions slot repartition de service dans un serveur SFQ 1 2 3 4 5 6 7 8 9 10 11 10 20 30 40 Sessions slot repartition de service dans un serveur WF2Q 1 2 3 4 5 6 7 8 9 10 11 10 20 30 40 Sessions slot repartition de service dans un serveur PGPS ou SCFQ Fig. 1 - Repartition du service parmi les sessions La figure 4 montre l'ordre temporel dans lequel chacune des disciplines FQ pr?ec?edemment pr?esent?ees , sert les arriv?ees des 11 sessions . On note que la selection d'une cellule parmi plusieurs aux m ^ emes dates virtuelles , se fait de fa?con al?eatoire.Ce qui explique les diff?erences de la r?epartition de service pendant l'intervalle -LSB- 0 ; 20 -RSB- et le suivant -LSB- 20 ; 40 -RSB- . On voit bien que la discipline ESFQ comme WF2Q alt?erne le service entre la premi?ere session et une session bas d?ebit . Par contre PGPS , SFQ et SCFQ ne le font pas . SFQ passe la premi?ere cellule de toutes les sessions car elles ont toutes une date de d?ebut virtuel nul , puis il se consacre aux autres cellules de la premi?ere session . D'un autre cot?e , PGPS et SCFQ sert les cellules de la premi?ere session en premier car elles ont des dates de fin de service inf?erieures ou ? egales ? a celle des autres cellules bas d?ebit . Le deuxi?eme exemple consid?ere trois sessions de r?eservations -LRB- 60 % ; 30 % ; 10 % -RRB- qui arrivent en CBR selon des taux d'arriv ? ees ? egaux aux r?eservations respectives . De plus , on synchronise les ? emissions ? a l'instant 0 , autrement dit , toutes les sessions envoient leurs premi?eres cellules au d?ebut de la p?eriode d'activit ? e du serveur . Dans la figure 4 , on a repr?esent?e sous forme d'histogramme , le d?elai moyen ressenti par les deux sessions bas-d ? ebits dans chacun des serveurs FQ . On voit bien pour cet exemple que ESFQ favorise plus ces sessions par rapport ? a WF2Q . ce qui est encore plus clair sur les courbes qui tracent le d?elai de chaque cellule servie . Il est aussi important de noter que les d?elais impos?es par ESFQ sont moins variables que ceux de WF2Q . 5 CONCLUSIONS 11 Si on modifie la nature de l'arriv ? ee CBR de la session de r?eservation 60 % pour regrouper les cellules ? emises en lots de 6 cellules tous les dix slots . On voit que l'histogramme -LRB- fig. 4 -RRB- des d?elais moyens ressemble beaucoup ? elui de l'exemple pr?ec?edent . Par contre la figure 4 montre une plus grande variabilit?e du d?elai dans un serveur WF2Q par rapport au serveur ESFQ qui para ^ ? t insensible ? a la pr?esence de lots de cellules dans le syst?emes . 5 Conclusions L'ajout d'un crit?ere l' ? eligibilit?e ? a la discipline SFQ permet donc de d?efinir une politique favorisant les sessions CBR ? a bas d?ebit et qui tout comme WF2Q ? evite une trop grande dispersion des cellules . Cette nouvelle politique est ? egalement moins complexe que PGPS et WF2Q . Par contre , la latence peut augmenter dans certains cas de figures . Il s ` agit donc d'un compromis int?eressant permettant de garantir un d?ebit garantie et une faible gigue avec une complexit?e de calcul relativement faible . Ce crit?ere d' ? eligibilit?e peut ? egalement favoriser un ensemble de sessions contre des ph?enom?enes de perte en pr?esence de flux perturbateurs trop variables , en permettant de g?erer un m?ecanisme de rejet s?electif . En effet , le taux ? permet d'estimer une taille `` raisonnable '' de paquets pr?esents en attente . Cet estimateur repose sur l'id ? ee que les flux CBR seront prot?eg?es par le m?ecanisme ESFQ en garantissant un d?ebit minimum et une faible dispersion des d?elais d'attente -LRB- c?ad qu'on se rapproche du mod?ele id?eal d'une D/D/1 -RRB- . Or , c'est cette dispersion de l'attente et des arriv?ees des flux perturbateurs qui provoquent l'accumulation des paquets . Qui plus est la fonction d'atteignabilit ? e peut ^ etre am?elior?ee pour prendre sp?ecifiquement en compte les probl?emes de perte . La solution la plus simple consiste ? a privil?egier certains flux lorsque deux paquets ou cellules ont la m ^ eme marque minimale . Le choix est actuellement fait par un tirage al?eatoire . Un priorit?e en fonction des pertes accept?ees lors du contrat peut remplacer tr?es facilement ce choix al?eatoire . Une autre solution consiste ? a perturber l?eg?erement les valeurs de ? en fonction des types de flux vis ? a vis des pertes . R?ef?erences -LSB- 1 -RSB- J.R. Bennett and H. Zhang . WF 2Q : Worst-case Fair Weighted Fiar Queuing . In IEEE INFOCOM ' 96 , March 1996 . 1 2 3 4 5 6 7 8 9 10 SFQM WF2Q SFQ SCFQ PGPS slot delai moyen pour la session de taux 0.1 1 2 3 4 5 6 7 8 9 10 SFQM WF2Q SFQ SCFQ PGPS slot delai moyen pour la session de taux 0.3 Fig. 2 - d?elai moyen des sessions bas-d ? ebit R?EF?ERENCES 12 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.1 c/slot dans le serveur ESFQ 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.1 c/slot dans le serveur WF2Q 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.1 c/slot dans le serveur PGPS 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.1 c/slot dans le serveur SFQ Fig. 3 - Delai d'une session bas-debit de taux 0.1 c/slot -LSB- 2 -RSB- S. Golestani . A self-clocked fair queuing scheme for high speed applications . In IEEE INFOCOM ' 94 , 1994 . -LSB- 3 -RSB- S.J Golestani . A Stop-and-Go Queuing framework for congestion management . In SIG - COMM ' 90 , Philadelphia , September 1990 . -LSB- 4 -RSB- S.J. Golestani . Network delay analysis of a class of Fair Queuing Algorithm . IEEE jour . on Select . Areas in Com. , 13 -LRB- 6 -RRB- , August 1995 . -LSB- 5 -RSB- P. Goyal , H. Vin , and H. Cheng . Start-time Fair Queuing : Ascheduling algorithm for integrated services packet switching networks . Technical report , Dept. of Computer Sci. , Univ. of Texas at Austin , February 1996 . -LSB- 6 -RSB- E.L. Hahne . Round robin scheduling for fair flow control in data communication networks . PhD thesis , MIT , Cambridge , December 1986 . -LSB- 7 -RSB- A. Hung . and G. Kesidis . Performance evaluation of Hierarchical Round-Robin bandwidth scheduling for ATM . Technical Report 96-07 , E. . and C.E Dept. , University of Waterloo , Waterloo , Ontario , Canada , July 1996 . -LSB- 8 -RSB- A. Parekh and R. Gallager . A generalised processor sharing aproach to flow control in integrated services networks : The Single-Node cases . IEEE/ACM trans . on networking , 1 -LRB- 3 -RRB- , June 1993 . R?EF?ERENCES 13 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur ESFQ 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur WF2Q 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur PGPS 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur SFQ Fig. 4 - Delai d'une session moyen-debit de taux 0.3 c/slot 1 2 3 4 5 6 7 8 9 10 SFQM WF2Q SFQ SCFQ PGPS slot delai moyen pour la session de taux 0.1 1 2 3 4 5 6 7 8 9 10 SFQM WF2Q SFQ SCFQ PGPS slot delai moyen pour la session de taux 0.3 Fig. 5 - d?elai moyen des sessions bas-d ? ebit -LSB- 9 -RSB- A.K. Parekh . A generalised processor sharing approach to flow control in integrated services networks . PhD thesis , MIT , Dept. of Elect . Eng and Comp . Sci , February 1992 . -LSB- 10 -RSB- J. Roberts . Virtual spacing for flexible traffic controle . submitted , November 1993 . -LSB- 11 -RSB- M. Shreedhar and G. Varghese . Efficient fair queuin using Deficit Round-Robin . In SIG - COMM ' 95 , September 1995 . R?EF?ERENCES 14 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur ESFQ 1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 80 90 100 delai en slot cellules delai de la session de debit 0.3 c/slot dans le serveur WF2Q Fig. 6 - D?elai d'une session moyen-debit de taux 0.3 c/slot en pr?esence d'arriv ? ees en lots

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Clock Synchronization in Virtual Rings Augusto Ciuffoletti Federica Gattai Roberta Golinelli Dipartimento di Informatica Universit?a di Pisa Corso Italia 40 , 56100 Pisa -LRB- Italy -RRB- Abstract A probabilistic algorithm for external clock synchronization is proposed . The algorithm works under the assumption that it is possible to identify a virtual ring among the servers involved , and does not require an upper bound to message trasmission delays . The approach is probabilistic , since clock synchronization is not guaranteed , but the probability of success can be made arbitrarily close to one . The precision is comparable with that achievable with other probabilistic protocols , with the advantage that all the nodes can synchronize their clocks within the same attempt . A Pascal-like description of the protocol is given , and a formal proof of its correctness is outlined . 1 Introduction A distributed system consists of a collection of nodes connected by a communication network and logically integrated by a global operating system which provides the application with the view of a unique system . When the operation of the system has to respect real-time constraints , the global operating system has to provide the application with a unique time reference . For instance , a unique time reference is needed to : ffl measure the duration of a distributed activity or ffl give a consistent schedule of consecutive events . This service may be implemented by a clock synchronization protocol , that keeps the clocks of the nodes sufficiently close . Without a suitable coordination , the clocks would independently drift away from real time with a speed indicated by ae : low cost clocks have a drift rate ae of about 10 ? 6 . On each node , the process in charge to implement the clock synchronization activity is called time server process . A synchronization protocol consists of a group of time server processes which are located at different nodes of the network . Each time-server process can read the value of the hardware clock of its host node . An hardware clock HC is correct if it measures the length t2 ? t1 of any real time interval -LSB- t2 ? t1 -RSB- with an error lower than aemax ? -LSB- t2 ? t1 -RSB- , where aemax is the maximum clock drift rate from real time specified by clock manifacturer . We can express the condition in the following way : for each real-time interval -LSB- t2 ? t1 -RSB- -LRB- 1 ? aemax -RRB- < = -LRB- t2 ? t1 -RRB- HC -LRB- t2 -RRB- ? HC -LRB- t1 -RRB- < = -LRB- 1 + aemax -RRB- : -LRB- 1 -RRB- We assume that the speed of a hardware clock can not be modified by software . For this reason , we introduce the concept of logical clock LC , which is implemented by software and has an adjustable speed . The value of LC at real time t can be expressed in the following way LC -LRB- t -RRB- = HC -LRB- t -RRB- + A -LRB- t -RRB- where A is an adjustement function that depends on time . The logical clock is fed , from time to time , with an approximation of the value of the real time , and modifies accordingly the parameters of the adjustment function . A detailed description of this operation is in -LSB- 3 -RSB- and -LSB- 1 -RSB- . Here , we focus on the problem of providing each time server with a sufficiently precise measure of the real time , as measured by a preciser clock located in a privileged node . Two kinds of solutions are reported in the literature : deterministic and probabilistic protocols . Both of them assume that the minimum transmission time , denoted with min , is known . The main advantage of the latter is that they admit unbound delays on message transmission , but require that their probability distribution is known . Deterministic protocols require the existence of an upper bound max to message transmission delay . We briefly review some papers concerning the topic of clock synchronization , beginning with deterministic ones . In -LSB- 7 -RSB- the problem of synchronizing n clocks in a fully connected network is considered . Even if the clocks run at the same rate of real time and there are no failures , it is impossible to synchronize clocks closer than '' -LRB- 1 ? 1n -RRB- where '' = max ? min . In -LSB- 2 -RSB- clock synchronization is achieved using a convergence function CF that ensures fault-tolerance . The assumptions are that there is an initial synchronization of clocks and that all non-faulty clocks are correct . The precision achieved is max ? min . In -LSB- 3 -RSB- the upper bound used for trasmission failure detection corresponds with max . The algorithm is based on a master-slave approach where the master uses a fault-tolerant average function to calculate a network time . The precision achieved by this algorithm is 4 ? -LRB- max ? min -RRB- . In -LSB- 4 -RSB- a broadcast mechanism is used to achieve synchronization . There is no upper bound of message trasmission delay but broadcast messages are guaranteed to be received within an interval of size '' -LRB- with '' fixed constant -RRB- . The tradeoffs between the type and number of broadcast and the tightness of synchronization are considered . In -LSB- 5 -RSB- a probabilistic algorithm is proposed for clock synchronization in network subject to unbounded message delays . The best precision achievable is 3 ? ae?min , and it is better than that achieved by previous protocols . 2 A virtual ring synchronization pro- tocol Our intent is to extend Cristian 's algorithm in order ot obtain the synchronization of several servers in a single sychronization attempt . In the spirit of -LSB- 5 -RSB- we make the assumption that message transmission delays are unbounded , and that we are able to estimate the probability distribution of such delays . In addition , we assume that it is possible to identify a virtual ring among the servers . This assumption does not imply the existence of a ring oriented link -LRB- e.g. an Ethernet -RRB- . A virtual ring may be embedded in a generic system by identifying a closed path that contains all servers . The algorithm is probabilistic since it does not guarantee that proper synchronization will be certainly achieved , but the algorithm can be sized so that the probability of success is comparable with the reliability of the hardware support . One server in the ring has direct access to a real time reference -LRB- like a Global Positioning System -LRB- GPS -RRB- receiver -RRB- . This server is called master and is indicated with M . All the other servers are called slaves , and are indicated with Sifi = 1 ; : : : ; ng . Each slave Si has access to its own hardware clock HCi and implements a logical clock Timei -LRB- t -RRB- . From time to time , the master triggers a synchronization attempt , in order to provide the logical clocks of the slaves with a better approximation of the reference time . Each synchronization attempt consists of kmax remote clock update attempts . We now briefly analize how a remote clock update attempt works . The master M holds a timer that triggers the start of the protocol : at that time , M sends two successive messages on the ring . The first message m1 contains only a request to record the local time : this operation is therefore performed by all the slaves . The second message m2 is sent by M after it has received m1 back , and contains two fields . The first field contains the value of the clock of the master when m2 is sent ; tm1 s tm1 i tm1 M tm2 s tm2 i tm2 M Figure 1 : Timing of a remote clock update attempt the second field is initially set to and is used to check the success of the attempt . In Figure 1 we show the sequencing of the events in an update attempt , and the notation used to indicate the reference time when they occur : tm1 s denotes the time when the first message is sent by the master , tm1 i is the time when the first message is received and forwarded by server i , and tm1 M is the time when the message is received back by the master . Similarly for the second message , subtituting m2 to m1 in the notation . As soon as a slave Si receives m2 , it estimates the value of tm2 i and determines the maximum error done in the estimate according to the following formulas CMSi = Di ? -LRB- 1 + aemax -RRB- + tm2 s -LRB- 2 -RRB- erri = Di ? -LRB- 1 + aemax -RRB- ? min -LRB- 3 -RRB- where CMSi is the estimate of tm2 i by slave Si , erri is the maximum error affecting the estimate and Di = Timei -LRB- tm2 i -RRB- ? Timei -LRB- tm1 i -RRB- 2 -LRB- 4 -RRB- where Timei -LRB- t -RRB- indicates the value of the logical clock of server i at time t . As soon as S1 receives m2 , it computes these estimates and writes the value err1 in the second field of m2 , and , if err1 is lower than a threshold value `` max , the value of the logical clock is updated according with the estimates . In the same way , S2 computes the estimates when it receives m2 . S2 compares the value err2 with the second field of m2 . If err2 is greater , S2 writes the value err2 in the field , otherwise it leaves the message unchanged . As for S1 the logical clock is updated if the time estimate is sufficiently precise . The other slaves behave in the same way . If the message is not lost , M eventually receives back m2 and verifies the second field is below the threshold `` max : in that case , it has reached rapport with the slaves -LRB- the attempt has been successful -RRB- , otherwise there will be another clock update attempt after a waiting delay W . The number of unsuccessful attempts is limited by the value of kmax : the system synchronization is considered as inconsistent when the kmax-th attempt has failed . The value of kmax is obtained as a function of the probability of success of the single update attempt -LRB- ps -RRB- and of the required reliability of the whole protocol , which is expressed as the probability of success of the whole synchronization attempt -LRB- pmax -RRB- : kmax > = ln -LRB- 1 ? pmax -RRB- ln -LRB- 1 ? ps -RRB- -LRB- 5 -RRB- If a remote clock update attempt succeeds , M computes the dna -LRB- as delay to next attempt -RRB- delay . We have that dna = ae ? 1 max ? -LRB- ms ? '' -RRB- ? ? t ? kmax ? W -LRB- 6 -RRB- where ms is a system parameter that defines the maximum deviation from real time which is tolerated and ? t is the maximum time elapsing from the time when a server receives a valid clock and the time when the master detects that the attempt was successful : ? t is calculated as -LRB- tm2 M ? tm2 s ? min -RRB- ? -LRB- 1 + aemax -RRB- , where tm2 s is the time when message m2 is sent , and tm2 M is the time when message m2 is received back by the master . The values kmax and dna that regulate the behavior of the master process are expressed as a function of system constants and of other variables whose values are locally available . Let us review them and explain the relationships existing among them : ps is the probability of success of a attempt : it is part of the description of the system ; pmax is the probability of success of the synchronization attempt : it is part of the requirements to the synchronization protocol ; ms is the maximum deviation of a clock from real time . The final goal of the synchronization protocol goal is that for every clock i , j Timei -LRB- t -RRB- ? t j < = ms is a stable property of the system : ms is part of the requirements of the synchronization protocol ; `` max is the minimun precision to accept an update attempt : its sizing is left to the protocol designer . A minimum value for this parameter can be cal - culated from -LRB- 6 -RRB- and the condition that dna > = when '' = `` max ; aemax is the maximum admitted value for the drift of a correct clock : it is part of the description of the system ; min is the minimum transmission delay of a message : it is part of the description of the system ; W is the time interval needed to ensure that two messages sent at times t and t + W exhibit independent roundtrip delays : the random rule RandomW used to generate it is part of the description of the system , and we assume that W has an upper bound Wmax . The improvement with respect to Cristian 's algorithm can be summarized as follows : in -LSB- 5 -RSB- each reading attempt consists in two messages , from the slave to the master and viceversa . A roundtrip consists of the circulation of these two messages and a synchronization attempt requires from 1 to kmax roundtrips . To keep synchronized n servers , we may expect that from n to n ? kmax roundtrips are distributed in the time needed by the typical clock to drift '' time units . During the same time interval , the protocol presented in this paper circulates 2 to 2 ? kmax roundtrips around the ring to perform the same task . In essence , the protocol presented in this paper exploits the fact that the servers are arranged in a ring , in order to synchronize all the clocks in the same successful clock synchronization attempt . We now give a formal justification of the formu - las used by the slave to estimate master 's clock -LRB- CMSi -RRB- and the local error -LRB- erri -RRB- , and those used by the master to decide when to start a new synchronization attempt -LRB- dna -RRB- and how many attempts can be performed before assuming that the system synchronization is inconsistent -LRB- kmax -RRB- . 2.1 The estimate During a remote update attempt each slave Si for i = 1 : : : N wants to estimate the value of tm2 i from the knowledge of the values tm2 s , Timei -LRB- tm1 i -RRB- and Timei -LRB- tm2 i -RRB- . We start by drawing some conclusions about the real timing of the events involving Si ; to this purpose , we introduce two variables and such that min + be the lenght of the real time interval -LSB- tm1 i ; tm2 s -RSB- and min + be the lenght of the real time interval -LSB- tm2 s ; tm2 i -RSB- . Formally : tm2 s = tm1 i + min + -LRB- 7 -RRB- tm2 i = tm2 s + min + -LRB- 8 -RRB- The values of and are necessarily non-negative , since min is the minimum trasmission delay of a message . The time interval -LSB- tm2 s ; tm2 i -RSB- corresponds to the delay experienced by message m2 till it reaches Si , while the time interval -LSB- tm1 i ; tm2 s -RSB- is split into two parts : -LSB- tm1 i ; tm1 M -RSB- , that corresponds to the delay of m1 from the moment it reaches Si to the reception by M , and -LSB- tm1 M ; tm2 s -RSB- , that corresponds to the time interval from the reception of m1 to the sending of m2 by M . We introduce a further variable di such that 2 ? di be the real time interval which corresponds to the roundtrip observed by Si . We have that from -LRB- 7 -RRB- and -LRB- 8 -RRB- : 2 ? di = tm2 i ? tm1 i = 2 ? min + + : -LRB- 9 -RRB- Since is a non-negative quantity : 2 ? di ? 2 ? min = + > -LRB- 10 -RRB- Substituting the upper bound for into -LRB- 8 -RRB- and considering that is a lower bound for we obtain tm2 s + min < = tm2 i < = tm2 s + 2di ? min : -LRB- 11 -RRB- Now , let us take the point of view of an arbitrary slave i ; di , which is unknown to the slave server , can be approximated using Di , a value available to Si . From 4 and 1 we have di < = Di ? -LRB- 1 + aemax -RRB- and , by substitution into -LRB- 11 -RRB- tm2 s + min < = tm2 i < = tm2 s +2 ? Di ? -LRB- 1 + aemax -RRB- ? min : -LRB- 12 -RRB- We have obtained an interval containing the real time when m2 is received , and this interval can be calculated using information locally available to slave Si when m2 is received . The slave may therefore approximate this value by using the mid-point of the inteval , and taking the mid-length of the interval as an approximation of the error . We call these approxi - mations respectively CMSi -LRB- tm2 i -RRB- and erri : CMSi -LRB- tm2 i -RRB- = = tm2 s + 2Di ? -LRB- 1 + aemax -RRB- ? min + -LRB- tm2 s + min -RRB- 2 = Di ? -LRB- 1 + aemax -RRB- + tm2 s : -LRB- 13 -RRB- erri = tm2 s + 2Di ? -LRB- 1 + aemax -RRB- ? min ? -LRB- tm2 s + min -RRB- 2 = Di ? -LRB- 1 + aemax -RRB- ? min : -LRB- 14 -RRB- 2.2 The Synchronization Period The lenght of the Synchronization Period or dnr depends upon the maximum update error '' of the last successful update attempt . In order to guarantee that the clock inaccuracy remains within ms , we have to size dnr so that the following inequality holds : j '' + -LRB- dnr + ? t -RRB- ? aemaxj < = ms : -LRB- 15 -RRB- The left term of the inequality is the maximum drift that a slave can accumulate during the time interval of length dnr + ? t incremented of the initial maximum deviation '' . Since the expression of which we take the absolute value certainly has a positive value , the above inequality can be rewritten as : dnr < = ae ? 1 max ? -LRB- ms ? '' -RRB- ?? t -LRB- 16 -RRB- Each update attempt has a certain probability of success , depending on the network workload : let us call ps a pessimistic estimate of the probability of success of a single attempt . To attain the required level of availability of the system , we must ensure that the master has the time to carry out several attempts before dnr expires . If pmax is the required probability of success , the number kmax of remote clock update attempts that has to fit in the dnr interval must satisfy the following inequality : -LRB- 1 ? pmax -RRB- < = -LRB- 1 ? ps -RRB- kmax -LRB- 17 -RRB- which is equivalent to kmax > = ln -LRB- 1 ? pmax -RRB- ln -LRB- 1 ? ps -RRB- -LRB- 18 -RRB- Since update attempts must be separated by at least W time units to guarantee their mutual independence , we assume that a time interval W is timed by the master between two successive update attempts ; now it is possible to determine the value of the timeout dna set by the master when it concludes successfully a synchronization attempt . When this timer expires , the master will trigger the first update attempt : dna < = dnr ? kmax ? W -LRB- 19 -RRB- Substituting the value of dnr as expressed by -LRB- 16 -RRB- : dna < = ae ? 1 max -LRB- ms ? '' -RRB- ?? t ? kmax ? W -LRB- 20 -RRB- The two parameters kmax and dna determine the behavior of the master . 2.3 Detailed description of the master slave protocol In Figure 2 and 3 , we give a detailed description of the program that implements the algorithm on a distributed architecture . The master time server and the slave time server are described using an imperative Pascal-like language with nondeterministic statements . Both the master and the slave program consist of one nondeterministic repetitive command Do when B1 do S1 ; ... ; when Bn do Sn ; od where Bi is a boolean expression and Si is a command . Each command \ when Bi do Si '' can be chosen only if Bi evaluates to true : in that case Si is executed . If more than one Bi evaluates to true any of the corresponding statements , Si may be executed . After the termination of Si the whole command is repeated starting with a new evaluation of Bi . The repetitive command properly terminates when all Bi evaluate to false . The maximum number of successive update attempts kmax , the maximum deviation from the real time ms , the worst update precision allowed in a synchronization attempt `` max , the maximum drift rate aemax from real time and the minimum message transmission delay min are declared as a constants . The master program uses three timers -LRB- see Figure 2 Line 8 , 2.8 for short -RRB- : a Synch timer for measuring delays between successive synchronization attempts , an Attempt1 timer for measuring delays between successive master clock update attempts of the first phase of the algorithm -LRB- the master sends a request to record the local time and waits for receiving the message back -RRB- and an Attempt2 timer for measuring delays between successive master clock update attempts of the second phase of the algorithm -LRB- the master sends the value of its clock and waits for receiving the message back -RRB- . Two operations are defined on a timer T : set and reset . The meaning of T : set -LRB- t -RRB- invocation is `` ignore all previous T : set invocations and signal the event T : timeout after t clock time units from now '' . The meaning of T : reset invocation is `` ignore all previous T : set invocations '' -LSB- 5 -RSB- . The local Boolean variable notsynchronized -LRB- 2.4 -RRB- is false when a remote clock update attempt terminates successfully . The local Boolean variable newattempt1 is true during the first phase of the remote clock update attempt . After initializing the system variables , a synchronization attempt is immediately scheduled -LRB- 2.10 -RRB- . When the Synch : timeout event occurs or a new remote clock update attempt is started , a message with timestamp ts is sent to Slave1 -LRB- 2.13 -RRB- . Each slave responds to this message by recording the value of its clock in a local variable -LRB- 3.13 -RRB- , and forwarding the message to the next server . When the message comes back to the master -LRB- 2.27 or 2.32 -RRB- , it is accepted if its timestamp matches with the timestamp recorded when the message was sent -LRB- 2.28 or 2.33 -RRB- , otherwise it is discarded . The Attempt1 timer is set -LRB- 2.14 or 2.17 -RRB- on each new attempt to reach synchronization either after an Attempt1 : timeout event -LRB- 2.15 -RRB- during the first phase of the algorithm or after an Attempt2 : timeout event -LRB- 2.19 -RRB- in the second phase of the algorithm or after an unsuccessful update attempt . It is reset -LRB- 2.28 -RRB- when the first phase of the algorithm terminates successfully . The Attempt2 timer is set -LRB- 2.31 -RRB- after the successful termination of the first phase of the algorithm ; it is reset -LRB- 2.34 -RRB- when the second phase of the algorithm terminates successfully . Each slave Slavei responds to the second message of the master by calculating the adjustment -LRB- 3.17 -RRB- needed to synchronize its logical clock Timei . Note that we used a discrete adjustment even if it causes a logical clock to instantaneously leap forwards or backwards : in -LSB- 1 -RSB- the author shows that amortization can be added to existing external synchronization algorithms based on discrete logical clocks without worsening their precision . 01 task Master -LRB- -RRB- ; 02 const kmax : Int ; W , min , ms , `` max , ae : Time 03 Slave1 , Slaven : processor ; 04 var notsynchronized , newattempt1 : Boolean ; 05 H : hardware-clock ; 06 t , ts , fr , tf , '' , ? t , dna : Time ; 07 k : Integer ; 08 Synch , Attempt1 , Attempt2 : Timer ; 09 k : = 1 ; '' : = 0 ; notsynchronized : = true 10 Synch.set -LRB- 0 -RRB- ; newattempt1 : = true ; 11 do 12 when -LRB- Synch.timeout or -LRB- newattempt1 and k < = kmax -RRB- -RRB- 13 do ts : = H ; send -LRB- `` record your Time '' , ts -RRB- to Slave1 ; 14 Attempt1.set -LRB- W -RRB- ; 15 when Attempt1.timeout 16 do ts : = H ; send -LRB- `` record your Time '' , ts -RRB- to Slave1 ; 17 Attempt1.set -LRB- W -RRB- ; 18 newattempt1 : = true ; k : = k +1 ; 19 when Attempt2.timeout 20 do ts : = H ; send -LRB- `` record your Time '' , ts -RRB- to Slave1 ; 21 Attempt1.set -LRB- W -RRB- ; 22 newattempt1 : = true ; k : = k +1 ; 23 when -LRB- k > kmax and newattempt1 -RRB- 24 do send -LRB- `` notsynch-error '' -RRB- to Slave1 ; 25 k : = 1 ; notsynchronized : = true ; Synch.set -LRB- 0 -RRB- ; 26 when receive -LRB- `` notsynch-error '' -RRB- from Slaven do ; 27 when receive -LRB- `` record your Time '' , t -RRB- from Slaven 28 do if -LRB- ts = t -RRB- then Attempt1.reset ; tr : = H ; 29 newattempt1 : = false ; '' : = 0 ; 30 send -LRB- `` Time = '' , tr , '' -RRB- to Slave1 ; 31 Attempt2.set -LRB- W -RRB- fi ; 32 when receive -LRB- `` Time = '' , t , '' -RRB- from Slaven 33 do if -LRB- tr = t -RRB- 34 then Attempt2.reset ; tf : = H ; 35 if -LRB- '' < = `` max -RRB- 36 then k : = 1 ; 37 if notsynchronized then notsynchronized : = false fi ; 38 ? t : = -LRB- tf ? tr ? min -RRB- -LRB- 1 + ae -RRB- ; 39 dna : = ae ? 1 -LRB- ms ? '' -RRB- ?? t ? kmax ? W ; 40 Synch.set -LRB- dna -RRB- ; send -LRB- `` success '' -RRB- to Slave1 ; 41 else newattempt1 : = true ; k : = k +1 fi ; 42 fi ; 43 when receive -LRB- `` success '' -RRB- from Slaven do ; 44 od ; Fig. 2 01 task Slavei -LRB- -RRB- ; 02 const kmax : Int ; min , ms , `` max , ae : Time 03 Slavei ? 1 , Slavei +1 : processor ; 04 var is synci : Boolean ; 05 Timei : logical-clock ; 06 T i0 , T i1 , erri , NewTimei : Time ; 07 is synci : = false ; T i0 , T i1 , erri , NewTimei : = 0 ; 08 do 09 when receive -LRB- `` notsynch-error '' -RRB- from Slavei ? 1 10 do send -LRB- `` notsynch-error '' -RRB- to Slavei +1 ; 11 is synci : = false ; 12 when receive -LRB- `` record your Time '' , t -RRB- from Slavei ? 1 13 do T i : = Timei ; 14 send -LRB- `` record your Time '' , t -RRB- to Slavei +1 ; 15 when receive -LRB- `` Time = '' , t , '' -RRB- from Slavei ? 1 16 do T 1i : = Timei ; Di : = T1i ? T0i 2 ; 17 NewTimei : = t + Di -LRB- 1 + ae -RRB- ; 18 erri : = Di ? min ; 19 if -LRB- erri < = '' -RRB- 20 then Timei : = NewTimei 21 else '' : = erri fi ; 22 send -LRB- `` Time =\ , t , '' -RRB- to Slavei +1 ; 23 when receive -LRB- `` success \ -RRB- from Slavei ? 1 24 do send -LRB- `` success '' -RRB- to Slavei +1 ; is synci : = true ; 25 od ; Fig. 3 Such implementation satisfies our specifications even if we admit that messages are lost or delivered in a different order . When the master process needs to ensure a given order in the reception of messages , it sends a time-stamp as well , and checks it when the message comes back from the last slave on the ring . 3 Correctness of the Algorithm To prove the correctness of the clock synchronization algorithm , we followed the axiomatic approach proposed in -LSB- 6 -RSB- . To this purpose , we first wrote the corresponding program in a suitable language , and next we proved the validity of its interesting properties . Note that the specific task of keeping the clocks synchronized excludes a total correctness issue : the algorithm never terminates -LRB- if we exclude its failure -RRB- and runs forever correcting the drifiting of the clocks . Concerning partial correctness we proved that , for all possible initial computations , the properties characterizing the algorithm are kept unchanged during its execution . In order to give the flavor of the proof , we illustrate some of the variables used in the proof , and explain how they are bound by the invariant ; the real proof is in -LSB- 8 -RSB- : not synchronized is true when , for the first time , the master triggers a synchronization attempt or after the failure of the kmax-th remote update attempt . The variable becomes false as soon as the master declares that it has reached rapport with the slaves ; start is true when the master detects that one of the clocks is not synchronized ; ready `` max is true while the master can send a second-phase message ; sendt is true while the master is waiting for the second-phase message to come back ; The following invariant characterizes the algorithm : -LRB- : start _ -LRB- k < = kmax -RRB- _ not synchronized -RRB- ^ -LRB- ready `` max , : sendt -RRB- The following description highlights some of the relevant states experienced by the system : for each of them a description is given in terms of the variables above . The reader is invited to verify that each of the states verifies the invariant . When the master detects a failure of the algorithm -LRB- : start ^ k > kmax -RRB- , it resets the local variables -LRB- start ^ k > = kmax ^ not synchronized -RRB- , and triggers a new synchronization attempt -LRB- : start ^ k < = kmax -RRB- . While the master keeps synchronized the system , it holds -LRB- : startand : not synchronized -RRB- . When the first phase of the protocol terminates succesfully , the master sends the second phase message and waits for it to come back -LRB- : ready `` max _ sendt -RRB- . After that same message is received back , the master does not wait for further similar messages -LRB- ready `` max _ : sendt -RRB- . 4 Conclusions The most relevant issues that characterize our algorithm are : ffl the absence of an upper bound to the time needed to exchange a message between two servers ; this property is shared with other probabilistic synchronization protocols ; ffl all the slaves perform a remote clock update attempt within the same pair of roundtrips ; ffl the simplicity of the algorithm , that allows a concise formal proof and facilitates a reliable practical implementation . The absence of an upper bound to the time needed to exchange the messages is of particular interest in a system bound to respect real-time requirements : the message exchanges needed by the clock synchronization protocol can be scheduled as non-critical , low priority activity , and therefore have minimal interference with the real-time constrained activity , especially in a dynamic scheduling environment . References -LSB- 1 -RSB- Schmuck F. , Cristian F. \ Continuous clock amortization need not affect the precision of a clock synchronization algorithm . '' in Proc : 9th ACM Symp . on Principles of Distributed Computing 1990 . -LSB- 2 -RSB- Schneider F. B. \ A paradigm for reliable clock synchronization '' Cornell University Ithaca N.Y. , February 1986 , TR 86-735 . -LSB- 3 -RSB- Gusella R. , Zatti S. \ The accuracy of the clock synchronization protocol achieved by TEMPO in Berkeley Unix 4.3 BSD '' University of California at Berkeley , Berkeley , CA 94720 , January 1987 , UCB/CSD 87/337 . -LRB- PROGRES -RRB- . -LSB- 4 -RSB- Halpern Joseph Y. , Suzuki Ichiro \ Clock synchronization and the power of broadcasting '' , Distributed Computing , 5 -LRB- 1991 -RRB- :73 -82 . -LSB- 5 -RSB- F. Cristian \ Probabilistic clock synchronization '' , Distributed Computing , 3 -LRB- 1989 -RRB- :146 -158 . -LSB- 6 -RSB- K.R.Apt , E.R. Olderog Verification of sequential and concurrent programs , Springer -LCB- Verlag , -LRB- 1991 -RRB- . -LSB- 7 -RSB- J.Lundelius , N.Lynch \ An upper and a lower bound for clock synchronization '' , Information and Control , n. 62 , 1984 , pp 190-204 . -LSB- 8 -RSB- F.Gattai , R.Golinelli La sincronizzazione degli orologi in un sistema distribuito : studio del problema e analisi di una soluzione , Tesi di Laurea , Universit?a di Pisa , A.A. 92/93 .

B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

distributed systems
program verification
real-time applications
time servers