-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft Datenkommunikationsnetze und insbesondere
die Vermeidung der Fragmentierung von Paketen in Datennetzen.
-
Hintergrund
der Erfindung
-
Die
Kommunikation zwischen Computern über paketbasierte Netze wird
im Allgemeinen als ein Prozess mit mehreren Schichten betrachtet.
Jede Schicht ist für
verschiedene Aspekte des Kommunikationsprozesses zuständig und
wird von unterschiedlichen Protokollen gesteuert. Beispielsweise umfasst
eine Dateiübertragung über das
Internet: eine Übermittlungsschicht
(auch als Schicht 2 bekannt), eine Netzschicht (Schicht 3), eine
Transportschicht (Schicht 4) und eine Anwendungsschicht (Schicht
7). Die Übermittlungsschicht
bildet die Schnittstelle zwischen der Hardware und der physikalischen
Verbindung zwischen den Kommunikationssystemen. Die Netzschicht
verarbeitet die Übermittlung
von Daten durch ein paketbasiertes Netz unter Verwendung eines Protokolls,
wie beispielsweise IP (Internetprotokoll). Die Transportschicht
sieht die Flusskontrolle für
Daten zwischen zwei Computern vor, unter Verwendung eines Protokolls
wie TCP (transmission control protocol, Übermittlungssteuerungsprotokoll).
Die Anwendungsschicht handhabt die Details einer bestimmten Anwendung
wie beispielsweise FTP (file transfer protocol, Datenübertragungsprotokoll).
In paketbasierten Netzen werden Daten in Einheiten übermittelt,
die Datagramme oder Pakete genannt werden. Im Allgemeinen umfasst
ein Paket einen Anwendungsdatenabschnitt, einen Netzschichtheader
und einen Transportschichtheader.
-
Jede
Kommunikationsverbindung in einem paketbasierten Netz weist im Allgemeinen
eine Beschränkung
hinsichtlich der maximalen Größe eines Pakets
auf, das es übertragen
kann. Diese maximale Größe wird
als die maximale Übertragungseinheit (MTU,
maximum transmission unit) der Verbindung bezeichnet. Beispielsweise
beschränken
Ethernet-Kommunikationsverbindungen
ein Paket auf die Größe von 1500
Bytes. Wenn zwei Computer über ein
Netz kommunizieren, wird die kleinste MTU des Kommunikationswegs
zwischen den zwei Computern die Weg-MTU genannt. Die Weg-MTU zwischen zwei
Computern kann für
die Richtungen unterschiedlich sein und/oder kann über die
Zeit auf Grund von Veränderungen
von Verbindungen, welche den Weg bilden, veränderlich sein.
-
Wenn
ein Router ein Paket empfängt,
welches die Größe übersteigt,
die er in der Verbindung zu dem Ziel des Pakets weiterleiten kann,
teilt der Router das Paket in kleinere Fragmente auf, so dass jedes
Fragment kleiner oder gleich der MTU ist. Jedes Fragment selbst
ist ein Paket, mit einem eigenen Netzschichtheader und wird unabhängig von
allen anderen Paketen gerouted. Jedes Fragmentpaket umfasst einen
neuen Netzschichtheader (der üblicherweise
eine Kopie des Netzschichtheaders des ursprünglichen Pakets ist) und eine
Fortführung
der Daten des ursprünglichen
Pakets. Der Transportschichtheader und jegliche spezifische Abschnitte des
Anwendungsschichtabschnitts werden nur in eines der Fragmente kopiert.
Typischerweise wird ein fragmentiertes Paket nicht wieder zusammengesetzt, bis
es sein endgültiges
Ziel erreicht hat. Wenn ein fragmentiertes Paket verloren geht,
muss das ursprüngliche
unfragmentierte Paket, dessen Teil es war, vollständig neu übertragen
werden.
-
Auf
Grund der großen
Anzahl von Clients, welche auf die Webseite zugreifen, auf Grund
des großen
Umfangs der Informationen, die von der Webseite bereitgestellt werden,
und/oder aus Redundanzzwecken werden viele Webseiten auf einer Vielzahl
von als Host arbeitender Server angeboten. Ein Lastausgleicher empfängt die
Pakete, die zu der Webseite geleitet werden und leitet diese an
einen jeweiligen Server basierend auf einen oder mehreren Parameter
weiter. Lastausgleicher werden auch für andere Zwecke eingesetzt,
beispielsweise zum Umleiten von HTTP-(ein Internetbrowserprotokoll)-Anfragen an einen
Proxy-Cache.
-
Einige
Lastausgleicher leiten Pakete basierend auf den Inhalten des Netzschichtheaders
des Pakets um. Andere Lastausgleicher leiten das Paket basierend
auf dem Lastschichtheader der Pakete oder auf Grund des Transportschichtheaders
und des Netzschichtheaders um. In weiteren Lastausgleichern werden
die Pakete basierend auf den Anwendungsdaten der Pakete und optional
basierend auf einem Teil ihrer Headerinformation umgeleitet. Ferner
erzeugen einige Lastausgleicher getrennte Verbindungen mit den Servern
und den Clients und bilden eine Bridge zwischen den getrennten Verbindungen
in einer Prozedur, die als Splicing bezeichnet wird.
-
Ein
Lastausgleicher muss alle Pakete eines fragmentierten Pakets an
den gleichen Server übertragen,
so dass diese von dem Server rekonstruiert werden können. Ein Lastausgleicher,
der Information verwendet, die über
diejenige hinausgeht, welche in dem Netzschichtheader vorgesehen
ist, hat nicht genug Information, um einen Lastausgleich von Fragmenten
neben dem ersten Fragment auszuführen, da
der Transportschichtheader und die Anwendungsdaten nicht in alle
Fragmente kopiert werden. Eine Lösung
für den
Lastausgleicher liegt darin, eine Tabelle zu führen, beispielsweise eine Fragmentüberwachungstabelle
(fragment control table, FCT), welche die Übersicht über alle fragmentierten Pakete, die
an dem Lastausgleicher ankommen, behält, bis alle Pakete, die aus
dem fragmentierten Paket erzeugt wurden, an einen jeweiligen Server
weitergeleitet wurden. Diese Lösung
führt eine
große
Menge an Overhead ein, wodurch die Leistungsfähigkeit des Lastausgleichers
beeinflusst wird und die Komplexität des Lastausgleichers erhöht wird.
-
Für weitere
Netzelemente wie Proxies und Firewalls ist es ebenfalls notwendig,
sich mit Problemen zu befassen, die sich durch fragmentierte Pakete
ergeben.
-
EP 1 202 508 A1 betrifft
ein Verfahren zur dynamischen Fragmentierung von Information. Es
wird eine Verfahren und eine Vorrichtung offenbart, um verzögerungsempfindliche
Information (delay sensitive information, DSI) und nicht verzögerungsempfindliche
Information (non-delay sensitive information, NDSI) über eine
Kommunikationsverbindung zu übertragen,
wobei die NDSI in einer effizienten und intelligenten Art und Weise
fragmentiert ist und die Fragmentierung auf Parametern der empfangenen DSI
basiert, um die Wahrscheinlichkeit von Übertragungskonflikten zwischen
der DSI und der NDSI zu verringern. DSI und NDSI werden über die
Kommunikationsverbindung in einer effizienten Art und Weise im Interleave-Verfahren
vorgesehen. Sowohl die NDSI als auch die DSI werden gemäß einem
Netzschichtprotokoll übertragen.
-
US
2002/0071436 A1 betrifft ein Verfahren und ein System zum Vorsehen
einer Verbindungsverwaltung. Gemäß dieser
US-Patentveröffentlichung wird
ein Kommunikationssystem offenbart, das eine Proxy-Architektur aufweist.
Das System umfasst eine Plattform, die Funktionen zur Verbesserung
der Leistungsfähigkeit
vorsieht. Die Plattform umfasst eine Manipulationsvorrichtung (spoofing
apparatus), die die Information innerhalb des Kommunikationssystems
routed. Die Manipulationsvorrichtung empfängt von der Plattform eine
Manipulationsauswahl und Manipulationsparameter und führt die
aktuellen Parameter in einen oder mehreren Manipulationsprofilen. Die
Manipulationsvorrichtung routed Informationspakete über das
Kommunikationssystem basierend auf der Manipulationsauswahl und/oder
basierend auf dem Manipulationsprofil. Die Manipulationsvorrichtung
kann ferner eine Kombination hinsichtlich Inkompatibilitäten der
maximalen Segmentgröße während des
Routens der Information vorsehen. Diese Kompensation kann eine dynamische
Größenanpassung
von Datensegmenten oder das Unterbinden einer Drei-Wege Handshake-Protokoll-Manipulation umfassen.
Die obige Anordnung ist insbesondere anwendbar für ein Kommunikationssystem
mit beschränkter
Bandbreite, beispielsweise ein Satellitennetz.
-
Zusammenfassung
der Erfindung
-
Ein
Aspekt einiger Ausführungen
der Erfindung betrifft ein Netzelement, welches eine Paketfragmentierung
aktiv vermeidet. In einigen Ausführungen
der Erfindung unterbricht das Netzelement die Verbindung, über die
das Paket empfangen wurde, wenn das Netzelement ein fragmentiertes
Paket empfängt
oder ein Paket empfängt,
welches größer als
die Größe ist,
die es ohne Fragmentierung übertragen
kann. Optional benachrichtigt das Netzelement den Client bevor die
Verbindung unterbrochen wird, um eine darauf folgende Verbindung
mit dem gleichen Ziel mit einer kleineren maximalen Paketgröße aufzubauen.
Alternativ oder in Kombination hierzu erzwingt das Netzelement die
Verbindung bei einer kleineren maximalen Paketgröße, wodurch die Fragmentierung
vermieden wird.
-
Ein
Aspekt einiger Ausführungen
der Erfindung betrifft ein Netzelement, welches einige Clients wiedererkennt
und anfänglich
eine Verbindung bei einer verringerten maximalen Paketgröße erzwingt. Optional überprüft das Netzelement
wiederholt periodisch die optimale Paketgröße für den Client, um zu erkennen,
ob die Kommunikationsverbindung verbessert wurde und eine größere Paketgröße unterstützen kann.
-
Ein
Aspekt einiger Ausführungen
der Erfindung betrifft ein Anwendungsschicht-Netzelement, welches die Verbindungen,
die es herstellt, dazu zwingt, mit maximalen Paketgrößen zu arbeiten,
welche keine Änderung
der Paketgröße bei der
Weiterleitung von Paketen zwischen den Verbindungen erforderlich
machen.
-
Daher
wird gemäß einer
Ausführung
der vorliegenden Erfindung ein Verfahren zur Vermeidung von Paketfragmentierung
vorgesehen, welches umfasst: Empfangen eines Datenpakets, das einer
Datenverbindung angehört;
Ermitteln, ob das empfangene Datenpaket fragmentiert war, oder Ermitteln,
ob zu erwarten ist, dass das empfangene Datanpaket auf dem Weg zu
seinem Ziel fragmentiert wird; und Registrieren der Datenverbindung
des empfangenen Pakets in einer Liste von Verbindungen, die Pakete übertrugen,
welche fragmentiert wurden, oder von denen zu erwarten war, dass
diese fragmentiert werden.
-
Optional
umfasst das Empfangen der Datenpakete das Empfangen eines Pakets,
welches einer TCP-Verbindung angehört. Optional werden das Empfangen
des Datenpakets und das Registrieren der Verbindung von einem Zwischen-Netzelement ausgeführt, welches
keine End-Einheit der Verbindung ist.
-
Optional
umfasst das Zwischen-Netzelement einen Lastausgleicher, eine Firewall
und/oder einen Proxy. Optional baut das Zwischen-Netzelement keine
TCP-Verbindung mit einer Quelle des Datenpakets auf. Alternativ
baut das Zwischen-Netzelement eine TCP-Verbindung mit einer Quelle des Datenpakets
auf. Optional umfasst das Ermitteln, ob das empfangene Datenpaket
fragmentiert wurde, oder das Ermitteln, ob zu erwarten ist, dass
das Datenpaket fragmentiert wird, das Ermitteln, ob ein Fragmentierungs-Flag
des Pakets gesetzt ist und/oder das Ermitteln, ob das Paket von
der Ermittlungseinheit zu fragmentieren ist.
-
Optional
umfasst das Ermitteln, ob das empfangene Paket fragmentiert wurde,
oder das Ermitteln, ob zu erwarten ist, dass das Datenpaket fragmentiert
wird, das Messen der maximalen Übertragungseinheit
(maximal transmission unit, MTU) eines Wegs zu dem Ziel des Pakets
und Ermitteln, ob das Paket größer als
die ermittelte maximale Übertragungseinheit
ist. Optional wird das Messen der MTU ausgeführt, bevor das Paket empfangen
wird. Alternativ wird das Messen der MTU nach dem Empfang des Pakets
ausgeführt.
Optional umfasst das Verfahren das Übertragen einer Fehlernachricht
an mindestens eine End-Einheit der Verbindung, welche die End-Einheit
anweist, eine Maximalpaketgröße zu verwenden,
die in der Fehlernachricht enthalten ist.
-
Optional
umfasst die maximale Paketgröße, die
in der Fehlernachricht enthalten ist, die Größe des empfangenen Pakets oder
eine Größe, die
sich von der Größe des empfangenen
Pakets unterscheidet. Optional umfasst die maximale Paketgröße, welche
in der Fehlernachricht enthalten ist, eine Größe, die als die MTU eines Wegs
ausgehend von einer Einrichtung, welche die Ermittlung ausführt, zu
einem Ziel des empfangenen Pakets ermittelt wurde.
-
Optional
umfasst das Verfahren das Identifizieren einer darauf folgenden
Anfrage, eine darauf folgende Verbindung auszubilden, mittels mindestens
einer der End-Einheiten der unterbrochenen Verbindung und das Erzwingen,
dass die darauf folgende Verbindung Pakete mit einer Größe bis zu
einer maximalen Größe verwendet,
die kleiner oder gleich der Größe des empfangenen
Pakets ist. Optional umfasst das Identifizieren einer darauf folgenden
Anfrage, eine darauf folgende Verbindung auszubilden, durch zumindest
eine der End-Einheiten der unterbrochenen Verbindung das Identifizieren
einer darauf folgenden Anfrage, eine Verbindung zwischen End-Einheiten
der unterbrochenen Verbindung aufzubauen.
-
Optional
umfasst das Verfahren das Registrieren der Datenverbindung des empfangenen
Pakets in einer Liste von Verbindungen, einschließlich des
Registrierens der Datenverbindung gemäß einer Identität einer
Quelle des Pakets. Optional umfasst das Verfahren das Unterbrechen
der Verbindung, der das Paket angehört, in Reaktion auf die Ermittlung, dass
das empfangene Paket fragmentiert wurde, oder dass zu erwarten ist,
dass es fragmentiert wird.
-
Ferner
wird gemäß einer
Ausführung
der vorliegenden Erfindung ein Verfahren zur Vermeidung von Paketfragmentierung
vorgesehen, welches das Empfangen eines Datenpakets, das einer Datenverbindung
angehört;
das Ermitteln, ob das empfangene Datenpaket fragmentiert wurde oder
Ermitteln, ob zu erwarten ist, dass das empfangene Datenpaket auf dem
Weg zu seinem Ziel fragmentiert wird; und das Unterbrechen der Verbindung
umfasst, zu der das Paket angehört,
in Reaktion auf eine Ermittlung, dass das empfangene Datenpaket
fragmentiert wurde, oder zu erwarten ist, dass es fragmentiert wird.
-
Optional
umfasst das Unterbrechen der Verbindung das Senden einer Zurücksetzungs-Nachricht über die
Verbindung und/oder das Verwerfen des empfangenen Pakets. Optional
wird eine Nachricht an mindestens eine End-Einheit der Verbindung gesendet,
durch die die End-Einheit dazu veranlasst wird, eine Maximalgröße zu verwenden,
die von der Nachricht umfasst wird.
-
Ferner
wird gemäß einer
Ausführung
der vorliegenden Erfindung ein Netzelement vorgesehen, das eine
Eingangsschnittstelle, die eingerichtet ist, Datenpakete zu empfangen,
eine Ermittlungseinheit, die eingerichtet ist, für mindestens einige der empfangenen
Datenpakete zu ermitteln, ob das Paket fragmentiert wurde, oder
ob zu erwarten ist, dass das Datenpaket auf dem Weg zu seinen Zielen
fragmentiert wird, und eine Verwerfungseinheit umfasst, die eingerichtet
ist, Pakete zu verwerfen, für
die ermittelt wurde, dass das Paket fragmentiert wurde, oder dass zu
erwarten ist, dass es fragmentiert wird.
-
Optional
umfasst das Netzelement einen Lastausgleicher. Optional umfasst
das Netzelement eine Sendeeinheit, die eingerichtet ist, Fehlnachrichten
an Quellen der Pakete zu senden, die von der Verwerfungseinheit
verworfen wurden.
-
Ferner
wird gemäß einer
Ausführung
der vorliegenden Erfindung ein Verfahren zum Aufbauen einer Verbindung
zwischen einem Client und einem Netzelement vorgesehen, welches
das Ermitteln einer minimalen MTU zwischen dem Netzelement und zumindest
einem Server, der eine Verbindung zwischen dem Netzelement und dem
Client aufbaut, und das Übertragen
ausgehend von dem Netzelement an den Client einer maximalen Größe für zu übertragende
Pakete auf der aufgebauten Verbindung umfasst, wobei die maximale
Größe in Reaktion
auf die ermittelte minimale MTU ermittelt wurde.
-
Optional
umfasst die maximale Größe von Paketen,
die an den Client übertragen
werden, den minimalen MTU-Wert zumindest eines Servers. Optional
umfasst der zumindest eine Server eine Vielzahl von Servern; und
die maximale Größe der Pakete, die
an den Client übertragen
werden, umfassen einen MTU-Wert eines Servers, von dem angenommen
wird, dass dieser den Client bedient.
-
Optional
umfasst das Ermitteln der minimalen MTU ein Bezugnehmen auf eine
vorbestimmte Liste von MTUs des zumindest einen Servers. Optional
umfasst das Ermitteln der minimalen MTU das Übertragen der MTU-Messpakete
an zumindest einen der Server.
-
Ferner
wird gemäß einer
Ausführung
der vorliegenden Erfindung ein Verfahren zur Vermeidung von Fragmentierung
vorgesehen, welches das Empfangen einer Anfrage, eine Verbindung
aufzubauen, Vergleichen eines Werts zumindest eines Felds der Anfrage
mit einer Liste von Werten des Felds und der jeweiligen maximalen
Paketgrößen, sowie
das Aufbauen einer Verbindung in Reaktion auf die empfangene Anfrage
umfasst, die eine maximale Paketgröße ausgehend von einem Eintrag
der Liste, der zu dem Wert des zumindest einen Felds der empfangenen
Anfrage aufweist.
-
Optional
umfasst das mindestens eine Feld ein Quelladressfeld. Optional bezieht
sich die maximale Paketgröße auf Pakete,
die in der gleichen Richtung wie die empfangene Anfrage, eine Verbindung
aufzubauen, übertragen
wurden. Optional werden das Empfangen der Anfrage und das Vergleichen
des Werts mit der Liste von einem Zwischen-Netz ausgeführt, welches
keine End-Einheit der Verbindung ist.
-
Weitere
Ausführungen
gemäß der vorliegenden
Erfindung sind in den abhängigen
Ansprüchen ausgeführt.
-
Kurze Beschreibung
der Zeichnungen
-
Einzelne
beispielhafte Ausführungen
der Erfindung werden gemäß der folgenden
Beschreibung der Ausführungen
in Verbindung mit den Figuren beschrieben, wobei gleiche Strukturen,
Elemente oder Teile, die in mehr als in einer Figur auftreten, vorzugsweise
mit der gleichen oder ähnlichen
einer Nummer in allen Figuren gezeichnet werden, in denen diese auftreten,
wobei:
-
1 ein
schematisches Blockdiagramm einer Serverfarm ist, die zur Erklärung einer
Ausführungen
der vorliegenden Erfindung hilfreich ist; und
-
2 ein
Flussdiagramm eines Prozesses zur aktiven Vermeidung des Empfangs
fragmentierter Pakete ist, gemäß einer
Ausführung
der vorliegenden Erfindung.
-
Detaillierte
Beschreibung der Ausführungen
-
Die 1 ist
ein schematisches Blockdiagramm einer Serverfarm 100 gemäß einer
Ausführung
der vorliegenden Erfindung.
-
Die
Serverfarm 100 umfasst eine Vielzahl von Servern 102,
die Seiten einer oder mehrerer Webauftritte als Host bereitstellen.
Client-Computer 106 leiten Anfragenachrichten an die Server 102 weiter,
beispielsweise über
das Internet 110. Ein Lastausgleicher 104 empfängt die
Nachrichten, die von den Clients 106 zu den Servern 102 gelenkt
werden, und leitet jede Nachricht an einen der Server 102 weiter,
der gemäß einem
im Wesentlichen beliebigen bekannten Ausgleichsverfahren ausgewählt wird.
Antwortpakete, die ausgehend von dem Servern 102 geleitet
werden, werden optional an den Lastausgleicher 104 gesendet,
der die Antwortpakete an den Client 106 weiterleitet. Alternativ
oder in Kombination hierzu werden Antwortpakete ausgehend von den Servern 102 direkt
an die Clients 106 weitergeleitet, ohne dass diese durch
den Lastausgleicher 104 geleitet werden.
-
In
einer beispielhaften Ausführung
der Erfindung handhabt der Lastausgleicher 104 eine Liste 108 von
Clients 106 und jeweiligen maximalen nicht-fragmentierten
Paketgrößen, die
für Verbindungen
mit den Clients zu verwenden sind. In einigen Ausführungen
der Erfindung werden die Clients 106 in der Liste 108 gemäß ihrer
IP-Adresse identifiziert. Die Verwendung der Liste 108 ist
im Weiteren beschrieben.
-
Die 2 ist
ein Flussdiagramm 150 der Schritte eines Prozesses zum
aktiven Vermeiden des Empfangens fragmentierter Pakete, der von
einem Netzelement, beispielsweise einem Lastausgleicher 104 ausgeführt wird,
gemäß einiger
Ausführung
der vorliegenden Erfindung. Mit dem Schritt 152 trifft
ein Paket an dem Lastausgleicher 104 ein. Mit dem Schritt 154 überprüft der Lastausgleicher 104 optional,
ob das Paket eine Verbindungsanfrage ist. Wenn das Paket keine Verbindungsanfrage
ist, fährt
der Lastausgleicher 104 mit der Überprüfung fort, beispielsweise gemäß dem fragmentierten
Feld des Netzschichtheaders, wenn das angekommene Paket von einem
fragmentierten Paket abgeleitet ist (156).
-
Wenn
das Paket nicht von einem fragmentierten Paket stammt, wird es an
einen Server weitergeleitet (158), gemäß der Verbindung, zu der das
Paket gehört,
wie aus dem Stand der Technik bekannt ist. Wenn das Paket von einem
fragmentierten Paket stammt, fügt
der Lastausgleicher 104 optional die Details des Clients 106 zu
der Liste 108 hinzu (160). Gemäß Schritt 160 verwirft
der Lastausgleicher 104 optional die Pakete und/oder beendet
die Verbindung, der die Pakete angehören (162).
-
In
einigen Ausführungen
der Erfindung wird eine Fehlernachricht an Client 106 gesendet,
beispielsweise ein ICMP-Nichterreichbarkeitsfehler, in dem das aktuelle
Paket zurückgewiesen
wird. Optional gibt die Fehlernachricht eine maximale Paketgröße an, die
von dem Client 106 zu verwenden ist. In einigen Ausführungen
der Erfindung ist die maximale Paketgröße in der Fehlernachricht der
Liste 108 entnommen. Alternativ wird die maximale Paketgröße in der
Fehlernachricht gemäß der Größe des empfangenen
fragmentierten Pakets ermittelt.
-
Alternativ
oder in Kombination zu dem Senden einer Fehlernachricht erzwingt
der Lastausgleicher 104 eine kleinere Paketgröße für die neue
Verbindung, basierend auf der maximalen Größe, die in der Liste 108 registriert
ist, wenn der Client 106 den Aufbau einer Neuverbindung
versucht, wie im Weiteren in Schritt 168 dargestellt ist.
-
In
einigen Ausführungen
der Erfindung wird die Verbindung von dem Lastausgleicher 104 beendet,
wie oben in Schritt 162 beschrieben ist. Optional wird
die Verbindung von Client 106 und/oder Server 102 durch
eine Timing-Out-Prozedur beendet, wobei dies durch das Verwerfen
von Paketen durch den Lastausgleicher 104 veranlasst wurde.
Alternativ oder in Kombination hierzu beendet der Lastausgleicher 104 die
Verbindung aktiv durch Übermittlung
einer Unterbrechungsnachricht an den Client 106 und/oder
an den Server 102. Die Verbindungsnachricht kann beispielsweise
eine TCP-Nachricht mit einem gesetzten Zurücksetzungs-Flag umfassen.
-
Wenn
(154) das angekommene Paket eine Verbindungsanfrage ist, überprüft der Lastausgleicher 104 optional,
ob sich der Client 106 in der Liste 108 befindet
(164). Wenn der Client 106 in der Liste 108 aufgezeichnet
ist, erzwingt (168) der Lastausgleicher 104, dass
die mit dem Client 106 aufgebaute Verbindung eine maximale
Paketgröße aufweist,
wie sie für
den Client in der Liste 108 aufgezeichnet ist. In einigen
Ausführungen
der Erfindung wird die maximale Paketgröße erzwungen, in dem ein Antwortpaket,
welches von dem Server 102 an den Client 106 gerichtet
ist, abgefangen wird, und indem der Parameter der maximalen Segmentgröße (maximal
segment size, MSS) des Pakets eingestellt wird. Optional wird das
Einstellen des MSS-Felds nur ausgeführt, wenn das abgefangene Paket
kein MSS-Feld aufweist, oder der MSS-Wert des abgefangenen Pakets größer als
der Wert ist, der von dem Lastausgleicher 104 erzwungen
wird. Wenn jedoch das MSS-Feld des abgefangenen Pakets einen kleineren
Wert aufweist, lässt
der Lastausgleicher 104 den kleineren Wert unverändert, da
der aktuelle Wert für
eine Netzliste notwendig sein kann, die nicht von dem Lastausgleicher 104 kontrolliert
wird. Optional unterbricht der Lastausgleicher 104 bei
der Auswahl der maximalen Paketgröße der Verbindung nicht (166),
wenn (164) der Client 106 nicht in der Liste 108 registriert
ist.
-
In
einigen Ausfühungen
der Erfindung ermittelt der Lastausgleicher 104 aktiv die
maximale Paketgröße (d.h.
die MTU), die von dem Client ohne Fragmentierung übertragen
werden kann, wenn ein fragmentiertes Paket von dem Lastausgleicher 104 empfangen
wird. Der aktiv ermittelte Wert wird dann in der Liste 108 und/oder
in der übermittelten
Fehlernachricht verwendet. Das aktive Ermitteln der Weg-MTU ist
nützlich,
um zu überprüfen, ob
die Paketfragmentierung durch eine zufällige Störung verursacht wurde, oder
ob dies ein Merkmal der Verbindung mit dem Client ist. Das aktive
Ermitteln der maximalen Paketgröße wird
optional unter einer beliebigen bekannten MTU-Erlangungsmethode ausgeführt, beispielsweise
durch Übertragen
von Ping-Paketen und/oder Traceroute-Paketen mit oder ohne Nichtfragmentierungs-Bits.
In einigen Ausführungen der
Erfindung wird ein Verfahren verwendet, welches die MTU zwischen
Lastausgleicher 104 und dem Client bestimmt, und es wird
angenommen, dass der Weg von dem Client zu dem Lastausgleicher 104 die gleiche
MTU hat wie der Weg ausgehend von dem Lastausgleicher 104 zu
dem Client. Alternativ oder in Kombination hierzu wird ein Verfahren
verwendet, dass die MTU zwischen Client und Lastausgleicher 104 ermittelt,
beispielsweise ein Verfahren, dass die Antwort-Ping-Pakete von dem
Client untersucht.
-
Wie
oben beschrieben sind in einigen Ausführungen der Erfindung die Clients 106 in
der Liste 108 eingetragen, wenn ein fragmentiertes Paket
von dem Client 106 übertragen
wird. Optional werden Clients 106, die für länger als
für eine
vorbestimmte Zeitdauer die von dem Lastausgleicher 104 bediente Webseite
nicht verbinden, aus der Liste 108 entfernt. Alternativ
werden die Einträge
der Liste 108 von der Liste nach einer vorbestimmten Zeitdauer
(beispielsweise ein Tag, eine Woche) entfernt, nachdem diese erzeugt
wurden, unabhängig
von deren Nutzung, so dass die MTU des Wegs zu den Clients 106 periodisch
wiederholt untersucht wird. Ferner werden alternativ Einträge von der
Liste 108 nur entfernt, um Platz für Neueinträge zu schaffen, wenn die Liste
voll ist. Optional wird in solchen Fällen der älteste Eintrag, der Eintrag
der für
die längste
Zeit nicht verwendet wurde, oder der am wenigsten benutzte Eintrag von
der Liste 108 entfernt, um Platz für den neuen Eintrag zu schaffen.
-
In
einigen Ausführungen
der Erfindung sind ein oder mehrere Clients 106 in der
Liste 108 basierend auf vorbestimmten Daten eingetragen,
beispielsweise die Teilnahme des Clients an der Seite, die von dem
Lastausgleicher 104 bedient wird. Optional ermittelt der
Lastausgleicher 104 bei der Teilnahme des Clients an der
Seite die MTU des Wegs, der von den Clients 106 zu dem
Lastausgleicher 104 führt,
und registriert die Client-ID und die zugehörige MTU in der Liste 108.
-
In
einigen Ausführungen
der Erfindung ermittelt der Lastausgleicher 104 aktiv periodisch
die Weg-MTU der Clients, die in der Liste 108 eingetragen
sind, um zu verifizieren, dass die Daten in der Liste 108 aktuell
sind. In einigen Ausführungen
der Erfindung wird eine periodische Ermittlung nur für Clients 106 ausgeführt, die
auf den Lastausgleicher 104 für mehr als eine vorbestimmte
Zeitdauer nicht zugegriffen haben.
-
In
einigen Ausführungen
der Erfindung verursacht der Lastausgleicher 104 keine
Unterbrechung einiger Verbindungen, obwohl die Verbindung fragmentierte
Pakete überträgt. Optional
wird eine Verbindung, die für
eine vorbestimmte Anzahl von Malen aufeinanderfolgend unterbrochen
wurde, nicht erneut unterbrochen, um nicht zu verhindern, dass der
Client mit der Webseite verbunden ist. Wenn beispielsweise die Weg-MTU zwischen einem
Client 106 und einem Lastausgleicher 104 kleiner
als eine Übertragungsgröße ist,
die der Client 106 tatsächlich einhalten
kann, wird es dem Client gestattet, eine Verbindung auszuführen, auch
wenn der Lastausgleicher 104 fragmentierte Pakete empfängt. In
einigen Ausführungen
der Erfindung verfolgt der Lastausgleicher 104 die Clients,
denen es gestattet ist, mit fragmentierten Paketen eine Verbindung
auszuführen,
und versucht nicht, eine geringe maximale Übertragungsgröße für diese
Clients durchzusetzen. Alternativ wird es einem Client 106,
der die Paketgrößenerfordernisse
eines Lastausgleichers 104 nicht erfüllen kann, nicht gestattet,
eine Verbindung vorzusehen.
-
Obwohl
die oben genannte Beschreibung sich auf das Verhindern des Empfangs
fragmentierter Pakete von dem Client 106 bezieht, können die
oben genannten Verfahren auch verwendet werden, um den Empfang fragmentierter
Pakete in der anderen Richtung, d. h. ausgehend von den Servern 102,
zu vermeiden.
-
In
einigen Ausführungen
der Erfindung schließt
der Lastausgleicher 104 auch Verbindungen, die den Lastausgleicher
dazu zwingen, Pakete zu fragmentieren. Optional handhabt in diesen
Ausführungen,
wenn der Lastausgleicher 104 ein Paket einer Größe empfängt, die
der Lastausgleicher nicht zu seinem Ziel ohne Fragmentierung weiterleiten
kann, der Lastausgleicher 104 Pakete mittels einer der oben
beschriebenen Verfahren zum Handhaben empfangener fragmentierter
Pakete.
-
In
einigen Ausführungen
der Erfindung schließt
der Lastausgleicher 104 ferner Verbindungen, auf denen
Pakete, die von dem Lastausgleicher 104 an die Server 102 übertragen
werden, die auf ihrem Weg zu dem Server 102 nach dem Lastausgleicher 104 fragmentiert
werden. Optional ermittelt der Lastausgleicher 104 periodisch
und/oder beim Hochfahren die MTU der Wege zu jedem der Server 102. Wenn
ein Paket von dem Lastausgleicher 104 empfangen wird, ermittelt
der Lastausgleicher 104 optional, ob die Größe des Pakets
größer als
die MTU des jeweiligen Servers 102 ist. Wenn die Größe des Pakets
größer als
die MTU zu dem jeweiligen Server 102 ist, verwendet der
Lastausgleicher eines der Verfahren, die oben in Verbindung mit
den fragmentierten Paketen beschrieben sind. In einer beispielhaften Ausführung der
Erfindung schließt
der Server 102 die Verbindung und zwingt eine darauf folgende
Verbindung, die von dem gleichen Client 106 ausgeht, eine maximale
Paketgröße zu verwenden,
die kleiner als die MTU zu dem Server ist, der den Client bedient.
In einigen Ausführungsformen
der Erfindung gibt die Liste 108 für jeden Client 106 das
Minimum der MTU des Wegs an, der von dem Client 106'' zu dem Lastausgleicher 104 führt, und
des Wegs, der von dem Lastausgleicher 104 zu dem jeweiligen
Server 102 führt.
-
Optional
wird die Ermittlung, ob das Paket fragmentiert ist, und die Ermittlung,
ob das Paket größer als
die MTU des Wegs zu dem Server ist, zusammen ausgeführt. Das
heißt,
dass für
jedes von dem Lastausgleicher 104 empfangene Paket der
Lastausgleicher ermittelt, ob das Paket fragmentiert ist, oder ob
es größer als
die MTU des Wegs zu dem jeweiligen Server 102 des Pakets
(hier als Server-MTU bezeichnet) ist. Wenn das Paket fragmentiert
ist oder größer als
die Server-MTU ist, schließt
der Lastausgleicher 104 optional die Verbindung des Pakets
und führt
das Minimum der Paketgröße und die
Server-MTU in der Liste 108 für den Client 106 auf,
der das Paket sendet.
-
In
einigen Ausführungen
der Erfindung sind alle Server 102 auf einem LAN mit einem
Lastausgleicher 104 angeordnet und die minimale MTU für alle Server 102 ist
die gleiche, beispielsweise 1500 Bytes (Ethernet-Kapselung). In
anderen Ausführungen
der Erfindung haben verschiedene Server 102 verschiedene
Server-MTUs. Optional wird in einigen dieser Ausführungen,
wenn eine Verbindung auf Grund kleiner Server-MTU unterbrochen wird,
der Verbindung gestattet, mit einem anderen Server 102 wieder
aufgebaut zu werden, der eine größere Server-MTU
hat.
-
In
einigen Ausführungen
der Erfindung erzwingt sogar vor der Identifizierung, dass eine
Verbindung, die von einem Client ausgeht, Pakete trägt, die
eine Fragmentierung erfordern, der Lastausgleicher 104 eine
maximale Paketgröße, von
der zu erwarten ist, dass eine Fragmentierung vermieden wird. Optional
erzwingt der Lastausgleicher 104 bei jeder neuen Verbindung
eine maximale Paketgröße, die
gleich der größten Server-MTU
ist. Alternativ oder in Kombination hierzu zwingt der Lastausgleicher 104 auf
einigen Client-Verbindungen
die Clients der Server-MTU der Server 102, die von dem
Lastausgleicher 104 bedient werden. In einigen Ausführungen
der Erfindung wählt
der Lastausgleicher 104 den Server 102, der den
Client 106 bedienen muss, bevor die maximale Paketgröße von dem
Lastausgleicher 104 eingeführt werden muss, und die eingeführte maximale
Paketgröße wird
gemäß dem gewählten Server 102 ausgewählt. Alternativ
wählt der
Lastausgleicher 104 den Server 102, der den Client 106 bedienen
muss, nachdem die maximale Paketgröße von dem Lastausgleicher 104 eingeführt wird.
Die eingeführte
maximale Paketgröße wird
basierend auf einer Schätzung
der Auswahl des Servers 102 gewählt, beispielsweise basierend
auf den relativen Lasten des Servers. Optional führt für Clients 106, die
vorher mit dem Lastausgleicher 104 verbunden waren, die Liste 108 die
einzuführende
maximale Paketgröße und optional
eine Gruppe von Servern 102, die den Client mit der eingeführten maximalen
Paketgröße bedienen
können.
Der Server 102, der den Client 106 bedient, wird
optional aus der Liste jeweiliger Server 102 für den Client
in der Liste 108 ausgewählt.
-
In
einigen Ausführungen
der Erfindung überprüft der Lastausgleicher 104 fragmentierte
Pakete über
die gesamte Dauer der Verbindung. Alternativ oder in Kombination
hierzu überprüft der Lastausgleicher 104 nur
eine vorbestimmte Anzahl an Paketen, die durch die Verbindung laufen,
nachdem die Verbindung aufgebaut wurde, um die Verarbeitungsanforderungen
des Lastausgleichers 104 zu verringern. Danach wird erwartet,
dass die gleichen Paketgrößen über die
Dauer der Verbindung verwendet werden, und daher sind weitere Überprüfungen überflüssig.
-
Es
ist zu bemerken, dass der Lastausgleicher 104 gemäß einer
im Wesentlichen beliebigen Lastausgleichsmethode und/oder Verbindungsaufbaumethode
gemäß dem Stand
der Technik betrieben werden kann. Insbesondere kann der Lastausgleicher 104 Server 102 gemäß beispielsweise
Netzschichtdaten, Transportschichtdaten und/oder Anwendungsschichtdaten
auswählen.
Ferner kann der Lastausgleicher 104 beispielsweise gemäß Triangulation,
Halb-NAT, M1-NAT und/oder Aufteilungsverfahren betrieben werden.
-
Die
obige Beschreibung des Verfahrens von 2, in der
der Lastausgleicher 104 die Fragmentierung verhindert,
ist unter der Annahme dargelegt, dass der Lastausgleicher 104 in
eine Verbindung eingreift, die direkt zwischen dem Client 106 und
einem Server 102 aufgebaut ist. Wie bereits bemerkt, baut jedoch
in einigen Ausführungen
der Erfindung der Lastausgleicher 104 getrennte Verbindungen
mit dem Client 106 und dem Server 102 auf. In
diesen Ausführungen
erzwingt der Lastausgleicher 104 optional, dass maximale
Paketgrößen sowohl
in Verbindungen, die keine Fragmentierung auf jeder der Verbindungen
erfordern, und/oder während
der Übertragung
der Pakete zwischen den Verbindungen verwendet werden. In einer
beispielhaften Ausführung der
Erfindung beeinflusst der Lastausgleicher 104 die maximale
Paketgröße durch
Setzen des MSS-Felds für
die aufgebauten Verbindungen. Daher ändert in diesen beispielhaften
Ausführungen
der Lastausgleicher 104 Pakete nicht, die von anderen Entities
erstellt wurden, beeinflusst jedoch die Werte der Felder von Paketen,
die von dem Lastausgleicher 104 selbst erzeugt wurden.
-
In
einigen Ausführungen
der Erfindung baut der Lastausgleicher 104 vorab Verbindungen
zwischen dem Lastausgleicher 104 und den Servern 102 auf,
wie in der US-Patentanmeldung
09/793,455, eingereicht am 26. Februar 2001, beschrieben ist.
-
Es
wird bemerkt, dass der Lastausgleicher 104 in Hardware,
Software oder einer beliebigen Kombination hiervon implementiert
werden kann. Optional umfasst der Lastausgleicher 104 eine
Hardwareeinheit, die Pakete von nicht-fragmentierten Paketen handhabt
und Pakete von fragmentierten Paketen an einen Prozessor überträgt, auf
dem ein Softwaremodul abläuft.
-
Es
ist zu bemerken, dass, obwohl die oben genannte Beschreibung im
Allgemeinen einen Lastausgleicher betrifft, der eine Serverfarm
bedient, in anderen Ausführungen
der Erfindung die Verfahren zum Verhindern der Fragmentierung in
der vorliegenden Erfindung von anderen Lastausgleichern ausgeführt werden,
beispielsweise von Lastausgleichern, die eine Cache-Umleitung ausführen. In
weiteren Ausführungen
der Erfindung werden die oben beschriebenen Verfahren zum Verhindern
der Fragmentierung von einem beliebigen anderen Netzelement ausgeführt, einschließlich Proxies,
Firewalls und/oder verschiedene Typen von Routern.
-
Wie
oben beschrieben können
die Verfahren der vorliegenden Erfindung auf Netzelementen ausgeführt werden,
die eine TCP-Terminierung ausführen,
und/oder auf Netzelementen, die keine TCP-Terminierung ausführen. Ferner
kann es in einigen Fällen
vorteilhaft sein, diese oben beschriebenen Verfahren mittels eines
der Endpunkte einer Verbindung umzusetzen, obwohl die oben genannte
Beschreibung Zwischen-Netzelemente betrifft, die Fragmentierung
als Zwischenelemente verhindern. Das heißt, dass der Endpunkt der Verbindung
optional die Verbindungen schließt, auf denen fragmentierte
Pakete empfangen werden, Fehlernachrichten zu der Quelle des Pakets überträgt, und/oder erzwingt,
dass darauf folgende Verbindungen mit maximalen Paketgrößen Verbindungen
vorsehen, die Fragmentierungen verhindern.
-
Es
ist ferner zu bemerken, dass, obwohl die vorliegende Erfindung bezug
nehmend auf die TCP-IP-Protokollsuite beschrieben wurde, einige Ausführungen
der Erfindung mit Bezug auf andere paketbasierte Übertragungsprotokolle
implementiert werden können,
beispielsweise IPX, DECNET und die Protokolle des ISO-Standards.
Ferner, obwohl die oben genannte Beschreibung HTTP-Protokolle betrifft,
können
die Grundsätze
der Erfindung mit anderen Anwendungsprotokollen verwendet werden,
beispielsweise HTTPS, das FTP-Protokoll und/oder im Wesentlichen
jedes andere Protokoll über
TCP oder über
ein dazu ähnlichen
Protokoll.
-
Es
ist ersichtlich, dass die oben beschriebenen Verfahren in zahlreicher
Hinsicht variiert werden können,
einschließlich
der Änderung
der Reihenfolge der Schritte, und die genaue verwendete Implementierung.
Beispielsweise kann die Überprüfung, ob
das Paket fragmentiert ist, durchgeführt werden, bevor überprüft wird,
ob das Paket eine Verbindungsanfrage ist. Es sollte ferner bemerkt
werden, dass die oben dargelegte Beschreibung der Verfahren und
Vorrichtungen dahingehend zu interpretieren ist, dass Vorrichtungen
zum Ausführen
der Verfahren sowie Verfahren der Verwendung der Vorrichtungen umfasst sind.
-
Es
ist zu bemerken, dass nach Ansicht der Erfinder einige der oben
beschriebenen Ausführungen
die beste Möglichkeit
zum Ausführen
der Erfindung beschreiben, und daher Strukturen, Schritte oder Details
von Strukturen sowie Maßnahmen,
die für
die Erfindung nicht wesentlich sind, und die als Beispiele beschrieben
sind, umfassen können.
Die beschriebene Strukturen und Maßnahmen sind durch Äquivalente
ersetzbar, die die gleiche Funktion ausführen, auch wenn sich die Strukturen
oder Maßnahmen
unterscheiden, wie aus dem Stand der Technik bekannt ist. Daher
ist der Umfang der Erfindung nur durch die Elemente und Einschränkungen
beschränkt,
die in den Ansprüchen
verwendet werden. Die Ausdrücke „umfassen", „beinhalten" und „aufweisen" und deren konjugierte
Formen bedeuten „umfassen,
jedoch nicht darauf beschränkt", wenn sie in den
folgenden Ansprüchen
verwendet werden.
-
- 100
- Serverfarm
- 102
- Server
- 104
- Lastausgleicher
- 106
- Client
- 108
- Liste
- 110
- Internet
- 150
- Flussdiagramm
- 152
- Paketankunft
- 154
- Überprüfen des
Pakets
- 156
- Überprüfen hinsichtlich
fragmentierten Pakets
- 158
- Server
- 160
- Hinzufügungsschritt
- 162
- Terminierung/Verwerfungsschritt
- 164
- Listenüberprüfungs-Schritt
- 166
- Nicht-Unterbrechungs-Schritt
- 168
- Ermittlung
kleinerer Paketgröße
- IP
- Internetprotokoll
- MTU
- maximale Übertragungseinheit,
maximum transmission unit
- FCT
- Fragmentkontrolltabelle,
fragment control table
- TCP
- Übertragungssteuerungsprotokoll,
transmission control protocol