Partager via


Présentation des anneaux réseau

Vue d’ensemble de NET_RING

Un NET_RING est une mémoire tampon circulaire de données réseau partagée entre NetAdapterCx et un pilote client. Chaque file d’attente de paquets dans un pilote client présente 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 en savoir plus sur les descripteurs de paquets, consultez Descripteurs et extensions de paquets.

Chaque descripteur central de l’anneau de paquets possède 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 indiqué dans le schéma suivant.

Schéma montrant la disposition en plusieurs 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, donc, son propre anneau de paquets, son propre 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 Transmission et réception des files d’attente.

Propriété de l’élément NET_RING

Chaque élément d’un NET_RING est la propriété du pilote client ou de NetAdapterCx. La propriété est contrôlée par trois index, qui marquent les sections du NET_RING. Ces index sont décrits dans le tableau suivant. L’action de déplacer ces index est décrite par les sémantiques publier et vider.

Nom de l’index NET_RING Description Nécessaire pour transférer des données réseau Modifié(e) par
BeginIndex Début de la plage d’éléments dans le NET_RING que le pilote client NIC possède. BeginIndex est également le début de la sous-section vidage du NET_RING. Lorsque BeginIndex est incrémenté, le pilote vide les éléments de l’anneau et transfère la propriété de ces éléments au système d’exploitation. Oui Pilote client NIC
NextIndex Début de la sous-section publier du NET_RING. NextIndex divise la section de l’anneau propriété du pilote client dans les sous-sections publier et vider. 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 de drainage de l’anneau. Non Pilote client NIC
EndIndex Fin de la plage d’éléments dans le NET_RING que le pilote client NIC 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 les données réseau entre le système et le matériel de la carte d’interface réseau (NIC).

Les pilotes clients possèdent chaque élément de BeginIndex à EndIndex - 1 inclus. Par exemple, si BeginIndex est 2 et EndIndex est 5, le pilote client possède trois éléments : les éléments dont les valeurs d’index sont 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 de l’anneau en incrémentant EndIndex. Un pilote client vide les mémoires tampons et renvoie la propriété des éléments en faisant avancer BeginIndex.

NextIndex est facultatif pour les pilotes clients, et est fourni pour séparer les sous-sections publier et vider de la section de l’anneau du pilote client.

Les éléments avec des valeurs d’index entre NextIndex et EndIndex - 1 inclus sont propriété du 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émoires tampons terminées à transférer vers le système d’exploitation. Si NextIndex est égal à EndIndex, le pilote client n’a aucune mémoire tampon à publier sur le matériel.

L’anneau de réseau étant circulaire, les valeurs d’index finissent par s’encapsuler autour de la fin de la mémoire tampon et reviennent au début. NetAdapterCx gère automatiquement l’encapsulage des valeurs de l’index autour de l’anneau lorsque le pilote client appelle la méthode appropriée.

Pour en savoir plus sur la gestion des éléments dans les anneaux de réseau, consultez Gestion des éléments d’un anneau de réseau.

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

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

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

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