KR101963512B1 - Method and apparatus for placement of distributed software defined networking controllers - Google Patents

Method and apparatus for placement of distributed software defined networking controllers Download PDF

Info

Publication number
KR101963512B1
KR101963512B1 KR1020170127820A KR20170127820A KR101963512B1 KR 101963512 B1 KR101963512 B1 KR 101963512B1 KR 1020170127820 A KR1020170127820 A KR 1020170127820A KR 20170127820 A KR20170127820 A KR 20170127820A KR 101963512 B1 KR101963512 B1 KR 101963512B1
Authority
KR
South Korea
Prior art keywords
controller
controllers
node
section
control protocol
Prior art date
Application number
KR1020170127820A
Other languages
Korean (ko)
Inventor
김우중
홍원기
서영주
이건
Original Assignee
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포항공과대학교 산학협력단 filed Critical 포항공과대학교 산학협력단
Priority to KR1020170127820A priority Critical patent/KR101963512B1/en
Application granted granted Critical
Publication of KR101963512B1 publication Critical patent/KR101963512B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Abstract

Disclosed is a method for arranging a controller, which comprises: receiving each central processing unit (CPU) load of a plurality of controllers for each section divided in accordance with a predefined time interval and the number of control protocol messages between the controllers and at least one node separately connected to the controllers; calculating a first standard deviation which is a standard deviation of the number of the control protocol messages of the controllers of a first section among the sections; calculating a second standard deviation which is a standard deviation of the number of control protocol messages of the controllers of a second section immediately after the first section; and arranging the controllers on the basis of each CPU load of the controllers of the first and second sections when the second standard deviation is greater than the first standard deviation. According to the present invention, a software-defined networking (SDN) controller is dynamically disposed to flexibly correspond to a situation in an environment where a traffic pattern is not predicted, thereby preventing a load from being concentrated on a specific SDN controller.

Description

분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 방법 및 장치{METHOD AND APPARATUS FOR PLACEMENT OF DISTRIBUTED SOFTWARE DEFINED NETWORKING CONTROLLERS}[0001] METHOD AND APPARATUS FOR DISTRIBUTED SOFTWARE DEFINED NETWORKING CONTROLLERS [0002]

본 발명은 분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 방법 및 장치에 관한 것으로, 더욱 상세하게는 복수의 분산 소프트웨어 정의 네트워킹 컨트롤러가 복수의 네트워크 장비를 관리하는 경우, 어떠한 컨트롤러가 어떠한 장비를 제어 또는 관리할지를 결정하는 방법 및 장치에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention [0001] The present invention relates to a method and apparatus for allocating distributed software defined networking controllers, and more particularly, when a plurality of distributed software defined networking controllers manage a plurality of network equipment, And more particularly,

최근 정보통신 기술의 발전으로 인해, 사용자들은 다양한 스마트 장비 및 컴퓨터를 활용하여 다양한 서비스를 제공받고 있다. 여기서, 사용자들이 다양한 서비스를 제공받기 위해서는 기본적으로 네트워크가 연결되어 서비스 제공업체와의 통신이 요구된다. 다만, 다양한 서비스의 수요 및 공급이 증가함에 따라 다양한 서비스에 요구되는 네트워크의 수요도 점차 증가하고 있으며, 이에 따라 네트워크의 규모가 비약적으로 증가하고 있는 추세이다. 또한, 네트워크를 구성하는 네트워크 장비들의 수 역시 비약적으로 증가하고 있다.Recently, due to the development of information communication technology, users have been provided various services by utilizing various smart devices and computers. Here, in order for users to receive various services, a network is basically connected and communication with a service provider is required. However, as demand and supply of various services increase, the demand for networks required for various services is gradually increasing, and the scale of the network is increasing rapidly. In addition, the number of network devices constituting the network is also increasing dramatically.

한편, 네트워크 관리자 또는 운영자는 증가된 네트워크 장비들을 제어 또는 관리하기 위해 네트워크 관리 시스템(Network Management System, NMS)을 도입하였다. 여기서, 네트워크 관리 시스템은 네트워크 장비를 제어 또는 관리할 수 있는 컨트롤러, 컨트롤러 및 네트워크 장비 간의 통신을 위한 통신 프로토콜, 및 컨트롤러 상에서 네트워크 관리자 또는 운영자가 사용할 수 있는 어플리케이션을 포함한다. 다시 말해, 네트워크 관리자 또는 운영자는 어플리케이션을 이용하여 컨트롤러를 제어하여 네트워크 장비들을 제어 또는 관리한다.Meanwhile, a network administrator or an operator has introduced a network management system (NMS) to control or manage the increased network equipment. Here, the network management system includes a controller capable of controlling or managing the network equipment, a communication protocol for communication between the controller and the network equipment, and an application that can be used by the network manager or the operator on the controller. In other words, the network administrator or operator uses the application to control the controller to control or manage the network devices.

다만, 네트워크 관리 시스템의 도입은 많은 금전적 및 시간적 비용이 소모되는 단점이 있다. 우선, 네트워크 관리 시스템은 솔루션 제조사(solution vendor)에 의해 개발이 되었으며, 개발된 소프트웨어를 구매하기 위해 금전적 비용을 지출하여야 한다. 또한, 해당 소프트웨어를 사용하기 위해 동일한 솔루션 제조사에서 출시된 네트워크 장비 또는 관계사(third party vendor)에서 출시된 네트워크 장비를 반드시 사용하여야 하므로 제조사에 종속된 관계(vendor-dependency)를 가지게 된다. 마지막으로, 네트워크 관리자 또는 운영자가 네트워크 제어 또는 관리를 위한 새로운 어플리케이션 또는 기능이 필요한 경우, 솔루션 제조사에게 이에 대한 제작 및 구현을 요청해야 하므로, 결국 많은 금전적 및 시간적 비용이 소모된다.However, introduction of a network management system has a disadvantage that a lot of money and time are consumed. First, the network management system is developed by a solution vendor, and it must spend money to purchase the developed software. In order to use the software, network equipment released from the same solution manufacturer or network equipment released from a third party vendor must be used, so that the vendor has a vendor-dependent relationship. Finally, if a network administrator or operator needs a new application or function for network control or management, then the solution maker will be asked to build and implement it, resulting in a lot of financial and time-consuming costs.

이와 같은 문제를 해결하기 위해서 소프트웨어 정의 네트워킹(Software defined networking, SDN)이라는 개념이 등장하였다. 소프트웨어 정의 네트워킹은 소프트웨어를 활용하여 네트워킹을 수행하는 개념으로, SDN 기술 역시 기존의 네트워크 관리 시스템과 마찬가지로 SDN 컨트롤러, 네트워크 장비, 및 SDN 컨트롤러와 네트워크 장비 간의 통신을 위한 오픈플로우와 같은 통신 프로토콜이 요구된다. 여기서, SDN 컨트롤러는 대부분 공개 소프트웨어로 개발되어 있으므로, 금전적 비용을 줄일 수 있다. 또한, 네트워크 장비는 제조사와 상관없이 SDN 컨트롤러와 통신만 할 수 있다면 어떠한 네트워크 장비도 SDN의 네트워크 장비로써 사용될 수 있는 장점이 존재하므로, 제조사와의 종속적인 관계를 끊을 수 있다. 마지막으로, SDN 컨트롤러가 대부분 공개 소프트웨어이므로, 네트워크 관리자 또는 운영자가 상대적으로 쉽게 새로운 어플리케이션 및 기능의 추가할 수 있는 장점이 있다.To solve this problem, the concept of software defined networking (SDN) emerged. Software-defined networking is a concept of networking using software. SDN technology, like existing network management systems, also requires SDN controllers, network equipment, and communication protocols such as open flows for communication between SDN controllers and network equipment . Here, since the SDN controller is mostly developed as open software, the financial cost can be reduced. In addition, if the network equipment can communicate with the SDN controller regardless of the manufacturer, any network equipment can be used as the network equipment of the SDN, so that the subsidiary relationship with the manufacturer can be disconnected. Finally, since SDN controllers are mostly open source software, there is an advantage that network administrators or operators can add new applications and features relatively easily.

초기의 SDN 개념은 하나의 SDN 컨트롤러가 모든 네트워크 장비들을 제어 또는 관리하는 개념에서 시작하였다. 다만, 네트워크를 구성하는 네트워크 장비의 수가 증가함에 따라, SDN 컨트롤러의 부하가 증가하였다. 또한, SDN 컨트롤러의 부하 증가에 따라 SDN 컨트롤러의 성능도 저하되어 네트워크 제어 또는 관리의 속도가 감소하였다. 다시 말해, 초기의 SDN 개념에서의 SDN 컨트롤러는 네트워크 전체의 병목(bottleneck)과 같았다.The initial SDN concept began with the concept that one SDN controller controls or manages all network devices. However, as the number of network devices constituting the network increases, the load of the SDN controller increases. Also, as the load of the SDN controller increases, the performance of the SDN controller degrades, and the speed of network control or management decreases. In other words, the SDN controller in the early SDN concept was the bottleneck of the entire network.

이러한 초기 SDN 개념의 병목 현상을 완화하기 위해, 분산형 SDN 컨트롤러가 등장하였다. 분산형 SDN 컨트롤러는 초기의 SDN 개념과는 달리, 복수의 SDN 컨트롤러가 복수의 네트워크 장비들을 제어 또는 관리하는 개념이다. 이와 같이 복수의 SDN 컨트롤러를 사용하여 복수의 네트워크 장비를 제어 또는 관리하게 되는 경우, 개별 SDN 컨트롤러의 부하가 감소하는 효과를 가질 수 있으며, 각 SDN 컨트롤러가 병렬적으로 네트워크 장비들에 대한 제어 또는 관리 기능을 수행하기 때문에, 초기의 SDN 컨트롤러보다 네트워크 제어 또는 관리를 수행하는 속도가 빨라지는 장점이 있다.To mitigate the bottleneck of this early SDN concept, distributed SDN controllers have emerged. The distributed SDN controller is different from the initial SDN concept in that a plurality of SDN controllers control or manage a plurality of network devices. When a plurality of SDN controllers are used to control or manage a plurality of network devices, the load of the individual SDN controllers may be reduced. In addition, each SDN controller may control or manage network devices in parallel Function, it is advantageous that the speed of performing network control or management is faster than that of the initial SDN controller.

다만, 분산형 SDN 컨트롤러를 사용하는 경우라 할지라도, 어떠한 SDN 컨트롤러가 어떠한 네트워크 장비를 제어 또는 관리하는지를 결정해야 하는 SDN 컨트롤러의 배치 문제에 직면하게 된다. 즉, 각각의 네트워크 장비가 복수의 SDN 컨트롤러 중 어떠한 SDN 컨트롤러를 마스터 컨트롤러로 동작하는지를 결정하는 마스터쉽(mastership) 문제가 있다. 만약, 배치가 효율적으로 수행되지 않는 경우, 특정 SDN 컨트롤러에만 부하가 집중되는 현상이 다시 발생하여 초기 SDN 컨트롤러가 겪었던 병목 현상으로 이어지게 된다. 다시 말해, 네트워크 전반에 걸쳐 성능 저하가 일어나게 된다. 이러한 문제를 해결하기 위해, SDN 컨트롤러 및 네트워크 장비 간의 RTT(Round-Trip Time)를 기반으로 SDN 컨트롤러가 RTT가 짧은 네트워크 장비를 제어 또는 관리하도록 배치하는 기술이 제안되었으며, 각 SDN 컨트롤러가 송수신하는 제어 평면 메시지의 수를 유사하게 유지하도록 네트워크 장비를 제어 또는 관리하는 배치 기술도 제안되었다. However, even when using a distributed SDN controller, you are confronted with the placement problem of the SDN controller, which determines which SDN controller controls or manages which network device. That is, there is a mastership problem in which each network device determines which of the plurality of SDN controllers operates as a master controller. If placement is not performed efficiently, load convergence occurs only on a specific SDN controller, leading to bottlenecks experienced by the initial SDN controller. In other words, performance degradation occurs throughout the network. In order to solve this problem, a technique has been proposed in which the SDN controller is arranged to control or manage a network device having a short RTT based on the round-trip time (RTT) between the SDN controller and the network device. A deployment technique has also been proposed to control or manage network equipment to keep the number of planar messages similar.

현재 사용되고 있는 분산형 SDN 컨트롤러 중 오픈 네트워크 운영체제(Open Network Operating System, ONOS) 컨트롤러는 미배정 노드가 존재하는 경우, 각 컨트롤러들과 미배정 노드가 통신을 수행하여 응답 속도가 가장 빠른 컨트롤러를 마스터 컨트롤러로 선택하는 과정을 수행한다. 이와 관련된 더욱 상세한 설명은 본 명세서의 발명을 실시하기 위한 구체적인 내용에서 설명하겠다. In a distributed SDN controller currently in use, an Open Network Operating System (ONOS) controller, when there is an unassigned node, communicates with each controller and an unassigned node, As shown in FIG. A more detailed description related to this will be given in the detailed description for carrying out the invention of this specification.

상기에서 언급한 기존 기술들의 경우, 연속적으로 동작하지 않고, 네트워크에서 변화되는 트래픽 양을 고려하지 않는 단점이 있다. 특히, 데이터 센터와 같은 환경에서는 다양한 기존 연구들에 의해 트래픽의 패턴이 예측되지 않는다고 알려져 있으므로, 이러한 환경에서는 상술한 기존 기술들은 적합하지 않다는 문제점이 있다. 따라서, 이러한 문제점을 해결하기 위해 동적으로 트래픽 패턴이 바뀌는 환경을 고려하여 고정된 시간마다 주기적으로 SDN 컨트롤러를 재배치하는 기술이 제안되었다. 다만, 이 기술에 따라 고정된 주기로 SDN 컨트롤러를 재배치하는 경우, 고정된 시간을 어떻게 정해야 하는지에 대한 문제점이 발생할 수 있으며, 고정된 주기 동안에 트래픽 패턴이 급격히 변화하는 상황이 발생하는 경우, 특정 SDN 컨트롤러에 부하가 집중되는 현상이 발생할 수 있는 문제점이 있다.In the case of the above-mentioned conventional technologies, there is a disadvantage in that it does not operate continuously and does not consider the amount of traffic that is changed in the network. In particular, it is known that traffic patterns are not predicted by various existing studies in an environment such as a data center. In such an environment, the existing technologies described above are not suitable. Therefore, in order to solve such a problem, a technique of periodically reallocating the SDN controller at fixed time intervals has been proposed in consideration of an environment in which the traffic pattern changes dynamically. However, when the SDN controller is relocated at fixed intervals according to this technique, there may arise a problem as to how to set the fixed time, and when a traffic pattern changes rapidly during a fixed period, There is a problem that a load may concentrate on the load.

