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処理の場合、システムは無効、重複、または偽のパケットを回避するために厳密なタイムスタンプチェックを実行します。主な検証には以下が含まれます:
- 送信タイムスタンプが非ゼロであることを確認
- 起点タイムスタンプが以前に送信された送信タイムスタンプと一致することを確認
- 重複パケットを検出 (送信タイムスタンプが保存された起点タイムスタンプと一致)
- 宛先タイムスタンプが起点タイムスタンプより後であることを確認
これらのチェックに合格すると、システムはオフセットと遅延を計算し、クロックフィルターを更新し、システムプロセスのための統計を準備します。