background image
Tech Note #36: Introduction to the Alarm Clock Protocol (ACP)
©
1998 Bionic Buffalo Corporation; All Rights Reserved.
                  12 June 1998
http://www.tatanka.com
Page 
2 of 8
ACP allows negotiation for specific levels of accuracy and precision. Although an interval may
be written in terms of nanoseconds, clients and servers may understand that less accuracy or
precision may be expected.
Absolute times may be specified in terms of any of several clocks.
Network Delays
ACP does not measure or allow for network delays. Any client wishing to account for delays,
jitter, congestion, or other such values should use another protocol (such as NTP) to determine
appropriate adjustments.
Although a server recognizes multiple clocks, it makes a “best effort” attempt to perform its
tasks as quickly as possible, without anticipating errors, which might be expected to occur from
local system performance or network speed. ACP allows for messages to be time-stamped,
giving enough information to clients to permit adjustment for these factors.
Basic Protocol
All messages use a common format. Each message consists of zero or more tagged fields. A
tagged field contains of a tag followed by data. The tag determines the form and meaning of its
associated data item.
One type of tag specifies a request identifier, which identifies a specific request which is being
made or which has been made by a client to a server. The client assigns half of the request
identifier when the request is made, and the server assigns the second half when responding. A
client or server may choose to use either or both halves of the request identifier when comparing
or testing its value. If no response is requested, then the client may not know the server’s half of
the identifier, and the server cannot rely on the client’s half to be unique among all clients.
The request identifier tags divide a message into segments, each beginning with a request
identifier and ending just prior to the next request identifier.
The tagged fields in a message segment apply to the request identified at the beginning of the
segment. If any tagged fields appear before the first request identifier, then those tagged fields
apply to all requests in the message.