Open Networking Foundation (ONF), “OpenFlow Switch Specification,” Technical document, 2015.Open Networking Foundation (ONF), "OpenFlow Switch Specification," Technical document, 2015. Dan Levin, Andreas Wundsam, Brandon Heller, Nikhil Handigol, and Anja Feldmann, “Logically Centralized?: State Distribution Trade-offs in Software Defined Networks,” in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2012.Dan Levin, Andreas Wundsam, Brandon Heller, Nikhil Handigol, and Anja Feldmann, "Logically Centralized ?: State Distribution Trade-offs in Software Defined Networks," in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2012. Pankaj Berde, Matteo Gerola, Jonathan Hart, Yuta Higuchi, Masayoshi Kobayashi, Toshio Koide, Bob Lantz, Brian O’Connor, Pavlin Radoslavov, William Snow, and Guru Parulkar, “ONOS: Towards an Open, Distributed SDN OS,” in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2014.PUNKAS Berde, Matteo Gerola, Jonathan Hart, Yuta Higuchi, Masayoshi Kobayashi, Toshio Koide, Bob Lantz, Brian O'Connor, Pavlin Radoslavov, William Snow, and Guru Parulkar, "ONOS: Towards an Open, Distributed SDN OS, . ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2014. Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling, Leon Poutievski, Min Zhu, Rajiv Ramanathan, Yuichiro Iwata, Hiroaki Inoue, Takayuki Hama, and Scott Shenker, “Onix: A Distributed Control Platform for Large-scale Production Networks,” in Proc. USENIX Operating Systems Design and Implementation (OSDI), pp. 351-364, 2010."Onix: A Distributed Control Platform for Large-Scale Production Networks," by Inoue Hiroaki, Yuichi Iwata, Rajiv Ramanathan, Leon Poutievski, Min Zhu, and Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling Proc. USENIX < / RTI > Operating Systems Design and Implementation (OSDI), pp. 351-364, 2010. Brandon Heller, Rob Sherwood, and Nick McKeown, “The Controller Placement Problem,” in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 7-12, 2012.Brandon Heller, Rob Sherwood, and Nick McKeown, " The Controller Placement Problem, " in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 7-12, 2012. Md. Faizul Bari, Arup Raton Roy, Shihabur Rahman Chowdhury, Qi Zhang, Mohamed Faten Zhani, Raez Ahmed, and Raouf Boutaba, “Dynamic Controller Provisioning in Software Defined Networks,” in Proc. International Conference of Network and Service Management (CNSM), pp. 18-25, 2013.Md. Faizul Bari, Arup Raton Roy, Shihabur Rahman Chowdhury, Qi Zhang, Mohamed Faten Zhani, Raez Ahmed, and Raouf Boutaba, "Dynamic Controller Provisioning in Software Defined Networks," in Proc. International Conference on Network and Service Management (CNSM), pp. 18-25, 2013. Jian Li, Jae-Hyoung Yoo, and James Won-Ki Hong, “Dynamic Control Plane Management for Software-defined Networks,” International Journal of Network Management, vol. 26, no. 2, pp. 111-130, 2016.Jian Li, Jae-Hyoung Yoo, and James Won-Ki Hong, "Dynamic Control Plane Management for Software-defined Networks," International Journal of Network Management, vol. 26, no. 2, pp. 111-130, 2016. Theophilus Benson, Aditya Akella, and David A. Maltz, “Network Traffic Characteristics of Data Centers in the Wild,” in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 267-290, 2010.Theophilus Benson, Aditya Akella, and David A. Maltz, " Network Traffic Characteristics of Data Centers in the Wild, " in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 267-290, 2010. Albert Greenberg, James R. Hamilton, Navendu Jain, Srikanth Kandula, Changhoon Kim, Parantap Lahiri, David A. Maltz, Parveen Patel, and Sudipta Sengupta, “VL2: A Scalable and Flexible Data Center Network,” ACM SIGCOMM Computer Communication Review, vol. 39, no. 4, pp. 51-62, 2009.Albert Greenberg, James R. Hamilton, Navendu Jain, Srikanth Kandula, Changhoon Kim, Parantap Lahiri, David A. Maltz, Parveen Patel, and Sudipta Sengupta, "VL2: A Scalable and Flexible Data Center Network," ACM SIGCOMM Computer Communication Review, vol. 39, no. 4, pp. 51-62, 2009. Srikanth Kandula, Sudipta Sengupta, Albert Greenberg, Paveen Patel, and Ronnie Chaiken, “The Nature of Datacenter Traffic: Measurements & Analysis,” in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 202-208, 2009.Srikanth Kandula, Sudipta Sengupta, Albert Greenberg, Paveen Patel, and Ronnie Chaiken, "The Nature of Datacenter Traffic: Measurements & Analysis," in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 202-208, 2009. Theophilus Benson, Ashok Anand, Aditya Akella, and Ming Zhang, “Understanding Data Center Traffic Characteristics,” ACM SIGCOMM Computer Communications Review, vol. 40, no. 1, pp. 92-99, 2010.Theophilus Benson, Ashok Anand, Aditya Akella, and Ming Zhang, "Understanding Data Center Traffic Characteristics," ACM SIGCOMM Computer Communications Review, vol. 40, no. 1, pp. 92-99, 2010.

상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 방법을 제공하는 데 있다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a method of arranging distributed software defined networking controllers.

상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은 분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 장치를 제공하는 데 있다.It is another object of the present invention to provide a device for arranging distributed software defined networking controllers.

상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨트롤러 배치 방법은, 미리 정의한 시간 간격에 따라 나눈 구간 별로 복수의 컨트롤러의 각 CPU(central processing unit) 부하 및 복수의 컨트롤러와 복수의 컨트롤러에 각각 연결된 적어도 하나의 노드 간의 제어 프로토콜 메시지의 개수를 수신하는 단계, 구간 중 제1 구간의 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제1 표준 편차를 산출하는 단계, 제1 구간 직후인 제2 구간의 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제2 표준 편차를 산출하는 단계, 및 제2 표준 편차가 제1 표준 편차보다 큰 경우, 제1 구간 및 제2 구간의 복수의 컨트롤러의 각 CPU 부하를 기초로 복수의 컨트롤러를 배치하는 단계를 포함할 수 있다.According to an aspect of the present invention, there is provided a method of allocating a controller to a plurality of controllers and a plurality of controllers, each of the plurality of controllers having a central processing unit (CPU) Calculating a first standard deviation with respect to the number of control protocol messages of a plurality of controllers in a first section of the section, calculating a first standard deviation with respect to the number of control protocol messages of the plurality of controllers in the first section of the section, Calculating a second standard deviation with respect to the number of control protocol messages of the plurality of controllers of the plurality of controllers of the first interval and the second interval when the second standard deviation is larger than the first standard deviation, And arranging a plurality of controllers based on the plurality of controllers.

여기서, 제1 구간 및 제2 구간의 복수의 컨트롤러의 각 CPU 부하를 기초로 복수의 컨트롤러를 배치하는 단계는, 제1 구간 및 제2 구간의 복수의 컨트롤러의 각 CPU 부하에 대하여 CPU 평균 값을 각각 산출하는 단계, 및 제1 구간의 CPU 평균 값 및 제2 구간의 CPU 평균 값을 비교하여 복수의 컨트롤러를 배치하는 단계를 포함할 수 있다.Here, the step of arranging the plurality of controllers based on the respective CPU loads of the plurality of controllers in the first section and the second section includes calculating a CPU average value for each CPU load of the plurality of controllers in the first section and the second section And comparing the CPU average value of the first section with the CPU average value of the second section to arrange the plurality of controllers.

여기서, 제1 구간의 CPU 평균 값 및 제2 구간의 CPU 평균 값을 비교하여 복수의 컨트롤러를 배치하는 단계는, 제2 구간의 CPU 평균 값이 큰 경우 전진 컨트롤러 배치 알고리즘을 수행하고, 제2 구간의 CPU 평균 값이 작거나 같은 경우 후진 컨트롤러 배치 알고리즘을 수행하는 단계를 포함할 수 있다.Here, the step of comparing the CPU average value of the first section with the CPU average value of the second section to arrange the plurality of controllers performs the forward controller arrangement algorithm when the CPU average value of the second section is large, And performing a backward controller placement algorithm if the CPU average value of the backward controller placement algorithm is less than or equal to the CPU average value of the backward controller placement algorithm.

여기서, 전진 컨트롤러 배치 알고리즘은, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 큰 컨트롤러를 추출하는 단계, 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 큰 노드를 추출하는 단계, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하는 단계, 가장 큰 노드 및 가장 작은 컨트롤러를 연결하는 단계를 포함할 수 있다.Here, the forward controller arrangement algorithm includes a step of extracting a controller having a large number of control protocol messages in a second section of the plurality of controllers, extracting a node having the largest number of control protocol messages among at least one node connected to the largest controller Extracting a controller having the smallest number of control protocol messages in a second section of the plurality of controllers, and connecting the largest node and the smallest controller.

여기서, 후진 컨트롤러 배치 알고리즘은, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하는 단계, 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 작은 노드를 추출하는 단계, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하는 단계, 및 가장 작은 노드 및 가장 작은 컨트롤러를 연결하는 단계를 포함할 수 있다.Here, the backward controller arrangement algorithm is a step of extracting a controller having the largest number of control protocol messages in a second interval among the plurality of controllers, extracting a node having the smallest number of control protocol messages among at least one node connected to the largest controller Extracting a controller having the smallest number of control protocol messages in a second section of the plurality of controllers, and connecting the smallest node and the smallest controller.

여기서, 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행한 결과를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 변경하는 단계, 및 변경한 마스터쉽 토폴로지를 복수의 컨트롤러로 송신하는 단계를 더 포함할 수 있다.Here, changing the mastership topology that determines the master controller of the node based on the results of performing the forward controller placement algorithm or the backward controller placement algorithm, and transmitting the modified master plane topology to the plurality of controllers Step < / RTI >

상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨트롤러 동작 방법은, 컨트롤러 배치 장치로부터 미리 정의한 시간 간격에 따라 나눈 구간 별 모니터링 정보 요청을 수신하는 단계, 구간 별로 CPU(central processing unit) 부하 및 적어도 하나의 노드와의 각 제어 프로토콜 메시지의 개수를 컨트롤러 배치 장치로 송신하는 단계, 및 컨트롤러 배치 장치로부터 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 수신하는 단계를 포함할 수 있다. According to another aspect of the present invention, there is provided a method of operating a controller, the method comprising: receiving a monitoring information request for each section according to a predetermined time interval from a controller arrangement device; Sending a number of each control protocol message to at least one node to a controller arrangement device, and receiving a mastership topology determining a master controller of the node from the controller arrangement device.

여기서, 적어도 하나의 노드 중 수신한 변경된 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 단계, 및 적어도 하나의 다른 컨트롤러로 변경하여야 할 노드에 대한 정보를 송신하는 단계를 더 포함할 수 있다.Here, the method may further include selecting a node to be changed based on the changed master master topology received from at least one node, and transmitting information about a node to be changed to at least one other controller.

여기서, 변경하여야 할 노드에 대한 정보의 동기화를 검증하는 단계, 및 변경하여야 할 노드가 정상적으로 변경되었는지 검증하는 단계를 더 포함할 수 있다.Here, the step of verifying the synchronization of the information on the node to be changed and the step of verifying whether the node to be changed is normally changed may be further included.

상기 다른 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨트롤러 배치 장치는, 복수의 컨트롤러로부터 미리 정의한 시간 간격에 따라 나눈 구간 별로 복수의 컨트롤러의 각 CPU(central processing unit) 부하 및 복수의 컨트롤러와 복수의 컨트롤러에 각각 연결된 적어도 하나의 노드 간의 제어 프로토콜 메시지의 개수를 수신하는 통신부, 및 구간 중 제1 구간의 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제1 표준 편차를 산출하고, 제1 구간 직후인 제2 구간의 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제2 표준 편차를 산출하고, 제2 표준 편차가 제1 표준 편차보다 큰 경우, 제1 구간 및 제2 구간의 복수의 컨트롤러의 각 CPU 부하를 기초로 복수의 컨트롤러를 배치하는 의사결정부를 포함할 수 있다.According to another aspect of the present invention, there is provided a controller arrangement apparatus comprising: a central processing unit (CPU) load of a plurality of controllers, a plurality of controllers, A communication section for receiving a number of control protocol messages between at least one node connected to each of the plurality of controllers, and a controller for calculating a first standard deviation of the number of control protocol messages of the plurality of controllers in the first section, A second standard deviation is calculated with respect to the number of control protocol messages of the plurality of controllers in the second section immediately after the first standard deviation, and when the second standard deviation is larger than the first standard deviation, And a decision unit for arranging a plurality of controllers based on each CPU load.

여기서, 의사결정부는, 제1 구간 및 제2 구간의 복수의 컨트롤러의 각 CPU 부하에 대하여 CPU 평균 값을 각각 산출하고, 제1 구간의 CPU 평균 값 및 제2 구간의 CPU 평균 값을 비교하여 복수의 컨트롤러를 배치할 수 있다.Here, the decision unit calculates the CPU average value for each CPU load of the plurality of controllers in the first section and the second section, compares the CPU average value in the first section with the CPU average value in the second section, Can be arranged.

여기서, 제2 구간의 CPU 평균 값이 큰 경우 전진 컨트롤러 배치 알고리즘을 수행하고, 제2 구간의 CPU 평균 값이 작거나 같은 경우 후진 컨트롤러 배치 알고리즘을 수행하는 연산부를 더 포함할 수 있다.Here, the controller may further include an operation unit for performing a forward controller arrangement algorithm when the CPU average value of the second section is large and performing a reverse controller arrangement algorithm when the CPU average value of the second section is small or equal.

여기서, 전진 컨트롤러 배치 알고리즘은, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하고, 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 큰 노드를 추출하고, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하고, 가장 큰 노드 및 가장 작은 컨트롤러를 연결할 수 있다.Here, the forward controller arrangement algorithm extracts the controller having the largest number of control protocol messages in the second section among the plurality of controllers, extracts the node having the largest number of control protocol messages among at least one node connected to the largest controller The controller having the smallest number of control protocol messages in the second section among the plurality of controllers can be extracted and the largest node and the smallest controller can be connected.

여기서, 후진 컨트롤러 배치 알고리즘은, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하고, 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 작은 노드를 추출하고, 복수의 컨트롤러 중 제2 구간의 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하고, 가장 작은 노드 및 가장 작은 컨트롤러를 연결할 수 있다.Here, the backward controller arrangement algorithm extracts the controller having the largest number of control protocol messages in the second interval among the plurality of controllers, extracts a node having the smallest number of control protocol messages among at least one of the nodes connected to the largest controller The controller having the smallest number of control protocol messages in the second section among the plurality of controllers can be extracted and the smallest node and the smallest controller can be connected.

여기서, 의사결정부는, 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행한 결과를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 변경할 수 있다.Here, the decision making unit may change the mastership topology that determines the master controller of the node based on the results of performing the forward controller placement algorithm or the backward controller placement algorithm.

여기서, 통신부는, 변경한 마스터쉽 토폴로지를 복수의 컨트롤러로 송신할 수 있다.Here, the communication unit can transmit the changed master-s topology to the plurality of controllers.

상기 다른 목적을 달성하기 위한 본 발명의 일 실시예에 따른 컨트롤러는, 컨트롤러 배치 장치로부터 미리 정의한 시간 간격에 따라 나눈 구간 별 모니터링 정보 요청 및 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 수신하고, 모니터링 정보를 컨트롤러 배치 장치로 송신하는 제1 통신부, 및 구간 별로 CPU(central processing unit) 부하 및 적어도 하나의 연결된 노드와의 각 제어 프로토콜 메시지의 개수를 모니터링하여 모니터링 정보를 생성하는 모니터링부를 포함할 수 있다.According to another aspect of the present invention, there is provided a controller comprising: a controller configured to receive a monitoring information request for a section divided according to a predetermined time interval from a controller arrangement device and a master topology for determining a master controller of a node And a monitoring unit for monitoring the number of each control protocol message with a central processing unit (CPU) load and at least one connected node on a per-segment basis to generate monitoring information, .

여기서, 적어도 하나의 노드 중 수신한 변경된 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 검증부, 및 적어도 하나의 다른 컨트롤러로 변경하여야 할 노드에 대한 정보를 송신하는 제2 통신부를 더 포함할 수 있다.Here, the information processing apparatus may further include a verification unit that selects a node to be changed based on the changed master master topology received from at least one node, and a second communication unit that transmits information about a node to be changed to at least one other controller .

여기서, 검증부는, 변경하여야 할 노드에 대한 정보의 동기화를 검증하고, 변경하여야 할 노드가 정상적으로 변경되었는지 검증할 수 있다.Here, the verification unit may verify the synchronization of the information about the node to be changed, and verify whether the node to be changed is normally changed.

본 발명에 따르면, 복수의 SDN 컨트롤러 및 복수의 노드가 위치하는 환경에서 프로토콜 메시지의 수 및 각 SDN 컨트롤러의 부하를 고려하여 마스터 컨트롤러를 선택하는 SDN 컨트롤러 배치를 제공할 수 있다. According to the present invention, it is possible to provide an SDN controller arrangement for selecting a master controller in consideration of the number of protocol messages and the load of each SDN controller in an environment where a plurality of SDN controllers and a plurality of nodes are located.

본 발명에 따르면, 데이터 센터 네트워크와 같이 트래픽 패턴이 예측되지 않는 환경에서, 유동적으로 상황에 맞추어 동적으로 SDN 컨트롤러를 배치함으로써 특정 SDN 컨트롤러에 부하가 집중되는 것을 방지할 수 있다.According to the present invention, it is possible to prevent a load from being concentrated on a specific SDN controller by arranging an SDN controller dynamically in accordance with a situation in an environment where a traffic pattern is not predicted like a data center network.

도 1은 오픈플로우 상에서 미배정 노드의 마스터 컨트롤러를 선택하는 과정을 나타낸 플로우 차트이다.
도 2는 본 발명의 일 실시예에 따른 컨트롤러 배치 장치, 컨트롤러 및 노드 간의 통신을 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른 복수의 컨트롤러 간의 통신을 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 컨트롤러 배치 장치의 블록 구성도이다.
도 5는 본 발명의 일 실시예에 따른 제1 컨트롤러의 블록 구성도이다.
도 6은 본 발명의 일 실시예에 따른 컨트롤러 배치 방법이 동작하는 전체 시간을 타임 슬롯으로 나누는 개념을 설명하는 도면이다.
도 7은 본 발명의 일 실시예에 따른 컨트롤러 배치 방법을 설명하는 순서도이다.
도 8은 본 발명의 일 실시예에 따른 컨트롤 배치 방법 중 모니터링 단계를 구체적으로 나타낸 플로우 차트이다.
도 9는 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 전반부를 설명하는 순서도이다.
도 10은 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 중반부를 설명하는 순서도이다.
도 11은 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 후반부를 설명하는 순서도이다.
도 12는 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 전반부를 설명하는 순서도이다.
도 13은 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 중반부를 설명하는 순서도이다.
도 14는 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 후반부를 설명하는 순서도이다.
도 15는 본 발명의 일 실시예에 따른 컨트롤러 배치 방법을 수행한 후, 변경된 마스터쉽 토폴로지를 적용하는 방법을 설명하는 플로우 차트이다.
1 is a flowchart showing a process of selecting a master controller of an unassigned node on an open flow.
2 is a diagram illustrating communication between a controller arrangement device, a controller, and nodes according to an embodiment of the present invention.
3 is a diagram illustrating communication between a plurality of controllers according to an embodiment of the present invention.
4 is a block diagram of a controller arrangement according to an embodiment of the present invention.
5 is a block diagram of a first controller according to an embodiment of the present invention.
6 is a view for explaining a concept of dividing the total time in which the controller arrangement method operates according to an embodiment of the present invention into time slots.
7 is a flowchart illustrating a controller arrangement method according to an embodiment of the present invention.
8 is a flowchart specifically illustrating a monitoring step of the control arrangement method according to an embodiment of the present invention.
9 is a flowchart illustrating the first half of the forward controller arrangement algorithm according to an embodiment of the present invention.
10 is a flow chart illustrating the middle part of the forward controller arrangement algorithm according to an embodiment of the present invention.
11 is a flowchart illustrating the latter part of the forward controller arrangement algorithm according to an embodiment of the present invention.
12 is a flowchart illustrating the first half of a backward controller arrangement algorithm according to an embodiment of the present invention.
13 is a flowchart illustrating the middle part of a backward controller arrangement algorithm according to an embodiment of the present invention.
14 is a flowchart illustrating the latter part of a backward controller arrangement algorithm according to an embodiment of the present invention.
FIG. 15 is a flowchart illustrating a method of applying a changed master master topology after performing a controller arrangement method according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. The terms first, second, A, B, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. The term "and / or" includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

본 발명의 설명에서 오픈플로우(OpenFlow)는 SDN(Software Defined Networking)을 구성하는 하나의 요소로, 제어 기능을 가진 장비와 네트워킹 스위치 간의 통신을 담당하는 개방형 표준 인터페이스(interface)를 의미할 수 있다. 오픈플로우는 일종의 SDN을 지원하는 프로그래밍 가능한 컨트롤러와 네트워킹 장비 사이의 제어 프로토콜을 의미할 수 있으며, 컨트롤러로 대두되는 소프트웨어와 스위치 및 라우터 등의 네트워크 장비에 직접 접속하여 조작할 수 있도록 도와줄 수 있다. In the description of the present invention, OpenFlow is an element constituting SDN (Software Defined Networking), and may mean an open standard interface for communication between a device having a control function and a networking switch. Openflow can refer to a control protocol between a programmable controller and a networking device that supports a kind of SDN, and it can help you connect directly to network devices such as switches and routers, as well as software that emerges as a controller.

또한, 컨트롤러는 SDN의 컨트롤 레이어에 위치하며, SDN 환경에서 노드를 제어 또는 관리하는 SDN 컨트롤러를 의미할 수 있으며, 노드는 컨트롤러에 의해 제어 또는 관리되어 패킷을 전달하는 스위치 또는 라우터를 의미할 수 있으며, 트래픽의 발생지 또는 목적지를 의미할 수도 있다.In addition, the controller may refer to an SDN controller located in the control layer of the SDN and controlling or managing the node in the SDN environment, and the node may be a switch or a router that is controlled or managed by the controller to deliver the packet , Or a source or destination of traffic.

이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 오픈플로우 상에서 미배정 노드의 마스터 컨트롤러를 선택하는 과정을 나타낸 플로우 차트이다.1 is a flowchart showing a process of selecting a master controller of an unassigned node on an open flow.

도 1를 참조하면, 현재 사용되고 있는 분산형 SDN 컨트롤러 중 ONOS(Open Network Operating System, ONOS) 컨트롤러의 컨트롤러 배치 기술을 설명하기 위해 1개의 미배정 노드 및 3개의 컨트롤러가 존재하고, 미배정 노드와 컨트롤러들 간의 통신은 오픈플로우 표준을 사용한다고 가정한다.Referring to FIG. 1, there is one unassigned node and three controllers in order to explain a controller arrangement technique of an ONOS (ONOS) controller among currently used distributed SDN controllers, Are assumed to use the open flow standard.

우선, 미배정 노드가 오픈플로우 네트워크에 연결되고, 분산형 SDN 컨트롤러로부터 제어 또는 관리를 받고자 하는 경우, 각 컨트롤러들과 미배정 노드의 연결 과정을 수행할 수 있다. 여기서, 연결 과정은 오픈플로우 표준에 정의된 방식을 따를 수 있다. 연결이 종료되면, 미배정 노드는 마스터 컨트롤러를 선택하는 과정을 수행할 수 있다. 각 컨트롤러는 Role-request 메시지를 미배정 노드로 전송할 수 있으며, 미배정 노드는 오픈플로우 표준에 따라 각 컨트롤러에 Role-request 메시지에 대한 응답으로 Role-response 메시지를 전송할 수 있다. 다만, 오픈플로우 네트워크 상태 또는 다양한 원인들로 인해 각 컨트롤러가 Role-response 메시지를 받는 시간이 상이하게 될 수 있으며, 도 1의 경우, 제3 컨트롤러가 미배정 노드로부터 Role-response 메시지를 가장 먼저 받을 수 있다. 이러한 경우, 제3 컨트롤러가 미배정 노드의 마스터 컨트롤러로 선택될 수 있다.First, when the unassigned node is connected to the open flow network and wants to receive control or management from the distributed SDN controller, it is possible to perform the connection process between each controller and the unassigned node. Here, the connection procedure can follow the manner defined in the open flow standard. When the connection is terminated, the unassigned node can perform the process of selecting the master controller. Each controller can send a Role-request message to an unassigned node, and the unassigned node can transmit a role-response message to each controller in response to a Role-request message according to an open flow standard. However, the time taken for each controller to receive the Role-response message may be different due to the open flow network state or various causes. In case of FIG. 1, the third controller receives the Role-response message from the unassigned node first . In this case, the third controller may be selected as the master controller of the unassigned node.

도 2는 본 발명의 일 실시예에 따른 컨트롤러 배치 장치, 컨트롤러 및 노드 간의 통신을 나타내는 도면이다.2 is a diagram illustrating communication between a controller arrangement device, a controller, and nodes according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치는 복수의 컨트롤러를 제어 또는 관리하기 위해 각 컨트롤러와 제1 제어 프로토콜을 사용하여 통신을 수행할 수 있으며, 각 컨트롤러는 각 컨트롤러에 연결된 적어도 하나의 노드를 제어 또는 관리하기 위해 제2 제어 프로토콜을 사용하여 통신을 수행할 수 있다.Referring to FIG. 2, a controller arrangement apparatus according to an embodiment of the present invention may perform communication using a first control protocol with each controller to control or manage a plurality of controllers, And may perform communication using a second control protocol to control or manage at least one node connected thereto.

다시 말해, 하나의 컨트롤러 배치 장치(200)는 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330)와 제1 제어 프로토콜을 사용하여 제1 제어 프로토콜 메시지를 송수신할 수 있다. 또한, 제1 컨트롤러(310)는 제1-1 노드(411), 제1-2 노드(412) 및 제1-3 노드(413)와 제2 제어 프로토콜을 사용하여 제2 제어 프로토콜 메시지를 송수신할 수 있으며, 제2 컨트롤러(320)는 제2-1 노드(421), 제2-2 노드(422), 제2-3 노드(423) 및 제2-4 노드(424)와 제2 제어 프로토콜을 사용하여 제2 제어 프로토콜 메시지를 송수신할 수 있고, 제3 컨트롤러(330)는 제3-1 노드(431) 및 제3-2 노드(432)와 제2 제어 프로토콜을 사용하여 제2 제어 프로토콜 메시지를 송수신할 수 있다.In other words, one controller arrangement device 200 can transmit and receive the first control protocol message using the first control protocol with the first controller 310, the second controller 320, and the third controller 330 . The first controller 310 transmits and receives a second control protocol message using the second control protocol with the first-first node 411, the first-second node 412, and the first-third node 413, Second node 422, second-third node 423, second-fourth node 424, and second control node 424, Protocol and the third controller 330 can send and receive a second control protocol message using the second control protocol with the third-one node 431 and the third-second node 432, Protocol messages can be sent and received.

여기서, 컨트롤러의 개수는 본 발명의 설명을 위해 임의로 가정한 것이며, 컨트롤러 배치 장치에 연결된 컨트롤러의 개수는 2개 이상 일 수 있다. 또한, 각 컨트롤러에 연결된 노드의 개수도 본 발명의 설명을 위해 임의로 가정한 것이며, 각 컨트롤러에 연결된 노드의 개수는 하나 이상 일 수 도 있다. 다시 말해, 각 컨트롤러가 제어 또는 관리하는 노드의 개수를 각 컨트롤러마다 다를 수 있다.Here, the number of controllers is arbitrarily assumed for the explanation of the present invention, and the number of controllers connected to the controller arrangement device may be two or more. Also, the number of nodes connected to each controller is arbitrarily assumed for the description of the present invention, and the number of nodes connected to each controller may be one or more. In other words, the number of nodes that each controller controls or manages may be different for each controller.

여기서, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200) 및 복수의 컨트롤러는 단일한 물리 머신에서 구동될 수 있으며, 가상 머신으로도 구동될 수 있다.Here, the controller arrangement device 200 and the plurality of controllers according to an embodiment of the present invention can be driven in a single physical machine, and can also be driven as a virtual machine.

또한, 제1 제어 프로토콜 및 제2 제어 프로토콜을 위한 통신 기술 및 표준은 특정한 통신 기술 및 표준을 나타내지 않으며, 통상적으로 사용될 수 있는 유선 또는 무선 통신 네트워크 기술 및 표준이 사용될 수 있다. Further, the communication technologies and standards for the first control protocol and the second control protocol do not represent particular communication technologies and standards, and wired or wireless communication network technologies and standards that can be used routinely can be used.

도 3은 본 발명의 일 실시예에 따른 복수의 컨트롤러 간의 통신을 나타내는 도면이다. 3 is a diagram illustrating communication between a plurality of controllers according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치에 연결된 복수의 컨트롤러는 각 컨트롤러 간에 제3 제어 프로토콜을 사용하여 통신을 수행할 수 있다.Referring to FIG. 3, a plurality of controllers connected to the controller arrangement according to an exemplary embodiment of the present invention can perform communication between the controllers using a third control protocol.

다시 말해, 제1 컨트롤러(310)는 제2 컨트롤러(320) 및 제3 컨트롤러(330)와 제3 제어 프로토콜을 사용하여 제3 제어 프로토콜 메시지를 송수신할 수 있고, 제2 컨트롤러(320)는 제1 컨트롤러(310) 및 제3 컨트롤러(330)와 제3 제어 프로토콜을 사용하여 제3 제어 프로토콜 메시지를 송수신할 수 있으며, 제3 컨트롤러(330)는 제1 컨트롤러(310) 및 제2 컨트롤러(320)와 제3 제어 프로토콜을 사용하여 제3 제어 프로토콜 메시지를 송수신할 수 있다. 즉, 각 컨트롤러는 제3 제어 프로토콜을 사용하여 서로 정보를 전송 또는 공유하여 정보를 동기화할 수 있다.In other words, the first controller 310 can transmit / receive a third control protocol message to / from the second controller 320 and the third controller 330 using the third control protocol, and the second controller 320 can transmit / 1 controller 310 and the third controller 330 using the third control protocol and the third controller 330 can transmit and receive the third control protocol message to the first controller 310 and the second controller 320 ) And the third control protocol to transmit and receive the third control protocol message. That is, each controller can synchronize information by transmitting or sharing information to each other using a third control protocol.

여기서, 컨트롤러의 개수는 본 발명의 설명을 위해 임의로 가정한 것이며, 컨트롤러 배치 장치에 연결된 컨트롤러의 개수가 2개 이상일 수 있으며, 이 경우, 컨트롤러 배치 장치에 연결된 모든 컨트롤러는 서로 제3 제어 프로토콜을 사용하여 통신을 수행할 수 있다.Here, the number of controllers is arbitrarily assumed for the description of the present invention, and the number of controllers connected to the controller arrangement device may be two or more. In this case, all the controllers connected to the controller arrangement apparatus use the third control protocol So that communication can be performed.

