Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Multi-Queue-Technologie und RSS-Funktion von Netzwerkkarten

Detaillierte Einführung in die Multi-Queue-Technologie und RSS-Funktion von Netzwerkkarten

Y2J
Y2JOriginal
2017-04-25 09:23:416527Durchsuche

Multi-Queue-Netzwerkkarten sind eine Technologie, die ursprünglich zur Lösung von Netzwerk-IO-QoS-Problemen (Quality of Service) verwendet wurde. Später, als die Bandbreite von Netzwerk-IOs weiter zunahm, konnten Single-Core-CPUs die Anforderungen nicht vollständig erfüllen Durch die Unterstützung von Netzwerkkartentreibern mit mehreren Warteschlangen wird jede Warteschlange über Interrupts an verschiedene Kerne gebunden, um den Anforderungen der Netzwerkkarte gerecht zu werden.

Zu den gebräuchlichsten gehören Intels 82575, 82576, Boardcoms 57711 usw. Am Beispiel der Intel 82575-Netzwerkkarte, die üblicherweise in den Servern des Unternehmens verwendet wird, analysieren wir die Hardware-Implementierung der Multi-Queue-Netzwerkkarte und die Unterstützung der Linux-Kernel-Software.

1. Hardware-Implementierung einer Netzwerkkarte mit mehreren Warteschlangen

Abbildung 1.1 ist das Intel 82575-Hardware-Logikdiagramm mit vier Hardware-Warteschlangen. Wenn ein Paket empfangen wird, wird ein Fluss immer in derselben Warteschlange empfangen, indem die SIP-, Sport-, DIP- und Dport-Quadrupel im Paket-Header gehasht werden. Gleichzeitig wird der an die Warteschlange gebundene Interrupt ausgelöst.

Abbildung 1.1 82575 Hardware-Logikdiagramm

2. Was ist RSS

RSS (Receive Side Scaling) ist eine Methode, die Netzwerke ermöglichen kann Kartentreibertechnologie, die eine effiziente Verteilung empfangener Nachrichten auf mehrere CPUs im Prozessorsystem ermöglicht.

  • Die Netzwerkkarte analysiert die empfangene Nachricht und erhält die IP-Adresse, das Protokoll und die fünffachen Portinformationen

  • Die Netzwerkkarte übergibt den konfigurierten HASH Die Funktion berechnet den HASH-Wert basierend auf den Fünf-Tupel-Informationen und kann den HASH-Wert auch basierend auf den Zwei-, Drei- oder Vier-Tupel-Informationen berechnen.

  • Nehmen Sie die unteren Ziffern des HASH-Werts (diese spezielle Netzwerkkarte kann unterschiedlich sein) als Index von RETA (Umleitungstabelle)

  • Entsprechend der Speicherung in RETA wird der Wert an die entsprechende CPU verteilt

Die folgende Abbildung beschreibt den vollständigen Verarbeitungsablauf:

Basierend auf der RSS-Technologie kann das Programm verteilen Daten zwischen mehreren CPUs durch Hardwarefluss und dynamischer Lastausgleich können durch Ändern von RETA erreicht werden.

3. RSS in DPDK konfigurieren

DPDK unterstützt das Festlegen statischer Hashwerte und die Konfiguration von RETA. Allerdings basiert RSS in DPDK auf Ports und Pakete werden entsprechend der Empfangswarteschlange des Ports verteilt. Wenn wir beispielsweise 3 Empfangswarteschlangen (0,1,2) an einem Port konfigurieren und RSS aktivieren, dann sieht das so aus:

{0,1,2,0,1,2,0 . ........}

Anwendungen, die auf verschiedenen CPUs ausgeführt werden, empfangen Nachrichten aus verschiedenen Empfangswarteschlangen und erzielen so den Effekt der Nachrichtenverteilung.

Aktivieren Sie die RSS-Funktion in DPDK, indem Sie das Feld rte_eth_conf in mq_mode, rx_mode.mq_mode = ETH_MQ_RX_RSS festlegen.

Wenn die RSS-Funktion aktiviert ist, wird der von RSS berechnete Hash-Wert im rte_pktmbuf gespeichert, der der Nachricht entspricht, auf die über pktmbuf.hash.rss zugegriffen werden kann. Dieser Wert kann direkt in der nachfolgenden Paketverarbeitung verwendet werden, ohne den Hash-Wert neu zu berechnen, z. B. für schnelles Weiterleiten, Identifizieren von Paketströmen usw.

RETA ist zur Laufzeit konfigurierbar, sodass die Anwendung die der CPU entsprechende Empfangswarteschlange dynamisch ändern und so die Nachrichtenverteilung dynamisch anpassen kann. Speziell über den Treiber des PMD-Moduls konfiguriert, z. B. ixgbe_dev_rss_reta_update und ixgbe_dev_rss_reta_query.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Multi-Queue-Technologie und RSS-Funktion von Netzwerkkarten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn