remote servers server 1 server 2 peer/poll 1 server 3 peer/poll 2 peer/poll 3 selection and...

36
Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock Discipline Process System Process Peer/Poll Processes Clock Adjust Process Figure 1. Implementation Model

Upload: logan-simpson

Post on 04-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

RemoteServers

Server 1

Server 2

Peer/Poll1

Server 3

Peer/Poll2

Peer/Poll3

Selectionand

ClusteringAlgorithms

CombiningAlgorithm

Loop Filter

VFO

Clock Discipline Process

SystemProcess

Peer/PollProcesses

Clock Adjust Process

Figure 1. Implementation Model

Page 2: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Timestamp Fraction

NTP Timestamp Format

0 31 32 63

Timestamp Fraction

NTP Date Format

0 63 64 127

Era

31 32

Figure 2. NTP Time Formats

Seconds Fraction

NTP Short Format

0 15 16 31

Page 3: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

0

0.

0

0

t2 = clock

t3

t4

t5.t1

t5

t6

t7

org

rec

t3

t4

T3 ≠ t3?

t8

t5

t6

T3 ≠ t1?

t6

org

rec

t1

t2

t1

t2

t4

t3.

t2 t6

t5.

t1

0

0 t1

t2

t3.

T3 ≠ 0?

t4

t4

t3t2

t1 t5

t6

t8

t7

t4

t2 t3 t6 t7

t8

t6 = clock

t1= clock t5 = clock

t4 = clock t8 = clock

t3 = clock t7 = clock

t1

t5

PacketVariables

Peer B

StateVariables

PacketVariables

Peer A

StateVariables

T1

T3

T2

T4

T1

T3

T2

T4

t7T1 = t3?xmt t30

t1xmt t5 T1 = t5?T1 = t1?

Figure 3. On-Wire Protocol

Page 4: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

mode = 3? yes client_packet

Figure 4. Receive Processing

yes

yes

auth OK?

format OK?

access OK?

receive()

no access deny

no format error

match_assoc

no auth erroryes

no

Page 5: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Packet Variable Variablex.leap ← s.leapx.version ← r.versionx.mode ← 4x.stratum ← s.stratumx.poll ← r.pollx.precision ← s.precisionx.rootdelay ← s.rootdelay

x.rootdisp ← s.rootdisp x.refid ← s.refidx.reftime ← s.reftimex.org ← r.xmt x.rec ← r.dstx.xmt ← clockx.keyid ← r.keyidx.digest ← md5 digest

Figure 5. Client Packet Processing

client_packet

copy header

MD5 digest

fast_xmit()

xmt = T3

copy T1,T2

T3 = clock

auth OK?

NAK digest

yes no

return

Page 6: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

yesT3 = xmt?no

duplicate

T1 = 0? orT2 = 0?

T1 = xmt?

yes

no

mode = 5?

packet

T3 = 0? yes format error

no

auth error

yes

no

yes

yes

noauth = NAK?

org = T3

rec = T4

match_assoc

no

return

org = T3

rec = T4

Figure 6. Timestamp Processing

Page 7: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Peer PacketVariables Variablesp.leap ← r.leapp.mode ← r.modep.stratum ← r.stratump.ppoll ← r.ppoll p.rootdelay ← r.rootdelayp.rootdisp ← r.rootdispp.refid ← r.refidp.reftime ← r.reftime

Figure 7. Packet Processing

okheader?

packet

