DE602004012361T2 - Verfahren und Vorrichtung zum Offload von TCP/IP Protokoll unabhängig von Bandbreitenverzögerungsprodukt - Google Patents

Verfahren und Vorrichtung zum Offload von TCP/IP Protokoll unabhängig von Bandbreitenverzögerungsprodukt Download PDF

Info

Publication number
DE602004012361T2
DE602004012361T2 DE602004012361T DE602004012361T DE602004012361T2 DE 602004012361 T2 DE602004012361 T2 DE 602004012361T2 DE 602004012361 T DE602004012361 T DE 602004012361T DE 602004012361 T DE602004012361 T DE 602004012361T DE 602004012361 T2 DE602004012361 T2 DE 602004012361T2
Authority
DE
Germany
Prior art keywords
tcp
variables
toe
host
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602004012361T
Other languages
English (en)
Other versions
DE602004012361D1 (de
Inventor
Uri Irvine ELZUR
Kan F. Diamond Bar Fan
Steven Mission Viejo Lindsay
Scott S. Villa Park McDaniel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Broadcom Corp
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of DE602004012361D1 publication Critical patent/DE602004012361D1/de
Application granted granted Critical
Publication of DE602004012361T2 publication Critical patent/DE602004012361T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Description

  • 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.

Claims (4)

  1. System zum Bereitstellen einer TCP/IP-Auslagerung, das Folgendes umfasst: einen Host (10); und eine mit dem Host (10) gekoppelte TCP/IP-Offload-Engine (TOE) (20), wobei der Host (10) für Folgendes ausgelegt ist: Entscheiden, eine hergestellte TCP-Verbindung auf die TCP/IP-Offload-Engine (TOE) (20) auszulagern; Übertragen (202) der Steuerung von segmentveränderlichen Variablen an die TCP/IP-Offload-Engine (TOE) (20); und Senden (204) einer Momentaufnahme von segmentunveränderlichen Variablen und verbindungsunveränderlichen Variablen an die TCP/IP-Offload-Engine (TOE) (20); wobei die TCP/IP-Offload-Engine (TOE) (20) für Folgendes ausgelegt ist: unabhängiges Verarbeiten (208) von ankommenden TCP-Paketen auf der Grundlage der segmentveränderlichen Variablen und der Momentaufnahme; und Aktualisieren (210) wenigstens eines Teils der gesendeten Momentaufnahme und wenigstens eines Teils der segmentveränderlichen Variablen sowie Übertragen wenigstens eines Teils des aktualisierten Teils der gesendeten Momentaufnahme und wenigstens des Teils der aktualisierten segmentveränderlichen Variablen zurück an den Host (10).
  2. System zum Bereitstellen einer TCP/IP-Auslagerung nach Anspruch 1, wobei die TCP/IP-Offload-Engine (TOE) (20) über exklusiven Schreib-/Lese-Zugriff auf ausgelagerte segmentveränderliche Variablen verfügt, über Nur- Lese-Zugriff auf die segmentunveränderlichen Variablen verfügt und exklusiv die ausgelagerten segmentveränderlichen Variablen aktualisieren kann; und wobei der Host (10) über Lese-Schreib-Zugriff auf die segmentunveränderlichen Variablen verfügt.
  3. Verfahren zum Bereitstellen einer TCP/IP-Auslagerung, das Folgendes umfasst: Entscheiden, eine hergestellte TCP-Verbindung von einem Host (10) auf eine TCP/IP-Offload-Engine (TOE) (20) auszulagern; Übertragen (202) der Steuerung von segmentveränderlichen Variablen von dem Host (10) an die TCP/IP-Offload-Engine (TOE) (20); Senden (204) einer Momentaufnahme von segmentunveränderlichen Variablen und von verbindungsunveränderlichen Variablen an die TOE (20); unabhängiges Verarbeiten (208) von ankommenden TCP-Paketen über die TCP/IP-Offload-Engine (TOE) (20) auf der Grundlage der segmentveränderlichen Variablen und der Momentaufnahme; und Aktualisieren (210) wenigstens eines Teils der gesendeten Momentaufnahme und wenigstens eines Teils der segmentveränderlichen Variablen sowie Übertragen wenigstens eines Teils des aktualisierten Teils der gesendeten Momentaufnahme und wenigstens des Teils der aktualisierten segmentveränderlichen Variablen zurück an den Host (10).
  4. Verfahren zum Bereitstellen einer TCP/IP-Auslagerung gemäß Anspruch 3, wobei die TCP/IP-Offload-Engine (TOE) (20) über exklusiven Schreib-/Lese-Zugriff auf ausgelagerte segmentveränderliche Variablen verfügt, über Nur-Lese-Zugriff auf die segmentunveränderlichen Variablen verfügt und exklusiv die ausgelagerten segmentveränderlichen Variablen aktualisieren kann; und wobei der Host (10) über Lese-Schreib-Zugriff auf die segmentunveränderlichen Variablen verfügt.
DE602004012361T 2003-08-29 2004-07-26 Verfahren und Vorrichtung zum Offload von TCP/IP Protokoll unabhängig von Bandbreitenverzögerungsprodukt Active DE602004012361T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US652270 2003-08-29
US10/652,270 US7397800B2 (en) 2002-08-30 2003-08-29 Method and system for data placement of out-of-order (OOO) TCP segments

Publications (2)

Publication Number Publication Date
DE602004012361D1 DE602004012361D1 (de) 2008-04-24
DE602004012361T2 true DE602004012361T2 (de) 2009-03-26

Family

ID=34136641

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004012361T Active DE602004012361T2 (de) 2003-08-29 2004-07-26 Verfahren und Vorrichtung zum Offload von TCP/IP Protokoll unabhängig von Bandbreitenverzögerungsprodukt

Country Status (3)

Country Link
US (1) US7397800B2 (de)
EP (1) EP1513321B1 (de)
DE (1) DE602004012361T2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978379A (en) 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US7239636B2 (en) 2001-07-23 2007-07-03 Broadcom Corporation Multiple virtual channels for use in network devices
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7457845B2 (en) * 2002-08-23 2008-11-25 Broadcom Corporation Method and system for TCP/IP using generic buffers for non-posting TCP applications
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
EP1554842A4 (de) 2002-08-30 2010-01-27 Corporation Broadcom System und verfahren zum behandeln von ausserhalb der reihenfolge auftretenden rahmen
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
KR100449806B1 (ko) * 2002-12-23 2004-09-22 한국전자통신연구원 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치
US20050129039A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation RDMA network interface controller with cut-through implementation for aligned DDP segments
US20050286526A1 (en) * 2004-06-25 2005-12-29 Sood Sanjeev H Optimized algorithm for stream re-assembly
US20050286527A1 (en) * 2004-06-28 2005-12-29 Ivivity, Inc. TCP segment re-ordering in a high-speed TOE device
TWI237806B (en) * 2004-11-03 2005-08-11 Sunplus Technology Co Ltd Audio decoding system with ring buffer and method thereof
US7453879B1 (en) * 2005-04-04 2008-11-18 Sun Microsystems, Inc. Method and apparatus for determining the landing zone of a TCP packet
WO2006119773A1 (en) * 2005-05-13 2006-11-16 Ipblaze A/S Method and system for data packet processing
CN101253745B (zh) * 2005-07-18 2011-06-22 博通以色列研发公司 用于透明tcp卸载的方法和系统
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
US7599364B2 (en) * 2005-09-13 2009-10-06 Agere Systems Inc. Configurable network connection address forming hardware
US20070204076A1 (en) * 2006-02-28 2007-08-30 Agere Systems Inc. Method and apparatus for burst transfer
US7912060B1 (en) 2006-03-20 2011-03-22 Agere Systems Inc. Protocol accelerator and method of using same
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
US7610444B2 (en) * 2005-09-13 2009-10-27 Agere Systems Inc. Method and apparatus for disk address and transfer size management
TWI319277B (en) * 2005-11-03 2010-01-01 Draytek Corp Network flow/stream simulation method
US7792140B2 (en) * 2006-06-30 2010-09-07 Oracle America Inc. Reflecting the bandwidth assigned to a virtual network interface card through its link speed
US20080091868A1 (en) * 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
US7889685B2 (en) * 2006-12-22 2011-02-15 Intel Corporation System and method for platform resilient VoIP processing
US9239103B2 (en) 2013-07-03 2016-01-19 Gm Global Technology Operations, Llc Continuously variable transmission with chain output
KR102246945B1 (ko) * 2014-08-25 2021-04-30 삼성전자주식회사 저전력으로 원격 제어 가능한 전자 장치와 그 전자 장치를 제어하기 위한 네트워크 시스템 및 그 원격 제어 방법
US10320918B1 (en) * 2014-12-17 2019-06-11 Xilinx, Inc. Data-flow architecture for a TCP offload engine
US11444886B1 (en) * 2018-09-21 2022-09-13 Marvell Asia Pte Ltd Out of order packet buffer selection
CN110958213B (zh) 2018-09-27 2021-10-22 华为技术有限公司 处理tcp报文的方法、toe组件以及网络设备
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
DK3742748T3 (da) * 2019-05-21 2021-08-30 Siemens Gamesa Renewable Energy As Fremgangsmåde og overførselsindretning til overførsel af datablokke
CN112688764A (zh) * 2019-10-17 2021-04-20 苹果公司 利用网络部件管理持久连接
US11593120B1 (en) 2021-10-04 2023-02-28 Dell Products L.P. Secondary processor device ownership assignment system
CN114244785B (zh) * 2021-12-20 2022-12-06 中电信数智科技有限公司 5g数据流量乱序处理方法及其装置
CN114024924B (zh) * 2022-01-05 2022-04-12 北京安博通科技股份有限公司 一种tcp流重组方法、装置、电子设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699361A (en) 1995-07-18 1997-12-16 Industrial Technology Research Institute Multimedia channel formulation mechanism
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US5937169A (en) * 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6246684B1 (en) * 1997-12-24 2001-06-12 Nortel Networks Limited Method and apparatus for re-ordering data packets in a network environment
US6453357B1 (en) * 1999-01-07 2002-09-17 Cisco Technology, Inc. Method and system for processing fragments and their out-of-order delivery during address translation
US6335933B1 (en) * 1999-05-21 2002-01-01 Broadcom Homenetworking, Inc. Limited automatic repeat request protocol for frame-based communication channels
US6804815B1 (en) * 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
US6781992B1 (en) * 2000-11-30 2004-08-24 Netrake Corporation Queue engine for reassembling and reordering data packets in a network
US7760737B2 (en) * 2000-11-30 2010-07-20 Audiocodes, Inc. Method for reordering and reassembling data packets in a network
GB2372914B (en) * 2001-02-28 2003-12-24 3Com Corp Direct data placement and message reassembly
US6937606B2 (en) * 2001-04-20 2005-08-30 International Business Machines Corporation Data structures for efficient processing of IP fragmentation and reassembly
US7162630B2 (en) * 2001-08-31 2007-01-09 Adaptec, Inc. Systems and methods for implementing host-based security in a computer network
US20030046330A1 (en) * 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US7953093B2 (en) * 2001-09-06 2011-05-31 Broadcom Corporation TCP/IP reordering
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
US20050232298A1 (en) * 2004-04-19 2005-10-20 Beverly Harlan T Early direct memory access in network communications

Also Published As

Publication number Publication date
EP1513321A3 (de) 2005-09-14
US7397800B2 (en) 2008-07-08
EP1513321A2 (de) 2005-03-09
DE602004012361D1 (de) 2008-04-24
US20040133713A1 (en) 2004-07-08
EP1513321B1 (de) 2008-03-12

Similar Documents

Publication Publication Date Title
DE602004012361T2 (de) Verfahren und Vorrichtung zum Offload von TCP/IP Protokoll unabhängig von Bandbreitenverzögerungsprodukt
DE60305378T2 (de) Verfahren zum Weitergeben von einem Netzwerkstapel
DE60114942T2 (de) Verfahren und System für das Verwenden eines Kernnetz-Protokolls zur Verbesserung der Netzleistung
US8549152B2 (en) System and method for TCP/IP offload independent of bandwidth delay product
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE60317837T2 (de) Verfahren und System zur Messung von Last und Kapazität auf einem Kanal mit variabler Kapazität
DE60005396T2 (de) Verfahren und vorrichtung zur durchführung von netzwerkoperationen
DE60309527T2 (de) System und Verfahren zur Identifikation von Grenzen von Nachrichten höherer Schichten
DE69934226T2 (de) TCP/IP/PPP Modem
DE112015003004B4 (de) Hybrider Ansatz für leistungssteigernde Proxies
DE112013000411T5 (de) Benachrichtigung durch Netzwerkelement über Paketverluste
DE102009032581A1 (de) Management der Zeitsteuerung eines Protokollstapels
DE60311688T2 (de) Verfahren um Verbindungsverhandlungen für höhere Protokollschichten zu beschleunigen
DE112013004449T5 (de) Vorrichtung und Verfahren zum Optimieren von halbaktiven Auslastungen
DE112016001663T5 (de) Empfangen von Pufferkrediten durch eine Vielzahl von Kanälen von einer oder mehreren Host-Recheneinheiten, um Daten an eine Steuereinheit zu übertragen
DE102021134581A1 (de) Auslagerung von entschlüsselungsoperationen
DE202017105977U1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE102020105776A1 (de) Kostengünstige Überlastungsisolierung für verlustfreies Ethernet
DE112007000733T5 (de) Skalierung von ausgehendem Netzverkehr
DE102019104942A1 (de) Kommunikation einer Nachricht unter Verwendung einer Netzwerkschnittstellensteuerung in einem Subnetz
DE102022121268A1 (de) Überlastungssteuerung auf basis von netzwerktelemetrie
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE112004002544B4 (de) Verfahren, System und Programm zur Identifizierung von Datenüberlauf
DE60316969T2 (de) One-shot-rdma mit einem 2-bit-zustand

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M