PTP 時刻同期サービスは、Precision Time Protocol (PTP) を介して、Elastic Compute Service (ECS) インスタンスのクロックを Alibaba Cloud の原子時計ソースと同期させます。PTP は、高頻度金融取引など、ソフトウェアベースのネットワークタイムプロトコルが提供できるよりも厳密なクロックアライメントを必要とするワークロードに使用します。
PTP とは
PTP は、IEEE 1588 標準に基づく高精度なネットワーク時刻同期プロトコルです。NTP のような従来のネットワークタイムプロトコルは、主にソフトウェア処理の遅延やネットワークジッターのため、ミリ秒レベルの精度に制限されています。PTP は、ハードウェアタイムスタンプ、動的なパス補正、インテリジェントなマスター・スレーブクロックネゴシエーションを使用してその制限を克服し、分散システム内のデバイスのクロックを同期します。
NTP と比較して、PTP はタイムスタンプ処理をハードウェアにオフロードするため、CPU とネットワークのオーバーヘッドが削減され、精度が向上します。
機能 | PTP | NTP |
精度 | サブマイクロ秒 | ミリ秒 |
タイムスタンプ実装 | ハードウェアサポート (PHC デバイスなど) | ソフトウェア実装 |
ネットワーク環境 | ローカルエリアネットワークまたは低遅延 | 広域ネットワーク |
リソース消費 | 低 (制御可能なメッセージ頻度) | 高 (頻繁なメッセージ交換に依存) |
代表的なアプリケーション | 産業用制御、金融取引、5G 通信 | インターネットサーバー、一般デバイス |
Alibaba Cloud での PTP の仕組み
Alibaba Cloud は、ゾーンレベルで冗長なアクティブ/スタンバイの原子時計をデプロイしています。プライマリ原子時計は GPS 時刻と同期し、その後、IEEE 1588 PTP バウンダリクロックプロトコルに基づいて階層的な時刻同期トポロジを構築し、ECS インスタンスに段階的に時刻信号を配信します。
ユースケース
高頻度金融取引 — PTP のサブマイクロ秒の精度とハードウェアタイムスタンプは、取引所間での注文タイミングを厳密に一致させ、クロックドリフトによる取引順序の紛争を防ぎます。低遅延ネットワークでのサブマイクロ秒のジッター制御と組み合わせることで、PTP は高頻度取引の厳格なタイミングの公平性とコンプライアンス要件を満たします。
前提条件
ECS インスタンスの PTP 時刻同期サービスを有効にする前に、サービスアクセス、インスタンスリソース、およびインスタンス内環境が次の要件を満たしていることを確認してください。
サービスアクセス
招待制プレビュー — PTP 時刻同期機能は現在、招待制プレビュー段階です。この機能を使用するには、チケットを送信して申請してください。
インスタンスリソース
リージョンとゾーン
PTP は、次のリージョンとゾーンでサポートされています。
リージョン名 | リージョン ID | ゾーン名 | ゾーン ID |
中国 (香港) | cn-hongkong | ゾーン B (招待制プレビュー) | cn-hongkong-b |
ゾーン C (招待制プレビュー) | cn-hongkong-c | ||
ゾーン D (招待制プレビュー) | cn-hongkong-d |
インスタンスファミリー
PTP は、次のインスタンスファミリーでサポートされています。
汎用インスタンスファミリー g9i、コンピューティング最適化インスタンスファミリー c9i、メモリ最適化インスタンスファミリー r9i (招待制プレビュー)
高クロック周波数コンピューティング最適化インスタンスファミリー hfc9i、高クロック周波数汎用インスタンスファミリー hfg9i、高クロック周波数メモリ最適化インスタンスファミリー hfr9i
特定のインスタンスタイプが PTP をサポートしているかどうかを確認するには、DescribeInstanceTypes API を呼び出します。レスポンスの
Clockパラメーターに含まれるPtpSupportパラメーターがsupportedに設定されている場合、そのインスタンスタイプは PTP をサポートしています。インスタンスタイプが PTP をサポートしていない場合、PtpSupportパラメーターはレスポンスに含まれません。
イメージ
Linux イメージがサポートされています。メンテナンスされている公式イメージバージョンの使用を推奨します。次の表に、サポートされているオペレーティングシステムのバージョンを示します。
オペレーティングシステム | サポートされているバージョン |
Alibaba Cloud Linux | 2〜4 |
Anolis OS | 8 |
Debian | 11〜13 |
Ubuntu | 18.04 LTS〜26.04 LTS |
AlmaLinux | 8〜10 |
Rocky Linux | 8〜10 |
CentOS Stream | 8〜10 |
RHEL | 9〜10 |
Fedora | 33〜44 |
OpenSUSE | 15.6, 16.0 |
SLES | 15SP2〜SP7, 16.0 |
カーネルバージョン
Linux カーネルバージョンは 4.12 以降である必要があります。
インスタンス内環境
Cloud Assistant — 共通コマンド方式とプラグイン方式では、パブリックイメージにプリインストールされている Cloud Assistant が必要です。Cloud Assistant がインストールされていない場合は、「Cloud Assistant エージェントのインストール」をご参照ください。
インターネットアクセス — インストールパッケージ方式では、
ptp-monitorスクリプトパッケージをインターネット経由でダウンロードします。インスタンスがインターネットにアクセスできることを確認してください。
ステップ 2: デプロイメントセット内での ECS インスタンスの作成または追加
デプロイメントセット内のすべての ECS インスタンスは、同じゾーン内の同じネットワークトポロジスコープ (PSW) 内にデプロイされ、ネットワーク遅延を削減します。また、インスタンスは可能な限り異なる物理サーバーに分散され、単一サーバーの障害によるビジネスへの影響を軽減します。
デプロイメントセット内で PTP 時刻同期サービスが有効になっている ECS インスタンスを作成するか、既存の ECS インスタンスで PTP 時刻同期サービスを有効にしてデプロイメントセットに追加します。
コンソール
インスタンスタイプ、リージョン、および ECS インスタンスの数は、制限事項に準拠する必要があります。詳細については、「制限事項」をご参照ください。
デプロイメントセットに新しいインスタンスを作成する:
デプロイメントセットのリストページで、ターゲットのデプロイメントセットを見つけます。操作 列で、インスタンスの作成 をクリックします。[カスタム起動] ページで、インスタンスの構成を完了します。
既存のインスタンスをデプロイメントセットに追加する:「インスタンスのデプロイメントセットの変更」をご参照ください。
API
デプロイメントセットに新しいインスタンスを作成する:RunInstances オペレーションを呼び出し、
DeploymentSetIdパラメーターを指定します。既存のインスタンスをデプロイメントセットに追加する:ModifyInstanceDeployment オペレーションを呼び出し、
InstanceIdとDeploymentSetIdパラメーターを指定します。説明指定したデプロイメントセットが
AvailabilityGroup戦略 (高可用性グループ戦略) を使用している場合、DeploymentSetGroupNoパラメーターを使用して、デプロイメントセット内のインスタンスのグループ番号を指定できます。
ステップ 3: デプロイメントセット内のインスタンスへの PTP の設定
デプロイメントセット内の各インスタンスに PTP ドライバーをインストールし、chrony で PTP クロックを設定します。手順については、「PTP 時刻同期サービスの有効化」をご参照ください。
PTP 時刻同期サービスの有効化
ECS インスタンスで PTP を有効にするには、2 つのステージがあります。ステージ 1 では、ECS コンソールでインスタンスの PTP 時刻同期サービスを有効にします。ステージ 2 では、インスタンス内に PTP ドライバーをインストールし、chrony を設定します。両方のステージが完了するまで、インスタンスは PTP クロックソースを使用しません。
ステージ 1: ECS コンソールでのインスタンス PTP の有効化
PTP が有効なインスタンスの作成
ECS コンソールの [カスタム購入] タブページに移動します。PTP をサポートするリージョン、インスタンスタイプ、イメージを選択し、詳細オプション セクションで PTP 時刻同期サービスを有効にします。
既存インスタンスでの PTP の有効化
インスタンスの現在の物理サーバーが PTP をサポートしていない場合は、インスタンスを再起動して PTP をサポートする物理サーバーに移行してから PTP を有効にします。
に移動し、対象のインスタンスの ID をクリックしてインスタンス詳細ページに移動します。
[インスタンス詳細] ページで、すべての操作 > インスタンスの設定 > PTP クロック同期サービスの設定 を選択します。
PTP クロック同期サービスの設定 ダイアログボックスで、PTP 時刻同期サービスを有効にし、[OK] をクリックします。[PTP 時刻同期タスク] ウィンドウが表示されます。
タスク ID をクリックしてタスクの進捗状況を表示します。タスクが完了すると、ダイアログボックスは自動的に閉じ、インスタンスで PTP が有効になります。
ステージ 1 では、インスタンスの PTP 機能のみが有効になります。ステージ 2 に進み、PTP クロックソースを有効にしてください。
ステージ 2: インスタンスへの PTP ドライバーのインストールと chrony の設定
設定方法を選択し、対応するタブの手順を完了します。
共通コマンド機能とプラグイン機能では、Cloud Assistant が必要です。次の表に、各方法を使用する状況を示します。
方法 | 使用する状況 | 要件 |
Cloud Assistant 共通コマンド (推奨) | インスタンスにログインすることなく、コンソールから一度の操作で PTP を有効化する場合。 | インスタンスに Cloud Assistant がインストールされていること。 |
Cloud Assistant プラグイン | PHC デバイスの確認や ptp-monitor サービスの制御など、各アクションを個別に実行する場合。 | Cloud Assistant |
インストールパッケージ | インスタンスがパブリックイメージを使用していない場合。 | スクリプトパッケージをダウンロードするために、インスタンスがインターネットにアクセスできる必要があります。 |
Cloud Assistant 共通コマンド
ECS コンソール - Cloud Assistant ページに移動し、共通コマンド タブをクリックします。
ACS-ECS-EnablePTP-for-linux.shコマンドを見つけ、[操作] 列の 実行 をクリックします。実行中のインスタンスを選択し、実行 をクリックします。
コマンドが終了したら、インスタンスが PTP ハードウェアクロックを使用していることを確認します。手順については、「PTP 同期の検証と監視」をご参照ください。
Cloud Assistant プラグイン
PHC ハードウェアデバイスが存在するかどうかを確認します。
lspci | grep 500cPTP 時刻同期サービスが有効になると、コマンドは次の情報を返します。
[root@ixxx ~]# lspci | grep 500c 00:07.0 Unclassified device [00ff]: Alibaba (China) Co., Ltd. Device 500cPHC ハードウェアデバイスが存在しない場合は、チケットを送信してください。
次のコマンドを実行して、Cloud Assistant のバージョンを確認します。
acs-plugin-manager --versionバージョンは
2.2.3.631以降である必要があります。バージョンが古い場合は、Cloud Assistant をアップグレードしてください。現在のリージョンで Cloud Assistant プラグインが利用可能であることを確認します。
acs-plugin-manager --list | grep ACS-PTP-MonitorCloud Assistant プラグインが存在しない場合は、チケットを送信してください。
Cloud Assistant を使用してドライバーをインストールします。このコマンドは通常 10 分以内に完了します。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --install --timeout 0インストールが完了しない場合は、ドライバーのインストールログパスと一般的な原因について、「ドライバーのインストール時に「dkms: command not found」というエラーが発生するのはなぜですか。」をご参照ください。
ptp-monitor サービスを開始します。これにより、chrony の設定が更新され、chronyd が再起動され、ptp-monitor が起動時に自動実行されるように設定され、サービスが開始されます。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --startインスタンスが PTP ハードウェアクロックを使用していることを確認します。手順については、「PTP 同期の検証と監視」をご参照ください。
インストールパッケージ
次のコマンドを実行して、PHC ハードウェアデバイスを確認します。
lspci | grep 500cPTP 時刻同期サービスが有効になると、コマンドは次の情報を返します。
[root@ixxx ~]# lspci | grep 500c 00:07.0 Unclassified device [00ff]: Alibaba (China) Co., Ltd. Device 500c次のコマンドを実行して、圧縮されたスクリプトパッケージをダウンロードします。インターネットアクセスが必要です。この
ptp-monitorスクリプトを使用すると、1 回の操作でデプロイと設定を完了できます。wget https://ptp-monitor-hk.oss-cn-hongkong.aliyuncs.com/ptp-monitor/ptp-monitor-latest.zipunzipをインストールし、パッケージを解凍します。yumを使用するオペレーティングシステムでは、次のコマンドを実行します。yum install -y unzip unzip ptp-monitor-latest.zip -d ptp-monitor-latest cd ptp-monitor-latestUbuntu や Debian などのオペレーティングシステムでは、次のコマンドを実行します。
sudo apt update && sudo apt install unzip unzip ptp-monitor-latest.zip -d ptp-monitor-latest cd ptp-monitor-latest次のコマンドを実行して、ドライバーをコンパイルしてインストールします。
bash ptp-monitor.sh --installインストールに失敗した場合は、ドライバーのインストールログパスと一般的な原因について、「ドライバーのインストール時に「dkms: command not found」というエラーが発生するのはなぜですか。」をご参照ください。
次のコマンドを実行して、PTP ドライバーがインストールされていることを確認します。
ptp-monitorは、現在のオペレーティングシステムのバージョンに基づいて PTP ドライバーをコンパイルします。ドライバーの名前はptp_cipuです。lsmod | grep ptp_cipu次のコマンドを実行して、PTP デバイスファイルが生成されていることを確認します。
ls -l /dev/ptp*デバイスファイル情報が返された場合、ドライバーは正常に実行されています。
[root@xxxxxxxxxx ~]# ll /dev/ptp* crw------- 1 root root 247, 0 Jul 30 11:22 /dev/ptp0次のコマンドを実行して、chrony を設定し、chronyd サービスを再起動し、ptp-monitor サービスを開始します。
bash ptp-monitor.sh --startchronyd サービスを再起動すると、PTP クロックソースは数十秒以内に有効になります。これは、「PTP 同期ステータスの表示」で確認できます。
PTP 同期の検証と監視
PTP 時刻同期サービスを有効にした後、chronyc コマンドを使用して、ECS インスタンスが PTP ハードウェアクロックを使用していることを確認し、クロックの状態を監視します。
PTP 同期ステータスの表示
chronyc sources を実行して、設定された時刻ソース (PTP と NTP) のステータスを表示します。PHC0 ソースが #* でマークされている場合、PTP 同期は機能しています。
出力例:
次の例は、PTP 時刻同期サービスが有効化および設定されているインスタンスを示しています。インスタンスは PTP ハードウェアクロックをプライマリ同期ソースとして使用しており、測定されたオフセットはナノ秒レベルです。
[root@iZxxx Z ptp-monitor-latest]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* PHC0 0 4 56 37 -28ns[ -13ns] +/- 320nsMS:時刻ソースの識別子。PHC0は PTP ハードウェアクロックを示します。IP アドレスは NTP サーバーを示します。#*は現在の同期ソースをマークしており、インスタンスが PTP ハードウェアクロックを使用していることを意味します。Stratum:時刻ソースのストラタム。値が小さいほど精度が高いことを示します (0 は原子時計または GPS、1 は直接接続された高精度ソース)。Poll:ポーリング間隔の指数。現在のポーリング間隔は2^Poll秒です。たとえば、Poll=4は 16 秒を示します。Reach:最後の 8 回の同期試行の成功率を示す 8 進数値。LastRx:最後の応答を受信してからの時間 (秒単位)。Last sample:最後の測定におけるクロックオフセットです。offset [raw offset] +/- errorの形式で表示され、システム時刻とソース時刻の差を表します。
PTP 同期状態の監視
chronyc tracking を実行して、時刻バイアス、周波数エラー、ネットワーク遅延などの動的メトリクスを含むシステムクロックの状態を監視および評価し、金融取引などの時刻に敏感なアプリケーションの信頼性を確保します。
出力例:
次の例では、測定された時刻バイアスはナノ秒レベル (System time = 1 ns, RMS offset = 1,175 ns) であり、高精度の要件を満たしています。また、周波数エラーは低く (5.213 ppm)、ハードウェアクロックの安定した動作を示しています。
[root@iZ*** ptp-monitor-latest]# chronyc tracking
Reference ID : 50484330 (PHC0)
Stratum : 1
Ref time (UTC) : Fri Aug 08 02:52:40 2025
System time : 0.000000001 seconds fast of NTP time
Last offset : -0.000000973 seconds
RMS offset : 0.000001175 seconds
Frequency : 5.213 ppm slow
Residual freq : -0.001 ppm
Skew : 0.031 ppm
Root delay : 0.000000001 seconds
Root dispersion : 0.000038351 seconds
Update interval : 16.0 seconds
Leap status : NormalSystem time:システムクロックと PTP ハードウェアクロックPHC0との現在のバイアス。fastは、システム時刻が 1 ナノ秒進んでいることを意味します (1 ns = 10⁻⁹ s)。RMS offset:長期的な RMS オフセットで、この例では 1,175 ナノ秒であり、同期の安定性を反映しています。Frequency:システムクロックの周波数バイアス。slowは、ローカルクロックが PTP ハードウェアクロックPHC0よりも 1 秒あたり 5.213 マイクロ秒遅く動作していることを意味します (ppm = parts per million)。Root delay:ルート時刻ソースまでの合計ネットワーク遅延。図の非常に低い遅延は、非常に安定したネットワーク環境を示しています。
PTP 時刻同期サービスの無効化
PTP を無効にするには、有効化の場合と同様に、2 つのステージが必要です。ステージ 1 では、ECS コンソールでインスタンスの PTP 時刻同期サービスを無効にします。ステージ 2 では、インスタンス内の PTP クロックソースを削除します。
ステージ 1: ECS コンソールでのインスタンス PTP の無効化
に移動し、対象のインスタンスの ID をクリックしてインスタンス詳細ページに移動します。
[インスタンス詳細] ページで、すべての操作 > インスタンスの設定 > PTP クロック同期サービスの設定 を選択します。
PTP クロック同期サービスの設定 ダイアログボックスで、PTP 時刻同期サービスを無効にし、[OK] をクリックします。[PTP 時刻同期タスク] ウィンドウが表示されます。
タスク ID をクリックしてタスクの進捗状況を表示します。タスクが完了すると、ダイアログボックスは自動的に閉じ、インスタンスで PTP が無効になります。
ステージ 2: インスタンス内の PTP クロックソースの削除
PTP を無効にすると、PTP デバイスが削除されます。これにより、chrony 設定ファイルが更新されて PTP ハードウェアクロックソースが削除され、chronyd サービスが再起動されて NTP などのデフォルトのクロックサービスが復元され、ptp-monitor プログラムが停止します。
方法を選択し、対応するタブの手順を完了します。
共通コマンド機能とプラグイン機能では、Cloud Assistant が必要です。Cloud Assistant はパブリックイメージにプリインストールされています。パブリックイメージを使用しないインスタンスの場合は、インストールパッケージを使用します。
Cloud Assistant 共通コマンド
ECS コンソール - Cloud Assistant ページに移動し、共通コマンド タブをクリックします。
ACS-ECS-DisablePTP-for-linux.shコマンドを見つけ、[操作] 列の 実行 をクリックします。実行中のインスタンスを選択し、実行 をクリックします。
Cloud Assistant プラグイン
次のコマンドを実行して、ptp-monitor サービスを停止します。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --stopインストールパッケージ
次のコマンドを実行して、PTP クロックソースを無効にします。
bash ptp-monitor.sh --stopPTP が無効になっていることの確認
chronyc sources を実行して、PHC0 ソースがリストに表示されなくなり、インスタンスが NTP サーバーと同期していることを確認します。手順については、「PTP 同期ステータスの表示」をご参照ください。
インスタンスで再度 PTP を使用するには、「PTP 時刻同期サービスの有効化」の手順を繰り返します。インスタンスから PTP ドライバーを削除するには、「PTP ドライバーをアンインストールするにはどうすればよいですか。」をご参照ください。
よくある質問
OpenAPI を使用して PTP 時刻同期サービスを有効または無効にできますか。
はい。新しいインスタンスの場合はインスタンス作成 API を、既存のインスタンスの場合はクロックオプション API を使用します。その後、インスタンス内設定コマンドをリモートで実行してください。
インスタンスの作成:RunInstances API を呼び出し、
ClockOptionsパラメーターのPtpStatusをenabledまたはdisabledに設定して、PTP 時刻同期サービスが有効または無効になっている ECS インスタンスを作成します。既存のインスタンスの場合:ModifyInstanceClockOptions API を呼び出し、
PtpStatusをenabledまたはdisabledに設定して、インスタンスの PTP 時刻同期サービスを有効または無効にします。成功すると、タスク ID (
TaskId) が返されます。DescribeTasks API を呼び出す際に、TaskActionをModifyInstanceClockOptionsに、TaskIdsを対応するタスク ID に設定することで、有効化または無効化操作の実行ステータスをリアルタイムで照会できます。結果の確認:DescribeInstances API を
AdditionalAttributesをCLOCK_OPTIONSに設定して呼び出し、インスタンスで PTP 時刻同期サービスが有効になっているかどうかを確認します。インスタンスの設定:RunCommand API を呼び出して関連コマンドを実行し、設定を完了します。
PTP は NTP と併用できますか。
はい。PTP は NTP に影響を与えません。chronyd は内部アルゴリズムを使用して最適なクロックソースを選択し、設定に基づいて PTP を優先します。
ドライバーのインストール時に「dkms: command not found」というエラーが発生するのはなぜですか。
PTP ドライバーをインストールするには、まず必要なツールパッケージをインストールする必要があり、dkms はそのうちの 1 つです。そのため、dkms パッケージのインストールに関する問題を解決する必要があります。ドライバーのインストール失敗に関する詳細なエラーログについては、/var/log/ptp-cipu-ptp-monitor.log をご参照ください。
シナリオ 1:リポジトリソースの設定が最新でない可能性があります。リポジトリソースを更新して、再度お試しください。
シナリオ 2:dkms の公式ウェブサイトから対応するインストールパッケージを入手します。
ptp-monitor プログラムの自動起動を有効または無効にするにはどうすればよいですか。
ptp-monitor は、インスタンス内で実行される O&M コンポーネントです。実行し続けることを推奨しますが、必須ではありません。インストール後、コンポーネントはデフォルトでブート時に自動的に起動します。
ブート時の自動起動を無効にする。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --disable-serviceブート時の自動起動を有効にする。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --enable-servicePTP ドライバーをアンインストールするにはどうすればよいですか。
PTP ドライバーの名前は ptp_cipu です。このドライバーは PTP 機能に必要であり、インストールしてもインスタンスに影響はありません。PTP ドライバーをアンインストールするには、次の Cloud Assistant コマンドを実行します。
acs-plugin-manager --exec --plugin ACS-PTP-Monitor --params --uninstall