Commit | Line | Data |
---|---|---|
409e5ca0 KB |
1 | .\" Copyright (c) 1986 The Regents of the University of California. |
2 | .\" All rights reserved. | |
bf8928b7 | 3 | .\" |
409e5ca0 KB |
4 | .\" Redistribution and use in source and binary forms are permitted |
5 | .\" provided that the above copyright notice and this paragraph are | |
6 | .\" duplicated in all such forms and that any documentation, | |
7 | .\" advertising materials, and other materials related to such | |
8 | .\" distribution and use acknowledge that the software was developed | |
9 | .\" by the University of California, Berkeley. The name of the | |
10 | .\" University may not be used to endorse or promote products derived | |
11 | .\" from this software without specific prior written permission. | |
12 | .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
13 | .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
14 | .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
15 | .\" | |
1c15e888 | 16 | .\" @(#)timed.ms 6.2 (Berkeley) 3/7/89 |
bf8928b7 KM |
17 | .\" |
18 | .TL | |
19 | Timed Installation and Operation Guide | |
20 | .AU | |
21 | Riccardo Gusella, Stefano Zatti, James M. Bloom | |
22 | .AI | |
23 | Computer Systems Research Group | |
24 | Computer Science Division | |
25 | Department of Electrical Engineering and Computer Science | |
26 | University of California, Berkeley | |
27 | Berkeley, CA 94720 | |
28 | .AU | |
29 | Kirk Smith | |
30 | .AI | |
31 | Engineering Computer Network | |
32 | Department of Electrical Engineering | |
33 | Purdue University | |
34 | West Lafayette, IN 47906 | |
35 | .FS | |
36 | This work was sponsored by the Defense Advanced Research Projects Agency | |
37 | (DoD), monitored by the Naval Electronics Systems | |
38 | Command under contract No. N00039-84-C-0089, and by the CSELT | |
39 | Corporation of Italy. | |
40 | The views and conclusions contained in this document are those of the | |
41 | authors and should not be interpreted as representing official policies, | |
42 | either expressed or implied, of the Defense Research Projects Agency, | |
43 | of the US Government, or of CSELT. | |
44 | .FE | |
45 | .LP | |
46 | .EH 'SMM:8-%''Timed Installation and Operation' | |
47 | .OH 'Timed Installation and Operation''SMM:8-%' | |
48 | .SH | |
49 | Introduction | |
50 | .PP | |
51 | The clock synchronization service for | |
52 | the UNIX 4.3BSD operating system is composed of a collection of | |
53 | time daemons (\fItimed\fP) running on the machines in a local | |
54 | area network. | |
55 | The algorithms implemented by the service is based on a master-slave scheme. | |
56 | The time daemons communicate with each other using the | |
57 | \fITime Synchronization Protocol\fP (TSP) which | |
58 | is built on the DARPA UDP protocol and described in detail in [4]. | |
59 | .PP | |
60 | A time daemon has a twofold function. | |
61 | First, it supports the synchronization of the clocks | |
62 | of the various hosts in a local area network. | |
63 | Second, it starts (or takes part in) the election that occurs | |
64 | among slave time daemons when, for any reason, the master disappears. | |
65 | The synchronization mechanism and the election procedure | |
66 | employed by the program \fItimed\fP are described | |
67 | in other documents [1,2,3]. | |
68 | The next paragraphs are a brief overview of how the time daemon works. | |
69 | This document is mainly concerned with the administrative and technical | |
70 | issues of running \fItimed\fP at a particular site. | |
71 | .PP | |
72 | A \fImaster time daemon\fP measures the time | |
73 | differences between the clock of the machine on which it | |
74 | is running and those of all other machines. | |
75 | The master computes the \fInetwork time\fP as the average of the | |
76 | times provided by nonfaulty clocks.\** | |
77 | .FS | |
78 | A clock is considered to be faulty when its value | |
79 | is more than a small specified | |
80 | interval apart from the majority of the clocks | |
81 | of the other machines [1,2]. | |
82 | .FE | |
83 | It then sends to each \fIslave time daemon\fP the | |
84 | correction that should be performed on the clock of its machine. | |
85 | This process is repeated periodically. | |
86 | Since the correction is expressed as a time difference rather than an | |
87 | absolute time, transmission delays do not interfere with | |
88 | the accuracy of the synchronization. | |
89 | When a machine comes up and joins the network, | |
90 | it starts a slave time daemon which | |
91 | will ask the master for the correct time and will reset the machine's clock | |
92 | before any user activity can begin. | |
93 | The time daemons are able to maintain a single network time in spite of | |
94 | the drift of clocks away from each other. | |
95 | The present implementation keeps processor clocks synchronized | |
96 | within 20 milliseconds. | |
97 | .PP | |
98 | To ensure that the service provided is continuous and reliable, | |
99 | it is necessary to implement an election algorithm to elect a | |
100 | new master should the machine running the current master crash, the master | |
101 | terminate (for example, because of a run-time error), or | |
102 | the network be partitioned. | |
103 | Under our algorithm, slaves are able to realize when the master has | |
104 | stopped functioning and to elect a new master from among themselves. | |
105 | It is important to note that, since the failure of the master results | |
106 | only in a gradual divergence of clock values, the election | |
107 | need not occur immediately. | |
108 | .PP | |
109 | The machines that are gateways between distinct local area | |
110 | networks require particular care. | |
111 | A time daemon on such machines may act as a \fIsubmaster\fP. | |
112 | This artifact depends on the current inability of | |
113 | transmission protocols to broadcast a message on a network | |
114 | other than the one to which the broadcasting machine is connected. | |
115 | The submaster appears as a slave on one network, and as a master | |
116 | on one or more of the other networks to which it is connected. | |
117 | .PP | |
118 | A submaster classifies each network as one of three types. | |
119 | A \fIslave network\fP is a network on which the submaster acts as a slave. | |
120 | There can only be one slave network. | |
121 | A \fImaster network\fP is a network on which the submaster acts as a master. | |
122 | An \fIignored network\fP is any other network which already has a valid master. | |
123 | The submaster tries periodically to become master on an ignored | |
124 | network, but gives up immediately if a master already exists. | |
125 | .SH | |
126 | Guidelines | |
127 | .PP | |
128 | While the synchronization algorithm is quite general, the election | |
129 | one, requiring a broadcast mechanism, puts constraints on | |
130 | the kind of network on which time daemons can run. | |
131 | The time daemon will only work on networks with broadcast capability | |
132 | augmented with point-to-point links. | |
133 | Machines that are only connected to point-to-point, | |
134 | non-broadcast networks may not use the time daemon. | |
135 | .PP | |
136 | If we exclude submasters, there will normally be, at most, one master time | |
137 | daemon in a local area internetwork. | |
138 | During an election, only one of the slave time daemons | |
139 | will become the new master. | |
140 | However, because of the characteristics of its machine, | |
141 | a slave can be prevented from becoming the master. | |
142 | Therefore, a subset of machines must be designated as potential | |
143 | master time daemons. | |
144 | A master time daemon will require CPU resources | |
145 | proportional to the number of slaves, in general, more than | |
146 | a slave time daemon, so it may be advisable to limit master time | |
147 | daemons to machines with more powerful processors or lighter loads. | |
148 | Also, machines with inaccurate clocks should not be used as masters. | |
149 | This is a purely administrative decision: an organization may | |
150 | well allow all of its machines to run master time daemons. | |
151 | .PP | |
152 | At the administrative level, a time daemon on a machine | |
153 | with multiple network interfaces, may be told to ignore all | |
154 | but one network or to ignore one network. | |
155 | This is done with the \fI\-n network\fP and \fI\-i network\fP | |
156 | options respectively at start-up time. | |
157 | Typically, the time daemon would be instructed to ignore all but | |
158 | the networks belonging to the local administrative control. | |
159 | .PP | |
160 | There are some limitations to the current | |
161 | implementation of the time daemon. | |
162 | It is expected that these limitations will be removed in future releases. | |
163 | The constant NHOSTS in /usr/src/etc/timed/globals.h limits the | |
164 | maximum number of machines that may be directly controlled by one | |
165 | master time daemon. | |
166 | The current maximum is 29 (NHOSTS \- 1). | |
167 | The constant must be changed and the program recompiled if a site wishes to | |
168 | run \fItimed\fP on a larger (inter)network. | |
169 | .PP | |
170 | In addition, there is a \fIpathological situation\fP to | |
171 | be avoided at all costs, that might occur when | |
172 | time daemons run on multiply-connected local area networks. | |
173 | In this case, as we have seen, time daemons running on gateway machines | |
174 | will be submasters and they will act on some of those | |
175 | networks as master time daemons. | |
176 | Consider machines A and B that are both gateways between | |
177 | networks X and Y. | |
178 | If time daemons were started on both A and B without constraints, it would be | |
179 | possible for submaster time daemon A to be a slave on network X | |
180 | and the master on network Y, while submaster time daemon B is a slave on | |
181 | network Y and the master on network X. | |
182 | This \fIloop\fP of master time daemons will not function properly | |
183 | or guarantee a unique time on both networks, and will cause | |
184 | the submasters to use large amounts of system resources in the form | |
185 | of network bandwidth and CPU time. | |
186 | In fact, this kind of \fIloop\fP can also be generated with more | |
187 | than two master time daemons, | |
188 | when several local area networks are interconnected. | |
189 | .SH | |
190 | Installation | |
191 | .PP | |
192 | In order to start the time daemon on a given machine, | |
193 | the following lines should be | |
194 | added to the \fIlocal daemons\fP section in the file \fI/etc/rc.local\fP: | |
195 | .sp 2 | |
196 | .in 1i | |
197 | .nf | |
198 | if [ -f /etc/timed ]; then | |
199 | /etc/timed \fIflags\fP & echo -n ' timed' >/dev/console | |
200 | fi | |
201 | .fi | |
202 | .in -1i | |
203 | .sp | |
204 | .LP | |
205 | In any case, they must appear after the network | |
206 | is configured via ifconfig(8). | |
207 | .PP | |
208 | Also, the file \fI/etc/services\fP should contain the following | |
209 | line: | |
210 | .sp 2 | |
211 | .ti 1i | |
212 | timed 525/udp timeserver | |
213 | .sp | |
214 | .LP | |
215 | The \fIflags\fP are: | |
216 | .IP "-n network" 13 | |
217 | to consider the named network. | |
218 | .IP "-i network" | |
219 | to ignore the named network. | |
220 | .IP -t | |
221 | to place tracing information in \fI/usr/adm/timed.log\fP. | |
222 | .IP -M | |
223 | to allow this time daemon to become a master. | |
224 | A time daemon run without this option will be forced in the state of | |
225 | slave during an election. | |
226 | .SH | |
227 | Daily Operation | |
228 | .PP | |
229 | \fITimedc(8)\fP is used to control the operation of the time daemon. | |
230 | It may be used to: | |
231 | .IP \(bu | |
232 | measure the differences between machines' clocks, | |
233 | .IP \(bu | |
234 | find the location where the master \fItimed\fP is running, | |
235 | .IP \(bu | |
236 | cause election timers on several machines to expire at the same time, | |
237 | .IP \(bu | |
238 | enable or disable tracing of messages received by \fItimed\fP. | |
239 | .LP | |
240 | See the manual page on \fItimed\fP\|(8) and \fItimedc\fP\|(8) | |
241 | for more detailed information. | |
242 | .PP | |
243 | The \fIdate(1)\fP command can be used to set the network date. | |
244 | In order to set the time on a single machine, the \fI-n\fP flag | |
245 | can be given to date(1). | |
246 | .bp | |
247 | .SH | |
248 | References | |
249 | .IP 1. | |
250 | R. Gusella and S. Zatti, | |
251 | \fITEMPO: A Network Time Controller for Distributed Berkeley UNIX System\fP, | |
252 | USENIX Summer Conference Proceedings, Salt Lake City, June 1984. | |
253 | .IP 2. | |
254 | R. Gusella and S. Zatti, \fIClock Synchronization in a Local Area Network\fP, | |
255 | University of California, Berkeley, Technical Report, \fIto appear\fP. | |
256 | .IP 3. | |
257 | R. Gusella and S. Zatti, | |
258 | \fIAn Election Algorithm for a Distributed Clock Synchronization Program\fP, | |
259 | University of California, Berkeley, CS Technical Report #275, Dec. 1985. | |
260 | .IP 4. | |
261 | R. Gusella and S. Zatti, | |
262 | \fIThe Berkeley UNIX 4.3BSD Time Synchronization Protocol\fP, | |
263 | UNIX Programmer's Manual, 4.3 Berkeley Software Distribution, Volume 2c. |