4

シリアル接続を介して相互に通信できる 2 台のコンピューターがあります。接続はワイヤレス ネットワーク経由で行われます。2 つのシステム間の通信には、さまざまな変化する遅延があります。両方のシステムで、ミリ秒ごとに 1 ずつ増加するカウンター ランタイムがあります。どちらもアプリケーションが起動するとすぐに起動します。各コンピューターが異なる時間に起動されたとします。シリアル接続を使用してカウンターを同期し、systemA.counter が systemB.counter と等しくなり、両方のカウンターが同時に (またはできるだけ近く) 増加するようにするにはどうすればよいですか。

理想的には、一度同期すると、カウンターはゆっくりと離れてドリフトし、3 または 4,000 インチごとに再同期できるようになります。

このトピックに関する優れたリソース、アルゴリズムの例、コードの例 (c/c++)、正しい方向に向けてくれるものを探しています。

アップデート

これは閉鎖的なシステムであり、インターネットはありません。すべての意図と目的のために、実際のプロトコルはまったくなく、ワイヤレスリンクを介してシリアルラインを開きます。そのリンクは現在 bluetooth ですが、ZigBee Mesh に移動することを考えています。現在 2 つのノードがありますが、30 個のノードがすべて同じアプリケーションを実行している場合、それらすべてを同期させたいと考えています。クライアント/サーバーの指定はなく、カウンターで同じプログラムを実行しているデバイスがいくつかあります。時間のようなものにはアクセスできません。ミリ秒ごとにインクリメントするこのカウンターと、配置できる任意のアルゴリズムだけです。

これが機能するようになったら、提案とマッピングのシステムを導入したいと考えていますが、ノード間の距離を把握するには、デバイスでタイミングを同期させる必要があります。

4

2 に答える 2

1

このカウンターを使用してシステム内のイベントを並べ替える場合は、ベクタークロックまたはランポートタイムスタンプを確認する必要があります。

于 2012-09-26T07:23:35.087 に答える
1

明らかなリソースは NTP です。これは、たとえばhttp://www.eecis.udel.edu/~mills/ntp.htmlに文書化されており、そこにリンクがあります。基本的に、これはタイムスタンプを使用して、ローカル クロックが実行される周波数を調整します。このプロトコルは何年も前から存在し、継続的な研究の対象となっています。どのように機能するかをすぐに明らかにするスライドのパックは見当たりません。NTP の実装を自分で試して再実装するよりも、利用可能な NTP 実装が既にあるかどうかを確認する方がよい場合があります。

特にワイヤレスセンサーネットワークのコンテキストで、時間同期アルゴリズムに取り組んでいる人々の小さな業界があるようです (検索などから)。検索以外の出発点の 1 つは、次の調査論文 です

于 2012-09-26T03:55:16.923 に答える