Đo độ trễ mạng một chiều


20

Đây là một câu đố về đo độ trễ mạng mà tôi tạo ra. Tôi tin rằng giải pháp là không thể, nhưng bạn bè không đồng ý. Tôi đang tìm kiếm lời giải thích thuyết phục theo cách nào. (Mặc dù nó được đặt ra như một câu đố, tôi nghĩ rằng nó phù hợp trên trang web này vì khả năng ứng dụng vào thiết kế và kinh nghiệm của các giao thức truyền thông như trong các trò chơi trực tuyến, không đề cập đến NTP.)

Giả sử hai robot ở trong hai phòng, được kết nối bởi một mạng có độ trễ một chiều khác nhau như trong hình bên dưới. Khi robot A gửi tin nhắn cho robot B, phải mất 3 giây để nó đến, nhưng khi robot B gửi tin nhắn cho robot A thì phải mất 1 giây để đến nơi. Độ trễ không bao giờ thay đổi.

Các robot giống hệt nhau và không có đồng hồ dùng chung, mặc dù chúng có thể đo thời gian trôi qua (ví dụ: chúng có đồng hồ bấm giờ). Họ không biết ai trong số họ là robot A (có tin nhắn bị trễ 3 giây) và ai là robot B (có tin nhắn bị chậm 1 giây).

Một giao thức để khám phá thời gian khứ hồi là:

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

Có một giao thức để xác định sự chậm trễ chuyến đi một chiều? Các robot có thể phát hiện ra cái nào trong số chúng có độ trễ gửi tin nhắn dài hơn không?

Hai robot một mạng bất đối xứng


5
Xem Đồng bộ hóa đồng hồ trong mạng có độ trễ không đối xứng (yêu cầu một cái gì đó có thể thực hiện được với cơ sở hạ tầng Internet điển hình). Tôi nghĩ từ những gì chúng ta đã thấy khi thảo luận các câu trả lời sai cho câu hỏi đó, câu trả lời cho câu hỏi của bạn là không thể.
Gilles 'SO- ngừng trở thành ác quỷ'

Chúng ta có nên hợp nhất các câu hỏi, hoặc chúng có đủ khác nhau trong mục tiêu để tách biệt không?
Craig Gidney

Không, chúng là những câu hỏi khác nhau. Câu hỏi của bạn cho thấy điều đó là không thể trong cài đặt hai máy chỉ với tin nhắn đi qua. Tôi hy vọng các giải pháp dựa trên thông tin về độ trễ có sẵn cho một số liên kết trung gian trên tuyến giữa máy khách và máy chủ và có một số cách để truyền thông tin này đến máy khách.
Gilles 'SO- ngừng trở thành ác quỷ'

3
Nếu có một cách để làm điều này, thì thuyết tương đối của Einstein sẽ không hiệu quả, vì nó phụ thuộc vào thực tế là hai nhà quan sát giống như không gian và có độ trễ một chiều không xác định có thể đồng ý về thời điểm thích hợp.
Peter Shor

NTP thực sự cho phép / thực hiện đo độ trễ vi sai này dựa trên các máy gửi cho nhau thời gian của họ & không chỉ theo dõi thời gian gửi / nhận tin nhắn của riêng họ mà cả các máy chủ khác thông qua nội dung tin nhắn, xem câu trả lời trên câu hỏi của gilles
vzn

Câu trả lời:


14

Sơ đồ sau đây, từ một bài đăng trên blog tôi đã viết , là một bằng chứng trực quan mà không thể:

Trượt đồng hồ lệch chính xác bởi độ bất đối xứng độ trễ

Lưu ý cách thời gian đến của gói ở mỗi bên giữ nguyên, ngay cả khi độ trễ một chiều thay đổi (và thậm chí trở nên âm!). Gói đầu tiên luôn đến máy chủ lúc 1,5 giây trên đồng hồ của máy chủ, gói thứ hai luôn đến máy khách lúc 2 giây trên đồng hồ của máy khách, v.v. Nội dung gói và thời gian đến địa phương là những thứ duy nhất mà giao thức có thể dựa vào, nhưng nội dung và thời gian đến có thể được giữ không đổi vì sự bất đối xứng thay đổi bằng cách thay đổi độ lệch đồng hồ ban đầu.

Về cơ bản, sự bất đối xứng trong độ trễ một chiều trông giống hệt như độ lệch của đồng hồ. Vì vấn đề nói rằng chúng ta không bắt đầu biết về độ lệch đồng hồ ban đầu hoặc độ bất đối xứng độ trễ một chiều và sự khác nhau trông giống như thay đổi cái khác để hiệu ứng của chúng không thể phân biệt được, chúng ta không thể tách rời những đóng góp của chúng để giải quyết bất đối xứng độ trễ một chiều. Điều đó là không thể.

