KR20130093734A - 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법 - Google Patents

로드 밸런싱 장치 및 그것의 로드 밸런싱 방법 Download PDF

Info

Publication number
KR20130093734A
KR20130093734A KR1020110142453A KR20110142453A KR20130093734A KR 20130093734 A KR20130093734 A KR 20130093734A KR 1020110142453 A KR1020110142453 A KR 1020110142453A KR 20110142453 A KR20110142453 A KR 20110142453A KR 20130093734 A KR20130093734 A KR 20130093734A
Authority
KR
South Korea
Prior art keywords
forwarding
switch
rule
balancing
server
Prior art date
Application number
KR1020110142453A
Other languages
English (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 KR1020110142453A priority Critical patent/KR20130093734A/ko
Priority to US13/620,072 priority patent/US20130166775A1/en
Publication of KR20130093734A publication Critical patent/KR20130093734A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Abstract

본 발명은 과부하가 인가되는 것을 방지하고 망 내에 분산 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행하는 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법을 제공한다. 본 발명에 따른 로드 밸런싱 방법은 밸런싱부가 클라이언트로부터 수신한 데이터 패킷이 로드 밸런싱이 필요한 패킷인지 여부를 판단하는 단계; 상기 판단 결과에 따라, 밸런싱부가 서버팜에 포함된 복수의 물리 서버들 중 적어도 하나의 서버를 상기 클라이언트에게 서비스를 제공할 대상 서버로 결정하는 단계; 밸런싱부가 상기 클라이언트 및 상기 대상 서버간의 포워딩 경로를 결정하는 단계; 밸런싱부가 헤더 다시쓰기(header rewriting) 노드를 결정하는 단계; 및 밸런싱부가 상기 포워딩 경로 및 상기 헤더 다시쓰기 노드를 참조하여, 포워딩 룰을 결정하고, 상기 결정된 포워딩 룰을 상기 포워딩 경로 상에 위치한 스위치에 로딩하는 단계를 포함한다.

Description

로드 밸런싱 장치 및 그것의 로드 밸런싱 방법{LOAD BALANCING APPARATUS AND LOAD BALANCING METHOD THEREOF}
본 발명은 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법에 관한 것으로서, 보다 상세하게는 개방형 경로 제어 망에서 로드 밸런싱을 수행하는 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법에 관한 것이다.
로드 밸런싱은 복수의 물리 서버들을 포함하는 서버팜을 클라이언트와 연결할 때, 물리 서버들의 상태 또는 부하 정도를 참조하여 클라이언트에게 서비스를 제공할 물리 서버를 결정하는 방법을 의미한다. 로드 밸런싱을 활용하면, 다수의 저가 서버 장비가 고가의 고성능 서버 장비를 대체할 수 있다. 따라서, 서버 구축 비용 및 운용 비용 비용이 절감될 수 있다.
일반적으로, 로드 밸런싱 장치는 서버팜의 전단에 위치한다. 그리고, 로드 밸런싱 장치는 클라이언트로부터 가상 IP를 이용한 서비스 요청이 들어오면, 요청된 서비스를 처리할 물리 서버를 결정한다. 물리 서버의 결정은 고유한 서버 스케줄링 알고리즘을 통해 수행될 수 있다.
물리 서버가 결졍되면, 로드 밸런싱 장치는 클라이언트로부터 가상 IP를 목적지로 하여 유입되는 데이터 패킷에 대해 헤더의 목적지 수조를 물리 서버의 실제 IP 주소로 변경한다(헤더 다시쓰기, header rewriting). 그리고, 로드 밸런싱 장치는 패킷 스위칭 처리를 한다. 그 결과, 서버팜의 다수 물리 서버에 대한 세부 사항을 외부에 노출시키지 않을 수 있고, 보안성 및 사용자 편의성이 향상된다.
그러나, 이 같은 방법은 로드 밸런싱 장치가 모든 작업을 수행하여야 하므로, 로드 밸런싱 장치에 과도한 부하가 걸릴 수 있다. 또한, 로드 밸런성 장치가 서버팜 전단에 밀착하여 위치하므로, 망 내에 분산 배치된 서버들에 대해서는 로드 밸런싱을 수행하기 어려운 문제가 있다.
본 발명의 목적은 로드 밸런싱 장치에 과부하가 인가되는 것을 방지하는 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법을 제공하는 데 있다.
본 발명의 다른 목적은 로드 밸런싱 기능을 복수의 구성 요소에 분산시킨 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 망 내에 분산 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행하는 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법을 제공함에 있다.
본 발명에 따른 로드 밸런싱 방법은 밸런싱부가 클라이언트로부터 수신한 데이터 패킷이 로드 밸런싱이 필요한 패킷인지 여부를 판단하는 단계; 상기 판단 결과에 따라, 밸런싱부가 서버팜에 포함된 복수의 물리 서버들 중 적어도 하나의 서버를 상기 클라이언트에게 서비스를 제공할 대상 서버로 결정하는 단계; 밸런싱부가 상기 클라이언트 및 상기 대상 서버간의 포워딩 경로를 결정하는 단계; 밸런싱부가 헤더 다시쓰기(header rewriting) 노드를 결정하는 단계; 및 밸런싱부가 상기 포워딩 경로 및 상기 헤더 다시쓰기 노드를 참조하여, 포워딩 룰을 결정하고, 상기 결정된 포워딩 룰을 상기 포워딩 경로 상에 위치한 스위치에 로딩하는 단계를 포함한다.
실시 예로서, 밸런싱부가 상기 결정된 포워딩 룰을 참조하여 관리 테이블을 등록 또는 갱신하는 단계를 더 포함한다.
실시 예로서, 상기 관리 테이블은 세션(session) 테이블, 플로우(flow) 테이블, 클라이언트 테이블 또는 서버 테이블을 포함한다.
실시 예로서, 상기 대상 서버를 결정하는 단계는 밸런싱부가 상기 클라이언트와 연결된 세션을 확인하는 단계; 상기 세션 확인 결과에 따라, 밸런싱부가 상기 복수의 물리 서버들 중 상기 세션을 통해 연결된 물리 서버의 서비스 가능 여부를 판단하는 단계; 상기 연결된 물리 서버의 서비스 가능 여부에 따라, 밸런싱부가 상기 연결된 물리 서버를 상기 대상 서버로서 결정하는 단계를 포함할 수 있다.
실시 예로서, 상기 대상 서버를 결정하는 단계는 상기 세션 확인 결과에 따라, 밸런싱부가 상기 복수의 물리 서버들 중 부하가 가장 적은 서버를 상기 대상 서버로서 결정하는 단계를 더 포함한다.
실시 예로서, 상기 포워딩 룰을 결정하고, 상기 포워딩 룰을 로딩하는 단계는 밸런싱부가 상기 클라이언트와 상기 헤더 다시쓰기 노드 사이의 포워딩을 위한 제 1 세그먼트 룰을 결정하는 단계; 밸런싱부가 상기 헤더 다시쓰기 노드의 포워딩을 위한 제 2 세그먼트 룰을 결정하는 단계; 밸런싱부가 상기 헤더 다시쓰기 노드와 상기 대상 서버 사이의 포워딩을 위한 제 3 세그먼트 룰을 결정하는 단계; 및 밸런싱부가 상기 스위치의 위치를 참조하여, 상기 스위치에 상기 제 1 세그먼트 룰, 상기 제 2 세그먼트 룰 또는 상기 제 3 세그먼트 룰 중 어느 하나를 상기 포워딩 룰로서 선택적으로 로딩하는 단계를 포함한다.
실시 예로서, 로딩된 포워딩 룰을 참조하여, 상기 스위치가 상기 스위치에 저장된 플로우 테이블에 상기 로딩된 포워딩 룰을 추가하는 단계를 더 포함한다.
실시 예로서, 상기 스위치가 상기 플로우 테이블을 참조하여 상기 클라이언트 또는 상기 밸런싱부로부터 제공된 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 단계를 더 포함한다.
실시 예로서, 상기 포워딩하는 단계는 상기 스위치가 상기 플로우 테이블로부터 상기 스위치 및 상기 포워딩 경로에 대응되는 포워딩 룰을 검색하는 단계; 및 상기 포워딩 룰의 검색 결과에 따라, 상기 검색된 포워딩 룰을 참조하여 상기 스위치가 상기 제공된 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 단계를 포함한다.
실시 예로서, 상기 포워딩하는 단계는 상기 스위치가 상기 헤더 다시쓰기 노드에 해당하는지 여부를 판단하는 단계; 상기 헤더 다시쓰기 노드 판단 결과에 따라, 상기 스위치가 상기 제공된 데이터 패킷의 헤더를 다시쓰는(rewriting) 단계를 더 포함한다.
실시 예로서, 상기 포워딩 룰의 검색 결과에 따라, 상기 스위치부가 상기 밸런싱부로 상기 제공된 패킷 또는 상기 스위치의 스위치 정보를 제공하는 단계를 더 포함한다.
본 발명에 따른 로드 밸런싱 장치는 서버팜에 포함된 복수의 물리 서버 중 적어도 한 서버를 클라이언트에 서비스를 제공할 대상 서버로서 결정하고, 상기 클라이언트 및 상기 대상 서버 간의 포워딩 경로 및 상기 포워딩 경로에 대한 포워딩 룰들을 결정하는 밸런싱부; 상기 포워딩 경로 상에 위치하고, 상기 포워딩 룰들을 참조하여 상기 클라이언트로부터 수신되는 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 적어도 하나 이상의 스위치들을 포함하는 네트워크부를 포함한다.
실시 예로서, 상기 스위치들 중 하나는 상기 데이터 패킷의 헤더를 다시쓰는(rewriting) 헤더 다시쓰기 노드에 위치한다.
실시 예로서, 상기 포워딩룰들은 상기 클라이언트 및 상기 헤더 다시쓰기 노드 간의 포워딩을 위한 제 1 세그먼트 룰, 상기 헤더 다시쓰기 노드의 포워딩을 위한 제 2 세그먼트 룰 및 상기 헤더 다시쓰기 노드 및 상기 대상 서버 간의 포워딩을 위한 제 3 세그먼트 룰을 포함한다.
실시 예로서, 상기 스위치들은 상기 스위치의 위치에 따라 상기 스위치들 각각의 포워딩 룰로서 상기 제 1 ,제 2 또는 제 3 세그먼트 룰 중 어느 하나를 선택적으로 수신한다.
실시 예로서, 상기 스위치들은 상기 스위치들 각각의 포워딩 룰에 따라 상기 데이터 페킷을 상기 대상 서버를 향해 포워딩한다.
본 발명에 따르면 로드 밸런싱 장치에 과부하가 인가되는 것을 방지할 수 있다.
또한, 로드 밸런싱 기능을 복수의 구성 요소에 분산시킨 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법이 제공된다.
또한, 망 내에 분산 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행할 수 있다.
도 1은 본 발명에 따른 로드 밸런싱 장치를 나타내는 블록도이다.
도 2는 도 1에 도시된 밸런싱부를 구체적으로 나타내는 블록도이다.
도 3은 본 발명의 제 1 실시 예에 따른 로드 밸런싱 방법을 나타내는 순서도이다.
도 4는 본 발명의 제 2 실시 예에 따른 로드 밸런싱 방법을 나타내는 순서도이다.
도 5는 도 3에 도시된 S140 단계를 구체적으로 나타내는 순서도이다.
도 6은 도 3에 도시된 S170 단계를 구체적으로 나타내는 순서도이다.
도 7a 및 도 7b는 본 발명의 로드 밸런싱 방법에 따른 포워딩 룰의 적용 예를 보여주는 도면이다.
앞의 일반적인 설명 및 다음의 상세한 설명들은 모두 청구된 발명의 부가적인 설명을 제공하기 위한 예시적인 것이다. 그러므로 본 발명은 여기서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 여기서 소개되는 실시 예는 개시된 내용이 철저하고 완전해 질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서, 어떤 부분이 어떤 구성요소를 포함한다고 언급되는 경우에, 이는 그 외의 다른 구성요소를 더 포함할 수도 있다는 것을 의미한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명에 따른 로드 밸런싱 장치는 로드 밸런싱 장치의 과부하 방지를 위해, 로드 밸런싱 기능을 중앙 집중형 제어기와 포워딩 경로에 위치한 스위치들에 분산한다. 또한, 본 발명에 따른 로드 밸런싱 장치는 포워딩 경로에 위치한 스위치들 중 부하가 가장 낮은 스위치를 결정하고, 결정된 스위치가 데이터 패킷의 헤더를 다시쓰기(rewriting)하도록 한다. 그 결과, 본 발명에 따른 로드 밸런싱 장치는 과부하로 인한 성능 저하가 방지되고, 더불어 망 내에 분산된 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행할 수 있다.
도 1은 본 발명에 따른 로드 밸런싱 장치를 나타내는 블록도이다. 도 1을 참조하면, 로드 밸런싱 장치(100)는 밸런싱부(120) 및 네트워크부(110)를 포함한다. 그리고, 로드 밸런싱 장치(100)는 네트워크부(110)를 통해 클라이언트(200) 및 서버팜(300) 간의 데이터 통신을 중계한다.
일반적으로, 로드 밸런싱 장치(100)는 서버들의 자원 효율을 극대화하기 위해, 각 클라이언트에 대한 서비스 반응 시간이 최소화되어야 하고 과부하가 방지되어야 한다.
네트워크부(110)는 복수의 스위치들(111, 112, 113, 114, 115, 116)을 포함한다. 여기서, 네트워크(110)는 6 개의 스위치들을 포함하지만, 이는 예시적인 것으로서 네트워크부(110)는 그보다 많거나 적은 수의 스위치들을 포함할 수 있다.
실시 예로서, 네트워크부(110)는 개방형 경로 제어 망으로서, 오픈플로우(openflow) 망일 수 있다.
네트워크부(110)에 포함된 스위치들(111, 112, 113, 114, 115, 116) 각각은 다른 스위치들과 연결된다. 이때, 각 스위치는 하나의 다른 스위치와 연결될 수도 있고, 2 이상의 복수의 다른 스위치와 연결될 수도 있다.
한편, 후술하겠지만, 각 스위치는 대응되는 포워딩 룰을 참조하여 자신에게 유입되는 트래픽을 포워딩 경로를 따라 전달한다. 각 스위치에 유입되는 트래픽에는 데이터 패킷 또는 제어 메시지가 포함될 수 있다.
네트워크부(110)는 클라이언트(200)로부터 서비스 요청을 위한 데이터 패킷을 수신한다. 데이터 패킷은 클라이언트(200)와 직접 연결된 제 1 스위치(111)에 최초로 전달된다. 제 1 스위치(111)에 전달된 데이터 패킷이 서비스 요청을 위한 최초의 데이터 패킷이면, 제 1 스위치(111)는 수신한 데이터 패킷을 밸런싱부(120)에 제공한다.
후술하겠지만, 밸런싱부(120)에 제공된 데이터 패킷은 포워딩 경로 및 포워딩 룰을 결정하기 위해 참조된다. 여기서 포워딩 룰은 데이터 패킷의 포워딩 경로 상에 위치한 스위치들이 수행할 패킷 처리 방법 및 포워딩 방법을 지정하는 룰을 의미한다.
그리고, 밸런싱부(120)는 포워딩 경로 및 네트워크부(110)의 각 스위치들(111, 112, 113, 114, 115, 116)이 위치한 노드에 따라 스위치들(111, 112, 113, 114, 115, 116)에 각각 포워딩 룰들을 제공한다. 제공된 포워딩 룰들은 스위치들(111, 112, 113, 114, 115, 116)의 플로우 테이블들에 각각 저장된다.
한편, 제 1 스위치(111)에 전달된 데이터 패킷이 서비스 요청을 위한 두 번째 이후의 데이터 패킷이면, 제 1 스위치(111)는 자신의 포워딩 룰을 참조하여 전달된 데이터 패킷을 제 1 스위치(111)와 연결된 다른 스위치에 전달한다.
마찬가지로, 제 1 스위치(111)로부터 데이터 패킷을 전달받은 다른 스위치도 자신의 포워딩 룰을 참조하여 또 다른 스위치에 데이터 패킷을 전달한다.
이와 같은 방법이 반복되어, 클라이언트(220)로부터 수신된 데이터 패킷은 서버팜(300)과 연결된 제 2 스위치(116)에 전달된다. 그리고, 제 2 스위치(116)은 전달된 데이터 패킷을 서버팜(300)에 전달한다.
한편, 후술하겠지만, 서버팜(300)에 제공되는 데이터 패킷은 서버팜(300)의 가상 IP 또는 실제 IP를 목적지로 할 수 있다. 데이터 패킷이 서버팜(300)의 가상 IP를 목적지로 하는 경우, 실제 물리 서버와 연결되기 위해 데이터 패킷의 가상 IP는 실제 IP로 변환되어야 한다. 이는 데이터 패킷의 헤더(header)를 다시쓰기(rewriting)하여 수행될 수 있다.
그리고 본 발명에서, 서버팜(300)의 가상 IP를 목적지로 하여 전달되는 데이터 패킷의 포워딩 경로 상에 위치한 스위치들 중 어느 한 스위치는 헤더 다시쓰기(header rewriting)를 수행할 수 있다. 이는, 헤더 다시쓰기 동작은 로드 밸런싱 동작의 일부이고, 이를 통해 네트워크부(110)에 포함된 스위치가 로드 밸런싱 기능의 일부를 분담하게 된다. 그리고, 그러한 로드 밸런싱 기능의 분담은 밸런싱부(120)의 과부하를 방지한다.
여기서, 헤더 다시쓰기를 수행하는 스위치(이하, 다시쓰기 스위치라 함)가 위치한 노드를 헤더 다시쓰기 노드(header rewriting node)라 한다.
밸런싱부(120)는 로드 밸런싱 장치(100)를 제어한다. 그리고, 서버팜(300)에 포함된 서버들 중 클라이언트(220)에 서비스를 제공할 물리 서버(이하, 대상 서버라 함)를 결정한다. 서버팜(300)은 복수의 물리 서버를 포함할 수 있다. 밸런싱부(120)는 대상 서버를 결정하기 위해, 서버팜(300)에 포함된 물리 서버들의 서비스 가능 상태를 참조할 수 있다. 서비스 가능 상태란 물리 서버들의 동작 상태 및 부하 정도를 고려하여 해당 물리 서버가 원활하게 서비스를 제공할 수 있는지 여부를 나타내는 상태를 의미한다.
그리고, 밸런싱부(120)는 클라이언트(220) 및 대상 서버(미도시)를 연결하는 포워딩 경로 및 포워딩 경로 상에 위치한 스위치들을 제어하는 포워딩 룰을 결정한다. 밸런싱부(120)는 포워딩 경로 및 포워딩 룰을 결정하기 위해 네트워크부(110)에 포함된 각 스위치들(111, 112, 113, 114, 115, 116)의 부하 정도를 참조할 수 있다.
그리고, 밸런싱부(120)는 결정된 포워딩 룰을 결정된 포워딩 경로 상에 위치한 스위치들에 로딩한다.
밸런싱부(120)의 구체적인 구성 및 동작은 도 2에 대한 설명과 함께 상세히 기술될 것이다.
상기와 같은 구성에 따르면, 네트워크부(110)가 로드 밸런싱 기능의 일부를 분담하여 수행한다. 그리고, 밸런싱부(120)가 스위치들(111, 112, 113, 114, 115, 116)에 포워딩 룰을 결정하여 로딩한다. 그 결과, 밸런싱부(120)에 과부하가 걸리는 것을 방지할 수 있다. 또한, 밸런싱부(120)가 망 내에 분산 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행할 수 있다.
도 2는 도 1에 도시된 밸런싱부를 구체적으로 나타내는 블록도이다. 도 2를 참조하면, 본 발명에 따른 밸런싱부(120)는 인터페이스부(121), 로딩부(122), 플로우 제어부(123), 밸런싱 제어부(124) 및 데이터 관리부(125)를 포함한다.
인터페이스부(121)는 네트워크부(110) 또는 서버팜(300)과 데이터를 교환한다. 그리고, 네트워크부(110) 또는 서버팜(300)으로부터 수신된 데이터를 분류하여 밸런싱부(120)의 다른 구성들로 전송한다.
한편, 인터페이스부(121)가 수신하는 데이터는 네트워크부(110)에 포함된 각 스위치들(111, 112, 113, 114, 115, 116)의 위치 정보 및 부하 정보를 포함할 수 있다. 또한, 인터페이스부(121)가 수신하는 데이터는 네트워크부(110)의 트래픽 정보를 포함할 수 있다. 또한, 인터페이스부(121)가 수신하는 데이터는 서버팜(300)에 포함된 각 물리 서버들(미도시)의 상태 정보 및 부하 정보를 포함할 수 있다.
인터페이스부(121)의 동작을 예를 들어 설명하면, 클라이언트(200)로부터 네트워크부(110)로 제공된 데이터 패킷은 밸런싱부(120)로 재전송될 수 있다. 그리고, 밸런싱부(120)로 재전송된 데이터 패킷은 인터페이스부(121)가 수신 및 분류하여 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125)로 전송한다.
마찬가지로, 서버팜(300)으로부터 제공되는 데이터 패킷은 직접 또는 네트워크부(110)를 통해 밸런싱부(120)로 전달된다. 그리고, 밸런싱부(120)로 전달된 데이터 패킷은 인터페이스부(121)가 수신 및 분류하여 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125)로 전송한다.
한편, 여기서는 인터페이스부(121)로부터 전송되는 데이터가 로딩부(122)를 통해 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125)로 전송되는 것처럼 도시되었다. 그러나 이는 예시적인 것으로서, 인터페이스부(121)로부터 전송되는 데이터는 직접 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125)로 전송될 수 있다. 즉, 인터페이스부(121)의 데이터 전송은 로딩부(122)를 매개로 하여 수행되지 않을 수 있다.
실시 예로서, 인터페이스부(121)는 수신된 데이터의 종류를 판별하고, 판별된 종류에 따라 각 데이터를 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125) 중 어느 하나로 전송하는 스케줄러(미도시)를 포함할 수 있다.
실시 예로서, 인터페이스부(121)의 스케줄러(미도시)는 유입된 데이터를 일반 데이터 패킷, 로드 밸런싱이 필요한 데이터 패킷 또는 제어 메시지로 분류할 수 있다. 여기서, 스케줄러(미도시)는 일반 데이터 패킷, 로드 밸런싱이 필요한 데이터 패킷, 제어 메시지를 플로우 제어부(123), 밸런싱 제어부(124) 또는 데이터 관리부(125)에 각각 전송한다.
플로우 제어부(123)는 일반 데이터 패킷의 포워딩 경로를 결정한다. 그리고, 플로우 제어부(123)는 일반 데이터 패킷의 포워딩 경로 상에 위치한 스위치들의 포워딩 룰을 결정한다.
플로우 제어부(123)는 네트워크부(110) 및 스위치들(111, 112, 113, 114, 115, 116)의 토폴로지 정보 또는 네트워크부(110)를 비롯한 시스템의 상태 정보 등을 참조하여 포워딩 경로 및 포워딩 룰을 결정한다. 토폴로지 정보 및 네트워크부(110)를 비롯한 시스템의 상태 정보 등은 데이터 관리부(125)로부터 제공될 수 있다. 플로우 제어부(123)에서 결정된 일반 데이터 패킷에 대한 포워딩 경로 및 포워딩 룰은 로딩부(122)에 제공된다.
밸런싱 제어부(124)는 로드 밸런싱이 필요한 데이터 패킷의 포워딩 경로를 결정한다. 여기서, 로드 밸런싱이 필요한 데이터 패킷은 로드 밸런싱 장치(100)에 의해 로드 밸런싱 기능 중 일부(예를 들면, 헤더 다시쓰기 기능)가 분산하여 수행되는 데이터 패킷을 의미한다. 즉, 로드 밸런싱이 필요한 데이터 패킷은 클라이언트(200)로부터 제공된 데이터 패킷 중 서버팜(300)의 가상 IP를 목적지로 하는 데이터 패킷을 의미한다.
밸런싱 제어부(124)는 로드 밸런싱이 필요한 데이터 패킷을 처리할 물리 서버(이하, 대상 서버라 함)를 결정한다. 대상 서버는 서버팜(300)에 포함된 물리 서버들(미도시)의 동작 상태 또는 부하 정도를 고려하여 결정된다.
그리고, 해당 데이터 패킷이 전송될 클라이언트(200, 도 1 참조) 및 대상 서버 사이의 포워딩 경로를 결정한다. 그리고, 결정된 포워딩 경로 상에 위치한 스위치들의 포워딩 룰을 결정한다. 포워딩 경로 및 포워딩 룰은 서버팜(300)의 물리 서버들의 상태 정보, 네트워크(110)의 트래픽, 네트워크부(110)의 상태 정보 또는 스위치들(111, 112, 113, 114, 115, 116)의 부하 정도 등을 고려하여 결정된다. 또한, 포워딩 경로 및 포워딩 룰은 네트워크부(110) 및 스위치들(111, 112, 113, 114, 115, 116)의 토폴로지 등을 고려하여 결정될 수 있다.
여기서, 물리 서버들(미도시), 네트워크부(110) 및 스위치들(111, 112, 113, 114, 115, 116)의 상태 정보, 부하 정보 및 토폴로지 정보 등은 데이터 관리부(125)로부터 제공될 수 있다.
한편, 밸런싱 제어부(124)는 로드 밸런싱 기능의 일부로서 헤더 다시쓰기 동작을 수행할 스위치를 결정한다. 실시 예로서, 밸런싱 제어부(124)는 포워딩 경로 상에 위치한 스위치들 중 부하 정도가 가장 적은 스위치가 헤더 다시쓰기를 수행하도록 결정할 수 있다. 밸런싱 제어부(124)는 결정된 포워딩 경로 및 포워딩 룰을 로딩부(122)에 제공한다.
이를 통해, 로드 밸런싱 기능의 일부를 포워딩 경로 상에 위치한 스위치에 분담시킬 수 있다. 그 결과, 밸런싱부(120)의 과부하가 방지된다.
데이터 관리부(125)는 밸런싱부(120)가 데이터 패킷들의 포워딩 경로 및 포워딩 룰을 결정하기 위해 참조하는 정보들을 저장 및 관리한다.
실시 예로서, 데이터 관리부(125)는 서버팜(300), 물리 서버들(미도시), 클라이언트(200), 네트워크부(110), 스위치들(111, 112, 113, 114, 115, 116)의 상태 정보 및 부하 정보를 수집하여 관리할 수 있다.
실시 예로서, 데이터 관리부(125)는 현재 진행 중인 데이터 패킷들의 포워딩(이하, 플로우라 함) 또는 세션들의 상태 정보를 포함한 통계 정보를 수집하여 관리할 수 있다.
로딩부(122)는 플로우 제어부(123) 및 밸런싱 제어부(124)로부터 제공된 포워딩 경로들 및 포워딩 룰들을 네트워크부(110)의 스위치들(111, 112, 113, 114, 115, 116)에 로딩한다. 이때, 로딩부(122)는 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치를 참조하여, 각 스위치들(111, 112, 113, 114, 115, 116)에게 대응되는 포워딩룰을 제공한다.
밸런싱부(120)의 구체적인 동작에 대한 설명은 도 3과 함께 다시 후술될 것이다.
상기와 같은 구성에 따르면, 밸런싱부(120)는 수신되는 데이터 패킷에 대해 포워딩 경로 및 포워딩 룰을 결정한다. 그리고, 결정된 포워딩 경로 또는 포워딩 룰을 네트워크부(110)에 제공한다. 네트워크부(110)에 포함된 스위치들(111, 112, 1113, 114, 115, 116)은 자신들의 위치 및 포워딩 경로에 대응되는 포워딩 룰을 로딩하게 된다.
도 3은 본 발명의 제 1 실시 예에 따른 로드 밸런싱 방법을 나타내는 순서도이다. 도 3에서는 본 발명에 따른 밸런싱부(120, 도 1 참조)의 동작에 대한 구체적인 설명이 제 1 실시 예로서 제공된다. 도 3을 참조하면, 본 발명의 제 1 실시 예에 따른 로드 밸런싱 방법은 S110 단계 내지 S190 단계를 포함한다.
S110 단계에서, 밸런싱부(120,도 1 참조)는 네트워크부(110, 도 1 참조) 또는 서버팜(300, 도 1 참조)으로부터 데이터를 수신한다. 수신되는 데이터는 일반 데이터 패킷, 로드 밸런싱이 필요한 데이터 패킷 또는 제어 메시지를 포함할 수 있다.
S120 단계에서, 밸런싱부(120)는 수신된 데이터의 종류가 제어 메시지인지 판단한다. 데이터 종류의 판단은 밸런싱부(120)에 포함된 인터페이스부(121, 도 2 참조)에서 수행된다.
수신된 데이터가 제어 메시지이면, 로드 밸런싱 방법은 S190 단계로 진행한다. 수신된 데이터가 제어 메시지가 아니면 로드 밸런싱 방법은 S130 단계로 진행한다.
S130 단계에서, 밸런싱부(120)는 수신된 데이터의 종류가 로드 밸런싱이 필요한 데이터 패킷인지 판단한다. 마찬가지로, 데이터 종류의 판단은 밸런싱부(120)에 포함된 인터페이스부(121)에서 수행된다.
수신된 데이터가 로드 밸런싱이 필요한 데이터 패킷이면, 로드 밸런싱 방법은 S140 단계로 진행한다. 그렇지 않으면, 로드 밸런싱 방법은 S180 단계로 진행한다.
S140 단계에서, 밸런싱부(120)는 로드 밸런싱이 필요한 데이터 패킷에 대해, 클라이언트(200)에게 서비스를 제공할 대상 서버를 결정한다. 실시 예로서, 대상 서버의 결정은 밸런싱부(120)에 포함된 밸런싱 제어부(124)에 의해 수행된다.
대상 서버는 서버팜(300)에 포함된 물리 서버들 중에서 결정된다. 밸런싱부(120)는 대상 서버를 결정하기 위해 클라이언트(200)와 현재 연결된 세션이 있는지 여부를 참조할 수 있다.
또한, 밸런싱부(120)는 대상 서버를 결정하기 위해 서버팜(300) 또는 물리 서버 들의 상태 정보 및 부하 정보를 참조할 수 있다.
밸런싱부(120)의 대상 서버 결정 방법에 대한 구체적인 설명은 도 5에 대한 설명과 함께 후술될 것이다.
S150, 단계에서, 밸런싱부(120)는 로드 밸런싱이 필요한 데이터 패킷에 대해, 포워딩 경로를 결정한다. 즉, 밸런싱부(120)는 클라이언트(200)와 대상 서버 사이에서 로드 밸런싱이 필요한 데이터 패킷이 전송될 경로를 결정한다.
실시 예로서, 포워딩 경로의 결정은 밸런싱부(120)에 포함된 밸런싱 제어부(124)에 의해 수행된다. 포워딩 경로는 네트워크부(110, 도 1 참조), 스위치들(111, 112, 113, 114, 115, 116, 도 1 참조)의 상태 정보, 부하 정보 또는 토폴로지 등을 참조하여 결정될 수 있다. 또한, 포워딩 경로는 클라이언트(200) 또는 대상 서버의 상태 정보 등을 참조하여 결정될 수 있다.
S160 단계에서, 밸런싱부(120)는 포워딩 경로 상의 노드들 중 어느 한 노드를 헤더 다시쓰기 노드로 결정한다. 헤더 다시쓰기 노드에 위치한 스위치는 헤더 다시쓰기 스위치가 된다. 헤더 다시쓰기 노드 또는 헤더 다시쓰기 스위치의 결정은 밸런싱부(120)에 포함된 밸런싱 제어부(124)에 의해 수행된다.
헤더 다시쓰기 노드 또는 헤더 다시쓰기 스위치는 포워딩 경로 상에 위치한 스위치들의 부하 정도를 참조하여 결정된다. 실시 예로서, 밸런싱부(120)는 포워ㄷ이 경로 상에 위치한 스위치들 중 부하 정도가 가장 낮은 스위치를 헤더 다시쓰기 스위치로 결정할 수 있다. 그리고, 헤더 다시쓰기 스위치가 위치한 노드는 헤더 다시쓰기 노드가 된다. 헤더 다시쓰기 노드에서는 목적지 주소를 가상 IP에서 실제 IP로 변환하는 헤더 다시쓰기 동작이 수행된다.
실시 예로서, 밸런싱부(120)는 스위치들의 부하 정도를 알려주는 정보를 데이터 관리부(125, 도 2 참조)로부터 제공받을 수 있다.
S170 단계에서, 밸런싱부(120)는 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치를 참조하여 포워딩 룰을 결정한다. 포워딩 룰은 각 스위치들의 데이터 패킷 처리 방법 또는 포워딩 방법을 지정하는 룰을 의미한다.
포워딩 룰의 결정은 밸런싱부(120)에 포함된 밸런싱 제어부(124)에 의해 수행된다.
그리고, 밸런싱부(120)는 결정된 포워딩 룰을 네트워크부(110)에 제공한다. 제공된 포워딩 룰은 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치에 따라 각 스위치들(111, 112, 113, 114, 115, 116)에 로딩된다.
실시 예로서, 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치에 따라 각 스위치들(111, 112, 113, 114, 115, 116)에는 다른 포워딩 룰이 제공될 수 있다. 그리고, 로드 밸런싱 방법은 S190 단계로 진행한다.
다시 S130 단계로 돌아가서, 수신된 데이터가 로드 밸런싱이 필요한 데이터 패킷이 아니면 로드 밸런싱 방법은 S180 단계로 진행한다.
S180 단계는 로드 밸런싱이 필요하지 않은 데이터 패킷에 대한 포워딩 경로 및 포워딩 룰을 결정한다. S180 단계는 S181 단계 및 S182 단계를 포함한다.
S181 단계에서, 밸런싱 제어부(120)는 수신된 패킷의 종류가 일반 데이터 패킷인지 판단한다. 수신된 패킷이 일반 데이터 패킷이면 로드 밸런싱 방법은 S182 단계로 진행한다. 수신된 패킷이 일반 데이터 패킷이 아니면, 로드 밸런싱 방법은 종료한다.
실시 예로서, 수신된 패킷의 종류는 밸런싱 제어부(120)에 포함된 인터페이스부(121)에서 수행될 수 있다.
S182 단계에서, 밸런싱 제어부(120)는 일반 데이터 패킷에 대해 대상 서버를 결정하고, 포워딩 경로 및 포워딩 룰을 결정한다. 일반 데이터 패킷에 대한 대상 서버, 포워딩 경로 또는 포워딩 룰은 네트워크부(110) 및 스위치들(111, 112, 113, 114, 115, 116)의 상태 정보, 부하 정보 또는 토폴로지 등을 참조하여 결정될 수 있다.
실시 예로서, 일반 데이터 패킷에 대한 대상 서버, 포워딩 경로 또는 포워딩 룰은 데이터 패킷의 소스(또는 클라이언트) 및 목적지(또는 대상 서버)의 상태 정보를 참조하여 결정될 수 있다.
대상 서버, 포워딩 경로 및 포워딩 룰의 결정은 밸런싱 제어부(120)에 포함된 플로우 제어부(123)에 의해 수행된다.
그리고, 밸런싱부(120)는 결정된 포워딩 룰을 네트워크부(110)에 제공한다. 제공된 포워딩 룰은 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치에 따라 각 스위치들(111, 112, 113, 114, 115, 116)에 로딩된다.
실시 예로서, 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치에 따라 각 스위치들(111, 112, 113, 114, 115, 116)에는 다른 포워딩 룰이 제공될 수 있다.
S190 단계에서, 밸런싱부(120)는 데이터 관리부(125)가 저장하는 관리 테이블을 등록 또는 갱신한다. 관리 테이블의 등록 또는 갱신은 일반 데이터 패킷 또는 로드 밸런싱이 필요한 데이터 패킷에 대한 포워딩 경로 또는 포워딩 룰을 참조하여 수행될 수 있다. 또는, 관리 테이블의 등록 또는 갱신은 수신된 제어 메시지를 참조하여 수행될 수 있다.
실시 예로서, 관리 테이블은 클라이언트(200) 및 서버팜(300) 간의 세션 테이블, 클라이언트(200)의 상태 정보를 나타내는 클라이언트 테이블, 서버팜(300) 및 물리 서버들의 상태 정보 또는 부하 정보를 나타내는 서버 테이블 또는 데이터 패킷이 전송되는 경로를 나타내는 플로우 테이블을 포함할 수 있다.
실시 예로서, 관리 테이블은 네트워크부(110) 및 스위치들(111, 112, 113, 114, 115, 116)의 부하 정보 등을 포함하는 상태 테이블을 포함할 수 있다.
실시 예로서, 관리 테이블의 갱신은 플로우 테이블의 일부 또는 전부 삭제를 포함할 수 있다. 이때, 플로우 테이블의 일부 또는 전부 삭제는 플로우 종료 메시지를 참조할 수 있다.
상기와 같은 본 발명의 제 1 실시 예에 따르면, 데이터 패킷에 대한 포워딩 경로 및 포워딩 룰이 결정된다. 그리고, 결정된 포워딩 룰을 네트워크부(110)에 제공할 수 있다. 또한, 포워딩 경로, 포워딩 룰, 제어 메시지 또는 기타 시스템의 상태 정보등을 참조하여 데이터 관리부(125)의 관리 테이블이 등록 또는 갱신될 수 있다.
또한, 상기와 같은 밸런싱부(120)의 구성 및 동작에 따르면, 밸런싱부(120)는 서버팜(300)의 바로 전단에 위치하지 않을 수 있다. 따라서, 밸런싱부(120)는 네트워크 망 내에 분산된 서버들에 대해서도 로드 밸런싱 동작을 수행할 수 있다.
도 4는 본 발명의 제 2 실시 예에 따른 로드 밸런싱 방법을 나타내는 순서도이다. 도 4에서는 본 발명에 따른 스위치들(111, 112, 113, 114, 115, 116, 도 1 참조)의 동작에 대한 구체적인 설명이 제 2 실시 예로서 제공된다. 도 4를 참조하면, 본 발명의 제 2 실시 예에 따른 로드 밸런싱 방법은 S210 단계 내지 S290 단계를 포함한다.
본 발명의 제 2 실시 예에서, 각 스위치들(111, 112, 113, 114, 115, 116)의 구성 및 동작 알고리즘은 동일하다. 따라서, 여기서는 하나의 스위치(111)의 동작 알고리즘에 대해서만 예시적으로 설명하기로 한다.
S210 단계에서, 스위치(111)는 클라이언트(200, 도 1 참조) 또는 밸런싱부(120, 도 1 참조)로부터 데이터를 수신한다.
S220 단계에서, 스위치(111)는 수신된 데이터가 데이터 패킷인지 여부를 판단한다. 수신된 데이터가 데이터 패킷이면, 로드 밸런싱 방법은 S230 단계로 진행한다. 수신된 데이터가 데이터 패킷이 아니면, 로드 밸런싱 방법은 S290 단계로 진행한다.
S230 단계에서, 스위치(111)는 스위치(111)에 저장된 플로우 테이블을 검색한다. 스위치(111)에 저장된 플로우 테이블은 스위치(111)의 데이터 플로우 또는 포워딩 룰을 저장하는 테이블이다.
실시 예로서, 스위치(111)는 데이터 패킷의 헤더의 클라이언트(200) 또는 대상 서버의 주소 또는 포트 정보를 참조하여 플로우 테이블을 검색할 수 있다.
S240 단계에서, 스위치(111)는 플로우 테이블에 수신한 데이터 패킷에 대응되는 포워딩 룰이 존재하는지 판단한다.
실시 예로서, 대응되는 포워딩 룰의 존재는 수신한 데이터 패킷에 대응되는 데이터 플로우가 존재하는지 여부를 통해 판단될 수 있다. 즉, 대응되는 데이터 플로우가 있으면, 대응되는 포워딩 룰도 존재한다.
대응되는 포워딩 룰이 존재하면, 로드 밸런싱 방법은 S250 단계로 진행한다. 대응되는 포워딩 룰이 존재하지 않으면, 로드 밸런싱 방법은 S280 단계로 진행한다.
S250, 단계에서, 스위치(111)는 포워딩 룰을 참조하여 자신이 위치한 노드가 다시쓰기 노드인지(즉, 스위치(111)가 헤더 다시쓰기 스위치인지) 판단한다. 스위치(111)가 위치한 노드가 헤더 다시쓰기 노드이면, 로드 밸런싱 방법은 S260 단계로 진행한다. 그렇지 않으면, 로드 밸런싱 방법은 S270 단계로 진행한다.
S260 단계에서, 스위치(111)는 헤더 다시쓰기를 수행한다. 구체적으로, 스위치(111)는 수신된 데이터 패킷의 헤더에 포함된 목적지 주소를 가상 IP에서 실제 IP로 변경한다. 이를 통해, 스위치(111)는 로드 밸런싱 동작의 일부인 헤더 다시쓰기 동작을 분담하여 수행할 수 있다. 따라서, 밸런싱부(120)의 과부하가 방지된다.
S270 단계에서, 스위치(111)는 자신의 포워딩 룰에 따라 수신된 데이터 패킷을 대상 서버를 향해 포워딩한다. 데이터 패킷의 포워딩은 다른 스위치에 의해 중계될 수 있다.
다시 S240 단계로 돌아가서, 대응되는 포워딩 룰이 존재하지 않으면, 로드 밸런싱 방법은 S280 단계로 진행한다.
S280 단계에서, 스위치(111)는 대응되는 포워딩 룰이 존재하지 않으므로, 수신된 데이터 패킷을 밸런싱부(120)에 전송한다. 실시 예로서, 스위치(111)는 수신된 데이터 패킷과 함께 스위치(111)의 부하 정보를 밸런싱부(120)에 전송할 수 있다. 한편, 밸런싱부(120)는 수신된 데이터 패킷 또는 스위치(111)의 부하 정보를 참조하여, 수신된 데이터 패킷에 대한 포워딩 경로 또는 포워딩 룰을 결정할 것이다.
다시 S220 단계로 돌아가서, 수신된 데이터가 데이터 패킷이 아니면 S290 단계로 진행한다. S290 단계는 스위치(111)의 플로우 테이블에 스위치(111)의 포워딩 룰을 추가하기 위한 동작을 수행한다. S290 단계는 S291 단계 내지 S293 단계를 포함한다.
S291 단계에서, 스위치(111)는 수신된 데이터가 제어 메시지인지 판단한다. 수신된 데이터가 제어 메시지이면, 로드 밸런싱 방법은 S291 단계로 진행한다. 수신된 데이터가 제어 메시지가 아니면, 로드 밸런싱 방법은 종료된다.
S292 단계에서, 스위치(111)는 수신된 데이터가 포워딩 룰 추가 메시지인지 판단한다. 수신된 데이터가 포워딩 룰 추가 메시지이면, 로드 밸런싱 방법은 S293 단계로 진행한다. 수신된 데이터가 포워딩 룰 추가 메시지가 아니면, 로드 밸런싱 방법은 종료된다.
S293 단계에서, 스위치(111)는 포워딩 룰 추가 메시지를 참조하여 스위치(111)에 저장된 플로우 테이블에 스위치(111)의 포워딩 룰을 저장한다. 실시 예로서, 포워딩 룰 추가 메시지는 스위치(111)의 포워딩 룰을 포함할 수 있다.
상기와 같은 본 발명의 제 2 실시 예에 따르면, 스위치(111)는 수신된 데이터 패킷을 자신의 포워딩 룰에 따라 전송할 수 있다. 또한, 밸런싱부(120)로부터 제공되는 포워딩 룰을 자신의 플로우 테이블에 저장할 수 있다.
그리고, 스위치(111)는 자신의 포워딩 룰을 참조하여, 로드 밸런싱 동작의 일부로서 수신된 데이터 패킷의 헤더를 다시쓰기 할 수 있다. 스위치(111)의 헤더 다시쓰기 동작에 의해, 데이터 패킷의 헤더에 포함된 목적지 주소는 가상 IP에서 실제 IP로 변경된다. 그 결과, 밸런싱부(120)의 과부하가 방지된다.
도 5는 도 3에 도시된 S140 단계를 구체적으로 나타내는 순서도이다. S140 단계에서 밸런싱 제어부(124, 도 2 참조)는 대상 서버를 결정한다. 도 5를 참조하면 S140 단계는 S141 단계 내지 S146 단계를 포함한다.
S141 단계에서, 밸런싱 제어부(124)는 클라이언트(200, 도 1 참조)와 서버팜(300, 도 1 참조) 사이에 연결된 세션이 존재하는지 판단한다. 이를 위해, 밸런싱 제어부(124)는 데이터 관리부(125)에 저장된 관리 테이블을 참조하여 연결된 세션의 존재 여부를 판단한다. 실시 예로서, 참조되는 관리 테이블은 세션 테이블일 수 있다.
연결된 세션이 존재하면 로드 밸런싱 방법은 S142 단계로 진행한다. 그렇지 않으면 로드 밸런싱 방법은 S146 단계로 진행한다.
S142 단계에서, 밸런싱 제어부(124)는 지속성 있는(persistent) 연결을 지원하기 위해, 세션을 통해 클라이언트(200)와 연결된 물리 서버를 임시 대상 서버로서 우선 선택한다. 실시 예로서, 밸런싱 제어부(124)는 임시 대상 서버를 선택하기 위해 세션을 통해 연결된 물리 서버의 IP 주소를 검색할 수 있다.
S143 단계에서, 밸런싱 제어부(124)는 임시 대상 서버의 상태 정보 및 부하 정보를 확인한다.
S144 단계에서, 밸런싱 제어부(124)는 임시 대상 서버의 상태 정보 및 부하 정보를 참조하여, 임시 대상 서버의 서비스 제공 가능 여부를 판단한다. 임시 대상 서버가 클라이언트(200)에 서비스를 제공할 수 있으면, 로드 밸런싱 방법은 S145 단계로 진행한다. 그렇지 않으면, 로드 밸런싱 방법은 S146 단계로 진행한다.
S145 단계에서, 밸런싱 제어부(124)는 임시 대상 서버를 대상 서버로서 결정한다.
한편, S146 단계에서. 밸런싱 제어부(124)는 데이터 관리부(125)에 저장된 관리 테이블을 참조하여 대상 서버를 결정한다.
실시 예로서, 밸런싱 제어부(124)는 부하의 적절한 분배를 위해 서버팜(300)에 포함된 가용 물리 서버들 중 부하가 가장 적은 물리 서버를 대상 서버로서 결정할 수 있다.
실시 예로서, S146 단계에서 밸런싱 제어부(124)에 의해 참조되는 관리 테이블은 서버 테이블일 수 있다. 이 경우, 서버 테이블은 서버팜(300)에 포함된 물리 서버들의 상태 정보 또는 부하 정보를 포함할 수 있다.
상기와 같은 실시 예에 따르면, 밸런싱 제어부(124)는 클라이언트(200)와 연결된 물리 서버 또는 부하가 가장 적은 물리 서버를 대상 서버로서 결정할 수 있다.
도 6은 도 3에 도시된 S170 단계를 구체적으로 나타내는 순서도이다. S170 단계에서 밸런싱 제어부(124, 도 2 참조)는 포워딩 룰을 결정하고, 로딩부(122, 도 2 참조)는 결정된 포워딩 룰을 스위치들(111, 112, 113, 114, 115, 116)에 선택적으로 로딩한다. 도 6을 참조하면, S170 단계는 S171 단계 내지 S175 단계를 포함한다.
한편, 여기서 클라이언트(200)부터 헤더 다시쓰기 노드 전까지의 포워딩 경로를 제 1 세그먼트라 정의한다. 그리고, 헤더 다시쓰기 노드를 제 2 세그먼트라 정의한다. 그리고, 헤더 다시쓰기 노드 부터 대상 서버까지의 포워딩 경로를 제 3 세그먼트라 정의한다.
S171 단계에서, 밸런싱 제어부(124)는 포워딩 경로 또는 S160 단계(도 3 참조)에서 결정된 헤더 다시쓰기 노드를 참조하여, 제 1 세그먼트에 대한 포워딩 룰(이하, 제 1 세그먼트 룰)을 결정한다.
S172 단계에서, 밸런싱 제어부(124)는 헤더 다시쓰기 노드를 참조하여, 제 2 세그먼트에 대한 포워딩 룰(이하, 제 2 세그먼트 룰)을 결정한다.
S173 단계에서, 밸런싱 제어부(124)는 포워딩 경로 또는 헤더 다시쓰기 노드를 참조하여, 제 3 세그먼트에 대한 포워딩 룰(이하, 제 3 세그먼트 룰)을 결정한다.
S174 단계에서, 밸런싱 제어부(124)는 결정된 포워딩 경로, 제 1 세그먼트 룰, 제 2 세그먼트 룰 또는 제 3 세그먼트 룰을 로딩부(122)에 제공한다.
로딩부(122)는 제공된 포워딩 경로 및 스위치들(111, 112, 113, 114, 115, 116)의 위치를 참조하여, 스위치들(111, 112, 113, 114, 115, 116) 각각에 선택적으로 포워딩 룰을 로딩한다. 여기서 로딩되는 포워딩 룰은 제 1 세그먼트 룰, 제 2 세그먼트 룰 또는 제 3 세그먼트 룰 중 어느 한 룰을 포함한다.
S175 단계에서, 로딩부(122)는 포워딩 경로 상에 위치한 스위치들에 대한 포워딩 룰 로딩이 완료되었는지 판단한다. 포워딩 룰 로딩이 완료되었으면, 로드 밸런싱 방법은 S190 단계(도 3 참조)로 진행한다. 포워딩 룰 로딩이 완료되지 않았으면, 로드 밸런싱 방법은 S174 단계로 진행하여 완료되지 않은 포워딩 룰 로딩을 수행한다.
상기와 같은 구성에 따르면, 포워딩 경로 및 헤더 다시쓰기 노드의 위치를 참조하여 포워딩 경로 상에 위치한 스위치들의 포워딩 룰이 결정된다. 그리고, 결정된 포워딩 룰이 포워딩 경로 상에 위치한 스위치들에게 로딩된다.
도 7a 및 도 7b는 본 발명의 로드 밸런싱 방법에 따른 포워딩 룰의 적용 예를 보여주는 도면이다. 도 7a 및 도 7b에서 클라이언트들(210, 220)은 도 1에 도시된 클라이언트(200)에 대응된다. 도 7a 및 도 7b에서 서버부들(310, 320)은 위에서 설명한 대상 서버에 대응된다.
도 7a를 참조하면, 클라이언트 A(210) 및 서버부 A(310)를 연결하는 포워딩 경로 상에 제 1 스위치(111, 도 1 참조), 제 2 스위치(112, 도 1 참조), 제 3 스위치(113, 도 1 참조), 제 4 스위치(115, 도 1 참조), 제 5 스위치(116, 도 1 참조)가 차례로 위치한다.
도 7a에서는 제 5 스위치(116)가 헤더 다시쓰기 스위치로서 결정된다고 가정한다. 헤더 다시쓰기 스위치의 결정 방법은 위에서 설명한 바와 같다. 도 6에서 설명한 포워딩 룰 결정 방법에 따르면, 제 1, 제 2, 제 3 및 제 4 스위치들(111, 112, 113, 115)는 클라이언트 A(210)와 헤더 다시쓰기 노드 사이에 위치하므로 제 1 세그먼트 룰(또는, 제 1 세그먼트 포워딩 룰)이 적용된다. 그리고, 제 5 스위치(116)는 제 2 세그먼트 룰(또는, 제 2 세그먼트 포워딩 룰)이 적용된다.
따라서, 각 스위치들(111, 112, 113, 115, 116)은 대응되는 포워딩 룰을 제공받고, 제공받은 포워딩 룰에 따라 데이터 패킷을 처리하게 된다.
마찬가지로, 도 7b를 참조하면, 클라이언트 B(220) 및 서버부 B(320)를 연결하는 포워딩 경로 상에 제 1 스위치(111, 도 1 참조), 제 2 스위치(112, 도 1 참조), 제 3 스위치(113, 도 1 참조), 제 4 스위치(115, 도 1 참조), 제 5 스위치(116, 도 1 참조)가 차례로 위치한다.
도 7b에서는 제 4 스위치(115)가 헤더 다시쓰기 스위치로서 결정된다고 가정한다. 헤더 다시쓰기 스위치의 결정 방법은 위에서 설명한 바와 같다. 도 6에서 설명한 포워딩 룰 결정 방법에 따르면, 제 1, 제 2 및 제 3 스위치들(111, 112, 113)는 클라이언트 B(220)와 헤더 다시쓰기 노드 사이에 위치하므로 제 1 세그먼트 룰(또는, 제 1 세그먼트 포워딩 룰)이 적용된다. 그리고, 제 4 스위치(115)는 제 2 세그먼트 룰(또는, 제 2 세그먼트 포워딩 룰)이 적용된다. 그리고, 제 5 스위치(116)는 헤더 다시쓰기 노드와 서버부 B(320) 사이에 위치하므로 제 3 세그먼트 룰(또는, 제 3 세그먼트 포워딩 룰)이 적용된다.
따라서, 각 스위치들(111, 112, 113, 115, 116)은 대응되는 포워딩 룰을 제공받고, 제공받은 포워딩 룰에 따라 데이터 패킷을 처리하게 된다.
이상에서 설명한 로드 밸런싱 방법에 따르면, 밸런싱부(120, 도 1 참조)가 포워딩 경로 및 포워딩 룰을 결정한다. 그리고, 결정된 포워딩 룰은 네트워크부(110, 도 1 참조)에 포함된 스위치들(111, 112, 113, 114, 115, 116, 도 1 참조)에 선택적으로 로딩된다. 그리고, 스위치들(111, 112, 113, 114, 115, 116) 중 포워딩 경로 상에 위치한 어느 한 스위치는 로드 밸런싱 동작의 일부로서 헤어 다시쓰기(header rewriting)를 수행한다. 그 결과, 밸런싱부(120)에 과부하가 걸리는 것을 방지할 수 있다.
또한, 위와 같은 로드 밸런싱 방법에 따르면, 밸런싱부(120)가 서버팜(300, 도 1 참조)의 직전에 위치하지 않을 수 있다. 따라서, 밸런싱부(120)는 망 내에 분산 배치된 서버들에 대해서도 원활하게 로드 밸런싱을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예를 들어 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한 각 실시 예는 여러 가지 형태로 변형될 수 있다. 또한, 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허 청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (16)

  1. 밸런싱부가 클라이언트로부터 수신한 데이터 패킷이 로드 밸런싱이 필요한 패킷인지 여부를 판단하는 단계;
    상기 판단 결과에 따라, 밸런싱부가 서버팜에 포함된 복수의 물리 서버들 중 적어도 하나의 서버를 상기 클라이언트에게 서비스를 제공할 대상 서버로 결정하는 단계;
    밸런싱부가 상기 클라이언트 및 상기 대상 서버간의 포워딩 경로를 결정하는 단계;
    밸런싱부가 헤더 다시쓰기(header rewriting) 노드를 결정하는 단계; 및
    밸런싱부가 상기 포워딩 경로 및 상기 헤더 다시쓰기 노드를 참조하여, 포워딩 룰을 결정하고, 상기 결정된 포워딩 룰을 상기 포워딩 경로 상에 위치한 스위치에 로딩하는 단계를 포함하는 로드 밸런싱 방법.
  2. 제 1 항에 있어서,
    밸런싱부가 상기 결정된 포워딩 룰을 참조하여 관리 테이블을 등록 또는 갱신하는 단계를 더 포함하는 로드 밸런싱 방법.
  3. 제 2 항에 있어서,
    상기 관리 테이블은 세션(session) 테이블, 플로우(flow) 테이블, 클라이언트 테이블 또는 서버 테이블을 포함하는 로드 밸런싱 방법.
  4. 제 1 항에 있어서,
    상기 대상 서버를 결정하는 단계는,
    밸런싱부가 상기 클라이언트와 연결된 세션을 확인하는 단계;
    상기 세션 확인 결과에 따라, 밸런싱부가 상기 복수의 물리 서버들 중 상기 세션을 통해 연결된 물리 서버의 서비스 가능 여부를 판단하는 단계; 및
    상기 연결된 물리 서버의 서비스 가능 여부에 따라, 밸런싱부가 상기 연결된 물리 서버를 상기 대상 서버로서 결정하는 단계를 포함하는 로드 밸런싱 방법.
  5. 제 4 항에 있어서,
    상기 대상 서버를 결정하는 단계는,
    상기 세션 확인 결과에 따라, 밸런싱부가 상기 복수의 물리 서버들 중 부하가 가장 적은 서버를 상기 대상 서버로서 결정하는 단계를 더 포함하는 로드 밸런싱 방법.
  6. 제 1 항에 있어서,
    상기 포워딩 룰을 결정하고, 상기 포워딩 룰을 로딩하는 단계는,
    밸런싱부가 상기 클라이언트와 상기 헤더 다시쓰기 노드 사이의 포워딩을 위한 제 1 세그먼트 룰을 결정하는 단계;
    밸런싱부가 상기 헤더 다시쓰기 노드의 포워딩을 위한 제 2 세그먼트 룰을 결정하는 단계;
    밸런싱부가 상기 헤더 다시쓰기 노드와 상기 대상 서버 사이의 포워딩을 위한 제 3 세그먼트 룰을 결정하는 단계; 및
    밸런싱부가 상기 스위치의 위치를 참조하여, 상기 스위치에 상기 제 1 세그먼트 룰, 상기 제 2 세그먼트 룰 또는 상기 제 3 세그먼트 룰 중 어느 하나를 상기 포워딩 룰로서 선택적으로 로딩하는 단계를 포함하는 로드 밸런싱 방법.
  7. 제 1 항에 있어서,
    상기 로딩된 포워딩 룰을 참조하여, 상기 스위치가 상기 스위치에 저장된 플로우 테이블에 상기 로딩된 포워딩 룰을 추가하는 단계를 더 포함하는 로드 밸런싱 방법.
  8. 제 7 항에 있어서,
    상기 스위치가 상기 플로우 테이블을 참조하여 상기 클라이언트 또는 상기 밸런싱부로부터 제공된 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 단계를 더 포함하는 로드 밸런싱 방법.
  9. 제 8 항에 있어서,
    상기 포워딩하는 단계는,
    상기 스위치가 상기 플로우 테이블로부터 상기 스위치 및 상기 포워딩 경로에 대응되는 포워딩 룰을 검색하는 단계; 및
    상기 포워딩 룰의 검색 결과에 따라, 상기 검색된 포워딩 룰을 참조하여 상기 스위치가 상기 제공된 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 단계를 포함하는 로드 밸런싱 방법.
  10. 제 9 항에 있어서,
    상기 포워딩하는 단계는,
    상기 스위치가 상기 헤더 다시쓰기 노드에 해당하는지 여부를 판단하는 단계; 및
    상기 헤더 다시쓰기 노드 판단 결과에 따라, 상기 스위치가 상기 제공된 데이터 패킷의 헤더를 다시쓰는(rewriting) 단계를 더 포함하는 로드 밸런싱 방법.
  11. 제 9 항에 있어서,
    상기 포워딩 룰의 검색 결과에 따라, 상기 스위치부가 상기 밸런싱부로 상기 제공된 패킷 또는 상기 스위치의 스위치 정보를 제공하는 단계를 더 포함하는 로드 밸런싱 방법.
  12. 서버팜에 포함된 복수의 물리 서버 중 적어도 한 서버를 클라이언트에 서비스를 제공할 대상 서버로서 결정하고, 상기 클라이언트 및 상기 대상 서버 간의 포워딩 경로 및 상기 포워딩 경로에 대한 포워딩 룰들을 결정하는 밸런싱부; 및
    상기 포워딩 경로 상에 위치하고, 상기 포워딩 룰들을 참조하여 상기 클라이언트로부터 수신되는 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 적어도 하나 이상의 스위치들을 포함하는 네트워크부를 포함하는 로드 밸런싱 장치.
  13. 제 12 항에 있어서,
    상기 스위치들 중 하나는 상기 데이터 패킷의 헤더를 다시쓰는(rewriting) 헤더 다시쓰기 노드에 위치하는 로드 밸런싱 장치.
  14. 제 13 항에 있어서,
    상기 포워딩룰들은 상기 클라이언트 및 상기 헤더 다시쓰기 노드 간의 포워딩을 위한 제 1 세그먼트 룰, 상기 헤더 다시쓰기 노드의 포워딩을 위한 제 2 세그먼트 룰 및 상기 헤더 다시쓰기 노드 및 상기 대상 서버 간의 포워딩을 위한 제 3 세그먼트 룰을 포함하는 로드 밸런싱 장치.
  15. 제 14 항에 있어서,
    상기 스위치들은 상기 스위치들 각각의 위치에 따라 상기 스위치들의 각각의 포워딩 룰로서 상기 제 1 ,제 2 또는 제 3 세그먼트 룰 중 어느 하나를 선택적으로 각각 수신하는 로드 밸런싱 장치
  16. 제 15 항에 있어서,
    상기 스위치들은 상기 스위치들 각각의 포워딩 룰에 따라 상기 데이터 패킷을 상기 대상 서버를 향해 포워딩하는 로드 밸런싱 장치.