또한, 제3 제어 프로토콜을 위한 통신 기술 및 표준은 제1 제어 프로토콜 및 제2 제어 프로토콜과 같이 특정한 통신 기술 및 표준을 나타내지 않으며, 통상적으로 사용될 수 있는 유선 또는 무선 통신 네트워크 기술 및 표준이 사용될 수 있다. Also, the communication techniques and standards for the third control protocol do not represent particular communication technologies and standards, such as the first control protocol and the second control protocol, and wired or wireless communication network technologies and standards that can be used routinely can be used .

도 4는 본 발명의 일 실시예에 따른 컨트롤러 배치 장치의 블록 구성도이다.4 is a block diagram of a controller arrangement according to an embodiment of the present invention.

도 4를 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배지 창치(200)는 통신부(210), 데이터베이스(220), 의사결정부(230) 및 연산부(240)를 포함할 수 있다. 컨트롤러 배치 장치(200)의 구성은 명칭에 한정되지 않으며, 기능에 의해 정의될 수 있다. 또한, 복수의 기능을 하나의 구성이 수행할 수 있으며, 하나의 기능을 복수의 구성이 수행할 수 있다.Referring to FIG. 4, the controller badge window 200 according to an exemplary embodiment of the present invention may include a communication unit 210, a database 220, a decision unit 230, and an operation unit 240. The configuration of the controller arrangement device 200 is not limited to a name, but may be defined by a function. In addition, a plurality of functions can be performed by one configuration, and a plurality of configurations can perform one function.

통신부(210)는 제1 제어 프로토콜을 사용하여 각 컨트롤러를 제어 또는 관리할 수 있다. 다시 말해, 통신부(210)는 각 컨트롤러로 모니터링 정보를 요청할 수 있으며, 각 컨트롤러로부터 모니터링 정보를 수신할 수 있다. 여기서, 모니터링 정보는 미리 정의한 시간 간격에 따라 구간을 나누어 요청 및 수신될 수 있다. 시간 간격에 따라 구간을 나누는 구성에 대해서는 도 6에서 더욱 상세하게 설명하겠다. 모니터링 정보는 미리 정의한 시간 간격에 따라 나눈 구간 별로 각 컨트롤러의 CPU(central processing unit) 부하 및 각 컨트롤러가 각 컨트롤러에 연결된 적어도 하나의 노드와 송수신하는 제2 제어 프로토콜 메시지 수를 의미할 수 있다. 또한, 통신부(210)는 컨트롤러 배치 장치(200)가 모니터링 정보를 기초로 노드의 마스터 컨트롤러를 결정하여 반영한 마스터쉽 토폴로지(mastership topology)를 각 컨트롤러로 송신할 수 있다.The communication unit 210 can control or manage each controller using the first control protocol. In other words, the communication unit 210 can request monitoring information from each controller, and receive monitoring information from each controller. Here, the monitoring information can be requested and received by dividing the interval according to a predefined time interval. The configuration for dividing the interval according to the time interval will be described in more detail in FIG. The monitoring information may mean a central processing unit (CPU) load of each controller and a second number of control protocol messages transmitted and received by each controller and at least one node connected to each controller, according to a predetermined time interval. In addition, the communication unit 210 can determine the master controller of the node based on the monitoring information, and transmit the reflected master master topology to each controller.

데이터베이스(220)는 통신부(210)가 수신한 각 컨트롤러의 모니터링 정보를 저장할 수 있으며, 후술하는 의사결정부(230) 및 연산부(240)에 저장한 모니터링 정보를 제공할 수 있다. 또한, 데이터베이스(220)는 기존의 마스터쉽 토폴로지를 저장하고 있을 수 있으며, 의사결정부(230)에 의해 변경된 마스터쉽 토폴로지를 저장할 수 있다.The database 220 may store monitoring information of each controller received by the communication unit 210 and may provide the monitoring information stored in the decision unit 230 and the operation unit 240 described later. In addition, the database 220 may store an existing master's topology, and may store the changed master's topology by the decision unit 230.

