Tôi đã tìm thấy một cách để CẢ HAI khám phá nút nào là ai (tức là ai có độ trễ tin nhắn dài hơn) VÀ ước tính độ trễ chuyến đi một chiều. Trong khi các câu trả lời khác là chính xác, họ CHỈ xem xét phép đo đồng hồ trực tiếp tiếp cận mà tất nhiên không thể hoạt động. Tuy nhiên như tôi đang chứng minh ở đây, đây chỉ là một phần của câu chuyện vì đây là thuật toán làm việc của tôi cho phần trên:
Giả sử như trong cuộc sống thực:
Liên kết của băng thông hữu hạn b
Mỗi nút có địa chỉ duy nhất (ví dụ A và B)
Kích thước gói p nhỏ hơn nhiều so với sản phẩm độ trễ băng thông *
Các nút A và B có thể lấp đầy kênh
Nút có một ) (ngẫu nhiên chức năng
Mỗi nút lấp đầy kênh với các gói riêng (được đánh dấu A hoặc B tương ứng) HOẶC chuyển tiếp các gói mà nó nhận được từ các nút khác như sau:
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
Giải thích trực quan
Vì sản phẩm độ trễ băng thông * của A cao hơn (vì độ trễ cao hơn) A sẽ quản lý để có nhiều gói tin nhận được hơn B, do đó mỗi Node có thể biết họ là ai trong sơ đồ .
Hơn nữa, với thời gian hội tụ đủ để chạy trên thuật toán, tỷ lệ các gói từ A đến B sẽ biểu thị tỷ lệ trễ RTT thực tế của A đến B và do đó OTT mong muốn .
NỀN TẢNG KẾT QUẢ ĐƠN GIẢN
Dưới đây là một mô phỏng chứng minh điều trên và cho thấy cách A hội tụ thành công về độ trễ 3 giây và B hội tụ khoảng 1 giây trễ:
Giải thích về Hình:
Mỗi dòng biểu thị 1 giây thời gian (kích thước gói được chọn để có thời gian truyền 1 giây cho rõ ràng). Lưu ý rằng mỗi nút có thể bắt đầu thuật toán bất cứ lúc nào không theo bất kỳ trình tự hoặc thời gian cụ thể nào. Các cột như sau:
NODE A nhận được: Nút A nhìn thấy gì ở phía nhận của nó (đây cũng là P4 bên dưới)
NODE A tiêm: Nút A gửi đi (lưu ý đây là A hoặc ngẫu nhiên A hoặc B)
P1, P2, P3: Ba gói đang truyền (theo thứ tự) giữa A và B (truyền 1 giây có nghĩa là 3 gói đang truyền trong thời gian trễ là 3)
NODE B nhận được: Những gì B nhìn thấy ở phía nhận của nó (đây là P3)
NODE B tiêm: Những gì B gửi ra (lưu ý đây là B, hoặc ngẫu nhiên A hoặc B mỗi algo)
P4: Gói tin đang chuyển từ B đến A (xem thêm P1, P2, P3)
A đếm A: Những gì A đếm cho các gói A mà nó đã thấy
A đếm B: Những gì A đếm cho các gói B mà nó đã thấy
B đếm A: B tính gì cho các gói A mà nó đã thấy
B đếm B: Những gì B tính cho các gói B mà nó đã thấy
A-> B: Độ trễ mà A ước tính đối với B (tỷ lệ RTT là 4 giây dựa trên các gói được nhìn thấy)
B-> A: Độ trễ mà B ước tính đối với A (tỷ lệ RTT là 4 giây dựa trên các gói được nhìn thấy)
Như chúng ta có thể thấy cả hai nút hội tụ và ở xung quanh độ trễ thực sự của chúng (thực ra chúng ta không thấy điều đó đối với A vì cần nhiều giây hơn để hội tụ nhưng nó hội tụ cùng một hành vi như B)
Các bộ lọc tốt hơn có thể hội tụ nhanh hơn nhưng chúng ta có thể thấy rõ cả hai cách hội tụ xung quanh các giá trị chính xác cho độ trễ của chúng, do đó chúng có thể biết chính xác độ trễ của chúng (mặc dù tôi chỉ hiển thị ước tính của chúng để minh họa).
Ngoài ra, ngay cả khi băng thông giữa các liên kết khác nhau, phương pháp trên vẫn có thể giữ (mặc dù người ta sẽ phải suy nghĩ về nó chắc chắn hơn) bằng cách sử dụng các cặp gói để tìm ra ước tính băng thông và sau đó chỉ áp dụng cho phương trình tỷ lệ ở trên.
Kết luận
Chúng tôi đã cung cấp một thuật toán cho cả A và B để biết vị trí của chúng trong mạng và biết độ trễ của chúng đối với nút khác cho sơ đồ trên. Chúng tôi đã sử dụng phương pháp ước tính đo lường mạng thay vì các phương pháp dựa trên đồng hồ mà thực sự không thể dẫn đến giải pháp do vấn đề đồng bộ hóa đồng hồ đệ quy.
Lưu ý Bây giờ tôi đã chỉnh sửa câu trả lời này cung cấp tất cả các mô phỏng vì không ai tin tôi, tôi đã giải quyết nó cho đến khi bạn có thể thấy trong các bình luận đầu tiên. Hy vọng với những kết quả này, ai đó có thể bị thuyết phục hơn và chấp thuận để giúp mọi người ít nhất tìm thấy một lỗi hoặc tính chính xác trong câu đố đo lường mạng này!