KR1020110142453A 2011-12-26 2011-12-26 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법 KR20130093734A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110142453A KR20130093734A (ko) 2011-12-26 2011-12-26 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법
US13/620,072 US20130166775A1 (en) 2011-12-26 2012-09-14 Load balancing apparatus and load balancing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110142453A KR20130093734A (ko) 2011-12-26 2011-12-26 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법

Publications (1)

Publication Number Publication Date
KR20130093734A true KR20130093734A (ko) 2013-08-23

Family

ID=48655688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110142453A KR20130093734A (ko) 2011-12-26 2011-12-26 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법

Country Status (2)

Country Link
US (1) US20130166775A1 (ko)
KR (1) KR20130093734A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10516608B2 (en) * 2014-09-11 2019-12-24 Oath Inc. Systems and methods for directly responding to distributed network traffic
EP3214807A4 (en) * 2014-11-28 2017-10-18 Huawei Technologies Co., Ltd. Service processing apparatus and method
US10305816B1 (en) * 2015-03-31 2019-05-28 Cisco Technology, Inc. Adjustable bit mask for high-speed native load balancing on a switch
US10887234B1 (en) * 2016-02-23 2021-01-05 Amazon Technologies, Inc. Programmatic selection of load balancing output amongst forwarding paths

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
JP5205289B2 (ja) * 2009-01-14 2013-06-05 パナソニック株式会社 端末装置およびパケット送信方法
WO2011074516A1 (ja) * 2009-12-15 2011-06-23 日本電気株式会社 ネットワークシステムとその制御方法、及びコントローラ
WO2011074630A1 (ja) * 2009-12-17 2011-06-23 日本電気株式会社 負荷分散システム、負荷分散方法、負荷分散システムを構成する装置およびプログラム
WO2011087085A1 (ja) * 2010-01-14 2011-07-21 日本電気株式会社 計算機、ネットワーク接続切替え方法およびプログラム
US8856384B2 (en) * 2011-10-14 2014-10-07 Big Switch Networks, Inc. System and methods for managing network protocol address assignment with a controller

