Mengukur latensi jaringan satu arah


20

Ini adalah teka-teki tentang mengukur latensi jaringan yang saya buat. Saya percaya solusinya adalah tidak mungkin, tetapi teman tidak setuju. Saya mencari penjelasan yang meyakinkan. (Meskipun itu dianggap sebagai teka-teki, saya pikir cocok di situs web ini karena penerapannya pada desain dan pengalaman protokol komunikasi seperti di game online, belum lagi NTP.)

Misalkan dua robot berada di dua kamar, dihubungkan oleh jaringan dengan latensi satu arah yang berbeda seperti yang ditunjukkan pada grafik di bawah ini. Ketika robot A mengirim pesan ke robot B, dibutuhkan 3 detik untuk sampai, tetapi ketika robot B mengirimkan pesan ke robot A, dibutuhkan 1 detik untuk sampai. Latensi tidak pernah bervariasi.

Robot identik dan tidak memiliki jam bersama, meskipun mereka dapat mengukur berlalunya waktu (misalnya mereka memiliki jam tangan berhenti). Mereka tidak tahu yang mana dari mereka adalah robot A (yang pesannya ditunda 3s) dan yang mana robot B (yang pesannya ditunda 1s).

Protokol untuk mengetahui waktu pulang pergi adalah:

whenReceive(TICK).then(send TOCK)

// Wait for other other robot to wake up
send READY
await READY
send READY

// Measure RTT
t0 = startStopWatch()
send TICK
await TOCK
t1 = stopStopWatch()
rtt = t1 - t0  //ends up equalling 4 seconds

Apakah ada protokol untuk menentukan keterlambatan perjalanan satu arah? Bisakah robot menemukan yang memiliki penundaan pengiriman pesan lebih lama?

Dua robot satu jaringan asimetris


5
Lihat Sinkronisasi jam di jaringan dengan penundaan asimetris (yang meminta sesuatu yang bisa dilakukan dengan infrastruktur Internet biasa). Saya pikir dari apa yang kami lihat ketika mendiskusikan jawaban yang salah untuk pertanyaan itu, jawaban untuk pertanyaan Anda adalah bahwa itu tidak mungkin.
Gilles 'SANGAT berhenti menjadi jahat'

Haruskah kita menggabungkan pertanyaan, atau mereka cukup berbeda dalam target untuk tetap terpisah?
Craig Gidney

Tidak, itu pertanyaan yang berbeda. Pertanyaan Anda menetapkan bahwa tidak mungkin dalam pengaturan dua mesin hanya dengan melewati pesan. Saya berharap solusi berdasarkan, katakanlah, informasi latensi tersedia untuk beberapa tautan perantara pada rute antara klien dan server dan memiliki beberapa cara untuk menyebarkan informasi ini kepada klien.
Gilles 'SANGAT berhenti menjadi jahat'

3
Jika ada cara untuk melakukan ini, teori relativitas Einstein tidak akan berhasil, karena itu tergantung pada kenyataan bahwa dua pengamat yang terpisah seperti ruang dan memiliki latensi satu arah yang tidak diketahui tidak dapat menyetujui waktu yang tepat.
Peter Shor

NTP memang memungkinkan / mengimplementasikan pengukuran keterlambatan diferensial ini berdasarkan pada mesin yang saling mengirim waktu mereka & tidak hanya melacak waktu kirim / penerimaan pesan mereka sendiri tetapi juga server lain melalui konten pesan, lihat jawaban pada pertanyaan gilles
vzn

Jawaban:


14

Diagram berikut, dari posting blog yang saya tulis , adalah bukti visual bahwa itu tidak mungkin:

Menggeser jam miring persis diimbangi oleh asimetri latensi

Perhatikan bagaimana waktu kedatangan paket di setiap sisi tetap sama, bahkan ketika latensi satu arah berubah (dan bahkan menjadi negatif!). Paket pertama selalu mencapai server pada 1,5 detik pada jam server, yang kedua selalu mencapai klien pada 2 detik pada jam klien, dll. Isi paket dan waktu kedatangan lokal adalah satu - satunya hal yang bisa didasarkan pada protokol, tetapi konten dan waktu kedatangan dapat dipertahankan konstan karena asimetri bervariasi dengan memvariasikan kemiringan jam awal.

Pada dasarnya, asimetri dalam latensi satu arah terlihat persis seperti kemiringan jam. Karena masalahnya menyatakan bahwa kita tidak mulai mengetahui kemiringan jam awal atau asimetri latensi satu arah, dan yang satu bervariasi seperti memvariasikan yang lain sehingga efeknya tidak dapat dibedakan, kita tidak dapat memisahkan kontribusi mereka untuk menyelesaikannya. asimetri latensi satu arah. Tidak mungkin.

Secara lebih formal, Anda tidak bisa menyelesaikan panjang sisi bila hanya diberikan panjang siklus. Basis siklus memiliki derajat kebebasan, sesuai dengan skew clock tidak diketahui relatif terhadap salah satu peserta. Anda selalu dapat menyembunyikan latensi satu arah, bahkan ketika ada banyak peserta:n - 1n1n1

Penyakit laut

Jika Anda tidak memiliki kecenderungan visual, saya memiliki argumen intuitif lain. Bayangkan sebuah portal waktu hingga seratus tahun di masa depan. Ketika Anda mengobrol di seberang seseorang di sisi lain, Anda menyadari bahwa percakapan itu benar-benar normal meskipun ada seratus tahun asimetri dalam penundaan satu arah. Setiap efek yang dapat diamati akan jelas pada skala itu!


Apa pendapat Anda tentang ini? software.internet2.edu/owamp
CMCDragonkai

@CMCDragonkai Perlu diingat bahwa pernyataan puzzle lebih membatasi daripada kenyataan. Dalam praktiknya Anda memiliki opsi seperti mengukur panjang garis serat optik, mencatat titik tengah, menggunakan pengetahuan tentang topologi jaringan, perlahan-lahan membawa jam dari satu tempat ke tempat lain, dll. Misalnya, satelit GPS bergerak di orbit yang diketahui dan Anda dapat menggunakannya untuk menghapus derajat kebebasan saat menyelesaikan. Jadi di permukaan saya tidak melihat masalah dengan alat ping satu arah, selama itu atau jam yang diandalkannya mengeksploitasi beberapa informasi tersier yang manis.
Craig Gidney

Oh dalam hal itu, bisakah Anda memperbarui jawaban Anda dengan kemungkinan kerja di sekitar itu?
CMCDragonkai

@CMCDragonkai Memiliki mereka di komentar sudah cukup. Mereka berada di luar jangkauan teka-teki.
Craig Gidney

Latensi satu arah memang penting, misalnya untuk jaringan game. Juga, semua orang mengatakan tidak mungkin, tetapi saya dapat dengan mudah memecahkan teka-teki di atas kertas - setelah Anda menyinkronkan jam, yang Anda lakukan adalah mengukur penundaan dari A ke B dengan mengirimkan waktu A ke B, dengan penundaan A-> B sama dengan B's time - A's sent time, dan B-> Yang setara denganlatency - A->B delay
Llamageddon

1

Saya pikir tidak mungkin untuk mengetahui latensi satu arah hanya dengan membandingkan stopwatch.

ABCA1
BCB1=1
ACA2=9
BCB2=5
AB

Mungkin jika Anda membuatnya menjadi pertanyaan karunia seseorang akan memecahkannya. Sampai saat itu, pujian.


0

Saya telah menemukan cara untuk KEDUA menemukan simpul mana yang (yaitu yang memiliki penundaan pesan lebih lama) DAN memperkirakan penundaan perjalanan satu arah. Sementara jawaban lain benar, mereka HANYA mempertimbangkan pengukuran jam langsung yang didekati yang tentu saja tidak dapat bekerja. Namun karena saya membuktikan di sini ini hanya bagian dari cerita karena di sini adalah algoritma kerja saya untuk yang di atas:

Asumsikan seperti dalam kehidupan nyata:

  • Tautan bandwidth terbatas b

  • Setiap node memiliki alamat unik (mis. A dan B)

  • Ukuran paket p jauh lebih kecil dari produk latensi bandwidth *

  • Node A dan B dapat mengisi saluran

  • Node memiliki random () function

Setiap node mengisi saluran dengan paket-paketnya sendiri (masing-masing ditandai A atau B) ATAU meneruskan paket-paket yang diterimanya dari node lain sebagai berikut:

Always fill the channel with my own packets except:
if I receive a packet from another node then
   Randomly choose to 
          either forward that packet from the other node
          or discard that packet and forward my own packet

Penjelasan Intuitif Karena bandwidth A * produk latensi lebih tinggi (karena latensi lebih tinggi) A akan mengelola untuk menerima lebih banyak paket dari B, oleh karena itu setiap Node dapat mengetahui siapa mereka dalam diagram .

