Wysoki współczynnik kolizji w sieciach 100 Mb

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 315237 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Wersja tego artykułu dla systemu Microsoft Windows 2000: 169789.

WAŻNE: Ten artykuł zawiera informacje na temat modyfikowania rejestru. Przed zmodyfikowaniem rejestru utwórz jego kopię zapasową i upewnij się, że wiesz, jak przywrócić rejestr w przypadku pojawienia się problemu. Aby uzyskać informacje dotyczące wykonywania kopii zapasowej, przywracania i edytowania rejestru, kliknij następujący numer artykułu z bazy wiedzy Microsoft Knowledge Base:
256986 Opis Rejestru systemu Microsoft Windows
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Jeśli używany jest protokół TCP/IP i 100-megabitowa (Mb) karta sieciowa, można zaobserwować spowolnienie działania sieci podczas kopiowania plików. Spowolnienie działania można również odczuć podczas korzystania z Eksploratora Windows w systemie Windows XP.

Należy zauważyć, że chociaż wiadomo o występowaniu spowolnienia działania w przypadku kilku kart sieciowych 100 Mb, problem ten nie jest charakterystyczny dla systemu Windows.

Przyczyna

Problem ten jest spowodowany wysokim współczynnikiem wczesnych kolizji w sieci. Odstęp między ramkami (czas oczekiwania stacji roboczej przed przystąpieniem do transmisji przewodowej) jest mniejszy niż 9,6 mikrosekundy określone w specyfikacji IEEE 802.3.

Rozwiązanie

OSTRZEŻENIE: Nieprawidłowe korzystanie z Edytora Rejestru może stać się przyczyną poważnych problemów, które spowodują, że konieczna będzie ponowna instalacja systemu operacyjnego. Firma Microsoft nie może zagwarantować, że rozwiązanie problemów spowodowanych niepoprawnym użyciem Edytora Rejestru będzie możliwe. Możesz używać Edytora Rejestru na własną odpowiedzialność.

W celu rozwiązania tego problemu należy skontaktować się z producentem karty sieciowej, aby uzyskać informacje na temat zwiększania odstępu między ramkami.

W przypadku kart sieciowych EtherExpress 100B firmy Intel istnieje parametr rejestru sterujący długością odstępu między ramkami. Aby zmodyfikować ten parametr dla karty sieciowej Intel EtherExpress 100B, należy wykonać następujące czynności:
  1. Uruchom Edytor Rejestru (Regedit.exe).
  2. Zlokalizuj w Rejestrze następujący klucz, gdzie x oznacza numer karty sieciowej:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\e100bxParameters
  3. Kliknij menu Edycja, kliknij polecenie Dodaj wartość, a następnie wpisz następujące informacje:
    Nazwa wartości: Adaptive_ifs
    Typ wartości: REG_DWORD
    Dane: 1 (włącz algorytm adaptacyjny)
    Algorytm adaptacyjny, umożliwiający wykrywanie kolizji i dostrajanie odstępu między ramkami, jest domyślnie włączony. Ustawienie danych wartości na 0 powoduje wyłączenie algorytmu adaptacyjnego. Wartość między 2 a 200 powoduje ustawienie wstępnie zdefiniowanego odstępu między ramkami. Ustawianie wartości należy rozpocząć od 20, a następnie zwiększać tę wartość o 20. Należy zmierzyć liczbę kolizji i zwrócić uwagę na wydajność, a następnie ustawić ostateczną wartość, która zapewnia niski współczynnik kolizji i nie wpływa na wydajność.

OBEJŚCIE

W celu obejścia tego problemu można utworzyć parametr rejestru TcpWindowSize, który powoduje oczekiwanie nadawcy na otrzymanie potwierdzenia (polecenie ACK) od odbiorcy przed wysłaniem kolejnych danych. Wprowadzenie tej zmiany ogranicza możliwości wystąpienia kolizji. Wykonaj następujące kroki:
  1. Uruchom Edytor Rejestru (Regedit.exe).
  2. Zlokalizuj w rejestrze następujący klucz:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. Kliknij menu Dodaj, kliknij polecenie Wartość, a następnie dodaj następujące informacje:
    Nazwa wartości: Adaptive_ifs
    Typ wartości: REG_DWORD
    Dane: 2920 (dziesiętne) - Liczba bajtów
    W przypadku sieci Ethernet ustaw wartość na Dziesiętne 2920, natomiast w przypadku innych topologii sieci ustaw wartość dwukrotnie większą od maksymalnego rozmiaru danych TCP. Jednak ustawienie to nie wymaga modyfikacji w przypadku innych sieci, ponieważ w odróżnieniu od sieci Ethernet w sieciach zbudowanych w topologiach Token Ring lub Fiber Distributed Data Interface (FDDI) nie występują kolizje.

    Należy zauważyć, że modyfikowanie tego parametru może wyraźnie wpłynąć na wydajność. Na ogół w sieci WAN lub w zwykłej sieci 10 Mb występuje pewien czas oczekiwania między nadawcą i odbiorcą uzależniony od topologii sieci. Dlatego nie istnieje możliwość występowania kolizji spowodowanych potwierdzeniem TCP/IP (polecenie ACK). Dostrajanie parametru TcpWindowSize powoduje w tym przypadku jedynie zmniejszenie przepustowości.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "Informacje zawarte w tym artykule dotyczą".

Więcej informacji

„Kolizja” występuje wtedy, gdy dwie stacje nadają jednocześnie. „Wczesna kolizja” to każda kolizja występująca przed przesłaniem w sieci 512 bitów ramki. Wczesne kolizje mogą regularnie występować w normalnie działającej sieci Ethernet. Nie oznacza to awarii sprzętu ani nieprawidłowego działania stacji.