Also Published As

Publication number Publication date
US20130166775A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
US11876717B2 (en) Flow-based load balancing
EP3824602B1 (en) Multi-cloud connectivity using srv6 and bgp
Nguyen et al. Decentralized and revised content-centric networking-based service deployment and discovery platform in mobile edge computing for IoT devices
US9515920B2 (en) Name-based neighbor discovery and multi-hop service discovery in information-centric networks
US11082308B2 (en) Multi-path aware tracing and probing functionality at service topology layer
US20130254415A1 (en) Routing requests over a network
US8489913B2 (en) Network system and network relay apparatus
JP5757552B2 (ja) コンピュータシステム、コントローラ、サービス提供サーバ、及び負荷分散方法
US20140269710A1 (en) Port extender
WO2011087085A1 (ja) 計算機、ネットワーク接続切替え方法およびプログラム
CN105340244A (zh) 基于来自暂态准则的上下文的动态内容分发网络选择
CN108881018B (zh) 用于在diameter信令路由器处路由diameter消息的方法、系统及装置
CN110896553A (zh) 多接入边缘计算方法和平台、通信系统
JP2006262193A (ja) 制御装置、パケット転送方法およびパケット処理装置
Ascigil et al. A native content discovery mechanism for the information-centric networks
US20170052809A1 (en) Management device, control device, and management method
CN106375355B (zh) 负载均衡处理方法及装置
KR20130093734A (ko) 로드 밸런싱 장치 및 그것의 로드 밸런싱 방법
CN112929264B (zh) 业务流量传输方法、系统及网络设备
CN107786448B (zh) 建立业务流的转发路径的方法和装置
CN109361602B (zh) 一种基于OpenStack云平台转发报文的方法和系统
US20140244746A1 (en) Systems and Methods for Message Routing Using Link State Information
KR101922795B1 (ko) 사물인터넷 서비스 제공 장치 및 그 방법
JPWO2006073066A1 (ja) 通信装置、ルーティング方法及びプログラム
US20080298366A1 (en) Agnostic Network Architecture

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid