I'm looking for a, preferably free, NTP Server for Windows Server 2003/2008. We have already tried the built in Windows Time Server, but our tests did show that it is not very accurate, we see time differences up to 500ms. The max time difference we can allow for our application is ~100ms.

Now we have already used the Meinberg NTPd for Windows. It works great except we have one big issue with it: If there is a network connection problem between the client and server, the ntp server is in a panic state It won't give the client a new time until we restart the ntp service. This is a big issue which has caused us some trouble. It was working fine for months until there was a network problem we didn't notice, we only noticed it after a week when the time difference was already 30 sec. on the clients.

So please suggest some alternative NTP Server for windows. I did Google but I get a lot of unrelated search results.

Edit: So far the ntpd windows version was very accurate and I'd like to stick with it. The only problem is the "panic state" after a network disconnect. Maybe some knows here what the cause of this is and how to fix it. Also, I forgot to mention that we have a server/client setup like this:

Server1 --> Server2 --> Server3 --> Client1 --> Client2 --> Client3

So Server2 gets its time from Server1, Server3 gets its time from Server2, and the Clients get their time from Server3. Also, there are clients connected directly to Server2. It is important that all Servers and Clients have the exact same time (within ~100ms)

Now there was a network problem with Server3 and its clients. The servers run the ntpd port for Windows, which acts as NTP server and client. The clients have Dimension4 as NTP client. After the network problem, the error message in D4 was something like this (out the top of my head, don't have the exact error message):

Server response: The server is in a panic state (could not sync clock)

I read through the ntpd docs, and the only mention of "panic" is when the time difference is 10000 seconds which will cause to exit the ntpd server but this was not the case. Also there is a "-g" command line switch to disable the panic exit, but it is already set by default.

Any ideas what could cause the panic state and how to get rid of it next time?


I am using NetTime, from many years, both as client and server.

This software is primary a NTP client, but it works well also as NTP server within a LAN (option: allow other computer to sync to this computer).

| improve this answer | |
  • I did try it in our test enviroment, and I have 2 problems with NetTime: The accuracy is similar to the windows w32time service, so I get difference of up to 500 ms, secondly, we use Dimension4 on our clients to get the time on the clients, and they fail to sync with NetTime because if an "invalid stratum", from what I read, NetTime registers itself with a stratum of 16 – Simon Sep 7 '10 at 16:46
  • Sorry, I never needed this accurancy, so I didn' know these problems. – lg. Sep 8 '10 at 7:18

We see far better than 500 ms from W32time, more like 16ms which is the resolution of the windows system timers. This is measured by real Linux stratum-2 NTPd servers on the same gigabit LAN. Google "windows time service tools and settings" and read about "updateinteval" setting, which can modified via group policy or directly in registry. Can't check right now, but I recall we have that set to 100 for all our servers, which is default for domain controllers but not other windows domain members.

Updated: We do in fact have this value set to 100 for all our servers. The UpdateInterval setting's details:


Registry path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

Version: Windows XP, Windows Vista, Windows 7, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, and Windows Server 2008 R2.

This entry specifies the number of clock ticks between phase correction adjustments. The default value for domain controllers is 100. The default value for domain members is 30,000. The default value for stand-alone clients and servers is 360,000.

As you can see, by default W32time only "steers" the clock once every 30,000 ticks for non-domain controllers, or far worse if they are not members of a domain. A tick on windows is usually 1/64 of a second depending on hardware, so that means the clock is only being adjusted once every 8 minutes or so in the default configuration. This is fine for most applications, but not fine for timing-sensitive applications.

More information can be found here: http://technet.microsoft.com/en-us/library/cc773263(v=ws.10).aspx#w2k3tr_times_tools_uhlp

| improve this answer | |

The reference list of all time software listed by NIST is here. The one I've used in the past is clockwatch server. I would also recommend you change your sync topology. server1 should be the source for all time on the network (with server 2 and 3 as backups). Clients should only peer sync if there is no server available.

| improve this answer | |