Sinkronisasi jam dalam jaringan dengan penundaan asimetris

38

Asumsikan komputer memiliki jam yang tepat yang tidak diinisialisasi. Artinya, waktu pada jam komputer adalah waktu nyata ditambah beberapa offset konstan. Komputer memiliki koneksi jaringan dan kami ingin menggunakan koneksi itu untuk menentukan offset konstan .B

Metode sederhana adalah bahwa komputer mengirimkan kueri ke server waktu, mencatat waktu lokal . Server waktu menerima permintaan pada waktu dan mengirimkan balasan yang berisi kembali ke klien, yang menerimanya pada waktu . Kemudian , yaitu .B+C1TTB+C2B+C1TB+C2TC2BTC1

Jika waktu transmisi jaringan dan waktu pemrosesan server simetris, maka . Sejauh yang saya tahu, NTP , protokol sinkronisasi waktu yang digunakan di alam liar, beroperasi pada asumsi ini.B=TC1+C22

Bagaimana presisi dapat ditingkatkan jika penundaan tidak simetris? Apakah ada cara untuk mengukur asimetri ini dalam infrastruktur Internet yang khas?

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
Ada paten terkait tetapi siapa yang mau membaca itu ...
Raphael
@Raphael Terima kasih. Tautan Google yang lebih bersahabat dengan paten AS 7602873 , tautan resmi USPTO .
Gilles 'SO- stop being evil'
Pikiran pertama: Ini mungkin mustahil dengan 2 entitas. Menggunakan (n2) pasangan n entitas, sinkronisasi yang lebih baik mungkin dilakukan. Kemudian jam dapat digunakan untuk mengukur waktu satu perjalanan.
rgrig
dapatkah Anda mengklarifikasi aplikasi / konteks atau ini terutama pertanyaan teoretis?
vzn

Jawaban:

10

Ketidakmampuan untuk mengukur asimetri

Tidak, Anda tidak dapat mengukur asimetri. Pertimbangkan dua diagram komunikasi ini, yang pertama dengan offset jam negatif dan penundaan yang sama dan yang kedua tanpa offset jam serta penundaan yang sepenuhnya asimetris (tetapi waktu perjalanan pulang pergi yang sama).

diagram komunikasi

Yang penting untuk diperhatikan adalah bahwa, dari perspektif PC dan server, kedua interaksi itu persis sama. Mereka menerima pesan pada saat bersamaan. Mereka mengirim pesan pada saat bersamaan.

Anda dapat membuat lebih banyak case dengan 'meraih' timeline PC dan 'menggesernya', menahan pesan mengirim / menerima poin relatif terhadap tenggat waktu masing-masing. Asimetri yang Anda sebabkan benar-benar dinegasikan oleh clock offset. Bahkan, Anda bahkan dapat membuat pesan pergi KEMBALI DALAM WAKTU satu arah (selama waktu pulang-pergi masih sama) dan server / klien MASIH tidak tahu!

Oleh karena itu tidak mungkin untuk mengukur asimetri latensi. Dalam kasus terburuk, di mana Anda tidak memiliki informasi selain itu latensi satu arah positif dan dijumlahkan dengan waktu pulang pergi, keakuratan sinkronisasi jam terbatas pada waktu perjalanan pulang pergi.

Dapatkah infrastruktur perantara membantu?

Apakah infrastruktur perantara dapat membantu atau tidak, akan sangat bergantung pada model teoretis situasi Anda.

Jika asimetri konstan dan infrastruktur perantara adalah router di jalur komunikasi antara Anda dan server, maka tidak ada. Bahkan jika setiap router menyinkronkan jam mereka dengan router yang berdekatan, kesalahan akan bertambah dengan cara yang sama seolah-olah Anda telah disinkronkan dengan server melalui komunikasi di seluruh router.

Di dunia nyata Anda dapat mengandalkan penundaan yang agak simetris karena alasan arsitektur, sinkronisasi berulang untuk mengurangi asimetri karena penundaan antrian (dll), dan beberapa jalur komunikasi untuk mengurangi jenis asimetri lainnya.

Jika Anda menempatkan asumsi model di suatu tempat di antara (karena itu menarik untuk menjelajahi ruang model, tentu saja) Saya berharap hasilnya juga berada di antara keduanya.