Chính thức hơn, bạn không thể giải quyết độ dài cạnh khi chỉ đưa ra độ dài của chu kỳ. Cơ sở chu kỳ có độ tự do, tương ứng với n - 1 xiên đồng hồ không xác định so với một trong những người tham gia. Bạn luôn có thể ẩn độ trễ một chiều, ngay cả khi có nhiều người tham gia:n1n1

say sóng

Nếu bạn không quá thiên về trực quan, tôi có một lập luận trực quan khác. Hãy tưởng tượng một cổng thông tin thời gian đến một trăm năm trong tương lai. Khi bạn trò chuyện với ai đó ở phía bên kia, bạn nhận ra cuộc trò chuyện là hoàn toàn bình thường mặc dù sự bất cân xứng trăm năm trong sự chậm trễ một chiều. Bất kỳ hiệu ứng có thể quan sát sẽ là rõ ràng trên quy mô đó!


Ý kiến ​​của bạn về điều này là gì? phần
mềm.iNET2.edu/owamp

@CMCDragonkai Hãy nhớ rằng tuyên bố câu đố hạn chế hơn thực tế. Trong thực tế, bạn có các tùy chọn như đo chiều dài của các sợi quang, ghi nhật ký tại các điểm trung gian, sử dụng kiến ​​thức về cấu trúc liên kết mạng, từ từ mang đồng hồ từ nơi này sang nơi khác, v.v. Ví dụ: vệ tinh GPS di chuyển trên các quỹ đạo đã biết và bạn có thể sử dụng để loại bỏ mức độ tự do khi giải quyết. Vì vậy, trên bề mặt tôi không thấy bất kỳ vấn đề nào với công cụ ping một chiều, miễn là nó hoặc đồng hồ mà nó đang dựa vào đang khai thác một số thông tin đại học ngọt ngào đó.
Craig Gidney 20/03/2015

Oh trong trường hợp đó, bạn có thể cập nhật câu trả lời của bạn với những công việc có thể xảy ra không?
CMCDragonkai

@CMCDragonkai Có chúng trong các ý kiến ​​là đủ. Chúng vượt quá phạm vi của câu đố.
Craig Gidney

Độ trễ một chiều không thành vấn đề, ví dụ như đối với mạng trò chơi. Ngoài ra, mọi người đều nói không thể, nhưng tôi có thể dễ dàng giải câu đố trên giấy - một khi bạn đồng bộ hóa đồng hồ, tất cả những gì bạn làm là đo độ trễ từ A đến B bằng cách gửi thời gian của A đến B, với độ trễ A-> B bằng B's time - A's sent timevà B-> A bằng vớilatency - A->B delay
Llamageddon

1

Tôi nghĩ rằng không thể tìm ra độ trễ một chiều chỉ bằng cách so sánh đồng hồ bấm giờ.

ABCA1
BCB1=1
ACA2=9
BCB2=5
AB

Có lẽ nếu bạn làm cho nó một câu hỏi tiền thưởng ai đó sẽ crack nó. Cho đến lúc đó, danh tiếng.


0

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ễ:

Những giây đầu tiên của Mô phỏng

Các giây tiếp theo của Mô phỏng

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!


3
Tôi không nghĩ rằng nó hoạt động. Vì băng thông là như nhau, điểm khác biệt duy nhất mà A và B thấy là, nếu chúng bắt đầu cùng lúc, B sẽ đợi 3 giây trước khi nhận bất kỳ dữ liệu nào và A sẽ đợi 1 giây. Nhưng họ không có đồng hồ dùng chung nên họ không biết rằng họ đã bắt đầu cùng một lúc. Có lẽ A không nghe thấy gì trong 10 giây vì anh ấy bắt đầu chạy giao thức trước.
David Richerby

Không có yêu cầu để bắt đầu cùng một lúc bất cứ ai cũng có thể bắt đầu bất cứ lúc nào. Họ chỉ cần chạy cả hai thời gian. Tôi đánh giá cao bạn dành thời gian để xem xét nhưng xin vui lòng đọc lại. Đây là phương pháp thống kê và liên quan đến sự hội tụ. Tôi không nói tôi 100% là hoàn toàn chính xác vì tôi không mô phỏng mà chỉ là nhận xét bạn đưa ra không thực sự áp dụng theo ý kiến ​​của tôi. Có lẽ điều này giải thích ý tưởng tổng quát hơn: nếu bạn chấp nhận rằng băng thông * sản phẩm chậm trễ là khác nhau đối với hai liên kết sau đó một liên kết sẽ trên thực tế chứa nhiều gói - và có thể được cảm nhận bởi algo trên ...
user3134164

