-
HINTERGRUND
-
In Kommunikationsnetzen, wie beispielsweise Telefonnetzwerken und Datennetzen, einschließlich des Internets, können Informationen entlang eines Pfades von einem Quellgerät zu einem Zielgerät gesendet werden. Das Quellgerät und das Zielgerät können beispielsweise Personal Computer, Server wie E-Mail-Server, Webserver oder Dateiserver oder andere elektronische Geräte, die in der Lage sind, über das Netzwerk Informationen zu senden und/oder zu empfangen, sein.
-
Die Informationen können ein oder mehrere Weiterleitungsgeräte, wie beispielsweise Router oder andere elektronische Geräte, die die Fähigkeit haben, die Informationen an ein anderes Gerät weiterzuleiten, durchlaufen. Die Zwischengeräte können die Informationen erhalten und die Funktionen, Algorithmen, Datenstrukturen und Regeln empfangen, um zu bestimmen, wo und wie die Informationen weitergeleitet werden müssen, damit sich die Informationen zu ihrem beabsichtigten Ziel bewegen. Diese Funktionen, Algorithmen, Datenstrukturen und Regeln bilden die „Weiterleitungsebene“ des Netzwerks. Die Funktionen, Algorithmen, Datenstrukturen und Regeln der Weiterleitungsebene können von einem oder mehreren Weiterleitungsgeräten im Netzwerk implementiert und/oder durchgesetzt werden.
-
So kann beispielsweise eine Weiterleitungsgerät ein Datenpaket auf einer Eingangsschnittstelle empfangen, die Zieladresse des Datenpakets nachschlagen und eine Regel anwenden, die bewirkt, dass das Weiterleitungsgerät die Zieladresse in einer bestimmten Routingtabelle nachschlägt. Die Routingtabelle kann eine Liste von „nächsten Zielen“ bereitstellen, die ein Gerät repräsentieren, an das das Datenpaket gesendet werden soll. Das nächste Ziel für ein bestimmtes Datenpaket kann beispielsweise das endgültige Zielgerät oder eine andere Zwischenweiterleitungsgerät sein. Das nächste Ziel kann durch eine in der Routingtabelle gespeicherte Adresse identifiziert werden. Die nächsten Ziele, die in der Routingtabelle gespeichert sind, können durch einen endgültigen Bestimmungsort des Datenpakets indiziert werden. Somit kann man bei der Suche nach dem endgültigen Ziel des Datenpakets (z. B. wie durch einen Kopf des Pakets identifiziert) das nächste Ziel aus der Routingtabelle abgerufen werden. Das Weiterleitungsgerät kann dann das Datenpaket auf einer ausgehenden Schnittstelle zu dem identifizierten nächsten Ziel weiterleiten.
-
Bestimmte Aspekte der Weiterleitung können die Effizienz des Netzes beeinträchtigen. Diese Aspekte schließen die spezifischen Regeln, Algorithmen, Datenstrukturen und Funktionen, die Art und Weise, in der die Weiterleitungsebene implementiert ist, sowie den Ort, an dem die Weiterleitungsebene implementiert und/oder ausgeführt wird, ein.
-
ZUSAMMENFASSUNG
-
Ein Routing-Controller kann in einem Kommunikationsnetzwerk für das Ausgeben von Routing-Regeln für Weiterleitungsgeräte verantwortlich sein. Mit beispielhaften Ausführungsformen kann die Weiterleitungsfunktionalität durch die Weiterleitungsgeräte gerätespezifisch implementiert werden. Der Routing-Controller kann eine Routing-Regel, die vom Weiterleitungsgerät implementiert werden soll, festlegen und eine Standard- oder vorgeschlagene Implementierung der Funktion in der Spezifikation der Regel bereitstellen. Wenn das Weiterleitungsgerät keine vorbestimmte Implementierung der Funktion, die für das Routinggerät spezifisch ist, aufweist, kann das Weiterleitungsgerät die Standardimplementierung verwenden, die durch den Routing-Controller bereitgestellt wird. Wenn jedoch das Weiterleitungsgerät eine vorbestimmte Implementierung der Funktion aufweist, kann es die in der Beschreibung beschriebene Implementierung außer Kraft setzen und stattdessen die vorbestimmte Implementierung verwenden.
-
Durch Verwendung der vorbestimmten Implementierung können gerätespezifische Fähigkeiten, wie verbesserte Algorithmen oder Hardware-Eigenschaften, auf dem Weiterleitungsgerät genutzt werden, ohne dass es erforderlich ist, dass alle Weiterleitungsgeräte im Netzwerk die verbesserten gerätespezifischen Fähigkeiten implementieren. Ferner ist es nicht notwendig, dass der Routing-Controller eine inhaltliche Vorabinformation, aufgrund derer Weiterleitungsgeräte verbesserte gerätespezifische Fähigkeiten implementieren, pflegt.
-
Gemäß einer beispielhaften Ausführungsform kann eine Spezifikation an einem elektronischen Gerät, das Weiterleitungsfunktionalität (d. h. ein Weiterleitungsgerät) besitzt, empfangen werden. Die Spezifikation kann als eine auf ein Weiterleitungsgerät anzuwendende Regel beschrieben werden. Die Regel kann eine Netzwerk-Routing-Regel sein und sie kann eine Funktion nutzen. Dementsprechend kann die Spezifikation die Funktion, die vom Weiterleitungsgerät auszuführen ist, und eine Implementierung, wie z. B. eine empfohlene, Standard- oder generische Implementierung, der angegebenen Funktion spezifizieren.
-
Die Spezifikation kann in einer Modellsprache beschrieben werden, die eine geforderte Fähigkeit beschreibt (z. B. „finden Sie die längste Präfix-Übereinstimmung einer Subnetzmaske in einer Routingtabelle“), ohne zu spezifizieren, wie die angeforderte Fähigkeit implementiert werden soll (z. B. ohne Spezifizierung eines speziellen Algorithmus für die Durchführung einer längsten Präfix-Übereinstimmung). Die Modellierungssprache kann mehrere Implementierungen der spezifizierten Funktionalität unterstützen (z. B. einen ersten Algorithmus zum Finden einer längsten Präfix-Übereinstimmung und einen zweiten Algorithmus zum Finden einer längsten Präfix-Übereinstimmung).
-
Die spezifizierte Funktion kann mit einem Satz bekannter Funktionen des Weiterleitungsgeräts verglichen werden. Der Satz bekannter Funktionen kann beispielsweise in einer Datenbank mit bekannten Funktionen gespeichert werden. Die bekannten Funktionen können vorab festgelegte Implementierungen haben, die vom Weiterleitungsgerät vorgegeben werden. So kann beispielsweise die spezifizierte Funktion standardmäßig in der Hardware oder Software des Weiterleitungsgeräts implementiert sein. Die vorab festgelegte Implementierung kann von der Implementierung, die in der Spezifikation der Routing-Steuerung beschrieben ist, abweichen.
-
In einigen Ausführungsformen kann sich die spezifizierte Funktion in dem Satz von bekannten Funktionen befinden. Dementsprechend kann die Implementierung, die in der Spezifikation spezifiziert ist, unberücksichtigt bleiben. Die spezifizierte Funktion kann auf einem Weiterleitungsgerät unter Verwendung der vorab festgelegten Implementierung, die durch das Weiterleitungsgerät vorgeschrieben ist, implementiert werden.
-
Die Spezifikation kann einen oder mehrere Parameter für die Regel bereitstellen, wie z. B. einen oder mehrere Eingabewerte, die in Verbindung mit der Regel verwendet werden sollen. Wenn die Implementierung, die in der Spezifikation spezifiziert ist, unberücksichtigt bleibt, können die vorgegebenen Parameter weiterhin mit der vorab festgelegten Implementierung verwendet werden.
-
Um die Effizienz der Implementierung der spezifizierten Funktion zu verbessern, kann das Weiterleitungsgerät die in der Spezifikation bereitgestellten Hinweise verwenden. So kann beispielsweise die Funktion einer Kennung in der Spezifikation zugeordnet werden. Die Kennung kann Informationen bezüglich der Funktionalität der Funktion, beispielsweise eine Rolle der spezifizierten Funktion, bereitstellen unter Verwendung der Kennung oder der Rolle kann eine vorab festgelegte Implementierung der Funktion auf dem Weiterleitungsgerät platziert werden. Daher ist es sogar dann, wenn die vorab festgelegte Implementierung bereits in einem kompilierten Zustand ist, nicht nötig, die Implementierung der spezifizierten Funktion zu dekompilieren, um die Implementierung der spezifizierten Funktion zu verwenden.
-
Die Spezifikation kann ferner ein Submodell spezifizieren, das eine Gruppe von Funktionen, die mit einer Gruppenkennung assoziiert sind, identifiziert. Die Gruppenkennung bietet einen Hinweis, ähnlich den oben beschriebenen Funktionshinweisen. Wenn das Weiterleitungsgerät mit einem Submodell, das die Rolle unterstützt, die durch die Untermodellkennung vorgeschlagen wird, vorprogrammiert ist, kann das Weiterleitungsgerät das Untermodell verwenden, ohne zu versuchen, einzelne Funktionen innerhalb des Untermodells zu identifizieren oder zu dekompilieren.
-
In einigen Ausführungsformen kann es sein, dass es dem Weiterleitungsgerät nicht gelingt, die spezifizierte Funktion in dem Satz bekannter Funktionen zu lokalisieren. Dementsprechend kann das Weiterleitungsgerät die spezifizierte Funktion unter Verwendung der durch die Spezifikation spezifizierten Implementierung implementieren.
-
In manchen Ausführungsformen wird ein Routingsystem bereitgestellt. Das Routingsystem kann einen Routing-Controller umfassen, der eine Spezifikation, die von einem Weiterleitungsgerät verwendet werden soll, formuliert. Die Spezifikation kann eine Netzwerk-Routing-Funktion einschließen. Die Spezifikation kann eine empfohlene Implementierung der Funktion spezifizieren und eine Kennzeichnung enthalten, die anzeigt, dass die empfohlene Implementierung überschrieben werden kann, wenn das Weiterleitungsgerät standardmäßig die Funktion implementiert. Das Routingsystem kann ferner einen Transmitter zum Weiterleiten der Regel in Richtung Weiterleitungsgerät umfassen.
-
KURZE BESCHREIBUNG DER FIGUREN
-
1 zeigt ein exemplarisches Netzwerk 100 mit Weiterleitungsvorrichtungen und einem Routing-Controller gemäß einer exemplarischen Ausführungsform.
-
2 zeigt eine exemplarische Netzwerk-Routing-Regel 200, die vom Routing-Controller generiert und an ein Weiterleitungsgerät gesendet wird.
-
3 zeigt eine exemplarische Implementierungsdatenbank 300, die Implementierungen von vorab festgelegten Funktionen speichert, die von einem Gerät mit Weiterleitungsfunktionalität implementiert werden.
-
4 ist ein Flussdiagramm, das exemplarische Schritte, die von einem Weiterleitungsgerät gemäß einer exemplarischen Ausführungsform ausgeführt werden, beschreibt.
-
5 ist ein Flussdiagramm, das exemplarische Schritte, die von einem Routing-Controller gemäß einer exemplarischen Ausführungsform ausgeführt werden, beschreibt.
-
6 zeigt ein exemplarisches elektronisches Gerät, das für die Verwendung mit den exemplarischen Ausführungsformen, die in diesem Dokument beschrieben werden, geeignet ist.
-
7 zeigt eine exemplarische Netzwerkimplementierung, die gemäß einer beispielhaften Ausführungsform durchgeführt wird.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Wie nachfolgend detaillierter beschrieben wird, ermöglichen beispielhafte Ausführungsformen, dass ein Teil der Funktionalität der Weiterleitungsebene durch das Weiterleitungsgerät gerätespezifisch implementiert wird. Ein Routing-Controller kann in einem Netzwerk für das Ausgeben von Regeln an Weiterleitungsgeräte verantwortlich sein. Die Weiterleitungsregeln für ein bestimmtes Weiterleitungsgerät können in einer Spezifikation gebündelt sein.
-
Eine der Weiterleitungsregeln kann eine Funktion nutzen. Wie in diesem Dokument verwendet, ist eine Funktion ein definierter Satz von Verfahren oder Schritten, der eine Aufgabe oder Aufgaben ausführt. Eine Funktion kann neben anderen Möglichkeiten ein Algorithmus, ein Teil des Quellcodes, ein Programm oder Unterprogramm, eine Routine oder eine Unterroutine, ein Verfahren oder eine Methode (wie die Java-Methode) sein.
-
In exemplarischen Ausführungsformen können Funktionen durch das Weiterleitungsgerät, das die Weiterleitungsregel empfängt, implementiert werden. So kann beispielsweise kann das Weiterleitungsgerät mit einer vorab festgelegten Implementierung der Funktion vorprogrammiert werden. Die vorab festgelegte Implementierung kann bestimmte Fähigkeiten, die spezifisch für das Weiterleitungsgerät, das Funktion implementiert, sind, nutzen. So kann beispielsweise das Weiterleitungsgerät eine vorab festgelegte Hard- oder Softwarelogik zum Ausführen von Operationen, die in der Funktion definiert sind (z. B. eine effiziente Implementierung einer längsten Präfix-Übereinstimmungsfunktion zum Finden eines Routingtabelleneintrags mit der größten passenden Subnetzmaske) nutzen.
-
Da die vorab festgelegte Implementierung verbesserte Fähigkeiten, die auf dem Weiterleitungsgerät vorhanden sind, nutzen kann, kann die vorher festgelegte Implementierung effizienter (z. B. in Form von Speicher- oder Verarbeitungsleistung oder Verarbeitungszeit) oder anderweitig über eine generische Implementierung, die die spezifischen Fähigkeiten des Weiterleitungsgeräts nicht nutzt, verbessert sein.
-
In diesem Dokument beschriebene exemplarische Ausführungsformen können in einem bestehenden Netzwerk auf einer Ad-hoc-Basis verwendet werden. So kann beispielsweise ein Weiterleitungsgerät mit vorprogrammierten Implementierungen von Funktionen, die für die Weiterleitung verwendet werden, zu einem bestehenden Netzwerk, das Geräte ohne vorprogrammierte Funktionsimplementierungen einsetzt, hinzugefügt werden.
-
Dementsprechend kann es sein, dass der Weiterleitungs-Controller, der für die Ausgabe der Weiterleitungsregeln verantwortlich ist, keine Kenntnis von der vorprogrammierten Implementierung auf einem bestimmten Weiterleitungsgerät hat, und nicht jedes Weiterleitungsgerät hat eine vorbestimmte oder vorprogrammierte Implementierung für eine definierte Funktion. Daher kann der Weiterleitungs-Controller gemäß den exemplarischen Ausführungsformen auch eine standardmäßige oder vorgeschlagene Implementierung der Funktion in der Spezifikation der Regel vorsehen. Wenn das Weiterleitungsgerät, das die Spezifikation empfängt, keine vorbestimmte Implementierung der für das Weiterleitungsgerät spezifischen Funktion aufweist, kann das Weiterleitungsgerät die Standardimplementierung, die vom Weiterleitungs-Controller bereitgestellt wird, verwenden. Wenn jedoch das Weiterleitungsgerät eine vorbestimmte Implementierung der Funktion aufweist, kann es die in der Beschreibung beschriebene Implementierung außer Kraft setzen und stattdessen die vorbestimmte Implementierung verwenden. Dieses Verfahren ermöglicht, dass Weiterleitungsgeräte, die eine verbesserte vorab festgelegte Funktionalität verwenden, zusammen mit Weiterleitungsgeräten ohne eine solche vorab festgelegte Funktionalität verwendet werden können.
-
1 zeigt ein exemplarisches Netzwerk 100 mit Weiterleitungsgeräten und einem Weiterleitungs-Controller gemäß einer exemplarischen Ausführungsform. Das Netzwerk 100 kann unter anderem ein Kommunikationsnetzwerk wie das Internet, ein Intranet oder ein Telefonnetz sein. Das Netzwerk 100 kann ein oder mehrere optische, elektronische oder andere Übertragungsmedien einschließen.
-
Das Netzwerk 100 kann einen ersten Knoten 110, einen zweiten Knoten 120 und einen dritten Knoten 130 einschließen. Es versteht sich, dass das Netzwerk 100 nur exemplarischen Zwecken dient und ein Netzwerk, das zur Verwendung mit den hier beschriebenen beispielhaften Ausführungsformen geeignet ist, eine beliebige Anzahl von Knoten haben kann. Die Knoten 110, 120, 130 können unter anderem auch elektronische Geräte, wie z. B. Personal Computer, Tablets, Server, Router, Schalter oder eigene elektronische Netzwerkgeräte, sein. Beispielsweise können der erste Knoten 110, der zweite Knoten 120 und der dritte Knoten 130 Geräte mit einer Weiterleitungsfunktion sein, so dass die Knoten 110, 120 und 130 in der Lage sind, eingehende Informationen auf einer Eingangsschnittstelle zu empfangen, die Informationen zu verarbeiten, um ein nächstes Ziel der Information zu bestimmen und die Informationen an das nächste Ziel auf einer ausgehenden Schnittstelle weiterzuleiten.
-
Gemäß einer exemplarischen Ausführungsform kann das Netzwerk 100 einen Controller 140 zum Kommunizieren mit dem ersten Knoten 110, dem zweiten Knoten 120 und dem dritten Knoten 130 beinhalten. Wie in 1 gezeigt, kann der Controller 140 mit den Knoten 110, 120 und 130 entweder direkt oder indirekt verbunden sein.
-
Der Controller 140 kann in der Lage sein, Befehle und/oder Formulierungsregeln auszugeben, die von den Knoten 110, 120, 130 auszuführen oder anzuwenden sind. So kann beispielsweise der Controller 140 in der Hard- oder Software eine Netzwerkweiterleitungslogik, die festlegt, wie die Weiterleitungsebene der Knoten 110, 120, 130 empfangene Nachrichten weiterleiten soll, implementieren.
-
Der Controller 140 kann die Weiterleitungsebene der Knoten 110, 120, 130 durch Formulieren von Gerätemodellen, Submodellen oder Vernetzungsprimitiven und Weiterleitung der Modelle, Submodelle oder Primitive an die Knoten 110, 120, 130 steuern. Ein Vernetzungsprimitiv kann eine grundlegende Netzwerkfunktionalität, die den Knoten 110, 120, 130 zugewiesen ist, wie z. B. „die Implementierung des Round-Robin-Verfahrens“, darstellen. Ein Submodell kann eine Sammlung von Vernetzungsprimitiven, die eine kompartmentierte oder modulare Gruppe von Funktionen bereitstellt, die von verschiedenen Vorrichtungen verwendet werden können, repräsentieren. Ein Modell kann eine Sammlung von Submodellen oder Primitiven repräsentieren, die kollektiv das gewünschte Netzwerkverhalten des Geräts, das das Modell implementiert, definieren oder beschreiben. Daher kann ein Modell das gewünschte Verhalten der Weiterleitungsebene für das Gerät beschreiben. Modelle, Submodelle und Primitive werden nachstehend hinsichtlich der 6 näher erläutert.
-
Verschiedene Modelle, Submodelle oder Primitive können an jeden der Knoten 110, 120, 130 oder Knoten 110, 120, 130 können an dieselben oder überlappende Modelle, Submodelle oder Primitive gesendet werden.
-
Unter Verwendung der in 1 beschriebenen Konfiguration kann der Controller 140 als eine zentrale Autorität, die die Routing- oder Weiterleitungsverfahren im Netzwerk 100 steuern kann, fungieren. Somit kann ein Netzwerkadministrator Änderungen an den Weiterleitungsverfahren an der Steuerung 140 vornehmen, die dann die einzelnen Knoten 110, 120, 130 anweisen, welche Arten von Richtlinien zu implementieren sind. Alternativ oder zusätzlich kann der Controller 140 Weiterleitungsrichtlinien dynamisch, basierend auf vorab festgelegten Faktoren oder durch Überwachen des Status des Netzwerks 100 festlegen.
-
Um das gewünschte Verhalten der Knoten 110, 120, 130 zu bewirken, kann der Controller Regeln wie Netzwerk-Routing-Regeln und/oder Netzwerk-Weiterleitungsregeln formulieren und die Regeln an die Knoten 110, 120, 130 senden. Eine exemplarische Netzwerk-Weiterleitungsregel 200 wird in 2 gezeigt.
-
Die Netzwerk-Weiterleitungsregel 200 kann ein gewünschtes Verhalten eines Knotens unter bestimmten Bedingungen, beispielsweise beim Empfang eines ankommenden Datenpakets, beschreiben. Das gewünschte Verhalten kann in Form einer oder mehrerer Funktionskennungen 210 spezifiziert werden. Die Funktionskennung 210 kann eine Funktion identifizieren, die einen definierten Satz von Verfahren oder Schritten darstellt, die eine oder mehrere Aufgaben ausführen. Die Funktion, die von der Funktionskennung 210 identifiziert wird, kann neben anderen Möglichkeiten ein Algorithmus, ein Teil des Quellcodes, ein Programm oder Unterprogramm, eine Routine oder Unterroutine, ein Verfahren oder eine Methode (wie die Java-Methode) sein.
-
Das Funktionskennzeichen 210 (z. B. der Funktionsname) kann eine Kann eine High-Level-Beschreibung der gewünschten Funktionalität, die von der Funktion implementiert werden soll, bereitstellen. Es kann jedoch viele Möglichkeiten zur Implementierung der Funktionalität, die durch die Funktionskennung 210 vorgeschlagen wird, geben. Wenn zum Beispiel die Funktionskennung 210 vorschlägt, dass die Funktion eine Liste sortiert (wenn z. B. die Funktionskennung 210 „Liste_sortieren“ ist), dann könnte die Funktion die „Listensortierung“ unter Verwendung vieler verschiedener wohlbekannter Sortieralgorithmen (z. B. Blasensortierung, Insertion Sort, schnelles Sortieren usw.) durchführen.
-
Die Netzwerk-Weiterleitungsregel 200 wird vom Controller mit dem Verständnis, dass das Weiterleitungsgerät, das die Netzwerk-Weiterleitungsregel 200 implementiert, eine nativ vorab festgelegte Implementierung der Regel 200 oder die durch die Funktionskennung 210 identifizierte Funktion haben oder nicht haben kann, generiert. Demgemäß kann eine Standard- oder generische Implementierung 220 in der Netzwerk-Weiterleitungsregel 200 spezifiziert werden, wenn das Weiterleitungsgerät die Regel 200 oder die Funktion, die durch die Funktionskennung 210 identifiziert wird, nicht nativ identifiziert. Die Standard- oder generische Implementierung kann ein empfohlener Algorithmus, der vom Controller bereitgestellt wird, der die Funktionalität implementiert, die vom Funktionsidentifikator 210 vorgeschlagen wird, sein.
-
Wenn jedoch das Weiterleitungsgerät eine vorab festgelegte Version der Regel 200 oder die Funktion, die durch die Funktionskennung 210 identifiziert wird, implementiert, kann die native, vorab festgelegte Implementierung verglichen mit der generischen oder Standardimplementierung 220 effizienter oder auf andere Weise verbessert werden. Dementsprechend liefert die Netzwerk-Weiterleitungsregel 200 eine „Überschreibbar?“-Kennung 230, die spezifiziert, ob die generische oder die Standard-Implementierung 220 überschrieben werden kann. Wenn die „Überschreibbar?“-Kennung 230 beispielsweise auf „Ja“ oder „1“ gesetzt ist, kann das Weiterleitungsgerät die generische oder die Standardimplementierung 220 zugunsten der Verwendung der vorab festgelegten nativ implementierten Implementierung des Weiterleitungsgeräts ignorieren. Wenn die „Überschreibbar?“-Kennung 230 beispielsweise auf „Nein“ oder „0“ gesetzt ist, kann das Weiterleitungsgerät die vom Controller vorgeschlagene Implementierung 220 nicht ignorieren und die Implementierung 220 anstelle der durch das Weiterleitungsgerät implementierten nativen Implementierung verwenden.
-
Eine oder mehrere Netzwerk-Weiterleitungsregeln 200 können in einer Spezifikation von Netzwerk-Weiterleitungsregeln, die vom Controller zu einem oder mehreren Geräten mit einer Weiterleitungsfunktionalität gesendet werden kann, gesammelt werden. Eine Sammlung von Netzwerk-Weiterleitungsregeln kann als Modell oder Submodell gebündelt werden. Solch eine Sammlung kann mit einem gemeinsamen Kennzeichen gekennzeichnet werden. Einzelne Netzwerk-Weiterleitungsregeln 200 können auch durch individuelle Kennzeichen gekennzeichnet werden und Funktionen innerhalb der Regeln 200 können auch durch die Funktionskennung 210 gekennzeichnet werden.
-
Jede der oben erwähnte Kennungen kann genutzt werden, um einen Hinweis bezüglich der gewünschten Rolle oder Funktionalität, die durch die Funktion, Regel, das Modell oder Submodell implementiert werden soll, bereitzustellen. Zum Beispiel besteht eine häufig durchgeführte Aufgabe darin, die längste Präfix-Übereinstimmung einer Subnetzmaske in einer Routingtabelle zu finden. Durch Benennung einer Funktion als zum Beispiel „längste_Prefix-Übereinstimmung“ oder „LPM“ kann der Controller einen Hinweis liefern, dass die Funktion eine Implementierung für einen Algorithmus bereitstellt, der diese gemeinsame Aufgabe ausführt.
-
Dementsprechend kann das Weiterleitungsgerät, das die Weiterleitungsfunktionalität implementiert, die die Funktion, Regel, das Modell oder Untermodell empfängt, die Kennung der Funktion, Regel, des Modells oder Untermodells analysieren. Das Weiterleitungsgerät kann die Kennung auf einen Hinweis, wie z. B. semantische Informationen, die sich auf die Kennung, das die Rolle oder Funktionalität vorschlägt, die durch die Funktion, Regel, das Modell oder das Untermodell beziehen, analysieren. Zusätzlich zur Kennung können andere Informationen, wie z. B. eine bestimmte Stelle in einer Überschrift der Funktion, Regel, des Modell oder Untermodells, analysiert werden.
-
Nachdem ein Hinweis, der sich auf die Kennung bezieht, identifiziert wird, kann der Hinweis mit Kennungen in einer Datenbank, die eine vorbestimmte Funktionalität, die nativ durch das Weiterleitungsgerät implementiert ist, beschreibt, verglichen werden. 3 zeigt beispielsweise eine Implementierungsdatenbank 300, die Funktionen beschreibt, die nativ durch das Weiterleitungsgerät implementiert sind. Es sei angemerkt, dass, obwohl die Implementierungsdatenbank 300 in 3 auf Funktionen Bezug nimmt, Informationen in Bezug auf Regeln, Modelle und Submodelle auch in der Implementierungsdatenbank 300 oder in einer anderen Datenbank bereitgestellt werden können.
-
Die Implementierungsdatenbank 300 kann im Weiterleitungsgerät vorhanden sein. Alternativ kann die Implementierungsdatenbank 300 an einem Ort, der vom Weiterleitungsgerät entfernt ist und auf den vom Weiterleitungsgerät über das Netzwerk zugegriffen werden kann, vorhanden sein.
-
Die Implementierungsdatenbank 300 kann Implementierungsdetails für eine oder mehrere Funktionen, die nativ durch das Weiterleitungsgerät implementiert werden, das der Implementierungsdatenbank 300 zugeordnet ist, bereitstellen. Die Implementierungsdetails können anhand einer Funktionskennung indiziert werden. So kann beispielsweise die Implementierungsdatenbank 300 eine Kennung 310 und eine Implementierung 312 für eine erste Funktion, eine Kennung 320 und eine Implementierung 322 für eine zweite Funktion und eine Kennung 330 und eine Implementierung 332 für eine dritte Funktion einschließen. Die Implementierungen 312, 322, 332 liefern Details (wie beispielsweise Algorithmen) für die Implementierung der Funktionalität, die durch die Funktions-IDs 310, 320, 330 beschrieben ist. Die Implementierungen 312, 322, 332 können in einem kompilierten Format gespeichert werden, so dass die Implementierungen 312, 322, 332 vom Weiterleitungsgerät ohne die Notwendigkeit, dass die Implementierungen 312, 322, 332 kompiliert werden, durchgeführt werden können.
-
Nach dem Empfang einer Regel, die eine Funktion enthält, kann das Weiterleitungsgerät die Regel oder die Funktion wie oben erwähnt nach Implementierungshinweisen analysieren. Beispielsweise können semantische Informationen aus der Regel oder Funktion extrahiert und mit den Funktionsidentifikatoren 310, 320, 330 verglichen werden, um zu bestimmen, ob eine enge Übereinstimmung zwischen dem Hinweis und einer oder mehreren der Funktionskennungen 310, 320, 330 besteht. Die Übereinstimmung muss keine exakte Übereinstimmung sein. So kann beispielsweise der Hinweis spezifizieren, dass die in der Regel verwendete Funktion die „längste_Präfix-Übereinstimmung“ implementiert. Solch ein Hinweis kann auf eine Funktion in der Implementierungsdatenbank 300, die der Kennung „längste_Präfix-Übereinstimmung“ (z. B. einer exakten Übereinstimmung) oder „längste_Präfix-Übereinstimmung“ oder „LPM“ oder einer Variation dieser Kennung zugeordnet ist, abgestimmt sein.
-
Wenn eine Übereinstimmung für die Regel oder Funktion in der Implementierungsdatenbank 300 identifiziert wird, kann das Weiterleitungsgerät, das der Implementierungsdatenbank 300 zugeordnet ist, die native Implementierung 312, 322, 332 anstelle der Implementierung, die durch die vom Controller gesendete Regel vorgeschlagen wird, verwenden. Ein solches Verfahren wird nachfolgend unter Bezugnahme auf 4 beschrieben.
-
In Schritt 410 kann ein Weiterleitungsgerät, das eine Weiterleitungsfunktionalität implementiert, eine Spezifikation vom Controller empfangen. Die Spezifikation kann eine Regel, die eine Funktion nutzt, beinhalten. In einigen Ausführungsformen kann die Spezifikation ein Submodell oder ein Modell, einschließlich einer Sammlung von Regeln und/oder Vernetzungsprimitiven, die mit einem Hinweis, wie beispielsweise einer Submodellkennung oder Modellkennung assoziiert sind, spezifizieren.
-
In Schritt 415 kann das Weiterleitungsgerät die Regel und/oder Funktion untersuchen, um festzustellen, ob die Funktion überschreibbar ist. So kann beispielsweise das Weiterleitungsgerät die Regel und/oder Funktion auf das Vorhandensein einer „Überschreibbar?“-Kennung hin untersuchen.
-
Wenn festgestellt wird, dass die Regel oder Funktion bei Schritt 415 überschreibbar ist, kann das Weiterleitungsgerät bei Schritt 420 die Funktion, Regel, das Modell oder Submodell, die bzw. das in der Spezifikation spezifiziert ist, mit einer Liste bekannter Funktionen, Regeln, Modelle oder Untermodelle, die nativ vom Weiterleitungsgerät implementiert sind, vergleichen. So kann beispielsweise die Liste bekannter Funktionen, Regeln, Modelle oder Submodelle in einer durch Identifikatoren indizierten Implementierungsdatenbank gespeichert werden. In Schritt 430 kann die Funktion, Regel, das Modell oder Submodell, die bzw. das in der Spezifikation spezifiziert ist, in der Datenbank nachgeschlagen werden (z. B. durch Hashen der bzw. des in der Spezifikation spezifizierten Funktion, Regel, Modells oder Submodells, um zu bestimmen, ob eine entsprechende native Implementierung in der Implementierungsdatenbank vorhanden ist.
-
Wenn bei Schritt 415 festgestellt wird, dass die Funktion nicht überschreibbar ist, kann die Bearbeitung mit Schritt 450 fortgesetzt werden.
-
Wenn bei Schritt 430 festgelegt wird, dass die bzw. das in der Spezifikation spezifizierte Funktion, Regel, Modell oder Submodell unter den bekannten Funktionen, Regeln, Modellen oder Submodellen, die vom Weiterleitungsgerät nativ implementiert sind, vorhanden ist, kann das Weiterleitungsgerät bei Schritt 440 die in Schritt 410 angegebene Regel implementieren, wobei die vorab festgelegte, native Implementierung aus der Implementierungsdatenbank verwendet wird. Die vorab festgelegte native Implementierung kann von der Implementierung, die in der Spezifikation des Controllers spezifiziert ist, abweichen.
-
Wenn die in der Implementierungsdatenbank gespeicherten Implementierungen in einem kompilierten Format gespeichert sind, braucht die Implementierung nicht dekompiliert zu werden, wenn die Implementierung, beispielsweise durch Vergleichen eines Hinweises aus der Spezifikation mit einer Funktionskennung, die in der Funktionsdatenbank gespeichert ist, identifiziert wurde. Somit kann das Weiterleitungsgerät Verarbeitungsleistung, Zeit und Ressourcen sparen, indem es die Hinweise, die durch die Spezifikation bezüglich der Rolle der Funktion bereitgestellt werden, verwendet.
-
Wenn bei Schritt 430 festgelegt wird, dass die bzw. das in der Spezifikation spezifizierte Funktion, Regel, Modell oder Submodell unter den bekannten Funktionen, Regeln, Modellen oder Untermodellen, die vom Weiterleitungsgerät nativ implementiert sind, nicht vorhanden ist, kann bei Schritt 450 eine empfohlene, generische oder Standardimplementierung von der Spezifikation bei Schritt 410 erhalten werden. So kann beispielsweise die Regel in einem vorab festgelegten Format (wie in dem in 2 gezeigten Format) vorliegen und die Implementierung kann an einer bekannten Stelle in der Regel vorhanden sein. Dementsprechend kann das Weiterleitungsgerät die Implementierung vom bekannten Ort abrufen. Alternativ kann die Regel eine Überschrifteninformation enthalten, die Details bezüglich der Position und Größe der Implementierung innerhalb der Regel (oder an einer entfernten Position, von der die Implementierung abgerufen werden kann) bereitstellt. Das Weiterleitungsgerät kann die Implementierung unter Verwendung dieser Informationen abrufen.
-
In Schritt 460 kann das Weiterleitungsgerät die Regel implementieren, um die empfohlene, Standard- oder generische Funktion, die in der Spezifikation spezifiziert ist, zu implementieren.
-
Alternativ kann ein Versuch unternommen werden, eine gerätespezifische Implementierung von einem entfernten Ort oder aus einer Bibliothek abzurufen. So kann beispielsweise das Weiterleitungsgerät mit einem Server verbunden sein, der eine Bibliothek von Funktionsimplementierungen enthält und eine Funktionsimplementierung aus der Bibliothek abruft, falls eine existiert.
-
Um die oben beschriebene Spezifikation zu generieren, kann der Controller (z. B. der Weiterleitungs-Controller 140 aus 1) die Spezifikation gemäß einem Prozess, wie z. B. dem in 5 beschriebenen, erzeugen.
-
In Schritt 510 kann der Controller eine Netzwerk-Weiterleitungsregel einschließlich einer Funktion formulieren. Die Netzwerk-Weiterleitungsregel kann basierend auf einer Liste von Regeln, die beim Controller gespeichert sind oder auf die der Controller zugreifen kann, formuliert werden. Die Auswahl einer bestimmten Netzwerk-Weiterleitungsregel kann auf der Basis einer Anzahl von Faktoren, wie u. a. der Größe oder Anzahl von Verbindungen im Netzwerk, der Tageszeit, dem Netzwerkverkehrsvolumen, den einzelnen im Netzwerk vorhandenen Weiterleitungsgeräten, einer Konfiguration von im Netzwerk vorhandenen Servern oder der Festlegung eines Netzwerkadministrators, festgelegt werden.
-
Die Funktion und/oder Regel kann mit einer Kennung, die als Hinweis für die gewünschte Rolle der Funktion oder Regel dienen kann, bereitgestellt werden. Die Kennung kann u. a. in der Liste von Regeln mit der Funktion gespeichert werden, durch Fernzugriff durch Suchen einer Kennung für die Funktion oder Regel in einer entfernten Bibliothek oder Datenbank zugänglich sein oder direkt von der Funktion oder Regel abgeleitet werden.
-
Die Netzwerk-Weiterleitungsregel kann in einer Gruppe von Netzwerk-Weiterleitungsregeln, die als ein Submodell oder ein Modell repräsentiert sein können, gebündelt werden (siehe untenstehende Beschreibung von Submodellen und Modellen in Verbindung mit 6). Das Submodell oder Modell kann durch eine gemeinsame Kennung identifiziert werden.
-
Die Netzwerk-Weiterleitungsregel, die Funktion, das Submodell und/oder das Modell können in eine Spezifikation geschrieben werden. Die Spezifikation kann nur die Regel, Funktion, das Submodell oder Modell oder mehrere Regeln, Funktionen, Submodelle oder Modelle, möglicherweise in Verbindung mit anderen Informationen, die für das Weiterleitungsgerät bestimmt sind, enthalten.
-
Die Spezifikation kann in einer Modellierungssprache geschrieben sein. Die Modellierungssprache kann eine geräte- oder umgebungsunabhängige Repräsentation, die von verschiedenen Geräten oder Betriebsumgebungen interpretiert werden kann, sein. Die Modellierungssprache kann zahlreiche Implementierungen der Regel, Funktion, des Submodells oder Modells unterstützen. Die Modellierungssprache kann in eine geräte- oder für die Betriebsumgebung spezifische Implementierung beim Weiterleitungsgerät oder dem Controller übersetzt werden.
-
In Schritt 520 kann eine empfohlene, standardmäßige oder generische Implementierung der Funktion durch den Controller bereitgestellt und in die Spezifikation geschrieben werden. Die empfohlene, standardmäßige oder generische Implementierung kann aus der Liste der Regeln oder Funktionen abgerufen, in einer Bibliothek beim Controller gespeichert oder remote gespeichert sind und vom Controller abgerufen werden.
-
In Schritt 530 kann der Controller eine „Überschreibbar?“-Kennung 1 setzen, um anzuzeigen, dass die empfohlene, standardmäßige oder generische Implementierung der Funktion durch eine nativ implementierte, vorab festgelegte Implementierung beim Weiterleitungsgerät ersetzt werden kann, wenn eine solche Implementierung beim Weiterleitungsgerät vorhanden ist.
-
Die Spezifikation kann optional einen oder mehrere Parameter zur Verwendung mit der Funktion bereitstellen. So kann beispielsweise die Spezifikation einen oder mehrere Eingangswerte, die vom Weiterleitungsgerät verwendet werden sollen, wenn die Funktion ausgeführt wird, bereitstellen. Die Parameter können vom Weiterleitungsgerät angewendet werden, und zwar unabhängig davon, ob das Weiterleitungsgerät eine vorab festgelegte native Implementierung der Funktion oder die empfohlene, generische oder Standardimplementierung, die vom Controller spezifiziert wird, verwendet.
-
In Schritt 540 kann die Netzwerk-Weiterleitungsregel an das Weiterleitungsgerät weitergeleitet werden. So kann beispielsweise eine Spezifikation, die die Netzwerk-Weiterleitungsregel enthält, einer ausgehenden Schnittstelle unter Verwendung eines Senders (wie z. B. eines drahtlosen Senders, eines Ethernet-Anschlusses oder einer anderen Netzwerkübertragungsgeräts) über ein Netzwerk zum Weiterleitungsgerät nachgeschickt werden. Nach dem Empfang der Netzwerk-Weiterleitungsregel kann das Weiterleitungsgerät die Maßnahmen ergreifen, die oben in Bezug auf 4 beschrieben sind.
-
Eine oder mehrere der oben beschriebenen Handlungen können als computerausführbare Befehle, die durch Verarbeitungslogik ausführbar sind, kodiert sein. Die computerausführbaren Befehle können auf einem oder mehreren nicht-transistorischen, computerlesbaren Medien gespeichert sein. Einer oder mehrere der oben beschriebenen Vorgänge können auf einem geeignet programmierten elektronischen Gerät ausgeführt werden. 6 zeigt ein Beispiel eines elektronischen Geräts 600, das für die Verwendung mit einer oder mehreren hierin offenbarten Handlungen geeignet sein kann.
-
Das elektronische Gerät 600 kann viele Formen, einschließlich, aber nicht beschränkt auf einen Computer, einen Arbeitsplatzrechner, einen Server, einen Netzwerkcomputer, einen Quantencomputer, einen optischen Computer, eine Internetanwendung, ein mobiles Gerät, einen Pager, einen Tablet-Computer, einen intelligenten Sensor und eine anwendungsspezifisches Verarbeitung Gerät usw., haben.
-
Das elektronische Gerät 600 dient der Veranschaulichung und kann andere Formen haben. So kann beispielsweise eine alternative Implementierung des elektronischen Geräts 600 weniger Komponenten, mehr Komponenten oder Komponenten aufweisen, die eine Konfiguration haben, die sich von der Konfiguration aus 6 unterscheiden. Die Komponenten der 6 und/oder anderer hierin beschriebene Figuren können unter Verwendung von hardwarebasierter Logik, softwarebasierter Logik und/oder einer Logik, die eine Kombination aus hard- und softwarebasierter Logik (z.B. Hybridlogik) ist, implementiert werden. Daher sind die in 6 und/oder anderen Figuren dargestellten Komponenten nicht auf eine spezifische Logik beschränkt.
-
Der Prozessor 602 kann hardwarebasierte Logik oder eine Kombination von hardwarebasierter Logik und Software beinhalten, um Anweisungen für die elektronische Vorrichtung 600 auszuführen. Der Prozessor 602 kann eine Logik, die Informationen, die z. B. im Speicher 604 enthalten sind, interpretieren, ausführen und/oder anderweitig verarbeiten kann, enthalten. Die Informationen können computerausführbare Anweisungen und/oder Daten beinhalten, die eine oder mehrere Ausführungsformen der Erfindung implementieren können. Der Prozessor 602 kann unterschiedliche homogene oder heterogene Hardware beinhalten. Die Hardware kann zum Beispiel eine Kombination aus einem oder mehreren Prozessoren, Mikroprozessoren, Field Programmable Gate Arrays (FPGAs), anwendungsspezifischen Befehlssatzprozessoren (ASIPs), anwendungsspezifischen integrierten Schaltungen (ASICs), komplexen programmierbaren Logikgeräten (CPLDs), Grafikverarbeitungseinheiten (GPUs) oder andere Arten von Verarbeitungslogik, die die Informationen interpretieren, ausführen, manipulieren und/oder anderweitig verarbeiten können, umfassen. Der Prozessor kann einen einzelnen Kern oder mehrere Kerne 603 umfassen. Darüber hinaus kann der Prozessor 602 ein System-on-Chip (SoC) oder System-in-Package (SiP) beinhalten.
-
Das elektronische Gerät 600 kann ein oder mehrere konkrete nicht-transitorische computerlesbare Speichermedien zum Speichern einer oder mehrerer computerausführbaren Anweisungen oder Software enthalten, die eine oder mehrere Ausführungsformen der Erfindung implementieren können. Das nicht-transitorische, computerlesbare Speichermedium kann beispielsweise der Speicher 604 oder der Speicher 618 sein. Der Speicher 604 kann ein RAM beinhalten, das RAM-Laufwerke, die die Informationen speichern können, umfassen kann. Die RAM-Laufwerke können flüchtig oder nicht-flüchtig sein und zum Beispiel ein oder mehrere DRAM-Bausteine, Flash-Speichergeräte, SRAM-Bausteine, NULL-Kondensator-RAM-(ZRAM-)Geräte, Zwei-Transistor-RAM-(TTRAM-)Laufwerke, Nur-Lese-(ROM-)Geräte, ferroelektrische RAM-(FeRAM-)Geräte, magnetoresistive RAM-(MRAM-)Geräte, Phasenänderungs-RAM-Speicher(PRAM-)Geräte oder andere Arten von RAM-Laufwerken enthalten.
-
Eine oder mehrere Datenverarbeitungsgeräte 600 können eine virtuelle Maschine (VM) 605 zum Ausführen der in dem Speicher 604 geladenen Anweisungen umfassen. Eine virtuelle Maschine 605 kann zur Verfügung gestellt werden, um einen Prozess, der auf mehreren Prozessoren läuft, so dass der Prozess anscheinend nur eine Datenverarbeitungsressource anstelle von mehreren Datenverarbeitungsressourcen verwendet, zu verarbeiten. Eine Virtualisierung kann im elektronischen Gerät 600 verwendet werden, so dass bei dem elektronischen Gerät die Infrastruktur und Ressourcen dynamisch geteilt werden können. Auf einem einzigen Datenverarbeitungsgerät 600 können mehrere VMs 605 vorhanden sein.
-
Ein Hardware-Beschleuniger 606 kann in einem ASIC, FPGA oder einem anderen Gerät implementiert sein. Der Hardware-Beschleuniger 606 kann verwendet werden, um die allgemeine Verarbeitungszeit des elektronischen Geräts 600 zu verkürzen.
-
Das elektronische Gerät 600 kann eine Netzwerkschnittstelle 608 beinhalten, um über eine Vielzahl von Verbindungen, einschließlich, aber nicht beschränkt auf Standard-Telefonleitungen, LAN- oder WAN-Verbindungen (z. B. T1, T3, 56kb, X.25), Breitbandverbindungen (z. B. Integrated Services Digital Network (ISDN), Frame Relay, asynchroner Übertragungsmodus (ATM), drahtlose Verbindungen (z. B. 802.11), Hochgeschwindigkeitsverbindungen (z. B. InfiniBand, Gigabit Ethernet, Myrinet) oder irgendeine Kombination der oben genannten, eine Schnittstelle zu einem lokalen Netzwerk (LAN), einem Wide Area Network (WAN) oder dem Internet zu schaffen. Die Netzwerkschnittstelle 608 kann einen eingebauten Netzwerkadapter, eine Netzwerkschnittstellenkarte, eine PCMCIA-Netzwerkkarte, einen Cardbus-Netzwerkadapter, einen drahtlosen Netzwerkadapter, einen Universal Serial Bus-(USB-)Netzwerkadapter, ein Modem oder irgendein anderes geeignetes Gerät einschließen, das zum Verbinden des elektronischen Geräts 600 mit irgendeiner Art von Netzwerk, das kommunikationsfähig ist und die hierin beschriebenen Operationen ausführt, geeignet ist.
-
Das elektronische Gerät 600 kann eine oder mehrere Eingabegeräte 610, wie beispielsweise eine Tastatur, eine Multipunkt-Touch-Schnittstelle, eine Zeigevorrichtung (z. B. eine Maus), ein Gyroskop, einen Beschleunigungsmesser, ein haptisches Gerät, ein taktiles Gerät, ein neuronales Gerät, ein Mikrofon oder eine Kamera, die verwendet werden können, um eine Eingabe von beispielsweise einem Benutzer zu empfangen, einschließen. Bitte beachten Sie, dass das elektronische Gerät 600 andere geeignete I/O-Peripheriegeräte umfassen kann.
-
Das Eingabegerät 610 kann einem Benutzer ermöglichen, eine Eingabe zu tätigen, die auf einem visuellen Anzeigegerät 614 registriert wird. Eine graphische Benutzerschnittstelle (GUI) 616 kann auf dem Anzeigegerät 614 angezeigt werden.
-
Ein Speichergerät 618 kann ebenfalls mit dem Computer 600 verbunden werden. Das Speichergerät 618 kann für den dem Prozessor 602 über einen Î/O-Bus zugänglich sein. Die Information kann durch den Prozessor 602 ausgeführt, interpretiert, manipuliert und/oder anderweitig verarbeitet werden. Das Speichergerät 618 kann beispielsweise ein Speichergerät, wie z. B. eine Magnetplatte, eine optische Platte (z. B. eine CD-ROM, ein DVD-Spieler), eine Arbeitsspeicher-(RAM-)Platte, eine Bandeinheit und/oder ein Flash-Laufwerk, umfassen. Die Informationen können auf einem oder mehreren nicht-transitorischen, realen, computerlesbaren Medien, die im Speichergerät enthalten sind, gespeichert werden. Diese Medien können zum Beispiel Magnetplatten, optische Platten, Magnetbänder und/oder Speichergeräte (wie z. B. Flash-Speichergeräte, statische RAM-(SRAM-)Geräte, dynamische RAM-(DRAM-)Laufwerke oder andere Speichergeräte beinhalten. Die Informationen können Daten und/oder computerausführbare Anweisungen, die eine oder mehrere Ausführungsformen der Erfindung implementieren können, beinhalten.
-
Das Speichergerät 618 kann ferner Anwendungen 624 speichern und das elektronische Gerät 600 kann ein Betriebssystem (OS) 626 ausführen. Beispiele für das OS 626 können die Betriebssysteme Microsoft® Windows®, Unix und Linux, das MacOS® für den Macintosh-Computer, ein eingebettetes Betriebssystem, wie das Symbian OS, ein Echtzeitbetriebssystem, ein Open-Source-Betriebssystem, ein proprietäres Betriebssystem, Betriebssysteme für mobile elektronische Geräte oder ein anderes Betriebssystem, das auf einem elektronischen Gerät ausgeführt werden kann und die hier beschriebenen Operationen durchführt, sein. Das Betriebssystem kann im nativen oder emulierten Modus ausgeführt werden.
-
Das Speichergerät 618 kann ferner die Regeln 628, die beschreiben, wie Nachrichten in einem Kommunikationsnetzwerk weitergeleitet werden sollten, beinhalten. Die Regeln 628 können verwendet werden, um Nachrichten oder Informationen, die beim elektronischen Gerät 628 empfangen werden, weiterzuleiten. Daher kann das elektronische Gerät 600 als ein Weiterleitungsgerät, Schalter oder Router dienen.
-
Das Speichergerät 618 kann eine Implementierungsdatenbank 630 speichern. Die Implementierungsdatenbank 630 kann eine Datenstruktur, wie z. B. eine Tabelle oder Matrix, die Kennungen, die vorab festgelegte Funktionen, die durch das elektronische Gerät 630 implementiert werden, speichert, sein. Die Implementierungsdatenbank kann ferner die Implementierungsdetails der vorab festgelegten Funktionen speichern.
-
Das Speichergerät 618 kann ferner eine Logik zum Implementieren eines Kommunikationsprotokolls 640 beinhalten. Die Kommunikationsprotokolllogik 640 kann eine Logik für die Implementierung eines Protokolls, das eine Schnittstelle für den Zugriff und die Modifikation der Funktionalität der Weiterleitungsebene des elektronischen Geräts 600 bereitstellt, sein. Zu den exemplarischen Kommunikationsprotokollen gehören, diese sind aber nicht beschränkt: auf das OpenFlow-Protokoll (siehe z. B. McKeown, Nick et al.: „OpenFlow: Enabling Innovation in Campus Networks" (Ermöglichung von Innovationen in Campusnetzwerken), ACM SIGCOMM Computer Communication Review Archive, Bd. 38, Ausgabe 2, S. 69–74 (April 2008), dessen Inhalt hierin durch Bezugnahme eingeschlossen wird) oder benutzerdefinierte Kommunikationsprotokolle. Daher kann das elektronische Gerät 600 als ein Remote-Controller wie der Remote-Controller 140, der oben in Bezug auf 1 beschrieben wird, dienen.
-
Die Kommunikationsprotokolllogik 640 kann ermöglichen, dass die Details der vom elektronischen Gerät 600 implementierten Weiterleitungsebene zu definieren und/oder zu modifizieren sind. Demnach ermöglicht die Kommunikationsprotokolllogik 640, dass ein Kommunikationsnetzwerk programmierbar gemacht werden kann.
-
Die Kommunikationsprotokolllogik 640 kann die Verwendung eines oder mehrerer Modelle 642 zur Implementierung der Funktionalität der Weiterleitungsebene unterstützen. Ein Modell 642 kann den kompletten Satz von Netzwerkweiterleitungsfunktionalität, die vom elektronischen Gerät 600 zu implementieren ist, repräsentieren. So kann beispielsweise das Modell 642 die Funktionalität und Leistung der Weiterleitungsebene definieren.
-
Das Modell 642 kann ein oder mehrere Submodelle beinhalten. Ein Submodell kann eine Sammlung von primitiven Funktionalitäten, die im Modell 642 zu implementieren sind, repräsentieren. Durch Teilung des Modells 642 in Submodelle wird die Modularität und Kompartmentierung gefördert.
-
Die Submodelle können ein oder mehrere Vernetzungsprimitive beinhalten. Ein Vernetzungsprimitiv ist eine Basiseinheit der Funktionalität, die von dem elektronischen Gerät 600 zu implementieren ist. Ein Vernetzungsprimitiv kann zum Beispiel eine Beschreibung einer bestimmten Funktionalität, die im Kommunikationsnetzwerk verwendet werden soll, sein. Ein Vernetzungsprimitiv kann beschreiben, welche Aktionen das elektronische Gerät 600 durchführen soll, aber normalerweise beinhaltet es keine Anforderungen, wie diese Aktionen durchgeführt werden sollen. Demnach kann ein Vernetzungsprimitiv ein gewünschtes Ergebnis beschreiben, ohne Implementierungsdetails zum Erreichen des Ergebnisses bereitzustellen. Die Implementierungsdetails können dem speziellen Gerät, das das Vernetzungsprimitiv implementiert, überlassen oder durch ein externes Gerät spezifiziert werden.
-
So kann beispielsweise ein Vernetzungsprimitiv, das sich auf Warteschleifen bezieht, spezifizieren, dass das elektronische Gerät 600 (welches als ein Weiterleitungsgerät dient) eine flache oder hierarchische Warteschleife, eine gemeinsame Pufferressourcennutzung, eine dynamische Puffergrößenbestimmung, Taildrop-Warteschleifen-Management, gewichtetes Taildrop-Warteschleifen-Management oder High und Low Water-Marks für Warteschleifen implementieren soll. Die Planung von Primitiven kann spezifizieren, dass die Planung in einem Round-Robin-Modus, wie ein gewichtetes Round-Robin, eine Warteschleife mit geringer Latenz oder eine Warteschleife streng nach Priorität, eine WFG-(Weighed Fair Queuing) oder klassenbasierte WFQ erfolgen soll Messungsprimitive können eine One-Rate-Two-Color-(1R2C-)IP-Paket-Markierung, eine 1R3C-Markierung oder eine 2R3C-Markierung verwenden. Zahlreiche andere Vernetzungsprimitive können ebenso verwendet werden. Die Details der Implementierungen dieser Vernetzungsprimitive können unspezifiziert sein und dem Gerät, das die Primitive implementiert, überlassen bleiben.
-
Ein Submodell kann als eine Sammlung von einem oder mehreren Vernetzungsprimitiven aufgebaut sein. Beispielsweise könnte ein Submodell spezifizieren, dass das elektronische Gerät 600 flache Warteschleifen mit Round-Robin-Planung verwenden soll.
-
Mehrere Submodelle können in einem Gerätemodell 642, das die gesamte Netzwerk-Routing-/Weiterleitungsfunktionalität des elektronischen Geräts 600 spezifiziert, angeordnet sein So kann beispielsweise das Modell 642 anzeigen, dass unter bestimmten Umständen, wie z. B. in Perioden eines hohen oder niedrigen Netzwerkverkehrs oder beim Empfang bestimmter Typen von Paketen, ein erstes Submodell und unter anderen Umständen ein zweites Submodell verwendet werden soll. Durch Modifizieren des Modells 642 kann ein Netzwerkadministrator veranlassen, dass das elektronische Gerät 600 unterschiedliche Netzwerkweiterleitungsverhalten zeigt.
-
Das Kommunikationsprotokoll 640 kann auf ein Modell 642 (aus Submodellen und Primitiven aufgebaut) verweisen und die Funktionalität, die vom Modell 642 unter Verwendung der von der Implementierungsdatenbank 630 definierten Funktionalität definiert ist, implementieren. Alternativ kann das Kommunikationsprotokoll 640 Standard- oder generische Implementierungen, die lokal auf dem Kommunikationsprotokoll 640 gespeichert oder von einem anderen Standort, wie z. B. einem Remote-Controller, bereitgestellt werden, verwenden.
-
Eine oder mehrere Ausführungsformen der Erfindung können unter Verwendung von computerausführbaren Anweisungen und/oder Daten, die ein oder mehrere nicht-transitorische, reale computerlesbare Medien enthalten, implementiert werden. Die Medien können die Folgenden sein, sind aber nicht beschränkt auf diese: eine Festplatte, eine Compact Disc (CD), eine Digital versatile Disk (DVD), eine Flash-Speicherkarte, ein Programmierbarer Nur-Lese-Speicher (PROM), ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein magnetoresistiver Random Access Memory (MRAM), ein Magnetband oder andere computerlesbare Medien.
-
7 stellt eine Netzwerkimplementierung, die eine oder mehrere Ausführungsformen der Erfindung implementieren kann, dar. Ein System 700 kann ein Datenverarbeitungsgerät 600, ein Netzwerk 712, einen Dienstleister 713, eine Zielumgebung 714 und einen Cluster 715 umfassen. Die Ausführungsform von 7 ist exemplarisch und andere Ausführungsformen können mehr Geräte, weniger Geräte oder Geräte in anderen Anordnungen, die sich von der Anordnung in 7 unterscheiden, beinhalten.
-
Das Netzwerk 712 kann Daten von einer Quelle zu einem Ziel transportieren. Ausführungsformen des Netzwerks 712 können Netzwerkgeräte wie z. B. Router, Schalter, Firewalls und/oder Server (nicht gezeigt) und Verbindungen (z. B. Links) zum Datentransport verwenden. Die Daten können sich auf jede Art von maschinenlesbaren Informationen, die im Wesentlichen jedes Format aufweisen, das in einem oder mehreren Netzwerken und/oder mit einem oder mehreren Geräten (z. B. dem Datenverarbeitungsgerät 600, dem Dienstleister 713 usw.) genutzt werden kann, beziehen. Die Daten können digitale und analoge Informationen enthalten. Ferner können die Daten können paketiert und nicht-paketiert sein.
-
Das Netzwerk 712 kann ein fest verdrahtetes Netzwerk unter Verwendung von Drahtleitungen und/oder optischen Fasern sein und/oder es kann ein drahtloses Netzwerk sein, das optische Frequenzen im freien Raum, Hochfrequenz (RF) und/oder akustische Übertragungswege verwendet. In einer Implementierung kann das Netzwerk 712 ein im Wesentlichen öffentliches Netzwerk, wie z. B. das Internet, sein. In einer anderen Implementierung kann das Netzwerk 712 ein mehr eingeschränktes Netzwerk, wie ein virtuelles Unternehmensnetzwerk, sein. Das Netzwerk 712 kann das Internet, Intranet, Local Area Network (LAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), ein drahtloses Netzwerk (z. B. unter Verwendung von IEEE 802.11) oder einen anderen Netzwerktyp 712, wie z. B. die Common Object Request Broker Architecture (CORBA) oder das Distributed Component Object Model (DCOM) beinhalten oder Webdienste, wie z. B. REST-Dienste, verwenden. Implementierungen von Netzwerken und/oder Geräten, die in den hier beschriebenen Netzwerken operieren, sind beispielsweise nicht auf irgendeinen bestimmten Datentyp, ein Protokoll und/oder eine Architektur/Konfiguration beschränkt.
-
Der Dienstleister 713 kann ein Gerät, das einem anderen Gerät einen Dienst zur Verfügung stellt, einschließen. So kann beispielsweise der Dienstleister 713 eine Einheit (z. B. eine Einzelperson, eine Körperschaft, eine Bildungseinrichtung, eine Regierungsbehörde usw.), die einen oder mehrere Dienste zu einem Ziel unter Verwendung eines Servers und/oder andere Geräten bereitstellt, umfassen. Die Dienste können Anweisungen enthalten, die von einem Ziel ausgeführt werden, um eine Operation (z. B. eine Optimierungsoperation) auszuführen. Alternativ kann ein Dienst Anweisungen, die im Namen eines Ziels ausgeführt werden, damit eine Operation im Namen des Ziels ausgeführt wird, beinhalten.
-
Der Server 714 kann ein Gerät einschließen, das Informationen über das Netzwerk 712 erhält. Zum Beispiel kann der Server 714 ein Gerät, das Benutzereingaben vom Computer 600 enthält, sein.
-
Das Cluster 715 kann eine Reihe von Ausführungseinheiten (Units of Execution – UEs) 716 enthalten und die Datenverarbeitung im Namen des Computers 600 und/oder eines anderen Geräts, wie z. B. dem Dienstleister 713 oder dem Server 714, durchführen. So kann beispielsweise das Cluster 715 eine parallele Datenverarbeitung bei einer Operation, die vom Computer 600 empfangen wird, durchführen. Das Cluster 715 kann UEs 716, die auf einem einzelnen Gerät oder Chip oder auf einer Reihe von Geräten oder Chips residieren, einschließen.
-
Die Ausführungseinheiten (UEs) 716 können Weiterleitungsgeräte, die Operationen im Namen eines Geräts wie dem anfordernden Gerät durchführen, einschließen. Eine UE kann ein Mikroprozessor, ein Field Programmable Gate Array (FPGA) und/oder ein anderer Verarbeitungsgerätetyp sein. Die UE 716 kann einen Code, wie z. B. einen Code für die Betriebsumgebung, enthalten. So kann beispielsweise eine UE einen Teil einer Betriebsumgebung, die die Parallelverarbeitungsaktivitäten betrifft, ausführen. Der Dienstleister 713 kann das Cluster 715 betreiben und dem Computer 600 interaktive Optimierungsfähigkeiten auf Subskriptionsbasis (z. B. über einen Webdienst) bereitstellen.
-
Die Ausführungseinheiten (UEs) können der Anwendung 624 remote/verteilte Verarbeitungskapazitäten bereitstellen. Eine Hardware-Ausführungseinheit kann ein Gerät (z. B. eine Hardware-Ressource), das parallele Programmierungstätigkeiten ausführen und/oder sich an ihnen beteiligen kann, einschließen. So kann beispielsweise eine Hardware-Ausführungseinheit als Antwort auf einen Anfrage und/oder Aufgabe, die sie erhalten hat (z. B. direkt oder über ein Proxygerät), parallele Programmierungstätigkeiten ausführen und/oder sich an ihnen beteiligen. Eine Hardware-Ausführungseinheit kann im Wesentlichen jede Art von paralleler Programmierung (z. B. Aufgabenabwicklung, Datenverarbeitung, Stream Processing usw.) unter Verwendung von einem oder mehreren Geräten ausführen und/oder sich daran beteiligen. So kann beispielsweise eine Hardware-Ausführungseinheit ein einzelnes Verarbeitungsgerät, das mehrere Kerne oder eine Reihe von Prozessoren enthält, einschließen. Eine Hardware-Ausführungseinheit kann auch ein programmierbares Gerät, wie ein Field Programmable Gate Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), ein digitaler Signalprozessor (DSP) oder ein anderes programmierbares Gerät sein. Geräte, die in einer Hardware-Ausführungseinheit verwendet werden, können in vielen verschiedenen Konfigurationen (oder Topologien), wie z. B. einem Gitter, einem Ring, einem Stern oder einer anderen Konfiguration, angeordnet sein. Eine Hardware-Ausführungseinheit kann einen oder mehrere Threads (oder Prozesse) bei der Durchführung von Verarbeitungsprozessen unterstützen.
-
Eine Software-Ausführungseinheit kann eine Softwareressource (wie z. B. eine technische Computerumgebung), die eine oder mehrere parallele Programmieraktivitäten durchführen und/oder sich an ihnen beteiligen können, einschließen. Eine Software-Ausführungseinheit kann als Antwort auf einen Empfang eines Programms und/oder eines oder mehrere Teile des Programms eine oder mehrere parallele Programmieraktivitäten durchführen und/oder sich daran beteiligen. Eine Software-Ausführungseinheit kann unter Verwendung von ein oder mehrere Hardware-Ausführungseinheiten verschiedene Arten von parallelen Programmieraktivitäten durchführen und/oder sich daran beteiligen. Eine Software-Ausführungseinheit kann einen oder mehrere Threads und/oder Prozesse bei der Durchführung von Verarbeitungsprozessen unterstützen.
-
Der Begriff „parallele Programmierung“ kann so verstanden werden, dass er mehrere Arten von paralleler Programmierung, z. B. parallele Aufgabenprogrammierung, parallele Datenprogrammierung und parallele Stream-Programmierung, umfasst. Die parallele Programmierung kann verschiedene Arten der Verarbeitung, die auf mehrere Ressourcen verteilt werden können (z. B. Software-Ausführungseinheiten, Hardware-Ausführungseinheiten, Prozessoren, Mikroprozessoren, Cluster, Labs) und gleichzeitig ausgeführt werden können, umfassen.
-
So kann beispielsweise die parallele Programmierung die parallele Aufgabenprogrammierung, bei der eine Reihe von Aufgaben gleichzeitig auf einer Reihe von Software-Ausführungseinheiten bearbeitet werden kann, einschließen. Bei der parallelen Aufgabenprogrammierung kann eine Aufgabe unabhängig von anderen Aufgaben, die zum Beispiel gleichzeitig ausgeführt werden, bearbeitet werden.
-
Die parallele Programmierung kann eine parallele Datenprogrammierung, bei der Daten (z. B. ein Datensatz) in eine Anzahl von Abschnitten zergliedert werden können, die beispielsweise unter Verwendung von Software-Ausführung parallel ausgeführt werden können, einschließen. Bei der parallelen Datenprogrammierung können die Software-Ausführungseinheiten und/oder die Datenabschnitte bei fortschreitender Verarbeitung miteinander kommunizieren.
-
Die parallele Programmierung kann eine parallele Stream-Programmierung (die manchmal als parallele Pipeline-Programmierung bezeichnet wird) beinhalten. Die parallele Stream-Programmierung kann eine Reihe von Software-Ausführungseinheiten, die beispielsweise in Serie (z. B. einer Zeile) angeordnet sind, verwenden, wobei eine erste Software-Ausführungseinheit ein erstes Resultat erzeugen kann, das in eine zweite Software-Ausführungseinheit, die ein zweites Resultat aufgrund des ersten Resultats erzeugen kann, eingespeist werden kann. Die parallele Stream-Programmierung kann auch ein Stadium enthalten, bei dem die Aufgabenverteilung in einem gerichteten, azyklischen Graphen (DAG) oder einem zyklischen Graphen ausgedrückt werden kann.
-
Andere parallele Programmierungstechniken können eine Kombination von parallelen Aufgaben-, Daten- und/oder Stream-Programmierungstechniken, isoliert oder mit anderen Arten von Verarbeitungstechniken, beinhalten, um parallele Hybrid-Programmiertechniken zu formen.
-
Die vorstehende Beschreibung kann verschiedene Ausführungsformen der Erfindung veranschaulichen und beschreiben, ist aber in keiner Weise dazu gedacht, den Umfang der Erfindung auf die offengelegte präzise Form zu beschränken. Modifikationen und Variationen können im Licht der obigen Lehren möglich sein oder aus der Praxis der Erfindung gewonnen werden. So kann beispielsweise, während eine Serie von Handlungen oben beschrieben wurde, die Reihenfolge der Handlungen in anderen Implementierungen, die mit den Prinzipien der Erfindung übereinstimmen, modifiziert werden. Außerdem können unabhängige Handlungen parallel ausgeführt werden.
-
Zusätzlich können eine oder mehrere Implementierungen, die mit den Prinzipien der Erfindung übereinstimmen, unter Verwendung eines oder mehrerer Geräte und/oder einer oder mehrere Konfigurationen, die sich von den in den Figuren dargestellten und in der Spezifikation beschriebenen unterscheiden, ohne vom Gedanken der Erfindung abzuweichen, implementiert werden. Ein oder mehrere Geräte und/oder Komponenten können zu den Implementierungen der Figuren in Abhängigkeit von spezifischen Implementierungen und/oder Anwendungen hinzugefügt oder von diesen entfernt werden. Ferner können eine oder mehrere Implementierungen nicht auf eine bestimmte Hardware-Kombination beschränkt sein.
-
Ferner können bestimmte Teile der Erfindung als Logik, die eine oder mehrere Funktionen ausführen kann, implementiert sein. Diese Logik kann Hardware wie eine festverdrahtete Logik, eine anwendungsspezifische, integrierte Schaltung, eine Field Programmable Gate Array, einen Mikroprozessor, eine Software oder eine Kombination von Hardware und Software einschließen.
-
Kein Element, keine Handlung oder Anweisung, das bzw. die in der Beschreibung der Erfindung verwendet wird, darf als entscheidend oder wesentlich für die die Erfindung ausgelegt werden, solange dieses bzw. diese nicht explizit als solches ausgewiesen wird. So kann beispielsweise die Erfindung ohne die Verwendung eines Ruhezeit-Analysators 160 oder ohne die Festlegung, ob das System 110 eine Ruhezeit ist, ausgeführt werden. Daher können nicht-latenzzeitsensitive Anforderungen in Unteranforderungen unterteilt ohne Rücksicht darauf, ob eine Ruhezeit erfolgt, bedient werden. Alternativ kann der Ruhezeit-Analysator 160 ohne Aufteilung der nicht-latenzzeitsensitive Anforderungen in Unteranforderungen verwendet werden.
-
Auch soll der hier verwendete Artikel „ein“ einen oder mehrere Gegenstände umfassen. Wo nur ein Gegenstand gemeint ist, wird der Begriff „ein einzelner“ oder ein ähnlicher Begriff verwendet. Ferner soll der hier verwendete Ausdruck „basierend auf“ „zumindest teilweise basierend auf“ bedeuten, sofern nicht ausdrücklich anders angegeben. Zusätzlich ist der hier verwendete Begriff „Benutzer“ breit auszulegen und schließt beispielsweise ein elektronisches Gerät (wie z. B. eine Workstation) oder einen Benutzer eines elektronischen Geräts, wenn nicht anders angegeben, ein.
-
Es ist beabsichtigt, dass die Erfindung nicht auf die bestimmte Ausführungsform, die oben offengelegt wurde, beschränkt ist, sondern alle speziellen Ausführungsformen und Äquivalente, die in den Bereich der folgenden, angehängten Ansprüche fallen, einschließt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- McKeown, Nick et al.: „OpenFlow: Enabling Innovation in Campus Networks“ (Ermöglichung von Innovationen in Campusnetzwerken), ACM SIGCOMM Computer Communication Review Archive, Bd. 38, Ausgabe 2, S. 69–74 (April 2008) [0082]
- IEEE 802.11 [0094]