Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Omówienie NET_RING
NET_RING to bufor cykliczny danych sieciowych, który jest współużytkowany między serwerem NetAdapterCx i sterownikiem klienta. Każda kolejka pakietów w sterowniku klienta ma dwa pierścienie: pierścień pakietów dla deskryptorów pakietów podstawowych i pierścień fragmentu dla deskryptorów fragmentów każdego pakietu.
Aby uzyskać więcej informacji na temat deskryptorów pakietów, zobacz Deskryptory pakietów i rozszerzenia.
Każdy deskryptor rdzenia w pierścieniu pakietów zawiera indeksy do pierścienia fragmentów w celu zlokalizowania deskryptorów fragmentów pakietu. Inna struktura danych, NET_RING_COLLECTION, grupuje pierścień pakietów i pierścień fragmentu dla danej kolejki pakietów, jak pokazano na poniższym diagramie.
Każda kolejka pakietów ma własną strukturę NET_RING_COLLECTION , a w związku z tym własny pierścień pakietów, pierścień fragmentów i deskryptory w tych pierścieniach. W związku z tym operacja transferu danych sieciowych każdej kolejki pakietów jest całkowicie niezależna. Aby dowiedzieć się więcej na temat kolejek pakietów, zobacz Przesyłanie i odbieranie kolejek.
własność elementu NET_RING
Każdy element w NET_RING jest własnością sterownika klienta lub NetAdapterCx. Własność jest kontrolowana przez trzy indeksy, które oznaczają sekcje NET_RING. Te indeksy zostały opisane w poniższej tabeli. Czynność przenoszenia tych indeksów jest opisana przez semantyki post i drain.
| nazwa indeksu NET_RING | Opis | Wymagane do przesyłania danych sieciowych | Zmodyfikowany przez |
|---|---|---|---|
| BeginIndex | Początek zakresu elementów w NET_RING, które są własnością sterownika klienta NIC. BeginIndex jest również początkiem podsekcji drainNET_RING. Gdy właściwość BeginIndex zostanie zwiększana, sterownik opróżnia elementy z pierścienia i przenosi własność ich do systemu operacyjnego. | Tak | Sterownik klienta karty sieciowej |
| NastępnyIndeks | Początek podsekcji postNET_RING. NextIndex dzieli sekcję pierścienia, której właścicielem jest sterownik klienta, na podsekcje "post" i "drain". Gdy NextIndex jest zwiększany, sterownik przekazuje bufory do sprzętu, a następnie przesyła je do sekcji opróżniania pierścienia. | Nie. | Sterownik klienta karty sieciowej |
| IndeksKońcowy | Koniec zakresu elementów w NET_RING, które należą do sterownika klienta karty sieciowej. Sterowniki klienta posiadają elementy aż do EndIndex - 1 włącznie. | Tak | NetAdapterCx |
Manipulowanie tymi indeksami podczas wywołania zwrotnego EvtPacketQueueAdvance kolejki pakietów polega na tym, jak sterowniki klienta przesyłają dane sieciowe między systemem a sprzętem karty interfejsu sieciowego.
Sterowniki klienta posiadają każdy element od BeginIndex do EndIndex — 1 włącznie. Jeśli na przykład właściwość BeginIndex to 2, a właściwość EndIndex to 5, sterownik klienta jest właścicielem trzech elementów: elementów z wartościami indeksu 2, 3 i 4.
Jeśli BeginIndex jest równy EndIndex, sterownik klienta nie posiada żadnych elementów.
NetAdapterCx publikuje elementy w buforze pierścienia przez zwiększanie indeksu EndIndex. Sterownik klienta opróżnia bufory i zwraca własność elementów, zwiększając BeginIndex.
NextIndex jest opcjonalny dla sterowników klienta do użycia i zapewnia wygodę przy rozdzielaniu podsekcji publikowania i opróżniania w sekcji sterownika klienta pierścienia.
Elementy z wartościami indeksu między NextIndex i EndIndex — 1 włącznie są własnością klienta, ale nie zostały jeszcze opublikowane na sprzęcie. Jeśli NextIndex jest równy BeginIndex, sterownik klienta nie ma żadnych ukończonych buforów do przeniesienia do systemu operacyjnego. Jeśli NextIndex jest równe EndIndex, sterownik klienta nie ma żadnych buforów do wysłania do sprzętu.
Ponieważ pierścień sieci jest okrągły, w końcu wartości indeksu owijają się wokół końca buforu i wracają do początku. NetAdapterCx automatycznie obsługuje zawijanie wartości indeksu wokół pierścienia, gdy sterownik klienta wywołuje odpowiednią metodę.
Aby uzyskać szczegółowe informacje na temat zarządzania elementami w pierścieniach sieciowych, zobacz Zarządzanie elementami pierścienia sieciowego.
Wysyłanie i odbieranie danych sieciowych za pomocą pierścieni sieciowych
Zobacz następujące tematy, aby uzyskać więcej informacji i przykładów kodu dotyczących wysyłania i odbierania danych sieciowych w pierścieniach sieciowych.
Wysyłanie danych sieciowych za pomocą pierścieni sieciowych
Odbieranie danych sieciowych za pomocą pierścieni sieciowych