Craig Gidney
sumber
Ini harus menjadi jawaban untuk pertanyaan Anda . Di sini saya bertanya tentang pengaturan yang lebih konkret, di mana kita dapat memperoleh bantuan dari infrastruktur yang mendasarinya.
Gilles 'SANGAT berhenti menjadi jahat'
Saya menambahkan lebih banyak konten untuk Anda.
Craig Gidney
bagi saya ini keliru & dapat dilihat dengan mencatat bahwa sementara PC mengirim dan menerima waktu adalah sama (peristiwa timeline atas bertepatan dalam dua kasus), waktu server berbeda (garis bawah dalam dua kasus) & oleh karena itu rumus yang dihitung oleh klien NTP berbeda dalam dua kasus. ini dapat dipahami dengan lebih baik dengan memberi label nilai NTP untuk dalam setiap kasus (di mana adalah nilai yang direkam dalam waktu server dan dikirim kembali ke klien). seperti pada jawaban saya, protokol waktu NTP memang bisa mengukur dan menyesuaikan untukt 2 , t 3 ( t 1 - t 0 ) ( t 3 - t 2 )t1,t2,t3,t4t2,t3(t1t0)(t3t2)
vzn
@ vzn Waktu server dengan hormat t pesan sama di kedua contoh. Garis waktu server yang bergerak ke kiri menunjukkan penyimpangan waktu mulai berbeda. Efek dari penyimpangan jam awal dan latensi asimetri kebetulan sama, sehingga menyesuaikan keduanya dalam arah yang berlawanan memungkinkan perilaku yang dihasilkan menjadi setara.
Craig Gidney
studi lebih lanjut, klien / server dapat mengetahui kapan jam mereka jauh dari sinkronisasi setidaknya di luar waktu pulang pergi. lebih banyak info dalam polycos et al ref yang saya sebutkan di bawah ini di mana mereka mengukur "latensi searah" yang berbeda lebih besar dari ketidakpastian NTP (yang tampaknya kurang dari waktu perjalanan
bolak
2

Pertimbangkan jaringan server waktu dikenal sinkron, , dan mesin klien .Pθ={A,B,C}P

Biarkan menjadi waktu satu arah penerbangan dari mesin ke mesin , dengan kemungkinan bahwa . X Y T X YT Y XTXYXYTXYTYX

Biarkanmenjadi ukuran asimetri antara mesin dan .X YΔXY=|TXYTYX|XY

Sekarang, pertimbangkan bahwa asimetri antara dua mesin sinkron dapat diukur dengan meminta mesin sinkron setuju untuk mengirim pesan satu arah satu sama lain pada saat yang sama. Perbedaan waktu kedatangan adalah antara mesin-mesin itu, yaitu:Δ

ΔAB=|TABTBA|

ΔBC=|TBCTCB|

ΔCA=|TCATAC|

bisa diukur.

Sekarang perhatikan waktu penerbangan sirkuit:

C A BPABP , dilambangkan dengan ,CAB

PBAP , dilambangkan dengan .CBA

CAB=TPA+TAB+TBP

CBA=TPB+TBA+TAP

Pertimbangkan mesin klien untuk memulai kedua sirkuit ini secara bersamaan, dan mengukur perbedaan waktu kedatangan, :Px

x=CABCBA=ΔPA+ΔAB+ΔBP

Baik dan diketahui oleh pengukuran yang disebutkan sebelumnya, jadi pindahkan yang tidak diketahui ke sisi kiri:xΔAB

xΔAB=ΔPA+ΔBP

Demikian pula, untuk dan dapat ditunjukkan bahwa:{CAC,CCA}{CBC,CCB}

yΔBC=ΔPB+ΔCP

zΔCA=ΔPC+ΔAP

Memeriksa dengan cermat, kami perhatikan bahwa . Sisi kiri berisi nilai yang diketahui dari pengukuran, sisi kanan berisi 3 tidak diketahui dalam 3 persamaan.ΔXYΔYX

Memecahkan secara bersamaan,

ΔAP=r+st2

ΔBP=rs+t2

ΔCP=tr+s2

dimana,

r=xΔAB

s=yΔBC

t=zΔCA

Bingo
sumber
Bagaimana hal ini menghindari masalah jawaban saya dan orang lain miliki?
Raphael
Nah, untuk satu jam saya menggunakan 3 waktu servis, bukan satu. Dan itu memerlukan sekitar 12 pesan untuk dikirim - 6 untuk menemukan asimetri antara server waktu dan 6 untuk menemukan asimetri antara klien dan server. Ini bukan ruang solusi 1 dimensi karena terdiri dari 3 server dan bukan satu. Dan itu tidak menganggap waktu bisa mundur.
Bingo
Itu sangat bergantung pada 3 server waktu disinkronkan sempurna, sinkronisasi yang dibiarkan sebagai latihan untuk pembaca. ^^
Bingo
@ Raphael kupikir aku mengerti komentarmu sekarang. Pergeseran waktu tidak berfungsi karena lebih dibatasi. misalnya. Pergeseran waktu wrt tidak hanya mempengaruhi waktu antara dan tetapi juga circuts , perbedaan yang diukur dan diperhitungkan dalam perhitungan. Mungkin saya masih salah? Tidak yakin: PAPAPPACP,PABP,PBAP,PCAP
Bingo
0

Jika Anda hanya mengontrol titik akhir. Kamu tidak bisa Lihat jawaban Craig.

Bahkan jika Anda menambahkan lebih banyak mesin dan satu set komputer yang lebih kompleks, seperti dalam jawaban Bingo, Anda dapat mengurangi menjadi mesin yang membuat yang disinkronkan memiliki akses instan ke yang lain (tunda = 0).TXY

Perhatikan bahwa jika Anda melakukan , Anda mendapatkan .TAB=TBC=TCA=0ΔAP=ΔBP=ΔCP=0

Jadi apa yang salah? x=CABCBA=ΔPA+ΔAB+ΔBP

ΔPA=|TPATAP|, bukanΔPA=TPATAP

Dan jika Anda menggunakan yang kedua, maka Anda tidak dapat menggunakan asumsi (dan jika Anda tidak menggunakan ini, persamaan akhir Anda saling membatalkan).ΔXYΔYX

Jadi, apa yang bisa kamu lakukan? Kirim jam yang sangat bagus melalui surat. ;)

