-
HINTERGRUND
-
Die Betreiber von Netzwerken für Rechenzentren (zu denen auch die Anbieter von Inhalten gehören, die Eigentümer und Betreiber der Netzwerkinfrastruktur sind) sowie Netzwerkdienstanbieter bieten ihren (internen oder externen) Kunden oft Netzwerkbandbreite als Produkt an. Im Vertrieb der Netzwerkbandbreite gewährleistet der Anbieter ein Leistungsziel (Service Level Objective SLO), mit wohldefinierten Messgrößen für die Datenflussleistung des Netzwerks. Netzwerke werden oft überdimensioniert, um zu gewährleisten, dass das Netzwerk das Leistungsziel erfüllen kann.
-
ZUSAMMENFASSUNG DER OFFENBARUNG
-
Als ein Aspekt der Offenbarung gehört zu einem Verfahren zur Bestimmung des verfügbaren Datenflusses der Empfang einer Angabe zu einer physischen Topologie, einer Angabe zu einer logischen Topologie sowie zu den Datenflussanforderungen mehrerer Netzwerknutzer. Die physische Topologie beinhaltet mehrere physische Verbindungen, und die logische Topologie beinhaltet mehrere logische Verknüpfungen zwischen mehreren Knoten. Zu dem Verfahren gehört auch der Empfang eines Cross-layer-Netzwerkmodells, das die logische Topologie auf die physische Topologie abbildet. Das Verfahren beinhaltet dann, iterativ und für eine vorgegebene Anzahl Zyklen, die Erzeugung einer Ausfallsprobe, die den Ausfall mehrerer physischer Verbindungen in der physischen Topologie anzeigt. Ein logisches Topologiemodell wird als Reaktion auf die Fehlfunktion einer zufälligen Anzahl physischer Verbindungen bei der Ausfallsprobe auf der Basis des Cross-layer-Netzwerkmodells aktualisiert. Mithilfe eines datenflusstechnischen Simulators bestimmt das Verfahren, ob das aktualisierte lokale Topologiemodell die Datenflussnachfrage decken kann.
-
Ein weiterer Aspekt der Offenbarung ist, dass ein System zur Bestimmung des verfügbaren Datenflusses ein Speichermedium zum Speichern von Anweisungen, die von einem Prozessor ausgeführt werden können, beinhaltet, sowie mindestens einen mit dem Speichermedium verbundenen Prozessor. Die Ausführung der vom Prozessor ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren dazu, eine Angabe einer physischen Topologie, einer logischen Topologie und verschiedener Datenflussanforderungen zu empfangen. Die physische Topologie beinhaltet mehrere physische Verbindungen, und die logische Topologie beinhaltet mehrere logische Verknüpfungen zwischen mehreren Knoten. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, ein Cross-layer-Netzwerkmodell zu empfangen, das die logische Topologie auf die physische Topologie abbildet und jeder der logischen Verknüpfungen eine zufällige Kapazität zuordnet. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, iterativ für eine vorgegebene Anzahl Zyklen eine Ausfallsprobe zu erzeugen, die den Ausfall mehrerer der physischen Verbindungen in der physischen Topologie anzeigt. Der mindestens eine Prozessor aktualisiert daraufhin ein logisches Topologiemodell als Reaktion auf den Ausfall physischer Verbindungen bei der Ausfallsprobe und im Cross-layer-Netzwerkmodell. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, mithilfe eines datenflusstechnischen Simulators zu ermitteln, ob das aktualisierte lokale Topologiemodell die verschiedenen Datenflussanforderungen decken kann.
-
Ein weiterer Aspekt der Offenbarung ist, dass das computerlesbare Medium vom Prozessor ausführbare Anweisungen enthält. Die Ausführung der vom Prozessor ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren dazu, eine Angabe einer physischen Topologie, einer logischen Topologie und verschiedener Datenflussanforderungen zu empfangen. Die physische Topologie beinhaltet mehrere physische Verbindungen, und die logische Topologie beinhaltet mehrere logische Verknüpfungen zwischen mehreren Knoten. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, ein Cross-layer-Netzwerkmodell zu empfangen, das die logische Topologie auf die physische Topologie abbildet und jeder der logischen Verknüpfungen eine zufällige Kapazität zuordnet. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, iterativ für eine vorgegebene Anzahl Zyklen eine Ausfallsprobe zu erzeugen, die den Ausfall mehrerer der physischen Verbindungen in der physischen Topologie anzeigt. Der mindestens eine Prozessor aktualisiert daraufhin ein logisches Topologiemodell als Reaktion auf den Ausfall physischer Verbindungen bei der Ausfallsprobe und im Cross-layer-Netzwerkmodell. Die Ausführung der vom Computer ausführbaren Anweisungen veranlasst den Prozessor/die Prozessoren ferner dazu, mithilfe eines datenflusstechnischen Simulators zu ermitteln, ob das aktualisierte lokale Topologiemodell die verschiedenen Datenflussanforderungen decken kann.
-
Die vorstehende allgemeine Beschreibung und die nachfolgende Beschreibung der Zeichnungen und die detaillierte Beschreibung dienen als Beispiele und Erklärungen und sollen weitere Erläuterungen zu den beanspruchten Erfindungen geben. Weitere Objekte, Vorteile und neue Eigenschaften sind für Fachleute anhand der folgenden kurzen Beschreibung der Zeichnungen sowie aus der detaillierten Beschreibung der Erfindung leicht erkennbar.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Der Fachmann wird verstehen, dass die hierin beschriebenen Figuren lediglich der Veranschaulichung dienen. Es versteht sich, dass mehrere Aspekte der beschriebenen Ausführungsformen in einigen Beispielen als übertrieben oder ausgeweitet aufgezeigt werden, um das Verständnis der beschriebenen Ausführungsformen zu vereinfachen. In den Zeichnungen beziehen sich gleiche Referenzzeichen allgemein auf gleiche Merkmale, funktionell und / oder strukturell vergleichbare Elemente in den verschiedenen Zeichnungen. Die Zeichnungen sind nicht unbedingt maßstabsgetreu, stattdessen stehen die Prinzipien der Lehren im Vordergrund. Die Zeichnungen sollen den Geltungsbereich der vorliegenden Lehren in keiner Weise beschränken. Das System und das Verfahren können aus der folgenden veranschaulichenden Beschreibung mit Bezug auf die folgenden Zeichnungen besser verstanden werden:
-
1A veranschaulicht ein Blockdiagramm einer physischen Beispieltopologie eines Netzwerks.
-
1B veranschaulicht ein Blockdiagramm einer logischen Beispieltopologie, die auf der physischen Topologie des in 1A dargestellten Netzwerks aufbauend verwirklicht wird.
-
2 veranschaulicht beispielhaft ein Blockdiagramm eines Netzwerkverfügbarkeitsrechners.
-
3 veranschaulicht ein Flussdiagramm eines Beispielverfahrens zur Bestimmung des verfügbaren Datenflusses mithilfe des in 2 dargestellten Netzwerkverfügbarkeitsrechners.
-
4 veranschaulicht beispielhaft eine Cross-layer-FIG. für ein Netzwerk.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Weiter unten folgen detailliertere Beschreibungen verschiedener Konzepte, die mit den oben eingeführten Konzepten zusammenhängen, und Ausführungsformen dieser verschiedenen Konzepte, die weiter unten eingehender besprochen werden. Die Konzepte können auf viele verschiedene Arten und Weisen verwirklicht werden, da die beschriebenen Konzepte nicht auf irgendeine bestimmte Ausführungsform beschränkt sind. Beispiele für bestimmte Ausführungen und Anwendungen werden vor allem zum Zweck der Veranschaulichung gegeben.
-
Diese Offenbarung stellt einen probabilistischen Rahmen dar, der die Wahrscheinlichkeit dafür berechnen kann, dass der Bedarf für einen gegebenen Satz aus Datenflüssen gedeckt wird. Bei manchen Ausführungsformen kann die Wahrscheinlichkeit, dass die Anforderungen erfüllt werden, von der Wahrscheinlichkeit des Ausfalls von Infrastrukturkomponenten, Gruppen von Verbindungen mit gemeinsamen Risiken, die mithilfe eines Cross-layer-Netzwerktopologiemodells abgeleitet werden, und technischen Erwägungen zum Datenfluss (Traffic Engineering (TE)) abhängen. Die Betrachtung des Cross-layer-Netzwerktopologiemodells ermöglicht es den hierin beschriebenen Systemen und Verfahren, den Zusammenhang zwischen den physischen und logischen Topologien zu berücksichtigen.
-
1A veranschaulicht ein Blockdiagramm einer physischen Beispieltopologie eines Netzwerks 100. Das Netzwerk 100 beinhaltet übergeordnete Knoten 102(1)–102(3) (allgemein als übergeordnete Knoten 102 bezeichnet) und untergeordnete Knoten 106(1)–106(3) (allgemein als untergeordnete Knoten 106 bezeichnet). Die übergeordneten Knoten 102 sind über Switches 104(1) und 104(2) (allgemein als Switches 104 bezeichnet) mit den untergeordneten Knoten 106 verbunden. Die übergeordneten Knoten 102 und die untergeordneten Knoten 106 sind durch physische Verbindungen 108 mit den Switches 104 verbunden.
-
Bei manchen Ausführungsformen sind die Switches 104 wellenlängenselektive Switches oder Switches sonstiger Art, wie z.B. Switches zur optischen Leitungsvermittlung (Optical Circuit Switches (OCSs)). Jeder Switch 104 beinhaltet mehrere North Ports, mit denen die übergeordneten Knoten 102 verbunden sind, und mehrere South Ports, mit denen die untergeordneten Knoten 106 verbunden sind. Die Verbindungen zwischen den North Ports und den South Ports innerhalb der Switches 104 können konfiguriert werden, und Verbindungen zwischen den North Ports und den South Ports bestimmen, wie die über- und untergeordneten Knoten untereinander verbunden sind. Bei manchen Ausführungsformen wird eine physische Topologie als L1-Topologie bezeichnet, was sich auf die erste Ebene im Open Systems Interconnection (OSI) Stack bezieht.
-
1B veranschaulicht ein Blockdiagramm einer logischen Beispieltopologie 150, die auf der physischen Topologie von Netzwerk 100 aufsetzt. Die logische Topologie 150 definiert, wie die übergeordneten Knoten 102 über die physische Topologie des Netzwerks 100 kommunizieren, das durch die Switches 104 zum untergeordneten Knoten 106 hergestellt wird. Einer der Switches 104 verbindet z.B. den übergeordneten Knoten 102(1) mit dem untergeordneten Knoten 106(1), und der andere Switch 104 verbindet den übergeordneten Knoten 102(1) mit dem untergeordneten Knoten 106(3). Logische Verknüpfungen 112 bilden die Verbindung zwischen den übergeordneten Knoten 102 und den untergeordneten Knoten 106 innerhalb der logischen Topologie 150. Die FIG. der physischen Topologie des Netzwerks 100 auf die logische Topologie 150 kann als Cross-layer-Netzwerktopologie bezeichnet werden. Bei manchen Ausführungsformen wird eine logische Topologie als L3-Topologie bezeichnet, was sich auf die dritte Ebene im Open Systems Interconnection (OSI) Stack bezieht.
-
2 veranschaulicht beispielhaft ein Blockdiagramm eines Netzwerkverfügbarkeitsrechners 200. Der Netzwerkverfügbarkeitsrechner 200 beinhaltet einen Netzwerkmodellierer 202, der so konfiguriert ist, dass er Daten empfängt, die eine physische Topologie (auch als L1-Topologie bezeichnet) und eine logische Topologie angeben (auch als L3-Topologie bezeichnet). Der Netzwerkverfügbarkeitsrechner 200 beinhaltet ferner einen Ausfallsgenerator, der so konfiguriert ist, dass er für jede der Verbindungen in der physischen Topologie zufällige Fehlfunktionen erzeugt. Der Netzwerkverfügbarkeitsrechner 200 beinhaltet einen TE-Simulator (Traffic Engineering Simulator) 206, der die vom Netzwerkmodellierer 202 und vom Ausfallsgenerator erzeugten oder empfangenen Daten empfängt und berechnet, ob das durch die L1- und L3-Topologien definierte Netzwerk Datenflussanforderungen erfüllen kann.
-
Der Netzwerkverfügbarkeitsrechner 200 wird in Form einer logischen Spezialschaltung (z.B. eines FPGA (Field Programmable Gate Array) oder eines ASIC (Application Specific Integrated Circuit)) bzw. eines Allzweck-Computergerätes ausgeführt. Der Netzwerkverfügbarkeitsrechner 200 kann, zusätzlich zur Hardware, auch Programmcode beinhalten, der auf einem computerlesbaren Medium gespeichert ist, der bei seiner Ausführung veranlasst, dass der Netzwerkverfügbarkeitsrechner 200 eine oder mehrere der hierin beschriebenen Verfahren ausführt.
-
Der Netzwerkmodellierer 202 des Netzwerkverfügbarkeitsrechners 200 ist so konfiguriert, dass er L1- und L3-Topologien empfängt, sowie auch Cross-layer-Netzwerkmodelle, die die Beziehung zwischen den L1- und L3-Topologien abbilden. Das Cross-layer-Netzwerkmodell gibt an, welche Komponenten in der L1-Topologie die logischen Verknüpfungen in der L3-Topologie erfüllen. Unter Bezugnahme auf die 1A und 1B, besteht z.B. eine logische Verknüpfung zwischen dem Knoten 102(1) und dem Knoten 106(3). Die logische Verknüpfung könnte durch den Switch 104(1) oder durch den Switch 104(2) hergestellt werden. Der Netzwerkmodellierer 202 kann die L3-Topologie grafisch darstellen, unter der Bezeichnung G. Jede logische Verknüpfung in G hat eine Kapazität auf der Basis der Kapazität der physischen Verbindungen in der zu Grunde liegenden L1-Topologie. Bei manchen Ausführungsformen wird jeder Verbindung eine Zufallsvariable zugeordnet, um eine mögliche Verschlechterung auf der Basis möglicher Fehlfunktionen zu erfassen. Die möglichen Fehlfunktionen können u.a. durchtrennte Glasfasern, Verstärkerfehlfunktionen, Switch/Router-Fehlfunktionen, Fehlfunktionen der Linecard, Fehlfunktionen der Steuerungsebene und Link Drains sein. Der Netzwerkmodellierer 202 speichert den Vektor der Verbindungskapazitäten als X. Bei manchen Ausführungsformen durchqueren mehrere logische Verknüpfungen dieselbe physische Verbindung und werden dann als Gruppen von Verbindungen mit gemeinsamen Risiken (SRLGs) bezeichnet, denn wenn die physische Verbindung versagt, würde auch jede der logischen Verknüpfungen, die dieselbe physische Verbindung durchqueren, versagen. Dementsprechend ist der zufällige Vektor der Verbindungskapazitäten X ein korrelierter Zufallsvektor, da manche Verbindungskapazitäten aufgrund der SRLGs miteinander korrelieren.
-
Der Ausfallsgenerator 204 des Netzwerkverfügbarkeitsrechners 200 erzeugt Kombinationen aus möglichen Fehlfunktionen, die im Netzwerk auftreten. Jede der möglichen Fehlfunktionen kann als Ausfallsprobe bezeichnet werden und schließt eine Fehlfunktion einer oder mehrerer Verbindungen und sonstiger Netzwerkgeräte ein. Bei manchen Ausführungsformen nimmt der Ausfallsgenerator 204 bisherige Daten zu Fehlfunktionen entgegen, wie z.B. die Wahrscheinlichkeit, dass eine Verbindung oder ein Netzwerkgerät zu einem bestimmten Zeitpunkt T ausfällt. Bei manchen Ausführungsformen sind die vom Ausfallsgenerator 204 erzeugten möglichen Fehlfunktionen diejenigen Fehlfunktionen, die im Netzwerk auf der Basis der bisherigen Daten zu Fehlfunktionen mit der größten Wahrscheinlichkeit auftreten. Bei anderen Ausführungsformen kann der Ausfallsgenerator 204 Anweisungen vom Benutzer für die Erzeugung möglicher Fehlfunktionen empfangen. Ein Benutzer kann z.B. eine „Was-wäre-wenn-Analyse“ durchführen wollen, um die Folgen einer bestimmten Fehlfunktion zu ermitteln. In solchen Fällen kann der Benutzer dem Ausfallsgenerator 204 Angaben darüber geben, welche Verbindungen und Netzwerkgeräte ausfallen sollen und in welcher Weise.
-
Der TE-Simulator 206 des Netzwerkverfügbarkeitsrechners 200 ist ein datenflusstechnischer Simulator, der Daten vom Netzwerkmodellierer 202, vom Ausfallsgenerator 204 und aus sonstigen Quellen empfängt, um zu berechnen, welche Bedarfe über die L3-Topologie gedeckt werden und welche nicht. Das Berechnungsverfahren dafür, welche Bedarfe gedeckt werden, wird in Bezug auf das in 3 dargestellte Verfahren weiter diskutiert.
-
3 veranschaulicht ein Flussdiagramm eines Beispielverfahrens 300 zur Bestimmung des verfügbaren Datenflusses. Das Verfahren 300 beinhaltet den Empfang einer Angabe einer physischen Topologie, einer logischen Topologie und verschiedener Datenflussanforderungen (Schritt 302). Zum Verfahren 300 gehört auch der Empfang eines Cross-layer-Netzwerkmodells (Schritt 304). Das Verfahren 300 beinhaltet zudem für eine vorgegebene Anzahl Zyklen, die interaktive Erzeugung einer Ausfallsprobe (Schritt 308) sowie die Aktualisierung des logischen Topologiemodells als Reaktion auf die Ausfallsprobe (Schritt 310). Ein TE-Simulator dient dann dazu, zu ermitteln, ob das aktualisierte logische Topologiemodell die Datenflussanforderungen erfüllen kann (Schritt 312). Das Verfahren 300 beinhaltet die Berechnung der durchschnittlichen Verfügbarkeit des Netzwerks mithilfe einer Monte-Carlo-Methode (Schritt 316). Entsprechend der hierin gegebenen Beschreibung bezieht sich die Netzwerkverfügbarkeit oder die Verfügbarkeit eines Datenflusses auf das Netzwerk, das die Datenflüsse verarbeiten kann. Steht z.B. ein bestimmter Datenfluss zur Verfügung, so kann das Netzwerk diesem eine Route zwischen der gewünschten Quelle und dem Ziel zuweisen.
-
Wie weiter oben ausgeführt, beinhaltet das Verfahren 300 den Empfang von Daten, die eine physische Topologie, eine logische Topologie und Datenflussanforderungen darstellen (Schritt 302). Wie weiter oben mit Bezug auf 2 beschrieben, werden die Daten vom Netzwerkmodellierer 202 und vom Ausfallsgenerator 204 des Netzwerkverfügbarkeitsrechners 200 empfangen. Manche der Daten, wie z.B. Datenflussanforderungen, können unmittelbar dem TE-Simulator 206 zur Verfügung gestellt werden. Bei manchen Ausführungsformen nimmt der Netzwerkverfügbarkeitsrechner 200 auch Daten als Eingaben an, die die durchschnittliche Dauer zum Abstellen einer Fehlfunktion, die durchschnittliche Dauer zwischen Fehlfunktionen für jede Verbindung und jedes Netzwerkgerät oder sonstige Daten zu Fehlfunktionen darstellen, die mit dem Alter oder der Betriebsdauer der Netzwerkkomponenten zusammenhängen. Der Netzwerkverfügbarkeitsrechner 200 kann auch einen Satz Leistungsziele (SLOs) empfangen, die Messgrößen enthalten (z.B. den Anteil der Zeit, während der die Bandbreite zwischen zwei Knoten über der vorgegebenen Verfügbarkeit liegt), die aufgrund eines bestimmten Produktes, einer Anwendung oder eines Vertrags gefordert sind.
-
Bezugnehmend auf 3: Das Verfahren 300 beinhaltet den Empfang eines Cross-layer-Netzwerkmodells, das die logische Topologie auf die physische Topologie abbildet (Schritt 304). Das Cross-layer-Netzwerkmodell bildet die logische Topologie auf die physische Topologie ab, so dass der Netzwerkverfügbarkeitsrechner ermitteln kann, welche logischen Verknüpfungen betroffen sind, wenn in der physischen Topologie die Ursache einer Fehlfunktion auftritt.
-
4 veranschaulicht eine Cross-layer-FIG. für ein Netzwerk 400. Das Netzwerk 400 beinhaltet einen Quellenknoten 402, der über einen Routing-Knoten 404 mit zwei Zielknoten 406(A) und 406(B) verbunden ist. Auf der physischen Ebene sind die Knoten über physische Verbindungen 408 verbunden. Auf der logischen Ebene ist der Quellenknoten 402 logisch über logische Verknüpfungen 410(A) bzw. 410(B) mit dem Zielknoten 406(A) und dem Zielknoten 406(B) verknüpft. Das Cross-layer-Netzwerkmodell zeigt an, dass die logische Verknüpfung 410(A) durch physische Verbindungen 408(A) und 408(B) und die logische Verknüpfung 410(B) durch die physischen Verbindungen 408(A) und 408(C) gewährleistet wird.
-
Bei manchen Ausführungsformen wird die Kapazität eines oder mehrerer Verbindungen verändert, um zu bestimmen, ob die mangelnde Verfügbarkeit eines bestimmten Datenflusses ihre Ursache in Beschränkungen der Topologie hat (z.B. nicht genug verschiedene Pfade zwischen der Quelle und dem Ziel des Datenflusses), oder ob die Kapazität der Verbindungen eine Rolle dabei spielt und die mangelnde Verfügbarkeit an Stauungen liegt. Bei solchen Ausführungsformen erhöht der Netzwerkverfügbarkeitsrechner die Kapazität der Verbindungen um einen hypothetisch großen Wert (z.B. 100 Mal die gegenwärtige Kapazität der Verbindung), um die Auswirkungen der Verbindungskapazität während Ausfällen zu beseitigen. Das Verfahren 300 kann mit den Verbindungen mit großer Kapazität fortgeführt werden, und die sich daraus ergebenden Verfügbarkeitswerte stellen die Obergrenze des verfügbaren Datenflusses dar, wo lediglich Einschränkungen der Topologie des Netzwerks berücksichtigt werden.
-
Zum Verfahren 300 gehört darüber hinaus die iterative Erzeugung eine Ausfallsprobe für eine vorgegebene Anzahl Zyklen (Schritt 308). Die Ausfallsprobe beinhaltet einen Satz zufälliger Fehlfunktionen in den physischen Verbindungen (oder sonstigen Netzwerkgeräten) der physischen Topologie. Bei manchen Ausführungsformen basiert der Satz Fehlfunktionen auf der Ausfallshäufigkeit, die in den Netzwerkverfügbarkeitsrechner eingegeben wird. Bei anderen Ausführungsformen werden die zufälligen Ausfallsproben in der L3-Topologie durch zu Grunde liegende L1-Verbindungen erzeugt, die ausfallen. Die Verwendung der Cross-layer-FIG. ermöglicht die Simulation von Problemen in der Bedarfsdeckung durch Fehlfunktionen in der L1-Topologie. Bezüglich 4 würde z.B. ein Ausfall der physischen Verbindung 408(A) zu Kapazitätsproblemen in den beiden logischen Verknüpfungen 410(A) und 410(B) führen, während ein Ausfall der physischen Verbindung 408(B) zu Kapazitätsproblemen in der logischen Verknüpfung 410(A) führen würde.
-
Bei manchen Ausführungsformen kann es schwierig sein, die Ursache einer Fehlfunktion in einem Netzwerk zu ermitteln und damit diese zu modellieren. Fehlfunktionen, bei denen die Ursache des Ausfalls schwer zu verstehen oder zu modellieren ist, werden analysiert, indem Ausfallsproben erzeugt werden, indem zunächst die Kapazitätswahrscheinlichkeitsverteilung jeder logischen Verknüpfung ermittelt wird (z.B. die Wahrscheinlichkeit dafür, dass eine gegebene Verbindung über eine bestimmte Kapazität verfügt). Die Fehlfunktionen, deren Ursachen bekannt sind, werden von der Kapazitätswahrscheinlichkeitsverteilung abgezogen, um eine Restwahrscheinlichkeitsverteilung der Kapazität der Verbindung zu erhalten. Bei manchen Ausführungsformen wird davon ausgegangen, dass Fehlfunktionen mit unbekannten Ursachen ausschließlich in den logischen Verknüpfungen auftreten (oder sich auf diese auswirken). Fehlfunktionen mit unbekannten Ursachen werden analysiert, indem aus der Restwahrscheinlichkeitsverteilung Ausfallsproben erzeugt werden. Bei manchen Ausführungsformen beinhalten die Fehlfunktionen eine Mischung aus unbekannten und bekannten Ursachen.
-
Immer noch bezogen auf 3, wird das logische Topologiemodell als Reaktion auf die simulierten Fehlfunktionen in der physischen Topologie (Schritt 310) aktualisiert, sobald eine Ausfallsprobe erzeugt wird. Auch bezogen auf 4 wird z.B. die logische Topologie im Modell die logische Verknüpfung 410(A) nicht mehr einschließen, wenn die physische Verbindung 408(B) vollständig ausfällt. Zur Aktualisierung der logischen Topologiemodells gehört auch die Bestimmung der Kapazität jeder der Verbindungen im logischen Netzwerk. Bei manchen Ausführungsformen wird die Kapazität der Verbindung als Variable mit zwei Werten dargestellt – dem ersten Wert, der die normale Kapazität der Verbindung darstellt, und dem zweiten Wert, der die Kapazität der Verbindung bei ihrem Ausfall darstellt. Bei manchen Ausführungsformen versagt die logische Verknüpfung wenn, dann vollständig. Bei anderen Ausführungsformen versagt die logische Verknüpfung teilweise – z.B. aufgrund eines Ausfalls der Linecard des Routers oder sonstiger Fehlfunktionen, die die Kapazität der Verbindung teilweise verringern, anstatt dass diese vollständig ausfällt.
-
Bei manchen Ausführungsformen schaltet das Verfahren 300, wie in 3 dargestellt, eine vorgegebene Anzahl Male und erzeugt dabei bei jedem Durchlauf eine neue Ausfallsprobe und testet sie. Da das Netzwerk SRLGs enthalten kann können verschiedene Fehlfunktionen im physischen Netzwerk zum gleichen aktualisierten logischen Topologiemodell führen. In solchen Fällen kann der Netzwerkverfügbarkeitsrechner die vergangenen Durchgänge prüfen um zu ermitteln, ob für das gegenwärtige logische Topologiemodell eine datenflusstechnische Berechnung durchgeführt wurde, bevor zum nächsten Schritt des Verfahrens 300 übergegangen wurde. Wenn z.B. der Netzwerkverfügbarkeitsrechner die gegenwärtigen Ergebnisse der Ausfallsprobe in einem logischen Topologiemodell bestimmt, das in einem vorangegangenen Durchlauf analysiert wurde, kann sich der Netzwerkverfügbarkeitsrechner daran erinnern, dass die Ausfallsprobe das gleiche logische Topologiemodell erzeugt hat wie ein früherer Durchgang, und zu dem Schritt 308 des Verfahrens 300 zurückkehren, um eine neue Ausfallsprobe zu erzeugen. Wie weiter unten beschrieben, können das hierin beschriebenen Verfahren auch parallel ausgeführt werden, um die Rechenzeit zu verkürzen.
-
Zum Verfahren 300 gehört auch das Ermitteln dessen, ob das aktualisierte lokale Topologiemodell die Vielzahl von Datenflussanforderungen decken kann (Schritt 312), mit Hilfe eines datenflusstechnischen Simulators. Der TE-Simulator des Netzwerkverfügbarkeitsrechners kann das aktualisierte logische Topologiemodell, den Vektor der Verbindungskapazitäten X, und einen Satz Datenflussanforderungen D als Eingaben akzeptieren. Der TE-Simulator gibt f(X, D) zurück, eine Vektorfunktion, die angibt, welche Datenflussanforderungen entweder gar nicht oder nur teilweise erfüllt werden. Werden die Verbindungskapazitäten z.B. in Form zweier Werte bereitgestellt, ist f(X, D) gleich 1, wenn ein Bedarf gedeckt ist, und 0, wenn ein Bedarf nicht gedeckt ist. Die Dimension des Ausgabevektors entspricht der Anzahl der Anforderungen in D.
-
Bei manchen Ausführungsformen wird der datenflusstechnische Simulator auch so konfiguriert, dass er die Latenz berechnet und verfolgt. Für jede der logischen Topologien berechnet der datenflusstechnische Simulator z.B. den Satz Pfade, über die jeder Datenfluss geroutet wird, und er berechnet auch die Latenz (z.B. die Laufzeitverzögerung) jedes Pfades im Weitverkehrsnetz (WAN). Die berechnete Latenzstatistik wird über mehrere Topologieproben kombiniert, um eine vollständige Latenzverteilung im Rahmen der Ausfallszenarien zu erzeugen. Die Latenzverteilung wird mit den im Leistungsziel festgelegten Latenzperzentilen verglichen, um zu bestimmen, ob ein bestimmter Datenfluss das die Ziellatenz erfüllt.
-
Als nächstes beinhaltet das Verfahren 300 die Bestimmung, ob die vorgegebene Anzahl Zyklen durchgeführt wurde (Schritt 314). Wurde die vorgegebene Anzahl Zyklen durchgeführt, so kann das Verfahren 300 beendet werden. Bei manchen Ausführungsformen berechnet der Netzwerkverfügbarkeitsrechner dann den Erwartungswert (statistischen Durchschnittswert) der Vektorfunktion f(X, D) mithilfe der Monte-Carlo-Methoden (Schritt 316). Der Netzwerkverfügbarkeitsrechner gibt den Erwartungswert als Verfügbarkeit der Datenflüsse im logischen Netzwerk aus. Bei manchen Ausführungsformen wird die Verfügbarkeit der Datenflüsse mit dem SLO verglichen, um zu ermitteln, ob das logische Topologiemodell die SLO erfüllt. Wenn die vorgegebene Anzahl Zyklen noch nicht ausgeführt wurde, so schließt das Verfahren 300 die Erzeugung einer neuen Ausfallsprobe ein.
-
Bei der Ausführung des o.g. Verfahrens 300 wirkt sich die Genauigkeit der in Schritt 302 empfangenen Eingabedaten auf die Genauigkeit der ausgegebenen Berechnungen aus. Bei manchen Ausführungsformen ist das Sammeln genauer Ausfallswahrscheinlichkeiten schwierig, da die Netzwerkkomponenten laufend aktualisiert, ersetzt und verbessert werden. Der Zusammenhang zwischen den Daten zur Wahrscheinlichkeit, dass eine Komponente versagt, und der Verfügbarkeit von Datenflüssen ist äußerst nichtlinear und hat keine geschlossene Form. Bei manchen Ausführungsformen wird die Empfindlichkeit einer Ausfallswahrscheinlichkeit mithilfe einer Finite-Differenzen-Methode analysiert. Zur Finite-Differenzen-Methode gehört zunächst die Durchführung des Verfahrens 300 mit den ursprünglichen Ausfallswahrscheinlichkeitsdaten, gefolgt von der erneuten Durchführung des Verfahrens 300 als Reaktion auf eine geringfügige Änderung der Ausfallswahrscheinlichkeitsdaten (z.B. kann die Ausfallswahrscheinlichkeit leicht erhöht oder verringert werden). Die Differenz zwischen den beiden Berechnungen wird dann anhand der Veränderungen der ursprünglichen Ausfallswahrscheinlichkeitsdaten normiert, um die geänderten Ausfallswahrscheinlichkeitsdaten zu erzeugen, die angeben, wie empfindlich die Ergebnisse auf die Variationen der Wahrscheinlichkeiten reagieren, dass die Komponenten ausfallen.
-
Bei manchen Ausführungsformen wird die Empfindlichkeit der Ergebnisse auf die Variation der Ausfallswahrscheinlichkeiten der Komponenten berechnet, indem das Verfahren 300 mit veränderten Daten zur Ausfallswahrscheinlichkeit durchgeführt wird, die unmittelbar anhand der während der Simulation tatsächlicher Ausfallsdaten beobachteten Datenflussverfügbarkeitsproben abgeschätzt werden. Die Durchführung des Verfahrens 300 mit den tatsächlichen Ausfallsdaten ermöglicht die Durchführung einer einzelnen Simulation, anstatt einer anderen Simulation, bei der jeweils die Ausfallsdaten für nur eine Netzwerkkomponente verändert werden.
-
Wie in Bezug auf Schritt 302 des Verfahrens 300 beschrieben, werden bei manchen Ausführungsformen der Simulation Eingaben zur Verfügung gestellt, die eine Zeitdimension enthalten. Die Einbeziehung einer Zeitdimension ermöglicht die Berechnung der erwarteten Datenflussverfügbarkeit und auch der Verteilung dazu, wie oft (und wie lange) Datenflussausfälle auftreten können. Die Einbeziehung einer Zeitdimension in die Simulation ermöglicht eine Unterscheidung zwischen kurzen Datenflussausfällen von langen Datenflussausfällen, die ununterscheidbar sind, wenn keine Zeitdimension vorhanden ist. Bei diesen Ausführungsformen gibt der Netzwerkverfügbarkeitsrechner die durchschnittliche Verfügbarkeit für jeden Datenfluss und (als Histogramm) die Verteilung der Ausfallsdauer für jeden Datenfluss aus.
-
Bei Ausführungsformen, die eine Zeitdimension enthalten, wird der Zustand des physischen Netzwerks als Monte-Carlo-Simulation der Markov-Kette mit kontinuierlicher Zeit modelliert: Y(y) = (ye(t))e∊E worin y(t) den Zustand der jeweiligen logischen Verknüpfung zum Zeitpunkt t darstellt. Bei manchen Ausführungsformen beinhaltet die zeitabhängige Markov-Kette zwei Zustände (0 und 1), die „Totalausfall“ bzw. „voll betriebsbereit“ darstellen. Bei anderen Ausführungsformen kann die zeitabhängige Markov-Kette die Anzahl M Zustände beinhalten, die die Zustände zwischen „Totalausfall“ und „voll betriebsbereit“ darstellen. Der Übergang zwischen den Zuständen kann Ausfalls- und Reparaturhäufigkeiten unterliegen, die anhand von historischen Daten abgeschätzt werden können.
-
Wenn die logische Topologie N logische Verknüpfungen beinhaltet, von denen jede M Zustände annehmen kann, so ist die Anzahl der möglichen Zustände Y MN, und die Differenzialgleichung, die die Änderung in der Verteilung von Verbindungszuständen beschreibt, ist: d / dtp(Y(y)) = QTp(Y(y)) worin Q eine MN×MN-Matrix für die Übergangsrate mit einer Zeile und einer Spalte für jeden der möglichen Netzwerkzustände ist.
-
Bei manchen Ausführungsformen wird davon ausgegangen, dass jede der logischen Verknüpfungen unabhängig ist und dass die Wahrscheinlichkeit, dass die Zustände von mehr als einer L1-Verbindung sich gleichzeitig ändern, null ist. Bei diesen Ausführungsformen hat jeder Zustand (M – 1)·N mögliche benachbarte Zustände, in die er übergehen kann.
-
Bei manchen Ausführungsformen wird das Modell mit Zeitdimension simuliert, indem ein Hold-and-Jump-Verfahren darauf abgebildet wird. Bei diesem Verfahren wird die Zeitdauer, die das Netzwerk in dem bestimmten Zustand verbleibt, exponentiell mit einer Rate verteilt, die der Summe aller Übergangraten der benachbarten Zustände entspricht. Die Wahrscheinlichkeit eines Sprunges von einem Zustand i in einen Zustand j im Hold-and-Jump-Verfahren ist definiert durch:
-
Bei manchen Ausführungsformen werden die hierin beschriebenen Verfahren dazu verwendet, die erwartete Verfügbarkeit für die anteilige Bedarfsdeckung für jeden der Datenströme abzuschätzen. Die Verfügbarkeit eines Datenstroms kann zwischen 0% und 100% Deckung liegen, und die zugrundeliegenden Dienste behandeln verschiedene Verfügbarkeiten unterschiedlich. Misst der zugrundeliegende Dienst z.B., dass der Datenfluss zu 90% gedeckt ist, so kann der Dienst seine Senderate verringert, um die Datenflussverfügbarkeit zu erhöhen. Durch Abschätzung der erwarteten Verfügbarkeit für die anteilige Bedarfsdeckung können Netzwerke geplant und analysiert werden, die einer ganzen Palette von Bandbreitenanforderungen gerecht werden. Es können z.B. Netzwerke geplant werden, die ein geringeres Leistungsziel erfüllen, das 100% Datenflussverfügbarkeit erforderlich macht, oder ein höheres Leistungsziel, das weniger als 100% Datenflussverfügbarkeit bietet.
-
Bei diesen Ausführungsformen wird die Verfügbarkeit eines Datenflusses durch ein 4-Tupel beschrieben, das die Quelle, das Ziel, die Bandbreitenanforderungen und die Dienstleistungsklasse beinhaltet. Eine kumulative Verteilungsfunktion (CDF) wird berechnet, indem eine Probe aus einem Anteil gedeckter Bedarfe für einen Datenfluss über mehrere Topologien genommen wird.
-
Z.B. berechnet der datenflusstechnische Simulator für jeden Datenfluss f den Grad der Bedarfsdeckung pf. Dann wird aus pf über A Topologien eine Probe genommen, um eine Reihe von Anteilen mit Bedarfsdeckung {pf} zu erzeugen. Die CDF stellt den Prozentsatz der nicht erfüllten Bedarfe des Datenflusses dar und berechnet sich als {1 – pf}. Für jeden Punkt (x, y) auf der CDF-Kurve stellt der y-Wert den Anteil der Zeit dar, den der Prozentsatz der Bedarfsdeckung größer oder gleich (1 – x) ist. Der (1 – x)-Wert gibt die untere Grenze der verfügbaren Nachfrage an.
-
Bei manchen Ausführungsformen verwendet das Netzwerk ein Multi-Path Label Switching(MPLS)-Protokoll mit automatischer Bandbreite, wo die Datenströme nicht willkürlich aufgeteilt werden können und das Auffinden und das Ändern der Größe der Label Switch Paths (LSP) dynamisch erfolgt. Diese Arten von Bandbreiteprotokollen können sich auf die Genauigkeit der Datenflusssimulationen zur Berechnung der Verfügbarkeit für die anteilige Bedarfsdeckung auswirken. Bei diesen Ausführungsformen kann der ursprüngliche Datenfluss in S Teilströme aufgeteilt werden, von denen jeder einen gleich großen Bedarf hat. Bei manchen Ausführungsformen entspricht S der Anzahl der Label Switch Paths zwischen jedem Knotenpaar. Die Teilströme erhalten auch eine zufällige Reihenfolge, um die nicht-deterministischen Eigenschaften des MPLS-Protokolls zu simulieren. Jeder Teilstrom wird mithilfe eines Constrained Shortest Path First(CSPF)-Algorithmus über das Netzwerk geroutet, der eine durchführbare oder undurchführbare Lösung angibt. Der Anteil des gedeckten Bedarfs im ursprünglichen Datenfluss wird berechnet, in dem die Anzahl der durchführbaren Teilströme durch die Gesamtzahl aller Teilströme geteilt wird. Da das Auffinden und die Anpassung der Größe der Label Switch Paths dynamisch erfolgt, ist der Sampling-Mechanismus ein Joint Space Sampling Mechanismus, der Proben sowohl von Ausfallszenarien als auch Datenflussordern nimmt, um bei gegebener Probenanzahl mit hoher Sicherheit die Verfügbarkeit angeben zu können.
-
Bei manchen Ausführungsformen werden zur Durchführung der hierin beschriebenen Verfahren auf einer rechnerisch vernünftigen Zeitachse die Schritte des Verfahrens parallel ausgeführt. Das hierin beschriebene Verfahren kann parallel auf hunderten, tausenden oder zehntausenden Rechenmaschinen laufen.
-
Bei einer Ausführungsform unter Verwendung einer Monte-Carlo-Simulation, die keine Zeitdimension beinhaltet, werden zuerst Daten in das System eingegeben. Zweitens werden zufällige Seeds gebildet. Auf der Grundlage jedes der zufälligen Seeds wird eine Abfolge von Ausfallsproben (z.B. zufälligen Ausfallsursachen) erzeugt und das resultierende logische Topologiemodell erstellt. Die Erzeugung der Abfolge von Ausfallsproben und die Erstellung der resultierenden logischen Topologiemodelle für jeden der zufälligen Seeds wird parallel durchgeführt. Da wie oben beschrieben die gleiche logische Topologie von verschiedenen Ausfallsursachen gebildet werden kann, werden die logischen Topologien entdupliziert, um wiederholte logische Topologien zu entfernen, und an jede der Rechenmaschinen wird eine andere der eindeutigen logischen Topologien ausgegeben. Jede separate Rechenmaschine simuliert die Datenflussanforderungen auf der Grundlage ihres eindeutigen logischen Topologiemodells, indem sie mehrere Datenströme simuliert, die das logische Topologiemodell durchqueren. Die Rechenmaschine gibt eine Angabe für einen jeden aus der Vielzahl von Datenströmen aus, die nicht erfüllt wurden. Jede der Rechenmaschinen simuliert Datenflussanforderungen mithilfe derselben Vielzahl von Datenströmen. Für jeden der Datenströme berechnet dann eine andere Rechenmaschine eine durchschnittliche Verfügbarkeit für einen jeden aus der Vielzahl von Datenströmen.
-
Bei Ausführungsformen unter Verwendung einer Monte-Carlo-Simulation der Markov-Kette, die durchaus eine Zeitdimension beinhaltet, werden auch die Zeitintervalle verfolgt, in denen jede der logischen Topologien vorhanden sind. Die parallele Simulation der Monte-Carlo-Simulation der Markov-Kette beginnt wie oben in Bezug auf die parallele Simulation der Monte-Carlo-Simulation beschrieben. Es werden mehrere zufällige Seeds erzeugt, und die zu analysierende Gesamtzeit wird in mehrere Intervalle aufgeteilt. Die vollständige Zeitachse der kontinuierlichen Markov-Kette wird in aufeinanderfolgende Segmente aufgeteilt. Jedes der Segmente hat eine eindeutige Bezeichnung, die „Grain“ genannt wird. Das Grain dient der Erkennung und Sortierung jedes der Zeitintervalle während der Simulation. Wie weiter oben beschrieben, kann sich die gleiche logische Topologie aus der gleichen Ausfallursache ergeben. Darüber hinaus kann auch dieselbe oder eine andere Ausfallursache zu unterschiedlichen Zeitpunkten zu der gleichen logischen Topologie führen. In der ersten Shuffle-Phase wird jedes einzelne logische Topologiemodell, zusammen mit den entsprechenden Zeitintervallen und Grains, an eine einzelne Rechenmaschine übertragen. Dementsprechend wird jedes logische Topologiemodell an eine andere Rechenmaschine übertragen.
-
Als nächstes wird jedes einzelne logische Topologiemodell mit den Datenflussanforderungen getrennt simuliert. Die Simulation gibt die Datenflüsse an, die zur Verfügung stehen, sowie auch die, die nicht zur Verfügung stehen. Jeder Datenfluss, der nicht verfügbar ist, wird zusammen mit dem entsprechenden Grain und den Zeitintervallen der logischen Topologie ausgegeben.
-
Dann werden die ausgegebenen Zeitintervalle auf der Basis ihres jeweiligen Datenflusses und Grainpaares zusammengruppiert. Die mit jedem der Datenflüsse und Grainpaare verbundenen Zeitintervalle werden an eine einzige Rechenmaschine übertragen und die Zeitintervalle in chronologischer Reihenfolge sortiert. Benachbarte Zeitintervalle ohne Lücken dazwischen werden zu einem durchgehenden Zeitintervall zusammengefügt, das einen durchgehenden Ausfall darstellt. Unter Verarbeitung der sortierten Zeitintervalldaten wird für jeden Datenfluss und jedes Grainpaar ein Histogramm der Ausfallsdauer berechnet. Im nächsten Schritt werden die Histogramme nach ihren Grains gruppiert und für jeden Datenfluss zu einem einzigen Histogramm zusammengefügt.
-
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können als digitale elektronische Schaltungen oder als Computer-Software, Firmware oder Hardware verwirklicht werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer baulichen Ausführungen oder als Kombinationen einer oder mehrerer davon. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Durchführung durch oder die Kontrolle des Betriebs des datenverarbeitenden Apparats kodiert werden.
-
Bei einem computerlesbaren Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen computerlesbaren Speicherträger, einen Arbeitsspeicher oder einen Speicherarray oder -gerät mit seriellem Zugriff oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann Quelle von oder Ziel für Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Disks oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein. Ein computerlesbares Medium ist dementsprechend greifbar und nicht transitorisch.
-
Die in dieser Spezifikation beschriebenen Operationen können von einem datenverarbeitenden Apparat mit Daten ausgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert sind oder von sonstigen Quellen empfangen werden. Der Begriff „datenverarbeitender Apparat“ umfasst alle Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise durch einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehreren Chips oder Kombinationen des Vorstehenden. Der Apparat kann logische Schaltungen mit einem Sonderzweck, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung) enthalten. Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Durchführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Durchführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
-
Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer Programmiersprache beliebiger Art geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt werden, auch als eigenständiges Programm oder als Modul, Komponente, Subroutine, Objekt oder andere Einheit, die zur Verwendung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
-
Prozessoren, die sich zur Ausführung eines Computerprogramms eignen, sind z.B. sowohl Mikroprozessoren für allgemeine als auch besondere Zwecke, sowie ein oder mehrere Prozessoren von Computern beliebiger Art. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Tätigkeiten gemäß Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben.
-
Diese Spezifikation enthält zwar viele spezifische Einzelheiten zur Ausführungsform, diese sollten jedoch nicht als Einschränkungen der Erfindungen oder des Umfangs des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte, in dieser Beschreibung im Kontext gesonderter Ausführungsformen der betreffenden Technologie beschriebene Merkmale können auch in Kombination in einer einzelnen Implementierung implementiert werden. Umgekehrt können verschiedene, im Kontext einer einzelnen Ausführungsform beschriebenen Merkmale auch in mehreren Ausführungsformen gesondert oder in einer geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
-
In ähnlicher Weise werden Operationen in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, dies ist jedoch nicht so zu verstehen, dass diese Operationen in der gezeigten Reihenfolge oder überhaupt nacheinander ausgeführt werden müssen, oder dass alle dargestellten Operationen ausgeführt werden müssen, um die gewünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Des Weiteren sollte die Unterscheidung zwischen unterschiedlichen Systemen in den vorgehend beschriebenen Ausführungsformen nicht als eine notwendige Trennung für alle Ausführungsformen verstanden werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen in einem einzelnen Produkt oder in mehrere Produkte integriert werden können.
-
Somit wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Diese und andere Ausführungsformen fallen in den Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge ausgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.