의사결정부(230)는 데이터베이스(220)에 저장된 각 컨트롤러의 모니터링 정보를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지를 변경할 수 있다. 더욱 상세하게는, 의사결정부(230)는 기존의 마스터쉽 토폴로지를 로드할 수 있으며, 로드한 마스터쉽 토폴로지 및 미리 정의한 시간 간격에 따른 시간 간격 또는 타임 슬롯으로 나누어진 모니터링 정보를 기초로 마스터쉽 토폴로지를 변경할지 결정할 수 있다. 다시 말해, 의사결정부(230)는 모니터링 정보 중 각 컨트롤러가 각 컨트롤러에 연결된 노드와 통신한 제2 제어 프로토콜 메시지 수(이하, 제어 프로토콜 메시지 수라 함.)를 이용하여 각 구간별 표준편차를 산출할 수 있으며, 직전 구간의 표준편차 및 현재 구간의 표준편차를 비교하여 마스터쉽 토폴로지를 변경할지 결정할 수 있다. 의사결정부(230)가 마스터쉽 토폴로지를 변경하는 것으로 결정한 경우, 데이터베이스(220)에 저장된 모니터링 정보 중 직전 구간의 CPU 부하 및 현재 구간의 CPU 부하를 이용하여 컨트롤러 배치를 위해 연산부(240)가 수행할 알고리즘을 선택할 수 있다. 이후, 의사결정부(230)는 연산부(240)가 수행한 알고리즘의 결과에 따라 마스터쉽 토폴로지를 변경할 수 있다. 의사결정부(230)의 동작은 도 7과 함께 상세하게 후술하겠다.The decision unit 230 may change the master-s topology that determines the master controller of the node based on the monitoring information of each controller stored in the database 220. [ More specifically, the decision unit 230 may load an existing master-s topology and may determine a master-ship topology based on the loaded master-s topology and monitoring information divided into time intervals or time slots according to pre- You can decide whether to change the topology. In other words, the decision unit 230 calculates the standard deviation of each section using the number of the second control protocol message (hereinafter referred to as the control protocol message number) in which each controller communicates with the node connected to each controller in the monitoring information And can determine whether to change the master-ship topology by comparing the standard deviation of the immediately preceding section and the standard deviation of the current section. When the decision unit 230 decides to change the master-top topology, the calculation unit 240 performs the controller placement using the CPU load of the immediately preceding section and the CPU load of the current section among the monitoring information stored in the database 220 You can choose an algorithm to do. Thereafter, the decision unit 230 may change the master-s topology according to the result of the algorithm performed by the arithmetic unit 240. The operation of the decision unit 230 will be described later in detail with reference to FIG.

연산부(240)는 의사결정부(230)의 선택에 따라 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행할 수 있다. 보다 상세하게는, 연산부(240)는 각 알고리즘에 따라 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러 중 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며, 선택한 컨트롤러에 연결된 노드 중 제어 프로토콜 메시지 수가 가장 큰 노드 또는 가장 작은 노드를 선택할 수 있다. 또한, 연산부(240)는 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러 중 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있으며, 선택한 노드를 제어 프로토콜 메시지 수가 가장 작은 컨트롤러로 연결시키는 결과를 출력할 수 있다. 연산부(240)가 수행하는 알고리즘은 도 9 및 도 10과 함께 상세하게 후술하겠다. The operation unit 240 may perform an advance controller arrangement algorithm or a reverse controller arrangement algorithm according to the selection of the decision unit 230. [ More specifically, the operation unit 240 can select a controller having the largest number of control protocol messages among a plurality of controllers connected to the controller arrangement device 200 according to each algorithm, and the number of control protocol messages among the nodes connected to the selected controller is the largest The node or the smallest node can be selected. In addition, the operation unit 240 can select a controller having the smallest number of control protocol messages among the plurality of controllers connected to the controller placement apparatus 200, and output the result of connecting the selected node to the controller having the smallest number of control protocol messages . The algorithm performed by the operation unit 240 will be described later in detail with reference to FIG. 9 and FIG.

본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)는 적어도 하나의 프로세서 및 프로세서를 통해 상술한 동작이 실행되는 적어도 하나의 명령을 저장하고 있는 메모리를 포함할 수 있다. 여기서, 프로세서는 메모리에 저장된 프로그램 명령(program command)을 실행할 수 있고, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있고, 읽기 전용 메모리(Read Only Memory, ROM) 및/또는 랜덤 액세스 메모리(Random Access Memory, RAM)로 구성될 수 있다.The controller arrangement 200 according to an embodiment of the present invention may include at least one processor and a memory storing at least one instruction through which the above described operation is performed. Herein, the processor may execute a program command stored in a memory, and may be a central processing unit (CPU), a graphics processing unit (GPU), or a dedicated Processor. ≪ / RTI > The memory may be constituted by a volatile storage medium and / or a non-volatile storage medium, and may be constituted by a read only memory (ROM) and / or a random access memory (RAM).

도 5는 본 발명의 일 실시예에 따른 제1 컨트롤러의 블록 구성도이다.5 is a block diagram of a first controller according to an embodiment of the present invention.

도 5를 참조하면, 본 발명의 일 실시예에 따른 제1 컨트롤러(310)는 제1 통신부(311), 제2 통신부(312), 제3 통신부(313), 모니터링부(314) 및 검증부(314)를 포함할 수 있다. 제1 컨트롤러(310)의 구성은 명칭에 한정되지 않으며, 기능에 의해 정의될 수 있다. 또한, 복수의 기능을 하나의 구성이 수행할 수 있으며, 하나의 기능을 복수의 구성이 수행할 수 있다.5, a first controller 310 according to an embodiment of the present invention includes a first communication unit 311, a second communication unit 312, a third communication unit 313, a monitoring unit 314, (314). The configuration of the first controller 310 is not limited to a name, but may be defined by a function. In addition, a plurality of functions can be performed by one configuration, and a plurality of configurations can perform one function.

제1 통신부(311)는 제1 제어 프로토콜을 사용하여 컨트롤러 배치 장치(200)와 통신할 수 있다. 다시 말해, 제1 통신부(311)는 컨트롤러 배치 장치(200)로부터 모니터링 정보 요청을 수신할 수 있으며, 컨트롤러 배치 장치(200)로 모니터링 정보를 송신할 수 있다. 또한, 컨트롤러 배치 장치(200)로부터 변경된 마스터쉽 토폴로지를 수신할 수 있다.The first communication unit 311 can communicate with the controller arrangement device 200 using the first control protocol. In other words, the first communication unit 311 can receive the monitoring information request from the controller arrangement apparatus 200, and can transmit the monitoring information to the controller arrangement apparatus 200. [ In addition, the master layout topology can be received from the controller arrangement device 200. [

제2 통신부(312)는 제2 제어 프로토콜을 사용하여 자신과 연결된 적어도 하나의 노드와 통신할 수 있다. 다시 말해, 제2 통신부(312)는 제2 제어 프로토콜을 사용하여 자신과 연결된 적어도 하나의 노드를 제어 또는 관리할 수 있으며, 제1 통신부(311)로부터 수신한 마스터쉽 토폴로지를 기초로 제어 또는 관리하는 적어도 하나의 노드와의 통신을 계속하거나 중지할 수 있다. The second communication unit 312 can communicate with at least one node connected to the second communication unit 312 using the second control protocol. In other words, the second communication unit 312 may control or manage at least one node connected to the second communication unit 312 using the second control protocol, and may control or manage the master based on the master-s topology received from the first communication unit 311 The communication with the at least one node may be continued or stopped.

제3 통신부(313)는 제3 제어 프로토콜을 사용하여 다른 컨트롤러와 통신할 수 있다. 다시 말해, 컨트롤러 배치 장치(200)에 연결되어 있는 다른 컨트롤러와 제어 또는 관리하는 노드에 대한 정보를 송수신하여 정보를 동기화할 수 있다. 즉, 마스터쉽 토폴로지를 기초로 제어 또는 관리하는 노드에 대한 정보가 변경되는 경우, 변경된 정보를 다른 컨트롤러와 공유할 수 있다.And the third communication unit 313 can communicate with another controller using the third control protocol. In other words, the information can be synchronized by transmitting / receiving information about a node to be controlled or managed with another controller connected to the controller arrangement device 200. That is, when information about a node that is controlled or managed based on the master-s topology is changed, the changed information can be shared with other controllers.

모니터링부(314)는 자신과 연결된 적어도 하나의 노드와 통신한 제2 제어 프로토콜 메시지 수를 미리 정의된 시간 간격에 따라 모니터링할 수 있고, 자신의 CPU 부하를 미리 정의된 시간 간격에 따라 모니터링할 수 있으며, 이를 기록할 수 있다. 여기서, 모니터링하는 제2 제어 프로토콜 메시지 수는 각 노드별로 구분하여 모니터링하여 기록할 수 있다. 본 발명의 설명에서 컨트롤러 배치 장치(200)의 의사결정부(230) 또는 연산부(240)가 동작하는 경우 동작의 기초가 되는 제어 프로토콜 메시지 수는 제2 제어 프로토콜 메시지 수를 의미할 수 있다.The monitoring unit 314 can monitor the number of the second control protocol messages communicated with at least one node connected to the monitoring unit 314 according to a predefined time interval and can monitor its own CPU load according to a predefined time interval And can record it. Here, the number of the second control protocol messages to be monitored can be separately monitored and recorded for each node. In the description of the present invention, when the decision unit 230 or the operation unit 240 of the controller device 200 operates, the number of control protocol messages on which operation is based may mean the number of second control protocol messages.

검증부(314)는 제1 통신부(311)로부터 수신한 마스터쉽 토폴로지를 기초로 자신에 연결된 적어도 하나의 노드 중 연결 상태를 변경하여야 할 노드를 선택할 수 있으며, 제3 통신부(313)에 의해 변경하여야 할 노드에 대한 정보를 송수신된 경우, 정보의 동기화를 검증할 수 있고, 제2 통신부(312)에 의해 수행되는 적어도 하나의 노드와의 연결 상태에 있어서, 상술한 변경 사항이 정상적으로 반영되었는지 검증할 수 있다. The verifying unit 314 can select a node to change the connection status among at least one node connected to the master based on the master-s topology received from the first communication unit 311, It is possible to verify the synchronization of the information in the case of transmitting and receiving the information about the node to be performed and in the connection state with at least one node performed by the second communication unit 312, can do.

또한, 본 발명의 제1 컨트롤러(310)는 도 5에 도시하지 않았지만 상술한 제1 컨트롤러의 동작을 수행하는데 필요한 기타 보조 동작을 수행하는 다양한 구성이 추가로 포함될 수 있다. In addition, the first controller 310 of the present invention may additionally include various configurations not shown in FIG. 5 but performing other auxiliary operations required to perform the operations of the first controller described above.

본 발명의 일 실시예에 따른 제1 컨트롤러(310)는 적어도 하나의 프로세서 및 프로세서를 통해 상술한 동작이 실행되는 적어도 하나의 명령을 저장하고 있는 메모리를 포함할 수 있다. 여기서, 프로세서는 메모리에 저장된 프로그램 명령(program command)을 실행할 수 있고, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있고, 읽기 전용 메모리(Read Only Memory, ROM) 및/또는 랜덤 액세스 메모리(Random Access Memory, RAM)로 구성될 수 있다.The first controller 310 according to an embodiment of the present invention may include at least one processor and a memory storing at least one instruction through which the above-described operations are performed. Herein, the processor may execute a program command stored in a memory, and may be a central processing unit (CPU), a graphics processing unit (GPU), or a dedicated Processor. ≪ / RTI > The memory may be constituted by a volatile storage medium and / or a non-volatile storage medium, and may be constituted by a read only memory (ROM) and / or a random access memory (RAM).

본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러는 상술한 제1 컨트롤러와 동일한 구성을 가질 수 있으며, 동일한 동작을 수행할 수 있다.A plurality of controllers connected to the controller arrangement device 200 according to an embodiment of the present invention may have the same configuration as the first controller and perform the same operation.

도 6은 본 발명의 일 실시예에 따른 컨트롤러 배치 방법이 동작하는 전체 시간을 타임 슬롯으로 나누는 개념을 설명하는 도면이다.6 is a view for explaining a concept of dividing the total time in which the controller arrangement method operates according to an embodiment of the present invention into time slots.

도 6을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 방법은 미리 정의된 시간 간격으로 나눈 구간 또는 타임 슬롯을 기준으로 동작할 수 있다.Referring to FIG. 6, the controller arrangement method according to an embodiment of the present invention can operate based on intervals or time slots divided by a predefined time interval.

다시 말해, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)는 전체 동작 시간을 미리 정의된 시간 간격 t로 나누어 각 동일한 간격의 구간 또는 타임 슬롯을 가질 수 있으며, 각 구간 또는 타임 슬롯마다 컨트롤러 배치 방법을 수행할 수 있다. In other words, the controller arrangement apparatus 200 according to an embodiment of the present invention may divide the total operation time by a predefined time interval t, and may have intervals or time slots of each equal interval. In each interval or time slot, The placement method can be performed.

컨트롤러 배치 장치(200)의 t1부터 t2까지 구간 동작에 있어서, 직전 구간은 t0부터 t1까지를 의미할 수 있고, 직전 구간의 제어 프로토콜 메시지 수 및 CPU 부하는 t0부터 t1까지의 제2 제어 프로토콜 메시지 수 및 CPU 부하를 의미할 수 있다. 또한, 현재 구간은 t1부터 t2까지를 의미할 수 있고, 현재 구간의 제어 프로토콜 메시지 수 및 CPU 부하는 t1부터 t2까지의 제2 제어 프로토콜 메시지 수 및 CPU 부하를 의미할 수 있다.In the interval operation from t1 to t2 of the controller arrangement device 200, the immediately preceding section may mean from t0 to t1, and the number of control protocol messages and the CPU load of the immediately preceding section may be the same as those of the second control protocol message And CPU load. Also, the current interval may mean from t1 to t2, and the number of control protocol messages and the CPU load of the current interval may mean the number of the second control protocol messages and the CPU load from t1 to t2.

컨트롤러 배치 장치(200)는 t1부터 t2까지 구간에서 동작을 수행한 이후, t2부터 t3까지의 구간에서 다시 동작할 수 있으며, 이 경우, 직전 구간은 t1부터 t2까지를 의미할 수 있고, 현재 구간은 t2부터 t3까지를 의미할 수 있다.The controller placement apparatus 200 can operate again in the interval from t2 to t3 after performing the operation in the interval from t1 to t2. In this case, the immediately preceding interval may mean from t1 to t2, Can mean from t2 to t3.

다시 말해, 컨트롤러 배치 장치(200)는 각 구간마다 컨트롤러 배치 장법을 수행할 수 있으며, 이에 따라 복수의 컨트롤러도 각 구간마다 제2 제어 프로토콜 메시지 수 및 CPU 부하를 모니터링할 수 있고, 마스터쉽 토폴로지를 기초로 연결된 적어도 하나의 노드에 대한 연결 상태를 유지 또는 변경할 수 있다.In other words, the controller arrangement device 200 can perform the controller arrangement scheme for each section, whereby the plurality of controllers can also monitor the number of second control protocol messages and the CPU load for each section, The connection state can be maintained or changed for at least one node connected to the base.

도 7은 본 발명의 일 실시예에 따른 컨트롤러 배치 방법을 설명하는 순서도이다.7 is a flowchart illustrating a controller arrangement method according to an embodiment of the present invention.

도 7을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)는 컨트롤러를 배치하기 위해 모니터링 단계 및 의사결정 단계로 구분하여 동작할 수 있다.Referring to FIG. 7, the controller arrangement apparatus 200 according to an embodiment of the present invention can be divided into a monitoring step and a decision step in order to arrange the controller.

우선, 모니터링 단계에서 컨트롤러 배치 장치(200)는 마스터쉽 토폴로지를 로드할 수 있고(S710), 미리 정의된 시간 간격에 따른 타임 슬롯 t동안의 연결된 모든 컨트롤러의 제어 프로토콜 메시지 수 및 CPU 부하를 포함하는 모니터링 정보를 수신할 수 있다(S720). 또한, 수신한 모니터링 정보를 타임 슬롯 별로 데이터베이스(220)에 저장할 수 있다(S730).First, in the monitoring step, the controller placement apparatus 200 can load the master-s topology (S710), and includes the number of control protocol messages and the CPU load of all controllers connected during the time slot t according to the pre- The monitoring information may be received (S720). In addition, the received monitoring information may be stored in the database 220 for each time slot (S730).

이후, 의사결정 단계에서 컨트롤러 배치 장치(200)의 의사결정부(230)는 수학식 1에 따라 직전 구간의 모든 컨트롤러의 제어 프로토콜 메시지 수에 대한 표준 편차

Figure 112017096229156-pat00001
를 산출할 수 있다(S740). Thereafter, in the decision step, the decision unit 230 of the controller arrangement apparatus 200 calculates the standard deviation of the number of control protocol messages of all the controllers in the immediately preceding section according to Equation (1)
Figure 112017096229156-pat00001
(S740).

Figure 112017096229156-pat00002
Figure 112017096229156-pat00002

여기서,

Figure 112017096229156-pat00003
은 직전 구간의 컨트롤러 배치 장치에 연결된 컨트롤러의 수를 의미할 수 있고,
Figure 112017096229156-pat00004
는 i번째 컨트롤러의 직전 구간 제어 프로토콜 메시지 수를 의미할 수 있으며,
Figure 112017096229156-pat00005
는 직전 구간 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 의미할 수 있다. 여기서,
Figure 112017096229156-pat00006
는 수학식 2에 의해 산출될 수 있다.here,
Figure 112017096229156-pat00003
May refer to the number of controllers connected to the controller arrangement of the immediately preceding section,
Figure 112017096229156-pat00004
May denote the number of immediately preceding interval control protocol messages of the i < th > controller,
Figure 112017096229156-pat00005
May mean the average value of the number of control protocol messages of all controllers in the previous interval. here,
Figure 112017096229156-pat00006
Can be calculated by Equation (2).

Figure 112017096229156-pat00007
Figure 112017096229156-pat00007

또한, 의사결정부(230)는 수학식 3에 따라 현재 구간의 모든 컨트롤러의 제어 프로토콜 메시지 수에 대한 표준 편차

Figure 112017096229156-pat00008
도 산출할 수 있다(S750).In addition, the decision unit 230 determines the standard deviation of the number of control protocol messages of all controllers in the current section according to Equation (3)
Figure 112017096229156-pat00008
(S750).

Figure 112017096229156-pat00009
Figure 112017096229156-pat00009

여기서,

Figure 112017096229156-pat00010
은 현재 구간의 컨트롤러 배치 장치에 연결된 컨트롤러의 수를 의미할 수 있고,
Figure 112017096229156-pat00011
는 i번째 컨트롤러의 현재 구간 제어 프로토콜 메시지 수를 의미할 수 있으며,
Figure 112017096229156-pat00012
는 현재 구간 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 의미할 수 있다. 여기서,
Figure 112017096229156-pat00013
는 수학식 4에 의해 산출될 수 있다.here,
Figure 112017096229156-pat00010
May refer to the number of controllers connected to the controller placement device of the current section,
Figure 112017096229156-pat00011
May denote the number of current interval control protocol messages of the i < th > controller,
Figure 112017096229156-pat00012
May mean the average value of the number of control protocol messages of all controllers in the current interval. here,
Figure 112017096229156-pat00013
Can be calculated by Equation (4).

Figure 112017096229156-pat00014
Figure 112017096229156-pat00014

상술한 표준 편차 및 평균 값을 산출하는 방법은 하나의 예로, 이에 한정되지 않으며, 다른 방법에 의해 표준 편차 및 평균 값을 산출할 수도 있다.The method of calculating the standard deviation and the average value described above is not limited to this, and the standard deviation and the average value may be calculated by other methods.

이후, 의사결정부(230)는 산출한 직전 구간의 표준 편차 및 현재 구간의 표준 편차를 비교할 수 있으며(S760), 현재 구간의 표준 편차가 직전 구간의 표준 편자보다 크지 않으면, 컨트롤러 배치를 현재 상태로 유지할 수 있다. 다만, 현재 구간의 표준 편차가 직전 구간의 표준 편차보다 큰 경우, 수행할 알고리즘을 선택하기 위해 현재 구간의 CPU 부하 및 직전 구간의 CPU 부하를 비교할 수 있다(S770). 여기서, CPU 부하는 컨트롤러 배치 장치(200)에 연결된 모든 컨트롤러의 CPU 부하의 평균 값을 의미할 수 있다.Thereafter, the decision unit 230 can compare the calculated standard deviation of the immediately preceding section and the standard deviation of the current section (S760). If the standard deviation of the current section is not larger than the standard deviation of the immediately preceding section, . However, if the standard deviation of the current interval is larger than the standard deviation of the immediately preceding interval, the CPU load of the current interval and the CPU load of the immediately preceding interval can be compared to select the algorithm to be performed (S770). Here, the CPU load may mean the average value of the CPU load of all controllers connected to the controller arrangement device 200. [

의사결정부(230)는 현재 구간의 CPU 부하가 직전 구간의 CPU 부하보다 큰 경우, 연산부(240)가 후진 컨트롤러 배치 알고리즘을 수행하도록 할 수 있으며(S780), 현재 구간의 CPU 부하가 직전 구간의 CPU 부하보다 크지 않은 경우, 연산부(240)가 전진 컨트롤러 배치 알고리즘을 수행하도록 할 수 있다. 여기서, 전진 컨트롤러 배치 알고리즘은 도 10과 함께 상세히 후술하고, 후진 컨트롤러 배치 알고리즘은 도 11과 함께 상세히 후술하겠다.If the CPU load of the current section is greater than the CPU load of the immediately preceding section, the decision section 230 may cause the operation section 240 to perform the backward controller arrangement algorithm (S780). If the CPU load of the current section is If it is not larger than the CPU load, the arithmetic unit 240 may be made to execute the forward controller arrangement algorithm. Here, the forward controller arrangement algorithm will be described later in detail with reference to FIG. 10, and the backward controller arrangement algorithm will be described later in detail with reference to FIG.

연산부(240)의 알고리즘 수행 후, 컨트롤러 배치 장치(200)의 의사결정부(230)는 알고리즘 수행 결과를 기초로 마스터쉽 토폴로지를 변경할 수 있으며, 변경된 마스터쉽 토폴로지를 데이터베이스에 저장할 수 있고, 통신부(210)에 의해 각 컨트롤러로 송신할 수 있다.After the algorithm of the arithmetic unit 240 is performed, the decision unit 230 of the controller arrangement apparatus 200 can change the master-topology based on the algorithm execution result, store the changed master-topology in the database, 210 to each controller.

도 8은 본 발명의 일 실시예에 따른 컨트롤 배치 방법 중 모니터링 단계를 구체적으로 나타낸 플로우 차트이다.8 is a flowchart specifically illustrating a monitoring step of the control arrangement method according to an embodiment of the present invention.

본 발명의 일 실시예에 따른 컨트롤러 배치 장치가 수행하는 컨트롤러 배치 방법 중 모니터링 단계를 구체적으로 살펴보면, 4개의 단계로 나누어질 수 있다. The monitoring step of the controller arrangement method performed by the controller arrangement apparatus according to an embodiment of the present invention can be divided into four steps.

도 8을 참조하면, 제1 단계(S810)에서 컨트롤러 배치 장치(200)에 연결된 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330)가 미리 정의된 시간 간격 t 동안 제2 제어 프로토콜 메시지 및 CPU 부하를 모니터링할 수 있고, 제2 단계(S820)에서 컨트롤러 배치 장치(200)가 연결된 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330)에 t 동안의 모니터링 정보를 각각 요청할 수 있다. 제3 단계(S830)에서 컨트롤러 배치 장치(200)가 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330)로부터 모니터링 정보를 각각 수신할 수 있고, 제4 단계(S840)에서 컨트롤러 배치 장치(200)가 수신한 각 컨트롤러의 모니터링 정보를 데이터베이스에 저장할 수 있다. 이후, 컨트롤러 배치 장치(200)는 데이터베이스에 저장된 모니터링 정보를 기초로 컨트롤러 배치를 수행할 수 있다.8, when the first controller 310, the second controller 320, and the third controller 330 connected to the controller arrangement device 200 in the first step S810, The second controller 320 and the third controller 330 to which the controller arrangement device 200 is connected in the second step S820, Respectively. The controller arrangement device 200 can receive the monitoring information from the first controller 310, the second controller 320 and the third controller 330 respectively in the third step S830 and the fourth step S840, The controller arrangement device 200 can store the monitoring information of each controller received in the database. Thereafter, the controller arrangement device 200 can perform the controller arrangement based on the monitoring information stored in the database.

도 9는 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 전반부를 설명하는 순서도이다.9 is a flowchart illustrating the first half of the forward controller arrangement algorithm according to an embodiment of the present invention.

도 9를 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 전진 컨트롤러 배치 알고리즘은 전반부에서 우선, 컨트롤러 배치 장치(200)에 연결된 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 산출할 수 있다(S910). 여기서, 평균 값은 의사결정부(230)가 산출한 현재 구간의 평균 값을 이용할 수 있으나, 새로 산출할 수도 있다. 이후, 연산부(240)는 산출한 평균 값을 기준으로 모든 컨트롤러를 제1 컨트롤러 그룹과 제2 컨트롤러 그룹으로 분류할 수 있다(S920). 더욱 상세하게는 연산부(240)는 컨트롤러의 제어 프로토콜 메시지 수가 산출한 평균 값보다 큰 경우, 제1 컨트롤러 그룹에 해당 컨트롤러를 저장할 수 있고, 컨트롤러의 제어 프로토콜 메시지 수가 산출한 평균 값보다 크지 않은 경우, 제2 컨트롤러 그룹에 해당 컨트롤러를 저장할 수 있다.9, the forward controller arrangement algorithm performed by the arithmetic unit 240 of the controller arrangement apparatus 200 according to an embodiment of the present invention is first performed in the first half, The average value of the number of messages can be calculated (S910). Here, the average value may be an average value of the current section calculated by the decision unit 230, but may be newly calculated. Thereafter, the operation unit 240 can classify all the controllers into the first controller group and the second controller group based on the calculated average value (S920). More specifically, when the calculation unit 240 is larger than the average value calculated by the number of control protocol messages in the controller, the controller can store the controller in the first controller group. If the number of control protocol messages in the controller is not larger than the calculated average value, The controller can be stored in the second controller group.

