9. Peer Process (对等体进程)
对等体进程在服务器或对等体数据包到达时被调用。它运行线上协议以确定时钟偏移和往返延迟,并计算系统和轮询进程使用的统计信息。对等体变量在关联数据结构初始化时实例化,并由到达的数据包更新。每个服务器都有一个对等体进程、轮询进程和关联进程。
9.1. Peer Process Variables (对等体进程变量)
以下是对等体进程使用的主要变量类别:
配置变量
| 名称 (Name) | 公式 (Formula) | 描述 (Description) |
|---|---|---|
| srcaddr | srcaddr | 源地址 (source address) |
| srcport | srcport | 源端口 (source port) |
| dstaddr | dstaddr | 目标地址 (destination address) |
| dstport | destport | 目标端口 (destination port) |
| keyid | keyid | 密钥标识符 (key identifier) |
数据包变量
| 名称 (Name) | 公式 (Formula) | 描述 (Description) |
|---|---|---|
| leap | leap | 闰秒指示器 (leap indicator) |
| version | version | 版本号 (version number) |
| mode | mode | 模式 (mode) |
| stratum | stratum | 层级 (stratum) |
| ppoll | ppoll | 对等体轮询指数 (peer poll exponent) |
| rootdelay | delta_r | 根延迟 (root delay) |
| rootdisp | epsilon_r | 根离散 (root dispersion) |
| refid | refid | 参考ID (reference ID) |
| reftime | reftime | 参考时间戳 (reference timestamp) |
时间戳变量
| 名称 (Name) | 公式 (Formula) | 描述 (Description) |
|---|---|---|
| org | T1 | 起源时间戳 (origin timestamp) |
| rec | T2 | 接收时间戳 (receive timestamp) |
| xmt | T3 | 传输时间戳 (transmit timestamp) |
| t | t | 数据包时间 (packet time) |
统计变量
| 名称 (Name) | 公式 (Formula) | 描述 (Description) |
|---|---|---|
| offset | theta | 时钟偏移 (clock offset) |
| delay | delta | 往返延迟 (round-trip delay) |
| disp | epsilon | 离散 (dispersion) |
| jitter | psi | 抖动 (jitter) |
| filter | filter | 时钟过滤器 (clock filter) |
| tp | t_p | 过滤器时间 (filter time) |
9.2. Peer Process Operations (对等体进程操作)
数据包接收流程
接收例程定义了数据包到达时的处理流程。主要步骤包括:
- 访问控制:实施访问控制列表 (ACL) 检查
- 格式验证:检查字段长度、对齐、版本号和扩展字段语法
- 认证:如果实施认证,必须支持MD5密钥哈希算法
- 关联查找:在关联表中搜索匹配的源地址和端口
对等体分派表
根据关联模式和数据包模式的组合,系统将处理分派到不同的步骤:
| 关联模式 | 数据包模式1 | 数据包模式2 | 数据包模式3 | 数据包模式4 | 数据包模式5 |
|---|---|---|---|---|---|
| 无关联0 | NEWPS | DSCRD | FXMIT | MANY | NEWBC |
| 对称主动1 | PROC | PROC | DSCRD | DSCRD | DSCRD |
| 对称被动2 | PROC | ERR | DSCRD | DSCRD | DSCRD |
| 客户端3 | DSCRD | DSCRD | DSCRD | PROC | DSCRD |
| 服务器4 | DSCRD | DSCRD | DSCRD | DSCRD | DSCRD |
| 广播5 | DSCRD | DSCRD | DSCRD | DSCRD | DSCRD |
| 广播客户端6 | DSCRD | DSCRD | DSCRD | DSCRD | PROC |
处理动作说明:
- DSCRD: 丢弃数据包(非致命协议违规)
- ERR: 丢弃数据包并解除对称被动关联(致命协议违规)
- FXMIT: 快速传输(无状态服务器响应)
- MANY: 多播服务器响应
- NEWBC: 新广播关联
- NEWPS: 新对称被动关联
- PROC: 处理匹配的关联
数据包验证
对于PROC处理,系统执行严格的时间戳检查以避免无效、重复或伪造的数据包。主要验证包括:
- 检查传输时间戳是否非零
- 验证起源时间戳与先前发送的传输时间戳匹配
- 检测重复数据包(传输时间戳与保存的起源时间戳匹配)
- 验证目的时间戳晚于起源时间戳
通过这些检查后,系统计算偏移和延迟,更新时钟过滤器,并为系统进程准备统计数据。