bad header error

)]()[(θ 431221 TTTT

)()(δ 2314 TTTT

4 1ε ρ ρ ( )R T T

clock_filter

poll_update()

copy header

reach |= 1

Page 8: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

no

Copy filter to a temporary list. Sort the list by increasing Let i, i, i, ti

be the ith entry on the sorted list.

Shift sample t into filter shift register

clock_filter

1 20

i

(θ θ )7 i

1

εε2

i

ii

0δ δ0θ θ

yest0 > t

clock_select()

Figure 8. Clock Filter Algorithm

0t t

return

Page 9: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

no

clock_select()

find majority clique

clustering algorithm

accept()?scan

candidatesyes

add peer

return(SYNC)

n < CMIN?

survivors?no

yes

nos.p = v0.p

return(UNSYNC)

yes

s.p = NULL

Figure 9. clock_select() Routine

selection algorthm

Page 10: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

no

Set the number of midpoints d = 0. Set c = 0. Scan from lowest endpoint to highest. Add one to c for every lowpoint, subtract one for every highpoint, add one to d for every midpoint. If c ≥ m f, stop; set l = current lowpoint

Set c = 0. Scan from highest endpoint to lowest. Add one to c for every highpoint, subtract one for every lowpoint, add one to d for every midpoint.

If c ≥ m f, stop; set u = current highpoint.

Add one to f. Is f < m / 2?

Select the lowpoint, midpoint and highpoint of these intervals. Sort these values in a list from lowest to highest. Set the number of falsetickers f = 0.

Failure; a majority clique could not be found..

Success; the intersection interval is [l, u].

yes

For each of m acceptable associations construct a correctness interval [ – , + ]

If d ≤ f and l < u?

no

yes

Figure 10. Selection Algorithm

Page 11: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

no

all no

noreturn(NO)

accept()

reach = 0?

yesrefid = addr?

leap = 11?stratum >=

MAXSTRAT?

yes

any yes server not synchronized

root distance exceeded

server/client sync loop

root_dist() >= MAXDIST?

Figure 11. accept() Routine

no

return(YES)

yes server not reachable

Page 12: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

For each candidate s, compute the selection jitter s (RMS peer offset differences between s and all other candidates).

Select max as the candidate with maximum s.

Delete the outlyer candidate with max; reduce n by one.

Done. The remaining cluster survivors are the pick of the litter. The survivors are in the v structure sorted by .

no

yes

Let (, , ) represent a candidate peer with offset jitter and a weight factor = stratum MAXDIST + .

Select min as the candidate with minimum .

Save the candidates in the v structure sorted by increasing . Let n be the number of candidates.

max < min or n ≤ NMIN?

Figure 12. Clustering Algorithm

Page 13: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

yw /yz /

return

done

scancluster

survivors

y = z = w = 0

x = rootdist()

20(θ θ )iw

xz i /θxy /1

clock_combine()

Variable Process Description system combined clock offsetp system combined jitter0 survivor list first survivor offset survivor list ith survivor offsetx, y, z, w temporaries

Figure 13. clock_combine() Routine

Variables and Parameters

Page 14: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

ADJ

local_clock()

clock_update()

yes

no . .p t s t

. .s t p t

PANIC

clear all associations

STEP

*update system

variables

panic exit

IGNOR

return

System System PeerVariables Variablesleap ← leapstratum ← stratum + 1refid ← refidreftime ← reftime ← R + ← ER + + + + ||

leap = 3stratum = MAXSTRAT

*Update System Variables

Figure 14. clock_update() Routine

Page 15: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

12 2 1 3 4θ [( ) ( )]T T T T

4 1 3 2δ ( ) ( )T T T T

4 1ε ρ ρ ( )R T T

)θcombine(Θ j

δΔΔ R

Ε Ε ε θR

Peer VariablesClient

System Variables

1 20(θ θ )

1 jSjm

2 2p s

R

R

Server

1 20(θ θ )

1 iin

ρR

Figure 15. System Variables Processing

Page 16: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Figure 16. Clock Discipline Algorithm

Vd

Vc Phase/freqPrediction

Clock Filter

ClockAdjust

PhaseDetector

VFO

Vs

r +

c NTP

Loop Filter

x

y

Page 17: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

yPLL PLLPredict

Vs

x PhaseCorrect

y

yFLL FLLPredict

Figure 17. PLL/FLL Prediction Functions

Page 18: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

no

yesno

no

yes

μB Rfreq

| > PANICT?

SYNC

return(PANIC)

local_ clock()

|| > STEPT? FREQSPIK

yesstate = SPIK

< WATCH

FREQSPIKSYNC

return(rval)

yes

rval = ADJ

FSETNSET

NSETFSET

state = NSET?

R =

no

step_time (rval = STEP

rst(new, off)

Figure 18. local_clock() Routine (1 of 2)

freq = 0rval = IGNOR

Calculate new freq adjustment from and using hybrid

PLL and FLL.

no < WATCH

FREQ?yes

state = newB = off R

R = off

tc

return

yes

return(rval)

rst(SYNC, 0)

rst(FREQ, 0)

rst(FREQ, 0)

no

R =

μB Rfreq

Page 19: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

2

yes R> PGATE

count +=

count LIMIT?

count = 0

no

yes

count = 2

++

< MAXPOLL

count LIMIT?

count = yes

> MINPOLL

nono

no noyes yes

return(rval)

tc

+= freq

state = SYNC

Figure 19. local_clock() Routine (2 of 2)

Page 20: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

clock_adjust()

R = tmp

next < timer?

+=

adjust_time ( + tmp)

Figure 20. clock_adjust() Routine

Rtmp

TC

poll()

return

noyes

Page 21: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Figure 21. poll() Routine

yes

yes

yes

no

no

unreach++

hpoll++

burst = 0?

unreach < UNREACH?

reach = 0?

reach & 0x7 = 0?

clock_filter(0, 0, ∞, t)

burst

peer_xmit()

reach <<= 1last = timer

BURST &

accept()?

burst = BCOUNT

IBURST &

unreach = 0?

unreach = 0hpoll =

poll()

nono

noyes

no

poll_update()

mode = 6?

mode= 5?yes

yes

no

yes

return

no

yes

Page 22: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Packet Variable Variablex.leap ← s.leapx.version ← VERSION

x.mode ← p.modex.stratum ← s.stratumx.poll ← p.hpollx.precision ← s.precx.rootdelay ← s.rootdelay

x.rootdisp ← s.rootdisp x.refid ← s.refidx.reftime ← s.reftimex.org ← p.org x.rec ← p.rec x.xmt ← clockx.keyid ← p.keyidx.digest ← md5()

Figure 22. transmit() Routine

peer_xmit()

copy header

MD5()

xmit_packet()

return

copy T1,T2

T3 = get_clock()

xmt = T3

Page 23: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

next = last + (1 << poll)

poll_update()

Figure 23. poll_update Routine

return

burst > 0

next += 2

yesno

hpoll = min[MAXPOLL, max(MINPOLL, hpoll)]

poll = min[hpoll, max(MINPOLL, ppoll)] next = last

yesno

Page 24: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Stratum PollLI ModeVN

Root Delay

Root Dispersion

Reference Identifier

Reference Timestamp (64)

Originate Timestamp (64)

Receive Timestamp (64)

Transmit Timestamp (64)

Message Digest (128)

Key Identifier

Cryptosum

MAC(Optional)

Extension Field 1 (optional)

Extension Field 2… (optional)

Precision

Figure 24. NTP Header Format

0 2 5 8 16 24 31

Page 25: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Code Length

Association ID

Signature Length

Timestamp

Filestamp

Value Length

Value Fields (optional)

Figure 25. NTP Extension Field Format

0 2 8 16 31

RE VN

Value (optional)

Padding (zeros)

Signature (optional)

Padding (zeros)

Page 26: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Table 1. Association and Packet Modes

Association Mode Assoc. Mode Packet ModeSymmetric Active 1 1 or 2Symmetric Passive 2 1Client 3 4Server 4 3Broadcast Server 5 5 5Broadcast Client 6 na

Page 27: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Year MJD NTP Date NTP Era NTP Timestamp Epoch1 Jan -4712 2,400,001 208,657,814,400 49 1,795,583,104 First day Julian Era1 Jan -1 679,306 59,989,766,400 14 139,775,744 2 BCE1 Jan 0 678,941 59,958,230,400 14 171,311,744 1 BCE1 Jan 1 678,575 59,926,608,000 14 202,934,144 1 CE4 Oct 1582 100,851 10,011,254,400 3 2,873,647,488 Last day of Julian Calendar15 Oct 1582 100,840 10,010,304,000 3 2,874,597,888 First day Gregorian Calendar31 Dec 1899 15,019 86,400 1 4,294,880,896 Last day NTP Era 11 Jan 1900 15,020 0 0 0 First day NTP Era 01 Jan 1970 40,587 2,208,988,800 0 2,208,988,800 First day Unix1 Jan 1972 41,317 2,272,060,800 0 2,272,060,800 First day UTC31 Dec 1999 51,543 3,155,587,200 0 3,155,587,200 Last day 20th century1 Jan 2000 51,544 3,155,673,600 0 3,155,673,600 First day 21st century7 Feb 2036 64,730 4,294,944,000 0 4,294,944,000 Last day NTP Era 08 Feb 2036 64,731 4,295,030,400 1 63,104 First day NTP Era 116 Mar 2172 114,441 8,589,974,400 2 39,808 First day NTP Era 21 Jan 2500 234,166 18,934,214,400 4 1,754,345,216 2500 CE1 Jan 3000 416,787 34,712,668,800 8 352,930,432 3000 CE

Table 2. Interesting Historic NTP Dates

Page 28: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Table 3. Name Prefix Conventions

Name Description r. receive packet header variablex. transmit packet header variablep. peer/poll variables. system variablec. clock discipline variable

Page 29: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Table 4. Global Parameters

Name Value Description PORT 123 NTP port numberVERSION 4 version numberTOLERANCE 15e-6 frequency tolerance () (s/s)MINPOLL 4 minimum poll exponent (16 s)MAXPOLL 17 maximum poll exponent (36 h)MAXDISP 16 maximum dispersion (s)MINDISP .005 minimum dispersion increment (s)MAXDIST 1 distance threshold (s)MAXSTRAT 16 maximum stratum number

Page 30: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Name Formula Description leap leap leap indicator (LI)version version version number (VN)mode mode modestratum stratum stratumpoll poll poll exponentprecision R precision exponentrootdelay R root delayrootdisp R root dispersionrefid refid reference IDreftime reftime reference timestamporg T1 origin timestamp rec T2 receive timestamp xmt T3 transmit timestampdst T4 destination timestampkeyid keyid key IDdigest digest message digest

Table 5. Packet Header Variables

Page 31: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Name Formula DescriptionConfiguration Variablessrcaddr srcaddr source addresssrcport srcport source portdstaddr dstaddr destination addressdstport destport destination portkeyid keyid key identifier key IDPacket Variablesleap leap leap indicatorversion version version numbermode mode modestratum stratum stratumppoll ppoll peer poll exponentrootdelay R root delayrootdisp R root dispersionrefid refid reference IDreftime reftime reference timestampTimestamp Variablest t epochorg T1 origin timestamprec T2 receive timestampxmt T3 transmit timestampStatistics Variablesoffset clock offsetdelay roundtrip delaydisp dispersionjitter jitter

Table 6. Peer Variables

Page 32: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Table 7. Packet Error Checks

1 duplicate packet The packet is at best an old duplicate or at worst a replay by a hacker. This can happen in symmetric modes if the poll intervals are uneven.

2 bogus packet The packet is not a reply to the most recent packet sent. This can happen in symmetric modes if the poll intervals are uneven.

3 invalid One or more timestamp fields are invalid. This normally happens in symmetric modes when one peer sends the first packet to the other and before the other has received its first reply.

4 access denied The access controls have blacklisted the source address.5 authentication failure The cryptographic message digest does not match the MAC.6 unsynchronized The server is not synchronized to a valid source.7 bad header data One or more header fields are invalid.8 autokey error Public key cryptography has failed to authenticate the packet.9 crypto error Mismatched or missing cryptographic keys or certificates.

Page 33: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Name Formula Descriptiont t epochleap leap leap indicatorstratum stratum stratumprecision precisionp p system peer pointeroffsetcombined offsetjittercombined jitterrootdelay root delayrootdisp root dispersionrefid refid reference IDreftime reftime reference timeNMIN 3 minimum survivorsCMIN 1 minimum candidates

Table 8. System Process Variables and Parameters

Page 34: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Table 9. Clock Discipline Variables and Parameters

Name Formula Descriptionttimerseconds counteroffset combined offsetresid R residual offsetfreq clock frequencyjitter clock jitterwander frequency wandertc time constant (log2)state state stateadj adj frequency adjustmentcount count hysteresis counterSTEPT 125 step thresh (.125 s)WATCH 900 stepout thresh (s)PANICT 1000 panic thresh. (1000 s) LIMIT 30 hysteresis limitPGATE 4 hysteresis gate TC 16 time constant scaleAVG 8 averaging constant

Page 35: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

State < STEP STEP CommentsNSET FREQ, adj. time FREQ, step time Frequency never set.

FSET SYNC, adj. time SYNC, step time Frequency set from file.

SPIK SYNC, adj. freq, adj. time if < WATCH, SPIK Outlyer found.else step time

FREQ if < WATCH, FREQ ifWATCH,FREQ Frequency measurement.else step freq, adj. time else SYNCstep freq,

step time

SYNC SYNC, adj freq, adj. time SPIK Normal operation.

Table 10. Clock Discipline State Transition Table

Page 36: Remote Servers Server 1 Server 2 Peer/Poll 1 Server 3 Peer/Poll 2 Peer/Poll 3 Selection and Clustering Algorithms Combining Algorithm Loop Filter VFO Clock

Name Formula Descriptionhpoll hpoll host poll exponentlast last last poll timenext next next poll timereach reach reach registerunreach unreach unreach counterUNREACH 24 unreach limit BCOUNT 8 burst countBURST flag burst enableIBURST flag iburst enable

Table 11. Poll Process Variables and Parameters