연산부(240)는 모든 컨트롤러의 분류 후, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인지 판단할 수 있다(S930). 여기서, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인 경우, 알고리즘을 종료할 수 있으며, 컨트롤러 그룹 내의 컨트롤러의 개수가 0보다 큰 경우, 계속하여 알고리즘을 수행할 수 있다.The calculation unit 240 can determine whether the number of controllers in the first controller group is 0 after all controllers are classified (S930). Here, if the number of controllers in the first controller group is 0, the algorithm can be terminated. If the number of controllers in the controller group is larger than 0, the algorithm can be continuously executed.

연산부(240)는 제1 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며(S940), 선택한 컨트롤러에 연결된 적어도 하나의 노드를 노드 그룹에 저장할 수 있고, 노드 그룹에 저장된 적어도 하나의 노드를 노드 별 통신한 제어 프로토콜 메시지 수에 따라 내림차순으로 정렬할 수 있다(S950). 이후, 전진 컨트롤러 배치 알고리즘은 A1을 통해 중반부로 넘어가며, 도 10에서 계속하여 설명하겠다. The operation unit 240 can select a controller having the largest number of control protocol messages in the first controller group (S940), store at least one node connected to the selected controller in the node group, And may be sorted in descending order according to the number of control protocol messages communicated per node (S950). Thereafter, the forward controller arrangement algorithm proceeds to mid-point through A1, which will be described later in FIG.

도 10은 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 중반부를 설명하는 순서도이다.10 is a flow chart illustrating the middle part of the forward controller arrangement algorithm according to an embodiment of the present invention.

도 10을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 전진 컨트롤러 배치 알고리즘은 중반부에서 노드 그룹 내의 노드의 개수가 0인지 판단할 수 있으며(S1010), 노드의 개수가 0인 경우, 제1 컨트롤러 그룹에서 선택한 컨트롤러를 삭제할 수 있고(S1020), 도 9에서 설명한 전진 컨트롤러 배치 알고리즘 전반부로 A2를 통해 돌아가 제1 컨트롤러 그룹 내의 컨트롤러의 개수를 다시 판단할 수 있다(S930). 또한, 연산부(240)는 노드의 개수가 0보다 큰 경우, 노드 그룹에서 내림차순으로 정렬된 노드 중 가장 앞의 노드를 선택할 수 있다(S1030). 여기서, 선택된 노드는 제어 프로토콜 메시지 수에 따라 내림차순 정렬한 노드 중 가장 앞의 노드로 제어 프로토콜 메시지 수가 가장 큰 노드를 의미할 수 있다.10, the forward controller arrangement algorithm performed by the operation unit 240 of the controller arrangement apparatus 200 according to an embodiment of the present invention can determine whether the number of nodes in the node group is 0 in the middle part (S1010 If the number of nodes is 0, the controller selected by the first controller group can be deleted (S1020), and the number of controllers in the first controller group is determined again by going back to A2 in the first half of the forward controller arrangement algorithm described in FIG. 9 (S930). If the number of nodes is greater than 0, the operation unit 240 may select the first node among the nodes arranged in descending order in the node group (S1030). Here, the selected node may mean a node having the largest number of control protocol messages among the nodes arranged in descending order according to the number of control protocol messages.

노드를 선택한 연산부(240)는 수학식 5에 따라 제1 변수를 산출할 수 있다(S1040).The operation unit 240 selecting the node may calculate the first variable according to Equation (5) (S1040).

Figure 112017096229156-pat00015
Figure 112017096229156-pat00015

여기서,

Figure 112017096229156-pat00016
는 제1 변수를 의미할 수 있고,
Figure 112017096229156-pat00017
는 선택된 컨트롤러의 제어 프로토콜 메시지 수를 의미할 수 있으며,
Figure 112017096229156-pat00018
는 선택된 노드의 제어 프로토콜 메시지 수를 의미할 수 있다.here,
Figure 112017096229156-pat00016
May mean a first variable,
Figure 112017096229156-pat00017
May mean the number of control protocol messages of the selected controller,
Figure 112017096229156-pat00018
May refer to the number of control protocol messages of the selected node.

이후, 연산부(240)는 제1 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1050), 제1 변수가 평균 값보다 크지 않은 경우, 노드 그룹에서 선택한 노드를 삭제할 수 있고(S1060), 노드 그룹에 저장된 노드의 개수를 판단할 수 있다(S1010). 제1 변수가 평균 값보다 큰 경우, 연산부(240)는 제2 컨트롤러 그룹에 저장된 컨트롤러를 임시 컨트롤러 그룹에 복사하여 저장할 수 있다(S1070). 이후, 전진 컨트롤러 알고리즘은 B1을 통해 후반부로 넘어가며, 도 11에서 계속하여 설명하겠다.Thereafter, the operation unit 240 can compare the first variable with the average value of the number of control protocol messages of all controllers described above (S1050). If the first variable is not larger than the average value, the node selected in the node group can be deleted (S1060), and the number of nodes stored in the node group can be determined (S1010). If the first variable is larger than the average value, the operation unit 240 may copy the controller stored in the second controller group to the temporary controller group and store the copied controller (S1070). Thereafter, the forward controller algorithm proceeds through B1 to the second half, which will be described further in FIG.

도 11은 본 발명의 일 실시예에 따른 전진 컨트롤러 배치 알고리즘의 후반부를 설명하는 순서도이다.11 is a flowchart illustrating the latter part of the forward controller arrangement algorithm according to an embodiment of the present invention.

도 11을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 전진 컨트롤러 배치 알고리즘은 후반부에서 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1110). 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0인 경우, B2를 통해 전진 컨트롤러 배치 알고리즘의 중반부로 돌아가 상술한 노드 그룹에서 선택한 노드를 삭제할 수 있고(S1060), 노드 그룹에 저장된 노드의 개수를 판단할 수 있다(S1010).11, the forward controller arrangement algorithm performed by the arithmetic unit 240 of the controller arrangement apparatus 200 according to an embodiment of the present invention can determine the number of controllers stored in the temporary controller group in the second half (S1110 ). If the number of controllers stored in the temporary controller group is 0, it is possible to return to the middle of the forward controller arrangement algorithm through B2 and delete the node selected in the node group described above (S1060), and determine the number of nodes stored in the node group (S1010).

다만, 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0보다 큰 경우, 연산부(240)는 임시 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있고(S1120), 수학식 6에 따라 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수 및 선택한 노드의 제어 프로토콜 메시지 수를 기초로 제2 변수를 산출할 수 있다(S1130).However, if the number of controllers stored in the temporary controller group is larger than 0, the operation unit 240 can select a controller having the smallest number of control protocol messages in the temporary controller group (S1120) The second parameter may be calculated based on the number of control protocol messages of the controller and the number of control protocol messages of the selected node (S1130).

Figure 112017096229156-pat00019
Figure 112017096229156-pat00019

여기서,

Figure 112017096229156-pat00020
는 제2 변수를 의미할 수 있고,
Figure 112017096229156-pat00021
는 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수를 의미할 수 있으며,
Figure 112017096229156-pat00022
는 선택된 노드의 제어 프로토콜 메시지 수를 의미할 수 있다.here,
Figure 112017096229156-pat00020
May mean a second variable,
Figure 112017096229156-pat00021
Can mean the number of control protocol messages of the controller selected in the temporary controller group,
Figure 112017096229156-pat00022
May refer to the number of control protocol messages of the selected node.

연산부(240)는 제2 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1140), 제2 변수가 평균 값보다 큰 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러를 임시 컨트롤러 그룹에서 삭제할 수 있고(S1150), 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1110).The operation unit 240 can compare the second variable with the average value of the number of control protocol messages of all the controllers described above (S1140). If the second variable is larger than the average value, the controller selected by the temporary controller group (S1150), and the number of controllers stored in the temporary controller group can be determined (S1110).

연산부(240)는 제2 변수가 평균 값보다 크지 않은 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러가 선택한 노드를 제어 또는 관리하는 것으로 결정하고, 이에 따른 변경 사항을 알고리즘의 결과를 출력할 수 있다(S1160). 또한, 연산부(240)는 B2를 통해 전진 컨트롤러 배치 알고리즘의 중반부로 넘어가 선택한 노드를 노드 그룹에서 삭제할 수 있고(S1060), 계속하여 알고리즘을 수행할 수 있다. 이후, 컨트롤러 배치 장치(200)의 의사결정부(230)는 연산부(240)의 알고리즘 결과를 기초로 마스터쉽 토폴로지를 변경할 수 있다. If the second variable is not larger than the average value, the operation unit 240 determines that the controller selected by the temporary controller group controls or manages the selected node, and outputs the result of the algorithm change according to the determined result (S 1160) . In addition, the operation unit 240 moves to the middle of the forward controller arrangement algorithm through B2 to delete the selected node from the node group (S1060), and can continue the algorithm. Thereafter, the decision unit 230 of the controller arrangement apparatus 200 can change the master-s topology based on the algorithm result of the arithmetic unit 240.

도 12는 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 전반부를 설명하는 순서도이다.12 is a flowchart illustrating the first half of a backward controller arrangement algorithm according to an embodiment of the present invention.

도 12를 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 후진 컨트롤러 배치 알고리즘은 전반부에서 우선, 컨트롤러 배치 장치(200)에 연결된 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 산출할 수 있다(S1210). 여기서, 평균 값은 의사결정부(230)가 산출한 현재 구간의 평균 값을 이용할 수 있으나, 새로 산출할 수도 있다. 이후, 연산부(240)는 산출한 평균 값을 기준으로 모든 컨트롤러를 제1 컨트롤러 그룹과 제2 컨트롤러 그룹으로 분류할 수 있다(S1220). 더욱 상세하게는 연산부(240)는 컨트롤러의 제어 프로토콜 메시지 수가 산출한 평균 값보다 큰 경우, 제1 컨트롤러 그룹에 해당 컨트롤러를 저장할 수 있고, 컨트롤러의 제어 프로토콜 메시지 수가 산출한 평균 값보다 크지 않은 경우, 제2 컨트롤러 그룹에 해당 컨트롤러를 저장할 수 있다.12, the backward controller arrangement algorithm performed by the arithmetic unit 240 of the controller arrangement apparatus 200 according to an embodiment of the present invention is performed in the first half of the present invention. The average value of the number of messages can be calculated (S1210). Here, the average value may be an average value of the current section calculated by the decision unit 230, but may be newly calculated. Thereafter, the operation unit 240 can classify all the controllers into the first controller group and the second controller group based on the calculated average value (S1220). More specifically, when the calculation unit 240 is larger than the average value calculated by the number of control protocol messages in the controller, the controller can store the controller in the first controller group. If the number of control protocol messages in the controller is not larger than the calculated average value, The controller can be stored in the second controller group.

연산부(240)는 모든 컨트롤러의 분류 후, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인지 판단할 수 있다(S1230). 여기서, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인 경우, 알고리즘을 종료할 수 있으며, 컨트롤러 그룹 내의 컨트롤러의 개수가 0보다 큰 경우, 계속하여 알고리즘을 수행할 수 있다.After the classification of all the controllers, the calculation unit 240 can determine whether the number of controllers in the first controller group is zero (S1230). Here, if the number of controllers in the first controller group is 0, the algorithm can be terminated. If the number of controllers in the controller group is larger than 0, the algorithm can be continuously executed.

연산부(240)는 제1 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며(S1240), 선택한 컨트롤러에 연결된 적어도 하나의 노드를 노드 그룹에 저장할 수 있고, 노드 그룹에 저장된 적어도 하나의 노드를 노드 별 통신한 제어 프로토콜 메시지 수에 따라 오름차순으로 정렬할 수 있다(S1250). 이후, 후진 컨트롤러 배치 알고리즘은 C1을 통해 중반부로 넘어가며, 도 13에서 계속하여 설명하겠다.The operation unit 240 can select a controller having the largest number of control protocol messages in the first controller group (S1240), store at least one node connected to the selected controller in the node group, And may be sorted in ascending order according to the number of control protocol messages communicated per node (S1250). Thereafter, the backward controller arrangement algorithm goes over C1 to mid-point, and will be described in detail with reference to FIG.

도 13은 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 중반부를 설명하는 순서도이다.13 is a flowchart illustrating the middle part of a backward controller arrangement algorithm according to an embodiment of the present invention.

도 13을 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 후진 컨트롤러 배치 알고리즘은 중반부에서 노드 그룹 내의 노드의 개수가 0인지 판단할 수 있으며(S1310), 노드의 개수가 0인 경우, 제1 컨트롤러 그룹에서 선택한 컨트롤러를 삭제할 수 있고(S1320), 도 12에서 설명한 후진 컨트롤러 배치 알고리즘 전반부로 C2를 통해 돌아가 제1 컨트롤러 그룹 내의 컨트롤러의 개수를 다시 판단할 수 있다(S1230). 또한, 연산부(240)는 노드의 개수가 0보다 큰 경우, 노드 그룹에서 오름차순으로 정렬된 노드 중 가장 앞의 노드를 선택할 수 있다(S1330). 여기서, 선택된 노드는 제어 프로토콜 메시지 수에 따라 오름차순 정렬한 노드 중 가장 앞의 노드로 제어 프로토콜 메시지 수가 가장 작은 노드를 의미할 수 있다.13, the backward controller arrangement algorithm performed by the operation unit 240 of the controller arrangement apparatus 200 according to the embodiment of the present invention can determine whether the number of nodes in the node group is 0 in the middle part (S1310 If the number of nodes is 0, the controller selected in the first controller group can be deleted (S1320), and the number of controllers in the first controller group is determined again by going back to C2 in the first half of the backward controller arrangement algorithm described in Fig. (S1230). If the number of nodes is greater than 0, the operation unit 240 can select the first node among the nodes arranged in ascending order in the node group (S1330). Here, the selected node may mean a node having the smallest number of control protocol messages among the nodes arranged in ascending order according to the number of control protocol messages.

노드를 선택한 연산부(240)는 상술한 수학식 5에 따라 전진 컨트롤러 배치 알고리즘과 같이 제1 변수를 산출할 수 있다(S1340). 이후, 연산부(240)는 제1 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1350), 제1 변수가 평균 값보다 크지 않은 경우, 노드 그룹에서 선택한 노드를 삭제할 수 있고(S1360), 노드 그룹에 저장된 노드의 개수를 판단할 수 있다(S1310). 제1 변수가 평균 값보다 큰 경우, 연산부(240)는 제2 컨트롤러 그룹에 저장된 컨트롤러를 임시 컨트롤러 그룹에 복사하여 저장할 수 있다(S370). 이후, 후진 컨트롤러 알고리즘은 D1을 통해 후반부로 넘어가며, 도 14에서 계속하여 설명하겠다.The operation unit 240 that selects the node can calculate the first variable like the forward controller arrangement algorithm according to the above-described equation (5) (S1340). Thereafter, the operation unit 240 can compare the first variable with the average value of the number of control protocol messages of all controllers described above (S1350). If the first variable is not larger than the average value, the selected node can be deleted (S1360), and the number of nodes stored in the node group can be determined (S1310). If the first variable is larger than the average value, the operation unit 240 may copy the controller stored in the second controller group to the temporary controller group and store the copied controller (S370). Thereafter, the backward controller algorithm passes through D1 to the latter half, and will be described in detail later with reference to FIG.

