The present invention relates to a plugin generation device, a controller, a plugin generation method, and a plugin generation program.
Software-defined networking (SDN) is a concept that enables flexible virtualization of networks. This allows a service provider to procure adequate network resources as needed from a network provider. An SDN controller is a device that receives an instruction from a service provider application, and controls a physical network device of the network provider.
A northbound interface (NBI) in the SDN controller is a service model responsible for the interface with the application.
A southbound interface (SBI) in the SDN controller is a device model responsible for the interface with the network device.
With this arrangement, the application transmits a control command for a network device to the service model, and the network device receives the control command from the device model. The control command is an operation for inputting a config (network device settings information), for example. Patent Literature 1 describes how a config with existing settings is migrated to another device.
As a development environment (framework) for such an SDN controller, model-driven frameworks like the following exist.
These frameworks make development easier by accepting a data model defined in a data model language such as YANG as input, and outputting a portion (a service, a datastore) of the SDN controller.
Patent Literature 1: Japanese Patent Laid-Open No. 2018-136649
Non-Patent Literature 1: LF Projects, LLC, “OpenDaylight”, [online], [retrieved Jun. 13, 2019], Internet <URL: https://www.opendaylight.org/>
Non-Patent Literature 2: The ONOS Project, “ONOS is building a better network”, [online], [retrieved Jun. 13, 2019], Internet <URL: https://onosproject.org/>
Non-Patent Literature 3: Cisco Systems, Inc., “Cisco Network Services Orchestrator 4.7”, [online], Jun. 14, 2018 [retrieved Jun. 13, 2019], Internet <URL: https://www.cisco.com/c/ja_jp/support/cloud-systems-management/network-services-orchestrator-4-7/model.html>
In the frameworks of the related art described above, the service framework in the SDN controller is generated automatically, but a developer needs to develop the internal processing logic separately as a plugin. The processing logic written in a plugin defines a mapping between the service model and the device model, such as from which service model to which device model the config is input. This mapping between models is an important step in the process of developing an SDN app. Note that some operations of inputting a config do not include complex logic such as setting a loopback address, while others include complex logic for traffic engineering (TE) such as granting an exclusive band and a delay budget to a specific flow as a policy, for example.
A plugin B of a service B embodying “NBI B” and a plugin C of a service C embodying “NBI C” relay instructions from a datastore C to the device model “SBI C” as the second mapping.
Consequently, the developer needs to prepare 20 mapping definition files individually, and even if the processing logic of each one is simple, the increase in the number of mappings itself is a heavy burden. Particularly, in the case of constructing a multi-vendor system, the device models of a variety of vendors need to be handled individually, and the number of mappings also increases.
Note that although the framework of the related art assists with the generation of service models and device models, assistance for reducing the burden of the mappings between models is not provided. For this reason, the developer feels a heavy burden in the step of developing the mappings between models.
Accordingly, a major issue addressed by the present invention is reducing the burden of developing mappings between services and devices when a plurality of services control a plurality of network devices.
To address the issue, a plugin generation device of the present invention has the following features. The present invention includes: a mapping loading unit that loads, into a controller that transmits instruction information with respect to a network device from a service model that receives the instruction information to a device model that notifies the network device of the received instruction information, first mapping information between the service model and a common model and second mapping information between the common model and the device model as information for mapping the service model and the device model, respectively;
a config loading unit that loads preconditions for generating a plugin as config information;
a plugin generation unit that generates a plugin to be incorporated into the controller on the basis of the first mapping information, the second mapping information, and the config information; and
a plugin output unit that outputs the created plugin to the controller, and thereby causes the controller to execute a process of transmitting the instruction information according to the first mapping information and the second mapping information.
According to the present invention, it is possible to reduce the burden of developing mappings between services and devices when a plurality of services control a plurality of network devices.
Hereinafter, an embodiment of the present invention will be described in detail and with reference to the drawings.
The plugin generation device 10 includes a mapping loading unit 11, a config loading unit 12, a plugin generation unit 13, and a plugin output unit 14. The mapping loading unit 11 loads a mapping definition file containing information about mappings between models (for details, see
The config loading unit 12 loads config information indicating common preconditions for generating a plugin from a config file, and transmits the loaded config information to the plugin generation unit 13. In the config information, the following information is stated as the preconditions, for example.
The plugin output unit 14 converts the generated plugin to a format specified by the config, and outputs to a controller 20 (
The plugin generation device 10 is configured as a computer 900 including a CPU 901, RAM 902, ROM 903, an HDD 904, a communication I/F 905, an input/output I/F 906, and a media I/F 907.
The communication I/F 905 is connected to an external communication device 915. The input/output I/F 906 is connected to an input/output device 916. The media I/F 907 reads and writes data with respect to a recording medium 917. Furthermore, the CPU 901 controls each processing unit by executing a program (also referred to as an application, which may be abbreviated to app) loaded into the RAM 902. Additionally, the program may also be distributed through a communication channel or by being recorded onto a recording medium 917 such as CD-ROM.
The controller model 210 is an abstract data representation modeling the controller 20 (
Here, the “common model 212” is newly introduced between the service models 211 and the device models 213 in the controller 20 as a mechanism that reduces the burden of mapping between models while also utilizing the framework of a model-driven SDN controller.
In other words, a model-driven SDN controller has a one-stage mapping in which the service models 211 and the device models 213 are mapped directly. On the other hand, in the present embodiment, the mapping is expanded into a two-layer mapping including a first-stage mapping between the service models 211 and the common model 212, and a second-stage mapping between the common model 212 and the device models 213.
In this way, the service models 211 are mapped to the common model 212 without being mapped directly to the device models 213. Because the service provider does not have to create mappings to the device models 213 not under direct management by the service provider itself, the burden of creating mapping definition files is reduced.
Similarly, the device models 213 are mapped to the common model 212 without being mapped directly to the service models 211. Because the network provider does not have to create mappings to the service models 211 not under direct management by the network provider itself, the burden of creating mapping definition files is reduced. With this arrangement, if five service models 211 and four device models 213 are combined, the number of mappings is only 5+4=9, a reduction from the 20 mappings in
On the other hand, although omitted from illustration, a mapping file including the four basic arithmetic operations may also be used, such as by defining a parameter “dev-id” of the service model and setting the loopback setting parameter (ip-addr) to “1.1. (dev-id+100).1”.
This mapping definition file is obtained by applying the parameters in the mapping definition file for a single service model in
The contents of the row D04 and the row D10 are changed after application. Note that the row DO1 indicates that the mapping definition file is between a service model 211 and the common model 212.
This mapping definition file is obtained by applying the parameters in the mapping definition file for a single common model in
The contents of the row E03 and the row E06 are changed after application. Note that the row E01 indicates that the mapping definition file is between the common model 212 and a device model 213.
The controller 20 includes a service model 21, a common model 22a, and a device model 23.
Like
Each service of the class model 20a achieves the following functions by incorporating respective plugins A to D generated by the plugin generation device 10.
The config loading unit 12 loads a config file (S103), and inputs the config information into the plugin generation unit 13 (S102).
The plugin generation unit 13 generates a plugin for executing the mapping information on the basis of the class specified by the config information (S105), and inputs information about the generated plugin into the plugin output unit 14 (S106). Here, the plugin generation unit 13 generates a plugin of a different class according to the content of the mapping in the scope of predetermined logic.
The plugin output unit 14 calls the specified format of the config information with respect to the config loading unit 12 (S107), and obtains a response (S108). The plugin output unit 14 converts the plugin input in S106 to the specified format of the config information, and then outputs to the controller 20.
A common model management unit 222c is obtained by incorporating the second mapping information (
A device C management unit 223c is obtained by incorporating the second mapping information between the common model 222a and a target device (the device C 223a) as the plugin C.
A device D management unit 224c is obtained by incorporating the second mapping information between the common model 222a and a target device (the device D 224a) as the plugin D.
The device C management unit 223c and the device D management unit 224c executes a management command such as a NETCONF command on the device model 23, and determines whether the config input is successful or not from the notification result.
A device monitoring unit 225c is an execution object of the device monitor 225a. Also, a datastore 220b is a collective term for the datastore A 221b, the datastore B 222b, the datastore C 223b, the datastore D 224b, and the datastore E 225b in
Hereinafter,
The service model 21 transmits a message received from an application to the service A management unit 221c (S201). Note that the content of the message conforms to the data model.
The service A management unit 221c converts the content of the received message to be compatible with the common model management unit 222c (S202), and transmits information about the conversion result to the common model management unit 222c (S203).
Note that the transmitted content in S203 may be “Create” indicating object generation, “Update” indicating object modification, and “Delete” indicating object removal, for example. In these cases, information about the target equipment (such as an address and an equipment ID) treated as the transmission destination is included in the transmitted content.
Alternatively, the transmitted content may be “Get” indicating the acquisition of information in some cases. In this case, it is sufficient to query the datastore 220b managed by the service A management unit 221c, and return the information obtained by the response (not illustrated).
The common model management unit 222c processes the transmitted information (S204, details in
The common model management unit 222c receives the information transmission from the service A management unit 221c (S211, or S203 in
The device monitoring unit 225c receives the query of S212, and by searching the datastore 220b according to the machine query (S213), causes a notification of the machine of the target equipment to be issued (S214). Consequently, in the datastore 220b, an equipment management table associating an equipment ID, a management address, and a machine (model name) for each mounted (registered) network device is prepared in advance.
The common model management unit 222c receives the notification of the machine of the target equipment from the device monitoring unit 225c (S215), and converts the information into information specifying the target equipment (network device) (S216). Hereinafter, the description will continue by treating the device C 223a as the target equipment. Also, in S216, the common model management unit 222c may also converts the instruction content (parameters) transmitted in S211 on the basis of a mapping definition file.
The common model management unit 222c transmits the instruction (such as Create, Update, or Delete) transmitted from the service A management unit 221c in S211 to the device C management unit 223c of the target equipment obtained in S216 (S217), and causes the device C management unit 223c to process the instruction (S218, details in
The device C management unit 223c notifies the common model management unit 222c of the result of S218 (S219). The common model management unit 222c stores the notification result of S219 (for example, a successful process) in the datastore 220b (S220), and also notifies the service A management unit 221c of the notification result of S219 (S221).
The device C management unit 223c receives the information transmission from the common model management unit 222c (S231, or S217 in
The device C management unit 223c calls the SBI according to the information class by transmitting information about the conversion result in S232 to the device model 23 (S233).
The device model 23 receives the call in S233, and causes the instruction transmitted in S231 (such as Create, Update, or Delete) to be processed by the network device managed by the device C management unit 223c (S234).
The device C management unit 223c receives a notification of the result of S234 from the device model 23 (S235). Additionally, the device C management unit 223c stores the result notification of S235 (for example, a successful process) in the datastore 220b (S236), and also notifies the common model management unit 222c of the result notification of S235 (S237). On the other hand, in the case where the result notification of S235 indicates failure, the process of storing in the datastore 220b (S236) is omitted.
A plugin generation device 10 of the present invention includes: a mapping loading unit 11 that loads, into a controller 20 that transmits instruction information with respect to a network device from a service model 21 that receives the instruction information to a device model 23 that notifies the network device of the received instruction information, first mapping information between the service model 21 and a common model 22 and second mapping information between the common model 22 and the device model 23 as information for mapping the service model 21 and the device model 23, respectively;
a config loading unit 12 that loads preconditions for generating a plugin as config information;
a plugin generation unit 13 that generates a plugin to be incorporated into the controller 20 on the basis of the first mapping information, the second mapping information, and the config information; and
a plugin output unit 14 that outputs the created plugin to the controller 20, and thereby causes the controller 20 to execute a process of transmitting the instruction information according to the first mapping information and the second mapping information.
With this arrangement, through the introduction of an architecture newly provided with the common model 22 as an intermediate layer, even if the number of service models 21 or the number of device models 23 increases, the first mapping information and the second mapping information are defined separately. Consequently, the total number of mappings can be reduced, and the SDN development burden can be alleviated.
A controller 20 of the present invention includes: a service A management unit 221c that receives a notification of instruction information with respect to a network device from a service model 21 that receives the instruction information, and transmits the instruction information to a common model management unit 222c of a common model 22 according to first mapping information between the service model 21 and the common model 22;
the common model management unit 222c that receives the notification of the instruction information from the service A management unit 221c, and transmits the instruction information to a device C management unit 223c of a device model 23 according to second mapping information between the common model 22 and the device model 23; and
the device C management unit 223c that receives the notification of the instruction information from the common model management unit 222c, and notifies a network device of the received instruction information.
With this arrangement, through the introduction of an architecture newly provided with the common model 22 as an intermediate layer, even if the number of service models 21 or the number of device models 23 increases, the total number of mappings can be reduced, and therefore the operating costs of actions such as adding and updating plugins with respect to the controller 20 can be reduced.
10 plugin generation device
11 mapping loading unit
12 config loading unit
13 plugin generation unit
14 plugin output unit
20 controller
21 service model
22 common model
23 device model
221
c service A management unit (service management unit)
222
c common model management unit
223
c device C management unit (device management unit)
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2019/024625 | 6/21/2019 | WO | 00 |