跳到主要内容

9. 对等方进程 (Peer Process)

当服务器或对等方数据包到达时, 将调用对等方进程 (peer process). 它运行线上协议 (on-wire protocol), 以确定时钟偏移量 (clock offset) 和往返延迟 (round-trip delay), 并计算供系统进程 (system process) 和轮询进程 (poll process) 使用的统计量. 对等方变量 (peer variable) 在关联数据结构 (association data structure) 初始化时实例化, 并由到达的数据包更新. 每个服务器都有一个对等方进程, 一个轮询进程和一个关联进程 (association process).

9.1. 对等方进程变量

以下是对等方进程使用的主要变量类别:

配置变量 (Configuration Variables)

名称公式描述
srcaddrsrcaddr源地址
srcportsrcport源端口
dstaddrdstaddr目的地址
dstportdestport目的端口
keyidkeyid密钥标识符 (key ID)

数据包变量 (Packet Variables)

名称公式描述
leapleap闰秒指示符 (leap indicator)
versionversion版本号
modemode模式
stratumstratumstratum
ppollppoll对等方轮询指数
rootdelaydelta_r根延迟 (root delay)
rootdispepsilon_r根离散度 (root dispersion)
refidrefid参考 ID (reference ID)
reftimereftime参考时间戳 (reference timestamp)

时间戳变量 (Timestamp Variables)

名称公式描述
orgT1起源时间戳 (origin timestamp)
recT2接收时间戳 (receive timestamp)
xmtT3发送时间戳 (transmit timestamp)
tt数据包时间

统计变量 (Statistics Variables)

名称公式描述
offsettheta时钟偏移量 (clock offset)
delaydelta往返延迟 (round-trip delay)
dispepsilon离散度 (dispersion)
jitterpsi抖动 (jitter)
filterfilter时钟滤波器 (clock filter)
tpt_p过滤器时间

9.2. 对等方进程操作

数据包接收流程 (Packet Reception Flow)

接收例程定义了数据包到达时的处理流程. 主要步骤包括:

  1. 访问控制 (Access Control): 执行访问控制列表 (ACL) 检查.
  2. 格式验证 (Format Validation): 检查字段长度, 对齐, 版本号和扩展字段语法.
  3. 认证 (Authentication): 如果实现了认证, 必须支持 MD5 密钥化哈希算法 (MD5-keyed hash algorithm).
  4. 关联查找 (Association Lookup): 在关联表 (association table) 中搜索匹配的源地址和端口.

对等方分派表 (Peer Dispatch Table)

系统根据关联模式 (association mode) 和数据包模式 (packet mode) 的组合, 将处理分派到不同步骤:

Association ModePacket Mode 1Packet Mode 2Packet Mode 3Packet Mode 4Packet Mode 5
No Association 0NEWPSDSCRDFXMITMANYNEWBC
Symm. Active 1PROCPROCDSCRDDSCRDDSCRD
Symm. Passive 2PROCERRDSCRDDSCRDDSCRD
Client 3DSCRDDSCRDDSCRDPROCDSCRD
Server 4DSCRDDSCRDDSCRDDSCRDDSCRD
Broadcast 5DSCRDDSCRDDSCRDDSCRDDSCRD
Bcast Client 6DSCRDDSCRDDSCRDDSCRDPROC

处理动作 (Processing Actions):

  • DSCRD: 丢弃数据包 (非致命协议违规).
  • ERR: 丢弃数据包并解除对称被动关联 (symmetric passive association) (致命协议违规).
  • FXMIT: 快速发送 (fast transmit, 无状态服务器响应).
  • MANY: 多播服务器响应 (manycast server response).
  • NEWBC: 新建广播关联 (broadcast association).
  • NEWPS: 新建对称被动关联 (symmetric passive association).
  • PROC: 处理匹配的关联.

数据包验证 (Packet Validation)

对于 PROC 处理, 系统执行严格的时间戳检查, 以避免无效, 重复或伪造的数据包. 主要验证包括:

  1. 检查发送时间戳 (transmit timestamp) 是否非零.
  2. 验证起源时间戳 (origin timestamp) 是否匹配先前发送的发送时间戳.
  3. 检测重复数据包 (发送时间戳匹配已保存的起源时间戳).
  4. 验证目的时间戳 (destination timestamp) 是否晚于起源时间戳.

通过这些检查后, 系统计算偏移量和延迟, 更新时钟滤波器, 并为系统进程准备统计量.