The invention relates generally to data transfer networks. A data transfer network can be, for example but not necessarily, a software-defined network “SDN”. More particularly, the invention relates to a network element for a data transfer network. Furthermore, the invention relates to a method and to a computer program for configuring a network element of a data transfer network.
A network element of a data transfer network may have a modular architecture so that the network element comprises functional entities capable of transferring data between each other. The network element can be, for example, an Internet Protocol “IP” router, a multiprotocol label switching “MPLS” node, a packet optical switch, and/or an Ethernet switch. Each functional entity can be, for example, a line interface module of the network element or a part of a line interface module such as an egress-side of the line interface module or an ingress-side of the line interface module. On the other hand, it is also possible that a functional entity includes two or more separate physical entities. For example, a functional entity may comprise e.g. a line interface module and e.g. a switch fabric module. Furthermore, it is also possible that two functional entities share a same physical entity, e.g. a first functional entity may comprise a first line interface module and a switch fabric module, and a second functional entity may comprise a second line interface module and the switch fabric module. Yet furthermore it is also possible that a functional entity is a process implemented with software and run by hardware that can be adapted to run also other software implemented processes.
In many network elements, each functional entity is adapted to construct its own configuration system with the aid of which the functional entity under consideration is able to co-operate with the other functional entities of the network element so that the whole network element is capable of operating as a part of the data transfer network. The arrangement of the kind described above is, however, not free from challenges. One of the challenges is related to the need to keep the configuration systems of different functional entities congruent with each other in all situations because non-congruence would cause severe functional troubles. Another challenge is related to the data transfer that is needed between the functional entities when the functional entities construct and/or update their configuration systems. In network elements comprising many functional entities, the amount of the required data transfer may represent a significant workload.
The following presents a simplified summary in order to provide a basic understanding of some aspects of various invention embodiments. The summary is not an extensive overview of the invention. It is neither intended to identify key or critical elements of the invention nor to delineate the scope of the invention. The following summary merely presents some concepts of the invention in a simplified form as a prelude to a more detailed description of exemplifying embodiments of the invention.
In accordance with the invention, there is provided a new method for configuring a network element of a data transfer network, where the network element comprises functional entities each being adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities of the network element so that the network element is capable of operating as a part of the data transfer network.
A method according to the invention comprises:
The above-mentioned database that is commonly used by the functional entities of the network element facilitates maintaining the congruence between the functional entities. In addition to data related to the configuration entries, the database can be used for delivering other information between the functional entities. The other information may comprise for example messages related to negotiations between the functional entities. Furthermore, the database may contain data expressing allocation of data processing resources of the network element for different usages and/or applications.
In accordance with the invention, there is provided also a new network element for a data transfer network. The network element can be, for example, an Internet Protocol “IP” router, a multiprotocol label switching “MPLS” switch, a packet optical switch, and/or an Ethernet switch. A network element according to the invention comprises functional entities each being adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities in a way that the network element is capable of operating as a part of the data transfer network. The network element further comprises memory for maintaining a database that is writeable and readable by each of the functional entities. The functional entities of the network element are such that an exemplifying configuration entry related to one or more of the functional entities is composed of data items written by many functional entities to the database, and thereafter the relevant one or more functional entities can read the configuration entry from the database and implement the configuration entry into the one or more configuration systems of these one or more functional entities.
In accordance with the invention, there is provided also a new computer program for configuring a network element of a data transfer network, where the network element comprises functional entities each being adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities in a way that the network element is capable of operating as a part of the data transfer network. A computer program according to the invention comprises computer executable instructions for:
In accordance with the invention, there is provided also a new computer program product. The computer program product comprises a non-volatile computer readable medium, e.g. a compact disc “CD”, encoded with a computer program according to the invention.
The above-mentioned data transfer network can be, for example but not necessarily, a software-defined network “SDN” where the control plane is separated from the data plane so that the control plane is implemented in one or more controllers that can be separate from data-forwarding network elements of the software-defined network and the data plane is implemented in the data-forwarding network elements.
A number of exemplifying and non-limiting embodiments of the invention are described in accompanied dependent claims.
Various exemplifying and non-limiting embodiments of the invention both as to constructions and to methods of operation, together with additional objects and advantages thereof, will be best understood from the following description of specific exemplifying embodiments when read in connection with the accompanying drawings.
The verbs “to comprise” and “to include” are used in this document as open limitations that neither exclude nor require the existence of also un-recited features. The features recited in the accompanied dependent claims are mutually freely combinable unless otherwise explicitly stated. Furthermore, it is to be understood that the use of “a” or “an”, i.e. a singular form, throughout this document does not exclude a plurality.
The exemplifying and non-limiting embodiments of the invention and their advantages are explained in greater detail below with reference to the accompanying drawings, in which:
In this exemplifying case where the data transfer network 100 is a software-defined network “SDN”, the controller 105 is adapted to send, to at least one of the network elements 101-104, configuration data that comprises data items for configuring the network element under consideration to manage data in a desired manner. The data that is managed by the network elements can be in a form of data frames such as for example Internet Protocol IP-packets, MPLS-labeled frames, Ethernet frames, or the data can be in some other form accordant with one or more data transfer protocols being used. The controller 105 can be adapted to deliver the configuration data to the network element under consideration in accordance with the OpenFlow or some other suitable protocol. More details about the above-mentioned OpenFlow can be found from “OpenFlow Switch Specification” managed by the Open Networking Foundation “ONF”. The configuration data may define for example a system of interconnected look-up tables defining actions to be carried out in different operational situations. An action defined by the configuration data may comprise for example: recording data into memory, modifying the data, selecting one or more of egress ports of the network element and forwarding the data and its possible duplicates to the selected one or more egress ports, selecting one or more look-up tables of the system of interconnected look-up tables and executing one or more look-ups from the selected look-up tables, performing arithmetic operations, branching operations, performing logical operations, reading metadata associated with the data being managed, writing metadata associated with the data, modifying metadata associated with the data, discarding the data, and/or duplicating the data.
At least one of the network elements 101-104 is assumed have a modular architecture so that the network element under consideration comprises functional entities capable of transferring data between each other. Each functional entity can be, for example, a line interface module of the network element or a part of a line interface module such as an egress-side of the line interface module or an ingress-side of the line interface module. On the other hand, it is also possible that a functional entity includes two or more separate physical entities. For example, a functional entity may comprise e.g. a line interface module and e.g. a switch fabric module. Furthermore, it is also possible that two functional entities share a same physical entity, e.g. a first functional entity may comprise a first line interface module and a switch fabric module, and a second functional entity may comprise a second line interface module and the switch fabric module. Furthermore it is also possible that a functional entity is a process implemented with software and run by hardware that can be adapted to run also other software implemented processes.
Without limiting the generality and merely for illustrative purposes, we consider the operation of the network element 101 which is assumed to have a modular architecture of the kind described above. Each of the functional entities of the network element 101 is adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities in a way that the network element is capable of operating as a part of the data transfer network 100. In the exemplifying case where the data transfer network 100 is a software-defined network “SDN”, one or more of the entity-specific configuration systems are at least partly based on the configuration data received from the controller 105. It is naturally also possible that the network element 101 comprises one or more such functional entities which are not configurable with the said configuration data received from the controller 105. The network element 101 comprises memory for maintaining a database that is writeable and readable by the functional entities of the network element. The functional entities are such that an exemplifying configuration entry related to one or more of the functional entities is composed of data items written by many functional entities to the database, and thereafter the relevant one or more functional entities can read the configuration entry from the database and implement the configuration entry into the one or more configuration systems of these one or more functional entities. For example, a functional entity may add a configuration entry to the database or update an existing configuration entry written to the database, wherein the added or updated configuration entry includes a request for another functional entity to act upon the added or updated configuration entry. The above-mentioned database that is commonly used by the functional entities of the network element 101 facilitates maintaining the congruence between the functional entities. In addition to the data related to the above-mentioned configuration entries, the database may contain also other data related to the configuration of the network element. For example, the database may contain data items each indicating whether a data entity belonging to a predetermined pool of data entities is free or reserved. The data entity can be for example an identifier which relates to a given multicast group and which is associated, in the data processing carried out by the network element, with data belonging to the multicast group under consideration. In addition to data related to the configuration of the network element, the database can be used for delivering other information between the functional entities. The other information may comprise for example messages related to negotiations between the functional entities. A negotiation may concern for example one or more data formats to be used when writing data to the database. Furthermore, the database may contain data that expresses allocation of data processing resources of the network element for different usages and/or applications and/or functional entities. For example, the database may contain a data item indicating whether a particular one of the functional entities is allowed to use e.g. a computing unit of the network element.
Each of the functional entities 221-226 is adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities so that the network element is capable of co-operating with the data transfer network 220. The network element comprises memory 229 for maintaining a database that is writeable and readable by each of the functional entities 221-226. Without limiting the generality and merely for illustrative purposes, we consider the operation of a first one of the functional entities that can be for example the functional entity 221 and a second one of the functional entities that can be for example the functional entity 223. In an exemplifying situation, the functional entity 221 is adapted to write, to the database, a first part of an exemplifying configuration entry that relates to the configuration system of the functional entity 221, and the functional entity 223 is adapted to write, to the database, a second part of the said configuration entry. Hence, the configuration entry under consideration is composed of parts written by the functional entities 221 and 223. After the configuration entry has been made ready, the functional entity 221 reads the configuration entry from the database and implements the configuration entry into the configuration system of the functional entity 221.
The first part of the above-mentioned configuration entry may comprise for example a first data item expressing that when arrived data contains control data C_1, the egress port via which the data is to be forwarded is E_port_1. This first data item may have been derived from a routing table or it can be a part of other configuration data received from the data transfer network 220. The functional entity 221 writes this first data item to the database. For the sake of illustration, we assume that the E_port_1 is one of the egress ports of the functional entity 223. After the functional entity 223 has noticed, or has been notified about, the new first data item written to the database, the functional entity 223 can see that the new first data item relates to one of its egress ports, i.e. to the egress port E_port_1. The second part of the above-mentioned configuration entry may comprise for example a second data item which comprises an identifier F_ID of the functional entity 223 and a third data item which comprises an identifier EP_ID of the egress port E_Port_1. The functional entity 223 writes these second and third data items to the database, and, as a corollary, the configuration entry is ready. Thereafter, the functional entity 221 reads the configuration entry from the database and implements the configuration entry into the configuration system of the functional entity 221. When arrived data contains the above mentioned control data C_1, the functional entity 221 associates the identifier F_ID and the identifier EP_ID to the data and transmits the data to the functional entity 226. On the basis of the identifier F_ID, the functional entity 226 forwards the data to the functional entity 223. On the basis of the identifier EP_ID, the functional entity 223 forwards the data to the egress port E_Port_1.
For another example, a configuration entry may comprise a first data item expressing that when arrived data contains control data C_2, the data is to be forwarded to egress ports E_port_1, E_port_3, and E_port_6, i.e. a multicast case is under consideration. The functional entity 221 writes this first data item to the database. For the sake of illustration, we assume that the E_port_1 is one of the egress ports of the functional entity 223, the E_port_3 is one of the egress ports of the functional entity 222, and the E_port_6 is one of the egress ports of the functional entity 225. After the functional entity 226 has noticed, or has been notified about, the new first data item which expresses many egress ports, the functional entity 226 allocates, for this multicast case, a multicast group identifier MC_ID which is advantageously unique within the network element 201. The functional entity 226 writes this multicast group identifier MC_ID to the database. After the functional entities 222, 223 and 225 have noticed, or have been notified about, the new first data item and the multicast group identifier written to the database, each of the functional entities 222, 223 and 225 can see that the new first data item relates to one of its egress ports. Each of the functional entities 222, 223 and 225 writes, to the database, an identifier of the functional entity under consideration and an identifier of the relevant egress port of the functional entity under consideration. As a corollary, the configuration entry is ready. Thereafter, the functional entity 221 reads the configuration entry from the database and implements the configuration entry into the configuration system of the functional entity 221, and the functional entity 226 reads the configuration entry from the database and implements the configuration entry into the configuration system of the functional entity 226. When arrived data contains the above mentioned control data C_2, the functional entity 221 associates the identifier MC_ID to the data and transmits the data to the functional entity 226. On the basis of the identifier MC_ID, the functional entity 226 forwards copies of the data to the functional entities 222, 223 and 225 so that the copy forwarded to the functional entity 222 is associated with the identifier of the relevant egress port of the functional entity 222, the copy forwarded to the functional entity 223 is associated with the identifier of the relevant egress port of the functional entity 223, and the copy forwarded to the functional entity 225 is associated with the identifier of the relevant egress port of the functional entity 225. On the basis of the identifier of the relevant egress port, each of the functional entities 222, 223, and 225 forwards the data out from the network element 201.
In addition to data related to the configuration of the network element 201, the database can be used for delivering other information between the functional entities 221-226. The other information may comprise for example messages related to negotiations between the functional entities. Furthermore, the database may contain data that expresses allocation of data processing resources of the network element for different usages and/or applications and/or functional entities. For example, the database may contain a data item indicating whether a particular one of the functional entities 221-226 is allowed to use e.g. a computing unit 230 of the network element.
In a network element according to an exemplifying embodiment of the invention, at least one of the functional entities 221-226 is adapted to transmit, to one or more other functional entities, a notice in response to a situation in which the first mentioned functional entity has added, to the database, a new configuration entry which relates to the one or more other functional entities or changed an existing configuration entry which relates to the one or more other functional entities. Furthermore, each of the functional entities can be adapted to periodically read at least a part of the database so as to detect changes in configuration entries related to the functional entity under consideration.
In a network element according to an exemplifying embodiment of the invention, at least one of the functional entities 221-226 is adapted to treat a set of changes in one or more configuration entries related to the functional entity under consideration as a single transaction so that each of the changes is taken into use in the configuration system of the functional entity only after the whole set of changes has been implemented into the one or more configuration entries.
Each of the functional entities 221-226 may comprise one or more processor circuits, each of which can be a programmable processor circuit provided with appropriate software, a dedicated hardware processor such as, for example, an application specific integrated circuit “ASIC”, or a factory configurable hardware processor such as, for example, a field programmable gate array “FPGA”. Furthermore, it is also possible that two functional entities use a same hardware resource. For example, the functional entities 221 and 222 may use a same network processor “NP”.
In a method according an exemplifying embodiment of the invention, the second one of the functional entities transmits, to the first one of the functional entities, a notice in response to a situation in which the one of the configuration entries is changed by the second one of the functional entities.
In a method according an exemplifying embodiment of the invention, the first one of the functional entities periodically reads at least a part of the database so as to detect changes in configuration entries related to the first one of the functional entities.
In a method according an exemplifying embodiment of the invention, the first one of the functional entities treats a set of changes in one or more of the configuration entries as a single transaction so that each of the changes is taken into use in the configuration system of the first one of the functional entities only after the whole set of changes has been implemented into the one or more of the configuration entries.
In a method according an exemplifying embodiment of the invention, the first one of the functional entities writes, to the database, a message directed to the second one of the functional entities, and the second one of the functional entities reads the message from the database.
In a method according an exemplifying embodiment of the invention, the database is adapted to contain data that expresses allocation of data processing resources of the network element for tasks to be carried out by the functional entities.
In a method according an exemplifying embodiment of the invention, the network element is at least one of the following: an Internet Protocol IP router, a MultiProtocol Label Switching MPLS switch, a packet optical switch, an Ethernet switch.
A computer program according to an exemplifying embodiment of the invention for configuring a network element of a data transfer network comprises computer executable instructions for controlling a programmable processing system to carry out a method according to any of the above-described exemplifying embodiments of the invention.
A computer program according to an exemplifying embodiment of the invention comprises software modules for configuring a network element of a data transfer network. The network element comprises functional entities each being adapted to maintain an entity-specific configuration system which comprises configuration entries with the aid of which the functional entity under consideration is able to co-operate with the other functional entities in a way that the network element is capable of operating as a part of the data transfer network. The software modules comprise computer executable instructions for:
The software modules can be e.g. subroutines or functions implemented with a suitable programming language and with a compiler suitable for the programming language and the programmable processing system.
A computer program product according to an exemplifying embodiment of the invention comprises a computer readable medium, e.g. a compact disc “CD”, encoded with a computer program according to an exemplifying embodiment of invention.
A signal according to an exemplifying embodiment of the invention is encoded to carry information defining a computer program according to an exemplifying embodiment of invention.
The specific examples provided in the description given above should not be construed as limiting the scope and/or the applicability of the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
20136268 | Dec 2013 | FI | national |