Présentation des anneaux nets

NET_RING vue d’ensemble

Une NET_RING est une mémoire tampon circulaire de données réseau partagées entre NetAdapterCx et un pilote client. Chaque file d’attente de paquets dans un pilote client a deux anneaux : un anneau de paquets pour les descripteurs de paquets principaux et un anneau de fragments pour les descripteurs de fragments de chaque paquet.

Pour plus d’informations sur les descripteurs de paquets, consultez Descripteurs de paquets et extensions.

Chaque descripteur principal dans l’anneau de paquets a des index dans l’anneau de fragments pour localiser les descripteurs de fragments de ce paquet. Une autre structure de données, la NET_RING_COLLECTION, regroupe l’anneau de paquets et l’anneau de fragments pour une file d’attente de paquets donnée, comme illustré dans le diagramme suivant.

Diagramme montrant la disposition multi-anneaux d’une structure NET_RING_COLLECTION, y compris un anneau de paquets et un anneau de fragments.

Chaque file d’attente de paquets a sa propre structure NET_RING_COLLECTION et, par conséquent, son propre anneau de paquets, son anneau de fragments et ses propres descripteurs dans ces anneaux. Par conséquent, l’opération de transfert de données réseau de chaque file d’attente de paquets est complètement indépendante. Pour en savoir plus sur les files d’attente de paquets, consultez Transmettre et recevoir des files d’attente.

NET_RING propriété de l’élément

Chaque élément d’un NET_RING appartient au pilote client ou à NetAdapterCx. La propriété est contrôlée par trois index, qui marquent des sections du NET_RING. Ces index sont décrits dans le tableau suivant. L’acte de déplacement de ces index est décrit par la sémantique post et drain .

nom de l’index NET_RING Description Requis pour le transfert de données réseau Modifié par
BeginIndex Début de la plage d’éléments dans le NET_RING que le pilote client de la carte réseau possède. BeginIndex est également le début de la sous-section drain du NET_RING. Lorsque BeginIndex est incrémenté, le pilote vide les éléments de l’anneau et les transfère au système d’exploitation. Oui Pilote client de carte réseau
NextIndex Début de la sous-section post du NET_RING. NextIndex divise la section de l’anneau que le pilote client possède en sous-sections post et drain. Lorsque NextIndex est incrémenté, le pilote publie les mémoires tampons sur le matériel et transfère les mémoires tampons à la section drain de l’anneau. Non Pilote client de carte réseau
EndIndex Fin de la plage d’éléments dans le NET_RING que le pilote client de la carte réseau possède. Les pilotes clients possèdent des éléments jusqu’à EndIndex - 1 inclus. Oui NetAdapterCx

La manipulation de ces index pendant le rappel EvtPacketQueueAdvance d’une file d’attente de paquets est la façon dont les pilotes clients transfèrent des données réseau entre le système et le matériel d’interface réseau carte (NIC).

Les pilotes clients possèdent chaque élément de BeginIndex à EndIndex - 1 inclus. Par exemple, si BeginIndex a la valeur 2 et EndIndex est 5, le pilote client possède trois éléments : les éléments avec les valeurs d’index 2, 3 et 4.

Si BeginIndex est égal à EndIndex, le pilote client ne possède aucun élément.

NetAdapterCx publie des éléments dans la mémoire tampon en anneau en incrémentant EndIndex. Un pilote client vide les mémoires tampons et retourne la propriété des éléments en avançant BeginIndex.

NextIndex est facultatif pour l’utilisation des pilotes clients et est fourni pour faciliter la séparation des sous-sections post et drain de la section du pilote client de l’anneau.

Les éléments avec des valeurs d’index comprises entre NextIndex et EndIndex - 1 inclus appartiennent au client, mais n’ont pas encore été publiés sur le matériel. Si NextIndex est égal à BeginIndex, le pilote client n’a pas de mémoire tampons terminées à transférer vers le système d’exploitation. Si NextIndex est égal à EndIndex, le pilote client ne dispose d’aucune mémoire tampon à publier sur le matériel.

Étant donné que l’anneau net est circulaire, les valeurs d’index s’encapsulent à la fin de la mémoire tampon et reviennent au début. NetAdapterCx gère automatiquement l’encapsulation des valeurs d’index autour de l’anneau lorsque le pilote client appelle la méthode appropriée.

Pour plus d’informations sur la gestion des éléments dans les anneaux nets, consultez Gestion des éléments d’anneau net.

Envoi et réception de données réseau avec des anneaux nets

Consultez les rubriques suivantes pour plus d’informations et des exemples de code sur l’envoi et la réception de données réseau dans des anneaux nets.

Envoi de données réseau avec des anneaux nets

Réception de données réseau avec des anneaux nets