多播模式
多播模式适用于服务器分布分散的网络中。客户端可以发现与之最近的多播服务器,并进行同步。多播模式适用于服务器不稳定的组网环境中,服务器的变动不会导致整网中的客户端重新进行配置。
多播服务器:多播服务器持续侦听报文。若某个服务器可以被同步,则服务器将使用客户端的单播地址返回报文(Mode字段设置为4)。
多播客户端:多播模式下的客户端周期性地向IPv4/IPv6组播地址发送请求报文(Mode字段设置为3)。当客户端接收到应答报文时,客户端会进行时钟过滤和选择,并同步到时钟优选的服务器。
为了防止多播模式下,客户端不断的向多播服务器发送NTP请求报文增加设备的负担,协议规定了最小连接数的概念。多播模式下,客户端每次和服务器时钟同步后,都会记录下此次同步过程中建立的连接数,将调用最少连接的数量称为最小连接数。以后当客户端调动的连接数达到了最小连接数且完成了同步,客户端就认为同步完成;同步完成后每过一个超时周期,客户端都会传送一个报文,用于保持连接。同时,为了防止客户端无法同步到服务器,协议规定客户端每发送一个NTP报文,都会将报文的生存时间TTL(Time
To Live)进行累加(初始为1),直到达到最小连接数,或者TTL值达到上限(上限值为255)。若TTL达到上限,或者达到最小连接数,而客户端调动的连接数仍不能完成同步过程,则客户端将停止一个超时周期的数据传输以清除所有连接,然后重复上述过程。
在NTP模块实现中,对每一个同步源都建立了一个PEER结构,并把这些PEER结构以Hash的形式存储成链状。每一个PEER结构对应于一个连接。
图5-7 多播模式