-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft Netzwerke und insbesondere die Regelung
von Überlastungen
in ATM-Schaltern in Netzwerken.
-
Da
ein ATM-Schalter möglicherweise
keine Zelle zu einer stromabwärtigen
Station übertragen
kann, bevor eine andere Zelle ankommt, setzt der Schalter ankommende
Zellen in eine Warteschlange. Wenn die Warteschlange die gesamte
für die
Warteschlange zugeordnete Speicherkapazität ausfüllt, dann werden die eingehenden
Zellen verworfen.
-
Einige
ATM-Schalter haben eine separate Warteschlange für jeden Ausgangsport oder Subport und/oder
für jede
Priorität.
So haben beispielsweise einige Schalter 32 Ports; für jeden
Port werden vier Warteschlangen für jeweils vier verschiedene
Prioritäten
geführt.
Die Gesamtzahl der Warteschlangen beträgt somit 32*4 = 128. In einigen
Schaltern wird jede Warteschlange in einem separaten Speicher gehalten.
In anderen Schaltern wird ein Gemeinschaftsspeicher für alle Warteschlangen
verwendet. Ein Gemeinschaftsspeicher lässt es zu, dass eine bestimmte
Warteschlange mehr als ihren proportionalen Anteil an der Speicherkapazität einnimmt,
vorausgesetzt, dass eine oder mehrere andere Warteschlangen weniger
als ihren proportionalen Anteil an der Speicherkapazität einnehmen.
Eine lange Warteschlange kann jedoch den gesamten Gemeinschaftsspeicher
einnehmen und keinen Platz für
andere Warteschlangen lassen. Um eine solche Möglichkeit zu reduzieren, ist
die Zahl der Zellen in einer bestimmten Warteschlange durch einen
Schwellenwert begrenzt. Wenn die Zahl der Zellen in einer bestimmten
Warteschlange den Schwellenwert überschreitet,
dann werden die für
diese Warteschlange bestimmten ankommenden Zellen einer Maßnahme zur
Reduzierung der Überlastung
unterzogen; so werden beispielsweise die ankommenden Zellen verworfen
oder Zellen werden mit einer Überlastungsanzeige
gesendet.
-
Es
ist wünschenswert,
alternative Schaltungen und Verfahren zum Handhaben der Schalterüberlastung
bereitzustellen.
-
Ozveren
C et al.: ,Reliable and efficient hop-by-hop flow control', Computer Communications
Review, Bd. 24, Nr. 4, 1. Oktober 1994, Seiten 89–100, XP000477043,
offenbart ein System, das einen Schwellenwert verwendet, der von
der Zahl der Zellen in einem ATM-Schalter abhängig ist, um Schalterüberlastungen
zu vermeiden.
-
Beraldi
R et al.: ,Selective BECN schemes for congestion control of ABR
traffic in ATM LAN',
1996 IEEE International Conference on Communications (ICC), Converging
Technologies for Tomorrow's
Applications, Dallas, 23.–27.
Juni 1996, Bd. 1 von 3, 23. Juni 1996, Institute of Electrical & Electronics Engineers,
Seiten 503–507,
XP000625722, offenbart ein System zur Überlastungsabwehr von ABR-Verkehr
in einem ATM-LAN, wobei das System in Bezug auf Klassen von Zellen
arbeitet.
-
ZUSAMMENFASSUNG
-
Die
vorliegende Erfindung ermöglicht
die Änderung
von Schwellenwerten je nach Schalterüberlastung. In einigen Ausgestaltungen
können
die Schwellenwerte umgekehrt zur Gesamtzahl der Zellen in allen
Warteschlangen variieren. Somit werden die Schwellenwerte verringert,
wenn die Gesamtzahl der Zellen zunimmt.
-
Einige
veränderliche
Schwellenwerte sind besonders für
Ausgestaltungen mit einer großen
Zahl von Warteschlangen wertvoll. In der Tat werden die Schwellenwerte,
wenn die Zahl der Warteschlangen groß ist und die Schwellenwerte
nicht variabel, sondern konstant sind, tief eingestellt, weil es
keiner Warteschlange gestattet werden sollte, in Anwesenheit vieler
anderer Warteschlangen viel Speicherplatz einzunehmen. Im Gegensatz
dazu können
sie, wenn die Schwellenwerte variabel sind, hoch eingestellt werden,
solange die Gesamtzahl der Zellen in dem Gemeinschaftsspeicher niedrig
ist. Die Schwellenwerte sind nur dann tief, wenn die Gesamtzahl
der Zellen hoch ist.
-
In
einigen Ausgestaltungen werden viele Warteschlangen gebildet, weil
der Schalter eine separate Warteschlange für jeden virtuellen Eingangskanal
(IVC) führt.
Wir werden eine solche Warteschlangenbildung „Pro-VC-Warteschlangenbildung" nennen. Einige Pro-VC-Warteschlangenbildungsschalter
haben tausende von IVCs und somit tausende von Warteschlangen.
-
Einige
Ausgestaltungen definieren eine oder mehrere Klassen von Warteschlangen.
Jede Klasse hat ihre eigenen Schwellenwerte für ihre Warteschlangen. In jeder
Klasse variieren die Schwellenwerte umgekehrt zur Gesamtzahl der
Zellen in allen Warteschlangen der Klasse. Daher verursacht Überlastung
in einer Klasse keine Schwellenwertreduzierung in anderen Klassen.
-
In
einigen Pro-VC-Warteschlangenbildungsschaltern haben Warteschlangen
jeder gegebenen Klasse eine bestimmte Verkehrscharakteristik gemäß Definition
durch ihren Dienstgüte-(QoS)-Parameter
oder -Parameterbereich. Die Verkehrscharakteristik wird dann berücksichtigt,
wenn die Schwellenwerte ermittelt werden. So stellen einige Schalter
tiefere Schwellenwerte für
Klassen mit niedrigeren Zellenverzögerungs- und Zellenverzögerungsvariationsparametern
und höhere
Schwellenwerte für
Klassen mit niedrigeren Zellenverlustraten ein. Überlastung für Warteschlangen
mit einer Verkehrscharakteristik (z. B. einem hohen Zellenverzögerungsparameter
und somit einer geringen Priorität)
verursacht keine Schwellenwertreduzierung für Warteschlangen mit einer
anderen Verkehrscharakteristik (z. B. einer höheren Priorität).
-
In
einigen Ausgestaltungen ist die Zahl der Klassen relativ zur Anzahl
der Warteschlangen klein. So gibt es beispielsweise in einigen Ausgestaltungen
nur sechzehn Klassen. Daher kann die Menge an Speicherkapazität, die einer
bestimmten Klasse eingeräumt
wird, hoch sein. In einigen Ausgestaltungen ist die für jede Klasse
eingestellte Speicherkapazitätsobergrenze
der gesamte Gemeinschaftsspeicher.
-
In
Pro-VC-Warteschlangenbildungsschaltern betrifft diese Maßnahme,
wenn eine Warteschlange ihren Schwellenwert überschreitet und eine Maßnahme zur Überlastungsreduzierung
auslöst,
nur den IVC, der dieser Warteschlange entspricht, und hat keinen
Einfluss auf andere IVCs.
-
Weitere
Merkmale und Vorteile der Erfindung werden nachfolgend beschrieben.
Die Erfindung wird in den beiliegenden Ansprüchen definiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 illustriert Pro-VC-Warteschlangen
von ATM-Zellen in einem ATM-Schalter
gemäß der vorliegenden
Erfindung.
-
2 illustriert Datenstrukturen,
die zum Verwalten der Warteschlangen von 1 verwendet werden.
-
3 und 4 sind Charts, die den Betrieb eines
ATM-Schalters der vorliegenden Erfindung illustrieren, wenn eine
Zelle empfangen wird.
-
5 ist ein Chart, der den
Betrieb eines ATM-Schalters der vorliegenden Erfindung illustriert,
wenn eine Zelle zum Senden geplant ist.
-
6 ist ein Chart, der illustriert,
wie ein ATM-Schalter der vorliegenden Erfindung bestimmt, ob eine eingehende
Zelle verworfen werden soll.
-
7–11 illustrieren
Datenstrukturen in verschiedenen Betriebsphasen eines ATM-Schalters
der vorliegenden Erfindung.
-
12 illustriert Ethernet-
und ATM-Netze, die gemäß der vorliegenden
Erfindung interagieren.
-
13 illustriert eine Zustandsmaschine
in einem ATM-Schalter der vorliegenden Erfindung.
-
14 illustriert Datenstrukturen
in einem ATM-Schalter der vorliegenden Erfindung.
-
15 illustriert eine Zustandsmaschine
in einem ATM-Schalter der vorliegenden Erfindung.
-
16–19 illustrieren
Datenstrukturen in verschiedenen Betriebsphasen eines ATM-Schalters
der vorliegenden Erfindung.
-
20 und 21 sind Graphs, die die Schwellenwert-
und Paketverwerfungsfunktion eines ATM-Schalters der vorliegenden
Erfindung illustrieren.
-
22 ist ein Blockdiagramm
einer Schaltung, die zum Implementieren der Schwellenwert- und Paketverwerfungsfunktion
eines ATM-Schalters der vorliegenden Erfindung verwendet wird.
-
23 illustriert eine Zustandsmaschine
für eine
frühe Paketverwerfungsfunktion
in einem ATM-Schalter der vorliegenden Erfindung.
-
24 ist ein Blockdiagramm,
das eine Beziehung zwischen Funktionsblöcken und Datenbanken in einem
ATM-Schalter der vorliegenden Erfindung zeigt.
-
25 ist ein Blockdiagramm
eines ATM-Schalters der vorliegenden Erfindung.
-
26 zeigt Datentabellen und
Bussignale in dem ATM-Schalter von 25.
-
27 illustriert den Fluss
von Daten zwischen Blöcken
von 25.
-
28 illustriert Vorgänge, die
in verschiedenen Schaltzyklen in dem Schalter von 25 durchgeführt werden.
-
29 illustriert Vorgänge, die
während
einer Eingangsstufe des Schalters von 25 durchgeführt werden.
-
30 illustriert eine Eingangsstufen-Pipeline
des Schalters von 25.
-
31 illustriert Vorgänge, die
während
einer Ausgangsstufe des Schalters von 25 durchgeführt werden.
-
32 illustriert eine Ausgangsstufen-Pipeline
des Schalters von 25.
-
33 illustriert den Fluss
von Daten in dem Schalter von 25.
-
34 illustriert die Programmierung
des Schalters von 25,
die zum Einrichten einer Verbindung durchgeführt wird.
-
35–51 illustrieren
Register und Registerfelder in dem Schalter von 25.
-
BESCHREIBUNG BEVORZUGTER
AUSGESTALTUNGEN
-
Nachfolgend
wird eine ATM-Schalter-Schwellenwertfunktion beschrieben. Zunächst wird
die Pro-VC-Warteschlangenbildung beschrieben.
-
1 illustriert Warteschlangen 110A, 110B, 110C von
ATM-Zellen in einem ATM-Schalter. Wenn der Schalter ein VC-Schalter
ist, dann wird eine separate Warteschlange 110 für Zellen
zugeordnet, die an einem bestimmten Port oder Subport empfangen
werden und einen bestimmten VCI und einen bestimmten VPI haben.
Somit werden auf einem IVC A empfangene Zellen 104A auf
die Warteschlange 110A geschrieben; auf einem IVC B empfangene
Zellen 104B werden auf die Warteschlange 110B geschrieben;
auf einem IVC C empfangene Zellen 104C werden. auf die
Warteschlange 110C geschrieben. Der Scheduler 120 plant
das Senden der Zellen.
-
Wenn
der Schalter ein VP-Schalter ist, dann wird eine separate Warteschlange 110 für Zellen
zugeordnet, die auf einem bestimmten Port oder Subport empfangen
werden und einen bestimmten VPI haben. Der Begriff „Pro-VC-Warteschlangenbildung" bezieht sich hierin
sowohl auf VC-Schalter mit einer separaten Warteschlange für jeden
IVC als auch auf VP-Schalter mit einer separaten Warteschlange für jeden
Eingangs-VP. Die nachfolgende Beschreibung von VC-Schaltern betrifft
VP-Schalter, wenn „virtueller
Kanal" durch „virtueller Pfad" ersetzt wird, ausgenommen
dann, wenn offensichtlich ist, dass ein solcher Austausch unangemessen ist.
-
In
einigen Ausgestaltungen kann eine ATM-Verbindung in einem framegestützten Betriebsmodus (FBOM)
oder einem Non-FBOM-(„Normal")-Modus arbeiten.
Zu jedem gegebenen Zeitpunkt können
einige Verbindungen FBOM-Verbindungen
und andere Verbindungen Normalverbindungen sein. Wir beschreiben
zunächst
den Normalmodus.
-
Der
Betrieb des ATM-Schalters ist in zwei Stufen unterteilt: eine Eingangsstufe
und eine Ausgangsstufe. In der Eingangsstufe werden Zellen 104 empfangen
und mit Warteschlangen 110 gemäß den Eingangs-VCs der Zellen
verknüpft.
Für jede
Zelle 104 speichert der ATM-Schalter eine Datenstruktur,
die in Anhang 1 am Ende der vorliegenden Beschreibung (vor den Ansprüchen) beschrieben
ist. Die Datenstruktur beinhaltet einen Nächste-Zelle-Zeiger NXT, der
zum Verknüpfen
der Zellen in der Warteschlange 110 verwendet wird.
-
2 illustriert Datenstrukturen,
die im ATM-Schalter für
eine einzelne Verbindung und somit für einen einzelnen IVC und eine
einzelne Warteschlange 110 verwendet werden. Jeder IVC
wird anhand einer jeweiligen IVC-Struktur 210 beschrieben.
Wir werden eine Struktur 210 zuweilen einfach als IVC bezeichnen. IVC-Felder sind in Anhang
2 beschrieben. In jedem IVC zeigt ein Schreibzeiger (Write Pointer – WP) auf
die letzte Zelle in der jeweiligen Warteschlange 110. Flag
F = 1 bedeutet eine FBOM-Verbindung; F = 0 bedeutet eine normale
Verbindung.
-
2 illustriert eine Multicast-Verbindung
mit drei virtuellen Ausgangskanälen
(OVCs) OVC0, OVC1 und
OVC2. Jeder OVC wird anhand einer jeweiligen
OVC-Struktur 220 beschrieben,
die wir einfach einen OVC nennen. Felder von OVC 220 sind
in Anhang 3 beschrieben. Wie darin und in 3 dargestellt ist, beinhaltet jeder OVC
Folgendes: 1) einen Lesezeiger (Read Pointer – RP), der auf die nächste auf
dem OVC zu übertragende
Zelle zeigt; 2) Feld NewHDR, das den VPI und VPC des neuen Headers
für den
OVC enthält;
und 3) die Nummer „IVC" des jeweiligen („Stamm-") IVC; diese Nummer
ist ein Zeiger auf IVC 210.
-
Anhang
4 illustriert Schritte, die zum Einrichten einer neuen Verbindung
ausgeführt
werden. Anhang 5 illustriert Schritte, die zum Hinzufügen einer
Partei (eines OVC) zu einer existierenden Verbindung durchgeführt werden.
Anhang 6 sowie 3 und 4 illustrieren Schritte,
die ausgeführt
werden, wenn eine neue Zelle empfangen wird. 5 illustriert Schritte, die zum Senden
einer Zelle ausgeführt
werden. 6 illustriert Schritte,
die ausgeführt
werden, um zu ermitteln, ob eine Zelle verworfen werden soll. Die
Anhänge
4–6 sowie die 3–6 werden
nachfolgend erörtert.
-
Zum
selben IVC gehörende
OVCs können
mit verschiedenen Ausgangsports oder Subports verbunden sein oder
auch nicht. Ein Subport ist ein logischer Port; eine Gruppe von
Subports nutzen denselben physischen Port gemeinsam.
-
Verschiedene
Ausgangs-VCs, die demselben IVC entsprechen, können sich gleichzeitig in unterschiedlichen
Zuständen
befinden. So kann beispielsweise ein OVC mit dem Senden aller Zellen
von einer jeweiligen Warteschlange 110 fertig sein (d.
h. die Warteschlange 110 kann für diesen OVC leer sein), während andere
OVCs weiterhin Zellen von der Warteschlange senden. Wenn eine Zelle 104 von
allen OVCs gesendet wurde, die dem IVC entsprechen, dann wird die
Zelle aus der Warteschlange genommen und der Speicher der Zelle
wird in einen Stapel von freien Zellenpuffern zurückgebracht.
In dem entsprechenden IVC wird der Zähler ECNT (die Zahl von Zellen
in der IVC-Warteschlange,
siehe Anhang 2) dekrementiert.
-
Wenn
eine neue Zelle (Zelle 104N in 7) auf dem IVC empfangen wird, dann wird
die Zelle am Ende der Warteschlange 110 verknüpft. ECNT
wird inkrementiert (Schritt 2b in Anhang 6). Die Lesezeiger der leeren
OVCs (OVC2 in 7)
werden so eingestellt, dass sie auf diese neue Zelle zeigen (Schritt
3a-2 in Anhang 6). OVC-Strukturen 220 für nicht
leere OVCs (OVC0 und OVC1 in 7) ändern sich nicht.
-
Wie
in Anhang 3 gezeigt, beinhaltet jeder OVC 220 Folgendes:
einen Flag L, der im FBOM anzeigt, ob die Zelle, auf die der RP
des OVC zeigt, die letzte Zelle eines Frame ist; und einen Flag
M, der anzeigt, ob die Zelle, auf die der RP zeigt, eine Marker-Zelle ist. Marker-Zellen
werden zum Entfernen von OVCs verwendet, wie nachfolgend beschrieben
wird. In einem in 25 gezeigten
ATM-Schalter werden die Felder RP, L und M jedes OVC in einem 20-Bit-Feld
gespeichert (siehe Eintrag „RP" in Tabelle 4 unten).
Dementsprechend hat jede Zelldatenstruktur 20 Bits, die den NXT
(Anhang 1) der Zelle sowie die Flags L und M der Zelle enthalten. L
gibt an, ob die nächste
Zelle die letzte Zelle in einem Frame ist. M gibt an, ob die nächste Zelle
eine Marker-Zelle ist. Wenn ein OVC eine Zelle überträgt, dann wird das 20-Bit-Feld
der Zelle (NXT, L, M) parallel auf das Feld des OVC (RP, L, M) kopiert.
-
Wenn
OVCs eines bestimmten IVC leer sind, dann werden sie zu einer verknüpften Liste 310 (8) verknüpft. Wir nennen die Liste 310 eine
IVC-Kette von OVCs. In 8 gehören die
OVCs OVC1, OVC2, OVC3 zum IVC X. Diese OVCs sind leer. Dies bedeutet,
dass entweder: (1) die jeweilige Warteschlange 110 leer
ist oder (2) Warteschlange 110 nicht leer ist, aber alle
Zellen in der Warteschlange von OVC1, OVC2 und OVC3 übertragen
wurden. Wenn die Warteschlange 110 nicht leer ist, dann
haben ein oder mehrere andere OVCs, die dem IVC X entsprechen, nicht
alle Zellen in der Warteschlange übertragen.
-
Leere
OVCs OVC1, OVC2, OVC3 werden mit ihren NXT-Feldern miteinander verknüpft (Anhang
3). Der Kettenkopfzeiger CHP (Anhang 2) des IVC zeigt auf den ersten
OVC (OVC1) in der Kette 310. Der Kettenendezeiger CTP des
IVC zeigt auf den letzten OVC (OVC3) in der Kette 310.
-
In
dem nachfolgend ausführlicher
beschriebenen Schalter von 25 handhabt
jeder PVC (Pro-VC-Controller) 1440 einen separaten Satz
von Ausgangsports und jeder PVC hat seine eigene Kette 310 für die OVCs,
die auf den von dem PVC gehandhabten Ausgangsports übertragen.
-
Wenn
eine Zelle auf dem IVC X in der Stufe von 8 empfangen wird, dann muss ein Zeiger
auf diese Zelle auf das RP-Feld jedes OVC in jeder Kette 310 geschrieben
werden, und die Flags L und M jedes OVC in jeder Kette 310 müssen auf
geeignete Werte gesetzt werden. Dieser Vorgang erfordert mehrere
Taktzyklen. Er wird daher im Hintergrund durchgeführt. Insbesondere
werden, wenn eine Zelle auf dem IVC X empfangen wird, nur der Zeiger
RP und die Flags L, M des ersten OVC (OVC1 in 8) in jeder Kette 310 in jedem PVC 1440 auf
entsprechende Werte gesetzt (Schritt 3a-2 in Anhang 6, Schritt 730 in 4). Gleichzeitig werden
alle OVCs von jeder Kette (OVC1, OVC2, OVC3 in 8) zum Ende der „Hintergrund"-(„BG")-Liste 410 bewegt
(9). Jeder PVC 1440 hat
eine einzelne Hintergrundliste 410 für alle IVCs. OVCs werden in
derselben Reihenfolge zur Liste 410 hinzugefügt, in der
sie sich in der jeweiligen Kette 310 befanden. In jedem
PVC 1440 zeigt ein Zeiger HBL (Kopf der Hintergrundliste)
auf den ersten OVC in der Liste 410 (OVCy in 9); ein Zeiger TBL (Ende
der Hintergrundliste) zeigt auf den letzten OVC (OVC3) in der Liste 410.
In jedem PVC 1440 kopiert die „Hintergrund"-Schaltung (nicht
dargestellt) das Feld (RP, L, M) des ersten OVC, der von der Kette 310 (OVC1
in 9) bewegt wurde,
auf die Felder (RP, L, M) aller OVCs, die dem ersten OVC in der Liste 410 folgen
und die ungültige
RPs (OVC2, OVC3 in 9)
haben. Wir nennen den Betrieb der Hintergrundschaltung in jedem
PVC 1440 einen „Background-Job".
-
In
einem framegestützten
Betriebsmodus ist ein OVC in einer Kette 310, wenn der
OVC alle Zellen in der Warteschlange 110 übertragen
hat und wenn die einzigen Zellen, die nicht von dem OVC übertragen
wurden, Zellen eines Teilframe sind (d. h. ein Frame, der nicht
vollständig
auf dem jeweiligen IVC empfangen wurde). Wenn der OVC einen Vollframe
zum Senden erhält,
wird der OVC zur jeweiligen Liste 410 verlegt.
-
Jede
IVC-Struktur 210 hat einen Flag C (Kette bereit) in jedem
PVC 1440, um anzuzeigen, ob die Kette 310 des
IVC in dem PVC nicht leer ist (siehe Eintrag „TP" in Tabelle 4 unten). Anhang 2 sowie
die 8 und 9 zeigen nur einen Flag C
(man beachte, einige Schalter haben nur einen PVC 1440).
In 8 ist C = 1 (Kette 310 ist
nicht leer), in 9 ist
C = 0.
-
Jede
IVC-Struktur 210 hat einen Flag R in jedem PVC 1440,
um anzuzeigen, ob der Lesezeiger RP des ersten OVC in der jeweiligen
Kette 310 gültig
ist. Anhang 2 sowie die 8 und 9 zeigen nur einen Flag R.
In 8 ist OVC1 leer und
IVC X hat daher R = 0 (RP ungültig).
In 9 ist Kette 310 leer
und daher ist R = x („gleichgültig").
-
Ebenso
hat jede OVC-Struktur 220 einen Flag R im jeweiligen PVC 1440,
um anzuzeigen, ob der Lesezeiger RP[NXT] des nächsten OVC gültig ist
(siehe Anhang 3 und Tabelle 4, Eintrag IVC/NXT). Also gilt, solange
der NXT-Zeiger von OVC1 auf OVC2 zeigt, ist der R-Flag von OVC1
1, wenn RP von OVC2 gültig
ist. In 8 sind OVC2
und OVC3 leer und daher sind die R-Flags in OVC1, OVC2 0. Der R-Flag
von OVC3 ist „x" („gleichgültig").
-
Jede
Hintergrundschaltung durchläuft
die jeweilige Liste 410 und führt den folgenden Vorgang für jeden
OVC in der Liste durch:
Wenn der RP des OVC gültig ist,
dann
- – temp_RP_L_M
= RP, L, M des OVC
- – temp_R
= Flag R des OVC
- – OVC
aus Hintergrundliste entfernen und OVC zu Scheduler übertragen
(der Transfer PVC → SCH
in 27 wie unten beschrieben)
sonst (RP ungültig)
- – RP,
L, M des OVC = temp_RP_L_M
- – Flag
R von OVC = temp_R
- – OVC
aus Hintergrundliste entfernen und OVC zu Scheduler übertragen
(PVC → SCH
in 27).
-
Oben
sind temp_RP_L_M und temp_R Speicherpositionen in der Hintergrundschaltung
in jedem PVC 1440.
-
Jede
Zelle 104 hat ein Kopienzahlenfeld CCNT (Anhang 1), das
die Zahl von OVCs speichert, zu der die Zelle übertragen werden soll. Wenn
eine Zelle empfangen wird, dann wird ihre Zahl CCNT auf die Zahl OCNT
von OVCs initialisiert, die zum IVC gehören (Anhang 6, Schritt 1b).
Diese Zahl OCNT (Ausgangszähler) wird
im entsprechenden IVC 210 gespeichert (Anhang 2; siehe
auch Anhang 4, Schritt 1a). Jedes Mal, wenn eine Zelle übertragen
wird, wird ihre CCNT dekrementiert. Wenn die CCNT null erreicht,
dann wird der Zellenspeicher freigegeben.
-
Zum
Hinzufügen
eines neuen OVC zu einer Multicast-Verbindung werden die folgenden
Schritte ausgeführt
(Anhang 5):
- 1. Ein neuer OVC wird erzeugt und
mit der Kette 310 des entsprechenden IVC 210 (Anhang
5, Schritte 1a, 1b) im jeweiligen PVC 1440 verknüpft.
- 2. Die Ausgangszahl OCNT im IVC wird inkrementiert (Anhang 5,
Schritt 1c).
-
In 10 wurde OVC2 hinter OVC0
und OVC1 angehängt.
Die Zellen 104.1, 104.2 in Warteschlange 110 kamen
vor dem Hinzufügen
von OVC2 an. Ihre CCNT-Felder
waren unverändert,
als OVC2 hinzugefügt wurde,
und diese Zellen werden nicht auf OVC2 übertragen. Als OVC2 hinzugefügt wurde,
war sein RP ungültig.
Zelle 104.3 ist die erste Zelle, die nach dem Hinzufügen von
OVC2 ankam. Zelle 104.3 erhält die aktualisierte Kopienzahl
CCNT = 3.
-
Das
Verknüpfen
des neuen OVC mit der IVC-Kette und das Inkrementieren der Ausgangszahl
OCNT des IVC erfolgt als atomarer Vorgang vor dem Empfangen einer
neuen Zelle (Zelle 104.3 in 10).
-
11 illustriert das Entfernen
von OVC2 von einer Multicast-Verbindung. Als ein Befehl zum Entfernen
von OVC von der CPU einging, betrug die OVC-Zahl OCNT n, und die
Zellen 104.1, 104.2 waren bereits empfangen, aber
noch nicht von einem OVC übertragen
worden. Diese Zellen sind die letzten Zellen, die auf dem OVC2 übertragen
werden, bevor OVC2 entfernt wird. Wenn ein Befehl zum Entfernen
von OVC2 empfangen wird, dann werden die folgenden Aktionen durchgeführt:
- 1. Im OVC2 wird das Löschbit D (Anhang 3) gesetzt.
- 2. Eine „Marker"-Zelle 104M wird
mit der IVC-Warteschlange verknüpft.
In der vorherigen Zelle 104.2 wird Flag M gesetzt (Anhang
1), um anzuzeigen, dass die nächste
Zelle eine Marker-Zelle ist. Die Marker-Zelle 104M wird
nicht von einem OVC übertragen.
- 3. Im IVC wird OCNT dekrementiert.
-
Zelle 104.3 wird
nach der Marker-Zelle empfangen, und in Zelle 104.3 wird
CCNT auf den neuen OCNT-Wert von n-1 initialisiert. In der Marker-Zelle 104M und
den vorhergehenden Zellen wurde CCNT auf den alten OCNT-Wert initialisiert.
-
Wenn
der OVC2 die Marker-Zelle 104M erreicht, dann wird der
OVC2 aus der Liste der aktiven OVCs herausgenommen (Schritt 970 in 5).
-
Ein
Befehl zum Entfernen von mehr als einem OVC wird ebenso verarbeitet.
-
Betriebsmodus auf Frame-Basis
(FBOM)
-
In
diesem Modus wird ein ganzer Frame von Zellen von einem IVC auf
den Zielport oder Subport ohne intervenierende Zellen von anderen
IVCs oder Frames übertragen.
In einigen Ausgestaltungen wird FBOM zum Multiplexieren mehrerer
Benutzer-ATM-Verbindungen auf dieselbe ATM-Verbindung verwendet.
Das Multiplexieren kann sogar mit Benutzerschnittstellen wie AAL-5
erfolgen, die es nicht erfordern, dass jede Zelle die Position der
Zelle in einem Frame oder auch nur die Tatsache identifiziert, dass
die Zelle zu dem Frame gehört. Die
Position der Zelle in einem Frame und die Tatsache, dass die Zelle
zu dem Frame gehört,
sind deshalb bekannt, weil die Zellen eines Frame auf einem Ausgangsport
und Subport in der Reihenfolge übertragen
werden, in der sie in dem Frame erscheinen, ohne intervenierende
Zellen. AAL-5 (ATM Adaptation Layer 5) wird in den nachfolgenden
Publikationen beschrieben, die hierin durch Bezugnahme eingeschlossen
sind: H. Dutton, P. Lenhard „Asynchronous
Transfer Mode (ATM), Technical Overview" (2. Ausgabe, Oktober 1995); W. A. Flanagan, „ATM User's Guide" (1. Ausgabe, April
1994); O. Kyas „ATM
networks" (1995).
In Abwesenheit von FBOM werden AAL-5 Verbindungen nicht auf derselben
ATM-Verbindung multiplexiert.
-
12 illustriert das Multiplexieren
von verschiedenen Verbindungen auf eine ATM-Verbindung zum Verbinden
von Ethernet-Segmenten 2010.1–2010.5 durch ein
ATM-Netz. Verkehr von Ethernet-Segmenten 2010.1, 2010.2, 2010.3, 2010.4 zu
dem Ethernet-Segment 2010.5 läuft wie folgt ab. Jedes Segment 2010.1–2010.4 sendet
Ethernet-Pakete zur jeweiligen Ethernet-Schnittstellenschaltung 2014.1–2014.4.
Jede Schaltung 2014.1–2014.4 konvertiert
jedes Ethernet-Paket in einen Frame von einer oder mehreren ATM-Zellen.
Die Ethernet-Schnittstellenschaltung 2014.3 sendet ihre
Frames zu einem Port des ATM-Schalters 2040B auf einer
virtuellen Verbindung VC1. Die Schaltung 2014.2 sendet
ihre Frames zu einem anderen Port des Schalters 2040B auf
einer virtuellen Verbindung VC2. Der Schalter 2040B setzt
die Zellen von jeder Schaltung 2014.3, 2014.2 in
eine separate Warteschlange. Da diese Zellen denselben Zielort haben,
sendet sie der Schalter 2040B auf derselben virtuellen
Verbindung VC3 zu einem Port des ATM-Schalters 2040C. Die
Zellen werden in einem framegestützten
Betriebsmodus übertragen,
und daher werden keine unterschiedlichen Frames gemischt.
-
Frames
von der Ethernet-Schnittstellenschaltung 2014.1 gehen durch
den ATM-Schalter 2040A zu
einem anderen Port des ATM-Schalters 2040C und kommen am
Schalter 2040C auf einer anderen virtuellen Verbindung
VC4 an. Der Schalter 2040C setzt die auf den Verbindungen
VC3, VC4 empfangenen Zellen in verschiedene Warteschlangen, sendet
sie aber auf derselben virtuellen Verbindung VC5, da die Zellen
in beiden Warteschlangen denselben Zielort haben. Die Zellen aus
beiden Warteschlangen werden im Frame-Modus übertragen und daher werden
die Frames nicht gemischt. Die virtuelle Verbindung VC5 wird mit
einem Port des ATM-Schalters 2040D verbunden. Die virtuelle
Verbindung VC6 von der Ethernet-Schnittstellenschaltung 2014.4 ist
mit einem anderen Port des Schalters 2040D verbunden. Die
auf der Verbindung VC5, VC6 ankommenden Zellen werden in verschiedene
Warteschlangen gesetzt, aber auf derselben Verbindung VC7 im Frame-Modus übertragen.
Die Ethernet- Schnittstellenschaltung 2014.5 empfängt die
Zellen auf der Verbindung VC7, setzt jeden Frame zu einem Ethernet-Paket
zusammen und sendet das Paket zum Ethernet-Segment 2010.5.
-
Da
jeder Frame ohne intervenierende Zellen von einem anderen Frame
ankommt, ist das Zusammensetzen durch die Schaltung 2014.5 eine
einfache Sache. Ferner erfordert die Schaltung 2014.5 keine
Speicherkapazität
zum Speichern von Teilframes, wie dies der Fall wäre, wenn
die Frames gemischt ankämen.
Die Kosten für
die Schaltung 2014.5 werden daher reduziert.
-
In
einigen Ausgestaltungen verwenden Schnittstellenschaltungen 2014 die
ATM-Adaptation-Layer AAL-5.
FBOM lässt
es zu, dass verschiedene AAL-5 Verbindungen und verschiedene ATM-Verbindungen
auf dieselbe ATM-Verbindung multiplexiert werden (z. B. werden VC4,
VC3 auf VC5 multiplexiert), obwohl AAL-5 nicht in jeden Frame Informationen
einfügt,
wie z. B. MID in AAL-4/4, die die Position der Zelle in einem Frame oder
auch nur die Tatsache angeben würde,
dass die Zelle zu dem Frame gehört.
Die Zahl der virtuellen Verbindungen wird daher selbst bei Verwendung
von AAL-5 reduziert.
-
Der
FBOM-Betrieb eines ATM-Schalters ist dem Normalmodusbetrieb ähnlich.
In einigen Ausgestaltungen geschieht jedoch Folgendes:
- 1. Wenn ein OVC hinzugefügt
wird, dann beginnt der OVC mit der Übertragung auf einer Frame-Grenze.
- 2. Parteien werden von einer Multicast-Verbindung auf einer
Frame-Grenze entfernt. Wenn eine Anforderung zum Entfernen eines
OVC ankam, als der IVC einen Teilframe hatte, dann überträgt der OVC
den Teilframe; der OVC überträgt jedoch
auch die Marker-Zelle nach dem Teilframe, um dem Zielort anzuzeigen, dass
der Teilframe verworfen werden soll.
-
Im
FBOM kann sich ein IVC in einem der beiden folgenden Zustände befinden
(13), wie durch den Flag
P des IVC angedeutet wird (Anhang 2):
-
a. Zustand Vollframe/leer
(P = 0)
-
In
diesem Zustand ist die IVC-Warteschlange 110 leer oder
besteht aus einem oder mehreren Vollframes.
-
b. Teilframe (P = 1)
-
In
diesem Zustand ist der letzte Frame im IVC noch nicht vollständig empfangen.
-
Im
Normalmodus ist P immer 0.
-
In 13 zeigen die Zahlen 1 und
2 (im Kreis) die folgenden Bedingungen an:
- 1.
Eine Zelle wird empfangen, die nicht die letzte Zelle eines Frame
ist;
- 2. Die letzte Zelle eines Frame wird empfangen.
-
Jeder
IVC hat einen Endezeiger TP (Anhang 2). Im FBOM zeigt TP auf die
letzte Zelle des letzten Vollframe in der jeweiligen Warteschlange 110.
Somit gehören
in 14 die Zellen 104-0,1 und 104-0,2 zu
Frame 0; Zelle 104-1,1 gehört zu Frame 1. TP zeigt auf
Zelle 104-0,2, die die letzte Zelle in Frame 0 ist.
-
Im
Nicht-FBOM ist TP = WP.
-
Wenn
ein OVC zur Ausgabe gewählt
wird, dann wählt
der Scheduler 120 denselben OVC für den Port oder Subport des
OVC, bis ein gesamter Frame übertragen
ist. Wenn die Adresse der übertragenen
Zelle gleich TP wird (5,
Schritt 850), dann wird der OVC leer und kehrt zur jeweiligen
Kette 310 zurück
(Schritte 870, 874) und wartet auf den Empfang
eines weiteren Vollframe.
-
Wenn
eine neue Zelle im FBOM empfangen wird, dann wird der Flag L (Anhang
1) der vorherigen Zelle (wenn die vorherige Zelle abgeht) auf einen
Wert gesetzt, der anzeigt, ob die neue Zelle die letzte Zelle in
einem Frame ist (siehe Anhang 6, Schritt 1a). Ebenso wird, wenn
die Kette 310 des jeweiligen IVC nicht leer ist, der Flag
L des ersten OVC in jeder nicht leeren Kette 310 ebenfalls
auf einen Wert gesetzt, der anzeigt, ob die neue Zelle die letzte
in einem Frame ist.
-
3 illustriert Vorgänge, die
von jedem PVC 1440 durchgeführt werden, um die Flags P
und Zeiger TP eines IVC zu aktualisieren, wenn eine Zelle empfangen
wird. Jeder PVC 1440 führt
eine Kopie von Flag P und Zeiger TP. In den 3–6 bedeutet ein nach unten
zeigendes Dreieck eine Beendigung. „==" bedeutet eine Gleichheitsbedingung; „=" bedeutet eine Zuordnung
(gemäß Syntax
der Programmiersprache C).
-
Beim
Einrichten der Verbindung wurden beide P-Flags auf 0 gesetzt (Anhang
4, Schritt 1h). Wenn F = 0 ist (3,
Schritt 510; jeder PVC 1440 hat eine Kopie von
Flag F), dann werden die folgenden Schritte ausgeführt:
- 1. In jedem PVC 1440 holt TP die Zelladresse
(Schritt 520; siehe auch Schritt 2d in Anhang
6).
- 2. Jeder PVC 1440 prüft seinen IVC-Flag C in Schritt 530.
Wenn ein PVC keine OVCs für
den IVC hat, dann ist Flag C des PVC = 0 für den IVC (C wird beim Einrichten
der Verbindung auf 0 gesetzt). In Schritt 540 testet jeder
PVC 1440 seinen IVC-Flag H (Anhang 2 und Tabelle 4, Eintrag „TP"). Flag H wurde auf
1 gesetzt, wenn der Übergang
von leeren OVCs in dem Bereitschaftszustand gesperrt werden sollte
(z. B. wenn ein neuer Header eines leeren OVC noch nicht bekannt
war). Wenn C = 1 und H = 0 ist, dann wird C auf 0 gesetzt (Schritt 550)
und die Kette 310 wird aus der Hintergrundliste 410 genommen
(Schritt 560) (siehe auch Schritt 2e in Anhang 6).
-
Wenn
Schritt 510 F = 1 ist und der PTI-Flag L der Zelle (Bit
2) gesetzt ist (die Zelle ist die letzte in einem Frame; Schritt 570),
dann wird P zurückgesetzt
(Schritt 580 und Anhang 6, Schritt 2c-1). Schritt 520 wird
ausgeführt
und die Schritte 530–560 werden
wie oben beschrieben nach Bedarf ausgeführt.
-
Wenn
in Schritt 510 F = 1 ist und die Zelle nicht die letzte
in einem Frame ist (Schritt 570) und P = 0 (Schritt 590)
ist, dann wird P auf 1 gesetzt (Schritt 610 und Anhang
6, Schritt 2c-2).
-
In
den 3–6 werden die Schritte nicht
unbedingt in der gezeigten oder beschriebenen Reihenfolge durchgeführt. So
wird beispielsweise in einigen Ausgestaltungen Schritt 520 parallel
zu den Schritten 530–560 ausgeführt. In
einigen Ausgestaltungen werden die Schritte 550 und 560 parallel
ausgeführt.
-
4 illustriert das Aktualisieren
der OVC-Lesezeiger, wenn eine Zelle empfangen wird. In jedem PVC 1440 (25) wird, wenn der IVC-Flag
C = 1 (Schritt 700) und der IVC-Flag R = 0 (Schritt 710)
ist:
- 1) R des IVC auf 1 gesetzt (Schritt 720 und
Anhang 6, Schritt 3a-1), und
- 2) RP des OVC, auf den CHP zeigt, so gesetzt, dass er auf die
Zelle zeigt (Schritt 730 und Anhang 6, Schritt 3a-2).
-
Zu
jedem Zeitpunkt ist eine OVC-Struktur 220 in einem von
vier Zuständen
wie in 15 gezeigt. Die Zustände lauten
wie folgt:
Nicht definiert – die OVC-Datenstruktur gehört zu keiner
Verbindung. Die Struktur kann definiert und einem virtuellen Ausgangskanal
zugeordnet werden.
Leer – der
OVC ist definiert und mit seinem Stamm-IVC in der Kette 310 verknüpft. Es
gibt für
den OVC jedoch keinen Vollframe zu übertragen. In einer Nicht-FBOM-Verbindung gibt
es für
den OVC keine Zelle zu übertragen.
Bereit – der OVC
ist in Liste 410 für
die Übertragung
zum Scheduler 120 bereit. Im FBOM gibt es für den OVC wenigstens
einen Vollframe zu übertragen.
Im Nicht-FBOM gibt
es für
den IVC wenigstens eine Zelle zu übertragen.
Aktiv – der OVC
ist nicht mehr in der BG-Liste und befindet sich unter Scheduler-Steuerung.
Jedes Mal, wenn der OVC für
eine Übertragung
geplant ist, emittiert der OVC eine Zelle aus der IVC-Warteschlange.
-
Die
Zustandsübergänge werden
in der folgenden Tabelle 1 beschrieben. Die erste Spalte in Tabelle
1 zeigt die Bedingungsnummern, die in 15 in
einem Kreis stehen.
-
-
Beim
ersten Einrichten der Verbindung ist der IVC leer, daher sind WP
und TP undefiniert (ungültig). In
einem PVC 1440 ist das C-Bit (Kette ist bereit) gesetzt
(Schritt 1f), da die Verbindung mit wenigstens einem OVC in der
Kette 310 eingerichtet wurde. In diesem PVC 1440 zeigen
CHP und CTP auf den OVC (Anhang 4, Schritt 1d). Der OVC hat einen
Zeiger auf seinen Stamm-IVC (Schritt 2b). In dem anderen PVC 1440 wird
Flag C zurückgesetzt.
Diese Einrichtung erfolgt dann, wenn ein Befehl „PVC-Setup connection" ausgeführt wird.
-
Wenn
die erste Zelle 104 auf dem IVC ankommt, dann wird der
IVC-Schreibzeiger
so aktualisiert, dass er auf die neue Zelle zeigt (Anhang 6, Schritt
2a). Dann wird der OVC-Lesezeiger so aktualisiert, dass er auf die
neue Zelle zeigt (Schritt 3a-2), und der IVC-Flag R wird im jeweiligen
PVC 1440 gesetzt (Schritt 3a-1).
-
5 illustriert das Übertragen
einer Zelle auf einem OVC. Bei der Durchführung der Vorgänge von 5 handhabt der PVC 1440 den
OVC, es sei denn, dies ist anders angegeben. In Schritt 810 empfangen die
Felder RP, L, M des OVC NXT, L, M der Zelle. Der vorherige Wert
des Flag M des OVC wird vor Schritt 810 gespeichert und
in Schritt 820 geprüft.
Wenn M = 0 ist, dann sind die durchgeführten Schritte vom Wert des OVC-Flag
A abhängig
(Schritt 830). Flag A wird im FBOM verwendet, um sicherzustellen,
dass die Übertragung
auf einem neuen OVC auf der Frame-Grenze beginnt, wenn der OVC erstmalig
hinzugefügt
wird. Spezifischer ausgedrückt,
beim ersten Hinzufügen
des OVC war Flag A auf 1 oder 0 gesetzt, je nach dem, ob die Verbindung
im FBOM war und der IVC einen Teilframe hatte (Anhang 5, Schritt
2c). Wenn der IVC einen Teilframe hatte (P = 1), dann wurde A auf
1 gesetzt. In diesem Fall überträgt der Scheduler 120 Zellen
auf dem OVC erst dann, wenn der RP des OVC die letzte Zelle im aktuellen
Frame passiert hat. Die Übertragung
beginnt mit der ersten Zelle des nächsten Frame. Wenn P = 0 ist,
wenn OVC hinzugefügt
wurde, dann wurde A auf 0 gesetzt.
-
Im
normalen Modus ist A immer 0.
-
Wenn
in Schritt 830 von 5 A
= 0 ist, dann wird die Zelle gesendet (Schritt 840). Insbesondere
sendet der PVC 1440 die Zelladresse und den VPI/VCI des
neuen Headers der Zelle zur SIF 1420 (25) zur Übertragung, wie in der unteren
Hälfte
von 27 dargestellt ist.
Wenn die Zelladresse gleich TP ist (Schritt 850), dann
wird der OVC leer. Wenn in dem IVC P = 0 ist (Schritt 860),
dann wird R des IVC auf 0 gesetzt (Schritt 870). Ansonsten
wird R auf 1 gesetzt (Schritt 874). Der OVC wird zur jeweiligen
Kette 310 bewegt (Schritt 880).
-
Wenn
A = 0 ist (Schritt 830), dann wird die Zelle fallen gelassen
(Schritt 890). Dies bedeutet, dass der PVC 1440 die
Adresse der Zelle und einen NULL-Header (VPI = VCI = 0) zur SIF 1420 überträgt und somit wird
die Zelle nicht übertragen.
Die CCNT der Zelle wird jedoch von der SIF 1420 dekrementiert.
Wenn der vorherige Wert des Flag L des OVC 1 ist (Schritt 900;
L wurde vor Schritt 820 gespeichert), dann wird Flag A des
OVC auf 0 gesetzt (Schritt 910). Schritt 850 und
geeignete der Schritte 860–880 werden wie oben
beschrieben ausgeführt.
-
Wenn
in Schritt 820 M = 1 ist, dann ist die Zelle eine Marker-Zelle.
Wenn Flag D des OVC = 0 ist (Schritt 920), dann wird die
Zelle fallen gelassen (Schritt 930). Schritt 850 und
geeignete der Schritte 860–880 werden wie oben
beschrieben ausgeführt.
-
Wenn
in Schritt 920 D = 1 ist, dann muss der OVC entfernt werden.
Wenn Flag F des IVC = 0 ist (Schritt 940), dann wird die
Zelle fallen gelassen (Schritt 950); ansonsten wird die
Zelle (Schritt 960) übertragen,
mit einer Nutzlast von nur Nullen und einem PTI-Feld, das die letzte
Zelle eines Frame anzeigt. Diese Zelle ist die letzte auf dem OVC
gesendete Zelle. Diese Zelle kann einem Teilframe folgen. Wenn der
Zielort diese Zelle empfängt,
dann verwirft der Zielort den Teilframe aufgrund eines Längenfehlers
(und möglicherweise
eines CRC-Fehlers).
-
Die
CCNT der Marker-Zelle wird in Schritt 950 oder 960 dekrementiert
(von der SIF 1420).
-
In
Schritt 970 wird der OVC entfernt.
-
Verbindung hinzufügen
-
Die
Möglichkeit,
eine Verbindung nebenbei hinzuzufügen, ist ein wertvolles Merkmal.
Das Hinzufügen einer
Verbindung ist ein atomarer Vorgang, der kurz nach der Ausgabe eines
Befehls zum Hinzufügen
einer Verbindung ausgeführt
wird. Wir warten nicht, bis der gesamte Frame empfangen ist, wenn
wir eine Verbindung hinzufügen.
-
In 16 werden OVCn3 und
OVCn4 in dieser Reihenfolge hinzugefügt, wenn
die folgenden Bedingungen erfüllt
sind:
- 1) die IVC-Warteschlange besteht aus:
a) Zelle 1.4 von Frame 1; b) Zellen 2.0, 2.1, 2.2 eines Vollframe
2; und c) Zellen 3.0, 3.1 eines Teilframe 3.
- 2) OVCn0 ist leer und wartet auf die
Ankunft der letzten Zelle von Frame 3. Sein Lesezeiger zeigt auf
Zelle 3.0, die die nächste
Zelle ist, die von diesem OVC übertragen
wird. Somit ist, auch wenn OVCn0 leer ist,
sein RP gültig.
- 3) OVCn1 ist aktiv und überträgt Frame
2. Sein Lesezeiger zeigt auf Zelle 2.1, die die nächste Zelle
ist, die von diesem OVC übertragen
wird.
- 4) OVCn2 ist aktiv und überträgt Frame
1. Sein Lesezeiger zeigt auf Zelle 1.4.
-
In 16 übertragen OVCn3,
OVCn4 auf Ports, die vom selben PVC 1440 (25) gehandhabt werden, und
daher werden die beiden OVCs derselben Kette 310 hinzugefügt.
-
Die
neuen OVCs werden am Kopf der IVC-Kette 310 hinzugefügt, und
der IVC-Flag R wird
im jeweiligen PVC 1440 zurückgesetzt. In 16 sind ungültige Felder schattiert. So
sind die RP-Felder von OVCn3, OVCn4 schattiert.
-
In
OVCn3 und OVCn4 sind
die A-Bits gesetzt.
-
Wenn
eine neue Zelle 3.2 ankommt (17),
dann wird der RP des obersten OVCn4 der
Kette 310 so gesetzt, dass er auf die neue Zelle zeigt,
und der IVC-Flag R wird im jeweiligen PVC 1440 gesetzt.
-
Wenn
die letzte Zelle von Frame 3 ankommt, dann wird der Endezeiger des
IVC in jedem PVC so gesetzt, dass er auf diese Zelle zeigt, und
die gesamte IVC-Kette 310 wird mit der Hintergrundliste 410 im
jeweiligen PVC 1440 verknüpft. Beim Durchgehen durch
die Liste setzt der Background-Job den Lesezeiger von OVCn3 so, dass er gleich dem Lesezeiger des
OVCn4 ist.
-
Beginnend
mit Zelle 3.2, haben alle Zellen eine Kopiezahl CCNT = 5 (vorherige
Zellen haben eine Kopienzahl CCNT, die auf 3 initialisiert ist).
-
Verbindung
fallenlassen
-
Um
eine Verbindung zu entfernen, werden zwei Schritte ausgeführt:
- 1. Der OVC wird zum Fallenlassen markiert (D-Bit
wird im jeweiligen PVC 1440 gesetzt).
- 2. Die CPU sendet eine Marker-Zelle, die in die jeweilige Warteschlange 110 gesetzt
wird. Diese Marker-Zelle ist als normale Zelle aufgebaut, ihre Nutzlast
ist nur Nullen und ein PTI-Feld, das die letzte Zelle eines Frame
anzeigt. Die Nutzlast der Marker-Zelle und das PTI-Feld werden in
einem Speicher (nicht dargestellt) gespeichert, der zum Speichern
von Nutzlasten und Headern von eingehenden Zellen verwendet wird.
-
In 18 ist OVCn0 leer
und wartet auf den Empfang von Frame 3. OVCn1 und
OVCn2 übertragen
gerade Frame 2 bzw. 1. Die D-Bits von OVCn1 und
OVCn0 sind gesetzt, was bedeutet, dass diese
OVCs zum Entfernen bestimmt sind. Die Marker-Zelle 104M ist
hinter der Zelle 3.1 verknüpft.
Die Kopienzahl CCNT der Marker-Zelle ist wie alle vorherigen Zellen
auf 3 initialisiert. Die Kopienzahl der ersten Nicht-Marker-Zelle
(nicht dargestellt), die hinter der Marker-Zelle ankommt, ist auf
CCNT = 1 gesetzt, d. h. diese Zelle wird nur von einem OVC übertragen.
-
Wenn
ein Befehl zum Empfangen von OVCn0, OVCn1 empfangen wurde, nachdem OVCn0 Zelle
2.2 übertragen
hatte, aber bevor die erste Zelle 3.0 von Frame 3 empfangen wurde,
dann würde
die Marker-Zelle als die erste Zelle eines Teilframe in die Warteschlange
gesetzt. Insbesondere würde
der L-Flag von Zelle 2.2 und der P-Flag des IVC zurückgesetzt.
-
19 zeigt einen Stapel von
entfernten OVC-Strukturen in einem PVC 1440. Der Zeiger
OSP zeigt auf den Anfang dieses Stapels. Jedes Mal, wenn ein neuer
OVC entfernt wird (5,
Schritt 970), dann wird er am Anfang des Stapels hinzugefügt. Der
letzte OVC, OVCk, in dem Stapel hat NXT
= 0.
-
Wenn
die Schalter-CPU (wie z. B. die CPU 1414 in 25) einen Befehl zum Entfernen
eines OVC ausgibt, dann markiert die CPU den OVC in der Datenbank
der CPU als zum Entfernen bestimmt. Es kann jedoch einige Zeit vergehen,
bevor der OVC die Marker-Zelle überträgt und sie
tatsächlich
entfernt und auf OSP-Stapel gesetzt wird.
-
Die
CPU wird nicht informiert, wenn der OVC tatsächlich entfernt wird. Die CPU
liest die OSP-Stapel in beiden PVCs und markiert die entfernten
OVCs in der CPU-Datenbank.
Wenn die CPU einen OVC zum Hinzufügen einer Verbindung braucht,
dann holt die CPU einen neuen OVC aus der Datenbank der CPU, und
somit braucht die CPU die OSP-Stapel zu diesem Zeitpunkt nicht zu
lesen. Infolgedessen ist das Hinzufügen einer Verbindung ein schneller
Vorgang.
-
Zum
Lesen des Stapels von 19 liest
die Schalter-CPU den OSP, um den obersten OVC im Stapel zu holen.
Wenn die CPU OSP liest, dann wird OSP auf null gesetzt. Da die CPU
einen Zeiger auf den ersten OVC, OVCn1,
hat, verlangt die CPU nicht, dass OSP den Rest des Stapels durchquert.
Das Ende des Stapels wird erfasst, weil in OVCk NXT
= 0 ist.
-
Inzwischen
wird, wenn ein OVC entfernt wird, OSP so gesetzt, dass er auf diesen
OVC zeigt. So wird ein neuer Stapel von entfernten OVCs gebildet.
Neu entfernte OVCs werden zu diesem neuen Stapel hinzugefügt. Wenn
der alter Stapel (der Stapel von 19)
verbraucht ist, dann liest die CPU OSP, um einen OVC vom neuen Stapel
zu holen. Diese Stapelmanagementtechnik hat die folgenden Vorteile:
(1) die CPU braucht OSP nicht jedes Mal zu lesen, wenn der Stapel
gepoppt werden soll; (2) das Nullen von OSP, wenn OSP gelesen wird,
ist einfacher als das Setzen des OSP so, dass er auf einen OVC in
dem Stapel zeigt.
-
Schwellenwert-
und Paketverwerfungsfunktion
-
Diese
Funktion handhabt Überlastungen
im ATM-Schalter. Die Funktion bestimmt insbesondere die folgenden
Schwellenwerte für
jede Warteschlange 110:
- 1. Einen Markierungsschwellenwert.
Wenn eine Zelle auf einem IVC empfangen wird, wenn die ECNT des IVC
den Markierungsschwellenwert überschreitet,
dann werden die auf dem IVC empfangenen Zellen mit einer Überlastungsanzeige übertragen
(d. h. PTI-Bit 1 ist gesetzt).
- 2. Ein Verwerfungsschwellenwert (in einigen Ausgestaltungen über dem
Markierungsschwellenwert). Wenn eine Zelle empfangen wird, wenn
die ECNT den Verwerfungsschwellenwert überschreitet, dann wird die Zelle
wie folgt behandelt:
- a. Im FBOM (oder bei Bedarf im Normalmodus mit AAL-5) wird die „Early
Packed Discard" Richtlinie
(EPD) angewendet. Dies bedeutet, dass, wenn die Zelle die erste
Zelle eines Frame ist, der gesamte Frame verworfen wird. Wenn die
Zelle nicht die erste Zelle in einem Frame ist und eine vorherige
Zelle in dem Frame nicht verworfen wurde, dann wird die Zelle nicht
verworfen. Die EPD-Zustandsmaschine wird nachfolgend in Verbindung
mit 23 beschrieben.
- b. Im Normalmodus wird, wenn EPD nicht angewendet wird, die
Zelle verworfen, wenn das CLP-Feld im Zell-Header 1 ist. Wenn CLP
= 0 ist, dann wird die Zelle nicht verworfen.
- 3. Eine Warteschlangengrenze (in einigen Ausgestaltungen oberhalb
des Verwerfungsschwellenwertes). Wenn eine Zelle empfangen wird,
wenn die ECNT die Warteschlangengrenze überschreitet, dann wird die Zelle
verworfen.
-
Der
Markierungsschwellenwert wird wie folgt benutzt. Jede IVC-Struktur
hat einen Flag I (Anhang 2), der anzeigt, ob die EFCI-Markierung
auf dem IVC freigegeben ist (EFCI bedeutet Explicit Forward Congestion Indication).
Jede IVC-Struktur hat auch einen Forward Congestion Notification
Flag N. Wenn eine Zelle auf dem IVC empfangen wird, dann werden
die folgenden Schritte von der SIF 1420 ausgeführt:
- 1. Wenn das PTI-Bit 1 der Zelle (Überlastungsanzeige)
gesetzt ist, dann wird der IVC-Flag N gesetzt.
- 2. Wenn der IVC-Flag I gesetzt ist (d. h. wenn die EFCI-Markierung
aktiviert ist) und die IVC-Zahl ECNT den Markierungsschwellenwert überschreitet,
dann wird der IVC-Flag N gesetzt.
- 3. In allen anderen Fällen,
d. h. wenn das PTI-Bit 1 der Zelle zurückgesetzt wird und entweder
EFCI gesperrt ist oder ECNT den Markierungsschwellenwert nicht überschreitet,
wird der Flag N zurückgesetzt.
-
In
der Ausgangsstufe wird, wenn der IVC-Flag N gesetzt ist, wenn eine
Zelle, die zu dem IVC gehört, für die Übertragung
geplant ist, die Zelle mit gesetztem PTI-Bit 1 übertragen (d. h. mit Überlastungsanzeige).
-
Die
Schwellenwerte variieren dynamisch je nach dem Überlastungszustand des Schalters.
In einigen Ausgestaltungen werden die Schwellenwerte wie folgt gesetzt.
Jeder Eingangs-VC gehört
zu einer von 16 Klassen, wie durch das IVC-Feld CLID angegeben (Klasse
ID; siehe Anhang 2). CLID wird zugeordnet, wenn die Verbindung eingerichtet
wird (Anhang 4, Schritt 1c). In einigen Ausgestaltungen wird eine
separate CLID für
jeden QoS- oder eine Reihe von QoS-Parameter(n) zugeordnet. Für jede Klasse
führt der
ATM-Schalter eine Klassenzahl, die die Gesamtzahl von Zellen in
allen Warteschlangen 110 dieser Klasse ist. Somit ist die Klassenzahl
die Summe aller ECNT-Werte
in der Klasse. Wenn eine Zelle empfangen wird, dann wird die jeweilige Klassenzahl
inkrementiert. Die Zahl wird dekrementiert, wenn eine Zelle in der
Klasse zum Stapel von freien Zellenpuffern nach der Übertragung
zurückgebracht
wird.
-
Die
Markierungs-, Verwerfungs- und Warteschlangengrenzschwellenwerte
werden separat für
jede Klasse gesetzt. Je größer die
Klassenzahl, desto geringer die tatsächlichen Schwellenwerte für jede Warteschlange 110 in
der Klasse, wie in 20 gezeigt
ist. In 20 werden die
möglichen
Werte der Klassenzahl in 8 Regionen unterteilt, die von 0 bis 7
nummeriert sind. Jeder Schwellenwert ist in jeder Region konstant. 20 ist ein Graph für einen
Schwellenwert. In 20 besteht
Region 0 aus Klassenzählerwerten
von 0 bis 6K (6K = 6*1024 = 7144); Region 1 ist von 6K bis 10K usw.
Die Obergrenze von Region 7 ist die „Klassengrenze". Die Regionsgrenzen
sind pro Klasse programmierbar und können sich somit für verschiedene
Klassen unterscheiden.
-
In
einigen Ausgestaltungen ist ein Schwellenwert in zwei oder mehr
Nachbarregionen gleich.
-
Für jede Klasse
führt der
Schalter eine Klassenregion-ID-Variable, die anzeigt, in welcher
Region sich die Klassenzahl befindet. Der tatsächliche Schwellenwert wird
anhand der Klassenregion-ID bestimmt.
-
Wenn
ein Schwellenwert abnimmt, dann werden die Zellen, die bereits in
der Warteschlange sind, nicht beeinflusst. Man nehme beispielsweise
an, dass in 20 die Klassenzahl
von Region 0 zu Region 1 steigt. Der Schwellenwert nimmt von A zu
B ab. Wenn jedoch eine Warteschlange 110 in der Klasse
mehr als B Zellen hatte, als der Klassenzähler Region 1 erreicht hatte,
dann werden diese Zellen nicht Gegenstand einer zusätzlichen Überlastungsreduzierungsmaßnahme.
Die Zellen, die für
die Warteschlange empfangen wurden, nachdem die Klassenzahl Region
1 erreicht hat, können
jedoch Gegenstand einer solchen Maßnahme sein, bis die Zahl der
Zellen in der Warteschlange unter B abfällt (aufgrund der Übertragung
von Zellen).
-
In 20 ist die Obergrenze jeder
Region gleich der Untergrenze der nächsten Region. Somit ist die Obergrenze
6K von Region 0 die Untergrenze von Region 1. Dies ist in 21 anders, wo sich benachbarte Regionen überlappen.
Die Überlappungsbereiche
sind schraffiert. Die Obergrenze U0 von Region 0 ist höher als
die Untergrenze L1 von Region 1; die Obergrenze U1 von Region 1
ist höher
als die Untergrenze L2 von Region 2 usw. Die Region-ID ändert sich
mit einer Hysterese auf der Basis der Richtungsänderung der Klassenzahl. Wenn
beispielsweise die Klassenzahl von Region 0 steigt, dann wird die
Region-ID 1, wenn der Klassenzahl U0 erreicht. Wenn die Klassenzahl
von Region 1 abnimmt, dann wird die Region-ID 0, wenn die Klassenzahl
L1 erreicht. Die Hysterese verhindert, dass die Region-ID, und somit
die Schwellenwerte, schwanken, wenn die Klassenzahl um eine Regionsgrenze
herum schwankt.
-
22 illustriert eine Schaltung
(Teil von SIF 1420), die zum Ermitteln der Klassenzahl
und Region-IDs verwendet wird. Diese Schaltung wird jedes Mal dann
aufgerufen, wenn eine Zelle empfangen oder ein Zellenspeicher freigegeben
wird. Die CLID-Tabelle 1110 speichert die CLID-Felder von
IVCs 210. Tabelle 1110 wird durch die IVC-Nummer
indexiert. Die IVC-Nummer ist in 22 als „IVC" dargestellt. Wenn
eine Zelle ankommt oder freigegeben wird, dann wird ihre CLID (Klassen-ID)
aus der Tabelle 1110 in Register 1114 gelesen.
Der Ausgang von Register 1114 wird mit den Eingängen der
Klassenzahlentabelle 1120 und der Region-ID-Tabelle 1130 verbunden.
Die Tabellen 1120 und 1130 werden durch die Klassen-ID
indexiert. Die Klassenzahlentabelle 1120 schreibt die Klassenzahl
(„CLD") auf die Schaltung 1134.
Die Region-ID-Tabelle 1130 schreibt die Region-ID („RID") auf die Schaltung 1140.
-
Die
Schaltungen 1140 und 1114 senden jeweils die Region-ID
und die Klassen-ID
zur Untergrenzentabelle 1150, zur Obergrenzentabelle 1160 bzw.
zur Schwellenwerttabelle 1170. Die Tabelle 1150 sendet
die Untergrenze der Region zum Komparator 1180. Tabelle 1160 sendet
die Obergrenze zum Komparator 1190. Tabelle 1170 sendet
die Markierungs-, Verwerfungs- und Warteschlangengrenzschwellenwerte
zum Komparator 1196.
-
Die
IVC-Nummer „IVC" wird als Index zur
Tabelle 1194 gesendet, die die ECNT-Felder von IVC-Strukturen 210 speichert
(Anhang 2). Die Ausgangs-ECNT von Tabelle 1194 wird zum
Komparator 1196 gesendet. Der Komparator 1196 vergleicht
die ECNT mit jedem der drei Schwellenwerte aus Tabelle 1170 und
erzeugt Signale, die angeben, ob Schwellenwerte überschritten werden. Diese
Signale werden an eine Schaltung angelegt (nicht dargestellt; Teil
von SIF 1420), die ermittelt, ob die Zelle verworfen, mit
einer Überlastungsanzeige oder
ohne eine Überlastungsanzeige übertragen
werden soll. Diese Schaltung beinhaltet einen Schaltkomplex von 6 und die EPD-Zustandsmaschine
von 23, die nachfolgend
beschrieben werden. Diese Schaltung sendet ein Signal zur Schaltung 1134,
um anzuzeigen, ob die Zelle empfangen wird und die Klassenzahl inkrementiert
werden soll. Die Schaltung 1134 empfängt auch ein Signal (nicht
dargestellt), das anzeigt, ob die Zelle aus dem Speicher freigegeben
und die Klassenzahl dekrementiert werden soll. Die Schaltung 1134 inkrementiert
oder dekrementiert die Klassenzahl entsprechend oder lässt die
Klassenzahl unverändert.
Der neue Wert der Klassenzahl wird zurück auf seinen Slot in Tabelle 1120 gechrieben
und zu den Komparatoren 1180, 1190 gesendet.
-
Jeder
der Komparatoren 1180, 1190 empfängt Signale
(nicht dargestellt), die anzeigen, ob die Klassenzahl von der Schaltung 1134 inkrementiert
oder dekrementiert wurde. Wurde die Klassenzahl dekrementiert und
ist kleiner als die Untergrenze, dann sendet der Komparator 1180 ein
Signal zur Schaltung 1192, das besagt, dass die Region-ID dekrementiert
werden soll. Wurde die Klassenzahl inkrementiert und ist jetzt größer als
die Obergrenze, dann sendet der Komparator 1190 ein Signal
zur Schaltung 1192, das besagt, dass die Region-ID inkrementiert
werden soll. Die Schaltung 1192 signalisiert der Schaltung 1140,
ob die Region-ID inkrementiert oder dekrementiert werden oder unverändert bleiben
soll. Die Schaltung 1140 ändert die Region-ID bei Bedarf
und schreibt sie zurück
auf die Tabelle 1130.
-
Early Paket Discard (EPD)
Funktion
-
Eine
EPD-Zustandsmaschine von 23 ist
in der SIF 1420 für
jeden Eingangs-VC
vorgesehen. Für Normalmodus-IVCs
kann EPD gesperrt werden.
-
Die
Statusübergänge werden
in der nachfolgenden Tabelle 2 beschrieben. Die erste Spalte von
Tabelle 2 zeigt Zustandsnummern, die in 23 in einem Kreis stehen.
-
-
Wenn
sich die Zustandsmaschine im Zustand „Ende verwerfen" befindet, dann wurde
ein Teilframe zum Zielort in „Frame
empfangen" vor dem Übergang
zu „Ende
verwerfen" gesendet.
In einem Übergang
von „Ende
verwerfen" zu „ Frame-Anfang" wird die letzte
Zelle des Frame zum Zielort gesendet, damit der Zielort den Anfang
des nächsten
Frame erfassen kann.
-
EPD
wird auf einer Pro-IVC-Basis freigegeben oder gesperrt.
-
6 zeigt Vorgänge, die
durchgeführt
werden, um zu ermitteln, ob eine eingehende Zelle empfangen oder
verworfen werden soll. Die Vorgänge
werden von der SIF 1420 durchgeführt, es sei denn, dass etwas anderes
angegeben ist. Wenn der Schalterspeicher zum Speichern der Zellen
voll ist (Schritt 1270), dann wird die Zelle verworfen
(Schritt 1272). Dies erfolgt durch den Schaltercontroller
(SWC) 1410 (25)
unabhängig von
einem Markierungs-, Verwerfungs- oder Warteschlangengrenzschwellenwert.
In Schritt 1274 prüft
SIF 1420, ob die Klasse der Zelle voll ist, d. h. ob der
Klassenzähler
die Klassengrenze überschreitet.
Wenn ja, dann wird die Zelle ebenfalls verworfen.
-
Wenn
die entsprechende IVC-Warteschlange voll ist (Schritt 1276),
d. h. wenn die ECNT größer ist
als die Warteschlangengrenze des IVC gemäß Ermittlung anhand der Ausgangssignale
des Komparators 1196 (22),
dann wird die Zelle verworfen.
-
Wenn
Speicher, Klasse und IVC-Warteschlange nicht voll sind, dann sind
die durchgeführten
Maßnahmen
vom EPD-Enable-Flag E des IVC abhängig (Anhang 2). Wenn E = 1
ist (EPD enabled; siehe Schritt 1278), wird die Zelle wie
folgt verarbeitet.
-
Wenn
die EPD-Zustandsmaschine des IVC im Zustand „Rahmen verwerfen" ist (Schritt 1280),
dann wird die Zelle verworfen. Wenn der EPD-Zustand „Ende verwerfen" ist (Schritt 1282),
dann: a) wird die Zelle empfangen, wenn die Zelle die letzte in
einem Frame ist (Schritt 1283); b) wird die Zelle verworfen,
wenn die Zelle nicht die letzte in einem Frame ist. Wenn der EPD-Zustand
weder „Frame
verwerfen" noch „Ende verwerfen" ist, dann sind die
durchgeführten
Maßnahmen
davon abhängig,
ob die IVC-Warteschlange fast voll ist (Schritt 1284),
d. h., ob die ECNT den Verwerfungsschwellenwert überschreitet. Wird der Verwerfungsschwellenwert
nicht überschritten,
dann wird die Zelle empfangen, wird der Verwerfungsschwellenwert überschritten, dann
wird die Zelle verworfen, wenn der EPD-Zustand „Frame-Anfang" ist (Schritt 1285),
und die Zelle wird empfangen, wenn der EPD-Zustand nicht „Frame-Anfang" ist (d. h. wenn
der EPD-Zustand „Frame
empfangen" ist).
-
Wenn
die EPD-Funktion in Schritt 1278 gesperrt ist, dann wird
die Zelle nur dann empfangen, wenn: (1) ECNT den Verwerfungsschwellenwert
nicht überschreitet
(Schritt 1286), oder (2) das CLP-Bit im Eingangsheader
der Zelle 0 ist (Schritt 1287).
-
Schalterarchitektur
-
24 zeigt die Beziehung zwischen
Funktionsblöcken
und Datenbanken in einer Ausgestaltung des ATM-Schalters. Die Zellendatenbank 1310 beinhaltet
die Zellen 104. Die IVC-Datenbank 1320 beinhaltet IVC-Strukturen 210.
Die OVC-Datenbank 1330 beinhaltet OVC-Strukturen 220.
Der Schalterschaltkomplex beinhaltet Eingangsfunktionsblock 1340,
Ausgangsfunktionsblock 1350, Hintergrund-(BG)-Funktionsblock 1360 und
Scheduler-Funktionsblock 120. Die Beziehung zwischen den
Funktionsblöcken
und den Datenbanken ist in der nachfolgenden Tabelle 3 beschrieben.
-
-
Ein
ATM-Schalter, der mit Pro-VC-Warteschlangenbildung und der Schwellenwert-
und Early Packet Discard Funktion arbeitet, ist in 25 illustriert. Der Schaltercontroller
(SWC) 1410 ist mit der CPU 1414, den E/A-Ports 1418 und
der SIF (Schalterschnittstelle) 1420 verbunden. Die SIF 1420 ist
mit dem Interconnect-Bus 1430 verbunden. Der Bus 1430 ist
mit einem oder mehreren PVCs (Pro-VC-Controllern) 1440 verbunden.
Jeder PVC 1440 ist mit einer jeweiligen SCH- (Scheduler)
Schaltung 1450 verbunden. Die Scheduler-Schaltungen 1450 sind
Teil des Schedulers 120 (1).
-
In
einigen Ausgestaltungen beinhalten die Ports 1418 32 Eingangsports
und 32 Ausgangsports. Der Schalter hat zwei PVCs. Ein PVC 1440 handhabt
die 16 geradzahligen Ausgangsports, der andere PVC handhabt die
16 ungeradzahligen Ausgangsports.
-
In
einigen Ausgestaltungen ist jede der Schaltungen 1410, 1418, 1420, 1430, 1440 und 1450 eine
separate integrierte Schaltung.
-
Die
Datenstrukturen der Anhänge
1–3 werden
wie in 26 gezeigt in
Tabellen gespeichert. Insbesondere speichert die SIF 1420 die
folgenden Tabellen: ECNT, CLID, WP, OCNT, LINK, CCNT, OVCT. Jeder PVC 1440 speichert
die Tabellen CHP/CTP, IVC/NXT, RP, TP. Diese Tabellen werden in
Tabelle 4 unten beschrieben.
-
In
jedem PVC 1440 speichern die RP-Tabellen Informationen
nur für
OVCs, die den von dem PVC gehandhabten Ausgangsports entsprechen.
-
Signale
von Bus 1430 sind in Tabelle 5 beschrieben.
-
-
-
-
-
Wie
in Tabelle 4 angedeutet, hat jeder PVC 1440 CHP- und CTP-Zeiger
und R-, C- und H-Flags für jeden
IVC. Jede Kette 310 enthält die OVCs, die auf den von
dem jeweiligen PVC gehandhabten Ausgangsports übertragen. Wenn eine Zelle
empfangen wird, dann aktualisiert jeder PVC seine IVC- und OVC-Felder wie
oben beschrieben. TP, P und F haben dieselben Werte in jedem PVC 1440.
-
27 illustriert den Fluss
von Daten zwischen Blöcken
von 25. SWC 1410 empfängt und überträgt Zellen
auf dem Netzwerk über
E/A-Ports 1418. SWC 1410 empfängt Marker-Zellen von der CPU 1414. SWC 1410 sendet
die Adresse der Zelle in einem Schalterspeicher (nicht dargestellt)
und die ID des jeweiligen IVC zur SIF 1420. Die IVC-ID,
die hierin auch als die IVC-Nummer bezeichnet wird, ist dieselbe
Nummer, die im OVC 220 gespeichert ist (Anhang 3).
-
SIF 1420 verknüpft die
Zelle mit der entsprechenden Warteschlange 110 und aktualisiert
den ECNT-Zähler.
-
Eine
zusätzliche
Funktion der SIF 1420, wenn die Verbindung hergestellt
oder ein OVC hinzugefügt wird,
besteht darin, den neuen Header NewHdr für den neuen OVC zu erzeugen.
-
Wenn
die Zelle soeben empfangen wurde, dann überträgt die SIF 1420 die
Zelladresse und die IVC-ID zu beiden PVCs 1440. Die PVCs 1440 aktualisieren
OVC-Felder und führen die
in den 3 und 4 wie oben beschrieben gezeigten
Vorgänge
durch. Wenn ein OVC bereit wird, wenn die Zelle empfangen wird,
dann sendet der jeweilige Background-Job die OVC-ID zum jeweiligen
SCH 1450 (der Transfer PVC→SCH). Die OVC-ID dient als
Zeiger zum OVC. Für
diejenigen OVCs, die aktiv waren, als die Zelle empfangen wurde,
erfolgt der Transfer PVC→SCH
nicht.
-
Jedes
Mal, wenn SCH 1450 eine Zelle auf einem OVC zur Übertragung
plant, sendet der SCH 1450 die OVC-ID zum jeweiligen PVC 1440,
wie in der unteren Hälfte
von 25 dargestellt ist.
Der PVC 1440 aktualisiert die OVC-Felder wie in 5 gezeigt und sendet die
OVC-ID und die Zelladresse zur SIF 1420. Der PVC 1440 vergleicht
den IVC TP mit der Zelladresse (Schritt 850 in 5), um zu ermitteln, ob
der OVC leer wird. Wenn der OVC leer wird, dann signalisiert der
PVC 1440 einem jeweiligen SCH 1450, dass der OVC
leer ist, und verknüpft
den OVC mit der jeweiligen Kette 310.
-
Die
SIF 1420 entfernt die Zelle ggf. aus der jeweiligen Warteschlange 110,
aktualisiert die ECNT und sendet die Zelladresse und den neuen Header
zum Schaltercontroller 1410. Der Controller 1410 leitet
die Zelle auf einem der Ports 1418 oder zur CPU 1414 weiter.
-
Timing
-
Der
gesamte Vorgang erfolgt in mehreren Schaltzyklen wie in 28 gezeigt. Der Background-(BG)-Job
kann mehr als einen Schaltzyklus erfordern.
-
In
der Eingangsstufe durchläuft
die eingehende Zelle mehrere Verarbeitungsstufen wie in 29 gezeigt. In 29 sind LUT und ITT Tabellen,
die in der US-Patentanmeldung mit der Seriennummer 08/657,835, „Cell Routing
in ATM Networks",
eingereicht am 31. Mai 1996 von Alex Joffe und hierin durch Bezugnahme eingeschlossen,
beschrieben.
-
Funktion
und Ein-/Ausgabeparameter jeder Verarbeitungsstufe werden in der
nachfolgenden Tabelle 6 beschrieben:
-
-
Die
Eingangsstufenpipeline ist in 30 dargestellt.
In 30 bedeutet „wr" Schreiben und „rd" Lesen.
-
Der
Schreibzeiger (WP) wird in der Ausgangsstufe des Schalters zurückgeschrieben.
-
In
der Ausgangsstufe durchläuft
die abgehende Zelle mehrere Verarbeitungsstufen wie in 31 gezeigt. Funktion und
Ein-/Ausgabeparameter jeder Verarbeitungsstufe werden in der folgenden
Tabelle 7 beschrieben:
-
-
Die
Ausgangsstufenpipeline ist in 32 dargestellt.
ATTR steht für
Zellattribute (siehe oben erwähnte US-Patentanmeldung
08/657,835). „STACK" ist ein Stapel von
freien Zellenpuffern in einem Gemeinschaftsspeicher.
-
BEFEHLE
-
Betrieb des Schreibsteuerspeichers
-
Dieser
Betrieb (33) wird von
der CPU 1414 zum Schreiben von Daten auf SIF 1420 oder
einem PVC 1440 eingeleitet. SIF 1420 und PVC 1440 haben
jeweils einen Steuerspeicher zum Speichern von Daten wie z. B. Daten
in den Tabellen von 26.
In 33 sind die Steuerspeicher 1510, 1520 von
SIF 1420 und einem PVC 1440 außerhalb von SIF und PVC dargestellt,
um die Operationen des Schreibsteuerspeichers besser zu illustrieren.
-
Eine
Operation des Schreibsteuerspeichers beinhaltet die folgenden Schritte
(die einzelnen Schrittnummern stehen in 33 jeweils in einem Kreis):
- 1. CPU 1414 schreibt Register R0 und CMR in SWC 1410.
Diese Register geben den Befehl wie nachfolgend beschrieben vor.
Der Befehl lautet „Write_Ext_Table_Reg", was eine Form von „Access Ext_Table_Reg" mit R = 0 ist, wie
unten beschrieben wird.
- 2. SWC 1410 überträgt den Inhalt
der Register CMR und R0 durch den Bus ttd[31:0] über zwei Taktzyklen zur SIF 1420.
- 3. SIF 1420 überträgt den Inhalt
der Register CMR und R0 während
der zwei Taktzyklen mit verketteten vc_bus[15:0] und cp_bus[15:0]
zum jeweiligen PVC 1440.4
- 4. SIF 1420 und PVC 1440 decodieren den Befehl
und schreiben die Daten auf vorgegebene Positionen in ihren Steuerspeichern.
-
Operation SIF-Steuerspeicher
lesen
-
Diese
Operation beinhaltet die folgenden Schritte (Schrittnummer erscheint
in Quadraten in 33):
- 1. CPU 1414 schreibt Register R0 und
CMR in SWC 1410. Der Befehl lautet in diesem Fall „Read_Ext_Table_Reg", was „Access
Ext_Table_Reg" mit
R = 1 ist, wie nachfolgend beschrieben wird.
- 2. SWC 1410 überträgt den Inhalt
der Register CMR und R0 durch Bus ttd[31:0] über zwei Taktzyklen zur SIF 1420.
- 3. SIF 1420 liest Daten aus ihrem Steuerspeicher 1510.
- 4. Das Ergebnis wird zum Register R0 von SWC 1410 übertragen.
- 5. CPU 1414 liest das Ergebnis aus dem Register R0.
-
Operation PVC-Steuerspeicher
lesen
-
Diese
Operation beinhaltet die folgenden Schritte (Schrittnummern sind
in 33 in Fünfecken
dargestellt):
- 1. CPU 1414 liest Register
R0 und CMR in SWC 1410. Der Befehl lautet in diesem Fall „Read_Ext_Table_Reg", was „Access
Ext_Table_Reg" mit
R = 1 ist, wie nachfolgend beschrieben wird.
- 2. SWC 1410 überträgt den Inhalt
der Register CMR und R0 durch den Bus ttd[31:0] über zwei Taktzyklen zur SIF 1420.
- 3. SIF 1420 überträgt den Inhalt
von Register CMR zum jeweiligen PVC 1440 mit verkettetem
vc_bus[15:0] und cp_bus[15:0].
- 4. PVC 1440 überträgt sein
Ergebnis zur SIF 1420.
- 5. Das Ergebnis wird von der SIF 1420 zum Register
R0 von SWC 1410 übertragen.
- 6. CPU 1414 liest das Ergebnis aus dem Register R0.
-
Operation Verbindung einrichten
-
Zum
Einrichten einer Verbindung werden mehrere Parameter wie in 34 illustriert programmiert. Die
Werte in den PVC- und SIF-Tabellen nach der Verbindungseinrichtung
sind in der folgenden Tabelle 8 angegeben (siehe auch Anhang 4):
-
-
Die
Verbindung wird mit den folgenden Schritten eingerichtet:
- Schritt 1: Den neuen Header mit dem Befehl „Write_Ext_Table_Reg" einrichten.
- Schritt 2: Den Befehl „PVC
Setup Connection" (nachfolgend
beschrieben) ausgeben.
- Schritt 3: Den Schaltercontroller-Befehl „Setup Connection" ausgeben, der in „ATMS2003B
Switch Controller 1 ,WHITE'" (MMC Networks, Inc.
of California, Dokument MMC 95-0003, 1995) beschrieben ist, hiermit durch
Bezugnahme eingeschlossen, auf Seite 18.
-
Verbindung hinzufügen
-
Zum
Hinzufügen
einer Partei zu einer Multicast-Verbindung werden die folgenden
Parameter eingestellt: Tabelle
9
- Hinweis
- das A-Bit ist 0, wenn
P gleich 0 ist.
-
Die
Verbindung wird in den folgenden beiden Stufen hinzugefügt:
- Schritt 1: Den New Header mit dem Befehl „Write_Ext_Table_Reg" einrichten.
- Schritt 2: Den Befehl „PVC
Add Connection" ausgeben.
-
Befehlsformat
-
Dieser
Abschnitt beschreibt die SWC-Register CMR und R0 für verschiedene
Befehle.
-
Auf Ext_Table_reg zugreifen
-
Siehe 35. In 35 ist R = 1 für Lesen, R = 0 für Schreiben.
DID (Device-ID)
ist in Tabelle 10 unten angegeben. TID (Tabellen-ID) ist in Tabelle
11 unten angegeben.
-
-
-
In 35 ist „Adresse" die Adresse in einer Tabelle oder in
internen Registern, die gelesen oder beschrieben werden. „Daten" sind geschriebene
Daten.
-
Warteschlangenmarker-Zelle
(36)
-
Dieser
Befehl wird in einer Verbindungsentfernungsoperation verwendet.
Er ist einem Warteschlangenzelle-Befehl ähnlich, der in „ATMS2003B
Switch Controller 1 ,WHITE'" (oben angegeben)
auf Seite 19 beschrieben ist.
-
In
36:
IVC | IVC-ID |
OCNT | Neue
Ausgangszellenzahl |
Bits
CMR [25] und CMR [24] speichern OCNT [9] und OCNT [8]. | |
PTI | PTI-Feld
des Headers der Zelle (sollte letzte Zelle im Frame sein, d. h.
PTI-Bit 1 sollte gesetzt sein). |
L | Letzte
Zelle
Sollte gesetzt sein, wenn Marker-Zelle die letzte Zelle in
der IVC-Warteschlange
sein soll. |
C | CLP-Bit |
GFC | GFC-Feld
des Headers der Zelle |
PVC
Setup Verbindung (Fig. 37)
IVC | IVC-ID |
OVC | OVC-ID |
F | Frame-Modus |
H | Halten-Steuerbit |
E | EPD
Enable |
I | EFCI
Enable |
CLID | Klassen-ID |
DID | Device-ID
(siehe Tabelle 10 oben). |
PVC
Add Connection (Fig. 38)
IVC | IVC-ID |
OVC | OVC-ID |
DID | Device-ID
wie in Tabelle 10 oben. |
-
PROGRAMMIERMODELL
-
Tabellen
-
Das
SIF-Tabellenformat ist in 39 dargestellt.
Das PVC-Tabellenformat ist in 40 dargestellt.
-
Interne SIF-Register
-
Interne
SIF-Register sind in 41 dargestellt
und werden unmittelbar nachfolgend beschrieben.
-
GCR – Allgemeines Steuerregister
(42)
-
Dieses
Register steuert den Betrieb der Pro-VC-Warteschlangenbildung.
PM4 | (8
Bits) Port-Modus – 4
kombinierte Ports
Wenn PM4 [i] gesetzt ist, dann ist der kombinierte
Port i im 622 Mbit/sec Betrieb. Kombinierter Port i => Port(i), Port(i +
8), Port(i + 16), Port(i + 24) |
PM8 | (4
Bits) Port-Modus – 8
kombinierte Ports
Wenn PM8 [i] gesetzt ist, dann ist der kombinierte
Port i im 1,2 Gbit/sec Betrieb. Der kombinierte Port i => P(i), P(i + 4), P(i
+ 8), P(i + 12), P(i + 16), P(i + 20), P(i + 24), P(i + 28) |
R | (1
Bit) Empfang Freigabe |
T | (1
Bit) Senden Freigabe |
-
VER_i – Versionsregister (43)
-
SIF 1420 wird
in 3 Chips SIF_1, SIF_2, SIF_3 ausgeführt. Demgemäß gibt es drei VER_i Register, eines
pro SIF-Device (VER_1 entspricht SIF_1 usw.).
VER (16 Bit)
Versionsnummer
-
CLC – Klassenzahl (44)
-
Es
gibt 16 Klassenzählerregister
(eins für
jede Klasse) in der SIF 1420. Diese Zähler werden nach einer Rückstellung
genullt und nach jedem Empfang einer Zelle in der Klasse inkrementiert.
Ein Klassenzähler wird
dekrementiert, wenn eine Zelle in der Klasse übertragen und zum freien Zellenpufferstapel
freigegeben wird. Der Benutzer kann diese Register während des
Betriebs jederzeit ablesen. Schreiben auf die Register wird nur
für Testzwecke
unterstützt
und sollte beim normalen Betrieb nicht erfolgen.
-
Die
RID-Felder von CLC-Registern bilden eine Region-ID-Tabelle 1130 von 22. Die CLC-Felder bilden
Tabelle 1120 von 22.
-
Jedes
RID-Feld wird nach dem Rückstellen
genullt und jedes Mal aktualisiert, wenn die Klassenzahl eine Regionsgrenze überschreitet.
CLC
(16 Bit) Klassenzahl (zunächst
0)
RID (3 Bit) Region-ID (0 bis 7)
-
RTH – Regionsschwellenwertregister
(45)
-
Es
gibt 128 Regionsschwellenwertregister (8 für jede Klasse, 1 Register für jede Region)
in der SIF 1420. Diese Register bilden eine Schwellenwerttabelle 1170 von 22. Diese Register sollten
vom Benutzer initialisiert werden.
QLM (10 Bit) Warteschlangengrenze
DTH
(10 Bit) Verwerfungsschwellenwert
MTH (10 Bit) Markierungsschwellenwert
-
Alle
Schwellenwerte haben eine Granularität von 16 Zellen.
-
Die
maximale Größe von Warteschlange 110 ist
16K – 1
Zellen, was ein 14-Bit-Raum
ist. Die vier LSBs jedes Schwellenwertes sind 1111. Daher beträgt der Mindestwert
für jeden
Schwellenwert fünfzehn (00_0000_0000_1111
binär),
und der Höchstwert
ist 16K-1 (11_1111_1111_1111 binär).
-
RLM – Regionsgrenzregister (46)
-
Es
gibt 128 Regionsgrenzregister (8 für jede Klasse, 1 Register für jede Region)
in der SIF 1420. Diese Register bilden Tabellen 1150, 1160 in 22. Diese Register sollten
vom Benutzer initialisiert werden.
RUL (10 Bit) Regionsobergrenze
(Tabelle 1160)
RLL (10 Bit) Regionsuntergrenze (Tabelle 1150)
-
Beide
Grenzen haben eine Granularität
von 64 Zellen. Die maximale Klassengröße ist 64K-1 Zellen, was ein
16-Bit-Raum ist. Die LSBs jeder Obergrenze sind 111111, und alle
LSBs jeder Untergrenze sind Nullen. Daher ist die minimale Obergrenze
63 (00_0000_0000_111111 binär)
und die maximale Obergrenze ist 64K-1 (11_1111_1111_111111 binär). Die
minimale Untergrenze ist null (00_0000_0000_000000 binär), die
maximale Untergrenze ist 64K-64 (11_1111_1111_000000 binär).
-
Interne
PVC-Register (47) werden
im Folgenden beschrieben.
-
VER – Versionsregister (48)
-
- VER (16 Bit) Versionsnummer
-
HBL – Kopf der Hintergrundliste
(49)
-
- HBL (16 Bit) Kopf der Hintergrundliste
-
TBL – Ende der Hintergrundliste
(50)
-
- TBL (16 Bit) Ende der Hintergrundliste
-
OSP – Ausgangs-VC-Stapelzeiger
(51)
-
- OSP (16 Bit) Ausgangs-VC-Stapelzeiger
-
In
einigen Ausgestaltungen sind SIF 1420, jeder PVC 1440 und
jeder SCH 1450 (25)
eine separate integrierte Schaltung (separater Chip). Eine solche
Konstruktion ermöglicht
es, Pro-VC-Warteschlangenbildung als zusätzliche Funktion zu einem existierenden
Schaltercontroller 1410 bereitzustellen. In einigen Ausgestaltungen
bieten die SIF-, PVC- und SCH-Chips die folgenden Leistungsmerkmale:
- 1. Bis zu insgesamt 64K Eingangs-VCs
- 2. Bis zu insgesamt 128K (64*2) Ausgangs-VCs (jeder Block von
16 Ports kann bis zu 64K Ausgangs-VCs haben)
- 3. Jeder Eingangs-VC kann bis zu 16K Zellen haben.
- 4. Jeder Eingangs-VC kann zu einer der 16 Klassen gehören.
- 5. Anzeige des Klassenfüllezustands
für jede
Klasse
- 6. Bis zu 255 Ausgangs-VCs können
mit einem Eingangs-VC assoziiert werden (Multicast). Mehrere solcher
OVCs können
zum selben Ausgangsport gehören.
- 7. Port 32 (CPU-Port, von PVC mit geradzahligen Ports gehandhabt)
hat seine eigenen OVCs. Für
diese OVCs wird kein neuer Header erzeugt. Stattdessen erhält die CPU
die IVC-ID.
- 8. Einrichten einer neuen Verbindung in drei Zellenzeiten (drei
Schaltzyklen). Hinzufügen
einer Partei zu einer Multicast-Verbindung in zwei Zellenzeiten.
-
Die
oben beschriebenen Ausgestaltungen illustrieren die Erfindung, beschränken sie
aber nicht. Die Erfindung ist nicht auf einen bestimmten Schaltkomplex,
auf bestimmte Signale, Datenstrukturen, die Zahl von Warteschlangen
oder Schwellenwerten oder Werte von Parametern beschränkt. Weitere
Ausgestaltungen und Variationen liegen im Umfang der Erfindung gemäß Definition
durch die beiliegenden Ansprüche.
-
ANHANG 1
-
Datenzelle
-
Zusätzlich zur
Zellennutzlast und Attributen hat der ATM-Schalter die folgenden
Datenfelder für
jede Zelle:
NXT – | (18
Bit) Zeiger auf nächste
Zelle. Dient zum Verknüpfen
von Zellen miteinander. |
CCNT – | (10
Bit) Kopienzähler |
FLGS – | Zellenflags
mit:
L – nächste Zelle
(NXT zeigt darauf) ist die letzte Zelle in einem Frame
M – nächste Zelle
(NXT zeigt darauf) ist eine Marker-Zelle |
-
ANHANG 2
-
Die
IVC-Datenstruktur hat die folgenden Felder:
WP – (18 Bit)
Schreibzeiger. Die Adresse der letzten Zelle in der IVC-Warteschlange.
TP – (18 Bit)
Endezeiger. Die Adresse der letzten Zelle in der IVC-Warteschlange (Normalmodus)
oder die letzte Zelle im letzten Vollframe in der IVC-Warteschlange
(FBOM).
CHP- (16 Bit) Kettenkopfzeiger. Zeiger auf ersten Ausgangs-VC
in der Kette.
CTP – (16
Bit) Kettenendezeiger. Zeiger auf letzten Ausgangs-VC in der Kette.
ECNT – (14 Bit)
Eintragszahl. Die Zahl der Zellen in der Warteschlange für diesen
IVC.
OCNT- (10 Bit) Ausgangszahl. Die Zahl der Ausgangs-VCs,
die zu diesem IVC gehören.
CLID – (4 Bit)
Klassen-ID
FLGS – IVC-Status
und Steuerflags wie z. B.:
F – Frame-Modus (0 – normal;
1 – FBOM)
C – Kette
ist bereit (0 – leer;
1 – bereit)
R – Lesezeiger
RP des ersten (Kopf-) OVC in der Kette des IVC ist gültig (0 – nicht
gültig;
1 – gültig)
P – Teilframe
(0 – Vollframe/leer;
1 – Teilframe)
EST – EPD-Zustand
(2 Bit)
00 – Frame-Anfang
01 – Frame
empfangen
10 – Frame
verwerfen
11 – Ende
verwerfen
E – EPD
Enable (0 – Sperren,
1 – Freigeben)
I – EFCI-Marking
Enable (0 – Sperren,
1 – Freigabe)
N – Überlastungsavisierung
M – Marker-Bit
(gesetzt, wenn Marker-Zelle mit der Warteschlange verknüpft ist,
zurückgesetzt,
wenn die Marker-Zelle entfernt wird)
H – Halten-Bit (verhindert, wenn
gesetzt, den Kettentransfer zur BG-Liste)
-
ANHANG 3
-
Die
OVC-Datenstruktur hat die folgenden Felder:
RP – (18 Bit)
Lesezeiger. Die Adresse der nächsten
Zelle zum Übertragen
auf dem OVC.
NewHdr – (28
Bit) Neuer Zellen-Header.
NXT – (16 Bit) Nächster OVC-Zeiger.
Dient zum Verknüpfen
von OVCs miteinander.
IVC – (16
Bit) Eingangs-VC. Nummer des Stamm-IVC.
FLGS – OVC-Status
und Steuerflags wie z. B.:
A – OVC (für Hinzufügen von Multicast-Partei)
0 – normal,
1 hinzugefügt
D – Verbindung-fallenlassen-Flag
R – Lesezeiger
ist gültig
für OVC,
auf den NXT des derzeitigen OVC zeigt. 0 – nicht gültig, 1 – gültig.
L – Lesezeiger
zeigt auf die letzte Zelle eines Frame.
M – Lesezeiger zeigt auf eine
Marker-Zelle.
V – VP-Verbindung-Flag
(0 – VC;
1 – VP)
-
ANHANG 4
-
Einrichten einer Verbindung
-
- 1. IVC eingerichtet
- 1a. OCNT = 1 (für
einen einzelnen OVC)
- 1b. ECNT = 0 (0 Zellen in der Warteschlange)
- 1c. CLID = Klassen-ID (0 bis 15)
- 1d. CHP, CTP = OVC-Nummer (Zeiger auf OVC-Struktur)
- 1e. F = Frame-Modus (1 bedeutet FBOM, 0 bedeutet Normalmodus)
- 1f. C = 1
- 1g. R = 0
- 1h. P = 0
- 1i. EST = 00 („Frame-Anfang")
- 1j. E = geeigneter Wert (von CPU vorgegeben)
- 1k. I = geeigneter Wert (von CPU vorgegeben)
- 1l. H = geeigneter Wert
- 1m. M = 0
- 2. OVC ist eingerichtet
- 2a. NewHdr = neuer Header VPI/VCI
- 2b. IVC = Zeiger auf IVC
- 2c. A = 0
- 2d. D = 0
- 2e. V = 0, wenn VC-Verbindung, 1, wenn VP-Verbindung
-
ANHANG 5
-
Hinzufügen einer Partei zu einer Verbindung
-
- 1. In IVC:
- 1a. CHP = Zeiger auf neuen OVC
- 1b. CTP: wenn IVCs C == 0 (keine Kette), dann
CTP = Zeiger
auf neuen OVC,
sonst CTP ist unverändert
- 1c. OCNT inkrementieren
- 1d. C = 1
- 1e. R = 0
- 2. In neuem OVC:
- 2a. NewHdr = neuer Header
- 2b. IVC = Zeiger auf IVC
- 2c. A = 1 wenn P == 1, A = 0 wenn P == 0
- 2d. D = 0
- 2e. V = 0, wenn VC-Verbindung, 1 wenn VP-Verbindung
- 2f. NXT = vorheriger Wert von CHP
-
ANHANG 6
-
Empfangen einer neuen
Zelle
-
- 1. In Zellen:
- 1a. Wenn die neue Zelle nicht die einzige Zelle in der Warteschlange
ist, dann:
wenn FBOM und dies ist die letzte Zelle im Frame,
L
= 1 in der vorherigen Zelle
sonst L = 0 in der vorherigen Zelle.
- 1b. CCNT = OCNT des IVC
- 2. In IVC:
- 2a. WP = Zeiger auf neue Zelle
- 2b. ECNT inkrementieren
- 2c. Wenn F == 1 (FBOM), dann
- 2c-1. Wenn L == 1, dann P = 0
sonst, wenn P == 1, dann
Schritte 2d–2e überspringen,
sonst
- 2c-2. P = 1; Schritte 2d–2e übersppingen
- 2d. Wenn F == 0 (nicht FBOM), oder
wenn F == 1 und Zelle
die letzte in einem Frame ist,
dann TP = Zeiger auf Zelle.
Ansonsten
bleibt TP unverändert.
- 2e. Wenn C == 1 und H == 0, dann
- 2e-1. C = 0
- 2e-2. Bewege IVC-Kette zu Hintergrundliste
- 3. In OVC:
- 3a. Wenn IVCs C == 1 und IVCs R == 0, dann
- 3a-1. IVCs R = 1
- 3a-2. RP[CHP] = Zeiger auf Zelle
Setze L[CHP], M[CHP] auf
geeignete
Werte