-
BEREICH DER ERFINDUNG
-
Diese Erfindung bezieht sich auf
Netzwerke im allgemeinen einschließlich Ethernet Netzwerken,
und spezieller auf gebündelte
Ethernet und Ethernet-kompatible Netzwerke.
-
HINTERGRUND DER ERFINDUNG
-
Ein Netzwerk ist eine Einrichtung,
die es einer Anzahl von Workstations (Arbeitsplatzrechnern), Computern
und anderer Ausstattung (hier nachfolgend gemeinsam als "Computer" bezeichnet) erlaubt,
miteinander zu kommunizieren. Teile eines Netzwerkes umfassen Hardware
und Software, zum Beispiel die Computer und Stationen (von denen
jeder bzw. jede eine oder mehrere zentrale Verarbeitungseinheiten,
freizugreifbaren und persistenten Speicher enthalten kann), die
Schnittstellenkomponenten, die Kabel oder Glasfasern, um sie zu
verbinden, und gleichermaßen
auch Software, die den Zugang zu und den Informationsfluß durch
das Netzwerk regelt. In Netzwerken, in denen der Datenfluß 100 Mbits/sec
("Mbps") oder höher ist,
ist das Übertragungsmedium
oft Glasfaser. In Netzwerken, in denen eine langsamere Datenrate
akzeptabel ist, z. B. 10 Mbps, kann das Übertragungsmedium Koaxialkabel
oder verdrillte Leitung sein, wie es oft bei einem Ethemet-Netzwerk der Fall
ist.
-
In einem Netzwerk definiert die Netzwerkarchitektur
Protokolle, Nachrichtenformate und andere Standards, welche die
Computer und die übrige
Ausstattung sowie die Software einhalten müssen. Die meisten Netzwerkarchitekturen
haben sich ein Modell zu eigen gemacht, das funktionale Schichten
umfaßt,
von denen eine bestimmte Schicht für die Ausführung einer spezifischen Menge
von Funktionen und zur Bereitstellung einer spezifischen Menge von
Diensten zuständig
ist. Daher können
die Dienste, die von jeder Schicht zur Verfügung gestellt werden, und die
Schnittstellen zwischen den Schichten eine Netzwerkarchitektur definieren. Protokolle
definieren die Dienste, die über
eine Schnittstelle einer Schicht bereitgestellt bzw. abgedeckt werden,
und die Regeln, die in der als Teil dieses Dienstes durchgeführten Verarbeitung
befolgt werden.
-
Verschiedene Organisationen haben
Modelle und Standards vorgeschlagen, die innerhalb der Netzwerk-Fachwelt
akzeptiert wurden. Zum Beispiel hat die International Standards
Organisation ("ISO") ein Sieben-Schichten-Referenzmodell
für das
Zusammenarbeiten in Computernetzwerken vorgeschlagen, das Open Systems
Interconnect ("OSI") Architektur genannt
wird. Ein anderer Satz von Standards wurde vom Institute of Electrical
and Electronics Engineers ("IEEE") als Satz von vorgeschlagenen
Standards für
lokale Netzwerke (Local Area Network, "LAN"),
bekannt als IEEE Projekt 802, veröffentlicht. Dieses Modell ist
zum Sieben-Schichten OSI-Modell konform, aber direkt nur zu den
untersten zwei OSI-Schichten, nämlich
der Bitübertragungsschicht
und der Datensicherungsschicht.
-
1A zeigt
ein Netzwerk gemäß der IEEE
Projekt 802 Modifikation des ISO Sieben-Schichten-Modells, in dem verschiedene
Computer 10, 10', 10" Daten untereinander über ein
physikalisches Übertragungsmedium 20,
z. B. Kabel, kommunizieren können,
typischerweise über
eine Datenendeinrichtungseinheit (Data Tenninating Equipment, "DTE") 120, 120', 120". Jede einzelne oder
alle von den DTEs kann bzw. können
ein Switch, ein Routen, ein anderes Computersystem, etc. sein. In
der Praxis kann ein Netzwerk Hunderte oder Tausende Computer enthalten.
In 1A ist es so zu verstehen,
daß dem
Computer 10" (oder
etwas Äquivalentem)
genau so ein Sieben-Schichten ISO-Modell zugeordnet ist.
-
Die unterste, erste oder "L1"-Schicht 30 ist sowohl
im ISO- als auch im Projekt 802 Modell eine Bitübertragungsschicht
mit Verbindungen zwischen zwei Maschinen (z. B. Computer 10, 10'), um die Übertragung von
Bitströmen über ein
physikalisches Übertragungsmedium
(z. B. Kabel 20) zu ermöglichen.
Daher beschäftigt
sich die Bitübertragungsschicht 30 mit
Arten von Verkabelung, Kabelsteckern, Anschlußkonnektoren und ähnlichem.
Oft kann ein Server bis zu fünfzig
physikalische Anschlußkonnektoren
haben, auch wenn modernere Einheiten wie der Sun Microsystems Inc.
Enterprise Modell 10.000 Server 100 physikalische
Verbindungen akzeptieren bzw. aufnehmen können, von denen jede ein Datenflußrate von
100 Mbit/sec hat.
-
Viele Ethernet Netzwerke halten einen
Standard zu Mehrfachzugang mit Trägerabfrage und Kollisionsentdeckung
(Carrier Sense Multiple Access with Collision Detection, "CSMA/CD") ein. Im 802-Modell für CSMA/CD
existiert eine Abgleichschnittstelle 40, die durch einen
Standard einer medienunabhängigen
Schnittstelle (Media Independent Interface, "MII")
definiert ist, zur Abgleich-Teilschicht
(Reconciliation Sublayer) 40 Schnittstelle zwischen der
Bitübertragungsschicht 30 und
der Medienzugangssteuerungsteilschicht (Media Access Control, "MAC") 50B.
-
Gemäß MII sind die Daten und die
Begrenzungszeichen synchron zu einem entsprechenden Takt, und zwei
asynchrone Signale des Medienzustands, nämlich Carrier Sense ("CRS") und Kollision (Collision, "COL") werden bereitgestellt.
MII sieht eine zweiadrige, serielle Managementschnittstelle vor,
die Steuerung und Zustand zusammenfaßt, nämlich Managementdatentakt (Management
Data Clock, "MDC") und Managementdatenein-/ausgabe
(Management Data Input/Output, "MDIO"). Im OSI-Sieben-Schichtenmodell
befindet sich oberhalb der Bitübertragungsschicht
eine Datensicherungsschicht, die für die fehlerfreie Übertragung
von Datenframes zwischen Netzknoten verantwortlich ist. Ein Datenverbindungssteuerungsprotokoll
bzw. Steuerungsprotokoll der Datensicherungsschicht beschreibt Betrieb
und Schnittstellen dieser Schicht, die auch die höheren Schichten
im Modell von Angelegenheiten des physikalischen Übertragungsmediums
abschirmen muß.
-
Im 802-Modell, das in 1A abgebildet ist, ist die
Datensicherungsschicht unterteilt in die MAC-Schicht 50B und eine darüberliegende
Schicht 50A zur Steuerung der logischen Verbindung (Logical Link
Control, "LLC"), die gemeinsam
die zweite oder L2-Schicht bilden. Die Medienzugangssteuerungsteilschicht
befaßt
sich mit Zugangssteuerungsmethoden, um festzulegen, wie die Verwendung
des physikalischen Übertragungsmediums
zu steuern ist. Die LLC-Teilschicht 50A ist für medienunabhängige Datenverbindungsfunktionen
verantwortlich und ermöglicht
es der Barüberliegenden
Netzwerk- oder Vermittlungsschicht (oder Internetprotokoll-, "IP-"Schicht) 60,
auf LAN-Dienste unabhängig
davon, wie das Netzwerk implementiert ist, zuzugreifen. Die Netzwerk-
oder 1P-Schicht 60 wird oft als Schicht 3 oder L3 bezeichnet.
Gemäß der 802-Architektur
stellt die LLC-Teilschicht 50A der Netzwerkschicht 60 Dienste
in derselben Weise bereit, wie sie ein herkömmliches Datensicherungsprotokoll
in einem Fernverbindungsnetzwerk (Wide Area Network) bereitstellen
würde.
-
Die MAC-Teilschicht 50B stellt
für die
Barüberliegende
LLC-Teilschicht 50A Dienste bereit und verwaltet bzw. reguliert
die gemeinsame Nutzung des Übertragungsmediums
durch die verschiedenen Stationen im Netzwerk. Eine Medienzugangsverwaltungs-
bzw. Regulierungsfunktion empfängt
einen Frame von der Dateneinkapselungsfunktion, nachdem die notwendige
Steuerungsinformation hinzugefügt
wurde. Im Anschluß daran
ist die Medienzugangsverwaltung dafür verantwortlich, die physikalische Übertragung
der Daten sicherzustellen. Der Datenframe in einer Ethernet-Vollduplex-Umgebung hat eine
maximale Größe von 1.518
Bytes. Es gibt verschiedene 802-Standards für die MAC-Teilschicht 50B einschließlich des
sogenannten Carrier-Sense-Mehrfachzugang-mit-Kollisionsentdeckung-Standards (Carrier
Sense Multiple Access with Collision Detection, "CSMA/CD"), und der 802.3-MAC-Standard stellt
Flußsteuerungsmechanismen
in einer Halbduplex-Umgebung
zur Verfügung.
In solchen Umgebungen definiert CSMA/CD Dateneinkapselung/entkapselung
und Medienzugangsverwaltungs- bzw. -regulierungsfunktionen, die
von der MAC-Teilschicht 50B selbst
durchgeführt
werden, während
das Codieren/Decodieren der Daten von der darunterliegenden Bitübertragungsschicht 30 vorgenommen
wird. Jedoch geht die vorliegende Erfindung wie nachfolgend beschrieben
von einem Vollduplex-Betrieb in der Bitsicherungs- und der Medienzugangskontrollschicht 30, 50B für jedes
Segment des Bündels
aus.
-
Die physikalische Übertragung
der Daten kann dadurch sichergestellt werden, daß das Trägersignal abgetastet wird,
um eine Übertragung
zu verzögern,
bis das Netzwerk frei ist. Kurz zusammengefaßt hört eine Station (z. B. ein
Computer oder Benutzer 10) das Übertragungsmedium (z. B. Kabel 20)
ab oder überwacht es
vor einer Übertragung,
um festzustellen, ob eine andere Station (z. B. Computer oder Benutzer 10') gerade eine
Nachricht überträgt, z. B.
um zu erfahren, ob das Medium frei ist. Indem es die Dienste der
L1 Bitübertragungsschicht 30 benutzt,
stellt die Medienzugangsverwaltung fest, ob das Übertragungsmedium (oder der
Träger)
aktuell benutzt wird. Wenn das Medium nicht benutzt wird, übergibt
die Medienzugangsverwaltung den Datenframe an die L1 Bitübertragungsschicht 30 zur Übertragung.
Auch nachdem eine Frameübertragung
begonnen hat, überwacht
die Medienzugangsverwaltung den Träger. Wenn der Träger besetzt
ist, setzt die Medienzugangsverwaltung die Überwachung fort, bis keine
andere Station mehr am Übertragen
ist. Die Medienzu gangsverwaltung wartet dann eine festgelegte, zufällig gewählte Zeit
lang, um das Netzwerk frei werden zu lassen, und beginnt danach
mit der Übertragung.
-
Jedoch kann eine andere Station bzw.
können
andere Stationen, die Nachrichten zu senden hat bzw. haben, alle
gleichzeitig das Medium abhören,
erkennen, daß das Übertragungsmedium
ruhig zu sein scheint, und beginnen, gleichzeitig Nachrichten zu übertragen.
Das Ergebnis ist eine Kollision und verstümmelte Nachrichten. Wenn Signalkollision
festgestellt wird, ignorieren empfangende Stationen die verstümmelten
Nachrichten, übertragende
Stationen stellen sofort die Übertragung
von Nachrichten ein und übertragen
ein Stauungs- bzw. Störungssignal über das
Medium. Im Anschluß an
die Kollision versucht jede übertragende
Station, erneut zu übertragen,
nachdem sie eine zufällig
gewählte
Zurückweichungszeitspanne
lang darauf gewartet hat, daß der
Träger
frei wird. Daher muß eine übertragende
Station ausreichend lange abhören,
um sicherzustellen, daß keine
Kollision stattgefunden hat.
-
In 1A beschäftigt sich
die Netzwerk- oder 1P-Schicht 60 mit dem Routing der Daten von einem Netzwerk
zu einem anderen. Es ist die Aufgabe der Netzwerkschicht 60,
Daten zwischen den Netzwerkknoten zu routen.
-
Die Transportschicht 70 leistet
Datentransfer zwischen zwei Stationen auf einem abgestimmten Qualitätsniveau,
sobald eine Verbindung zwischen den Stationen aufgebaut ist. Die
Transportschicht 70 wählt
eine bestimmte Dienstklasse zur Benutzung aus, überwacht die Übertragung,
um eine anhaltende Dienstqualität sicherzustellen,
und benachrichtigt die Stationen (oder Benutzer), wenn die Qualität nicht
gehalten werden kann.
-
Die Kommunikationssteuerungs- bzw.
Sitzungsschicht 80 stellt Dienste bereit, die einen Dialog
zwischen Stationen organisieren und synchronisieren, und verwaltet
den Datenaustausch zwischen Stationen. Somit steuert die Kommunikationssteuerungs-
bzw. Sitzungsschicht 80, wann Stationen Daten senden und empfangen,
je nachdem, ob sie abwechselnd oder gleichzeitig senden und empfangen
können.
-
Die Darstellungsschicht 90 stellt
sicher, daß Information
einem Netzwerkbenutzer sinnvoll dargestellt wird, und kann Dienste
zur Übersetzung
von Zeichencodes, Datenkonvertierungs-, Datenkomprimierungs- und -expandierungs-Dienste
bereitstellen.
-
Die Anwendungsschicht 100 stellt
einen Mechanismus für
Anwendungsprozesse zur Verfügung,
um auf Möglichkeiten
der Verbindung zwischen Systemen zum Informationsaustausch zugreifen
zu können.
Die Anwendungsschicht stellt Dienste bereit, die benutzt werden,
um Verbindungen zwischen Benutzern aufzubauen und zu beenden, und
um die miteinander verbundenen Systeme und die Ressourcen, die sie
verwenden, zu überwachen
und zu verwalten.
-
Auch wenn das in 1A gezeigte Netzwerk halb-duplex (oder
abwechselnd genutzt) oder vollduplex sein kann, wird bezogen auf
die vorliegende Erfindung nur von einem Voll-Duplex-Netzwerk ausgegangen.
Bei voll-duplex gibt es Kommunikationspfade für die Übertragung und für den Empfang,
und eine oder mehrere Stationen können gleichzeitig übertragen
und empfangen. Die doppelten Kommunikationskanäle oder -pfade können tatsächlich mehrere
Leitungen oder Kabel sein, oder eine einzelne Leitung bzw. ein einzelnes
Kabel, die bzw. das gleichzeitig Sende- und Empfangssignale in beiden
Richtungen überträgt, eventuell
unter Benutzung von Frequenzbandteilung. Voll-Duplex-Netzwerke können eine höhere Datenrate als Halb-Duplex-Netzwerke
zur Verfügung
stellen, häufig
100 Mbps, und werden wegen der schnelleren Kommunikationsrate oft
bevorzugt.
-
Im Laufe der Zeit sind die Verbindungsgeschwindigkeiten
bei der Netzwerkkommunikation gewachsen: 10BASE-T Verbindungen haben
den Weg bereitet für
100BASE-T Verbindungen, die nun für Übertragungsraten von bis zu
1 Gigabit/Sekunde (1000 Mbps) bei 1000BASE-T Verbindungen bemessen
werden. Aber in der Praxis kann es vorkommen, daß die Wahl der Verbindungsgeschwindigkeit
(z. B. 10 Mbps, 100Mbps, 1000 Mbps) nicht gut zur Menge bzw. Größe des anhaltenden
Datendurchsatzes paßt,
den eine bestimmte Netzwerkeinrichtung unterstützen kann. Zum Beispiel können moderne
Mehrprozessor-Server einer zusammenfaßten Netzwerkübertragungsrate
von mehr als 100 Mbps standhalten. Darüber hinaus ist es im Fall,
daß Switches
und Hochleistungsrouter verwendet werden, um mehrere Verbindungen
mit einer vorgegebenen Übertragungsgeschwindigkeit
untereinander zu verbinden, notwendig und erwünscht, daß eine Verbindung zwischen
Switches bzw. zwischen Routern in der Lage ist, zumindest eine gewisse
Zusammenfassung von Verbindungen zu unterstützen. Eine Netzwerkgeschwindigkeit
von beispielsweise 100 Mbps auf 1000 Mbps zu verbessern, ist kaum
kosteneffektiv, wenn die Nutzung von Verbindungen mit höherer Geschwindigkeit
nicht wesentlich verbessert wird, z. B. von vielleicht 40% auf 50%
oder mehr. Die Netzwerkverbindungsgeschwindigkeit zu steigern erfordert
auch neue Hardware.
-
Das Kabelmedium 20 in 1A ist ein Ethernet-kompatibles
Kabel und enthält
eine Mehrzahl von separaten Leitungen. Wie bereits angemerkt hat
ein Host, z. B. der Computer 10, typischerweise eine Mehrzahl von
Ausgangsanschlußkonnektoren
(z. B. fünfzig),
von denen jeder ein separates physikalisches Kabel aufnimmt, dessen
anderes Ende mit einem Switch 120 oder einer anderen DTE
verbunden ist. Gemeinsam ergeben die separaten Leitungen, welche
den Host 10 mit der DTE 120 verbinden, eine einzelne
Verbindung eines Ethernet-kompatiblen Kabels, auch wenn mehrere
Leitungen innerhalb des Kabels vorhanden sind.
-
1B zeigt
den Server 10 mit einer Mehrzahl von Ausgangskonnektoranschlüssen, die
hier mit ihren Netzwerk-ID-Nummern, nid0, nid1, nid2,... nid4 bezeichnet
sind. Natürlich
können
fünfzig
oder mehr solcher Anschlüsse
und zugeordneter Netwerk-IDs vorhanden sein. Die Verbindung, die
nid0 zugeordnet ist, ist dargestellt als physikalisch verbunden
mit einer anderen Ausrüstung 95,
wobei die genaue Ausrüstung
und das abschließende
Ziel nicht wichtig sind. Eine Mehrzahl von physikalischen Verbindungen
im Kabel 20 ist dargestellt als in der DTE 120 endend,
die hier ein Switch ist. Andere Anschlüsse am Switch 120 sind
dargestellt mit physikalischen Verbindungen mit zum Beispiel noch
einem weiteren System 105 genauso wie mit dem Client 10' und einer anderen
DTE 120'.
-
Das Betriebssystem, das dem Server 10 in 1 B zugeordnet ist, muß jeden der Serverkonnektoranschlüsse (oder
der physikalischen Kabelverbindungen, die damit verbunden sind)
individuell behandeln. Es sei angenommen, daß die Ausrüstung 95 von einer
nid0 zugeordneten Anschlußposition
zu einem anderen Ausgangsanschluß am Server 10 physikalisch
verlegt werden soll. Um dies zu vollziehen, muß der Systemadministrator eine
neue IP-Adresse für
die anders angeordnete Ausrüstung 95 zuweisen,
weil die Kabelverbindung A nicht mehr benutzt wird, sondern eine
neue Kabelverbindung statt dessen benutzt wird, die an einem anderen
Ausgangsanschluß von
Server 10 endet. In gleicher Weise würden im Fall, daß die Kabelverbindung B,
die den Serverausgangsanschluß,
der nid1 zugeordnet ist, mit dem ersten Eingangsanschluß von Switch 120 verbindet,
ausgefallen wäre,
z. B. unterbrochen oder defekt wäre,
keine Daten diesem Eingangsanschluß von Switch 120 angeboten,
bis das Kabel B repariert oder ersetzt werden könnte. Es gibt bei der gezeigten Konfiguration
nach dem Stand der Technik keine automatische Umlenkung von Daten,
um den Systemdurchsatz zu erhalten.
-
In 1B müßte der
Systemadministrator zuerst das System so konfigurieren, daß der Client 10' auf einer aus
der Mehrzahl der Teilverbindungen, die dem Switch 120 zugeordnet
sind, liegt, damit der Server 10 Daten an diesen Client 10' übertragen
kann. Beim Übertragen
von Paketinformation würde
der Server 10 eine IP-Teilverbindungsadresse (1P-Schicht
60 zugeordnet) angeben, die mit einer von den Verbindungen, der
dem Client 10' zugewiesen
wurde, korrespondiert. Wie üblich
hat eine IP-Teilverbindungsadresse zwei Teile: eine Netzwerk-ID
und eine Host-ID. Wie üblich
ist mit jeder IP-Teilverbindungsadresse eine andere Netzwerk-IP-Adresse
assoziiert (siehe auch 4B).
Verständlicherweise
würde im
Fall, daß zu
viele Clients versuchen, dieselbe IP-Adresse zu verwenden, Datenverkehr
im Überfluß probieren,
durch eine einzige Verbindung zu fließen, und dadurch möglicherweise
das Netzwerksystem verstopfen.
-
Der Netzwerkadministrator wird eine
gemeinsame ID auf Netzwerk-Level für die IP-Adresse, die mit einer
aus der Gruppe von Verbindungen assoziiert ist, der Client 10' zugeordnet
ist oder an die er gebunden ist, verwendet haben. Ein unerwünschtes
Ergebnis ist, daß der
Systemadministrator nicht leicht oder flexibel irgendeine beliebige
Zahl von physikalischen Verbindungen gruppieren kann, weil Client 10' DTE und seine physikalische
Verbindung (hier: Q) gebunden sind.
-
Die Netzwerk- oder IP-Schicht-3-Adressen
sind mit nid0, nid1,... nidN bezeichnet (siehe auch 4B). Nach dem Stand der Technik wird
das Gruppieren von Verbindungen so vorgenommen, daß Teilverbindungen auf
Schicht 2 mit Adressen nid1.1, nid1.2, nid1.3, usw. bezeichnet
werden können.
-
Um mit einem Ausrüstungsteil, z. B. Client 10', zu kommunizieren,
das einer Gruppe von Teilverbindungen zugeordnet ist, in der auch
nid1 enthalten ist, würde
es auch notwendig anzugeben, welche Verbindung involviert ist, z.
B. Verbindung 3, bezeichnet mit nid1.3. Daher muß Software, die Information
von Server 10 zum Client 10' in 1 B
zu senden wünscht,
die eindeutige Zieladresse als nid1.3 angeben. Das liegt daran,
daß die
Softwareanwendung mit Schicht 2 über Schicht 3 (siehe 1A und 4B) kommunizieren muß. Im Wesentlichen wird Schicht 3 per
Software angewiesen, das Datenpaket an Adresse nid1.3 zu senden.
-
Schicht-3-Information muß so an
Schicht 2 kommuniziert werden, daß sie für Schicht 2, die nur
ihr eigenes Adressierungsprotokoll versteht, verständlich ist.
Daher enthält
Schicht ; eine Serververwaltete Abbildungsfunktion, die nid1.3 in
eine physikalische (z. B. MAC/LLC) Adresse übersetzt, die in Netzwerkschicht 2 von
Bedeutung ist. In der Praxis veranlaßt der Server seine Schicht
3, eine Abbildungstabelle für
jede ID auf Netzwerk-Level, die eine zu einer Ethernet-ID korrespondierende,
lokale Verbindung ist, einzurichten und zu pflegen (unter Verwendung
von Information gemäß Adreßauflösungsprotokoll,
Address Resolution Protocol oder "ARP").
Im Wesentlicher resultiert daraus eine vertikale Abbildung der Schicht-3-Verbindung
auf die Schicht-2-MAC-Adresse für
die in Frage stehende Netzwerk-ID. Eine separat gepflegte Protokolltabelle
enthält einen
Eintrag für
nid1.3 (unter anderen Einträgen)
sowie seiner zugeordneten MAC/LLC-Adresse. Die von der Abbildung
gemeldete, spezielle MAC/LLC-Adresse wird und muß auch tatsächlich verwendet werden, um
das in Frage stehende Paket an den Client 10' zu senden. Unglücklicherweise
haben in einem geschalteten Netzwerk wie das, welches beschrieben
wurde, die in Frage stehenden Pakete F eine alternative Route zu
Client 10' außer dieser
speziellen MAC/LLC-Adresse. Aus diesem Grund wird das Adressierungssystem
als statisch bezeichnet.
-
2A-2C zeigen
verschiedene Verbindungskonfigurationen zwischen Netzwerken. In 2A sind im Medium 20 drei
separate Verbindungsleitungssegmente A, B und C enthalten und diese
werden verwendet, um eine DTE, hier Server 10, und einen
Switch 120 (oder einen anderen Mechanismus) aneinander
zu koppeln. Natürlich
könnten
abhängig
vom Umfang der für
das System benötigten
Bandbreite auch mehr oder weniger als drei Verbindungsleitungssegmer
te verwendet werden. Switch 120 ist auch an mehrere Clientsegmente
angekoppelt, die mit 1, 2, 3, 4 und 5 bezeichnet sind. In dieser
Konfiguration kann der Server 10 durch andere Arten von
Ausrüstung,
z. B. einen Routen, eine Workstation mit hohem Durchsatz, einen
Drucker, etc., ersetzt werden.
-
Nach der Ausführungsform in 2B verbinden drei Verbindungsleitungssegmente
A, B und C Switch 120' mit
Switch 120, wenngleich statt dessen wieder eine andere
Anzahl von Segmenten verwendet werden könnte. In 2C koppeln drei Segmente (A, B, C) Server 10' an Server 10,
wenngleich einer oder beide Server durch andere Ausrüstung, zum
Beispiel einen R guter, ersetzt werden könnte.
-
In Systemen nach dem Stand der Technik
erfordern Konfigurationen nach 2A oder 2B oder 2C typischerweise von der Schicht 60,
jeder der drei Leitungen A, B, C innerhalb der Verbindung 20 eine
separate IP-Adresse zuzuweisen. (Wenn mehrere Clients dieselbe IP-Adresse
verwenden sollen, würde
ihr gesamter Datenverkehr über
eine einzige Verbindung übertragen
werden und das System verstopfen.) Daher wären administrativ drei Internetadressen
erforderlich, um die drei (exemplarischen) Leitungen innerhalb der
Verbindung 20 zu handhaben. Netzwerksoftware würde dann jede dieser Verbindungen
als drei verschiedene Verbindungen behandeln. In der Praxis können fünfzig und
mehr separate Leitungen (z. B. A, B, C,...) in einer physikalischen
Verbindung 20 vorhanden sein, und es ist beschwerlich, administrativ
separate Internet-Protokoll-Adressen für jede zuweisen und handhaben
zu müssen.
-
Zum Beispiel muß der Systemadministrator in
einem System, das mehrere Ethernetverbindungen von einem Server/Host-System
hat, das mit einem Ethernet-kompatiblen Netzwerk unter Verwendung
eines Ethernet-Switch verbunden ist, jeder Verbindung eine unterschiedliche
IP-Adresse (z. B. einen unterschiedlichen IP-Hostnamen) statisch
zuweisen und jede Verbindung mit einer unterschiedlichen MAC-Adresse
konfigurieren. Zusätzlich
dazu, daß dies
zeitaufwendig ist, muß der
Netzwerkadministrator auch andere Host/Client-Systeme in verschiedene
IP-Teilnetze gruppieren, so daß die
mehrfachen Verbindungen sich den Datenverkehr zum Server im Netzwerk
untereinander aufteilen können.
Dieses Gruppieren von Clients in eine zugeordnete logische Gruppe
ist erforderlich, weil bestimmte Clients eine einzige IP-Adresse
benutzen müßten, um
auf den Server zuzugreifen, da ein Kabel verwendet wird.
-
Unglücklicherweise würde ein
Client oder eine DTE nun, wenn er bzw. sie innerhalb des Systems
anders angeordnet werden mußte,
ein neues, vom Server kommendes Kabel benutzen, und seine bzw. ihre
neue Anordnung würde
es erforderlich machen, daß der
Systemadministrator eine neue IP-Adresse zuweist. Die verschiedenen
Clients (oder andere DTEs) sind am empfangenden Ende des Systems
verteilt, und wenn die Neuzuweisung der IP-Adressen nicht sorgfältig ausgeführt würde, könnte dies
dazu führen,
daß zu
viele Clients dieselbe IP-Adresse verwenden. Dies könnte leicht übermäßigen Verkehr,
der durch eine einzelne physikalische Verbindung zu gelangen versucht,
nach sich ziehen, der das System verstopft und die Bandbreite des Systems
herabsetzt. Darüber
hinaus würde
ein Client, dessen zugeordnete IP-Adresse eine bestimmte Verbindung
impliziert, im Fall, daß diese
physikalische Verbindung beschädigt
oder getrennt würde,
den Zugang zum Server verlieren, weil es keinen anderen Pfad gibt.
Daten, die zu diesem Client gelangen oder von diesem Client kommen
sollen, würden
verloren gehen.
-
Daher muß der Administrator in Netzkonfigurationsprotokollen
nach dem Stand der Technik jeder physikalischen Verbindung eine
separate Level-3-IP-Schicht-Adresse und eine Level-2-LLC/MAC-Schicht-50A/B-Adresse
statisch zuweisen. Da DTE-Einheiten statisch mit einer Verbindung
in einer Gruppe von Verbindungen, z. B. in einer Teilverbindung,
assoziiert sind, wird eine IP-Adresse der Teilverbindung benötigt.
-
US-Patent 5.633.810 beschreibt einen
Video-Server, der zusätzliche
Ausgangsbandbreite vom Server ermöglicht, indem er mehrere physikalische
Netzwerkschnittstellen über
einem einzigen bzw. einzelnen IP-Teilnetzwerk verwendet.
-
US-Patent 5.608.733 offenbart ein
Netzwerk mit Asynchronem Übertragungsmodus
(Asynchronous Transfer Mode, ATM), in dem ATM-Zellen an einen Zielknoten über mehr
als eine Übertragungsverbindung nach
Round-Robin-Verfahren gesendet werden. Der Quell- bzw. Ursprungsknoten
informiert den Zielknoten über
das spezielle Round-Robin-Verfahren für die Übertragungsverbindungen, so
daß die
ATM-Zellen wieder in einer korrekten, sequentiellen Reihenfolge
angeordnet werden können.
-
Die EP-A-0863646 ist für die vorliegende
Anwendung Stand der Technik gemäß Artikel
54(3) EPC und offenbart eine Methode und eine Vorrichtung, um erste
und zweite Einrichtungen in einem Netzwerk miteinander zu verbinden.
Die Einrichtungen sind mit einer Mehrzahl von Schnittstellen verbunden,
die eine einzelne Hochgeschwindigkeitsschnittstelle emulieren.
-
Zusammenfassend besteht in einem
Ethernet-kompatiblen Netzwerk der Bedarf an einer flexiblen, dynamischen
Methode, die es ermöglicht,
mehrere physikalische Verbindungen logisch zu einer einzelnen logischen
oder virtuellen Verbindung zu gruppieren. In einem solchen System
sollte der Systemadministrator in der Lage sein, eine einzige LLC/MAC-Schicht-2-Adresse
und eine einzige IP-Schicht-3-Adresse der resultierenden virtuellen
Verbindung zuzuweisen. Ein solches System sollte es erlauben, jede
beliebige Anzahl von physikalischen Verbindungen zu einem einzelnen
Bündel
zusammenzugruppieren. Das resultierende System sollte dem Systemadministrator
Flexibilität
hinsichtlich des schnellen Umkonfigurierens des Netzwerks geben.
-
Eine solche Möglichkeit zum Umkonfigurieren
sollte die Lastverteilung und die Verwaltung des Systemdurchsatzes
im Netzwerk verbessern und sollte flexible Neuzuweisung von Datenflußverkehr
zu anderen physikalischen Verbindungen in dem Moment erlauben, wenn
eine Unterbrechung oder ein Ausfall des Datenflusses durch eine
verwendete physikalische Verbindung vorliegt. Darüber hinaus
sollte ein solches System die Flußreihenfolge der Datenpakete,
die vom Netzwerk zwischen zwei Kommunikationspunkten übertragen werden,
logisch beibehalten. Darüber
hinaus sollte das System im Fall, daß eine zuvor ausgefallene physikalische
Verbindung wieder verfügbar
wird, eine solche Verbindung wieder verwenden, um die Datenflußlast über das
Netzwerkbündel
verteilen zu helfen.
-
Die vorliegende Erfindung liefert
eine solche Methode zur Verwendung in einem Ethernetkompatiblen Netzwerk.
-
ZUSAMMENFASSUNG DER VORLIEGENDEN
ERFINDUNG
-
Spezielle und bevorzugte Aspekte
der Erfindung sind in den begleitenden unabhängigen und abhängigen Patentansprüchen ausführlich dargestellt.
Merkmale der abhängigen
Ansprüche
können
mit denen der unabhängigen
Ansprüche
je nach Bedarf und in anderen Kombinationen als denjenigen, die
ausdrücklich
in den Ansprüchen
dargestellt sind, kombiniert werden.
-
In einem Ethernet-kompatiblen Netzwerk
sind Senner und Hosts durch DTEs, z. B. einen Switch, verbunden
unter Verwendung eines Kabels (oder etwas Äquivalentem), das eine Mehrzahl
von separaten Leitungen (oder Verbindungen) enthält. Unter Verwendung eines
Satzes von Regeln wird eine beliebige Anzahl von den mehreren Verbindungen
(oder Serverkonnektoren) so gebündelt,
daß sie
höheren
Netzwerkschichten gegenüber
als eine einzelne logische (oder virtuelle) Verbindung darstellbar
sind. Einer solchen virtuellen Verbindung wird eine MAC-Adresse
und eine IP-Adresse zugewiesen ungeachtet dessen, daß eine Mehrzahl
von separaten physikalischen Verbindungen enthalten sind und verkörpert werden.
(Dies unterscheidet sich von Techniken nach dem Stand der Technik,
in denen jeder Konnektor oder jede Verbindung eine bestimmte IP-Adresse
benötigen
würde.)
-
Eine virtuelle Verbindung ermöglicht es
der Systemnetzwerkverwaltung, flexibel und dynamisch die Anordnung
von Ausrüstung
zu ändern,
ohne langwierige Neuadressierungsarbeiten zur Folge zu haben. Die Verlegung
von Ausrüstung,
vielleicht wegen des Verlustes einer Verbindung, geht leicht vonstatten
und die anders aufgestellte bzw. angeordnete Ausrüstung bleibt
logisch innerhalb desselben virtuellen Netzwerks, obwohl eine andere
physikalische Verbindung nach dem Umzug benutzt wird. Diese Flexibilität steht
in Kontrast zu Methoden nach dem Stand der Technik, nach welchen
jede separate Verbindung in einem Kabel zugeordnet ist und mit ihrer
eigenen MAC-Adresse und IP-Adresse konfiguriert werden muß.
-
Eine Ausführungsform der Erfindung stellt
logisch N diskrete physikalische Informationskanäle, von denen jeder eine eindeutige
physikalische Adresse hat, als einen einzelnen virtuellen Informationskanal
dar, der eine einzige physikalische MAC-Adresse hat. Eine Pseudo-Treiber-Software-Schicht
zur Bündelung
wird zwischen der IP- (oder Netzwerk-)Schicht und dem Gerätetreiber-Teil
der Bitübertragungsschicht
in dem Ethernet-kompatiblen Netzwerkmodell nur auf der Serverseite
eingeführt.
(Die Client- oder Empfängerseite
ist unverändert.)
Bei der Übertragung
von Paketen von einem Server über
die Mehrzahl von physikalischen Verbindungen wird die Lastverteilung
vom Gerätetreibercode
zur Bündelung
innerhalb des Servers behandelt. Der Algorithmus im Code des Pseudo-Treibers
stellt sicher, daß übertragene
Pakete verteilt bzw. aufgeteilt werden, um die logische Flußreihenfolge
zwischen den zwei Kommunikationsendpunkten, die von den physikalischen Verbindungen überspannt
werden, zu bewahren. Ausfall einer physikalischen Verbindung wird
dadurch aufgefangen, daß Verkehr
einer weiterhin bestehenden Verbindung zugewiesen wird und daß zu mindest
ein Teil der Paketlast erst dann auf eine ausgefallene Verbindung
gelenkt wird, wenn die Verbindung den Dienst wieder aufgenommen
hat.
-
Eine Ausführungsform der Erfindung kann
dieselbe Information verwenden, die ansonsten Schicht 3 und
Schicht 2 zur Verfügung
steht, um zu entscheiden, welche Paketadreßinformation zu senden ist.
Während Techniken
nach dem Stand der Technik sich auf eine vertikale Verbindung mittels
einer Abbildung zwischen Schicht 3 und Schicht 2 abstützen, konstruiert
die vorliegende Erfindung indes Ziel-MAC-Adressen unter Verwendung
von Information aus herkömmlichen
Abbildungstabellen, der eigenen Quell- bzw. Ursprungs-MAC-Adresse
und einer Paket-ID, die auf Schicht 3 zeigt. Die vorliegende
Erfindung läßt in einer Schicht-3-zu-Schicht-2-Kommunikation
eine Mehrzahl von Schicht-2-Verbindungen
gegenüber
Schicht 3 wie eine einzelne virtuelle Verbindung oder Einrichtung
erscheinen. Im Unterschied zu mehreren Schicht-3-Adressen auf IP-Level,
eine für
jede Verbindung in der unteren Schicht, sieht die Schicht 3 auf
IP-Level in der vorliegenden Erfindung eine einzelne virtuelle oder
logische Einrichtung.
-
Eine Ausführungsform der Erfindung kann
die Schicht 2 im Host modifizieren, daß sie in Software implementierte
Treiber mit erweiterten Konfigurationsmöglichkeiten zur Verfügung stellt.
Die Gerätetreiber
geben Pakete mit Adreßinformation
heraus, welche die Einrichtung bzw. das Gerät, die bzw. das mit jeder Verbindung korrespondiert,
einschließlich
der ID auf Bündelebene,
angibt. Diese Information wird lokal beim Empfänger verwendet. Da die Informationspakete,
die zum Empfänger übertragen
werden, ansonsten nicht anders sind, erkennt der Empfänger nicht,
daß er
mit einer gebündelten
Verbindung kommuniziert.
-
Eine Ausführungsform der Erfindung geht
davon aus, daß ein
Bündel
eine beliebige Anzahl von Segmenten haben kann, von denen jedes
identische Voll-Duplex-Betriebscharakteristika in der Bitübertragungsschicht
und in der Medienzugangssteuerungsschicht hat und von denen jedes
Ursprung und Ziel mit anderen Bündelsegmenten
gemeinsam hat. Die zeitliche Reihenfolge von Informationspaketen,
die über
ein gegebenes Bündelsegment
transportiert werden, wird durch das Netzwerk hindurch beibehalten,
und jedwede Rundsendung- oder Multirast-Pakete werden nicht als
Echo zurückgegeben
oder zurück übertragen.
Lastverteilung wird gefördert
durch Hashing der Ziel-MAC-Adressen
und anschließendem
Auswählen
einer geeigneten physikalischen Verbindung, an die Pakete adressiert
und gesendet werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Beispielhafte Ausführungsformen
der Erfindung werden nachfolgend nur mittels Beispielen beschrieben
unter Bezug auf die beigefügten
Zeichnungen, von denen:
-
1A ein
Netzwerk und ein Modell gemäß dem Stand
der Technik zeigt;
-
1B typische
Systemverbindungen in einem Netzwerk zeigt, mit denen die vorliegende
Erfindung in die Praxis umgesetzt werden kann;
-
2A–2C beispielhaft
verschiedene Verbindungskonfigurationen zeigen, mit denen die vorliegende Erfindung
in die Praxis umgesetzt werden kann;
-
3 eine
Modifikation an dem Netzwerkmodell von 1A gemäß der vorliegenden Erfindung
zeigt;
-
4A den
Effekt der Modifikationen in den Schichten gemäß der vorliegenden Erfindung
zeigt;
-
4B eine
unveränderte
Schicht gemäß dem Stand
der Technik zeigt;
-
GENAUE BESCHREIBUNG DER
BEVORZUGTEN AUSFÜHRUNGSFORM
-
Eine Ausführungsform der Erfindung vereinfacht
die Systemadministration in einem Netzwerk und fördert die Bandbreite des Systems
ohne wesentlich die Kosten in Geld oder Leistungsfähigkeit
zu erhöhen,
indem eine neue Form von Bündelung
angewandt wird. Bündelung
kann definiert werden als die Fähigkeit,
mehrere parallele physikalische Verbindungen zu einem logischen
(oder virtuellen) Kanal zu verbinden. Bündel, wie sie in der vorliegenden
Erfindung verwendet werden, sind dahingehend eingeschränkt, daß physikalische Verbindungen
(z. B. Medium 20) Ursprung und Ziel gemeinsam haben. Darüber hinaus
wird in solchen Bündeln
bei jeder der Verbindungen (oder "Bündelsegmente") unterstellt, daß sie im
Wesentlichen identische Charakteristika in der Bitübertragungsschicht 30 und
in der LLC/MAC-Schicht 50A/B haben.
-
Wiederum gemäß den 2A-2C enthält das physikalische
Medium 20 eine Mehrzahl von physikalischen Verbindungen
oder Segmenten, z. B. Leitungen A, B, C. Die vorliegende Erfindung
bewirkt, daß die Mehrzahl
physikalischer Verbindungen oder Segmente aus der Perspektive der
höheren
Schichten des Netzwerks im Modell von 1A eine
einzelne logische oder virtuelle Verbindung zu sein scheinen. Die
Fähigkeit, eine
Mehrzahl von physikalische Verbindungen als eine einzelne virtuelle
Verbindung zu behandeln, kann in großem Maße die Aufgabe der Systemverwaltung
im Netzwerk vereinfachen und kann auch dazu beitragen, die Bandbreite
im Netzwerk flexibel zu erhöhen
und beizubehalten. Von Seiten der Verwaltung kann das Netzwerksystem
eine einzelne IP-Adresse
und eine einzelne Ethernet-Adresse für eine logische (oder virtuelle) Verbindung
verwenden, auch wenn die Verbindung eine Mehrzahl von physikalisch
separaten Kabeln oder Segmenten enthält.
-
In einer Ausführungsform der Erfindung wird
einer Verbindung innerhalb eines gebündelten Netzwerk-Betriebssystems
eine einzelne Identifizierungs- (ID-) Adresse und eine einzelne
MAC-Schicht-Adresse zugewiesen
(oder wird mit diesen assoziiert). Ein erwünschtes Ergebnis ist, daß ein physi kalisches
Kabel (oder etwas Äquivalentes),
das eine Mehrzahl von separaten Verbindungen umfaßt, gegenüber höheren Schichten im
Netzwerksystem als eine virtuelle oder logische Entität erscheint,
eine Entität,
der die 1P-Schicht 60 einen einzelnen 1P-Namen zuweisen kann.
-
Ein Vorteil einer solchen virtuellen
Verbindungsreferenzierung ist, daß eine höhere effektive Kapazität der Bandbreite
im Netzwerk flexibel realisiert werden kann. Zum Beispiel kann in
einem Netzwerksystem mit zehn 10 Mbps Verbindungen durch logisches
Gruppieren der zehn Verbindungen ein Durchsatz von einer 100 Mbps
Verbindung erreicht werden. Von keiner geringeren Bedeutung vom
Standpunkt eines Systemadministrators des Netzwerks ist es, daß der Nutzen
für die
Adressierung, den die vorliegende Erfindung mit sich bringt, eine
große
Flexibilität
hinsichtlich der Umkonfigurierung des Systems zur Verfügung stellt.
-
Bei der Implementierung einer Ausführungsform
der Erfindung wird ein Satz von Regeln definiert, die Ausrüstung an
jedem Ende des Bündels
einhalten muß.
Die Regeln sind symmetrisch insofern, als daß jedes Ende des Bündels die
Regeln beachten muß.
Darüber
hinaus gelten die Regeln für
Endeinrichtungen einschließlich
DTEs, Computer jeder Klassifikation, etc., und sie gelten auch für Komponenten
der Netzwerkinfrastruktur (z. B. speziell Switches).
-
Der Satz von Regeln sieht folgendermaßen aus:
-
- 1. Ein Bündel
kann jede beliebige Anzahl von Segmenten haben, aber alle Segmente
müssen
identische Charakteristika in der Bitübertragungsschicht und in der
Medienzugangssteuerungsschicht besitzen; 2. Jedes Bündelsegment
muß einen
gemeinsamen Ursprung und ein gemeinsames Ziel mit
- den anderen Bündelsegmenten
teilen; 3. Die zeitliche Reihenfolge von Informationspaketen, die über ein gegebenes
Bündelsegment
transportiert werden, muß durch
das Netzwerk hindurch erhalten bleiben, mit Ausnahme von Verlusten
aufgrund von Biffehlern;
- 4. Es kann nicht davon ausgegangen werden, daß die zeitliche
Reihenfolge von Informationspaketen, die über verschiedene Segmente des
Bündels
transportiert werden, erhalten bleibt;
- 5. Pakete (einschließlich
Rundsendungs- und Multicast-Paketen) dürfen über Bündelsegmente nicht wiederholt
oder dupliziert werden;
- 6. Rundsendungs- und Multicast-Pakete, die über ein Bündelsegment übertragen
werden, dürfen
nicht als Echo oder als Loop-Back an den Sender über die anderen Bündelsegmente
zurückgesandt
werden;
- 7. Die Regeln basieren auf einem Modell, das Voll-Duplex-Betrieb
in der Bitübertragungsund
Medienzugangskontrollschicht bei jedem Segment voraussetzt, und
Halb-Duplex-Betrieb
unter Verwendung von CSMA/CD wird weder unterstützt noch ist dieser erwünscht;
- 8. Endeinrichtungen des Bündels
assoziieren eine einzelne 48-Bit-1EEE-MAC-Adresse mit allen Bündelsegmenten;
- 9. Es kann nicht von vollkommener Lastverteilung zwischen den
Segmenten ausgegangen werden, und jedes Bündelende versucht eine Lastverteilung
nach seinem besten Vermögen
in Übereinstimmung
mit allen vorstehenden Regeln.
-
Die vorstehenden Regeln adressieren
als solche nicht Konfiguration, Einrichtung, Verwaltung oder Wartung
von Bündeln
oder Entdeckung von Adressierungsfehlern oder Wiederherstellung.
Die Ausführungsform
geht davon aus, daß die
Bitübertragungsschicht
eine Art von Anzeige vorsieht für
den Fall, daß ein
bestimmtes Bündelsegment
ausfällt.
Darüber
hinaus geht die Ausführungsform
der Erfindung davon aus, daß jedes
Bündelende überwacht,
welcher Zustand auch immer von der Bitübertragungsschicht bereitgestellt
wird, und geeignete Maßnahmen
ergreift. In der Praxis kann die Konfiguration und die Einrichtung
mittels manueller Operationen, die für jede Implementierung spezifisch
sind, durchgeführt
werden, wenngleich stattdessen auch nicht-manuelle Operationen angewandt
werden können.
-
Aus der Perspektive des Servers übt eine
Ausführungsform
der Erfindung Kontrolle darüber
aus, wie Daten ausgesandt werden, jedoch keine Kontrolle darüber, wie
Daten ankommen könnten.
Darüber
hinaus müssen
die Switch- (oder anderweitige) Mechanismen, bei denen die vorliegende
Erfindung verwendet wird, die virtuelle Natur der beteiligten Verbindungen
verstehen, während
der Server die Zuweisung einer Client-ID auf dem Gerätetreiber-Level
für den
logischen Link vornimmt. Demnach sollte der Mechanismus erkennen, daß die Verbindung,
auch wenn das, was zu sehen ist, eine zusammengesetzte einzelne
Verbindung zu sein scheint, eine logische Verbindung ist und zehn
Leitungen enthalten kann, die mit zehn Polen des Switch verbunden
sind. Daher sollte der Switch oder der anderweitige Mechanismus
wissen, wie der Verkehr vom Server an den Mechanismus vorzugsweise
gleichmäßig unter
diesen verschiedenen Verbindungen zu verteilen ist. Typischerweise
sind der Switch oder die anderen DTE-Mechanismen Mikroprozessor-gesteuert
und können leicht
dazu veranlaßt
werden, einen Satz von Anschlüssen
eines spezifizierenden Mechanismus als eine einzelne logische Verbindung
zu konfigurieren.
-
Ein wichtiges Ziel in einem bündelnden
Modell ist es, auch ein Bündel
mit vielen Segmenten aus dem Blickwinkel des Protokollstacks des
Servers als eine einzelne Schnittstelle mit hoher Bandbreite erscheinen
zu lassen. Darüber
hinaus sollten alle Clients, die mit dem Server über das Bündel kommunizieren, eine konsistente
Sicht der Identität
des Servers haben, z. B. bezüglich
der MAC- und Internet-Protokoll- oder IP-Host-Adressen. Die Anmelden
haben keinen Versuch unternommen, Lastverteilung durch Verwalten
von Adreßprotokolltabellen
(ARP) innerhalb des Clients zu erreichen. Ein solcher Ansatz ist
nicht wünschenswert, weil
der Server zu viele ARP-Frames aussenden müßte und weil die ARP-Implementierung
im Server hinsichtlich der Funktionalität wesentlich erweitert werden
müßte.
-
Die vierte, oben aufgezählte Regel
schließt
es aus, eine zeitliche Paketreihenfolge beim Transport von Paketen über unterschiedliche
Bündelsegmente
vorauszusetzen. Dementsprechend muß der Server sicherstellen,
daß alle
Pakete in jeder beliebigen Sequenz von Paketen, die eine zeitliche
Reihenfolge erfordern, über
dasselbe Segment des Bündels übertragen
werden. Im allgemeinen können
Transportprotokolle in Situationen, in denen Pakete außer der
Reihenfolge bzw. in falscher Reihenfolge ankommen, die richtige
Reihenfolge wiederherstellen, aber die Wiederherstellung zieht im
allgemeinen eine signifikante Verschlechterung des Durchsatzes nach
sich. Dies liegt daran, daß der
Empfang von Paketen außer
der Reihenfolge bzw. in falscher Reihenfolge als Ausnahmesituation
behandelt wird und nicht optimiert ist. Dementsprechend sollte jeder
Lastverteilungsmechanismus im Server dafür ausgelegt sein, Vorteile
aus der dritten Regel zu ziehen, nämlich daß die zeitliche Reihenfolge
von Paketen, die über
ein gegebenes Segment des Bündels übertragen
werden, durch das Netzwerk hindurch erhalten bleiben muß höchstens
mit Ausnahme von Verlusten aufgrund von Bitfehlern.
-
3 zeigt
die relativ leichte Modifikation an den unteren Schichten des Modells,
das in 1A für ein Ethernet-kompatibles
Netzwerk in einer voll-duplex-fähigen,
geschalteten bzw. vermittelten Umgebung abgebildet ist, die verwendet
wird, die vorliegende Erfindung zu implementieren. Es ist zu beachten,
daß relevante Änderungen
unterhalb der dritten Schicht im Modell, der IP- oder Netzwerkschicht 60,
auftreten. Genauer wird eine bündelnde
Pseudo-Treiber Schicht 150 unterhalb
der IP-Schicht 20 und oberhalb der LLC/MAC-Schicht 50A/B eingeführt. Da
nur leichte Änderungen
am zugrundeliegenden Netzwerkmodell vorgenommen werden, ist das
resultierende Netzwerk voll IEEE 802 kompatibel.
-
In der gebündelten Serverschnittstelle
in 3 fungiert die Pseudo-Treiber-Schicht 150 als
ein Demultiplexer im Übertragungspfad
und als ein Multiplexer im Empfangspfad. Um die oben aufgezählten Regeln
im Hinblick auf die zeitliche Reihenfolge zu erfüllen, versucht der Pseudo-Treiber
sicherzustellen, daß alle
von den mit einem bestimmten Transportschicht-Datagramm assoziierten Paketen in die Übertragungswarteschlage
derselben Netzwerkein richtung bzw. desselben Netzwerkgerätes eingefügt werden.
Diese Annahme wird auf der Grundlage getroffen, daß die Erhaltung
der Reihenfolge innerhalb eines Datagramms ausreicht und zwischen
Datagrammen nicht notwendig ist.
-
4A zeigt
den Effekt der durch 3 vorgeschlagenen
Modifikation, und soll im Unterschied zu 4B betrachtet werden, die eine herkömmliche,
nicht modifizierte Schnittstelle zwischen IP-Schicht-3 und LLC/MAC-Schicht-2
zeigt. In den 4A und 4B werden schlußendlich
eine Mehrzahl von Clients (oder von etwas Äquivalentem), die mit A, B,
C,... N bezeichnet werden, von einem Server bedient, dessen Schicht 3-Schicht
2 gezeigt ist. Jedenfalls läßt es die
vorliegende Erfindung vorteilhafterweise durch leichtes Modifizieren
der Schnittstelle zwischen Schicht 2 und Schicht 3 nur
auf der Serverseite zu, daß jeder
Client A, B,... N einem einzigen Teilnetz angehört, das gegenüber der
IP-Schicht-3 mittels einer einzigen IP- (oder Ethernet-) Adresse
referenziert wird, hier dargestellt als nid1. Im wesentlichen operiert
die Ausführungsform
der Erfindung Peer-zu-Peer in Schicht 2, indem MAC-Adreßinformation
in ausgesendete Pakete eingefügt
wird. (Im Gegensatz dazu erfordert die Adressierung nach dem Stand
der Technik eine vertikale Schicht-3-ARP-Tabelle-zu-Schicht-2 Übersetzung,
weil jede physikalische Verbindung einer Netzwerk-ID-Adresse zugeordnet
ist.)
-
Dem Betriebssystem, das zu dem Client
aus 4A gehört, erscheinen
die N separaten Systemkonnektoren oder Kabel, als eine einzelne
logische Verbindung. Verwaltungstechnisch können die N Ausrüstungsteile,
die mit dem Server aus 4A gekoppelt
sind, flexibel verbunden werden, um eine höhere Bandbreite des Systems
zu fördern.
Wenn es zum Beispiel N 10 Mbit/sec-Verbindungen gibt, können sie
logisch gruppiert werden, um ein N × 10 Mbit/sec-System darzustellen.
Die Systemverwaltung wird speziell im Hinblick auf das Neuanordnen
von Teilen der Ausrüstung
vereinfacht, z. B. das Umziehen einer DTE von "Position" A nach Position "C" in 4A, oder es einer DTE an
Position C zu ermöglichen,
Daten zu empfangen, auch wenn die physikalische Verbindung, die
normalerweise benutzt würde,
außer
Betrieb ist.
-
Es ist im Gegensatz dazu bei 4B nach dem Stand der Technik
zu beachten, daß es
eine separate Adresse auf IP- (oder Ethernet-) Level für jeden
Client gibt, z. B. Verbindung nid0 für Client A mit Einrichtung bzw.
Gerät hme0,
Verbindung nid2 für
Client B mit Einrichtung bzw. Gerät hme2, usw. (Siehe auch 1B.) In 4B sind die verschiedenen Clients oder
Einrichtungen bzw. Geräte
(bezeichnet mit A, B,... N) in N Teilnetze mit Referenz auf Schnittstellen
zwischen Schicht 2 und Schicht 3 gruppiert. In 4B ist auch zu beachten, daß mit der
IP-Schicht-3 und der LLC/MAC-Schicht-2 N Netzwerkschicht-IDs (nid0,
nid1,... nidN) und N Einrichtungs- bzw. Gerätenamen hme0, hme1,... hmeN
assoziiert sind, wobei jeder Einrichtungs- bzw. Gerätenamen
eine einzelne physikalische Verbindung repräsentiert. Es wurde bereits
darauf hingewiesen, daß in 4b nach dem Stand der Technik die IP-Schicht-3
eine separate Netzwerk-ID-Adresse für jede physikalische Verbindung
erkennen muß.
-
Betrachten wir nun die Vorteile für die Adressierung,
die mit der vorliegenden Erfindung erreicht werden. Pakete von Daten,
die bei einem Mechanismus (z. B. einem Switch) ankommen, führen Adreßinformation mit
sich, einschließlich
einer Netzwerk-Schicht-2-Zieladresse und einer Bündel-ID-Adresse. Gemeinhin
ist die Zieladresse dahingehend absolut eindeutig, daß kein anderer
Ethernet-kompatibler Anschluß in
der Welt dieselbe Zieladresse besitzt. Die Zieladresse ist 6 Bytes
lang, die Quell- bzw. Ursprungsadresse ist 6 Bytes lang, und 2 Bytes
werden benutzt, um den Typ des Pakets, das über die physikalische Verbindung
vom Server an den Mechanismus übertragen
werden soll, zu kennzeichnen. Bündelung
gemäß einer
Ausführungsform
der Erfindung vermeidet es, daß Pakete
mehrere unterschiedliche Zieladressen auf Ethemet-Level übertragen müssen. Daher
benötigt
in der Ausführungsform
der Erfindung ein Switch, der angeschlossen ist, um fünf Eingangsverbindungen
aufzunehmen bzw. von fünf
Eingangsverbindungen zu empfangen, nicht fünf separate, 6 Byte lange Zieladressen
für jede
der Verbindungen.
-
In Ergänzung zur Zuweisung einer vorzugsweise
6 Byte langen Schicht-2-Zieladresse weist die vorliegende Ausführungsform
noch eine Schicht-3-Adresse zu. Während der Stand der Technik
eine Schicht-3-Internet-Adresse für jede Schicht-2-Ethemet-Adresse
(4B) benötigt, funktioniert
die Ausführungsform
der Erfindung jedoch mit einer einzelnen Schicht-3-Adresse für eine Mehrzahl
von physikalischen Verbindungen mit einer einzelnen Schicht-2-Adresse (4A). In dieser Weise kann
die Mehrzahl von Schicht-2-Verbindungen (oder Teilverbindungen)
als eine einzige virtuelle Verbindung gegenüber Schicht 3 und
den höheren Schichten
im Netzwerkmodell dargestellt werden. Die host- oder serverseitige
Schicht 2 wird dahingehend modifiziert, daß sie Software-Geräte-Treiber
mit erweiterten Konfigurationsfähigkeiten
enthält.
Die modifizierte Schicht 2 setzt Kommandos an eine Pseudo-Gerätetreiber-Schicht
ab, die eine korrespondierende Einrichtung bzw. ein korrespondierendes
Gerät für jede Verbindung
spezifizieren. Das relevante Bündel
wird von der Software mit einer Bündel-ID identifiziert.
-
Wieder gemäß 4B nach dem Stand der Technik hat jede
der N Teilverbindungen (z. B. A, B,... N) in Schicht 3 eine
andere Teilverbindungs-IP-Adresse. Wenn es N = 5 Verbindungen gäbe, dann
würden
fünf verschiedene
Teilverbindungs-IP-Adressen in Schicht-3 benötigt. Wenn ein Hostserver 10 Daten
an einen Client 10' (oder
andere Ausrüstung)
zu senden wünschte,
müßte Server 10 eine
passende IP-Teilverbindungs-Adresse angeben, die der spezifischen
Verbindung, der Client 10' zugewiesen
wäre, entspräche. Demnach
würde Server 10,
um Client 10' anzugeben,
in der IP-Schicht-3 eine eindeutige IP-Adresse mit Host-ID und Netzwerk-ID
angeben. Es wurde bereits darauf hingewiesen, daß die Netzwerkschicht-ID, die für Client 10' zugewiesen
wurde, zum Zeitpunkt, als der Netzwerkadministrator das Netzwerk
konfigurierte, dieselbe ist wie die Adresse auf IP-Level, die mit
Client 10' assoziiert
ist, weil die zugeordnete physikalische Verbindung an diesen Client
gebunden ist. Im Gegensatz dazu kann wie in 4A gezeigt eine einzelne virtuelle Verbindung,
welche die Schichten 3 und 2 überspannt, eine Mehrzahl von
Verbindungen in den unteren Schichten repräsentieren.
-
In der Praxis wäre es für den Softwarecode, der den
Pseudo-Treiber implementiert, schwierig, die Header jedes Paketes
zu untersuchen und zu versuchen, sie mit einem bestimmten Datagramm
in Verbindung zu bringen. Dies könnte
jedoch bewerkstelligt werden vorausgesetzt, daß ein hinreichend schneller
Prozessor den Code ausführen
würde.
Es erscheint ausreichend, einen kleinen Cache-Speicher mit MAC-
(oder IP-) Zieladressen, die mit jeder Netzwerkschnittstelle assoziiert
sind, z. B. mit jedem Segment des Bündels, vorzuhalten bzw. fortzuschreiben.
Ein solcher Cache-Speicher kann in irgendeiner von den Stationen 10, 10', 10", etc. (siehe 1A) vorgehalten werden wie
auch der Softwarecode und der Prozessor, der diesen Code ausführt.
-
Demnach inspiziert der Pseudo-Treiber
den Cache-Speicher, wenn die IP-Schicht dem Pseudo-Treiber ein Paket übergibt,
um in Ertahrung zu bringen, ob er unlängst ein Paket an die relevante
Zieladresse (destination address, "DA") übermittelt
hat. Falls ja, stellt der Pseudo-Treiber das Paket in die Warteschlage
derselben Schnittstelle, die auch dazu verwendet wurde, das letzte
Paket an diese DA in die Warteschlange zu stellen. Falls es kürzlich keine Übertragung
an diese DA gab, kann der Pseudo-Treiber das Paket entweder in die Übertragungswarteschlange,
die am leersten (z. B. am wenigsten voll bzw. belegt) ist, stellen
oder in die als nächste
verfügbare
Warteschlange, z. B. nach einem Round-Robin-Verfahren. Unabhängig davon,
welche Warteschlange er auswählt,
muß der
Pseudo-Treiber den Cache-Speicher
für diese
Warteschlange mit der neuen DA aktualisieren.
-
Betrachten wir nun den degenerierten
Fall, in dem ein Server mit einem und nur mit einem Client kommuniziert.
Die vorliegende Erfindung stellt auch dann noch sicher, daß alle Pakete
für diesen
Client über
dieselbe Schnittstelle gehen und somit über dasselbe Segment des Bündels. Lastverteilung
wird erreicht, indem die vorliegende Erfindung sogar noch besser
im nicht-degenerierten Fall wirkt. Eine hinsichtlich der Reihenfolge
geordnete Ablieferung bzw. Übergabe
von Paketen ist sichergestellt, vorausgesetzt man kann unterstellen, daß der Grad
von Überlappung
bzw. Verschachtelung von Paketen an verschiedene Das zwischen dem
IP- und dem Netzwerk-Treiber von derselben Größenordnung ist wie die Anzahl
von Prozessoren in einem gegebenen Multi-Prozessor-Server. Als eine
Leitlinie sollte die Tiefe des Cache-Speichers ungefähr zweimal
so groß sein
wie die Anzahl von Prozessoren in dem gege benen Server. Natürlich kann
das Aktualisieren des Cache-Speichers in gewisser Weise zwangloser
bzw. seltener erfolgen, wenn die Tiefe des Cache-Speichers vergrößert wird.
Es kann in der Tat eine optimale Größe für die Tiefe des Cache-Speichers
geben, genauso wie eine optimale Verteilung der Menge von Schicht-2-
und Schicht-3-Adressen, die in den Cache-Speicher eingetragen werden
müssen.
-
Verschiedene Mechanismen zur Lastverteilung
bei Switches können
verwendet werden, um Pakete an ein Bündel zu übergeben. Betrachten wir nun
die Lastverteilung zwischen Netzwerk-DTEs wie z. B. Switches, für die der
folgende Satz von Lastverteilungsleitlinien für Switch-zu-Server-Bündel (z.
B. 2A) und für Switch-zu-Switch-Bündel (z.
B. 2B) anwendbar ist.
Diese Leitlinien sollen sicherstellen, daß das Verhalten eines Switch
mit den herkömmlichen
Richtlinien für
Bridging konsistent ist. Die Leitlinien sind folgende:
-
- 1. Es sollte keine falsche Reihenfolge von
Frames für
ein gegebenes Prtoritätsniveau
bzw. -level zwischen einem gegebenen MAC-Ursprung und -Ziel auftreten;
- 2. Es sollte keine Verdoppelung von Frames auftreten;
- 3. Lastverteilung sollte transparent bzw. nicht sichtbar sein
für Protokolle,
die über
der MAC-Schicht arbeiten.
-
Ein Ansatz für Lastverteilung ist es, eine
schnellere Verbindung zu emulieren, indem alle Bündelsegmente gleichmäßig ausgelastet
gehalten werden. Zum Beispiel könnte
die entsprechende Ausgangswarteschlange als Metrik für die Auslastung
des Segments vennrendet werden. Vorausgesetzt, daß die Verbindungen
eine Flußkontrolle
implementieren, ist die Länge
der Ausgangswarteschlange ein guter Stellvertreter für die Nutzung
eines Segmentes von einem Ende zum anderen. (Ohne Flußkontrolle
würde eine
hohe Segmentlast nicht notwendigerweise im Zustand der Ausgabewarteschlange
widergespiegelt wegen des Paketverlustes am anderen Ende der Empfangswarteschlange.)
-
Jedoch könnte die Verwendung der Warteschlangenlänge allein
für die
Entscheidung, welches Segment jeweils für ein Paket zu verwenden ist,
dazu führen,
daß Frames
unter Verstoß gegen
die erste, oben aufgezählte
Leitlinie ein falsche Reihenfolge erhalten. Jedoch wird die erste
Leitlinie immer ertüllt,
wenn die Entscheidung bezüglich
des Segmentes allein als eine Funktion der Ursprungsadresse des
Pakets oder des Anschlusses, an dem das Paket eintrifft, getroffen
wird. Dieser Ansatz führt
jedoch zu einer statischen Lastverteilungsfunktion, in der die Effektivität des Bündels von
der Verteilung der Ursprünge
bzw. Quellen des Verkehrs abhängt.
Einerseits sollte eine große
Anzahl von Ursprüngen
bzw. Quellen des Verkehrs dazu beitragen, als Ergebnis eine akzeptable
Gleichverteilung zu erhalten. Aber andererseits könnte dies
immer noch zu Konfigurationen führen,
deren Abbildungsfunktion einen wesentlichen Anteil des Verkehrs
auf dasselbe Segment lenkt, was einem Systemstau Vorschub leisten
würde.
-
Ein bevorzugter Ansatz ist es, eine
dynamische Abbildungsfunktion zu implementieren, wobei immer noch
die Reihenfolge der Frames erhalten bleibt. Dieser Ansatz geht davon
aus, daß Änderungen
der Funktion langsamer erfolgen als die Übergangs- bzw. Durchgangszeiten
der Ausgangswarteschlange. Als Beispiel kann die Abbildung für eine gegebene
Ursprungsadresse zum Zeitpunkt, wenn das erste Paket mit der Quelladresse erkannt
wird, festgelegt werden. Die Abbildung kann eventuell veralten,
nachdem die Quelladresse für
eine genügend
lange Zeitspanne nicht mehr vorkam.
-
Vorzugsweise berücksichtigt die Abbildungsfunktion
sowohl die Quell- bzw. Ursprungsadresse als auch den Ankunftsanschluß, um die
Anzahl von pathologischen Fällen
zu reduzieren. Wenn zum Beispiel der Verkehr räumlich bzw. regional dominiert
wird von einem bestimmten Eingangsanschluß, dann trägt die Betrachtung der Quell-
bzw. Ursprungsadresse dazu bei, dessen Verkehr zu verteilen. Umgekehrt
trägt die
Betrachtung des Ankunftsanschlusses dazu bei, den Verkehr, der von
einer kleinen Anzahl von Adressen dominiert wird (z. B. Senner oder
Router), zu verteilen, speziell dann, wenn mehr als ein Bündel im
Switch existiert.
-
Frameverdoppelung wird dadurch verhindert,
daß der
Satz von gebündelten
Anschlüssen
behandelt wird, als ob sie ein einzelner Anschluß mit einer separaten Warteschlange
pro Segment wären,
und daß sichergestellt
wird, daß jede Übergabe
nur an eine der Warteschlangen erfolgt. Darüber hinaus werden gebündelte Anschlüsse für die Zwecke
anderer IEEE 802.1(d) Funktionen wie Lernen von MAC-Adressen, Filtern
von Frames und Ausführen
irgendeines anwendbaren Spanning-Tree-Protokolls so behandelt, als
wenn sie ein einzelner Anschluß wären.
-
Bisher hat sich die obenstehende
Beschreibung auf Lastverteilung unter Verwendung von Informationen
der MAC-Schicht konzentriert. Es ist für einen Netzwerk-Switch auch
möglich,
Information der höheren Protokollschichten
zu beachten, um bessere Lastverteilungsentscheidungen zu treffen,
vorausgesetzt, daß die dritte
Leitlinie (bezüglich
Protokolltransparenz) befolgt wird. Transparenz bedeutet, daß Protokolle
nichts von der Lastverteilungsfunktion im Switch mitbekommen und
nicht explizit mit der Lastverteilungsfunktion zusammenwirken. Zusätzlich muß die Verbindungsfähigkeit
auch noch für
Protokolle garantiert sein, die vom Switch weder unterstützt noch
verstanden werden.
-
Es ist üblich, Lastverteilung basierend
auf Informationen höherer
Schichten für
Switches zu implementieren, welche die Header der Schicht-3 paketweise überprüft. Zum
Beispiel können
in VLAN-Konfigurationen Switches die Schicht-3-Adressen einmal überprüfen und
die entsprechende Schicht-2-Information für die Paketverarbeitung verwenden.
Jedoch haben die Anmelder die mögliche
Leistungsfähigkeit
der Lastverteilung bei einem solchen Ansatz nicht vollständig untersucht.
-
Obwohl die vorstehenden Beschreibungen
in die Richtung gehen, eine Abbildungsfunktion vorzusehen, die eine
Gleichverteilung zwischen Segmenten fördert, könnte die Abbildungsfunktion
auch in eine andere Richtung zielen. Zum Beispiel könnte die
Abbildungsfunktion den Verkehr abhängig von der Priorität oder abhängig davon,
ob der Verkehr hinsichtlich der Bandbreite verwaltet wird, oder
nach bestem Vermögen
(best effort) separieren. Ein Ansatz, der auf Priorität basiert,
wird durch die erste aufgezählte
Leitlinie (keine Änderung
bei der Reihenfolge der Frames) unterstützt, weil es nicht erforderlich
ist, die Reihenfolge der Pakete über verschiedene
Prioritäten
hinweg beizubehalten. Ein Ansatz, der auf Priorität basiert,
ist besonders unkompliziert, wenn Information bezüglich der
Priorität
in der MAC-Schicht wohldefiniert ist, wie es der Fall ist, wenn VLAN-Tags
verwendet werden.
-
Aus der vorstehenden Beschreibung
kann erkannt werden, daß das
Verhalten eines Switch oder von anderer Ausrüstung konzeptionell durch einen
Satz von einfachen Regeln geleitet sein kann. Während die spezielle Architektur
des Switch berücksichtigt
werden sollte, kann die Implementierung von Definitionen unabhängig von
spezifischem Lastverteilungsverhalten des Servers vorgenommen werden.
-
Betrachten wir nun die Implementierung
der vorliegenden Erfindung innerhalb der Schicht 2 auf Seiten des
Servers innerhalb eines Ethemet-kompatiblen Netzwerks. In der folgenden
Beschreibung soll eine "hme"-Nomenklatur Gerätetreiber
der Art bezeichnen, wie sie in der Schicht der bündelnden Pseudo-Treiber 150
enthalten sind, wie in 3 und
in 4A angegeben. In
einer bevorzugten Ausführungsform
stellt ein hme-Gerät
bzw. eine hme-Einrichtung
eine 10/100 Mbps Ethernet-kompatible Schnittstelle auf verschiedenen Hardwareplattformen,
einschließlich
vieler Systeme, die bei Sun Microsystems, Inc. in Entwicklung sind,
zur Verfügung.
Eine hme-Einrichtung auf diesen verschiedenen Plattformen wird vorzugsweise
von demselben Binärcode
eines hme-Gerätetreibers
gesteuert. Eine Beschreibung eines hme-Gerätetreibers und der Bündelung
folgt ebenso wie eine Beschreibung von solchen Änderungen bezogen auf die Architektur
und die Software eines hme-Gerätetreibers,
wie sie nötig
werden, um mehrere hme-Geräte
bzw. hme-Einrichtungen zu einem Bündel zusammenzufassen.
-
Um einen Überblick zu geben, ist der
hme-Gerätetreiber
vorzugsweise ein 2.x Solarfis STREAMS-basierter Treiber, der eine
Schnittstelle zu einem Diensterbringer der Datensicherungsschicht
(Data Link Provider Interface, "DLPI") zur Verfügung stellt.
In der bevorzugten Ausführungsform
steuert dieser Treiber die Netzwerkschnittstelle basierend auf einem
ASIC eines SCSI-Parallelanschlusses für schnelles Ethernet (Fast Ethernet
Parallel Port SCSI, "FEPS") für Sun Microsystems
Sbus-Typ Plattformen, und basierend auf einem ASIC der Sun Microsystems
Cheerio Klasse für
PCI-Plattformen, um MAC-Funktionalität und Transceiver mit medienunabhängiger Schnittstelle
(Media Independent Interface, "MII") sicherzustellen.
Der Treiber stellt auch eine ioctl-Funktion zum Setzen/Lesen der
Parameter der Treiberkonfiguration unter Verwendung des Kommandos
ndd zur Verfügung.
Der Quellcode des Treibers besteht aus den folgenden Dateien:
-
Fachleute erkennen, daß die Datenstrukturen
und Funktionen im hme-Treiber in vielen Arten implementiert werden
können.
Was nun folgt ist eine Beschreibung einer bevorzugten Implementierung
für einige von
diesen Strukturen und Funktionen.
-
Verkettete Liste von STREAMS-Strukturen
-
-
Verkettete Liste von hme-Strukturen:
-
-
Alle Datenstrukturen von hme-Instanzen
sind miteinander verkettet mittels des Feldes hme nextp. Der Zeiger
auf den Kopf dieser Liste ist: static struct hme *hmeup = NULL;
-
Treiberfunktionen:
-
Die Treiber-Funktionen und -Konfigurationen
werden nun angegeben.
-
Konfiguration:
-
Die Funktionen zur Konfiguration
des Treibers im Solarfis 2.x Betriebssystemkern sind vorzugsweise:
-
hmeinfo
-
- – gibt
Information über
das Gerät
bzw. die Einrichtung zurück;
-
hmeidentify
-
- – gibt
den Namen des Gerätes
bzw. der Einrichtung als "hme" oder "SUNW,hme" an;
-
hmeattach
-
- – ordnet
die Struktur hme für
die Instanz des Gerätes
bzw. der Einrichtung zu und initialisiert mit den Konfigurationsparametern;
registriert auch die hme-Interrupt-Handler-Funktion für das Gerät bzw. die Einrichtung.
-
hmedetach
-
- – hebt
die Zuordnung der Struktur hme und weiteren Speichers, der für die Instanz
des Gerätes
bzw. der Einrichtung zugeordnet wurde, auf; macht auch die Registrierung
des Interrupt-Handlers für
das Gerät
bzw. die Einrchtung rückgängig.
-
STREAMS-Operationen:
-
Die Funktionen zur Implementierung
der Operationen der STREAMS-Schnittstelle sind vorzugsweise wie
folgt:
-
Schnittstelle:
-
hmeopen
-
- – öffnet einen
STREAM durch Zuordnen einer Struktur hmestr; versetzt den STREAM
in den Zustand DL_UNATTACHED;
-
hmeclose
-
- – schließt einen
STREAM durch Deallokieren der Struktur hmestr und jedes weiteren
Speichers dieses STREAM;
-
hmewput
-
- – wird
von einem Modul höherer
Schichten aufgerufen, um eine STREAMS Nachricht zu übergeben,
die eine DLPI Primitive oder eine M_DATA Nachricht für Fast-Path
Betrieb bzw. Operation oder eine spezielle STREAMS Nachricht sein
kann; M DATA Nachrichten werden durch Aufruf der Funktion hmestart()
sofort übertragen;
DLPI Primitiven werden in die hme-Schreib-Warteschlange eingehängt, um
von der Dienstfunktion hmewsrv() bearbeitet zu werden, wenn die
Schreib-Warteschlange für
den Dienst bzw. das Bedient-Werden freigegeben wird;
-
hmewsrv
-
- – wird
vom STREAMS Scheduler aufgerufen, um die in der hme-Schreib-Warteschlange vorhandenen
Nachrichten zu bearbeiten; diese Warteschlange enthält Nachrichten
vom Typ M_PROTO und Übertragungsnachrichten,
die auf freie Einträge
im Ring von Übertragungsdeskriptoren
warten; die Funktion ruft die Funktion hmestart(), um Pakete zu übertragen,
und die Funktion hmeproto(), um Nachrichten vom Typ M_PROTO zu bearbeiten;
-
hmeioctl
-
- – wird
von Modulen höherer
Schichten aufgerufen, um die IOCTLs raw-mode, fastpath und ndd set
und get zu bearbeiten.
-
DLPI Operationen:
-
Die folgenden Funktionen werden verwendet,
um DLPI Primitiven zu behandeln:
-
hmeproto
-
- – ruft
die geeigneten Routinen, um eine Nachricht mit einer DLPI Primitive
zu bearbeiten; ruft die Funktion hmeudreq(), um Nachrichten vom
Typ DL_UNITDATA_REQ zu bearbeiten, die zu übertragende Daten enthalten;
-
hmeareq
-
- – bearbeitet
die DL_ATTACH_REQ Primitive, die das Feld sb_hmep der Struktur hmestr
für den
STREAM initialisiert, um auf die Struktur hme der angegebenen hme-Geräte-Instanz
zu zeigen; setzt außerdem
den STREAM in den Zustand DL ATTACHED;
-
hmedreq
-
- – bearbeitet
die DL DETACH REQ Primitive; löst
die Anbindung des STREAM vom zugeordneten hme-Gerät bzw. -Einrichtung
und setzt den STREAM in den Zustand DL_UNATTACHED;
-
hmebreq
-
- – bearbeitet
die DL_BIND_REQ Primitive; ordnet den STREAM dem angegebenen DLSAP
(Data Link Service Access Point, Dienstzugangspunkt der Sicherungsschicht)
Wert zu, der dem Typfeld im Ethernet-Header entspricht; setzt außerdem den
STREAM in den Zustand DL_IDLE und gibt die Übertragung und den Empfang von
Paketen frei;
-
hmeubreq
-
- – bearbeitet
die DL_UNBIND_REQ Primitive; entfernt den DLSAP, der dem STREAM
zugeordnet ist und setzt den STREAM in den Zustand DL_UNBIND_REQ;
-
hmeireq
-
- – bearbeitet
die DL_INFO_REQ Primitive; gibt Information zum Geräte bzw.
zur Einrichtung zurück
wie z. B. Typ des Gerätes
bzw. der Einrichtung, Ethernet-Adresse,
Rundsende-Adresse, etc.;
-
hmeponreq
-
- – bearbeitet
die DL_PROMISCON_REQ Primitive, um den STREAM in die Lage zu versetzen,
entweder alle Pakete (DL_PROMISC_PHYS Modus) oder alle Multicast-Pakete
(DL PROMISC MULTI Modus) oder alle SAP-Werte (DL_PROMISC_MULTI Modus)
zu empfangen;
-
hmepoffreq
-
- – bearbeitet
die DL_PROMISCOFF_REQ Primitive, um die angegebenen vermischten
Modi (promiscuous modes) auszuschalten;
-
hmeemreq
-
- – bearbeitet
die DL_ENABMULTI_REQ Primitive, um den Empfang der angegebenen Multicast-Adressen
freizugeben;
-
hmedmreq
-
- – bearbeitet
die DL_DISABMULTI_REQ Primitive, um den Empfang der angegebenen
Multicast-Adressen zu sperren bzw. zu deaktivieren;
-
hmepareq
-
- – bearbeitet
die DL_PHYS_ADDR_REQ Primitive, um entweder die ab Fabrik eingestellte
Adresse (DL_FACT_PHYS_ADDR angefordert) oder die aktuelle Adresse
(DL_CURR_PHYS_ADDR angefordert) zurückzugeben;
-
hmespareq
-
- – bearbeitet
die DL_SET_PHYS_ADDR_REQ Primitive, um die angegebene Ethernet-Adresse
einzustellen;
-
hmeudreq
-
- – bearbeitet
die DL_UNITDATA_REQ Primitive, um Daten in der Nachricht in ein
Ethernet-Paket zu packen und ruft die Funktion hmestart(), um das
Paket zu übertragen.
-
Hardware Initialisierung:
-
hmeinit
-
- – initialisiert
die Hardware (MAC und den Transceiver) und initialisiert Software-Ressourcen für das Senden und
Empfangen von Paketen; wird das erste Mal aufgerufen, wenn das Gerät bzw. die
Einrichtung an einen STREAM angebunden wird, und wird auch dann
aufgerufen, wenn irgendeine Neuprogrammierung der Hardware erforderlich
ist, zum Beispiel um den vermischten Modus (promiscuous mode) freizugeben
oder zu sperren, um den Multicast-Empfang freizugeben oder zu sperren,
um die Geschwindigkeit oder den Modus der Verbindung zu ändern, etc.;
wird auch aufgerufen vom Interrupt-Handlex, um nach schweren Fehlern
wieder aufzusetzen;
-
hmeuninit
-
- – wird
aufgenrufen, um die Hardware vom weiteren Empfangen und Senden von
Paketen abzuhalten und um weitere Interrupts zu verhindern;
-
hme_reset_transceiver
-
- – wird
von der Funktion hmeinit() aufgerufen, um den Transceiver zurückzusetzen;
-
hme_try_speed
-
- – wird
von der Funktion hmeinit() aufgerufen, um die Verbindung aufzusetzen
bzw. zu starten unter Verwendung von automatischer Verhandlung (auto-negotiation);
-
hme_Force_speed
-
- – wird
von der Funktion hmeinit() aufgerufen, um die Verbindung aufzusetzen
bzw. zu starten mit der angegebenen Geschwindigkeit und dem angegebenen
Modus (erzwungene(r) bzw. forcierte() Geschwindigkeit und Modus);
-
hme_check_link
-
- – wird
unter Verwendung der timeout() Schnittstelle alle 30 Sekunden aufgerufen,
um den Transceiver zu überprüfen; der
hme-Gerätetreiber
unterstützt
Produkte, die einen auf dem Board vorhandenen Transceiver benutzen,
der mit einem RJ45-Konvektor verbunden ist, oder einen externen
Transceiver, der mit einem MII (Media Independent Interface) Konnektor
verbunden ist; diese Funktion fragt nach Änderung des Tranceivers und
ruft, wenn der Transceiver geändert
wurde, die Funktion hmeinit() auf, um MAC und den Transceiver neu
zu initialisieren;
-
Paket-Übertragung und Paket-Empfang:
-
hmestart
-
- – wird
aufgerufen von hmewput() für
Nachrichten vom Typ M_DATA (fast-path) und von hmeudreq() für M_PROTO
Nachrichten mit DL_UNITDATA_Prtmitiven, um ein Ethernet-Paket zu übertragen;
ruft auch die Funktion hmereclaim auf, um Übertragungsressourcen freizugeben,
wenn mehr als eine bestimmte Anzahl (z. B. > 64) von Deskriptoren beansprucht bzw.
belegt wurden; wenn es keine freien Deskriptoren mehr gibt, wird die
Nachricht am oberen Ende der Schreib-Warteschlange eingefügt und es wird ein Flag gesetzt,
damit die Warteschlange zur Bearbeitung freigegeben und wieder zur
Bearbeitung eingeplant wird, wenn freie Übertragungsdeskriptoren verfügbar sind;
-
hmeintr
-
- – diese
Routine liest das FEPS/Cheerio Statusregister und prüft, ob Ereignisse
wie Fehler, Paketempfang und -übertragung
eingetreten sind; normalerweise sind Übertragungsinterrupts nicht
freigeschaltet; im Falle eines schweren Fehlers wird die Funktion
hme_fatal_error() aufgerufen, um den Zustand zu aktualisieren und
die Funktion hmeinit() aufzurufen, um die Hardware und die Datenstrukturen
in der Software neu zu initialisieren; im Falle von nicht-schweren
Fehlern, wird die Funktion hme_non_fatal_err() aufgerufen;
- – wenn
ein Paketübertragungsereignis
gemeldet wird, wird die Funktion hmereclaim() aufgerufen, um die Übertragungsdeskriptoren
und die zur Übertragung
benutzten Paketpuffer freizugeben;
-
hmereclaim
-
- – diese
Funktion geht in einer Schleife über
den Ring von Übertragungsdeskriptoren
von dem zuletzt belegten Deskriptor bis zum zuletzt übertragenen
Paket; zu jedem übertragenen
Deskriptor gibt sie die zur Übertragung benutzten
Paketpuffer frei und aktualisiert den Zähler der übertragenen Pakete für jedes übertragene
Paket; wenn irgendwelche Pakete in der Schreib-Warteschlange auf
freie Übertragungsdeskriptoreinträge warten, werden
die Schreib-STREAMS-Warteschlangen
vom STREAMS-Scheduler zur Bearbeitung freigegeben;
-
hmeread
-
- – ein
freier STREAMS-Nachrichtenpuffer wird zugeordnet und an die Hardware
im Ring von Empfangsdeskriptoren an der Stelle des empfangenen Pakets übergeben;
wenn es keine freien Puffer gibt, werden die empfangenen Daten verworfen
und der Puffer wird erneut an die Hardware im Ring von Empfangsdeskriptoren übergeben;
- – typischerweise
ist nur ein Stream von der IP-Schicht aus mit dem Wert des Feldes
sb sap auf ETHERTYPE_IP gesetzt geöffnet; die Struktur hme enthält ein Feld
hme_ipq, um auf die Lese-Warteschlange eines solchen Streams zu
zeigen; wenn das Typfeld des empfangenen Paketes ETHERTYPE_IP ist,
dann wird dieses Paket an diese Warteschlange zur IP-Verarbeitung
gesendet; ansonsten wird das Typfeld des empfangenen Paketes mit
dem Feld sb sap aller an das hme-Gerät bzw. die hme-Einrichtung
angebundenen Streams verglichen, und eine Kopie des Paketes wird
auf allen Streams, die für
den Empfang des Paketes in Frage kommen bzw. auswählbar sind,
nach oben gesandt.
-
Wie bereits erwähnt erfordert eine Implementierung
der vorliegenden Erfindung in einem gebündelten Ethernet-Protokoll
bzw. einem Ethernet-Protokoll mit Bündelung die Befolgung der neun
aufgezählten
Regeln, die weiter vorne aufgezählt
wurden.
-
In einer Implementierung der vorliegenden
Erfindung verwendet die Bündelung
einen STREAMS Pseudo-Treiber mit Multiplexing, z. B. ausschließlich Software,
und verplombt bzw. verbindet hme-Geräte bzw. -Einrichtungen,
die Mitglieder bzw. Bestandteile des darunter liegenden Bündels sind.
Jedoch erfordert dieser Ansatz einige Änderungen im hme-Treiber und
zieht die Zusatzlast nach sich, eine STREAMS-Funktion putnext()
für die
Kommunikation zwischen dem Pseudo-Treiber und dem hme-Treiber verwenden
zu müssen.
-
Eine eher bevorzugte Ausführungsform
modifiziert den hme-Treiber selbst, um Bündelkonfiguration unter Verwendung
der ioctl-Schnittstelle ND_SET und ND_GET sowie des Kommandos ndd
zu unterstützen. Diese
Ausführungsform
wird vorgezogen, da sie eine große Menge Codeduplizierung im
Pseudo-Treiber eliminiert und die Zusatzlast einer zusätzlichen
STREAMS-Schicht vermeidet.
-
Das Hochfahren eines Systems über ein
Bündel
ist nicht möglich,
weil der Code zum Hochfahren im fcode kein Bündel behandelt. Der Code kann
Anforderungen zum Hochfahren über
eine der Verbindungen übertragen,
aber wenn der Switch die Antworten über mehrere Verbindungen sendet,
kann er nicht alle diese Pakete behandeln.
-
Beim Konfigurieren des Bündels wird
eines der hme-Geräte
bzw. -Einrichtungen als der Bündelkopf ausgewiesen
und die anderen als Bündelmitglieder
bzw. Bündelbestandteile.
Betrachten wir zum Beispiel vier hme-Geräte bzw. -Einrichtungen, die
mit hme 1, hme2, hme3 und hme4 bezeichnet werden und als ein Bündel konfiguriert
werden sollen. Jede bzw. jedes von diesen Geräten bzw. Einrichtungen kann
verschiedene lokale MAC-Adressen haben, aber um Teil desselben Bündels zu
sein, sollten alle diese Geräte
bzw. Einrichtungen mit derselben MAC-Adresse konfiguriert werden.
Dies kann leicht erreicht werden durch Auswahl eines bzw. einer
dieser Geräte
bzw. Einrichtungen als Bündelkopf
und die anderen als Bündelmitglieder
bzw. Bündelbestandteile.
Die MAC-Adresse des Bündelkopfes
kann als MAC-Adresse für
alle anderen Bündelmitglieder
bzw. Bündelbestandteile
ausgewählt
werden. Darüber
hinaus wird die Instanznummer für
den Bündelkopf
von Benutzerprogrammen verwendet, um auf das Bündel zum Zwecke von Datentransfer
zuzugreifen, und die ande ren Bündelmitglieder
bzw. Bündelbestandteile
sind nicht zugänglich
für irgendeine
Operation des DLPI-Protokolls. Wenn zum Beispiel hme 1 als Bündelkopf
ausgewählt
wird, würde
der Benutzer die Datei /etc/hostname.hme1 kreieren, so daß die Schnittstelle
hme 1 für
den TCP/IP-Protokollzugang bzw. -zugriff während des Vorgangs, das System
hochzufahren, fest zugeordnet ist.
-
Wenn ein System hochgefahren wird
(entweder von der lokalen Platte oder über das Netzwerk unter Verwendung
einer nicht-gebündelten
Netzwerkschnittstelle), konfiguriert der Betriebssystemkern alle
Netzwerkschnittstellen in der üblichen
Weise als individuelle Verbindungen mit lokalen MAC-Adressen, falls überhaupt.
Nachdem die Konfiguration des Betriebssystemkerns abgeschlossen
ist, führt
der Prozeß /sbin/init
das Skript /sbin/rcS aus, welches die Skriptdatei /etc/rcS.d/S30rootusr.sh
zur Konfigurierung der Netzwerkschnittstellen, für welche die Dateien /etc/hostname.xx
vorhanden sind, ausführt.
Indem die Kommandos ndd zur Konfigurierung des Bündels in eine Shell-Skript-Datei
im Verzeichnis /etc/rcS.d geschrieben werden und die Datei beispielsweise
S20trunk.sh genannt wird, kann der Initprozeß zwangsweise dazu veranlaßt werden,
das Bündel
zu konfigurieren, bevor irgendein Kommando zur Konfigurierung einer
Netzwerkschnittstelle ausgeführt
wird.
-
Sobald ein Bündel konfiguriert ist, kann
die Konfigurierung (Bündelmitglieder
bzw. Bündelbestandteile oder
Bündelkopf)
vorzugsweise nur nach Modifizierung der Datei /etc/rcS.d/S20trunk.sh
und erneutem Hochfahren des Systems modifiziert werden. Die Einschränkung hilft,
mögliche
Konfusion für
Anwendungen, die etwa eine Historie bezüglich der Netzwerkschnittstellen
im System unterhalten bzw. fortschreiben, zu vermeiden. Eine Verbindung
sollte am besten nach einer entsprechenden Operation zur Neukonfigurierung
mit dem Switch, mit dem das Bündel
verbunden ist, zu einem Bündel
hinzugefügt
oder aus einem Bündel
entfernt werden.
-
Kommandos zur Konfigurierung:
-
Der hme-Treiber unterstützt vorzugsweise
die folgenden, durch den Benutzer konfigurierbaren ndd Variablen
für jede
Schnittstelle:
trunk-id – jedes
Bündel
wird mit einer Nummer im Bereich 1 – 256 identifiziert; der Wert
0 gibt an, daß die Schnittstelle
nicht zu einem Bündel
gehört;
trunk-head – der Wert
1 gibt an, daß die
Schnittstelle der Bündelkopf
ist; ansonsten ist der Wert 0; dieser Parameter ist nur gültig, falls
der Parameter trunk-id im Bereich 1 – 256 liegt.
-
Die folgende Sequenz von Kommandos
in der Datei /etc/rcS.d/S20trunk.sh illustriert die Konfigurterung
eines Bündels,
das aus den Schnittstellen hme1, hme2, hme3 und hme4 besteht mit
trunk-id gleich 10 und mit hme2 als Bündelkopf:
ndd -set /dev/hme
1:arunk-id 10
ndd -set /dev/hme 2:arunk-id 10
ndd -set
/dev/hme 3:arunk-id 10
ndd -set /dev/hme 4:arunk-id 10
ndd
-set /dev/hme 2:arunk-head 1
-
Zuerst sollten alle Bündelmitglieder
bzw. Bündelbestandteile
mit einer Bündel-Id
identifiziert werden, und dann sollte das letzte Kommando den Bündelkopf
identifizieren. Wenn der Bündelkopf
identifiziert ist, wird die Konfigurierung des Bündels vollendet durch Neuinitialisierung
aller Schnittstellen der Bündelmitglieder
bzw. Bündelbestandteile
unter Verwendung der MAC-Id der Schnittstelle des Bündelkopfes.
Nach diesem Schritt ist nur hme2 (der Bündelkopf) direkt für Benutzer
zugänglich,
z. B. kann nur hme2 an irgendeinem Stream angebunden werden. Auf
die anderen Schnittstellen hme1, hme3 und hme4, die Bündelmitglieder
bzw. Bündelbestandteile
sind, kann von Benutzern nicht zugegriffen werden, z. B. können sie
nicht an irgendeinen Stream angebunden werden.
-
Wenn das Bündel einmal konfiguriert ist,
wird die Schnittstelle hme2 des Bündelkopfes genau so verwendet
wie irgendeine nicht-gebündelte
Netzwerkschnittstelle. Zum Beispiel kann sie vom Kommando ifconfig referenziert
werden, um den TCP/IP-Protokollstack anzuschließen bzw. anzubinden. Alle Pakete,
die an das Gerät
bzw. die Einrichtung hme2 von Benutzerprogrammen oder der IP-Schicht gesendet
werden, werden über
eine der Verbindungen in dem Bündel
so gesandt, daß die
Reihenfolge der Pakete in einem Fluß bzw. Strom erhalten bleibt.
Alle Pakete, die auf irgendeiner der Verbindungen in dem Bündel empfangen
werden, werden auf dem Stream, der an das Gerät bzw. die Einrichtung hme2
angebunden ist, nach oben gesendet.
-
Nur auf die Bündelkopf-Einrichtung kann von
ndd zugegnfen werden, um die Verbindungsgeschwindigkeit und den
-modus zu ändern.
Auch wenn es möglich
ist, das Bündel
mit Geschwindigkeiten 10/100 Mbps und in Halb-Duplex-/Voll-Duplex-Modi
zu betreiben, erscheint es am besten, nur die Geschwindigkeit 100 Mbps
und den Voll-Duplex-Modus zu unterstützen. Dementsprechend wird
in der bevorzugten Ausführungsform
jedes Bündelmitglied
bzw. jeder Bündelbestandteil,
das bzw. der nur mit der Geschwindigkeit 10 Mbps und im Halb-Duplex-Modus
betreibbar ist, behandelt, als wenn die Verbindung außer Betrieb
wäre.
-
Lastausgleich bei der Übertragung;
-
Nachrichten, die auf Streams, die
an das Bündelkopf-Gerät bzw. die
-Einrichtung angebunden sind, zur Übertragung nach unten gesandt
werden, sollten so über
eine Verbindung im Bündel
gesendet werden, daß die
Reihenfolge des Paketflusses in jedem beliebigen Fluß nicht
gebrochen bzw. verfälscht
wird. Vorzugsweise sollte nicht mehr als die Datenbandbreite einer
einzelnen Verbindung zu irgendeiner bestimmten Ziel-MAC-Adresse
gesendet werden, es sei denn, daß dieses bestimmte Ziel auch
als gebündelt
bekannt ist. Dies wird zum Beispiel der Fall sein, wenn das Bündel zwei
Server direkt miteinander verbindet. Daher wird die Verteilung der
Pakete auf Verbindungen normalerweise auf der Grundlage der Ziel-MAC-Adressen
im Ethernet-Header bestimmt.
-
Der Benutzer kann angeben, wenn ein
Bündel
zwei Server direkt verbindet, indem er eine Konfigurationsvariable
im Treiber setzt. In einem solchen Fall wird die Verteilung der
Pakete auf der Grundlage der TCP/UDP-Portnummer für TCP/UDP-Pakete
vorgenommen. Andere IP- oder nicht-IP-Pakete werden auf der Grundlage der
Ziel-MAC-Adresse verteilt, wodurch es vorteilhafterweise erlaubt
ist, verschiedene Multicast-Ströme
auf verschiedene Links zu verteilen.
-
Aber wie bereits in Regel 4 weiter
oben bemerkt, ist es wichtig, die zeitliche Reihenfolge von Paketen zu
bewahren. Eine bevorzugte Methode zur Erhaltung der zeitlichen Reihenfolge
bei der Übertragung
von Paketen ist es, immer dieselbe Verbindung zu benutzen, die durch
Hashing der Fluß-ID
(Ziel-MAC-Adresse oder TCP/UDP-Portnummer) auf die Verbindungs-ID
festgelegt wird. Viele Hashing-Schemata können verwendet werden, wobei
das Ziel ist, eine zufallsgesteuerte Funktion bereitzustellen.
-
Eine Abbildungstabelle der Verbindungen
wird verwendet, um die Fluß-ID
auf eine bestimmte Verbindung abzubilden. Die Anzahl der Einträge in der
Abbildungstabelle der Verbindungen ist gleich der Anzahl von Bündelmitgliedern
bzw. Bündelbestandteilen
(einschließlich
des Bündelkopfes),
wenn die Anzahl von Bündelmitgliedem
bzw. Bündelbestandteilen
eine Zweierpotenz ist. Falls sie nicht eine Zweierpotenz ist, sollte
die Anzahl von Einträgen
gleich der nächst
höheren
Zweierpotenz sein. Wenn es zum Beispiel fünf Bündelmitglieder bzw. Bündelbestandteile
gibt, werden acht Einträge
in der Abbildungstabelle der Verbindungen vorhanden sein.
-
Jeder Eintrag in der Abbildungstabelle
der Verbindungen enthält
einen Zeiger auf ein Bündelmitglied bzw.
einen Bündelbestandteil
und enthält
einige Zustandsinformationen zur Verwendung dieses Bündelmitglieds
bzw. Bündelbestandteils.
Wenn die Größe der Abbildungstabelle
der Verbindungen gleich 2n ist, dann können die
letzten n Bits der Fluß-ID
eines Tx-Paketes als Index in die bzw. der Abbildungstabelle der
Verbindungen verwendet werden, und um ein Bündelmitglied bzw. eine Bündelbestandteil
zur Übertragung
des Paketes auszuwählen.
-
Zum Zeitpunkt der Konfigurierung
des Bündels
(wenn der Bündelkopf
angegeben bzw. festgelegt wird) wird die Abbildungstabelle der Verbindungen
kreiert und mit Zeiger auf die Bündelmitglieder
bzw. Bündelbestandteile
initialisiert, vorzugsweise in einem Round-Robin-Verfahren. Wenn
die Bündelgröße nicht
eine Zweierpotenz ist, werden einige Bündelmitglieder bzw. Bündelbestandteile
zwei Einträgen
zugewiesen.
-
Wenn eine Verbindung, die ein Bündelmitglied
bzw. Bündelbestandteil
ist, ausfällt
bzw. außer
Betrieb geht, werden die Einträge
in der Abbildungstabelle der Verbindungen, die Zeiger auf dieses
Bündelmitglied bzw.
diesen Bündelbestandteil
enthalten, geändert,
um auf ein anderes aktives Bündelmitglied
bzw. einen anderen aktiven Bündelbestandteil
zu zeigen. Die Zustandsinformation für diese Einträge wird
modifiziert, um auf den Ablauf einer Zeitüberwachung zu warten, bevor
dieses neue Bündelmitglied
bzw. dieser neue Bündelbestandteil
für die Übertragung
von Paketen mit Fluß-IDs, die auf diese
Einträge
abgebildet werden, benutzt wird. Solche Pakete werden in den STREAMS-Warteschlangen
zurückgehalten,
bis der Ablauf der Zeitüberwachung
eingetreten ist. Eine solche Zeitüberwachung zu verwenden, hilft
dabei, die zeitliche Reihenfolge der Pakete, die vor dem Ausfall
des Bündelmitglieds
bzw. des Bündelbestandteils
ausgesendet wurden, zu erhalten. Im Gegensatz zu Ansätzen nach
dem Stand der Technik, bei denen eine ausgefallene Verbindung zu
Datenverlust führt,
kann die vorliegende Erfindung den Datenfluß beibehalten, wenngleich über einen
anderen Flußpfad.
-
In gleicher Weise wird in dem Fall,
daß eine
ausgefallene Verbindung, die Bündelmitglied
bzw. Bündelbestandteil
ist, wieder hergestellt bzw. betriebsbereit wird, zumindest ein
Eintrag in der Abbildungstabelle der Verbindungen geändert, um
auf dieses wiederhergestellte Bündelmitglied
bzw. diesen wiederhergestellten Bündelbestandteil zu zeigen.
Der Zustand für
diese Einträge
wird modifiziert, um auf den Ablauf einer Zeitüberwachung zu warten, bevor
diese Einträge
zur weiteren Übertragung
verwendet werden.
-
Bevorzugte Datenstrukturen
bei der Bündelung:
-
Die folgenden, Benutzer-konfigurierbaren
ndd Variablen werden vorzugsweise der Struktur hme_param_array[
] in der Datei hme.h hinzugefügt:
-
In der Struktur "hme" ist
für jede
Schnittstelle hinzuzufügen:
-
Funktionen zur Bündelung:
-
hmeioctl
-
- – fügt Code
zur Behandlung der neuen ndd Variablen trunk-id (Bündel-Id),
trunkhead (Bündelkopf)
und flow-id (Fluß-Id)
hinzu;
- – ordnet,
wenn ein neuer Bündelkopf
angegeben wird, der Funktion eine Struktur für das Bündel, initialisiert Strukturen
der Bündelmitglieder
bzw. Bündelbestandteile
und initialisiert die Hardwaregeräte bzw. -einrichtungen der
Bündelmitglieder
bzw. Bündelbestandteile
durch Aufruf der Funktion hmeinit();
- – fügt Code
zur Unterstützung
von ndd Variablen hinzu, welche die Instanznummer enthalten, z.
B. Varablen der Form <nn>:<name>,
wobei nn die Instanznummer ist und name auf den Parameter verweist.
-
hmedetach
-
- – hebt,
wenn gebündelt,
die Zuordnung aller dynamischen Datenstrukturen, die zur Unterstützung des
Bündels zugeordnet
wurden, auf;
-
hmeareq
-
- – fügt Code
hinzu, um einen Fehler zurückzuliefern,
wenn das Gerät
bzw. die Einrichtung als ein Bündelmitglied
bzw. Bündelbestandteil,
das kein Bündelkopf
ist, konfiguriert ist;
-
hme_trunk_init
-
- – neue
Funktion: wo auch immer die Funktion hmeinit() aufgerufen wird,
um die MAC-Parameter bzw. den MAC-Modus zu ändern, wird die Funktion hme_tnank_init()
aufgerufen, so daß die
MAC-Adresse, Multicast-Adressen, vermischter Modus etc. für alle Bündelmitglieder
bzw. Bündelbestandteile
gesetzt werden;
-
hme trunk start
-
- – neue
Funktion: wo auch immer zur Zeit die Funktion hmestart() aufgerufen
wird, um ein Paket zu übertragen, wird
die Funktion hme_trunk_start() aufgerufen, um die Paketübertragung
für ein
Bündel
zu behandeln;
- – diese
Funktion verwendet die Fluß-Id
für das
Paket, um die Verbindung zu bestimmen, die verwendet wird bzw. werden
soll; wenn das Paket an eine Verbindung weitergeleitet bzw. übergeben
werden kann, wird die Funktion hmestart() aufgerufen, um das Pakte
auf dieser Verbindung zu übertragen;
wenn das Paket an keine Verbindung weitergeleitet bzw. übergeben
werden kann, wird es in die STREAMS Warteschlange zurückgestellt
und das Flag tr_txall_wait gesetzt;
-
hmeintr
-
- – wenn
der Verbindungszustand für
ein Bündelmitglied
bzw. einen Bündelbestandteil
die Bedingung "Verbindung
ausgefallen bzw. außer
Betrieb" anzeigt,
wird ein alternatives Bündelmitglied
bzw. ein alternativer Bündelbestandteil
zugewiesen, und eine Zeitüberwachung
gestartet, bevor das neue Bündelmitglied
bzw. der neue Bündelbestandteil
venniendet wird;
-
hmeread
-
- – nachdem
das empfangene Paket in einem mblk erhalten wurde, ist der Zeiger "hmep" auf den Bündelkopf zu
verwenden, um den mblk nach oben zu senden;
-
Modifikationen und Variationen können an
den offenbarten Ausführungsformen
vorgenommen werden, ohne den Zuständigkeits- bzw. Geltungsbereich
der Efindung zu verlassen.