Basic controllers for conversion of universal streams
Abstract
FIELD: information technology. SUBSTANCE: invention relates to network control system. System comprises first instance of controller for logic control of plane data conversion of first set of logic data channels into data of universal plane physical control (UPCP). System also includes second instance of controller for transformation of UPCP data into data of customised plane physical control (CPCP) for first controlled element of data movement, but not for second control element of data movement. System also includes third controller instance for producing UPCP data generated by first instance of controller, identifying second instance of controller as controller instance responsible for generation of CPCP data for first control element movement data, and feeding obtained UPCP data on second instance of controller. EFFECT: technical result consists in generation of data physical control plane to control first and second control data movement, which perform operations of data movement associated with first set of logic data channels. 20 cl, 25 dwg

Term
6.1 yearsleft in the term
Expires 25 October 2032.
- Priority
- Filed
- Granted
- Today
- Expires
20 claims: 18 independent, 2 dependent
- 1Сетевая система управления для генерации данных плоскости физического управления для управления совокупностью управляемых элементов продвижения данных, которая реализует операции продвижения данных, связанные с совокупностью логических информационных каналов, где система содержит:первый экземпляр контроллера для (i) получения входных данных, определяющих совокупность логических информационных каналов и выполнения первого преобразования данных совокупности логических информационных каналов для генерации кортежей промежуточных данных совокупности логических информационных каналов, и (ii) распределения кортежей промежуточных данных на совокупность хостов, на которых работает совокупность управляемых элементов продвижения данных;и второй экземпляр контроллера, работающий на определенном одном из хостов для (i) получения кортежей промежуточных данных совокупности логических информационных каналов и (ii) преобразования кортежей промежуточных данных в данные плоскости физического управления для использования управляемым элементом продвижения данных, работающим на определенном хосте, при этом второй экземпляр контроллера содержит механизм отображения таблиц для отображения кортежей промежуточных данных в данные плоскости физического управления.
- 2Сетевая система управления по п. 1, отличающаяся тем, что определенный хост является первым хостом, а управляемый элемент продвижения данных является первым управляемым элементом продвижения данных, при этом сетевая система управления также содержит третий экземпляр контроллера, работающего на втором одном из хостов, для (i) получения кортежей промежуточных данных совокупности логических информационных каналов и (ii) преобразования кортежей промежуточных данных в данные физической плоскости управления для использования вторым управляемым элементом продвижения данных, работающим на втором хосте.
- 3Сетевая система управления по п. 2, отличающаяся тем, что данные плоскости физического управления для использования первым управляемым элементом продвижения данных, работающим на первом хосте, содержат данные, отличные от данных плоскости физического управления для использования вторым управляемым элементом продвижения данных, работающим на втором хосте.
- 4Сетевая система управления по п. 2, отличающая тем, что дополнительно содержит:четвертый экземпляр контроллера для получения кортежей промежуточных данных от первого экземпляра контроллера и распределения кортежей промежуточных данных на второй экземпляр контроллера;и пятый экземпляр контроллера для получения кортежей промежуточных данных от первого экземпляра контроллера и распределения кортежей промежуточных данных на третий экземпляр контроллера.
- 5Сетевая система управления по п. 4, отличающаяся тем, что первый экземпляр контроллера является экземпляром задающего контроллера для совокупности логических информационных каналов, четвертый экземпляр контроллера является экземпляром задающего контроллера для первого управляемого элемента продвижения данных, а пятый экземпляр контроллера является экземпляром задающего контроллера для второго управляемого элемента продвижения данных.
- 6Сетевая система управления по п. 5, отличающаяся тем, что дополнительно содержит администратор координации для идентификации различных экземпляров контроллеров в качестве задающих контроллеров различных совокупностей логических информационных каналов и различных управляемых элементов продвижения данных.
- 7Сетевая система управления по п. 1, отличающаяся тем, что входные данные являются данными логической плоскости управления, кортежи промежуточных данных являются данными универсальной плоскости физического управления (UPCP), а данные плоскости физического управления для использования управляемым элементом продвижения данных являются данными заказной плоскости физического управления (СРСР).
- 8Сетевая система управления по п. 7, отличающаяся тем, что данные UPCP содержат кортежи данных, записанных в терминах общих выражений атрибута каждой из совокупности управляемых элементов продвижения данных, а данные СРСР содержат заказное выражение атрибута, специфичного для определенного управляемого элемента продвижения данных.
- 9Сетевая система управления по п. 1, отличающаяся тем, что несколько управляемых элементов продвижения данных являются программными виртуальными переключателями.
- 10Сетевая система управления по п. 1, отличающаяся тем, что кортежи промежуточных данных являются первой совокупностью кортежей промежуточных данных, при этом первый экземпляр контроллера содержит:приложение управления для преобразования входных данных во вторую совокупность кортежей промежуточных данных для совокупности логических информационных каналов;и приложение виртуализации для преобразования второй совокупности кортежей промежуточных данных в первую совокупность кортежей промежуточных данных.
- 11Сетевая система управления по п. 10, отличающаяся тем, что входные данные содержат данные логической плоскости управления, вторая совокупность кортежей промежуточных данных содержит данные логической плоскости продвижения данных, первая совокупность кортежей промежуточных данных содержит данные универсальной плоскости физического управления, а данные плоскости физического управления для использования управляемым элементом продвижения данных содержат данные заказной плоскости физического управления.
- 12Сетевая система управления по п. 1, отличающаяся тем, что кортежи промежуточных данных определяют общие поведения продвижения совокупности управляемых элементов продвижения данных для реализации совокупности логических элементов продвижения данных для совокупности логических информационных каналов, отличающаяся тем, что совокупность логических элементов продвижения данных логически связывает между собой несколько сетевых станций.
- 13Сетевая система управления по п. 1, отличающаяся тем, что второй экземпляр контроллера также содержит интерфейс связи с управляемым элементом продвижения данных для распределения данных плоскости физического управления на управляемый элемент продвижения данных внутри хоста.
- 14Сетевая система управления по п. 13, отличающаяся тем, что имеется также интерфейс для получения данных, специфичных для управляемого элемента продвижения данных, от управляемого элемента продвижения данных для генерации данных плоскости физического управления.
- 15Сетевая система управления по п. 14, отличающаяся тем, что данные, специфичные для управляемого элемента продвижения данных, содержат номер физического порта.
- 16Первый экземпляр контроллера в сетевой системе управления, где первый экземпляр контроллера работает в главной сетевой станции совместно с управляемым элементом продвижения данных, управляемым первым экземпляром контроллера, где первый экземпляр контроллера содержит:интерфейс связи между контроллерами для получения от второго экземпляра контроллера, который работает в серверной сетевой станции отдельно от главной сетевой станции, совокупность кортежей промежуточных данных совокупности логических информационных каналов, реализуемых управляемым элементом продвижения данных, при этом кортежи промежуточных данных сгенерированы третьим экземпляром контроллера, базируясь на входных данных, которые определяют совокупность логических информационных каналов;модуль преобразования для преобразования кортежей промежуточных данных совокупностей логических информационных каналов в данные плоскости физического управления для использования управляемым элементом продвижения данных на главной сетевой станции;и интерфейс управляемого элемента продвижения данных для распределения данных плоскости физического управления на управляемый элемент продвижения данных внутри главной сетевой станции, при этом входные данные содержат данные логической плоскости управления, кортежи промежуточных данных содержат данные универсальной плоскости физического управления, а данные плоскости физического управления для использования управляемым элементом продвижения данных содержат заказные данные плоскости физического управления.
- 17Первый экземпляр контроллера по п. 16, отличающийся тем, что второй и третий экземпляры контроллеров являются теми же самыми.
- 18Первый экземпляр контроллера по п. 16, отличающийся тем, что второй экземпляр контроллера получает кортежи промежуточных данных от третьего экземпляра контроллера и распределяет кортежи промежуточных данных на первый экземпляр контроллера.
- 19Первый экземпляр контроллера по п. 18, отличающийся тем, что первый экземпляр контроллера является базовым контроллером, второй экземпляр контроллера является задающим контроллером управляемого элемента продвижения данных, а третий экземпляр контроллера является задающим контроллером совокупности логических информационных каналов.
- 20Первый экземпляр контроллера по п. 16, отличающийся тем, что имеется также интерфейс управляемого элемента продвижения данных для получения данных, специфичных для управляемого элемента продвижения данных, от управляемого элемента продвижения данных внутри главной сетевой станции для генерации данных плоскости физического управления.
Independent claims20
289 paragraphs in 7 sections, as filed
BACKGROUND OF THE INVENTION
2Many of today's businesses have a large and complex networks containing switches, hubs, servers, workstations and other network devices that support a wide variety of compounds, applied problems and systems. The increasing complexity of computer networks, including the migration of a virtual network of stations, dynamic workloads, multiple ownership and quality of service determined by the customer configuration and protection, require improved network management paradigm. Traditionally the network is controlled by a low-level configuration of individual components. Network configuration is often dependent on the core network, for example, blocking access user input message Access Control List ( "ACL") requires knowledge of the current user's IP-address. More complex tasks require more extensive network knowledge coercion graphics port 80 user - guest pass to HTTP agent requires knowledge of the current topology of the network and the position of each guest. This process is a process of increasing difficulty, where network switches are shared by many users.
3The answer to all this is the growing movement towards a new paradigm of network management, known as "software defined network" (SDN). In the paradigm of SDN network controller, the executable on one or more servers on the network, manages, supports and implements control logic that determines the behavior of the data separated by promoting a network of switching elements, focusing on each user. Decision-making network management often requires knowledge of the network status. To simplify the adoption of decisions of the Governing network controller creates and maintains an overview of network status and provides an application programming interface through which management applications can access overview of network status.
4Some of the primary purposes of a large network of service (including both data centers and enterprise networks) are scalability, mobility and multi-tenant. Many of the approaches taken to achieve one of these aims, lead to deter growth of at least one of the other objectives. For example, it is possible to easily provide mobility network virtual network stations within a second-level domain (L2), but the second level domains can not expand to a large size. In addition, maintaining the isolation of users significantly complicates mobility. In fact, we need better solutions that can meet the goals of scalability, mobility and multi-tenant.
SUMMARY OF THE INVENTION
6Some embodiments of the invention provide a network management system that provides the ability to specify a number of different sets of logical information channels (LDP) for several different users via one or more shared data promotion elements, not allowing the different users to control logic advancing each other data or even to view it. These separated elements are called forwarder below controlled switching elements or control data elements of promotion since they are controlled by a network management system for the implementation of the LDP sets.
7In some embodiments, the network management system includes one or more controllers (hereinafter referred to as controller instances) that allow the system to receive from the user LDP together and configure switching elements for implementing these aggregates LDP. These controllers provide the system to the virtual control separated switching elements and logic networks, which are determined by the connections between these separated switching elements in a manner which prevents other users manage collections of other LDP and logical networks or watch them together using the one and the same switching elements.
8In certain embodiments, each instance of the controller is a device (e.g., general purpose computer) which takes one or more modules that convert the user input from the logical control plane data (LCP) in the data of the logical data advancing plane (LFP), and then converts the data LFP data in physical control plane (PCP). These modules, in some embodiments, comprise a control unit and the virtualization module. The control unit allows the user to specify a set of logical and fill the information channels (LDPS), while virtualization module implements a given LDPS LDPS mapping to physical switching infrastructure. In some embodiments, the control modules and virtualization are two different applications, while in other embodiments, they are part of the same application.
9In some embodiments, the controller, the control unit receives from a user or other source data LCP (e.g., data that describes compounds belonging to the logical switching element) that describe LDPS. Then, the control module converts the data into data LFP, which are then sent to the virtualization module. Then, the virtualization module generates PCP data from LFP data. These PCP apply to managed switching elements. In some embodiments, the control modules and virtualization nLog mechanism used to generate LFP data from the PCP data and data of PCP LFP data.
10The network management system uses some of the examples of the various controls to perform various tasks. For example, in some embodiments, the network management system uses three types of controllers. The first type of controller is a controller application protocol interface (API). API Controllers are responsible for obtaining configuration data and user requests from the user via API calls and responses to user requests. API Controllers also distribute the configuration data to the other controllers. As such, controllers API some embodiments serve as an interface between users and the network management system.
11The second type of controller is the logical controller, which is responsible for implementing the LDP sets calculation of universal input stream of messages that are generalized expressions input message flow for controlled switching elements that implement the LDP together. Logic controller in some embodiments does not interact directly with the controllable switching elements and unified stream forwards messages to a third input of the controller type of the physical controller.
12The physical controllers in various embodiments, have different responsibilities. In some embodiments, the physical controllers generate custom streaming input messages of the universal stream of input messages and send these customized streaming input messages further to the switching elements controlled. In other embodiments, the physical controller for identifying a particular physical managed fourth switching element controller type, basic controller, which is responsible for generating the input stream custom messages for a particular switching element and directs it receives from the PLC unified stream input messages to the base controller. Basic controller then generates a custom streaming input messages of the universal stream of input messages and forwards these custom streaming input messages to the controllable switching elements. In still other embodiments, the physical controllers generate custom streamed input messages for some control of the switching elements, thus giving the basic command stream controller to generate input messages such as other controlled switching elements.
13The foregoing summary provides only a brief introduction to some embodiments of the invention. It not expected that this presentation will serve as an introduction or overview of all the inventive subject matter disclosed herein. The detailed description which follows and the drawings, which will be handling the detailed description will present further embodiments given in this summary, as well as other exemplary embodiments. Accordingly, for the understanding of all the embodiments described by this document, a complete review of the brief description, detailed description and drawings. Furthermore, the claimed subject matter is not limited to the illustrative details in summary, the detailed description and the drawings, but must first be defined by the appended claims, as stated objects of the invention may be incorporated in other specific forms without departing from the scope of the invention objects.
BRIEF DESCRIPTION OF THE DRAWINGS
15The novel features of the invention set forth in the appended claims. However, for purposes of explanation, the drawings in the following several embodiments.
16FIG. 1 - illustrates a virtualized network system of some embodiments.
17FIG. 2 - illustrates the switching infrastructure multiplayer hosting system.
18FIG. 3 - illustrates a network controller that controls terminal switching elements.
19FIG. 4 - illustrates an example of the many logical switching elements implemented as a set of switching elements.
20FIG. 5 - illustrates the flow of control commands controllable switching element through the various layers of processing specimens controllers.
21FIG. 6 - illustrates a distributed network management system of some embodiments with multiple instances controllers.
22FIG. 7 - illustrates an example of specifying an instance of the master controller of the switching element.
23FIG. 8 - illustrates an example of the work of several instances of controllers.
24FIG. 9 - conceptually illustrates the software architecture of the application broadcast input.
25FIG. 10 - illustrates some examples of the application management of the invention.
26FIG. 11 - illustrates the virtualization application of some embodiments of the invention.
27FIG. 12 - conceptually illustrates various tables in the tables of output data RE.
28FIG. 13 - illustrates a simplified representation of tables displaying operations management applications and virtualization of some embodiments of the invention.
29FIG. 14 - illustrates an example of integrated application.
30FIG. 15 - illustrates another example of such an integrated application.
31FIG. 16 - conceptually illustrates an example of architecture of the network management system.
32FIG. 17 - conceptually illustrates an example of architecture of the network management system.
33FIG. 18 - illustrates an example of the basic architecture of the control application.
34FIG. 19 - illustrates an example of formation of a tunnel between two controllable switching elements, based on a universal physical control plane data.
35FIG. 20 - conceptually illustrates the process that perform some of the examples for the generation of these universal plane of physical control data registered physical control plane.
36FIG. 21 - conceptually illustrates a process that is performed some embodiments to generate custom commands tunnel flow and transfer of these custom commands to the controlled switching element.
37FIG. 22 - conceptually illustrates in seven different stages of an example of a basic operation of the controller, which translates universal tunnel flow team in custom commands.
38FIG. 23 - conceptually illustrates an electronic system implemented on which some embodiments of the invention.
DETAILED DESCRIPTION
40In the following detailed description of the invention are explained and described, numerous details, examples and embodiments. However, it will be clearly understood in the art that the invention is not limited to the embodiments set out and that the invention may be practiced without some specific details discussed and examples.
41Some embodiments of the invention provide a network management system that provides the ability to specify an LDP several different constellations for several different users via one or more shared data promotion elements, not allowing different users to control logic data advancing each other or even browse it. Shared elements promotion data in some embodiments may include a virtual or physical network switches, software switches (eg. Open vSwitch), routers and / or other switching devices, and any other network elements (such as a load balancer, etc.), which establish the connection between switches, routers, and / or other switching devices. Such promotion data elements (e.g., physical switches or routers) are also referred to as switching elements. Unlike commercially available switches, program element data promotion is a switching element, which in some embodiments is formed keeping its tables (tables) of the switching and logic in the memory of the autonomous device (e.g., standalone computer), whereas in other embodiments it a switching element, which is formed by keeping his table (table) and switching logic in the device (eg, a computer), which also serves as a hypervisor and one or more virtual machines on the upper level of the hypervisor.
42These controlled, jointly referred to as the switching elements used to as controlled switching elements or data-driven elements of promotion since they are controlled by a network management system for the implementation of the LDP sets. In some embodiments, the control system controls these switching elements are placed in the PCP data, as will be described hereinafter. The switching elements are generally obtained data (e.g., data packet) and perform one or more processing on these data operations, such as discarding the received data packet, forward the packet, which is received from one of the source devices, on the other designated device, package handling and then transfer it to the designated device and so on. In some embodiments, these PCP, which are placed in a switching element, are converted by this switching element (for example, a general purpose processor switching element) in the data of physical plane forwarder that determine as a switching element (for example, as a specialized switching circuit switching element) processes data packets that it has received.
43In some embodiments, the network management system includes one or more controllers (also called controllers instances below) that allow the system to receive from the user LDP together and configure switching elements for implementing these aggregates LDP. These controllers provide the system to the virtual control shared switching elements and logic networks, which is defined compounds between the separated switching elements in a manner that does not allow different users to view aggregate LDP and logical networks with each other or manage jointly using the one and the the controlled switching elements.
44In certain embodiments, each instance of the controller is a device (eg, general purpose computer) that executes one or more modules that convert user input from the LCP in the LFP, and then converts the data into data LFP PCP. These modules, in some embodiments, comprise a control unit and the virtualization module. The control unit allows the user to specify and fill LDPS, while virtualization module implements the specified LDPS LDPS mapping to physical switching infrastructure. In some embodiments, the control modules and virtualization express or specified in terms of the displayed data records which are represented in the structure of the relational database data. That is, the structure of the relational database stores data as input logical channel information received through the control unit, and physical data on the virtualization module which displays input information of the logical channel. In certain embodiments, virtualization and management applications are two different applications, while in other embodiments, they are part of the same application.
45The above described several examples of network management systems. Several more detailed embodiments described below. Section I describes certain exemplary embodiments of network management system. Section II is a description of the transformation of the universal state of advancement of network management system. Section III describes an electronic system, which implements some embodiments of the invention.
I. NETWORK MANAGEMENT SYSTEM
47A. The outer layers to promote flow of the control layer
48FIG. 1 shows a virtualized network system 100 of some embodiments. This system offers multiple users the ability to create and manage a number of different sets of LDP on a shared set of switching elements of the network infrastructure (for example, switches, virtual switches, software switches, and so on.). This allows the user to create and manage a custom set of sets of logical information channels (LDP) (ie, the switching logic of the user), the system gives the user direct access to a set of LDP another user for viewing or modifying the switching logic of another user. However, the system does allow different users to pass each other packages through their virtualized switching logic, if the users wish to have such a relationship.
49As shown in FIG. 1, system 100 includes one or more switching elements 105 and network controller 110. The switching elements of the switching devices contain N (where N is a number equal to one or more) which constitute the switching elements of the network infrastructure of the system 100. In some embodiments, the power switching elements infrastructures contain virtual or physical network switches, software switches (eg. Open vSwitch), routers, and / or other switching devices, and any other network elements (such as load balancers, etc.), which establish the connection between the switches, routers and / or other switching devices. All the switching elements of the network infrastructure being referred to as switching elements or data elements of promotion.
50Virtual or physical switching devices 105 typically include a control switch logic 125 and logic switching promote data 130. In some embodiments, the control logic 125 determines the switch (1) the rules to be applied to incoming packets, (2) packets to be discarded, and (3) packet processing means that will be applied to incoming packets. Virtual or physical switching elements 105 using control logic 125 for filling the tables, leading forwarder logic 130. The logic of promotion data 130 operates view incoming packets and forwards incoming packets based on destination address.
51As also shown in FIG. 1, the network controller 110 includes a management application 115, by which the switching logic is specified for one or more users (e.g., for one or more users or administrators) in terms of sets of LDP. The network controller 110 also includes a virtualization application 120 that converts a set of LDP control switching logic to transmit the switching devices 105. In this application virtualization management and application to application referred some embodiments as a "control device" and "virtualization mechanism."
52In some embodiments, virtualized system 100 comprises more than one network controller 110. Network controller contains logic controllers, each of which is responsible for specifying a set of control logic for a particular switching device LDPS. Network controllers contain the physical controllers, each of which directs control logic to a set of switching elements, which is responsible for managing the physical controller. In other words, the logic controller specifies only control logic for a plurality of switching elements that implement certain LDPS, while physical controller directs control logic for switching elements that are controlled by the physical controller, regardless of the aggregates of the LDP, which realize the switching elements.
53In some embodiments, the controller of network virtualization application uses a relational database data structure for storing a copy of the state of the switching elements monitored virtualization application, in terms of data records (for example, data tuples). These data records represent the graph of physical or virtual switching elements and their compounds with each other within the physical topology of the network and data promotion table. For example, in some embodiments, each switch element in the network infrastructure is represented by one or more data entry in a relational database structure data. However, in other embodiments, the structure of relational data base data application virtualization state stores information about only some of the switching elements. For example, as also described below, application virtualization in some embodiments, stores only a trace of the switching elements at the end of the network infrastructure. In other embodiments, virtualization application stores information about the state of the switching elements in the network, as well as some non-terminal switching elements in the network that facilitates communication between the end switching elements.
54In some embodiments, a relational database is the core data structure model management in a virtualized network system 100. In one approach, the network application is controlled by reading from a relational database data structures, and recording it. In particular, in some embodiments, the control application logic can (1) read the current state related to input records of network messages in a relational database and data structure (2) to change the status of network operations for these performance records. In this model, when the application 120 needs to be modified virtualization table entry (e.g., the flow control table plane) of the switching element 105, the first virtualization application 120 writes one or more records, which represent a table of a relational database structure data. Then, application virtualization brings a change to the table of the switching element.
55In some embodiments, the control application also uses a relational database structure for storing data and a logical configuration of each logical state LDPS, specified by the user. In these embodiments, the information in the relational database structure of data which represents the actual state of the switching elements, takes into account only a subset of the complete information stored in a relational database structure data.
56In certain embodiments, virtualization and management application using the secondary data storage structure and logic configuration logic state LDPS, specified by the user. This secondary structure of the data in these embodiments is as a communication medium between multiple network controllers. For example, when the user specifies a certain LDPS, using logic controller, which is not responsible for this specific LDPS, the PLC sends the logical configuration of this particular LDPS to another PLC, which is responsible for this particular LDPS, through secondary data structures of these logical controllers. In some embodiments, a logic controller that receives user defined logical configuration LDPS, forwards these configuration data to all other controllers in the virtualized network system. Similarly, in some embodiments, the secondary storage structure of each logic controller comprises logic configuration data sets of all LDP members.
57In some embodiments, the operating system (not shown) provides a copy controller connection set various structural components (not shown) to control the applications and virtualization and switching elements 105 of various embodiments. For example, in some embodiments, the operating system provides a controllable switching element to the communication interface (not shown) between (1) the switching elements 105, which perform a physical switch for each of the users, and (2) virtualization application 120 which is used to promote the switch user logic to switching elements. In some of these embodiments, the virtualization application control logic manages the switching of the switching element 125 through well-known access interface switching, which specifies a set of API, allowing an external application (such as application virtualization) to control the functions performed by the switching element in the control plane. In particular, with the switching element implements a set of communication interface API so that the application virtualization may send the records stored in the data structure of a relational database on the switching elements, using the communication interface managed switching element.
58Two examples of such well-known access interfaces switching is OpenFlow interface and communication interface Open Virtual Switch, which are described respectively in the following articles: McKeown, N. (2008). OpenFlow: Enabling Innovation in Campus Networks (which can be found from http://www.openflowswitch.org//documents/openflow-wp-latest.pdf) and Pettit, J. (2010). Virtual Switching in an Era of Advanced Edges (which can be found from http://openswitch.org/papers/dccaves2010.pdf). These two articles incorporated herein by reference.
59It should be noted that these embodiments described above and below, where data storage records of a relational database used data structure, the data structure that can store data objects in the form of object-oriented data may be used alternatively or together. An example of such a data structure is a data structure NIB. Some examples of using NIB data structures are described in US patent applications 13 / 177.529 and 13 / 177.533, both filed July 6, 2011 US Patent Application No. 13 / 177.529 and 13 / 177.533 references are introduced.
60FIG. 1 conceptually illustrates the use of API access with switching the image around the dotted lines 135 control the switching logic 125. Through these virtualization API application can read and write messages in the input stream of the control plane of the table. Relatedness application virtualization management plane switching elements (i.e., with the tables of the control plane) can be realized in some embodiments in the range (i.e., the network schedule, the operating system controlled), while in other embodiments it is implemented out of range ( i.e., via a separate physical network). For the selected mechanism, in addition to fault tolerance and the principle of connectedness with the operating system must meet only minimum requirements, and thus by using a separate network would be quite the IGP protocol standard, such as IS-IS and OSPF.
61Control logic for determining the switching of the switching elements 125 when the switching elements are switching elements physical (as opposed to the software switching elements), virtualization of some application examples using Open Virtual Switch protocol to generate one or more control tables in the switching element control plane. The control plane is typically created and executed by the CPU universal switching element. Once the system has created a table (s) management, virtualization, application streaming and then writes the input messages in the control table (table), using the OpenFlow protocol. Universal physical CPU switching element uses its internal logic for converting input messages recorded in the management table (s) to fill one or more data tables in promoting advancement plane data switching element. forwarder tables are created and executed usually specialized switching chip switching element. The switching chip of the switching element performing the streaming data in the input message promotion tables may process and route data packets that it receives.
62In some embodiments, virtualized network system 100 in addition to the logical and physical controllers comprises a base controller. In these embodiments, the base controller implements multiple access API to manage certain switching the switching element. That is, the host controller is exactly the controller which sends a specific control logic for the switching element. The physical controller in these embodiments, functions as the aggregation point for the transmission of the control logic on logic controllers for base controllers, establishing communication with a plurality of switching elements, which are responsible for this physical controller. Physical controller distributes the control logic for basic controllers that control a set of switching elements. In these embodiments, the controlled switching element is communication means, by which the operating network controller system establishes a communication channel (e.g., RPC channel (RPC)) between the physical controller and the base controller, so that the physical controller may transmit control logic stored in a data structure of records in a relational database data to the base controller. Base controller will, in turn, promote the control logic to a switching element using multiple access switching API, or other protocols.
63Structural components of communication which provides the operating system of certain embodiments also include exporter (not shown) which the network controller can use to send the data records to another network controller (e.g., PLC to another PLC, the physical controller to another physical controller from the PLC to the physical controller for the controller from the physical logic controller, etc.). In particular, application virtualization management application and a network controller, using the exporter, may export data records stored in a relational database structure of data to one or more other network controllers. In some embodiments, the exporter establishes a communication channel (e.g., RPC channel) between two network controllers, so that through this channel a network controller can send the recording data to another network controller.
64The operating system of some embodiments also provides importer network controller which can be used to obtain data records from the network controller. Importer some embodiments functions as a complement another network controller exporter. That is, the importer is on the receiving end of a communication channel established between two network controllers. In some embodiments, network controllers correspond to the model published - a subscriber, wherein the receiving controller subscribe to channels to obtain data only from the network controller, providing data that interested the receiving controller.
65B. Promoting flows to the terminal switching elements
66As mentioned above, the structure of a relational database in some embodiments, stores data relating to each switching element in the network infrastructure of the system, while in other embodiments, the structure of the relational database data only stores state information of the switching elements at the end of the network infrastructure . FIG. 2 and FIG. 3 illustrates an example of which delimits the two different approaches. In particular, FIG. 2 illustrates a switching infrastructure is a multi-user host system. In this system, the six switching elements are used to connect between a network of six stations of the two users A and B. Four of the switching elements 205-220 are terminal switching elements, which have a direct connection with network stations 235-260 users A and B, at the while two switching elements 225 and 230 are internal switching elements (i.e., not terminal switching elements) which are interconnected end switching elements and connected to each other. All the switching elements illustrated in these drawings and described above and below can be software switching elements, in some embodiments, while in other embodiments, the switching elements are a mixture of software and physical switching elements. For example, terminal switching elements 205-220, and not limit the switching elements 225-230 are, in some embodiments, the switching software elements. Also, "network station" described herein include virtual network station and a physical network station, such as a computing device.
67FIG. 3 illustrates a network controller 300 that controls terminal switching elements 205-220. Network controller 300 is similar to the network controller 110, described above with reference to FIG. 1. As shown in FIG. 3, the controller 300 comprises a control application and an application virtualization controller 310. The operating system 300 supports an instance of a relational database structure of the data (not shown) that contains recording data relating only terminal switching elements 205-220. In addition, applications 305 and 310, performed on the upper level of the operating system, provide users with A and B to modify the configuration of switching elements they use. Then the network controller 300 distributes, if necessary, these modifications on the terminal switching elements. In particular, in this example, the two terminal switching elements 205 and 220 are used by network stations both users A and B, while the end switching element 210 uses only the power station 245 by user A, a terminal switching element 215 is only 250 user network station B . Accordingly, in FIG. 3 illustrates a network controller 300, modifying user accounts A and B in the switching elements 205 and 220, but only updating the record of user A in the switching element 210, and only the user record in a switching element 215.
68Controller 300 controls certain exemplary embodiments only terminal switching element (i.e., supports only data in the data structure of a relational database, which belong to terminal switching elements) for several reasons. terminal switching elements management controller provides an adequate mechanism for maintaining autonomy between network stations (e.g., computing devices) required, unlike all of maintaining the autonomy between the switching elements, that is not necessary. Internal switching elements promoting the data packets between the switching elements. Limit switching elements promote data packets between network stations and other network elements (for example, other switching elements). Thus, the controller can support the autonomy of management of end user simply switching element as the switching element terminal is the latest switching element in the path forward packets to the network station.
69In addition to the management terminal switching elements, the network controller of some embodiments also utilizes not terminated and controls switching elements which are incorporated in the switching network hierarchy to simplify and / or facilitate the work of switching elements controlled terminal. For example, in some embodiments, the controller requires switching elements that it manages such that they are interconnected in a hierarchical switching architecture, which has several terminal switching elements in the form of end vertices and one or more non-terminal switching elements in the form of not end of vertices. In some such embodiments, each terminal switching element is connected to one or more non-terminal switching elements are used and do not limit the switching elements to support their communication with other terminal switching elements.
70The above discussion relates to the management terminal switching elements and the switching elements are not terminated by the network controller of some embodiments. In some embodiments, the end switching elements and the switching elements end (terminal end or vertex) may be referred to as controllable switching elements. This follows from the fact that the switching elements are controlled by a network controller (as opposed to uncontrolled switching elements, which are not controlled by the network controller in the network) to implement LDP populations through controlled switching elements.
71Network controllers implement some embodiments of the logical switching element controlled by switching elements based on the logical and physical data as described hereinabove. Logic switching element (also referred to as "gate forwarder") may be defined for the operation of a certain number of different ways (e.g., layer 2 switches, layer 3 routing and so on.), Which could be a function of the switching element. Network controllers implement some logic switching element is controlled by a specific manipulation of a switching element. In some embodiments, many network controllers implement logical switching elements are driven via switching elements. This enables the implementation of many different logical switching elements controlled by the switching element irrespective of the network topology.
72Controllable switching elements of some embodiments may be configured to route network data routing based on various criteria. Similarly, it will be possible to control the flow of data through the switching network elements in a network for implementing many logic elements controllable logical switching elements.
73C. Logical and physical switching elements switching elements
74FIG. 4 illustrates an example of the many logical switching elements implemented across a plurality of switching elements. In particular, FIG. 4 conceptually illustrates the logic switching elements 480 and 490, implemented controlled switching elements 410-430. As shown in FIG. 4, the network 400 includes a controllable switching elements 410-430 and 440-465 network stations. As indicated in this figure, the network stations 440, 450 and 460 owned by the user A and the network stations 445, 455 and 465 owned by the user B.
75Controllable switching elements 410-430 send some embodiments the network information (e.g., packets, frames, etc.), between network elements in a network, which are connected to controllable switching elements 410-430. As shown, controlled by the switching element 410 sends network data between network stations 440 and 445 and the switching element 420. Likewise, the switching element 420 sends network data between network station 450, and controls the switching elements 410 and 430, and the switch element 430 transmit data between network network stations 455-465 and the switching element 420.
76Moreover, each of the controlled switching elements 410-430 transmit the network data based on the data switch logic promotion, which in some embodiments is in the form of tables. In some embodiments, data promotion table determines where to route network data (e.g., a port on the switch) according to the routing criterion. For example, data, promotion table switching element layer 2 can determine where to send network data based on the MAC address (for example, the source MAC address and / or MAC address of the destination). As another example, data, promotion table switching element layer 3 may determine where to send the data network, based on IP addresses (such as source IP address and / or IP address of the destination). Many other types of routing criteria.
77As shown in FIG. 4, data promotion table in each of the controlled switching elements 410-430 comprises a plurality of records. In some embodiments, each record specifies operations of network data routing based on routing criteria. In some embodiments, these records may be referred to as streaming input messages as records that run "stream" data driven through switching elements 410-430.
78FIG. 4 also illustrate the conceptual representation of a logical network for each user. As shown, the logical network 480 of user A contains a logical switching element 485, which is connected to the network stations 440, 450 and 460 User A. User A logical network 490 includes a logical switching element 495, which are connected to the network stations 445, 455 and 465 people . In fact, from the perspective of user a, user a has a switching element, which are connected only network user station a, and from the perspective of the user B, user B has a switching element, which are connected only network user station B. In other words, talking about each user, the user has its own network, which includes only network station that user.
79Next will be described the conceptual stream input messages to implement the network data flow that occur at the network station 440 and intended for the network station 450, and that occur at the network station 440 and intended for the network station 460. Streaming input message "A2 to A1" in Table promotion data managed switching element 410 issues a command controlled switching element 410 for wiring the network, which occur at the network station 410 and intended for the network station 450 to the switching element 420. Streaming input message "A2 to A1" in table promotion data switching element 420 instructs the switching element 420 on the wiring network data that appear on the network station 410 and intended for the network station 450, to the network station 450. Therefore, when the network station 440 sends network data intended for a network of 450 stations operated by the switching elements 410 and 420 sent along the network data traffic channel 470, based on the corresponding entry in the table of data promotion of these switching elements.
80Furthermore, the streaming input message "A1 to A3" promotion table managed data switching element 410 issues a command controlled switching element 410 for wiring the network, which occur at the network station 440 and intended for the network station 460 to the switching element 420. Streaming Input Post "A1 to A3" in table promotion data switching element 420 commands the switching element 420 for wiring the network, which occur at the network station 440 and intended for the network station 460 to the switching element 430. Streaming input message "A1 to A3" in promotion table data switching element 430 commands the switching element 430 for wiring the network, which occur at the network station 440 and intended for the network station 460 to the network station 460. Thus, when a network station 440 transmits the network data which are intended for the network station 460 controlled switching elements 410-430 is carried out on the network data traffic channels 470 and 475, based on the corresponding entry in the table of data promotion switching elements.
81Although the above described conceptual stream input messages for routing network data occurring at the network station 440 and intended for the network station 450, and emerging at the network station 440 and intended for the network station 460, similar to stream input messages may be included in the data promotion table managed switching elements 410-430 of network for routing data between other network stations in the logical network 480 by user A. Moreover, a similar stream input messages are included in the table managed by advancing the switching elements 410-430 to the data network routing data between network stations in the logical network 490 user B.
82Conceptual stream input messages shown in FIG. 4, includes information such as source and destination for control of the switching elements and switching elements calculate the next segment to which you want to forward packets. However, the information source may be input into the stream messages as controllable switching elements of some embodiments may calculate the next segment of the switching elements, using only the destination information (e.g., context identifier, destination address, and so forth.).
83In some embodiments, to simplify the implementation of logical switching elements 485 and 495 driven by the switching elements 410-430 used in the tunnels can be supported by the formation of tunnel protocols (e.g., management and service provisioning for wireless access points (CAPWAP), common routing encapsulation (GRE ), the protection of the Internet protocol GRE (IPsec protocol) and so forth.). Due to the formation of the tunnel packet is transmitted through switches and routers, as a payload of another packet. That is, the tunneled packet must not disclose their addresses (eg, MAC source and destination addresses), as packet is forwarded based on the address included in the header of the outer package, which encapsulates the tunneled packets. The formation of the tunnel thus separates the logical address space on the physical address space, since the packet can be tunneled significant address space of logical addresses, while the outer package is moving / forwarded based on addresses in the physical address space. Similarly, the tunnels can be considered as "logical wires" that connect the controlled switching network elements for implementing logic switching elements 485 and 495.
84Configuration of the switching elements by various methods described above for implementing many logic switching elements through a plurality of switching elements, allows many users to position each user to have each of them a separate network and / or a switching element, although users actually share some or all of the a set of switching elements and / or connections between the plurality of switching elements (for example, tunnels, physical conductors).
II. UNIVERSAL STATE OF ADVANCEMENT OF DATA
86A. Layers controllers copies
87FIG. 5 illustrates a distribution of commands to control a switching element controlled through various processing layers controllers instances some embodiments. In this figure, the control data illustrated conveyor 500, which distributes and transmits data through the control plane processing four layers of the same or different instances of managed switching element controller 525. These four layers are broadcast input layer 505, a control layer 510, the virtualization layer 515 and by user 520 configuration layer.
88In some embodiments, these four layers are the same controller instance. However, in other embodiments, there are other configurations of these layers. For example, in other embodiments in the same instance of the controller are only management, and virtualization layers 510 and 515 and the function data distribution registered plane Physical Control (CPCP) is in another instance tuning layer controller (e.g., the host controller, not shown) . In other embodiments, the data of the universal plane of physical control (UPCP) transmitted from the relational database data structures (not shown) of one of the controller instances on a relational database structure of the data to another instance of the controller before the other controller instance generates and promotes CPCP data on controlled switching element. controller instance mentioned above can be a PLC, which generates data UPCP, and the last instance of the controller can be a physical controller or a base controller which transforms the data into the data UPCP CPCP.
89As shown in FIG. 5, the input data broadcast layer 505 in some embodiments has the LCP 530, which can be used for expressing the output data of this layer. In some embodiments, users are provided with the application (eg, application on a web-based, not shown) for inputting data users, specifying the LDP together. This application sends the input data in the form of API calls to a broadcast input layer 505, which converts the API calls LCP data in a format that can be processed by the control layer 510. For example, input data are converted into a set of input events that can be fed into the mechanism of display nLog control layer tables. NLog tables display mechanism and its operation will be described further below.
90Control layer 510 in some embodiments has the LFP 530 and LCP 535, which may be used to represent the input data and the output layer. LCP provides a set of high-level structural components, which enable the control layer and its users to specify one or more sets of LDP LCP within one or more users. LFP 535 is LDP aggregate users in a format which can be processed by the virtualization layer 515. Similarly, two logical planes 530 and 535 are analogous in space virtualization management planes and promotion data 555 and 560, which can typically be found in a typical controlled switching element 525, as shown in FIG. 5.
91In some embodiments, the control layer 510 defines and expresses the structural components of LCP, which layer itself or a layer define different users together inside LDP LCP. For example, in some embodiments, LCP 530 ACL logical data contains data, etc. Some of this information (for example, ACL logical data) can be specified by the user, while other such data (e.g., L2 or L3 logical records) generated by the control layer and can not be specified by the user. In some embodiments, the control layer 510 generates and / or specifies such data in response to certain changes in the structure of the relational database data (which indicate changes in the controlled switching elements and controlled information channels) 510 which detects the control layer.
92In some embodiments, the data LCP (i.e., aggregate LDP data are expressed in terms of the structural components of the control plane) can be initially specified without considering the current data on the controlled switching elements and without considering the manner in which the data of the control plane will be converted to PCP data. For example, data could specify LCP control data of the logical switching element which connects the five computers, even though these control plane data could be later converted into physical data for the three control controllable switching elements which realize a desired switching between these five computers.
93Layer comprises a set of control modules (not shown) to convert any LDPS inside LDPS LCP in a LFP 535. In some embodiments, to perform this transformation layer control mechanism 510 uses mapping tables nLog. Using nLog tables display mechanism control layer to perform this transformation is described somewhat further. Layer Control also contains a set of modules (not shown) to advance LDP sets of LFP 535,510 control layer to the LFP 540 virtualization layer 515.
94LFP 540 comprises one or more sets of one or more LDP members. LFP 540, in some embodiments, the logical data contains promotion information of one or more sets of one or more LDP members. Some of these data are transmitted to the control LFP layer 540, while other data are transmitted to the LFP layer virtualization detecting events in the structure of the relational database data as will be described in a little more for some embodiments.
95In addition to the LFP 540, the virtualization layer 515 comprises UPCP 545. UPCP UPCP 545 contains data for the LDP sets. Virtualization layer comprises a set of modules (not shown) for converting the LDP aggregates 540 within the LFP data UPCP 545. In some embodiments, the virtualization layer 515 to perform this conversion mechanism uses nLog mapping tables. Virtualization layer comprises a set of modules (not shown) to move the data from UPCP UPCP 545 virtualization layer 515 in the structure of the relational database of the user data configuration layer 520.
96In some embodiments, data UPCP, which are sent to the layer configuration of the user 515, allows you to control the switching element 525 to process data packets according to the sets of the LDP, 510-specified control layer, however, unlike the data CPCP, UPCP data are not complete implementation logical data specified by the control layer, since UPCP data in some embodiments do not express differences in the controlled switching elements and / or information specific to the switching elements controlled position.
97UPCP data must be converted into the data managed CPCP each switching element in order to realize the full set of LDP on managed switching elements. For example, when the LDP together specify a tunnel that spans multiple controllable switching elements, data UPCP express one end of the tunnel, using a specific network address (eg, IP address) managed switching element, representing the end. However, each of the other controllable switching elements through which the tunnel uses the port number which is a local address for controlled switching element to reference terminal controllable switching element having a particular network address. That is, a specific network address must be translated to a local port number of each managed switching elements in order to fully realize the aggregate LDP, for specifying the tunnel controlled switching elements.
98These UPCP, as the intermediate data into the data broadcast CPCP allow the control system of some embodiments of the scale, assuming that a user configuration layer 520 is performed in a different instance of the controller other than the controller instance, which generates UPCP information. This is determined by the fact that the virtualization layer 515 does not convert the data the LFP, specifying the LDP together, in CPCP data for each of the controlled switching elements that implement together the LDP. Instead, the virtualization layer 515 once converts the data into data LFP UPCP all controllable switching elements that implement aggregate LDP. Similarly, virtualization app saves computing resources that otherwise would be spent on the implementation of the transformation in the data sets LDP CPCP as many times as there are controllable switching elements that implement the LDP together.
99Layer configuration of the user 520 comprises UPCP CPCP 546 and 550 which may be used to express the input and output data for this layer. The layer configuration includes a set of modules (not shown) of the user to convert the data into UPCP UPCP 546 in data CPCP in CPCP 550. In some embodiments, the layer 520 under the user settings using the display tables nLog mechanism for performing this conversion. Layer configuration of the user also includes a set of modules (not shown) to move the data from the CPCP CPCP adjustment layer 550 by the user 520 in the switching elements 525 controlled.
100These CPCP that move to each controlled switching element are specific to the managed switch element. CPCP data, although the data are referred to as "physical" data allows you to control the switching element to perform physical switching operation in the two areas of processing of both physical and logical data. In some embodiments, a user tinctures layer 520 is performed in a separate instance of the controller for each of the switching elements 525 controlled.
101In some embodiments, the layer 520 of the user settings is not executed in the controller copy. Layer configuration of the user 515 in these embodiments is managed in the switching elements 525. Therefore, in these embodiments, the virtualization layer 515 sends data to UPCP controllable switching elements. Each switching element is controlled to adjust UPCP CPCP data from data specific to this managed switching element. In some of these embodiments, the controller will run the daemon in each controlled switching element, and will carry out the conversion in universal data ordering data managed switching element. Demon controller will be described later.
102In some embodiments, ordering data physical control plane, which apply to controlled switching element 525, initiated by the switching element to perform physical operations promote the network data (eg, packet), based on logic values identified in the logic area. In particular, in some embodiments, the data registered physical control plane messages specify input stream that contains logical values. These logical values include the logical address, the logical port numbers, etc., Are used to advance the network data in the logical area. These streaming input messages also indicate the logical values to physical values defined in the physical domain, so that the controlled switching element can perform logical operations data network promotion execution of physical operations forwarder based on a Boolean value. Similarly, the data support the physical implementation of control plane logical switching elements are driven via switching elements. Several examples of physical control plane transmitted data processing logic for implementing data-driven switching elements are further described in US Patent Application 13 / 177.535, filed July 6 2011 g. US Patent Application 13 / 177.535 incorporated herein by reference.
103The control plane data processed by the pipeline control data layer 500, becoming the more global than the layer will be higher. That is, the data in the logical control plane management layer 510 will be applied to the entire set of controllable switching elements that implement the logic switching element, these data certain logical control plane. In contrast to this, the data registered in the management plane of the physical layer of the user settings 520 are local and specific for each of the controlled switching elements which implement the logical switching element.
104B. Copies of many controllers
105FIG. 6 illustrates a distributed network management system 600 of some embodiments many instances controllers. This distributed system controls the switching elements 690 in many instances three controllers 605, 610 and 615. In some embodiments, a distributed system 600 allows different controllers to control operations of instances of the same or different switching element of the switching elements. As shown in FIG. 6, each instance comprises an input unit 620, the control unit 625, write 635, secondary memory structure (e.g., PTD) 640, a communication interface between the controller 645, the communication interface 650 managed switching element.
106Input module controller 620 is similar to the instance of the input data broadcast layer 505 as described above with reference to FIG. 5 in that the input module 620 receives input from the user and transmits the input data in LCP, which the control unit 625 will recognize and handle. As mentioned above, in some embodiments, the input data exists in the form of calls API. Input module 620 forwards LCP information to the control unit 625.
107The control unit 625 copies control layer controller 510 is similar in that the control unit 625 converts the data into data LCP LFP LFP and forwards data virtualization module 630. In addition, the control unit 625 determines whether the received data is data LCP LDPS, which are controlled by these controller instance. If an instance of the controller is the master controller for LDPS LCP data (ie, PLC, control LDPS), the controller instance virtualization module will further process the data. Otherwise, some embodiments of 625, the control unit stores data in the LCP secondary memory 640.
108virtualization module 630 copies the controller 515 is similar to the virtualization layer that virtualization module 630 converts the data in LFP data UPCP. virtualization module 630 of some of the examples of transfers then UPCP data to another instance of the controller via the communication interface between the controller 645 or switching elements controlled via a communication interface controllable switching elements 650.
109virtualization module 630 forwards UPCP data to another instance when another instance of the controller is a physical controller, which is responsible for the administration of at least one of the controllable switching elements, which implements LDPS. This occurs when the controller instance, where the virtualization module 630 has generated data UPCP, is just logic controller responsible for some LDPS, but not a physical controller or the base controller, responsible for the controlled switching elements that implement LDPS.
110virtualization module 630 forwards the data to UPCP controllable switching elements when the switching elements driven configured to convert data into UPCP CPCP specific to these switching elements controlled. In this case, the controller instance does not have a layer configuration of the user or a module that will perform UPCP data conversion in data CPCP.
111Entries 635, in some embodiments, a set of records are stored in a relational database structure of instance data controller. In some embodiments, some or all of the input modules, control modules and virtualization modules are used, update and manage records stored in a relational database structure data. That is, the input and / or output data of these modules are stored in a relational database structure data.
112In some embodiments, the system 600 maintains the same data records of the switching elements in the structure of each instance of a relational database data, while in other embodiments, system 600 allows a relational database data structures different instances store different sets of data records of the switching elements based on LDPS or many LDPS, which is controlled by each controller instance.
113PTD 640 is of some embodiments of the structure of the secondary data storage network configuration, user-specific (i.e., LCP data converted from the input data in the form of API calls). In certain embodiments, each instance of PTD controller stores configuration data for all users, using the controller 600. A copy system that receives user input, transmits the configuration data to many other instances PTD controllers, so that each instance PTD each controller in this example is implementation of all the configuration data for all users. However, in other embodiments, the PTD copy controller stores only the configuration data specific LDPS, which is controlled by the controller instance.
114Leaving multiple instances of the controller the ability to store the same or overlapping configuration data and / or secondary storage structure entry, the system will enhance its full fault tolerance protection from data loss due to failure of any network controller (or failure instance relational database data structures, and / or secondary memory structure instance). For example, instances of duplication of PTD for instance allows controllers to quickly restart a failed controller PTD of another instance.
115The communication interface 645 is used between the controllers (such as the exporter, not shown) to establish a communication channel (e.g., RPC channel) with another instance of the controller. As shown, the communication interface between the controller supports data exchange between different instances of the controllers 605-615.
116Communication interface managed switching element 650, as mentioned above, it maintains the connection between the controller and the controlled specimen switching element. In certain embodiments, communication interface controllable switching elements is used to distribute data UPCP, formed virtualization module 630, each controlled switching element, which can convert the generic data into custom data.
117Some or all communications between distributed instances of the system controller 600 uses coordination administrators (SM) 655. CM 655 in each instance provides a copy of the possibility of coordinating with other instances of certain actions. Various examples of the use of CM for the coordination of actions between the different sets of copies. Examples of such actions is to record in the structure of a relational database data entry in PTD, control the switching elements, support for communication between controllers, fail-safe controllers concerning instances, and so on. Also, many of SM used to search for the controllers LDPS and defining the controller controls the switching elements.
118As mentioned above, various instances of the system controller 600 can control the operations of the same or different switching elements of the switching elements. Distributed control these operations in several instances, the system can more easily be expanded to control additional switching elements. In particular, the system may allocate control of various switching elements on copies various controllers to take advantage of features that can be implemented using multiple instances of controllers. In such a distributed system, each controller instance may have a reduced number of switching elements, which he controls, thereby reducing the amount of computation to be performed each controller for generating and distributing streaming input messages for switching elements. In other embodiments, the use of many controllers can create instances of a network management system scalable. The calculation of how best to distribute the table of network flows in large networks is challenging the CPU. Division for handling instances of controllers in the system 600 can be used by a set of a larger number, but less powerful computer systems to create a scalable network management system that can manage large networks.
119To distribute the workload and to eliminate conflicting operations between different instances of the controllers, the system 600 of some embodiments to designate one controller instance (for example, 605) in the system 600 as a master controller LDPS and / or any given managed switching element (that is, a PLC controller or physical). In certain embodiments, each instance of the master controller stores in the structure data of a relational database, only data relating to the controlled switching elements which are controlled by the controller setpoint.
120In some embodiments, as noted above, several SM supports communication between the controllers relating to resiliency instances controllers. For example, some communications between the SM controllers implement through the secondary memory, as described above. A copy of the controller in the control system can fail for many reasons (for example, hardware failure, software failure, network failure, and so on.). Various embodiments may use different techniques to determine whether a copy of the controller fails. In some embodiments, to determine whether the controller instance denied control system uses a consensus protocol. While some of these embodiments for implementing protocols may use consensus Apache Zookeeper, other exemplary embodiments may implement other means consensus protocol.
121Some examples of the SM 655 can be set to use the waiting time to determine whether the controller instance refused. For example, if the controller instance does not respond to the CM message (e.g. sent from another controller CM in another instance of the control system) for a predetermined time (i.e., a certain value of the waiting time), this is not responsible controller instance determined as failed. In other embodiments, other methods may be used to determine whether copy controller fails.
122When a copy of the master controller fails, it is necessary to define a new master controller for the LDP sets and switching elements. In some embodiments, the CM 655 such determination is carried out performing the selection process of the master controller, wherein a master controller is selected instance (for example, sets of decomposed LDP control and / or switching elements to control decomposition). CM 655 of some embodiments may perform the process of selecting a master controller for selecting a new instance of the master controller for both sets of the LDP, and for those of the switching elements, the master controller which was the failed controller instance. However, the CM 655 other embodiments may carry out (1) the process of selecting a master controller for selecting a new instance of the master controller sets the LDP, the master controller which was the failed instance of the controller and (2) another process of selecting a master controller for selecting a new instance of the master controller for the switching elements, which was a copy of the failed controller setpoint controller. In these cases, the CM 655 can define two different instances of controllers as new instances of controllers - one for sets of the LDP, which has been specified by the controller failed controller instance, and the other - for the switching elements, the master controller which was the failed controller instance.
123Alternatively or in conjunction, in some embodiments, the controllers in the cluster controllers perform consensus algorithm to determine the dominant controller as mentioned above. Dominant controller divides the tasks for which the responsibility of each instance in the cluster controller, the purpose of the master controller for a specific work item, and in some cases, appoint a controller, which is in hot standby, taking over the job when defining controller fails.
124In some embodiments, the process of selecting a master controller is also performed for the sets of decomposed LDP control and / or management of switching elements when an instance of the controller is added to the control system. In particular, in some embodiments, the CM 655 carries out the process of selecting a master controller when the control system 600 detects a change in affiliation instances of controllers to the control system 600. For example, the CM 655 can perform the process of selecting a master controller for the redistribution of the control sets of LDP and / or management switching elements from the existing controller instance to a new instance of the controller when the control system 600 detects that the control system to the new 600 network controller has been added. However, in other embodiments, the redistribution of the control sets of LDP and / or control the switching elements of existing instances of controllers to a new controller instance does not occur when the control system 600 detects that a new control system 600 has been added to the network controller. Instead, the control system 600, in these embodiments, assigns unassigned set of LDP and / or switching elements (for example, the new set of LDP and / or switching elements or a combination of LDP and / or switching elements of the failed network controller) to a new controller instance when the control system 600 detects unassigned set of LDP and / or switching elements.
125C. decomposition sets of LDP control and controllable switching elements
126FIG. 7 illustrates an example of determining the copy master controller switching element (ie, the physical controller) in the distributed system 700 that is similar to the system 600 of FIG. 6. In this example, the two controllers 705 and 710 control the three switching elements S1, S2 and S3 of two different user A and user B. Two by two management applications 715 and 720 specify two different sets of LDP 725 and 730 to be converted into multiple records that stored in two identical relational database data structures 755 and 760 copies of the two controllers 705 and 710 virtualization applications 745 and 750 of these controllers.
127In the example shown in FIG. 7, both applications 715 and 720 control of both controllers 705 and 710 may modify the recording switching element S2 both users A and B, but that the controller setpoint is only switch element controller 705. This example shows two different scenarios. The first scenario uses a controller 705, which updates the record to S2b1 switching element S2 user B. In the second scenario using the controller 705 which updates records in S2a1 switching element S2 after the management application 720 updates the record S2a1 switching element S2 and a user A the structure of the relational database 760. In the example of data shown in FIG. 7, this update is sent from the data structure of a relational database 760 of the controller 710 in the structure of the relational database 755 data controller 705, and after that sent to the switching element S2.
128Different embodiments use different technologies to transfer changes in the structure of the controller 710 is a relational database instance data structure 760 in a relational database instance 755 data controller 705. For example, for transferring the update application 750 virtualization controller 710 in some embodiments sends directly recordset data structure of the relational database 755 (using communication modules between the controllers or the exporter / importer). In response to this, virtualization, application 745 will forward the changes relational database data structures 755 to the switching element S2.
129Instead of transferring the changes to the relational database data structures in another instance of a relational database structure of the data controller, the system 700 of some of the examples of other uses of technology to change S2a1 entries in the switching element S2, in response to a request from a management application 720. For example, the distributed control system of some examples implementation uses secondary storage structure (eg, PTD) as channels of communication between the various instances of controllers. In some embodiments, many PTD copied across all instances, and some or all of the changes relational database data structures, moving from one instance to another controller via the PTD instance memory layer. Accordingly, in the instance shown in FIG. 7, a change in the structure of the relational database 760 data could be replicated in the PTD controller 710, and from there it could be replicated in the PTD controller 705 and a relational database structure 755 data.
130There might be other embodiments the flowchart shown in FIG. 7, since some embodiments, in addition to the copy destination controller as a master controller of the switching element controller designate one instance as a master controller for LDPS. In some embodiments, multiple copies of the controllers can be specified by the controller of the switching element and the corresponding entry for this switching element in the structure of the relational database data, while in other embodiments requires that the controller copy was setpoint controller switching element and all of the records this switching element in the structure of the relational database data.
131In embodiments where the system 700 allows for assignment specifying controllers and switching elements of the data structure of a relational database entries, the example shown in FIG. 7 illustrates the case where the controller 710 is the master copy S2a1 recording controller in the data structure of a relational database, while controller 705 is the master copy controller switching element S2. If you set the recording controller S2a1 data structures relational database was a controller instance other than the controller instance 705 and 710, then this another instance of the controller 720 of the control application should be moved to the requirement to record modification to the structure of a relational database data. This other controller instance will then modify the record in the structure of a relational database data and the modification will then be the reason that the structure of a relational database data 755 and the switching element S2 update their records by any number of mechanisms, which will distribute this modification to an instance of the controller 705.
132In other embodiments, controller 705 may be a copy of the recording controller setpoint S2a1 data structure of a relational database instance or controller 705 may be controller setpoint switching element S2 and it records all relational database data structures. In these embodiments, requiring record modification in the structure of the relational database management data from the application 720 should be transmitted to the controller instance 705, which would then modify the entries in the relational database data structures 755 and the switching element S2.
133As mentioned above, various embodiments use different technologies to support communications between different instances controllers. Moreover, various embodiments for implementing different instances of controllers. For example, in some embodiments, are installed on the same computer and executed by a set of management applications (e.g., 625 or 715 in FIG. 6 and FIG. 7) and virtualization applications (e.g., 630 or 745). Also, in some embodiments, a single computer can be installed in parallel and run many copies of the controllers. In some embodiments, the controller instance may also have a different set of components, which are divided among several computers. For example, within a single instance of a management application (such as 625 or 715) can be on the first physical or virtual machine, virtualization and application (such as 630 or 745) may be a second physical or virtual machine.
134FIG. 8 illustrates an example operation of multiple instances of controllers, which function as the input data distribution controller, the master controller LDPS (also referred to as PLC) and the master controller controls the switching elements (also called the physical controller). In some embodiments, each controller instance does not contain a full set of the different modules and interfaces as described above with reference to FIG. 6. Or, not every instance of the controller performs every function of the complete set. For example, none of the instances controllers 805, 810 and 815 shown in FIG. 8, does not have a full set of modules and interfaces.
135A copy controller 805 in this example is an instance of a controller for allocating the input data. That is, some implementation examples a copy controller 805 receives input from the user in the form of API calls. Through calls API users can specify requests to configure certain LDPS (for example, configuration of the logical switching element or logical router to be implemented collectively controllable switching elements) or specify requests information requirements (for example, the statistics of the network schedule logical ports logical user switch). The input module 820 receives controller instance 805 calls the API, and translate them into a form (for example, data records or tuples), which can be stored in the PTD 825, and forwards a copy to another controller in some embodiments.
136A copy of the controller 805 in this example, and then sends these records to another controller instance, which is responsible for records management defined LDPS. In this example, responsible for LDPS record is an instance of the controller 810. The controller 810 receives the instance entry from the PTD 825805 controller instance, and stores these records in PTD 845, which is the structure of the controller instance secondary memory 810. In some embodiments, different PTD controllers copies can directly exchange information with each other and must not transmit messages on the communication interfaces between the controllers.
137Then, the management application 810 detects the addition of these records to the PTD and handles records for the generation or modification of other entries in the structure of a relational database data 842. In particular, the management application generates the LFP data. In turn, application virtualization detects the modification and / or addition of entries in the structure of the relational database and modifies the data and / or generates other entries in relational database structure data. These other entries in this example are UPCP data. Then these records are sent to another instance of the controller that controls at least one of the switching elements implementing some LDPS, via the communication interface between the controller 850 copies of the controller 810.
138A copy controller 815 in this example is an instance of a controller which controls the switching element of the switching element 855. This implements at least part of a particular LDPS. A copy of the controller 815 receives a recording representing UPCP data from the controller instance 810 through the communication interface between the controller 865. In some embodiments, the controller 815 instance will have management and application virtualization application to perform data conversion in UPCP data CPCP. However, in this example, the controller 815 identifies an instance of a collection of managed only the switching elements, which forwards the data UPCP. Similarly, the controller 815 functions as a copy of the aggregation point for data collection and shipment to the controllable switching elements, which are responsible for the management of this controller. In this example, the controlled switching element 855 is one of the switching elements controlled by the controller instance 815.
139D. Layer broadcast input
140FIG. 9 conceptually illustrates a software architecture of the application broadcast input. Appendix broadcast input some embodiments functions as input broadcast layer 505 as described above with reference to FIG. 5. In particular, the input data translation application receives input from the user interface application that allows the user to enter the values of the input data. The application converts the input broadcast data input requirements and allocates the requirements for one or more instances of the controllers to handle these requirements. In some embodiments, the input data broadcast application is executed in the same instance of the controller, wherein the control application is executed, while in other embodiments, the input data broadcast application is executed as a separate instance of the controller. As shown in this figure, input data broadcast application program comprises parsing (analyzer) input 905, filter 910, the query generator 915, query the repository 920, the controller 925, the administrator 930 and responses between the communication interface controllers 940.
141In some embodiments, the input data translation application 900 supports a set of API calls to specify sets of LDP and information requests. In these embodiments, the user interface application that allows the user to enter the values of the input data is implemented to transfer the input data to the API calls in the form of input data translation application 900. Therefore, these API calls specify LDPS (eg, a logical configuration of the switching elements, the specified user ) and / or the user request information (e.g., statistics network schedule logical ports user logic switching element). Furthermore, in some embodiments, the input data broadcast application 900 may receive input from the logic controller, the physical controllers and / or other input data broadcast application of another instance of the controller.
142The analyzer 905 inputs some embodiments receives input in the form of API calls from the user interface application. In some embodiments, the analyzer extracts the values of the input data input from the user API calls and forwards the values of the input data to the filter 910. The filter 910 filters the input values which do not meet certain requirements. For example, the filter 910 filters the input values that specify the wrong logical network address port. For those calls API, which contain not satisfy the request value input, the administrator 930 sends the answer response to the user indicating that the input does not satisfy the request.
143query generator 915 generates requests sent to one or more instances of controllers that will handle these requests and provide answers to questions. These requests may include receiving data controllers LDPS instances to process and / or the issuance of requests for information. For example, a query may request a logical port statistics logical switching element which is controlled by the user. The answer to this query will contain statistical information requested, prepared by the controller instance, which is responsible for managing LDPS associated with this logical switching element.
144Query generator 915 generates various examples of requests in accordance with various formats, depending on the implementation of copies controllers which receive and process requests. For example, queries that generate some embodiments query generator 915 are in the form of records (such as data tuples), convenient to store in a relational database structures, data controllers instances that receive these requests. In some of these embodiments, receiving controller instances use nLog tables display mechanism for processing records representing these requests. In other embodiments, the requests are in the form of object-oriented data objects that can interact with data structures NIB instances controllers that receive the request. In these embodiments, receiving controller copies data objects treated directly with NIB data structure, without passing through the mechanism nLog mapping tables.
145Generator 915 requests some examples of the places the generated queries in the query repository 920 so that the controller 925 can send requests to the proper instances of controllers. Manager 925 identifies the controller instance, which must be sent to each request. In some cases, the controller scans LDPS, associated with this request, and identifies the controller instance, which is the master controller of the LDPS. In some cases, the controller identifies the master controller defined switching element (ie, a physical controller) as the controller instance to send a request when the request specifically refers to the switching element (for example, when a query is a query about the statistical logical port information, which is displayed on the port a switching element). This controller forwards the request to the identified instance of the controller. The receiving controller instance returns answers when queries contain the requested information.
146The communication interface between the controller 940 is similar to the communication interface between the controller 645 that has been described above with reference to FIG. 6, that the communication interface between the controller 940 establishes a communication channel (eg, the RPC channel) with another instance of the controller, through which requests can be sent. The communication channel is a certain Bidirectional embodiments, while in other embodiments, the communication channel is unidirectional. When the channel is unidirectional, communication interface between the controller sets the number of channels to another instance of the controller, so that the input data broadcast application can send requests and receive responses via various channels.
147When receiving copies controllers receive requests that specify the required information, the controller instance processes the request and the response that contains the requested information. Administrator 930 responses received copies of responses from controllers, through the channel (s) set (established) communication interface between the controller 940. In some cases, a request that was sent, may return more than one answer. For example, a request for statistical information about all the logical ports logical switching element which is controlled by the user, will return a response from each controller. Answers to many instances of physical controllers, many different switching elements, the ports are displayed in the logical ports can be returned to the application broadcast input 900 or directly to the application broadcast input 900 or the master controller LDPS, associated with a logical switch. In such cases, the administrator 930 answers some embodiments combines the responses and sends a single combined response to the user interface application.
148As mentioned above, the control application running in the controller copy converts recording data representing data LCP, in recording data representing LFP data, performing conversion operations. In particular, in some embodiments, the control application populates LDPS table (e.g., promotion of logical data tables) are created from sets of application virtualization LDP.
149E. The mechanism nLog
150controller instance, in some embodiments, performs its operation using the display tables display mechanism nLog, which uses a variant of the technology datalog display tables. Datalog used in database management to display a set of tables to another set of tables. Datalog is not a suitable tool to carry out operations in the tables display application virtualization network management system, since its existing implementations are often slow.
151Accordingly, the mechanism nLog some embodiments created specifically for fast work, so that he could perform the mapping data in the tuples LDPS real-time data tuples controlled switching elements. This specialized development based on several variants of custom development. For example, some embodiments of the display mechanism nLog compile tables of the plurality of high-level declarative rules, which are expressed by the developer application (for example, control the application developer). In some of these embodiments, one embodiment of custom software development, which is created for nLog mechanism should allow the application developer to use only the operator and for the expression of declarative rules. Preventing the possibility that the developer will use other operators (such as OR, XOR, etc.), these embodiments provide that the resulting mechanism nLog rules are expressed in terms of the operators and that are faster at run time.
152Another option is custom software development refers to the joint operations performed mechanism nLog. Joint operations are common database operations to create associations between records of different tables. In some embodiments, nLog mechanism limits their joint operation inner joint operations (also called as inner joint operations) since the performance of external joint operations (also called the outer joint operations) can be time-consuming and is therefore not practical to operate the mechanism in real time.
153Another option is to implement custom development nLog mechanism in the form of a distribution table display mechanism, which is executed in several different instances of controllers. Some embodiments implement the mechanism in a distributed manner nLog control decomposition sets LDP. Decomposition sets LDP control involves specifying for each specific LDPS only one instance of the controller in an instance responsible for specifying records associated with this particular LDPS. For example, where the control system uses three switching elements to specify five aggregates LDP five different users with two different instances of controllers, one controller instance may be specified by the controller records relating to the two sets of LDP, while another controller instance may be preset recording controller the other three sets of LDP.
154Decomposition of control aggregates LDP assigns in some embodiments, the tables display operation on each LDPS nLog instance mechanism controller that is responsible for this LDPS. Distribution tables display operations nLog several instances nLog reduces the load on each instance nLog and thus increases the speed at which each nLog instance can complete their mapping operations. Also, this distribution reduces the amount of memory needed on every network station that executes the controller instance. Some of the examples shared operations NLog display tables in different instances of the appointment of the first joint operation, which is performed every instance NLog, based on LDPS parameter. This assignment ensures that each instance of joint operations NLog be inadequate and immediately stop when the instance is launching a set of joint operations relating to LDPS, which is not controlled by this instance nLog. Several examples of the use nLog mechanism described in the patent application introduced above US 13 / 177.533.
155F. Control Layer
156FIG. 10 illustrates a management application 1000 of some embodiments. This application 1000 used in some embodiments, a control unit 625 in FIG. 6. This application uses 1000 tables nLog display mechanism for displaying the input data tables that contain input data tuples, data representing the LCP, the data tuples, data representing the LFP. This application resides at the top level application virtualization 1005 that receives data tuples, specifying the LDP together, from the management application 1000. The application 1005 displays a virtualization data tuples UPCP data.
157More specifically, 1000 Management application provides a variety of users to define different sets of the LDP, which specify the desired configuration logic switching element, managed users. Attachment means 1000 controls the operations of each display converts data LDPS each user in the plurality of data tuples, data that specify a logical switching element LFP associated with LDPS. In some embodiments, the control application is running on the same host, which marks the virtualization application 1005. In other embodiments, the control application virtualization and application should not be executed on the same network station.
158As shown in FIG. 10, the management application 1000 comprises a set of input rules engine data tables 1010, a set of tables, functions and constants 1015, Importer 1020 rules engine 1025 aggregate output tables rules engine 1045, the translator 1050, exporter 1055, PTD 1060 and the compiler 1035. Compiler 1035 It is one of the components of the application, which operates on a different time-off than operate components of other applications. The compiler works when the developer needs to specify certain rules engine control applications and / or virtualized environment, while other applications modules run at runtime when the application connects to the application virtualization to deploy the LDP sets, specified by one or more users.
159In some embodiments, the compiler 1035 is a relatively small set (eg, a few hundred lines) declarative instructions 1040 that are specified in the declarative (non-procedural) language, and translates commands in range (for example, thousands of rows) code (that is, the object program), which specifies the rules of operation of the mechanism in 1025, the mapping of the application table. Essentially, the compiler greatly simplifies the process for managing the application developer define and upgrade management application. This follows from the fact that the compiler allows developers to use high-level programming language that provides a compact definition of a complex operation display control application and the subsequent update of the operation display in response to any number of changes (such as changes in the logical network functions are supported application management, change desired behavior management applications and so on.). Moreover, the compiler frees the developer from the consideration of the order in which the control application will be arriving input message when the developer determines the display operation.
160In some embodiments, the table of input rules engine data (RE) 1010 contains a table with the logical data and / or configurations of shift (for example, the configuration list, the access control configuration virtual private network, port security configuration, etc.)., A user specified and / or management application. In some embodiments, the input data table 1010 also includes tables that contain physical data of the switching elements controlled by the network management system. In some embodiments, such physical data includes data relating to controlled switching elements, and other data relating to the network configuration, the network management system is used to deploy various LDP different sets of users.
161Tables input RE 1010 partially replenished the LCP data, provided by the users. Tables input RE 1010 also contain data LFP and UPCP data. In addition to the tables input RE 1010, the management application 1000 includes other miscellaneous table 1015, which rules engine 1025 uses to gather input for its table display operations. These tables contain the 1015 table of constants that hold certain constant values for the necessary mechanisms for the implementation of the rules in 1025 table display operations. For example, the constant table 1015 may contain a constant "zero", which is defined as a value of 0, the constant "dispatch_port_no", as the value of 4000, and the constant "broadcast_MAC_addr", a value of 0 × FF: FF: FF: FF: FF: FF.
162When the rules of 1025 refers to the mechanism of constants are found and used the ones defined for the constants. Also, the values determined for constants constants in tables 1015, may be modified and / or updated. Similarly, the constants table 1015 provides the ability to modify the values determined for constants which refers to rules engine 1025 without the need to rewrite or recompile the code, which specifies the operation rules engine 1025. Table 1015 also contains function table storing function mechanism that rules 1025 It should be used to calculate the values required when replenishing output tables in 1045.
163Regulations 1025 The mechanism performs mapping tables that specify a way to convert data into LCP LFP data. Whenever one of the modified input data tables rules engine (RE), rules engine performs the mapping table set of operations that can result in modification of one or more tuples of data in one or more tables of output data RE.
164As shown in FIG. 10, 1025 regulations mechanism includes the event processor 1022, several plans of requests in 1027 and 1030. Each processor tables query plan is a set of rules that specify a set of joint operations to be performed in the event of modification of one of the input data tables RE. Such modification is referred to hereinafter as the input event tables. In this example, each query plan generated by the compiler in 1035 from a single set of declarative rules returns 1040. In some embodiments, one declarative rule generates more than one query plan. For example, the query plan is created for each of the tables, the combined one declarative rule. That is, when a declarative rule specifies the association of four tables, one of this declaration will be created four different query plans. In some embodiments, the query plans are defined using a declarative language nLog.
165Event Processor 1022 rules engine 1025 detects the occurrence of each event, the table input. This event processor detects various embodiments of occurrence of input data table for different events. In some embodiments, the processor event registers callbacks input tables to notify the RE records changes in the input data tables RE. In such embodiments, the event processor 1022 detects the event in the input table, when it receives notification from the input data table RE that one of its entries has changed.
166In response to the detected event in the table of input data, the event processor 1022 (1) selects the appropriate query plan for the detected event table, and (2) instructs the processor to the tables in 1030 for execution of the query plan. In some embodiments, tables processor 1030 for execution of the query plan is the joint operations specified query plans, to form one or more records that represent one or more sets of data values from one or more input tables and mixed data tables 1010 and 1015. The processor 1030 tables some embodiments (1) performs a selection operation to select a subset of data values of records (records) formed joint operations, and (2) writes the selected subset of data values in one or more tables of output data 1045 RE.
167In some embodiments, RE output table 1045 stored data items attributes as a logical and physical network. Table 1045 called tables of output data RE, since they store the output data tables mapping rules engine operation 1025. In some embodiments, tables of output data RE can be grouped into several different categories. For example, in some embodiments, these tables may be tables RE input and / or output table data management application (SA). The table is a table of input data the RE, when the change in the table leads to the fact that the rules engine detects an input event that requires a query execution plan. Table output RE 1045 may also be a table of input RE 1010, an event that leads to the fact that the rules engine executes another query plan. Such an event is referred to herein as internal input event, and it should be the opposite of external input event which is an event initiated by a modification of the RE input table, produced management application 1000 or importer in 1020.
168The table is a table of the SA output when the change in the table leads to the fact that the exporter in 1055 brings a change in the virtualization application 1005, as will be described below. In some embodiments, the table in the output data RE tables 1045 may be a table of input data RE, output parser table or RE input table, and a table parser output.
169Exporter 1055 detects changes in the tables of output data output tables CA RE 1045. Exporter different embodiment detects occurrence of an event in Tables SA output differently. In some embodiments, the exporter registers callbacks tables parser output data for notifying changes in the records of data table parser output. In such embodiments, the exporter 1055 detects the event in the output table, when it receives notification from the output data table parser that one of its entries has changed.
170In response to the detected event in the output tables 1055 exporter accepts some or all of the modified data tuples in Tables CA modified output data and distributes tuples (a tuple) the modified data in the input data table (not shown) virtualization applications 1005. In some embodiments, instead of exporting 1055, advancing tuples of data in application virtualization, application virtualization in 1005 moves the data tuples of the SA output tables 1045 in the table of input data virtualization applications. In some embodiments, the parser 1045 outputs the table management application 1000 and the input data table 1005 virtualization applications may be identical. In other embodiments, the control and virtualization applications use one set of tables, so that tables of output data CA are substantially spreadsheet application virtualization data input (VA).
171In some embodiments, the control application does not store data in the output tables of 1045 data sets of the LDP, for the management of which is not a responsible management application. However, such data will be transmitted in the format translator 1050, which can be stored in the PTD, and actually stored in PTD. PTD 1000 management application distributes the data to one or more other instances of other instances of controller management application, so that some of the other instances of controllers who are responsible for managing collections of the LDP, associated with this data can process the data.
172In some embodiments, the control application also delivers the data stored in tables of output data 1045 (that is, the data management application that contains the output data tables) for PTD data for error resilience. Such data are also broadcast translator 1050, stored at PTD, and spread to other instances of other instances of controllers control applications. Therefore, in these embodiments, the controller instance PTD has all the configuration data for all sets of the LDP, controlled network management system. That is, in some embodiments, the PTD comprises a global view of the logical network configuration.
173Importer 1020 communicates with a number of different input sources and uses these inputs to create or modify the input data 1010. The tables 1020 Importer some embodiments receives input data from the input data broadcast application 1070 via the communication interface between controllers (not shown). Importer 1020 also communicates with PTD 1060, so that the data received via the PTD from other instances of controllers may be used as input data for modifying or creating tables of input data 1010. Moreover, the importer 1020 also detects change table input RE and tables of input RE data with output data tables parser output tables 1045 RE.
174G. Virtualization Layer
175As mentioned above, the virtualization application of certain exemplary embodiments specifies the way in which different sets of different users LDP network management system may be implemented in the switching elements controlled by the network management system. In some embodiments, the virtualization application specifies the implementation of the infrastructure within the LDP sets controlled switching elements performing conversion operations. These operations convert convert recording data sets LDP in the recording management data (eg, UPCP data), which are initially stored internally controlled switching elements, and then uses these switching elements to form Data advancement plane (for example, streaming input messages) to determine the behavior of switching data elements in the promotion. Conversion operations also create other data (e.g., tables) specifying structural components of the network (for example, tunnels, queues, queue aggregate and so on.), which must be controlled within the defined switching elements and between them. Structural components of the network also includes software controlled switching elements that are dynamically deployed or pre-configured software controlled switching elements that are dynamically added to the set of controllable switching elements.
176FIG. 11 illustrates the virtualization application in 1100 of some embodiments. This application 1100 used in some embodiments, a virtualization module 630 in FIG. 6. Application Virtualization uses a 1100 display tables nLog mechanism for mapping the input data tables that contain tuples LDPS data representing UPCP data. This app is constantly below the level of the control application in 1105, which generates tuples LDPS data. Management application 1105 is similar to a management application 1000 described above with reference to FIG. 10. The application of virtualization in 1100 is similar to the application virtualization in 1005.
177As shown in FIG. 11, virtualization application 1100 includes a set of tables, input mechanism of the rules in 1110, a set of tables, functions and constants 1115, Importer 1120 rules engine 1125 aggregate output tables rules engine 1145 translator 1150 exporter 1155, PTD 1160 and the compiler 1135. Compiler 1135 compiler 1035 is similar to that described above with reference to FIG. 10.
178In order for the application virtualization 1100 Display tuples LDPS data tuples UPCP data, the developer, in some embodiments, specifies a declarative language declarative command 1140 that contain tuples LDPS display data to the data tuples team UPCP some control of the switching elements. In some embodiments, the switching elements comprise several UPCP UPCP for converting data into CPCP.
179For other controllable switching elements virtualization application 1100 displays the data in the tuples LDPS tuples CPCP data that are specified for each managed switching element having no UPCP. In some embodiments, when the virtualization application 1100 receives UPCP data from another instance of application virtualization controller virtualization application 1100 then displays tuples data UPCP tables output in 1140 in the tuples of data CPCP some controlled switching element, which does not UPCP, to convert the tuple data universal physical control plane in tuples of data sets of physical information data channels.
180In some embodiments, when there is a basic controller for converting tuples UPCP in CPCP data specific to a particular managed switching element, application virtualization in 1100 does not convert the input data into UPCP CPCP data for a particular managed switching element. In these embodiments, the controller instance that has an application virtualization 1100 identifies a plurality of controllable switching elements, which is specified by the controller, this controller instance UPCP data and distributes this aggregate controllable switching elements.
181Tables input RE 1100 are similar to tables input RE 1010. In addition to the tables input RE 1110 virtualization application 1100 includes other miscellaneous table 1115, which rules engine 1125 uses the collection of input data for its table display operations. These tables are tables similar to 1115 1015. As shown in FIG. 11, rules engine 1125 includes the event processor 1122 requests multiple plans and tables 1127, processor 1130, which function similarly, as do the event processor 1022, query plans tables 1027 and 1030 processor.
182In some embodiments, RE output table 1145 stored data items attributes as a logical and physical network. Table 1145 called tables of output data RE, since they store the output data tables mapping rules engine operation 1125. In some embodiments, tables of output data RE can be grouped into several different categories. For example, in some embodiments, these tables may be tables and RE input / output virtualization tables or application data (VA). Table is a table of input data RE, when the change in the table is the reason that the mechanism detects the input event rules, which requires the execution of the query plan. Table output RE 1145 may also be a table of input RE 1110 generates an event, which is the reason that the rules engine executes another query plan after the modification rules engine. Such an event is referred to as an internal input event, and it should be the opposite of external input event which is an event initiated by a modification of the RE input data table, produced in 1105 by importing management application 1120.
183Table VA is a table of output data when a change in the table is the reason that the exporter 1155 exports change in controlled switching elements or instances of other controllers. As shown in FIG. 12, in some embodiments, the table in the output data RE tables 1145 may be a table of input data RE 1110 VA output data table 1205 or RE input table 1110 and table 1205 VA output.
184Exporter 1155 detects changes in the output tables 1205 VA output tables RE 1145. Exporter various examples detects the occurrence of events in the output tables VA differently. In some embodiments, the exporter registers callbacks VA output data tables to notify changes in the data table records output VA. In such embodiments, exporter 1155 detects an event output table when it receives notification from the table VA output data that has changed one of her records.
185In response to the detected event in the table output data exporter 1155 receives each tuple modified data in the modified data output Tables VA and distributes this tuple modified data to one or more other controllers instances (for example, base controller) or one or more controllable switching elements . By doing this, the exporter completes deployment LDPS (for example, one or more logical switching patterns) of one or more controllable switching elements, as specified records.
186Since in some embodiments the output data table VA stored data items attributes as a logical and physical network, the PTD 1160, in some embodiments, it stores the basic attributes of a logical and physical network that are identical elementary attributes database logical and physical network in the tables 1145 or the output data output from these attributes. However, in other embodiments, PTD 1160 stores only the basic physical attributes of the network which are identical elementary physical network attributes in the output data table 1145, or are derived from those attributes.
187In some embodiments, application virtualization is not stored in the output tables of 1145 data sets of the LDP, for the management of which is not responsible virtualization application. However, such data will be transmitted in the format translator 1150, which can be stored in the PTD, and then stored in PTD. PTD application virtualization 1100 distributes the data to one or more other application virtualization instances of other instances of the controllers, so that the process this data may be some of the other copies of the application virtualization, which are responsible for managing collections of the LDP, associated with that data.
188In some embodiments, application virtualization may also deliver data stored in tables of output data 1145 (that is, data that contains application virtualization output data tables) for the stability of PTD for data errors. Such data are also broadcast translator 1150 PTD stored in, and transmitted to other instances of the application virtualization to other instances of controllers. Therefore, in these embodiments, the controller instance PTD has all the configuration data for all sets of the LDP, controlled network management system. That is, in some embodiments, the PTD comprises a global view of the logical network configuration.
189Importer 1120 communicates with a number of different input sources and uses these inputs to create or modify the input data 1110. The tables 1120 Importer some embodiments receives input data from the input data broadcast application 1170 via the communication interface between the controllers. Importer 1120 also communicates with PTD 1160 so that the data received via the PTD copies of other controllers can be used as input data for creating or modifying the input data table 1110. Furthermore, the importer 1120 also detects changes in the input data tables and table input RE data RE, together with tables of output yes nnyh CA output tables RE 1145.
190N. Network Controller
191FIG. 13 illustrates a simplified representation of the table display operations management applications and virtualization of some embodiments of the invention. As shown in the upper half of this figure, 1,305 management application displays the data in the LCP data the LFP, which virtualization in 1310 some of the examples of the application displays then in the data or the data UPCP CPCP.
192On the bottom half of the figure illustrates the operation display control application tables and virtualization applications. As indicated in this half, the management application table of input data 1315 stored LCP data, LFP (LFP) and UPCP data, and the collection of all these data with the data in the tables of constants and functions (not shown), in some embodiments, uses a mechanism nLog 1320 management application to generate LFP data from the input data LCP.
193This figure shows that the importer receives the LCP 1350 data from the user (eg, via input data broadcast application) and updates the data table input LCP 1315 management applications. This figure also shows that the importer 1350 detects or receives PTD changes in 1340 (e.g., LCP changing data coming from other controllers of copies), in some embodiments, and in response to such changes importer 1350 can update the table 1315 of the input data.
194On the lower half of this figure is also illustrated the operation display application virtualization tables 1310. As shown, application virtualization table 1355 stores input data LFP, LFP as the data, and together with the data in the tables of constants and functions (not shown) are used mechanism application virtualization nLog 1320 in some embodiments, to generate UPCP data and / or data CPCP. In some embodiments, the exporter 1370 sends the generated data UPCP one or more other instances of controllers (for example, base controller) for generating CPCP data before moving the data to the controlled switching elements or one or more controllable switching elements that convert UPCP data CPCP data specific to these switching elements are controlled. In other embodiments, exporter 1370 sends the generated data CPCP one or more controllable switching elements for determining behaviors promote data-driven these switching elements.
195In some embodiments, when there is a host controller for converting data into UPCP CPCP specific for a particular managed switching element virtualization application 1310 does not convert the input data into UPCP CPCP data for a particular switching element is managed. In these embodiments, the controller instance that has an application virtualization 1310 identifies a plurality of controllable switching elements, which is specified by the controller, this controller instance UPCP data and distributes this aggregate controllable switching elements.
196This figure shows that the importer in 1375 LFP gets the data from the management application 1305 and these data LFP updates the table of input data 1355 virtualization applications. This figure also shows that the importer 1375 detects or receives PTD changes in 1340 (e.g., LCP changing data coming from other controllers of copies), in some embodiments, and in response to such changes importer 1375 can update the table of input data 1355. This Figure also shows that the importer UPCP 1375 can receive data from another instance of the controller.
197As mentioned above, some of the physical or logical data importer places in the input table of application data or control virtualization refer to data generated by other instances of the controller and forwarded on PTD. For example, in some embodiments, the logical data concerning logical structural components (e.g., logical ports, logical queue and so on.), Which relate to the many sets of LDP, could vary, and compiler (e.g., compiler 1380 controller instances) may be written this change in the input data table. Another example of the logical data created by another instance of the controller among many instances of controllers that occurs when the user provides data for LCP LDPS the first instance of the controller, which is not responsible for these LDPS. This variation is added by the translator of the first controller instance to the first instance of PTD controller. This change applies then in many other instances PTD controllers replicas education processes executed many PTD. Importer second instance of the controller, which is the master controller LDPS, or PLC, which is responsible for LDPS, eventually gets the change, and then records the change in the input table of one of the applications (for example, in the table of input data management applications). Accordingly, the logical data importer writes input data table may in some cases be derived from another instance PTD controller.
198As mentioned above, the control application in 1305 and 1310 application virtualization are two separate applications, which in some embodiments operate on the same network station or in separate stations network. However, in other embodiments, these two applications are implemented as a single integrated module, two applications, while the management application logic module 1305 generates the data in LFP, and the virtualization module generates application data in the physical or UPCP CPCP.
199In other embodiments, virtualization management and operation of these two applications are combined into a single, integrated application, without separating these two separate operations on the module. FIG. 14 illustrates an example of such an integrated application 1400. The application 1400 uses this mechanism nLog mapping table 1400 for displaying data of a plurality of input data tables 1415 into a plurality of output data table 1420 are similar to the above examples of FIGS. 10, 11 and 13 may comprise one or more tables in the aggregate input data tables. The set of input data tables in the integrated application LCP may contain data that should be displayed in LFP data, or it may contain LFP data which must be displayed in the data or CPCP UPCP. This set of input data table may also comprise data UPCP, which need to be displayed in the data CPCP. These UPCP distributed over a plurality of base controllers collectively controlled switching elements without displaying data in CPCP. The mapping depends on whether the controller instance executing integrated application 1400 PLC or physical controller, and on whether the controlled switching elements setpoint controller which is a physical controller, the host controller to display data UPCP in data CPCP controllable switching elements .
200This integrated management and application virtualization 1400 Importer 1430 receives input from the user or from other instances of controllers. Importer 1430 also detects or receives a change in PTD 1440 are duplicated in PTD. Exporter 1425 transfers output data tables to other instances of controllers (for example, the base controller).
201When the output data table is sent to the other controller instance, the exporter uses the communication interface between the controller (not shown) so that the data contained in the records sent to another instance of the controller via a communication channel (for example, through the PRC channel). When output data table is sent to the switching elements are driven, the exporter managed communication interface uses a switching element (not shown), so that the data contained in the records are sent to the controllable switching element via the two channels. One channel is established using the switching control protocol (e.g., OpenFlow) for advancing control plane data managed switching element, and the other channel is set up using the configuration protocol to send the configuration data.
202When the output data table is sent to the host controller, the exporter in 1425, in some embodiments, uses a single communication channel for sending the data contained in the records. In these embodiments, the host controller receives the data through a single channel, but with a controllable switching element communicates through two channels. Base controller is described in more detail later with reference to FIG. 18.
203FIG. 15 illustrates another example of integrated application 1500. 1500 An integrated application uses a data structure of a network information database (NIB) in 1510 for storage of some of the input and output data tables mapping mechanism nLog 1410. As mentioned above, NIB data structure stores data in the form of objects the object -oriented data. The integrated application 1500 output table 1420 are the primary memory structures. PTD 1440 and 1510 NIB structures are secondary memory.
204An integrated application 1500 uses table 1410 nLog display mechanism for displaying data of a plurality of input data tables 1415 into a plurality of output data table 1420. In some embodiments, some of the data in the aggregate output tables 1420 1425 exporter transferred to one or more controllers or other specimens one or more other controllable switching elements. Such exported data includes UPCP or CPCP that will determine the behavior of streaming controllable switching elements. These data can be duplicated in the translator PTD 1435 1440 PTD a data error resilience.
205Some of the data in aggregate output tables in 1420 NIB placed in 1510 by the publisher NIB 1505. This information includes configuration information of logical switching elements, which is controlled by users, using integrated application 1500. The data stored in NIB 1510 NIB replicated in other other instances of controllers 1520 coordination administrator.
206Monitor NIB 1515 is notified of changes by NIB in 1510, and for certain notifications (for example, those relating to the totality of the LDP, which integrated application is the master controller) puts changes in the input data table in 1415 by the importer in 1430.
2071525 queries the administrator uses the connection between interface controllers (not shown) for connection to the input data broadcast application (not shown) and receive requests (e.g., requests for information) relating to the configuration data. As shown in this figure, the administrator certain embodiments 1525 also connects to NIB 1510 so as to request for information NIB state (e.g., logical ports statistics) on the logical network elements that are controlled by the user. However, in other embodiments, to obtain status information manager 1525 requests a query output data table 1420.
208In some embodiments, the application 1500 uses secondary memory structure (not shown) different from those of PTD and NIB. These structures do not include long-transactional database (PNTD) and a hash table. In some embodiments, these two types of structures of secondary memory store various types of data stored in different data representations and / or form different query interfaces that handle different types of requests.
209PNTD is a long-term database that is stored on a disk or other nonvolatile memory. Some embodiments use the database to store data (e.g., statistics, computation results, etc.) On one or more attributes or operations of the switching elements. For example, the database is used in some embodiments to store a list of packages sent through a particular port of a particular switching element. Other examples of the types of data stored in PNTD, include error messages, system logs, warning messages, and billing data.
210PNTD in some embodiments, the administrator has to query the database (not shown) that can process queries to the database, but is not as PNTD data base transactions, queries the administrator can not handle complex transaction requests conditions. In some embodiments, the treatment PNTD to be faster than treatment by PTD, but slower than reference to a hash table.
211Unlike PNTD, a hash table is not a database, which is stored on a disk or other nonvolatile memory. Instead, it is a memory structure stored on the volatile memory (e.g., RAM). It uses hashing techniques, which use a hash index for quick identification of records stored in the table. This structure, combined with the placement of the hash table in the system memory, provides a very quick reference to this table. In some embodiments, to facilitate such quick access using simple query interface. For example, in some embodiments, the hash table has only two requests: Request "Put" to write values in the table and the request is "Get" to retrieve the values from the table. In some embodiments, a hash table is used to store data that change quickly. Examples of such data are rapidly changing the status of the network entity, statistics, status, uptime, posting links and information batch processing. Furthermore, in some embodiments, the integrated application uses the hash table as a cache to store information that is requested multiple times, such as the input message stream to be recorded at many sites. In some embodiments, the hash structure is used in the NIB for quick access to records in the NIB. Accordingly, in some of these embodiments, the hash table is part of the data structure NIB.
212PTD and PNTD improve controller fault tolerance by storing the network data on hard drives. If the controller system fails, the network configuration data will be stored on disk in PTD, and event log information will be stored on disk in PNTD.
213I. Hierarchy network management system
214FIG. 16 conceptually illustrates an example of network architecture management system 1600. In particular, this figure illustrates the generation of input data CPCP various elements of network management system. As shown, the network management system 1600 of some embodiments includes a controller broadcast inputs 1605, logic controller 1610, the physical controllers 1615 and 1620, and three controlled switching elements 1625-1635. This figure also shows the five network stations 1640-1660, which are connected to a controllable switching elements (indicated in the figure as "MSE") 1625-1635 for the exchange of data between network stations. Specific features of the architecture, such as the number of controllers in each layer of the hierarchy, the number of controllable switching elements and network stations, as well as the relationship between the controller controlling the switching elements and network stations, as shown in this figure are only illustrative. Anyone of ordinary skill in the art recognizes that in a network control system 1600 may controllers many other different combinations of switching elements and network stations.
215In some embodiments, each of the controllers in the network control system has a complete set of different modules and interfaces described above with reference to FIG. 6. However, each controller does not have to use all of these modules and interfaces for performing the functions defined for the controller. Alternatively, in some embodiments, the controller in the system has only those modules and interfaces that are necessary to perform the functions defined for the controller. For example, the logic controller 1610, which is the master controller LDPS, contains no input module (eg input data broadcast application), but you must contain management and virtualization module unit (eg management application or the virtualization application or integrated application) for generating data UPCP LCP of the input data.
216Moreover, in the same network station can execute various combinations of the different controllers. For example, input controller 1605 and broadcast logic controller 1610 may execute on the same computing device. Likewise, one controller may operate differently at different aggregates LDP. For example, one controller can be specified by the controller first LDPS, and sets the controller controls the switching element, which implements the second LDPS.
217The controller broadcasts input data 1605 includes the input data broadcast application (not shown) which generates an LCP data from input data from a user that specifies certain LDPS. A broadcast controller 1605 identifies the input from the master controller 1605 LDPS system configuration data. In this example, controller setpoint is LDPS logic controller 1610. In some embodiments, more than one controller may be specified by the controller same LDPS. Similarly, one logical controller may be specified more than one controller sets LDP.
218Logic controller 1610 is responsible for a certain LDPS. Logic controller 1610 thus generates data of LCP UPCP data received from the broadcast controller input. In particular, the control unit (not shown) generates a logic controller 1610 LFP data obtained from the LCP data and the virtualization module (not shown) of the PLC 1610 generates data of UPCP LFP data.
219Logic Controller 1610 identifies the physical controllers, which are specified by the controller controls the switching elements implementing LDPS. In this example, the logic controller 1610 identifies the physical controllers 1615 and 1620, as controlled switching elements 1625 - 1635 are configured so that in this example implemented LDPS. Logic controller 1610 sends the generated data UPCP physical controllers 1615 and 1620.
220Each of the physical controllers 1615 and 1620 may be set by the controller of one or more controllable switching elements. In this example, the physical controller 1615 is the master controller of the two controllable switching elements 1625 and 1630, and the physical controller is the master controller 1620 controls the switching element controller 1635. Physical some embodiments, specifying a set of controllers controllable switching elements is generated from the data received by the data UPCP CPCP specific to each of the controllable switching elements. Therefore, in this example, the physical controller 1615 generates PCP data, customized for each of the controlled switching elements 1625 and 1630. The physical controller 1320 generates PCP data is configured for controlled switching element 1635. The physical controllers send data to managed CPCP switching elements, the master controller which are these controllers. In some embodiments, the master controller of the same controlled switching elements can be more physical controllers.
221Physical controllers some embodiments, in addition to the fact that the CPCP send data, receive data from the controllable switching elements. For example, the physical controller receives configuration information (eg, identifiers several VIF managed switching element) controlled switching elements. Physical controller maintains configuration information, and also sends this information to the PLCs so that controllers are logical configuration information controlled switching elements collectively implementing LDP, which are specified by the controller, these logical controllers.
222Each of the controllable switching elements 1625-1635 generates the data the physical plane promotion data from the data CPCP which was controlled by the switching element. As mentioned above, these physical data plane promote promotion determine the behavior of the data managed switching element. In other words, the controlled switching element fills its table data promotion using CPCP data. In accordance with these tables promote data-driven switching elements 1625-1635 are promoting data between network stations 1640-1660.
223FIG. 17 conceptually illustrates an example of architecture of the network management system 1700. As Fig. 16, this figure illustrates the generation of data input USSR from various elements of the network management system. In contrast to the 1600 network management system in FIG. 16, the network control system 1700 includes a base controllers 1725-1735. As shown, the network management system of some embodiments includes a controller broadcast inputs 1705 PLC 1610, the physical controllers 1715 and 1720, basic controllers 1725-1735 and 1740-1750 three controllable switching element. This figure also shows the five network stations 1755-1775, which are connected to a controllable switching elements 1740-1750 to exchange data between them. Specific features of the architecture, such as the number of controllers in each layer of the hierarchy, the number of controllable switching elements and network stations, as well as the relationship between the controller controlling the switching elements and network stations, as shown in this figure are only illustrative. Anyone of ordinary skill in the art will recognize that the 1700 network management system, many other possible combinations of different controllers, the switching elements and network stations.
224Input controller 1705 is similar to the broadcast broadcast controller 1605 inputs that broadcast controller 1705 comprises a data input of the input data broadcast application that generates LCP data from input data from a user that specifies certain LDPS. A broadcast controller 1705 identifies the input from the master controller 1705 LDPS system configuration data. In this example, the master controller is the logical controller LDPS 1710.
225PLC 1710 is similar to the logic controller 1610, that logic controller 1710 generates data of LCP UPCP data received from the controller 1705. The input translation logic controller 1710 identifies the physical controllers, which are specified by the controller controls the switching elements implementing LDPS. In this example, the logic controller 1710 identifies the physical controllers 1715 and 1720, as controlled switching elements 1740-1750 are configured so that in this example implemented LDPS. Logic controller 1710 sends the generated data UPCP physical controllers 1715 and 1720.
226Like physical controllers 1615 and 1620, each of the physical controllers 1715 and 1720 may be set by the controller of one or more controllable switching elements. In this example, the physical controller 1715 is the master controller of the two controllable switching elements 1740 and 1745, and a physical controller 1730 is the master controller controls the switching element 1750. However, the physical controllers, 1715 and 1720 do not generate data CPCP for controlled switching elements 1740-1750. The physical controller as the master controller controls the switching elements UPCP sends data to the host controller, which is responsible for each controllable switching element, which specifies the controller which is a physical controller. That is, the physical controller identifies some examples of the base controllers, which are connected with controllable switching elements, which are specified by the controller is the physical controller. In some embodiments, the physical controller identifies these basic controllers determination of whether attributed to basic controllers to channel the physical controller.
227Base controller has some embodiments one correspondence with a controllable switching element. Basic UPCP controller receives data from the physical controller, which is the master controller controls the switching element, and generates CPCP data specific to this managed switching element. Example of a common controller architecture will be described in more detail with reference to FIG. 18. The base controller in some embodiments is performed in the same network station, wherein the controllable switching element is executed, which controls the base controller, while in other embodiments, the base controller and controlled switching element are executed in different network stations. In this example, the base controller 1725 and controlled by the switching element 1740 are executed in the same computing device.
228Like a controlled switching elements 1625-1635, each of the controlled switching elements 1740-1750 generates the data the physical plane promotion data from the data CPCP which was controlled by the switching element. Controlled switching elements 1740-1750 is filled with their respective data promotion table using CPCP data. According to these tables, streaming, controlled switching elements 1740-1750 are promoting data between network stations 1755-1775.
229As mentioned above, the controlled switching element may in some cases more than one implement LDPS. In such cases, the physical controller which is the master controller of the managed switching element UPCD receives data sets for each of the LDP. Thus, the physical controller 1700 to the network management system can function as an aggregation point for data transfer different sets UPCP managed LDP specific switching element, which implements a set of LDP, to the base controller.
230Even though the basic controllers shown in FIG. 17 form a level above the level controllable switching elements, the basic controllers typically operate on the same level, and employing controllable switching elements as base controllers some embodiments are within the controlled switching elements or adjacent the controllable switching elements.
231In some embodiments, the network management system can be a hybrid network management systems 1600 and 1700. That is, in the hybrid network management system, some of the physical controllers CPCP generate data for some of the controllable switching elements and some of the physical controllers do not generate data CPCP to some of the controlled switching elements. For the latter controls the switching elements in the hybrid system has the basic controllers that generate data CPCP.
232As mentioned above, the base controller of some embodiments is the controller for the control unit controls the switching element. Base controller some embodiments has a complete set of different modules and interfaces described above with reference to FIG. 6. One of the modules that actually has a base controller is a basic control application that generates data of USSR from data UPCP, obtained from one or more physical controllers. FIG. 18 illustrates an example of basic control architecture 1800. The application 1800 uses this application nLog tables display mechanism for displaying the input data tables that contain input data tuples representing data UPCP, data tuples, data representing the LFP. This application 1800 controls the controllable switching element 1855 in this example via controlled communication with the switching element 1885. In some embodiments, the application 1800 (i.e., the host controller) turns in the same network station is performed in which the switching element 1885 controlled.
233As shown in FIG. 18, the base management application 1800 includes a set of tables of input data 1810 rules engine, a set of tables, functions and constants 1815 Importer 1820 rules engine in 1825, a set of output data table rules engine 1845 exporter 1855 communication interface managed switching element 1865 and the compiler 1835. In this figure is shown as a physical controller in 1805 and managed by the switching element 1885.
234Compiler 1835 is similar to the compiler 1035 in FIG. 10. In some embodiments, the table data input rules engine (RE) comprise 1810 data tables UPCP and / or the switching configuration (e.g. access control list configuration, configuration of virtual private networks, security configuration ports and so on.), Which physical controller 1805, which is managed by the controller setpoint switching element 1885 transfers control to the application basic data input 1800. table 1810 also includes tables that contain physical data managed by the switching element 1885. In some embodiments, such physical data includes data relating to managed switching element 1885 (e.g., data CPCP given physical progress data) and other data relating to the configuration of managed switching element 1885.
235Tables input RE 1810 are similar to tables input RE 1010. The tables of input data 1810 partially replenished UPCP, provided a physical controller 1805. The physical controller in 1805 some of the examples UPCP receives data from one or more logic controllers (not shown).
236In addition to the tables of input data 1810 base management application 1800 includes other miscellaneous table 1815 which rules engine 1825 uses to collect input data tables display their operations. These tables are tables similar to 1815 1015. As shown in FIG. 18, rules 1825 mechanism includes the event processor 1822 requests multiple plans table 1827 and the processor 1830, which function in the same way as do the event processor 1022, query plans 1027 and processor 1030 tables.
237In some embodiments, RE output table 1845 stored data items attributes as a logical and physical network. Table 1845 called tables of output data RE, since they store the output data tables mapping operations rule engine 1825. In some embodiments, tables of output data RE can be grouped into several different categories. For example, in some embodiments, these tables may be tables of output data RE and / or tables of output data base controller (CCA) application. Table is a table of input data RE, when the change in the table is the reason why the rules engine detects an input event which requires the execution of the query plan. Table output RE 1845 may also be a table of input data RE, which generates an event, which is the reason that the rules engine performs another query plan after it has been modified rules engine. Such an event is referred to as an internal input event, and it should be the opposite of external input event which is an event initiated by the modification of the table input the RE, made application management in 1805 by the importer in 1820. Table is a table of output data PAS, when the change in the table is the reason that the exporter in 1855 brings a change to the controlled switching elements or other instances of controllers.
238Exporter 1855 detects changes in the output tables CCA output tables RE 1845. Exporter different embodiment detects occurrence of an event in the table output SSA differently. In some embodiments, the exporter registers callbacks to the output tables CCA to notify changes in the output data tables PAS. In such embodiments, the exporter 1855 detects the event in the output table, when it receives notification from the data table output SSA that one of its entries has changed.
239In response to the detected event data in the table output exporter 1855 takes each tuple modified data in the modified output data tables and distributes the modified data tuple to one or more instances of other controllers (e.g., the physical controller) or controlled switching element 1885. 1855 uses Exporter communication between interface controllers (not shown) for transferring modified data tuples other instances controllers. The communication interface between the controller establishes communication channels (eg, RPC channel) with other instances of controllers.
240Exporter 1855 some embodiments uses a communication interface 1865 controls the switching element to transfer the modified data to tuples controlled switching element 1885. The communication interface controls the switching element establishes some of the examples of two communication channels. Managed communications interface sets the first switching element of the two channels using the switching control protocol. One example of a switching control protocol OpenFlow protocol. Protocol OpenFlow, in some embodiments, is a communication protocol for control plane data promotion (e.g., promotion of data tables) of the switching element. For example, OpenFlow protocol provides commands for inserting streaming input messages, delete messages from the stream input and modification of stream input messages in a controlled switching element 1885.
241Managed communications interface sets the second switching element of the two channels using the configuration protocol to send the configuration information. In some embodiments, the configuration information includes configuration information 1885 managed switching element, such as configuration information input ports, output ports, QoS configuration, ports and so on.
242The communication interface controls the switching element 1865 receives updates in a controlled switching element 1885 managed by the switching element 1885 through two channels. Controlled switching element 1885 of some embodiments sends updates to the base management application, when there are changes in the input stream of messages or configuration managed switching element 1885 is not initiated by the application of basic management of 1800. Examples of such changes include the refusal of network station, which was connected to a port managed switch element 1885 VM migration to the controlled switching element 1885 and so on. The communication interface controls the switching element 1865 sprinkles upgrade importer in 1820, which will modify the one or more input data tables 1810. If there is output data formed by the rules engine 1825 of these updates, the exporter in 1855 will send the output to a physical controller in 1805.
243J. Generation streaming input messages
244FIG. 19 illustrates an example of the creation of a tunnel between the managed switches, based on the data UPCP. In particular, this figure shows four different stages in a sequence of operations 1901-1904 performed by the various components of the network control system 1900 for establishing a tunnel between the two controllable switching elements 1925 and 1930. This figure also shows the logical switching element 1905 and VM 1 and VM 2 . Each of the four stages 1901-1904 1900 shows a network management system and managed by the switching elements 1925 and 1930 - in the lower part and a logic switching element 1905 and two VM, connected to a logical switching element 1905, - in the upper part. VM shown as the top and the bottom of each stage.
245As shown in the first step 1901, a logical switching element 1905 advances between data VM VM 1 and 2. In particular, the data follow one or VM to VM from one logical port through one of the logical switching element 1905, and the data to follow the VM or VM 2 2 through logical port 2 logical switching element 1905. In this example, the logical switching element 1905 implemented a controlled switching element 1925. that is, the logical port 1 is displayed on the port 3 managed switching element 1925 and the logical port 2 is displayed on the 4 port managed switch element 1925 .
246The network in this example, control system 1900 monitors cluster comprises two base 1910 and controller 1915 and controller 1920. Cluster controller 1910 includes a broadcast data input (not shown), logic controllers (not shown) and physical controllers (not shown) which together generate data UPCP, based on the input data, which are received by the cluster controller 1910. The host controller receives data UPCP and adjust universal data PCP data that are specific to managed switching element controlled by each base controller. Base Controllers 1915 and 1920 transmit data CPCP to controlled switching elements 1925 and 1930, respectively, so that the controllable switching elements 1925 and 1930 may generate data physical plane forwarder that controllable switching elements are used for the promotion of data between the controllable switching elements 1925 and 1930.
247In a second step 1902 the network administrator, which comprises a controllable switching element 1930, creates a VM on the host 3 (not shown) which turns the switching element 1930 controlled administrator creates managed port 5 and the switching element 1930 VM attaches to the port 3. After creating the three ports controlled by the switching element 1930 of certain embodiments sends information about the newly created port cluster controller 1910. In some embodiments, this information may include the port number, network addresses (e.g., IP and MAC address), a transport zone, which belongs to the controllable switching element network station attached to the port and so on. As mentioned above, this configuration information is passed through the base controller controlling the controllable switching element, and then -through physical controllers and logic controllers all the way to the user who manages the logical switching element 1905. This user can add new VM to a logical switching element 1905, which is controlled by the user.
248At step 1903 the user in this example decides to use VM 3 and VM adds 3 to the logical switching element 1905. As a result, this creates a logical port 6 of the logical switching element 1905. Therefore, the data coming to the VM by VM 3 or 3, will go through a logical port 6. In some embodiments, the cluster controllers 1910 instructs all controllable switching elements that implement the logic switching elements for forming a tunnel between each pair of controllable switching elements having a pair of ports is mapped on logical ports couple the logical switching element. In this example, the tunnel may be established between the controllable switching elements 1925 and 1930 to support the exchange of data between the logical port 1 and a logical port 6 (i.e., between the VM 1 and VM 3) and between the logical port 2 and a logical port 6 (i.e., between 2 and VM VM 3). In other words, the data exchanged between the port 3 managed switching element 1925 and 5 port managed switch 1930 element, and the data exchanged between the port 4 managed switching element 1925 and 5 port managed switch 1930 element can pass through the tunnel, established between the controlled switching elements 1925 and 1930.
249The tunnel between the two controllable switching elements is not necessary to support the exchange of data between the logical port 1, and the logical port 2 (ie, between the VM 1 and VM 2) as a logical port 1, and the logical port 2 are displayed on the two ports of the same managed 1925 switching element.
250The third step in 1903 further shows that the cluster controller 1910 sends UPCP data specifying the tunnel creation of managed switching element 1925 to control a switching element 1930. In this example, the data UPCP forwarded to the host controller 1915, which will configure UPCP data on PCP-specific data for controlled switching element 1925.
251The fourth stage in 1904 shows that the base controller 1915 sends the data tunnel PCP, which specify the tunnel creation and promotion of data packets to the tunnel. Controlled switching element 1925 creates a tunnel to the controlled switching element 1930 based on data CPCP. More specifically, the controllable switching element 1925 creates the port 7 and establishes a tunnel (e.g., GRE tunnel) to the port 8 managed switching element 1930. The more detailed operations to create a tunnel between two controllable switching elements will be described below.
252FIG. 20 conceptually illustrates a process 2000, which is performed in some embodiments to generate from a data UPCP CPCP data that specify the formation and use of the tunnel between the two controllable switching elements. In some embodiments, process 2000 is performed base controller that communicates with a controllable switching element or a physical controller, which communicates directly with the controlled switching element.
253The process 2000 begins by obtaining data from UPCP PLC controller or physical. In some embodiments, UPCP have different data types. One type of data is a universal command UPCP tunnel flow that determine the formation of the tunnel in a controlled switching element and the use of the tunnel. In some embodiments, universal commands comprise tunnel flow port information, generated in the controlled switching element in the network. This port is the port managed switch element to which the user maps a logical port logic switching element. This port is also a destination port, which is necessary to achieve the tunneled data. Port Information includes (1) the transport zone to which belongs controlled switching element having the port, (2) the type of tunnel, which, in some embodiments, is based on the tunneling protocols (eg, GRE, CAPWAR and so on.) used for the construction of a tunnel to a controllable switching element, which is the port of destination, and (3) the network address (eg, IP address) managed switching element, which is the port of destination (eg, IP address of the VIF, which will function as only one end will be installed tunnel).
254Then, the process 2000 determines (2010) whether the received data stream UPCP universal tunnel command. In some embodiments, data UPCP specify its type, so that the process 2000 can determine the type of data received by the universal plane. If the process 2000 determines (at 2010) that the received data are not the universal command universal tunneling stream, then the process proceeds to 2015 to process data for generating UPCP CPCP forward these data and the generated data to control a switching element which is controlled by the process 2000. The process then 2000 ends.
255If the process 2000 determines (in 2010), that the findings are universal commands UPCP tunnel flow, then the process 2000 proceeds to 2020 to parse the data analysis and information on the destination port. Then the process 2000 determines (2025) whether the controlled switching element that has the destination port in the same transport zone in which is controllable switching element having a source port. Controllable switching element which has a source port, a controllable switching element, which controller controls the base or physical controller, performing the process 2000. In some embodiments, the transport zone comprises a plurality of network stations that can communicate with each other without using the second switching element managed level, such as a group node.
256In some embodiments, the logical controller determines whether the controllable switching element that has the destination port in the same transport zone in which is controllable switching element having a source port. Logic controller takes into account the definition in the preparation of the universal commands tunnel flow to send (via a physical controller) to a base controller that performs the process of 2000. In particular, the universal command tunnel flow will differ contain information to build different tunnels. Examples of these different tunnels are described below after the description of FIG. 21. In these embodiments, the process 2000 skips 2025 and proceeds to 2015.
257If the process 2000 determines (at 2025) that the controlled switching element and a source port controllable switching element to the destination port are not in the same transport zone, the process 2000 proceeds to 2015, described above. Otherwise, the process proceeds to 2030 to adjust the flow of universal commands tunnel and configured to transfer information controlled switching element which has a source port. Setting universal commands tunnel flow will be described in detail below. Then, the process 2000 ends.
258FIG. 21 conceptually illustrates a process 2100, which is executed in some embodiments configured to generate a tunnel flow of commands and command forwarding configured to controllable switching element, so that the controllable switching element can create a tunnel and send data to the destination through this tunnel. In some embodiments, process 2100 is performed controller instance that communicates with a controllable switching element or a physical controller, directly connectable to the controllable switching element. The process 2100 of some embodiments is started when the controller that performs the process 2100 received universal commands tunneling stream held parses information about the destination port, and has determined that the controllable switching element that has the destination port is in the same transport zone that controls the switching element, which is controlled by the controller.
259The process begins with the generation of 2100 (in 2105) commands create a tunnel port. In some embodiments, the process 2100 generates commands to create a tunnel port to a controlled switching element, which is controlled by the controller, based on the information about the port. These commands include, for example, a type of tunnel, which is established and the IP address of the NIC, which is assigned to the end of the tunnel. Port Tunnel managed switching element controlled by the controller, is another end of the tunnel.
260Then, the process 2100 sends (in 2110) generated commands to create the tunnel port on the controlled switching element, which is controlled by the controller. As mentioned above, some basic embodiments of a controller or a physical controller, which is directly connected with a controllable switching element uses two channels for communication with the controllable switching element. One channel is the channel configuration for the exchange of configuration information with the controlled switching element, and the other channel is the control of the switching element (eg, channel. Established using OpenFlow Protocol) to exchange messages and input stream of event data with the controlled switching element. In some embodiments, the process uses a configuration channel for sending the generated commands to create a tunnel port controllable switching element, which controls the controller. Upon receipt of the generated commands controllable switching element creates some embodiments port tunnel in a controlled switching element, and establishes a tunnel between a tunnel port and port managed switching element that has the destination port, using the tunnel protocol tunnel type specified. When the tunnel is created and installed and the port tunnel, the controllable switching element sends some examples of value (e.g., four) tunnel identifier back to the controller instance.
261The process 2100 of some embodiments, then receives (at 2115) the tunnel port identifier value (e.g., "tunnel_port = 4") via the channel configuration. The process then modifies the 2100 streaming input message that is contained in the Universal commands tunnel stream using the received value. This streaming input message when sending to the controlled switching element is the reason that the controlled switching element performs an action. However, being a universal data stream is input message identifies the tunnel port is a universal identifier (eg, tunnel_port), a not a valid port number. For example, the input stream in the received message of universal commands tunnel flow can be "if destination = destination machine's UUID, send to tunnel_port". Process 2100 creates (2120) streaming input message with the value of the tunnel port identifier. In particular, the process 2100 replaces tunnel port identifier to a valid identifier value that identifies the created port. For example, a modified input stream message could look like "if destination = destination machine's UUID, send to 4".
262Then, the process 2100 sends (in 2125) the streaming input message to the controlled switching element. In some embodiments, the process forwards this message to the input stream switching element controlled via a control channel of a switching element (e.g., OpenFlow channel). Controlled switching element will update its table stream input messages using this streaming input message. After that controlled switching element promotes captioned data to the assigned network station through a tunnel data forwarding tunnel on port. Then, the process ends.
263FIG. 22 conceptually illustrated in seven different stages 2201-2207 example of the host controller 2210, which translates the generic commands into the tunnel flow custom command for a controlled switching element 2215 that receives and uses them. Base controller 2210 is similar to the base controller 1800 described above with reference to FIG. 18. However, for ease of discussion, FIG. 22 does not show all the components of the host controller 2210.
264As can be seen, the base controller 2210 comprises a table of input data 2220 and 2225 rules engine output table 2230, which are similar to the input data tables 1820, 1825 and mechanism rules tables of output data 1845. Base controller 2210 controls the controllable switching element 2215. In some embodiments, , between the base controller 2210 and controlled by the switching element 2215 installed two channels in 2235 and 2240. The channel 2235 is designed for the configuration of data exchange (for example, data created by the ports, the current status of ports, queues associated with the controllable switching element, and so on.). Channel 2240 is a channel OpenFlow (OpenFlow control channel), through which, in some embodiments, the input stream is exchanged messages.
265In a first step 2201 shows that the base controller 2210 updates the input data table 2220, using the universal tunnel command stream received from the physical controller (not shown). As shown, the universal command tunnel stream contains 2245 command to create a tunnel and streaming input message 2250. As you can see, the team 2245 contains the type to create the tunnel and the IP addresses of managed switching element, which is the port of destination. Streaming input message 2250 specifies an executable action in terms of the purpose of data that are not specific to managed switching element 2215. The mechanism of rules performs mapping tables for the team in 2245 and streaming input message 2250.
266In the second stage in 2202 shows the results tables display operations performed by rules engine 2225. Team in 2260 is the result of the command 2245. In some embodiments, the team in 2245 and 2260 may be the same, although in other embodiments, they may not be identical. For example, it may be different values in teams in 2245 and 2260, which represent the type of tunnel. Command 2260 among other information that may be included in a command 2260, and contains the IP address of the tunnel type, which must be created. Streaming input message 2250 does not trigger any kind of tables display operation, and thus remains in the tables of input data in 2220.
267In the third stage in 2203 shows that the team in 2260 was transferred to the controlled switching element 2215 through 2235. Managed channel configuration switching element 2215 creates a tunnel port and sets up a tunnel between the controlled switching element 2215 and other controllable switching element, which is the port of destination. In some embodiments, one end of this tunnel is established tunnel port and the other end of the tunnel is a port that is associated with the destination IP address. Controllable switching element 2215 of some embodiments for use tunnel establishment protocol type specified tunnel.
268In the fourth stage in 2204 shows that the controlled switching element 2215 creates a tunnel port ( "port 1" in this example) and the tunnel 2270. At this stage, also shows that the controlled switching element returns the actual value of the tunnel port identifier. In this example, the controlled switching element 2215 transmits this information via OpenFlow channel 2240. The information comes in the table of input data 2220 as input event data. In the fifth stage in 2205 shows that the input data table 2220 updated information from the managed switch element 2215. This update triggers the rules in 2225 to perform display operations tables.
269In the sixth stage in 2206 shows the results tables display operations performed in the previous step 2204. The tables output in 2230 now have an input message stream 2275, which specifies the action for it in terms of the information that is defined for the controlled switching element 2215. In particular, the input stream message 2275 specifies that when the packet destination is the destination port, controls the switching element 2215 should send the packet through the port 1. The seventh step 2207 shows that the streaming input message 2275 was transmitted to the controlled switching element 2215, which will promote the packages using the input stream message 2275.
270It should be noted that the command 2245 and the data exchanged between the host controller 2210 and controlled by the switching element 2215 as shown in FIG. 22 is a conceptual representation of universal commands tunnel stream and custom commands and can not be represented in the actual formats and expressions.
271Moreover, the example in FIG. 22 is described in terms of basic operation of the controller 2210. This example is also applicable to the physical controller some embodiments, which translates the data into data UPCP CPCP for controllable switching elements setpoint controller which is the physical controller.
272FIG. 19 - FIG. 22 illustrates the formation of a tunnel between the two terminal switching elements to support communication between a pair of network stations (e.g., multiple VM), which use two logical port logical switching element. This tunnel is one of the possible uses of the tunnel. In some embodiments, a network management system, possibly many other uses of the tunnel. Examples of the use of the tunnel are: (1) tunnel between the terminal controllable switching element and a multicast node, (2) a tunnel between two controllable switching elements, where one of them is a terminal switching element, and the other provides a service gateway L3 (i.e., with a switching element, which is connected to the router for routing service on the network layer (L3)), and (3) a tunnel between two controllable switching elements, in which one logical port and the other port is connected to a logic service gateway L2.
273Now it will be described the sequence of events to create a tunnel from each of three examples. In the case of a tunnel between the controlled switching element and a group node is first created group, and then expand - controlled switching element. The port managed switch element connected VM. This VM is the first VM, which is connected to a controllable switching element. Then, the VM is associated with logical port logic switching element mapping logical port to port managed switch element. Once mapping logical port to the switching element managed conducted transmit logic controller (e.g., via physical controller (controllers)) universal tunnel command stream controller to the base (or physical controller), which connects the controllable switching element.
274Then, the host controller issues a command to control a switching element in the formation of the tunnel to the group node. Once the tunnel is established, another VM, which thereupon is formed and connected to the controlled switching element, will share the same tunnel for data exchange with a group node, if this new VM associated with the logical port of the same logical switching element. If a new logical unit associated with another logical switch port, the PLC will send the same tunnel flow universal commands that have been transmitted when the first VM has been connected to a controllable switching element. However, universal tunnel flux command will not lead to the formation of a new tunnel to the node group, because, for example, the tunnel has already been established and is operational.
275If the specified tunnel is unidirectional tunnel from the group node set another one-way tunnel. When the logical port, which is connected to the VM first, appears on port managed switch element, the logic controller also sends commands universal tunnel flow to the group node. Based on the universal commands tunnel flow, the base controller, which is connected to the node group, will issue commands to the group node to the controlled formation of a tunnel switching element.
276For the end of the tunnel between the controlled switching element and a controlled switching element that provides service interworking gateway L3, it is assumed that was granted a logical switching element with multiple VM user and the transport node that provides a service gateway firewall L3 realized logical router. To connect the router logic to the logic switching element in a logical switching element creates a fragmented logical port. In some embodiments, the order in which the logical track formation is performed and providing multiple VM, creates differences in tunnel formation. The formation of fragmented logical port is the reason that a logical switching element sends a generic command tunnel flow to the base controllers (or physical controllers), connecting all controllable switching elements that implement the logic switching element (that is, all controllable switching elements, each of which has at least one port, which appears logical port logic switching element). Each base controller of each of the controlled switching element instructs the controlled switching element in the formation of the tunnel to the transport node. Each of the switching elements controlled to form a transport tunnel node, resulting in a same tunnel as the number of controllable switching elements that implement the logical switching element.
277If these tunnels are unidirectional, the transport unit has to create a tunnel to each of the controlled switching elements which performs logical switching element. The logical switching element puts the universal flow tunnel command in the transport unit, when formed, and is connected to a logical router fragmented logical port. Basic controller that connects to the transport hub, instructs the transport hub for education tunnels, and transportation hub forms a tunnel to the controlled switching elements.
278In some embodiments, the tunnel established between the controllable switching elements may be used for communication between any network station connected to one of the controllable switching elements and any network station connected to another controllable switching element, irrespective of whether used if these two logical ports network station of the same logic of the switching element or two different switching elements. This is one of the exemplary cases in which the formation of the tunnel allows different users to control different sets of LDP, sharing switching elements are driven, while being isolated.
279The formation of the tunnel between the two controllable switching elements, in which one of the logical port and the other logical port connected to the service gateway L2, begins when the logical port is attached to the service gateway L2. Attaching leads to the fact that the logical controller sends tunnel flow universal commands to all managed switching elements that implement other logic ports of the logical switching element. Based on these commands, tunnels are established between these switching elements controlled to a controlled switching element, which implements logical port connected to the service gateway L2.
III. ELECTRONIC SYSTEM
281Many of the above features and applications are implemented as software processes which is specified as a set of instructions recorded on a computer-readable recording medium (also referred to as a storage medium readable by the computer). When these commands are executed by one or more processing units (for example, one or more processors, processor cores and other processing units), they provide the performance of these processing blocks the actions specified in the commands. Examples of the machine readable medium include, but are not limited to, CD-ROM, flash memory, RAM chips, hard drives, EEPROM and so forth. The carrier computer-readable media does not include the wave and electronic signals transmitted wirelessly or via wired connections.
282In this specification, the term "program" means here that includes embedded software residing in the read-only memory or applications stored on a magnetic medium which can be read into the processor memory for processing. Also, in some embodiments, many of the program of the invention may be implemented as parts of a larger program, while allowing the software to distinguish the invention. In some embodiments, many software of the invention may also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here, within the scope of the invention. In some embodiments, the program implemented in software, when installed for use on one or more electronic systems, determine one or more specific hardware implementations which perform operations and execute the program implemented in software.
283FIG. 23 conceptually illustrates an electronic system 2300 which implements some embodiments of the invention. The electronic system 2300 may be used to control the execution of any application or operating system virtualization described above. The electronic system 2300 may be a computer (for example, a personal computer, a tablet computer, a server computer, a mainframe computer, the client terminal computer and so on.), Telephone, digital assistant, or any other type of electronic device. Such an electronic system comprising different types of media, computer-readable, and interfaces for various other types of vehicles, computer readable. Electronic system 2300 includes a bus 2305, a processor (s) 2310, a system memory 2325, read-only memory 2330, nonvolatile memory 2335, the device 2340 and the water output device 2345.
284Bus 2305 represents the entire system together, and the periphery of the chipset bus connecting together various internal devices of the electronic system 2300. For instance, the bus 2305 connects the processor (s) 2310 with a permanent storage device 2330, a system memory 2325 and nonvolatile memory 2335.
285From these various memory units 2310 processor fetches instructions to execute and data to process in order to execute the processes of the invention. In various embodiments, the processor can be a single processor or multi-core processor.
286Read only memory (ROM) 2330 stores the permanent data and commands that are necessary for the processor 2310 and other modules of the electronic system. The nonvolatile memory device 2335, on the other hand, is read-write memory device. This device does not depend on the power supply and stores instructions and data even when the electronic system is disconnected from power supply 2300. Some embodiments of the invention, the nonvolatile memory device 2335 uses a high capacity storage device (such as a magnetic or optical disk and its corresponding disk drives).
287Other embodiments as a non-volatile memory using removable storage devices (such as a floppy disk, flash memory and so forth.). Like the non-volatile memory device 2335, the system memory 2325 is a memory reading and writing device. However, unlike storage device 2335, the system memory is a volatile memory read and write memory such as random access. Some of the commands and data which are needed during the execution of the processor are stored in the system memory. In some embodiments, the processes of the invention are stored in the system memory 2325, nonvolatile memory 2335 and / or the permanent storage device 2330. From these various memory units 2310 devices processor fetches instructions to execute and data to process in order to execute the processes of some examples implementation.
288Bus 2305 is also connected to the input and output devices 2340 and 2345. The input devices allow the user to communicate information and select commands to the electronic system. Devices water 2340 contain alphanumeric keyboard and positioning devices (also called "Cursor Devices"). O devices 2345 reproduced image generated by the electronic system. Output devices include printers and display which displays on a CRT or liquid crystal displays. Some embodiments comprise a device such as a touch panel that functions as an input device and an output device.
289Finally, as shown in FIG. 23, bus 2305 also couples the electronic system 2300 to a network 2365 through a network adapter (not shown). Similarly, the computer may be part of a network of computers (such as a local area network ( "LAN"), wide area network ( "WAN") or an intranet, or a network of networks such as the Internet. Any or all may be used in connection with this invention components of the electronic system in 2300.
290Some embodiments comprise electronic components such as microprocessors, memory and storage devices that store computer program instructions in a carrier readable by a network station or computer-readable (alternatively referred to as a recording medium, the computer readable medium readable network station, or a recording medium, readable network station). Some examples of such computer-readable media are RAM, ROM, compact disc read only (CD-ROM), rewritable compact discs (CD-R), repeatedly rewritable compact discs (CD-RW), digital video read-only (e.g. DVD-ROM, dual-layer DVD-ROM), a variety of recordable / rewritable DVD (e.g., DVD-RAM, DVD-RW, DVD + RW and so forth.), flash memory (e.g., SD cards, mini-SD cards, micro card -SD, etc.), magnetic, and / or solid-state hard drives, permanent and rewritable Blu-Ray<sup>®</sup>, Ultra-high density optical discs and any other optical or magnetic media, and floppy disks. Readable medium of a computer, can store a computer program that is executed by at least one processing unit and contains a set of commands to perform various operations. Examples of computer programs, or computer codes are machine code, such as code generated by the compiler, and files containing high-level code, which is executed by a computer, an electronic component or a microprocessor using an interpreter.
291Although the discussion refers conducted to a microprocessor or multi-core processors which execute software, some embodiments are implemented by one or more integrated circuits, however a problem-oriented integrated circuit (ASIC) or programmable gate arrays (FPGA). In some embodiments, the integrated circuits execute such commands are stored on the schemes themselves.
292As used in this specification, all the terms "computer," "server," "processor" and "storage device" refer to electronic devices or devices with a different technology. These terms exclude people or groups of people. In order to describe the terms display or reproduction means for playing electronic device. As used herein, the terms "Wednesday, a computer-readable", "machine readable medium" or "medium readable by a network station" completely limited tangible, physical objects that store information in a form that allows the computer to read. These terms exclude any wireless signals, signals fed through the wires, and any other signals ephemeral.
293While the invention has been described with reference to numerous specific details, any ordinary skill in the art will understand that the invention may be embodied in other specific forms without departing from the scope of the invention. Furthermore, some drawings (including FIG. 20 and FIG. 21) conceptually illustrate processes. Certain operations of these processes can not be performed accurately described and shown in their order. These certain operations can not be performed in one continuous sequence of operations, and a variety of specific operations can be performed in various embodiments. Furthermore, the process can be implemented using several sub-processes, or as part of a large macroprocess.
294Also, the above described several embodiments in which the user provides LDP aggregate data in terms of the LCP. However, in other embodiments, the user may provide LDP aggregate data in terms of LFP. Moreover, the above has been described several embodiments in which the controller provides a copy of the data switching element for PCP to control this switching element. However, in other embodiments, the controller may provide a copy of the data switching element promoting physical data plane. In such embodiments, the relational database data structure will store the data of physical plane data promotion, and application virtualization will generate such data.
295In addition, several examples given user defines one or more logical switching elements. In some embodiments, the user along with the configurations of the logical switching elements may provide the physical configuration of switching elements. Also, even though the described instances of controllers, which in some embodiments individually formed by multiple application layer executing on a computing device, one of ordinary skill in this area agree art that such copies are formed specialized computing devices or other machinery in some embodiments that perform one or more layers of operations.
296Also, several examples described above indicate that LDPS associated with one user. Any one of ordinary skill in this art will agree that in this case, in some embodiments, the user may be associated with one or more sets of LDP. That is, between LDPS and the user is not always one correspondence, since the user can be associated with many sets of the LDP. Thus, anyone of ordinary skill in the art will understand that the invention is not limited to the abovementioned illustrative details.
Contents7
25 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| RU2720585C1 | Cited by | Russian Federation | Search report |
| US10615985B2 | Cited by | United States of America | Applicant |
| US10771259B2 | Cited by | United States of America | Applicant |
| US10708066B2 | Cited by | United States of America | Applicant |
| US11215377B2 | Cited by | United States of America | Applicant |
| US10791107B2 | Cited by | United States of America | Applicant |
| RU2716558C1 | Cited by | Russian Federation | Search report |
| US10630672B2 | Cited by | United States of America | Applicant |
| US10649859B2 | Cited by | United States of America | Applicant |
| WO2010103909A1 | Cites | World Intellectual Property Organization (WIPO) | – |
| US20060026225A1 | Cites | United States of America | – |
| US20060092976A1 | Cites | United States of America | – |
| EP1271296A2 | Cites | European Patent Office (EPO) | – |
| RU2338327C2 | Cites | Russian Federation | – |
131 members in 11 offices
Priority claims54
| Document | Office | Kind | Date |
|---|---|---|---|
| 201161551425 | United States of America | P | |
| 201161551425 | United States of America | P | |
| 201161551427 | United States of America | P | |
| 201161551427 | United States of America | P | |
| 61551425 | United States of America | – | |
| 61551427 | United States of America | – | |
| 201161577085 | United States of America | P | |
| 201161577085 | United States of America | P | |
| 61577085 | United States of America | – | |
| 201261595027 | United States of America | P | |
| 201261595027 | United States of America | P | |
| 61595027 | United States of America | – | |
| 201261599941 | United States of America | P | |
| 201261599941 | United States of America | P | |
| 61599941 | United States of America | – | |
| 201261610135 | United States of America | P | |
| 201261610135 | United States of America | P | |
| 61610135 | United States of America | – | |
| 201261647516 | United States of America | P | |
| 201261647516 | United States of America | P | |
| 61647516 | United States of America | – | |
| 13589077 | United States of America | – | |
| 13589078 | United States of America | – | |
| 201213589077 | United States of America | A | |
| 201213589077 | United States of America | A | |
| 201213589078 | United States of America | A | |
| 201213589078 | United States of America | A | |
| 201261684693 | United States of America | P | |
| 201261684693 | United States of America | P | |
| 61684693 | United States of America | – | |
| 2012062005 | United States of America | W | |
| 2012062005 | United States of America | W | |
| 13589077 | – | – | – |
| 13589078 | – | – | – |
| 61551425 | – | – | – |
| 61551427 | – | – | – |
| 61577085 | – | – | – |
| 61595027 | – | – | – |
| 61599941 | – | – | – |
| 61610135 | – | – | – |
| 61647516 | – | – | – |
| 61684693 | – | – | – |
| US2012062005 | – | – | – |
| US201161551425P | – | – | – |
| US201161551427P | – | – | – |
| US201161577085P | – | – | – |
| US201213589077 | – | – | – |
| US201213589078 | – | – | – |
| US201261595027P | – | – | – |
| US201261599941P | – | – | – |
| US201261610135P | – | – | – |
| US201261647516P | – | – | – |
| US201261684693P | – | – | – |
| WO2012US62005 | – | – | – |
Members131
| Document | Office | Kind | |
|---|---|---|---|
| US2013103817A1 | United States of America | A1 | |
| US2013103818A1 | United States of America | A1 | |
| CA2849930A1 | Canada | A1 | |
| CA2965958A1 | Canada | A1 | |
| CA3047447A1 | Canada | A1 | |
| WO2013063329A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013063330A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013063332A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2013114466A1 | United States of America | A1 | |
| US2013117428A1 | United States of America | A1 | |
| US2013117429A1 | United States of America | A1 | |
| US2013208623A1 | United States of America | A1 | |
| US2013211549A1 | United States of America | A1 | |
| US2013212148A1 | United States of America | A1 | |
| US2013212235A1 | United States of America | A1 | |
| US2013212243A1 | United States of America | A1 | |
| US2013212244A1 | United States of America | A1 | |
| US2013212245A1 | United States of America | A1 | |
| US2013212246A1 | United States of America | A1 | |
| US2013219037A1 | United States of America | A1 | |
| US2013219078A1 | United States of America | A1 | |
| WO2013158917A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2013158918A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013158920A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2013158918A4 | World Intellectual Property Organization (WIPO) | A4 | |
| AU2012328697A1 | Australia | A1 | |
| AU2012328699A1 | Australia | A1 | |
| AU2013249151A1 | Australia | A1 | |
| AU2013249154A1 | Australia | A1 | |
| IL231910A0 | Israel | A0 | |
| IL231910D0 | Israel | D0 | |
| KR20140066781A | Republic of Korea | A | |
| WO2013158917A3 | World Intellectual Property Organization (WIPO) | A3 | |
| CN103891209A | China | A | |
| EP2748706A1 | European Patent Office (EPO) | A1 | |
| EP2748977A1 | European Patent Office (EPO) | A1 | |
| EP2748990A1 | European Patent Office (EPO) | A1 | |
| EP2748993A2 | European Patent Office (EPO) | A2 | |
| EP2748994A1 | European Patent Office (EPO) | A1 | |
| US2014247753A1 | United States of America | A1 | |
| AU2013249152A1 | Australia | A1 | |
| CN104081734A | China | A | |
| CN104170334A | China | A | |
| US2014348161A1 | United States of America | A1 | |
| US2014351432A1 | United States of America | A1 | |
| JP2014535213A | Japan | A | |
| JP2015501109A | Japan | A | |
| JP2015507448A | Japan | A | |
| IN2272CHN2014A | India | A | |
| EP2748977A4 | European Patent Office (EPO) | A4 | |
| EP2748990A4 | European Patent Office (EPO) | A4 | |
| AU2012328697B2 | Australia | B2 | |
| AU2012328697B9 | Australia | B9 | |
| EP2748993B1 | European Patent Office (EPO) | B1 | |
| US9137107B2 | United States of America | B2 | |
| US9154433B2 | United States of America | B2 | |
| RU2014115498A | Russian Federation | A | |
| US9178833B2 | United States of America | B2 | |
| US9203701B2 | United States of America | B2 | |
| AU2013249151B2 | Australia | B2 | |
| AU2013249154B2 | Australia | B2 | |
| AU2015258164A1 | Australia | A1 | |
| EP2955886A1 | European Patent Office (EPO) | A1 | |
| JP5833246B2 | Japan | B2 | |
| US9231882B2 | United States of America | B2 | |
| US9246833B2 | United States of America | B2 | |
| JP5849162B2 | Japan | B2 | |
| US9253109B2 | United States of America | B2 | |
| JP5883946B2 | Japan | B2 | |
| US9288104B2 | United States of America | B2 | |
| US9300593B2 | United States of America | B2 | |
| AU2012328699B2 | Australia | B2 | |
| US9306843B2 | United States of America | B2 | |
| US9306864B2 | United States of America | B2 | |
| US9319336B2 | United States of America | B2 | |
| US9319337B2 | United States of America | B2 | |
| US9319338B2 | United States of America | B2 | |
| AU2013249152B2 | Australia | B2 | |
| JP2016067008A | Japan | A | |
| US9331937B2 | United States of America | B2 | |
| KR101615691B1 | Republic of Korea | B1 | |
| JP2016076959A | Japan | A | |
| KR20160052744A | Republic of Korea | A | |
| US2016197774A1 | United States of America | A1 | |
| US9407566B2 | United States of America | B2 | |
| RU2595540C2This record | Russian Federation | C2 | |
| AU2016208326A1 | Australia | A1 | |
| US2016308785A1 | United States of America | A1 | |
| KR101692890B1 | Republic of Korea | B1 | |
| US9602421B2 | United States of America | B2 | |
| AU2015258164B2 | Australia | B2 | |
| RU2595540C9 | Russian Federation | C9 | |
| CN103891209B | China | B | |
| JP6147319B2 | Japan | B2 | |
| CA2849930C | Canada | C | |
| JP6162194B2 | Japan | B2 | |
| CN106971232A | China | A | |
| AU2017204764A1 | Australia | A1 | |
| CN107104894A | China | A | |
| IL231910A | Israel | A |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Reissue of patent specificationTH4A | TH4A | |
| Correction to the publication in the bulletin (patent)AMENDMENT TO CHAPTER -FG4A - IN JOURNAL: 24-2016 FOR TAG: (54)TK4A | TK4A |
Numbers
- Publication
- 0002595540
- Publication, DOCDB
- 2595540
- Publication, EPODOC
- RU2595540
- Application
- 201411549808
- Application, DOCDB
- 2014115498
- Application, EPODOC
- RU20140115498
Titles2
- Russian
- БАЗОВЫЕ КОНТРОЛЛЕРЫ ДЛЯ ПРЕОБРАЗОВАНИЯ УНИВЕРСАЛЬНЫХ ПОТОКОВ
- English
- BASIC CONTROLLERS FOR CONVERSION OF UNIVERSAL STREAMS
Classification
- CPC, 12
- G06Q10/00
- H04L45/64
- H04L45/02
- G06F15/177
- H04L41/02
- H04L41/0226
- H04L41/042
- H04L41/50
- H04L45/38
- H04L45/42
- H04L45/66
- H04L47/50
- IPC, 3
- H04L12 28
- H04L45 42
- H04L45 02