도 14는 본 발명의 일 실시예에 따른 후진 컨트롤러 배치 알고리즘의 후반부를 설명하는 순서도이다.14 is a flowchart illustrating the latter part of a backward controller arrangement algorithm according to an embodiment of the present invention.

도 14를 참조하면, 본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)의 연산부(240)가 수행하는 후진 컨트롤러 배치 알고리즘은 후반부에서 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1410). 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0인 경우, D2를 통해 후진 컨트롤러 배치 알고리즘의 중반부로 돌아가 상술한 노드 그룹에서 선택한 노드를 삭제할 수 있고(S1360), 노드 그룹에 저장된 노드의 개수를 판단할 수 있다(S1310).Referring to FIG. 14, the backward controller arrangement algorithm performed by the arithmetic unit 240 of the controller arrangement apparatus 200 according to an embodiment of the present invention can determine the number of controllers stored in the temporary controller group in the second half (S1410 ). If the number of controllers stored in the temporary controller group is 0, it is possible to return to the midpoint of the backward controller arrangement algorithm through D2 to delete the selected node in the node group (S1360), and to determine the number of nodes stored in the node group (S1310).

다만, 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0보다 큰 경우, 연산부(240)는 임시 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있고(S1420), 상술한 수학식 6에 따라 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수 및 선택한 노드의 제어 프로토콜 메시지 수를 기초로 전진 컨트롤러 배치 알고리즘과 같이 제2 변수를 산출할 수 있다(S1430).However, if the number of controllers stored in the temporary controller group is larger than 0, the operation unit 240 can select a controller having the smallest number of control protocol messages in the temporary controller group (S1420) The second parameter may be calculated as a forward controller arrangement algorithm based on the number of control protocol messages of the controller selected in step S1430 and the number of control protocol messages of the selected node.

연산부(240)는 제2 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1440), 제2 변수가 평균 값보다 큰 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러를 임시 컨트롤러 그룹에서 삭제할 수 있고(S1450), 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1410).The operation unit 240 can compare the second variable with the average value of the number of control protocol messages of all the controllers described above (S1440). If the second variable is larger than the average value, the controller selected in the temporary controller group (S1450), and the number of controllers stored in the temporary controller group can be determined (S1410).

제2 변수가 평균 값보다 크지 않은 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러가 선택한 노드를 제어 또는 관리하는 것으로 결정하고, 이에 따른 변경 사항을 알고리즘의 결과를 출력할 수 있다(S1460). 또한, 연산부(240)는 D2를 통해 후진 컨트롤러 배치 알고리즘의 중반부로 넘어가 선택한 노드를 노드 그룹에서 삭제할 수 있고(S1360), 계속하여 알고리즘을 수행할 수 있다. 이후, 컨트롤러 배치 장치(200)의 의사결정부(230)는 연산부(240)의 알고리즘 결과를 기초로 마스터쉽 토폴로지를 변경할 수 있다.If the second variable is not larger than the average value, it is determined that the controller selected in the temporary controller group controls or manages the selected node, and the result of the algorithm change can be output (S1460). In addition, the operation unit 240 moves to the middle of the rear controller arrangement algorithm through D2, and can delete the selected node from the node group (S1360), and can continue to execute the algorithm. Thereafter, the decision unit 230 of the controller arrangement apparatus 200 can change the master-s topology based on the algorithm result of the arithmetic unit 240.

도 15는 본 발명의 일 실시예에 따른 컨트롤러 배치 방법을 수행한 후, 변경된 마스터쉽 토폴로지를 적용하는 방법을 설명하는 플로우 차트이다.FIG. 15 is a flowchart illustrating a method of applying a changed master master topology after performing a controller arrangement method according to an embodiment of the present invention.

도 15를 참조하여 본 발명의 일 실시예에 따른 컨트롤러 배치 장치가 변경된 마스터쉽 토폴로지를 각 컨트롤러에 적용하는 방법을 설명하면, 6개의 단계로 나누어 질 수 있다.Referring to FIG. 15, a method of applying a master layout topology to each controller by a controller arrangement apparatus according to an embodiment of the present invention can be divided into six steps.

제1 단계(S1510)에서 우선, 컨트롤러 배치 장치가 전진 또는 후진 컨트롤러 배치 알고리즘을 수행할 수 있고, 알고리즘 결과에 따라 마스터쉽 토폴로지가 변경될 수 있으며, 제2 단계(S1520)에서 컨트롤러 배치 장치(200)가 통신부(210)를 통해 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330)로 변경된 마스터쉽 토폴로지를 각각 전송할 수 있다.In the first step S1510, the controller arrangement device can perform the forward or backward controller arrangement algorithm, and the master-s topology can be changed according to the algorithm result. In the second step S1520, the controller arrangement device 200 May transmit the changed master master topology to the first controller 310, the second controller 320, and the third controller 330 through the communication unit 210, respectively.

제3 단계(S1530)에서 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330) 각각은 변경된 마스터쉽 토폴로지를 확인하여 변경해야할 노드를 선택할 수 있으며, 제4 단계(S1540)에서 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330) 각각은 변경해야할 노드에 대한 정보를 각 컨트롤러의 제3 통신부를 통해 적어도 하나의 다른 컨트롤러에게 서로 송신할 수 있다. 이후, 제5 단계(S1550)에서 제1 컨트롤러(310), 제2 컨트롤러(320) 및 제3 컨트롤러(330) 각각은 변경해야할 노드에 대한 정보를 동기화하고, 자신에 연결된 노드에 대한 연결 상태를 변경 또는 유지한 후, 변경 완료에 대하여 검증할 수 있다. 다시 말해, 정상적으로 각 컨트롤러가 마스터쉽 토폴로지에 따른 노드의 제어권을 가지고 있는지 검증할 수 있다.In step S1530, each of the first controller 310, the second controller 320, and the third controller 330 can select a node to be changed by checking the changed master-topology. In the fourth step S1540, The first controller 310, the second controller 320, and the third controller 330 may transmit information about nodes to be changed to each other through at least one other controller through the third communication unit of each controller. Then, in the fifth step S1550, each of the first controller 310, the second controller 320 and the third controller 330 synchronizes the information about the node to be changed, After the change or maintenance, the change completion can be verified. In other words, you can normally verify that each controller has control over the nodes according to the master-s topology.

제6 단계(S1560)에서 컨트롤러 배치 장치(200)는 모든 컨트롤러의 배치가 완료된 이후, 다음 타임 슬롯에서의 동작을 수행할 수 있다. 다시 말해, 컨트롤러 배치 장치(200)는 다음 타임 슬롯에서 동일하게 컨트롤러 배치 방법을 수행할 수 있다.In the sixth step S1560, the controller arrangement device 200 can perform the operation in the next time slot after the placement of all the controllers is completed. In other words, the controller placement apparatus 200 can perform the same controller placement method in the next time slot.

본 발명의 실시예에 따른 SDN 컨트롤러의 휴리스틱 배치 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다. The operation of the heuristic arrangement method of the SDN controller according to the embodiment of the present invention can be implemented as a computer-readable program or code on a computer-readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. The computer-readable recording medium may also be distributed and distributed in a networked computer system so that a computer-readable program or code can be stored and executed in a distributed manner.

또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.In addition, the computer-readable recording medium may include a hardware device configured to store and execute program instructions, such as a ROM, a RAM, a flash memory, and the like. Program instructions may include machine language code such as those produced by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like.

본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다. While some aspects of the invention have been described in the context of an apparatus, it may also represent a description according to a corresponding method, wherein the block or apparatus corresponds to a feature of the method step or method step. Similarly, aspects described in the context of a method may also be represented by features of the corresponding block or item or corresponding device. Some or all of the method steps may be performed (e.g., by a microprocessor, a programmable computer or a hardware device such as an electronic circuit). In some embodiments, one or more of the most important method steps may be performed by such an apparatus.

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.In embodiments, a programmable logic device (e.g., a field programmable gate array) may be used to perform some or all of the functions of the methods described herein. In embodiments, the field programmable gate array may operate in conjunction with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by some hardware device.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the present invention as defined by the following claims It can be understood that

200: 컨트롤러 배치 장치 210: 통신부
220: 데이터베이스 230: 의사결정부
240: 연산부 310: 제1 컨트롤러
311: 제1 통신부 312: 제2 통신부
313: 제3 통신부 314: 모니터링부
315: 검증부 320: 제2 컨트롤러
330: 제3 컨트롤러
200: controller arrangement unit 210: communication unit
220: Database 230: Decision Making Department
240: Operation unit 310: First controller
311: first communication unit 312: second communication unit
313: Third communication unit 314: Monitoring unit
315: verification unit 320: second controller
330: Third controller

Claims (19)

