-
GEBIET DER ERFINDUNG
-
Bestimmte
Ausführungsbeispiele
der vorliegenden Erfindung betreffen das Verarbeiten von TCP-Daten
und zugehörigen
TCP-Informationen. Insbesondere betreffen bestimmte Ausführungsbeispiele
ein Verfahren und ein System für
eine TCP/IP-Auslagerung, das von dem Produkt aus Bandbreite und
Verzögerung
unabhängig
ist.
-
HINTERGRUND DER ERFINDUNG
-
Die
ursprüngliche
Entwicklung des Protokolls TCP (Transmission Control Protocol) basierte auf
den Netzwerk- und Verarbeitungsfunktionen, die damals gerade verfügbar waren.
Dies führte
dazu, dass verschiedene grundlegende Annahmen bezüglich seiner
Betriebsweise sich auf Netzwerk- und Prozessortechnologien gründeten,
die zu dem damaligen Zeitpunkt verfügbar waren. Die Annahmen, auf die
sich das TCP gründete,
umfassen die Knappheit und die hohen Kosten von Bandbreite und die
teilweise grenzenlosen, durch einen Host-Prozessor zur Verfügung stehenden
Verarbeitungsressourcen. Mit dem Aufkommen von Technologien wie
Gigabit-Ethernet
(GbE) haben sich diese grundlegenden Annahmen insofern radikal geändert, als
Bandbreite heute nicht mehr so knapp und teuer ist und die Host-Verarbeitungsressourcen
inzwischen nicht mehr als praktisch unendlich, sondern vielmehr
als begrenzt betrachtet werden. Im Hinblick darauf hat sich der
Engpass von der Netzwerkbandbreite auf die Host-Verarbeitungsbandbreite
verlagert. Da Host-Verarbeitungssysteme mehr bewirken, als lediglich
schnellere Netzwerkverbindungen bereitzustellen, würde das
Verlagern von Netzwerkressourcen, um viel schnellere Netzwerkverbindungen
bereitzustellen, wenig dazu beitragen, um den grundlegenden Änderungen
der Annahmen zu begegnen. Insbesondere würde das Verlagern von Netzwerkressourcen,
um viel schnellere Netzwerkverbindungen bereitzustellen, zu Lasten
der Ausführung
von Systemanwendungen gehen, was zu einer Verschlechterung der Systemleistung
führen
würde.
-
Obwohl
neue Netzwerkarchitekturen und -protokolle erstellt werden könnten, um
den grundlegenden Änderungen
der Annahmen zu begegnen, müssten
die neuen Architekturen und Protokolle nach wie vor Unterstützung für aktuelle
Systeme und Altsysteme bereitstellen. Demgemäß sind Lösungen erforderlich, welche
der Ände rung
der Annahmen begegnen und jegliche Engpässe milder, die im Zusammenhang
mit Host-Verarbeitungssystemen entstehen können. Eine TCP-Offload-Engine
(TOE) kann verwendet werden, um die TCP-Verarbeitung von dem Host-System
auf spezialisierte Prozessoren umzuverteilen, die geeignete Software
zur Handhabung der TCP-Verarbeitung aufweisen können. Die TCP-Offload-Engines
können
so konfiguriert sein, dass sie verschiedene TCP-Algorithmen zum
Handhaben schnellerer Netzwerkverbindungen implementieren, wodurch
es erlaubt wird, dass Host-Systemverarbeitungsressourcen der Anwendungsverarbeitung
zugeteilt oder erneut zugeteilt werden.
-
Um
die Belegung von Host-Ressourcen zu mindern, kann eine TCP-Verbindung
von einem Host auf eine dedizierte TCP/IP-Offload-Engine (TOE) ausgelagert
werden. Einige dieser Host-Ressourcen können CPU-Zyklen und Bandbreite
für Subsystemspeicher
umfassen. Während
des Auslagerungsprozesses werden Informationen zu dem TCP-Verbindungszustand
von dem Host, zum Beispiel von einem Host-Software-Stack, auf die
TOE ausgelagert. Eine TCP-Verbindung kann sich zu einem bestimmten
Zeitpunkt in einem beliebigen einer Vielzahl von Zuständen befinden.
Um die TCP-Verbindung zu verarbeiten, kann die TCP-Software in der
Lage sein, verschiedene definierte TCP-Zustände zu verwalten. Die Fähigkeit,
die verschiedenen definierten TCP-Zustände zu verwalten, erfordert
unter Umständen
ein hohes Maß an
Komplexität
bei der Architektur der TOE.
-
Das
Auslagern von zum Verarbeiten einer TCP-Verbindung genutzten Zustandsinformationen auf
die TOE ist unter Umständen
nicht zwangsläufig die
beste Lösung,
weil viele der Zustände,
wie beispielsweise CLOSING, LAST_ACK und FIN_WAIT_2 unter Umständen nicht
leistungskritisch sind. Außerdem
können
viele dieser nicht leistungskritischen Zustände wesentliche Verarbeitungsressourcen
belegen, um zum Beispiel Fehlerbedingungen und potenziell böswillige
Angriffe zu handhaben. Dies sind nur einige Faktoren, welche die
Kosten zum Aufbauen und Konstruieren der TOE wesentlich erhöhen. Zusätzlich kann
eine TOE, welche die von dem Host übertragene Steuerung aller
Zustandsvariablen einer TCP-Verbindung innehat, recht komplex sein,
kann eine beträchtliche
Verarbeitungsleistung verbrauchen und kann eine Menge des Onboard-Speichers der
TOE erfordern und belegen. Des Weiteren kann die TCP-Verbindung,
die auf die TOE ausgelagert wurde, welche die von dem Host übertragene
Steuerung aller Zustandsvariablen der TCP-Verbindung innehat, unflexibel
und anfällig
für Verbindungsverluste sein.
-
Die
TCP-Segmentierung ist eine Technologie, die es erlauben kann, dass
ein sehr kleiner Teil der TCP-Verarbeitung auf eine Netzwerk-Schnittstellenkarte
(NIC) ausgelagert wird. In dieser Hinsicht umfasst eine NIC, die
eine TCP-Segmentierung unterstützt,
nicht tatsächlich
eine Offload-Engine für
die vollständige Übertragungssteuerungsverarbeitung. Vielmehr
weist eine NIC, die eine TCP-Segmentierung unterstützt, nur
die Fähigkeit
auf, abgehende TCP-Blöcke
in Pakete zu segmentieren, die eine Größe gleich der haben, die von
dem physischen Medium unterstützt
wird. Jeder von den abgehenden TCP-Blöcken ist kleiner als eine erlaubte
TCP-Fenstergröße. Zum
Beispiel kann eine Ethernet-Netzwerkschnittstellenkarte, die eine
TCP-Segmentierung
unterstützt,
einen 4 KB großen
Block von TCP-Daten in 3 Ethernet-Pakete segmentieren. Die maximale Größe eines
Ethernet-Pakets beträgt 1.518
Byte einschließlich
des Headers und eines angehängten
CRC-Werts.
-
Eine
Vorrichtung, die eine TCP-Segmentierung unterstützt, verfolgt bestimmte TCP-Zustandsinformationen,
wie beispielsweise die TCP-Folgenummer, die auf die Daten bezogen
ist, welche die Auslagerungs-NIC gerade segmentiert. Die Vorrichtung, die
eine TCP-Segmentierung unterstützt,
verfolgt allerdings keine Zustandsinformationen, die sich auf ankommenden
Datenverkehr beziehen, oder jegliche Zustandsinformationen, die
erforderlich sind, um TCP-Bestätigungen
oder Flusskontrolle zu unterstützen.
Eine NIC, die eine vollständige
TCP-Auslagerung in dem hergestellten Zustand unterstützt, ist
für die
Handhabung der TCP-Flusskontrolle sowie für die Handhabung ankommender
TCP-Bestätigungen und
für das
Generieren von abgehenden TCP-Bestätigungen für ankommende Daten zuständig.
-
Die
TCP-Segmentierung kann als Untermenge der TCP-Auslagerung betrachtet
werden. Die TCP-Segmentierung erlaubt es dem Protokoll-Stack oder
dem Betriebssystem, Informationen in Form von Blöcken von TCP-Daten weiterzugeben,
die nicht in einzelne TCP-Pakete für einen Gerätetreiber segmentiert wurden.
Der Datenblock kann größer sein als
ein Ethernet-Paket. Zum Beispiel könnte der zu segmentierende
Datenblock 4 KB oder 16 KB groß sein.
Ein mit dem Gerätetreiber
verbundener Netzwerkadapter kann die TCP-Datenblöcke erfassen, die erfassten
TCP-Datenblöcke
in 1.518 Byte große Ethernet-Pakete
paketieren und bestimmte Felder in jedem inkrementell erstellten
Paket aktualisieren. Zum Beispiel kann der Netzwerkadapter eine
entsprechende TCP-Folgenummer für
jedes der TCP-Pakete aktualisieren, indem er die TCP-Folgenummer
für jedes
der Pakete inkrementiert.
-
Bei
einem anderen Beispiel müssten
außerdem
ein IP-ID-Feld (IP-Kenner) und ein Flag-Feld für jedes Paket aktualisiert
werden. Eine Einschränkung bei
der TCP-Segmentierung besteht darin, dass die TCP-Segmentierung
nur bei einem Datenblock erfolgen kann, der kleiner ist als eine
TCP-Fenstergröße. Dies
liegt an der Tatsache, dass eine Vorrichtung, die eine TCP-Segmentierung
implementiert, keinen Einfluss auf die TCP-Flusskontrolle hat. Demgemäß segmentiert
die Vorrichtung, die eine TCP-Flusskontrolle implementiert, nur
abgehende TCP-Pakete.
-
Eine
TCP-Segmentierungsvorrichtung untersucht keine ankommenden Pakete
und hat solchermaßen
auch keinen Einfluss auf die Flusskontrolle. Jedes empfangene Bestätigungspaket
wird zur Verarbeitung an den Host weitergegeben. In dieser Hinsicht
werden Bestätigungspakete,
die zur Flusskontrolle verwendet werden, nicht von der TCP-Segmentierungsvorrichtung
verarbeitet. Des Weiteren führt eine
TCP-Segmentierungsvorrichtung keine Überlastungssteuerung durch
oder verwendet keinen Slow-Start-Algorithmus und berechnet oder ändert keinerlei
Variablen, die an das Betriebssystem und/oder an den Host-Systemprozessor
zurückgegeben
werden.
-
Eine
weitere Beschränkung
der TCP-Segmentierung liegt darin, dass es sich bei den von der TCP-Segmentierung
verfolgten Informationen nur um Informationen handelt, die für die Lebensdauer der
TCP-Daten relevant sind. In dieser Hinsicht kann die TCP-Segmentierungsvorrichtung
zum Beispiel die TCP-Segmentierungsnummern verfolgen, nicht aber
die TCP-Bestätigungsnummern
(ACK-Nummern). Demgemäß verfolgt
die TCP-Segmentierungsvorrichtung nur eine minimale Untermenge von Informationen,
die entsprechende TCP-Daten betreffen. Dies schränkt die Fähigkeiten und/oder die Funktionalität der TCP-Segmentierungsvorrichtung
ein. Eine weitere Einschränkung
der TCP-Segmentierung besteht darin, dass eine TCP-Segmentierungsvorrichtung
keine von TCP verarbeiteten Informationen an ein Betriebssystem
und/oder an einen Host-Prozessor zurückgibt. Dieses Fehlen von Rückmeldungen
schränkt
die TCP-Verarbeitung ein, die sonst durch ein Betriebssystem und/oder
einen Host-Systemprozessor vorgenommen werden kann.
-
Das
Dokument
US 2003/0079033 nach
dem Stand der Technik offenbart eine TCP-Offload-Engine (TOE), die
von einem Host verwendet wird, um das Verbindungs-TCP zu migrieren
und den Prozessor des Hosts zu entlasten. Verbindungskontext in Form
von Variablen wird von dem Host auf die TOE übertragen, welche diese Variablen
aktualisieren und auf den Host zurückübertragen kann.
-
Das
Dokument
US 5937169 nach
dem Stand der Technik offenbart eine TCP/IP-Offload-Engine (TOE)
zum Auslagern der Verarbeitung eines Prozessors auf einer definierten
höheren
Schicht, ohne andere Protokolle zu verletzen oder die Leistung des Gesamtsystems
zu beeinträchtigen.
-
Weitere
Einschränkungen
und Nachteile von herkömmlichen
und traditionellen Ansätzen
werden für
den Fachmann auf diesem Gebiet durch einen Vergleich solcher Systeme
mit einigen Aspekten der vorliegenden Erfindung, wie in dem Rest
der vorliegenden Patentanmeldung unter Bezugnahme auf die Zeichnungen
dargelegt, offensichtlich.
-
KURZE ZUSAMMENFASSUNG DER
ERFINDUNG
-
Die
vorliegende Erfindung ist in den unabhängigen Ansprüchen 1 und
3 als System und Verfahren zum Bereitstellen einer TCP/IP-Auslagerung definiert.
Weitere bevorzugte Ausführungsbeispiele sind
in den Unteransprüchen
2 und 4 definiert.
-
Diese
und weitere Vorteile, Aspekte und neuartige Merkmale der vorliegenden
Erfindung sowie Einzelheiten eines veranschaulichten Ausführungsbeispiels
davon sind anhand der folgenden Beschreibung und der Zeichnungen
besser verständlich.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines Systems, das eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
bereitstellt.
-
2 ist
ein Ablaufdiagramm, das beispielhafte Schritte für eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
veranschaulicht.
-
3 ist
ein Ablaufdiagramm, das beispielhafte Schritte zum Bereitstellen
einer TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
veranschaulicht.
-
4 ist
ein Ablaufdiagramm, das beispielhafte Schritte veranschaulicht,
die für
eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
verwendet werden können.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Bestimmte
Aspekte der Erfindung können ein
Verfahren für
eine TCP-Auslagerung bereitstellen, die das Erfassen von TCP-Verbindungsvariablen von
einem Host und das Verwalten wenigstens einer TCP-Verbindung unter
Verwendung der erfassten TCP-Verbindungsvariablen umfassen kann.
Wenigstens ein Teil der erfassten TCP-Verbindungsvariablen kann
aktualisiert werden, und wenigstens einige der aktualisierten TCP-Verbindungsvariablen
können an
den Host zurückübertragen
werden. Gemäß einem
Aspekt der Erfindung kann es sich bei den TCP-Verbindungsvariablen
um Variablen handeln, die von dem Produkt aus Bandbreite und Verzögerung unabhängig sind.
Wenigstens ein Teil der aktualisierten TCP-Verbindungsvariablen
kann von dem Host verwendet werden, um die TCP-Verbindung oder eine
weitere TCP-Verbindung zu verarbeiten. Ein Stack kann verwendet
werden, um die TCP-Verbindungsvariablen zwischen wenigstens dem
Host und einer TOE zu übertragen.
Im Hinblick darauf kann der Host die TCP-Verbindungsvariablen auf den
Stack schieben, und die TOE kann die TCP-Verbindungsvariablen aus
dem Stack herausziehen. Außerdem
können
die aktualisierten TCP-Verbindungsvariablen von der TOE auf dem
Stack platziert werden, und der Host kann die aktualisierten TCP-Verbindungsvariablen
anschließend
aus dem Stack herausziehen.
-
Im
Hinblick auf die TCP-Segmentierung ist jeder der ausgehenden TCP-Blöcke kleiner
als eine erlaubte TCP-Fenstergröße, die
für die
TCP-Segmentierung verwendet wird. Die Erfindung ist in dieser Hinsicht
jedoch nicht eingeschränkt.
Demgemäß kann eine
TOE-Vorrichtung bei einem Aspekt der Erfindung die Fähigkeit
haben, eine viel weiter gehende TCP-Verarbeitung und -Auslagerung
bereitzustellen als eine Vorrichtung, die einfach eine TCP-Segmentierung
unterstützt.
Verschiedene erfindungsgemäße Aspekte
können
die Einschränkung
hinsichtlich der TCP-Segmentierung überwinden, bei der die TCP-Segmentierung
nur mit Datenblöcken
erfolgen kann, der kleiner sind als eine TCP-Fenstergröße. Im Hinblick
darauf kann die TOE, um diese Einschränkung zu überwinden, gemäß einem
Aspekt der Erfindung in der Lage sein, große Datenblöcke in die einzelnen Pakete
zu segmentieren, da die TOE die Verwaltung der TCP-Flusskontrolle
unterstützt.
Die TOE kann sicherstellen, dass Übertragungen zeitlich so geplant
waren, dass der Absender nie Daten gesendet hat, die über die
Größe des TCP-Fensters
hinausgegangen wären.
Zusätzlich
kann eine Paketierung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
außerhalb
der TCP-Fenstergröße erfolgen.
Die TOE nimmt ankommende empfangene Pakete, bei denen es sich um
Bestätigungspakete
für den
abgehenden TCP-Datenstrom
handelt, an und bestätigt
diese abgehenden Pakete. Wenn das Bestätigungspaket bewirkt, dass
sich das Fenster vergrößert, können gemäß einem
Aspekt der Erfindung mehr Pakete durch die TOE-Vorrichtung herausgesendet
werden.
-
Obwohl
es sich bei der TCP-Segmentierung um eine nur auf die Übertragung
bezogene Technologie handelt, die eine begrenzte TCP-Verarbeitung von übertragenen
Paketen vornimmt, ist die TOE gemäß verschiedener erfindungsgemäßer Ausführungsbeispiele
nicht derartig eingeschränkt.
Im Hinblick darauf kann die TOE gemäß einem erfindungsgemäßen Ausführungsbeispiel
sowohl gesendete als auch empfangene Pakete verarbeiten und verwalten. Außerdem wird
durch die erfindungsgemäße TOE ein
viel breiteres Spektrum an TCP-Verarbeitung und -Verwaltung vorgenommen
als bei einer TCP-Segmentierungsvorrichtung. Zum Beispiel können bei der
TOE TCP-Informationen von einem Betriebssystem und/oder von einem
Host-Systemprozessor so an eine NIC weitergegeben werden, dass die
NIC unter Umständen
als Eigentümer
der TCP-Verbindung angesehen wird. Die NIC kann dann die TCP-Zustandsinformationen
verwalten und aktualisieren, welche TCP-Folgenummern und -Bestätigungsnummern
umfassen, aber nicht auf diese beschränkt sind. Nach der Verarbeitung
und/oder Aktualisierung der TCP-Zustandsinformationen können die
verarbeiteten und/oder aktualisierten Informationen an ein Betriebssystem
und/oder an einen Host-Systemprozessor zurückgegeben werden. Der Host-
oder Systemprozessor kann dann die von der NIC an ihn zurückgegebenen
Informationen nutzen. Insbesondere stellt eine TCP-Segmentierung
diese Rückmeldung von
Informationen an den Host-Systemprozessor und/oder an das Betriebssystem
nicht bereit.
-
Bestimmte
erfindungsgemäße Ausführungsbeispiele
können
außerdem
ein robustes und effizientes TCP/IP-Auslagerungsschema bereitstellen, das
zum Beispiel in der Lage sein kann, die Unterteilung der TCP-Verarbeitung
zwischen einer TCP/IP-Offload-Engine (TOE) und einer Host-TCP/IP-Implementierung
zu erlauben. Die Host-TCP/IP-Implementierung kann eine oder mehr Host-TCP/IP-Anwendungen
und einen oder mehrere Host-Prozessoren umfassen. Bei einem Aspekt
der Erfindung kann das TCP-Auslagerungsschema zum Beispiel die Verbindungen,
die sich in einem Zustand ESTABLISHED befinden, auf die TOE auslagern.
Anders ausgedrückt
können
Aspekte der Erfindung das Auslagern von entsprechenden TCP-Zustandsvariablen
umfassen, die zum Beispiel während
des Zustands ESTABLISHED genutzt werden können. Demgemäß kann das
TCP/IP-Auslagerungsschema eine TCP-Steuerungsebene zwischen der
Host-Software und der TOE aufteilen. Die TOE kann zum Beispiel so
konstruiert sein, dass sie eine Untermenge oder eine Minimalmenge
der TCP-Steuerungsebene implementiert, die möglicherweise weniger komplex implementiert
werden kann und weniger Speicher brauchen kann. Die TOE, die an
ein solches Auslagerungsschema angepasst sein kann, kann auf kostengünstige Weise
implementiert werden. Die komplexeren Aspekte der TCP-Verbindungsverwaltung
können
zum Beispiel durch die Host-Software gehandhabt werden, was eine
größere Zuverlässigkeit
und Flexibilität
bereitstellen kann.
-
1 ist
ein Blockdiagramm eines Systems, das eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
bereitstellt. Unter Bezugnahme auf 1 kann das
System zum Beispiel einen Host 10, Host-Anwendungssoftware 12 und
eine TOE 20 umfassen. Der Host 10 kann zum Beispiel
eine Host-CPU 30 und
einen Host-Speicher 40 umfassen. Der Host-Speicher 40 kann
zum Beispiel einen Anwendungspuffer 50 umfassen. Der Anwendungspuffer 50 kann
zum Beispiel einen Sende-Anwendungspuffer (TxBuf) 60 und
einen Empfangs-Anwendungspuffer (RxBuf) 70 umfassen. Die TOE 20 kann
zum Beispiel eine Direktspeicherzugriffs-Engine (DMA-Engine) 25 und
einen FIFO-Puffer 70 umfassen.
-
Der
Host 10 kann über
eine Host-Schnittstelle 80 mit der TOE 20 gekoppelt
sein. Die Host-Schnittstelle kann einen PCI-Bus (Peripheral Component
Interconnect), einen PCI-X-Bus, einen ISA-Bus, einen SCSI-Bus oder
einen beliebigen anderen geeigneten Bus umfassen, ist aber nicht
auf diese beschränkt.
Die TOE 20 kann mit einem physischen Kommunikationsmedium 90 gekoppelt
sein. Bei dem physischen Kommunikationsmedium 90 kann es
sich um ein drahtgebundenes Medium, ein drahtloses Medium oder eine
Kombination aus diesen handeln. Das physische Kommunikationsmedium 90 kann
Ethernet und Fibre Channel umfassen, ist aber nicht auf diese beschränkt. Obwohl
er auf entgegengesetzten Seiten der Host-Schnittstelle 80 veranschaulicht
ist, kann der Host 10 wenigstens teilweise auf einer Netzwerkschnittstellenkarte
(NIC) angeordnet sein, welche die TOE 20 umfasst. Demge mäß kann bei
einem Aspekt der Erfindung die TCP-Zustandssebene zwischen dem Host 10 und der
TOE 20 aufgeteilt sein.
-
Bei
einem Ausführungsbeispiel
kann die TCP-Verbindung, zum Beispiel durch drei verschiedene Sätze von
Variablen, vollständig
beschrieben sein. Bei den drei Sätzen
von Variablen kann es sich zum Beispiel um verbindungsunveränderliche
Variablen, segmentunveränderliche
Variablen und segmentveränderliche
Variablen handeln. Die verbindungsunveränderlichen Variablen können während der
Lebensdauer der TCP-Verbindung konstant sein. Die segmentunveränderlichen
Variablen dürfen
sich von TCP-Segment zu TCP-Segment nicht ändern, können sich aber während der
Lebensdauer der TCP-Verbindung von Zeit zu Zeit ändern. Die segmentveränderlichen
Variablen können
sich von TCP-Segment zu TCP-Segment ändern.
-
Verbindungsunveränderliche
Variablen können
zum Beispiel die Quell-IP-Adresse,
die Ziel-IP-Adresse, die IP-TTL (IP-Lebenszeit), den IP-TOS (Service-Typ), die Quell-TCP-Port-Nummer, die
Ziel-TCP-Port-Nummer, die anfängliche
Sende-Folgenummer, die anfängliche
Empfangs-Folgenummer, den Skalierungsfaktor für das Sendefenster und den
Skalierungsfaktor für
das Empfangsfenster umfassen.
-
Segmentunveränderliche
Variablen können die
Quell-MAC-Adresse, die MAC-Adresse des nächsten Hop, die Verkapselung
auf der MAC-Schicht, die effektive maximale Segmentgröße, Keep-Alive-Intervalle
und eine maximale Zugabe sowie Flags, wie beispielsweise die Aktivierung
des Nagle-Algorithmus und die Aktivierung des Keep-Alive-Mechanismus,
umfassen, sind aber nicht auf diese beschränkt.
-
Segmentveränderliche
Variablen können IP-Paket-IDs;
Sende- und Empfangs-Folgevariablen, wie beispielsweise die Folgenummer
für die
ersten Daten ohne Bestätigung
(SND_UNA), die Folgenummer für
den nächsten
Sendevorgang (SND_NXT), die größte je gesendete
Folgenummer (SND_MAX), das größte Sendefenster
(MAX_WIN), die Folgenummer für
den nächsten
Empfangsvorgang (RCV_NXT) und die Empfangsfenstergröße (RCV_WND)
umfassen, sind aber nicht auf diese beschränkt. Zusätzliche beispielhafte segmentveränderliche
Variablen können Überlastungsfenstervariablen
umfassen, wie beispielsweise die Umlaufzeitvariablen für das Überlastungsfenster
(SND_CWIN) und für
den Slow-Start-Schwellen wert (SSTHRESH), welche die geglättete Umlaufzeit
(RTT) und geglättete
Delta-Werte (DELTA)
umfassen, aber nicht auf diese beschränkt sind. Weitere beispielhafte
segmentveränderliche
Variablen können
die zur erneuten Übertragung
verbleibende Zeit, die für
die Verzögerungsbestätigung verbleibende
Zeit, die für
Keep-Alive verbleibende
Zeit, die für
PUSH verbleibende Zeit sowie den TCP-Zustand und -Zeitstempel umfassen.
-
Wenn
während
des Betriebs eine TCP-Verbindung nicht ausgelagert wird, kann die
Host-Software des Hosts 10 Eigentümer von wenigstens einigen
der drei Sätze
von Variablen sein, welche die verbindungsunveränderliche Variablen, die segmentunveränderlichen
Variablen und die segmentveränderlichen
Variablen umfassen. Wenn die TCP-Verbindung nicht ausgelagert wird,
kann die TOE 20 unter Umständen keinen Zugriff auf diese
Variablen haben. Sobald die Variablen jedoch ausgelagert wurden, kann
die TOE 20 so konfiguriert sein, dass sie die Variablen
aktualisiert, die sowohl mit dem Senden als auch mit dem Empfang
verbunden sind, und die aktualisierten Sende- und Empfangsvariablen
an den Host 10 zurückgibt.
In dieser Hinsicht kann die TOE Variablen aktualisieren, die von
dem TCP-Produkt aus Bandbreite und Verzögerung unabhängig sind, und
diese aktualisierten Variablen zur Verarbeitung an den Host 10 zurückgeben.
-
2 ist
ein Ablaufdiagramm, das beispielhafte Schritte für eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
veranschaulicht. Wenn unter Bezugnahme auf 2 eine Verbindung
auf die TOE 20 ausgelagert wird, kann die Host-Software
in Schritt 202 die Steuerung der segmentveränderlichen
Variablen auf die TOE 20 übertragen. In einem Beispiel
kann ein Teil des Host-Software-Protokollsteuerungsblocks
bzw. TCP-Steuerungsblocks auf die TOE 20 übertragen werden.
In Schritt 204 kann die Host-Software eine Momentaufnahme
der verbleibenden Variablen, wie beispielsweise der verbindungsunveränderlichen
Variablen und/oder der segmentunveränderlichen Variablen, erstellen
und die Momentaufnahme an die TOE 20 senden. In einem Beispiel
kann die Momentaufnahme von der TOE 20 immer wieder verwendet werden.
In Schritt 206 kann die Host-Software einen Puffer in den
Host-Speicher 40 laden. Zum Beispiel kann die Host-Software
den Anwendungspuffer 50 in den Host-Speicher 40 laden,
und den Sende-Anwendungspuffer (TxBuf) 60 und den Empfangs-Anwendungspuffer
(RxBuf) 70 in dem Anwendungspuffer 50 einrichten.
In Schritt 208 kann die TOE 20 für das Verwalten
der gesamten TCP-Verbindung einschließlich zum Beispiel Segmentierung,
Verar beitung von Bestätigungen,
Fensterverwaltung und Vermeidung von Überlastung zuständig sein.
In Schritt 210 kann wenigstens ein Teil der aktualisierten
Variablen zur Verarbeitung an den Host zurückübertragen werden.
-
Die
TOE 20 kann zum Beispiel durch Steuern der segmentveränderlichen
Variablen und unter Verwendung der Momentaufnahme der übrigen Variablen
die ankommenden TCP-Segmente von dem physischen Kommunikationsmedium 90 verarbeiten oder
unabhängig
verarbeiten und wenigstens einen Teil, wie beispielsweise Nutzdaten,
der ankommenden TCP-Segmente über
die DMA-Engine 25 in dem Host-Speicher 40 platzieren.
In dieser Hinsicht können
die Nutzdaten der ankommenden TCP-Segmente über die DMA-Engine 25 in
dem Rx-Anwendungspuffer 70 platziert werden, der ein Teil
des Anwendungspuffers 50 ist.
-
Bei
einem erfindungsgemäßen Ausführungsbeispiel
kann, während
die TOE 20 in der Lage sein kann, die gesamte TCP-Verbindung
zu verwalten, die TOE 20 über exklusiven Schreib-/Lese-Zugriff
auf ausgelagerte segmentveränderliche
Variablen verfügen
und die ausgelagerten segmentveränderlichen Variablen
exklusiv aktualisieren. Die Host-Software oder die Host-Anwendungssoftware 12 kann über Schreib-/Lese-Zugriff
auf die segmentunveränderlichen
Variablen verfügen.
Die TOE 20 kann über Nur-Lese-Zugriff
auf die segmentunveränderlichen Variablen
verfügen.
Wenn die Host-Anwendungssoftware 12 die Variablen, wie
beispielsweise die MAC-Adresse des nächsten Hop, ändert, kann
die Host-Anwendungssoftware 12 die TOE 20 benachrichtigen,
indem sie zum Beispiel eine Nachricht an die TOE 20 sendet.
Die TOE 20 kann dann die Variablen aktualisieren. Die aktualisierten
Variablen können
an die Host-Anwendungssoftware 12 zurückgemeldet werden, wo sie zum
Beispiel zur TCP-Verarbeitung genutzt werden können. Demgemäß können die
verbindungsunveränderlichen
Variablen sowohl in der Host-Software als auch in der TOE 20 vorhanden
sein.
-
3 ist
ein Ablaufdiagramm, das beispielhafte Schritte zum Bereitstellen
einer TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
veranschaulicht. Unter Bezugnahme auf 3 kann der
Host 10 in Schritt 302 bestimmen, ob sich eine
oder mehrere der von dem Host 10 gesteuerten Verbindungsvariablen,
wie beispielsweise die segmentunveränderlichen Variablen, geändert haben.
Zum Beispiel kann die Host-Software eine oder mehrere Variablen,
wie beispielsweise die MAC-Adresse des nächsten Hop, ändern. Wenn
sich eine oder meh rere der von dem Host 10 gesteuerten Verbindungsvariablen
nicht geändert
haben, kann der Prozess abgeschlossen werden. Wenn sich eine oder
mehrere der von dem Host 10 gesteuerten Verbindungsvariablen
geändert
haben, kann die Host-Software die TOE 20 in Schritt 304 bezüglich der Änderung
an der einen oder den mehreren von dem Host 10 gesteuerten
Verbindungsvariablen benachrichtigen. In Schritt 306 kann
die TOE 20 eine oder mehrere der Variablen demgemäß aktualisieren.
In Schritt 308 kann die TOE die aktualisierten Variablen
an den Host 10 zurückgeben.
-
Einige
Ausführungsbeispiele
gemäß der vorliegenden
Erfindung können
einen oder mehrere der folgenden Vorteile umfassen. Einige Ausführungsbeispiele
können
zuverlässiger
sein und jederzeit das Hochladen von Verbindungen von der TOE auf
den Host und das Auslagern von Verbindungen von dem Host auf die
TOE vorsehen. Da von der TOE-Hardware gegebenenfalls weniger Zustandsinformationen behalten
werden, kann das Hochladen und Auslagern, zum Beispiel von ausgewählten Verbindungen, beschleunigt
werden. Eine ausgelagerte Verbindung kann hochgeladen werden, indem
zum Beispiel die Steuerung der segmentveränderlichen Variablen, die der
ausgelagerten Verbindung entsprechen, an den Host 10 zurückgegeben
wird. Die hochgeladene Verbindung kann dann nachfolgend ausgelagert
werden, indem zum Beispiel die Steuerung der segmentveränderlichen
Variablen, die der hochgeladenen Verbindung entsprechen, auf die
TOE 20 übertragen wird.
-
4 ist
ein Ablaufdiagramm, das beispielhafte Schritte veranschaulicht,
die für
eine TCP/IP-Auslagerung gemäß einem
erfindungsgemäßen Ausführungsbeispiel
verwendet werden können. Unter
Bezugnahme auf 4 kann eine TOE in Schritt 402 von
einem Host-System Variablen erfassen oder empfangen, die von dem
Produkt aus Bandbreite und Verzögerung
unabhängig
sind. In Schritt 404 kann die TOE die Verbindung verwalten,
indem sie die erfassten oder empfangenen Variablen nutzt, die von
dem Produkt aus Bandbreite und Verzögerung unabhängig sind.
In Schritt 406 kann die TOE wenigstens einen Teil der erfassten
Variablen aktualisieren, die von dem Produkt aus Bandbreite und Verzögerung unabhängig sind.
In Schritt 408 kann wenigstens ein Teil der aktualisierten
Variablen, die von der Bandbreite unabhängig sind, an den Host zurückübertragen
werden. In Schritt 410 kann der Host die aktualisierten
Variablen, die von dem Produkt aus Bandbreite und Verzögerung unabhängig sind,
die zur TCP-Verarbeitung an ihn übertragen
wurden, nutzen.
-
Gemäß einem
Aspekt der Erfindung kann ein Stack 14 genutzt werden,
um die Übertragung
der Variablen zu erleichtern, die von dem Produkt aus Bandbreite
und Verzögerung
unabhängig
sind. Der Stack 14 kann in Hardware, in Software oder einer Kombination
aus beiden implementiert sein. Trotzdem kann die TOE in der Lage
sein, Informationen aus dem Stack 14 herauszuziehen und
aktualisierte Informationen auf den Stack 14 zu schieben.
Der Host kann außerdem
in der Lage sein, Informationen auf den Stack 14 zu schieben
und die aktualisierten Informationen aus dem Stack 14 herauszuziehen. Demgemäß kann die
TOE unter Bezugnahme auf Schritt 402 die Variablen, die
von dem Produkt aus Bandbreite und Verzögerung unabhängig sind,
aus dem Stack 14 herausziehen. Unter Bezugnahme auf Schritt 406 können, nachdem
die TOE die erfassten Variablen, die von dem Produkt aus Bandbreite
und Verzögerung
unabhängig
sind, aktualisiert hat, die aktualisierten Variablen, die von dem
Produkt aus Bandbreite und Verzögerung
unabhängig
sind, auf den Stack 14 geschoben werden. Im Hinblick darauf kann
unter Bezugnahme auf Schritt 408 der Host dann die aktualisierten
Variablen, die von dem Produkt aus Bandbreite und Verzögerung unabhängig sind,
aus dem Stack 14 herausziehen.
-
Die
TOE kann, verglichen mit einer Auslagerungsvorrichtung für die TCP-Segmentierung, einen flexibleren
Ansatz zur TCP-Verarbeitung bereitstellen, da die TOE-Vorrichtung
die TCP-Verarbeitung sowohl auf der Empfangsseite als auch auf der
Sendeseite erleichtert. Da die TOE zusätzlich in der Lage sein kann,
Empfangs- und Sendevariablen
zu handhaben, stellt die TOE eine flexiblere und effizientere Methodik
zur Unterstützung
des effizienten Herstellens und Abbauens von Netzwerkverbindungen
bereit.
-
Bestimmte
Ausführungsbeispiele
können
einen besseren Widerstand gegen DoS-Angriffe (Denial-of-Service)
oder andere Angriffe bieten, da das Einrichten der Verbindung von
einem Host gehandhabt wird, der flexibler und leistungsfähiger ist
als die TOE-NIC. Bei einem DoS-Angriff versucht ein Angreifer, so
viele Ressourcen auf dem Zielsystem bzw. dem angegriffenen System
zu belegen wie möglich, wodurch
er das Zielsystem daran hindert, anderen Netzwerkvorrichtungen Dienste
bereitzustellen. Aufgrund des häufigen
Vorkommens von neuen Angriffen kann ein flexibler Host mit ausreichendem
Speicher und ausreichender CPU-Leistung eine bessere Wahl sein,
wenn es um die Durchführung
des Einrichtens von Verbindungen geht. Der flexible Host kann eine
bessere Wahl sein als zum Beispiel eine bestimmte Hardware-gestützte TOE,
bei welcher der Speicherplatz für
Code, die Rechnerleis tung, die Kenntnisse des Systems und die Flexibilität begrenzt sind.
Zusätzlich
kann die Entscheidung, einer Verbindungsanforderung nachzukommen,
manchmal zum Beispiel auf ausgeklügelter und dynamischer Heuristik
basieren.
-
Aspekte
der Erfindung können
außerdem eine
bessere Gesamtleistung und -effizienz des Systems bereitstellen.
Die TOE-NIC kann bei der Handhabung zum Beispiel von Verbindungen,
die sich in leistungskritischen Zustand des TCP-Zustandsautomaten
befinden, effizienter sein. Insbesondere können, wenn die TOE-NIC nur
Verbindungen handhabt, die sich in leistungskritischen Zuständen des TCP-Zustandsautomaten
befinden, zusätzliche
begrenzte Hardware-Ressourcen verfügbar werden. Demgemäß kann die
TOE-NIC in der Lage sein, Verbindungen hochzuladen, die sich nicht
mehr in leistungskritischen Zustand befinden, und Verbindungen auszulagern,
die sich in leistungskritischen Zustanden befinden. Solche Maßnahmen
können
einen positiven Einfluss auf Kenngrößen, wie zum Beispiel die Hardwareseitige
TOE-Effizienz, haben. Weitere Aspekte der Erfindung können effizienter
sein und eine bessere Gesamtleistung des Systems bereitstellen, weil
zum Beispiel der Host flexible, sich ändernde, einfach zu aktualisierende,
einfach hochzurüstende und
ausgeklügeltere
Algorithmen verwenden kann, um zu entscheiden, welche Verbindungen
ausgelagert bzw. hochgeladen werden sollen.
-
Einige
Ausführungsbeispiele
der vorliegenden Erfindung können
dem Host Statistiken bereitstellen, die sich auf die Nutzung von
Ressourcen beziehen. Die Statistiken können zum Beispiel eines oder
mehrere der folgenden Elemente umfassen: verfügbare Ressourcen; Nutzung von
Bandbreite pro ausgelagerter Verbindung; Anzahl von Rahmen pro ausgelagerter
Verbindung; Fehler pro ausgelagerter Verbindung; Änderung
des Zustands eines Protokolls der Transportschicht (TLP), wie zum
Beispiel TCP, oder eines Protokoll einer höheren Schicht (ULP); Auslastungstendenz,
wie beispielsweise eine Zunahme der Übertragungsgeschwindigkeit,
Verlangsamung und Ressourcenbelegung pro ausgelagerter Verbindung.
Der Host kann die statistischen Informationen nach eigener Maßgabe verwenden,
um zum Vorantreiben des Entscheidungsprozesses für das Hochladen oder Auslagern
beizutragen. Zum Beispiel kann der Host die statistischen Informationen nutzen,
um einige Verbindungen hochzuladen, während er andere auslagert.
Der Host kann auch weitere Kriterien, wie zum Beispiel Betriebsmodi,
Berechnungs- oder Netzwerkauslastungsprofile, derzeit ausgeführte Anwendungen
und Rollen in dem Netzwerk, berücksichtigen.
Bei einigen dieser Kriterien kann es sich um dynamische Kriterien
handeln.
-
Bestimmte
erfindungsgemäße Ausführungsbeispiele
können
auch eine Failover-Unterstützung von
einer ausgefallenen TOE-NIC zu einer funktionierenden TOE-NIC bereitstellen.
Die Failover-Funktion kann zum Beispiel das Bezeichnen einer NIC
als ausgefallen umfassen, wenn ihr Netzwerkkabel in dem Netzwerk
herausgezogen wird, oder jeglichen anderen Fehler einer vorhandenen
Netzwerkverbindung. Somit kann die Verbindung selbst dann aufrecht
erhalten werden, wenn die Hardware einer TOE-NIC gegebenenfalls
ausfällt,
indem die mit der ausgefallenen TOE-NIC verbundenen Zustandsinformationen
auf eine andere, funktionierende TOE-NIC übertragen werden. Die Robustheit
der Übertragung kann
noch weiter verbessert werden, indem ein Teil der Informationen
zu dem Verbindungszustand von dem Host verwaltet wird und ein Teil
der Informationen zu dem Verbindungszustand von der TOE-NIC verwaltet
wird.
-
Demgemäß kann die
vorliegende Erfindung in Hardware, in Software oder einer Kombination
aus Hardware und Software ausgeführt
sein. Die vorliegende Erfindung kann auf zentralisierte Weise in
einem Computersystem verwirklicht sein oder auf verteilte Weise,
wobei verschiedene Elemente auf mehrere, miteinander verbundene
Computersysteme verteilt sein können.
Jede Art von Computersystem oder anderer Vorrichtung, welche die
in diesem Dokument beschriebenen Verfahren durchführen kann,
ist geeignet. Bei einer typischen Kombination von Hardware und Software
kann es sich um ein Allzweck-Computersystem mit einem Computerprogramm
handeln, das, wenn es geladen und ausgeführt wird, das Computersystem
dergestalt steuert, dass es die in diesem Dokument beschriebenen
Verfahren durchführt.
-
Die
vorliegende Erfindung kann auch in ein Computerprogrammprodukt eingebettet
sein, das alle Merkmale umfasst, welche die Implementierung der
in diesem Dokument beschriebenen Verfahren ermöglichen, und das, wenn es in
einem Computersystem geladen ist, in der Lage ist, diese Verfahren durchzuführen. Unter
Computerprogramm in dem vorliegenden Zusammenhang versteht man jeden Ausdruck,
in jeder beliebigen Sprache, in jedem Code oder in jeder Schreibweise,
eines Satzes von Anweisungen, die dazu gedacht sind, ein System
mit einer Möglichkeit
zur Informationsverarbeitung zu veranlassen, eine bestimmte Funktion
entweder direkt oder nach einem oder beiden der folgenden Vorgänge durchzuführen: a)
Umwand lung in eine andere Sprache, einen anderen Code oder eine
andere Schreibweise; b) Vervielfältigung
in einer anderen materiellen Form.
-
Während die
Erfindung unter Bezugnahme auf bestimmte Ausführungsbeispiele beschrieben wurde,
werden die Fachleute auf diesem Gebiet verstehen, dass verschiedene Änderungen
daran vorgenommen werden können
und Äquivalente
als Ersatz verwendet werden können,
ohne dass von dem Schutzumfang der vorliegenden Erfindung abgewichen
wird. Zusätzlich
können
zahlreiche Modifizierungen vorgenommen werden, um eine bestimmte Situation
oder ein bestimmtes Material an die in Lehren der vorliegenden Erfindung
anzupassen, ohne dass dabei von ihrem Schutzumfang abgewichen wird.
Daher ist beabsichtigt, dass die vorliegende Erfindung nicht auf
das bestimmte, offenbarte Ausführungsbeispiel
beschränkt
ist, sondern dass die vorliegende Erfindung alle Ausführungsbeispiele
umfasst, die unter den Schutzumfang der angehängten Ansprüche fallen.