Lebih lanjut, dengan waktu konvergensi yang cukup untuk menjalankan algoritma di atas, rasio paket A ke B akan menunjukkan rasio aktual penundaan RTT dari A ke B dan karenanya OTT yang diinginkan .

PELACAKAN HASIL SIMULASI Berikut ini adalah simulasi yang membuktikan hal di atas dan menunjukkan bagaimana A berhasil melakukan konvergensi menuju keterlambatan 3 detik dan B konvergensi sekitar keterlambatan 1 detik:

Detik pertama Simulasi

Detik berikutnya Simulasi

Penjelasan Angka: Setiap saluran mewakili 1 detik waktu (ukuran paket dipilih untuk memiliki waktu transmisi 1 detik untuk kejelasan). Perhatikan bahwa setiap node dapat memulai algo kapan saja tanpa urutan atau waktu tertentu. Kolomnya adalah sebagai berikut:

  • NODE A menerima: Apa yang dilihat simpul A di sisi penerimanya (ini juga P4 di bawah)

  • NODE A menyuntikkan: Apa simpul A mengirimkan (perhatikan ini adalah A, atau secara acak A atau B)

  • P1, P2, P3: Tiga paket yang sedang transit (berurutan) antara A dan B (transmisi 1 detik berarti 3 paket sedang transit dengan latensi 3)

  • NODE B menerima: Apa yang dilihat B di sisi penerimanya (ini adalah P3)

  • NODE B menyuntikkan: Apa yang B kirim keluar (perhatikan ini B, atau secara acak A atau B per algo)

  • P4: Paket dalam perjalanan dari B ke A (lihat juga P1, P2, P3)

  • A menghitung A: Apa yang diperhitungkan untuk paket A yang telah dilihatnya

  • A counts B: Apa yang diperhitungkan A untuk paket B yang telah dilihatnya

  • B counts A: Apa yang diperhitungkan B untuk paket-paket A yang telah dilihatnya

  • B counts B: Apa yang diperhitungkan B untuk paket B yang telah dilihatnya

  • A-> B: Latensi yang diperkirakan A terhadap B (rasio RTT 4 detik berdasarkan paket yang terlihat)

  • B-> A: Latensi yang B perkirakan menuju A (rasio RTT 4 detik berdasarkan paket yang terlihat)

Seperti yang kita dapat melihat kedua node bertemu dan tetap di sekitar latensi sebenarnya (sebenarnya kita tidak melihat itu untuk A karena diperlukan lebih banyak detik untuk konvergen tetapi konvergensi perilaku yang sama seperti B)

Filter yang lebih baik dapat konvergen lebih cepat tetapi kita dapat dengan jelas melihat bagaimana keduanya menyatu di sekitar nilai yang benar untuk keterlambatan mereka, oleh karena itu mereka dapat mengetahui dengan pasti mengetahui keterlambatan mereka (meskipun saya menunjukkan estimasi mereka hanya untuk ilustrasi).

Juga, bahkan jika bandwidth antar tautan berbeda, metode di atas masih bisa bertahan (walaupun kita harus memikirkannya lebih untuk lebih yakin) dengan menggunakan pasangan paket untuk mengetahui perkiraan bandwidth dan kemudian hanya menerapkan persamaan proporsi di atas.

Kesimpulan Kami menyediakan algoritma untuk A dan B untuk mengetahui posisi mereka dalam jaringan dan mengetahui latensi mereka ke node lain untuk diagram di atas. Kami menggunakan metode estimasi pengukuran jaringan daripada pendekatan berbasis jam yang memang tidak dapat mengarah ke solusi karena masalah sinkronisasi jam rekursif.

Catatan Saya sekarang mengedit jawaban ini memberikan semua simulasi karena tidak ada yang akan percaya saya menyelesaikannya sejauh yang Anda lihat di komentar pertama. Semoga dengan hasil ini seseorang dapat lebih diyakinkan dan menyetujui untuk membantu semua orang setidaknya menemukan satu kesalahan atau kebenaran dalam puzzle pengukuran jaringan ini!


