KR102363757B1 - Ip 주소 비교 방법 및 장치 - Google Patents
Ip 주소 비교 방법 및 장치 Download PDFInfo
- Publication number
- KR102363757B1 KR102363757B1 KR1020200165762A KR20200165762A KR102363757B1 KR 102363757 B1 KR102363757 B1 KR 102363757B1 KR 1020200165762 A KR1020200165762 A KR 1020200165762A KR 20200165762 A KR20200165762 A KR 20200165762A KR 102363757 B1 KR102363757 B1 KR 102363757B1
- Authority
- KR
- South Korea
- Prior art keywords
- array
- address
- index
- list
- stored
- Prior art date
Links
Images
Classifications
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 IP 주소 비교 방법 및 장치에 관한 것으로, 본 발명에 따른 방법은 미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하는 단계; 보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하는 단계 - IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 인덱스로 하여 대응하는 IP 리스트에 저장하고, IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가짐 - ; 및 상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성하는 단계 - 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가짐 - ; 를 포함한다. 본 발명에 의하면 기존의 IP 주소 비교 방법보다 빠른 IP 주소 탐색이 가능한 장점이 있다.
Description
본 발명은 IP 주소 비교 방법 및 장치에 관한 것이다.
웹 방화벽(Web Application Firewall)이나 시큐어 웹 게이트웨이(Secure Web Gateway)와 같은 보안 제품에서는 IP(Internet Protocol) 주소를 기준으로 규칙(Rule)을 설정할 수 있다. 입력된 IP 주소를 저장된 규칙 속에 있는 IP 주소들과 비교를 하여 매칭을 한다.
위와 같은 보안 제품에서는 패킷이 전송되어 들어오면 해당 패킷의 내용을 분석하여 현재 보안 제품에 적용되어 있는 규칙들 중에서 매칭되는 항목이 있다면, 해당 패킷을 차단하거나 보내주거나 등의 조치를 취할 수 있다.
보안 제품에 적용되어 있는 규칙들 중에는 IP 주소들도 저장하여 관리할 수 있다. 가령 “패킷이 들어오면 이 패킷의 출발지 IP 주소가 저장되어 있는 규칙들중에 해당되는 IP와 같다면 차단한다”라는 규칙이 성립될 수 있다.
이와같이 저장되어 있는 IP 주소들 중에서 원하는 IP 주소를 찾기위한 방법으로 순차적 비교 방식과 이진 겁색을 통한 방법이 있다.
도 1은 순차적 비교 방식에 의한 IP 주소 검색 방법을 설명하기 위한 도면이다.
도 1을 참고하면, "123.34.33.18" 이라는 IP 주소를 IP 리스트에서 하나씩 순차적으로 비교하면서 5번째에서 찾아서 Loop문을 빠져나오게 된다. 이와 같이 순차적 비교 방식은 입력된 IP 주소를 IP 리스트에서 매번 첫 번째부터 하나씩 비교를 해야 하므로, 입력되는 IP 주소가 많고 IP 리스트의 비교대상 IP 주소가 많을수록 최악의 비교 성능이 나오게 된다.
도 2는 이진 검색을 통한 IP 주소 검색 방법을 설명하기 위한 도면이다.
도 2를 참고하면, 비교대상 IP "123.34.33.18"를 오름차순으로 정렬된 IP 리스트의 중간에 위치한 IP 주소 "114.23.222.31"과 비교하고, 비교대상 IP가 더 크면 우측으로 이동하여 우측에서 중간에 있는 IP 주소 "123.34.33.18"가 비교하여 찾는 방식이다. 이와 같이 이진 검색을 통해 찾고자 하는 IP를 검색하는 방법은 순차 검색 방식 보다 빠른 성능을 보장해준다.
그래도 대량의 네트워크 트래픽이 발생하는 환경에서 패킷을 처리하는 보안제품의 특성상 더 빠른 IP 검색 방식을 요구한다. 보안 제품의 기본이 되는 IP 검색은 패킷의 최초 입력 단계에서 IP가 적용되는 각 규칙들을 검색 후에, 다음 단계인 패킷의 페이로드에 해당하는 검증이 진행된다. 그러므로 무엇보다 빠른 검색 성능을 필요로 한다. 보안 제품의 프록시 패킷 처리 중에 패킷의 출발지 IP와 목적지 IP에 대한 보안 규칙 비교가 불가피 하므로, 즉 모든 규칙들에 기본으로 IP에 대한 검색이 필요하고 이에 따른 제품의 성능은 절대적으로 규칙에 대한 검색 알고리즘에 의해 좌우된다.
따라서 본 발명이 해결하고자 하는 기술적 과제는 IP 주소 비교 방법 및 장치를 제공하는 것이다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 IP 주소 비교 방법은 미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하는 단계; 보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하는 단계 - IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 인덱스로 하여 대응하는 IP 리스트에 저장하고, IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가짐 - ; 및 상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성하는 단계 - 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가짐 - ; 를 포함한다.
상기 인덱스 배열의 각 배열 요소는 대응하는 참조 배열의 메모리에서 위치에 대응하는 포인터값이 저장되고, 상기 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소를 정수형으로 변환한 값의 메모리에서 위치를 나타내는 포인터값이 배열 요소에 각각 저장된다.
상기 IP 리스트는 IP 주소를 정수형으로 변환한 값이 오름차순으로 정렬하여 저장될 수 있다.
상기 인덱스 배열의 각 배열 요소에는 대응하는 IP 리스트의 첫 번째 IP 주소에 대응하는 포인터 값이 저장될 수 있다.
상기 방법은, 비교 대상 IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 구하는 단계; 및 상기 비교 대상 IP 주소에 대해 구해진 나머지 값에 대응하는 참조 배열에서 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 단계; 를 더 포함할 수 있다.
상기 IP 주소를 탐색하는 단계는, 상기 비교 대상 IP 주소에 대해 구해진 나머지 값을 인덱스로 상기 인덱스 배열에서 대응하는 참조 배열의 포인터 값을 구하는 단계; 및 상기 참조 배열의 포인터 값을 이용하여 대응하는 참조 배열에 접근하여 이진 검색으로 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 단계; 를 포함할 수 있다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 문자열 탐색 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능한 기록 매체를 포함할 수 있다.
상기한 기술적 과제를 해결하기 위한 본 발명에 따른 IP 주소 비교 장치는, 메모리; 및 제어부를 포함한다.
상기 제어부는, 미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하고, 보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하고, 상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성할 수 있다.
본 발명에 의하면 기존의 IP 주소 비교 방법보다 빠른 IP 주소 탐색이 가능한 장점이 있다.
도 1은 순차적 비교 방식에 의한 IP 주소 검색 방법을 설명하기 위한 도면이다.
도 2는 이진 검색을 통한 IP 주소 검색 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 IP 주소 비교 장치의 구성도이다.
도 4는 본 발명의 일 실시예에 따른 IP 주소 저장 방식을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 인덱스 배열과 IP 리스트의 관계를 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 인덱스 배열, IP 리스트 및 참조 배열의 관계를 예시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 IP 주소 검색 방법을 설명하기 위한 흐름도이다.
도 2는 이진 검색을 통한 IP 주소 검색 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 IP 주소 비교 장치의 구성도이다.
도 4는 본 발명의 일 실시예에 따른 IP 주소 저장 방식을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 인덱스 배열과 IP 리스트의 관계를 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 인덱스 배열, IP 리스트 및 참조 배열의 관계를 예시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 IP 주소 검색 방법을 설명하기 위한 흐름도이다.
그러면 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
도 3은 본 발명의 일 실시예에 따른 IP 주소 비교 장치의 구성도이다.
도 3을 참고하면, 본 발명의 일 실시예에 따른 IP 주소 비교 장치는 메모리(100)와 제어부(200)를 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른 IP 주소 저장 방식을 설명하기 위한 도면이다.
도 3 및 도 4를 참고하면, 먼저 제어부(200)는 미리 설정된 배열 길이(INDEX_MAX)를 가지는 인덱스 배열을 생성할 수 있다(S410). 인덱스 배열 길이를 더 길게 할당하면, 더 빠른 검색이 가능하지만, 메모리 할당도 그만큼 되므로 소프트웨어와 하드웨어의 메모리 사항을 파악하여 적절한 인덴스 배열 길이를 설정하면 된다. 인덱스 배열 길이는 해당 인덱스의 배열 요소의 개수이다. 각 배열 요소는 0, 1, 2, …, INDEX_MAX-1 까지 순차적으로 인덱스를 가진다.
도 5는 본 발명의 일 실시예에 따른 인덱스 배열과 IP 리스트의 관계를 예시한 도면이다.
도 5에서는 배열 길이가 '256'으로 설정된 인덱스 배열에서 각 배열 요소의 인덱스가 0, 1, 2, …, 255로 부여된 것을 예시한 것이다.
다시 도 4를 참고하면, 제어부(200)는 보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장할 수 있다(S420).
여기서 IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가진다. 예컨대 도 5에 예시한 것과 같이 배열 요소 Arr(2), Arr(3), Arr(127), Arr(129)는 2번 IP 리스트, 3번 IP 리스트, 127번 IP 리스트, 129번 IP 리스트에 각각 대응한다.
단계(S420)를 보다 자세히 살펴보면, 제어부(200)는 보안 규칙에 포함된 복수의 IP 주소를 로딩하여(S421), 보안 규칙에 포함된 IP 주소의 개수를 카운트할 수 있다(S422).
그리고 제어부(200)는 보안 규칙에 포함된 모든 IP 주소를 IP 리스트에 저장할 때까지(S423-No), 즉 단계(S422)에서 카운트된 IP 개수만큼 단계(S424) 내지 단계(S426)를 반복할 수 있다.
제어부(200)는 보안 규칙에서 포함된 IP 주소를 정수형으로 변환한다(S424). 그리고 제어부(200)는 정수형으로 변환된 IP 주소를 인덱스 배열 길이로 나눈 나머지 값을 구한다(S425). 예를 들어 IP 주소 '211.36.93.129'를 정수형으로 변환하면 3542375809이다. 그리고 3542375809를 인덱스 배열 길이 '256'으로 나누면 나머지 값이 '129'가 된다.
다음으로 제어부(200)는 단계(S434)에서 해당 IP 주소에 대해 구해진 나머지 값을 인덱스로 하여 IP 리스트에 저장할 수 있다(S426). 단계(S426)에서 IP 주소를 IP 리스트에 저장할 때 먼저 저장된 다른 IP 주소가 있으면, 오름차순으로 정렬하여 저장한다. 예컨대 IP 주소 '211.36.93.129'가 먼저 129를 인덱스로 하는 129번 IP 리스트에 저장되고 나서, IP 주소 '10.23.29.129'가 129번 IP 리스트에 추가로 저장되게 되면, 오름차순으로 정렬하여 '10.23.29.129'가 '211.36.93.129' 앞에 위치하게 오름차순으로 정렬하여 저장한다.
한편 보안 규칙에 포함된 모든 IP 주소를 IP 리스트에 저장하였으면(S423-No), 제어부(200)는 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성한다(S430).
도 6은 본 발명의 일 실시예에 따른 인덱스 배열, IP 리스트 및 참조 배열의 관계를 예시한 도면이다.
도 6에서는 설명의 편의 상 2번 IP 리스트(Arr(2)에 대응), 3번 IP 리스트(Arr(3)에 대응), 127번 IP 리스트(Arr(127)에 대응), 129번 IP 리스트( Arr(129)에 대응)에 대응하는 참조 배열 Arr_2, Arr_3, Arr_127, Arr_129 를 나타내었다. 참조 배열 Arr_2, Arr_3, Arr_127, Arr_129은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가진다.
예컨대 참조 배열 Arr_3은 3번 IP 리스트가 3개의 IP 주소를 가지므로, 3개의 배열 요소를 가지게 생성될 수 있다. 마찬가지로 각 IP 리스트에 대응하는 참조 배열을 생성할 수 있다.
인덱스 배열의 각 배열 요소는 대응하는 참조 배열의 메모리에서 위치에 대응하는 포인터값이 저장된다. 한편 실시예에 따라서 인덱스 배열의 각 배열 요소에는 대응하는 IP 리스트의 첫 번째 IP 주소에 대응하는 포인터 값이 저장될 수도 있다. 이때 IP 리스트의 첫 번째 IP 주소에 대응하는 포인터 값이 해당하는 참조 배열의 위치를 나타낸다. 그리고 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소를 정수형으로 변환한 값의 메모리에서 위치를 나타내는 포인터값이 배열 요소에 각각 저장된다.
이하에서는 위에서 설명한 방법으로 구조적으로 메모리(100)에 저장된 IP 주소를 검색하는 방법에 대해서 설명한다.
도 7은 본 발명의 일 실시예에 따른 IP 주소 검색 방법을 설명하기 위한 흐름도이다.
도 7을 참고하면, 먼저 제어부(200)는 비교 대상 IP 주소가 입력되면(S710), 입력된 비교 대상 IP 주소를 정수형으로 변환한 값을 구하고(S720), IP 주소를 정수형으로 변환한 값을 인덱스 배열의 배열 길이로 나눈 나머지 값을 구할 수 있다(S730).
이후 제어부(200)는 비교 대상 IP 주소에 대해 구해진 나머지 값에 대응하는 참조 배열에서 비교 대상 IP 주소와 동일한 IP 주소를 탐색할 수 있다(S740).
단계(S740)를 보다 자세히 설명하면, 먼저 제어부(200)는 비교 대상 IP 주소에 대해 구해진 나머지 값을 인덱스로 인덱스 배열에서 대응하는 참조 배열의 포인터 값을 구하고, 이를 이용하여 대응하는 참조 배열에 접근할 수 있다(S741).
다음으로 제어부(200)는 참조 배열을 통해 이진 검색으로 비교 대상 IP 주소와 동일한 IP 주소를 탐색할 수 있다(S742). 예컨대 해당 참조 배열의 중간 배열 요소에 저장된 포인터 값에 의해 참조되는 IP 주소(정수형)보다 비교 대상 IP 주소가 작으면, 중간 배열 요소를 기준으로 왼쪽에 위치한 배열 요소들 중 중간에 위치한 배열 요소로 이동하여 비교하는 방식으로 반복하면서 동일한 IP 주소를 탐색하게 된다. 한편 배열 요소가 짝수개 있는 경우에는 중간의 2개 배열 요소 중에서 미리 정해진 기준에 따라 왼쪽 또는 오른쪽 배열 요소를 선택하여 비교하면 된다.
단계(S740)에서 일치하는 IP 주소를 찾으면(S742-Yes), 그에 따른 조치를 취한다(S750). 한편 IP 주소를 찾지 못하면(S742-No), 일치하는 IP 주소가 검색되지 않았음을 리턴하고 종료한다.
표 1은 기존 이진 검색만을 통한 IP 검색 방식과 본 발명에 따른 IP 주소 검색 방법을 비교한 성능표이다.
IP 개수 | 5,975 | |||
비교 횟수 | 1,000,000 | |||
ipMap 256 | ipMap 4096 | ipMap 65536 | ||
기본 메모리 | 20,536 | 327,736 | 5,242,936 | |
위치 | 단순 이진 검색 | ipMap 256 | ipMap 4096 | ipMap 65536 |
leftest | 0.032829 sec | 0.014501 sec | 0.008290 sec | 0.006219 sec |
middle | 0.003825 sec | 0.011469 sec | 0.011618 sec | 0.006228 sec |
Rightest | 0.036022 sec | 0.017382 sec | 0.009433 sec | 0.006256 sec |
표 1에서 IP 개수는 보안 규칙에 의해 총 로드된 IP의 개수가 5,975개임을 나타낸다. 비교 횟수는 하나의 IP를 가지고, 비교 횟수 만큼 검색을 한 것을 나타낸다. 한번만 검색해서는 검색 속도가 워낙 작아서 직관적인 비교 속도 시간을 추출 하기가 어려워서 1,000,000번씩 검색을 수행하였다. 즉 1,000,000번의 검색 시간 총합을 통해 비교 속도 시간을 추출하였다.
ipMap 256, ipMap 4096, ipMap 65536는 배열 인덱스 길이가 256, 4096, 65536인 인덱스 배열을 사용한 경우를 나타낸 것이다.
기본 메모리 항목은 ipMap의 배열 길이에 의해, 적재된 IP 주소들의 메모리 사용량을 나타낸다.
위치 leftest는 적재된 하나의 IP 주소가 ipMap 배열의 맨 왼쪽, 첫번째에 위치해 있을 경우의 검색 속도 시간(비교횟수의 누적 시간)을 나타낸 것이다.
위치 middle은 적재된 하나의 IP 주소가 ipMap 배열의 정중앙에 위 치해 있을 경우의 검색 속도 시간(비교횟수의 누적 시간)을 나타낸 것이다.
위치 Rightest은 적재된 하나의 IP 주소가 ipMap 배열의 맨 오른쪽, 끝에 위치해 있을 경우의 검색 속도 시간(비교횟수의 누적 시간)을 나타낸 것이다.
단순 이진 검색의 경우 middle의 속도가 빠른 이유는, 단순 배열에 있는 IP의 값에 바로 접근할 수 있으므로 빠르기 때문이다. ipMap을 사용할 경우에는 참조 배열을 통해 IP 주소에 접근하므로 단순이진검색과 같이 바로 접근 하는 것보다는 느리다. 하지만 결과적으로 본 발명에 따른 ipMap을 사용할 경우 검색이 빠를수 밖에 없는 이유는, 대부분 입력되어 들어오는 IP 주소가 ipMap에 없는 경우가 많으므로, Leftest, rightest까지 검색하는 경우가 월등히 많다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
Claims (11)
- 미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하는 단계;
보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하는 단계 - IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 인덱스로 하여 대응하는 IP 리스트에 저장하고, IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가짐 - ; 및
상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성하는 단계 - 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가짐 - ;
를 포함하고,
상기 인덱스 배열의 각 배열 요소는 대응하는 참조 배열의 메모리에서 위치에 대응하는 포인터값이 저장되고, 상기 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소를 정수형으로 변환한 값의 메모리에서 위치를 나타내는 포인터값이 배열 요소에 각각 저장되는 IP 주소 비교 방법.
- 제 1 항에서,
상기 IP 리스트는 IP 주소를 정수형으로 변환한 값이 오름차순으로 정렬하여 저장되는 IP 주소 비교 방법.
- 제 1 항에서,
상기 인덱스 배열의 각 배열 요소에는 대응하는 IP 리스트의 첫 번째 IP 주소에 대응하는 포인터 값이 저장되는 IP 주소 비교 방법.
- 제 2 항 또는 제 3 항에서,
비교 대상 IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 구하는 단계; 및
상기 비교 대상 IP 주소에 대해 구해진 나머지 값에 대응하는 참조 배열에서 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 단계;
를 더 포함하는 IP 주소 비교 방법.
- 제 4 항에서,
상기 IP 주소를 탐색하는 단계는,
상기 비교 대상 IP 주소에 대해 구해진 나머지 값을 인덱스로 상기 인덱스 배열에서 대응하는 참조 배열의 포인터 값을 구하는 단계; 및
상기 참조 배열의 포인터 값을 이용하여 대응하는 참조 배열에 접근하여 이진 검색으로 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 단계;
를 포함하는 IP 주소 비교 방법.
- IP 주소 비교 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능한 기록 매체에 있어서,
상기 프로그램은, 미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하는 명령어 셋트;
보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하는 명령어 셋트 - IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 인덱스로 하여 대응하는 IP 리스트에 저장하고, IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가짐 - ; 및
상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성하는 명령어 셋트 - 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가짐 - ;
를 포함하고,
상기 인덱스 배열의 각 배열 요소는 대응하는 참조 배열의 메모리에서 위치에 대응하는 포인터값이 저장되고, 상기 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소를 정수형으로 변환한 값의 메모리에서 위치를 나타내는 포인터값이 배열 요소에 각각 저장되는 컴퓨터 판독 가능한 기록 매체.
- 메모리; 및
제어부
를 포함하고,
상기 제어부는,
미리 설정된 배열 길이를 가지는 인덱스 배열을 생성하고, 보안 규칙에 포함된 복수의 IP 주소를 정수형으로 변환한 값을 복수의 IP 리스트 중에서 대응하는 IP 리스트에 저장하며 - IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 인덱스로 하여 대응하는 IP 리스트에 저장하고, IP 리스트는 대응하는 인덱스 배열의 배열 요소와 동일한 인덱스를 가짐 - , 상기 복수의 IP 리스트에 각각 대응하는 복수의 참조 배열을 생성하며 - 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소 개수에 대응하는 배열 길이를 가짐 - ,
상기 인덱스 배열의 각 배열 요소는 대응하는 참조 배열의 메모리에서 위치에 대응하는 포인터값이 저장되고, 상기 참조 배열은 대응하는 IP 리스트에 포함된 IP 주소를 정수형으로 변환한 값의 메모리에서 위치를 나타내는 포인터값이 배열 요소에 각각 저장되는 IP 주소 비교 장치.
- 제 7 항에서,
상기 IP 리스트는 IP 주소를 정수형으로 변환한 값이 오름차순으로 정렬하여 저장되는 IP 주소 비교 장치.
- 제 7 항에서,
상기 인덱스 배열의 각 배열 요소에는 대응하는 IP 리스트의 첫 번째 IP 주소에 대응하는 포인터 값이 저장되는 IP 주소 비교 장치.
- 제 8 항 또는 제 9 항에서,
상기 제어부는,
비교 대상 IP 주소를 정수형으로 변환한 값을 상기 인덱스 배열의 배열 길이로 나눈 나머지 값을 구하고, 상기 비교 대상 IP 주소에 대해 구해진 나머지 값에 대응하는 참조 배열에서 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 IP 주소 비교 장치.
- 제 10 항에서,
상기 제어부는,
상기 비교 대상 IP 주소에 대해 구해진 나머지 값을 인덱스로 상기 인덱스 배열에서 대응하는 참조 배열의 포인터 값을 구하고, 상기 참조 배열의 포인터 값을 이용하여 대응하는 참조 배열에 접근하여 이진 검색으로 상기 비교 대상 IP 주소와 동일한 IP 주소를 탐색하는 IP 주소 비교 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200165762A KR102363757B1 (ko) | 2020-12-01 | 2020-12-01 | Ip 주소 비교 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200165762A KR102363757B1 (ko) | 2020-12-01 | 2020-12-01 | Ip 주소 비교 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102363757B1 true KR102363757B1 (ko) | 2022-02-16 |
Family
ID=80474781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200165762A KR102363757B1 (ko) | 2020-12-01 | 2020-12-01 | Ip 주소 비교 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102363757B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230142957A (ko) * | 2022-04-04 | 2023-10-11 | 주식회사 쿼드마이너 | 고속 패킷 검색 방법 및 장치 |
KR102718356B1 (ko) * | 2023-12-13 | 2024-10-16 | 브레인즈컴퍼니 주식회사 | 유해 ip 주소 여부 판단 방법 및 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010056948A (ko) * | 1999-12-17 | 2001-07-04 | 이계철 | 이진표기 문자열을 이용한 데이터베이스 상에서의 인터넷프로토콜(ip)주소정보 관리방법 |
KR20050036457A (ko) * | 2003-10-16 | 2005-04-20 | 한국전자통신연구원 | 트라이를 이용한 인터넷 프로토콜 주소 검색 방법 |
KR20190076235A (ko) * | 2017-12-22 | 2019-07-02 | 엔시큐어 주식회사 | 멀티 ip 클래스 처리 장치 및 방법 |
-
2020
- 2020-12-01 KR KR1020200165762A patent/KR102363757B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010056948A (ko) * | 1999-12-17 | 2001-07-04 | 이계철 | 이진표기 문자열을 이용한 데이터베이스 상에서의 인터넷프로토콜(ip)주소정보 관리방법 |
KR20050036457A (ko) * | 2003-10-16 | 2005-04-20 | 한국전자통신연구원 | 트라이를 이용한 인터넷 프로토콜 주소 검색 방법 |
KR20190076235A (ko) * | 2017-12-22 | 2019-07-02 | 엔시큐어 주식회사 | 멀티 ip 클래스 처리 장치 및 방법 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230142957A (ko) * | 2022-04-04 | 2023-10-11 | 주식회사 쿼드마이너 | 고속 패킷 검색 방법 및 장치 |
WO2023195697A1 (ko) * | 2022-04-04 | 2023-10-12 | (주)쿼드마이너 | 고속 패킷 검색 방법 및 장치 |
KR102655234B1 (ko) * | 2022-04-04 | 2024-04-05 | 주식회사 쿼드마이너 | 고속 패킷 검색 방법 및 장치 |
KR102718356B1 (ko) * | 2023-12-13 | 2024-10-16 | 브레인즈컴퍼니 주식회사 | 유해 ip 주소 여부 판단 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jepsen et al. | Fast string searching on pisa | |
US8867395B2 (en) | Accelerating data packet parsing | |
US7650429B2 (en) | Preventing aliasing of compressed keys across multiple hash tables | |
US10817491B2 (en) | Efficient and accurate lookups of data by a stream processor using a hash table | |
US20130182713A1 (en) | State management using a large hash table | |
US20120195208A1 (en) | Programmable multifield parser packet | |
US20110295894A1 (en) | System and method for matching pattern | |
US10635719B2 (en) | Pattern matching machine with mapping table | |
WO2021222224A1 (en) | Systems for providing an lpm implementation for a programmable data plane through a distributed algorithm | |
US20070162580A1 (en) | Method and system for creating an overlay structure for management information bases | |
KR102363757B1 (ko) | Ip 주소 비교 방법 및 장치 | |
US11258707B1 (en) | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation | |
US11544069B2 (en) | Universal pointers for data exchange in a computer system having independent processors | |
US10897483B2 (en) | Intrusion detection system for automated determination of IP addresses | |
CN112260951A (zh) | 期待连接处理方法、装置、可读存储介质和电子设备 | |
US10296363B2 (en) | Tuning a virtual machine startup parameter | |
US11038798B2 (en) | Storing data in association with a key within a hash table and retrieving the data from the hash table using the key | |
KR20220067961A (ko) | 프로세싱-인-메모리 및 프로세싱-인-메모리를 이용한 인스트럭션 출력 방법 | |
KR102128581B1 (ko) | 다중 문자열 패턴 탐색 방법 및 장치 | |
US9201809B2 (en) | Accidental shared volume erasure prevention | |
CN116600031B (zh) | 报文处理方法、装置、设备及存储介质 | |
Pan et al. | Nap: Programming data planes with approximate data structures | |
CN114143083B (zh) | 黑名单策略匹配方法、装置、电子设备及存储介质 | |
WO2024205438A1 (en) | Chip, method and device for modulo multiplication | |
KR102229554B1 (ko) | 해시 키 생성 방법 및 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |