Niezgodność dupleksu
W połączeniu Ethernet niedopasowanie dupleksowe to sytuacja, w której dwa podłączone urządzenia działają w różnych trybach dupleksu , to znaczy jedno działa w trybie półdupleksu, a drugie w trybie pełnego dupleksu. Efektem niedopasowania dupleksu jest łącze, które działa nieefektywnie. Niezgodność dupleksu może być spowodowana ręcznym ustawieniem dwóch podłączonych interfejsów sieciowych w różnych trybach dupleksu lub podłączeniem urządzenia wykonującego automatyczną negocjację do urządzenia, które jest ręcznie ustawione w tryb pełnego dupleksu.
Niezgodność dupleksu z powodu automatycznej negocjacji
Gdy urządzenie ustawione na automatyczną negocjację jest podłączone do urządzenia, które nie korzysta z automatycznej negocjacji, proces automatycznej negocjacji kończy się niepowodzeniem. Koniec połączenia z autonegocjacją nadal jest w stanie poprawnie wykryć prędkość drugiego końca, ale nie może poprawnie wykryć trybu dupleksu. Aby zapewnić kompatybilność wsteczną z koncentratorami Ethernet , standard wymaga, aby w takich warunkach urządzenie z automatyczną negocjacją korzystało z trybu półdupleksowego. W związku z tym koniec połączenia z automatyczną negocjacją używa półdupleksu, podczas gdy nienegocjujący węzeł równorzędny jest zablokowany w trybie pełnego dupleksu i jest to niedopasowanie dupleksu.
Standardy Ethernet i główni producenci sprzętu Ethernet zalecają włączenie automatycznej negocjacji. Niemniej jednak sprzęt sieciowy umożliwia wyłączenie automatycznej negocjacji, aw niektórych sieciach automatyczna negocjacja jest wyłączona na wszystkich portach i używana jest stała modalność 100 Mbit/s oraz pełny dupleks. Administratorzy sieci często robili to celowo po wprowadzeniu automatycznej negocjacji, ze względu na problemy z interoperacyjnością z początkową specyfikacją automatycznej negocjacji. Stały tryb działania działa dobrze, jeśli oba końce połączenia są zablokowane na tych samych ustawieniach. Utrzymanie takiej sieci i zagwarantowanie spójności jest jednak trudne. Ponieważ automatyczna negocjacja jest na ogół domyślnym ustawieniem producenta, jest prawie pewne, że w środowisku, w którym zasady mają mieć ustalone ustawienia portów, ktoś prędzej czy później omyłkowo opuści port ustawiony do korzystania z automatycznej negocjacji.
Skutki niedopasowania dupleksu
Komunikacja jest możliwa przez połączenie pomimo niezgodności dupleksu. Pojedyncze pakiety są wysyłane i potwierdzane bez problemów. W rezultacie proste ping nie wykrywa niezgodności dupleksu, ponieważ pojedyncze pakiety i wynikające z nich potwierdzenia w odstępach 1-sekundowych nie powodują żadnych problemów w sieci. Sesja terminala, która wysyła dane powoli (w bardzo krótkich seriach), może również pomyślnie się komunikować. Jednak gdy tylko którykolwiek koniec połączenia spróbuje wysłać znaczną ilość danych, sieć nagle zwalnia do bardzo niskiej prędkości. Ponieważ sieć działa inaczej, przyczyna nie jest tak oczywista.
Niezgodność dupleksu powoduje problemy, gdy oba końce połączenia próbują przesłać dane w tym samym czasie. Dzieje się tak nawet wtedy, gdy kanał jest używany (z perspektywy wysokiego poziomu lub użytkownika) tylko w jednym kierunku, w przypadku dużych transferów danych. Rzeczywiście, gdy duży transfer danych jest wysyłany przez TCP , dane są wysyłane w wielu pakietach, z których niektóre wyzwalają pakiet potwierdzenia z powrotem do nadawcy. Powoduje to, że pakiety są wysyłane w obu kierunkach w tym samym czasie.
W takich warunkach pełnodupleksowy koniec połączenia wysyła swoje pakiety podczas odbierania innych pakietów; to jest dokładnie punkt połączenia w trybie pełnego dupleksu. Tymczasem koniec półdupleksowy nie może zaakceptować przychodzących danych podczas ich wysyłania – wyczuje to jako kolizję . Urządzenie półdupleksowe wstrzymuje bieżącą transmisję danych, zamiast tego wysyła sygnał zacięcia, a następnie ponawia próbę później, zgodnie z CSMA/CD . Powoduje to, że strona pełnego dupleksu odbiera niekompletną ramkę z błędem CRC lub ramkę niekompletną . Nie wykrywa żadnych kolizji, ponieważ CSMA/CD jest wyłączone po stronie pełnego dupleksu. W rezultacie, gdy oba urządzenia próbują nadawać (prawie) w tym samym czasie, pakiet wysłany przez koniec pełnego dupleksu zostanie odrzucony i utracony z powodu zakładanej kolizji, a pakiet wysłany przez urządzenie półdupleksowe będzie opóźniony lub utracone z powodu błędu CRC w ramce.
Utracone pakiety zmuszają protokół TCP do wykonania naprawy po błędzie, ale początkowe (usprawnione) próby odzyskiwania kończą się niepowodzeniem, ponieważ retransmitowane pakiety są tracone dokładnie w taki sam sposób, jak oryginalne pakiety. W końcu okno transmisji TCP zapełnia się i protokół TCP odmawia transmisji dalszych danych do czasu potwierdzenia przesłanych wcześniej danych. To z kolei spowoduje wyciszenie nowego ruchu w połączeniu, pozostawiając jedynie retransmisje i potwierdzenia. Ponieważ zegar retransmisji stopniowo wydłuża się między próbami, w końcu nastąpi retransmisja, gdy w połączeniu nie będzie ruchu zwrotnego, a potwierdzenie zostanie ostatecznie odebrane. Spowoduje to ponowne uruchomienie ruchu TCP, co z kolei natychmiast spowoduje utratę pakietów po wznowieniu przesyłania strumieniowego.
Efektem końcowym jest połączenie, które działa, ale działa bardzo słabo z powodu niezgodności dupleksu. Symptomami niezgodności dupleksu są połączenia, które wydają się działać dobrze z ping , ale łatwo się „blokują” przy bardzo niskiej przepustowości podczas przesyłania danych; efektywna szybkość przesyłania danych będzie prawdopodobnie asymetryczna, osiągając znacznie gorsze wyniki w kierunku od półdupleksowego do pełnego dupleksu niż w drugim. W normalnych operacjach półdupleksowych późne kolizje nie występują. Jednak w przypadku niedopasowania dupleksowego kolizje obserwowane po stronie łącza półdupleksu są często późnymi kolizjami. Strona z pełnym dupleksem zwykle rejestruje sekwencji sprawdzania ramek lub ramki runt . Przeglądanie tych standardowych statystyk Ethernet może pomóc w zdiagnozowaniu problemu.
Wbrew temu, czego można by się rozsądnie spodziewać, obie strony połączenia muszą być identycznie skonfigurowane do prawidłowego działania. Innymi słowy, ustawienie jednej strony na automatyczną (prędkość lub dupleks lub obie strony) i ustawienie drugiej na stałą (prędkość lub dupleks lub obie strony) prawdopodobnie spowoduje niedopasowanie prędkości, niezgodność dupleksu lub jedno i drugie. Niezgodność dupleksu można naprawić, włączając automatyczną negocjację (jeśli jest dostępna i działa) na obu końcach lub wymuszając te same ustawienia na obu końcach (jeśli pozwala na to dostępność interfejsu konfiguracyjnego). Jeśli nie ma innej opcji niż zablokowanie ustawienia na jednym końcu i autonegocjacja na drugim (na przykład stare urządzenie z uszkodzonym autonegocjacją podłączone do niezarządzanego przełącznika), należy użyć półdupleksu. Wszystkie nowoczesne urządzenia LAN mają włączoną automatyczną negocjację, a różne problemy ze zgodnością zostały rozwiązane. Najlepszym sposobem na uniknięcie niezgodności dupleksu jest użycie automatycznej negocjacji i zastąpienie starego sprzętu, który nie korzysta z automatycznej negocjacji lub nie wykonuje automatycznej negocjacji poprawnie.