W specyfikacji IEEE 802.3 określono, że przed przystąpieniem do transmisji w sieci stacja musi odczekać 9,6 mikrosekundy (odstęp między ramkami). W celu uzyskania większego współczynnika transferu danych kilku producentów zaprojektowało karty o mniejszym odstępie między ramkami. Ten mniejszy odstęp między ramkami może prowadzić do zwiększenia współczynnika kolizji.

Na możliwość występowania kolizji ma również wpływ działanie protokołu górnej warstwy. W specyfikacji TCP/IP dla każdej odebranej ramki danych wysyłane jest polecenie ACK (potwierdzenie). Oznacza to, że po odebraniu dwóch ramek danych host TCP wysyła do nadawcy polecenie ACK. Możliwość wystąpienia kolizji jest wysoka, jeśli klient, który otrzymał dwa pakiety próbuje wysłać polecenie ACK, gdy nadawca próbuje wysłać do niego więcej danych.

Analiza kopiowania plików w Eksploratorze Windows w systemie Windows XP

W przypadku zainicjowania tego samego procesu kopiowania plików przy użyciu wiersza polecenia lub Eksploratora Windows w systemie Windows XP wzorzec transferu danych jest inny. W tym przypadku readresator wysyła 60-kilobajtowy (KB) „odczyt zbiorczy” lub „odczyt bez przetwarzania”. Poniżej pokazano wzorzec transferu danych:
   10 CLIENT SERVER  SMB C read & X, FID = 0x1004, Read 0xf000
   11 SERVER CLIENT  SMB R read & X, Read 0xf000
   12 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   13 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   14 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   15 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   16 CLIENT SERVER  TCP .A...., len: 0, seq:404791-404791, ack
   17 CLIENT SERVER  TCP .A...., len: 0, seq:404791-404791, ack
   18 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   19 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
   20 SERVER CLIENT  NBT SS: Session Message Cont., 1460 Bytes
				
Na poziomie TCP:
   10 CLIENT SERVER  TCP len:   64, seq:  404727-404790,  ack:   6992081
   >Klient wysyła 64 bajty danych (polecenie SMB do odczytu 4 KB);

   11 SERVER CLIENT  TCP len: 1460, seq: 6992081-6993540, ack:    404791
   >Serwer wysyła potwierdzenie i odpowiedź SMB zawierającą część danych;

   12 SERVER CLIENT  TCP len: 1460, seq: 6993541-6995000, ack:    404791
   13 SERVER CLIENT  TCP len: 1460, seq: 6995001-6996460, ack:    404791
   >Serwer wysyła pozostałe dane do klienta.

   >**W tym miejscu prawdopodobna jest kolizja, ponieważ klient próbuje wysłać potwierdzenie.

   14 SERVER CLIENT  TCP len: 1460, seq: 6996461-6997920, ack:    404791
   15 SERVER CLIENT  TCP len: 1460, seq: 6997921-6999380, ack:    404791
   >Ale serwer może uzyskać dostęp do przewodu i wysłać więcej danych.

   16 CLIENT SERVER  TCP len:    0, seq:  404791-404791,  ack:   6996461
   >Klient może uzyskać dostęp do przewodu i wysłać potwierdzenie dla danych w ramkach 12 i 13.

   17 CLIENT SERVER  TCP len:    0, seq:  404791-404791,  ack:   6999381
   >Klient może uzyskać dostęp do przewodu i wysłać potwierdzenie dla danych w ramkach 14 i 15.

   18 SERVER CLIENT  TCP len: 1460, seq: 6999381-7000840, ack:    404791
   19 SERVER CLIENT  TCP len: 1460, seq: 7000841-7002300, ack:    404791
   >Serwer kontynuuje wysyłanie danych.

   >**W tym miejscu prawdopodobna jest kolizja, ponieważ klient próbuje wysłać potwierdzenie.

   20 SERVER CLIENT  TCP len: 1460, seq: 7002301-7003760, ack: 404791
   >Ale serwer może uzyskać dostęp do przewodu i wysłać więcej danych.
				
W przypadku korzystania z protokołu TCP/IP potwierdzenie TCP (polecenie ACK) wpływa na kolizję. Jednak problem nie jest spowodowany przez protokół TCP/IP ani przez rozszerzenie umożliwiające Eksploratorowi Windows realizację 60 KB odczytów zbiorczych. Problem można również zilustrować na przykładzie protokołu FTP. Protokół TCP/IP, readresator i Eksplorator Windows nie mają absolutnie żadnej kontroli nad odstępem między ramkami. Odstęp między ramkami sterowany jest w warstwie fizycznej, która jest kontrolowana przez mikroukład na karcie. Jeśli w sieci występuje wysoki współczynnik kolizji, należy skontaktować się z dostawcą karty sieciowej.

Dodatkowe informacje na temat protokołu TCP/IP można znaleźć w dokumentacji zatytułowanej „TCP/IP Implementation Details”, która jest dostępna w następującej anonimowej witrynie FTP firmy Microsoft:
ftp://ftp.microsoft.com/bussys/winnt/winnt-docs/papers/
Dokumentacja znajduje się w pliku o nazwie Tcpipimp2.doc.

Właściwości

Numer ID artykułu: 315237 - Ostatnia weryfikacja: 1 grudnia 2007 - Weryfikacja: 6.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional x64 Edition
Słowa kluczowe: 
kbtshoot kbnetwork kbprb KB315237

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com