-
1. Gebiet
der Erfindung
-
Die
vorliegende Erfindung betrifft ein digitales Computersystem gemäß Anspruch
1 und ein Verfahren zum Antworten auf eine über ein externes Netzwerk empfangene
Anfrage gemäß Anspruch
18 und nimmt starken Bezug auf ein verteiltes Betriebssystem für ein digitales
Computersystem. Die Erfindung ist insbesondere relevant für einen
Hochgeschwindigkeitsserver, in dem unterschiedliche Funktionen der
Zustandsmaschine des Servers über
eine Vielzahl von Prozessoren verteilt sind, auf denen eine Vielzahl
von Betriebssystemen läuft.
-
2. Beschreibung des Standes
der Technik
-
Die
Explosion in der Verwendung des World Wide Web über das globale Internet hat
einen entsprechenden Bedarf an Servern erzeugt, die die Fähigkeit
besitzen, große
Webseiten mit erhöhter
Geschwindigkeit und Zuverlässigkeit
unterzubriNgen. Das Internet verwendet Glasfaserkabel und Hochgeschwindigkeitsschaltungen
und -router, um alle Formen digitalen Inhalts wie z. B. Sprache,
Daten und Video mit Gigabit-Datenübertragungsraten (bald Terabit-Datenübertragungsraten) über den
Erdball zu tragen. Im Internet ist die maximale Anzahl von Benutzern,
die ein Server unterstützen
muss, nicht vorhersagbar und variabel und kann von einer Handvoll
Benutzern zu potentiell Millionen von Benutzern reichen, im Gegensatz
zu den lokalen Netzwerken (LANS), bei denen die maximale Anzahl
von Benutzern relativ klein ist. Demzufolge besteht ein Bedarf an
Servern zur Verwendung im Internet, die eine große Anzahl von Benutzern unterstützen können und
die mit Terabit-Datenübertragungsraten
arbeiten.
-
Eine
allgemeine Lösung
zum Betreiben einer großen
Webseite besteht im Aufbau einer Server-Farm. Der Aufbau einer Server-Farm
bedingt die Verbindung einer Vielzahl von Servern (vielleicht Hunderte)
mit verschiedenen Netzwerkschemen, um sich einem einzelnen leistungsfähigeren
System anzunähern.
Der Aufbau und der Betrieb einer Server-Farm ist typischerweise
ein kostspieliges Unterfangen, da Server-Farmen eine große Menge
von Platz benötigen,
der mit spezialisierten Kühl-
und Energieeinrichtungen ausgerüstet
sein muss. Zusätzlich
benötigen
Server-Farmen normalerweise Personal von Wartungstechnikern. Server-Farmen sind
im Allgemeinen komplex und auf Grund eines übermäßigen Betrags von Ausfallzeit
unzuverlässig.
Ein weiterer Nachteil von Server-Farmen besteht darin, dass sie
nicht die Leistung und Skalierbarkeit bereitstellen können, die
oft von großen
und wachsenden Webseiten benötigt
werden.
-
Lastverteilung
ist ein gut bekanntes Verfahren, um die Unzuverlässigkeit und Nicht-Ansprechempfindlichkeit
von Server-Farmen zu verringern. Ein Lastverteiler ist eine Computer-
oder Netzwerkeinrichtung, die eintreffende Anfragen an die Server-Farm
empfängt
und dann unter Verwendung einer Vielzahl von Verfahren auswählt, welche/r
Server innerhalb der Server-Farm
am Besten zum Antworten auf diese Anfrage geeignet ist. Der Lastverteiler
reicht die Anfrage (mit der Netzwerkverbindung) an den ausgewählten Server
weiter. Dies erlaubt es, dass ein Computer (der Server) auf Client-Anfragen
für einen
anderen Computer (der Lastverteiler) antwortet. Im Stand der Technik
befasst sich die US-A-5 774 600 mit einer Server-Farm und beschreibt einen Multiknoten-Server,
der Seiten des World Wide Web an netzwerkbasierte Browser-Clients überträgt. Ein
Lastverteiler empfängt
alle Anfragen von Clients, da diese für die gesamte Seite eine virtuelle
Adresse verwenden. Der Lastverteiler stellt eine Verbindung mit
dem Client her und wartet auf die Internetadresse von dem Client. Die
Internetadresse gibt die angefragte Quelle an. Der Lastverteiler
wartet mit der Durchführung
der Lastverteilung, bis nachdem der Ort der angefragten Ressource
bekannt ist.
-
Die
Verbindungs- und Internetadressenanfrage werden von dem Lastverteiler
zu einem zweiten Knoten übergeben,
der die angefragte Ressource aufweist. Der Lastverteiler gibt die
ursprüngliche
Verbindungspaketfolge zu dem zweiten Knoten ab, modifiziert aber
die Adresse zu der für
den zweiten Knoten. Die Netzwerksoftware ist modifiziert, um die
physische Netzwerkadresse des zweiten Knotens zu erzeugen, ändert aber
dann die Zieladresse zu der virtuellen Adresse zurück. Der
zweite Knoten überträgt die angefragte
Ressource direkt an den Client, mit der virtuellen Adresse als seine
Ressource. Da alle Anfragen zuerst von dem Lastverteiler empfangen
werden, der den physischen Ort der angefragten Ressource bestimmt,
können
Knoten unterschiedliche Ressourcen enthalten. Der gesamte Inhalt
der Webseite wird nicht auf alle Knoten gespiegelt. Netzwerkflaschenhälse werden
vermieden, da die Knoten große
Dateien direkt zurück
an den Client spielen, wobei sie den Lastverteiler umgehen. Client-Browser können die
virtuelle Adresse cachen, obwohl verschiedene Knoten mit unterschiedlichen
physischen Adressen Anfragen bedienen.
-
Somit
offenbart die US-A-5 774 660 ein digitales Computersystem, umfassend:
eine erste CPU, eine erste interne Netzwerkschnittstelle, die mit
der ersten CPU gekoppelt ist, eine zweite CPU und eine zweite interne
Netzwerkschnittstelle, die mit der zweiten CPU gekoppelt ist, wobei
die zweite Netzwerkschnittstelle ausgebildet ist, um mit dem internen
Netzwerk zu koppeln. Die US-A-5 774 660 offenbart jedoch nicht,
dass die ersten und zweiten Betriebssysteme unterschiedliche Eigenschaften
in Bezug auf die jeweiligen Funktionen und gemeinsame Eigenschaften,
die die zur Kommunikation über
ein internes Netzwerk notwendige Funktionalität bereitstellen, aufweisen. Überdies
bilden das erste und das zweite Betriebssys tem vereint kein Verbund-Betriebssystem
und sind somit nicht Teilnehmer in einer verteilten Zustandsmaschine.
-
Lastverteilung
ist eine inhärente
Fähigkeit
des hier offen gelegten Verbund-Betriebssystems, wie später in dem
Abschnitt mit dem Titel „Lastverteilung" erläutert.
-
Symmetrische
Multiprocessing (SMP)-Server sind als Alternativen zu Server-Farmen
bekannt. Die begrenzte Skalierbarkeit von SMP-Servern macht sie
jedoch im Allgemeinen für
die Bedürfnisse
von groß angelegten
Webseiten schlecht geeignet. SMP-Server und Server-Farmen sind oft
nicht in der Lage, diese hoch beanspruchte schnell wachsende Umgebung
des Netzes zu verarbeiten. Zum Beispiel ist bekannt, dass sichere
Transaktionen, die für
den e-Commerce erforderlich sind, SMP-Server und Server-Farmen oft
festfahren.
-
Computer,
die nicht über
lange Distanzen z. B. über
das Internet vernetzt sind, haben wegen der geographischen Distanz
zwischen dem Client und dem Server oft hinausgezögerte Ansprechzeiten. Um die
Zeit zu verringern, die erforderlich ist, bis ein Server auf Anfragen
von Clients antwortet, werden Webserver manchmal an einem oder mehreren
Ort/en, der/die sich näher
an Clients befindet/en, repliziert. Zum Beispiel kann ein Client
in Japan, der eine Verbindung mit einem Server, der eine e-Commerce-Webseite in Seattle,
Washington, hostet, mit einem Duplikat-Server in Tokio anstatt mit
dem Hauptserver in Seattle, Washington, gekoppelt sein. Dies bringt
die Daten näher
zu dem Benutzer. Es ist jedoch schwierig, eine Konsistenz zwischen
den Daten zu halten, die von Duplikat-Servern bedient werden, speziell
wenn der Inhalt dynamisch generiert wird. Wenn z. B. ein Kunde die
Online-Bestellfähigkeit
eines Webservers nutzt und später
versucht, den Status einer Bestellung auf einem Duplikat-Server
zu kontrollieren, kann der Kunde keine genaue Information erhalten. Wenn
Duplikat-Server verwendet werden, ist es auch schwierig, Hits auf
einer Webseite für
Werbezwecke genau nachzuverfolgen.
-
In
Internetservern nach dem Stand der Technik führt oft eine Maschine das gesamte
TCP/IP-Zustandsdiagramm durch (aus), was oft in Trägheit resultiert.
In Systemen, in denen Funktionen mit Bündelungs-Software verteilt
werden, sind die verteilten Funktionen typischerweise oben auf den
Betriebssystemen wie z. B. Linux oder Windows NT, die im Allgemeinen
identische Dienste durchführen,
geschichtet. Demzufolge ist die Datenverarbeitung auf dem Anwendungsniveau
verteilt, was oft in Latenzen und anderen Schwierigkeiten resultiert.
-
Demgemäß besteht
ein Bedarf an einem Server, der eine erhöhte Geschwindigkeit, Sicherheit,
Zuverlässigkeit,
Kapazität
und Wirtschaftlichkeit aufweist, und der auch reduzierte Raum-,
Energie- und Kühl-Anforderungen sowie
auch reduzierte Wartungs- und Betriebskosten aufweist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Wie
oben stehend erwähnt,
stellt die vorliegende Erfindung ein digitales Computersystem in Übereinstimmung
mit Anspruch 1 und ein Verfahren zum Antworten auf eine Anfrage,
die über
ein externes Netzwerk empfangen wird, in Übereinstimmung mit Anspruch
18 bereit. Die Erfindung ist besonders geeignet zur Implementierung
eines verteilten Hochgeschwindigkeitsbetriebssystems mit hoher Kapazität, das als
Verbund-Betriebssystem
Federated Operating SystemTM (Federated
OSTM) bezeichnet wird („Federated Operating SystemTM" und „Federated
OSTM" sind
Handelsnamen von Thunder River Technologies Inc.).
-
Eine
Ausführungsform
der Erfindung betrifft einen Webserver, der mit einer Vielzahl von
Elementen implementiert ist, die in Elementklassen klassifiziert
sind. Jede Elementklasse weist ein ausgeprägtes spezialisiertes Betriebssystem
auf, das für
seine Funktion optimiert ist. Obwohl jede Klasse von Betriebssystem
einzigartig ist, weisen die meisten Elementklassen oder alle Elementklassen
gemeinsame Eigenschaften auf, die von einer gemeinsamen Elternklasse
vererbt sind. Zusammen bilden die Betriebssysteme der Elemente das Verbund-Betriebssystem.
Eine illustrative Ausführungsform
umfasst zumindest ein Empfängerelement,
zumindest ein Verteilerelement, und zumindest ein Antwortsenderelement.
Jedes Element besitzt eine interne Netwerkschnittstelle zum Koppeln
mit einem internen Netzwerk, das zur Kommunikation zwischen den
Elementen verwendet wird. Das interne Netzwerk kann z. B. mit einer
Backplane, einem Kreuzschienenschalter, einem LAN, einem WAN oder
einer drahtlosen Verbindung (die eine Satellitenverbindung umfassen
könnte)
implementiert sein. Die Empfängerelemente
und Antwortsenderelemente weisen auch eine externe Netzwerkschnittstelle
zur Kopplung mit einem externen Netzwerk wie z. B. dem Internet
auf. Das externe Netzwerk kann ebenfalls z. B. ein LAN, ein WAN
oder ein drahtloses Netzwerk (das Satellitenverbindungen umfassen
könnte) sein.
-
Die
Empfängerelemente
empfangen Anfragen von Clients über
das externe Netzwerk und reichen die Daten von den Anfragen über das
interne Netzwerk an Verteilerelemente weiter. Das Verteilerelement,
das für eine
bestimmte Verbindung verwendet wird, verwendet das interne Netzwerk,
um Information an ein Antwortsenderelement zu senden, und weist
das Antwortsenderelement an, von dem Client angefragte Daten über das
externe Netzwerk an den Client zu senden.
-
Die
Elemente sind vorzugsweise mit Element-Hardwareeinheiten ausgeführt, die
zumindest eine/n CPU, RAM, ROM, eine interne Netzwerkschnittstelle
und eine externe Netzwerkschnittstelle umfassen. (Alternativ können Elemente
als separate Prozesse oder Threads in einem Uniprozessor oder SMP
(symmetrischen Multiprocessing)-System implementiert sein. Die Element-Hardwareeinheiten
können
vorzugsweise neu konfiguriert werden, um als jede beliebige Elementklasse
zu arbeiten, was erlaubt, die Element-Hardwareeinheiten während des
Betriebs des Servers zur Lastverteilung oder zum Austausch von defekten
Element-Hardwareeinheiten
neu zu konfigurieren.
-
Bevorzugte
Ausführungsformen
der Erfindung verwenden Adressen-, Port- und Host-Nachschlagealgorithmen, die
in einer festgelegten Zeitspanne ablaufen, selbst wenn Datenbanken
mit einer großen
Anzahl von Einträgen
durchsucht werden. Zum Beispiel können in einer HTTP (Hyper Text
Transfer Protocol)-Ausführungsform
große
Datenbanken, die IP (Internet Protocol)-Adressen und TCP (Transmission
Control Protocol)-Portnummern
enthalten, und große
Datenbanken, die Hostnamen enthalten, in einer festgelegten Zeitspanne
durchsucht werden. Dies ermöglicht
es dem Server, in Echtzeit zu arbeiten, selbst während er eine große Anzahl
von gleichzeitigen Verbindungen bearbeitet.
-
Es
ist möglich,
unterschiedliche Elemente in derselben Hülle anzuordnen oder Elemente über kleine oder
große
Distanzen zu trennen. Zum Beispiel könnte sich ein Empfänger und
Verteiler in Seattle, Washington, befinden, während ein Antwortsender des
selben Servers sich in Tokio, Japan, befinden könnte, um schnelle Antworten
an Clients in Japan zu liefern.
-
Die
Erfindung stellt für
ihre Benutzer eine Anzahl von Vorteilen bereit wie z. B. eine/n
erhöhte/n
Geschwindigkeit, Durchsatz, Zuverlässigkeit, Ska lierbarkeit, Leistung,
Sicherheit und Verwaltbarkeit. Ein Server, der das Verbund-Betriebssystem
implementiert, kann vergrößert werden,
um ein extrem großes
Volumen von Webverkehr ohne eine Leistungsverschlechterung zu bearbeiten,
einschließlich
Verschlüsselung/Entschlüsselung
(z. B. Secure Sockets Layer (SSL)-Transaktionen, die für den e-Commerce
verwendet werden). Zusätzlich
kann ein Server, der das Verbund-Betriebssystem
enthält,
ohne spezielle Anforderungen an Energie und Kühlung in einer kompakten Hülle implementiert
sein und kann durch einen einzelnen Techniker mit minimalem Training
von einer Konsole aus verwaltet und konfiguriert werden. Die Erfindung
stellt auch andere Vorteile und Nutzeffekte bereit, die aus der
folgenden Beschreibung ersichtlich sind.
-
Bevorzugte
Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
dargelegt.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1A ist ein Blockdiagramm eines Element-Hardwaremoduls
in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
1B ist eine perspektivische Ansicht von Element-Hardwaremodulen und
Backplanes in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
1C ist eine Draufsicht von ICs und einer Leiterplatte
in Übereinstimmung
mit illustrativen Ausführungsformen
der Erfindung.
-
2 ist
ein Blockdiagramm eines Servers, der das Verbund-Betriebssystem in seiner Betriebsumgebung
implementiert, in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
3 ist
ein Blockdiagramm eines Servers, der das Verbund-Betriebssystem in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung implementiert.
-
4A ist ein Diagramm, das die Beziehungen zwischen
einigen Elementen des Verbund-Betriebssystems in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
4B ist ein Blockdiagramm von Komponenten eines
Servers, der ein Verbund-Betriebssystem in seiner Betriebsumgebung
implementiert, in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
5 ist
ein Blockdiagramm eines Servers in seiner Betriebsumgebung, in der
Elemente geographisch verteilt sind, in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung.
-
6 ist
ein Blockdiagramm eines Servers in seiner Betriebsumgebung, in der
einige Elemente direkt mit dem Internet-Backbone gekoppelt sind, in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
7 ist
ein Blockdiagramm eines Servers mit einem entfernten Datenspeicher
in seiner Betriebsumgebung, in dem einige Elemente direkt mit dem
Internet-Backbone gekoppelt sind, in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung.
-
8 ist
ein Diagramm von Komponenten des Verbund-Betriebssystems mit einem Thunder-OS (Thunder-Betriebssystem =
Thunder-BS) in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
9A ist ein Blockdiagramm, das die Beziehungen
zwischen Elementen eines Thunder-BS in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung veranschaulicht.
-
9B ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem bootfähigen
Element in einem Thunder-BS in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
9C ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem Empfängerelement in
einem Thunder-BS in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
9D ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem Verteilerelement in einem Thunder-BS in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
9E ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem statischen Antwortsenderelement in einem Thunder-BS in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
9F ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem dynamischen Antwortsenderelement in einem Thunder-BS in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
10 ist ein Blockdiagramm, das die Verteilung von
Funktionen zwischen Empfänger-,
Verteiler- und Antwortsenderelementen in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung veranschaulicht.
-
11 ist ein Diagramm einer Empfänger-TCP-Verbindungszustandsmaschine
in Übereinstimmung mit
einer illustrativen Ausführungsform
der Erfindung.
-
12 ist Diagramm einer Verteiler-TCP-Verbindungszustandsmaschine
in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
13 ist ein Blockdiagramm, das ein verteiltes TCP/IP-Datenverarbeitungssystem
in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
14A ist ein Flussdiagramm, das ein Verfahren zum
Initialisieren eines Servers in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
14B ist ein Flussdiagramm, das ein Verfahren zum
Initialisieren eines Servers in Übereinstimmung
mit einer weiteren illustrativen Ausführungsform der Erfindung veranschaulicht.
-
15 ist ein Diagramm, das den Datenfluss zwischen
einem Client, Empfänger,
Verteiler und Antwortsender zur Bedienung einer Client-Anfrage in Übereinstimmung
mit einer illustrativen Ausführungsform der
Erfindung veranschaulicht.
-
16A ist ein Flussdiagramm, das ein Verfahren zum
Antworten auf eine Anfrage, die über
ein externes Netzwerk empfangen wird, in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung veranschaulicht.
-
16B ist ein Flussdiagramm, das ein Verfahren zum
Antworten auf eine Anfrage, die über
ein externes Netzwerk empfangen wird, in Übereinstimmung mit einer weiteren
illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
16C ist ein Flussdiagramm, das ein Verfahren zum
Antworten auf eine Anfrage, die über
ein externes Netzwerk empfangen wird, in Übereinstimmung mit einer weiteren
illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
16D ist ein Flussdiagramm, das ein Verfahren zum
Antworten auf eine Anfrage, die über
ein externes Netzwerk empfangen wird, in Übereinstimmung mit einer weiteren
illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
17 ist eine Draufsicht einer signaltragenden optischen
Disk in Übereinstimmung
mit einer illustrativen Ausführungsform
der Erfindung.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Definitionen:
-
Verteilt:
eine Eigenschaft eines Systems, dessen Funktionalität unter
mehreren Untersystemen aufgeteilt ist, von denen jedes einen Teil
der Funktionalität
ausführt
und die idealerweise gleichzeitig arbeiten können, was in einer schnelleren
vollständigen
Fertigstellung einer gegebenen Aufgabe resultiert.
-
Echtzeit:
eine Eigenschaft eines Systems, die nicht mehr als eine festgelegte
Zeitspanne benötigt,
um eine gegebene Aufgabe fertig zu stellen.
-
Server:
ein Computersystem, das Daten serviert und/oder Daten empfängt und/oder
Daten verarbeitet.
-
Client:
eine Vorrichtung, die Anfragen und Daten an Server sendet und Daten
in Ansprechen auf diese Anfragen empfängt. Ein Client kann auch von
einem Server übertragene
Daten empfangen, die nicht in Ansprechen auf eine Anfrage durch
den Client gesendet wurden.
-
VME:
bezieht sich auf die „VERSAmodule
Eurocard"-Computerarchitektur,
die von Motorola entwickelt wurde und in der ursprünglichen
VMEBus-Spezifikation (IEEE-1014-1987) und späteren Revisionen wie z. B. VME64
(ANSI/VITA 1-1994), VME64x und VME320 definiert ist.
-
Hierin
bezieht sich das Wort „vorzugsweise" auf ein/e Element,
Handlung, Struktur, Material oder Eigenschaft, das/die nicht erforderlich
ist, es aber wünschenswert
ist, dass sie/es enthalten ist.
-
Hierin
bedeutet der Ausdruck „zum
Beispiel", dass
die/das beispielhafte/n Elemente, Handlungen, Struktur, Material
oder Eigenschaften, die/das explizit angegeben sind/ist, nicht erforderlich
sind/ist, und dass ein/e andere/s Elemente, Handlungen, Struktur,
Material oder Eigenschaften verwendet, durchgeführt oder enthalten sein kann/können.
-
Übersicht über einige
unterschiedliche Aspekte der Erfindung
-
Die
Erfindung umfasst, ist jedoch nicht beschränkt auf die folgenden Aspekte.
Ein Aspekt der Erfindung umfasst Ausführungsformen eines digitalen
Computersystems, die ein Verbund-Betriebssystem (Federated Operating
SystemTM) implementieren. Weitere Aspekte
der Erfindung umfassen Ausführungsformen
eines Servers, die ein Verbund-Betriebssystem (Federated Operating
SystemTM) implementieren. Weitere Aspekte
der Erfindung umfassen Ausführungsformen
eines Servers, die eine verteilte TCP/IP-Zustandsmaschine implementieren. Weitere
Aspekte der Erfindung sind Verfahren zum Antworten auf eine Anfrage,
die über
ein externes Netzwerk empfangen wurde. Weitere Aspekte der Erfindung
sind Verfahren zum Antworten auf eine Anfrage (die nicht über ein
externes Netzwerk empfangen werden muss). Weitere Aspekte der Erfindung
sind Verfahren zum Initialisieren eines Servers (oder eines digitalen
Computersystems). Weitere Aspekte der Erfindung umfassen Ausführungsformen
eines signaltragenden Mediums, das konkret einen maschinenlesbaren Code
beinhaltet, der von einer digitalen Verarbeitungsvorrichtung zum
Implementieren eines verteilten Servers ausgeführt werden kann. Weitere Aspekte
der Erfindung umfassen Ausführungsformen
eines signaltragenden Mediums, das konkret ein Programm von maschinenlesbaren
Anweisungen beinhaltet, die von einer digitalen Verarbeitungsvorrichtung
zur Durchführung
eines Verfahrens zum Antworten auf eine Anfrage ausgeführt werden
können.
Weitere Aspekte der Erfindung sind hierin ebenfalls beschrieben.
-
Übersicht über das
Verbund-Betriebssystem
-
Das
Verbund-Betriebssystem (BS) (Federated Operating System (OS)) ist
die allgemeine Architektur der Erfindung. Das Verbund-BS ist ein
verteiltes Betriebssystem, das mit einer Vielzahl von Elementen
ausgeführt
ist, die in Elementklassen klassifiziert sind. Jedes Element ist
eine Instanz einer Elementklasse und kann als Knoten bezeichnet
werden. Jede Elementklasse weist ein ausgeprägtes spezialisiertes Betriebssystem (das
auch als ein Betriebssystemkern bezeichnet werden kann) auf, das
für seine
Funktion optimiert ist. Zusammen bilden die Betriebssysteme der
Elemente das Verbund-BS. Die Elemente des Verbund-BS wirken konzertiert
zusammen, um die Funktionen eines Servers durchzuführen. Somit
ist das System eine Integration von mehreren Betriebssystemen und
wird daher als ein Verbund von Elementen bezeichnet. Jedes Element könnte allein
arbeiten, um seine Funktion durchzuführen, vorzugsweise wirken die
Elemente des Verbund-BS aber zusammen, um einen Server zu implementieren.
-
Die
Eigenschaften des von jedem Element implementierten spezifischen
Betriebssystems sind durch die spezifische Hardware-, Firmware-
und/oder Softwarekombination, die verwendet wird, um dieses bestimmte
Element zu implementieren, definiert. Somit ist die Einzigartigkeit
der Elemente durch die Hardware-, Firmware- und/oder Software-Unterschiede
begründet.
Obwohl es nicht erforderlich ist, weisen vorzugsweise alle Elemente
(mit Ausnahme des Konfigurationselements) gemeinsame Eigen schaften
auf, die von einem gemeinsamen Elternelement vererbt sind (mit Hilfe
einer objektorientierten Vererbung). Die Eltern(Basis)-Elementklasse,
von der weitere Elementklassen vorzugsweise abgeleitet werden, enthält (unter
anderem) die Funktionalität,
die für
synchrone Element-zu-Element-Kommunikationen über ein
internes Netzwerk erforderlich sind, und umfasst vorzugsweise eine
ereignisgesteuerte Verarbeitungsschleife.
-
Die
Elementklassen umfassen z. B. die folgenden Klassen: Empfänger-, Verteiler-,
Antwortsender-, Konfigurations-, Wächter-, dauerhafte Speicherungs-,
Systemadministratorbenachrichtigungs-, Decoder-, Routing-Manager- und bootfähige plus
Proto- und externe Netzwerk-Elementklassen, die abstrakte Klassen sind
(der Ausdruck „Antwortsender" umfasst sowohl statische
Antwortsender- als auch dynamische Antwortsenderklassen). Auch andere
Klassen könnten
verwendet werden. Elemente unterschiedlicher Klassen führen unterschiedliche
Funktionen durch. Ein Server, der ein Verbund-BS implementiert,
umfasst zumindest ein Empfängerelement,
zumindest ein Verteilerelement und zumindest ein Antwortsenderelement
(und umfasst vorzugsweise auch ein oder mehrere zusätzliche/s
Element/e in weiteren Elementklassen). In einer alternativen Ausführungsform
ist ein Verteilerelement nicht enthalten und die Funktionalität eines
Verteilerelementes ist in einem Empfängerelement und/oder Antwortsenderelement
implementiert (oder könnte
in einem anderen Element aus einer anderen Elementklasse implementiert
sein). Ausführungsformen,
die mit einem externen Netzwerk gekoppelt sind, umfassen zumindest
ein Element, das mit dem externen Netzwerk gekoppelt ist (und umfassen
zumindest einen Empfänger
und zumindest einen Antwortsender, die mit dem externen Netzwerk gekoppelt
sind). In Ausführungsformen,
die nicht mit einem externen Netzwerk gekoppelt sind, muss ein Empfängerelement
und/oder ein Antwortsenderelement nicht enthalten sein. Die Anzahl
von Elementen in einem Server und die Klassen der Ele mente in einem
Server sind durch die Dienste, die der Server bereitstellen soll, die
Belastung auf dem System, Eingriffe durch Menschen und weitere Faktoren
bestimmt.
-
Jedes
Element umfasst eine Hardware- und/oder Softwarekombination, die
ein Betriebssystem implementiert, das sich von den Betriebssystemen
von Elementen in unterschiedlichen Klassen unterscheidet. Zum Beispiel
implementieren Empfängerelemente
das gleiche Empfängerbetriebssystem,
aber Verteilerelemente implementieren ein Verteilerbetriebssystem,
das sich von dem Empfängerbetriebssystem
unterscheidet. In dem Verbund-BS sind einzigartige Eigenschaften
einer jeden Elementklasse auf dem Betriebssystemsniveau implementiert.
Somit sind die Betriebssysteme für
die Empfänger-,
Verteiler-, Antwortsender- und weitere Klassen alle unterschiedlich
(obwohl sie vorzugsweise gemeinsam vererbte Eigenschaften aufweisen
können). Dies
ist anders als im Stand der Technik, worin eine verteilte Datenverarbeitung
oft eine Bündelungs-Software bedingt,
die über
Betriebssystemen arbeitet, welche im Wesentlichen identische Dienste
bereitstellen. Es ist möglich,
von bestehenden Elementklassen neue Elementklassen unterzuklassifizieren.
Eine neue Elementklasse würde
die gesamte Funktionalität
der Elternelementklasse plus eine bestimmte neue Funktionalität enthalten.
Zum Beispiel kann ein dynamischer Antwortsender von einem statischen
Antwortsender unterklassifiziert werden. Wie in der illustrativen
Ausführungsform
von 9A veranschaulicht, erbt der
dynamische Antwortsender die gesamte Funktionalität des statischen
Eltern-Antwortsenders und fügt
zusätzliche
Funktionalität
in Bezug auf das Generieren dynamischer Daten zu. Obwohl nicht erforderlich,
ist das Verbund-BS in der C++-Programmiersprache ausgeführt, was
die Implementierung der Vererbungshierarchie der Betriebssysteme
der Elemente erleichtert.
-
Das
Verbund-BS ist nicht auf TCP/IP (Transmission Control Protocol/Internet
Protocol)-Implementierungen beschränkt, sondern kann jedes beliebige
Netzwerkkommunikationsprotokoll wie z. B. Netware, VINES, AppleTalk,
DECNET, SNA, OSI, ATM, netBios und IP-over-SONET implemtieren. Auch
andere Kommunikationsprotokolle könnten verwendet werden. Das
Verbund-BS kann auch sowohl mit paketbasierten Kommunikationssystemen
als auch mit schaltungsbasierten Kommunikationssystemen, in denen
eine zugeordnete Schaltung für
die Kommunikation verwendet wird, verwendet werden. Das Verbund-BS
kann auch in Systemen implementiert sein, die kein externes Netzwerk
aufweisen, z. B. Systeme, die Daten verarbeiten, welche von entfernbaren
Medien empfangen werden. Zur Einfachheit der Beschreibung, ohne
aber dadurch eine Einschränkung
zu beabsichtigen, werden hierin oft TCP/IP-Ausführungsformen des Verbund-BS
beschrieben.
-
Anders
als im Stand der Technik, in dem eine Maschine das gesamte Zustandsdiagramm
für die
verwendete Kommunikationsprotokollfolge durchführt, sind in dem Verbund-BS
Aufgaben zwischen den Prozessoren in einer Vielzahl von Elementen
verteilt. Somit ist in einer TCP/IP-Ausführungsform
des Verbund-BS die TCP/IP-Zustandsmaschine über eine Vielzahl von Elementen
verteilt. Mit anderen Worten, die TCP/IP-Aufgaben werden aufgeteilt und Zustände in TCP/IP-Zustandsdiagrammen
werden auf unterschiedliche Elemente abgebildet. Demzufolge ist
die Bedienung einer einzelnen IP-Adresse über die Netzwerkschnittstellen
einer Vielzahl von Elementen (die entweder in der gleichen Hülle oder
in getrennten Hüllen
angeordnet sein können) verteilt.
In Ausführungsformen,
die andere als TCP/IP-Kommunikationsprotokolle verwenden, ist die
Zustandsmaschine für
diese anderen Protokolle ebenfalls über die Elemente verteilt.
Somit werden Antwortgenerierung und Datenbereitstellung an einen
oder mehrere Client/s durch mehrere Elemente parallel verarbeitet.
In einer TCP/IP-Ausführungsform
ist das Leistungsvermögen
für eine
Unterstützung
von mehreren IP-Adressen im Allgemeinen nur durch die verfügbare Speichermenge
begrenzt, was eine Skalierung zur Unterstützung von Millionen oder mehr
IP-Adressen zulässt.
In einer TCP/IP-Ausführungsform
ist die Anzahl gleichzeitiger TCP/IP-Verbindungen, die unterstützt werden
können,
im Allgemeinen ebenfalls nur durch die verfügbare Speichermenge begrenzt,
was eine Skalierung zur Unterstützung
von Millionen oder mehr gleichzeitiger TCP/IP-Verbindungen zulässt. Somit kann eine TCP/IP-Ausführungsform
hohe Datenvolumen z. B. bis zu Hunderttausende oder mehr von gleichzeitig
verbundenen Internetnutzern liefern.
-
Bei
dem Verbund-BS sind verteilte Multithread-Systeme mit mehreren (vorzugsweise)
Singlethreadelementen implementiert. Die Elemente eines Verbund-BS
erfüllen
typischerweise nicht mehrere Arbeitsgänge gleichzeitig (ein gleichzeitiges
Durchführen
mehrerer Arbeitsgänge – Multitasking – durch
Elemente ist jedoch möglich).
Das Verbund-BS als Gesamtes bewerkstelligt eine parallele Verarbeitung,
da jedes Element parallel mit weiteren Elementen arbeitet. Zum Beispiel
führt das
Verbund-BS in einer TCP/IP-Ausführungsform
eine parallele Verarbeitung von Internetprotokollen aus, da jedes
Element spezifische Aspekte des TCP/IP-Protokolls parallel mit weiteren
Elementen ausführt.
Demzufolge ist die Verarbeitung von Internetkernfunktionen beschleunigt.
In ähnlicher
Weise führt
das Verbund-BS in einer OSI(Open System Interconnection, Kommunikation
offener Systeme)-Ausführungsform
eine parallele Bearbeitung unterschiedlicher Schichten des siebenschichtigen
Stapels der Kommunikation offener Systeme (OSI) aus.
-
Mit
dem Verbund-BS ausgeführte
Server sind gut geeignet für
viele Hochleistungsanwendungen z. B. Nutzen von umfangreichen Internet/Intra netanwendungen
wie z. B. e-Commerce, Hosting, Multimediabereitstellung (Video und
Audio auf Wunsch), spezialisierte Militärprojekte, drahtlose Infrastruktur
und Internetspiele. Zusätzlich
zur Verwendung mit dem Internet könnte das Verbund-BS mit anderen öffentlichen
paketbasierten Breitbandnetzwerken verwendet werden.
-
Hardware für das Verbund-Betriebssystem
-
Wie
oben stehend erwähnt,
sind die durch jedes Element ausgeführten Eigenschaften des spezifischen
Betriebssystems durch die spezifische Hardware-, Firmware- (z. B.
ROM) und/oder Softwarekombination, die verwendet wird, um dieses
bestimmte Element zu implementieren, definiert. Elemente des Verbund-BS
sind in jeweiligen Element-Hardwareeinheiten
(die als Knoten bezeichnet werden können) ausgeführt, die
auf vielerlei Art und Weise ausgeführt sein können. In einigen Ausführungsformen
des Verbund-BS ist jedes) Element (Instanz) mit einem separaten
Hardwaremodul ausgeführt.
Somit ist in diesen Ausführungsformen
jede Element-Hardwareeinheit als ein Element-Hardwaremodul ausgeführt. 1 ist
ein Blockdiagramm einer illustrativen Ausführungsform eines Element-Hardwaremoduls 105.
Das Element-Hardwaremodul 105 umfasst zumindest eine CPU 110a (Zentralprozessoreinheit),
eine interne Netzwerkschnittstelle 115, eine externe Netzwerkschnittstelle 120,
einen Arbeitsspeicher (RAM) 125 und eine kleine Menge von
dauerhaftem Speicher (ROM) 130, um das anfängliche
Programmbild, das verwendet wird, um nachfolgende Instanzen eines
Verbund-BS-Kerns zu laden, zu speichern. Die Element-Hardwareeinheiten
können
mit den gleichen oder unterschiedlichen CPUs, den gleichen oder
unterschiedlichen Speichermengen und mit den gleichen oder unterschiedlichen
Typen von Netzwerkschnittstellen ausgeführt sein. Die interne Netzwerkschnittstelle und
die externe Netzwerkschnittstelle in Element-Hardwareeinheiten sind
beide vorzugsweise für
bidirektionale Kommunikation (Eingeben und Ausgeben von Daten und
anderen Signalen) konfiguriert. Es ist nicht notwendig, eine externe
Netzwerkschnittstelle 120 für Elemente vorzusehen, die
nicht verwendet werden, um mit dem externen Netzwerk zu kommunizieren,
obwohl vorzugsweise alle Element-Hardwareeinheiten eine interne
Netzwerkschnittstelle umfassen, so dass jedes Modul die Fähigkeit
besitzt, falls notwendig, als ein Empfänger oder Antwortsender zu
arbeiten. Die interne Netzwerkschnittstelle wird zur Kommunikation
zwischen Element-Hardwareeinheiten über das
interne Netzwerk verwendet und die externe Netzwerkschnittstelle
wird zur Kommunikation mit Clients über das externe Netzwerk verwendet.
Optional kann die externe Netzwerkschnittstelle auch zur internen
Kommunikation zwischen Element-Hardwareeinheiten verwendet werden,
indem ein Kommunikationspfad für
den Fall von Hardwarefehlern oder anderen Ausfällen bereitgestellt wird. Obwohl nicht
erforderlich, um die Leistung zu erhöhen, hält jedes Element vorzugsweise
interne Netzwerk-Nachrichteninformation, so dass jedes Element die
erforderliche Netzwerk-Routinginformation kennt, die verwendet wird,
um Nachrichten zu anderen Elementen zu senden, mit denen das Element
kommuniziert.
-
Wenn
eine Element-Hardwareeinheit mehr als eine CPU umfasst, sind die
CPUs der Element-Hardwareeinheit vorzugsweise miteinander verbunden.
Obwohl nicht erforderlich, ist jede CPU vorzugsweise mit jeder Netzwerkschnittstelle
der Element-Hardwareeinheit gekoppelt, und der RAM und ROM sind
mit jeder CPU gekoppelt. Jede beliebige Anzahl von CPUs, die in
der Praxis gekoppelt werden können,
kann in einem Element verwendet werden. Zum Beispiel weist jede
Element-Hardware zwei CPUs 110a und 110b auf.
-
Vorzugsweise
ist das Verbund-BS mit einem portablen Sourcecode ausgeführt, der
die Unterstützung heterogener
CPU-Hardware zulässt,
was die Freiheit der Auswahl aus unterschiedlichen Prozessoren und
unterschiedlichen Lieferanten zulässt. Diese Portabilität erleichtert
ein Optimieren von Elementen für
eine spezifische Funktionalität.
Zum Beispiel kann eine Implementierung eines Elementes optimiert
sein, um DSP (Digital Signal Processor)-basierte Verschlüsselungs-/Entschlüsselungsmaschinen
zur Unterstützung
von SSL (Secure Sockets Layer)- oder anderen sicheren Protokollen
zu verwenden. Vorzugsweise sind Abhängigkeiten von einer natürlichen
Byte-Anordnung, Wortgröße etc.
eines Prozessors in einem Minimalcode-Modul für jeden Typ von Prozessor eingekapselt.
Jede CPU kann ein beliebiger Typ von digitaler Verarbeitungsvorrichtung
sein und vorzugsweise ist jede CPU eine digitale Hochgeschwindigkeits-Verarbeitungsvorrichtung.
Wenn ein Modul mehr als eine CPU aufweist, ist es nicht notwendig,
dass die CPUs in einem Modul das gleiche Fabrikat oder Modell sind.
Vorzugsweise ist die CPU 110a ein Power-PC und die CPU 110b ein
weiterer Power-PC, der der gleiche ist wie der Power-PC, der für die CPU 110a verwendet
wird. Alternativ könnten
die CPUs x86-Prozessoren,
Digitalsignal-Hochgeschwindigkeitsprozessoren (High Speed Digital
Signal Processors DSPs) hergestellt von Texas Instruments oder ein
beliebiger anderer Prozessor (der auch als digitale Verarbeitungsvorrichtung
bezeichnet werden kann) sein.
-
Die
Prozessoren in dem Verbund-BS wirken als ein integriertes Datenverarbeitungssystem,
das aus einer Vielzahl von Prozessoren besteht. Die Anzahl von Prozessoren
kann von wenigen Prozessoren bis zu Hunderten (oder mehr) Prozessoren
reichen, wobei die Anzahl von Prozessoren abhängig ist von der Anzahl der
Elemente und der Anzahl der Prozessoren, die verwendet wird, um
die Elemente zu implementieren. Prozessorleistung kann einem Server,
der das Verbund-BS implementiert, einfach zugefügt werden, indem Element-Hardwareeinheiten
dem System zugefügt
werden, ohne die extensive LAN- und Softwarekonfiguration, die in
UNIX- oder NT-Server-Farmen
im Stand der Technik typischerweise erforderlich ist.
-
Ein
beispielhafter Stand-Alone-Server, der das Verbund-BS in einer einzelnen
Hülle implementiert, enthält eine
Anzahl von Reihen von Element-Hardwaremodulen
und ihr zugeordnetes Backplane, einen Netzwerk-Kreuzschienenschalter zum Verbinden
der Reihen von Element-Hardwaremodulen,
eine Netzwerkschaltung, die mit den externen Netzwerkschnittstellen
gekoppelt ist, Verbindungen für
die Netzwerkschaltungen, eine Energie aufbereitende Gleichstromversorgung,
(optional) eine Batteriesicherung mit einer zugeordneten Ladeschaltung
und einen Massendatenspeicher. In Ausführungsformen, in denen die
Elemente physisch getrennt sind, sind die Hüllen, welche getrennte Elemente
beherbergen, über
lokale oder Fernnetzwerkverbindungen miteinander verbunden, was
die Implementierung von geographisch verteilten Systemen erlaubt.
-
Vorzugsweise
sind das physische Packaging der Element-Hardwareeinheiten und die
interne Netzwerktopologie entworfen, um eine Skalierbarkeit im Hinblick
auf die Anzahl von unterstützten
Element-Hardwareeinheiten (und CPUs) zuzulassen. Zum Beispiel weisen
in einer in 1B veranschaulichten illustrativen Ausführungsform
Element-Hardwaremodule 105a, 105b eine geringe
Energieverlustleistung auf und sind derart geformt (weisen einen
Formfaktor auf), dass eine Anzahl von Element-Hardwaremodulen Seite an Seite in einer
Reihe von typischerweise 10 bis 50 Modulen installiert werden kann
und dass mehrere Reihen vertikal in einer bücherregalähnlichen Anordnung gestapelt
werden können.
In dieser Ausführungsform
stecken die Module in einer gegebenen Reihe in einem Backplane (z.
B. Backplanes 155 und 160), das alle Verbindungen für die Energie-
und Netzwerkschnittstellen eines jeden Moduls bereit stellt. Das
Backplane enthält
auch die Verbindungen, die für
das Netzwerk unter den Modulen in einer gegebenen Reihe notwendig
sind, und stellt auch eine oder mehrere Netzwerkverbindung/en 165a, 165b bereit,
die verwendet wird/werden, um eine Verbindung mit einer oder mehreren
zusätzlichen
Reihe/n herzustellen. Die Verbindung, die in jedem Backplane verwendet
wird, ist vorzugsweise eine Kreuzschaltung („Switched Fabric") mit hoher Bandbreite
und niedriger Latenz, was zulässt,
dass mehrere Paare von Modulen gleichzeitig kommunizieren. In Implementierungen,
die mehrere Backplanes verwenden, ist die Schnittstelle zwischen
Backplanes vorzugsweise eine Switched Fabric ähnlich jener, die verwendet
wird, um Module zu verbinden.
-
Die
Element-Hardwareeinheiten (und Backplanes) können physisch nahe aneinander
angeordnet sein oder können über lange
Distanzen gekoppelt sein. Zum Beispiel können Element-Hardwareeinheiten
in der selben Hülle
oder in unterschiedlichen Hüllen
in dem selben Gebäude
angeordnet sein, oder können
durch größere Distanzen
z. B. einen oder mehrere Kilometer oder sogar Tausende von Kilometern
getrennt sein. Die Verbindung, die ein Backplane mit anderen Modulen
oder Backplanes von internen Netzwerken koppelt, kann z. B. ein
Glasfaserkabel mit einer Länge
von etwa 1 cm bis zu vielen Kilometern sein, und könnte sich
sogar bis zu gegenüberliegenden
Enden des Erdballs erstrecken. Ein Beispiel einer Implementierung,
in der einige Element-Hardwareeinheiten entfernt in Bezug auf weitere
Element-Hardwareeinheiten angeordnet sind, ist eine Ausführungsform,
bei der Elemente, die für
eine Verschlüsselung
und Entschlüsselung
von sicherer Nachrichtenübermittlung
verantwortlich sind, in einer sicheren physischen Umgebung angeordnet
sind, die sich entfernt von anderen Modulen des Verbund-BS befindet.
Vorzugsweise ist das Verbund-BS mit einer großen Anzahl (Hunderten) von
CPUs in einer kompakten Hülle
implementiert.
-
In
einer weiteren Ausführungsform,
die als „System
on a Chip"-Ausführungsform
bezeichnet wird und in 1C veranschaulicht
ist, sind die CPU(s), Netzwerkschnittstellen, RAM und ROM einer
Element-Hardwareeinheit
zu einer einzelnen integrierten Schaltung (IC) integriert. In dieser
Ausführungsform
ist/sind ein oder mehrere IC/s 175a, 175b, die
diese Elemente enthält/enthalten,
sowie interne Netzwerk-Verbindungshardware
an einer einzelnen Leiterplatte 180 montiert. In dieser
Ausführungsform
ist die Leiterplatte vorzugsweise in der gleichen physischen Form
gebildet wie die oben erläuterten
Element-Hardwaremodule und kann in dasselbe Backplane eingesteckt
werden. In dem System auf einer Chip-Ausführungsform verbindet das interne
Netzwerk 183 alle CPUs auf der Platte. Eine interne Netzwerkschnittstelle 185 der
Leiterplatte und eine externe Netzwerkschnittstelle 187 der
Leiterplatte sind vorgesehen, um die Verbindung der Platte zu trennen. In
einer Variation dieser Ausführungsform
enthält/enthalten
eine oder mehrere der IC/s jeweils mehrere Element-Hardwareeinheiten
(CPU-/Netzwerkschnittstellen, RAM-/ROM-Kombinationen), die innerhalb
jeder IC verbunden sind und die auch den Chip von dem internen Netzwerk
auf der Platte und von dem externen Netzwerk trennen. Somit sind
mehrere Element-Hardwareeinheiten
in einem einzigen IC implementiert. Auch Untersysteme können auf
einen einzelnen Chip implementiert sein, der mehrere Prozessormodule
und einen Netzwerkschalter umfasst.
-
Internes Netzwerk
und externes Netzwerk
-
Wie
oben stehend erläutert,
umfasst das Verbund-BS eine Vielzahl von Elementen. Wie in 2 veranschaulicht,
kommunizieren die Elemente des Verbund-BS 205 miteinander über ein
internes Netzwerk 210, das z. B. ein Backplane, ein Kreuzschienenschalter-Netzwerk,
ein Local Area-Netzwerk
(LAN), ein Wide Area-Netzwerk (WAN) oder ein beliebiger geeigne ter
Typ von drahtgebundenem oder drahtlosem Netzwerk sein kann. Vorzugsweise
weist das interne Netzwerk eine hohe Bandbreite und eine niedrige
Latenz auf. Optional kann das interne Netzwerk aus einer Vielzahl
von Netzwerken bestehen, die z. B. in einem Backplane integriert
sind. Beispiele von Implementierungen des internen Netzwerks umfassen:
ein Backplane wie z. B. VME64 oder CompactPCI, Kreuzschienenschalter-Netzwerke wie z.
B. Race++, SCI (Scalable Coherent Interface) sowie Myrinet, anwendereigene
spezifische Netzwerkschnittstellen, LANs wie z. B. Ethernet und
WANs wie z. B. SONET oder ATM. Das WAN kann einen beliebigen Typ
von Hochgeschwindigkeitsübertragungssystem
verwenden. Vorzugsweise ist das interne Netzwerk mit einer SCI implementiert,
welche eine Hochleistungs-, Paketkommunikations- und Schalttechnologie
ist. Weitere Möglichkeiten
sind Fibre Channel und Sky Channel oder eine beliebige andere Art
zur Herstellung einer Kommunikation zwischen den Elementen. Das interne
Netzwerk könnte
auch für
eine Verwendung mit aufkommenden Verbindungsstandards wie z. B.
InfiniBand ausgebildet sein. Die interne Netzwerkschnittstelle 115 (1)
eines jeden Elementes ist mit dem internen Netzwerk gekoppelt. Demzufolge
sind alle Elemente mit dem internen Netzwerk gekoppelt und können miteinander über das
interne Netzwerk kommunizieren.
-
In
bestimmten alternativen Ausführungsformen
eines Servers, der das Verbund-BS implementiert, besteht keine Verbindung
mit einem externen Netzwerk. Zum Beispiel muss ein Computational-Engine-Server, der
Daten von einem entfernbaren Medium oder über physikalische Sensoren,
chemische Sensoren, optische Sensoren und/oder Audiosensoren empfängt, nicht
mit einem externen Netzwerk gekoppelt sein. Vorzugsweise sind zumindest
ein Empfänger 225 und
ein Antwortsender 220 mit einem externen Netzwerk 215 verbunden.
Die interne Netzwerkschnittstelle 115 eines jeden Element-Hardwaremoduls 105 dient
zum Koppeln mit dem internen Netzwerk 210 und die externe
Netzwerkschnittstelle 120 eines jeden Element-Hardwaremoduls 105 dient
zum Koppeln mit dem externen Netzwerk 215. Wie oben stehend
erwähnt
ist es nicht notwendig, dass Elemente, welche nicht mit dem externen
Netzwerk gekoppelt sind, eine externe Netzwerkschnittstelle aufweisen,
obwohl vorzugsweise alle Elemente sehr wohl eine externe Netzwerkschnittstelle
aufweisen. Die Elemente, die mit dem externen Netzwerk gekoppelt
sind, können
z. B. mit Ethernet-Verbindungen
oder ATM gekoppelt sein. Das externe Netzwerk kann ein beliebiger
Typ von LAN und/oder WAN sein und kann ein beliebiger Typ von drahtgebundenem
oder drahtlosem Netzwerk sein. Obwohl das Verbund-BS für große externe Netzwerke
wie z. B. das Internet optimiert ist, könnte es auch mit kleineren
WANs oder LANs verwendet werden.
-
Obwohl
in 2 alle Elemente, die mit dem externen Netzwerk
gekoppelt sind, mit derselben Stelle in dem externen Netzwerk gekoppelt
sind, ist dies nicht erforderlich. Mit anderen Worten, Elemente
können
mit dem externen Netzwerk an unterschiedlichen Orten in dem externen
Netzwerk gekoppelt sein. Auch kann die externe Netzwerkschnittstelle
eines oder mehrerer von den Elementen mit dem Internet durch direkte
Verbindung mit dem Internet-Backbone gekoppelt sein, was durch Verbinden
der entsprechenden Netzwerkschnittstelle direkt mit einem oder mehreren
von den Haupt-Providern des Internet-Backbones bewerkstelligt wird.
-
Echtzeit verteilt und
objektorientiert
-
- – Verbund-BS-Elemente
sind (vorzugsweise) Echtzeit-Elemente, da auf jedem (vorzugsweise)
eine einzelne Aufgabe läuft,
die nur durch eine festgelegte Anzahl von Unterbrechungen, die jeweils
bekannte, gebundene Ausführungszeiten
aufweisen, preemptiert werden können.
Das Verbund-BS ist als Ganzes (vorzugsweise) ein Echtzeit-System,
da die Dienst- und Pro tokollalgorithmen (vorzugsweise) alle in Echtzeit
ausgeführt
werden. Zum Beispiel empfängt
in einer TCP/IP-Ausführungsform
der Empfängerelement-Prozess vorzugsweise
TCP/IP-Pakete in Echtzeit. Als ein weiteres Beispiel werden in einer
TCP/IP-Ausführungsform
IP-Adressen-Nachschlagevorgänge
und Hostnamen-Nachschlagevorgänge
vorzugsweise in Echtzeit bewerkstelligt.
- – Das
Verbund-BS ist verteilt, da Betriebssystemdienste (wie z. B. die
TCP/IP-Protokolle in einer TCP/IP-Ausführungsform) über die
Element-Betriebssysteme
(die in dem internen Netzwerk gekoppelt sind) verteilt sind, und
da das Verbund-BS eine Verteilungsfunktionalität unter unterschiedlichen Elementen unterstützt.
- – Das
Verbund-BS ist (vorzugsweise) objektorientiert, da (1) Elemente
(vorzugsweise) von einem vererbten Verhalten von einer Elternklasse
abgeleitet werden, und die Elemente das, was vererbt ist, erweitern;
und (2) da das System (vorzugsweise) mit objektorientierten Werkzeugen
aufgebaut wird.
-
Adressen-Nachschlagevorgang
und Host-Nachschlagevorgang in Echtzeit
-
In
einer TCP/IP-Ausführungsform
sendet ein Client für
ein HTTP (Hyper Text Transfer Protocol) ein Paket von Information,
das eine IP-Adresse, eine Portnummer und einen Hostnamen enthält, an den
Server, um den von dem Server bereitgestellten Dienst zu definieren,
zu dem der Client einen Zugang wünscht.
Es ist möglich,
dass mehrere Hostnamen auf der gleichen IP-Adresse unterstützt werden,
und im Gegensatz dazu ist es möglich,
dass mehrere IP-Adressen vorhanden sind, die einem einzigen Hostnamen
entsprechen. Die IP-Adresse bezieht sich auf das Internet Protocol (IP),
der Port bezieht sich auf das Transmission Control Protocol (TCP)
und der Hostname bezieht sich auf das Hyper Text Transfer Protocol
(HTTP).
-
Im
Allgemeinen müssen
in Servern nach dem Stand der Technik Betriebssysteme und/oder Anwendungen
in eingehenden Nachrichten nach Übereinstimmungen
mit den IP-Adressen, TCP-Portnummern und weiteren Daten wie z. B.
Hostnamen suchen. IP-Adressen und Hostnamen in eingehenden Nachrichten
werden mit (möglicherweise)
zahlreichen IP-Adressen
und (möglicherweise)
zahlreichen Hostnamen, die in entsprechenden Datenbanken, welche
für den
Server zugänglich
sind, gespeichert sind, verglichen. Typischerweise ist der Netzwerkcode
des Betriebssystems verantwortlich für die Verarbeitung der IP-Adresse
und TCP-Portnummer eines eingehenden Pakets, um zu bestimmen, ob
das Paket zu einer neuen oder bestehenden Verbindung gehört, und
um die geeignete Anwendung zu bestimmen, zu der die Daten gesendet
werden. Es kann notwendig sein, dass die Anwendung (z. B. ein HTTP-Webserver)
nach weiteren Daten in der Nachricht (z. B. ein Hostname) sucht,
um das eingehende Paket zu verarbeiten.
-
TCP/IP-Ausführungsformen
des Verbund-BS verwenden (vorzugsweise) die „Trie"-Datenstruktur in ihren Suchalgorithmen,
um schnell und deterministisch nach einer Übereinstimmung unter einer
großen
Anzahl von IP-Adressen und einer großen Anzahl von Hostnamen zu
suchen. Ein Algorithmus, der die „Trie"-Datenstruktur verwendet, benötigt im
Allgemeinen die gleiche Zeitspanne für die Suche, unabhängig von
der Größe der zu
durchsuchenden Datenbank. Dieser Typ von Algorithmus wird als deterministisch
bezeichnet, da die Suchzeit für
jeden Typ von Suche konstant ist und nicht von der Größe des zu
durchsuchenden Pools abhängig ist.
Im Gegensatz dazu verwenden Server nach dem Stand der Technik typischerweise
Algorithmen (z. B. Hash-Tabellen), die sich einer determi nistischen
Leistung nur dann annähern,
wenn die Größe des zu
durchsuchenden Pools klein genug ist. Dieser Ansatz wird im Stand
der Technik verwendet, um die Menge an benötigtem Speicher zum Halten
der Datenstrukturen, die von dem Suchalgorithmus benötigt werden,
zu minimieren, und basiert auf einer Annahme, dass nur eine begrenzte
Anzahl von gleichzeitigen Sitzungen unterstützt werden muss. Die für Suchverfahren
nach dem Stand der Technik benötigte
Suchzeit nimmt im Allgemeinen zu, wenn der Datenbank zusätzliche
Adressen zugefügt
werden, und demzufolge können
Systeme nach dem Stand der Technik nicht in Echtzeit betrieben werden.
Im Gegensatz dazu verwendet das Verbund-BS wann immer es möglich ist
Algorithmen, die die Trie-Datenstruktur verwenden, welche Ausführungszeiten
aufweisen, die nicht von der Anzahl von zu durchsuchenden Datenstrukturen
beeinflusst werden. Als ein Ergebnis der Verwendung von deterministischen
Suchalgorithmen benötigt
das Verbund-BS eine konstante Zeitspanne, um jedes eingehende Paket
zu verarbeiten, selbst wenn es eine große Anzahl von Sitzungen unterstützt. Die
Verwendung der deterministischen Algorithmen erlaubt es, dass das
Verbund-BS in Echtzeit arbeitet, da alle Suchen in der selben festgelegten
kurzen Zeitspanne beendet werden und da die festgelegte Zeitspanne
kurz genug ist, um zu erlauben, dass das System in Echtzeit betrieben
wird. Es kann gesagt werden, dass in einer TCP/IP-Ausführungsform
das Verbund-BS eine
Echtzeit-TCP/IP-Zustandsmaschine aufweist. Eine Echtzeit-Zustandsmaschine
könnte
auch in Nicht-TCP/IP-Ausführungsformen
des Verbund-BS implementiert sein. Obwohl die Verwendung von deterministischen
Algorithmen die Leistung deutlich verbessert und bevorzugt ist,
ist die Verwendung von deterministischen Suchalgorithmen in dem
Verbund-BS nicht
erforderlich.
-
In
einer bevorzugten TCP/IP-Ausführungsform
kann das Verbund-BS Millionen von gleichzeitigen TCP/IP-Verbindungen
unterstützen,
und kann ein Host für
zumindest Hunderttausende von IP-Adressen und Hunderttausende von
Hostnamen ohne Leistungsverlust sein. Dies ist begründet in
dem Konstruktionsansatz und den verwendeten Algorithmen und ist
ein Ergebnis der Fähigkeit,
ein eingehendes Paket in einer bekannten Zeitspanne zu verarbeiten,
unabhängig
davon, wie viele weitere aktive Verbindungen gerade gehalten werden.
Auf der anderen Seite erfahren TCP/IP-Server nach dem Stand der Technik oft
einen deutlichen Leistungsverlust oder sogar einen Ausfall, wenn
sie versuchen, eine große
Anzahl von Verbindungen zu halten, oder wenn sie versuchen, eine
große
Anzahl von IP-Adressen
zu unterstützen,
selbst wenn die Mehrzahl dieser Verbindungen ungenutzt ist.
-
Ereignis-/netzwerkgesteuert
-
Obwohl
es nicht erforderlich ist, ist das Verbund-BS vorzugsweise ereignisgesteuert/netzwerkgesteuert.
Mit anderen Worten, die Netzprotokollfunktionalität ist nur
dann aktiv und ruft den entsprechenden Dienst auf, wenn Daten vorhanden
sind, auf die eingewirkt werden soll (in einer TCP/IP-Ausführungsform
ist ein Beispiel eines Ereignisses ein Empfang eines TCP/IP-Pakets
resultierend aus einem Benutzer-Click auf einen Hyperlink auf einer
Webseite). Im Gegensatz dazu steuern in herkömmlichen Servern Anwendungen
den Protokollstapel, sodass Anwendungen Daten aus dem Netzwerk lesen,
und es blockieren, bis die Daten verfügbar sind.
-
Mehrere externe
Netzwerke
-
Obwohl
es nicht erforderlich ist, kann das Verbund-BS mit mehr als einem
externen Netzwerk gekoppelt sein. Zum Beispiel können ein Empfänger und
ein Antwortsender eines Servers, der das Verbund-BS implementiert,
mit einem ersten externen Netzwerk gekoppelt sein und ein weiterer Empfänger und
ein weiterer Antwortsender des Servers können mit einem weiteren externen
Netzwerk gekoppelt sein. Ein das Verbund-BS implementierender Server,
der mit mehr als einem externen Netzwerk gekoppelt ist, kann konfiguriert sein,
um einen Datentransfer zwischen unterschiedlichen externen Netzwerken
zu verhindern, oder kann konfiguriert sein, um eine Routing-Funktion
zum Übergeben
jeglicher Daten zwischen beliebigen zwei externen Netzwerken zu
implementieren, oder kann konfiguriert sein, um durch selektives Übergeben
von Daten zwischen zwei externen Netzwerken eine Firewall zu implementieren.
Das Routing kann mit einem Routing-Managerelement (z. B. dem in 9A gezeigten Routing-Managerelement 920) implementiert
sein. In ähnlicher Weise
kann ein Firewall-Managerelement (z. B. das in 9A gezeigte Firewall-Managerelement 928) verwendet
werden, um zugelassene Daten selektiv von einem externen Netzwerk
zu einem weiteren Netzwerk zu übergeben.
-
Sicherheitsmerkmale
-
Das
Verbund-BS besitzt eine Anzahl von Merkmalen, die die Sicherheit
erhöhen.
Zum Beispiel sind Clients mit dem externen Netzwerk verbunden, sind
aber nicht mit dem internen Netzwerk verbunden und das externe Netzwerk
wird nur verwendet, um Daten zu und von Clients zu übertragen. „Denial
of Service"-Attacken
werden durch die Fähigkeiten
der Elemente, eingehende Pakete mit Netzwerkgeschwindigkeit zu verarbeiten,
gemildert (in bevorzugten Ausführungsformen).
Vorzugsweise werden die gesamten Client-Daten über sichere Container-Objekte übergeben
und das Bounds-Checking wird verstärkt, wodurch Pufferüberlauf-Attacken
gemildert werden. Auch kann eine Verschlüsselung/Entschlüsselung
an geographisch getrennte Elemente an physisch sichere Orte delegiert
werden. Ein Firewallschutz kann einfach realisiert werden, z. B.
um für Si cherheit
in Systemen zu sorgen, die mit mehreren externen Netzwerken verbunden
sind.
-
Elementklassen
-
Wie
oben stehend erwähnt,
weist jede Elementklasse ein ausgeprägtes spezialisiertes Betriebssystem auf,
das für
seine spezifische Funktion optimiert ist. Zum Beispiel weist jedes
Empfängerelement
ein Empfängerbetriebssystem
auf, weist jedes Verteilerelement ein Verteilerbetriebssystem auf
und weist ein jedes Antwortsenderelement ein Antwortsenderbetriebssystem
auf.
-
Unterschiedliche
Elementklassen sind unterschiedliche einzigartige Unterklassen der
Elternklasse, was als die Protoklasse bezeichnet wird. Eine Ausnahme
ist die Konfigurationsklasse, die eine Unterklasse der Protoklasse
sein kann oder nicht. Beispiele von Elementklassen sind Empfänger- 225,
Verteiler- 230, Antwortsender- 220, Konfigurations- 235,
Wächter- 240,
dauerhafte Speicher- 245, Systemadministrator-Benachrichtigungs- 250,
Decoder- 255 und Routing-Manager- 260 -Klassen
(veranschaulicht in 2) zusätzlich zu der bootfähigen Klasse.
Zusätzlich
gibt es Protoelement- und externe Netzwerk-Elementklassen, die abstrakte Klassen
sind, welche nicht als Elemente implementiert sind, die aber Elternklassen
für Elemente
sind. Eine illustrative Ausführungsform
eines Servers, der das Verbund-BS implementiert, umfasst ein Empfängerelement, ein
Verteilerelement und acht Antwortsenderelemente (und umfasst vorzugsweise
auch ein Wächterelement). Das
Verbund-BS ist skalierbar in dem Sinn, dass Elemente je nach Wunsch
zugefügt
oder entfernt werden können.
Es ist möglich,
eine große
Anzahl von Antwortsendern einzuschließen, z. B. 400 Antwortsender
und sogar größere Anzahlen
von Antwortsendern könnten
verwendet werden. Wenn jeder Antwortsender Daten mit z. B. 2,5 Gigabit
pro Sekunde überträgt, und
wenn z. B. 400 Antwortsender vorhanden sind, dann würde das
Verbund-BS ein Leistungsvermögen
zur Lieferung von einem Terabit (240 Bits/Sekunde)
an Daten aufweisen. Jeder Antwortsender könnte z. B. mit einer OC-48-Verbindung
zum Übertragen
von Daten mit 2,5 Gigabit pro Sekunde gekoppelt sein.
-
Obwohl
es nicht notwendig ist, besitzt vorzugsweise jede Element-Hardwareeinheit die
Fähigkeit, während des
Betriebs („on
the fly") dynamisch
neu konfiguriert zu werden, um die Funktion eines beliebigen nicht
abstrakten Elementes durchzuführen.
Mit anderen Worten, die CPU(s) eines Elementes kann/können vorzugsweise
einer beliebigen der Elementfunktionen zugewiesen sein. Wenn z.
B. ein Verteiler aussteigt, könnte
z. B. ein Antwortsender oder Empfänger während des Betriebs eines Servers
dynamisch neu konfiguriert werden, um als ein Verteiler zu wirken.
Diese Fähigkeit
erlaubt auch eine dynamische Lastverteilung. Eine dynamische Neukonfigurierung
von Element-Hardwareeinheiten erlaubt eine Fehlerbeseitigung ohne
Dienstunterbrechung. Somit ist ein Server, der das Verbund-BS implementiert,
ein fehlertolerantes, verteiltes System, das Dienste von ausgefallenen
Element-Hardwareeinheiten (oder ausgefallenen Element-ICs) entfernt
neu zuweisen kann.
-
Vorzugsweise
werden alle Elemente von einem bootfähigen Element abgeleitet, das
vorzugsweise von einem Protoelement abgeleitet ist. Alternativ können Elemente
implementiert werden, ohne dass sie von einem anderen Element abgeleitet
sind, wobei in diesem Fall solche Elemente eine Zwischenelement-Kommunikationsfunktionalität implementieren
müssen.
Elementklassen sind wie folgt beschrieben:
-
– Empfängerelement:
-
Vorzugsweise
ist/sind ein oder mehrere Empfänger
in dem Verbund-BS enthalten.
-
Obwohl
in diesem Abschnitt als „der
Empfänger" beschrieben, können es
auch mehr als ein Empfänger
sein.
-
Vorzugsweise
ist der Empfänger
von einem externen Netzwerkelement abgeleitet.
-
In
Ausführungsformen,
die einen Empfänger
umfassen, ist der Empfänger
mit einem externen Netzwerk gekoppelt.
-
Der
Empfänger
bearbeitet die Client-Verbindungsverwaltung. Zum Beispiel stellt
der Empfänger
in Ansprechen auf Verbindungsanfragen von Clients Verbindungen zwischen
Clients und dem Server her. Zum Beispiel in TCP/IP-Ausführungsformen
stellt der Empfänger
TCP-Verbindungen mit Clients her. Das Herstellen einer Verbindung
beinhaltet üblicherweise
nicht eine Übertragung
von Client-Daten.
-
Der
Empfänger
ist vorzugsweise die einzige Netzwerkschnittstelle eines bestimmten
Servers, zu der ein entfernter Client übertragen kann.
-
Der
Empfänger
kann Daten über
das externe Netzwerk empfangen oder übertragen, aber in TCP/IP-Ausführungsformen überträgt der Empfänger im
Allgemeinen nur Headerdaten, z. B. ein Handshake, um eine Verbindung
herzustellen.
-
In
Ausführungsformen,
die einen Empfänger
und einen Verteiler umfassen, übergibt
der Empfänger die
Daten an einen Verteiler, sobald eine Verbindung zwischen einem
Client und dem Server hergestellt ist und Daten empfangen werden.
Zum Beispiel könnten
in einer TCP/IP-Ausführungsform
die Daten eine HTTP-Anfrage sein.
-
In
TCP/IP-Ausführungsformen
verarbeitet der Empfänger
IP und TCP und verarbeitet vorzugsweise auch ARP (Address Resolution
Protocol) und ICMP (Internet Control Message Protocol).
-
Obwohl
es nicht notwendig ist, weist der Empfänger in einer TCP/IP-Ausführungsform
vorzugsweise nur eine Teil-TCP/IP-Zustandsmaschine auf.
-
In
TCP/IP-Ausführungsformen
verwaltet der Empfänger
vorzugsweise das IP-Fragment-Reassembly.
-
In
TCP/IP-Ausführungsformen
hält der
Empfänger
vorzugsweise bestimmte TCP-Zustandsinformation.
-
– Verteilerelement:
-
Vorzugsweise
ist/sind ein oder mehrere Verteiler in dem Verbund-BS enthalten.
-
Obwohl
in diesem Abschnitt als „der
Verteiler" beschrieben,
können
auch mehr als ein Verteiler vorhanden sein.
-
Verteiler
müssen
nicht mit dem externen Netzwerk gekoppelt sein, was die Sicherheit
erhöht.
-
Der
Verteiler verwaltet vorzugsweise die Ressourcenzuweisung, zum Beispiel
bestimmt er, welche/r Antwortsender zugeordnet werden soll/en, um
auf jede Client-Anfrage zu antworten. Die Daten, die erforderlich sind,
um auf eine Anfrage zu antworten, können über mehr als einen Antwortsender
verteilt sein.
-
In
einer TCP/IP-Ausführungsform
führt der
Verteiler vorzugsweise eine aktive Verbindungs- und Dienst-Verwaltung
durch, umfassend z. B. eine HTTP-Sitzungsverwaltung, Mail-Sitzungsverwaltung
und FTP.
-
In
einer TCP/IP-Ausführungsform
verarbeitet der Verteiler Verbindungen, die in Zuständen vorliegen, welche
zulassen, dass eine Datenübertragung
erfolgt. Der Verteiler hält
vorzugsweise eine Aufzeichnung des Zustandes einer jeden Verbindung,
die der Verteiler verarbeitet. Die Zustandsinformation umfasst Elemente, die
von der TCP-Spezifikation benötigt
werden (z. B. Folgenummern) wie auch Information, die von dem Verbund-BS
benötigt
wird (z. B. welche/r Antwortsender und Antwortidentifizierung einer
gegebenen Verbindung zugeordnet ist). Zum Beispiel ist eine Verbindung
einem bestimmten Dienst zugeordnet und der Dienstcode ordnet der
Verbindung ein Antwortobjekt zu. Die Antwortidentifzierung ist eine
in dem Verteiler gespeicherte Zustandsinformation, die das Antwortobjekt
identifiziert, und ist z. B. eine ganze Zahl, die als ein Index
dient, den der Verteiler zu einem Antwortsender übergibt, was es dem Antwortsender
ermöglicht,
die korrekte Antwortinformation zu identifizieren. Andere Zustandsinformation
in Bezug auf Verbindungen wird vorzugsweise von anderen Elementen
gehalten.
-
– Antwortsenderelement:
-
Vorzugsweise
ist/sind ein oder mehrere Antwortsender in dem Verbund-BS enthalten.
-
Obwohl
in diesem Abschnitt manchmal als „der Antwortsender" beschrieben, können auch
mehr als ein Antwortsender vorhanden sein und vorzugsweise sind
in einem Server viele Antwortsender vorhanden.
-
Vorzugsweise
wird der Antwortsender von einem externen Netzwerkelement abgeleitet.
-
In
Ausführungsformen,
die einen Antwortsender umfassen, ist der Antwortsender mit einem
externen Netzwerk gekoppelt.
-
Der
Antwortsender überträgt Daten.
-
Der
Antwortsender kann vorzugsweise statische Daten verwalten und übertragen
und/oder dynamische Daten erzeugen, verwalten und übertragen.
-
Der
Antwortsender erfüllt
die Funktion des Sendens angefragter Daten zu einem spezifischen
Client.
-
In
einer TCP/IP-Ausführungsform überträgt der Antwortsender
HTTP-Daten, Maildaten
und/oder Daten für
andere Dienste.
-
Obwohl
es nicht erforderlich ist, umfasst zumindest ein Element des Verbund-BS
eine Nicht-Echtzeit-Schicht. Zum Beispiel kann ein Anrufsender eine
Nicht-Echtzeit-Schicht umfassen, auf der Nicht-Echtzeitprogramme (z.
B. Java) laufen. Vorzugsweise ist die Nicht-Echtzeit-Schicht Linux.
Alternativ könnte
die Nicht-Echtzeit-Schicht eine Open-Source-Nicht-Echtzeit-Schicht
wie z. B. FreeBSD, oder OpenBSD oder eine Nicht-Open-Source-Nicht-Echtzeit-Schicht,
wie z. B. AIX oder Solaris, oder eine beliebige Open Source- oder Nicht-Open-Source-Nicht-Echtzeit-Schicht
sein. Das Verbund-BS kann verwendet werden, um einen Betriebsserver
zu implementieren, selbst wenn es keine Schnittstelle zu einer Nicht-Echtzeit-Schicht
gibt, aber in diesem Fall können
auf dem Server keine Nicht-Echtzeitprogramme laufen. Auf der Nicht-Echtzeit-Schicht,
z. B. Linux, läuft
eine Aufgabe auf einem Element des Verbund-BS.
-
Vorzugsweise
gibt es zwei Hauptverhaltensweisen eines Antwortsenders:
(1) Übertragen
von in dem Antwortsender gecachten statischen Daten und/oder Laden
statischer Daten auf den Antwortsender; (2) Bedienen dynamischer
Datenanfragen, z. B. durch Generieren von (einer) Antwort/en bei
einer Anwendung, die auf einer virtuellen Java-Maschine läuft, die
in der Nicht-Echtzeit-Schicht des Antwortsenders läuft.
-
In
einer TCP/IP-Ausführungsform
sind die Antwortsender vorzugsweise in zwei Gruppen unterteilt,
die (1) statische Antwortsenderelemente und (2) dynamische Antwortsenderelemente
umfassen. Statische Antwortsenderelemente verwalten und übertragen
z. B. statische Daten für
HTTP-, FTP-, Mail- und andere Dienste.
-
Dynamische
Daten können
von jedem beliebigen Element des Verbund-BS entweder in der Echtzeit-Schicht
oder der Nicht-Echtzeit-Schicht erzeugt werden. Zum Beispiel kann
ein dynamisches Antwortsenderelement Daten von einem dauerhaften
Speicherungselement (z. B. das dauerhafte Speicherungselement 475 in 4B) abfragen, und optional diese Daten mit anderen
Daten (z. B. einem HTTP-Header) kombinieren und die kombi nierten
Daten zu dem Client übertragen.
In einem anderen Beispiel kann ein dynamisches Antwortsenderelement
Daten von einem externen Datenbankserver (z. B. der externe Datenbankserver 485 in 4B) anfragen und optional diese Daten mit anderen
Daten kombinieren und die kombinierten Daten zu dem Client übertragen.
Es ist nicht notwendig, dass ein dynamischer Antwortsender eine
Nicht-Echtzeit-Schicht aufweist. Wenn ein dynamischer Antwortsender
eine Nicht-Echtzeit-Schicht aufweist, dann implementiert der dynamische
Antwortsender eine Nicht-Echtzeit-Schicht-Laufzeitzuweisung und eine Nicht-Echtzeit-Schicht-Nachrichtenschnittstelle
(z. B. zu Linux oder Solaris). Dynamische Antwortsenderelemente übertragen
dynamische Daten zu dem Client. Vorzugsweise sind dynamische Antwortsenderelemente
von einem statischen Antwortsenderelement abgeleitet.
-
– Konfigurationselement:
-
Ein
Konfigurator ist in Ausführungsformen
des Verbund-BS, die vorkonfiguriert sind, nicht erforderlich.
-
Obwohl
in diesem Abschnitt als „der
Konfigurator" beschrieben,
können
auch mehr als ein Konfigurator vorhanden sein. Vorzugsweise ist
in einem Server jedoch nur ein Konfigurator vorhanden.
-
Der
Konfigurator weist eine Benutzerschnittstelle zum Laden, Modifizieren
und Speichern der gesamten Systemkonfiguration auf. Vorzugsweise
erlaubt der Konfigurator auch dem Benutzer, das System in Bezug auf
seine aktuelle Konfiguration abzufragen und dessen Betrieb zu überwachen.
-
Vorzugsweise
ist der Konfigurator sprachcodierend neutral und zahlreiche Sprachen
(z. B. englisch, japanisch, deutsch etc.) werden in der Benutzer schnittstelle
voll unterstützt.
Vorzugsweise ist die Benutzerschnittstelle eine graphische Benutzeroberfläche, die
in Verbindung mit einem Monitor, einer Maus und einer Tastatur verwendet
wird.
-
Wie
in 3 gezeigt, umfasst eine illustrative Ausführungsform
eines Servers 300, der das Verbund-BS implementiert, ein
Server-Gehäuse 305,
das die Element-Hardwareeinheiten und das interne Netzwerk (z. B.
die/das in 2 gezeigte/n Element-Hardwaremodule
und interne Netzwerk) umfasst. Der Server ist mit dem externen Netzwerk
an einem oder mehreren Orten gekoppelt. Die illustrative Ausführungsform
des Servers umfasst vorzugsweise auch einen Monitor 310,
eine Maus 315 und eine Tastatur 320, die mit einem Konfigurationselement
gekoppelt sind.
-
In
dem HTTP-Dienst einer TCP/IP-Ausführungsform umfasst die Systemkonfiguration
Elemente wie z. B. IP-Adressen und TCP-Ports, af die zu hören ist.
Der Konfigurator sorgt für
eine zentralisierte Konfiguration des gesamten Systems, das in einer
TCP/IP-Ausführungsform
vorzugsweise alle Internet-Kerndienste wie z. B. einen HTTP-Dienst,
einen FTP-Dienst, einen IMAP-E-Mail-Dienst und einen POP3-E-Mail-Dienst
umfasst.
-
Wenn
er das System konfiguriert, überträgt der Konfigurator
einen Code an andere Elemente oder informiert andere Elemente von
dem Ort des Codes, auf dem die anderen Elemente laufen, um Instanzen
spezifischer Klassen von Elementen zu werden, die für eine gegebene
Konfiguration erforderlich sind. Der Code kann in einem ROM, einem
dauerhaften Speicherungselement oder in einer anderen Speicherungsvorrichtung gespeichert
werden.
-
Das
Konfigurationselement muss keine Unterklasse des Protoelementes
sein, da es nicht notwendig ist, dass das Konfigurationselement
an dem Echtzeitbetrieb des Servers teilnimmt. Vorzugsweise ist der
Konfigurator keine Unterklasse des Protoelementes und kein Echtzeit-Element.
Wenn der Konfigurator nicht als eine Unterklasse des Protoelementes
ausgeführt
ist, muss der Konfigurator noch immer das gleiche Nachrichtenprotokoll
implementieren wie das Protoelement, so dass das Konfigurationselement
in der Lage sein wird, mit den Echtzeit-Elementen zu kommunizieren.
Der Konfigurator kann z. B. als ein Standardverfahren in einem Nicht-Echtzeit-Betriebssystem
(z. B. MacOS oder Linux) zusammen mit den Vorrichtungstreibern,
die benötigt werden,
um mit dem internen Netzwerk des Servers zu kommunizieren, implementiert
sein.
-
– Wächterelement:
-
Ein
Wächterelement
kann optional in dem Verbund-BS implementiert sein.
-
Obwohl
in diesem Abschnitt als „der
Wächter" beschrieben, können mehr
als ein Wächter
vorhanden sein.
-
Das
Wächterelement überwacht
die Gesundheit des Systems durch Empfangen periodischer Zustandnachrichten
von den anderen Elementen sowie durch Initiieren periodischer Abfragen
an die anderen Elemente. Demgemäß empfängt der
Wächter
regelmäßig Daten,
z. B. einmal pro Sekunde, (oder eine beliebige andere Zeitspanne)
von Elementen über
dem gesamten internen Netzwerk. Vorzugsweise überwacht der Wächter sowohl
die Hardware als auch die Software.
-
Das
System kann derart konfiguriert sein, dass ein oder mehrere Wächter einen
oder mehrere weitere Wächter überwacht/en.
-
Durch
den/die Wächter
ist der Server in der Lage, (ein) funktionsgestörtes Element/e zu detektieren und
das System on the fly dynamisch neu zu konfigurieren, indem eine
andere Element-Hardwareeinheit zugewiesen wird, die die Funktion
eines jeden entsprechenden funktionsgestörten Elementes durchführt. Der Wächter kann
dies bewerkstelligen, indem er die Daten, für die das ausgefallene Element
verantwortlich war, auf die Hardwareeinheit eines anderen Elementes
derselben Klasse wie das ausgefallene Element lädt und dann die Elemente von
der Änderung
informiert.
-
Zum
Beispiel werden die Antwortdaten eines ausgefallenen Antwortsenders
auf einen anderen Antwortsender geladen und (der) betroffene Verteiler
wird/werden von dem neuen Ort der betroffenen Antworten informiert.
Wenn es keine anderen Elemente der selben Klasse wie ein ausgefallenes
Element gibt oder wenn die bestehenden Elemente nicht in der Lage
sind, die neu angeordnete Funktionalität anzunehmen, kann die Klasse
eines bestehenden Elementes zu der Klasse des ausgefallenen Elementes
geändert
werden, indem die bestehende Element-Hardwareeinheit neu gestartet
wird (was erfordern kann, dass die Elementfunktionalität zu der/den
Hardwareeinheit/en von (einem) noch anderen Element/en neu angeordnet
wird). Somit ist die Architektur selbstüberwachend und selbstheilend.
-
Wenn
eine CPU ausfällt,
wird der Ausfall von einem Wächter
detektiert, und die Aufgaben des ausgefallenen Elementes werden
transparent einem anderen Prozessor in einem anderen Element neu
zugewiesen und ein Alarm für
andere Elemente wird in dem internen Netzwerk abgeschickt. Wenn
eine CPU in einem Element nicht ausgefallen ist, wenn aber ein interner
Kommunikationskanal in dem Element auf Grund einer Hardware- oder Softwarestörung nicht
verfügbar
ist, routet das gestörte
Element vorzugsweise Nachrichten neu, ohne einen Ausfall des Dienstes.
Wenn dies nicht möglich
ist, wird der Ausfall von dem Wächter
detektiert, und die Wiederherstellung schreitet wie für den Fall
eines CPU-Ausfalls voran.
-
Lastverteilung:
Die Architektur des Verbund-BS führt
inhärent
eine Lastverteilung aus, da die Last inhärent über die Elemente verteilt wird.
Zum Beispiel wird in einer TCP/IP-Ausführungsform die TCP/IP-Zustandsmaschine über eine
Vielzahl von Elementen verteilt. Vorzugsweise umfasst das Verbund-BS
auch eine intelligente Lastverteilung, um dynamisch Ressourcen zuzuweisen,
die mit einem sich ändernden
Benutzerbedarf übereinstimmen.
Eine dynamische Lastverteilung kann z. B. bewerkstelligt werden,
indem ein Verteiler dem Antwortsender Aufgaben zuweist, den der
Verteiler als am wenigsten belastet bestimmt. Alternativ oder zusätzlich zu
der durch Verteiler gesteuerten dynamischen Lastverteilung kann
die dynamische Lastverteilung dadurch bewerkstelligt werden, dass
Antwortsender bestimmen, wenn sie zu wenig genutzt werden. Wenn
ein Verteiler und/oder (ein) Antwortsender bestimmt/en, dass ein
oder mehrere Antwortsender wenig belastet ist/sind, kann die Funktionalität von zwei
oder mehr Antwortsendern auf eine kleinere Anzahl von Antwortsendern
zusammengelegt werden (auf eine Weise ähnlich der zum Wiederherstellen
von einem ausgefallenen Element). Die Klasse des/der resultierenden
nicht verwendeten Elemente/s kann geändert werden, indem das/die
nicht verwendete/n Element/e als Elemente von Elementklassen neu
gestartet werden, die eine größere Last
erfahren, z. B. Empfänger.
Eine statische Lastverteilung kann einfach durch Aufteilen der Daten
unter den Antwortsendern ausgeführt
werden. Ein weitere Ansatz für
eine Lastverteilung ist ein geographischer Algorithmus, in der der
Antwortsender, der sich geographisch am Nächsten zu dem anfragenden Client
befindet, ausgewählt
wird. Ein noch weiterer Ansatz für
eine Lastverteilung ist ein Netzwerk-Topologiealgorithmus, in dem
der Antwortsender, der dem Client im Hinblick auf die Netzwerktopologie
am Nächsten
ist, ausgewählt wird.
Die Lasten des Antwortsenders können
auch auf Basis der Fähigkeiten
eines jeden Antwortsenders verteilt werden. Zum Bei spiel werden
Antworten, die Verschlüsselungsfähigkeiten
erfordern, Antwortsendern zugewiesen werden, die Verschlüsselungsfähigkeiten
besitzen. Eine Lastverteilung kann automatisiert sein oder kann
einen menschlichen Eingriff erfordern.
-
– Dauerhaftes Speicherungselement:
-
Ein
oder mehrere dauerhafte/s Speicherungselement/e kann/können in
dem Verbund-BS enthalten sein. Dauerhafte Speicherungselemente sind
insofern einzigartig in Bezug auf die anderen Elementklassen, als
sie eine direkte Schnittstelle zu einer oder mehreren Datenspeicherungsvorrichtung/en
aufweisen. Demzufolge muss eine Hardware, die verwendet wird, um
ein dauerhaftes Speicherungselement zu implementieren, eine Schnittstelle
zum Koppeln mit einer oder mehreren Datenspeicherungsvorrichtung/en
aufweisen. Dauerhafte Speicherungselemente sind dafür verantwortlich,
Rohdaten zu und von den anderen Elementen zu servieren. Dies erlaubt,
dass sich die Prozessoren der Elemente eine große Speichermenge, vorzugsweise
Terabytes von redundantem Fiber Channel RAID (Redundant Array of
Independent Disks)-Hochgeschwindigkeits(Gigabit/Sek)-Speicher teilen.
Es könnte
auch ein beliebige/r anderer Typ und Größe von Speicher verwendet werden,
z. B. herkömmliche
Festplatten, optische Disks, ROM etc. Optional kann ein dauerhaftes
Speicherungselement eine große
Menge von Hochgeschwindigkeits-RAM umfassen, die verwendet wird,
um Daten in einer speicherresidenten Datenbank zu cachen. Optional
kann das dauerhafte Speicherungselement ein Dateisystem emulieren.
-
– Systemadministratorbenachrichtigungselement
-
Ein
oder mehrere Systemadministratorbenachrichtigungselement/e kann /können optional
in dem Verbund-BS enthalten sein. In dem Fall einer Unterbrechung
wie z. B. eines Strom- oder Telefonserviceausfalls benachrichtigen
ereignisbasierte Fernalarmierungen z. B. durch einen Pager oder
ein Mobiltelefon das Systemadministratorpersonal. Die Systemadministratorbenachrichtigungseinrichtung
detektiert entweder die Unterbrechung selbst oder wird von der Unterbrechung
durch ein anderes Element informiert, und dann versucht die Systemadministratorbenachrichtigungseinrichtung,
das Systemadministratorpersonal zu kontaktieren und von der Unterbrechung
zu benachrichtigen. Optional kann die Funktionalität eines
Systemadministratorbenachrichtigungselementes in einem Wächterelement
enthalten sein.
-
– Decoderelement:
-
Ein
oder mehrere Decoder kann/können
optional in dem Verbund-BS enthalten sein. Ein Decoder ist ein Element,
das speziell optimiert ist, um Verschlüsselungs-/Entschlüsselungs-
oder Authentifizierungsfunktionen zu erledigen, z. B. in TCP/IP-Ausführungsformen
eine SSL(Secure Sockets Layer)-Sitzungsverwaltung. Eine illustrative
Ausführungsform
eines Decoderelementes umfasst eine große Anzahl von spezialisierten CPUs
(z. B. RISC-Prozessoren oder Digitalsignal-Prozessoren), wobei jede
CPU die gleichzeitig datenverarbeitungsintensiven Aspekte einer
Verschlüsselung/Entschlüsselung
für eine
gegebene Verbindung erledigt.
-
– Routing-Managerelement
-
Ein
oder mehrere Routing-Manager kann/können optional in dem Verbund-BS
enthalten sein. Ein Routing-Manager hält Adressen-Routingtabellen. Zum Beispiel hält in einer
TCP/IP-Ausführungsform
ein Routing-Managerelement IP-Routingtabellen.
-
– Firewall-Managerelement:
-
Ein
oder mehrere Firewall-Managerelement/e kann/können optional in dem Verbund-BS
enthalten sein. Ein Firewall-Managerelement bestimmt, welche Daten
von einem externen Netzwerk zu einem anderen übergeben werden sollen.
-
– Protoelement:
-
Das
Protoelement ist die Elternklasse der anderen Echtzeit-Elementklassen.
Vorzugsweise erben alle Echtzeit-Elementklassen die Eigenschaften
des Protoelementes. (Wie oben stehend erwähnt, muss das Konfigurationselement
nicht eine Unterklasse des Protoelementes sein.) Die Protoelementklasse
ist eine abstrakte Klasse, was bedeutet, dass keine Elementinstanz
erzeugt wird, die nur ein Protoelement ist, sondern stattdessen
jedes Echtzeit-Element vorzugsweise eine Instanz von einer der Unterklassen
ist, die von der Protoelementklasse abgeleitet sind.
-
Die
Protoelement-Funktionalität
umfasst z. B. die Speicherverwaltung, die Selbstheilungsüberwachung,
die Element-zu-Element-Kommunikation und Dienstprogrammfunktionen.
Selbstheilungsüberwachung bedeutet,
dass das Element die Fähigkeit
besitzt, sein Leistungsvermögen
und seine Belastung zu messen und seine „Gesundheit" zu bestimmen, indem
es den Zustand der Hardware-, Firmware- und Softwarekomponenten,
die das Element umfassen, bestimmt. Das Protoelement kann eine Fähigkeit
umfassen, zu bestimmen, wenn ein Problem mit einem Element vorliegt
und dann Hilfe anzufordern und/oder kann die Fähigkeit umfassen, Da ten mit
(einem) anderen Element/en zu teilen, das/die die Daten analysiert/analysieren
und bestimmt/bestimmen, ob ein Problem vorliegt. Die Element-zu-Element-Kommunikationsfunktionalität ist eine Funktionalität zum Senden
von und Antworten auf Nachrichten von anderen Elementen. Zum Beispiel
umfasst ein Protoelement die Funktionalität, auf eine Nachricht von einem
Konfigurator zu antworten, der das Element darüber informiert, welche Klasse
von Element es sein wird, z. B. ein Empfänger. Das Protoelement umfasst vorzugsweise
auch die Funktionalität,
einen Code zu empfangen und zu laden, der die einem Element zugewiesene
bestimmte Elementklasse implementiert. Mit anderen Worten besitzt
vorzugsweise jedes Element (mit Ausnahme vielleicht des Konfigurationselementes)
die Fähigkeit,
eine Nachricht zu empfangen, die selbst eine neue Instanz des Betriebssystems
ist. Zum Beispiel könnte
der Inhalt der Nachricht der Betriebssystemcode sein, um ein bootfähiges Element
z. B. in einen Empfänger
umzuwandeln. Wie oben stehend erläutert, kann danach ein Element
zu einer anderen Elementklasse z B. einem Verteiler umgewandelt
werden.
-
– Externes Netzwerkelement:
-
Das
externe Netzwerkelement ist vorzugsweise eine Unterklasse eines
bootfähigen
Elementes und ist vorzugsweise die Elternklasse von Empfänger- und
Antwortsenderelementen. Ein Beispiel für ein externes Netzwerkelement 916 ist
in 9A gezeigt. Empfänger- und Antwortsenderelemente
erben vorzugsweise Eigenschaften von dem externen Netzwerkelement,
wie z. B. die Fähigkeit
einer Schnittstelle für
das externe Netzwerk und Rohprotokollunterstützung. Ein Beispiel für eine Rohprotokollunterstützung in
einer TCP/IP-Ausführungsform
ist das Parsing und die Generierung von IP- und TCP-Paketen. Die
externe Netzwerk-Elementklasse ist vorzugsweise eine abstrakte Klasse,
was bedeutet, dass keine Elementin stanz erzeugt wird, die nur ein
externes Netzwerkelement ist, sondern stattdessen ist vorzugsweise
jedes Empfänger-
und Antwortsenderelement eine Instanz einer Unterklasse, die von
der externen Netzwerk-Elementklasse
abgeleitet ist. Möglicherweise
wird ein unterschiedliches externes Netzwerkelement für jede externe
Netzwerkschnittstelle verwendet, z. B. Myrinet, Ethernet und ATM.
Alternativ ist ein einzelnes externes Netzwerkelement vorhanden, das
eine Vielzahl von externen Netzwerkschnittstellen unterstützt.
-
– Bootfähiges Element:
-
Bootfähige Elemente
sind eine Unterklasse des Protoelementes. Somit erben bootfähige Elemente
die Funktionalität
des Protoelementes. Bootfähige
Elemente müssen
jedoch einen CPU-spezifischen Code definieren, der notwendig ist,
um diese Funktionalität
zu implementieren. Ein bootfähiges
Element ist eine Bare-Bones-Instanz eines Verbund-BS-Echtzeit-Elementes. Da bootfähige Elemente
einen CPU-spezifischen Code aufweisen, müssen bootfähige Elemente nicht notwendigerweise
identisch sein. Somit sind bootfähige Elemente
für X86-,
PowerPC-, und DSP-Prozessoren voneinander unterschiedlich. Ein CPU-spezifischer Code
kann z. B. eine spezifische Byteanordnung und Wortgröße umfassen.
Typischerweise ist der ausführbare Code
für ein
bootfähiges
Element ein Teil der Firmware (dauerhafter Speicher) eines Elementes
(Knoten), so dass, wenn das Element mit Energie versorgt wird, das
Element eine Instanz eines bootfähigen
Elementes wird.
-
Jede
Elementklasse (mit Ausnahme vielleicht der Konfigurationsklasse
und der Protoklasse) ist vorzugsweise eine Tochterklasse eines bootfähigen Elementes.
Bootfähige
Elemente besitzen die Fähigkeit,
den ausführbaren
Code zu empfangen und zu laden, um eine einem Element zugewiesene bestimmte
Elementklasse zu implementieren. Mit anderen Worten, jede/s bootfähige Element
oder Unterklasse eines bootfähigen Elementes
besitzt die Fähigkeit,
eine Nachricht zu empfangen, die eine neue Instanz eines Betriebssystems enthält. Zum
Beispiel könnte
die Nachricht den Betriebssystemcode enthalten, um ein bootfähiges Element
z. B. in einen Empfänger
umzuwandeln. Wie oben stehend erwähnt, kann danach ein Element
in eine andere Elementklasse umgewandelt werden.
-
4A veranschaulicht die hierarchische Beziehung
zwischen einem Protoelement 405, einem bootfähigen Element 410,
einem Empfängerelement 415,
einem Verteilerelement 420 und einem Antwortsenderelement 425 in
einer illustrativen Ausführungsform
des Verbund-BS. 4A veranschaulicht, dass bootfähige Elemente
vorzugsweise Instanzen des Protoelementes sind, und dass Elementklassen,
die als Knoten des Verbund-BS arbeiten, vorzugsweise Instanzen eines
bootfähigen
Elementes sind (obwohl die bootfähigen
Elemente nicht identisch sein müssen). 4B ist ein Blockdiagramm eines Servers 440 in
seiner Betriebsumgebung, der eine illustrative Ausführungsform
eines Verbund-BS implementiert. 4B veranschaulicht
Empfänger 445,
Verteiler 450, Antwortsender 455, einen Konfigurator 460,
einen Wächter 465,
Decoder 470, dauerhafte Speicherungselemente (Datenserver) 475,
einen Wächter 480,
einen externen Datenbankserver 485, ein internes Netzwerk 490,
ein externes Netzwerk 492 und Clients 495. Die
in 4B gezeigten externen Datenbankserver sind herkömmliche
Server, die optional mit dem internen Netzwerk eines Servers, der
das Verbund-BS implementiert, gekoppelt sein können.
-
Internes Netzwerkmodul
-
Vorzugsweise
umfassen das Protoelement und das Konfigurationselement ein internes
Netzwerkmodul (z. B. das in 9A gezeigte
interne Netz werkmodul 902). Das interne Netzwerkmodul umfasst
z. B. eine interne Netzwerkschnittstelle, Nachrichtendatenstrukturen
und ein Nachrichtenprotokoll, die verwendet werden, um die Kommunikation über das
interne Netzwerk zu erleichtern. Interne Netzwerkmodule sind spezifisch für ein bestimmtes
internes Netzwerkprotokoll. Zum Beispiel wird in Abhängigkeit
von dem in dem internen Netzwerk verwendeten Protokoll eines der
folgenden internen Netzwerkmodule verwendet: eine durchgeschaltete
Switched Fabric, z. B. Myrinet, ein Bus-Backplane, z. B. VME, oder
ein WAN, z. B. SONET. Das interne Netzwerkmodul ist keine Elementklasse.
-
Ausführungsform mit einer geographischen
Verteilung von Elementen:
-
In
einer Ausführungsform
des Verbund-BS ist zumindest ein Element an einem anderen Ort angeordnet
als andere Elemente. Dies ist möglich,
da es bei dem Verbund-BS nicht notwendig ist, dass die Elemente (oder
Prozessoren) physisch nahe oder benachbart sind. Elemente müssen nicht
in derselben Hülle,
in demselben Raum oder nicht einmal auf demselben Kontinent angeordnet
sein. Mit anderen Worten, die Elemente könnten getrennt und irgendwo
angeordnet sein, solange sie miteinander über ein internes Netzwerk kommunizieren
können.
Zum Beispiel kann das interne Netzwerk anstatt mit einem VMEbus-Backplane
mit einem WAN ausgeführt
sein, das ein SONET-Übertragungssystem
verwendet. (Andere Übertragungssysteme
als SONET könnten
ebenfalls verwendet werden.) Dies könnte z. B. nützlich sein,
um einen oder mehrere Antwortsender an einem anderen Ort anzuordnen
als den Rest des Verbund-BS. Z. B. könnte ein Antwortsender in Tokio
angeordnet sein, um Daten nahe bei Clients in Japan anzuordnen und
ein schnelles Bedienen von in Japan befindlichen Clients zu ermöglichen,
während
der Empfänger
und der Verteiler an einem Hauptort in Seattle, Washington, beherbergt
bleiben. Selbst obwohl die Daten entfernt von anderen Elementen
des Verbund-BS angeordnet sein können,
ist für
diese Ausführungsform
wie in weiteren Ausführungsformen
nur eine Sitzung pro Client notwendig. Somit kann in dieser Ausführungsform
ein Antwortsender nahe bei Clients angeordnet sein, ohne die Notwendigkeit,
ganze Server zu replizieren, und ohne die unerwünschten Folgen der Replizierung
von Servern wie z. B. eine Erzeugung von exzessivem Verkehr und
die Schwierigkeit beim Nachverfolgen der Anzahl von Hits auf einer
Seite.
-
In
einer weiteren Implementierung dieser Ausführungsform mit geographisch
verteilten Elementen können
zahlreiche Antwortsender desselben Verbund-BS an verschiedenen Orten
auf der ganzen Welt angeordnet sein. Zum Beispiel könnten ein
oder mehrere Empfänger
und Verteiler und vorzugsweise weitere Elemente in einer Haupteinrichtung
z. B. in Seattle, Washington, beherbergt sein, während ein oder mehrere Antwortsender
z. B. in New York, London, Berlin, Hongkong und Tokio angeordnet
ist/sind. Es wäre
möglich,
eine große
Anzahl von Antwortsendern, z. B. Hunderte (oder mehr), die alle
Elemente eines einzigen Verbund-BS sind, an verschiedenen Orten
auf der ganzen Welt anzuordnen. Antwortsender könnten auch an Satelliten angeordnet
sein.
-
5 veranschaulicht
einen Server, der eine Ausführungsform
mit geographisch verteilten Elementen implementiert, und ein SONET-Übertragungssystem für das interne
Netzwerk 510 verwendet, in dem ein Antwortsender 515 in
New York angeordnet ist, zwei Antwortsender 520, 525 in
Tokio angeordnet sind und in dem ein Antwortsender 530 und
der Rest der Elemente 535 in Seattle angeordnet sind. Das
Anordnen eines Antwortsenders in Seattle ist nicht erforderlich.
-
In
den Ausführungsformen,
in denen Elemente geographisch verteilt sind, kann jedes der Elemente entfernt
von jedem der anderen Elemente ange ordnet sein, solange die Elemente
in der Lage sind, miteinander über
ein internes Netzwerk zu kommunizieren. Somit ist diese Ausführungsform
nicht darauf begrenzt, nur Antwortsender von anderen Elementen entfernt
anzuordnen. Z. B. könnte/n
ein Empfänger
oder ein Empfänger und
ein Antwortsender von dem Rest der Elemente eines Verbund-BS entfernt
angeordnet sein. Die Ausführungsform
mit einer geographischen Verteilung ist besonders interessant für Internetanwendungen,
die vorzugsweise mit einer Thunder-BS-Ausführungsform des Verbund-BS ausgeführt sind.
-
– Ausführungsform mit einer direkten
Internet-Backboneverbindung:
-
Ein
Server 605 gemäß einer
weiteren Ausführungsform
der Erfindung ist in 6 veranschaulicht. In dieser
Ausführungsform
sind ein oder mehrere Empfänger 610 und
Antwortsender 615 direkt mit dem Internet-Backbone 620 (dem
externen Netzwerk) gekoppelt. Dies reduziert die Anzahl von Hops
und erhöht
dadurch die Geschwindigkeit.
-
– Ausführungsform mit einer direkten
Internet-Backboneverbindung und einem entfernten Datenspeicher:
-
In
einer weiteren in 7 veranschaulichten Ausführungsform
sind ein oder mehrere Empfänger
und Antwortsender direkt mit dem Internet-Backbone 710 (externes Netzwerk)
gekoppelt, wie in der vorhergehenden Ausführungsform. In dieser Ausführungsform
ist ein Verteiler 720 mit einem Verteiler 725 über eine
sichere Privatverbindung 730 gekoppelt. Der Verteiler 725 ist
mit einem oder mehreren Decoder/n 735 (der/die sowohl verschlüsselt/verschlüsseln und
decodiert/decodieren), der/die eine SSL (Secure Sockets Layer) implementiert/implementieren,
und mit einem oder mehreren Antwortsender/n 740 gekoppelt.
Die Antwortsender 740 sind mit dem externen Netzwerk gekoppelt.
Die Antwortsender 740 sind auch mit den Decodern 735 gekoppelt. Der
Verteiler 725, die Decoder 735 und die Antwortsender 740 sind
an einem sicheren Ort (der typischerweise geographisch entfernt
von dem Empfänger 745,
dem Verteiler 720 und den Antwortsendern 750 ist)
angeordnet, z. B. in einer Bank oder einem Unternehmen, die/das
die Kontrolle der Daten auf den Antwortsendern 740 bewahren
möchte.
Diese Ausführungsform
könnte
z. B. von einem/einer Unternehmen oder Bank verwendet werden, das/die
wünscht,
Daten über
das Internet verfügbar
zu machen und dabei den Datenspeicher unter der Kontrolle des Unternehmens
oder der Bank zu belassen und dabei eine extrem hohe Geschwindigkeit
für den
Empfänger
und die Antwortsender zu halten, der/die direkt mit dem Backbone
gekoppelt ist/sind. In dieser Ausführungsform sendet ein Client
eine verschlüsselte
Nachricht an den Empfänger 745,
die von dem Empfänger
zu dem Verteiler 720 übertragen
wird, und die dann von dem Verteiler 720 über die
Privatverbindung 730 zu dem Verteiler 725 gesendet
wird. Der Verteiler 725 sendet dann die Nachricht an einen
der Decoder 735, der die Nachricht decodiert und die decodierte
Nachricht an den Verteiler 725 zurückleitet. Der Verteiler 725 sendet
dann eine Nachricht, die den Ort der angefragten Daten identifiziert,
an einen der Antwortsender 740, der die Daten zu einem
der Decoder 735 sendet, wo die Daten verschlüsselt und
dann zu einem der Antwortsender 740 zurückgeleitet werden, der dann
die verschlüsselten
Daten über
das Internet an einen Client sendet.
-
– Asymmetrische und symmetrische
Ausführungsformen:
-
Einige
Ausführungsformen
der Erfindung können
als asymmetrisch bezeichnet werden. Eine Webserverimplementierung
der Erfindung ist ein Beispiel einer Ausführungsform, die typischerweise
asymmetrisch sein wird. Diese Ausführungsformen werden als asymmetrisch
bezeichnet, da die Menge von Daten, die von dem Server empfangen
wird, üblicherweise
viel kleiner ist als die Menge von Daten, die von dem Server ausgegeben wird.
(Es ist jedoch möglich,
dass der Datenfluss in der anderen Richtung asymmetrisch sein könnte, wobei
die Menge von Daten, die von dem Server empfangen wird, größer ist
als die Menge von Daten, die von dem Server ausgegeben wird, z.
B. in einem Mailserver, der eine Menge von Mails empfängt, die
nicht abgerufen werden.) Andere Ausführungsformen der Erfindung
können
als symmetrisch bezeichnet werden. Ein Mailserver (von dem die Mail
regelmäßig abgerufen
wird) ist ein Beispiel einer Ausführungsform, die typischerweise
symmetrisch sein wird. Ein weiteres Beispiel einer Ausführungsform,
die typischerweise symmetrisch ist, ist eine Telefonausführungsform,
worin IP-Pakete Sprachdaten tragen. Diese Ausführungsformen werden als symmetrisch
bezeichnet, da die Menge von Daten, die von dem Server empfangen
wird, grob ähnlich
der Menge von Daten ist, die von dem Server ausgegeben wird. Es
ist möglich,
dass eine Implementierung der Erfindung sowohl asymmetrische als
auch symmetrische Eigenschaften aufweist. Zum Beispiel könnte ein Server
als typischer Internet-Datenserver funktionieren und könnte auch
als ein Mailserver und/oder Sprachdatenserver funktionieren.
-
– Thunder Operating SystemTM (ThunderOSTM =
Thunder-Betriebssystem)
-
(Thunder
Operating SystemTM und ThunderOSTM sind Handelsmarken von Thunder River Technologies
Inc.)
-
Das
Thunder-BS, das eine von vielen möglichen Ausführungsformen
des Verbund-BS ist, ist eine spezifische Instanz des Verbund-BS,
die für
Internetserver optimiert ist und die die bevorzugte Ausführungsform des
Verbund-BS ist. Thunder-OS ist eine verteilte skalierbare TCP/IP-Implementierung des
Verbund-BS. In der Thunder-BS-Ausführungsform der Verbund-BS (das
verschiedene Ausführungsformen
von Thunder-BS umfassen kann), laufen auf den Elementen Betriebssysteme,
die zusam men Thunder-BS bilden. Wie in dem Verbund-BS allgemein,
läuft auf
dem Thunder-BS jede Elementklasse auf einem einzigartigen Betriebssystem. Thunder-BS
umfasst eine verteilte TCP/IP-Zustandsmaschine. Das Thunder-BS enthält eine
TCP/IP- und Internetserversoftware, die hoch optimiert für das Internet
ist. Vorzugsweise wird das Thunder-OS in der C++-Programmiersprache ausgeführt, was
die Implementierung der Vererbungshierarchie des Betriebssystems
der Elemente erleichtert.
-
Für eine erhöhte Geschwindigkeit
ist das Thunder-OS derart ausgeführt,
dass die Schlüssel-Internetdienste
und Protokolle direkt als Teil des verteilten Betriebssystems implementiert
sind. Diese Schlüssel-Internetsoftwaredienste
und -protokolle umfassen:
- – HTTP (Hyper Text Transfer
Protocol);
- – FTP
(File Transfer Protocol);
- – IMAP
(Internet Messaging Access Protocol); und
- – POP3
(Post Office Protocol 3).
-
Zusätzlich zu
diesen Schlüssel-Internetsoftwarediensten
und -protokollen sind vorzugsweise auch andere Netzwerkprotokolle
auf niedrigerem Niveau, die typischerweise in Betriebssystemen zu
finden sind, wie z. B. TCP/IP, DNS (Domain Name Server), ARP (Address
Resolution Protocol), UDP (User Datagram Protocol) und ICMP (Internet
Control Message Protocol) in dem Thunder-BS enthalten. Das Thunder-OS
umfasst vorzugsweise auch WAP (Wireless Application Protocol), SSL
(Secure Sockets Layer) und andere Dienste und Protokolle. Die Dienste
und Protokolle sind auf eine verteilte Weise ausgeführt, unter
Verwendung mehrerer Elementklassen, um die involvierte Verarbeitung
zu verteilen. In Thunder-BS-Implementierungen
laufen diese Dienste und Protokolle in Echtzeit in Bezug auf eingehende
Netzwerkpakete ab. Das bedeutet, dass eingehende Pakete jeweils
in einer begrenzten Zeitspanne verarbeitet werden, unabhängig von
der Anzahl aktiver Verbindungen, die ein Server hält. Eine
synchrone Nachrichtenübermittlung
wird verwendet, um Echtzeit-Deadlines
zu verstärken,
und eine Echtzeit-TCP/IP-Zustandsmaschine ist mit Konstantzeitalgorithmen
ausgeführt.
-
Eine
illustrative Ausführungsform
eines Thunder-BS 805, die in 8 veranschaulicht
ist, umfasst: TCP/IP (Transmission Control Protocol/Internet Protocol),
HTTP (Hyper Text Transfer Protocol), FTP (File Transfer Protocol),
IMAP (Internet Messaging Access Protocol), DNS (Domain Name Service)
etc.
-
Wie
in 8 veranschaulicht, läuft in der Thunder-BS-Ausführungsform
des Verbund-BS das Verbund-BS vorzugsweise auf einer Nicht-Echtzeit-Schicht auf bestimmten
Prozessoren oder Elementen, um Werkzeuge zum Generieren eines dynamischen
Inhalts wie z. B. Java, Python, PERL, FastCGI, CGI, Smalltalk, PHP,
Erlang, C++ und andere zu unterstützen. Demzufolge können optionale
Endbenutzeranwendungen, die für
diese Sprachen oder Umgebungen geschrieben sind, auf der Nicht-Echtzeit-Schicht laufen. Thunder-BS-Elemente
sind als singlethreaded Echtzeit-Prozesse
ausgeführt,
mit einer optionalen Unterstützung zum
Verbinden mit dem Nicht-Echtzeit-System, das laufen darf, wenn der
Echtzeit-Prozess
inaktiv ist. Die Nicht-Echtzeit-Schicht kann ein Multitasking unterstützen, wobei
mehrere Prozesse oder Threads ausgeführt werden. Vorzugsweise ist
die Nicht-Echtzeit-Schicht ein Linux-Kern, obwohl andere als Nicht-Echtzeit-Systeme
unterstützt
werden könnten.
Ein Betreiben der Linux-Schicht über
dem Thunder-BS stellt sicher, dass bestehende Linux-Anwendungen laufen
können „wie sie
sind". Mit Thunder-BS-Verwaltungs-Internetdiensten
in Echtzeit und Linux zur Bereitstellung standardbasierter offener
Schnittstellen, stellt ein in dieser Ausführungs form des Verbund-BS implementierter
Server eine starke Plattform für
das Hosting großer
dynamischer Webseiten bereit.
-
Ein
dynamischer Inhalt kann in der Echtzeit-Schicht generiert werden,
oder durch Anwendungen, die auf der Nicht-Echtzeit-Schicht laufen.
Zum Beispiel ist für
eine Nicht-Echtzeit-Schicht eine Java-Virtuell-Maschine für Java-Anwendungen
vorgesehen, und ein Perl-Interpreter ist vorgesehen, um Anwendungen
laufen zu lassen, die in Perl geschrieben sind. Diese Anwendungen
erzeugen dynamische Daten in Ansprechen auf eine Anfrage, benötigen aber
keine Einsicht dahingehend, wie diese Daten zurück an den anfragenden Client übermittelt
werden.
-
9A ist ein Blockdiagramm, das die Beziehungen
zwischen den Elementen des Thunder-BS veranschaulicht. 9A umfasst interne Netzwerkmodule 902,
ein Konfigurationselement 904, ein Protoelement 906,
ein bootfähiges
Element 908, ein dauerhaftes Speicherungselement 910,
ein Wächterelement 912,
ein Verteilerelement 914, ein externes Netzwerkelement 916,
ein Codierer-/Decoderelement 918 (auch als ein Decoderelement
bezeichnet), einen Routing-Manager 920, ein Empfängerelement 922,
ein statisches Antwortsenderelement 924, ein dynamisches
Antwortsenderelement 926 und ein Firewall-Managerelement 928.
Das Thunder-BS ist
implementiert, um sprachcodierend neutral zu sein, wie in den Konfigurationselement- 904 und Protoelement- 906 -kästchen in 9A angezeigt, was bedeutet, dass eine breite Vielfalt
von Sprachen zusätzlich
zu Englisch unterstützt
wird. 9B ist ein Blockdiagramm, das
Funktionen und Wechselwirkungen in einem bootfähigen Element 908 im
Thunder-BS veranschaulicht. 9C ist
ein Blockdiagramm, das Funktionen und Wechselwirkungen in einem
Empfängerelement 922 im
Thunder-BS veranschaulicht. 9D ist ein
Blockdiagramm, das Funktionen und Wechselwirkungen in einem Verteilerelement 914 im
Thunder-BS veran schaulicht. 9E ist
ein Blockdiagramm, das Funktionen und Wechselwirkungen in einem
statischen Antwortsenderelement 924 im Thunder-BS veranschaulicht. 9F ist ein Blockdiagramm, das Funktionen und Wechselwirkungen
in einem dynamischen Antwortsenderelement 926 im einem
Thunder-BS veranschaulicht. Im Thunder-BS sind die Antwortsenderelemente
entweder statische Antwortsenderelemente oder dynamische Antwortsenderelemente.
-
TCP
wie im Thunder-BS implementiert (als ThunderTCP bezeichnet) nutzt
die verteilte Natur des Verbund-BS, um die Bedienung von TCP-Verbindungen zu verbessern.
Die TCP-Spezifikation (Internet Requests for Comments (RFC) 793,
hiermit durch Verweis aufgenommen) beschreibt eine Zustandsmaschine
mit elf Zuständen.
Jedoch sind nur wenige dieser Zustände in der tatsächlichen
Datenübertragung
involviert. Die Natur dieser Zustände bewirkt, dass das TCP sich
selbst an eine verteilte Implementierung wie z. B. im Thunder-BS verleiht.
Ein mit einem Thunder-BS implementierter Server ist als eine verteilte
Zustandsmaschine ausgeführt, die
Verbindungsobjekte verwendet, um die erforderliche Zustandinformation
zu halten.
-
Die
Verteilung der Implementierung von TCP im Thunder-BS ist unter Bezugnahme
auf 10 wie folgt beschrieben. Die
Herstellung einer Verbindung („Drei-Wege-Handshake" des TCP) besitzt
eine minimale Abhängigkeit
von dem Dienst und erfordert nur die Kenntnis darüber, welche
Dienste gegebenen Portnummern zuzuordnen sind. Dieser Teil der TCP-Zustandsmaschine
wird effizient zu einem separaten Element verteilt, welches das
Empfängerelement 1005 ist.
Dieses Empfängerelement
ist in der Lage, eine große
Anzahl von Verbindungen zu verwalten, und wird im Allgemeinen nicht
mit einer dienstspezifischen Verarbeitung belastet.
-
Sobald
eine Verbindung hergestellt ist, wird ein Verbindungsobjekt in einem
Verteilerelement 1010 erzeugt und dieses Objekt wird dem
aktuellen TCP-Port zugeordnet. Der Verteiler (1) verwaltet verschiedene
Aspekte des Datenübertragungsabschnittes
der TCP-Spezifikation wie z. B. Anmerkungen und erneute Übertragungen
und (2) ruft den geeigneten Dienst auf. Die Dienstfunktionalität kann in
dem Verteilerelement und/oder in einem unterschiedlichen Element
(oder Elementen) vorhanden sein und wird typischerweise sowohl auf
das Verteilerelement als auch zumindest eine andere Elementklasse
verteilt. Typischerweise werden Datengenerierungs- und -übertragungsaspekte
des Dienstes in einem Antwortsenderelement ausgeführt, wodurch
das Verteilerelement von einem Großteil der Verarbeitung befreit
wird.
-
Das
Ende der Kette ist das Antwortsenderelement 1015. Der Antwortsender
benötigt
nur eine minimale Kommunikation mit dem Verteiler. Diese Kommunikation
erfolgt, damit der Antwortsender weiß, welche Daten zu übertragen
sind, wann die Daten zu übertragen
sind und wie viele der Daten zu übertragen
sind (oder im Fall von Zeitüberschreitungen
neu zu übertragen
sind). Der Antwortsender muss keine dauerhafte Zustandsinformation
zwischen Aufrufen halten, da der Verteiler bei jedem Aufruf die
notwendige Verbindungszustandsinformation zu dem Antwortsender liefert.
Mehrere Antwortsenderelemente können
einem gegebenen Verteiler zugeordnet sein, wodurch zugelassen wird,
dass mehrere Verbindungen parallel bedient werden. Zusätzlich können mehrere
Verteiler einem gegebenen Empfängerelement
zugeordnet sein.
-
Beim
Thunder-BS können
die Datenstrukturen, die Client- und Server-IP-Adressen und TCP-Ports einem Verbindungsobjekt
und einem gegebenen Dienst zuordnen, in einer konstanten Zeitspanne
durchsucht werden. Das heißt,
die Zeit, um das Nachschlagen durchzuführen, ist unabhängig von der
Anzahl gerade aktiver Verbindungen oder der Anzahl der Dienste.
Das Nachschlagen wird durchgeführt,
um die Aufzeichnung zu suchen, die die aktuelle Verbindungszustandsinformation
enthält,
die der durch die Client- und Server-IP-Adressen und TCP-Portnummern
identifizierten Verbindung zugeordnet ist. Auch Host-Nachschlagevorgänge werden
in einer konstanten Zeitspanne bewerkstelligt. Dieser Ansatz beseitigt
viele der Einschränkungen
herkömmlicher
TCP-Implementierungen. Wo immer es möglich ist, ist der verfügbare Speicher
die einzige Einschränkung
für die
Anzahl der unterstützten
aktiven Verbindungen.
-
Serversoftware
nach dem Stand der Technik bearbeitet oft mehrere Clients gleichzeitig,
indem sie eine separate Instanz des Serverprozesses aufruft, um
jede Verbindung zu bearbeiten. Demzufolge kann eine große Anzahl
von Clients, die relativ langsame Netzwerkschnittstellen verwenden,
einen großen
Teil von Systemressourcen benötigen,
selbst wenn die tatsächliche
Bedienung der Clients auf Grund der niedrigen Bandbreite von deren
Verbindung trivial ist. Andererseits verwendet das Thunder-BS zum
Bearbeiten eingehender Pakete einen singlethreaded ereignisgesteuerten
Ansatz, in Kombination mit einer verteilten parallelen Ausführung, um
ausgehende Daten zu generieren und zu übertragen. Dieser Ansatz erlaubt,
dass das System schnell genug arbeitet, um auf Ereignisse (eingehende
Netzwerkpakete) in Echtzeit zu antworten. Des Weiteren erlaubt das
Verteilen der Datengenerierung und -übertragung über mehrere Elemente eine Skalierung
des Systems. Dieser Ansatz erlaubt, dass ein einzelner Server eine
viel größere Anzahl
von Clients verwaltet, als es sonst möglich wäre.
-
Zustandsinformation
-
Um
Anfragen von Clients zu bedienen, muss eine Zustandsinformation
für jede
Verbindung gehalten werden. Im Thunder-BS wird diese Zustandsin formation
von dem Empfänger
und/oder Verteiler gehalten. Unterschiedliche Elemente können Teile
der Zustandsinformation zu unterschiedlichen Zeiten halten. Jedes
Element hält
nur einen Teil der gesamten Zustandsinformation, und der gesamte
Zustand ist über
eine Vielzahl von Elementen gespeichert. TCP-Ports können dadurch
gekennzeichnet sein, dass sie entweder (1) nach einer Kommunikation
von einem Client horchen oder (2) eine hergestellte Verbindung aufweisen.
Das nicht Vorhandensein einer Verbindung wird als geschlossener
Zustand (nicht wirklich ein Zustand) bezeichnet, der der Eintrittspunkt
in die Zustandmaschine ist. 11 veranschaulicht
eine Empfänger-TCP-Verbindungszustandsmaschine 1105 und 12 veranschaulicht eine Verteiler-TCP-Verbindungszustandsmaschine 1205 für das Thunder-BS.
Diese Zustandsmaschinen sind in den folgenden Abschnitten beschrieben.
-
Empfänger-TCP-Verbindungszustandsmaschine
-
Die
Zustandsmaschine 1105 des Empfängers in der Thunder-BS-Ausführungsform
ist in 11 veranschaulicht. Wenn von
einem Client eine neue Verbindung initiiert wird, sendet der Client
ein TCP-Paket (Paket 1) mit dem SYN-Flag-Satz in dem TCP-Header.
Wenn der Empfänger
solch ein Paket mit einer Ziel-IP-Adresse und einem TCP-Port, auf
das zu hören
der Empfänger
konfiguriert wurde, empfängt
und der Empfänger
für diese
Verbindung (wie durch die Source- und Ziel-IP-Adresse wie auch durch
die TCP-Portnummern identifiziert) noch keine Datenstruktur zugewiesen
hat, erzeugt der Empfänger
eine Verbindung, indem er einer neuen Datenstruktur zuweist, die
Zustandsinformation für
die Verbindung zu halten. Die Verbindungs-Trie-Datenstruktur wird
dann aktualisiert, um diese neu zugewiesene Struktur zu referenzieren,
so dass, wenn ein zukünftiges
Paket mit den selben IP-Adressen und TCP-Ports empfangen wird, die
bestehende Datenstruktur gefunden wird. Die neu zugewie sene Datenstruktur
wird initialisiert, um die Verbindung in dem SYN_RCVD-Zustand anzuzeigen.
Der Empfänger
sendet dann ein Paket (Paket 2) zurück an den Client, das das empfangene
Paket bestätigt.
Dieses Paket besitzt auch sowohl den SYN-Flag-Satz als auch das ACK-Flag.
Wenn der Empfänger
danach ein Paket (Paket 3) empfängt, welches das Paket 2 bestätigt, geht
er zu dem DISPATCHER_RELAY(Weitergabe-an-Verteiler)-Zustand über und sendet eine Nachricht
an den Verteiler mit der Information, die für den Verteiler notwendig ist,
um eine neue Verbindungszustandsaufzeichnung zu erzeugen. Dies beendet
den als „Drei-Wege-Handshake" des TCP bekannten
Austausch.
-
Während eine
Verbindung in dem DISPATCHER_RELAY-Zustand ist, werden die relevanten
Daten von jeglichen von dem Empfänger
empfangenen Paketen einfach an den Verteiler weitergeleitet. Der
Verteiler informiert den Empfänger
darüber,
ob die Verbindung in dem DISPATCHER_RELAY-Zustand verbleiben soll, ob sie zu dem
FIN_WAIT2-Zustand übergehen
soll, oder ob sie geschlossen werden soll. Der Verteiler informiert
den Empfänger
auch darüber,
ob irgendwelche Endbestätigungen
oder Resets an den Client zurückgesendet
werden sollen und ob der TCP-Port als in dem TIME_WAIT-Zustand befindlich
gekennzeichnet werden soll. Für
Verbindungen in dem FIN_WAIT2-Zustand wird, wenn das FIN-Flag in
dem eingehenden Paket gesetzt ist, die Verbindung geschlossen, und
der Port wird als in dem TIME_WAIT-Zustand befindlich gekennzeichnet.
Es ist zu beachten, dass in herkömmlichen
TCP-Implmentierungen der TIME_WAIT-Zustand ein tatsächlicher
Zustand der Zustandsmaschine ist. In der ThunderTCP-Implementierung
wird TIME_WAIT in einer Datenstruktur angezeigt, die sich außerhalb
des Umfangs der Zustandsmaschine befindet und die überprüft wird,
bevor die Zustandsmaschine aufgerufen wird. Wenn eine Verbindung
in dem Empfänger
geschlossen wird, wird die Datenstruktur, die für die Verbindungszustandsinformation
zugewie sen wurde, freigegeben. Die Zustände SYN_RCVD und FIN_WAIT2
entsprechen den entsprechenden Zuständen des in der TCP-Spezifikation
(RFC 793) enthaltenen Zustandsdiagrammes. Der Zustand DISPATCHER_RELAY
zeigt an, dass die Verbindung sich in einem der Zustände befindet,
die von dem Verteiler bearbeitet werden. Es ist zu beachten, dass
die gesamte Datenübertragung
in diesem Zustand abläuft,
und auch, dass der Empfänger
in diesem Zustand nur sehr wenig Verarbeitung für Verbindungen leisten muss.
Für Serverdienste
wie z. B. HTTP, die keine Verbindungen zu dem Client initiieren,
wird der zusätzliche
Zustand SYN_SENT nicht verwendet.
-
Verteiler-TCP-Verbindungszustandsmaschine
-
Die
Zustandsmaschine 1205 des Verteilers in der Thunder-BS-Ausführungsform
ist in 12 veranschaulicht. Wenn der
Verteiler eine neue Verbindung von dem Empfänger empfängt, weist er einer neuen Datenstruktur
zu, die Verbindungszustandsinformation zu halten, und sendet eine
Identifizierung für
die zugewiesene Struktur an den Empfänger zurück. Diese Identifizierung wird
von dem Empfänger
genutzt, um zukünftige Nachrichten
dieser Verbindung zuzuordnen. Der Zustand der Verbindung wird auf
ESTABLISHED gesetzt und die Verarbeitung fährt fort, wie für Verbindungen,
die sich zu Beginn in dem ESTABLISHED-Zustand befinden.
-
Für Verbindungen
in dem ESTABLISHED- oder CLOSE_WAIT-Zustand bestimmt der dienstspezifische
Code, welcher Antwortsender benutzt wird, um von dem Client empfangene
Daten zu bestätigen
und Daten zu dem Client zu senden. Der dienstspezifische Code ist
dafür verantwortlich,
einen Antwortsender anzuweisen, die Antwortdaten zusammen mit der
notwendigen TCP-Bestätigungsinformation
zurück
zu dem Client zu senden.
-
Wenn
die Antwortdaten nicht sofort verfügbar sind, wird, falls erforderlich,
nur die Bestätigung
gesendet. Die Menge von Daten, die zu dem Client gesendet werden
kann, ist auch durch die TCP-Bestätigungs-Folgenummer und die Fenstergröße, die
von dem Client in jedem TCP-Paket
gesendet werden, begrenzt.
-
Für Verbindungen
in dem ESTABLISHED-, FIN_WAIT_1- oder FIN_WAIT_2-Zustand werden
jegliche von dem Client empfangene Daten zu dem der Verbindung zugeordneten
Dienst übergeben.
(Die dienstspezifische Verarbeitung kann in dem Verteiler selbst
erfolgen oder kann über
andere Elemente verteilt werden.)
-
Für Verbindungen
in dem ESTABLISHED-Zustand wird, wenn der Client sein Ende der Verbindung
geschlossen hat, der Verbindungszustand auf CLOSE_WAIT gesetzt.
Wenn der Dienst das Ende der Verbindung des Servers geschlossen
hat, der Zustand auf FIN_WAIT_1 gesetzt.
-
Für Verbindungen
in dem CLOSE_WAIT-Zustand wird, wenn der Dienst das Ende der Verbindung
des Servers geschlossen hat, wird der Zustand auf LAST_ACK gesetzt.
-
Für Verbindungen
in dem LAST_ACK-Zustand wird, wenn der Client alle Daten des Servers
bestätigt hat,
die Zuordnung der Verbindungszustandsdatenstruktur aufgehoben und
der Empfänger
wird angewiesen, die Verbindung zu schließen.
-
Für Verbindungen
in dem FIN_WAIT_1-Zustand wird, wenn der Client sein Ende der Verbindung
geschlossen hat, aber nicht alle Daten des Servers bestätigt hat,
der Zustand auf CLOSING gesetzt. Wenn der Client sein Ende der Verbindung
geschlossen hat und alle Daten des Servers bestätigt hat, wird die Zuweisung der
Verbindungszustandsdatenstruktur aufgehoben und der Empfänger wird
angewiesen, eine Endbestätigung
zu senden, und die Verbindung als in TIME_WAIT befindlich zu kennzeichnen.
Wenn der Client sein Ende der Verbindung nicht geschlossen hat und
alle Daten des Servers bestätigt
hat, und der Dienst nach dem Schließen des Endes der Verbindung
des Servers weitere Clientdaten annehmen wird, wird der Zustand
auf FIN_WAIT_2 gesetzt. Wenn der Client sein Ende der Verbindung
nicht geschlossen hat und alle Daten des Servers bestätigt hat
und der Dienst nach dem Schließen
des Endes der Verbindung des Servers keine weiteren Client-Daten
annehmen wird, wird die Zuweisung der Verbindungszustandsdatenstruktur
aufgehoben und der Empfänger
wird angewiesen, seinen Verbindungszustand auf FIN_WAIT_2 zu setzen.
-
Für Verbindungen
in dem FIN_WAIT_2-Zustand wird, wenn der Client sein Ende der Verbindung
geschlossen hat, die Zuweisung der Verbindungszustandsdatenstruktur
aufgehoben und der Empfänger
wird angewiesen, eine Endbestätigung
zu senden und die Verbindung als in TIME_WAIT befindlich zu kennzeichnen.
-
Für Verbindungen
in dem CLOSING-Zustand wird, wenn er Client alle Daten des Servers
bestätigt
hat, die Zuweisung der Verbindungszustandsdatenstruktur aufgehoben
und der Empfänger
wird angewiesen, die Verbindung in TIME_WAIT befindlich zu kennzeichnen.
-
In Übereinstimmung
mit der TCP-Spezifikation wird, wenn Daten übertragen werden, ein Zeitmesser gestartet.
Wenn der Zeitmesser abläuft,
bevor die Daten durch den Client bestätigt werden, wird der entsprechende
Antwortsender benachrichtigt, die notwendigen Daten zu übertragen.
Bestätigungsauszeiten
und TCP-Reset-Nachrichten können
auch bewirken, dass eine Verbindung geschlossen wird.
-
Verteilte TCP/IP-Implementierung
im Thunder-BS
-
Die
Thunder-BS-Ausführungsform
einer verteilten TCP/IP-Implementierung
erlaubt, dass mehrere Elemente und ihre zugeordneten externen Netzwerkschnittstellen
kollektiv eine einzelne IP-Adresse bedienen. Im Speziellen ist die
TCP/IP-Zustandsmaschine über
einen Empfänger
und einen oder mehrere Antwortsender (und vorzugsweise einen oder
mehrere Verteiler) verteilt, so dass eine IP-Adresse von einem Empfänger und einem
oder mehreren Antwortsender/n (und vorzugsweise einem oder mehreren
Verteiler/n) bedient wird. Das Vorhandensein mehrerer Antwortsender
mit ihren zugeordneten externen Netzwerkschnittstellen erlaubt,
dass die Thunder-BS-Ausführungsform
einer verteilten TCP/IP-Implementierung
Daten mit Geschwindigkeiten überträgt, die
das Leistungsvermögen
einer einzelnen externen Netzwerkschnittstelle übersteigen würden. Ein Hinzufügen zusätzlicher
Antwortsender zu einem Server erhöht die Kapazität des Servers,
Daten für
den/die einer spezifischen IP-Adresse
zugeordneten Dienst/e zu übertragen.
-
Alternative
Ausführungsform
einer verteilten TCP/IP-Implementierung Eine weitere Ausführungsform einer
verteilten TCP/IP-Implementierung, veranschaulicht in 13, benötigt
das Verbund-BS nicht, kann jedoch in einem einzelnen Computer 1302 mit
einer oder mehreren CPU/s 1305 implementiert sein, mit
einer Vielzahl von externen Netzwerkschnittstellen 1310a bis 1310e und
mit oder ohne einem Betriebssystem. In dieser Ausführungsform
sind ein oder mehrere Empfänger 1315,
ein oder mehrere Verteiler 1320 und ein oder mehrere Antwortsender 1325 als
Prozesse oder Threads, die auf dem Computer ablaufen, implementiert.
Da diese Prozesse oder Threads auf einem einzelnen Computer ablaufen,
können sie
untereinander kommunizieren, ohne ein internes Netzwerk zu benötigen. Diese
Kommunikation wird erreicht durch einen geteilten Speicher, Nachrichten-Warteschlangen
oder ein anderes Interprozess- oder Interthread-Kommunikationsverfahren.
Die Empfänger-,
Verteiler- und Antwortsenderprozesse oder -threads in dieser Ausführungsform
arbeiten ähnlich
den in der Thunder-BS-Ausführungsform
einer verteilten TCP/IP-Implementierung
beschriebenen Empfänger-,
Verteiler- und Anwortsenderelementen. Somit sind Verfahren zum Initialisieren
eines Servers und Verfahren zum Antworten auf Anfragen in dieser
alternativen Ausführungsform
analog den Verfahren in der Thunder-BS-Ausführungsform implementiert. Im
Speziellen wird die Bedienung einer einzelnen IP-Adresse über einen Empfängerprozess
oder -thread, einen oder mehrere Verteiler oder -threads und einen
oder mehrere Antwortsenderprozesse oder -threads verteilt. Eine
dedizierte Netzwerkschnittstelle ist mit dem Empfängerprozess
oder -thread gekoppelt und eine oder mehrere dedizierte externe
Netzwerkschnittstelle/n ist/sind mit jedem Antwortsender gekoppelt.
Kollektiv stellen diese Prozesse oder Threads mit ihren dedizierten
externen Netzwerkschnittstellen Dienste für eine oder mehrere IP-Adresse/n bereit.
Die Bedienung einer einzelnen IP-Adresse wird nicht von einer einzelnen
externen Netzwerkschnittstelle verarbeitet, sondern ist auf mehrere externe
Netzwerkschnittstellen verteilt. Ein einzelner Empfänger kann
eine oder mehrere IP-Adresse/n bedienen. Vorzugsweise ist ein Empfänger mit
einer einzelnen externen Netzwerkschnittstelle gekoppelt, obwohl mehrere
externe Netzwerkschnittstellen mit einem einzelnen Empfänger gekoppelt
sein können.
-
Eine
Variation der vorhergehenden Ausführungsform einer verteilten
TCP/IP-Implementierung benötigt
ebenfalls nicht das Verbund-BS, kann aber auf mehreren Computern
implementiert werden. Jeder Computer weist eine oder mehrere CPU/s,
eine oder mehrere interne Netzwerk schnittstelle/n und eine oder
mehrere externe Netzwerkschnittstelle/n auf. Jeder Computer kann
mit oder ohne ein/em Betriebssystem betrieben werden. In jedem Computer
sind die interne Netzwerkschnittstelle und die externe Netzwerkschnittstelle
vorzugsweise nicht eine geteilte einzelne Schnittstelle, sondern
sind vorzugsweise separate unterschiedliche Schnittstellen. In dieser
Ausführungsform
sind ein oder mehrere Empfänger,
ein oder mehrere Verteiler und ein oder mehrere Antwortsender als
Prozesse oder Threads, die auf jedem Computer ablaufen, implementiert. Vorzugsweise
läuft jeder
dieser Prozesse oder Threads auf einem dedizierten Computer ab.
Vorzugsweise kommunizieren diese Prozesse oder Threads untereinander
mit Hilfe eines internen Netzwerkes. Das interne Netzwerk kann ein
beliebiges drahtgebundes, drahtloses, optisches oder anderes Netzwerksystem
sein, das Computer miteinander verbinden kann, z. B. Ethernet, Gigabit
Ethernet, Token-Ring, Fibre Channel oder Infini-Band. Die Empfänger- Verteiler- und Antwortsenderprozesse
oder -threads in dieser Ausführungsform
arbeiten ähnlich
den in der hierin erläuterten
Thunder-BS-Ausführungsform
einer verteilten TCP/IP-Implementierung
beschriebenen Empfänger-,
Verteiler- und Antwortsenderelementen. Somit sind Verfahren zum
Initialisieren eines Servers und Verfahren zum Antworten auf Anfragen
in dieser alternativen Ausführungsform
analog den Verfahren in der Thunder-BS-Ausführungsform implementiert. Im
Speziellen wird die Bedienung einer einzelnen IP-Adresse über einen Empfängerprozess-
oder -thread, einen oder mehrere Verteilerprozesse oder -threads
und einen oder mehrere Antwortsenderprozesse oder -threads verteilt.
Vorzugsweise ist eine dedizierte Netzwerkschnittstelle mit dem Empfängerprozess
oder -thread gekoppelt und eine oder mehrere dedizierte externe
Netzwerkschnittstelle/n ist/sind mit jedem Antwortsender gekoppelt.
Kollektiv stellen diese Prozesse oder Threads mit ihren (vorzugsweise)
dedizierten externen Netzwerkschnittstellen Dienste für eine oder
mehrere IP-Adresse/n bereit. Die Bedienung einer einzelnen IP-Adresse
wird nicht von einem einzelnen Computer oder einer einzelnen externen
Netzwerkschnittstelle verarbeitet, sondern ist auf mehrere Computer und
mehrere externe Netzwerkschnittstellen verteilt. Ein einzelner Empfänger kann
eine oder mehrere IP-Adresse/n bedienen. Vorzugsweise ist ein Empfänger mit
einer einzigen externen Netzwerkschnittstelle gekoppelt, obwohl
mehrere externe Netzwerkschnittstellen mit einem einzelnen Empfänger gekoppelt
sein können.
-
Alternative
verteilte TCP/IP-Ausführungsformen
müssen
keinen Verteilerprozess oder -thread umfassen, sondern können die
Verteilerfunktionalität
in den Empfänger-
und/oder Antwortsenderprozessen oder -threads beinhalten.
-
Verfahren
der Konfiguration und des Betriebes
-
Vor
Verarbeitungsanfragen von Clients wird der Server durch den Konfigurator
konfiguriert. Obwohl eine Konfiguration durch den Konfigurator automatisch
sein könnte,
wird ein Konfiguration typischerweise durch den Konfigurator in
Ansprechen auf eine Bedienereingabe bewerkstelligt. Der Bediener
kann die Konfigurationsdaten entweder manuell eingeben oder eine
zuvor gespeicherte Konfiguration laden. Dann initiiert der Bediener
das Laden der Konfiguration auf den Server. Die ausgewählte Konfiguration
identifiziert, welche BS-Element-BS-Instanz auf jede teilnehmende
Element-Hardwareeinheit geladen wird.
-
Ein
typisches Beispiel für
ein Konfigurieren eines Servers ist das folgende:
ein Empfänger, ein
Verteiler und eine Anzahl von Antwortsendern werden vorbestimmt.
In einigen alternativen Ausführungsformen
werden keine Verteiler vorbestimmt, und die Verteilerfunktionalität ist in
einem Empfänger und/oder
einem Antwortsender implementiert. In diesen alterna tiven Ausführungsformen
werden Aktivitäten, die
von einem Verteiler durchgeführt
worden wären,
von einem oder mehreren Empfänger/n
und/oder einem oder mehreren Antwortsender/n durchgeführt. Nachdem
die Elemente vorbestimmt sind, wird der geeignete ausführbare Code
sodann auf diese Element-Hardwareeinheiten heruntergeladen und wird
ausgeführt.
Der Empfänger
wird dann angewiesen, welche IP-Adressen und TCP-Portnummern Verbindungen
daran annehmen sollen und welche Verteiler diesen Verbindungen zugeordnet
werden sollen. Der Verteiler wird dann angewiesen, welche Dienste
er jedem dieser IP-Adressen-/TCP-Port-Paare
zuordnen soll. Für
den HTTP-Dienst wird der Verteiler auch angewiesen, welche Hostnamen
Anfragen annehmen sollen. Die Antwortdaten werden dann auf die Antwortsender
geladen. Dies können
statische Rohdaten und/oder ein ausführbarer Code sein, der laufen
gelassen werden soll, um dynamische Daten zu generieren. Während jede
Antwort geladen wird, wird der Verteiler über ihren Ort informiert. Sobald
der Verteiler über
den Ort der Antwort informiert ist, aktualisiert er seine Datenstruktur,
die zum Nachschlagen von Antworten verwendet wird, so dass der Server
bereit ist, diese Antwort das nächste
Mal zu bedienen, wenn ein Client darum anfragt. 14A ist ein Flussdiagramm zur Veranschaulichung
eines Verfahrens zum Initialisieren eines Servers gemäß einer
illustrativen Ausführungsform
der Erfindung. 14B ist ein Flussdiagramm zur
Veranschaulichung eines Verfahrens zum Initialisieren eines Servers
gemäß einer
weiteren illustrativen Ausführungsform
der Erfindung.
-
15 veranschaulicht einen Datenfluss zwischen dem
Client 1505, dem Empfänger 1510,
dem Verteiler 1515 und dem Antwortsender 1520 zur
Bedienung einer Anfrage von dem Client in der Thunder-BS-Ausführungsform.
Eine typische Transaktion zwischen einem Client und einem Server
geht wie folgt vor sich: Ein Client initiiert eine Anfrage, was darin
resultiert, dass eine Verbindung hergestellt wird, indem eine Anzahl
von TCP-Paketen zwischen dem Client und einem Empfängerelement
des Servers ausgetauscht wird. Während jedes
Paket empfangen wird, muss der Empfänger die in dem Paket enthaltenen
IP-Adressen und TCP-Ports nachschlagen und bestimmen, ob sie einer
bestehenden Verbindung entsprechen. Vorzugsweise wird dieses Nachschlagen
unter Verwendung der „Trie"-Datenstruktur ausgeführt, um
für eine
deterministische Ausführungszeit
zu sorgen, unabhängig
davon, wie viele aktive Verbindungen der Empfänger hält.
-
Wenn
die Verbindung erfolgreich den „hergestellten"(established)-Zustand
erreicht hat, so kann der Client dann Daten senden, die die tatsächliche
Anfrageinformation enthalten. Der Empfänger zieht Header aus den empfangenen
Daten und zieht auch die Nutzinformation heraus und übergibt
die Nutzinformation „wie
sie ist" an den
Verteiler. Für
eine HTTP-Anfrage umfassen die Daten (Nutzinformation) den HTTP-Header
(der z. B. einen Befehl umfasst, Daten an eine spezifizierte Internetadresse
zu bekommen) und falls vorhanden, die HTTP-Nutzinformationsdaten.
Wenn der Empfänger
das Paket mit diesen Daten empfängt,
sendet er die Daten an den Verteiler. Wenn der Verteiler die Anfragedaten
für eine
neue Verbindung empfängt,
weist er eine Datenstruktur zu, die den Zustand der Verbindung hält, und
sendet eine Identifizierung an den Empfänger zurück, die es dem Empfänger erlaubt,
zukünftige
Daten dieser Verbindung an den Verteiler zuzuordnen. Der Empfänger speichert
diese Identifizierung in seiner Datenstruktur, die dieser Verbindung
zugeordnet ist.
-
Der
Verteiler verarbeitet dann die Anfragedaten, um zu bestimmen, welche
Antwort gesendet werden soll. Vorzugsweise verwendet ein Teil dieser
Verarbeitung die „Trie"-Datenstruktur, um
die richtige Antwort wirksam anzuordnen. Auf Basis der Datenaufzeichnung,
die aus dieser Suche resul tiert, sendet der Verteiler eine Nachricht
an den entsprechenden Antwortsender, die ihn anweist, bestimmte
von den Daten zurück
an den Client zu senden. (Die Menge von Daten, die zu empfangen
der Client bereit ist, sowie Bestätigungen darüber, welche
Daten der Client bereits empfangen hat, sind ein Teil der in jedem
von dem Client gesendeten TCP-Paket enthaltenen Information.) Der
Antwortsender gibt eine Rückmeldung
an den Verteiler mit einer Identifizierung, um die einzigartige
Instanz der dieser Verbindung zugeordneten Antwort zu identifizieren.
Dies ist notwendig für
dynamische Daten, wo jede Verbindung möglicherweise darin resultieren
würde,
dass unterschiedliche Daten in Ansprechen auf identische Anfragen
zurückgesendet
werden. Der Antwortsender teilt dem Verteiler auch die Größe der Antwortdaten
mit, falls sie bekannt sind, sodass der Verteiler bestimmen kann,
wann die vollständige
Antwort gesendet wurde. Der Verteiler verwendet die Größe der Antwortdaten,
wenn er die nächste
Folgenummer berechnet. Der Antwortsender sendet die Antwortdaten
an den Client.
-
Wenn
der Client die Antwortdatenpakete empfängt, sendet er Bestätigungspakete
zurück
an den Empfänger,
die anzeigen, welche Daten der Client erfolgreich empfangen hat
und wie viele weitere Daten er nun aufzunehmen gewillt ist. Der
Empfänger
empfängt
dieses Paket und führt
wiederum den IP-Adressen- und TCP-Port-Nachschlagevorgang durch
und bestimmt, dass dieses Paket zu einer hergestellten Verbindung
gehört.
Der Empfänger
sendet dann die notwendige Information von dem Paket zusammen mit
der zuvor für
diese Verbindung gespeicherten Identifizierung an den Verteiler.
Der Verteiler empfängt
diese Nachricht und verwendet die Identifizierung, um die entsprechende
Zustandsinformation anzuordnen. Dann verwendet der Verteiler die
Bestätigungsinformation
zusammen mit der gespeicherten Zustandsinformation, um zu bestimmen, welcher
Abschnitt der Daten nun gesendet werden kann. Die Folgenummern in dem
Verteiler werden um die Anzahl übertragener
Bytes inkrementiert. Der Verteiler sendet dann eine Nachricht an
den entsprechenden Antwortsender. Diese Nachricht enthält die zuvor
gespeicherte Antwortidentifizierung zusammen mit der Information,
die anzeigt, welcher Abschnitt der Daten zu senden ist. Der Verteiler
hält auch
Zeitmesser, die bewirken, dass er die Antwortsender anweist, Daten
neu zu senden, die nicht innerhalb der entsprechenden Zeitspanne
bestätigt
wurden. Der Client empfängt
neuerlich diese Daten und sendet die nächste Bestätigung.
-
Dieser
Zyklus setzt sich fort, bis alle Antwortdaten von dem Antwortsender
gesendet und von dem Client bestätigt
wurden, zu welcher Zeit der Verteiler den Empfänger darüber informiert, dass die Verbindung
geschlossen werden soll. Der Verteiler informiert den Antwortsender
auch darüber,
dass die einzigartige Instanz der Antwort für diese Verbindung nicht mehr
gebraucht wird. Und zuletzt hebt der Verteiler die Zuweisung der Datenstruktur
auf, die die Zustandsinformation für diese Verbindung enthält. Das
letzte Schließen
der Verbindung beinhaltet, dass einige zusätzliche Pakete zwischen dem
Client und dem Empfänger
ausgetauscht werden, wonach der Empfänger die Zuweisung seiner Datenstruktur
aufhebt, die die Zustandsinformation für die Verbindung enthält. Fehlerzustände, abgebrochene
Anfragen etc. resultieren in einer Verarbeitung zusätzlich zu
der oben beschriebenen. 16A ist
ein Flussdiagramm, das ein Verfahren zum Antworten auf eine über ein
externes Netzwerk empfangene Anfrage in Übereinstimmung mit einer illustrativen
Ausführungsform
der Erfindung veranschaulicht. 16B ist
ein Flussdiagramm, das ein Verfahren zum Antworten auf eine über ein externes
Netzwerk empfangene Anfrage in Übereinstimmung
mit einer weiteren illustrativen Ausführungsform der Erfindung veranschaulicht. 16C ist ein Flussdiagramm, das ein Verfahren zum
Antworten auf eine über ein
externes Netzwerk empfangene Anfrage in Übereinstimmung mit einer weiteren
il lustrativen Ausführungsform
der Erfindung veranschaulicht. 16D ist
ein Flussdiagramm, das ein Verfahren zum Antworten auf eine über ein
externes Netzwerk empfangene Anfrage in Übereinstimmung mit einer weiteren
illustrativen Ausführungsform
der Erfindung veranschaulicht.
-
Signaltragendes Medium
-
Ein
weiterer Aspekt der Erfindung ist ein signaltragendes Medium, das
konkret einen maschinenlesbaren Code beinhaltet, der von einer digitalen
Verarbeitungsvorrichtung zur Implementierung einer beliebigen der
hierin beschriebenen Ausführungen
eines Servers oder digitalen Computersystems ausführbar ist.
Ein weiterer Aspekt der Erfindung ist ein signaltragendes Medium,
das konkret ein Programm von maschinenlesbaren Anweisungen beinhaltet,
die von einer digitalen Verarbeitungsvorrichtung zur Durchführung eines
jeden beliebigen hierin beschriebenen Verfahrens umfassend z. B.
Verfahren zum Antworten auf eine über ein externes Netzwerk empfangene
Anfrage, Verfahren zum Antworten auf eine Anfrage (die nicht über ein
externes Netzwerk empfangen werden muss) oder Verfahren zum Initialisieren
eines Servers, ausgeführt
werden können.
In einer bevorzugten Ausführungsform
der Erfindung umfasst der maschinenlesbare Code einen Software-Maschinenprogrammcode.
-
Der
Code kann sich in einem oder mehreren von verschiedenen Typen signaltragender
Medien befinden. Zum Beispiel kann der Code in einem signaltragenden
Medium wie z. B. einer optischen Disk 1705, in 17 gezeigt, enthalten sein. Die optische Disk
kann ein beliebiger Typ von signaltragender Disk sein, z. B. eine
CD-ROM, CD-R (eine beschreibbare CD-ROM, die auf einem CD-ROM-Laufwerk gelesen
werden kann), CD-RW (mehrfach beschreibbare CD), CD-E (beschreibbare
und löschbare
CD), oder DVD (Digital Video Disk) und wird typischerweise eine
CD-ROM sein.
-
Alternativ
kann anstelle oder zusätzlich
zu einer optischen Disk das signaltragende Medium eines oder mehrere
der folgenden umfassen: eine magnetische Datenspeicherdiskette (Floppy
Disk), eine Zip-Disk, einen DASD-Speicher (z. B. eine herkömmliche „Festplatte" oder ein RAID-Array), ein Magnetband,
ein RAM, ein elektronischer Nur-Lese-Speicher (z. B. ROM, EPROM
oder EEPROM), Lochkarten oder Übertragungsmedien
wie z. B. digitale und/oder analoge Nachrichtenverbindungen.
-
Pseudocode
-
Der
folgende Pseudocode beschreibt die Implementierung einer illustrativen
TCP/IP-Ausführungsform des
Verbund-BS, das Thunder-BS und illustrative Elementklassen umfasst:
-
-
-
-
-
-
-
-
-
-
-
Es
wird für
den Fachmann einzusehen sein, dass verschiedene Änderungen und Abwandlungen
an den illustrativen Ausführungsformen
der hierin beschriebenen Erfindung vorgenommen werden können, ohne von
dem Umfang der Erfindung wie durch die Ansprüche definiert abzuweichen.