HINTERGRUND BACKGROUND
Dieses Dokument bezieht sich auf die halbzentrale Routenberechnung. This document refers to the semi-central route calculation.
Das Internet besteht aus mehreren autonomen Systemen. Ein autonomes System kann ein Netzwerk von mehreren Maschinen sein, einschließlich Routern, Clients und Servern, die jeweils von einem Netzbetreiber, z. B. einem Internetdienstanbieter oder einem großen Unternehmen, gesteuert werden. In dem autonomen System verwendet ein Router ein Routing-Protokoll, um die Kommunikation zwischen Maschinen in dem autonomen System und mit Maschinen in anderen Netzwerken und/oder anderen autonomen Systemen zu ermöglichen. Beispielsweise kann ein Router ein ausgewähltes Routing-Protokoll verwenden, um eine Kommunikation zu und von bestimmten Maschinen zu leiten. Verschiedene Routing-Protokolle können verwendet werden, um die Kommunikation innerhalb des autonomen Systems und die Kommunikation mit einem Netzwerk außerhalb des autonomen Systems zu steuern. Zum Beispiel kann das Grenzgateway-Protokoll verwendet werden, um Datenpakete außerhalb des autonomen Systems zu leiten, und das interne Grenzgatewayprotokoll oder das erste kürzeste Wegprotokoll kann verwendet werden, um Datenpakete innerhalb des autonomen Systems hindurchzuleiten. The Internet consists of several autonomous systems. An autonomous system may be a network of multiple machines, including routers, clients, and servers, each controlled by a network operator, e.g. An Internet service provider or a large company. In the autonomous system, a router uses a routing protocol to facilitate communication between machines in the autonomous system and with machines in other networks and / or other autonomous systems. For example, a router may use a selected routing protocol to direct communication to and from particular machines. Various routing protocols can be used to control communication within the autonomous system and communication with a network outside the autonomous system. For example, the border gateway protocol may be used to route data packets outside of the autonomous system, and the internal border gateway protocol or the first shortest path protocol may be used to pass data packets within the autonomous system.
Verfügbare Routing-Protokolle umfassen zentralisierte Routing-Protokolle und verteilte Routing-Protokolle. In einem zentralisierten Routing-Protokoll arbeitet jeder Router unter der Steuerung eines zentralen Servers, der vollständige Informationen über alle anderen Router im Netzwerk hat (z.B. topologische Informationen). In einem verteilten Routingprotokoll unterhält jeder Router seine eigenen Informationen über andere Router im (und bevorzugte Routingpfade innerhalb des) Netzwerk(s) oder autonomen System(s) und aktualisiert diese Informationen unabhängig auf der Grundlage von Protokollnachrichten, die von anderen Routern im Netzwerk empfangen werden. Available routing protocols include centralized routing protocols and distributed routing protocols. In a centralized routing protocol, each router operates under the control of a central server that has complete information about all other routers in the network (e.g., topological information). In a distributed routing protocol, each router maintains its own information about other routers in the (and preferred routing paths within) the network (s) or autonomous system (s) and updates that information independently based on protocol messages received from other routers on the network ,
KURZDARSTELLUNG SUMMARY
Diese Spezifikation beschreibt Technologien, die sich auf semi-zentralisiertes Routing beziehen. This specification describes technologies related to semi-centralized routing.
Im Allgemeinen kann ein innovativer Aspekt des Gegenstandes, der in dieser Spezifikation beschrieben ist, in Verfahren verkörpert werden, die die folgenden Aktionen umfassen: Empfangen eines Netzwerkprotokollpakets an einem Router, das zum Routing von Datenpaketen an einen oder mehrere zusätzliche Router angepasst ist, wobei das Netzwerkprotokollpaket einem Routing-Protokoll entspricht, das eine verteilte Routingberechnung bereitstellt; Senden des Netzwerkprotokollpaketes über einen Controller an einen ausgewählten aus einer Vielzahl von Route-Control-Servern; Verarbeiten des Netzwerksteuerpakets an dem ausgewählten Route-Control-Server, um ein Routingberechnungsergebnis zu erzeugen, das dem Routingprotokoll entspricht; Erzeugen von Routing-Informationen basierend auf der Routing-Berechnung, wobei die Routing-Informationen mit einem Steuerprotokoll übereinstimmen, das eine zentrale Routing-Berechnung bereitstellt; und Senden der Routing-Informationen an den Router zum Routing von Datenpaketen unter Verwendung des Steuerprotokolls. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierten Handlungen des Verfahrens ausführen. In general, an innovative aspect of the subject matter described in this specification may be embodied in methods including the actions of: receiving a network protocol packet at a router adapted to route data packets to one or more additional routers, the Network protocol packet corresponds to a routing protocol that provides a distributed routing calculation; Sending the network protocol packet via a controller to a selected one of a plurality of route control servers; Processing the network control packet at the selected route control server to produce a routing calculation result corresponding to the routing protocol; Generating routing information based on the routing calculation, wherein the routing information matches a control protocol that provides a central routing calculation; and sending the routing information to the router for routing data packets using the control protocol. Other embodiments of this aspect include corresponding systems, apparatus, and computer programs that are configured to perform the acts of the method encoded on computer storage devices.
Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Merkmale beinhalten. Das Verfahren kann das Verwenden des Routing-Berechnungsergebnisses beinhalten, um ein Netzwerkprotokollpaket zu erzeugen, das mit dem Routingprotokoll übereinstimmt; und das Senden des erzeugten Netzwerkprotokollpaketes an einen zweiten Router, der mit dem Router verbunden ist, wobei der zweite Router so eingerichtet ist, Datenpakete unter Verwendung des Routingprotokolls zu leiten. Der Router kann so konfiguriert werden, dass er ein zentrales Steuerungsprotokoll verwendet. Das Verfahren kann vor dem Empfangen des Netzwerkprotokollpakets am Router folgendes beinhalten: am Controller, Empfangen einer Nachricht von dem ausgewählten Route-Control-Server, wobei die Antwort Routerzuweisungsinformationen umfasst, um eine Zuordnung zwischen dem ausgewählten Route-Control-Server und dem Router zu bilden. Die Router-Zuweisungsinformationen können Daten enthalten, die anzeigen, dass der ausgewählte Route-Control-Server dem Router zugeordnet ist. Das Verfahren kann den Zugriff auf eine Zuordnung vor dem Senden des Netzwerkprotokollpakets umfassen, um den ausgewählten Route-Control-Server auszuwählen. Das Steuerprotokoll kann ein OpenFlow-Protokoll sein. Das Routingprotokoll kann ein Grenzgatewayprotokoll oder ein Protokoll für das primäre Öffnen des kürzesten Pfads umfassen. Das Verfahren kann das Erfassen eines Fehlers im Controller beinhalten; Zuweisen eines zweiten Controllers, um die Kommunikation zwischen dem Router und der Vielzahl von Route-Control-Servern zu verwalten; und vom Controller, Senden einer Nachricht an die Vielzahl von Route-Control-Servern und den Router, wobei die Nachricht Controller-Statusinformationen umfasst. Der zweite Controller kann eine Nachricht von dem ausgewählten Route-Control-Server empfangen, wobei die Antwort Routerzuweisungsinformationen beinhaltet, um eine Zuordnung zwischen dem ausgewählten Route-Control-Server und dem Router zu bilden. Der Route-Control-Server kann das Routenberechnungsergebnis unter Verwendung des am Router empfangenen Netzwerkprotokollpakets erzeugen. Der ausgewählte Route-Control-Server kann das Routenberechnungsergebnis unter Verwendung des Netzwerkprotokollpakets, das an dem Router empfangen wird, und Netzwerktopologieinformation, die durch die Steuerung bereitgestellt wird, erzeugen. These and other embodiments may optionally include one or more of the following features. The method may include using the routing calculation result to generate a network protocol packet that conforms to the routing protocol; and sending the generated network protocol packet to a second router connected to the router, wherein the second router is configured to route data packets using the routing protocol. The router can be configured to use a central control protocol. The method, prior to receiving the network protocol packet at the router, may include: at the controller, receiving a message from the selected route control server, the response including router assignment information to form an association between the selected route control server and the router , The router allocation information may include data indicating that the selected route control server is associated with the router. The method may include accessing an association prior to sending the network protocol packet to select the selected route control server. The control protocol can be an OpenFlow protocol. The routing protocol may include a border gateway protocol or protocol for primary opening of the shortest path. The method may include detecting an error in the controller; Assigning a second controller to manage communication between the router and the plurality of route control servers; and from the controller, sending a message to the plurality of route control servers and the router, the message including controller status information. The second controller can receive a message from the selected Route Control server, with the answer Router allocation information includes to form an association between the selected route control server and the router. The route control server may generate the route calculation result using the network protocol packet received at the router. The selected route control server may generate the route calculation result using the network protocol packet received at the router and network topology information provided by the controller.
Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Ein Netzwerk kann ein zentrales Routing-Protokoll implementieren, während die Kompatibilität mit herkömmlichen verteilten Routing-Protokollen wie dem Open Shortest Path First (OSPF) und dem Border Gateway Protocol (BGP) beibehalten wird. Dies ermöglicht es dem Betreiber eines Netzwerks, das Netzwerk schrittweise von einer Berechnung der verteilten Route zu einer zentralisierten Routenberechnung umzuwandeln. Darüber hinaus ist es durch das Einfügen mindestens eines Standby-Controllers in die Steuerebene, um die Master-Steuereinheit zu ersetzen, falls die Master-Steuereinheit ausfällt oder nicht reagiert, möglich, einen Verlust an Betriebsfähigkeit durch einen einzigen Fehlerpunkt zu vermeiden. Zusätzlich kann die Routenberechnung zentralisiert werden, um lange Konvergenzzeiten und Schleifen zu vermeiden. Zusätzlich kann eine zentrale Routenberechnung auch eine optimale Routenberechnung ermöglichen. Certain embodiments of the subject matter described in this specification may be implemented to achieve one or more of the following advantages. A network can implement a centralized routing protocol while maintaining compatibility with traditional distributed routing protocols such as the Open Shortest Path First (OSPF) and the Border Gateway Protocol (BGP). This allows the operator of a network to progressively transform the network from calculating the distributed route to a centralized route calculation. Moreover, by inserting at least one standby controller into the control plane to replace the master controller, if the master controller fails or does not respond, it is possible to avoid loss of operability by a single failure point. In addition, the route calculation can be centralized to avoid long convergence times and loops. In addition, a central route calculation can also enable an optimal route calculation.
Die Details einer oder mehrerer Ausführungsformen eines Themengebietes, die in dieser Spezifikation beschrieben werden, sind in den begleiteten Bildern und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich. The details of one or more embodiments of a subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects and advantages of the subject matter will be apparent from the description, drawings and claims.
KURZBESCHREIBUNG DER ZEICHNUNGEN BRIEF DESCRIPTION OF THE DRAWINGS
1A ist ein Blockdiagramm eines Beispielnetzwerks, das ein semi-zentralisiertes Routing durchführt. 1A Figure 10 is a block diagram of an example network that performs semi-centralized routing.
1B ist ein Blockdiagramm eines beispielhaften Netzwerks. 1B is a block diagram of an example network.
2 ist ein Blockdiagramm eines beispielhaften Netzwerks, das ein semi-zentralisiertes Routing durchführt. 2 Figure 10 is a block diagram of an exemplary network that performs semi-centralized routing.
3 ist ein Flussdiagramm eines Beispielprozesses für semi-zentralisiertes Routing. 3 Figure 3 is a flow chart of an example process for semi-centralized routing.
4 ist eine Darstellung einer beispielhaften Konvertierung einer Route zu einem Datenfluss. 4 is a representation of an exemplary conversion of a route to a data flow.
Gleiche Verweissymbole in den verschiedenen Zeichnungen zeigen gleiche Elemente an. Identical reference symbols in the various drawings indicate the same elements.
DETAILLIERTE BESCHREIBUNG DETAILED DESCRIPTION
Im Allgemeinen umfasst ein Netzwerk einen Master-Controller, eine Vielzahl von Routern und mindestens einen Route-Control-Server. Der Master-Controller und Router sind eingestellt, um ein zentrales Routingprotokoll, z. B. ein OpenFlow-Protokoll, zu implementieren, aber die Router können sich mit Routern verbinden, die verteilte Routingprotokolle verwenden, um verteilte Protokollpakete, z. B. OSPF- oder BGP-Protokollpakete zu senden und zu empfangen. Wenn ein Router ein verteiltes Routing-Protokollpaket empfängt, stellt es das Protokollpaket dem Master-Controller zur Verfügung. Der Master-Controller leitet dann das Netzwerkprotokollpaket an den entsprechenden Route-Control-Server weiter. Der Route-Control-Server analysiert das Netzwerkprotokollpaket und berechnet Routinginformationen für den Router unter Verwendung eines verteilten Routingprotokolls, e.g., BGP des OSPF. Der Route-Control-Server kann die berechnete Routeninformation so verarbeiten, dass er vom Router verwendet werden kann. Beispielsweise kann der Route-Control-Server eine OpenFlow-Weiterleitungstabelle oder einen Datenfluss erzeugen, der von dem Router benutzt werden soll. In einigen Implementierungen stellt der Route-Control-Server die berechnete Route zu dem Master-Controller bereit, der die berechnete Routeninformation in ein Format übersetzt, das von dem Router verwendet werden kann, wie zum Beispiel eine Weiterleitungstabelle oder ein OpenFlow-Ablauf. Die übersetzten Routeninformationen werden dem Router zur Verfügung gestellt. In general, a network includes a master controller, a plurality of routers, and at least one route control server. The master controller and router are set up to provide a central routing protocol, e.g. For example, an OpenFlow protocol may be implemented, but the routers may connect to routers that use distributed routing protocols to provide distributed protocol packets, e.g. For example, you can send and receive OSPF or BGP protocol packets. When a router receives a distributed routing protocol packet, it makes the protocol packet available to the master controller. The master controller then forwards the network protocol packet to the appropriate route control server. The route control server analyzes the network protocol packet and computes routing information for the router using a distributed routing protocol, e.g., BGP of the OSPF. The Route Control server can process the calculated route information so that it can be used by the router. For example, the Route Control server may generate an OpenFlow forwarding table or data flow to be used by the router. In some implementations, the route control server provides the calculated route to the master controller, which translates the calculated route information into a format that can be used by the router, such as a forwarding table or an OpenFlow flow. The translated route information is provided to the router.
1A ist ein Blockdiagramm eines Beispielnetzwerks 100, das ein halb zentralisiertes Routing durchführt. Das Beispielnetzwerk 100 beinhaltet eine Datenebene 102 und eine Steuerebene 104. Die Datenebene 102 beinhaltet einen oder mehrere Router 106a–106d. Netzwerkkommunikationen werden zwischen den Routern 106a–106d und den anderen verbundenen Routern in der Datenebene 102 ausgetauscht, die in 1A nicht dargestellt sind. Wenngleich nicht in 1A dargestellt, kann jeder Router 106a–106d miteinander verbunden werden. Beispielsweise kann der Router 106a mit den Routern 106b, 106c und 106d verbunden sein, und der Router 106b kann mit den Routern 106a, 106c und 106d verbunden sein. 1A is a block diagram of an example network 100 that performs semi-centralized routing. The example network 100 includes a data level 102 and a control plane 104 , The data level 102 includes one or more routers 106a - 106d , Network communications will be between the routers 106a - 106d and the other connected routers in the data plane 102 exchanged in 1A are not shown. Although not in 1A represented, every router can 106a - 106d be connected to each other. For example, the router 106a with the routers 106b . 106c and 106d be connected, and the router 106b can with the routers 106a . 106c and 106d be connected.
Es wird festgestellt, dass die Router 106a–106d eine Weiterleitungstabelle oder eine andere Datenstruktur umfassen können, die verwendet wird, um Datenpakete gemäß einem zentralisierten Routingprotokoll zu leiten. Obgleich diese Tabellen oder Datenstrukturen in den Routern 106a–106d enthalten sind, werden sie als Teil der Steuerebene 104 betrachtet. It is stated that the router 106a - 106d may comprise a forwarding table or other data structure used to packetise data according to a centralized one Routing protocol. Although these tables or data structures in the routers 106a - 106d are included as part of the tax level 104 considered.
Bei den Routern 106a–106d kann es sich um Router handeln, die so konfiguriert sind, dass sie ein zentrales Routing durchführen. Beispielsweise können die Router 106a bis 106d als Open-Flow-Router eingestellt sein. Die Router 106a–106d können mit anderen Routern im Netzwerk 100 und/oder anderen Routern verbunden sein, die sich außerhalb des Netzwerks 100 befinden. Zum Beispiel stell 1B zeigt beispielhafte Verbindungen zwischen dem Netzwerk 100 und einem anderen autonomen System 160. 1B ist weiter unten beschrieben. At the routers 106a - 106d they can be routers configured to perform centralized routing. For example, the routers 106a to 106d be set as open-flow router. The routers 106a - 106d can work with other routers on the network 100 and / or other routers that are outside the network 100 are located. For example, adjust 1B shows exemplary connections between the network 100 and another autonomous system 160 , 1B is described below.
Die Router 106a–106d können mit anderen OpenFlow-Routern verbunden werden. Obwohl die Router 106a–106d so konfiguriert sind, dass sie ein zentrales Routingprotokoll verwenden, z. B. OpenFlow, können die Router 106a–106d mit Routern verbunden sein, die ein verteiltes Routingprotokoll verwenden, e.g., BGP oder OSPF. Wie unten erklärt, stellen die Router 106a–106d in solchen Fällen das verteilte Routingprotokollpaket für die Leitwegberechnungen zum Master-Controller 108 bereit. The routers 106a - 106d can be connected to other OpenFlow routers. Although the router 106a - 106d are configured to use a central routing protocol, e.g. OpenFlow, the routers can 106a - 106d be connected to routers using a distributed routing protocol, eg, BGP or OSPF. As explained below, the routers 106a - 106d in such cases, the distributed routing protocol packet for the routing calculations to the master controller 108 ready.
Die Steuerebene 104 enthält einen Master-Controller 108, mindestens einen Standby-Controller 110 und einen oder mehrere Route-Control-Server 112a–112d. Wie oben erwähnt, beinhalten die Router 106a–106d eine Weiterleitungstabelle oder Datenstruktur, die von dem Router verwendet wird, um Datenpakete zu leiten und sind Teil der Steuerebene 104. Zur Steuerung der Router 106a–106d verwendete Kommunikation und zur Konfiguration der Steuerebene 104 werden in der Steuerebene 104 ausgetauscht. The tax level 104 contains a master controller 108 , at least one standby controller 110 and one or more route control servers 112a - 112d , As mentioned above, the routers include 106a - 106d a routing table or data structure used by the router to route data packets and are part of the control plane 104 , To control the router 106a - 106d used communication and to configure the control level 104 be in the control plane 104 replaced.
Beim Master-Controller 108 kann es sich um jede Art von zentraler Routing-Steuerung handeln, die mit den Routern 106a–106d kommunizieren und/oder diese steuern kann. Zum Beispiel ist bei einigen Implementierungen der Master-Controller 108 ein Typ eines OpenFlow-Controllers, der konfiguriert ist, ein semi-zentralisiertes Routing durchzuführen und mit den Routern 106a–106d und den Route-Control-Servern 112a–d zu kommunizieren. Der Master-Controller 108 kann ein Server, ein anderer Computertyp oder ein Computersystem sein (z.B. ein Netzwerk von Computern), die so programmiert sind, dass sie die Operationen des Controllers ausführen. At the master controller 108 It can be any kind of centralized routing control that works with the routers 106a - 106d communicate and / or control. For example, in some implementations, the master controller is 108 a type of OpenFlow controller configured to perform semi-centralized routing and with the routers 106a - 106d and the route control servers 112a -D to communicate. The master controller 108 may be a server, another type of computer, or a computer system (eg, a network of computers) that are programmed to perform the operations of the controller.
Der Master-Controller 108 kann Nachrichten an die Router 106a–106d und die Route-Control-Server 112a–112d senden. Beispielsweise kann der Master-Controller 108 Nachrichten an die Router 106a–106d senden, die die Router 106a–106d informieren, dass der Master-Controller 108 betriebsbereit ist und dass die Router 112a–112d mit dem Master-Controller 108 kommunizieren sollten (z.B., eine Keep-Alive-Nachricht). Die Router 106a–106d können die Keep-Alive-Nachricht bestätigen oder anderweitig antworten und der Master-Controller 108 kann bestimmen, welche Router 106a–106d von den Bestätigungsnachrichten aus betriebsbereit sind. Wenn beispielsweise ein Router 106 die Keep-Alive-Nachricht bestätigt oder auf andere Weise reagiert, versteht die Master-Controller 108, dass der Router 106 aktiv ist. Wenn der Router 106 die Keep-Alive-Nachricht nicht bestätigt oder darauf reagiert, kann der Master-Controller 106 das Fehlen einer Antwort interpretieren, um anzuzeigen, dass der Router 106 nicht betriebsbereit oder ausgefallen ist. In ähnlicher Weise kann der Master-Controller 108 auch Keep-Alive-Nachrichten an die Route-Control-Server 112a–112d senden, um den Routern mitzuteilen, dass der Master-Controller 108 betriebsbereit ist und daß die Route-Control-Server 112a–112d mit ihr kommunizieren sollten. Jeder der Route-Control-Server 112a–112d kann die Nachrichten bestätigen oder auf andere Weise antworten und informiert den Master-Controller 108, dass er betriebsbereit ist. The master controller 108 can send messages to the router 106a - 106d and the route control server 112a - 112d send. For example, the master controller 108 Messages to the routers 106a - 106d send that the router 106a - 106d inform that the master controller 108 is ready and that the router 112a - 112d with the master controller 108 should communicate (eg, a keep-alive message). The routers 106a - 106d can confirm or otherwise answer the keep-alive message and the master controller 108 can determine which router 106a - 106d from the confirmation messages are ready. For example, if a router 106 the keep-alive message acknowledges or otherwise responds understands the master controller 108 that the router 106 is active. If the router 106 The keep-alive message can not be confirmed or responded to by the master controller 106 interpret the absence of a response to indicate that the router 106 not ready or failed. Similarly, the master controller 108 also keep-alive messages to the route control server 112a - 112d send to tell the routers that the master controller 108 is operational and that the route control server 112a - 112d should communicate with her. Each of the route control servers 112a - 112d can confirm the messages or otherwise respond and inform the master controller 108 that he is ready.
Der Master-Controller 108 kann periodisch überwachende Nachrichten an die Router 106a–106d und die Route-Control-Server 112a–112d übertragen. Beispielsweise kann der Master-Controller 108 alle 60 Sekunden oder eine andere vorbestimmte Frequenz überwachende Nachrichten übertragen. In einigen Implementierungen sendet der Master-Controller 108 die Nachricht an alle Router 106a–106d und die Route-Control-Server 112a–112d zur gleichen Zeit. In einigen Implementierungen kann der Master-Controller 108 die Nachricht zu einer Untermenge der Router 106a–106d und/oder einer Untermenge der Route-Control-Server 112a–112d übertragen. The master controller 108 can periodically monitor messages to the routers 106a - 106d and the route control server 112a - 112d transfer. For example, the master controller 108 transmit messages monitoring every 60 seconds or another predetermined frequency. In some implementations, the master controller sends 108 the message to all routers 106a - 106d and the route control server 112a - 112d at the same time. In some implementations, the master controller may 108 the message to a subset of the routers 106a - 106d and / or a subset of the route control servers 112a - 112d transfer.
Der Master-Controller 108 kann die Steuerebene konfigurieren. Beispielsweise kann der Route-Control-Server 108 eine Konfigurationsnachricht an die Route-Control-Server 112a–112d senden. Als Reaktion darauf kann der Master-Controller 108 Nachrichten von den Route-Control-Servern 112a–112d empfangen, die dem Master-Controller 108 mitteilen, dass ein bestimmter Route-Control-Server 112 (z. B. Route-Control-Server 112) mit einem bestimmten Router 106 verbunden ist (z.B. Router 106a) oder eine bestimmte Gruppe von Routern (z. B. Router 106a und 106c) und führt Routenberechnungen für die zugehörigen Router 106 durch. Der Master-Controller 108 kann diese Informationen sammeln und eine Tabelle oder eine andere Datenstruktur erzeugen, die die Beziehungen zwischen den Routern 106a–106d und den Route-Control-Servern 112a–112d darstellt (d.h. eine Routensteuertabelle). Zum Beispiel kann für jeden Router 106a–106d die Routenkontrolltabelle darstellen, welcher Route-Control-Servern 112a–112d zugeordnet ist, um Routenberechnungen für den Router 106a durchzuführen. In einigen Implementierungen gibt es eine Eins-zu-Eins-Korrespondenz zwischen den Route-Control-Servern 112 und den Routern 106, sodass jeder Route-Control-Server 112 Routenberechnungen für einen Router 106 durchführt. Beispielsweise zeigt 1A eine Eins-zu-Eins-Korrespondenz zwischen den Routern 106a–106d und den Route-Control-Servern 112a–112d. In einigen Implementierungen führt ein Route-Control-Server 112 Routenberechnungen für zwei oder mehr Router 106 durch. In einigen Implementierungen kann der Master-Controller 108 mit der Route-Steuertabelle programmiert werden und erzeugt die Route-Steuertabelle nicht von Nachrichten, die von den Route-Control-Servern 112a–112d empfangen werden. The master controller 108 can configure the control plane. For example, the route control server 108 a configuration message to the Route Control server 112a - 112d send. In response, the master controller 108 Messages from the Route Control servers 112a - 112d received the master controller 108 notify that a particular route control server 112 (eg route control server 112 ) with a specific router 106 connected (eg router 106a ) or a specific group of routers (for example, routers 106a and 106c ) and performs route calculations for the associated routers 106 by. The master controller 108 can gather this information and generate a table or other data structure that governs the relationships between the routers 106a - 106d and the route control servers 112a - 112d represents (ie, a route control table). For example, for each router 106a - 106d the route control table represent which route Control servers 112a - 112d is assigned to route calculations for the router 106a perform. In some implementations, there is one-to-one correspondence between the Route Control servers 112 and the routers 106 so every route control server 112 Route calculations for a router 106 performs. For example, shows 1A a one-to-one correspondence between the routers 106a - 106d and the route control servers 112a - 112d , In some implementations, a Route Control server runs 112 Route calculations for two or more routers 106 by. In some implementations, the master controller may 108 be programmed with the route control table and does not generate the route control table from messages sent by the route control servers 112a - 112d be received.
In einigen Implementierungen überträgt der Master-Controller 108 die Konfigurationsnachricht, wenn der Master-Controller 108 aktiv wird, z. B., wenn eine Standby-Steuerung 110 der Master-Controller zugewiesen wird oder während der Netzwerkinitialisierung. Zusätzlich kann in einigen Implementierungen der Master-Controller 108 diese Nachrichten in Reaktion auf eine Änderung in der Topologie übertragen. Wenn beispielsweise ein Router 106a keine Keep-Alive-Meldung bestätigt, kann die Master-Controller 108 feststellen, dass der Router 106a nicht mehr aktiv ist und überträgt Keep-Alive-Nachrichten an die anderen Router 112b bis 112d, um seine Route-Steuertabelle zu aktualisieren. Der Master-Controller 108 kann auch feststellen, dass ein Router 106 mit anderen Signalen ausgefallen ist. Zum Beispiel kann der Master-Controller 108 feststellen, dass ein Router 106 ausgefallen ist oder durch Erfassen eines Trennungssignals von dem zugrundeliegenden Transportprotokoll getrennt wird. In some implementations, the master controller transfers 108 the configuration message when the master controller 108 becomes active, for. For example, if a standby controller 110 assigned to the master controller or during network initialization. Additionally, in some implementations, the master controller 108 transmit these messages in response to a change in the topology. For example, if a router 106a no keep-alive message confirms the master controller 108 notice that the router 106a is no longer active and transmits keep-alive messages to the other routers 112b to 112d to update its route control table. The master controller 108 can also find that a router 106 has failed with other signals. For example, the master controller 108 notice that a router 106 has failed or is disconnected from the underlying transport protocol by detecting a disconnect signal.
Wenn der Master-Controller 108 feststellt, dass ein Router 106 oder ein Route-Control-Server 112 fehlgeschlagen ist oder nicht betriebsbereit ist, kann der Master-Controller 108 die Route-Steuertabelle rekonfigurieren, um den Fehler zu berücksichtigen. Wenn beispielsweise der Master-Controller 108 feststellt, dass ein Route-Control-Server 112 nicht betriebsbereit ist, kann der Master-Controller 108 den Router entsprechend dem Route-Control-Server 112 deaktivieren oder die Routesteuertabelle aktualisieren, um anzuzeigen, dass der Router (S), die dem Route-Control-Server 112 entsprechen, ebenfalls nicht betriebsbereit sein. In einigen Implementierungen kann der Master-Controller 108 einen anderen Route-Control-Server aktivieren, um den ausgefallenen Route-Control-Server zu ersetzen und die Routensteuertabelle zu aktualisieren, um diesen neuen Route-Control-Server wiederzugeben. If the master controller 108 determines that a router 106 or a route control server 112 failed or is not ready, the master controller 108 Reconfigure the route control table to account for the error. For example, if the master controller 108 determines that a route control server 112 is not ready, the master controller can 108 the router according to the route control server 112 or update the Routing Control Table to indicate that the Router (S) is the Route Control Server 112 also be inoperable. In some implementations, the master controller may 108 Activate another Route Control server to replace the failed Route Control server and update the route control table to reflect this new Route Control server.
Der Master-Controller 108 kann die Topologieinformationen der Router 106a–106d und/oder den Route-Control-Server 112a–112d sammeln. Beispielsweise kann der Master-Controller 108 die Topologieinformationen aus den berechneten Routeninformationen sammeln, die von den Route-Control-Server 112a–112d bereitgestellt werden. In einigen Implementierungen analysiert der Master-Controller 108 die berechnete Routeninformation, die von jedem der Route-Control-Server 112a–112d empfangen wird und ermittelt die bestehenden Netzwerkverbindungen und Latenzen, die jeder der Verbindungen zugeordnet sind. Als ein anderes Beispiel kann der Master-Controller 108 die Topologieinformation aus der Bestätigung einer Keep-Alive-Nachricht oder eines Mangels an Bestätigung durch die Router 106a–106d ermitteln. Die Master-Controller 108 kann die Topologieinformation speichern und sie den Route-Control-Server 112a–112d zur Verfügung stellen, die die Topologieinformationen verwenden können, um Routinginformationen zu berechnen. The master controller 108 can be the topology information of the router 106a - 106d and / or the route control server 112a - 112d collect. For example, the master controller 108 Collect the topology information from the calculated route information provided by the Route Control server 112a - 112d to be provided. In some implementations, the master controller analyzes 108 the calculated route information provided by each of the route control servers 112a - 112d is received and determines the existing network connections and latencies associated with each of the connections. As another example, the master controller 108 the topology information from the confirmation of a keep-alive message or a lack of acknowledgment by the routers 106a - 106d determine. The master controller 108 can store the topology information and the route control server 112a - 112d which can use the topology information to calculate routing information.
Wenn ein Router 106a–106d ein verteiltes Routingprotokollpaket empfängt, stellen die Router 106a–106d das verteilte Protokollpaket dem Master-Controller 108 zur Verfügung. Als Antwort bestimmt der Master-Controller 108, welcher Route-Control-Server 112a–112d das verteilte Protokollpaket verarbeiten sollte. Beispielsweise kann der Master-Controller 108 auf die Route-Steuertabelle zugreifen, um zu bestimmen, welcher Route-Control-Server 112a–112d dem Router 106a–106d zugeordnet ist, der das Netzwerk-Steuerpaket bereitgestellt hat. Der Master-Controller 108 leitet dann das verteilte Routingprotokollpaket an den entsprechenden Route-Control-Server 112a–112d weiter, der Routenberechnungen unter Verwendung des verteilten Routingprotokolls durchführt und die Routenberechnungen dem Master-Controller 108 zur Verfügung stellt. Der Route-Control-Server 112 wird nachfolgend näher erläutert. If a router 106a - 106d receive a distributed routing protocol packet, make the routers 106a - 106d the distributed protocol packet to the master controller 108 to disposal. In response, the master controller determines 108 , which route control server 112a - 112d should process the distributed protocol packet. For example, the master controller 108 access the route control table to determine which route control server 112a - 112d the router 106a - 106d associated with the network control packet. The master controller 108 then routes the distributed routing protocol packet to the appropriate Route Control server 112a - 112d which performs route calculations using the distributed routing protocol and the route calculations to the master controller 108 provides. The route control server 112 will be explained in more detail below.
Die Steuerebene 104 kann eine oder mehrere Standby-Steuerungen 110 umfassen. Die Standby-Steuerungen 110 sind ähnlich dem Master-Controller 108, empfangen jedoch keine Kommunikation von den Route-Control-Server 112a–112d oder den Routern 106a–106d, bis der Master-Controller 108 ausfällt oder auf andere Weise nicht funktionsfähig wird. Beispielsweise kann der Master-Controller 108 ein Hardware- oder Softwareversagen erleiden und inoperabel werden. Als Ergebnis des Fehlers wird ein Standby-Controller 110 über den Fehler informiert und übernimmt die Verantwortlichkeiten des Master-Controllers. In einigen Implementierungen können die Route-Control-Server 112a bis 112d den Fehler des Master-Controllers erkennen, da er während einer vorbestimmten Zeitperiode keine Keep-Alive-Nachricht empfängt. Als Ergebnis kann der Route-Control-Server 112a–112d eine Nachricht an den Standby-Controller 110 senden, der anzeigt, dass der Master-Controller 108 ausgefallen ist, und dem Standby-Controller 110 wird nun die Rolle des Master-Controllers zugewiesen. Verschiedene Verfahren können verwendet werden, um einen Standby-Controller 110 zu wählen. Beispielsweise können die Route-Control-Server 112a bis 112d mit einer vorbestimmten Folge von Standby-Steuerungen 110 programmiert werden, und die Route-Control-Server können die Standby-Steuerungen 110 in sequentieller Reihenfolge auswählen. The tax level 104 can have one or more standby controllers 110 include. The standby controls 110 are similar to the master controller 108 but do not receive communication from the Route Control server 112a - 112d or the routers 106a - 106d until the master controller 108 fails or otherwise becomes inoperable. For example, the master controller 108 suffer a hardware or software failure and become inoperable. As a result of the error becomes a standby controller 110 informed about the error and takes over the responsibilities of the master controller. In some implementations, the route control server can 112a to 112d detect the error of the master controller because it does not receive a keep alive message for a predetermined period of time. As a result, the route control server 112a - 112d a message to the standby controller 110 send, indicating that the master controller 108 has failed, and the standby controller 110 is now assigned the role of master controller. Various methods can be used to create a standby controller 110 to choose. For example, the route control server 112a to 112d with a predetermined sequence of standby controls 110 be programmed, and the route control server can use the standby controls 110 in sequential order.
Der Standby-Controller 110 konfiguriert die Steuerebene 104 durch Übertragen von Konfigurationsnachrichten an die Route-Control-Server 112a bis 112d. Der neue Master-Controller 110 kann die Konfigurationsnachrichten von den Route-Control-Server 112a–112d empfangen und eine Routensteuertabelle rekonstruieren. Zusätzlich kann der Standby-Controller 110 Keep-Alive-Nachrichten an die Router 106a–106d und die Route-Control-Server 112a–112d senden. Wie oben beschrieben, zeigen die Keep-Alive-Meldungen an, dass die Route-Control-Server 112a–112d und Router 106a–106d mit dem Standby-Controller 110 kommunizieren sollten, der als Master-Controller fungiert. The standby controller 110 configures the control plane 104 by transmitting configuration messages to the Route Control server 112a to 112d , The new master controller 110 can read the configuration messages from the route control server 112a - 112d receive and reconstruct a route control table. In addition, the standby controller 110 Keep-alive messages to the routers 106a - 106d and the route control server 112a - 112d send. As described above, the keep-alive messages indicate that the route control server 112a - 112d and routers 106a - 106d with the standby controller 110 should communicate, which acts as a master controller.
In einigen Implementierungen empfängt der Standby-Controller 110 Kommunikationen von den Route-Control-Servern 112a–112d und den Routern 106a–106d, während der Master-Controller 108 aktiv ist. Der Standby-Controller 110 imitiert einige der Operationen des Master-Controllers 108, z.B., die eine Route-Steuertabelle erzeugen und Topologieinformationen beibehalten, sodass, wenn der Master-Controller 108 ausfällt, die Standby-Steuerung 110 die Rolle des Master-Controllers übernehmen kann, ohne eine neue Route-Steuertabelle zu erstellen oder auf andere Weise die Steuerungsebene zu konfigurieren. Bei diesen Implementierungen kommunizieren die Route-Control-Server 112a–112d und die Router 106a–106d sowohl mit dem Master-Controller 108 als auch mit den Standby-Controllern 110. In some implementations, the standby controller receives 110 Communications from the Route Control servers 112a - 112d and the routers 106a - 106d while the master controller 108 is active. The standby controller 110 mimics some of the operations of the master controller 108 For example, those who generate a route control table and maintain topology information, so if the master controller 108 fails, the standby control 110 can take over the role of the master controller without creating a new route control table or otherwise configuring the control plane. In these implementations, the route control servers communicate 112a - 112d and the routers 106a - 106d both with the master controller 108 as well as with the standby controllers 110 ,
In einigen Implementierungen überträgt der Master-Controller 108 die Topologieinformation und die Route-Steuertabelle zu der Standby-Steuerung 110, wenn die Topologieinformation und die Routensteuertabelle erzeugt oder aktualisiert werden. In einigen Implementierungen liefert der Master-Controller 108 periodisch die Topologieinformation und die Routesteuertabelle. In solchen Implementierungen kann der Standby-Controller 110 die empfangene Topologieinformation und die Route-Steuertabelle verwenden, wenn ihm die Rolle des Master-Controllers zugewiesen ist. In some implementations, the master controller transfers 108 the topology information and the route control table to the standby controller 110 when the topology information and the route control table are generated or updated. In some implementations, the master controller provides 108 periodically the topology information and the route control table. In such implementations, the standby controller may 110 use the received topology information and the route control table when assigned the role of the master controller.
Die Route-Control-Server 112a bis 112d sind konfiguriert, um verteilte Routingprotokollnachrichten zu verarbeiten. Die Route-Control-Server 112a–112d können auf Maschinen implementiert werden, die vom Master-Controller 108 getrennt sind. In einigen Implementierungen kann jeder Route-Control-Server 112 auf einer unabhängigen Maschine oder einem Computer implementiert sein. In einigen Implementierungen können mehrere Route-Control-Server 112 auf virtuellen Maschinen implementiert werden, die auf einem einzelnen Computer oder einer Maschine oder auf einem Computersystem arbeiten, das mehrere Computer umfassen kann. The route control server 112a to 112d are configured to process distributed routing protocol messages. The route control server 112a - 112d can be implemented on machines by the master controller 108 are separated. In some implementations, every route control server can 112 be implemented on an independent machine or a computer. In some implementations, multiple route control servers 112 be implemented on virtual machines that operate on a single computer or machine or on a computer system that may include multiple computers.
Wie oben angegeben, ist jeder Streckensteuerserver 112a–112d einem bestimmten Router 106 oder einer bestimmten Gruppe von Routern 106 zugeordnet. Ein Netzbetreiber oder Administrator kann spezifizieren, mit welchem Router 106 jeder Streckensteuerserver 112 verbunden ist oder wie die Verbände durch einen automatisierten Prozess definiert werden können (z.B. um die Verantwortung für Router auf der Grundlage von Arbeitslasten der verfügbaren Route-Control-Server und/oder der Maschinen, auf denen die Route-Control-Server-Prozesse implementiert sind). As stated above, each route control server is 112a - 112d a specific router 106 or a specific group of routers 106 assigned. A network operator or administrator can specify which router to use 106 each route control server 112 or how the federations can be defined by an automated process (eg, responsibility for routers based on workloads of the available route control servers and / or the machines on which the route control server processes are implemented ).
Die Route-Control-Server 112a–112d empfangen verteilte Routingprotokollpakete vom Master-Controller 108 und führen Routeberechnungen für die Router 106a–106d durch. Beispielsweise kann der Route-Control-Server 112a das verteilte Routingprotokollpaket (z. B. BGP- oder OSPF-Pakete) empfangen und die Routinginformationen basierend auf den Routingprotokollen berechnen. In einigen Implementierungen können die Route-Control-Server 112a–112d die berechnete Routinginformation verarbeiten, um in einem Format zu sein, das von dem Router 106 verwendet werden kann, um Datenpakete weiterzuleiten. Zum Beispiel kann der Route-Control-Server 112a eine BGP-basierte Leitweginformation als einen Open-Flow-Fluss oder eine Weiterleitungstabelle verarbeiten, die von dem Router 106 verwendet werden kann, um Datenpakete weiterzuleiten. The route control server 112a - 112d receive distributed routing protocol packets from the master controller 108 and carry route calculations for the routers 106a - 106d by. For example, the route control server 112a receive the distributed routing protocol packet (eg, BGP or OSPF packets) and calculate the routing information based on the routing protocols. In some implementations, the route control server can 112a - 112d process the calculated routing information to be in a format that is provided by the router 106 can be used to forward data packets. For example, the route control server 112a process BGP-based routing information as an open-flow flow or forwarding table provided by the router 106 can be used to forward data packets.
In manchen Implementierungen können die Route-Control-Server 112a–112d so konfiguriert sein, dass sie Routeberechnungen auf der Grundlage mehrerer verteilter Routing-Protokolle durchführen. Bei diesen Implementierungen basieren die Routeberechnungen auf dem entsprechenden verteilten Routingprotokoll. Beispielsweise kann der Route-Control-Server 112 das verteilte Routingprotokollpaket analysieren, um das dem Paket zugeordnete Routingprotokoll zu bestimmen und das entsprechende Routingprotokoll zum Berechnen der Routeninformation zu verwenden. Es können verschiedene verteilte Routing-Protokolle verwendet werden. Zum Beispiel kann der Route-Control-Server 112a–112d konfiguriert sein, um BGP- oder OSPF-Routeberechnungen durchzuführen. In einigen Implementierungen verarbeiten die Route-Control-Server 112a–112d die Protokollpakete, um Änderungen (z. B. topologische Änderungen oder netzwerkbasierte Änderungen) im Netzwerk zu identifizieren. Basierend auf diesen Änderungen führen die Route-Control-Server 112a–112d Routeberechnungen durch, um neue Routen zu auszumachen (d.h. Routen, die verwendet werden, um die Routingtabellen zu aktualisieren). Die Routingtabellen können dann von den Routern verwendet werden. Beispielsweise können in einigen Implementierungen die Route-Control-Server 112a–112d die BGP- oder OSPF-Protokollpakete (d.h. die Informationen über die Topologie der Netzwerk- und/oder Netzwerkstatusinformationen enthalten) verarbeiten, um Routing-Informationen zu erzeugen, die verwendet werden können, um einen Eintrag in einer Weiterleitungstabelle oder einen im OpenFlow verwendeten Fluss zu aktualisieren. Die Leitwegsteuerserver 112a–112d liefern die Leitwegberechnungen an den Master-Controller 108. In some implementations, the route control servers 112a - 112d be configured to perform route calculations based on multiple distributed routing protocols. In these implementations, the route calculations are based on the corresponding distributed routing protocol. For example, the route control server 112 parse the distributed routing protocol packet to determine the routing protocol associated with the packet and use the appropriate routing protocol to compute the route information. Various distributed routing protocols can be used. For example, the route control server 112a - 112d be configured to perform BGP or OSPF route calculations. In some implementations, the route control servers process 112a - 112d the protocol packages to identify changes (such as topological changes or network-based changes) in the network. Based on These changes are made by the Route Control servers 112a - 112d Route calculations to discover new routes (ie routes used to update the routing tables). The routing tables can then be used by the routers. For example, in some implementations, the route control servers 112a - 112d process the BGP or OSPF protocol packets (ie containing information about the topology of the network and / or network status information) to generate routing information that can be used to provide an entry in a routing table or a flow used in the OpenFlow To update. The routing control servers 112a - 112d provide the route calculations to the master controller 108 ,
In einigen Implementierungen bestimmen die Route-Control-Server 112a–112d Routeinformationen und stellen die berechnete Routeinformation an die Master-Controller 108 bereit. Nachdem der Master-Controller 108 die Routebestimmungen empfängt, übersetzt sie die Leitweginformation in eine Weiterleitungstabelle, die von den Routern 106a–106d verwendet werden kann. Beispielsweise kann der Master-Controller 108 die Routeberechnungen empfangen, die unter Verwendung des verteilten Routingprotokolls z. B. BGP oder OSPF berechnet werden, und wandelt die Routenberechnungen in einen Fluss um, der von OpenFlow-Routern verwendet werden kann. Der Master-Controller 108 kann eine Weiterleitungstabelle aktualisieren, um den Fluss einzubeziehen. Der Master-Controller 108 stellt die Weiterleitungstabelle für den Router 106 bereit, der das Netzwerkprotokollpaket empfangen hat. Der Router 106 kann die Weiterleitungstabelle verwenden, um Routing-Datenpakete weiterzuleiten. In einigen Implementierungen kann der Master-Controller 108 die Routeberechnungen verwenden, um Informationen über Änderungen in der Netzwerktopologie zu den anderen Route-Control-Servern bereitzustellen, unabhängig davon, ob die anderen Route-Control-Server ein verteiltes Routingprotokollpaket empfangen haben. Die Route-Control-Server können die Informationen verwenden, um ihre eigenen Routeberechnungen durchzuführen und Routinginformationen für die Router zu aktualisieren. In some implementations, the route control servers determine 112a - 112d Routing information and provide the calculated route information to the master controller 108 ready. After the master controller 108 When it receives the routing conditions, it translates the routing information into a routing table provided by the routers 106a - 106d can be used. For example, the master controller 108 receive the route calculations using the distributed routing protocol e.g. BGP or OSPF, and converts the route calculations into a flow that can be used by OpenFlow routers. The master controller 108 can update a forwarding table to include the flow. The master controller 108 sets the routing table for the router 106 ready, who has received the network protocol package. The router 106 can use the forwarding table to forward routing data packets. In some implementations, the master controller may 108 Use the route calculations to provide information about changes in the network topology to the other Route Control servers, regardless of whether the other Route Control servers have received a distributed routing protocol packet. The Route Control servers can use the information to perform their own route calculations and to update routing information for the routers.
Zusätzlich können die Route-Control-Server 112a–112d die Routeberechnungen verwenden, um ein verteiltes Routingprotokollpaket basierend auf den Routeberechnungen zu erzeugen. Das verteilte Routingprotokollpaket kann den Routern 106a–106d über den Master-Controller 108 zur Verfügung gestellt werden. Die Router 106a–106d können dann das verteilte Routingprotokollpaket zu ihren benachbarten Routern übertragen, als ob es sich dabei um einen Router handle, der ein verteiltes Routingprotokoll durchführt. Additionally, the route control servers 112a - 112d use the route calculations to generate a distributed routing protocol packet based on the route calculations. The distributed routing protocol packet can be used by the routers 106a - 106d via the master controller 108 to provide. The routers 106a - 106d can then transmit the distributed routing protocol packet to their neighboring routers as if it were a router performing a distributed routing protocol.
1B zeigt ein Beispielnetzwerk 150. 1B stellt eine beispielhafte Implementierung des Netzwerks 100 dar, das konfiguriert ist, ein semizentralisiertes Routing durchzuführen, und eine Schnittstelle mit einem Netzwerk oder einem autonomen System 160, das konfiguriert ist, um verteiltes Routing auszuführen. 1B shows an example network 150 , 1B illustrates an exemplary implementation of the network 100 configured to perform a semicentralized routing and an interface to a network or autonomous system 160 that is configured to perform distributed routing.
Das Beispielnetz 150 enthält das Netzwerk 100 und ein autonomes System 160. 1B zeigt einen Teil des Netzwerks 100. Wie oben erläutert, sind die Router 106a–106d so konfiguriert, dass sie ein zentrales Routing von Datenpaketen durchführen und mit einem Master-Ccontroller verbunden sind, der in 1B nicht dargestellt ist. Die ebenfalls miteinander zu verbindenden Router 106a–106d sind mit einem Border-Router 106e verbunden, der auch für eine zentralisierte Weiterleitung von Datenpaketen konfiguriert ist und mit dem Master-Controller verbunden ist. Der Border-Router 106e befindet sich an der Grenze des Netzes 100 und des autonomen Systems 160. Der Border-Router 106e kann mit Routern außerhalb des Netzwerks 100 verbunden sein. Zum Beispiel kann der Border-Router 106e mit dem autonomen System 160 kommunizieren und Netzwerkprotokollpakete und Datenpakete mit dem autonomen System 160 austauschen. The example network 150 contains the network 100 and an autonomous system 160 , 1B shows part of the network 100 , As explained above, the routers are 106a - 106d configured to perform centralized routing of data packets and connected to a master C controller located in 1B not shown. The routers also to be connected 106a - 106d are with a border router 106e which is also configured for centralized forwarding of data packets and connected to the master controller. The border router 106e is located at the border of the network 100 and the autonomous system 160 , The border router 106e can work with routers outside the network 100 be connected. For example, the Border Router 106e with the autonomous system 160 communicate and network protocol packets and data packets with the autonomous system 160 change.
Das autonome System 160 kann von einer Firma oder einem Betreiber operiert werden, die sich von dem Betreiber des Netzes 100 unterscheidet und konfiguriert ist, ein herkömmliches verteiltes Routing-Protokoll auszuführen. In einigen Implementierungen wird das autonome System 160 von demselben Betreiber des Netzwerks 100 betrieben, ist jedoch so konfiguriert, ein herkömmliches verteiltes Routing-Protokoll auszuführen. The autonomous system 160 can be operated by a company or an operator, different from the operator of the network 100 differs and is configured to execute a conventional distributed routing protocol. In some implementations, the autonomous system becomes 160 from the same operator of the network 100 however, is configured to execute a conventional distributed routing protocol.
Das autonome System 160 umfasst einen Border-Router 162 und Router 164 und 166. Der Border-Router 162 kann ein Router an der Grenze des autonomen Systems 160 und anderer Netzwerke und/oder autonome Systeme sein, z. B. das Netzwerk 100. Der Border-Router 162 kann Netzwerkprotokollpakete und Datenpakete mit dem Border-Router 106e austauschen. Der Border-Router 162 kann konfiguriert sein, um ein verteiltes Routingprotokoll auszuführen. Beispielsweise kann der Grenzrouter 162 konfiguriert sein, um das BGP-Protokoll zu verwenden, um mit dem Netzwerk 100 zu kommunizieren Und/oder andere autonome Systeme. The autonomous system 160 includes a border router 162 and routers 164 and 166 , The border router 162 can be a router on the border of the autonomous system 160 and other networks and / or autonomous systems, e.g. For example, the network 100 , The border router 162 can use network protocol packets and data packets with the Border Router 106e change. The border router 162 can be configured to execute a distributed routing protocol. For example, the border router 162 be configured to use the BGP protocol to connect to the network 100 to communicate and / or other autonomous systems.
Der Border-Router 162 kann mit den Routern 164 und 166, die herkömmliche Router sind, und so eingestellt sein, verteiltes Routing innerhalb des autonomen Systems 160 auszuführen. Zum Beispiel können die Router 164 und 166 mit dem Border-Router 162 unter Verwendung eines verteilten inneren Gatewayprotokolls kommunizieren, z.B. internes BGP oder internes Gateway-Routing-Protokoll (IGRP). The border router 162 can with the routers 164 and 166 which are conventional routers, and be set up distributed routing within the autonomous system 160 perform. For example, the routers 164 and 166 with the border router 162 communicate using a distributed inner gateway protocol, eg Internal BGP or Internal Gateway Routing Protocol (IGRP).
In einigen Implementierungen beinhaltet das Netzwerk 100 das autonome System 160. Beispielsweise kann das autonome System 160 durch die Einheit betrieben werden, die das Netzwerk 100 betreibt. In solchen Implementierungen umfasst das Netzwerk 100 die Router 106a–106d, die eingestellt sind, ein zentralisiert Routing von Datenpaketen durchzuführen und sind mit einem Master-Controller und herkömmlichen Routern 164 und 166 verbunden, welche darauf eingestellt sind verteiltes Routing durchzuführen, um sowohl das verteilte Routing als auch das zentralisierte Routing auszuführen. In some implementations, the network includes 100 the autonomous system 160 , For example, the autonomous system 160 be operated by the unit that the network 100 operates. In such implementations, the network includes 100 the routers 106a - 106d which are set to perform a centralized routing of data packets and are equipped with a master controller and conventional routers 164 and 166 which are set to perform distributed routing to perform both distributed routing and centralized routing.
2 stellt ein beispielhaftes Blockdiagramm eines Beispielnetzwerks 200 dar, das ein semizentralisiertes Routing durchführt. Das Netzwerk 200 umfasst einen Router 106, einen Master-Controller 108 und einen Route-Control-Server 112. 2 FIG. 4 illustrates an example block diagram of an example network 200 which performs a semicentralized routing. The network 200 includes a router 106 , a master controller 108 and a route control server 112 ,
Der Router 106 enthält einen oder mehrere Ports 202 und eine Weiterleitungstabelle 204. Die Vielzahl von Ports 202 können Schnittstellen für den Router 106 sein, um sich mit anderen Routern und Maschinen im Netzwerk zu verbinden. Datenpakete und Protokollpakete werden an mehreren Ports 202 und empfangen und verlassen den Router 106 von der Mehrzahl der Ports 202. Die Mehrzahl der Ports 202 können physikalische, virtuelle Ports sein, die durch das zentralisierte Routing-Protokoll definiert sind oder eine Kombination von physischen und virtuellen Ports. Den Ports 202 kann eine Portnummer zugeordnet werden, um die Kommunikation zu/von dem Router 106 zu steuern. The router 106 contains one or more ports 202 and a routing table 204 , The variety of ports 202 can provide interfaces for the router 106 be to connect to other routers and machines on the network. Data packets and protocol packets are sent to multiple ports 202 and receive and leave the router 106 from the majority of ports 202 , The majority of ports 202 may be physical virtual ports defined by the centralized routing protocol or a combination of physical and virtual ports. The ports 202 A port number can be assigned to communicate to / from the router 106 to control.
Die Weiterleitungstabelle 204 enthält Informationen, die von dem Router 106 verwendet werden, um Datenpakete weiterzuleiten. Die Weiterleitungstabelleninformation kann durch die Master-Controller 106 bereitgestellt werden. Zum Beispiel kann der Master-Controller 106 dem Router 106 einen Open-Flow-Fluss oder eine Weiterleitungstabelle für den Router 106 zur Verwendung für die Weiterleitung von Datenpaketen bereitstellen. Wie oben erläutert, kann in einigen Implementierungen der Master-Controller 108 oder der Route-Control-Server 112 die Routinginformation verarbeiten, um in einem Format zu sein, das von dem Router 106 verwendet werden kann. The routing table 204 Contains information from the router 106 used to forward data packets. The routing table information may be provided by the master controller 106 to be provided. For example, the master controller 106 the router 106 an open-flow flow or routing table for the router 106 provide for use for forwarding data packets. As explained above, in some implementations, the master controller 108 or the Route Control server 112 process the routing information to be in a format that is provided by the router 106 can be used.
Der Master-Controller 108 enthält ein Kommunikationsmodul 206, ein Routeverarbeitungsmodul 208 und Topologieinformationen 210. Das Kommunikationsmodul 206 kann so konfiguriert sein, dass es ein verteiltes Routing-Protokollpaket von dem Router 106 empfängt und es dem Route-Control-Server 112 bereitstellt. Das Kommunikationsmodul 206 kann auch die berechnete Routing-Information empfangen, die von dem Route-Control-Server 112 bereitgestellt wird. Zusätzlich zum Senden/Empfangen der Routing-Protokollpaketen und Routing-Informationen kann das Kommunikationsmodul 206 Nachrichten an den Router 106 und den Route-Control-Server 112 senden. Beispielsweise kann das Kommunikationsmodul 206 Konfigurationsnachrichten oder Keep-Alive-Nachrichten an den Router 106 und den Route-Control-Server 112 übertragen. Das Kommunikationsmodul 206 kann auch Nachrichten von dem Router 106 und/oder dem Route-Control-Server 112 empfangen. Beispielsweise kann das Kommunikationsmodul 206 Bestätigungsnachrichten, Antworten oder andere Nachrichten von dem Router 106 und/oder dem Route-Control-Server 112 empfangen. The master controller 108 contains a communication module 206 , a route processing module 208 and topology information 210 , The communication module 206 can be configured to have a distributed routing protocol packet from the router 106 Receives and it the route control server 112 provides. The communication module 206 can also receive the calculated routing information provided by the route control server 112 provided. In addition to sending / receiving the routing protocol packets and routing information, the communication module may 206 Messages to the router 106 and the route control server 112 send. For example, the communication module 206 Configuration messages or keep-alive messages to the router 106 and the route control server 112 transfer. The communication module 206 can also receive messages from the router 106 and / or the route control server 112 receive. For example, the communication module 206 Confirmation messages, replies or other messages from the router 106 and / or the route control server 112 receive.
In einigen Implementierungen enthält die Master-Controller 108 ein Routeverarbeitungsmodul 208. Das Routeverarbeitungsmodul 208 ist so eingestellt, um Routinginformationen zu verarbeiten, die von dem Route-Control-Server 112 empfangen werden. Beispielsweise kann in einigen Implementierungen die Master-Controller 108 die berechnete Routinginformation von dem Route-Control-Server 112 empfangen und die Routinginformation an das Routeverarbeitungsmodul 208 bereitstellen, um die Routinginformation zu verarbeiten, um in einem Format zu sein, das von der Router 106, um Datenpakete weiterzuleiten. In einigen Implementierungen ist das Routeverarbeitungsmodul 208 konfiguriert, um Routinginformationen zu konvertieren, die auf BGP- oder OSPF-Routingprotokollen basieren können, oder ein anderes Format, das zur Verwendung durch den Router 106 konvertiert werden muss, um ein Open-Flow-Fluss oder eine Weiterleitungstabelle oder eine andere Struktur, die von dem Router 106 verwendet werden kann, um Datenpakete weiterzuleiten. In some implementations, the master controller contains 108 a route processing module 208 , The route processing module 208 is set to process routing information from the Route Control server 112 be received. For example, in some implementations, the master controller 108 the calculated routing information from the Route Control server 112 receive and the routing information to the route processing module 208 to process the routing information to be in a format that is provided by the router 106 to forward data packets. In some implementations, this is the route processing module 208 configured to convert routing information that may be based on BGP or OSPF routing protocols, or any other format for use by the router 106 It must be converted to an open-flow flow or forwarding table or other structure used by the router 106 can be used to forward data packets.
Das Routeverarbeitungsmodul 208 kann eine Routesteuertabelle umfassen, die Informationen speichert, die die Beziehung zwischen den Routern 106 und dem Route-Control-Server 112 beschreiben. Beispielsweise kann die Routesteuertabelle Informationen speichern, die beschreiben, welcher Route-Control-Server 112 konfiguriert ist, um verteilte Routeberechnungen für einen Router 106 auszuführen. Das Routeverarbeitungsmodul 208 kann die Routesteuertabelle aus den Konfigurationsnachrichten aufbauen, die von den Route-Control-Server 112 empfangen werden. Das Routeverarbeitungsmodul 208 kann der Routesteuertabelle zuordnen, um zu bestimmen, welcher Route-Control-Server 112 Routeberechnungen für einen bestimmten Router 106 durchführen soll. The route processing module 208 may include a route control table storing information regarding the relationship between the routers 106 and the route control server 112 describe. For example, the route control table may store information describing which route control server 112 is configured to route distributed routers for a router 106 perform. The route processing module 208 can build the route control table from the configuration messages provided by the route control server 112 be received. The route processing module 208 may associate the route control table to determine which route control server 112 Route calculations for a specific router 106 should perform.
Der Master-Controller 108 kann die Topologieinformationen 210 aus den Routingberechnungen generieren, die er von den Route-Control-Servern 112 empfängt. Beispielsweise kann der Master-Controller 108 berechnete Routing-Informationen von dem Route-Control-Server 112 empfangen und die Routing-Informationen analysieren, um die Netzwerktopologie-Informationen 210 zu bestimmen. Wenn der Master-Controller 108 berechnete Routing-Informationen von anderen Route-Control-Server 112 empfängt, kann der Master-Controller die zusätzlichen Informationen zu den Netzwerk-Topologie-Informationen 210 hinzufügen und Informationen bezüglich der globalen Topologie seiner Routing-Domäne gewinnen. Wie oben erläutert, kann der Master-Controller 108 die Topologieinformationen 210 den Route-Control-Server 112 zusammen mit verteilten Protokollpaketen bereitstellen. Der Route-Control-Servern 112 kann die Topologieinformationen 210 verwenden, um die Routinginformationen zu berechnen, die eine schnellere Konvergenz zu einer geeigneten Routingkonfiguration ermöglichen. The master controller 108 can the topology information 210 from the routing calculations that it generates from the route control servers 112 receives. For example, the Master controller 108 calculated routing information from the Route Control server 112 receive and analyze the routing information to the network topology information 210 to determine. If the master controller 108 calculated routing information from other route control servers 112 The master controller can receive additional information about the network topology information 210 and gain information about the global topology of its routing domain. As explained above, the master controller 108 the topology information 210 the route control server 112 deploy along with distributed protocol packets. The route control servers 112 can the topology information 210 to calculate the routing information that allows faster convergence to an appropriate routing configuration.
Der Route-Control-Server 112 kann ein Kommunikationsmodul 212, ein Streckenberechnungsmodul 214 und einen Protokollpaketgenerator 216 beinhalten. Das Kommunikationsmodul 212 kann verteilte Protokollpakete vom Master-Controller 108 empfangen und die berechneten Routinginformationen an den Master-Controller 108 übertragen. Zusätzlich kann das Kommunikationsmodul 212 Nachrichten von der Master-Controller 108 empfangen. Beispielsweise kann das Kommunikationsmodul 212 Keep-Alive-Nachrichten und Konfigurationsnachrichten von dem Master-Controller 108 empfangen. Zusätzlich kann das Kommunikationsmodul 212 Nachrichten an den Master-Controller 108 senden. Zum Beispiel kann das Kommunikationsmodul 212 eine Nachricht senden, die anzeigt, für welchen Router 106 es eingestellt ist, Routing-Berechnungen durchzuführen. The route control server 112 can be a communication module 212 , a route calculation module 214 and a protocol packet generator 216 include. The communication module 212 can distribute distributed protocol packets from the master controller 108 receive and the calculated routing information to the master controller 108 transfer. In addition, the communication module 212 Messages from the master controller 108 receive. For example, the communication module 212 Keep-alive messages and configuration messages from the master controller 108 receive. In addition, the communication module 212 Messages to the master controller 108 send. For example, the communication module 212 send a message indicating which router 106 it is set to perform routing calculations.
Das Routeberechnungsmodul 214 kann ein verteiltes Protokollpaket 214 von dem Kommunikationsmodul 212 empfangen und Routinginformationen aus dem Protokollpaket berechnen. Zum Beispiel kann das Routeberechnungsmodul 214 ein BGP- oder ein OSPF-Protokollpaket empfangen und die Routing-Informationen basierend auf den BGP- oder OSPF-Protokollen berechnen. In einigen Implementierungen kann das Routingberechnungsmodul 214 die berechnete Routinginformation verarbeiten, um in einem Format zu sein, das von dem Router 106 verwendet werden kann, um Datenpakete weiterzuleiten. Zum Beispiel kann das Routing-Berechnungsmodul 214 eine BGP-basierte Routinginformation verarbeiten, um ein OpenFlow-Fluss oder eine Weiterleitungstabelle zu sein, die vom Router 106 verwendet werden kann, um Datenpakete zu leiten. In einigen Implementierungen verarbeitet das Routeberechnungsmodul 214 die berechnete Routinginformation nicht und liefert die berechnete Routinginformation zur Master-Controller 108 zur Verarbeitung. The route calculation module 214 can be a distributed protocol package 214 from the communication module 212 receive and calculate routing information from the protocol packet. For example, the route calculation module 214 receive a BGP or OSPF protocol packet and calculate the routing information based on the BGP or OSPF protocols. In some implementations, the routing calculation module may 214 process the calculated routing information to be in a format that is provided by the router 106 can be used to forward data packets. For example, the routing calculation module 214 process a BGP-based routing information to be an OpenFlow flow or forwarding table provided by the router 106 can be used to route data packets. In some implementations, the route calculation module processes 214 the calculated routing information does not and provides the calculated routing information to the master controller 108 For processing.
Der Protokollpaketgenerator 216 kann die berechnete Routeinformation von dem Routeberechnungsmodul 214 empfangen und ein verteiltes Netzwerkprotokollpaket basierend auf der berechneten Routeinformation erzeugen. Beispielsweise kann der Protokollpaketgenerator 216 eingestellt sein, ein BGP-Protokollpaket unter Verwendung der berechneten Routeinformation zu erzeugen, die basierend auf dem BGP-Protokollpaket berechnet wurde. Wie oben erläutert, kann der Router 106 das verteilte Routingprotokollpaket zu seinen benachbarten Routern übertragen, ähnlich zu einem Router 106, der konfiguriert ist, um verteiltes Routing auszuführen. The protocol packet generator 216 may calculate the calculated route information from the route calculation module 214 and generate a distributed network protocol packet based on the calculated route information. For example, the protocol packet generator 216 be set to generate a BGP protocol packet using the calculated route information calculated based on the BGP protocol packet. As explained above, the router can 106 transmit the distributed routing protocol packet to its neighboring routers, similar to a router 106 which is configured to perform distributed routing.
3 veranschaulicht ein Flussdiagramm eines beispielhaften Prozesses 300 für ein semizentralisiertes Routing. Der Prozess 300 beginnt mit der Konfiguration der Steuerebene (bei 302). Zum Beispiel kann der Master-Controller 108 die Konfigurationsnachrichten an die Route-Control-Server 112a–112d senden und Antworten oder andere Nachrichten von den Route-Control-Servern 112a–112d empfangen, die Informationen enthalten, die den Router 106 angeben, dem er zugeordnet ist. Der Master-Controller 108 kann diese Nachrichten verwenden, um zu bestimmen, welcher Route-Control-Server 112 jedem der Router 106a–106d entspricht. Der Master-Controller 108 kann eine Route-Steuertabelle unter Verwendung der von den Route-Control-Server 112a–112d bereitgestellten Informationen erstellen. 3 illustrates a flowchart of an example process 300 for a semicentralized routing. The process 300 starts with the configuration of the control plane (at 302 ). For example, the master controller 108 the configuration messages to the route control server 112a - 112d send and responses or other messages from the route control servers 112a - 112d receive that contain information that the router 106 to which it is assigned. The master controller 108 can use these messages to determine which route control server 112 each of the routers 106a - 106d equivalent. The master controller 108 can route a route table using the route control server 112a - 112d create the information provided.
Der Master-Controller 108 kann auch eine Verbindung mit jedem Route-Control-Server und eine Verbindung mit jedem Router (bei 303) herstellen. Zum Beispiel kann in einigen Implementierungen der Master-Controller 108 Keep-Alive-Nachrichten an die Router 106a–106d und die Route-Control-Server 112a–112d senden. Die Keep-Alive-Nachrichten können den Routern 106a–106d mitteilen, dass verteilte Routingprotokollpakete an sie übermittelt werden sollten. Der Master-Controller 108 kann die Bestätigungsnachrichten verwenden, die von den Routern 106a–106d bereitgestellt werden, um eine Netzwerktopologie zu bestimmen. Wenn beispielsweise der Master-Controller 108 keine Bestätigungsnachricht von dem Router 106c empfängt, kann er anhand dessen feststellen, dass der Router 106c ausgefallen ist oder nicht betriebsbereit ist. The master controller 108 can also connect to each route control server and connect to each router (at 303 ) produce. For example, in some implementations, the master controller 108 Keep-alive messages to the routers 106a - 106d and the route control server 112a - 112d send. The keep-alive messages can be routers 106a - 106d tell them that distributed routing protocol packets should be delivered to them. The master controller 108 can use the acknowledgment messages provided by the routers 106a - 106d provided to determine a network topology. For example, if the master controller 108 no confirmation message from the router 106c he can determine from this that the router 106c has failed or is not ready for use.
Zusätzlich kann der Master-Controller 108 auch Keep-Alive-Meldungen an die Route-Control-Server 112a–112d senden, um zu bestimmen, welche Route-Control-Server 112 ausgefallen oder nicht betriebsbereit sind. Außerdem kann der Master-Controller 108 die Keep-Alive-Meldungen an die Route-Control-Server 112a–112d senden, um die Route-Control-Server zu informieren, dass er der Master-Controller 108 ist. In addition, the master controller 108 also keep-alive messages to the route control server 112a - 112d send to determine which route control server 112 failed or not ready for use. In addition, the master controller 108 the keep-alive messages to the route control server 112a - 112d send to the route control server informing that he is the master controller 108 is.
Ein verteiltes Routing-Protokollpaket wird an einem Router (bei 304a) empfangen. Zum Beispiel kann der Router 106a ein verteiltes Routingprotokollpaket wie ein BGP-Protokollpaket empfangen. Der Router 106a kann so konfiguriert sein, dass er das verteilte Routingprotokollpaket dem Master-Controller 108 bereitstellt. A distributed routing protocol packet is sent to a router (at 304a ) received. For example, the router 106a receive a distributed routing protocol packet such as a BGP protocol packet. The router 106a can be configured to send the distributed routing protocol packet to the master controller 108 provides.
Als Reaktion darauf empfängt der Master-Controller 108 das Protokollpaket und bestimmt, welcher Route-Control-Server 112a–d dem Router 106a zugeordnet ist (bei 305a). Zum Beispiel kann der Master-Controller 108 auf die Route-Steuertabelle zugreifen, um zu bestimmen, welcher Route-Control-Server die Routeberechnungen für den Router 106a ausführen soll. In response, the master controller receives 108 the protocol packet and determines which route control server 112a -The router 106a is assigned (at 305a ). For example, the master controller 108 access the route control table to determine which route control server will route the routers to the router 106a should perform.
Der Master-Controller stellt das verteilte Routingprotokollpaket dem Route-Control-Server (bei 306a) zur Verfügung. Zum Beispiel kann der Master-Controller 108 das verteilte Routingprotokollpaket dem Route-Control-Server 112a bereitstellen, wobei der Master-Controller 108 bestimmt ist, dass sie zugeordnet ist, um Routeberechnungen für den Router 106a durchzuführen. In einigen Implementierungen kann die Master-Controller 108 auch Netzwerktopologieinformation zu dem Route-Control-Server 112a bereitstellen. Beispielhafte Netzwerktopologieinformationen enthalten Informationen, die die Router 106 (innerhalb und/oder außerhalb des Netzwerks 100) beschreiben, die mit dem Router 106a verbunden sind und Latenzzeiten oder Stauinformationen, die diesen Verbindungen zugeordnet sind. The master controller provides the distributed routing protocol packet to the route control server (at 306a ) to disposal. For example, the master controller 108 the distributed routing protocol packet to the Route Control server 112a deploy, being the master controller 108 it is determined that it is assigned to route calculations for the router 106a perform. In some implementations, the master controller may 108 also network topology information to the route control server 112a provide. Exemplary network topology information includes information that the routers 106 (inside and / or outside the network 100 ) describe that with the router 106a and latencies or congestion information associated with these connections.
Zusätzlich zum Empfangen eines verteilten Routingprotokollpakets sendet der Route-Control-Server ein verteiltes Protokollpaket (bei 304b). Zum Beispiel kann der Route-Control-Server 112a ein verteiltes Protokollpaket (z.B. OSPF oder BGP) erzeugen, das an Geräte, wie beispielsweise andere Router, übertragen werden soll, die mit dem Router 106a verbunden sind. Der Route-Control-Server 112a kann das verteilte Protokollpaket an den Master-Controller 108 senden. In addition to receiving a distributed routing protocol packet, the Route Control server sends a distributed protocol packet (at 304b ). For example, the route control server 112a create a distributed protocol packet (eg OSPF or BGP) to be sent to devices such as other routers connected to the router 106a are connected. The route control server 112a can send the distributed protocol packet to the master controller 108 send.
Der Master-Controller empfängt das verteilte Protokollpaket und bestimmt, welcher Router das vom Route-Control-Server (bei 305b) bereitgestellte Protokollpaket empfangen sollte. Beispielsweise kann der Master-Controller 108 bestimmen, welcher Router das verteilte Protokollpaket auf Grundlage der aus den Konfigurationsnachrichten erzeugten Routesteuertabelle empfangen soll. Die Master-Controller 108 überträgt dann das verteilte Protokollpaket an den entsprechenden Router. The master controller receives the distributed protocol packet and determines which router the router from the route control server (at 305b ) should receive the provided protocol packet. For example, the master controller 108 determine which router should receive the distributed protocol packet based on the route control table generated from the configuration messages. The master controller 108 then transmits the distributed protocol packet to the appropriate router.
Der Router empfängt das verteilte Protokollpaket und sendet das verteilte Protokollpaket zu seinen benachbarten Routern (bei 306b). Zum Beispiel kann der Router 106a das verteilte Protokollpaket empfangen und das Paket zu anderen Routern, wie zum Beispiel benachbarten Routern, übertragen. The router receives the distributed protocol packet and sends the distributed protocol packet to its neighboring routers (at 306b ). For example, the router 106a receive the distributed protocol packet and transmit the packet to other routers, such as neighboring routers.
Wenn die Protokollpakete mit dem Netzwerk 100 (304a, b–306a, b) ausgetauscht werden, wird die Anzahl der dieser Protokollpakete vom Master-Controller 108 und/oder den Route-Control-Server (bei 307) überwacht. Wenn die Anzahl der Protokollpakete unterhalb eines festgelegten Schwellenwertes liegt, wird der Prozess fortgesetzt, und zusätzliche Protokollpakete werden ausgetauscht (bei 304a und 304b). Wenn die Anzahl der Protokollpakete größer oder gleich dem vorbestimmten Schwellenwert ist, wird der Prozess bei 308 fortgesetzt. Der vorbestimmte Schwellenwert kann auf dem verteilten Routingprotokoll basieren, das durch die Route-Control-Server implementiert wird. Zum Beispiel kann die vorbestimmte Schwelle auf dem Erreichen eines bestimmten Zustands in einer Zustandsmaschine basieren, die durch das verteilte Routingprotokoll (z. B. BGP- oder OSPF-Protokolle) aufrechterhalten wird. Als ein weiteres Beispiel kann die vorbestimmte Schwelle auf einer Anzahl ausgetauschter Protokollpakete basieren, die genügend Zustände zum Routing von Paketen basierend auf den BGP- oder OSPF-Protokollen herstellt. If the protocol packets to the network 100 ( 304a , b- 306a , b) will be exchanged, the number of these protocol packets from the master controller 108 and / or the Route Control server (at 307 ) supervised. If the number of protocol packets is below a specified threshold, the process continues and additional protocol packets are exchanged (at 304a and 304b ). If the number of protocol packets is greater than or equal to the predetermined threshold, the process will join 308 continued. The predetermined threshold may be based on the distributed routing protocol implemented by the route control servers. For example, the predetermined threshold may be based on reaching a particular state in a state machine maintained by the distributed routing protocol (eg, BGP or OSPF protocols). As another example, the predetermined threshold may be based on a number of exchanged protocol packets that provide enough states to route packets based on the BGP or OSPF protocols.
Der Route-Control-Server empfängt das verteilte Protokollpaket von dem Master-Controller und führt Routeberechnungen für den Router durch (in Schritt 308). Der Route-Control-Server 112a empfängt das verteilte Protokollpaket vom Master-Controller und führt Routeberechnungen für den Router durch. Beispielsweise kann der Route-Control-Server 112a die von vom Master-Controller 108 bereitgestellte Netzwerktopologieinformation verwenden und Routeberechnungen basierend auf den BGP- und/oder OSPF-Protokollen durchführen. The route control server receives the distributed protocol packet from the master controller and performs route calculations for the router (in step 308 ). The route control server 112a receives the distributed protocol packet from the master controller and performs route calculations for the router. For example, the route control server 112a that of the master controller 108 provide network topology information and perform route calculations based on the BGP and / or OSPF protocols.
Der Route-Control-Server 112a setzt die berechnete Routeinformation (bei 310) um. Zum Beispiel verarbeitet der Route-Control-Server 112a in einigen Implementierungen die berechnete Routeinformation in ein Format, das von dem Router 106a verwendet werden kann, um Datenpakete weiterzuleiten. Beispielsweise kann der Route-Control-Server 112a die berechnete Routeninformation in eine Weiterleitungstabelle oder -fluss umwandeln. Der Route-Control-Server 112a liefert die berechnete Routeinformation an den Master-Controller 108. In einigen Implementierungen erzeugt der Route-Control-Server 112a auch ein verteiltes Routingprotokollpaket, das auf der berechneten Routeinformation basiert, die ebenfalls dem Master-Controller 108 zur Verfügung gestellt wird. The route control server 112a sets the calculated route information (at 310 ) around. For example, the route control server processes 112a in some implementations, calculate the calculated route information into a format that is provided by the router 106a can be used to forward data packets. For example, the route control server 112a convert the calculated route information into a routing table or flow. The route control server 112a supplies the calculated route information to the master controller 108 , In some implementations, the Route Control server generates 112a also a distributed routing protocol packet based on the calculated route information that is also the master controller 108 is made available.
In einigen Implementierungen liefert der Route-Control-Server die berechnete Routeninformation an den Master-Controller, die die Routeberechnungen in ein Format umwandelt, das von dem Router (bei 310) verwendet werden kann. Zum Beispiel kann der Master-Controller 108 die Routeberechnungen, die sich in einem verteilten Routingprotokollformat befinden, in ein zentralisiertes Routingprotokollformat, wie beispielsweise eine Weiterleitungstabelle, umwandeln. In einigen Implementierungen kann der Master-Controller 108 eine BGP- oder OSPF-basierte Routeberechnung in eine Weiterleitungstabelle umwandeln, die von einem OpenFlow-Router verwendet werden kann. Der Master-Controller 108 kann verschiedene Techniken verwenden, um die berechnete Routeinformation in einen Fluss umzuwandeln. Zum Beispiel stell 4 ist ein Diagramm einer beispielhaften Umwandlung von Routeinformationen in einen Fluss. Die Umwandlung von Routeinformationen in einen Datenfluss, wie in 4 kann beispielsweise vom der Master-Controller 108 durchgeführt werden. In some implementations, the route control server provides the calculated route information to the master controller, which converts the route calculations to a format that is derived from the route controller Router (at 310 ) can be used. For example, the master controller 108 convert the route calculations, which are in a distributed routing protocol format, to a centralized routing protocol format, such as a routing table. In some implementations, the master controller may 108 convert a BGP or OSPF-based route calculation into a routing table that can be used by an OpenFlow router. The master controller 108 can use various techniques to convert the calculated route information into a flow. For example, adjust 4 Figure 3 is a diagram of an example conversion of route information to a flow. The transformation of route information into a data flow, as in 4 for example, from the master controller 108 be performed.
Eine Route 430, wie durch ein verteiltes Routingprotokoll spezifiziert, kann zusätzlich zu vielen anderen Datentypen ein Ziel-IP-Adressenpräfix 432 und einen Satz aus einem oder mehreren Pfaden oder „Nexthops“ 434 umfassen. Das Präfix kann durch eine Maske, wie z. B. „24“, spezifiziert werden, was anzeigt, dass nur die höchstwertigen 24 Bits signifikant sind. Jeder Pfad beinhaltet eine IP-Adresse, wie z.B. 4.5.6.7 und eine abgehende Schnittstellenkennung z.B. „eth0“ für den Ethernet-Port 0. Die Route 130 kann in einen entsprechenden Fluss 140 umgewandelt werden. Der Fluss 440 enthält eine oder mehrere Übereinstimmungsregeln 442. Die Übereinstimmungsregeln 442 können ein Muster für die IP-Adresse enthalten, z.B. 1.2.3.xxx, wobei „x“ ein Platzhalter ist, der jeden geeigneten Wert, zusätzlich zu vielen anderen Datentypen, annehmen kann. Beispielsweise kann die Übereinstimmungsregel 442 auch spezifizieren, dass ein bestimmtes Bitfeld in einem Netzwerkpaketheader ein bestimmter Wert sein muss, e.g. 0x7B. A route 430 As specified by a distributed routing protocol, in addition to many other types of data, a destination IP address prefix may be used 432 and a set of one or more paths or "Nexthops" 434 include. The prefix can be replaced by a mask such. "24", indicating that only the most significant 24 bits are significant. Each path contains an IP address, such as 4.5.6.7 and an outgoing interface identifier eg "eth0" for the Ethernet port 0. The route 130 can be in a corresponding flow 140 being transformed. The river 440 contains one or more match rules 442 , The match rules 442 may contain a pattern for the IP address, eg 1.2.3.xxx, where "x" is a wildcard that can take any suitable value, in addition to many other types of data. For example, the match rule 442 also specify that a particular bit field in a network packet header must be a specific value, eg 0x7B.
Der Fluss 440 umfasst eine Flusspfadkennzeichnung 444 zu einer Flusspfadgruppe 450, die einen Satz von Aktionen spezifiziert, die bei der Begegnung mit einem Netzwerkpaket zu treffen sind, das den Übereinstimmungsregeln 442 entspricht. Die Flussweggruppe 450 umfasst eine Kennzeichnung 452 als einen Schlüssel und einen entsprechenden Satz von Aktionen 454 als einen Wert. In einigen Implementierungen können die Aktionen mit dem Fluss 440 gespeichert werden, anstatt in einer Flussweggruppe 450 gespeichert zu werden. Wie auch immer, die Aufrechterhaltung der Flusspfadgruppen 450 in einer separaten Tabelle ermöglicht jedoch auch, dass die Flusspfadgruppendefinitionen für andere Ströme wiederverwendet werden können. Der Regler kann, muss aber nicht, dafür sorgen, dass alle Strömungsweggruppen mit einem gleichen Satz von Aktionen nur einen einzigen Eintrag in einer Flusspfadgruppentabelle haben. The river 440 includes a flow path identifier 444 to a river path group 450 which specifies a set of actions to be taken when encountering a network packet that conforms to the match rules 442 equivalent. The river walk group 450 includes a label 452 as a key and a corresponding set of actions 454 as a value. In some implementations, the actions may be with the flow 440 stored instead of in a flow path group 450 to be saved. Anyway, maintaining the river path groups 450 however, in a separate table also allows the flow path group definitions to be reused for other streams. The controller may, but need not, ensure that all flow path groups having a same set of actions have only a single entry in a flow path group table.
Die von einer Netzwerkvorrichtung zu ergreifenden Aktionen 454 können analog zu den Aktionen sein, die durchgeführt werden, wenn die Netzwerkvorrichtung den Verkehr gemäß einem verteilten Routingprotokoll weiterleitet. Zum Beispiel kann der Satz von Aktionen 454 Aktionen umfassen, um die Quell-Media-Access-Control(MAC)-Adresse eines Pakets umzuschreiben, die Ziel-MAC-Adresse eines Pakets umzuschreiben und das Paket an einen einer Gruppe von Schnittstellen, z. B. eth0, oder eth1 auszugeben. The actions to be taken by a network device 454 may be analogous to the actions taken when the network device forwards traffic according to a distributed routing protocol. For example, the set of actions 454 Actions include rewriting the source Media Access Control (MAC) address of a packet, rewriting the destination MAC address of a packet, and sending the packet to one of a set of interfaces, e.g. B. eth0, or eth1 issue.
Wieder unter Bezug auf 3 gezeigt, liefert der Master-Controller die umgewandelten Routeinformationen zu dem Router (bei 312). Beispielsweise kann die der Master-Controller 108 den Weiterleitungstisch oder den berechneten Fluss zu dem Router 106a schieben. Der Router 106a kann dann die Routeinformation verwenden, um verteilte Routingprotokoll-basierte Datenpakete weiterzuleiten, wenn sie empfangen werden. Zusätzlich kann der Master-Controller 108 das erzeugte verteilte Routingprotokollpaket dem Router 106a bereitstellen. Der Router 106a kann das Protokollpaket an benachbarte Router senden. Ebenso werden Tätigkeiten von Prozess 300 in den Zeichnungen zwar beispielsweise in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Anforderung verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Again referring to 3 As shown, the master controller provides the converted route information to the router (at 312 ). For example, the master controller 108 the routing table or the calculated flow to the router 106a slide. The router 106a can then use the route information to forward distributed routing protocol-based data packets as they are received. In addition, the master controller 108 the generated distributed routing protocol packet to the router 106a provide. The router 106a can send the protocol packet to neighboring routers. Likewise, activities become of process 300 Although illustrated in the drawings, for example, in a particular order, this should not be construed as a requirement that such activities be performed in the particular order shown or in a sequential order, or that all illustrated activities must be performed to achieve desired results ,
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. 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. Alternativ oder zusätzlich können die Programmanweisungen auf einem erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Durchführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein computerlesbares Speichergerät, einen computerlesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät 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 eine Quelle oder ein Bestimmungsort von 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, Festplatten oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein. Embodiments of the subject matter and the activities described in this specification may be implemented in digital electronic circuits or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification may be implemented as one or more computer programs, that is, one or more modules of computer program instructions encoded on a computer storage medium for performing or controlling the operation of the data processing apparatus. Alternatively or additionally, the program instructions may be based on a generated propagated signal, e.g. A machine-generated electrical, optical or electromagnetic signal which is generated to encode information for transmission to a suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium may be a computer-readable storage device, a computer-readable storage medium, a random or portable storage medium serial storage array or storage device, or to be or include a combination of one or more of these devices. In addition, although a computer storage medium is not a common signal, a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated broadcast signal. The computer storage medium may also be one or more different physical components or media (eg a plurality of CDs, hard disks or other storage devices), or the storage medium may be contained therein.
Die in dieser Spezifikation beschriebenen Tätigkeiten können als Tätigkeiten implementiert werden, die von einem datenverarbeitenden Apparat mit Daten durchgeführt werden, die auf einem oder mehreren maschinell lesbaren Speichergeräten gespeichert werden oder von anderen Quellen entgegengenommen werden. The activities described in this specification may be implemented as activities performed by a data processing apparatus with data stored on or read from other sources by one or more machine-readable storage devices.
Der Begriff „Datenverarbeitungsgerät“ umfasst dabei alle Arten von Geräten, Geräten und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise einen programmierbaren Prozessor, einen Computer, ein System auf einem oder mehrere Chips oder Kombinationen der vorangegangen Systeme. Das Gerät kann spezielle Logikschaltungen umfassen, z. B. ein FPGA (Field Programmable Gate Array-programmierbare Hardware-Logik) oder ein ASIC (anwendungsspezifische integrierte Schaltung). 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 Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen. The term "data processing device" encompasses all types of devices, devices and machines for processing data, including, for example, a programmable processor, a computer, a system on one or more chips or combinations of the preceding systems. The device may include special logic circuits, e.g. As an FPGA (Field Programmable Gate Array programmable hardware logic) or an ASIC (application-specific integrated circuit). The apparatus may include, in addition to the hardware, a code that provides an execution environment for the particular computer program in question, e.g. For example, a code representing processor firmware, a protocol stack, a database management system, an operating system, a platform-independent runtime environment, a virtual machine, or a combination of one or more of these. The device and execution environment can implement various different computer model infrastructures, such as web services, distributed computing and grid computing infrastructures.
Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere Einheit, die zur Benutzung 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. A computer program (also referred to as program, software, software application, script or code) may be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and the program may be in any form, including as independent program or as a module, component, subroutine, object or other entity suitable for use in a computing environment. A computer program may or may not be equivalent to a file in a file system. A program may be stored in a portion of a file containing other programs or data (eg, one or more scripts stored in a document in markup language), in a single file specific to that program, or in multiple coordinated files (for example, files that store one or more modules, subprograms, or pieces of code). A computer program may be configured or executed on one or more computers located at one site or distributed over multiple sites and connected via a communications network.
Die Verfahren und Logikflüsse, die in dieser Spezifikation beschrieben sind, können durch Handlungen, wie dem Betreiben von Eingabedaten und dem Erzeugen von Ausgaben, durch einen oder mehrere programmierbare Prozessoren, die einen oder mehrere Computerprogramme ausführen, durchgeführt werden. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung). The methods and logic flows described in this specification may be performed by acts such as operating input data and generating outputs by one or more programmable processors executing one or more computer programs. The processes and logical operations may also be performed by special purpose logic circuits, and the apparatus may be implemented as special purpose circuits, e.g. As an FPGA (Field Programmable Gate Array) or an ASIC (application-specific integrated circuit).
Prozessoren, die für die Durchführung eines Computerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art Digitalrechner ein. Ganz allgemein nimmt ein Prozessor Anweisungen 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. Im Allgemeinen beinhaltet ein Computer eine oder mehrere Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten zu empfangen und/oder zu übertragen. Jedoch muss ein Computer solche Geräte nicht haben. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Permanentspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte wie etwa löschbare programmierbare Nur-Lese-Speicher („EEPROM“), elektronisch löschbare programmierbare Nur-Lese-Speicher („EEPROM“) und USB-Flash-Speicher; Magnetdisketten, z. B. interne Festplatten oder herausnehmbare Disketten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein. Processors suitable for running a computer program include, for example, both general and special purpose microprocessors, as well as all types of one or more processors of any type of digital computer. More generally, a processor accepts instructions and data from read-only memory or memory, or both. The essential elements of a computer are a processor for performing activities in accordance with instructions and one or more storage devices for storing instructions and data. In general, a computer includes one or more mass storage devices for storing data, e.g. As magnetic, magneto-optical or optical disks to receive and / or transmit data. However, a computer does not have to have such devices. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and storage devices including, for example, semiconductor memory devices such as erasable programmable read only memories ("EEPROMs"), electronically erasable programmable only Read-only memory ("EEPROM") and USB flash memory; Magnetic disks, z. Internal hard drives or removable floppy disks; magneto-optical diskettes; and CD-ROMs and DVD-ROMs. The processor and memory may be supplemented or incorporated by special purpose logic circuits.
Ausführungsformen, des in dieser Spezifikation betrachteten Gegenstands, können in ein Computersystem implementiert werden, das eine Backend-Komponente (z.B. einen Datenserver), oder eine Middleware-Komponente (z.B. einen Anwendungsserver), oder eine Frontend-Komponente (z.B. einen Client-Computer mit graphischem Benutzerinterface oder Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung der in dieser Spezifikation betrachteten Gegenstands interagieren kann, oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Zu Beispielen für Kommunikationsnetze zählen ein lokales Netzwerk („LAN“), ein Fernnetzwerk („WAN“), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke). Embodiments of the subject matter considered in this specification may be implemented in a computer system that includes a backend component (eg, a data server), or a middleware component (eg, an application server), or a front end component (eg, a client computer with graphic user interface or web browser), which allows the user to interact with an implementation of the subject matter considered in this specification, or any combination of such backend, middleware or frontend components. The components of the system may be interconnected by any form or medium of digital data communication, e.g. B. a communication network. Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), a cross-network connection (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer networks). to-peer networks).
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen fern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten auf und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Am Client-Gerät erzeugte Daten (z. B. infolge der Benutzerinteraktion) können vom Client-Gerät am Server empfangen werden. The computer system may include clients and servers. A client and server are generally remote from each other and typically interact over a communications network. The relationship between client and server arises due to computer programs running on the respective computers and having a client-server relationship with each other. In some embodiments, a server transmits data (eg, an HTML page) to a client device (eg, for displaying data and receiving user input from a user interacting with the client device). Data generated at the client device (eg, as a result of user interaction) may be received by the client device at the server.
Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder 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. While this specification contains many specific implementation details, these should not be construed as limitations on the scope or on the claims, but rather as descriptions of specific features of particular embodiments of particular inventions. Certain features described in this specification in the context of the various embodiments may also be implemented in combination in a single embodiment. On the other hand, various features described in the context of a single embodiment may be implemented in multiple embodiments or in any suitable subcombination. In addition, one or more features of a claimed combination may in some instances be released from the combination, even if the features are described above as functioning in some combinations or even claimed as a combination, and the claimed combination may be attached to a subcombination or variation of a subcombination to get expelled.
Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen als erforderlich aufgefasst werden, es ist daher klar, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten zusammengeschlossen werden können. Although activities in the drawings are presented in a particular order, this should not be construed as a requirement that such activities be performed in the particular order shown or in a sequential order, or that all activities shown must be performed to produce desired results to achieve. Under certain circumstances, multitasking and parallel processing can be beneficial. Moreover, the separation of various system components in the embodiments described above should not be construed as required in all embodiments, it is therefore to be understood that the described program components and systems generally can be integrated together into a single software product or merged into multiple software products.
Folglich wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. Zum Beispiel kann das Netzwerk 100 ohne einen Master-Controller implementiert werden, und jeder Router kann mit dem geeigneten Route-Control-Server verbunden sein. Als weiteres Beispiel kann das Netzwerk 100 so implementiert sein, dass die Route-Control-Server und der Master-Controller als virtuelle Maschinen oder Prozesse auf einem Computer implementiert sind. Als weiteres Beispiel kann der Master-Controller die Steuerungsebene ohne Empfangen von Meldungen von den Route-Control-Server konfigurieren. Stattdessen kann der Master-Controller zufällig Router den Route-Control-Server zuweisen. Als ein weiteres Beispiel können andere Protokolle als Open-Flow zwischen dem Master-Controller und den Routern verwendet werden. Als anderes Beispiel kann der Master-Controller Routing-Protokolle implementieren. 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. Thus, certain embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the network 100 can be implemented without a master controller, and each router can be connected to the appropriate route control server. As another example, the network 100 be implemented so that the route control server and the master controller are implemented as virtual machines or processes on a computer. As another example, the master controller may configure the control plane without receiving messages from the route control servers. Instead, the master controller can randomly assign routers to the route control server. As another example, other protocols may be used as open-flow between the master controller and the routers. As another example, the master controller may implement routing protocols. In some cases, the acts described in the claims may be performed in a different order and still achieve desirable results. In addition, the processes illustrated in the attached figures do not necessarily require the particular order shown or sequential order to achieve desired results. In certain implementations, multitasking and parallel processing may be beneficial.