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?
źródło
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ę:
I dalej:
źródło
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.
źródło
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.
źródło