Windows Insider

Keeping Time in Windows 2000

The Windows Time Synchronization service ensures that all your machines stay—tick for tock—on the same clock.

Does anybody really know what time it is? Does anyone really care? Well, you do if your network authentication system depends upon a network-wide concurrent time stamp. With Windows 2000, the default authentication protocol is Kerberos—that cross-platform, triple-headed hound of security. One of the components of that authentication method is the granting of tickets that are time-stamped. This time stamping is partly used to verify the legitimacy of the ticket. And these time-stamped tickets are your entry into the resources of your network. For this reason alone, a time service on a Win2K network is essential. I’m not going to go into the gory details of Kerberos here, but—trust me—time is important. It’s also important for many other applications and, if nothing else, it’s quite convenient to know when a file was created or modified.

Get In Synch
Win2K uses the Windows Time Synchronization service to ensure that all of the Win2K machines in the enterprise share a common time. This service is run as W32Time by default on every Win2K machine. W32Time is an implementation of Simple Network Time Protocol (SNTP), described in Informational RFC 1769.

SNTP is an adaptation of the Network Time Protocol (NTP) described in Standard RFC 1305. NTP is used to provide a level of accuracy of 1 to 50 ms between connected computer clocks across the Internet, taking into account latency, jitter and other internetwork anomalies. This is fine for major backbones, but the same accuracy, complexity and overhead isn’t required for simple LAN purposes. SNTP is quite sufficient. SNTP operates in either a unicast or multicast mode. Unicast is preferable, since you can specify the server from which you’re requesting service and ignore attempts from unknown parties that could distort or misdirect your timeserver. The multicast mode, which finds anonymously available timeservers, isn’t a good idea.

The W32Time SNTP service needs to access an NTP server to use as its authoritative time-setting source, and there are three connection methods. One is via radio, accessed via a specialized piece of hardware that’s essentially a radio that listens in at the MHz listed. You won’t find this in most organizations. The U.S. Bureau of Standards broadcasts the time at 5MHz, 10MHz, 15MHz, 20MHz, and 25MHz, which can be tuned into with a special receiver. This is probably overkill for most facilities, but available if microsecond accuracy is important to your network.

Using a modem to directly dial into an NTP server is another method. This necessitates dialing repeatedly into an NTP server and brings potential modem difficulties into play that are best avoided.

Both of these methods provide direct connections to the NTP server, eliminating latency when setting the clock.

The third and easiest way to obtain time from an NTP server is to connect through the Internet. There are many NTP servers that can be reached on a regular basis. As with all Internet connections, there are latency issues, so it’s best to pick a few NTP servers that are consistently available. A simple way to determine reliable and available time service is to locate candidate NTP servers, PING them periodically over a period of several hours and days, and analyze the replies for the shortest consistent round-trip delays.

Set Up the Service
After determining which NTP servers to use as the authoritative timeserver, you can use that source to set the W32Time SNTP service with these commands:

NET TIME \\W2KSERVER.DOMAIN.COM //SETSNTP:
"Ntp2.usno.navy.milTock.usno.navy.mil"

or

NET TIME \\W2KSERVER.DOMAIN.COM //SETSNTP:
"192.5.41.209 192.5.41.41"

As you can see, the NET TIME command can use either a DNS host name or an IP address. The host name is somewhat self-documenting, but an IP address removes any name-resolution problems when obtaining the time.

Cover your Bases
Regardless of your approach, you should enter several servers’ addresses in the command line in case an NTP server fails to respond or is otherwise unavailable. If one isn’t available, W32Time will query the next server in the command line. For this reason, it’s also a good idea to list servers in different physical locations in case of Internet brownouts or other availability problems.

Another consideration is the rank of the NTP server you’re connecting to as the authoritative server. This layered ranking of the NTP hierarchy to which a server belongs is called a stratum. Stratum 1 is an NTP server that’s directly synchronized with the Coordinated Universal Time (UTC) through a radio, satellite or modem connection. UTC is an international cooperative effort to pinpoint an agreed-upon world time. The United States uses atomic clocks managed by the National Institute of Standards and Technology (NIST) and the U.S. Naval Observatory to establish the time and provide our contribution to the worldwide UTC effort. An NTP stratum 2 server obtains its time from an NTP stratum 1 server, a stratum 3 server gets its time from a stratum 2 server, and so on. Thus, the higher along the stratum food chain you obtain your time, the more accurate the time on your network.

Set the Pecking Order
So now, which server on your Win2K network do you make authoritative? You’re probably aware that the multimaster model of Active Directory is still dependent upon several single master domain servers in the directory. These are called Flexible Single Master Operations (FSMO) servers and they perform various functions for maintaining AD and provide backward compatibility with Windows NT.

Since W32Time synchronization uses the AD domain hierarchy to maintain time synchronization, the PDC Emulator FSMO in the root domain of the Win2K AD forest is the authoritative timeserver for the Win2K network. This server should have the time from the NTP stratum 1 server using the NET TIME command. Other domain controllers in other domains will synchronize from this one, and any child domains of these DCs will get their time from their parent DCs. As workstations are authenticated, they’ll obtain their time from the authoritative DC . In this manner, all Win2K machines will have a consistent time based upon the time obtained from the authoritative NTP server.

When the Win2K workstation client boots SNTP, packets are exchanged with the authenticating DC, and W32Time determines the correct time from its authoritative server. If the client time is behind the server time, it’s immediately changed to the correct time. However, if the client time is ahead less than two minutes, the client clock is slowed down until the time is synchronized.

After this initial synchronization, the client performs a time check in eight hours. If the time is off by more that two seconds, the next check is performed in four hours. If the time is off by more than two seconds, it’s checked again in two hours. The minimum amount of time between checks is 45 minutes, with a maximum of eight hours. These default checks are also configurable for periods of a week, every three days or every two days by editing the registry. This usually isn’t necessary, as the defaults work fine in most instances.

The most important factor is to make sure the PDC Emulator FSMO in the AD root domain is configured to get its time from an accurate, reliable and authoritative NTP source.

The Windows Time Synchronization service isn’t the most complex service in a Win2K environment, but a mistake here can have irritating and unnecessary repercussions. Take a quick look at your timeserver and make sure the pieces are in place.

About the Author

Michael Chacon, MCSE, MCT, is a directory services architect, focusing on the business and technical issues surrounding identity management in the enterprise. He is the co-author of new book coming from Sybex Publishing that covers the MCSA's 70-218 exam.

comments powered by Disqus

Redmond Tech Watch

Sign up for our newsletter.

I agree to this site's Privacy Policy.