KR102579474B1 - Method and apparatus for network load balancing - Google Patents

Method and apparatus for network load balancing Download PDF

Info

Publication number
KR102579474B1
KR102579474B1 KR1020210069815A KR20210069815A KR102579474B1 KR 102579474 B1 KR102579474 B1 KR 102579474B1 KR 1020210069815 A KR1020210069815 A KR 1020210069815A KR 20210069815 A KR20210069815 A KR 20210069815A KR 102579474 B1 KR102579474 B1 KR 102579474B1
Authority
KR
South Korea
Prior art keywords
flow
switch
load
network
port
Prior art date
Application number
KR1020210069815A
Other languages
Korean (ko)
Other versions
KR20220161728A (en
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 KR1020210069815A priority Critical patent/KR102579474B1/en
Publication of KR20220161728A publication Critical patent/KR20220161728A/en
Application granted granted Critical
Publication of KR102579474B1 publication Critical patent/KR102579474B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

실시예에 의하면 소프트웨어 정의 네트워크(Software-Defined Network; SDN) 기반의 네트워크 부하 분산 방법 및 장치가 제공된다. 이로써 네트워크 링크 대역폭 활용률을 극대화하고 효과적인 링크 단위 부하 분산을 제공할 수 있다.According to an embodiment, a network load balancing method and device based on a software-defined network (SDN) is provided. This can maximize network link bandwidth utilization and provide effective link-level load distribution.

Description

네트워크 부하 분산 방법 및 장치{METHOD AND APPARATUS FOR NETWORK LOAD BALANCING}Network load balancing method and apparatus {METHOD AND APPARATUS FOR NETWORK LOAD BALANCING}

본 발명은 네트워크 부하 분산 방법 및 장치에 관한 것으로, 소프트웨어 정의 네트워크(Software-Defined Network; SDN) 기반의 네트워크 부하 분산 방법 및 장치에 관한 것이다.The present invention relates to a network load balancing method and device, and to a network load balancing method and device based on a software-defined network (SDN).

이하에서 기술되는 내용은 본 발명의 실시예와 관련되는 배경 정보를 제공할 목적으로 기재된 것일 뿐이고, 기술되는 내용들이 당연하게 종래기술을 구성하는 것은 아니다.The content described below is merely for the purpose of providing background information related to embodiments of the present invention, and does not necessarily constitute prior art.

소프트웨어 정의 네트워크(Software-Defined Network; SDN)는 네트워크의 트래픽 전달 동작을 개방형 API(Application Protocol Interface)를 통하여 소프트웨어 기반 컨트롤러에서 제어 및 관리하는 접근 방식이다.Software-Defined Network (SDN) is an approach that controls and manages network traffic delivery operations in a software-based controller through an open API (Application Protocol Interface).

데이터센터 네트워크에서 SDN 기반 방식으로 트래픽 경로 설정 및 트래픽 전송의 제어를 구현할 수 있다. 데이터센터 네트워크의 트래픽 부하 분산 기법은 동일 비용 다중 경로(Equal Cost Multi Path; ECMP) 라우팅 방식이 보편화되어 있다.Traffic path setting and control of traffic transmission can be implemented in a data center network using an SDN-based method. The Equal Cost Multi Path (ECMP) routing method is widely used as a traffic load balancing technique in data center networks.

ECMP 알고리즘은 5-Tuple(송신 측의 IP와 Port 값, 수신 측의 IP와 Port 값, 및 프로토콜값)을 단방향 해시 함수에 입력하고, 출력된 해시값에 가용한 스위치의 수로 모듈러 연산을 취한 결괏값으로 다음 홉의 스위치를 선택한다.The ECMP algorithm inputs a 5-tuple (IP and port values on the sending side, IP and port values on the receiving side, and protocol values) into a one-way hash function, and performs a modular operation on the output hash value using the number of available switches. As a result, the next hop switch is selected.

해시 함수는 어느 정도 분산된 해시값을 제공하지만, 입력값에 따라 해시 충돌이 발생할 수 있으며, 모듈러 값의 크기가 크지 않기 때문에 특정 스위치로 트래픽이 집중되는 현상이 발생하기 쉬운 문제점이 있다.The hash function provides somewhat distributed hash values, but hash collisions may occur depending on the input value, and because the size of the modular value is not large, there is a problem that traffic is likely to be concentrated on a specific switch.

또한, 각 링크가 가지는 대역폭은 제한되어 있으므로, 트래픽이 특정 스위치로 집중되는 경우, 링크의 병목 현상으로 인해 전송 지연, 데이터 손실 등의 네트워크 성능 저하가 발생할 수 있다.Additionally, the bandwidth of each link is limited, so when traffic is concentrated on a specific switch, network performance degradation such as transmission delay and data loss may occur due to link bottlenecks.

특히, 데이터센터 네트워크는 높은 처리량, 낮은 지연시간, 최소화된 CPU 사용을 위해 RoCE(RDMA over Converged Ethernet) 버전2 기반의 초고속 컴퓨팅(High Performance Computing; HPC) 네트워크를 구성한다.In particular, the data center network configures a High Performance Computing (HPC) network based on RoCE (RDMA over Converged Ethernet) version 2 for high throughput, low latency, and minimized CPU usage.

RoCE 버전2는 PFC(Priority-based Flow Control) 기법을 Ethernet에 적용하여 무손실(lose-less) 통신을 가정하기 때문에, ECMP의 정적 해시 함수 트래픽 분산 기법이 트래픽을 균등하게 분산하지 않으면, PAUSE 프레임들로 인해 head-of-line blocking, congestion spreading, occasional deadlock 문제가 발생할 수 있다.Since RoCE version 2 applies PFC (Priority-based Flow Control) technique to Ethernet and assumes loss-less communication, if ECMP's static hash function traffic distribution technique does not distribute traffic evenly, PAUSE frames This may cause head-of-line blocking, congestion spreading, and occasional deadlock problems.

데이터센터 네트워크의 효율적인 링크 사용을 제공하는 트래픽 부하 분산 기술이 필요하다.Traffic load balancing technology is needed to provide efficient link usage in data center networks.

한편, 전술한 선행기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.Meanwhile, the above-mentioned prior art is technical information that the inventor possessed for deriving the present invention or acquired in the process of deriving the present invention, and cannot necessarily be said to be known art disclosed to the general public before the application for the present invention. .

본 발명의 일 과제는 SDN을 활용하여 네트워크 플로우를 모니터링하고, 경로 제어를 통해 네트워크 부하를 분산하는 네트워크 부하 분산 방법 및 장치를 제공하는 것이다.One object of the present invention is to provide a network load balancing method and device that monitors network flows using SDN and distributes network load through path control.

본 발명의 일 과제는 데이터센터 네트워크의 링크 사용률을 극대화하고 트래픽 부하를 분산시키는 네트워크 부하 분산 방법 및 장치를 제공하는 것이다.One object of the present invention is to provide a network load balancing method and device for maximizing link utilization of a data center network and distributing traffic load.

본 발명의 목적은 이상에서 언급한 과제에 한정되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시 예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 청구범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 알 수 있을 것이다.The object of the present invention is not limited to the problems mentioned above, and other objects and advantages of the present invention that are not mentioned can be understood through the following description and will be more clearly understood through examples of the present invention. It will also be appreciated that the objects and advantages of the present invention can be realized by means and combinations thereof as set forth in the claims.

본 발명의 일 실시예에 따른 네트워크 부하 분산 방법은, 복수의 스위치를 포함하는 스위치 네트워크의 각 스위치의 포트별 링크 부하를 모니터링하는 단계, 상기 포트별 링크 부하에 기반하여 상기 스위치 네트워크에 발생한 플로우(flow)의 경로를 따라 상기 플로우를 분배하는 단계, 상기 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하는 단계를 포함할 수 있다.A network load balancing method according to an embodiment of the present invention includes the steps of monitoring the link load for each port of each switch in a switch network including a plurality of switches, a flow occurring in the switch network based on the link load for each port ( It may include distributing the flow along a path, and redistributing the link load of a switch that requires load redistribution based on the link load for each port.

본 발명의 일 실시예에 따른 네트워크 부하 분산 장치는, 적어도 하나의 명령을 저장하는 메모리 및 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 적어도 하나의 명령을 실행함으로써, 복수의 스위치를 포함하는 스위치 네트워크의 각 스위치의 포트별 링크 부하를 모니터링하고, 상기 포트별 링크 부하에 기반하여 상기 스위치 네트워크에 발생한 플로우의 경로를 따라 상기 플로우를 분배하고, 상기 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하도록 구성될 수 있다.A network load balancer according to an embodiment of the present invention includes a memory storing at least one command and a processor electrically connected to the memory, and the processor executes the at least one command to operate a plurality of switches. Monitoring the link load for each port of each switch in the switch network included, distributing the flow along the path of the flow occurring in the switch network based on the link load for each port, and redistributing the load based on the link load for each port. It can be configured to redistribute the link load of switches that require it.

전술한 것 외의 다른 측면, 특징, 및 이점이 이하의 도면, 청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.Other aspects, features, and advantages in addition to those described above will become apparent from the following drawings, claims, and detailed description of the invention.

실시예에 의하면 데이터센터 네트워크의 특정 링크에 부하가 집중될 경우 플로우의 재분배를 수행할 수 있다.According to an embodiment, when the load is concentrated on a specific link in a data center network, flow redistribution may be performed.

실시예에 의하면, 네트워크 링크 대역폭 활용률을 극대화하고 효과적인 링크 단위 부하 분산을 제공할 수 있다.According to the embodiment, network link bandwidth utilization can be maximized and effective link-level load distribution can be provided.

본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to those mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 실시예에 따른 네트워크 부하 분산 장치의 동작 환경의 예시적인 개략도이다.
도 2는 실시예에 따른 네트워크 시스템을 설명하기 위한 도면이다.
도 3은 실시예에 따른 네트워크 부하 분산 장치의 블록도이다.
도 4는 실시예에 따른 네트워크 부하 분산 방법의 흐름도이다.
도 5는 실시예에 따른 네트워크 부하 분산 방법의 모니터링 과정의 신호 흐름도이다.
도 6은 실시예에 따른 네트워크 부하 분산 방법의 플로우 분배 과정의 흐름도이다.
도 7은 실시예에 따른 네트워크 부하 분산 방법의 플로우 분배 과정의 신호 흐름도이다.
도 8a는 실시예에 따른 플로우 분배 과정을 예시적으로 설명하기 위한 도면이다.
도 8b는 실시예에 따른 플로우 분배 과정을 예시적으로 설명하기 위한 도면이다.
도 9는 실시예에 따른 네트워크 부하 분산 방법의 부하 재분배 과정의 흐름도이다.
도 10은 실시예에 따른 네트워크 부하 분산 방법의 부하 재분배 과정의 신호 흐름도이다.
도 11a는 실시예에 따른 부하 재분배 과정을 예시적으로 설명하기 위한 도면이다.
도 11b는 실시예에 따른 부하 재분배 과정을 예시적으로 설명하기 위한 도면이다.
도 12는 실시예에 따른 네트워크 부하 분산 방법의 전체적인 흐름도이다.
1 is an exemplary schematic diagram of an operating environment of a network load balancer according to an embodiment.
Figure 2 is a diagram for explaining a network system according to an embodiment.
Figure 3 is a block diagram of a network load balancer according to an embodiment.
Figure 4 is a flowchart of a network load balancing method according to an embodiment.
Figure 5 is a signal flow diagram of a monitoring process of a network load balancing method according to an embodiment.
Figure 6 is a flowchart of a flow distribution process of a network load balancing method according to an embodiment.
Figure 7 is a signal flow diagram of a flow distribution process in a network load balancing method according to an embodiment.
FIG. 8A is a diagram illustrating an exemplary flow distribution process according to an embodiment.
FIG. 8B is a diagram illustrating an exemplary flow distribution process according to an embodiment.
Figure 9 is a flowchart of a load redistribution process in a network load distribution method according to an embodiment.
Figure 10 is a signal flow diagram of a load redistribution process in a network load distribution method according to an embodiment.
FIG. 11A is a diagram for exemplarily explaining a load redistribution process according to an embodiment.
FIG. 11B is a diagram for exemplarily explaining a load redistribution process according to an embodiment.
Figure 12 is an overall flowchart of a network load balancing method according to an embodiment.

이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예들에 한정되지 않는다. 이하 실시 예에서는 본 발명을 명확하게 설명하기 위해서 설명과 직접적인 관계가 없는 부분을 생략하지만, 본 발명의 사상이 적용된 장치 또는 시스템을 구현함에 있어서, 이와 같이 생략된 구성이 불필요함을 의미하는 것은 아니다. 아울러, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조번호를 사용한다.Hereinafter, the present invention will be described in more detail with reference to the drawings. The present invention may be implemented in many different forms and is not limited to the embodiments described herein. In the following embodiments, parts that are not directly related to the description are omitted in order to clearly explain the present invention, but this does not mean that such omitted elements are unnecessary when implementing a device or system to which the spirit of the present invention is applied. . In addition, the same reference numbers are used for identical or similar components throughout the specification.

이하의 설명에서 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 되며, 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 또한, 이하의 설명에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.In the following description, terms such as first, second, etc. may be used to describe various components, but the components should not be limited by the terms, and the terms may be used to separate one component from another component. It is used only for distinguishing purposes. Additionally, in the following description, singular expressions include plural expressions, unless the context clearly indicates otherwise.

이하의 설명에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In the following description, terms such as “comprise” or “have” are intended to designate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are intended to indicate the presence of one or more other It should be understood that this does not exclude in advance the possibility of the presence or addition of features, numbers, steps, operations, components, parts, or combinations thereof.

이하 도면을 참고하여 본 발명을 상세히 설명하기로 한다.The present invention will be described in detail below with reference to the drawings.

도 1은 실시예에 따른 네트워크 부하 분산 장치의 동작 환경의 예시적인 개략도이다.1 is an exemplary schematic diagram of an operating environment of a network load balancer according to an embodiment.

실시예에 따른 네트워크 부하 분산 장치(100)는 스위치 네트워크(2000)의 트래픽 모니터링, 경로 설정 및 부하 분산을 수행한다.The network load balancer 100 according to the embodiment performs traffic monitoring, route setting, and load balancing of the switch network 2000.

도 1에 도시된 동작 환경에서 스위치 네트워크(2000)의 트래픽은 서버(300) 및/또는 단말(400)에 의해 발생한다.In the operating environment shown in FIG. 1, traffic of the switch network 2000 is generated by the server 300 and/or the terminal 400.

서버(300)는 단말(400)의 서비스 요청에 응답하여 단말(400)에게 해당 서비스를 제공하는 어플리케이션 서버 또는 어플리케이션 서버가 동작하는 서버 컴퓨터를 의미한다. 단말(400)은 스마트폰과 같은 사용자의 디바이스 또는 디바이스에 설치된 어플리케이션을 의미한다.The server 300 refers to an application server that provides a corresponding service to the terminal 400 in response to a service request from the terminal 400, or a server computer on which the application server operates. The terminal 400 refers to a user's device, such as a smartphone, or an application installed on the device.

서버(300)와 단말(400)은 어플리케이션 서비스 제공을 위한 데이터 통신을 수행한다. 서버(300)는 스위치 네트워크(2000) 및 네트워크(500)를 거쳐서 단말(400)과 통신할 수 있다. 스위치 네트워크(2000)는 예를 들어 복수의 스위치를 포함하는 데이터센터 네트워크이다. 네트워크(500)는 스위치 네트워크(2000)와 단말(400) 사이에 통신 경로를 제공하는 다양한 네트워크를 포함한다.The server 300 and the terminal 400 perform data communication to provide application services. The server 300 can communicate with the terminal 400 via the switch network 2000 and the network 500. The switch network 2000 is, for example, a data center network including a plurality of switches. The network 500 includes various networks that provide a communication path between the switch network 2000 and the terminal 400.

서버(300)와 단말(400) 간의 통신 또는 서버(300)와 서버(300) 간의 통신은 스위치 네트워크(2000)에 플로우를 생성한다. 플로우는 서버(300)와 단말(400)의 어플리케이션 간의 통신 흐름 또는 서버(300)와 서버(300)의 어플리케이션 간의 통신 흐름에 대응하는 일련의 패킷으로, 스위치 네트워크(2000) 상의 설정된 경로를 따라 전달되고, 해당 경로에 트래픽 부하를 유발한다.Communication between the server 300 and the terminal 400 or between the servers 300 and 300 generates a flow in the switch network 2000. The flow is a series of packets corresponding to the communication flow between the application of the server 300 and the terminal 400 or the communication flow between the server 300 and the application of the server 300, and is delivered along a set path on the switch network 2000. This causes traffic load on the path.

실시예에 따른 네트워크 부하 분산 장치(100)는 스위치 네트워크(2000) 및 서버(300)를 포함하는 네트워크 시스템(1000)에서 스위치 네트워크(2000)의 플로우를 모니터링하고 트래픽 제어 및 부하 분산을 수행한다.The network load balancer 100 according to the embodiment monitors the flow of the switch network 2000 and performs traffic control and load balancing in the network system 1000 including the switch network 2000 and the server 300.

이하에서 도 2를 참조하여 네트워크 시스템(1000) 및 네트워크 부하 분산 장치(100)에 대하여 구체적으로 살펴본다.Hereinafter, the network system 1000 and the network load balancer 100 will be looked at in detail with reference to FIG. 2.

도 2는 실시예에 따른 네트워크 시스템을 설명하기 위한 도면이다. Figure 2 is a diagram for explaining a network system according to an embodiment.

실시예에 따른 네트워크 부하 분산 장치(100)는 네트워크 시스템(1000)의 트래픽 제어 및 부하 분산을 수행한다. 여기서 네트워크 시스템(1000)은 예를 들어 데이터센터 네트워크 관리 시스템일 수 있다.The network load balancer 100 according to the embodiment performs traffic control and load balancing of the network system 1000. Here, the network system 1000 may be, for example, a data center network management system.

데이터센터 네트워크는 예를 들어 Clos 토폴로지 네트워크 또는 Fat tree 토폴로지 네트워크로 구성될 수 있다. 예를 들어, 도 1을 참조하여 스위치 네트워크(2000)는 Clos 토폴로지 또는 Fat tree 토폴로지에 기반한 스위치 네트워크로 구성될 수 있다.A data center network may consist of, for example, a Clos topology network or a Fat tree topology network. For example, referring to FIG. 1, the switch network 2000 may be configured as a switch network based on a Clos topology or a Fat tree topology.

Clos 토폴로지 네트워크 또는 Fat tree 토폴로지 네트워크에서 네트워크를 구성하는 모든 노드 간의 통신은 2계층(Layer 2)에서 다수의 경로를 가진다.In a Clos topology network or a Fat tree topology network, communication between all nodes that make up the network has multiple paths in Layer 2.

데이터센터 네트워크는 모든 노드와 스위치가 연결된 CLOS 토폴로지 중 모든 레벨에서 동일한 대역폭을 제공할 수 있는 Fat tree 토폴로지로 구성될 수 있다.A data center network can be composed of a fat tree topology that can provide the same bandwidth at all levels among the CLOS topology where all nodes and switches are connected.

도 2에 도시된 예시적인 Fat tree 토폴로지에서 단일 서버 랙(Rack)은 다수의 서버 컴퓨터(300) 및 다수의 서버 컴퓨터(300)와 연결된 서버랙 최상단의 ToR(Top-of-Rack 또는 Edge) 스위치(230)로 구성될 수 있다. ToR 스위치(230)는 다수의 Aggregation 스위치(220)와 다중 연결되어 있다.In the exemplary fat tree topology shown in FIG. 2, a single server rack (Rack) includes a plurality of server computers 300 and a ToR (Top-of-Rack or Edge) switch at the top of the server rack connected to the plurality of server computers 300. It may be composed of (230). The ToR switch 230 is connected to multiple aggregation switches 220.

Fat tree 토폴로지에 대하여 살펴보면, K-ary Fat tree 토폴로지의 각 pod는 하부의 (k/2)^2개의 서버(300)와 중간부의 k/2개의 ToR 스위치(230) 및 상부의 k/2개의 Aggregation 스위치(220)로 구성된다. 각 ToR 스위치(230)는 k/2개의 서버(300)와 k/2개의 Aggregation 스위치(220)에 연결되고, (k/2)^2개의 Core 스위치(210)는 각각 k개의 Pod와 연결된다. 따라서 총 (k^3)/4개의 서버(300)까지 확장할 수 있다. 모든 경로에 패킷이 균일하게 분산되는 경우, 모든 서버는 이론상 회선 속도(line speed)까지의 성능을 활용할 수 있다.Looking at the fat tree topology, each pod in the K-ary fat tree topology consists of (k/2)^2 servers 300 at the bottom, k/2 ToR switches 230 at the middle, and k/2 ToR switches 230 at the top. It consists of an aggregation switch (220). Each ToR switch 230 is connected to k/2 servers 300 and k/2 aggregation switches 220, and (k/2)^2 core switches 210 are each connected to k pods. . Therefore, it can be expanded to a total of (k^3)/4 servers (300). If packets are distributed uniformly across all paths, all servers can theoretically utilize performance up to line speed.

도 2에 도시된 예에서, Pod 0에 위치한 서버(300)가 Pod 2에 위치한 서버(300)와 통신하기 위해 사용할 수 있는 경로는 16가지가 존재한다. 이는 각각 2개의 Aggregation 스위치(220), 4개의 Core 스위치(210) 및 2개의 aggregation 스위치(210) 중 하나를 선택하여 데이터를 전송할 수 있기 때문이다.In the example shown in FIG. 2, there are 16 paths that the server 300 located in Pod 0 can use to communicate with the server 300 located in Pod 2. This is because data can be transmitted by selecting one of the two aggregation switches 220, four core switches 210, and two aggregation switches 210, respectively.

실시예에 따른 네트워크 부하 분산 장치(100)는 부하 분산 정책에 따라 스위치 네트워크(2000)를 구성하는 복수의 스위치(200)의 링크를 구성한다. 실시예에 따른 네트워크 부하 분산 장치(100)는 스위치 네트워크(2000)에 포함된 복수의 스위치(200)의 트래픽을 모니터링하고, 각 스위치에 부하를 할당하고, 필요에 따라 부하를 재분배한다. 여기서 복수의 스위치(200)는 스위치 네트워크(2000) 상의 모든 스위치, 즉 ToR 스위치(210), Aggregation 스위치(220) 및 Core 스위치(230)를 포함한다.The network load balancer 100 according to the embodiment configures links of a plurality of switches 200 constituting the switch network 2000 according to a load balance policy. The network load balancer 100 according to the embodiment monitors traffic of a plurality of switches 200 included in the switch network 2000, allocates a load to each switch, and redistributes the load as necessary. Here, the plurality of switches 200 includes all switches on the switch network 2000, that is, the ToR switch 210, the aggregation switch 220, and the core switch 230.

네트워크 부하 분산 장치(100)는 소프트웨어 정의 네트워크(Software-Defined Network; SDN)를 활용하여 데이터센터 네트워크의 링크 사용률을 극대화하고, 네트워크 트래픽 부하를 효과적으로 분산할 수 있다.The network load balancer 100 can utilize a software-defined network (SDN) to maximize link utilization of the data center network and effectively distribute network traffic load.

도 3은 실시예에 따른 네트워크 부하 분산 장치의 블록도이다.Figure 3 is a block diagram of a network load balancer according to an embodiment.

실시예에 따른 네트워크 부하 분산 장치(100)는 프로세서(110), 메모리(120) 및 통신부(130)를 포함한다. 도 3에 도시된 구성은 예시적인 것이며 이에 제한되지 않는다.The network load balancer 100 according to the embodiment includes a processor 110, a memory 120, and a communication unit 130. The configuration shown in FIG. 3 is illustrative and not limited thereto.

프로세서(110)는 일종의 중앙처리장치로서, 메모리(120)에 저장된 하나 이상의 명령어를 실행하여 네트워크 부하 분산 장치(100)의 동작을 제어할 수 있다. 프로세서(110)는 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다.The processor 110 is a type of central processing unit and can control the operation of the network load balancer 100 by executing one or more instructions stored in the memory 120. Processor 110 may include all types of devices capable of processing data.

프로세서(110)는 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 그래픽 처리 장치(graphics processing unit: GPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 이에 한정되는 것은 아니다. 프로세서(110)는 하나 이상의 프로세서를 포함할 수 있다. 프로세서(110)는 적어도 하나의 코어를 포함할 수 있다.The processor 110 may mean, for example, a data processing device built into hardware that has a physically structured circuit to perform a function expressed by code or instructions included in a program. Examples of data processing devices built into hardware include microprocessors, central processing units (CPUs), graphics processing units (GPUs), processor cores, and multi-processor devices. It may include processing devices such as a processor (multiprocessor), application-specific integrated circuit (ASIC), and field programmable gate array (FPGA), but is not limited thereto. Processor 110 may include one or more processors. Processor 110 may include at least one core.

메모리(120)는 실시예에 따른 네트워크 부하 분산 장치(100)가 네트워크 부하 분산 방법을 실행하기 위한 명령 등을 저장할 수 있다. 메모리(120)는 실시예에 따른 부하 분산 기법을 구현한 하나 이상의 명령을 생성 및 실행하는 실행가능한(executable) 프로그램을 저장할 수 있다.The memory 120 may store commands for the network load balancer 100 according to an embodiment to execute a network load balance method. The memory 120 may store an executable program that generates and executes one or more instructions implementing a load balancing technique according to an embodiment.

프로세서(110)는 메모리(120)에 저장된 프로그램 및 명령어들에 기반하여 실시예에 따른 네트워크 부하 분산 방법을 실행할 수 있다.The processor 110 may execute a network load balancing method according to an embodiment based on programs and instructions stored in the memory 120.

메모리(120)는 내장 메모리 및/또는 외장 메모리를 포함할 수 있으며, DRAM, SRAM, 또는 SDRAM 등과 같은 휘발성 메모리, OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, NAND 플래시 메모리, 또는 NOR 플래시 메모리 등과 같은 비휘발성 메모리, SSD, CF(compact flash) 카드, SD 카드, Micro-SD 카드, Mini-SD 카드, Xd 카드, 또는 메모리 스틱(memory stick) 등과 같은 플래시 드라이브, 또는 HDD와 같은 저장 장치를 포함할 수 있다. 메모리(120)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 이에 한정되는 것은 아니다.Memory 120 may include internal memory and/or external memory, such as volatile memory such as DRAM, SRAM, or SDRAM, one time programmable ROM (OTPROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, and NAND. Non-volatile memory such as flash memory or NOR flash memory, flash drives such as SSD, compact flash (CF) card, SD card, Micro-SD card, Mini-SD card, Xd card, or memory stick, etc. Alternatively, it may include a storage device such as an HDD. The memory 120 may include, but is not limited to, magnetic storage media or flash storage media.

통신부(130)는 네트워크 부하 분산 장치(100)의 데이터의 송신 및 수신을 위한 통신 모듈을 포함하고, 네트워크 부하 분산 장치(100)와 스위치 네트워크(2000) 간의 통신 인터페이스를 제공한다.The communication unit 130 includes a communication module for transmitting and receiving data of the network load balancer 100 and provides a communication interface between the network load balancer 100 and the switch network 2000.

버스(140)는 프로세서(110) 및 통신부(130)를 연결하는 논리적/물리적 경로이다. 프로세서(110)는 버스(140)를 통해 메모리(120)에 대한 읽기/쓰기(read/write)를 수행할 수 있다.The bus 140 is a logical/physical path connecting the processor 110 and the communication unit 130. The processor 110 may read/write the memory 120 through the bus 140.

프로세서(110)는 메모리(120)에 저장된 적어도 하나의 명령을 실행함으로써, 복수의 스위치(200)를 포함하는 스위치 네트워크(2000)의 각 스위치의 포트별 링크 부하를 모니터링하고, 포트별 링크 부하에 기반하여 스위치 네트워크(2000)에 발생한 플로우의 경로를 따라 플로우를 분배하고, 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하도록 구성될 수 있다.The processor 110 monitors the link load for each port of each switch of the switch network 2000 including a plurality of switches 200 by executing at least one command stored in the memory 120, and determines the link load for each port. Based on this, the flow may be distributed along the path of the flow occurring in the switch network 2000, and the link load of the switch requiring load redistribution may be redistributed based on the link load for each port.

예를 들어, 스위치 네트워크(2000)는 Clos 토폴로지 또는 Fat tree 토폴로지에 기반한 스위치 네트워크이다.For example, Switch Network 2000 is a switch network based on Clos topology or Fat tree topology.

일 예에서 프로세서(110)는 플로우를 분배하기 위하여, 경로 탐색 알고리즘에 의해 플로우의 소스로부터 목적지까지의 후보 경로를 결정하고, 포트별 링크 부하에 기반하여 후보 경로를 따라 각 스위치에서 플로우의 경로를 선택하도록 구성될 수 있다.In one example, in order to distribute a flow, the processor 110 determines a candidate path from the source of the flow to the destination using a path search algorithm, and determines the path of the flow in each switch along the candidate path based on the link load for each port. It can be configured to select.

일 예에서 프로세서는, 경로를 선택하기 위하여, 후보 경로를 따라 각 스위치에서 링크 부하가 최소인 포트를 플로우의 경로로 사용할 링크로 선택하도록 구성될 수 있다.In one example, to select a path, the processor may be configured to select the port with the minimum link load at each switch along the candidate path as the link to be used as the path for the flow.

일 예에서 프로세서는, 플로우를 분배하기 위하여, 플로우의 경로 상의 일련의 스위치에게 플로우에 대한 플로우 테이블 엔트리 추가 명령을 전송하도록 구성될 수 있다.In one example, the processor may be configured to send an add flow table entry command for a flow to a series of switches on the path of the flow to distribute the flow.

일 예에서 프로세서(110)는 링크 부하를 재분배하기 위하여, 복수의 스위치(2000) 중에서 부하 재분배를 수행할 타겟 스위치 포트 페어가 존재하는 타겟 스위치를 결정하고, 타겟 스위치 포트 페어에 할당된 플로우 중에서 재분배할 타겟 플로우를 선택하도록 구성될 수 있다.In one example, in order to redistribute the link load, the processor 110 determines a target switch among the plurality of switches 2000 that has a target switch port pair to perform load redistribution, and performs redistribution among the flows allocated to the target switch port pair. It can be configured to select a target flow to perform.

여기서 타겟 스위치 포트 페어는 링크 부하 차이가 소정의 임계치를 이상인 두 개의 스위치 포트를 포함할 수 있다.Here, the target switch port pair may include two switch ports whose link load difference is greater than or equal to a predetermined threshold.

일 예에서 프로세서(110)는 플로우를 선택하기 위하여, 타겟 스위치의 스위치 포트에 할당된 플로우 중 소정의 시간 동안 지속된 롱 플로우(long flow)를 결정하고, 롱 플로우 중에서 타겟 스위치 포트 페어의 링크 부하 차이가 소정의 임계치 미만이 되도록 하는 링크 부하를 가진 플로우를 타겟 플로우로 선택하도록 구성될 수 있다.In one example, in order to select a flow, the processor 110 determines a long flow that lasts for a predetermined time among the flows allocated to the switch port of the target switch, and selects the link load of the target switch port pair among the long flows. It may be configured to select as the target flow a flow with a link load such that the difference is less than a predetermined threshold.

일 예에서 프로세서(110)는 링크 부하를 재분배하기 위하여, 타겟 플로우를 타겟 스위치 포트 페어의 링크 부하가 더 작은 제 1 스위치 포트에 할당하는 플로우 테이블 엔트리 추가 명령을 타겟 스위치에 전송하고, 타겟 플로우를 타겟 스위치 포트 페어의 링크 부하가 더 큰 제 2 스위치 포트에서 삭제하는 플로우 테이블 엔트리 삭제 명령을 전송하도록 구성될 수 있다.In one example, in order to redistribute the link load, the processor 110 transmits a flow table entry addition command to the target switch to assign the target flow to the first switch port with a smaller link load of the target switch port pair, and adds the target flow to the target switch. It may be configured to transmit a flow table entry delete command to be deleted from a second switch port where the link load of the target switch port pair is greater.

일 예에서 프로세서(110)는 플로우를 재분배하기 위하여, 타겟 스위치의 모든 스위치 포트 페어 간의 링크 부하 차이가 상기 소정의 임계치 미만이 될 때까지 부하 재분배를 반복하도록 구성될 수 있다.In one example, in order to redistribute flows, the processor 110 may be configured to repeat load redistribution until the link load difference between all switch port pairs of the target switch becomes less than the predetermined threshold.

이하에서 도 4를 참조하여 실시예에 따른 네트워크 부하 분산 방법에 대하여 구체적으로 설명한다.Hereinafter, a network load distribution method according to an embodiment will be described in detail with reference to FIG. 4.

도 4는 실시예에 따른 네트워크 부하 분산 방법의 흐름도이다.Figure 4 is a flowchart of a network load balancing method according to an embodiment.

실시예에 따른 네트워크 부하 분산 방법은, 복수의 스위치(200)를 포함하는 스위치 네트워크(2000)의 각 스위치의 포트별 링크 부하를 모니터링하는 단계(S1), 포트별 링크 부하에 기반하여 스위치 네트워크(2000)에 발생한 플로우의 경로를 따라 플로우를 분배하는 단계(S2), 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하는 단계(S3)를 포함한다.The network load distribution method according to the embodiment includes monitoring the link load for each port of each switch of the switch network 2000 including a plurality of switches 200 (S1), and the switch network (S1) based on the link load for each port. 2000), distributing the flow along the path of the flow (S2), and redistributing the link load of the switch that requires load redistribution based on the link load for each port (S3).

즉, 실시예에 따른 네트워크 부하 분산 방법은, 데이터센터 네트워크의 전체 상태를 관찰하는 모니터링 단계(S1), 모니터링된 정보를 기반으로 새로 발생한 플로우의 경로를 설정하는 플로우 분배 단계(S2) 및 부하가 집중될 경우 플로우를 재분배하는 부하 재분배 단계(S3)을 포함한다.That is, the network load distribution method according to the embodiment includes a monitoring step (S1) of observing the overall state of the data center network, a flow distribution step (S2) of setting the path of a newly generated flow based on the monitored information, and a load distribution step (S2) of observing the overall state of the data center network. It includes a load redistribution step (S3) that redistributes flows when concentrated.

단계(S1)에서 프로세서(110)는 복수의 스위치(200)를 포함하는 스위치 네트워크(2000)의 각 스위치의 포트별 링크 부하를 모니터링한다.In step S1, the processor 110 monitors the link load for each port of each switch of the switch network 2000 including a plurality of switches 200.

스위치는 복수의 스위치 포트(물리적 포트)를 포함한다. 스위치의 포트별 링크 부하는 스위치에 포함된 각 스위치 포트별 통계로서, 각 포트의 링크 별로 처리하고 있는 트래픽의 양을 의미한다.A switch includes a plurality of switch ports (physical ports). The link load per port of a switch is statistics for each switch port included in the switch, and refers to the amount of traffic being processed for each link of each port.

단계(S1)에서 프로세서(110)는 데이터센터 네트워크의 모든 스위치에 대하여 개별 포트 단위로 링크의 부하를 주기적으로 모니터링할 수 있다.In step S1, the processor 110 may periodically monitor the link load on an individual port basis for all switches in the data center network.

예를 들어 포트별 링크 부하는 다음과 같은 수학식으로 계산될 수 있다.For example, the link load for each port can be calculated using the following equation.

(link load) = (TX bytes) / (period)(link load) = (TX bytes) / (period)

즉, 한 주기 동안 스위치 포트 당 전송된 바이트 수에 따라 링크 부하를 결정할 수 있다.In other words, the link load can be determined based on the number of bytes transmitted per switch port during one cycle.

다른 예에서, 포트별 링크 부하는 해당 포트의 대역폭(bandwidth) 대비 현재 사용 중인 대역폭의 비율(%)로 결정할 수도 있다.In another example, the link load for each port may be determined as a ratio (%) of the bandwidth currently in use compared to the bandwidth of the corresponding port.

단계(S1)에 대하여는 도 5를 참조하여 구체적으로 후술한다.Step (S1) will be described in detail later with reference to FIG. 5.

단계(S2)에서 프로세서(110)는 단계(S1)에서 모니터링된 포트별 링크 부하에 기반하여 스위치 네트워크(2000)에 발생한 플로우의 경로를 따라 플로우를 분배한다.In step S2, the processor 110 distributes the flow along the path of the flow occurring in the switch network 2000 based on the link load for each port monitored in step S1.

단계(S2)에서 프로세서(110)는 5-tuple(소스 IP값, 소스 Port값, 목적지 IP값, 목적지 Port값 및 프로토콜 값)로 정의되는 플로우가 새로 발생한 경우 단계(S1)에서 모니터링한 정보를 기반으로 현재 스위치 네트워크(2000)에서 해당 플로우가 선택할 수 있는 경로 중 가장 부하가 적은 경로를 선택하여 배정한다.In step S2, the processor 110 displays the information monitored in step S1 when a new flow defined as a 5-tuple (source IP value, source port value, destination IP value, destination port value, and protocol value) occurs. Based on this, the path with the lowest load among the paths that the flow can select in the current switch network (2000) is selected and assigned.

단계(S2)에 대하여는 도 6, 도 7, 도8a 및 도 8b를 참조하여 후술한다.Step S2 will be described later with reference to FIGS. 6, 7, 8A, and 8B.

단계(S3)에서 프로세서(110)는 단계(S1)에서 모니터링된 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배한다.In step S3, the processor 110 redistributes the link load of the switch requiring load redistribution based on the link load for each port monitored in step S1.

예를 들어, 단계(S3)에서 프로세서(110)는 일정 주기마다 플로우가 특정 링크로 집중되었는지를 확인하고, 이를 재분배한다.For example, in step S3, the processor 110 checks whether flows are concentrated on a specific link at regular intervals and redistributes them.

단계(S3)에 대하여는 도 9, 도 10, 도 11a 및 도 11b를 참조하여 후술한다.Step S3 will be described later with reference to FIGS. 9, 10, 11A, and 11B.

단계(S1), 단계(S2) 및 단계(S3)는 각각 모니터링 모듈, 플로우 분배 모듈 및 부하 재분배 모듈로 구현될 수 있다. 모니터링 모듈, 플로우 분배 모듈 및 부하 재분배 모듈은 소프트웨어 모듈로서 각 모듈의 실행 코드는 메모리(120)에 저장될 수 있다.Steps S1, S2, and S3 may be implemented as a monitoring module, a flow distribution module, and a load redistribution module, respectively. The monitoring module, flow distribution module, and load redistribution module are software modules, and the execution code of each module may be stored in the memory 120.

프로세서(110)는 메모리(120)에 저장된 실행 코드에 포함된 적어도 하나의 명령을 실행하여 모니터링 모듈, 플로우 분배 모듈 및 부하 재분배 모듈을 실행할 수 있다. 예를 들어 모니터링 모듈, 플로우 분배 모듈 및 부하 재분배 모듈은 각각 하나의 프로세스(process) 또는 스레드(thread)로서 프로세서(110)에 의해 실행될 수 있다.The processor 110 may execute at least one instruction included in the execution code stored in the memory 120 to execute the monitoring module, the flow distribution module, and the load redistribution module. For example, the monitoring module, flow distribution module, and load redistribution module may each be executed by the processor 110 as one process or thread.

한편, 단계(S1), 단계(S2) 및 단계(S3)는 순차적으로 실행되거나 순서를 달리하여 실행될 수 있다. 단계(S1), 단계(S2) 및 단계(S3)은 동시에 실행될 수 있다.Meanwhile, steps S1, S2, and S3 may be executed sequentially or in a different order. Steps S1, S2, and S3 may be executed simultaneously.

이하에서 도 5를 참조하여 단계(S1)에 대하여 구체적으로 살펴본다.Hereinafter, step S1 will be looked at in detail with reference to FIG. 5.

도 5는 실시예에 따른 네트워크 부하 분산 방법의 모니터링 과정의 신호 흐름도이다.Figure 5 is a signal flow diagram of a monitoring process of a network load balancing method according to an embodiment.

도 4를 참조하여 단계(S1)은 단계(S11) 및 단계(S22)를 포함한다.With reference to FIG. 4, step S1 includes step S11 and step S22.

단계(S11)에서 네트워크 부하 분산 장치(100)의 프로세서(110)는 스위치 네트워크(2000)의 모든 스위치(200)로 포트별 링크 부하 정보를 요청한다. 일 예에서 프로세서(110)는 소정의 주기마다, 즉 주기적으로 단계(S11)을 실행할 수 있다.In step S11, the processor 110 of the network load balancer 100 requests link load information for each port from all switches 200 of the switch network 2000. In one example, the processor 110 may execute step S11 at predetermined intervals, that is, periodically.

단계(S12)에서 각 스위치(200)는 단계(S11)의 포트별 링크 부하 정보 요청에 대한 응답으로 자신의 포트별 통계, 즉 링크 별로 처리하고 있는 트래픽의 양을 프로세서(110)에게 전달한다.In step S12, each switch 200 transmits statistics for each port, that is, the amount of traffic being processed for each link, to the processor 110 in response to the link load information request for each port in step S11.

단계(S12)에서 응답을 수신한 프로세서(110)는 각 스위치에서 응답한 포트별 링크 부하 정보를 기반으로 전체 데이터센터 네트워크의 전체 상태를 확인한다. 예를 들어 프로세서(110)는 각 스위치로부터 수신한 링크별 부하 정보를 기반으로 전체 네트워크 상태를 키-밸류(Key-Value) 자료 구조에 유지 및 관리할 수 있다.The processor 110 that receives the response in step S12 checks the overall status of the entire data center network based on the link load information for each port responded by each switch. For example, the processor 110 can maintain and manage the overall network state in a key-value data structure based on load information for each link received from each switch.

이하에서 도 6, 도 7, 도 8a 및 도 8b를 참조하여 도 4의 단계(S2)에 대하여 구체적으로 살펴본다.Hereinafter, step S2 of FIG. 4 will be described in detail with reference to FIGS. 6, 7, 8A, and 8B.

도 6은 실시예에 따른 네트워크 부하 분산 방법의 플로우 분배 과정의 흐름도이다.Figure 6 is a flowchart of a flow distribution process of a network load balancing method according to an embodiment.

단계(S20_S)에서 스위치(200)에 신규 플로우(소스 노드 주소, 소스 노드 포트, 목적지 노드 주소, 목적지 노드 포트, 프로토콜로 정의되는 5-tuple로 식별됨)가 발생하는 경우, 스위치(200)는 해당 플로우를 어떤 경로로 전달해야 하는지 알지 못하므로 해당 플로우에 대한 경로를 결정하여 줄 것을 네트워크 부하 분산 장치(100)에 요청한다.In step S20_S, when a new flow (identified by a 5-tuple defined by the source node address, source node port, destination node address, destination node port, and protocol) occurs in the switch 200, the switch 200 Since it does not know which path the flow should be routed through, it requests the network load balancer 100 to determine the path for the flow.

단계(S20)에서 네트워크 부하 분산 장치(100)는 스위치(200)로부터 새로 발생한 플로우에 대한 경로 결정 요청(예를 들어 PacketIn 패킷)을 수신하고, 이에 대한 응답으로 단계(S21), 단계(S22) 및 후술할 단계(S23)을 실행한다.In step S20, the network load balancer 100 receives a route decision request (e.g., PacketIn packet) for a newly generated flow from the switch 200, and in response, steps S21 and S22. and execute step S23, which will be described later.

도 4를 참조하여 단계(S2)는 경로 탐색 알고리즘에 의해 플로우의 소스로부터 목적지까지의 후보 경로를 결정하는 단계(S21) 및 현재 포트별 링크 부하에 기반하여 단계(S21)에서 결정된 후보 경로를 따라 각 스위치에서 플로우의 경로를 선택하는 단계(S22)를 포함한다.Referring to FIG. 4, step S2 includes determining a candidate path from the source of the flow to the destination using a path search algorithm (S21), and following the candidate path determined in step S21 based on the current link load for each port. It includes a step (S22) of selecting a flow path in each switch.

단계(S21)에서 프로세서(110)는 경로 탐색 알고리즘에 의해 플로우의 소스로부터 목적지까지의 후보 경로를 결정할 수 있다. 여기서 결정된 후보 경로는 소스로부터 목적지에 도달가능한 경로를 제공할 수 있는 일련의 스위치에 대한 정보를 포함할 수 있다. 후보 경로는 적어도 하나의 후보 경로를 포함한다. 예를 들어 경로 탐색 알고리즘은 깊이 우선 탐색 알고리즘(Depth First Search; DFS) 기반의 알려진 그래프 경로 탐색 알고리즘을 사용할 수 있다.In step S21, the processor 110 may determine a candidate path from the source of the flow to the destination using a path search algorithm. The candidate path determined here may include information about a series of switches that can provide a reachable path from the source to the destination. A candidate path includes at least one candidate path. For example, the path search algorithm can use a known graph path search algorithm based on Depth First Search (DFS).

단계(S22)에서 프로세서(110)는 현재 포트별 링크 부하에 기반하여 단계(S21)에서 결정된 후보 경로를 따라 각 스위치에서 플로우의 경로를 선택할 수 있다.In step S22, the processor 110 may select a path for a flow in each switch along the candidate path determined in step S21 based on the current link load for each port.

단계(S22)에서 프로세서(110)는 단계(S21)에서 결정된 후보 경로를 따라가면서 다음 홉(hop)을 결정할 수 있다. 일 예에서, 프로세서(110)는 단계(S22)에서 후보 경로를 따라 각 스위치에서 링크 부하가 최소인 포트를 플로우의 경로로 사용할 링크로 선택할 수 있다.In step S22, the processor 110 may determine the next hop by following the candidate path determined in step S21. In one example, the processor 110 may select the port with the minimum link load in each switch along the candidate path as the link to be used as the path for the flow in step S22.

추가적으로, 단계(S2)는 플로우의 경로 상의 일련의 스위치(200)에게 플로우에 대한 플로우 테이블 엔트리(flow table entry) 추가 명령(entry install command)을 전송하는 단계(S23)를 더 포함할 수 있다.Additionally, step S2 may further include a step S23 of transmitting a flow table entry addition command (entry install command) for the flow to a series of switches 200 on the path of the flow.

예를 들어 플로우 테이블 엔트리 추가 명령은 해당 명령을 수신한 스위치(200)가 자신의 플로우 테이블에 추가해야할 플로우 테이블 엔트리에 대한 정보를 포함할 수 있다. 여기서 추가해야할 플로우 테이블 엔트리에 대한 정보는 해당 플로우 식별 정보(즉, 소스 노드 주소, 소스 노드 포트, 목적지 노드 주소, 목적지 노드 포트, 프로토콜로 정의되는 5-tuple) 및 경로 정보(사용할 스위치 포트 정보)를 포함할 수 있다.For example, a command to add a flow table entry may include information about a flow table entry that the switch 200 that receives the command should add to its flow table. The information about the flow table entry to be added here is the corresponding flow identification information (i.e., source node address, source node port, destination node address, destination node port, 5-tuple defined by the protocol) and route information (switch port information to be used). may include.

단계(S23_S)에서 플로우 테이블 엔트리 추가 명령을 수신한 스위치(200)는 자신의 플로우 테이블에 해당 플로우에 대한 경로 정보를 포함한 플로우 테이블 엔트리를 추가한다. 이로써 해당 스위치(200)는 신규 플로우를 어떤 경로로 전달해야할 지 알게 된다. The switch 200, which has received the flow table entry addition command in step S23_S, adds a flow table entry including path information for the corresponding flow to its flow table. As a result, the switch 200 knows which path to forward the new flow to.

도 7은 실시예에 따른 네트워크 부하 분산 방법의 플로우 분배 과정의 신호 흐름도이다.Figure 7 is a signal flow diagram of a flow distribution process in a network load balancing method according to an embodiment.

단계(S20_S)에서 스위치(200)가 신규 플로우를 수신하면, 단계(S20)에서 스위치(200)는 프로세서(110)에게 경로 결정 요청을 전송한다.When the switch 200 receives a new flow in step S20_S, the switch 200 transmits a route decision request to the processor 110 in step S20.

단계(S20)에서 프로세서(110)는 경로 결정 요청을 수신하고, 전술한 단계(S21) 및 단계(S22)에 의해 플로우에 대한 경로를 선택한다.In step S20, the processor 110 receives a path determination request and selects a path for the flow by steps S21 and S22 described above.

단계(S23)에서 프로세서(110)는 신규 플로우에 대하여 선택된 경로 정보를 포함한 플로우 테이블 엔트리 추가 명령을 선택된 경로 상의 일련의 스위치(200)에게 전송한다.In step S23, the processor 110 transmits a flow table entry addition command including the selected path information for the new flow to a series of switches 200 on the selected path.

단계(S23_S)에서 플로우 테이블 엔트리 추가 명령을 수신한 스위치(200)는 해당 엔트리를 자신의 플로우 테이블에 추가한다.The switch 200, which has received the command to add a flow table entry in step S23_S, adds the corresponding entry to its flow table.

즉, 네트워크 부하 분산 장치(100)의 프로세서(110)는 플로우에 대한 경로 요청(S20_S)을 수신하면(S20), 현재 네트워크 상태 정보(포트별 링크 부하 정보)를 기반으로 해당 플로우가 사용 가능한 경로 중 가장 작은 부하를 가진 링크들로 구성된 경로를 선택(S21, S22)한다. 프로세서(110)는 선택된 경로에 포함된 일련의 스위치에 경로로 선택된 링크로 패킷을 전달하도록 각 스위치에 새로운 플로우 테이블 엔트리 추가 명령을 보낸다(S23). 명령을 수신한 각 스위치는 플로우 테이블 엔트리를 추가한다(S23_S).That is, when the processor 110 of the network load balancer 100 receives a route request (S20_S) for a flow (S20), it selects a route available for the flow based on current network state information (link load information for each port). The path consisting of links with the lowest load is selected (S21, S22). The processor 110 sends a new flow table entry addition command to a series of switches included in the selected path to each switch to forward the packet to the link selected as the path (S23). Each switch that receives the command adds a flow table entry (S23_S).

도 8a는 실시예에 따른 플로우 분배 과정을 예시적으로 설명하기 위한 도면이다. 도 8b는 실시예에 따른 플로우 분배 과정을 예시적으로 설명하기 위한 도면이다. 도 8a와 도 8b를 연결하여 살펴본다.FIG. 8A is a diagram illustrating an exemplary flow distribution process according to an embodiment. FIG. 8B is a diagram illustrating an exemplary flow distribution process according to an embodiment. Let's look at Figures 8A and 8B by connecting them.

신규 플로우(FL)가 발생하면 스위치(200)는 신규 플로우(FL)에 대응하는 플로우 테이블 엔트리가 없으므로 이에 대한 경로 설정을 네트워크 부하 분산 장치(100)로 요청한다. 경로 설정 요청(PacketIn 패킷)을 받은 네트워크 부하 분산 장치(100)의 프로세서(110)는 가장 작은 부하를 가진 경로를 계산한다.When a new flow (FL) occurs, the switch 200 requests the network load balancer 100 to set a path for the new flow (FL) since there is no flow table entry corresponding to the new flow (FL). The processor 110 of the network load balancer 100, which has received a route setting request (PacketIn packet), calculates the route with the smallest load.

프로세서(110)는 소스 노드부터 목적지 노드까지 가는 경로들을 먼저 경로 탐색 알고리즘으로 계산한 뒤, 소스 노드부터 차례로 다음 홉을 결정한다. 다음 홉을 결정하는 방식은 도 6을 참조하여 전술한대로 해당 노드에서 가능한 다음 홉들 중 가장 작은 링크 부하를 가진 홉을 선택하는 방식으로 이루어진다.The processor 110 first calculates the paths from the source node to the destination node using a path search algorithm, and then sequentially determines the next hop starting from the source node. The next hop is determined by selecting the hop with the smallest link load among the possible next hops for the node, as described above with reference to FIG. 6.

도 8a의 예시는 특정 노드(switch)(200)에서 다음 홉을 결정할 때, 가능한 홉이 총 4개 있는 상황을 보여준다. 여기서 포트의 링크 부하는 해당 포트의 대역폭 중 기 할당된 대역폭의 비율(%)로 예시적으로 표시하였다. 도 8a의 예시에서 포트 3(Port 3)이 가장 작은 링크 부하(30%) 가지고 있음을 알 수 있다.The example of FIG. 8A shows a situation where there are a total of four possible hops when determining the next hop at a specific node (switch 200). Here, the link load of a port is illustratively expressed as a ratio (%) of the already allocated bandwidth among the bandwidth of the corresponding port. In the example of Figure 8a, it can be seen that Port 3 has the smallest link load (30%).

도 8b의 예시는 도 8a의 상황에서 다음 홉으로 포트 3(Port 3)이 선택된 상황을 보여준다. 즉, 포트 3(Port 3)은 현재 노드에서 가능한 다음 홉들 중 가장 작은 링크 부하를 가진 홉이므로 신규 플로우(FL)에 대한 경로에 포함될 링크로 선택되었다.The example of FIG. 8B shows a situation in which Port 3 is selected as the next hop in the situation of FIG. 8A. In other words, Port 3 was selected as the link to be included in the path for the new flow (FL) because it is the hop with the smallest link load among the possible next hops in the current node.

이하에서 도 9, 도 10, 도 11a 및 도11b를 참조하여 도 4의 단계(S3)에 대하여 구체적으로 살펴본다.Hereinafter, step S3 of FIG. 4 will be examined in detail with reference to FIGS. 9, 10, 11A, and 11B.

도 9는 실시예에 따른 네트워크 부하 분산 방법의 플로우 재분배 과정의 흐름도이다.Figure 9 is a flow chart of a flow redistribution process in a network load balancing method according to an embodiment.

신규 플로우 진입 시점에 해당 플로우의 크기를 예측하는 것은 제한되기 때문에, 도 6을 참조하여 단계(S2)의 플로우 분배 이후에 특정 링크에 부하가 집중되는 현상이 발생할 수 있다.Since predicting the size of the flow at the time of entry of a new flow is limited, a phenomenon in which the load is concentrated on a specific link may occur after the flow distribution in step S2, referring to FIG. 6.

따라서 네트워크 부하 분산 장치(100)는 도 6을 참조하여 단계(S3)에서 포트 단위 링크의 부하를 주기적으로 모니터링하여 플로우의 재배치를 수행한다.Accordingly, the network load balancer 100 periodically monitors the load of the link on a per-port basis and performs flow relocation in step S3 with reference to FIG. 6 .

단계(S3)은 스위치 네트워크(2000)의 복수의 스위치 중에서 링크 부하 재분배를 수행할 타겟 스위치 포트 페어(pair)가 존재하는 타겟 스위치를 결정하는 단계(S31) 및 결정된 타겟 스위치 포트 페어에 할당된 플로우 중에서 재분배할 타겟 플로우를 선택하는 단계(S32)를 포함한다. 여기서 타겟 스위치 포트 페어는 링크 부하 차이가 소정의 임계치를 이상인 두 개의 스위치 포트를 포함한다.Step (S3) is a step (S31) of determining a target switch on which a target switch port pair to perform link load redistribution exists among a plurality of switches of the switch network 2000 and a flow assigned to the determined target switch port pair. It includes a step (S32) of selecting a target flow to be redistributed among the flow. Here, the target switch port pair includes two switch ports whose link load difference is greater than or equal to a predetermined threshold.

단계(S31)에서 프로세서(110)는 스위치 네트워크(2000)의 복수의 스위치 중에서 링크 부하 재분배를 수행할 타겟 스위치 포트 페어(pair)가 존재하는 타겟 스위치를 결정한다.In step S31, the processor 110 determines a target switch on which a target switch port pair to perform link load redistribution exists among a plurality of switches of the switch network 2000.

단계(S31)에서 프로세서(110)는 스위치 네트워크(2000)의 각 스위치의 포트별 링크 부하에 기반하여 특정 링크에 부하가 집중되었는 지를 판단한다. 예를 들어, 프로세서(110)는 일정 주기마다 특정 링크에 부하가 집중되었는 지를 판단할 수 있다.In step S31, the processor 110 determines whether the load is concentrated on a specific link based on the link load for each port of each switch in the switch network 2000. For example, the processor 110 may determine whether the load is concentrated on a specific link at regular intervals.

프로세서(110)는 특정 스위치에 연결된 링크 중 한 링크에서 처리하는 트래픽 양이 해당 링크를 대체할 수 있는 링크에서 처리하고 있는 트래픽보다 정해진 임계치 이상으로 더 많은 지를 기반으로 특정 링크에 부하가 집중되었는 지 여부를 판단할 수 있다.The processor 110 determines whether the load is concentrated on a specific link based on whether the amount of traffic processed by one of the links connected to a specific switch is greater than the traffic processed by a link that can replace the link. You can judge whether or not.

여기서 프로세서(110)는 부하가 집중된 특정 링크와 연계된 제 2 스위치 포트 및 해당 링크를 대체할 수 있는 링크와 연계된 제 1 스위치 포트를 타겟 스위치 포트 페어로 결정하고, 타겟 스위치 포트 페어가 존재하는 스위치를 타겟 스위치로 결정한다.Here, the processor 110 determines the second switch port associated with a specific link where the load is concentrated and the first switch port associated with a link that can replace the link as the target switch port pair, and determines the target switch port pair where the target switch port pair exists. Determine the switch as the target switch.

단계(S31)에서 부하 집중이 확인되면, 단계(S32)에서 부하가 집중된 링크에서 처리하고 있는 타겟 플로우 중 하나를 선택하고, 후술할 단계(S33) 및 단계(S34)에서 타겟 플로우를 대체 링크에서 처리하도록 경로를 변경한다.If load concentration is confirmed in step S31, one of the target flows being processed in the link with concentrated load is selected in step S32, and the target flow is selected in the alternative link in steps S33 and S34, which will be described later. Change the path to process.

우선, 단계(S32)에서 프로세서(110)는 결정된 타겟 스위치 포트 페어에 할당된 플로우 중에서 재분배할 타겟 플로우를 선택한다.First, in step S32, the processor 110 selects a target flow to be redistributed from among the flows allocated to the determined target switch port pair.

일 예에서 단계(S32)는 타겟 스위치 포트 페어에 할당된 플로우 중 소정의 시간 동안 지속된 롱 플로우(long flow)를 결정하는 단계 및 결정된 롱 플로우 중에서 타겟 스위치 포트 페어의 링크 부하 차이가 소정의 임계치 미만이 되도록 하는 링크 부하를 가진 플로우를 타겟 플로우로 선택하는 단계를 포함할 수 있다.In one example, step S32 includes determining a long flow that lasts for a predetermined time among the flows allocated to the target switch port pair, and determining whether the link load difference of the target switch port pair among the determined long flows is a predetermined threshold. It may include selecting a flow with a link load that is less than or equal to the target flow.

플로우는 지속성에 따라 숏 플로우(short flow)와 롱 플로우로 나눌 수 있다. 단계(S32)에서 프로세서(110)는 발생 이후 소정의 시간 동안 지속되고 있는 롱 플로우 중에서 타겟 플로우를 선택한다.Flows can be divided into short flows and long flows depending on persistence. In step S32, the processor 110 selects a target flow from among long flows that have continued for a predetermined time since their occurrence.

프로세서(110)는 타겟 스위치 포트 페어 중 링크 부하가 더 큰 제 2 스위치 포트에 할당된 적어도 하나의 플로우 중에서 타겟 플로우를 선택한다.The processor 110 selects a target flow from at least one flow assigned to a second switch port with a larger link load among the target switch port pairs.

여기서 프로세서(110)는 플로우 지속 시간의 길이 및 할당된 대역폭의 크기에 기반하여 타겟 플로우를 선택할 수 있다. 예를 들어 지속 시간이 소정 시간 이상인 롱 플로우 중에서 타겟 스위치 포트 페어 중 링크 부하가 더 작은 제 1 스위치 포트와 링크 부하가 더 큰 제 2 스위치 포트 간의 링크 부하 차이를 소정의 임계치 미만으로 만들 수 있는 플로우를 선택할 수 있다.Here, the processor 110 may select a target flow based on the length of the flow duration and the size of the allocated bandwidth. For example, among long flows whose duration is more than a predetermined time, a flow that can make the link load difference between the first switch port with a smaller link load and the second switch port with a larger link load among the target switch port pairs less than a predetermined threshold. You can select .

추가적으로 단계(S3)은 단계(S32)에서 재분배 대상으로 결정된 타겟 플로우를 타겟 스위치 포트 페어의 링크 부하가 더 작은 제 1 스위치 포트에 할당하는 플로우 테이블 엔트리 추가 명령(entry install command)을 상기 타겟 스위치에 전송하는 단계(S33) 및 타겟 플로우를 타겟 스위치 포트 페어의 링크 부하가 더 큰 제 2 스위치 포트에서 삭제하는 플로우 테이블 엔트리 삭제 명령(entry remove command)을 전송하는 단계(S34)를 더 포함한다.Additionally, in step S3, a flow table entry add command (entry install command) for assigning the target flow determined to be redistributed in step S32 to the first switch port with a smaller link load of the target switch port pair is sent to the target switch. It further includes a step of transmitting (S33) and a step of transmitting a flow table entry delete command (entry remove command) for deleting the target flow from a second switch port with a larger link load of the target switch port pair (S34).

한편, 링크 부하를 재분배하는 단계(S3)는 타겟 스위치의 모든 스위치 포트 페어 간의 링크 부하 차이가 소정의 임계치 미만이 될 때까지 부하 재분배를 반복하는 단계를 더 포함할 수 있다. 즉, 부하 재분배는 부하의 차이가 임계치를 넘지 않을 때까지 반복적으로 수행한다. 이에 대하여는 도 11a 및 도 11b의 예시를 참조하여 후술한다.Meanwhile, the step of redistributing the link load (S3) may further include repeating the load redistribution until the link load difference between all switch port pairs of the target switch becomes less than a predetermined threshold. In other words, load redistribution is performed repeatedly until the difference in load does not exceed the threshold. This will be described later with reference to the examples of FIGS. 11A and 11B.

도 10은 실시예에 따른 네트워크 부하 분산 방법의 플로우 재분배 과정의 신호 흐름도이다.Figure 10 is a signal flow diagram of a flow redistribution process in a network load balancing method according to an embodiment.

단계(S31)에서 부하 집중이 확인되면 타겟 스위치 포트 페어를 결정하고, 단계(S32)에서 부하가 집중된 스위치 포트에서 처리하고 있는 롱 플로우 중 하나를 타겟 플로우로 선택한다.If load concentration is confirmed in step S31, a target switch port pair is determined, and in step S32, one of the long flows being processed by the switch port with concentrated load is selected as the target flow.

후속하여 단계(S33) 및 단계(S34)에서 대체 링크에서 타겟 플로우를 처리하도록 경로를 변경한다.Subsequently, in steps S33 and S34, the path is changed to process the target flow on the alternative link.

경로 변경은 타겟 스위치에 대체 링크와 타겟 플로우에 대응하는 플로우 테이블 엔트리를 추가하도록 명령을 보내고(S33), 기존 링크와 플로우에 대응하는 플로우 테이블 엔트리를 삭제하도록 명령을 보내어 처리한다(S34).Path change is processed by sending a command to the target switch to add flow table entries corresponding to the replacement link and target flow (S33), and sending a command to delete flow table entries corresponding to the existing link and flow (S34).

단계(S33_S)에서 타겟 스위치(200)는 타겟 플로우에 대한 경로 변경된 플로우 테이블 엔트리를 자신의 플로우 테이블에 추가한다.In step S33_S, the target switch 200 adds a rerouted flow table entry for the target flow to its flow table.

단계(S34_S)에서 타겟 스위치(200)는 타겟 플로우에 대한 기존 플로우 테이블 엔트리를 자신의 플로우 테이블에서 삭제한다.In step S34_S, the target switch 200 deletes the existing flow table entry for the target flow from its flow table.

도 11a는 실시예에 따른 플로우 재분배 과정을 예시적으로 설명하기 위한 도면이다.FIG. 11A is a diagram illustrating an exemplary flow redistribution process according to an embodiment.

도 11a의 예시에서 부하 차이에 대한 소정의 임계치는 예를 들어 15%라고 하면, 타겟 스위치(200)의 포트 1(Port 1)과 포트 3(Port 3)의 차이가 25%, 포트 2(Port 2)와 포트 3(Port 3)의 차이가 35%, 포트 3(Port 3)과 포트 4(Port 4)의 차이가 15%로 임계치를 넘었으므로, 도 4를 참조하여 단계(S3)의 부하 재분배를 수행한다.In the example of FIG. 11A, if the predetermined threshold for the load difference is, for example, 15%, the difference between Port 1 and Port 3 of the target switch 200 is 25%, and Port 2 is 25%. Since the difference between 2) and Port 3 exceeded the threshold of 35%, and the difference between Port 3 and Port 4 was 15%, the load of step S3, referring to FIG. 4 Carry out redistribution.

도 9를 참조하여 단계(S31)에서 부하 차이가 가장 큰 포트 2(Port 2)와 포트 3(Port 3)을 타겟 스위치 포트 페어로 결정한다. 포트 3(Port 3)은 두 개의 롱 플로우(FL1 및 FL2)를 실행 중이라고 가정한다.Referring to FIG. 9, in step S31, Port 2 and Port 3 with the largest load difference are determined as the target switch port pair. Assume that Port 3 is running two long flows (FL1 and FL2).

도 11b를 참조하여 이후 재분배 단계의 진행 과정을 살펴본다.Referring to Figure 11b, we will look at the progress of the subsequent redistribution step.

도 11b는 실시예에 따른 플로우 재분배 과정을 예시적으로 설명하기 위한 도면이다.FIG. 11B is a diagram for exemplarily explaining a flow redistribution process according to an embodiment.

부하 재분배는 부하의 차이가 임계치를 넘지 않을 때까지 반복적으로 수행한다. 예시의 경우 포트 3(Port 3)의 플로우(FL1)이 10%의 부하를 가진다고 가정한다. 플로우(FL1)을 포트 2(Port 2)로 옮기면 네 개의 포트의 부하가 각각 50, 50, 65, 60으로 아직 포트 1(Port 1)과 포트 3(Port 3), 그리고 포트 2(Port 2)와 포트 3(Port 3) 사이의 부하 차이가 임계치인 15%를 넘는다.Load redistribution is performed repeatedly until the difference in load does not exceed the threshold. In the example, it is assumed that the flow (FL1) of Port 3 has a load of 10%. If the flow (FL1) is moved to Port 2, the loads on the four ports are 50, 50, 65, and 60, respectively, and Port 1, Port 3, and Port 2 are still loaded. The load difference between and Port 3 exceeds the threshold of 15%.

따라서, 한 번 더 포트 3(Port 3)의 플로우(FL2)(예를 들어 5%의 부하를 가짐)를 포트 1(Port 1)로 옮긴다. 결과적으로 네 개의 포트의 부하가 각각 55, 50, 60, 60으로 어느 두 포트를 선택하더라도 부하의 차이가 15% 이상이 아니므로 부하 재분배를 종료한다.Accordingly, the flow FL2 (with a load of 5%, for example) from Port 3 is once again moved to Port 1. As a result, the loads of the four ports are 55, 50, 60, and 60, respectively. No matter which two ports are selected, the load difference is not more than 15%, so load redistribution is terminated.

도 12는 실시예에 따른 네트워크 부하 분산 방법의 전체적인 흐름도이다.Figure 12 is an overall flowchart of a network load balancing method according to an embodiment.

포트 모니터링(SS1) 중 새로운 플로우가 네트워크에 진입(SS2)하면 포트를 할당(SS3)하고, 재분배가 필요(SS4)하면 부하 분산을 적용(SS5)한다. 재분배가 필요하지 않으면 모니터링 상태를 유지한다.During port monitoring (SS1), when a new flow enters the network (SS2), a port is assigned (SS3), and if redistribution is necessary (SS4), load balancing is applied (SS5). Maintain monitoring status unless redistribution is required.

단계(SS1)은 도 4를 참조하여 단계(S1)에 대응하고, 단계(SS2) 및 단계(SS3)은 단계(S2)에 대응하고, 단계(SS4) 및 단계(SS5)는 단계(S3)에 대응한다.With reference to FIG. 4, step SS1 corresponds to step S1, steps SS2 and SS3 correspond to step S2, and steps SS4 and SS5 correspond to step S3. corresponds to

실시예에 따른 네트워크 부하 분산 기법은, 2계층의 스위치와 이에 연결된 링크의 부하 정보를 기반으로 포트 단위의 부하 분산을 가능하게 하므로, 네트워크의 논리적 주소인 IP를 사용하는 3계층의 라우터를 모니터링하여 노드 단위 트래픽 분산을 시도하는 기법들보다 더 세분된 단위(fine granularity)로 부하 분산을 수행할 수 있다.The network load balancing technique according to the embodiment enables port-level load distribution based on the load information of the layer 2 switch and the link connected to it, and thus monitors the layer 3 router using IP, which is the logical address of the network. Load distribution can be performed at a finer granularity than techniques that attempt to distribute traffic at a node level.

실시예에 따른 네트워크 부하 분산은 데이터센터 네트워크의 RoCE(RDMA over Converged Ethernet) 프로토콜의 트래픽 분산을 제공하며, 일정 주기마다 전체 네트워크의 부하를 확인하여 특정 링크에 부하가 집중될 경우 플로우의 재분배를 수행할 수 있다.Network load balancing according to the embodiment provides traffic distribution of the RoCE (RDMA over Converged Ethernet) protocol of the data center network, and checks the load of the entire network at regular intervals to redistribute flows when the load is concentrated on a specific link. can do.

이를 통해 데이터센터 네트워크의 트래픽 분포가 가지는 특징인 숏 플로우와 롱 플로우가 혼재된 형태의 트래픽에서 숏 플로우에 의해 일시적으로 롱 플로우가 특정 링크에 집중되더라도 장기적으로 롱 플로우가 고르게 분배될 수 있도록 할 수 있다.Through this, in traffic that is a mixture of short and long flows, which is a characteristic of traffic distribution in data center networks, long flows can be distributed evenly in the long term even if long flows are temporarily concentrated on a specific link due to short flows. there is.

또한, 실시예에 따른 네트워크 부하 분산 기법은 CLOS 토폴로지로 구성된 데이터센터의 부하 분산 개선에 활용 가능하며, CLOS 토폴로지가 아니어도 스위치 수준의 부하 분산을 위해 다양한 컴퓨터 네트워크에서 적용할 수 있다.Additionally, the network load balancing technique according to the embodiment can be used to improve load balancing in a data center configured with a CLOS topology, and can be applied to various computer networks for switch-level load balancing even if it is not a CLOS topology.

또한, 실시예에 따른 네트워크 부하 분산 기법은 클라우드 등 데이터센터 환경에서 트래픽 분산을 통한 링크 사용률 극대화로 FCT(Flow Complete Time) 개선에 활용될 수 있다. Additionally, the network load balancing technique according to the embodiment can be used to improve FCT (Flow Complete Time) by maximizing link utilization through traffic distribution in a data center environment such as a cloud.

전술한 본 발명의 일 실시예에 따른 방법은 프로그램이 기록된 비일 시적 저장 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 비일시적 저장 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 비일시적 저장 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다.The method according to an embodiment of the present invention described above can be implemented as computer-readable code in a non-transitory storage medium on which a program is recorded. Non-transitory computer-readable storage media includes all types of recording devices that store data that can be read by a computer system. Examples of computer-readable non-transitory storage media include hard disk drives (HDDs), solid state disks (SSDs), silicon disk drives (SDDs), ROMs, RAMs, CD-ROMs, magnetic tapes, floppy disks, and optical data. storage devices, etc.

실시예에 따른 네트워크 부하 분산 방법은 네트워크 부하 분산 방법을 프로세서에 의해 실행하기 위한 적어도 하나의 명령을 포함하는 비일시적 저장 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.The network load balancing method according to the embodiment may be implemented as a computer program stored in a non-transitory storage medium including at least one instruction for executing the network load balancing method by a processor.

이상 설명된 본 발명의 실시 예에 대한 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The description of the embodiments of the present invention described above is for illustrative purposes, and a person skilled in the art of the present invention can easily transform it into another specific form without changing the technical idea or essential features of the present invention. You will be able to understand that Therefore, the embodiments described above should be understood in all respects as illustrative and not restrictive. For example, each component described as unitary may be implemented in a distributed manner, and similarly, components described as distributed may also be implemented in a combined form.

본 발명의 범위는 상기 상세한 설명보다는 후술하는 청구범위에 의하여 나타내어지며, 청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is indicated by the claims described below rather than the detailed description above, and all changes or modified forms derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention.

100: 네트워크 부하 분산 장치
200: 스위치
1000: 네트워크 시스템
2000: 스위치 네트워크
100: Network load balancer
200: switch
1000: Network system
2000: Switch Network

Claims (19)

네트워크 부하 분산 방법으로서,
복수의 스위치를 포함하는 스위치 네트워크의 각 스위치의 포트별 링크 부하를 모니터링하는 단계;
상기 포트별 링크 부하에 기반하여 상기 스위치 네트워크에 발생한 플로우(flow)의 경로를 따라 상기 플로우를 분배하는 단계; 및
상기 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하는 단계를 포함하고,
상기 링크 부하를 재분배하는 단계는,
상기 복수의 스위치 중에서 링크 부하 재분배를 수행할 타겟 스위치 포트 페어(pair)가 존재하는 타겟 스위치를 결정하는 단계; 및
상기 타겟 스위치 포트 페어에 할당된 플로우 중에서 재분배할 타겟 플로우를 선택하는 단계를 포함하고,
상기 타겟 스위치 포트 페어는 링크 부하 차이가 소정의 임계치 이상인 두 개의 스위치 포트를 포함하며,
상기 링크 부하를 재분배하는 단계는,
상기 타겟 스위치의 모든 스위치 포트 페어 간의 링크 부하 차이가 상기 소정의 임계치 미만이 될 때까지 부하 재분배를 반복하는 단계를 더 포함하는,
네트워크 부하 분산 방법.
As a network load balancing method,
Monitoring the link load for each port of each switch in a switch network including a plurality of switches;
distributing the flow along the path of the flow occurring in the switch network based on the link load for each port; and
Comprising the step of redistributing the link load of the switch requiring load redistribution based on the link load for each port,
The step of redistributing the link load is:
Among the plurality of switches, determining a target switch on which a target switch port pair to perform link load redistribution exists; and
Comprising the step of selecting a target flow to be redistributed from among the flows allocated to the target switch port pair,
The target switch port pair includes two switch ports whose link load difference is greater than or equal to a predetermined threshold,
The step of redistributing the link load is:
Further comprising repeating load redistribution until the link load difference between all switch port pairs of the target switch is less than the predetermined threshold,
Network load balancing method.
제 1 항에 있어서,
상기 스위치 네트워크는 Clos 토폴로지 또는 Fat tree 토폴로지에 기반한 스위치 네트워크인,
네트워크 부하 분산 방법.
According to claim 1,
The switch network is a switch network based on Clos topology or Fat tree topology,
Network load balancing method.
제 1 항에 있어서,
상기 플로우를 분배하는 단계는,
경로 탐색 알고리즘에 의해 상기 플로우의 소스로부터 목적지까지의 후보 경로를 결정하는 단계; 및
상기 포트별 링크 부하에 기반하여 상기 후보 경로를 따라 각 스위치에서 상기 플로우의 경로를 선택하는 단계
를 포함하는,
네트워크 부하 분산 방법.
According to claim 1,
The step of distributing the flow is,
determining a candidate path from the source to the destination of the flow by a path search algorithm; and
Selecting a path for the flow in each switch along the candidate path based on the link load for each port.
Including,
Network load balancing method.
제 3 항에 있어서,
상기 경로를 선택하는 단계는,
상기 후보 경로를 따라 각 스위치에서 링크 부하가 최소인 포트를 상기 플로우의 경로로 사용할 링크로 선택하는 단계
를 포함하는,
네트워크 부하 분산 방법.
According to claim 3,
The step of selecting the path is,
Selecting the port with the minimum link load in each switch along the candidate path as the link to be used as the path for the flow.
Including,
Network load balancing method.
제 1 항에 있어서,
상기 플로우를 분배하는 단계는,
상기 플로우의 경로 상의 일련의 스위치에게 상기 플로우에 대한 플로우 테이블 엔트리 추가 명령을 전송하는 단계
를 더 포함하는,
네트워크 부하 분산 방법.
According to claim 1,
The step of distributing the flow is,
Transmitting a flow table entry addition command for the flow to a series of switches on the path of the flow
Containing more,
Network load balancing method.
삭제delete 제 1 항에 있어서,
상기 플로우를 선택하는 단계는,
상기 타겟 스위치 포트 페어에 할당된 플로우 중 소정의 시간 동안 지속된 롱 플로우(long flow)를 결정하는 단계; 및
상기 롱 플로우 중에서 상기 타겟 스위치 포트 페어의 링크 부하 차이가 소정의 임계치 미만이 되도록 하는 링크 부하를 가진 플로우를 상기 타겟 플로우로 선택하는 단계
를 포함하는,
네트워크 부하 분산 방법.
According to claim 1,
The step of selecting the flow is,
determining a long flow that lasts for a predetermined time among the flows allocated to the target switch port pair; and
Selecting, as the target flow, a flow with a link load such that the link load difference between the target switch port pair is less than a predetermined threshold among the long flows.
Including,
Network load balancing method.
제 1 항에 있어서,
상기 링크 부하를 재분배하는 단계는,
상기 타겟 플로우를 상기 타겟 스위치 포트 페어의 링크 부하가 더 작은 제 1 스위치 포트에 할당하는 플로우 테이블 엔트리 추가 명령을 상기 타겟 스위치에 전송하는 단계; 및
상기 타겟 플로우를 상기 타겟 스위치 포트 페어의 링크 부하가 더 큰 제 2 스위치 포트에서 삭제하는 플로우 테이블 엔트리 삭제 명령을 전송하는 단계
를 더 포함하는,
네트워크 부하 분산 방법.
According to claim 1,
The step of redistributing the link load is:
transmitting to the target switch a flow table entry addition command that allocates the target flow to a first switch port having a smaller link load of the target switch port pair; and
Transmitting a flow table entry delete command to delete the target flow from a second switch port with a larger link load of the target switch port pair.
Containing more,
Network load balancing method.
삭제delete 네트워크 부하 분산 장치로서,
적어도 하나의 명령을 저장하는 메모리; 및
메모리와 전기적으로 연결되는 프로세서를 포함하고,
상기 프로세서는 상기 적어도 하나의 명령을 실행함으로써,
복수의 스위치를 포함하는 스위치 네트워크의 각 스위치의 포트별 링크 부하를 모니터링하고,
상기 포트별 링크 부하에 기반하여 상기 스위치 네트워크에 발생한 플로우의 경로를 따라 상기 플로우를 분배하고,
상기 포트별 링크 부하에 기반하여 부하 재분배가 필요한 스위치의 링크 부하를 재분배하도록 구성되며,
상기 프로세서는,
상기 링크 부하를 재분배하기 위하여,
상기 복수의 스위치 중에서 부하 재분배를 수행할 타겟 스위치 포트 페어가 존재하는 타겟 스위치를 결정하고,
상기 타겟 스위치 포트 페어에 할당된 플로우 중에서 재분배할 타겟 플로우를 선택하도록 구성되고,
상기 타겟 스위치 포트 페어는 링크 부하 차이가 소정의 임계치를 이상인 두 개의 스위치 포트를 포함하며,
상기 프로세서는,
상기 플로우를 재분배하기 위하여,
상기 타겟 스위치의 모든 스위치 포트 페어 간의 링크 부하 차이가 상기 소정의 임계치 미만이 될 때까지 부하 재분배를 반복하도록 구성되는,
네트워크 부하 분산 장치.
As a network load balancer,
a memory that stores at least one instruction; and
Includes a processor electrically connected to memory,
The processor executes the at least one instruction,
Monitor the link load for each port of each switch in a switch network including multiple switches,
Distributing the flow along the path of the flow occurring in the switch network based on the link load for each port,
It is configured to redistribute the link load of the switch that requires load redistribution based on the link load for each port,
The processor,
To redistribute the link load,
Among the plurality of switches, determine a target switch on which a target switch port pair to perform load redistribution exists,
Configured to select a target flow to be redistributed from among the flows allocated to the target switch port pair,
The target switch port pair includes two switch ports whose link load difference is greater than or equal to a predetermined threshold,
The processor,
To redistribute the flow,
Configured to repeat load redistribution until the link load difference between all switch port pairs of the target switch is less than the predetermined threshold,
Network load balancer.
제 10 항에 있어서,
상기 스위치 네트워크는 Clos 토폴로지 또는 Fat tree 토폴로지에 기반한 스위치 네트워크인,
네트워크 부하 분산 장치.
According to claim 10,
The switch network is a switch network based on Clos topology or Fat tree topology,
Network load balancer.
제 10 항에 있어서,
상기 프로세서는,
상기 플로우를 분배하기 위하여,
경로 탐색 알고리즘에 의해 상기 플로우의 소스로부터 목적지까지의 후보 경로를 결정하고,
상기 포트별 링크 부하에 기반하여 상기 후보 경로를 따라 각 스위치에서 상기 플로우의 경로를 선택하도록 구성되는,
네트워크 부하 분산 장치.
According to claim 10,
The processor,
To distribute the flow,
Determine a candidate path from the source of the flow to the destination using a path search algorithm,
Configured to select the path of the flow in each switch along the candidate path based on the link load for each port,
Network load balancer.
제 12 항에 있어서,
상기 프로세서는,
상기 경로를 선택하기 위하여,
상기 후보 경로를 따라 각 스위치에서 링크 부하가 최소인 포트를 상기 플로우의 경로로 사용할 링크로 선택하도록 구성되는,
네트워크 부하 분산 장치.
According to claim 12,
The processor,
To select the above route,
Configured to select the port with the minimum link load in each switch along the candidate path as the link to be used as the path for the flow,
Network load balancer.
제 10 항에 있어서,
상기 프로세서는,
상기 플로우를 분배하기 위하여,
상기 플로우의 경로 상의 일련의 스위치에게 상기 플로우에 대한 플로우 테이블 엔트리 추가 명령을 전송하도록 구성되는,
네트워크 부하 분산 장치.
According to claim 10,
The processor,
To distribute the flow,
configured to transmit a flow table entry addition command for the flow to a series of switches on the path of the flow,
Network load balancer.
삭제delete 제 10 항에 있어서,
상기 프로세서는,
상기 플로우를 선택하기 위하여,
상기 타겟 스위치 포트 페어에 할당된 플로우 중 소정의 시간 동안 지속된 롱 플로우를 결정하고,
상기 롱 플로우 중에서 상기 타겟 스위치 포트 페어의 링크 부하 차이가 소정의 임계치 미만이 되도록 하는 링크 부하를 가진 플로우를 상기 타겟 플로우로 선택하도록 구성되는,
네트워크 부하 분산 장치.
According to claim 10,
The processor,
To select the flow,
Determine a long flow that lasts for a predetermined time among the flows allocated to the target switch port pair,
Configured to select as the target flow a flow having a link load such that the link load difference between the target switch port pair is less than a predetermined threshold among the long flows,
Network load balancer.
제 10 항에 있어서,
상기 프로세서는,
상기 링크 부하를 재분배하기 위하여,
상기 타겟 플로우를 상기 타겟 스위치 포트 페어의 링크 부하가 더 작은 제 1 스위치 포트에 할당하는 플로우 테이블 엔트리 추가 명령을 상기 타겟 스위치에 전송하고,
상기 타겟 플로우를 상기 타겟 스위치 포트 페어의 링크 부하가 더 큰 제 2 스위치 포트에서 삭제하는 플로우 테이블 엔트리 삭제 명령을 전송하도록 구성되는,
네트워크 부하 분산 장치.
According to claim 10,
The processor,
To redistribute the link load,
Sending a flow table entry addition command to the target switch that allocates the target flow to a first switch port with a smaller link load of the target switch port pair,
Configured to transmit a flow table entry delete command to delete the target flow from a second switch port with a higher link load of the target switch port pair,
Network load balancer.
삭제delete 제 1 항 내지 제 5 항, 제 7 항 및 제 8 항 중 어느 한 항에 따른 네트워크 부하 분산 방법을 프로세서에 의해 실행하기 위한 적어도 하나의 명령을 포함하는 컴퓨터 판독 가능 비일시적 저장매체에 저장된 컴퓨터 프로그램.A computer program stored in a computer-readable non-transitory storage medium including at least one instruction for executing by a processor the network load balancing method according to any one of claims 1 to 5, 7, and 8. .
KR1020210069815A 2021-05-31 2021-05-31 Method and apparatus for network load balancing KR102579474B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210069815A KR102579474B1 (en) 2021-05-31 2021-05-31 Method and apparatus for network load balancing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210069815A KR102579474B1 (en) 2021-05-31 2021-05-31 Method and apparatus for network load balancing

Publications (2)

Publication Number Publication Date
KR20220161728A KR20220161728A (en) 2022-12-07
KR102579474B1 true KR102579474B1 (en) 2023-09-14

Family

ID=84441094

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210069815A KR102579474B1 (en) 2021-05-31 2021-05-31 Method and apparatus for network load balancing

Country Status (1)

Country Link
KR (1) KR102579474B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102201799B1 (en) * 2019-06-26 2021-01-12 충북대학교 산학협력단 Dynamic load balancing method and dynamic load balancing device in sdn-based fog system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100657599B1 (en) * 2005-05-04 2006-12-20 씨케이링크 주식회사 Method for Distributing of Resources on Cable Modem Termination System And Authentication Method of Data Transmission Quantity of Cable Modem Using The Same
KR20150080953A (en) * 2013-12-30 2015-07-13 주식회사 케이티 Method and Apparatus for fault recovery in Fat-Tree network
KR102265861B1 (en) * 2015-03-05 2021-06-16 한국전자통신연구원 Method and apparatus for managing flow

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102201799B1 (en) * 2019-06-26 2021-01-12 충북대학교 산학협력단 Dynamic load balancing method and dynamic load balancing device in sdn-based fog system

Also Published As

Publication number Publication date
KR20220161728A (en) 2022-12-07

Similar Documents

Publication Publication Date Title
US10895984B2 (en) Fabric attached storage
US10075396B2 (en) Methods and systems for managing distributed media access control address tables
US10404622B2 (en) Servers, switches, and systems with virtual interface to external network connecting hardware and integrated networking driver
US10135714B2 (en) Servers, switches, and systems with switching module implementing a distributed network operating system
US9680714B2 (en) Methods, systems, and fabrics implementing a distributed network operating system
US10826841B2 (en) Modification of queue affinity to cores based on utilization
US9742697B2 (en) Integrated server with switching capabilities and network operating system
CN113285892A (en) Message processing system, message processing method, machine-readable storage medium, and program product
US11909663B1 (en) Methods and apparatus for efficient use of link aggregation groups
US10581734B2 (en) Methods, systems, and fabrics implementing a distributed network operating system
US9304782B2 (en) Network switch, systems, and servers implementing boot image delivery
Yildirim et al. End-to-end data-flow parallelism for throughput optimization in high-speed networks
Rashid Sorted-GFF: An efficient large flows placing mechanism in software defined network datacenter
US10616050B2 (en) Software defined storage (SDS) system with network tiering
KR102579474B1 (en) Method and apparatus for network load balancing
JP7255675B2 (en) VIRTUAL MACHINE MONITORING DEVICE, VIRTUAL MACHINE MONITORING METHOD AND PROGRAM
Khaleel et al. Effective routing algorithm based on software defined networking for big data applications in data centre network
CN107113244B (en) Data forwarding method, device and system
KR20230129693A (en) Traffic distribution method and device with resource adaptive proxy in kubernetes-based edge computing considering traffic locality
CN117880184A (en) Multicast forwarding method and device of cloud network, computer equipment and storage medium
US10764168B1 (en) Adjusting communications parameters based on known characteristics

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant