KR100965552B1 - 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 - Google Patents
영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 Download PDFInfo
- Publication number
- KR100965552B1 KR100965552B1 KR1020080077157A KR20080077157A KR100965552B1 KR 100965552 B1 KR100965552 B1 KR 100965552B1 KR 1020080077157 A KR1020080077157 A KR 1020080077157A KR 20080077157 A KR20080077157 A KR 20080077157A KR 100965552 B1 KR100965552 B1 KR 100965552B1
- Authority
- KR
- South Korea
- Prior art keywords
- field
- bmr
- packet
- packet classification
- rule
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 패킷 분류 장치에서 패킷 분류 테이블을 영역분할 방식을 이용하여 트리 구조로 생성하는 방법에 관한 것으로, (a) 영역을 분할할 필드를 선택하는 단계; (b) 선택된 필드의 필드값을 분류를 필요로 하는 룰(Rule)로부터 추출하는 단계; (c) 상기 필드값의 길이가 상기 필드값이 가질 수 있는 최장길이가 아닌 경우 상기 필드값의 길이를 상기 최장길이까지 확장시키는 인코딩 단계; (d) 인코딩된 상기 필드값을 경계점으로 하여 상기 선택된 필드를 분할함으로써 상기 분류를 필요로 하는 룰을 영역별로 분류하는 단계; 및 (e) 각각의 상기 영역에 포함되는 룰의 수가 빈스를 초과하는지를 판단하여, 빈스를 초과하는 영역의 경우 자식 노드를 생성하기 위한 다음 필드를 선택하고 상기 (b) 단계로 돌아가는 단계를 포함하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법을 제공한다. 본 발명에 의하면, 메모리 요구량을 줄이면서 패킷 처리속도를 향상시킬 수 있는 효과가 있다.
패킷 분류, 영역 분할, 커팅, 트리
Description
본 발명은 영역분할(Range Cutting)을 이용한 패킷 분류 테이블 생성 방법 및 패킷 분류 방법과 장치에 관한 것이다. 더욱 상세하게는, 룰(Rule)들의 분포 특성을 고려하여 영역을 분할하여 트리 구조의 패킷 분류 테이블을 생성하는 방법과 이를 이용한 패킷 분류 방법 및 장치에 관한 것이다.
인터넷의 급속한 성장과 더불어 인터넷 서비스의 질을 향상시키기 위하여 라우터에서의 패킷 포워딩이 매우 중요한 작업이 되고 있다. 패킷 포워딩이란 라우터 내로 들어온 패킷의 헤더 정보를 이용하여 최종 목적지 네트웍을 향해 패킷을 내 보내어 주는 작업을 말한다. 인터넷에서의 다양한 서비스의 요구는 패킷 처리를 더욱 어렵게 만들고 있는데, 예를 들어 오디오나 비디오 스트리밍과 같이 전달 속도에 민감한 응용 프로그램의 등장은 품질 보증을 요구하며, 방화벽(firewall protection)이나 load balancing, 웹 스위칭, Intrusion Detection and Security(IDS) 등의 다양한 서비스가 요구되고 있다. 이러한 서비스들을 제공해주 기 위하여 라우터에서는 패킷 분류(Packet Classification)가 선행되어야 한다.
패킷 포워딩에 있어 패킷들을 입력되는 링크 속도에 맞춰 처리하여 내보내 주어야 하는데, 패킷 분류는 단순히 목적지 주소만 확인하여 처리하는 IP 주소 검색과는 달리, 패킷 헤더 정보의 모든 필드를 검사하여야 하므로 패킷 처리 속도에 더 민감한 작업이라 할 수 있다. 따라서 패킷 분류를 효율적으로 수행하기 위한 여러가지 패킷 분류 구조에 관한 연구가 활발하게 수행되어 오고 있다. 패킷 분류 구조들의 성능 평가에 있어 가장 중요한 기준은 패킷 처리 속도이고, 패킷 처리 속도는 메모리 접근 횟수에 의하여 결정된다. 그 다음으로 중요한 기준은 패킷 분류 테이블을 저장하기 위해 요구되는 메모리의 크기이다. 요구되는 메모리의 크기는 패킷 분류 테이블이 갖는 데이터 구조에 의존한다.
기존 패킷 분류와 관련된 다양한 연구들이 있었고, 그 중 커팅(Cutting)을 이용한 패킷 분류 방법은 룰 셋(Rule Set)의 각 필드를 영역으로 표현하고, 영역을 줄여가며 패킷이 속하는 가장 구체적인 영역을 찾는 방법이다. 즉, 먼저, 매 단계마다 선택된 필드를 적당한 간격으로 나누고 각각의 영역 내로 분류되는 룰들을 최종 영역의 엔트리(Entry)에 저장하는 식으로 트리 구조의 패킷 분류 테이블을 구성한다. 이후, 패킷이 입력되면 트리 구조에 따라 검색 영역을 줄여가면서 입력된 패킷의 헤더 정보와 일치하는 영역을 검색한 후 최종 영역에 저장된 룰들 중에서 가장 순위 높은 룰을 BMR(Best Matching Rule)로 결정하게 된다.
이러한 커팅을 이용한 패킷 분류 방법으로 대표적인 것으로는 HiCuts와 HyperCuts 등이 있다.
종래의 커팅을 이용한 패킷 분류 방법을 좀 더 상세히 설명하기 위해, [표 1]의 룰 셋(Rule Set)을 예로 들어 설명한다.
[표 1]의 룰 셋을 영역으로 표시하면 [표 2]와 같다.
여기서, F1(필드 1)과 F2(필드 2)는 근원지 주소 프리픽스와 목적지 주소 프리픽스를 의미하고, F3(필드 3)와 F4(필드 4)는 근원지 포트번호와 목적지 포트번호를 의미하며, F5(필드 5)는 프로토콜 타입(Protocol Type)을, Action은 룰에 따른 패킷 처리 방법을 의미한다.
도 1은 종래의 커팅을 이용한 패킷 분류 방법 중 HiCuts를 설명하기 위한 예시 도면이다.
HiCuts은 매 분할 과정에서 영역을 분할할 필드와 분할할 영역을 결정하여 필드를 분할하고 분할된 영역을 바탕으로 판별 트리(Decision Tree)를 구성하게 된다. 판별 트리의 리프노드(Leaf Node)에는 미리 정해진 수 이하의 룰을 가지게 되는데, 리프노드에 포함될 미리 정해진 룰의 개수를 빈스(Binth)라고 한다. 만약 분할된 영역에 해당하는 룰의 개수가 빈스를 초과하면, 그 영역은 다른 필드를 이용하여 다시 분할을 하게 된다.
도 1의 (A)는 [표 1]의 룰 셋을 토대로 HiCuts을 실행하는 과정을 영역으로 표현한 도면이고, (B)는 분할된 각 영역을 트리의 각 노드로 하여 판별트리를 구성한 도면이다.
도 1의 (A) 및 (B)를 참조하면, 필드 1을 4개의 영역으로 분할하면, 각각 [0, 3], [4, 7], [8, 11], [12, 15]로 나누어지고, 각각의 영역에는, 도 1의 (A)에서 보는 바와 같이, 4개, 5개, 3개, 3개의 룰이 포함되는데, 이를 정리하면 아래와 같다.
(1) R3, R4, R7, R8 ∈ [0, 3]
(2) R1, R2, R3, R6, R8 ∈ [4, 7]
(3) R3, R5, R8 ∈ [8, 11]
(4) R3, R5, R8 ∈ [9, 12]
빈스를 2라고 가정하였을 때, 필드 1을 이용하여 분할된 4개의 영역은 모두 룰의 개수가 빈스를 초과하므로, 다른 필드를 사용하여 영역을 분할하게 되는데, 도 1에서는 필드 2, 필드 4, 필드 3, 필드 5 순으로 각 필드를 각각 4개, 2개, 2개의 영역으로 분할하는 과정을 도시하였다.
먼저 필드 2의 영역을 분할하면, (F1[0,3], F2[4,7])과 (F1[4,7], F2[4,7]) 두 영역은 각각 (R4, R7, R8)과 (R1, R2, R6, R8)을 포함하여, 여전히 빈스를 초과하므로, 이 두 영역은 필드 4를 이용하여 다시 분할하게 된다.
필드 4의 2개의 영역으로 분할한 결과, (F1[0,3], F2[4,7], F3[0, 127])과 (F1[4,7], F2[4,7], F3[0,127]) 두 영역은 여전히 빈스를 초과하는 룰을 포함한다.
따라서 필드 3과 필드 5를 이용하여 영역을 분할하는 과정을 계속하게 되는데, 그 결과 (F1[0,3], F2[4,7], F3[0, 127], F4[0,127], F5[0])에는 (R4, R7, R8)이 포함되어 룰의 개수가 빈스를 초과하게 된다. 그러나, 영역을 분할할 필드를 모두 사용하였으므로 영역분할 과정을 종료하게 된다.
이상의 분할된 영역을 토대로 판별트리를 구성한 것이 도 1의 (B)이다.
도 1의 (B)에서 보는 바와 같이, 판별트리의 레벨(Level)의 수는 6이 되는데, 그러함에도 빈스를 초과하는 룰들이 포함된 리프노드가 존재함을 알 수 있다.
이상의 HiCuts 방식에 의해 구성한 판별트리를 이용하여 각 필드의 정보가 (0111, 0110, 100, 23, UDP)인 패킷이 입력되었을 때의 검색과정을 설명하면, 먼저 필드 1의 필드값(근원지 주소 프리픽스)인 0111은 F1[4,7] 영역에 포함되므로 두 번째 가지를 따라 검색을 진행한다. 다음, 필드 2의 필드값(목적지 주소 프리픽스) 0110은 F2[4,7] 영역에 포함되므로, 두 번째 가지를 따라 진행한다.
다음, 필드 4의 필드값(목적지 포트번호) 23은 첫 번째 영역 F4[0,127]에 속하므로, 첫 번째 가지를 따라 검색을 진행하고, 필드 3의 필드값(근원지 포트번호) 100은 F3[0, 127]에 포함되므로 첫 번째 가지를 따라 검색을 진행하며, 필드 5의 필드값(프로토콜 타입)은 UDP로 0이므로 첫 번째 가지를 따라 진행을 하여 리프노드에 도달하게 된다.
도달된 리프노드에는 R2, R8 두 개의 룰이 존재하는데, 입력 패킷은 이 중 우선순위가 높은 R2와 매칭되므로, R8에 대해서는 비교 검색을 진행하지 않고 R2를 BMR(Best Matching Rule)로 결정하게 된다.
도 2는 종래의 커팅을 이용한 패킷 분류 방법 중 HyperCuts을 설명하기 위한 예시 도면으로, [표 1]의 룰 셋을 토대로 판별트리를 구성한 것이다.
HiCuts의 경우, 룰 셋의 분포에 따라 판별트리의 레벨 수가 커져 BMR의 검색을 위한 메모리 접근 횟수가 커질 수 있는 단점이 있다. HyperCuts은 이러한 단점을 해결하기 위해, 한번에 여러 필드의 영역을 동시에 검사하여 높이를 2로 제한하는 판별트리를 구성한다.
도 2를 참조하면, 필드 1, 필드 2, 필드 4, 필드 5를 각각 4개, 4개, 2개, 2개의 영역으로 분할한다고 하였을 때, 총 64개(4*4*2*2=64)의 영역으로 분할되고 트리의 레벨 수는 2가 된다.
이러한 HyperCuts 방법은 한번에 하나의 필드로 룰들을 분류해나가는 HiCuts과 달리 여러 필드를 동시에 사용하여 검색을 진행하므로 검색속도가 향상된다는 장점이 있다. 그러나 도 2에서 볼 수 있는 바와 같이, 룰을 갖지 않는 빈 엔트리의 수도 증가하게 되므로, 메모리의 낭비가 심해질 수 있다는 단점이 있다.
이상에서 설명한 바와 같이, HiCuts 방식은 한번에 한 필드만을 사용하여 룰들을 분류하므로 룰들의 분포에 따라서는 트리의 레벨 수가 증가할 수 있고 이에 따라 검색속도가 느려질 수 있다는 단점이 있다. 또한, HyperCuts 방식은 트리의 레벨 수를 제한하기 위해 동시에 여러 필드를 사용하여 룰들을 분류하므로 검색속도는 향상되나, 엔트리의 개수가 훨씬 늘어나는 단점이 있다.
이러한 단점들은 위 두 가지 방식이 모두 룰들의 분포 특성과는 상관없이 룰들을 일정한 간격으로 분류하기 때문이다. 즉, 룰들의 분포 특성을 고려하지 않기 때문에, 트리의 레벨 수가 증가한다거나 엔트리의 수가 많아지게 되는 것이다.
따라서 본 발명은 이러한 문제를 해결하기 위해, 룰들의 분포 특성을 고려하여 영역을 분할함으로써 엔트리 수를 증가시키지 않으면서도 검색속도를 향상시킬 수 있는 패킷 분류 기술을 제공하고자 한다.
이러한 목적을 달성하기 위해 본 발명은, 패킷 분류 장치에서 패킷 분류 테이블을 영역분할 방식을 이용하여 트리 구조로 생성하는 방법에 있어서, 패킷 분류 장치에서 패킷 분류 테이블을 영역분할 방식을 이용하여 트리 구조로 생성하는 방법에 있어서, (a) 영역을 분할할 필드를 선택하는 단계; (b) 선택된 필드의 필드값을 분류를 필요로 하는 룰(Rule)로부터 추출하는 단계; (c) 상기 필드값의 길이가 상기 필드값이 가질 수 있는 최장길이가 아닌 경우 상기 필드값의 길이를 상기 최장길이까지 확장시키는 인코딩 단계; (d) 인코딩된 상기 필드값을 경계점으로 하여 상기 선택된 필드를 분할함으로써 상기 분류를 필요로 하는 룰을 영역별로 분류하 는 단계; 및 (e) 각각의 상기 영역에 포함되는 룰의 수가 빈스를 초과하는지를 판단하여, 빈스를 초과하는 영역의 경우 자식 노드를 생성하기 위한 다음 필드를 선택하고 상기 (b) 단계로 돌아가는 단계를 포함하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법을 제공한다.
또한, 상기 패킷 분류 테이블 생성 방법에서 상기 (a) 단계는, (a1) 선택된 필드의 필드값의 길이가 기 설정된 기준값 이상인 룰만을 대상으로 상기 선택된 필드의 필드값을 이용하여 상기 (b) 단계 이후를 진행함으로써 메인 트리(Main Tree)를 생성하는 단계; 및 (a2) 상기 필드값이 길이가 상기 기준값 미만인 룰을 대상으로 영역을 분할할 다른 필드를 선택한 후 선택된 다른 필드의 필드값을 이용하여 상기 (b) 단계 이후를 진행함으로써 서브 트리(Sub Tree)를 생성하는 단계를 포함하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법을 제공한다.
또한, 본 발명은, 상기 메인 트리와 상기 서브 트리로 구성된 패킷 분류 테이블을 이용하여 패킷을 분류하는 방법으로서, (a) 입력 패킷의 필드값을 추출하여 상기 메인 트리를 계층적으로 검색하여 상기 메인 트리의 리프노드에 저장된 룰(Rule) 중 상기 입력 패킷과 일치하는 우선순위가 가장 높은 룰(이하, "메인 트리 BMR(Best Matching Rule)"이라 함)을 검색하는 단계; (b) 상기 메인 트리 BMR의 우선순위를 기 설정된 임계값과 비교하여 상기 메인 트리 BMR의 우선순위가 상기 임계값보다 높은 경우 상기 메인 트리 BMR을 상기 입력 패킷의 BMR로 결정하는 단계; 및 (c) 상기 메인 트리 BMR의 우선순위가 상기 임계값보다 낮은 경우, 상기 서 브 트리를 검색하여 상기 서브 트리의 리프노드에 저장된 룰 중 상기 입력 패킷과 일치하는 우선순위가 가장 높은 룰(이하, "서브 트리 BMR"이라 함)을 검색한 후, 상기 메인 트리 BMR과 상기 서브 트리 BMR을 비교하여 상기 입력 패킷의 BMR을 결정하는 단계를 포함하는 것을 특징으로 하는 패킷 분류 방법을 제공한다.
또한, 본 발명은, 영역분할 방식을 이용하여 트리 구조로 생성된 패킷 분류 테이블을 저장하는 메모리; 및 상기 패킷 분류 테이블을 상기 트리 구조를 따라 계층적으로 검색하여 입력 패킷의 BMR(Best Matchiong Rule)을 결정하는 패킷 분류 제어부를 포함하되, 상기 트리 구조는, 영역을 분할할 필드를 선택하고 선택된 필드의 필드값의 길이를 상기 필드값이 가지는 최장길이로 일치시킨 후 길이가 일치된 상기 필드값을 경계점으로 하여 상기 선택된 필드의 영역을 분할하는 방식으로 룰(Rule)들을 영역별로 분류하는 과정을, 분할된 각각의 영역에 속하는 룰의 개수가 빈스보다 이하가 될 때까지 반복함으로써 생성된 것을 특징으로 하는 패킷 분류 장치를 제공한다.
또한, 상기 패킷 분류 장치에 있어서, 상기 트리 구조는, 상기 필드값의 길이가 기 설정된 기준값 이상인 룰을 대상으로 상기 선택된 필드를 이용하여 영역을 분할하는 과정을 반복함으로써 생성된 메인 트리와 상기 필드값이 상기 기준값 미만인 룰을 대상으로 상기 선택된 필드가 아닌 다른 필드를 이용하여 영역을 분할하는 과정을 반복함으로써 생성된 서브 트리로 구성되고, 상기 패킷 분류 제어부는, 상기 메인 트리를 계층적으로 검색하여 상기 메인 트리의 리프노드(Leaf Node)에서 상기 입력 패킷과 일치하는 가장 높은 우선순위를 갖는 BMR(Best Matching Rule)(이하, "메인 트리 BMR"이라 함)을 결정한 후, 상기 메인 트리 BMR의 우선순위가 기 설정된 임계값보다 높으면 상기 메인 트리 BMR을 상기 입력 패킷의 BMR로 정하고, 상기 임계값보다 낮으면 상기 서브 트리를 계층적으로 검색하여 상기 서브 트리의 리프노드에서 상기 입력 패킷과 일치하는 가장 높은 우선순위를 갖는 룰(이하, "서브 트리 BMR"이라 함)을 검색한 후 상기 메인 트리 BMR과 상기 서브 트리 BMR을 비교하여 상기 입력 패킷의 BMR을 결정하는 것을 특징으로 하는 패킷 분류 장치를 제공한다.
이하, 본 발명의 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 당업자에게 자명하거나 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명은 룰들의 영역 분포특성을 고려하여 룰들을 분할하는 것을 기본 개념으로 한다. 이를 위한 구체적인 실시예를 이하에서 두 가지로 나누어 설명한다.
<제1
실시예
>
본 발명의 제1 실시예에 따른 패킷 분류 테이블 생성 방법은, (a) 영역을 분할할 필드를 선택하는 단계와 (b) 선택된 필드의 필드값을 분류를 필요로 하는 룰(Rule)로부터 추출하는 단계와 (c) 필드값의 길이가 필드값이 가질 수 있는 최장길이가 아닌 경우 필드값의 길이를 최장길이까지 확장시키는 인코딩 단계와 (d) 인코딩된 필드값을 경계점으로 하여 선택된 필드를 분할함으로써 룰을 영역별로 분류하는 단계와 (e) 각각의 영역에 포함되는 룰의 수가 빈스를 초과하는지를 판단하여, 빈스를 초과하는 영역의 경우 자식 노드를 생성하기 위한 다음 필드를 선택하고 (b) 단계로 돌아가는 단계를 포함하여 구성된다.
이하에서, 본 발명의 제1 실시예에 패킷 분류 테이블 생성 방법의 각 과정을 도 3 내지 도 4를 참조하여 설명한다.
여기서, 도 3은 본 발명의 제1 실시예에 따라 영역을 분할하는 과정을 설명하는 예시 도면이고, 도 4는 본 발명의 제1 실시예에 따라 생성된 패킷 분류 테이블의 판별트리 구조를 나타내는 예시 도면이다. 설명의 편의를 위해, 도 3과 도 4는 [표 1]의 룰 셋에 속하는 룰들을 토대로 하였다.
▲ (a) 및 (b) 단계: 필드 선택 및 필드값 추출
룰들을 영역별로 분류하기 위해, 먼저 영역을 분할할 필드를 선택하고 선택된 필드의 필드값을 각 룰로부터 추출하게 된다.
영역을 분할할 필드를 선택할 때 고려해야 할 점은 한번의 분할로서 가능한한 많은 룰이 각 영역으로 분류되어야 한다는 것이다. 따라서 필드를 선택할 때 유니크(Unique)한 정보가 많은 필드 순으로 선택하는 것이 효과적인 영역분할에 도움을 준다.
일반적으로 룰이 가지는 필드 중에서 근원지 주소 프리픽스 필드와 목적지 주소 프리픽스 필드는 다른 필드에 비해 유니크한 정보가 많다. 따라서 영역을 분할할 필드를 선택할 때에도 근원지 주소 프리픽스 필드와 목적지 주소 프리픽스 필들를 먼저 선택하는 것이 바람직할 것이다.
▲ (c) 및 (d) 단계: 필드값 인코딩 및 영역분할
각각의 룰들로부터 선택된 필드의 필드값이 추출되면, 필드값의 길이가 그 필드값이 가질 수 있는 최장길이인지를 판단하여 최장길이이면 그 필드값을 그대로 사용하고, 최장길이가 아니면 그 필드값을 최장길이로 확장하여 필드값의 길이를 일치시키는 인코딩 단계를 거친다. 여기서, 인코딩된 필드값은 분할될 각 영역의 경계점, 즉 시작점이나 끝점으로 활용된다.
도 3을 참조하여 설명하면, [표 1]의 룰 셋에 속한 각각의 룰로부터 필드 1의 필드값(근원지 주소 프리픽스)을 추출하면(동일한 값을 가지는 경우에는 중복을 제거한다), 추출된 프리픽스는, 도 3의 (A) 에서 보는 바와 같이, 0111, 010*, *, 000*, 1*, 001*이 된다. 이 프리픽스들은 최대 길이가 4비트이므로, 추출된 각 프리픽스의 최하위 비트(LSB: Least Significant Bit)의 후단에 "0"을 부가하여 프리픽스의 길이를 확장시키면, 0111, 0100, 0000, 0000, 1000, 0010이 된다.
이 값들을 크기 순으로 정렬한 후, 동일한 값에 대한 중복을 제거하면, 즉 값이 동일할 경우 그 중 하나만 남기고 나머지를 제거하면, 도 3의 (B)에서 보는 바와 같이 영역의 시작점으로 사용될 값, 0000, 0010, 0100, 0111, 1000이 산출되고, 이 값들을 시작점으로 하여 영역을 구분하면 [0,1], [2,3], [4,6], [7,7], [8,15]의 총 다섯개의 영역으로 분할된다.
이상에서는 프리픽스의 후단에 "0"한 값을 영역의 시작점으로 하는 예를 설명하였으나, 이에 한정되는 것은 아니며, 프리픽스의 후단에 "1"을 부가하여 길이를 확장시킨 후, 1이 부가된 값을 영역의 끝점으로 하여 필드의 영역을 분할할 수도 있다.
이렇게, 필드의 전체영역을 일정한 간격으로 분할하는 종래의 HiCuts나 HyperCuts과 달리 각 룰의 인코딩된 필드값을 영역분할의 시작점 또는 끝점으로 사용함으로써, 각 룰이 차지하는 영역에 따라 전체 영역을 분할할 수 있게 된다. 즉, 룰들의 분포특성을 고려한 영역분할이 가능해진다.
▲ (e) 단계: 룰의 갯수가 빈스를 초과하는 영역의 재분할
(c)와 (d) 단계에서 선택된 필드의 영역을 분할하여 룰들을 각 영역별로 분류하는 과정이 완료되면, 각각의 영역별로 해당 영역에 포함되는 룰의 개수가 빈스를 초과하는지를 판단하게 된다. 빈스를 초과하는 룰이 포함된 영역에 대해서는 그 영역을 다시 분할하여 자식 노드를 생성하기 위해 영역을 분할할 다음 필드를 선택하여 (b) 단계부터 (e) 단계를 반복하게 된다. 영역을 분할할 첫 필드로 근원지 주소 프리픽스(필드 1)를 선택하였으므로, 영역을 분할할 다음 필드로는 목적지 주소 프리픽스(필드 2)가 선택될 수 있다. 그 이후로 영역 분할하는 과정이 반복될 때마다 근원지 포트번호 필드, 목적지 포트번호 필드, 프로토콜 타입 등의 필드가 선택될 수 있다.
도 4는, 이상에서 설명한 (a) 단계 내지 (e) 단계에 의해 생성되는 본 발명의 제1 실시예에 따른 판별트리를 나타내고 있다.
도 4에서 보는 바와 같이, 본 발명의 제1 실시예를 이용하면, 3개의 필드만을 이용하여 모든 리프노드의 룰의 개수가 빈스 이하가 되도록 판별트리를 구성할 수 있게 된다. 따라서, 종래의 HiCuts이나 HyperCuts와 비교하여 트리의 레벨 수가 적으면서도 엔트리 수가 현격하게 줄어들도록 판별트리를 구성할 수 있다.
아래의 [표 3]은 본 발명의 제1 실시예와 종래의 HiCuts 및 HyperCuts의 트리 레벨 수와 엔트리 수를 비교한 것이다([표 1]의 룰 셋을 대상으로 한 것임).
표 3에서 보는 바와 같이, 동일한 룰 셋에 대해 판별트리를 구성해 본 결과, 본 발명의 제1 실시예는 판별트리의 레벨 수를 줄이면서도 엔트리 수를 최소화할 수 있음을 알 수 있다.
이상에서 설명한 제1 실시예에 따라 생성된 패킷 분류 테이블은 라우팅 시스템에 사용되는 패킷 분류 장치에 탑재되어, 입력 패킷의 분류에 사용될 수 있다.
도 5는 본 발명의 제1 실시예에 따른 패킷 분류 장치의 개략적인 블럭도이다.
본 발명의 제1 실시예에 따른 패킷 분류 장치는 메모리(510)와 패킷 분류 제어부(520)를 포함하여 구성될 수 있으며, 메모리(510)는 제1 실시예에 따라 트리 구조로 생성된 패킷 분류 테이블이 저장된다.
패킷 분류 제어부(520)는 패킷이 입력되면 입력된 패킷의 필드값을 이용하여 메모리에 저장된 트리 구조의 패킷 분류 테이블을 계층적으로 검색하여 리프노드에 접근하고, 리프노드에 저장된 룰들 중 입력 패킷과 일치하는 우선순위가 가장 높은 룰을 BMR로 결정하게 된다.
즉, 메모리(510)에 도 4에서 예시된 트리 구조의 패킷 분류 테이블이 저장되어 있다고 가정하면, 패킷 분류 제어부(520)는 입력 패킷에서 필드값들을 추출한 후 트리 구조에 따라 메모리에 계층적으로 접근하여 BMR을 검색하게 된다.
좀 더 상세히 설명하면, 먼저, 필드 1(근원지 주소 프리픽스 필드)의 필드값을 추출하여 추출된 필드값이 어떤 영역에 속하는지를 확인하고, 그 필드값이 속하는 영역으로 접근한다. 필드값이 어떤 영역에 속하는지 여부는 이진 검색을 통해 확인할 수 있다. 다음으로, 필드 2(목적지 주소 프리픽스 필드)의 필드값을 추출하여 추출된 필드값이 필드 2의 분할된 영역 중 어느 영역에 속하는지를 확인한 후, 그 필드값이 속하는 영역으로 접근한다. 도달한 영역이 리프노드이면 리프노드에 저장된 룰들 중 입력 패킷과 일치하는 우선순위가 가장 높은 룰을 입력 패킷의 BMR로 결정하게 된다. 만약 리프노드가 아니면, 필드 4(목적지 포트번호 필드)의 필드값을 추출하여 그 필드값이 속하는 영역으로 접근하고, 접근된 영역이 리프노드이면 리프노드에 저장된 룰 중 입력 패킷과 일치하는 우선순위가 가장 높은 룰을 입력 패킷의 BMR로 정한다.
이렇게, 패킷 분류 제어부(520)는, 패킷이 입력되면 입력된 패킷의 필드값들을 이용하여 트리구조에 따라 계층적으로 검색을 진행하여 BMR을 결정한다.
<제2
실시예
>
본 발명의 제2 실시예에 따른 패킷 분류 테이블 생성 방법은 제1 실시예와 그 원리는 동일하나, 판별트리의 구조가 필드값의 길이가 일정 기준값 이상인 룰을 대상으로 하는 생성된 메인 트리(Main Tree)와 기준값 미만인 룰을 대상하는 하는 서브 트리(Sub Tree)로 구성되어 있다는 점에서 제1 실시예와 구별된다.
제1 실시예의 방법으로 영역을 분할할 때, 길이가 짧은 프리픽스는 속하는 영역이 많아지게 된다. 예컨대, 프리픽스의 길이가 8이라고 가정할 때, 와일드 프리픽스인 "*"는 모든 영역에 속하게 되고, 01*은 01000000부터 01111111의 범위에 포함되는 모든 영역에 속하게 된다. 따라서 짧은 프리픽스를 가지는 룰은 여러 영역에 포함될 확률이 커지므로, 트리의 레벨 수를 증가시키게 되고 이에 따라 패킷 처리 속도나 메모리 효율면에 좋지 않은 영향을 끼칠 수 있다.
따라서 본 발명의 제2 실시예는 제1 실시예와 동일한 방법으로 트리 구조를 생성하되, 필드값의 길이가 기준값 이상이 되는 룰들을 대상으로 한 메인 트리와 필드값의 길이가 기준값이 미만인 룰들을 대상으로 한 서브 트리로 나누어 트리 구조를 생성한다.
이하에서는, 도 6 및 도 7을 참조하여, 메인 트리와 서브 트리를 구분하는 기준값으로 필드값의 길이가 0인 경우, 즉 필드값이 와일드(*)인 경우를 예로 들어 설명하나, 이것은 단지 제2 실시예를 설명하기 위한 예시일뿐, 본 발명의 기술적 사상을 한정하려는 의도는 아니다.
도 6은 본 발명의 제2 실시예에 따라 영역을 분할하는 과정을 설명하는 예시 도면이고, 도 7은 본 발명의 제2 실시예에 따라 생성된 패킷 분류 테이블의 판별트리 구조를 나타내는 예시 도면이다. 설명의 편의를 위해, 도 6과 도 7은 [표 1]의 룰 셋을 대상으로 하였다.
도 6에 도시된 바와 같이, 본 발명의 제2 실시예에 따른 패킷 분류 테이블은 메인 트리와 서브 트리로 구성된다.
메인 트리의 생성 방법을 설명하면, 도 6의 (A)에서 보는 바와 같이, 먼저 영역을 분할할 필드를 선택하고, 룰들로부터 선택된 필드의 필드값을 추출하되, 필드값의 길이가 0이 아닌, 즉 필드값이 와일드가 아닌, 필드값만을 선별한다. 그리고 선별된 필드값의 길이를 최장길이까지 확장시키는 인코딩을 수행한 후, 인코딩된 필드값들을 영역의 경계점으로 하여 선택된 필드의 영역을 분할함으로써 선택된 필드의 필드값의 길이가 0이 아닌 룰들을 분류한다.
분할된 영역 중 룰의 개수가 빈스를 초과하는 영역에 대해서는 영역을 분할할 다음 필드를 선택하여 위의 과정을 반복하여 자식 노드를 생성하는 하게 된다.
서브 트리의 경우에는, 도 6의 (B)에서 보는 바와 같이, 메인 트리에서 영역을 분할하기 위해 선택된 필드의 필드값 중 그 길이가 0인 룰에 대해 선택된 필드가 아닌 다른 필드를 이용하여 트리 구조를 생성한다. 서브 트리의 생성 방법은 메인 트리의 생성 방법과 동일하다.
예컨대, 영역을 분할할 첫 번째 필드로 필드 1(근원지 주소 프리픽스 필드)을 선택하였다면, 메인 트리의 경우에는 필드 1의 필드값 중 그 길이가 0이 아닌 필드값을 이용하여 필드 1의 영역을 분할함으로써 룰(필드 1의 필드값의 길이가 0이 아닌 룰)들을 분류하게 된다. 분할된 각 영역에 포함된 룰의 개수가 빈스를 초과하면 영역을 분할할 다음 필드를 선택하여 영역 분할 과정을 반복하게 된다. 서브 트리의 경우에는, 필드 1이 아닌 필드 2(목적지 주소 프리픽스 필드)의 필드값을 이용하여 필드 2의 영역을 분할함으로써 룰(필드 1의 필드값의 길이가 0인 룰)들을 분류하게 된다. 그리고 분할된 각 영역에 포함된 룰의 개수가 빈스를 초과하면 영역을 분할할 다음 필드를 선택하여 영역 분할 과정을 반복하게 된다.
도 7은 [표 1]의 동일한 룰 셋을 대상으로 이상에서 설명한 방식을 이용하여 생성한 판별트리를 나타낸 것이다.
[표 1]의 동일한 룰 셋을 대상으로 한 도 7과 도 4의 판별트리를 비교하면, 제2 실시예는 필드 1을 이용한 영역 분할의 첫 단계에서 와일드 프리픽스를 제외시킴으로써 와일드 프리픽스가 모든 영역에 복사되는 것을 방지할 수 있게 된다. 또한, 도 6의 (A)의 메인 트리의 경우 필드 1의 분할만으로 각 영역에 속하는 룰의 개수를 빈스 이하로 줄일 수 있으므로 엔트리 수도 훨씬 줄어드는 효과를 볼 수 있다. 또한, 도 6의 (B)의 서브 트리의 경우, 필드 2의 각 분할 영역에 [0,5] 영역을 생성하지 않아도 되므로 빈 엔트리 발생에 따른 메모리 낭비를 줄일 수 있음을 볼 수 있다.
이하에서는, 이상에서 설명한 본 발명의 제2 실시예에 따라 생성된 패킷 분류 테이블을 이용하여 패킷 분류를 수행하는 방법에 대해 설명한다.
패킷이 입력되면, 먼저 메인 트리에서 검색을 진행한다. 즉, 입력 패킷의 필드값들을 추출한 후, 추출된 필드값들을 이용하여 메인 트리 구조에 따라 계층적으로 패킷 분류 테이블에 접근하여 메인 트리의 리프노드에 저장된 룰 중 입력된 패킷과 일치하는 우선순위가 가장 높은 룰(이하, "메인 트리 BMR"이라 함)을 검색한다. 메인 트리부터 검색을 진행하는 이유는 와일드 프리픽스를 갖는 룰들은 일반적으로 우선순위가 낮기 때문이다.
이후, 메인 트리 BMR의 우선순위를 기 설정된 임계값과 비교하여 메인 트리 BMR의 우선순위가 설정된 임계값보다 높은 경우, 메인 트리 BMR을 입력 패킷의 BMR로 최종적으로 결정한다. 여기서 임계값은 서브 트리에서 가장 높은 우선순위를 갖는 룰의 우선순위로 설정될 수 있다.
그러나, 메인 트리 BMR의 우선순위가 임계값보다 낮은 경우에는 서브 트리에서의 검색을 진행하여 서브 트리의 리프노드에 저장된 룰 중 입력 패킷과 일치하는 우선순위가 가장 높은 룰(이하, "서브 트리 BMR"이라 함)을 검색한다. 그리고 메인 트리 BMR과 서브 트리 BMR을 비교하여 최종적으로 입력 패킷의 BMR을 결정하게 된다. 여기서 서브 트리의 리프노드에 저장된 룰을 검색할 때, 메인 트리 BMR보다 높은 우선순위를 갖는 룰에 대해서만 입력 패킷과의 비교 검색을 진행하도록 구현함으로써 검색 속도를 높일 수 있을 것이다.
이상에서 설명한 제2 실시예에 따라 생성된 패킷 분류 테이블을 이용하여 패킷 분류를 수행하는 방법은, 메모리와 패킷 분류 제어부를 포함하는 패킷 분류 장치를 통해 구현될 수 있다.
도 8은 본 발명의 제2 실시예에 따라 생성된 패킷 분류 장치를 개략적으로 나타내는 블럭도이다.
메모리(810)에는 제2 실시예에 따라 생성된 도 7과 같은 패킷 분류 테이블이 저장된다.
패킷 분류 제어부(820)는 패킷이 입력되면 입력 패킷으로부터 필드값들을 추출하여 먼저 메인 트리를 검색하여 메인 트리 BMR을 결정하고, 메인 트리 BMR의 우선순위가 임계값보다 높으면 메인 트리 BMR을 입력 패킷의 BMR로 최종적으로 결정한다. 그러나 메인 트리 BMR의 우선순위가 임계값보다 낮으면 서브 트리를 검색하여 서브 트리 BMR을 결정한 후 메인 트리 BMR과 서브 트리 BMR을 비교하여 입력 패킷의 BMR을 결정한다. 패킷 분류 제어부가 수행하는 패킷 분류 방법은 제2 실시예에 따른 패킷 분류 방법에서 전술하였으므로 더 이상의 설명은 생략한다.
<시뮬레이션 결과 및 성능 평가>
본 발명의 따른 성능을 평가하기 위해 데이터베이스 ACL1k, ACL5k, FW1k, FW5k, IPC1k, IPC5k에 대하여 시뮬레이션을 수행하였다. 시뮬레이션에 사용된 패킷 분류 테이블의 엔트리 형식은 도 9와 같다.
도 9에서 보듯, 본 발명의 시뮬레이션에 사용된 패킷 분류 테이블의 엔트리는 분할된 영역 및 다른 엔트리로의 포인터를 저장하는 엔트리와 룰을 저장하는 엔트리 두 가지가 있다.
첫 번째 엔트리에서 영역(Range) 부분은 현재 선택된 필드로 분할된 각 영역을 나타내고 시작 포인터(Start_ptr)와 끝 포인터(End_ptr)는 두 가지 의미를 갖는다. 첫 번째로, 현재 엔트리가 의미하는 영역에 속하는 룰의 개수가 빈스를 초과하는 경우에는 그 영역에 속하는 룰들에 대하여 다음 선택된 필드로 다시 영역을 분할해야 한다. 따라서 이 경우에 시작과 끝 포인터는 이 엔트리의 영역에 속하는 룰들에 대하여 다음의 분할 영역, 즉 자식노드를 저장하는 엔트리들을 가리키는 포인터가 된다. 즉, 자식노드를 저장하는 엔트리들의 시작 인덱스(index)와 끝 인덱스를 나타낸다. 그렇지 않은 경우, 즉 현재 엔트리가 나타내는 영역에 속하는 룰들의 개수가 빈스를 초과하지 않는다면, 더 이상 룰들을 분류하지 않고 여기에 속하는 룰들을 저장해야 한다. 따라서 이 경우의 시작과 끝 포인터들은 현재 엔트리의 영역에 속하는 룰들이 저장된 엔트리의 시작 인덱스와 끝 인덱스를 나타낸다.
두번째 엔트리는 룰들이 저장된 영역에서의 룰들의 엔트리 형식에 관한 것이다. 룰들을 저장해야 하는 경우에만 첫번째 엔트리에서 두번째 엔트리로 포인터를 가진다. 여기서, "linked list-ptr"은 같은 노드에 저장된 다른 룰의 엔트리를 가리키는 포인터를 의미하고, "proto wild"는 프로토콜 타입(proto type)이 와일드인지 여부를 나타내는 필드이다.
먼저, 본 발명의 제1 실시예와 제2 실시예를 비교하였는데, 그 결과는 표 4와 같다. 여기서, Tavg는 평균 메모리 접근 횟수, Tmax는 최대 메모리 접근 횟수, 와일드 수는 처음 룰 분류를 시작하기 위하여 선택한 필드에 대하여 와일드 프리픽스를 가진 룰의 수이다.
[표 4]에서 보듯이, 제2 실시예는 전체 룰의 개수에 대하여 와일드 프리픽스를 가진 룰의 비율이 커질수록 제1 실시예보다 메모리 측면에서의 성능이 우수하나, 검색 속도 측면에서의 성능은 저하된다. 제2 실시예는 처음 룰 분류를 시작할 시 선택된 필드에 대하여 와일드 프리픽스를 가진 룰들을 따로 분류하기 때문에 엔트리 수를 최소화시키는 장점을 가진다. 그러나 최악의 경우, 두 개의 트리, 즉 메인 트리와 서브 트리 모두에 대하여 검색을 진행해야 하므로 서브 트리를 구성하는 룰의 수 즉, 처음 분류를 시작하기 위해 선택된 필드의 와일드 프리픽스 수가 많아질수록 서브 트리가 커져 제1 실시예와 비교하여 검색 속도에서의 저하를 보일 수 있다.
[표 5]은 종래의 커팅 구조들인 HiCuts 및 HyperCuts와 본 발명의 실시예에 따라 생성된 판별트리를 구성하기 위하여 필요한 노드의 수 즉, 분할 영역의 수를 비교한 표이다.
HiCuts과 HyperCuts은 빈스와 각 선택된 필드에서 몇 개의 영역으로 분할하는가에 따라 그 성능이 좌우된다. 따라서 본 발명과 최대한 동등한 조건 하에 평가하기 위하여 HiCuts과 HyperCuts의 시뮬레이션 조건을 다음과 같이 주었다. 빈스는 본 발명의 실시예와 같이 4로 주되, 각 선택된 필드에서 분할할 영역의 수는 현재 선택된 필드의 유니크한 정보(예를 들어 필드 1의 경우, 유니크한 프리픽스의 수)의 수를 세어 표현 가능한 가장 작은 2의 배수로 결정하였다. 그 결과, 표 5에서 보듯이 본 발명의 실시예는 기존의 커팅 구조들보다 훨씬 적은 수의 분할 영역을 가짐에도 불구하고, 아래 [표 7]과 [표 8]에서 후술하는 바와 같이 검색 속도와 메모리 요구량에서 훨씬 우수한 성능을 보인다. 이는 본 발명에서는 디스조인트(Disjoint)한 영역을 사용하여 룰들을 효과적으로 분류하기 때문이다.
표 6은 종래의 패킷 분류 구조와 본 발명의 실시예 간의 평균 메모리 접근 횟수를 비교한 것이다. 비교를 위하여 시뮬레이션한 기존의 패킷 분류 알고리즘들로는 위에서 언급한 HiCuts, HyperCuts 외에 Hierarchical trie(H-trie), Area-Based Quad-tree(AQT), Priority-Based Quad-tree(PQT), Bit Vector(BV) 을 추가하였다.
[표 6]에서 보듯이 본 발명의 실시예는 HiCuts와 HyperCuts 뿐만 아니라, 다른 여러 구조들에 비해 평균 메모리 접근 횟수가 훨씬 작다. 따라서 본 발명의 실시예는 라우터 내로 들어온 패킷 처리 속도 면에서 다른 구조들에 비해 우수한 성능을 보인다고 할 수 있다.
또한, 도 10에서 보는 바와 같이, 본 발명의 실시예에 따른 패킷 분류 구조는 데이터베이스 1k(Acl1k, Fw1k, Ipc1k)에서 5k(Acl5k, Fw5k, Ipc5k)로 룰의 수가 4~5배로 늘어남에도 불구하고 평균 메모리 접근 횟수는 크게 증가하지 않는다. 이에 반해 다른 구조들은 룰의 수가 늘어남에 따라 이 수치도 크게 증가하는 점을 볼 수 있다. 이러한 점에서 볼 때, IPv6로의 확장에서도 우수한 패킷 처리 속도를 보일 것으로 예상할 수도 있다.
표 7은 종래의 패킷 분류 구조와 본 발명의 실시예 간의 메모리 요구량을 비교한 것이다.
[표 7]에서 보듯이 본 발명의 실시예의 메모리 요구량은 H-trie, AQT, PQT, BV와 같은 알고리즘들과 비교하여 유사하거나 약간 크지만 기존의 커팅 구조들보다 훨씬 적은 메모리 요구량을 가짐을 볼 수 있다.
이상에서 설명한 바와 같이, 본 발명의 실시예는 룰들의 분포특성을 고려하여 영역을 디스조인트하게 분할함으로써 기존의 커팅 구조를 사용한 패킷 분류 방법과 비교하여 엔트리의 수를 줄이면서도 트리 레벨의 수를 줄일 수 있다는 장점이 있다. 따라서 본 발명의 실시예에 의하면 메모리 낭비를 줄이면서도 패킷 처리속도를 높일 수 있게 된다.
또한, 커팅 구조를 사용하지 않는 기존의 패킷 분류 방법과 비교하여서도 비슷한 메모리 요구량으로 빠른 패킷 처리속도를 가진다는 효과가 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
도 1은 종래의 커팅을 이용한 패킷 분류 방법 중 HiCuts를 설명하기 위한 예시 도면,
도 2는 종래의 커팅을 이용한 패킷 분류 방법 중 HyperCuts을 설명하기 위한 예시 도면,
도 3은 본 발명의 제1 실시예에 따라 영역을 분할하는 과정을 설명하는 예시 도면,
도 4는 본 발명의 제1 실시예에 따라 생성된 패킷 분류 테이블의 판별트리 구조를 나타내는 예시 도면,
도 5는 본 발명의 제1 실시예에 따른 패킷 분류 장치의 개략적인 블럭도,
도 6은 본 발명의 제2 실시예에 따라 영역을 분할하는 과정을 설명하는 예시 도면,
도 7은 본 발명의 제2 실시예에 따라 생성된 패킷 분류 테이블의 판별트리 구조를 나타내는 예시 도면,
도 8은 본 발명의 제2 실시예에 따라 생성된 패킷 분류 장치를 개략적으로 나타내는 블럭도,
도 9는 성능 평가를 위한 시뮬레이션에 사용된 패킷 분류 테이블의 엔트리 형식,
도 10은 룰 셋의 용량에 따른 평균 메모리 접근 횟수의 변화를 비교한 그래프이다.
Claims (17)
- 패킷 분류 장치에서 패킷 분류 테이블을 영역분할 방식을 이용하여 트리 구조로 생성하는 방법에 있어서,(a) 영역을 분할할 필드를 선택하는 단계;(b) 선택된 필드의 필드값을 분류를 필요로 하는 룰(Rule)로부터 추출하는 단계;(c) 상기 필드값의 길이가 상기 필드값이 가질 수 있는 최대 길이가 아닌 경우, 상기 필드값의 최하위 비트 뒤에 "0" 또는 "1" 중 어느 하나를 부가하여 상기 필드값의 길이를 상기 최대 길이까지 확장시킴으로써 상기 필드값을 인코딩하는 단계;(d) 상기 필드값을 경계점으로 하여 상기 선택된 필드를 영역별로 분할하고 상기 분류를 필요로 하는 룰을 상기 영역별로 분류하는 단계; 및(e) 각각의 상기 영역에 포함되는 룰의 수가 빈스(Binth)를 초과하는지를 판단하여, 빈스를 초과하는 영역의 경우 자식 노드를 생성하기 위한 다음 필드를 선택하고 상기 (b) 단계로 돌아가고, 빈스 이하인 경우 또는 선택할 다음 필드가 존재하지 않는 경우 영역 분할 과정을 종료하는 단계를 포함하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 1 항에 있어서, 상기 (a) 단계는,(a1) 선택된 필드의 필드값의 길이가 기 설정된 기준값을 초과하는 룰만을 대상으로 상기 선택된 필드의 필드값을 이용하여 상기 (b) 단계 이후를 진행함으로써 메인 트리(Main Tree)를 생성하는 단계; 및(a2) 상기 필드값의 길이가 상기 기준값 이하인 룰을 대상으로 영역을 분할할 다른 필드를 선택한 후 선택된 필드의 필드값을 이용하여 상기 (b) 단계 이후를 진행함으로써 서브 트리(Sub Tree)를 생성하는 단계를 포함하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 2 항에 있어서,상기 기준값은 0인 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 (c) 단계에서는 상기 필드값의 최하위 비트에 "0"을 부가하여 인코딩하고,상기 (d) 단계에서는 인코딩된 상기 필드값을 영역의 시작점으로 하여 상기 선택된 필드를 분할하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 1 항 또는 제 2 항에 있어서,상기 (c) 단계에서는 상기 필드값의 최하위 비트에 "1"을 부가하여 인코딩하고,상기 (d) 단계에서는 인코딩된 상기 필드값을 영역의 끝점으로 하여 상기 선택된 필드를 분할하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 1 항 또는 제 2 항에 있어서,영역을 분할할 필드로서 근원지 주소 프리픽스 필드 또는 목적지 주소 프리픽스 필드를 우선적으로 선택하는 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 테이블 생성 방법.
- 제 2 항 또는 제 3 항의 방법으로 생성된 패킷 분류 테이블을 이용하여 패킷을 분류하는 방법으로서,(f) 입력 패킷의 필드값을 추출하여 상기 메인 트리를 계층적으로 검색하여 상기 메인 트리의 리프노드에 저장된 룰(Rule) 중 상기 입력 패킷과 일치하는 룰로서 우선순위가 가장 높은 룰(이하, "메인 트리 BMR(Best Matching Rule)"이라 함)을 검색하는 단계;(g) 상기 메인 트리 BMR의 우선순위를 기 설정된 임계값과 비교하여 상기 메인 트리 BMR의 우선순위가 상기 임계값보다 높은 경우 상기 메인 트리 BMR을 상기 입력 패킷의 BMR로 결정하는 단계; 및(h) 상기 메인 트리 BMR의 우선순위가 상기 임계값보다 낮은 경우, 상기 서브 트리를 검색하여 상기 서브 트리의 리프노드에 저장된 룰 중 상기 입력 패킷과 일치하는 룰로서 우선순위가 가장 높은 룰(이하, "서브 트리 BMR"이라 함)을 검색한 후, 상기 메인 트리 BMR과 상기 서브 트리 BMR을 비교하여 상기 입력 패킷의 BMR을 결정하는 단계를 포함하는 것을 특징으로 하는 패킷 분류 방법.
- 제 7 항에 있어서,상기 (h) 단계는, 상기 서브 트리의 리프노드에 저장된 룰을 검색함에 있어서, 상기 메인 트리 BMR의 우선순위보다 높은 우선순위를 갖는 룰에 대해서만 상기 입력 패킷과의 비교 검색을 진행하는 것을 특징으로 하는 패킷 분류 방법.
- 제 7 항에 있어서,상기 임계값은 상기 서브 트리의 가장 높은 우선순위로 결정되는 것을 특징으로 하는 패킷 분류 방법.
- 패킷 분류 장치에 있어서,영역분할 방식을 이용하여 트리 구조로 생성된 패킷 분류 테이블을 저장하는 메모리; 및 상기 패킷 분류 테이블을 상기 트리 구조를 따라 계층적으로 검색하여 입력 패킷의 BMR(Best Matching Rule)을 결정하는 패킷 분류 제어부를 포함하되,상기 트리 구조는, 영역을 분할할 필드를 선택하고, 선택된 필드의 필드값의 길이가 상기 필드값이 가질 수 있는 최대 길이가 아닌 경우 상기 필드값의 최하위 비트에 "0" 또는 "1" 중 어느 하나를 부가하여 상기 필드값의 길이를 최대 길이로 확장시킨 후, 상기 필드값을 경계점으로 하여 상기 선택된 필드의 영역을 분할하는 방식으로 룰(Rule)들을 영역별로 분류하는 과정을, 분할된 각각의 영역에 속하는 룰의 개수가 빈스(Binth) 이하가 되거나 또는 선택할 필드가 존재하지 않을 때까지 반복함으로써 생성된 것을 특징으로 하는 패킷 분류 장치.
- 제 10 항에 있어서,상기 트리 구조는, 상기 필드값의 길이가 기 설정된 기준값 초과하는 룰을 대상으로 상기 선택된 필드를 이용하여 영역을 분할하는 과정을 반복함으로써 생성된 메인 트리와 상기 필드값이 상기 기준값 이하인 룰을 대상으로 상기 선택된 필드가 아닌 다른 필드를 이용하여 영역을 분할하는 과정을 반복함으로써 생성된 서브 트리로 구성되고,상기 패킷 분류 제어부는, 상기 메인 트리를 계층적으로 검색하여 상기 메인 트리의 리프노드(Leaf Node)에서 상기 입력 패킷과 일치하는 룰 중 가장 높은 우선순위를 갖는 BMR(Best Matchiong Rule)(이하, "메인 트리 BMR"이라 함)을 결정한 후, 상기 메인 트리 BMR의 우선순위가 기 설정된 임계값보다 높으면 상기 메인 트리 BMR을 상기 입력 패킷의 BMR로 정하고, 상기 임계값보다 낮으면 상기 서브 트리를 계층적으로 검색하여 상기 서브 트리의 리프노드에서 상기 입력 패킷과 일치하는 룰 중 가장 높은 우선순위를 갖는 룰(이하, "서브 트리 BMR"이라 함)을 검색한 후 상기 메인 트리 BMR과 상기 서브 트리 BMR을 비교하여 상기 입력 패킷의 BMR을 결정하는 것을 특징으로 하는 패킷 분류 장치.
- 제 11 항에 있어서,상기 기준값은 0인 것을 특징으로 하는 영역분할 방식을 이용한 패킷 분류 장치.
- 제 11 항에 있어서,상기 패킷 분류 제어부는 상기 서브 트리의 리프노드를 검색함에 있어서, 상기 메인 트리 BMR의 우선순위보다 높은 우선순위를 갖는 룰만을 상기 입력 패킷과의 비교 검색 대상으로 하는 것을 특징으로 하는 패킷 분류 장치.
- 제 11 항에 있어서,상기 임계값은 상기 서브 트리에서 가장 높은 우선순위를 갖는 룰의 우선순위로 설정되는 것을 특징으로 하는 패킷 분류 장치.
- 제 10 항 또는 제 11 항에 있어서,상기 필드값의 최하위 비트에 "0"을 부가하여 최대 길이로 확장하고 상기 경계점은 영역의 시작점인 것을 특징으로 하는 패킷 분류 장치.
- 제 10 항 또는 제 11 항에 있어서,상기 필드값의 최하위 비트에 "1"을 부가하여 최대 길이로 확장하고 상기 경계점은 영역의 끝점인 것을 특징으로 하는 패킷 분류 장치.
- 제 10 항 또는 제 11 항에 있어서,영역을 분할할 필드로서 근원지 주소 프리픽스 필드 또는 목적지 주소 프리픽스 필드를 우선적으로 선택하는 것을 특징으로 하는 패킷 분류 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080077157A KR100965552B1 (ko) | 2008-08-06 | 2008-08-06 | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080077157A KR100965552B1 (ko) | 2008-08-06 | 2008-08-06 | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100018409A KR20100018409A (ko) | 2010-02-17 |
KR100965552B1 true KR100965552B1 (ko) | 2010-06-23 |
Family
ID=42089143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080077157A KR100965552B1 (ko) | 2008-08-06 | 2008-08-06 | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100965552B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240959B2 (en) | 2011-10-11 | 2016-01-19 | Ajou University Industry-Academic Cooperation Foundation | Method for packet classification and device therefor |
KR101990902B1 (ko) * | 2018-03-27 | 2019-06-19 | 계명대학교 산학협력단 | 빠른 테이블 업데이트를 지원하는 고속 패킷 분류 방법 및 시스템 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101387942B1 (ko) * | 2012-08-02 | 2014-04-22 | 주식회사 엑스게이트 | 서브트리를 활용한 쿼드트리 기반의 패킷 분류 방법 |
KR101583439B1 (ko) * | 2014-11-28 | 2016-01-08 | 이화여자대학교 산학협력단 | 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치 |
KR101897612B1 (ko) * | 2017-04-14 | 2018-09-12 | 계명대학교 산학협력단 | IoT 환경에서 패킷 분류를 위한 와일드카드 비율 기반 판별 트리 생성 방법 및 시스템 |
KR102101419B1 (ko) * | 2019-03-04 | 2020-04-16 | 서강대학교 산학협력단 | 라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템 |
-
2008
- 2008-08-06 KR KR1020080077157A patent/KR100965552B1/ko not_active IP Right Cessation
Non-Patent Citations (3)
Title |
---|
B. Lampson 외 1인, "IP Lookups Using Multiway and Multicolumn Search", IEEE/ACM Transactions on Networking, pp. 324~334, 1999년 |
P. Gupta 외 1인, "Classifying Packets with Hierarchical Intelligent Cuttings", IEEE Micro, pp. 34~41, 2000년 |
정여진 외 2인, "패킷 분류를 위한 이차원 이진 프리픽스 트리", 한국정보과학회논문지, 제32권, 제4호, pp. 543~550, 2005년 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9240959B2 (en) | 2011-10-11 | 2016-01-19 | Ajou University Industry-Academic Cooperation Foundation | Method for packet classification and device therefor |
KR101990902B1 (ko) * | 2018-03-27 | 2019-06-19 | 계명대학교 산학협력단 | 빠른 테이블 업데이트를 지원하는 고속 패킷 분류 방법 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR20100018409A (ko) | 2010-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vamanan et al. | EffiCuts: Optimizing packet classification for memory and throughput | |
US7089240B2 (en) | Longest prefix match lookup using hash function | |
KR100965552B1 (ko) | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
Meiners et al. | Hardware based packet classification for high speed internet routers | |
US20050083937A1 (en) | IP address lookup method using pipeline binary tree, hardware architecture, and recording medium | |
CN100488174C (zh) | 流分类中基于硬件的差异化组织方法 | |
KR101331018B1 (ko) | 패킷 분류 방법 및 그 장치 | |
CN102255788A (zh) | 报文分类决策构建系统及方法、报文分类系统及方法 | |
CN109754021B (zh) | 基于范围元组搜索的在线包分类方法 | |
CN101650718A (zh) | 字符串匹配方法和装置 | |
CN106302178B (zh) | 一种路由查询方法及装置 | |
WO2019183962A1 (zh) | 一种基于等长度和等密度切割的网络数据包分类的方法 | |
EP1533956A2 (en) | Dynamic forwarding of data packets using binary search | |
CN110995876B (zh) | 一种ip存储与查找的方法及装置 | |
CN112688881A (zh) | 一种基于大小域规则划分的网络数据包分类方法 | |
Chang | Efficient multidimensional packet classification with fast updates | |
Shen et al. | RVH: Range-vector hash for fast online packet classification | |
KR100662254B1 (ko) | 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법 | |
CN113328947B (zh) | 基于应用可控前缀扩展布隆过滤器的可变长路由查找方法及装置 | |
Liu et al. | Longest prefix matching with pruning | |
KR100420957B1 (ko) | 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치 | |
CN115834340B (zh) | 一种规则存储方法、装置、电子设备及存储介质 | |
CN115714752B (en) | Packet classification method and device, forwarding chip and electronic equipment | |
KR101070415B1 (ko) | 패킷 분류용 테이블 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130503 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140613 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20151013 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170613 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |