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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
Description
본 발명은 분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 방법 및 장치에 관한 것으로, 더욱 상세하게는 복수의 분산 소프트웨어 정의 네트워킹 컨트롤러가 복수의 네트워크 장비를 관리하는 경우, 어떠한 컨트롤러가 어떠한 장비를 제어 또는 관리할지를 결정하는 방법 및 장치에 관한 것이다.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.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 분산형 소프트웨어 정의 네트워킹 컨트롤러의 배치 방법을 제공하는 데 있다.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
여기서, 컨트롤러의 개수는 본 발명의 설명을 위해 임의로 가정한 것이며, 컨트롤러 배치 장치에 연결된 컨트롤러의 개수는 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
또한, 제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
여기서, 컨트롤러의 개수는 본 발명의 설명을 위해 임의로 가정한 것이며, 컨트롤러 배치 장치에 연결된 컨트롤러의 개수가 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
통신부(210)는 제1 제어 프로토콜을 사용하여 각 컨트롤러를 제어 또는 관리할 수 있다. 다시 말해, 통신부(210)는 각 컨트롤러로 모니터링 정보를 요청할 수 있으며, 각 컨트롤러로부터 모니터링 정보를 수신할 수 있다. 여기서, 모니터링 정보는 미리 정의한 시간 간격에 따라 구간을 나누어 요청 및 수신될 수 있다. 시간 간격에 따라 구간을 나누는 구성에 대해서는 도 6에서 더욱 상세하게 설명하겠다. 모니터링 정보는 미리 정의한 시간 간격에 따라 나눈 구간 별로 각 컨트롤러의 CPU(central processing unit) 부하 및 각 컨트롤러가 각 컨트롤러에 연결된 적어도 하나의 노드와 송수신하는 제2 제어 프로토콜 메시지 수를 의미할 수 있다. 또한, 통신부(210)는 컨트롤러 배치 장치(200)가 모니터링 정보를 기초로 노드의 마스터 컨트롤러를 결정하여 반영한 마스터쉽 토폴로지(mastership topology)를 각 컨트롤러로 송신할 수 있다.The
데이터베이스(220)는 통신부(210)가 수신한 각 컨트롤러의 모니터링 정보를 저장할 수 있으며, 후술하는 의사결정부(230) 및 연산부(240)에 저장한 모니터링 정보를 제공할 수 있다. 또한, 데이터베이스(220)는 기존의 마스터쉽 토폴로지를 저장하고 있을 수 있으며, 의사결정부(230)에 의해 변경된 마스터쉽 토폴로지를 저장할 수 있다.The
의사결정부(230)는 데이터베이스(220)에 저장된 각 컨트롤러의 모니터링 정보를 기초로 노드의 마스터 컨트롤러를 결정하는 마스터쉽 토폴로지를 변경할 수 있다. 더욱 상세하게는, 의사결정부(230)는 기존의 마스터쉽 토폴로지를 로드할 수 있으며, 로드한 마스터쉽 토폴로지 및 미리 정의한 시간 간격에 따른 시간 간격 또는 타임 슬롯으로 나누어진 모니터링 정보를 기초로 마스터쉽 토폴로지를 변경할지 결정할 수 있다. 다시 말해, 의사결정부(230)는 모니터링 정보 중 각 컨트롤러가 각 컨트롤러에 연결된 노드와 통신한 제2 제어 프로토콜 메시지 수(이하, 제어 프로토콜 메시지 수라 함.)를 이용하여 각 구간별 표준편차를 산출할 수 있으며, 직전 구간의 표준편차 및 현재 구간의 표준편차를 비교하여 마스터쉽 토폴로지를 변경할지 결정할 수 있다. 의사결정부(230)가 마스터쉽 토폴로지를 변경하는 것으로 결정한 경우, 데이터베이스(220)에 저장된 모니터링 정보 중 직전 구간의 CPU 부하 및 현재 구간의 CPU 부하를 이용하여 컨트롤러 배치를 위해 연산부(240)가 수행할 알고리즘을 선택할 수 있다. 이후, 의사결정부(230)는 연산부(240)가 수행한 알고리즘의 결과에 따라 마스터쉽 토폴로지를 변경할 수 있다. 의사결정부(230)의 동작은 도 7과 함께 상세하게 후술하겠다.The
연산부(240)는 의사결정부(230)의 선택에 따라 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행할 수 있다. 보다 상세하게는, 연산부(240)는 각 알고리즘에 따라 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러 중 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며, 선택한 컨트롤러에 연결된 노드 중 제어 프로토콜 메시지 수가 가장 큰 노드 또는 가장 작은 노드를 선택할 수 있다. 또한, 연산부(240)는 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러 중 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있으며, 선택한 노드를 제어 프로토콜 메시지 수가 가장 작은 컨트롤러로 연결시키는 결과를 출력할 수 있다. 연산부(240)가 수행하는 알고리즘은 도 9 및 도 10과 함께 상세하게 후술하겠다. The
본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)는 적어도 하나의 프로세서 및 프로세서를 통해 상술한 동작이 실행되는 적어도 하나의 명령을 저장하고 있는 메모리를 포함할 수 있다. 여기서, 프로세서는 메모리에 저장된 프로그램 명령(program command)을 실행할 수 있고, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있고, 읽기 전용 메모리(Read Only Memory, ROM) 및/또는 랜덤 액세스 메모리(Random Access Memory, RAM)로 구성될 수 있다.The
도 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
제1 통신부(311)는 제1 제어 프로토콜을 사용하여 컨트롤러 배치 장치(200)와 통신할 수 있다. 다시 말해, 제1 통신부(311)는 컨트롤러 배치 장치(200)로부터 모니터링 정보 요청을 수신할 수 있으며, 컨트롤러 배치 장치(200)로 모니터링 정보를 송신할 수 있다. 또한, 컨트롤러 배치 장치(200)로부터 변경된 마스터쉽 토폴로지를 수신할 수 있다.The
제2 통신부(312)는 제2 제어 프로토콜을 사용하여 자신과 연결된 적어도 하나의 노드와 통신할 수 있다. 다시 말해, 제2 통신부(312)는 제2 제어 프로토콜을 사용하여 자신과 연결된 적어도 하나의 노드를 제어 또는 관리할 수 있으며, 제1 통신부(311)로부터 수신한 마스터쉽 토폴로지를 기초로 제어 또는 관리하는 적어도 하나의 노드와의 통신을 계속하거나 중지할 수 있다. The
제3 통신부(313)는 제3 제어 프로토콜을 사용하여 다른 컨트롤러와 통신할 수 있다. 다시 말해, 컨트롤러 배치 장치(200)에 연결되어 있는 다른 컨트롤러와 제어 또는 관리하는 노드에 대한 정보를 송수신하여 정보를 동기화할 수 있다. 즉, 마스터쉽 토폴로지를 기초로 제어 또는 관리하는 노드에 대한 정보가 변경되는 경우, 변경된 정보를 다른 컨트롤러와 공유할 수 있다.And the
모니터링부(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
검증부(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
또한, 본 발명의 제1 컨트롤러(310)는 도 5에 도시하지 않았지만 상술한 제1 컨트롤러의 동작을 수행하는데 필요한 기타 보조 동작을 수행하는 다양한 구성이 추가로 포함될 수 있다. In addition, the
본 발명의 일 실시예에 따른 제1 컨트롤러(310)는 적어도 하나의 프로세서 및 프로세서를 통해 상술한 동작이 실행되는 적어도 하나의 명령을 저장하고 있는 메모리를 포함할 수 있다. 여기서, 프로세서는 메모리에 저장된 프로그램 명령(program command)을 실행할 수 있고, 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있고, 읽기 전용 메모리(Read Only Memory, ROM) 및/또는 랜덤 액세스 메모리(Random Access Memory, RAM)로 구성될 수 있다.The
본 발명의 일 실시예에 따른 컨트롤러 배치 장치(200)에 연결된 복수의 컨트롤러는 상술한 제1 컨트롤러와 동일한 구성을 가질 수 있으며, 동일한 동작을 수행할 수 있다.A plurality of controllers connected to the
도 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
컨트롤러 배치 장치(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
컨트롤러 배치 장치(200)는 t1부터 t2까지 구간에서 동작을 수행한 이후, t2부터 t3까지의 구간에서 다시 동작할 수 있으며, 이 경우, 직전 구간은 t1부터 t2까지를 의미할 수 있고, 현재 구간은 t2부터 t3까지를 의미할 수 있다.The
다시 말해, 컨트롤러 배치 장치(200)는 각 구간마다 컨트롤러 배치 장법을 수행할 수 있으며, 이에 따라 복수의 컨트롤러도 각 구간마다 제2 제어 프로토콜 메시지 수 및 CPU 부하를 모니터링할 수 있고, 마스터쉽 토폴로지를 기초로 연결된 적어도 하나의 노드에 대한 연결 상태를 유지 또는 변경할 수 있다.In other words, the
도 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
우선, 모니터링 단계에서 컨트롤러 배치 장치(200)는 마스터쉽 토폴로지를 로드할 수 있고(S710), 미리 정의된 시간 간격에 따른 타임 슬롯 t동안의 연결된 모든 컨트롤러의 제어 프로토콜 메시지 수 및 CPU 부하를 포함하는 모니터링 정보를 수신할 수 있다(S720). 또한, 수신한 모니터링 정보를 타임 슬롯 별로 데이터베이스(220)에 저장할 수 있다(S730).First, in the monitoring step, the
이후, 의사결정 단계에서 컨트롤러 배치 장치(200)의 의사결정부(230)는 수학식 1에 따라 직전 구간의 모든 컨트롤러의 제어 프로토콜 메시지 수에 대한 표준 편차 를 산출할 수 있다(S740). Thereafter, in the decision step, the
여기서, 은 직전 구간의 컨트롤러 배치 장치에 연결된 컨트롤러의 수를 의미할 수 있고, 는 i번째 컨트롤러의 직전 구간 제어 프로토콜 메시지 수를 의미할 수 있으며, 는 직전 구간 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 의미할 수 있다. 여기서, 는 수학식 2에 의해 산출될 수 있다.here, May refer to the number of controllers connected to the controller arrangement of the immediately preceding section, May denote the number of immediately preceding interval control protocol messages of the i < th > controller, May mean the average value of the number of control protocol messages of all controllers in the previous interval. here, Can be calculated by Equation (2).
또한, 의사결정부(230)는 수학식 3에 따라 현재 구간의 모든 컨트롤러의 제어 프로토콜 메시지 수에 대한 표준 편차 도 산출할 수 있다(S750).In addition, the
여기서, 은 현재 구간의 컨트롤러 배치 장치에 연결된 컨트롤러의 수를 의미할 수 있고, 는 i번째 컨트롤러의 현재 구간 제어 프로토콜 메시지 수를 의미할 수 있으며, 는 현재 구간 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 의미할 수 있다. 여기서, 는 수학식 4에 의해 산출될 수 있다.here, May refer to the number of controllers connected to the controller placement device of the current section, May denote the number of current interval control protocol messages of the i < th > controller, May mean the average value of the number of control protocol messages of all controllers in the current interval. here, Can be calculated by Equation (4).
상술한 표준 편차 및 평균 값을 산출하는 방법은 하나의 예로, 이에 한정되지 않으며, 다른 방법에 의해 표준 편차 및 평균 값을 산출할 수도 있다.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
의사결정부(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
연산부(240)의 알고리즘 수행 후, 컨트롤러 배치 장치(200)의 의사결정부(230)는 알고리즘 수행 결과를 기초로 마스터쉽 토폴로지를 변경할 수 있으며, 변경된 마스터쉽 토폴로지를 데이터베이스에 저장할 수 있고, 통신부(210)에 의해 각 컨트롤러로 송신할 수 있다.After the algorithm of the
도 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
도 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
연산부(240)는 모든 컨트롤러의 분류 후, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인지 판단할 수 있다(S930). 여기서, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인 경우, 알고리즘을 종료할 수 있으며, 컨트롤러 그룹 내의 컨트롤러의 개수가 0보다 큰 경우, 계속하여 알고리즘을 수행할 수 있다.The
연산부(240)는 제1 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며(S940), 선택한 컨트롤러에 연결된 적어도 하나의 노드를 노드 그룹에 저장할 수 있고, 노드 그룹에 저장된 적어도 하나의 노드를 노드 별 통신한 제어 프로토콜 메시지 수에 따라 내림차순으로 정렬할 수 있다(S950). 이후, 전진 컨트롤러 배치 알고리즘은 A1을 통해 중반부로 넘어가며, 도 10에서 계속하여 설명하겠다. The
도 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
노드를 선택한 연산부(240)는 수학식 5에 따라 제1 변수를 산출할 수 있다(S1040).The
여기서, 는 제1 변수를 의미할 수 있고, 는 선택된 컨트롤러의 제어 프로토콜 메시지 수를 의미할 수 있으며, 는 선택된 노드의 제어 프로토콜 메시지 수를 의미할 수 있다.here, May mean a first variable, May mean the number of control protocol messages of the selected controller, 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
도 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
다만, 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0보다 큰 경우, 연산부(240)는 임시 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있고(S1120), 수학식 6에 따라 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수 및 선택한 노드의 제어 프로토콜 메시지 수를 기초로 제2 변수를 산출할 수 있다(S1130).However, if the number of controllers stored in the temporary controller group is larger than 0, the
여기서, 는 제2 변수를 의미할 수 있고, 는 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수를 의미할 수 있으며, 는 선택된 노드의 제어 프로토콜 메시지 수를 의미할 수 있다.here, May mean a second variable, Can mean the number of control protocol messages of the controller selected in the temporary controller group, May refer to the number of control protocol messages of the selected node.
연산부(240)는 제2 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1140), 제2 변수가 평균 값보다 큰 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러를 임시 컨트롤러 그룹에서 삭제할 수 있고(S1150), 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1110).The
연산부(240)는 제2 변수가 평균 값보다 크지 않은 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러가 선택한 노드를 제어 또는 관리하는 것으로 결정하고, 이에 따른 변경 사항을 알고리즘의 결과를 출력할 수 있다(S1160). 또한, 연산부(240)는 B2를 통해 전진 컨트롤러 배치 알고리즘의 중반부로 넘어가 선택한 노드를 노드 그룹에서 삭제할 수 있고(S1060), 계속하여 알고리즘을 수행할 수 있다. 이후, 컨트롤러 배치 장치(200)의 의사결정부(230)는 연산부(240)의 알고리즘 결과를 기초로 마스터쉽 토폴로지를 변경할 수 있다. If the second variable is not larger than the average value, the
도 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
연산부(240)는 모든 컨트롤러의 분류 후, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인지 판단할 수 있다(S1230). 여기서, 제1 컨트롤러 그룹 내의 컨트롤러의 개수가 0인 경우, 알고리즘을 종료할 수 있으며, 컨트롤러 그룹 내의 컨트롤러의 개수가 0보다 큰 경우, 계속하여 알고리즘을 수행할 수 있다.After the classification of all the controllers, the
연산부(240)는 제1 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 큰 컨트롤러를 선택할 수 있으며(S1240), 선택한 컨트롤러에 연결된 적어도 하나의 노드를 노드 그룹에 저장할 수 있고, 노드 그룹에 저장된 적어도 하나의 노드를 노드 별 통신한 제어 프로토콜 메시지 수에 따라 오름차순으로 정렬할 수 있다(S1250). 이후, 후진 컨트롤러 배치 알고리즘은 C1을 통해 중반부로 넘어가며, 도 13에서 계속하여 설명하겠다.The
도 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
노드를 선택한 연산부(240)는 상술한 수학식 5에 따라 전진 컨트롤러 배치 알고리즘과 같이 제1 변수를 산출할 수 있다(S1340). 이후, 연산부(240)는 제1 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1350), 제1 변수가 평균 값보다 크지 않은 경우, 노드 그룹에서 선택한 노드를 삭제할 수 있고(S1360), 노드 그룹에 저장된 노드의 개수를 판단할 수 있다(S1310). 제1 변수가 평균 값보다 큰 경우, 연산부(240)는 제2 컨트롤러 그룹에 저장된 컨트롤러를 임시 컨트롤러 그룹에 복사하여 저장할 수 있다(S370). 이후, 후진 컨트롤러 알고리즘은 D1을 통해 후반부로 넘어가며, 도 14에서 계속하여 설명하겠다.The
도 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
다만, 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수가 0보다 큰 경우, 연산부(240)는 임시 컨트롤러 그룹에서 제어 프로토콜 메시지 수가 가장 작은 컨트롤러를 선택할 수 있고(S1420), 상술한 수학식 6에 따라 임시 컨트롤러 그룹에서 선택한 컨트롤러의 제어 프로토콜 메시지 수 및 선택한 노드의 제어 프로토콜 메시지 수를 기초로 전진 컨트롤러 배치 알고리즘과 같이 제2 변수를 산출할 수 있다(S1430).However, if the number of controllers stored in the temporary controller group is larger than 0, the
연산부(240)는 제2 변수와 상술한 모든 컨트롤러의 제어 프로토콜 메시지 수의 평균 값을 비교할 수 있으며(S1440), 제2 변수가 평균 값보다 큰 경우, 임시 컨트롤러 그룹에서 선택한 컨트롤러를 임시 컨트롤러 그룹에서 삭제할 수 있고(S1450), 임시 컨트롤러 그룹에 저장된 컨트롤러의 개수를 판단할 수 있다(S1410).The
제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
도 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
제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
제6 단계(S1560)에서 컨트롤러 배치 장치(200)는 모든 컨트롤러의 배치가 완료된 이후, 다음 타임 슬롯에서의 동작을 수행할 수 있다. 다시 말해, 컨트롤러 배치 장치(200)는 다음 타임 슬롯에서 동일하게 컨트롤러 배치 방법을 수행할 수 있다.In the sixth step S1560, the
본 발명의 실시예에 따른 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 .
상기 비교 결과를 기초로 전진 컨트롤러 배치 알고리즘 또는 후진 컨트롤러 배치 알고리즘을 수행하는 단계는,
상기 제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.
상기 전진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제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.
상기 후진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제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.
상기 변경한 마스터쉽 토폴로지를 상기 복수의 컨트롤러로 송신하는 단계를 더 포함하는, 컨트롤러 배치 방법.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.
상기 적어도 하나의 노드 중 상기 수신한 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 단계; 및
상기 적어도 하나의 다른 컨트롤러로 상기 변경하여야 할 노드에 대한 정보를 송신하는 단계를 더 포함하는, 컨트롤러 동작 방법.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.
상기 변경하여야 할 노드에 대한 정보의 동기화를 검증하는 단계; 및
상기 변경하여야 할 노드가 정상적으로 변경되었는지 검증하는 단계를 더 포함하는, 컨트롤러 동작 방법.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.
상기 연산부는,
상기 제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.
상기 전진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제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.
상기 후진 컨트롤러 배치 알고리즘은,
상기 복수의 컨트롤러 중 상기 제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.
상기 통신부는,
상기 변경한 마스터쉽 토폴로지를 상기 복수의 컨트롤러로 송신하는, 컨트롤러 배치 장치.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.
상기 적어도 하나의 노드 중 상기 수신한 마스터쉽 토폴로지를 기초로 변경하여야 할 노드를 선택하는 검증부; 및
상기 적어도 하나의 다른 컨트롤러로 상기 변경하여야 할 노드에 대한 정보를 송신하는 제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.
상기 검증부는,
상기 변경하여야 할 노드에 대한 정보의 동기화를 검증하고, 상기 변경하여야 할 노드가 정상적으로 변경되었는지 검증하는, 컨트롤러.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.
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)
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 |
-
2017
- 2017-09-29 KR KR1020170127820A patent/KR101963512B1/en active
Patent Citations (4)
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)
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 |