3
Saya pikir ini tidak berhasil. Karena bandwidthnya sama, satu-satunya perbedaan yang A dan B lihat adalah, jika mereka mulai pada waktu yang sama, B akan menunggu 3s sebelum menerima data apa pun dan A akan menunggu 1s. Tetapi mereka tidak memiliki jam bersama sehingga mereka tidak tahu bahwa mereka mulai pada waktu yang sama. Mungkin A tidak mendengar apa-apa selama 10-an karena dia mulai menjalankan protokol terlebih dahulu.
David Richerby

Tidak ada persyaratan untuk memulai pada saat yang sama siapa pun dapat memulai kapan saja. Mereka berdua harus berlari untuk beberapa waktu. Saya menghargai Anda meluangkan waktu untuk mengulas tetapi baca kembali. Ini adalah metode statistik dan melibatkan konvergensi. Saya tidak mengatakan saya 100% benar-benar benar karena saya belum mensimulasikan tetapi hanya komentar yang Anda buat tidak benar-benar berlaku menurut pendapat saya. Mungkin ini menjelaskan ide secara lebih umum: jika Anda menerima bahwa bandwidth * produk penundaan berbeda untuk dua tautan maka satu tautan sebenarnya akan berisi lebih banyak paket - dan itu dapat dirasakan oleh algo di atas ...
user3134164

Saya tidak berpikir saya salah paham tetapi itu mungkin. Apakah Anda setuju bahwa bandwidth sama sehingga A dan B menerima data pada tingkat yang sama? Jika demikian, bukankah keduanya akan bertemu untuk hal yang persis sama?
David Richerby

Ya tentu saja mereka menerima pada tingkat yang sama, itu tidak berarti mereka bertemu pada hal yang sama. Ada paket A dan B di jaringan pertanyaannya adalah berapa rasio dari paket A vs B yang terlihat. Saya memang menjalankan beberapa simulasi sederhana sekarang dan saya mendapatkan bias sepanjang waktu. Untuk mendapatkan ide karena saya kira saya tidak dapat memposting semuanya di sini menganggap b adalah sedemikian rupa sehingga 1 paket membutuhkan satu transmisi kedua. Lalu selalu ada 4 paket dalam perjalanan. Terapkan algoritma dan boom kami berhasil mengukur OTT dengan menghindari metode jam / peristiwa yang disinkronkan yang tidak bekerja dengan metode konvergensi statistik!
user3134164

Apa itu "proporsi paket A vs B"?
Gilles 'SANGAT berhenti menjadi jahat'

0

Ini adalah jawaban untuk @ user3134164 tetapi terlalu besar untuk dikomentari.

PxxRxx

  • R1=(1-R2)×(1-P2)R2=(1-R1)×(1-P1)1-R21-P2
  • R1R2R11-R1R21-R2

Inilah sebabnya saya percaya ini tidak akan membawa Anda ke mana pun. Tolong tunjukkan kesalahan yang bisa saya lakukan selama alasan ini.


Selamat Datang di Ilmu Komputer ! Jawaban Anda terlihat bagus tetapi, seperti yang Anda sebutkan, sebenarnya komentar mendalam pada komentar @ user3134164. Saya pikir Anda dapat menyelesaikan masalah ini dengan cara-cara berikut 1) Cobalah untuk memperluas jawaban Anda sehingga ini juga merupakan jawaban untuk pertanyaan yang sebenarnya. atau 2) Buat pertanyaan baru yang pada dasarnya menyatakan kesalahpahaman utama dari komentar user3134164 dan jawaban sendiri dengan jawaban yang mirip dengan ini. Mana yang tepat terserah Anda. Saya pikir mungkin membuat pertanyaan baru adalah ide yang bagus, tetapi mungkin Anda dapat mengembangkan lebih dari yang saya kira. Tanyakan apakah Anda memiliki pertanyaan lebih lanjut.
Kadal diskrit

Tentu saja, @ user3134164 juga bebas untuk 'mempromosikan' komentar menjadi pertanyaan,
Kadal diskrit

"Px probabilitas bahwa robot x memilih paketnya sendiri ketika menerima salah satu paket robot lainnya" berasal dari fungsi komputer acak () seperti dalam asumsi - misalnya untuk dua jenis paket itu akan selalu 0,5. Jika fungsi acak () cukup seragam maka "rasio aktual penundaan RTT dari A ke B" dapat dihitung. Dengan definisi R Anda, saya pikir R1 = (1-R2) * 0,5 sehingga rasionya diketahui. Jadi saya masih percaya jawaban saya berfungsi dengan baik. Terima kasih banyak telah meluangkan waktu untuk melihatnya.
user3134164
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.