シリアル接続を介して相互に通信できる 2 台のコンピューターがあります。接続はワイヤレス ネットワーク経由で行われます。2 つのシステム間の通信には、さまざまな変化する遅延があります。両方のシステムで、ミリ秒ごとに 1 ずつ増加するカウンター ランタイムがあります。どちらもアプリケーションが起動するとすぐに起動します。各コンピューターが異なる時間に起動されたとします。シリアル接続を使用してカウンターを同期し、systemA.counter が systemB.counter と等しくなり、両方のカウンターが同時に (またはできるだけ近く) 増加するようにするにはどうすればよいですか。
理想的には、一度同期すると、カウンターはゆっくりと離れてドリフトし、3 または 4,000 インチごとに再同期できるようになります。
このトピックに関する優れたリソース、アルゴリズムの例、コードの例 (c/c++)、正しい方向に向けてくれるものを探しています。
アップデート
これは閉鎖的なシステムであり、インターネットはありません。すべての意図と目的のために、実際のプロトコルはまったくなく、ワイヤレスリンクを介してシリアルラインを開きます。そのリンクは現在 bluetooth ですが、ZigBee Mesh に移動することを考えています。現在 2 つのノードがありますが、30 個のノードがすべて同じアプリケーションを実行している場合、それらすべてを同期させたいと考えています。クライアント/サーバーの指定はなく、カウンターで同じプログラムを実行しているデバイスがいくつかあります。時間のようなものにはアクセスできません。ミリ秒ごとにインクリメントするこのカウンターと、配置できる任意のアルゴリズムだけです。
これが機能するようになったら、提案とマッピングのシステムを導入したいと考えていますが、ノード間の距離を把握するには、デバイスでタイミングを同期させる必要があります。