복수의 컨트롤러와 연결된 컨트롤러 배치 장치의 동작 방법에 있어서,
미리 정의한 시간 간격에 따라 나눈 구간 별로 상기 복수의 컨트롤러의 각 CPU(central processing unit) 부하 및 상기 복수의 컨트롤러와 상기 복수의 컨트롤러에 각각 연결된 적어도 하나의 노드 간의 제어 프로토콜 메시지의 개수를 수신하는 단계;
상기 구간 중 제1 구간의 상기 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제1 표준 편차를 산출하는 단계;
상기 제1 구간 직후인 제2 구간의 상기 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제2 표준 편차를 산출하는 단계;
상기 제2 표준 편차가 상기 제1 표준 편차보다 큰 경우, 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값 및 상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값을 각각 산출하여 비교하는 단계;
상기 비교 결과를 기초로 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행하는 단계; 및
상기 전진 컨트롤러 배치 알고리즘 또는 상기 후진 컨트롤러 배치 알고리즘을 수행한 결과를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 변경하여 상기 복수의 컨트롤러를 배치하는 단계를 포함하는, 컨트롤러 배치 방법.
A method of operating a controller arrangement device connected to a plurality of controllers,
Receiving a central processing unit (CPU) load of the plurality of controllers and a number of control protocol messages between at least one node connected to the plurality of controllers and the plurality of controllers, respectively, according to a predetermined time interval;
Calculating a first standard deviation with respect to the number of control protocol messages of the plurality of controllers in the first section of the section;
Calculating a second standard deviation with respect to the number of control protocol messages of the plurality of controllers in a second section immediately after the first section;
Calculating and comparing a CPU average value of the plurality of controllers in the first section and a CPU average value of the plurality of controllers in the second section when the second standard deviation is larger than the first standard deviation;
Performing a forward controller placement algorithm or a backward controller placement algorithm based on the comparison result; And
Changing a mastership topology that determines a master controller of a node based on the results of performing the forward controller placement algorithm or the backward controller placement algorithm, and deploying the plurality of controllers .
삭제delete 청구항 1에 있어서,
상기 비교 결과를 기초로 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행하는 단계는,
상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값이 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값보다 큰 경우 전진 컨트롤러 배치 알고리즘을 수행하고, 상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값이 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값보다 작거나 같은 경우 후진 컨트롤러 배치 알고리즘을 수행하는 단계를 포함하는, 컨트롤러 배치 방법.
The method according to claim 1,
Wherein performing the forward controller placement algorithm or the backward controller placement algorithm based on the comparison result comprises:
Wherein when the CPU average value of the plurality of controllers in the second section is greater than the CPU average value of the plurality of controllers in the first section, Performing a backward controller placement algorithm if the value is less than or equal to a CPU average value of the plurality of controllers in the first interval.
청구항 1에 있어서,
상기 전진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하는 단계;
상기 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 큰 노드를 추출하는 단계;
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하는 단계; 및
상기 가장 큰 노드 및 상기 가장 작은 컨트롤러를 연결하는 단계를 포함하는, 컨트롤러 배치 방법.
The method according to claim 1,
Wherein the forward controller placement algorithm comprises:
Extracting a controller having the largest number of control protocol messages in the second section among the plurality of controllers;
Extracting a node having a largest number of control protocol messages among at least one node connected to the largest controller;
Extracting a controller having the smallest number of control protocol messages in the second section among the plurality of controllers; And
And connecting the largest node and the smallest controller.
청구항 1에 있어서,
상기 후진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하는 단계;
상기 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 작은 노드를 추출하는 단계;
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하는 단계; 및
상기 가장 작은 노드 및 상기 가장 작은 컨트롤러를 연결하는 단계를 포함하는, 컨트롤러 배치 방법.
The method according to claim 1,
The backward controller placement algorithm includes:
Extracting a controller having the largest number of control protocol messages in the second section among the plurality of controllers;
Extracting a node having the smallest number of control protocol messages among at least one node connected to the largest controller;
Extracting a controller having the smallest number of control protocol messages in the second section among the plurality of controllers; And
And connecting the smallest node and the smallest controller.
청구항 1에 있어서,
상기 변경한 마스터쉽 토폴로지를 상기 복수의 컨트롤러로 송신하는 단계를 더 포함하는, 컨트롤러 배치 방법.
The method according to claim 1,
And transmitting the modified master-s topology to the plurality of controllers.
컨트롤러 배치 장치, 적어도 하나의 다른 컨트롤러 및 적어도 하나의 노드와 연결된 컨트롤러의 동작 방법에 있어서,
상기 컨트롤러 배치 장치로부터 미리 정의한 시간 간격에 따라 나눈 구간 별 모니터링 정보 요청을 수신하는 단계;
상기 구간 별로 CPU(central processing unit) 부하 및 상기 적어도 하나의 노드와의 각 제어 프로토콜 메시지의 개수를 상기 컨트롤러 배치 장치로 송신하는 단계; 및
상기 컨트롤러 배치 장치로부터 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 수신하는 단계를 포함하고,
상기 마스터쉽 토폴로지는,
상기 컨트롤러 배치 장치에 의해 상기 적어도 하나의 다른 컨트롤러의 제어 프로토콜 메시지의 개수 및 상기 송신한 제어 프로토콜 메시지의 개수를 기초로 제1 구간의 제1 표준 편차 및 상기 제1 구간 직후인 제2 구간의 제2 표준 편차를 산출하여, 상기 제2 표준 편차가 상기 제1 표준 편차보다 큰 경우, 구간 별 상기 적어도 하나의 다른 컨트롤러의 CPU 부하 및 상기 송신한 CPU 부하에 기초한 상기 제1 구간의 CPU 평균 값 및 제2 구간의 CPU 평균 값에 따라 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘이 수행되어 결정되는, 컨트롤러 동작 방법.
A method of operating a controller arrangement, a controller connected to at least one other controller and at least one node,
Receiving a monitoring information request for each section divided according to a predetermined time interval from the controller arrangement device;
Transmitting a central processing unit (CPU) load and a number of control protocol messages with the at least one node to the controller arrangement device; And
Receiving a mastership topology that determines a master controller of a node from the controller placement device,
The master-
A first standard deviation of a first section and a second standard deviation of a second section immediately after the first section based on the number of control protocol messages of the at least one other controller and the number of the transmitted control protocol messages by the controller arrangement device A CPU average value of the first section based on the CPU load of the at least one other controller and the transmitted CPU load of each of the sections when the second standard deviation is larger than the first standard deviation, Wherein a forward controller placement algorithm or a backward controller placement algorithm is performed and determined according to a CPU average value of a second section.
청구항 7에 있어서,
상기 적어도 하나의 노드 중 상기 수신한 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 단계; 및
상기 적어도 하나의 다른 컨트롤러로 상기 변경하여야 할 노드에 대한 정보를 송신하는 단계를 더 포함하는, 컨트롤러 동작 방법.
The method of claim 7,
Selecting a node to be changed based on the mastered topology among the at least one node; And
Further comprising: transmitting information about the node to be changed to the at least one other controller.
청구항 8에 있어서,
상기 변경하여야 할 노드에 대한 정보의 동기화를 검증하는 단계; 및
상기 변경하여야 할 노드가 정상적으로 변경되었는지 검증하는 단계를 더 포함하는, 컨트롤러 동작 방법.
The method of claim 8,
Verifying synchronization of information about the node to be changed; And
Further comprising verifying that the node to be changed has changed normally.
복수의 컨트롤러와 연결된 컨트롤러 배치 장치에 있어서,
상기 복수의 컨트롤러로부터 미리 정의한 시간 간격에 따라 나눈 구간 별로 상기 복수의 컨트롤러의 각 CPU(central processing unit) 부하 및 상기 복수의 컨트롤러와 상기 복수의 컨트롤러에 각각 연결된 적어도 하나의 노드 간의 제어 프로토콜 메시지의 개수를 수신하는 통신부;
상기 구간 중 제1 구간의 상기 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제1 표준 편차를 산출하고, 상기 제1 구간 직후인 제2 구간의 상기 복수의 컨트롤러의 제어 프로토콜 메시지의 개수에 대하여 제2 표준 편차를 산출하고, 상기 제2 표준 편차가 상기 제1 표준 편차보다 큰 경우, 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값 및 상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값을 각각 산출하여 비교하는 의사결정부; 및
상기 비교 결과를 기초로 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행하는 연산부를 포함하고,
상기 의사결정부는,
상기 전진 컨트롤러 배치 알고리즘 또는 상기 후진 컨트롤러 배치 알고리즘을 수행한 결과를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 변경하는, 컨트롤러 배치 장치.
A controller arrangement apparatus connected to a plurality of controllers,
A central processing unit (CPU) load of the plurality of controllers and a number of control protocol messages between at least one node connected to the plurality of controllers and the plurality of controllers, respectively, in a section divided by a predetermined time interval from the plurality of controllers A communication unit for receiving the data;
A first standard deviation is calculated with respect to the number of control protocol messages of the plurality of controllers in the first section of the section, and a first standard deviation is calculated with respect to the number of control protocol messages of the plurality of controllers in the second section immediately after the first section A CPU average value of the plurality of controllers in the first section and a CPU average value of the plurality of controllers in the second section in a case where the second standard deviation is larger than the first standard deviation, A decision unit for calculating and comparing each of them; And
And an arithmetic unit for performing a forward controller arrangement algorithm or a backward controller arrangement algorithm based on the comparison result,
The decision-
And changes a mastership topology that determines a master controller of the node based on the result of performing the forward controller placement algorithm or the backward controller placement algorithm.
삭제delete 청구항 10에 있어서,
상기 연산부는,
상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값이 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값보다 큰 경우 전진 컨트롤러 배치 알고리즘을 수행하고, 상기 제2 구간의 상기 복수의 컨트롤러의 CPU 평균 값이 상기 제1 구간의 상기 복수의 컨트롤러의 CPU 평균 값보다 작거나 같은 경우 후진 컨트롤러 배치 알고리즘을 수행하는, 컨트롤러 배치 장치.
The method of claim 10,
The operation unit,
Wherein when the CPU average value of the plurality of controllers in the second section is greater than the CPU average value of the plurality of controllers in the first section, Wherein the controller performs the backward controller placement algorithm when the value is less than or equal to the CPU average value of the plurality of controllers in the first section.
청구항 10에 있어서,
상기 전진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하고, 상기 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 큰 노드를 추출하고, 상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하고, 상기 가장 큰 노드 및 상기 가장 작은 컨트롤러를 연결하는, 컨트롤러 배치 장치.
The method of claim 10,
Wherein the forward controller placement algorithm comprises:
Extracting a controller having the largest number of control protocol messages in the second section among the plurality of controllers, extracting a node having a largest number of control protocol messages among at least one node connected to the largest controller, Extracts a controller having the smallest number of the control protocol messages in the second section among the controllers in the second section, and connects the largest node and the smallest controller.
청구항 10에 있어서,
상기 후진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 큰 컨트롤러를 추출하고, 상기 가장 큰 컨트롤러에 연결된 적어도 하나의 노드 중 제어 프로토콜 메시지의 개수가 가장 작은 노드를 추출하고, 상기 복수의 컨트롤러 중 상기 제2 구간의 상기 제어 프로토콜 메시지의 개수가 가장 작은 컨트롤러를 추출하고, 상기 가장 작은 노드 및 상기 가장 작은 컨트롤러를 연결하는, 컨트롤러 배치 장치.
The method of claim 10,
The backward controller placement algorithm includes:
Extracting a controller having the largest number of control protocol messages in the second section among the plurality of controllers, extracting a node having the smallest number of control protocol messages among at least one node connected to the largest controller, Extracts a controller having the smallest number of the control protocol messages in the second section among the controllers in the second section, and connects the smallest node and the smallest controller.
삭제delete 청구항 10에 있어서,
상기 통신부는,
상기 변경한 마스터쉽 토폴로지를 상기 복수의 컨트롤러로 송신하는, 컨트롤러 배치 장치.
The method of claim 10,
Wherein,
And transmits the changed master-sash topology to the plurality of controllers.
컨트롤러 배치 장치, 적어도 하나의 다른 컨트롤러 및 적어도 하나의 노드와 연결된 컨트롤러에 있어서,
상기 컨트롤러 배치 장치로부터 미리 정의한 시간 간격에 따라 나눈 구간 별 모니터링 정보 요청 및 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지(mastership topology)를 수신하고, 모니터링 정보를 상기 컨트롤러 배치 장치로 송신하는 제1 통신부; 및
상기 구간 별로 CPU(central processing unit) 부하 및 상기 적어도 하나의 연결된 노드와의 각 제어 프로토콜 메시지의 개수를 모니터링하여 상기 모니터링 정보를 생성하는 모니터링부를 포함하고,
상기 마스터쉽 토폴로지는,
상기 컨트롤러 배치 장치에 의해 상기 적어도 하나의 다른 컨트롤러의 제어 프로토콜 메시지의 개수 및 상기 송신한 모니터링 정보를 기초로 제1 구간의 제1 표준 편차 및 상기 제1 구간 직후인 제2 구간의 제2 표준 편차를 산출하여, 상기 제2 표준 편차가 상기 제1 표준 편차보다 큰 경우, 구간 별 상기 적어도 하나의 다른 컨트롤러의 CPU 부하 및 상기 송신한 모니터링 정보에 기초한 상기 제1 구간의 CPU 평균 값 및 제2 구간의 CPU 평균 값에 따라 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘이 수행되어 결정되는, 컨트롤러.
A controller, comprising: a controller arrangement, at least one other controller, and a controller coupled to at least one node,
A first communication unit for receiving a master information request for a monitoring information divided into sections according to a predetermined time interval from the controller arrangement unit and a mastership topology for determining a master controller of the node and transmitting monitoring information to the controller arrangement unit; And
And a monitoring unit for monitoring the load of a central processing unit (CPU) and the number of control protocol messages with the at least one connected node,
The master-
A first standard deviation of a first section and a second standard deviation of a second section immediately after the first section based on the number of control protocol messages of the at least one other controller and the transmitted monitoring information by the controller arrangement device, If the second standard deviation is larger than the first standard deviation, calculating a CPU average value of the first interval based on the CPU load of the at least one other controller and a monitoring interval of the second interval based on the transmitted monitoring information, Wherein the forward controller placement algorithm or the backward controller placement algorithm is performed according to the CPU average value of the controller.
청구항 17에 있어서,
상기 적어도 하나의 노드 중 상기 수신한 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 검증부; 및
상기 적어도 하나의 다른 컨트롤러로 상기 변경하여야 할 노드에 대한 정보를 송신하는 제2 통신부를 더 포함하는, 컨트롤러.
18. The method of claim 17,
A verification unit for selecting a node to be changed based on the received master-s topology among the at least one node; And
And a second communication unit for transmitting information on the node to be changed to the at least one other controller.
청구항 18에 있어서,
상기 검증부는,
상기 변경하여야 할 노드에 대한 정보의 동기화를 검증하고, 상기 변경하여야 할 노드가 정상적으로 변경되었는지 검증하는, 컨트롤러.
19. The method of claim 18,
Wherein the verifying unit comprises:
Wherein the controller verifies the synchronization of the information about the node to be changed and verifies whether the node to be changed is normally changed.
KR1020170127820A 2017-09-29 2017-09-29 Method and apparatus for placement of distributed software defined networking controllers KR101963512B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170127820A KR101963512B1 (en) 2017-09-29 2017-09-29 Method and apparatus for placement of distributed software defined networking controllers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170127820A KR101963512B1 (en) 2017-09-29 2017-09-29 Method and apparatus for placement of distributed software defined networking controllers

Publications (1)

Publication Number Publication Date
KR101963512B1 true KR101963512B1 (en) 2019-07-31

Family

ID=67473979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170127820A KR101963512B1 (en) 2017-09-29 2017-09-29 Method and apparatus for placement of distributed software defined networking controllers

Country Status (1)

Country Link
KR (1) KR101963512B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092874A (en) * 2003-08-29 2005-04-07 Internatl Business Mach Corp <Ibm> Apparatus and method to select captain control node from a plurality of control nodes
KR20150080186A (en) * 2013-12-30 2015-07-09 주식회사 케이티 Method and Apparatus for adaptive traffic engineering in Data Center Network
KR101588530B1 (en) * 2014-07-29 2016-02-12 주식회사 엘지씨엔에스 Method and apparatus of network monitoring in software defined network(sdn) environment
KR20160105469A (en) * 2014-01-10 2016-09-06 후아웨이 테크놀러지 컴퍼니 리미티드 System and method for zoning in software defined networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092874A (en) * 2003-08-29 2005-04-07 Internatl Business Mach Corp <Ibm> Apparatus and method to select captain control node from a plurality of control nodes
KR20150080186A (en) * 2013-12-30 2015-07-09 주식회사 케이티 Method and Apparatus for adaptive traffic engineering in Data Center Network
KR20160105469A (en) * 2014-01-10 2016-09-06 후아웨이 테크놀러지 컴퍼니 리미티드 System and method for zoning in software defined networks
KR101588530B1 (en) * 2014-07-29 2016-02-12 주식회사 엘지씨엔에스 Method and apparatus of network monitoring in software defined network(sdn) environment

Non-Patent Citations (12)

* Cited by examiner, † Cited by third party
Title
Albert Greenberg, James R. Hamilton, Navendu Jain, Srikanth Kandula, Changhoon Kim, Parantap Lahiri, David A. Maltz, Parveen Patel, and Sudipta Sengupta, "VL2: A Scalable and Flexible Data Center Network," ACM SIGCOMM Computer Communication Review, vol. 39, no. 4, pp. 51-62, 2009.
Brandon Heller, Rob Sherwood, and Nick McKeown, "The Controller Placement Problem," in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 7-12, 2012.
Dan Levin, Andreas Wundsam, Brandon Heller, Nikhil Handigol, and Anja Feldmann, "Logically Centralized?: State Distribution Trade-offs in Software Defined Networks," in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2012.
Jian Li, Jae-Hyoung Yoo, and James Won-Ki Hong, "Dynamic Control Plane Management for Software-defined Networks," International Journal of Network Management, vol. 26, no. 2, pp. 111-130, 2016.
Md. Faizul Bari, Arup Raton Roy, Shihabur Rahman Chowdhury, Qi Zhang, Mohamed Faten Zhani, Raez Ahmed, and Raouf Boutaba, "Dynamic Controller Provisioning in Software Defined Networks," in Proc. International Conference of Network and Service Management (CNSM), pp. 18-25, 2013.
Open Networking Foundation (ONF), "OpenFlow Switch Specification," Technical document, 2015.
Pankaj Berde, Matteo Gerola, Jonathan Hart, Yuta Higuchi, Masayoshi Kobayashi, Toshio Koide, Bob Lantz, Brian O’Connor, Pavlin Radoslavov, William Snow, and Guru Parulkar, "ONOS: Towards an Open, Distributed SDN OS," in Proc. ACM Hot Topics in Software Defined Networks (HotSDN), pp. 1-6, 2014.
Srikanth Kandula, Sudipta Sengupta, Albert Greenberg, Paveen Patel, and Ronnie Chaiken, "The Nature of Datacenter Traffic: Measurements & Analysis," in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 202-208, 2009.
Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling, Leon Poutievski, Min Zhu, Rajiv Ramanathan, Yuichiro Iwata, Hiroaki Inoue, Takayuki Hama, and Scott Shenker, "Onix: A Distributed Control Platform for Large-scale Production Networks," in Proc. USENIX Operating Systems Design and Implementation (OSDI), pp. 351-364, 2010.
Theophilus Benson, Aditya Akella, and David A. Maltz, "Network Traffic Characteristics of Data Centers in the Wild," in Proc. ACM SIGCOMM Conference on Internet Measurement (IMC), pp. 267-290, 2010.
Theophilus Benson, Ashok Anand, Aditya Akella, and Ming Zhang, "Understanding Data Center Traffic Characteristics," ACM SIGCOMM Computer Communications Review, vol. 40, no. 1, pp. 92-99, 2010.
이승은 외 2명. 'CPU 사용량 기반 분산 SDN 컨트롤러의 마스터 컨트롤러 선출 기법'. 2017년도 한국통신학회 동계종합학술발표회 논문집, 2017.1., pp.215-216.* *

Similar Documents

Publication Publication Date Title
US9628339B1 (en) Network testbed creation and validation
CN112153700B (en) Network slice resource management method and equipment
KR102199278B1 (en) Accelerated resource processing method and apparatus, and network function virtualization system
Rowshanrad et al. Performance evaluation of SDN controllers: Floodlight and OpenDaylight
US9360885B2 (en) Fabric multipathing based on dynamic latency-based calculations
US11271808B2 (en) Software-based fabric enablement
US20140201642A1 (en) User interface for visualizing resource performance and managing resources in cloud or distributed systems
US9893874B2 (en) Fabric multipathing based on dynamic latency-based calculations
US9756099B2 (en) Streams optional execution paths depending upon data rates
US8284791B2 (en) Systems and methods for load balancing of management traffic over a link aggregation group
US20110307718A1 (en) Dynamic fabric plane allocation for power savings
CN108540328B (en) Control plane modeling method and device of ASON
CN107465966B (en) Topology reconstruction control method for optical network
US11265253B2 (en) Network resource management for hyperconverged infrastructures
Christodoulopoulos et al. Performance evaluation of a hybrid optical/electrical interconnect
CN103620560A (en) Protection against a failure in a computer network
EP3474493A1 (en) Network performance measurement method and detection device
US10284457B2 (en) System and method for virtual link trunking
KR101963512B1 (en) Method and apparatus for placement of distributed software defined networking controllers
Silva et al. Controlling network latency in mixed hadoop clusters: Do we need active queue management?
Chung et al. Dynamic parallel flow algorithms with centralized scheduling for load balancing in cloud data center networks
Ohsita et al. Optical data center networks: Architecture, performance, and energy efficiency
US10284428B2 (en) Graphical policy interface for network control systems
KR101802037B1 (en) Method and system of transmitting oam message for service function chaining in software defined network environment
JP5651217B1 (en) Path recovery control device