Atau, jika Anda memiliki kontrol atas semua node di antara mereka, Anda dapat memeriksa waktu untuk memproses setiap paket dan menghitung penundaan antara setiap pasangan berturut-turut, yang harus simetris, jika mereka menggunakan media fisik yang sama dua arah.

Anda mungkin perlu menjelaskan relativitas umum, dan ingat bahwa simultanitas tidak ada.

Luiz Afonso
sumber
"Anda mungkin perlu menjelaskan relativitas umum" Tidak, saya tidak. Saya baik-baik saja dengan solusi yang hanya berfungsi jika semua jam yang terlibat berada dalam bingkai tetap. Ada relativitas dalam sistem terdistribusi, tetapi itu berasal dari latensi jaringan, bukan dari fisika. Matematikanya sangat berbeda.
Gilles 'SANGAT berhenti menjadi jahat'
-1

NTP sebenarnya menggunakan 4 pengukuran waktu untuk menghitung "offset". mereka adalah "titik waktu" dalam perjalanan pulang pergi paket dari klien ke server kembali ke klien tetapi dapat dianggap sebagai penyeimbang waktu. diasumsikan bahwa offset waktu dapat dimatikan antara klien dan server tetapi keduanya dapat menghitung offset waktu yang berlalu secara akurat.t0,t1,t2,t3

klien setelah menerima paket kembali memiliki semua 4 nilai dan menghitung offset yang sebenarnya. begitu offset relatif dihitung antara klien dan server, offset "waktu absolut" dapat disinkronkan, yaitu klien dapat memperkirakan secara akurat server yang diukur dengan offset yang diukur dengan waktu lokalnya, yaitu "delta".

t0 = waktu [offset] dikirim pada klien = waktu [offset] recd di server = waktu [offset] dikirim di server = waktu [offset] recd di klien
t1
t2
t3

rumus sebenarnya adalahθ=(t1t0)+(t2t3)2

perhatikan rumus ini dapat menangani kasus di mana waktu dari klien ke server tidak sama dengan dari server ke klien (baik lebih pendek atau lebih lama).t1t0t3t2

pada jaringan, waktu tunda disebabkan oleh dua faktor utama, terutama latensi dan bandwidth.

  • latency adalah keterlambatan singkat router dalam mengirim paket [kecil] baru dan kira-kira konstan yang berbeda di setiap router. itu dapat diukur dengan utilitas traceroute .
  • bandwidth adalah tingkat di mana jumlah data yang besar dapat dikirim mis. "unggah vs waktu pengunduhan" dan juga dapat diukur dengan situs web "pengukur bandwidth" jarak jauh.

dalam banyak koneksi internet rumah / bisnis modern, kecepatan unggah jauh lebih kecil daripada kecepatan unduh & ini mungkin akan mempengaruhi perbedaan vs sedangkan latensi mungkin kecil atau agak mirip antara klien-ke-server dan server-ke- klien.t1t0t3t2