Tôi không nghĩ rằng tôi đã hiểu lầm nhưng nó có thể. Bạn có đồng ý rằng băng thông là như nhau nên cả A và B đều nhận được dữ liệu với cùng tốc độ không? Nếu vậy, cả hai sẽ không hội tụ cùng một thứ?
David Richerby

Vâng tất nhiên họ nhận được ở cùng một tỷ lệ, điều đó không có nghĩa là họ hội tụ cùng một điều. Có các gói A và B trong mạng, câu hỏi đặt ra là tỷ lệ giữa các gói A và B được nhìn thấy là bao nhiêu. Tôi đã chạy một số mô phỏng đơn giản bây giờ và tôi luôn nhận được sự thiên vị. Để có được một ý tưởng vì tôi đoán tôi không thể đăng toàn bộ điều ở đây giả sử b là sao cho 1 gói mất một giây truyền. Sau đó, luôn có 4 gói quá cảnh. Áp dụng thuật toán và sự bùng nổ, chúng tôi đã quản lý để đo OTT bằng cách tránh các phương thức đồng hồ / sự kiện được đồng bộ hóa không hoạt động với các phương pháp hội tụ thống kê!
dùng3134164

Tỷ lệ các gói của A so với Bọ là gì?
Gilles 'SO- ngừng trở nên xấu xa'

0

Đây là câu trả lời cho @ user3134164 nhưng quá lớn cho một nhận xét.

PxxRxx

  • R1= =(1-R2)×(1-P2)R2= =(1-R1)×(1-P1). Ý tưởng là nếu một robot nhận được một trong các gói của chính nó, điều đó có nghĩa là robot kia đã nhận được nó thay vì một trong các gói của chính nó (do đó1-R2) và rằng nó vẫn chọn gửi nó thay vì một trong số đó (do đó sản phẩm của 1-P2).
  • Điều này đưa ra một hệ thống gồm hai phương trình với hai ẩn số, R1R2. Bạn có thể muốn giải quyết nó, nhưng nó không thực sự quan trọng. Trong thực tế, các tỷ lệ bạn đang tìm kiếm tương ứngR11-R1R21-R2. Như bạn có thể nhận thấy, các thuật ngữ duy nhất xuất hiện trong các biểu thức đó là xác suất mà mỗi robot chọn gói riêng của chúng so với các cụm từ khác. Độ trễ thậm chí không xuất hiện trong công thức đơn giản vì cả hai robot đều bơm ra các gói liên tục, vì vậy cả hai đều liên tục nhận được các gói. Họ thực sự sẽ nhận được các tỷ lệ khác nhau của các gói, nhưng nó sẽ chỉ phụ thuộc vào các xác suất đã nói ở trên.

Đây là lý do tại sao tôi tin rằng điều này sẽ dẫn bạn đến đâu. Xin vui lòng chỉ ra bất kỳ sai lầm tôi có thể đã làm trong lý do này.


Chào mừng bạn đến với Khoa học máy tính ! Câu trả lời của bạn có vẻ hay nhưng như bạn nêu, thực sự là bình luận chuyên sâu về nhận xét của @ user3134164. Tôi nghĩ bạn có thể giải quyết vấn đề này theo các cách sau 1) Cố gắng mở rộng câu trả lời của bạn sao cho đây cũng là câu trả lời cho câu hỏi thực tế. hoặc 2) Tạo một câu hỏi mới về cơ bản nêu quan niệm sai lầm chính từ nhận xét và tự trả lời của người dùng3134164 với câu trả lời tương tự như thế này. Cái nào phù hợp là tùy bạn. Tôi nghĩ có lẽ làm một câu hỏi mới là một ý tưởng tốt, nhưng có lẽ bạn có thể mở rộng hơn tôi nghĩ. Đừng hỏi nếu bạn có bất kỳ câu hỏi nào.
Thằn lằn rời rạc

Tất nhiên, @ user3134164 cũng được tự do 'quảng bá' nhận xét thành một câu hỏi,
Thằn lằn rời rạc

"Px xác suất robot x chọn các gói của chính nó khi nhận được một trong các gói của robot khác" xuất phát từ hàm ngẫu nhiên () của máy tính như trong giả định - ví dụ: đối với hai loại gói sẽ luôn là 0,5. Nếu hàm ngẫu nhiên () đủ đồng nhất thì có thể tính "tỷ lệ trễ RTT thực tế của A đến B". Theo định nghĩa R của bạn, tôi nghĩ rằng R1 = (1-R2) * 0,5 nên tỷ lệ được biết đến. Vì vậy, tôi vẫn tin rằng câu trả lời của tôi hoạt động tốt. Cảm ơn bạn rất nhiều vì đã dành thời gian để xem xét nó.
dùng3134164
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.