Jak często upuszczane są pakiety w komunikacji w centrum danych?

10

Powiedzmy, że mam 2 maszyny w tym samym centrum danych, ale niekoniecznie w tym samym stojaku.

Jak często byłyby upuszczane pakiety wysyłane przy użyciu UDP między tymi dwoma komputerami?

Pytam, przy założeniu, że skoro istnieje tylko kilka przełączników co najwyżej między maszynami, że pakiety nie będą spadła w ogóle .

Jak często przybywa pakiet poza kolejnością w tym samym centrum danych? Zakładam, że jest tylko jedna trasa przez 99,9% czasu, więc nie może się to zdarzyć.

Jednak za każdym razem, gdy przyłapuję się na myśleniu w kategoriach absolutnych, wiem, że czegoś mi brakuje!

Jakich podstawowych informacji potrzebuję, aby lepiej zrozumieć, kiedy należy spodziewać się porzuconych pakietów i jak często mogą być upuszczane i przychodzą nieczynne dla maszyn w tym samym centrum danych?

Ostatecznie staram się zdecydować, czy korzystać z multiemisji UDP lub PGM podczas komunikacji między różnymi instancjami Linode VPS zlokalizowanymi w tym samym centrum danych. Informacje muszą dotrzeć w odpowiedniej kolejności. Jasne, UDP nie brzmi więc świetnie!

Ale jeśli można oczekiwać prawie idealnej lub idealnej dostawy w tym samym centrum danych, to jest w porządku. Ale testuję to założenie.

Dzięki.

z8000
źródło

Odpowiedzi:

11

Nie można polegać na UDP w dostarczaniu pakietów w kolejności, ponieważ specyfikacja nie zapewnia tych gwarancji. Nawet przy założeniu najbardziej idealnej sytuacji, jednego kawałka kabla Ethernet między dwoma hostami, nadal jest kwestia systemu operacyjnego, stosu sieciowego, sterownika karty sieciowej i implementacji libc, przeciwko której piszesz.

Na każdym etapie tego łańcucha autorzy tego kodu wybierają NIE, aby priorytetowo traktować porządkowanie pakietów UDP, nawet jeśli przybywają w celu z prostego powodu, że nie muszą.

Jednym wymyślonym przykładem może być struktura danych, do której odczytywane są pakiety przychodzące, która może być buforem pierścieniowym. Pakiety przychodzące w kolejności będą umieszczane w buforze pierścieniowym, ale pisarz sterowników może łatwiej zrzucić je do górnych warstw kodu sieciowego w kolejności pamięci , a tym samym losowo uporządkować ich kolejność.

Biorąc pod uwagę twoją sytuację, maszyna wirtualna będzie działać na wspólnej infrastrukturze, która będzie uruchamiana dla wolumenu, a nie wydajności, wtedy prawdopodobieństwo przewidywania kolejności odebrania pakietów UDP będzie niskie.

Krótko mówiąc, jeśli specyfikacja mówi, że nie można polegać na zamówieniach pakietów UDP. Nie możesz na nim polegać i nie możesz próbować modyfikować środowiska, aby dać silniejszą gwarancję niż kiedykolwiek obiecano.

Dave Cheney
źródło
Tak myślałem, że powinienem myśleć. Dziękuję za dość dobre stwierdzenie!
z8000
1
Jeśli chcesz niezawodnej multiemisji, być może do przesyłania strumieniowego, spójrz na en.wikipedia.org/wiki/Real-time_Transport_Protocol
Dave Cheney
0

Jeśli ktoś jest zainteresowany eksperymentowaniem, skorzystaj z Wireshark. Jeśli ktoś naprawdę wierzy w naszą sprawę o powolną łączność lub upuszczone pakiety, po prostu dublujemy port na przełączniku, podłączmy laptopa z Wireshark i spójrzmy.

Sieci
źródło
FWIW w Linode instancja VPS nie może wejść w tryb rozwiązły.
z8000
Powinieneś być w stanie zainstalować Wireshark lokalnie na komputerze, aby przechwytywać przychodzące dane, lub po prostu dublować port na przełączniku i przechwytywać dane w ten sposób. Tworzenie kopii lustrzanych portów byłoby trudniejsze, jeśli wykonano by to w przypadku systemów wirtualnych, które mogą współdzielić kilka portów. Ale Wireshark może filtrować określone elementy, takie jak adresy IP i myślę, że nazwy hostów.
Wstążki
0

Prawie każdy przełącznik spowoduje zmianę kolejności dwóch pakietów w dowolnym momencie i jest uwzględniany przez wiele protokołów sieciowych, takich jak PGM.

Jedną rzeczą do rozważenia jest to, że większość centrów danych blokuje datagramy i blokuje multiemisję, aby uprościć i zmniejszyć obciążenie infrastruktury sieciowej.

Sam protokół IP / PGM musi być używany tylko wtedy, gdy masz włączony PGM Router Assist i rozpoznajesz elementy sieciowe między serwerem a klientami, w przeciwnym razie trzymaj się PGM zawartej w UDP i oszczędzaj na zarządzaniu uprawnieniami aplikacji.

Jeśli używasz warstwy przesyłania wiadomości, takiej jak ØMQ, możesz odroczyć wybór sieci nakładkowej IP / PGM, UDP / PGM lub TCP do wdrożenia i integracji.

Steve-o
źródło
-2

Napisałem prostą aplikację multiemisji .net, która może mierzyć upuszczone pakiety pod określonym ciśnieniem.

Możesz go pobrać tutaj: SimpleMulticastAnalyzer .

Cieszyć się.

Eran Betzalel
źródło