KR101482231B1 - Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 - Google Patents
Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 Download PDFInfo
- Publication number
- KR101482231B1 KR101482231B1 KR1020130092783A KR20130092783A KR101482231B1 KR 101482231 B1 KR101482231 B1 KR 101482231B1 KR 1020130092783 A KR1020130092783 A KR 1020130092783A KR 20130092783 A KR20130092783 A KR 20130092783A KR 101482231 B1 KR101482231 B1 KR 101482231B1
- Authority
- KR
- South Korea
- Prior art keywords
- uri
- packet
- information
- server
- type
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/286—Time to live
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
부하 분산 장치는 호스트로부터 서버로의 접속 요청을 수신하는 접속 요청 수신부, 상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 URI 추출부, 상기 추출한 URI의 정보를 저장하는 저장부, 상기 접속 요청을 상기 서버로 전송하는 접속 요청 전송부, 상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 응답 수신부 및 상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 제어부를 포함할 수 있다.
Description
URI에 기초하여 패킷 전송을 제어하는 방법 및 장치에 관한 것이다.
분산 서비스 거부 공격(DDoS: Distributed Denial of Service)은 악의적인 사용자에 의해 분산된 호스트들이 특정 서버의 서비스를 이용하지 못하도록 서버의 가용 자원을 고갈시킴으로써 서버가 다른 호스트의 응답을 정상적으로 처리하지 못하도록 하는 공격 형태를 의미한다.
종래 DDoS에 대한 대응 방법으로서 SNMP(Simple Network Management Protocol)를 사용하여 트래픽을 관측하여 비정상적으로 트래픽이 증가할 경우 대역폭 제한(Rate Limit)을 수행하는 방안이 제시되었다. 이와 관련하여, 한국 공개특허공보 제2009-0012561호에는 플로우별 통계 분석을 통하여 송신단에서 양방향 디도스 공격을 방어하는 구성이 개시되어 있다.
다만, 기존의 대역폭 제한을 통한 분산 공격 대응 방법은 정상적인 사용자와 공격자의 트래픽을 구분하지 않아 정상적인 사용자들 트래픽이 제한을 받는 경우가 발생한다. 이에 대한 해결방법으로서 트래픽들만의 특성에 기초하여 공격자의 트래픽과 정상적인 사용자의 트래픽을 구분하는 방법이 가능하겠으나 정상적인 사용자의 트래픽과 공격자의 트래픽을 구분하는 것은 고속 링크에서 실시간으로 처리하는데 있어 제한될 수 있다.
한편, DDoS는 특정 호스트가 아닌 분산된 호스트에서 동시에 악의적인 접속 요청을 보내므로, 접속된 IP(Internet Protocol) 주소를 기반으로 DDoS를 탐지 및 대응하는 데에는 한계가 있다.
분산 거부 공격에 의한 비정상적인 접속 요청이 급증에 따른 서버의 비정상적인 응답을 미연에 방지하고자 한다. 또한, 서버의 CPU 이용량과 서비스 응답 지연 시간을 이용하여 서비스 요청 수를 제한함으로써, 잠재적인 분산 공격으로부터 서버를 보호하고자 한다.
호스트의 트래픽을 구분하지 않고 접속 요청의 서버 URI 및 서버로부터 수신한 정보들에 기반하여 URI 유형별 패킷 드롭 확률을 조절함으로써, 서버의 과부하를 미연에 방지하고, 잠재적인 DDoS공격으로부터 서버를 보고하고, 안정적인 서비스가 가능하도록 하는 패킷 전송 제어 방법 및 장치를 제공하고자 한다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 일 실시예는 호스트로부터 서버로의 접속 요청을 수신하는 접속 요청 수신부, 상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 URI 추출부, 상기 추출한 URI의 정보를 저장하는 저장부, 상기 접속 요청을 상기 서버로 전송하는 접속 요청 전송부, 상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 응답 수신부; 및 상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 제어부를 포함하는 장치를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 상기 패킷 전송 제어부는 상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 패킷 드롭 정보를 결정하는 패킷 드롭 정보 결정부, 및 상기 패킷 드롭 정보에 기초하여 상기 패킷의 전송을 제어하는 패킷 전송 제어부를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 상기 패킷 드롭 정보는 패킷 드롭 확률이되, 상기 패킷 전송 제어부는 상기 패킷 드롭 확률에 기초하여 상기 URI에 대응하는 복수의 패킷을 확률적으로 드롭시킬 수 있다.
본 발명의 일 실시예에 따르면, 상기 장치는 상기 URI의 유형을 결정하는 유형 결정부를 더 포함하되, 상기 URI는 서버의 정보자원의 URI이고, 상기 URI의 정보는 상기 URI의 유형 정보이고, 상기 유형은 동적 URI 유형 또는 정적 URI 유형 중 어느 하나일 수 있다.
본 발명의 일 실시예에 따르면, 상기 응답 수신부는 상기 서버의 프로세싱 유닛의 이용량을 더 수신하되, 상기 제어부는 상기 URI의 정보, 상기 응답 및 상기 이용량에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어할 수 있다.
본 발명의 다른 실시예는 호스트로부터 서버로의 접속 요청을 수신하는 단계, 상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 단계, 상기 추출한 URI의 정보를 저장하는 단계, 상기 접속 요청을 상기 서버로 전송하는 단계, 상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 단계 및 상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 단계를 포함하는 방법을 제공할 수 있다.
본 발명의 또 다른 실시예는 호스트로부터 서버의 정보자원을 요청하는 패킷을 수신하는 수신부, 상기 제 1 패킷으로부터 상기 정보자원의 URI(Uniform Resource Indicator)를 추출하는 URI 추출부, 상기 추출한 URI에 기초하여 상기 제 1 패킷의 유형을 결정하는 유형 결정부, 상기 제 1 패킷에 대응하는 상기 서버의 응답에 기초하여 상기 유형의 패킷 드롭 정보를 결정하는 패킷 드롭 정보 결정부 및 상기 호스트로부터 수신된 제 2 패킷의 유형이 상기 제 1 패킷의 유형과 동일한 경우, 상기 패킷 드롭 정보에 기초하여 상기 제 2 패킷의 전송을 제어하는 제어부를 포함하는 장치를 제공할 수 있다.
본 발명의 또 다른 실시예는 호스트로부터 서버의 정보자원을 요청하는 제 1 패킷을 수신하는 단계, 상기 제 1 패킷으로부터 상기 정보자원의 URI(Uniform Resource Indicator)를 추출하는 단계, 상기 추출한 URI에 기초하여 상기 제 1 패킷의 유형을 결정하는 단계, 상기 제 1 패킷에 대응하는 상기 서버의 응답에 기초하여 상기 유형의 패킷 드롭 정보를 결정하는 단계, 상기 호스트로부터 제 2 패킷을 수신하는 단계 및 상기 제 2 패킷의 유형이 상기 제 1 패킷의 유형과 동일한 경우, 상기 패킷 드롭 정보에 기초하여 상기 제 2 패킷의 전송을 제어하는 단계를 포함하는 방법을 제공할 수 있다.
상술한 과제의 해결 수단을 통하여, 분산 거부 공격에 의한 비정상적인 접속 요청이 급증에 따른 서버의 비정상적인 응답을 미연에 방지할 수 있다. 또한, 서버의 CPU 이용량과 서비스 응답 지연 시간을 이용하여 서비스 요청 수를 제한함으로써, 잠재적인 분산 공격으로부터 서버를 보호할 수 있다.
호스트의 트래픽을 구분하지 않고 접속 요청의 서버 URI 및 서버로부터 수신한 정보들에 기반하여 URI 유형별 패킷 드롭 확률을 조절함으로써, 서버의 과부하를 미연에 방지하고, 잠재적인 DDoS공격으로부터 서버를 보고하고, 안정적인 서비스가 가능하도록 하는 패킷 전송 제어 방법 및 장치를 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 부하 분산 시스템의 구성도이다.
도 2는 본 발명의 일 실시예에 따른 부하 분산 장치의 구성도이다.
도 3은 본 발명의 일 실시예에 따른 부하 분산 장치의 각 구성요소의 동작을 설명하기 위한 도면이다.
도 4는 지연 시간을 결정하는 과정의 일례를 설명하기 위한 도면이다.
도 5는 본 발명의 패킷 전송이 제어되는 과정의 일례를 설명하기 위한 흐름도이다.
도 6은 본 발명의 다른 실시예에 따른 부하 분산 장치의 구성도이다.
도 7은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다.
도 8은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 부하 분산 장치의 구성도이다.
도 3은 본 발명의 일 실시예에 따른 부하 분산 장치의 각 구성요소의 동작을 설명하기 위한 도면이다.
도 4는 지연 시간을 결정하는 과정의 일례를 설명하기 위한 도면이다.
도 5는 본 발명의 패킷 전송이 제어되는 과정의 일례를 설명하기 위한 흐름도이다.
도 6은 본 발명의 다른 실시예에 따른 부하 분산 장치의 구성도이다.
도 7은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다.
도 8은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 일 실시예에 따른 부하 분산 시스템의 구성도이다. 도 1을 참조하면, 부하 분산 시스템은 부하 분산 장치(10), 복수의 서버들(21 내지 23) 및 복수의 호스트들(31 내지 33)을 포함한다. 다만, 도 1의 부하 분산 시스템은 본 발명의 일 실시예에 불과하므로 도 1을 통해 본 발명이 한정 해석되는 것은 아니며, 도 1로부터 다양한 응용이 가능하다. 예를 들어, 본 발명의 다양한 실시예에 따르면 부하 분산 시스템은 호스트의 인증을 관리하는 인증 서버를 포함할 수도 있다.
도 1의 부하 분산 시스템의 각 구성요소들은 네트워크(network)를 통해 연결된다. 네트워크는 단말들 및 서버들과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미하는 것으로, 이러한 네트워크(network)의 일 예에는 3GPP(3rd Generation Partnership Project) 네트워크, LTE(Long Term Evolution) 네트워크, WIMAX(World Interoperability for Microwave Access) 네트워크, 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), 블루투스(Bluetooth) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.
부하 분산 장치(10)는 호스트들(31 내지 33) 어느 하나로부터 접속 요청을 수신하고, 수신한 접속 요청을 서버들(21 내지 23) 중 어느 하나로 전송한다. 또한, 부하 분산 장치(10)는 서버들(21 내지 23) 중 어느 하나로부터 접속 요청에 대응하는 응답을 수신하고, 수신한 응답을 호스트들(31 내지 33) 어느 하나로 전송한다.
부하 분산 장치(10)는 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하고, 이를 기록하고, 기록된 URI에 기반하여, 호스트들(31 내지 33)의 패킷의 전송을 제어한다. 부하 분산 장치(10)는 기록된 URI와 응답에 기초하여 이후에 특정 URI에 대응하는 패킷의 전송을 제어한다.
부하 분산 장치(10)는 URI의 컨텐츠 유형을 분석하고, 분석한 컨텐츠 유형별로 패킷의 전송을 제어할 수 있다. URI의 컨텐츠 유형은 URI의 대상인 정보자원의 유형을 의미할 수 있다. URI의 유형의 일례는 JSP(Java Server Page) 유형, ASP(Active Server Page) 유형, PHP(Personal Hypertext Preprocessor) 유형, 이미지 유형 및 HTML(Hypertext Markup Language) 유형 등이다. 또한, URI 컨텐츠 유형은 정보자원(또는 컨텐츠)이 서버에 의해 동적으로 생성되는 동적 URI 컨텐츠 유형과, 정보자원(또는 컨텐츠)이 서버에 의해 1회 생성되거나, 동적으로 생성되지 않는 정적 URI 컨텐츠 유형로 구분할 수도 있다. 일반적으로 동적 URI 컨텐츠 유형은 서버의 하드웨어 자원의 이용률을 증가시키는 반면, 정적 URI 컨텐츠 유형은 상대적으로 서버의 하드웨어 자원의 이용률을 제로로 또는 낮게 유지시킨다. 이하에서 URI 유형은 URI 컨텐츠 유형을 의미할 수 있다.
부하 분산 장치(10)는 특정 URI 유형에 대응하는 패킷 또는 플로우의 패킷 드롭 확률을 조절함으로써, 서버의 부하를 제어할 수 있다. 예를 들어, 부하 분산 장치(10)는 복수의 서버 중 제 1 서버로 JSP(Java Server Page) 유형에 대응하는 접속 요청수가 임계치 보다 큰 경우, JSP(Java Server Page) 유형에 대응하는 패킷 드롭 확률을 10% 증가시킴으로써, 제 1 서버의 부하를 제어할 수 있다. 플로우는 트래픽 플로우, 패킷 플로우 및 네트워크 플로우 중 어느 하나를 의미할 수 있으며, 일반적으로 플로우는 소스(Source) 디바이스에서 목적지(Destination) 디바이스까지의 패킷들의 시퀀스를 의미할 수 있다. 이러한 플로우는 컨텐츠, 미디어, 또는 스트림의 전부 또는 일부로 구분될 수 있으며, 시간에 따라 구분될 수도 있다.
부하 분산 장치(10)는 네트워크에 별도로 구성된 장치일 수도 있으나, 네트워크에 존재하는 장치인 스위치, 라우터 또는 게이트웨이에 부하 분산 장치(또는 부하 분산 모듈)가 결합된 형태일 수도 있다. 이하의 도면들의 통해 이러한 부하 분산 장치(10)의 동작에 대해서 보다 구체적으로 설명하도록 한다.
부하 분산 장치(10)는 악의적인 사용자에 의해 호스트로부터 서버로 입력되는 패킷들 중 정당하지 않은 패킷을 효과적으로 차단한다. 이를 위해, 부하 분산 장치(10)는 호스트들로부터 입력된 패킷들에 대한 패킷 드롭 확률을 URI 유형에 따라 동적으로 가변시킨다. 예를 들어, 부하 분산 장치(10)는 제 1 URI 유형에 대응하는 패킷들의 패킷 드롭 확률을 70%에서 20%로 감소시키고, 제 2 URI 유형에 대응하는 패킷들의 패킷 드롭 확률을 30%에서 80%로 증가시킬 수 있다. 이를 통해, 부하 분산 장치(10)는 제 2 URI 유형에 대해 분산 서비스 거부 공격(DDoS: Distributed Denial of Service)을 수행하는 악의적인 호스트들의 시도를 차단할 수 있다. 또한, 부하 분산 장치(10)는 서버들 각각의 CPU 이용률, 접속 요청에 대응하는 응답 지연시간 및 TTL(Time to Live) 등을 URI 유형과 함께 고려하여, 보다 효과적인 방어를 가능하게 한다.
복수의 서버들(21 내지 23) 각각은 호스트로부터 입력된 접속 요청에 대한 응답으로서, 데이터를 생성하고, 호스트로 데이터를 전송한다. 이와 같은 데이터는 접속 요청에 종속되는 이미지, 동영상, 웹 페이지, 오디오 등 다양한 컨텐츠의 데이터들일 수 있다. 또한, 복수의 서버들(21 내지 23) 각각은 웹 서버, 방송 서버 등 네트워크를 통해 운용되는 다양한 서버의 유형 중 어느 하나일 수 있다.
복수의 호스트(31 내지 33)는 복수의 서버들(21 내지 23)로 접속 요청 또는 패킷을 전달한다. 이 때, 접속 요청의 또는 패킷의 일 예는 서버(21 내지 23)로 데이터의 전송을 요청하는 요청신호를 포함한다. 또한, 복수의 호스트(31 내지 33)는 복수의 서버들(21 내지 23)을 향해 전송한 패킷이 부하 분산 장치(10)에 의하여 인터셉트된다는 것을 인지하지 못할 수 있다.
이러한 호스트들(31 내지 33)은 다양한 형태의 단말일 수 있다. 예를 들어, 호스트는 네트워크를 통해 원격지의 서버에 접속할 수 있는 TV 장치, 컴퓨터 또는 휴대용 단말일 수 있다. 여기서, TV 장치의 일 예에는 스마트 TV, IPTV 셋톱박스 등이 포함되고, 컴퓨터의 일 예에는 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등이 포함되고, 휴대용 단말의 일 예에는 휴대성과 이동성이 보장되는 무선 통신 장치로서, PCS(Personal Communication System), GSM(Global System for Mobile communications), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet) 단말, 스마트폰(Smartphone), 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치가 포함될 수 있다.
이하에서는 부하 분산 시스템을 구성하는 각각의 구성요소의 동작에 대해서 보다 상세하게 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 부하 분산 장치의 구성도이다. 도 2를 참조하면, 부하 분산 장치(10)는 수신부(11), URI 추출부(12), 저장부(13), 접속 요청 전송부(14) 및 제어부(15)를 포함한다. 다만, 도 2에 도시된 부하 분산 장치(10)는 본 발명의 하나의 구현 예에 불과하며, 도 2에 도시된 구성요소들을 기초로 하여 여러 가지 변형이 가능하다. 예를 들어, 부하 분산 장치(10)는 관리자로부터 소정 정보를 입력받는 관리자 인터페이스(미도시)를 더 포함할 수도 있다. 이러한, 관리자 인터페이스(미도시)는 일반적으로 키보드, 마우스 등과 같은 입력 장치가 될 수 있으나, 영상 표시 장치에 표현되는 그래픽 유저 인터페이스(GUI, Graphical User interface)가 될 수도 있다.
수신부(11)는 호스트(30)로부터 서버(20)로의 접속 요청을 수신한다. 이 때, 접속 요청은 서버로 소정 정보자원을 요청하는 패킷 또는 복수의 패킷을 의미할 수 있다. 접속 요청은 서버의 주소 및 정보자원의 주소 중 적어도 하나 이상을 포함한다. 일반적으로, 서버의 주소 및 정보 자원의 주소는 URI(Uniform Resource Indicator)를 의미할 수 있다.
수신부(11)는 복수의 호스트 각각으로부터 복수의 서버 각각으로의 접속 요청을 수신한다. 또한, 이하에서 설명되겠으나, 수신한 접속 요청은 접속 요청 전송부(14)에 의하여 복수의 서버 각각으로 전송된다. 이 때, 수신부(11) 및 접속 요청 전송부(14)는 접속 요청에 포함된 네트워크 식별자를 기반으로 접속 요청의 목적지를 식별할 수 있다. 네트워크 식별자의 일례는 이하에서도 설명될 URI(Uniform Resource Indicator), URL(Uniform Resource Locator), URN(Uniform Resource Names)일 수 있으며, 나아가 다양한 형태의 IP 주소 및 도메인 주소일 수도 있다.
도 2를 참조하면, 수신부(11)는 접속 요청 수신부(111) 및 응답 수신부(112)를 포함할 수 있다. 이 때, 접속 요청 수신부(111)는 호스트(30)로부터 접속 요청을 수신하고, 응답 수신부(112)는 서버(20)로부터 응답을 수신하는 역할을 각각 수행할 수 있다.
URI 추출부(12)는 접속 요청으로부터 URI를 추출한다. URI는 인터넷(또는 네트워크)에 있는 자원(또는 정보자원)을 나타내는 주소를 의미한다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜(예를 들어, HTTP 또는 FTP) 과 함께 사용된다.
URI의 일례는 URL 또는 URN이다. URL은 네트워크 상에서 정보자원이 어디에 있는지를 알려주기 위한 정보이다. 일반적으로 웹 사이트(또는 웹 서버)의 주소로 사용되고 있으나, URL은 웹 사이트 주소뿐만 아니라 웹 사이트에서 제공하는 정보자원의 주소로 사용된다. URL의 일례를 예시하면, "http://www.someserver.com/a.gif"이며, 이는 "www.someserver.com"에 있는 "a.gif"라는 정보자원의 주소일 수 있다. URL의 다른 예를 예시하면, "ftp://id:[email protected]/b.gif"이며, 이는 "192.168.1.234"에 있는 " b.gif"라는 정보자원의 주소일 수 있다. 이 때, 웹 사이트는 웹 사이트를 운영하는 본 발명의 웹 서버(또는 서버)를 의미할 수 있다.
저장부(13)는 추출한 URI의 정보를 저장한다. URI의 정보는 URI의 유형 정보, URI의 초당 접속 요청수, URI의 응답 지연시간, URI에 대한 호스트의 TTL(Time to Live) 분포 및 URI에 대한 TTL(Time to Live) 최빈값 중 적어도 하나 이상을 포함할 수 있다.
저장부(13)는 복수의 URI의 복수의 정보를 저장할 수 있다. 예를 들어, 저장부(13)는 제 1 URI의 정보 및 제 2 URI의 정보를 저장할 수 있다. 또한, URI의 정보는 URI의 통계자료를 의미할 수 있다. URI의 통계 자료는 URI별 초당 접속 요청수, URI별 서버의 응답 지연시간(또는 응답 지연시간의 평균), URI 각각에 대한 호스트의 TTL(Time to Live) 분포 및 TTL의 최빈값을 포함할 수 있다.
저장부(13)는 URI 유형별 통계자료를 포함할 수도 있다. 예를 들어, 저장부(13)는 URI 유형별 초당 접속 요청수, URI 유형별 서버의 응답 지연시간(또는 응답 지연시간의 평균), URI 유형 각각에 대한 호스트의 TTL(Time to Live) 분포 및 TTL의 최빈값을 포함할 수 있다.
도 3은 본 발명의 일 실시예에 따른 부하 분산 장치의 각 구성요소의 동작을 설명하기 위한 도면이다. 도 3을 참조하면, 부하 분산 장치(10)는 유형 결정부(16)를 더 포함할 수 있다.
유형 결정부(16)는 URI의 유형을 결정한다. 또한, 유형 결정부(16)는 URI의 정보 또는 URI 유형정보를 생성할 수 있다. 다만, 본 발명의 다양한 실시예들에 따르면, URI의 유형, 정보 및 유형정보 중 하나 이상은 URI 추출부(12)에 의하여 결정 또는 추출될 수도 있고, 저장부(13)에 의하여 결정 또는 추출될 수도 있다. 다만, 설명의 편의를 위해, 유형 결정부(16)가 URI의 정보를 추출하는 것에 대해서만 설명한다.
유형 결정부(16)는 URI에 포함된 정보자원의 주소에 기초하여 URI의 유형을 결정할 수 있다. 앞서 예시된 바와 같이, URI 또는 URI에 포함된 정보자원의 주소가 "http://www.someserver.com/a.gif"인 경우, 유형 결정부(16)는 "http://www.someserver.com/a.gif" 중 "a.gif"를 이용하여, URI의 유형을 이미지 유형으로 결정할 수 있다. 일반적으로, "gif"를 확장자로 갖는 파일은 이미지 파일이기 때문이다.
URI의 유형은 URI에 대응하는 정보자원의 유형을 의미할 수 있다. 이와 같은 URI의 유형은 동작 URI 유형 또는 정적 URI 유형로 구분될 수 있으며, 이 때, 동적 URI 유형은 URI에 대응하는 정보자원의 형태가 동적인 경우이고, 정적 URI 유형은 URI에 대응하는 정보자원의 형태가 정적인 경우를 의미할 수 있다.
다르게 표현하면, 동적 URI 유형은 정보자원(또는 컨텐츠)이 서버에 의해 동적으로 생성되는 것 또는 정보자원의 서버에 의해 생성된 후 서버에 의해 정보자원의 내용이 동적으로 변경되는 것을 의미할 수 있다. 이와 비교하여, 정적 URI 유형은 정보자원(또는 컨텐츠)이 서버에 의해 1회 생성된 후 변경되지 않는 것 또는 서버에 의해 동적으로 생성되지 않는 것을 의미할 수 있다. 일반적으로 동적 URI 유형은 서버의 하드웨어 자원의 이용률을 증가시키는 반면, 정적 URI 유형은 상대적으로 서버의 하드웨어 자원의 이용률을 제로로 또는 낮게 유지시킨다.
URI의 유형의 일례는 JSP(Java Server Page) 유형, ASP(Active Server Page) 유형, PHP(Personal Hypertext Preprocessor) 유형, 이미지 유형 및 HTML(Hypertext Markup Language) 유형 등이다. 일반적으로, JSP 유형, ASP 유형 및 PHP 유형은 동적 URI 유형이고, 이미지 유형 및 HTML 유형은 정적 URI 유형일 수 있다.
유형 결정부(16)는 특정 URI를 분석한 결과, URI 내에 URI 유형을 결정할만한 내용이 포함되어 있지 않거나, URI 자체가 서버의 주소만으로 이루어진 경우, 또는 URI 내의 유형이 특정되지 않는 경우, 해당 접속 요청 또는 패킷의 URI의 정보를 Default로 결정할 수 있다.
저장부(13)는 부하 분산 장치(10) 또는 저장부(13)에 포함된 데이터베이스(미도시)에 URI의 정보를 저장할 수 있다. 데이터베이스(미도시)는 데이터(또는 정보)를 저장한다. 이 때, 데이터는 부하 분산 장치(10) 내부의 각 구성요소가 생성하거나 구성요소들 사이에 입력 및 출력되는 데이터를 포함하고, 부하 분산 장치(10)와 부하 분산 장치(10) 외부의 구성요소들간에 입력 및 출력되는 데이터를 포함한다. 예를 들어, 데이터베이스(미도시)는 제어부(15)로부터 출력되는 제어 신호, URI 추출부(12)로부터 출력되는 URI 및 호스트(30)로부터 수신된 접속 요청을 저장할 수 있다. 이러한 데이터베이스(미도시)의 일례에는 부하 분산 장치(10) 내부 또는 외부에 존재하는 하드디스크드라이브, 하드디스크드라이브, ROM(Read Only Memory), RAM(Random Access Memory), 플래쉬메모리 및 메모리카드 등이 포함된다.
접속 요청 전송부(14)는 접속 요청을 서버(20)로 전송한다. 이 때, 전송된 접속 요청은 수신부(11)에 입력된 그것과 동일할 수 있다. 다만, 앞서 설명된 바와 같이, 접속 요청으로부터 URI 추출부(12)에 의해 URI가 추출 및 기록될 수 있다.
수신부(11)는 서버(20)로부터 접속 요청에 대응하는 응답을 수신한다. 이 때, 도 2에 도시된 바와 같이, 수신부(11)에 포함된 응답 수신부(112)가 접속 요청에 대응하는 응답을 수신할 수 있다.
제어부(15)는 응답의 지연시간을 결정할 수 있다. 도 4는 지연 시간을 결정하는 과정의 일례를 설명하기 위한 도면이다. 도 4를 통해, 지연시간의 일례를 설명하면, 지연시간은 호스트(30)로부터 출발한 접속 요청(또는 패킷)이 부하 분산 장치(10)를 경유한 시간, 수신부(11)에 수신된 시간 및 접속 요청 전송부(15)로부터 출발한 시간 중 어느 하나의 시간과 서버(20)로부터 출발한 응답이 부하 분산 장치(10) 또는 응답 수신부(112)에 도착한 시간과의 시간 간격에 의해 결정된다. 일반적으로 접속 요청은 접속 요청의 내용을 포함한 하나의 패킷 또는 복수의 패킷이고, 응답 역시 접속 요청에 대한 응답 내용을 포함하는 하나의 패킷 또는 복수의 패킷이다. 이 때, 응답 내용을 포함하는 하나의 패킷은 접속 요청에 대응하는 첫 번째 데이터 패킷일 수 있다.
제어부(15)는 URI의 정보 및 응답에 기초하여 URI에 대응하는 패킷의 전송을 제어한다. 구체적으로, 제어부(15)는 URI의 정보 및 응답의 지연시간에 기초하여 URI에 대응하는 패킷의 전송을 제어할 수 있다. 이 때, 앞서 설명된 바와 같이, 지연시간은 접속 요청이 접속 요청 수신부(111)에 수신된 시간, 및 응답이 응답 수신부(112)에 수신된 시간에 기초하여 결정될 수 있다.
제어부(15)는 패킷 드롭 정보 결정부(151) 및 패킷 전송 제어부(152)를 포함한다. 패킷 드롭 정보 결정부(151)는 URI의 정보 및 응답에 기초하여 URI에 대응하는 패킷의 패킷 드롭 정보를 결정한다. 이 때, 패킷 드롭 정보의 대표적인 예는 패킷 드롭 확률이다. 패킷 드롭 확률은 특정 URI, 특정 플로우, 특정 호스트 및 특정 서버 중 하나 이상에 대응하는 패킷들 중 확률적으로 드롭되는 일부에 대응한다. 예를 들어, 특정 호스트의 패킷 드롭 확률이 70%인 경우, 상기 호스트로부터 입력되는 패킷의 70%는 확률적으로 드롭된다. 다른 예를 들어, 특정 URI의 패킷 드롭 확률이 50%인 경우, 상기 URI에 대응하는 패킷의 50%는 확률적으로 드롭된다. 또 다른 예를 들어, 특정 플로우의 패킷 드롭 확률이 50%인 경우 해당 플로우에 포함된 패킷의 50%는 확률적으로 드롭된다.
패킷 드롭 정보 결정부(151)는 응답의 지연시간에 따라 URI에 대응하는 패킷 드롭 정보를 결정할 수 있다. 예를 들어, 패킷 드롭 정보 결정부(151)는 응답의 지연시간이 임계값보다 큰 경우, 해당 URI에 대응하는 패킷의 패킷 드롭 확률을 기존의 50%에서 70%로 증가시킬 수 있다. 이를 통해, 해당 URI에 대응하는 패킷들은 악의적인 DDOS 공격의 방어를 위해 또는 부하 분산을 위해 더 많이 드롭되게 된다. 이와 같이, 패킷 드롭 정보 결정부(151)는 응답의 지연시간이 임계값보다 큰지 여부에 따라 URI에 대응하는 패킷 드롭 확률을 결정하고, 패킷 전송 제어부(152)는 결정된 패킷 드롭 확률에 기초하여 URI에 대응하는 패킷의 전송을 제어할 수 있다.
패킷 드롭 정보 결정부(151)는 URI의 유형별로 패킷 드롭 확률을 결정한다. 예를 들어, 패킷 드롭 정보 결정부(151)는 동적 URI 유형의 패킷 드롭 확률을 증가시키고, 정족 URI 유형의 패킷 드롭 확률을 감소시킴으로써 부하 분산을 수행할 수 있다.
제어부(15)는 URI의 정보, 응답 및 이용량에 기초하여 URI에 대응하는 패킷의 전송을 제어할 수 있다. 이를 위해, 응답 수신부(112)는 서버의 프로세싱 유닛의 이용량을 수신할 수 있다. 또한, 예를 들어, 패킷 드롭 정보 결정부(151)는 서버(20)로부터 주기적으로 수신한 프로세스 유닛의 이용량에 기초하여 서버(20)의 부하가 증가하는 경우, 서버(20)로 전송하는 패킷의 패킷 드롭 확률을 증가시킬 수 있다.
다른 예를 들어, 패킷 드롭 정보 결정부(151)는 특정 URI 유형의 유입이 증가하고, 해당 URI의 유형의 응답 지연시간이 증가하고, 해당 URI를 많이 수신하는 서버(20)의 프로세스 유닛의 이용량이 증가하는 경우, 해당 서버(20)로 전송되는 특정 URI 유형의 패킷의 패킷 드롭 확률을 증가시킬 수 있다.
패킷 드롭 정보 결정부(151)는 URI 유형별로 평균 응답 시간을 지속적으로 체크하고, 서버의 프로세스 유닛(예를 들어, CPU)의 이용량 또는 평균 응답의 지연시간이 임계치보다 클 경우, 분산 서비스 공격이 발생한 것으로 판단하고, 해당 URI 유형을 비정상 요청 유형으로 규정한 후, 해당 URI의 패킷 드롭 확률을 대폭 증가시킬 수 있다.
패킷 드롭 정보 결정부(151)는 서버의 CPU 이용량 또는 URI에 대한 평균 응답 지연시간이 임계치보다 작은 경우, 정상 상황으로 판단하고, 해당 URI에 대응하는 패킷 드롭 확률을 유지 또는 감소시킬 수 있다.
패킷 드롭 정보 결정부(151)는 URI와 플로우 맵을 이용하여 플로우가 오래 지속되고, 분당 URI 요청수가 임계치를 넘지 않는 경우, 정상적은 플로우로 판단하고, 해당 URI에 대응하는 패킷 드롭 확률을 유지 또는 감소시킬 수 있다. 이 때, URI 추출부(12)는 특정 URI에 대해 플로우 정보를 추출하고, 저장부(13)는 플로우 정보와의 URI 매핑 테이블을 의해 데이터베이스(미도시) 저장할 수 있다.
패킷 드롭 정보 결정부(151)는 플로우에서 분당 특정 URI의 요청수가 임계치보다 큰경우, 비정상적인 요청으로 규정하고, 비 정상적인 요청으로 규정된 URI에 해당하는 트래픽에 대해 패킷 드롭 확률을 적용하여(또는 증가시켜) 확률적으로 패킷을 드롭 시켜 서버의 부하를 줄임으로써 DDOS 공격으로 의심되는 상황에서 서버의 과부하를 방지하며, 또한 다른 URI의 서비스가 정상적으로 동작할 수 있도록 한다.
아래 수학식 1은 비정상 요청으로 규정된 URI의 패킷 드롭 확률을 의미한다. 이 때, PDrop _ URI는 URI의 패킷 드롭 확률이고, Qx는 대기열(bytes)이고, rx는 처리속도(bytes/sec)이고, Tavg _ res는 평균 응답 지연시간이고, TThreshold는 응답 지연시간의 임계치이다.
[수학식 1]
또한, 각 요청 플로우의 패킷 드롭 확률은 해당 요청 플로우에서의 비정상으로 간주된 URI가 얼마나 요청되었는지 여부에 따라 결정될 수 있다. 예를 들어, 아래 수학식 2를 참조하면, 특정 요청 플로우의 패킷 드롭 확률은 특정 요청 플로우에서의 비정상 URI의 요청수를 전체 비정상 URI의 요청수로 나눈 값에 비정상 URI의 패킷 드롭 확률을 곱한 값으로 결정될 수 있다. 이 때, PDrop _ flow는 플로우의 패킷 드롭 확률이고, PDrop _ URI는 비정상으로 간주된 URI의 패킷 드롭 확률이고, NFlow는 플로우에서의 비정상으로 간주된 URI의 요청수이며, NURI는 비정상으로 간주된 URI의 전체 요청수를 의미할 수 있다.
[수학식 2]
패킷 드롭 정보 결정부(151)는 TTL(Time to Live) 최빈값에 해당하는 요청 플로우는 IP를 수시로 변경하는 분산 공격이라고 판단하고, TTL 최빈값을 갖는 요청에 대해서는 가중치를 적용하여 플로우별 패킷 드롭 확률을 결정할 수 있다. 예를 들어, 패킷 드롭 정보 결정부(151)는 유사한 TTL을 가장 많이 보이는 TTL 최빈값은 특정 거리의 호스트들에서 IP만을 수시로 변경하는 분산 공격이라고 판단하고, TTL 최빈값을 갖는 접속 요청 또는 패킷에 대해서는 가중치인 20%를 패킷 드롭 확률에 부가시킬 수 있다.
패킷 전송 제어부(152)는 패킷 드롭 정보에 기초하여 패킷의 전송을 제어한다. 이 때, 앞서 설명된 바와 같이 패킷 드롭 정보는 패킷 드롭 확률일 수 있으므로, 패킷 전송 제어부(152)는 패킷 드롭 확률에 기초하여 URI에 대응하는 복수의 패킷을 확률적으로 드롭시킬 수 있다.
도 3을 참조하여 예시하면, 패킷 전송 제어부(152)는 패킷 드롭 정보 결정부(151)에 의해 특정 URI(또는 URI 유형)의 패킷 드롭 확률이 50%로 결정된 경우, 예를 들어 특정 URI에 대응하는 패킷 4개가 수신부(11)에 입력된 경우, 그 중 2개를 확률적으로 드롭시킨 후, 접속 요청 전송부(14)로부터 2개만 출력되도록 제어할 수 있다.
도 5는 본 발명의 패킷 전송이 제어되는 과정의 일례를 설명하기 위한 흐름도이다. 도 5의 패킷 전송이 제어되는 과정은 본 발명의 일례일 뿐이므로, 도 5의 내용으로 본 발명의 기술적 특징이 한정되는 것은 아니다.
도 5를 참조하면, 접속 요청 수신부(111)는 접속 요청을 수신하고(S501), URI 추출부(12)가 접속 요청으로부터 URI를 추출하는 경우, 유형 결정부(16)는 접속 요청에 대한 URI, URI 유형 및 플로우 분석을 수행한다(S502). 단계 S503에서의 판단 결과, 데이터베이스(미도시)에 상기 접속 요청의 URI에 대응하는 기록이 없다면, 저장부(13)는 해당 URI를 데이터베이스(미도시)에 기록한다(S504). 그러나, 단계 S503에서의 판단 결과, 데이터베이스(미도시)에 상기 접속 요청의 URI에 대응하는 기록이 이미 존재하는 경우, 패킷 드롭 정보 결정부(151)는 해당 URI에 대한 응답 시간(또는 응답 지연시간)을 계산한다.
단계 S506에서 패킷 드롭 정보 결정부(151)는 현재 부하 분산 장치(10)를 경유하는 전체(또는 일부) 패킷들의 전체 응답 시간(또는 응답 지연시간)이 임계값보다 작은 경우 절차를 종료하나, 임계값보다 큰 경우, 단계 S507를 수행하도록 한다.
단계 S507에서 패킷 드롭 정보 결정부(151)는 접속 요청에 대응하는 URI(또는 URI 유형)에 대한 접속 수가 임계치보다 큰 경우에는 단계 S509를 수행하도록 하고, 단계 S509에서 패킷 드롭 정보 결정부(151)는 상기 URI(또는 URI 유형)에 대한 패킷 드롭 확률을 증가시킨다.
다만, 단계 S507에서 패킷 드롭 정보 결정부(151)는 접속 요청에 대응하는 URI(또는 URI 유형)에 대한 접속 수가 임계치보다 작은 경우에는 단계 S508을 수행하도록 하고, 단계 S508에서 패킷 드롭 정보 결정부(151)는 상기 URI(또는 URI 유형)에 대해서 동일 TTL이 존재하는 경우(또는 TTL 최빈값을 갖는 TTL이 존재하는 경우) 단계 S510을 수행하고, 동일 TTL이 존재하지 않는 경우 단계 S509를 수행하도록 한다.
단계 S510에서 패킷 드롭 정보 결정부(151)는 상기 URI(또는 URI 유형)에 대한 동일 플로우가 존재하는지 여부를 판단하여, 존재하는 경우, 단계 S511을 통해 해당 플로우(또는 해당 URI)를 일시 차단한다. 다만, 단계 S510에서 패킷 드롭 정보 결정부(151)는 상기 URI(또는 URI 유형)에 대한 동일 플로우가 존재하는지 여부를 판단하여, 존재하지 않는 경우, 단계 S512를 수행하도록 한다.
S512에서 패킷 드롭 정보 결정부(151)는 특정 TTL 수가 임계치보다 큰 경우, S513을 통해 해당 TTL에 대한 패킷 드롭 확률을 증가시킨다. 그러나, 단계 S512에서 패킷 드롭 정보 결정부(151)는 특정 TTL 수가 임계치보다 작은 경우, 단계 S509를 수행하도록 한다. 단계 S513에서 패킷 드롭 정보 결정부(151)는 특정 TTL에 대한 패킷 드롭 확률을 증가시킨다. 이와 같은 도 5의 단계 S501 내지 S513은 본 발명의 다양한 실시예들 중 하나에 불과하므로, 본 발명의 다양한 실시예들에 따라 변형 및 응용이 가능하다.
도 6은 본 발명의 다른 실시예에 따른 부하 분산 장치의 구성도이다. 도 6을 참조하면, 부하 분산 장치(60)는 수신부(61), URI 추출부(62), 유형 결정부(63), 패킷 드롭 정보 결정부(64) 및 제어부(65)를 포함한다. 다만, 도 6에 도시된 부하 분산 장치(60)는 본 발명의 하나의 구현 예에 불과하며, 도 6에 도시된 구성요소들을 기초로 하여 여러 가지 변형이 가능하다. 예를 들어, 부하 분산 장치(60)는 관리자로부터 소정 정보를 입력받는 관리자 인터페이스(미도시)를 더 포함할 수도 있다. 이러한, 관리자 인터페이스(미도시)는 일반적으로 키보드, 마우스 등과 같은 입력 장치가 될 수 있으나, 영상 표시 장치에 표현되는 그래픽 유저 인터페이스(GUI, Graphical User interface)가 될 수도 있다.
도 6의 부하 분산 장치(60)에 대한 설명은 앞서 도 1 내지 도 5를 통해 설명된 부하 분산 장치(10)와 대부분의 내용과 동일하다. 특히, 도 6의 수신부(61)는 도 2의 수신부(11), 도 6의 URI 추출부(62)는 도 2의 URI 추출부(12), 도 6의 유형 결정부(63)는 도 3의 유형 결정부(16), 도 6의 패킷 드롭 정보 결정부(64)는 도 3의 패킷 드롭 정보 결정부(151), 도 6의 제어부(65)는 도 2의 제어부(15) 또는 도 3의 패킷 전송 제어부(152) 각각의 동작에 대응한다. 따라서, 이하에서 도 6을 통해 설명이 생략된 내용은 앞서 도 1 내지 도 5를 통해 설명된 내용으로 대신한다.
수신부(61)는 호스트로부터 서버의 정보자원을 요청하는 패킷을 수신한다. 이 때, 패킷은 서버의 정보자원을 요청하는 접속 요청일 수 있다.
URI 추출부(62)는 제 1 패킷으로부터 정보자원의 URI(Uniform Resource Indicator)를 추출한다. 이 때, URI는 URL 또는 URN일 수 있다.
유형 결정부(63)는 추출한 URI에 기초하여 제 1 패킷의 유형을 결정한다. 이 때, 제 1 패킷의 유형은 추출한 URI의 유형일 수 있다. 즉, 유형 결정부(63)는 추출한 URI의 유형을 제 1 패킷의 URI 유형으로 결정할 수 있다.
패킷 드롭 정보 결정부(64)는 제 1 패킷에 대응하는 서버의 응답에 기초하여 유형의 패킷 드롭 정보를 결정한다. 이 때, 패킷 드롭 정보는 패킷 드롭 확률일 수 있다.
제어부(65)는 호스트로부터 수신된 제 2 패킷의 유형이 제 1 패킷의 유형과 동일한 경우, 제 1 패킷의 패킷 드롭 정보에 기초하여 제 2 패킷의 전송을 제어한다. 예를 들어, 제어부(65)는 제 2 패킷의 URI 유형이 제 1 패킷의 URI 유형과 동일한 경우, 제 1 패킷의 패킷 드롭 확률에 기초하여 제 2 패킷을 확률적으로 드롭시킴으로써, 제 2 패킷의 전송을 제어할 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다. 도 7에 도시된 패킷 전송 제어 방법은 도 2에 도시된 부하 분산 장치(10)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하 생략된 내용이라고 하더라도 도 1 내지 5를 통해 부하 분산 장치(10)에 대하여 설명된 내용은 도 7에도 적용된다.
단계 S701에서 수신부(11)는 호스트로부터 서버로의 접속 요청을 수신한다. 단계 S702에서 URI 추출부(12)는 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출한다. 단계 S703에서 저장부(13)는 추출한 URI의 정보를 저장한다. 단계 S704에서 접속 요청 전송부(14)는 접속 요청을 서버(20)로 전송한다. 단계 S705에서 수신부(11)는 서버(10)로부터 접속 요청에 대응하는 응답을 수신한다. 단계 S706에서 제어부(15)는 URI의 정보 및 응답에 기초하여 URI에 대응하는 패킷의 전송을 제어한다.
도 8은 본 발명의 또 다른 실시예에 따른 패킷 전송 제어 방법을 나타낸 동작 흐름도이다. 도 8에 도시된 패킷 전송 제어 방법은 도 6에 도시된 부하 분산 장치(60)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하 생략된 내용이라고 하더라도 도 1 내지 6을 통해 부하 분산 장치(10) 또는 부하 분산 장치(60)에 대하여 설명된 내용은 도 8에도 적용된다.
단계 S801에서 수신부(61)는 호스트로부터 서버의 정보자원을 요청하는 제 1 패킷을 수신한다. 단계 S802에서 URI 추출부(62)는 제 1 패킷으로부터 정보자원의 URI(Uniform Resource Indicator)를 추출한다. 단계 S803에서 유형 결정부(63)는 추출한 URI에 기초하여 제 1 패킷의 유형을 결정한다. 단계 S804에서 패킷 드롭 정보 결정부(64)는 제 1 패킷에 대응하는 서버의 응답에 기초하여 유형의 패킷 드롭 정보를 결정한다. 단계 S805에서 수신부(61)는 호스트로부터 제 2 패킷을 수신한다. 단계 S806에서 제어부(65)는 제 2 패킷의 유형이 제 1 패킷의 유형과 동일한 경우, 패킷 드롭 정보에 기초하여 제 2 패킷의 전송을 제어한다.
앞서 설명된 도 7의 패킷 전송 제어 방법 및 도 8의 패킷 전송 제어 방법 각각은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 부하 분산 장치
20: 서버
30: 호스트
20: 서버
30: 호스트
Claims (12)
- 패킷 전송을 제어하는 장치에 있어서,
호스트로부터 서버로의 접속 요청을 수신하는 접속 요청 수신부;
상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 URI 추출부;
상기 추출한 URI의 정보를 저장하는 저장부;
상기 접속 요청을 상기 서버로 전송하는 접속 요청 전송부;
상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 응답 수신부; 및
상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 제어부를 포함하되,
상기 URI의 유형을 결정하는 유형 결정부를 더 포함하고,
상기 URI는 서버의 정보자원의 URI이고, 상기 URI의 정보는 상기 URI의 유형 정보를 포함하는 것인, 장치.
- 패킷 전송을 제어하는 장치에 있어서,
호스트로부터 서버로의 접속 요청을 수신하는 접속 요청 수신부;
상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 URI 추출부;
상기 추출한 URI의 정보를 저장하는 저장부;
상기 접속 요청을 상기 서버로 전송하는 접속 요청 전송부;
상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 응답 수신부; 및
상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 제어부를 포함하되,
상기 제어부는 상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 패킷 드롭 정보를 결정하는 패킷 드롭 정보 결정부; 및
상기 패킷 드롭 정보에 기초하여 상기 패킷의 전송을 제어하는 패킷 전송 제어부를 포함하는 것인, 장치.
- 제 2 항에 있어서,
상기 패킷 드롭 정보는 패킷 드롭 확률이되,
상기 패킷 전송 제어부는 상기 패킷 드롭 확률에 기초하여 상기 URI에 대응하는 복수의 패킷을 확률적으로 드롭시키는 것인, 장치.
- 삭제
- 제 1 항에 있어서,
상기 유형은 동적 URI 유형 또는 정적 URI 유형 중 어느 하나인 것인, 장치.
- 제 1 항에 있어서,
상기 제어부는 상기 응답의 지연시간에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 것인, 장치.
- 제 6 항에 있어서,
상기 지연시간은 상기 접속 요청이 상기 접속 요청 수신부에 수신된 시간, 및 상기 응답이 상기 응답 수신부에 수신된 시간에 기초하여 결정되는 것인, 장치.
- 제 1 항에 있어서,
상기 URI의 정보는 상기 URI의 초당 접속 요청수, 상기 URI의 응답 지연시간, 상기 URI에 대한 상기 호스트의 TTL(Time to Live) 분포 및 상기 URI에 대한 TTL(Time to Live) 최빈값 중 적어도 하나 이상을 더 포함하는 것인, 장치.
- 제 1 항에 있어서,
상기 응답 수신부는 상기 서버의 프로세싱 유닛의 이용량을 더 수신하되,
상기 제어부는 상기 URI의 정보, 상기 응답 및 상기 이용량에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 것인, 장치.
- 패킷 전송을 제어하는 방법에 있어서,
호스트로부터 서버로의 접속 요청을 수신하는 단계;
상기 접속 요청으로부터 URI(Uniform Resource Indicator)를 추출하는 단계;
상기 추출한 URI의 정보를 저장하는 단계;
상기 접속 요청을 상기 서버로 전송하는 단계;
상기 서버로부터 상기 접속 요청에 대응하는 응답을 수신하는 단계; 및
상기 URI의 정보 및 상기 응답에 기초하여 상기 URI에 대응하는 패킷의 전송을 제어하는 단계를 포함하되,
상기 URI의 유형을 결정하는 단계를 더 포함하고,
상기 URI는 서버의 정보자원의 URI이고, 상기 URI의 정보는 상기 URI의 유형 정보를 포함하는 것인, 방법.
- 패킷 전송을 제어하는 장치에 있어서,
호스트로부터 서버의 정보자원을 요청하는 패킷을 수신하는 수신부;
상기 제 1 패킷으로부터 상기 정보자원의 URI(Uniform Resource Indicator)를 추출하는 URI 추출부;
상기 추출한 URI에 기초하여 상기 제 1 패킷의 유형을 결정하는 유형 결정부;
상기 제 1 패킷에 대응하는 상기 서버의 응답에 기초하여 상기 유형의 패킷 드롭 정보를 결정하는 패킷 드롭 정보 결정부; 및
상기 호스트로부터 수신된 제 2 패킷의 유형이 상기 제 1 패킷의 유형과 동일한 경우, 상기 패킷 드롭 정보에 기초하여 상기 제 2 패킷의 전송을 제어하는 제어부를 포함하는 장치.
- 패킷 전송을 제어하는 방법에 있어서,
호스트로부터 서버의 정보자원을 요청하는 제 1 패킷을 수신하는 단계;
상기 제 1 패킷으로부터 상기 정보자원의 URI(Uniform Resource Indicator)를 추출하는 단계;
상기 추출한 URI에 기초하여 상기 제 1 패킷의 유형을 결정하는 단계;
상기 제 1 패킷에 대응하는 상기 서버의 응답에 기초하여 상기 유형의 패킷 드롭 정보를 결정하는 단계;
상기 호스트로부터 제 2 패킷을 수신하는 단계; 및
상기 제 2 패킷의 유형이 상기 제 1 패킷의 유형과 동일한 경우, 상기 패킷 드롭 정보에 기초하여 상기 제 2 패킷의 전송을 제어하는 단계를 포함하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130092783A KR101482231B1 (ko) | 2013-08-05 | 2013-08-05 | Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130092783A KR101482231B1 (ko) | 2013-08-05 | 2013-08-05 | Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101482231B1 true KR101482231B1 (ko) | 2015-01-15 |
Family
ID=52588933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130092783A KR101482231B1 (ko) | 2013-08-05 | 2013-08-05 | Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101482231B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100994076B1 (ko) * | 2010-04-12 | 2010-11-12 | 주식회사 나우콤 | 엔에이티 망용 웹서비스 정상사용자차단방지시스템 및 그의 제어방법 |
KR20110070289A (ko) * | 2009-12-18 | 2011-06-24 | 한국전자통신연구원 | Uri컨텐츠 식별을 이용한 웹 부하 공격 차단 장치 및 공격 차단 방법 |
-
2013
- 2013-08-05 KR KR1020130092783A patent/KR101482231B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110070289A (ko) * | 2009-12-18 | 2011-06-24 | 한국전자통신연구원 | Uri컨텐츠 식별을 이용한 웹 부하 공격 차단 장치 및 공격 차단 방법 |
KR100994076B1 (ko) * | 2010-04-12 | 2010-11-12 | 주식회사 나우콤 | 엔에이티 망용 웹서비스 정상사용자차단방지시스템 및 그의 제어방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101578473B1 (ko) | 온-디맨드 어플라이언스를 이용한 리얼-타임 네트워크 모니터링 및 가입자 식별 | |
US9634957B2 (en) | Systems and methods for reducing server resources associated with a client connection | |
Abdollahi et al. | An intrusion detection system on ping of death attacks in IoT networks | |
EP3085064B1 (en) | Countering security threats with domain name system | |
JP5325335B2 (ja) | フィルタリング方法、システムおよびネットワーク機器 | |
US20180375871A1 (en) | Third party program integrity and integration control in web based applications | |
WO2017019419A1 (en) | Methods and systems for preventing advertisements from being delivered to untrustworthy client devices | |
US20140304817A1 (en) | APPARATUS AND METHOD FOR DETECTING SLOW READ DoS ATTACK | |
US11601518B1 (en) | Managed exit nodes and third party proxies | |
US10171446B1 (en) | Method and apparatus for limiting traffic rate to an origin server | |
US9705762B2 (en) | Systems and methods for detecting device identity at a proxy background | |
Arunmozhi et al. | A flow monitoring scheme to defend reduction-of-quality (RoQ) attacks in mobile ad-hoc networks | |
Hu et al. | Checking certificate revocation efficiently using certificate revocation guard | |
KR101482231B1 (ko) | Uri에 기초하여 패킷 전송을 제어하는 방법 및 부하 분산 장치 | |
US20170237721A1 (en) | Deep packet inspection (dpi) at an endpoint | |
KR101266171B1 (ko) | 분산 서비스 거부 공격 방어 방법 및 그 장치 | |
CN108833559B (zh) | 一种视频数据的缓存与分发的方法及装置 | |
Szabó et al. | Network enhancement of web rendering time | |
KR20140102399A (ko) | 비정상 세션 탐지 방법 및 장치 | |
de Castro et al. | Typhoid adware | |
Tumarkin | Content Delivery Technologies: A View from ChinaCache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180102 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190107 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200122 Year of fee payment: 6 |