Co dzieje się, gdy 2 komputery przesyłają jednocześnie do 3 komputera w przełączniku pełnego dupleksu?

14

Rozważ następujący scenariusz:

Mam 2 komputery (PC1 i PC2), które chcą jednocześnie przesyłać dane do PC3 w przełączniku Ethernet z pełnym dupleksem. Rozważmy, że wszystkie porty są w tej samej sieci VLAN, więc co dzieje się wewnętrznie w przełączniku? Kto pierwszy przesyła na PC3?

Przeczytałem wcześniej, że użyto CSMA / CD , ale tylko we wcześniejszych wersjach Ethernet, które działały w trybie półdupleksu, a każdy port przełącznika był domeną kolizyjną i jeśli 2 maszyny próbowałyby jednocześnie transmitować, algorytm został wykonany, aby dać każdemu komputerowi losowy czas na przesłanie i rozwiązanie problemu kolizji. Jednak w przełączniku pełnego dupleksu czytam, że możliwość kolizji jest wyeliminowana, więc jeśli 2 komputery próbują jednocześnie nadawać, co dzieje się wewnętrznie w przełączniku? Czy przełącznik wykonuje algorytm, aby wybrać, kto przesyła jako pierwszy?

Juan Jose Polanco Arias
źródło

Odpowiedzi:

14

Przełącznik całkowicie załaduje przychodzące ramki danych z dwóch systemów wysyłających do swojego bufora (ów). Nie jestem pewien, w jaki sposób określa, która ramka będzie pierwsza w kolejce do dalszego przesyłania; ale prawdopodobnie opiera się na początkowym czasie odbioru początku ramki. Następnie przełącznik działa przez kolejkę bufora transmisji, wysyłając ramki jeden po drugim do docelowego portu / segmentu.

Nie ma problemu z ramkami „zbiegającymi się”. Prawdziwym problemem jest to, czy ostateczny port / segment może zaakceptować ramki wystarczająco szybko. (I oczywiście, czy przełącznik może przetworzyć swój bufor / kolejki wystarczająco szybko).

Craig Constantine
źródło
9
Tak, istnieje możliwość przełączania bez fragmentów. Stosowany głównie w środowiskach handlowych o wysokiej prędkości. Przecięcie rozpocznie transmisję, gdy tylko DST MAC będzie znany. Bez fragmentów upewnij się, że ramka nie jest fragmentem kolizyjnym, dlatego przed przesłaniem musi otrzymać 64 bajty.
Daniel Dib
2
Tak, myślę, że niektórzy nazwaliby to przekierowaniem, w przeciwieństwie do przechowywania i przekazywania. W podejściu przekrojowym przełącznik może rozpocząć przekazywanie, gdy tylko go otrzyma i przejrzy docelowy adres MAC, ale istnieją podejścia hybrydowe, w których czeka on nieco dłużej, np. Aby móc spojrzeć na adres IP w celu sprawdzenia wychodzącej listy ACL . (Pole Ethertype powiedziałoby, czy adres IP jest obecny w ramce).
Gerben
1
^^^ To. Właśnie dlatego NE skały.
Craig Constantine
4
Ponieważ nikt o tym nie wspominał, wadą przecinania jest dziwny przypadek błędu ramki. Mimo że wycięcie zmniejsza nieco opóźnienie na początkowej ramce (im większa ramka, tym bardziej to wpływa), przesuwa ramkę niezależnie od tego, czy ramka jest ważna, ponieważ robi to bez otrzymania pełnej ramki i możliwości sprawdzenia FCS . Przełączniki zapamiętywania i przesyłania otrzymają pełną klatkę i będą mogły sprawdzić FCS przed przekazaniem, co pozwoli im upuścić nieprawidłowe ramki.
YLearn
2
Większość przełączników jest dostępna tylko w sklepach i do przodu, kilka lat temu wróciły wycinanki, ponieważ łatwo sprzedać je w świecie finansowym. store-and-forward na 10G powoduje opóźnienie 1,2us, tj. 235m. Również wejście i wyjście nie może mieć różnej prędkości podczas przecinania.
ytti
6

Bardzo interesujące pytanie, które niestety nie ma jednej poprawnej odpowiedzi, ponieważ dokładne rozwiązanie różni się w zależności od sprzętu.

Jednak ten problem jest wyraźnie omówiony w Computer Networks - a Systems Apparoch na stronie 231-232.

Istotą rozwiązania dla projektu zwanego „Sunshine Switch” jest to, że masz wejście diagramu - batcher - trap - selektor == banyan === wyjścia i jest pole opóźniające, które łączy selektor z batcherem. I cytuję:

Gdy więcej niż 1 (red. Rozmiar banyana) pakietów jest przeznaczonych dla pojedynczego wyjścia w tym samym cyklu, są one ponownie wprowadzane do obiegu przez pole opóźnienia i ponownie przesyłane do przełącznika w następnym cyklu.

I dalej:

Sieć pułapek identyfikuje te pakiety, które będą mogły wyjść z przełącznika przez banyany (do 1 z nich na port wyjściowy) i oznaczy resztę do recyrkulacji.

iti
źródło
3

Zawsze będzie NIEKTÓRA różnica w tym, kiedy dwa komputery wyślą do trzeciego, chyba że zrobisz coś specjalnego na przełączniku, zostanie on przesłany na zasadzie FIFO, więc ta, która ramka pojawi się pierwsza, zostanie przesłana jako pierwsza.

David Rothera
źródło
1
Ponieważ PC [23] jest zasilany własnymi przewodami, nic nie stoi na przeszkodzie, aby rama dotarła dokładnie w tym samym czasie, z precyzją działania „momentu” (częstotliwości) HW. Wydaje mi się, że decyzja o tym, co powinien zrobić projektant ASIC w tym przypadku, ale sądzę, że odczytuje ramki portów w sposób okrągły.
ytti
2
Chodzi mi o to, że bardziej chciałem powiedzieć, że szanse na dotarcie dwóch klatek dokładnie w tym samym czasie były dość niskie. Jak wspomniałeś, prawdopodobnie będzie to wynikało z projektu ASIC i jestem pewien, że nie zostanie to nigdzie udokumentowane, chyba że przejdziesz przez serię kont z zespołem kont.
David Rothera
Ten, kto przerywa pierwsze wygrywa, zakładając, że wszystko inne jest równe.
generalnetworkerror
0

Przełącza do przodu jeden pakiet na raz, gdy wchodzą do przełącznika, więc nie ma kolizji. Następnie PC3 przetworzy pakiety z PC1 i PC2, dzieląc czas jego procesora. Okienkowanie i buforowanie będą kontrolować przepływ komunikacji.

Jon Rob
źródło