algoritma dasar untuk meningkatkan akurasi penghitungan offset yang digunakan dalam NTP (dan dapat mengoreksi beberapa tingkat latensi jaringan acak) adalah mengulangi proses beberapa kali dan menggunakan "puncak wedge scattergram". ini dapat dilihat pada "algoritma jam filter" pada slide 10 PPT ini pada NTP oleh David Mills. lihat juga algoritma jam filter oleh Mills. (perhatikan bahwa masih dapat digunakan antara satu server dan klien meskipun kode umum ditulis untuk memungkinkan beberapa server.) ini adalah bagian dari "algoritma mitigasi" yang dijelaskan dalam arsitektur & algoritma NTP .

vzn
sumber
1
Pertanyaannya secara khusus tentang kasus di mana latensi tidak simetris. Mengambil banyak tindakan tidak akan memberi tahu Anda apa pun tentang komponen konstan dalam asimetri.
Gilles 'SANGAT berhenti menjadi jahat'
pertanyaannya sebenarnya tidak mengandung kata "latency". jika Anda ingin membuat sketsa kasus apa yang sebenarnya ada dalam benak Anda dalam bentuk matematika alih-alih kata-kata terutama dengan formula NTP yang sebenarnya, tentu akan membantu. rumus & algoritme memang dapat mengukur / menangani / mencakup berbagai kasus "latensi" dan "asimetri".
vzn
C1 dan adalah nilai latensi (saya menyebutnya "penundaan", kedua kata ini bersinonim dalam konteks ini). C2
Gilles 'SO- stop being evil'
C1 dan yang dipengaruhi oleh latency tetapi tidak benar-benar sama untuk itu. dalam arti sebaran sebenarnya plot latensi ....C2
vzn
perhatikan (mungkin tidak sepenuhnya jelas dalam di atas) nilai nilai server dikirim dalam paket pengembalian dari server ke klien. t1,t2
vzn
-3

Kalau saja kita bisa mengirim paket kembali ke masa lalu

masukkan deskripsi gambar di sini

B=Tf+TbTf2C1+C22

Asumsi:

(B+C2)Tb=Tf(B+C1)

Tf(B+C2)=(B+C1)Tb

Pratik Deoghare
sumber
1
Solusi cerdas ini dikesampingkan dengan asumsi “infrastruktur Internet tipikal”.
Gilles 'SANGAT berhenti menjadi jahat'
1
@Gilles, aku tahu. : D
Pratik Deoghare
-4

Berikut adalah ide yang kedengarannya sangat meyakinkan bagi saya dan karena itu mungkin benar-benar salah dalam cara yang bodoh.

Pertimbangkan skenario berikut. Kami memiliki dua simpul dan masing-masing dengan jam dan . Demi kesederhanaan, mari kita asumsikan bahwa jam berjalan dengan kecepatan yang sama; kami menunjukkan perbedaannya dengan yang konstan untuk tujuan kami. Mari kita asumsikan pula bahwa keterlambatan pengiriman dan adalah konstan¹.N1N2C1C2δ=C1C2d12d21

Suruh mengirim pesan dengan timestamp dengan ke dan biarkan waktu saat ini di setelah menerimanya (lakukan hal yang sama untuk arah lain). Selain itu, ukur waktu pulang pergi (pada salah satu simpul) dengan mengirim pesan bolak-balik. Sekarang siapkan sistem persamaan ini:N1T1mN2T2rC2D

T2rT1m=d12+δT1rT2m=d21δD=d12+d21

Karena sistem ini terdiri dari tiga persamaan, memiliki tiga yang tidak diketahui dan kita tahu ada solusinya, itu bisa diselesaikan. Tentu saja node harus bertukar pengukuran mereka sehingga keduanya dapat menghitung nilai yang sama untuk (jika perlu).δ

1] Saya pikir anggapan itu wajar dan perlu. Mereka dapat dibenarkan dengan harapan bahwa jumlah masing-masing tidak berubah terlalu banyak selama upaya sinkronisasi kami.

Raphael
sumber
(d12+δ)+(d21δ)(d12+d21)=0 . Ada tiga persamaan dan tiga tidak diketahui, tetapi keluarga solusi adalah 1-dimensi. Ini adalah masalah yang sama dengan yang kami miliki dengan jawaban Ran yang sudah dihapus dan dibahas secara singkat dalam obrolan: waktu itu relatif; kita tidak bisa membedakan antara keterlambatan transmisi dan jam miring.
Gilles 'SO- stop being evil'
@ Gilles Sayang sekali. Kita mungkin harus meninggalkan satu contoh kesalahan untuk dilihat semua orang?
Raphael
1
Saya dapat mengembalikan jawaban yang salah yang saya tulis. Mungkin bermanfaat karena komentar yang dibuat oleh Gilles.
Ran G.