ฉันได้พบวิธีที่ทั้งสองค้นพบว่าโหนดใดเป็นใคร ในขณะที่คำตอบอื่น ๆ นั้นถูกต้องพวกเขาจะพิจารณาเฉพาะการวัดนาฬิกาโดยตรงเท่านั้นซึ่งแน่นอนว่าไม่สามารถใช้งานได้ อย่างไรก็ตามขณะที่ฉันกำลังพิสูจน์ที่นี่นี่เป็นเพียงส่วนหนึ่งของเรื่องราวที่นี่เป็นอัลกอริทึมการทำงานของฉันสำหรับข้างต้น:
ถือว่าเหมือนในชีวิตจริง:
ลิงค์ของแบนด์วิดท์ที่ จำกัด
แต่ละโหนดมีที่อยู่ที่ไม่ซ้ำกัน (เช่น A และ B)
ขนาดแพ็คเก็ตมีขนาดเล็กกว่าผลิตภัณฑ์ latency * bandwidth
โหนด A และ B สามารถเติมช่องสัญญาณได้
โหนดมีฟังก์ชันแบบสุ่ม ()
แต่ละโหนดเติมช่องสัญญาณด้วยแพ็กเก็ตของตัวเอง (ทำเครื่องหมาย A หรือ B ตามลำดับ) หรือส่งต่อแพ็กเก็ตที่ได้รับจากโหนดอื่นดังนี้:
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
คำอธิบายที่ใช้งานง่าย
ตั้งแต่แบนด์วิดธ์ * สินค้าแฝงของ A จะสูงกว่า (เพราะความล่าช้าจะสูงกว่า) จะจัดการให้มีแพ็คเก็ตที่ได้รับมากขึ้นกว่า B จึงโหนดแต่ละคนสามารถรู้ว่าพวกเขาอยู่ในแผนภาพที่
นอกจากนี้มีเวลามากพอที่บรรจบกันของการทำงานดังกล่าวข้างต้นขั้นตอนวิธีอัตราส่วนของแพ็คเก็ตของ A ไป B จะแสดงถึงอัตราส่วนที่แท้จริงของความล่าช้าของ RTT A ไป B และดังนั้นจึง OTT
SIMULATION RESULT TRACE
นี่คือการจำลองที่พิสูจน์ข้างต้นและแสดงให้เห็นว่าการบรรจบกันของการหน่วงเวลา 3 วินาทีสำเร็จและการบรรจบกัน B ประมาณ 1 วินาทีล่าช้า:
คำอธิบายของตัวเลข:
แต่ละบรรทัดแสดงเวลา 1 วินาที (ขนาดแพ็คเก็ตถูกเลือกให้มีเวลาส่ง 1 วินาทีเพื่อความชัดเจน) โปรดทราบว่าแต่ละโหนดสามารถเริ่มต้น algo ได้ตลอดเวลาไม่ได้อยู่ในลำดับหรือเวลาใด ๆ คอลัมน์มีดังนี้:
NODE A ได้รับ: โหนดใดที่เห็นในด้านการรับ (นี่คือ P4 ด้านล่าง)
NODE A injects: โหนดใดที่ส่งออก (โปรดทราบว่านี่คือ A หรือ A หรือ B แบบสุ่ม)
P1, P2, P3: สามแพ็คเก็ตที่อยู่ระหว่างทาง (ตามลำดับ) ระหว่าง A และ B (การส่ง 1 วินาทีหมายถึง 3 แพ็กเก็ตที่อยู่ระหว่างรอส่งสำหรับเวลาแฝง 3)
NODE B ได้รับ: สิ่งที่ B เห็นในด้านการรับ (นี่คือ P3)
Node B injects: B ใดที่ส่งออก (โปรดทราบว่านี่คือ B หรือสุ่ม A หรือ B ต่อ algo)
P4: แพ็กเก็ตระหว่างทางจาก B ถึง A (ดู P1, P2, P3)
A นับ: What A นับสำหรับแพ็กเก็ต A ที่ได้เห็น
การนับ B: การนับ A สำหรับแพ็คเก็ต B ที่ได้เห็น
B นับ A: B นับอะไรสำหรับแพ็กเก็ต A ที่เห็น
B นับ B: สิ่งที่ B นับสำหรับแพ็กเก็ต B ที่ได้เห็น
A-> B: เวลาแฝงที่ A ประมาณต่อ B (อัตราส่วน RTT 4 วินาทีขึ้นอยู่กับแพ็กเก็ตที่เห็น)
B-> A: เวลาแฝงที่ B ประมาณไปยัง A (อัตราส่วน RTT 4 วินาทีขึ้นอยู่กับแพ็กเก็ตที่เห็น)
ในขณะที่เราสามารถเห็นทั้งสองโหนดมาบรรจบกันและอยู่รอบ ๆ เวลาแฝงที่แท้จริงของพวกเขา (ที่จริงเราไม่เห็นว่าสำหรับ A เพราะต้องวินาทีเพิ่มเติมเพื่อมาบรรจบกัน แต่มันมาบรรจบกันพฤติกรรมเช่นเดียวกับ B)
ตัวกรองที่ดีกว่าสามารถมาบรรจบกันได้เร็วขึ้น แต่เราสามารถเห็นได้อย่างชัดเจนว่าพวกเขาทั้งสองมาบรรจบกันรอบ ๆ ค่าที่ถูกต้องสำหรับความล่าช้าของพวกเขาดังนั้นพวกเขาสามารถรู้ได้อย่างชัดเจนว่าการล่าช้าของพวกเขา
ยิ่งไปกว่านั้นแม้ว่าแบนด์วิดท์ระหว่างลิงก์จะแตกต่างกัน แต่วิธีการข้างต้นอาจยังคงมีอยู่ (แม้ว่าจะต้องคิดให้ชัดเจนยิ่งขึ้น) โดยใช้แพ็คเก็ตคู่เพื่อคำนวณหาแบนด์วิดท์แล้วประมาณสมการสัดส่วนด้านบน
สรุป
เราได้จัดทำอัลกอริทึมสำหรับทั้ง A และ B เพื่อให้ทราบตำแหน่งของพวกเขาในเครือข่ายและทราบเวลาแฝงของพวกเขาไปยังโหนดอื่นสำหรับแผนภาพข้างต้น เราใช้วิธีการประเมินการวัดเครือข่ายแทนที่จะใช้วิธีการตามนาฬิกาซึ่งไม่สามารถนำไปสู่การแก้ปัญหาอันเนื่องมาจากปัญหาการซิงค์นาฬิกาซ้ำ
หมายเหตุตอนนี้ฉันแก้ไขคำตอบนี้ให้การจำลองทั้งหมดเพราะไม่มีใครเชื่อฉันฉันแก้ไขมันเท่าที่คุณเห็นในความคิดเห็นแรก หวังว่าผลลัพธ์เหล่านี้จะช่วยให้ใครบางคนสามารถโน้มน้าวใจและอนุมัติมากขึ้นเพื่อช่วยให้ทุกคนอย่างน้อยพบข้อผิดพลาดหรือความถูกต้องในปริศนาการวัดเครือข่ายนี้!