跳到主要内容

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) 是否晚于起源时间戳.

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