KR102601351B1 - 트래픽 분류 방법 및 장치 - Google Patents
트래픽 분류 방법 및 장치 Download PDFInfo
- Publication number
- KR102601351B1 KR102601351B1 KR1020217029001A KR20217029001A KR102601351B1 KR 102601351 B1 KR102601351 B1 KR 102601351B1 KR 1020217029001 A KR1020217029001 A KR 1020217029001A KR 20217029001 A KR20217029001 A KR 20217029001A KR 102601351 B1 KR102601351 B1 KR 102601351B1
- Authority
- KR
- South Korea
- Prior art keywords
- rule
- bits
- rules
- hash
- rule set
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000004590 computer program Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 description 17
- 238000003780 insertion Methods 0.000 description 16
- 230000037431 insertion Effects 0.000 description 16
- 238000003066 decision tree Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000000638 solvent extraction Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000010845 search algorithm Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 206010021703 Indifference Diseases 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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]
-
- 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
- G06F16/2228—Indexing 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- 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
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- 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
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- 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/20—Traffic policing
-
- 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/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 출원은 트래픽 분류 방법 및 장치를 제공한다. 이 방법은, 제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정하는 단계- 여기서 유효 비트는 복수의 규칙 내에서 상이한 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -와, 제1 규칙 세트 내의 각 규칙의 유효 비트 값에 기초하여 각 규칙의 해시 키 값을 결정하는 단계와, 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 제1 규칙 세트의 각 규칙을 저장하는 단계- 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, N개의 규칙 세트는 S개의 저장 유닛에 저장되고, N과 S는 1 이상의 정수이고, S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -와, 트래픽 분류가 수행되면, 검색 키의 해시 키 값에 기초하여 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하는 단계를 포함한다.
Description
본 출원은 2019년 4월 12일자로 중국 특허청에 제출된 "트래픽 분류 방법 및 장치"라는 명칭의 중국 특허 출원 번호 201910294640.0에 대한 우선권을 주장하며, 이는 전체가 본 명세서에 참조로 포함된다.
본 출원은 컴퓨터 기술, 특히 트래픽 분류 방법 및 장치에 관한 것이다.
현재 네트워크에서, 트래픽 분류 기능은 패킷 필터링, 서비스 품질(quality of service, QoS), 트래픽 통계 수집과 같은 기능 특성을 네트워크에 제공하기 위한 라우터 및 스위치의 핵심 기능 중 하나가 되었다. 트래픽 분류의 원리는 패킷 헤더의 각 필드에 대한 정보를 추출하여 검색 키를 구성하고 그런 다음 각 규칙(rule)의 대응 설정에 기초하여 매칭을 수행하는 것이다. 규칙의 설정이 충족되면, 규칙과 관련된 작업이 실행된다. 구성된 각 규칙은 우선순위 정보의 일부와 연관된다. 복수의 규칙이 매칭되면, 우선순위가 가장 높은 규칙의 작업이 수행된다.
현재, 널리 사용되는 트래픽 분류 솔루션은 터너리 콘텐츠 어드레스블 메모리(ternary content addressable memory, TCAM) 기반의 하드웨어 솔루션과 결정 트리 알고리즘 기반의 규칙 세트 분할 솔루션을 포함한다. 규칙 세트를 분할하기 위한 결정 트리 알고리즘의 기본 아이디어는, 각 규칙 서브세트의 규칙의 수가 미리 설정된 임계값보다 작을 때까지 규칙 세트의 특성을 기반으로 규칙 세트를 재귀적으로 분할하는 것이다. 분할 후, 트래픽 검색 동안 하나의 규칙 서브세트만이 매칭될 필요가 있다. 이러한 방식으로, 매칭되어야 하는 규칙의 수가 크게 줄어들 수 있어, 고속 트래픽 검색 기능을 구현할 수 있다. 현재, 결정 트리 기반의 전처리 알고리즘이 널리 사용되는데, 전형적인 알고리즘은 HiCuts, HyperCuts, Modular 등을 포함한다.
현재, 해시(hash) 알고리즘은 삽입 및 검색 성능이 매우 높기 때문에, 이 해시 알고리즘은 관련 연구에서 트래픽 분류 검색 알고리즘으로 사용된다. 현재의 해시 알고리즘 기반의 트래픽 분류 방식은 규칙 삽입 및 검색 동안 비교적 많은 컴퓨팅 리소스를 필요로 하지만 규칙 삽입 및 검색 효율은 낮다.
본 출원은 높은 검색 성능, 낮은 리소스 소비 및 낮은 검색 지연을 특징으로 하는 트래픽 분류 방법 및 장치를 제공한다.
제1 양태에 따르면, 트래픽 분류 방법이 제공된다. 방법은 네트워크 장치에 의해 수행될 수도 있고, 또는 네트워크 장치에 구성된 칩 또는 회로에 의해 수행될 수도 있다. 이것은 본 출원에서 제한되지 않는다. 예를 들어, 네트워크 장치는 라우터, 스위치 등일 수 있다. 이것은 제한되지 않는다.
방법은, 제1 규칙 세트 내의 복수의 규칙의 관심 비트(concerned bits)의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정하는 단계- 여기서 유효 비트는 복수의 규칙 내에서 상이한 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -와, 제1 규칙 세트 내의 각 규칙의 유효 비트의 값에 기초하여 각 규칙의 해시 키 값을 결정하는 단계와, 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 제1 규칙 세트의 각 규칙을 저장하는 단계- 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, N개의 규칙 세트는 S개의 저장 유닛에 저장되고, N과 S는 1 이상의 정수이고, S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -와, 트래픽 분류가 수행되면, 검색 키의 해시 키 값에 기초하여 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하는 단계를 포함한다.
구체적으로, 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함한다. 제1 규칙 세트에 대응하는 유효 비트를 결정하는 것은, 제1 규칙 세트에 포함된 복수의 규칙에 대응하는 공통 유효 비트를 결정하는 것으로 이해되거나, 제1 규칙 세트 내의 각 규칙의 유효 비트를 결정하는 것으로 이해될 수 있는데, 여기서 모든 규칙의 유효 비트는 동일하다. 각 규칙은 일반적으로 복수의 비트를 포함한다. 규칙의 유효 비트는 다음 해시 저장 작업에서 "유효"한 비트일 수 있고, 다음 해시 저장 작업에 참여하는 비트이다. 규칙의 유효 비트의 값을 기반으로 해시 저장 작업이 수행되며, 규칙의 유효 비트 이외의 비트의 값은 다음 해시 저장 작업에 참여하지 않는다.
관심 비트의 분포 특성은 관심 비트의 위치 특성 및 관심 비트의 수치적 특성을 포함할 수 있다. 제1 규칙 세트에 대응하는 유효 비트는 제1 규칙 세트 내의 복수의 규칙 중 관심 비트의 분포 특성에 기초하여 결정될 수 있다. 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위한 값이 위치한 비트를 포함한다. 예를 들어, 기본적인 결정 원리는, 제1 규칙 세트에 대응하는 유효 비트에서, 서로 다른 규칙의 값은 가능한 한 많이 "고유성"을 가져야 한다는 것, 즉, 상이한 규칙의 유효 비트 값은 가능한 많이 서로 달라야 한다는 것일 수 있다. 이러한 원리에 따라, 제1 규칙 세트에 대응하는 적어도 하나의 유효 비트가 결정될 수 있다. 유효 비트는 복수의 비트를 포함할 수 있으며, 서로 다른 규칙의 값이 가능한 한 많이 "고유성"을 가진다는 전제 하에, 유효 비트의 양은 최대한 감소될 수 있다는 것을 이해해야 한다. 이는 다음 해시 저장 작업의 작업량을 줄일 수 있다.
선택에 따라, 규칙의 유효 비트는 규칙의 관심 비트의 전체 또는 일부를 포함할 수 있다.
선택에 따라, 규칙의 유효 비트는 무관심 비트를 포함할 수 있다.
선택에 따라, 상이한 규칙의 값은 유효 비트에서 상이하다.
선택에 따라, 규칙의 일부의 값은 유효 비트에서 동일할 수 있다.
본 출원에서 제공되는 트래픽 분류 방법에서, 상이한 규칙 세트에 대응하는 유효 비트는 규칙 세트를 단위로 사용하여 결정될 수 있고, 그 다음 유효 비트 상의 값 및 규칙 세트 내의 규칙의 값에 기초하여 규칙에 대해 해시 저장이 수행되고 그 규칙은 복수의 저장 유닛에 저장된다. 따라서, 본 실시예에서 제공되는 트래픽 분류 방법은 높은 검색 성능, 낮은 리소스 소비 및 낮은 검색 지연을 특징으로 한다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정하기 전에, 방법은 초기 규칙 세트의 관심 비트의 분포 특성에 기초하여 초기 규칙 세트를 N개의 규칙 세트로 나누는 단계를 더 포함한다.
예를 들어, 분포 특성이 동일 또는 유사한 관심 비트를 갖는 규칙은 동일한 규칙 세트로 그룹화될 수 있다. 이것은 규칙 세트에 대응하는 유효 비트를 결정하는 데 도움이 될 수 있다.
여기서 관심 비트의 분포 특성은 주로 관심 비트의 수량 및 위치 특성과 관련된다는 것과, 관심 비트의 분포 특성이 동일 또는 유사하다는 것은 주로 관심 비트의 수량 및 관심 비트의 분포 위치가 동일하거나 유사하다는 것을 의미함을 이해해야 한다.
본 출원에서 제공하는 트래픽 분류 방법은 적절한 규칙 세트 분할 방법과 적절한 유효 비트 선택 방법의 조합을 통해, 규칙 삽입 동안 무관심 비트로 인해 발생하는 규칙 확장 문제를 크게 줄일 수 있다. 규칙을 삽입하는 동안, 현재 규칙의 유효 비트만을 기반으로 규칙 확장이 수행될 필요가 있다. 이것은 비교적 많은 양의 컴퓨팅 리소스와 저장 리소스를 소비하지 않는다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 제1 규칙 세트가 동일한 해시 키 값에 대응하는 복수의 규칙을 갖는 경우, 해시 키 값에 기초하여 제1 규칙 세트 내의 각각의 규칙을 S개의 저장 유닛 중 적어도 하나에 저장하는 단계는 동일한 해시 키 값에 대응하는 복수의 규칙을 상이한 저장 유닛에 저장하는 것을 포함한다. 상술한 설정을 통해, 해시 검색 동안, 특히 규칙 테이블 내의 규칙의 주소 인덱스가 슬롯에 저장되어 있는 경우, 동일한 저장 유닛에서 복수의 슬롯을 검색하는 것을 피할 수 있다. 이 경우, 하나의 저장 유닛에서 규칙 테이블을 여러 번 검색하는 것을 피할 수 있다(규칙 테이블을 검색하는 시간은 비교적 길다). 이것은 검색 지연을 줄이고 검색 효율을 향상시킬 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, S개의 저장 유닛은 병렬로 배치된다. 이러한 방식으로, S개의 저장 유닛에서 병렬 검색을 수행하여 규칙 검색 효율을 높일 수 있다.
선택에 따라, S개의 저장 유닛은 대안적으로 직렬로 배치될 수 있다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 각각의 저장 유닛은 해시 테이블 및 규칙 테이블을 포함하고, 제1 규칙 세트의 각 규칙을 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 저장하는 단계는, 규칙 테이블 내의 제1 규칙 세트에 각각의 규칙을 저장하는 단계, 및 각 규칙의 해시 키 값에 기초하여 해시 테이블에서 각 규칙의 저장 위치를 계산하고, 규칙 테이블 내의 각 규칙의 주소 인덱스를 저장 위치에 저장하는 단계를 포함한다.
제1 양태를 참조하면, 제1 양태의 일부 구현에서, 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 제1 규칙 세트의 각 규칙을 저장하는 단계는, 각 규칙의 해시 키 값을 기반으로 각 규칙의 지문 정보를 계산하는 것과, 각 규칙의 지문 정보를 저장 위치에 저장하는 것을 포함한다. 지문 정보의 설정은 "해시 충돌" 문제의 발생을 줄이고 규칙 매칭의 정확성과 효율성을 향상시킬 수 있다.
제2 양태에 따르면, 트래픽 분류 장치가 제공되는데, 이 장치는, 제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정하는 결정 유닛- 여기서 유효 비트는 복수의 규칙 내에서 상이한 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -와, 제1 규칙 세트 내의 각 규칙의 유효 비트 값에 기초하여 각 규칙의 해시 키 값을 결정하고, 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 제1 규칙 세트의 각 규칙을 저장하는 저장 유닛- 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, N개의 규칙 세트는 S개의 저장 유닛에 저장되고, N과 S는 1 이상의 정수이고, S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -과, 트래픽 분류가 수행되면, 검색 키의 해시 키 값에 기초하여 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하는 검색 유닛을 포함한다.
선택에 따라, 트래픽 분류 장치는 라우터 또는 스위치일 수 있다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 장치는 초기 규칙 세트의 관심 비트들의 분포 특성에 기초하여 초기 규칙 세트를 N개의 규칙 세트로 분할하도록 구성된 분할 유닛을 더 포함한다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 제1 규칙 세트가 동일한 해시 키 값에 대응하는 복수의 규칙을 갖는 경우, 저장 유닛은 동일한 해시 키 값에 대응하는 복수의 규칙을 상이한 저장 유닛에 저장하도록 추가로 구성된다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, S개의 저장 유닛은 병렬로 배치된다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 각각의 저장 유닛은 해시 테이블 및 규칙 테이블을 포함하고, 저장 유닛은, 제1 규칙 세트 내의 각 규칙을 규칙 테이블에 저장하고, 각 규칙의 해시 키 값에 기초하여, 해시 테이블에서 각 규칙의 저장 위치를 계산하고 규칙 테이블 내의 각 규칙의 주소 인덱스를 저장 위치에 저장하도록 더 구성된다.
제2 양태를 참조하면, 제2 양태의 일부 구현에서, 저장 유닛은 각 규칙의 해시 키 값에 기초하여 각 규칙의 지문 정보를 계산하고, 각 규칙의 지문 정보를 저장 위치에 저장하도록 추가로 구성된다.
제3 양태에 따르면, 메모리, 프로세서, 및 통신 인터페이스를 포함하는 트래픽 분류 장치가 제공된다. 메모리는 컴퓨터 프로그램을 저장하도록 구성되고, 프로세서는 메모리로부터 컴퓨터 프로그램을 호출하고 컴퓨터 프로그램을 실행하여, 트래픽 분류 장치가 제1 측면 또는 제1 측면의 임의의 가능한 구현에 따른 방법을 수행하도록 구성된다.
선택에 따라, 트래픽 분류 장치는 라우터 또는 스위치일 수 있다.
제4 양태에 따르면, 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 프로그램 제품은 컴퓨터 프로그램(코드 또는 명령어라고도 함)을 포함한다. 컴퓨터 프로그램이 컴퓨터 상에서 실행되면, 컴퓨터는 제1 양태에 따른 방법 또는 제1 양태의 임의의 가능한 구현을 수행할 수 있다.
제5 양태에 따르면, 컴퓨터 판독가능 저장 매체가 제공된다. 컴퓨터 판독가능 저장 매체는 컴퓨터 프로그램을 저장하도록 구성되고, 컴퓨터 프로그램은 제1 양태 또는 제1 양태의 임의의 가능한 구현에 따른 방법을 수행하는 데 사용되는 명령어를 포함한다.
제6 양태에 따르면, 칩 시스템이 제공된다. 칩 시스템은 메모리와 프로세서를 포함한다. 메모리는 컴퓨터 프로그램을 저장하도록 구성된다. 프로세서는 메모리로부터 컴퓨터 프로그램을 호출하고 컴퓨터 프로그램을 실행하여, 칩 시스템이 설치된 네트워크 장치가 제1 양태 또는 제1 양태의 임의의 가능한 구현에 따른 방법을 수행하도록 구성된다.
칩 시스템은 정보 또는 데이터를 전송하도록 구성된 입력 회로 또는 인터페이스, 및 정보 또는 데이터를 수신하도록 구성된 출력 회로 또는 인터페이스를 포함할 수 있다.
도 1은 해시 테이블 포레스트 알고리즘에 대응하는 규칙의 예의 개략도이다.
도 2는 도 1의 규칙에 대응하는 마스크를 도시한다.
도 3은 해시 테이블 포레스트 알고리즘에서 해시 테이블 간의 방향성 그래프의 개략도이다.
도 4는 본 출원에 따른 트래픽 분류 방법의 개략적인 흐름도이다.
도 5는 본 출원에 따른 해시 알고리즘 유닛의 논리적 구조도이다.
도 6은 본 출원에 따른 병렬 해시 알고리즘 유닛에 의해 트래픽 분류 검색이 구현되는 개략적인 블록도이다.
도 7은 본 출원에 따른 트래픽 분류 검색 장치의 개략적인 흐름도이다.
도 8은 본 출원에 따른 트래픽 분류 장치의 개략적인 구조도이다.
도 2는 도 1의 규칙에 대응하는 마스크를 도시한다.
도 3은 해시 테이블 포레스트 알고리즘에서 해시 테이블 간의 방향성 그래프의 개략도이다.
도 4는 본 출원에 따른 트래픽 분류 방법의 개략적인 흐름도이다.
도 5는 본 출원에 따른 해시 알고리즘 유닛의 논리적 구조도이다.
도 6은 본 출원에 따른 병렬 해시 알고리즘 유닛에 의해 트래픽 분류 검색이 구현되는 개략적인 블록도이다.
도 7은 본 출원에 따른 트래픽 분류 검색 장치의 개략적인 흐름도이다.
도 8은 본 출원에 따른 트래픽 분류 장치의 개략적인 구조도이다.
본 출원의 실시예의 이해를 용이하게 하기 위해, 본 출원의 개념이 먼저 간략하게 설명된다.
트래픽 분류는 일반적으로 일부 패킷 특성을 기반으로 몇 가지 규칙(rule)을 정의하고 이러한 규칙을 사용하여 특성의 유형에 맞는 패킷을 식별하고 패킷을 분류한다. 특정 규칙에 매칭되는 복수의 패킷이 하나의 트래픽을 구성한다. 현재 네트워크에서, 트래픽 분류 기능은 패킷 필터링, 서비스 품질 및 트래픽 통계 수집과 같은 기능 특성을 네트워크에 제공하기 위해, 라우터 및 스위치의 핵심 기능 중 하나가 되었다. 트래픽 분류의 원리는 패킷 헤더의 각 필드에 대한 정보를 추출하여 검색 키(search key)를 구성하고, 그런 다음 각 규칙의 대응하는 설정에 기초하여 매칭을 수행한다. 규칙의 설정이 충족되면, 규칙과 관련된 작업이 실행된다. 구성된 각각의 규칙은 우선순위 정보와 연관된다. 복수의 규칙이 매칭되면, 우선순위가 가장 높은 규칙의 작업이 수행된다.
트래픽 분류는 구성된 각각의 규칙에 대해 매칭이 수행되어야 할 것을 요구한다. 그러나, 순차적 매칭은 분명히 매우 큰 계산량과 지연을 발생시킨다. 현재, 널리 사용되는 솔루션에는 TCAM 기반의 하드웨어 솔루션과 결정 트리 알고리즘 기반의 규칙 세트 분할 솔루션을 포함한다. TCAM 기반 하드웨어 솔루션에서, 전용 하드웨어가 고성능 트래픽 검색 기능을 달성하기 위해 모든 규칙에 대해 병렬 매칭을 구현하도록 설계된다. TCAM은 고속 트래픽 분류 성능 및 간편한 리소스 관리 등 TCAM의 장점을 기반으로 고급 라우터 및 스위치에 사용된다. 그러나, TCAM은 높은 비용과 높은 전력 소모와 같이 TCAM의 더 많은 적용을 제한하는 문제를 가지고 있다.
규칙 세트를 분할하기 위한 결정 트리 알고리즘의 기본 개념은 각 규칙 서브세트 내의 규칙 수가 미리 설정된 임계값보다 작을 때까지 규칙 세트의 특성을 기반으로 규칙 세트를 재귀적으로 분할하는 것이다. 분할한 후, 트래픽 검색 동안 하나의 규칙 서브세트만 매칭되면 된다. 이러한 방식으로, 매칭되어야 하는 규칙의 수는 크게 줄어들어 고속 트래픽 검색 기능을 구현할 수 있다. 분할 프로세스는 결정 트리를 설정하는 프로세스이다. 결정 트리의 각 리프 노드는 분할 후 얻은 규칙 서브세트에 대응한다. 트래픽 매칭 동안, 먼저 결정 트리의 트리 구조를 기반으로 현재 트래픽에 대응하는 리프 노드가 발견되고, 이 후, 소정의 트래픽과 리프 노드에 대응하는 규칙 서브세트 간에 일대일 매칭이 수행된다. 현재, 결정 트리 기반의 전처리 알고리즘이 널리 사용되고 있는데, 전형적인 알고리즘은 HiCuts, HyperCuts, Modular 등을 포함한다.
HiCuts 및 HyperCuts 방법은 기하학적 관점에서 트래픽 분류 문제를 연구한다. 기하학적인 관점에서, 트래픽 분류기의 규칙이 n차원 공간에 각각 대응하는 n개의 필드(field)로 구성된다면, 각각의 규칙은 n차원 공간에서 하나의 "초사각형(hyperrectangle)" 영역에 대응하고, 각 패킷은 n차원 공간의 한 지점에 대응한다. 패킷에 매칭되는 규칙을 찾는 프로세스는 패킷에 대응하는 지점이 속하는 "초사각형"을 계산하는 것과 같다. HiCuts 및 HyperCuts 방법에서, 규칙의 각 필드는 범위로 간주되고, 상이한 범위의 필드는 분할을 위해 함께 모여 규칙 세트를 작은 규칙 서브세트로 나눈다. 규칙 서브세트의 규칙의 수가 미리 설정된 임계값보다 적으면, 분할은 종료된다. 분할을 통해 결정 트리가 생성될 수 있다. 결정 트리의 중간 노드는 분할을 위해 선택된 하나 이상의 차원(dimensions), 각 차원에서의 분할 횟수의 양, 및 리프 노드에 저장된 규칙 서브세트와 같은 분할 방법 관련 정보를 저장한다.
모듈러 알고리즘에서, 각 규칙의 각 필드는 "0" 또는 "1"로 인코딩되며, 각 규칙은 복수의 비트를 포함할 수 있다. 각 비트는 "0", "1" 또는 와일드카드이다. 와일드카드는 규칙의 현재 비트가 검색 키(key)의 대응하는 비트의 "0" 및 "1"과 동시에 매칭될 수 있음을 나타내는 "*"로 표시될 수 있다.
규칙 세트가 복수의 규칙 서브세트로 분할되는 경우, 규칙 세트 내의 위치에 대응하는 복수의 비트 상의 "0", "1" 또는 와일드카드의 양을 계산할 필요가 있고, 특정 알고리즘에 따라, 규칙 세트를 분할하기 위한 위치가 선택된다. HiCuts 및 HyperCuts 방법과 달리, 모듈러 알고리즘은 위치를 선택함으로써 규칙 세트에 대해 분할을 수행할 수 있다. 규칙 세트가 분할되는 참조 위치가 선택된 후, 규칙 세트에 포함된 복수의 규칙 중, 참조 위치가 "0"인 규칙이 규칙 서브세트에 포함된다. 규칙 세트에 포함된 복수의 규칙 중, 참조 위치가 "1"인 규칙은 다른 규칙 서브세트에 포함된다. 규칙 세트에 포함된 복수의 규칙 중, 참조 위치가 "*"인 규칙은 전술한 2개의 규칙 서브세트에 포함된다.
규칙이 k개의 "*"를 포함하는 경우, 규칙은 2k개의 규칙으로 확장될 수 있다.
예를 들어, 규칙 100110**은 규칙 10011000, 10011001, 10011010 및 10011011의 4가지 규칙으로 확장될 수 있다.
"0" 및 "1"이 위치하는 비트는 "관심 비트"로 지칭될 수 있다. 일부 트래픽이 규칙에 매칭되면, 트래픽의 이러한 비트는 규칙에 정확히 매칭될 필요가 있다. "*"가 있는 비트는 "무관심 비트"라고 할 수 있다. 트래픽이 규칙에 매칭되면, 트래픽의 이 비트에 대한 요구사항은 없다.
다른 예로, IP 범위 내의 필드 127.8.0.0/16은 01111111 00001000 ******** ********로 표현될 수 있다. 총 16개의 관심 비트(즉, 처음 16비트)가 포함된다. 일부 트래픽이 규칙에 매칭되면, 트래픽의 이들 비트는 규칙에 정확히 매칭될 필요가 있다. 나머지 16비트(즉, 마지막 16비트)는 무관심 비트이다. 일부 트래픽이 규칙에 매칭되면, 이러한 비트에 대한 요구사항은 없다.
표현의 편의를 위해, 규칙은 값 + 마스크(mask)의 형식, 예를 들어, 01111111 00001000 ******** ********(값) + 11111111 11111111 00000000 00000000 (마스크)로 저장될 수 있다. 마스크 비트가 '1'이라는 것은 규칙의 규칙의 대응하는 비트가 관심 비트임을 나타내고, 마스크 비트가 '0'이라는 것은 규칙의 대응하는 비트가 무관심 비트임을 나타낸다. 마찬가지로, 전술한 규칙 100110**의 경우, 대응하는 마스크는 11111100이다.
해시 테이블(hash table, 해시 맵이라고도 함)은 연관 어레이(associative array)를 구현하기 위한 데이터 구조이고, 고속 데이터 검색에 널리 사용된다. 해시 테이블은 두 가지 주요 작업을 갖는다. 하나의 작업은 요소가 해시 테이블에 삽입되는 쓰기(넣기) 작업이다. 다른 작업은 해시 테이블에서 요소를 빠르게 찾는 읽기(가져오기) 작업이다.
해시 테이블은 키 값(Key value)을 기반으로 직접 액세스되는 데이터 구조이다. 즉, 키 값을 테이블 내의 위치에 매핑함으로써 레코드에 액세스하여 검색 속도를 높인다. 이 매핑 함수는 해시 함수이고, 레코드를 저장하기 위한 어레이는 해시 테이블이다. 키 값이 k인 경우, 키 값은 해시 테이블 내의 f(k)의 저장 위치에 저장되고, 여기서 f는 해시 함수이다.
해시 알고리즘은 매우 높은 삽입 및 검색 성능을 제공하기 때문에, 해시 알고리즘은 트래픽 분류 검색 알고리즘으로도 사용될 수 있다. 해시 알고리즘은 규칙 내의 모든 비트가 관심 비트일 때 트래픽 분류 문제를 효과적으로 해결하여 높은 트래픽 검색 성능을 달성할 수 있다. 그러나, 규칙에 무관심 비트가 존재하는 경우, 하나의 규칙이 복수의 검색 키에 대응할 수 있다. 예를 들어 규칙 127.8.0.0/16(01111111 00001000 ******** ********)은 216개의 검색 키에 대응할 수 있다. 트래픽 검색은 216개의 검색 키를 모두 사용하여 이 규칙을 찾을 것을 요구한다. 따라서, 위의 규칙은 216개의 규칙으로 확장되어야 하며, 216개의 규칙은 하나씩 해시 테이블에 삽입된다. 결과적으로, 많은 양의 컴퓨팅 리소스 및 저장 리소스가 소비되어야 한다.
이하에서는 도 1 내지 도 3을 참조하여 트래픽 분류 검색 알고리즘의 일 예를 설명한다.
해시 알고리즘은 세트 삽입 및 검색을 수행할 때 매우 높은 성능을 제공한다. 단일 해시 테이블로는 무관심 비트를 처리하기 어렵다는 점을 고려하여, 해시 테이블 포레스트(hash table forest) 알고리즘을 사용하여 규칙 세트에서 마스크의 각 유형별로 해시 테이블을 구성할 수 있다. 그런 다음, 모든 해시 테이블에 대응하는 마스크 간의 커버리지 관계에 따라 방향성 그래프를 형성하여 검색 키의 검색 트래픽을 안내한다.
도 1은 해시 테이블 포레스트 알고리즘에 대응하는 규칙의 예의 개략도이다.
도 1에서, 규칙(1)부터 규칙(6)까지 총 6개의 규칙이 포함된다. 각 규칙은 IP 필드와 포트 필드를 포함하며, 각 규칙에서 무관심 비트의 분포는 다르다. 규칙(1)의 경우, IP 필드의 마지막 24비트는 무관심 비트이다. 규칙(2)의 경우, IP 필드의 마지막 16비트는 무관심 비트이다. 규칙(3)의 경우, IP 필드의 마지막 8비트는 무관심 비트이다. 규칙(4)의 경우, IP 필드의 마지막 8비트와 포트 필드의 모든 8비트는 무관심 비트이다. 규칙(5)의 경우, 포트 필드의 8비트는 모두 무관심 비트이다. 규칙(6)의 경우, 무관심 비트가 존재하지 않으며 모든 비트가 관심 비트이다.
도 1에 도시된 규칙에서 무관심 비트의 분포 상태에 기초하여 대응 마스크 유형의 수가 결정될 수 있다. 도 1의 6가지 규칙에서 무관심 비트의 분포 상태가 서로 다르기 때문에, 도 1의 6가지 규칙은 총 6가지 마스크 유형에 대응한다. 도 2는 도 1의 6가지 규칙에 대응하는 6가지 마스크 유형을 도시한다.
실제 적용 시, 전술한 6가지 규칙에 더하여, 규칙 세트는 복수의 다른 규칙을 더 포함할 수 있다. 본 실시예에서, 전술한 복수의 다른 규칙에 대응하는 마스크 유형이 모두 전술한 6가지의 마스크 유형에 포함되는 것으로 가정한다. 즉, 규칙 세트에서, 규칙(1)을 포함하는 복수의 규칙에 대응하는 마스크는 도 2의 마스크(1)일 수 있다. 이 경우, 마스크(1)에 대응하는 복수의 규칙은 해시 테이블(1)에 저장될 수 있다. 유사하게, 마스크(2) 내지 마스크(6)에 대응하는 복수의 규칙은 해시 테이블(2 내지 6)에 각각 저장될 수 있다. 여기서, 설명의 편의상, 마스크(1)에 대응하는 복수의 규칙에 의해 형성된 세트를 규칙 세트(1)라 하고, 마스크(2 내지 6)에 대응하는 복수의 규칙에 의해 형성된 세트를 각각 규칙 세트(2 내지 6)라 칭한다.
각 해시 테이블에서 각각의 검색 키를 검색할 필요가 없다는 점을 고려하여, 전술한 6개의 해시 테이블 각각에 대응하는 마스크 간의 커버리지 관계에 따라 방향성 그래프를 형성하여, 검색 키의 검색 트래픽을 안내할 수 있다. 도 3은 해시 테이블 포레스트 알고리즘에서 해시 테이블 간의 방향성 그래프의 개략도이다.
도 3에서, 각 규칙에 대해, 루트 노드로부터 전달된 모든 해시 테이블에 대해 순서대로 삽입 작업을 수행해야 한다. 해시 테이블(1)은 규칙 세트(1) 내의 복수의 규칙을 저장해야 한다. 또한, 규칙 세트(2,3,6)에 있는 복수의 규칙은 해시 테이블(1)에 삽입되어야 한다. 삽입하는 동안, 비트식 AND(&) 연산이 규칙 세트(1) 내의 복수의 규칙 및 마스크(1)에 대해 개별적으로 수행되고, 그런 다음 마스킹되지 않은 관심 비트의 값을 기반으로 해시 연산이 수행되어 해시 테이블(1)에서의 저장 위치를 계산한다. 이후, 대응하는 규칙이 저장 위치에 저장될 수 있다. 규칙 세트(2,3,6) 각각에 포함된 복수의 규칙에 대해, 복수의 규칙 및 마스크(1)에 대해 비트식 AND 연산이 또한 수행되며, 이후, 마스킹되지 않은 관심 비트의 값을 기반으로 해시 연산이 수행되어 해시 테이블(1)에서의 저장 위치를 계산한다. 이후, 대응 규칙의 포인터(디렉토리) 정보가 저장 위치에 저장될 수 있으며, 포인터 정보는 규칙에 의하여 전달되는 다음 해시 테이블을 가리킨다.
예를 들어, 규칙(6)의 경우, 규칙(6)은 해시 테이블(6)에 저장되어야 할 뿐만 아니라 규칙(6)은 또한 해시 테이블(1 내지 5)에도 삽입될 필요가 있다. 비트식 AND 연산은 규칙(6) 및 해시 테이블(1 내지 5)에 대응하는 마스크(1 내지 5)에 대해 별도로 수행되어, 해시 테이블(1 내지 5)에서의 저장 위치를 계산한다. 이후, 포인터 정보는 각 저장 위치에 저장되고 포인터 정보는 다음 해시 테이블, 예를 들어, 규칙(6)에 의하여 전달되는 다음 해시 테이블(6)을 가리킨다.
규칙 검색이 수행되면, 먼저 해시 테이블 포레스트의 모든 루트 노드, 예를 들어 해시 테이블(1) 및 해시 테이블(4)에서 검색 키 검색이 시작된다. 각 해시 테이블을 검색하는 동안, 비트식 AND 연산이 먼저 해시 테이블에 대응하는 마스크 및 현재 검색 키에 대해 수행되어 현재 해시 테이블의 키 값을 얻고, 그런 다음 키 값이 현재 해시 테이블에 있는지 여부가 판정된다. 키 값이 현재 해시 테이블에 없으면, 트래픽 검색 프로세스는 종료된다. 키 값이 현재 해시 테이블에 있으면, 규칙 매칭이 수행된다. 규칙 매칭이 실패하면, 검색 프로세스는 종료된다. 규칙 매칭이 성공하면, 포인터가 저장 위치에 있는지 여부가 확인되고 포인터가 다음 해시 테이블을 가리키는지 여부가 확인된다. 포인터가 없는 경우, 즉 다음 해시 테이블이 검색될 필요가 없으면, 우선순위가 가장 높은 매칭된 규칙이 반환된다. 검색을 계속해야 하는 경우, 다음 해시 테이블 검색을 계속한다.
도 1 내지 도 3에 제공된 트래픽 분류 검색 알고리즘에 따르면, 해시 테이블 포레스트의 구성 및 규칙 검색은 상대적으로 많은 계산량을 필요로 한다. 삽입된 각 규칙에 대해, 루트 노드로부터 전달된 모든 해시 테이블에 대해 순서대로 삽입 작업을 수행해야 한다. 규칙 검색 동안, 모든 루트 노드를 검색해야 한다. 결과적으로, 검색 지연이 상대적으로 크고 효율성이 낮다. 또한, 해시 테이블 포레스트의 루트 노드의 수는 동적으로 가변적이며 병렬 검색 파이프라인의 수는 가변적이다. 병렬 검색 파이프라인의 수가 상대적으로 클 경우, 상대적으로 많은 양의 검색 리소스를 소비해야 할 수도 있다.
전술한 문제를 해결하기 위해, 본 출원의 실시예는 트래픽 분류 방법의 다른 예를 제공하며, 여기서 트래픽 분류 방법은 높은 검색 성능, 낮은 리소스 소비 및 낮은 검색 지연을 특징으로 한다.
구체적으로, 도 4는 본 출원에 따른 트래픽 분류 방법(200)의 개략적인 흐름도이다. 방법(200)은 단계(210 내지 230)를 포함한다. 다음은 도 4를 참조하여 방법(200)을 설명한다.
단계(210): 제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정한다. 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위한 값이 위치한 비트를 포함한다.
단계(220): 제1 규칙 세트 내의 각 규칙의 유효 비트 값에 기초하여 각 규칙의 해시 키 값을 결정하고, 해시 키 값에 기초하여 제1 규칙 세트 내의 각 규칙을 S개의 저장 유닛 중 적어도 하나에 저장하되, 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, N개의 규칙 세트는 S개의 저장 유닛에 저장되고, N과 S는 1 이상의 정수이며, S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일하다.
트래픽 분류 검색을 수행하기 전에, 구성된 각각의 규칙은 먼저 검색 키에 의한 매칭을 위해 저장될 필요가 있다. 따라서, 단계(210) 및 단계(220)에서는 각각의 구성된(즉, 매칭될) 규칙을 저장하는 방법을 먼저 논의한다. 이 실시예에서, 규칙에 대해 수행되는 저장은 주로 규칙에 대해 수행되는 해시 저장을 포함한다.
가능한 구현에서, 구성된 복수의 규칙은 규칙 세트의 단위로 저장될 수 있다. 구체적으로, 설정된 복수의 규칙으로 이루어진 세트는 초기 규칙 세트라고 지칭될 수 있다. 초기 규칙 세트는 N개의 규칙 세트으로 분할되어 N개의 규칙 세트가 하나씩 저장될 수 있다.
제1 규칙 세트는 N개의 규칙 세트 중 어느 하나이다. 다음은 구성된 복수의 규칙을 저장하는 방법을 설명하기 위해 제1 규칙 세트를 예로 사용한다.
제1 규칙 세트는 복수의 규칙을 포함할 수 있고, 각 규칙은 복수의 비트를 포함하고, 복수의 규칙의 길이는 동일할 수 있다(즉, 포함된 비트의 양이 동일함). 각 규칙은 관심 비트를 포함할 수 있고, 무관심 비트를 더 포함할 수 있다. 제1 규칙 세트에 대응하는 유효 비트는 복수의 규칙 중 관심 비트의 분포 특성에 기초하여 결정될 수 있다.
여기서, 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위한 값이 위치하는 비트를 포함한다. 제1 규칙 세트에 대응하는 유효 비트를 결정하는 것은 제1 규칙 세트에 포함된 복수의 규칙에 대응하는 공통 유효 비트를 결정하는 것으로 이해되거나, 제1 규칙 세트 내의 각 규칙의 유효 비트를 결정하는 것으로 이해될 수 있는데, 여기서 모든 규칙의 유효 비트는 동일하다. 각 규칙은 일반적으로 복수의 비트를 포함한다. 규칙의 유효 비트는 다음 해시 저장 작업에서 "유효"한 비트일 수 있으며, 다음 해시 저장 작업에 참여하는 비트이다. 규칙의 유효 비트 값을 기반으로 해시 저장 작업을 수행하며, 규칙의 유효 비트 이외의 비트의 값은 다음 해시 저장 작업에 참여하지 않는다.
관심 비트의 분포 특성은 관심 비트의 위치 특성 및 관심 비트의 수치적 특성을 포함할 수 있다. 제1 규칙 세트에 대응하는 유효 비트는 제1 규칙 세트 내의 복수의 규칙 중 관심 비트의 분포 특성에 기초하여 결정될 수 있다. 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위한 값이 위치한 비트를 포함한다. 예를 들어, 기본적인 결정 원리는 다음과 같은데, 즉 제1 규칙 세트에 대응하는 유효 비트에서, 서로 다른 규칙의 값은 가능한 한 많이 "고유성"을 가져야 하는데, 즉, 다른 규칙의 유효 비트의 값은 최대한 서로 달라야 한다. 이 원리에 따라, 제1 규칙 세트에 대응하는 적어도 하나의 유효 비트가 결정될 수 있다. 유효 비트는 복수의 비트를 포함할 수 있으며, 서로 다른 규칙의 값이 가능한 한 많이 "고유성"을 가져야 한다는 전제 하에 유효 비트의 양을 최대한 줄일 수 있음을 이해해야 한다. 이는 다음 해시 저장 작업의 작업량을 줄일 수 있다.
예를 들어, 제1 규칙 세트는 규칙 101011**, 011111**, 10010***을 포함할 수 있다. 전술한 유효 비트 결정 원리에 기초하여, 전술한 세 가지 규칙을 포함하는 제1 규칙 세트에 대해, 제1 비트 내지 제3 비트는 제1 규칙 세트에 대응하는 유효 비트로 결정될 수 있다. 유효 비트에서, 앞의 세 가지 규칙의 값은 각각 101, 011, 100으로 서로 다르며 "고유성"을 갖는다. 또한, 해시 저장 작업의 작업량이 고려되지 않는 경우, 제1 비트 내지 제4 비트 또는 제1 비트 내지 제5 비트가 대안적으로 제1 규칙 세트에 대응하는 유효 비트로 결정될 수 있다.
선택에 따라, 규칙의 유효 비트는 규칙의 관심 비트의 전부 또는 일부를 포함할 수 있다.
또한, 규칙 확장에 의해 야기된 연산량을 줄이기 위해, 제1 규칙 세트에 대응하는 유효 비트는 규칙의 무관심 비트를 최대한 포함하지 않아야 한다. 구체적으로, 규칙(#1)은 제1 규칙 세트 내의 복수의 규칙 중 어느 하나일 수 있다. 규칙(#1)의 유효 비트가 K개의 무관심 비트를 포함하는 경우, 규칙 삽입 시, "*"를 포함하는 규칙은 해시 함수를 사용하여 직접 처리될 수 없기 때문에, 규칙(#1)은 확장되어야 하며 확장된 2K개의 확장된 규칙에 대해 하나씩 해시 저장이 수행된다. 이 경우 규칙(#1)이 상대적으로 많은 양의 무관심 비트를 포함한다면(즉, K의 값이 상대적으로 크다면), 상대적으로 많은 양의 컴퓨팅 리소스 및 저장 리소스가 소모되어야 한다.
본 출원에서, 기본적인 유효 비트 결정 원리는 서로 다른 규칙의 값이 가능한 한 많이 "고유성"을 가져야 하며, 제1 규칙 세트에 대응하는 유효 비트가 최대한 무관심 비트를 포함하지 않아야 한다는 것이다. 제1 규칙 세트에 대응하는 유효 비트가 이 원리에 따라 결정될 수 있다는 것은 본 출원의 이 실시예에서 유효 비트에 대한 서로 다른 규칙의 값이 확실히 "고유성"을 갖는다는 것(즉, 서로 다르다는 것)을 의미하지 않고, 또한 유효 비트가 반드시 무관심 비트를 포함하지 않는다는 것도 의미하지 않는다.
선택에 따라, 가능한 구현에서, 유효 비트에 대한 상이한 규칙의 값은 동일할 수 있다.
선택에 따라, 가능한 구현에서, 유효 비트는 무관심 비트를 포함할 수 있다.
제1 규칙 세트는 제1 규칙 세트 내의 각 규칙의 유효 비트 값에 기초하여 적어도 하나의 저장 유닛에 저장될 수 있다. 저장 유닛은 해시 저장 유닛일 수 있다.
본 출원의 이 실시예에서, 각 규칙의 해시 키 값은 제1 규칙 세트 내의 각 규칙의 유효 비트 값에 기초하여 결정될 수 있으며, 그런 다음 제1 규칙 세트 내의 각 규칙은 해시 키 값을 기반으로 적어도 하나의 저장 유닛에 저장된다.
저장 유닛은 해시 테이블을 포함할 수 있고, 규칙(#1)은 제1 규칙 세트 내의 복수의 규칙 중 어느 하나일 수 있다. 이하에서는 제1 규칙 세트를 저장하는 방법을 설명하기 위해 규칙(#1)을 예로 사용한다.
구체적으로, 규칙(#1)의 해시 키 값이 규칙(#1)의 유효 비트의 값을 기반으로 결정되고, 이후, 해시 키 값을 기반으로 해시 연산이 수행되어 해시 테이블에서의 규칙(#1)의 저장 위치를 결정하고, 규칙(#1)을 저장 위치에 저장한다. 규칙(#1)의 해시 키 값은 저장 위치에 저장될 수 있다. 선택에 따라, 규칙(#1)은 저장 위치에 저장될 수 있고, 규칙(#1)의 우선순위 정보는 저장 위치에 저장될 수 있다.
실제 적용시에, 대응하는 마스크 구성이 저장 유닛에 대해 설정될 수 있다. 마스크 구성은 규칙(#1)에 대응하는 해시 키 값을 다음과 같이 설정할 수 있는데, 즉 규칙(#1)의 유효 비트의 값만이 예약되고, 유효 비트 이외의 비트의 값은 "0"으로 대체된다.
선택에 따라, 저장 유닛은 규칙 테이블을 더 포함할 수 있고, 제1 규칙 세트 내의 각 규칙은 규칙 테이블에 저장될 수 있다. 규칙 테이블은 각 규칙의 우선순위 정보를 더 저장할 수 있다. 이 경우, 규칙 테이블에서 규칙(#1)의 주소 인덱스가 저장 위치에 저장될 수 있다.
선택에 따라, 해시 테이블에서 규칙(#1)의 저장 위치를 결정하기 위해 규칙(#1)의 해시 키 값에 기초하여 해시 연산이 수행된다. 저장 위치는 해시 테이블의 행 인덱스(인덱스(#1)로 표시됨)일 수 있다. 이 경우, 규칙(#1) 또는 규칙(#1)의 주소 인덱스는 행 인덱스(#1)의 빈 슬롯(slot)에 저장될 수 있다.
선택에 따라, 규칙(#2)은 제1 규칙 세트 내의 다른 규칙일 수 있고, 규칙(#2)의 유효 비트의 값은 규칙(#1)의 유효 비트의 값과 동일할 수 있다. 이 경우 해시 테이블에서 규칙(#2)의 저장 위치가 결정된다. 저장 위치는 인덱스(#1)일 수도 있다. 이 경우, 규칙(#2) 또는 규칙(#2)의 주소 인덱스는 행 인덱스(#1)의 다른 빈 슬롯에 저장될 수 있다.
선택에 따라, 규칙(#1)의 해시 키 값에 기초하여 2개의 해시 연산이 수행될 수 있다. 제1 해시 연산은 해시 테이블에서 규칙(#1)의 저장 위치를 결정하는 데 사용되며, 제2 연산은 규칙(#1)의 지문(fingerprint) 정보를 결정하고 저장 위치에 지문 정보를 저장하는 데 사용된다. 다음 해시 검색 프로세스에서, 검색 키에 대해 전술한 두 가지 해시 연산이 수행될 수 있다. 제2 연작을 통해 검색 키의 지문 정보를 획득한 후, 검색 키의 지문 정보와 저장 위치에서의 지문 정보를 매칭 및 비교할 수 있다. 두 개의 지문 정보가 동일한 경우에만, 해시 검색을 통해 획득한 저장 위치가 정확한 것으로 판단될 수 있으며, 이후의 규칙 매칭 작업이 수행된다. 지문 정보의 설정은 "해시 충돌" 문제의 발생을 줄일 수 있고 규칙 매칭의 정확도를 향상시킬 수 있다.
선택에 따라, 규칙 테이블이 최대 1회 매칭되도록 제한하기 위해, 동일한 행 내의 서로 다른 슬롯에 있는 지문 정보가 서로 상이하여 규칙 매칭 효율이 향상될 수 있다.
이상에서는 제1 규칙 세트를 저장하는 방법을 설명하였다. 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이다. N개의 규칙 세트는 초기 규칙 세트를 분할하여 얻을 수 있다. 초기 규칙 세트는 예를 들어 HiCuts, HyperCuts 또는 Modular와 같은 방법을 사용하여 임의의 방식으로 N개의 규칙 세트로 분할될 수 있다.
가능한 구현에서, 초기 규칙 세트는 관심 비트의 분포 특성에 기초하여 N개의 규칙 세트로 분할될 수 있다.
예를 들어, 분포 특성이 동일 또는 유사한 관심 비트를 갖는 규칙은 동일한 규칙 세트로 그룹화될 수 있다. 이것은 규칙 세트에 대응하는 유효 비트를 결정하는 데 도움이 될 수 있다.
여기에서 관심 비트의 분포 특성은 주로 관심 비트의 양 및 위치 특성과 관련되며, 관심 비트의 분포 특성이 동일하거나 유사하다는 것은 주로 관심 비트의 양 및 관심 비트의 분포 위치가 동일하거나 유사하다는 것을 의미함을 이해해야 한다.
구성된 각각의 규칙을 저장하기 위해, N개의 규칙 세트가 하나씩 저장될 수 있으며, 여기서 모든 규칙 세트의 결정된 유효 비트는 동일하거나 상이할 수 있다.
복수의 규칙 세트의 유효 비트가 동일한 경우, 복수의 규칙 세트는 동일한 저장 유닛에 저장될 수 있다. 또한, 저장 유닛이 작은 용량으로 인해 규칙 세트 내의 모든 규칙을 저장할 수 없는 경우, 규칙 세트는 복수의 저장 유닛에 저장될 수 있다. 본 출원의 실시예에서, 다음 해시 검색을 용이하게 하기 위해, 각 저장 유닛에 저장된 규칙의 유효 비트는 동일하다. 즉, 실제 적용시에, 각 저장 유닛에 대해 한 가지 유형의 마스크 구성만 설정된다.
또한, 가능한 구현에서, 제1 규칙 세트 내의 복수의 규칙은 동일한 해시 키 값에 대응한다(즉, 복수의 규칙의 유효 비트의 값이 동일한데, 예를 들어 규칙(#1) 및 규칙(#2)). 이 경우, 복수의 규칙은 서로 다른 저장 유닛에 저장될 수 있다. 해시 검색 동안, 특히 규칙 테이블에서 규칙의 주소 인덱스가 슬롯에 저장된 경우 동일한 저장 유닛에서 복수의 슬롯을 검색하는 것을 피할 수 있다. 이 경우, 하나의 저장 유닛에서 규칙 테이블을 여러 번 검색하는 것을 피할 수 있다(규칙 테이블을 검색하는 시간이 비교적 길다). 이것은 검색 지연을 줄이고 검색 효율성을 향상시킬 수 있다.
이전 분석에 기초하여, N개의 규칙 세트는 S개의 저장 유닛에 저장될 수 있고, N의 값은 S의 값보다 크거나 같거나 작을 수 있다.
가능한 구현에서, 분할될 대응하는 규칙 세트의 양은 하드웨어 설계에 채택된 저장 유닛의 양에 기초하여 결정될 수 있다. 즉, 규칙 세트의 수량(N의 값)은 저장 유닛의 수량(S의 값)과 동일할 수 있다. 이 경우, 하나의 규칙 세트는 하나의 저장 유닛에 대응할 수 있으며, 각 규칙 세트는 서로 다른 유효 비트에 대응한다.
선택에 따라, 해시 검색 효율이 향상될 수 있도록 S개의 저장 유닛이 병렬로 배치될 수 있다.
단계(230): 트래픽 분류가 수행되면, 검색 키의 해시 키 값에 기초하여 S개의 저장 유닛 각각에서 대응하는 규칙을 검색한다.
구체적으로, 트래픽 분류가 수행되면, 검색 키의 해시 키 값을 기반으로 S개의 저장 유닛 각각에서 해시 검색이 수행되는데, 즉 각 저장 유닛에서, 초기 키 값(즉, 검색 키)이 먼저 저장 유닛에 설정된 마스크 구성을 이용하여 저장 유닛의 대응 해시 키 값으로 변환되고, 저장 유닛에 해시 연산을 수행하여 저장 위치를 획득한 후, 규칙 매칭을 수행하기 위해 대응하는 저장 위치의 데이터 정보가 판독된다. 복수의 규칙이 매칭되는 경우, 우선순위가 가장 높은 규칙이 반환 결과로서 사용될 수 있다.
규칙이 저장 위치에 직접 저장된 경우, 저장 위치에서 규칙이 판독될 수 있고 규칙 매칭이 수행될 수 있다. 또는, 규칙 테이블 내의 규칙의 주소 인덱스가 저장 위치에 저장되어 있다면, 저장 위치에서 주소 인덱스가 판독될 수 있고, 주소 인덱스가 가리키는 규칙과의 매칭이 수행된다.
또한, 해시 키 값에 기초하여 2개의 해시 연산이 수행될 수 있다. 제2 연산을 통해 검색 키의 지문 정보를 획득한 후, 검색 키의 지문 정보와 저장 위치의 지문 정보 간에 매칭 및 비교가 수행될 수 있다. 두 지문 정보가 동일한 경우에만, 해시 검색을 통해 획득된 저장 위치가 정확한 것으로 판단될 수 있으며, 이후의 규칙 매칭 작업이 수행된다.
본 출원의 이 실시예에서 제공되는 트래픽 분류 방법에서, 상이한 규칙 세트에 대응하는 유효 비트는 규칙 세트의 단위로 결정될 수 있고, 그 다음 유효 비트 상 값 및 규칙 세트 내의 규칙의 값에 기초하여 규칙에 대해 해시 저장이 수행되고, 규칙은 복수의 저장 유닛에 저장된다. 따라서, 본 실시예에서 제공되는 트래픽 분류 방법은 높은 검색 성능, 낮은 리소스 소비 및 낮은 검색 지연을 특징으로 한다. 또한, 본 출원의 본 실시예에서 제공되는 트래픽 분류 방법은 적절한 규칙 세트 분할 방법과 적절한 유효 비트 선택 방법의 조합을 통해, 규칙 삽입 동안 무관심 비트"*"로 인해 발생하는 규칙 확장 문제를 크게 줄일 수 있다. 규칙 삽입 시, 현재 규칙의 유효 비트에 대해 "*"에만 기초하여 규칙 확장을 수행해야 한다. 이것은 비교적 많은 양의 컴퓨팅 리소스와 저장 리소스를 소비하지 않는다.
다음은 표 1에 도시된 특정 예에 기초하여 본 출원에서 제공되는 트래픽 분류 방법을 설명한다. 이 실시예는 전술한 실시예의 추가 설명으로 간주될 수 있다. 본 실시예에서, 초기 규칙 세트를 분할하는 방법 및 규칙 세트에 대응하는 유효 비트를 결정하는 방법이 주로 설명된다.
규칙 세트 | 규칙 | 소스 IP | 목적지 IP | 소스 포트 | 목적지 포트 | 프로토콜 유형 |
#1 | #1 | 10.22.132.90/32 | 0.0.0.0/0 | 0:65535 | 0:65535 | 0 |
#2 | 10.33.5.0/28 | 0.0.0.0/0 | 0:65535 | 0:65535 | 0 | |
#3 | 10.116.7.0/24 | 0.0.0.0/0 | 0:65535 | 0:65535 | 0 | |
#4 | 10.3.18.64/26 | 0.0.0.0/0 | 0:65535 | 0:65535 | 0 | |
#5 | 10.72.2.64/26 | 0.0.0.0/0 | 0:65535 | 0:65535 | 0 | |
#2 | #6 | 0.0.0.0/0 | 10.3.52.0/24 | 0:65535 | 0:65535 | 0 |
#7 | 0.0.0.0/0 | 10.33.17.0/25 | 0:65535 | 0:65535 | 0 | |
#8 | 0.0.0.0/0 | 10.22.37.72/32 | 0:65535 | 0:65535 | 0 | |
#9 | 0.0.0.0/0 | 10.22.39.0/27 | 0:65535 | 0:65535 | 0 | |
#10 | 0.0.0.0/0 | 10.8.7.1/32 | 0:65535 | 0:65535 | 0 | |
#11 | 0.0.0.0/0 | 10.2020.18/32 | 0:65535 | 0:65535 | 0 | |
#3 | #12 | 0.0.0.0/0 | 0.0.0.0/0 | 0:65535 | 135:135 | 0x06 |
#13 | 0.0.0.0/0 | 0.0.0.0/0 | 0:65535 | 137:137 | 0x11 |
표 1에 나타난 초기 규칙 세트는 총 13개의 규칙을 포함한다. 13개의 규칙은 각각 규칙(#1) 내지 규칙(#13)이다. 각 규칙은 소스 IP, 목적지 IP, 소스 포트, 목적지 포트 및 프로토콜 유형의 5개 필드를 포함한다.
규칙(#1) 내지 규칙(#5)의 경우, 목적지 IP, 소스 포트, 목적지 포트 및 프로토콜 유형의 비트는 모두 무관심 비트이며, 앞서 말한 5가지 규칙의 관심 비트는 주로 소스 IP 필드에 집중된다. 구체적으로, 규칙(#1) 내지 규칙(#5)의 관심 비트는 각각 소스 IP 필드(이진 비트로 변환된 후)의 처음 32비트, 28비트, 24비트, 26비트 및 26비트이다.
유사하게, 규칙(#6) 내지 규칙(#11)의 경우, 소스 IP, 소스 포트, 목적지 포트 및 프로토콜 유형의 비트는 모두 무관심 비트이고, 전술한 6가지 규칙의 관심 비트는 주로 목적지 IP 필드에 집중된다. 구체적으로, 규칙(#6) 내지 규칙(#11)의 관심 비트는 각각 목적지 IP 필드(이진 비트로 변환된 후)의 처음 24비트, 25비트, 32비트, 27비트, 32비트 및 32비트이다.
유사하게, 규칙(#12) 및 규칙(#13)의 경우, 소스 IP, 목적지 IP 및 소스 포트의 비트는 모두 무관심 비트이고, 전술한 두 규칙의 관심 비트는 주로 목적지 포트 필드 및 프로토콜 유형 필드에 집중된다.
전술한 분석에 기초하여, 후속적으로 규칙 세트의 유효 비트를 결정하는 것을 돕기 위해, 초기 규칙 세트는 먼저 초기 규칙 세트의 관심 비트의 분포 특성에 기초하여 분할될 수 있다. 구체적으로, 규칙(#1) 내지 규칙(#5)의 관심 비트는 주로 소스 IP 필드에 집중되고, 규칙(#6) 내지 규칙(#11)의 관심 비트는 주로 목적지 IP 필드에 집중되며, 규칙(#12) 및 규칙(#13)의 관심 비트는 주로 목적지 포트 필드와 프로토콜 유형 필드에 집중되어 있다. 따라서, 초기 규칙 세트는 3개의 규칙 세트로 나눠질 수 있다. 세 가지 규칙 세트는 각각 규칙 세트(#1) 내지 규칙 세트(#3)이며, 여기서 규칙 세트(#1)은 규칙(#1) 내지 규칙(#5)을 포함하고, 규칙 세트(#2)는 규칙(#6) 내지 규칙(#11)을 포함하고, 규칙 세트(#3)은 규칙(#12) 및 규칙(#13)을 포함한다. 또한, 전술한 3개의 규칙 세트는 대응하여 3개의 저장 유닛에 저장될 수 있다.
둘째, 각 규칙 세트에 대응하는 유효 비트가 각각 결정된다. 규칙 세트(#1)의 경우, 규칙(#1) 내지 규칙(#5)의 관심 비트들이 모두 소스 IP 필드에 집중되어 있으므로, 소스 IP 필드에 포함된 비트들을 기반으로 유효 비트가 결정될 수 있다.
선택에 따라, 소스 IP에 포함된 모든 32비트는 규칙 세트(#1)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 규칙 세트(#1)에 대응하는 유효 비트는 소스 IP에서 32비트이고, 규칙(#1) 규칙(#5)의 소스 IP에 포함된 32 비트의 값은 다음 해시 저장 연산에 참여하고, 나머지 비트의 값은 다음 해시 저장 연산에 참여하지 않는다. 또한, 규칙(#2) 내지 규칙(#5)의 경우, 유효 비트가 처음 28비트, 24비트, 26비트, 26비트뿐이므로, 소스 IP의 32비트 내의 무관심 비트가 삽입될 때 규칙 확장을 수행해야 한다.
선택에 따라, 규칙 확장 횟수를 줄이기 위해, 소스 IP 내의 처음 24 비트가 규칙 세트(#1)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 규칙(#1) 내지 규칙(#5)의 유효 비트는 무관심 비트를 포함하지 않는다. 따라서, 삽입하는 동안 규칙 확장은 수행될 필요가 없다. 이 경우, 규칙 세트(#1)에 대응하는 저장 유닛의 마스크 구성은 표 2의 마스크(1)일 수 있다. 삽입 동안, 규칙(#1) 내지 규칙(#5) 및 마스크(1)에 대해 비트식 AND 연산이 수행될 수 있다. 소스 IP의 각 규칙의 처음 24비트의 값은 해시 테이블에 삽입되는, 각 규칙의 해시 키 값으로 사용된다.
마스크 | 소스 IP | 목적지 IP | 소스 포트 | 목적지 포트 | 프로토콜 유형 |
마스크 #1 | 255.255.255.0 | 0.0.0.0 | 0x0000 | 0x0000 | 0x00 |
마스크 #2 | 0.0.0.0 | 255.255.255.0 | 0x0000 | 0x0000 | 0x00 |
마스크 #3 | 0.0.0.0 | 0.0.0.0 | 0x0000 | 0xFFFF | 0x00 |
선택에 따라, 규칙 삽입 동안 계산량을 줄이기 위해, 유효 비트의 양이 더 줄어들 수 있다. 구체적으로, 표 1은 10진수 소스 IP 주소를 보여준다. 10진 소스 IP 주소의 제2 비트에서, 규칙(#1) 내지 규칙(#5)의 값은 각각 22, 33, 116, 3, 72이며 서로 다르다. 따라서, 소스 IP 주소의 제2 비트(즉,이진법에서 제9 내지 제16 비트)는 규칙 세트(#1)에 대응하는 유효 비트로 결정될 수 있다. 이 경우 마스크(#1)는 0.255.0.0 0.0.0.0 0x0000 0x0000 0x00으로 설정될 수 있다. 마찬가지로, 10진수 소스 IP 주소의 제3 비트에서, 규칙(#1) 내지 규칙(#5)의 값은 각각 132, 5, 7, 18, 2이며 서로 다르다. 따라서, 소스 IP 주소의 제3 비트(즉, 이진법에서 제17 내지 제24 비트)는 규칙 세트(#1)에 대응하는 유효 비트로 결정될 수 있다. 이 경우 마스크(#1)은 0.0.255.0 0.0.0.0 0x0000 0x0000 0x00으로 설정될 수 있다.
유사하게, 규칙 세트(#2)의 경우, 규칙(#6) 내지 규칙(#11)의 관심 비트가 모두 목적지 IP 필드에 집중되어 있으므로, 유효 비트는 목적지 IP 필드에 포함된 비트에 기초하여 결정될 수 있다.
선택에 따라, 목적지 IP에 포함된 모든 32 비트는 규칙 세트(#2)에 대응하는 유효 비트로 결정될 수 있다.
선택에 따라, 규칙 확장 횟수를 줄이기 위해, 목적지 IP의 처음 24 비트는 규칙 세트(#2)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 규칙(#6) 내지 규칙(#11)의 유효 비트는 무관심 비트를 포함하지 않는다. 따라서, 삽입하는 동안, 규칙 확장은 수행될 필요가 없다. 이 경우, 규칙 세트(#2)에 대응하는 저장 유닛의 마스크 구성은 표 2의 마스크(2)일 수 있다. 삽입 동안, 규칙(#6) 내지 규칙(#11) 및 마스크(2)에 대해 비트식 AND 연산이 수행될 수 있다.
선택에 따라, 규칙 삽입 동안 계산량을 줄이기 위해, 유효 비트의 양이 더 줄어들 수 있다. 구체적으로 표 1은 10진수 목적지 IP 주소를 보여준다. 10진수 목적지 IP 주소의 제3 비트에서, 규칙(#6) 내지 규칙(#11)의 값은 각각 52, 17, 37, 39, 7, 20이며 서로 다르다. 따라서, 목적지 IP 주소의 제3 비트(즉, 이진법에서 제17 내지 제24 비트)는 규칙 세트(#2)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 마스크(#2)는 0.0.0.0 0.0.255.0 0x0000 0x0000 0x00으로 설정될 수 있다.
유사하게, 규칙 세트(#3)의 경우, 규칙(#12) 및 규칙(#13)의 관심 비트가 모두 목적지 포트 필드 및 프로토콜 유형 필드에 집중되어 있기 때문에, 유효 비트는 목적지 포트 필드 및 프로토콜 유형 필드에 포함된 비트를 기반으로 결정될 수 있다.
선택에 따라, 목적지 포트 필드에 포함된 비트는 규칙 세트(#3)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 규칙 세트(#3)에 대응하는 저장 유닛의 마스크 구성은 표 2의 마스크(3)일 수 있다. 삽입 동안, 규칙(#12 및 #13) 및 마스크(3)에 대해 비트식 AND 연산이 수행될 수 있다.
선택에 따라, 프로토콜 유형 필드에 포함된 비트는 또한 규칙 세트(#3)에 대응하는 유효 비트로 결정될 수 있다. 이 경우, 마스크(#3)는 0.0.0.0 0.0.0.0 0x0000 0x0000 0xFF로 설정될 수 있다.
셋째, 전술한 3개의 규칙 세트가 3개의 저장 유닛에 대응하여 저장된 후, 전술한 3개의 저장 유닛은 검색 효율을 향상시키기 위해 병렬로 배치될 수 있다.
넷째, 트래픽 분류 검색 동안, 검색 키를 기반으로 전술한 3개의 저장 유닛에서 동시에 검색이 수행될 수 있다. 각 저장 유닛에서, 초기 키 값이 먼저 저장 유닛에 대해 설정된 마스크 구성을 사용함으로써 저장 유닛의 대응하는 해시 키 값으로 변환되고, 저장 유닛에서 해시 연산을 수행하여 저장 위치가 얻어진 후, 규칙 매칭을 수행하기 위해 대응하는 저장 위치의 데이터 정보가 판독된다.
도 5는 본 출원에 따른 해시 알고리즘 유닛의 논리적 구조도이다. 도 5에서, 본 출원의 이 실시예에서 제공되는 해시 알고리즘 유닛은 마스크 모듈, 연산 모듈, 해시 테이블 모듈 및 규칙 테이블 모듈을 포함한다. 마스크 모듈에는 해시 연산을 수행하기 위해 현재 해시 알고리즘 유닛에 의해 선택된 유효 비트가 설정되어 있다. 마스크 모듈은 검색 키를 대응하는 해시 키 값으로 변환할 수 있다. 연산 모듈은 해시 키 값을 기반으로 해시 연산을 수행하도록 구성된다. 해시 테이블 모듈은 주소 인덱스 및 지문 정보와 같은 규칙 콘텐츠를 저장한다. 규칙 테이블은 최종적으로 완전한 규칙 매칭을 수행하기 위해, 완전한 규칙 정보를 저장하는 데 사용된다.
도 5에 도시된 해시 알고리즘 유닛의 작업 절차는 다음과 같은데, 즉 해시 알고리즘 유닛에 검색 키(k1)가 입력되면, 먼저 검색 키(k1) 및 마스크 모듈에 의해 구성된 마스크(mask)에 대해 비트식 AND(&) 연산을 수행하여, 검색 키(k1)를 해시 알고리즘 유닛에서 해시 테이블의 해시 키 값(k2)으로 변환한다.
예를 들어, 검색 키(k1)는 10111001 01011110일 수 있고, 마스크(mask)는 11110000 00000000일 수 있다. 이 경우, 검색 키(k1) 및 마스크(mask)에 대해 비트식 AND 연산을 수행한 후, 획득된 해시 키 값(k2)은 10110000 00000000이다.
이어서, 해시 테이블에 저장되는, 규칙의 행 인덱스를 계산하기 위해 해시 키 값(k2) 및 제1 해시 함수(f1)에 대해 제1 해시 연산이 수행된다. 그런 다음, 행 내의 복수의 슬롯에서 검색이 수행된다. 슬롯이 해시 키 값(k2)을 저장하고 규칙의 주소 인덱스도 저장하는 경우, 주소 인덱스는 규칙 테이블 모듈에서 위치를 나타내는 데 사용되며, 관련 규칙의 완전한 정보가 해당 위치에 저장된다. 이 경우, 관련 규칙은 반환 결과로 사용될 수 있다.
또한, 해시 충돌을 피하기 위해, 해시 키 값(k2) 및 제2 해시 함수(f2)에 대해 제2 해시 연산을 더 수행하여 규칙의 지문(fingerprint) 정보를 계산하고 이 규칙의 지문 정보를 슬롯 내의 지문 정보와 비교할 수 있다. 두 지문 정보가 동일한 경우에만, 해시 검색을 통해 얻은 저장 위치가 올바른 것으로 판단하고 다음 규칙 매칭 작업이 수행되어야 한다.
도 6은 본 출원에 따른 병렬 해시 알고리즘 유닛에 의해 트래픽 분류 검색이 구현되는 개략적인 블록도이다.
도 6에서, 총 S개의 해시 알고리즘 유닛이 병렬로 배치되어 있다. 키 구성 유닛은 패킷 헤더에서 각 필드의 정보를 추출하여 검색 키를 구성하고, 그런 다음 S개의 병렬 해시 알고리즘 유닛에 검색 키를 입력하여 병렬 검색을 수행한다. 각 해시 알고리즘 유닛에서, 검색 키는 먼저 마스크 모듈에 의해 구성된 마스크를 사용하여 해시 알고리즘 유닛의 대응하는 해시 키 값으로 변환되고, 그 다음, 해시 알고리즘 유닛에서 해시 연산이 수행되고, 주소를 얻은 후, 대응하는 주소의 데이터 정보가 판독되고 규칙 매칭 및 비교가 수행된다. 매칭이 성공하면, 규칙이 매칭되고 규칙이 비교 유닛으로 전송된다. 복수의 규칙이 매칭되는 경우, 비교 유닛은 복수의 규칙의 우선순위를 비교하고, 출력 결과로서 가장 높은 우선순위를 갖는 규칙을 선택하도록 구성된다.
도 7은 본 출원에 따른 트래픽 분류 검색 장치(300)의 개략적인 흐름도이다. 장치(300)는 트래픽 분류 장치일 수 있고, 트래픽 분류 장치에 배치된 칩 또는 회로일 수 있다. 예를 들어, 장치(300)는 라우터 또는 스위치일 수 있거나, 라우터 또는 스위치 내의 칩일 수 있다. 도 7에 도시된 바와 같이, 장치(300)는:
결정 유닛(310)- 이 결정 유닛은 제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 제1 규칙 세트에 대응하는 유효 비트를 결정하도록 구성되며, 유효 비트는 복수의 규칙에서 서로 다른 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -과,
저장 유닛(320)- 이 저장 유닛은 제1 규칙 세트 내의 각 규칙의 유효 비트의 값에 기초하여 각 규칙의 해시 키 값을 결정하고, 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 제1 규칙 세트 내의 각 규칙을 저장하도록 구성되고, 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, N개의 규칙 세트는 S개의 저장 유닛에 저장되고 N과 S는 1 이상의 정수이며, S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -과,
트래픽 분류가 수행될 때, 검색 키의 해시 키 값에 기초하여 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하도록 구성된 검색 유닛(330)을 포함한다.
선택에 따라, 장치(300)는 초기 규칙 세트의 관심 비트의 분포 특성에 기초하여 초기 규칙 세트를 N개의 규칙 세트로 분할하도록 구성된 분할 유닛을 더 포함한다.
선택에 따라, 제1 규칙 세트가 동일한 해시 키 값에 대응하는 복수의 규칙을 갖는 경우, 저장 유닛(320)은 동일한 해시 키 값에 대응하는 복수의 규칙을 상이한 저장 유닛(320)에 저장하도록 더 구성된다.
선택에 따라, 각각의 저장 유닛(320)은 해시 테이블 및 규칙 테이블을 포함하고, 저장 유닛(320)은 규칙 테이블 내에 제1 규칙 세트의 각 규칙을 저장하고, 각 규칙의 해시 키 값에 기초하여, 해시 테이블 내의 각 규칙의 저장 위치를 계산하고 규칙 테이블 내의 각 규칙의 주소 인덱스를 저장 위치에 저장하도록 더 구성된다.
선택에 따라, 저장 유닛(320)은 각 규칙의 해시 키 값에 기초하여 각 규칙의 지문 정보를 계산하고, 저장 위치에 각 규칙의 지문 정보를 저장하도록 더 구성된다.
도 7에 도시된 트래픽 분류 장치(300)는 본 출원의 실시예에 따른 트래픽 분류 방법(200)의 트래픽 분류 장치에 대응할 수 있다. 장치(300)는 도 4의 트래픽 분류 방법(200)을 수행하도록 구성된 트래픽 분류 장치에 의해 수행되는 방법의 모듈을 포함할 수 있다. 또한, 장치(300)의 모듈 및 전술한 다른 동작 및/또는 기능은 도 4의 트래픽 분류 방법(200)의 대응하는 절차를 구현하기 위해 별개로 사용된다. 모듈이 전술한 대응하는 단계를 수행하는 특정 프로세스는 방법(200)에서 상세히 설명된다. 간결함을 위해, 세부사항은 여기에서 다시 설명되지 않는다.
도 8은 본 출원의 실시예에 따른 트래픽 분류 장치(400)의 개략적인 구조도이다. 장치(400)는 트래픽 분류 장치일 수 있고, 트래픽 분류 장치에 배치된 칩 또는 회로일 수 있다. 예를 들어, 장치(400)는 라우터 또는 스위치일 수 있거나, 라우터 또는 스위치 내의 칩일 수 있다. 도 8에 도시된 바와 같이, 장치(400)는 프로세서(410), 메모리(420), 및 통신 인터페이스(430)를 포함한다. 메모리(420)는 명령어를 저장한다. 프로세서(410)는 메모리(420) 내의 명령어를 실행하도록 구성된다. 명령어가 실행되면, 프로세서(410)는 전술한 방법 실시예에서 제공된 방법을 수행하도록 구성된다. 프로세서(410)는 외부와 통신하도록 통신 인터페이스(430)를 제어하도록 더 구성된다.
또한, 프로세서(410), 메모리(420) 및 통신 인터페이스(430)는 내부 연결 경로를 이용하여 서로 통신하여 제어 신호 및/또는 데이터 신호를 전달할 수 있다.
또한, 메모리(420)는 프로세서(410)에 통합되거나 프로세서(410)와 별도로 배치될 수 있다.
구체적으로, 트래픽 분류 장치(400)는 도 4의 트래픽 분류 방법(200)의 단계들을 수행하도록 구성될 수 있다. 장치(400)는 도 4의 트래픽 분류 방법(200)을 수행하도록 구성된 트래픽 분류 장치에 의해 수행되는 방법의 모듈을 포함할 수 있다. 또한, 장치(400)의 모듈과 전술한 다른 동작 및/또는 기능은 도 4의 트래픽 분류 방법(200)의 대응하는 절차를 구현하기 위해 별개로 사용된다. 모듈이 전술한 대응하는 단계를 수행하는 특정 프로세스는 방법(200)에서 상세히 설명된다. 간결함을 위해, 세부사항은 여기에서 다시 설명되지 않는다.
본 출원의 실시예는 컴퓨터 판독가능 저장 매체를 더 제공한다. 컴퓨터 판독가능 저장매체는 컴퓨터 프로그램을 포함한다. 컴퓨터 프로그램이 컴퓨터 상에서 실행될 때, 컴퓨터는 전술한 방법 실시예에 따른 방법을 수행할 수 있다.
본 출원의 실시예는 명령어를 포함하는 컴퓨터 프로그램 제품을 더 제공한다. 컴퓨터 프로그램 제품이 컴퓨터 상에서 실행될 때, 컴퓨터는 전술한 방법 실시예에 따른 방법을 수행할 수 있다.
본 출원의 실시예는 메모리 및 프로세서를 포함하는 칩 시스템을 더 제공한다. 메모리는 컴퓨터 프로그램을 저장하도록 구성된다. 프로세서는 메모리로부터 컴퓨터 프로그램을 호출하고 컴퓨터 프로그램을 실행하도록 구성되어, 칩 시스템이 설치된 네트워크 장치가 전술한 방법 실시예에 따른 방법을 수행하게 한다.
칩 시스템은 정보 또는 데이터를 전송하도록 구성된 입력 회로 또는 인터페이스, 및 정보 또는 데이터를 수신하도록 구성된 출력 회로 또는 인터페이스를 포함할 수 있다.
본 출원의 실시예들에서 프로세서는 중앙 처리 장치(central processing unit, CPU)일 수 있거나, 또는 추가로 다른 범용 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 애플리케이션 특정 집적 회로(application specific integrated circuit, ASIC), 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA), 또는 다른 프로그래머블 로직 장치, 이산 게이트 또는 트랜지스터 로직 장치, 이산 하드웨어 컴포넌트 등일 수 있다. 범용 프로세서는 마이크로프로세서일 수 있거나, 프로세서는 임의의 통상적인 프로세서 등일 수 있다.
본 출원의 실시예들에서의 메모리는 휘발성 메모리 또는 비휘발성 메모리일 수 있거나, 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다는 것이 이해될 수 있다. 비휘발성 메모리는 읽기 전용 메모리(read-only memory, ROM), 프로그램 가능한 읽기 전용 메모리(programmable ROM, PROM), 소거 가능한 프로그램 가능한 읽기 전용 메모리(erasable PROM, EPROM), 전기적으로 소거 가능한 프로그램 가능한 읽기 전용 메모리(전기적으로 EPROM, EEPROM) 또는 플래시 메모리일 수 있다. 휘발성 메모리는 외부 캐시로서 사용되는 랜덤 액세스 메모리(random access memory, RAM)일 수 있다. 제한적 설명이 아닌 예로서, 많은 형태의 랜덤 액세스 메모리(random access memory, RAM), 예를 들어 정적 랜덤 액세스 메모리(static RAM, SRAM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(synchronous DRAM, SDRAM), 더블 데이터 레이트 동기식 동적 랜덤 액세스 메모리(double data rate SDRAM, DDR SDRAM), 향상된 동기식 동적 랜덤 액세스 메모리(enhanced SDRAM, ESDRAM), 싱크링크 동적 랜덤 액세스 메모리(synchlink DRAM, SLDRAM) 및 다이렉트 램버스 동적 랜덤 액세스 메모리(direct rambus RAM, DR RAM)가 이용가능하다.
당업자라면 본 명세서에 개시된 실시예에 설명된 예와 연계하여, 유닛 및 알고리즘 단계가 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 조합에 의해 구현될 수 있음을 알 수 있다. 기능이 하드웨어에 의해 수행되는지 소프트웨어에 의해 수행되는지 여부는 기술 솔루션의 특정 애플리케이션 및 설계 제약 조건에 따라 다르다. 당업자는 각각의 특정 애플리케이션에 대해 설명된 기능을 구현하기 위해 다른 방법을 사용할 수 있지만, 구현은 본 출원의 범위를 벗어나는 것으로 간주되어서는 안된다.
편리하고 간략한 설명을 위해, 앞서 설명한 시스템, 장치 및 유닛에 대한 상세한 작동 과정과 관련하여, 앞서 설명한 방법의 대응 과정을 참조한다는 것은 당업자에 의해 명확하게 이해될 수 있고, 따라서 세부 사항은 여기에서 다시 설명되지 않는다.
본 출원에 제공된 여러 실시예에서, 개시된 시스템, 장치 및 방법은 다른 방식으로 구현될 수 있음을 이해해야 한다. 예를 들어, 설명된 장치 실시예는 단지 예일 뿐이다. 예를 들어, 유닛의 분할은 단순히 논리적 기능 분할이며 실제 구현 시 다른 분할일 수 있다. 예를 들어, 복수의 유닛 또는 컴포넌트는 다른 시스템에서 결합되거나 통합될 수 있고, 또는 일부 기능은 무시되거나 수행되지 않을 수 있다. 또한, 표시되거나 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 일부 인터페이스를 통해 구현될 수 있다. 장치 또는 유닛 간의 간접 결합 또는 통신 연결은 전자, 기계 또는 기타 형태로 구현될 수 있다.
별도의 부분으로 설명된 유닛은 물리적으로 분리되거나 분리되지 않을 수 있으며, 유닛으로 표시된 부분은 물리적 유닛일 수도 있고 아닐 수도 있으며, 한 위치에 있을 수도 있고, 복수의 네트워크 유닛 상에 분산될 수도 있다. 유닛의 일부 또는 전부는 실시예의 솔루션의 목적을 달성하기 위한 실제 요구사항에 기초하여 선택될 수 있다.
또한, 본 출원의 실시예에서 기능 유닛은 하나의 처리 유닛으로 통합될 수 있거나, 각각의 유닛이 물리적으로 단독으로 존재할 수 있거나, 또는 둘 이상의 유닛이 하나의 유닛으로 통합될 수 있다.
기능들이 소프트웨어 기능 유닛의 형태로 구현되어 독립된 제품으로 판매되거나 사용되는 경우, 그 기능들은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 이러한 이해를 바탕으로, 본질적으로 본 출원의 기술 솔루션, 또는 기존 기술에 기여하는 부분, 또는 기술 솔루션의 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체에 저장되며 컴퓨터 장치(개인용 컴퓨터, 서버 또는 네트워크 장치일 수 있음)에게 본 출원의 실시예에 설명된 방법의 단계 전부 또는 일부를 수행하도록 지시하기 위한 여러 명령어를 포함한다. 전술한 저장 매체는 USB 플래시 드라이브, 이동식 하드 디스크, 읽기 전용 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크와 같이 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
전술한 설명은 단지 본 출원의 특정 구현일 뿐, 본 출원의 보호 범위를 제한하려는 것은 아니다. 본 출원에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 변형예 또는 대체예는 본 출원의 보호 범위에 속할 것이다. 따라서, 본 출원의 보호 범위는 청구범위의 보호 범위에 따른다. 전술한 설명은 단지 본 발명의 특정한 구현일 뿐이며, 본 발명의 보호 범위를 제한하려는 것은 아니다. 본 발명에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 변형예 또는 대체예는 본 발명의 보호 범위에 속할 것이다. 따라서, 본 발명의 보호 범위는 청구범위의 보호 범위에 따른다.
Claims (13)
- 트래픽 분류 방법으로서,
제1 규칙 세트 내의 복수의 규칙의 관심 비트(concerned bits)의 분포 특성에 기초하여, 상기 제1 규칙 세트에 대응하는 유효 비트를 결정하는 단계- 상기 유효 비트는 상기 복수의 규칙에서 상이한 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -와,
상기 제1 규칙 세트 내의 각 규칙의 상기 유효 비트의 값에 기초하여 각 규칙의 해시 키 값을 결정하고, 상기 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 상기 제1 규칙 세트의 각 규칙을 저장하는 단계- 상기 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, 상기 N개의 규칙 세트는 상기 S개의 저장 유닛에 저장되고, 상기 N과 S는 1 이상의 정수이고, 상기 S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -와,
트래픽 분류가 수행되면, 검색 키의 해시 키 값을 기반으로 상기 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하는 단계를 포함하며,
상기 제1 규칙 세트가 동일한 해시 키 값에 대응하는 복수의 규칙을 갖는 경우, 상기 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 상기 제1 규칙 세트의 각 규칙을 저장하는 단계는
상기 동일한 해시 키 값에 대응하는 상기 복수의 규칙을 상이한 저장 유닛에 저장하는 단계를 포함하는
트래픽 분류 방법. - 제1항에 있어서,
제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 상기 제1 규칙 세트에 대응하는 유효 비트를 결정하는 단계 이전에, 상기 방법은,
초기 규칙 세트의 관심 비트의 분포 특성에 기초하여, 상기 초기 규칙 세트를 상기 N개의 규칙 세트로 나누는 단계를 더 포함하는
트래픽 분류 방법. - 삭제
- 제1항에 있어서,
상기 S개의 저장 유닛은 병렬로 배치되는
트래픽 분류 방법. - 제1항에 있어서,
각각의 저장 유닛은 해시 테이블 및 규칙 테이블을 포함하고,
상기 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 상기 제1 규칙 세트의 각 규칙을 저장하는 단계는
상기 규칙 테이블에 상기 제1 규칙 세트의 각 규칙을 저장하는 단계와,
각 규칙의 상기 해시 키 값에 기초하여, 상기 해시 테이블에서의 각 규칙의 저장 위치를 계산하고, 상기 규칙 테이블 내의 각 규칙의 주소 인덱스를 상기 저장 위치에 저장하는 단계를 포함하는
트래픽 분류 방법. - 제5항에 있어서,
상기 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 상기 제1 규칙 세트의 각 규칙을 저장하는 단계는
각 규칙의 상기 해시 키 값을 기반으로 각 규칙의 지문 정보를 계산하고, 각 규칙의 상기 지문 정보를 상기 저장 위치에 저장하는 단계를 포함하는
트래픽 분류 방법. - 트래픽 분류 장치로서,
제1 규칙 세트 내의 복수의 규칙의 관심 비트의 분포 특성에 기초하여, 상기 제1 규칙 세트에 대응하는 유효 비트를 결정하도록 구성된 결정 유닛- 상기 유효 비트는 상기 복수의 규칙에서 상이한 규칙을 구별하기 위해 사용되는 값이 위치하는 비트를 포함함 -과,
상기 제1 규칙 세트 내의 각 규칙의 상기 유효 비트의 값에 기초하여 각 규칙의 해시 키 값을 결정하고, 상기 해시 키 값에 기초하여 S개의 저장 유닛 중 적어도 하나에 상기 제1 규칙 세트의 각 규칙을 저장하는 저장 유닛- 상기 제1 규칙 세트는 N개의 규칙 세트 중 임의의 하나이고, 상기 N개의 규칙 세트는 상기 S개의 저장 유닛에 저장되고, 상기 N과 S는 1 이상의 정수이고, 상기 S개의 저장 유닛 각각에 저장된 규칙의 유효 비트는 동일함 -과,
트래픽 분류가 수행되면, 검색 키의 해시 키 값을 기반으로 상기 S개의 저장 유닛 각각에서 대응하는 규칙을 검색하는 검색 유닛을 포함하며,
상기 제1 규칙 세트가 동일한 해시 키 값에 대응하는 복수의 규칙을 갖는 경우, 상기 저장 유닛은 상기 동일한 해시 키 값에 대응하는 상기 복수의 규칙을 상이한 저장 유닛에 저장하도록 더 구성되는
트래픽 분류 장치. - 제7항에 있어서,
초기 규칙 세트의 관심 비트의 분포 특성에 기초하여, 상기 초기 규칙 세트를 상기 N개의 규칙 세트로 분할하는 분할 유닛을 더 포함하는
트래픽 분류 장치. - 삭제
- 제7항 또는 제8항에 있어서,
상기 S개의 저장 유닛는 병렬로 배치되는
트래픽 분류 장치. - 제7항 또는 제8항에 있어서,
각각의 저장 유닛은 해시 테이블 및 규칙 테이블을 포함하고, 상기 저장 유닛은,
상기 규칙 테이블에 상기 제1 규칙 세트의 각 규칙을 저장하고,
각 규칙의 상기 해시 키 값을 기반으로, 상기 해시 테이블에서의 각 규칙의 저장 위치를 계산하고, 상기 규칙 테이블 내의 각 규칙의 주소 인덱스를 상기 저장 위치에 저장하도록 더 구성되는
트래픽 분류 장치. - 제11항에 있어서,
상기 저장 유닛은,
각 규칙의 상기 해시 키 값을 기반으로 각 규칙의 지문 정보를 계산하고 각 규칙의 상기 지문 정보를 상기 저장 위치에 저장하도록 더 구성되는
트래픽 분류 장치. - 칩 시스템으로서,
메모리로부터 컴퓨터 프로그램을 호출하고 상기 컴퓨터 프로그램을 실행시켜, 상기 칩 시스템이 설치된 네트워크 장치가 제1항, 제2항 및 제4항 내지 제6항 중 어느 한 항에 따른 방법을 수행하게 하도록 구성된 프로세서를 포함하는
칩 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910294640.0A CN111817978B (zh) | 2019-04-12 | 2019-04-12 | 一种流分类方法及装置 |
CN201910294640.0 | 2019-04-12 | ||
PCT/CN2020/081113 WO2020207248A1 (zh) | 2019-04-12 | 2020-03-25 | 一种流分类方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210121253A KR20210121253A (ko) | 2021-10-07 |
KR102601351B1 true KR102601351B1 (ko) | 2023-11-10 |
Family
ID=72750941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217029001A KR102601351B1 (ko) | 2019-04-12 | 2020-03-25 | 트래픽 분류 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11882047B2 (ko) |
EP (1) | EP3917099A4 (ko) |
JP (1) | JP7170905B2 (ko) |
KR (1) | KR102601351B1 (ko) |
CN (1) | CN111817978B (ko) |
WO (1) | WO2020207248A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11245625B2 (en) * | 2019-08-07 | 2022-02-08 | Arista Networks, Inc. | Generating entries in a content addressable memory of a network device |
CN112667526B (zh) * | 2021-03-22 | 2021-06-29 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
CN113468202B (zh) * | 2021-06-30 | 2024-05-17 | 深圳软牛科技有限公司 | 内存数据的筛选方法、装置、设备及存储介质 |
KR102403376B1 (ko) * | 2022-02-23 | 2022-05-30 | 경희대학교 산학협력단 | 결정 트리에 기반하는 트래픽 분류 장치 및 그 방법 |
CN115633097B (zh) * | 2022-12-21 | 2023-04-28 | 新华三信息技术有限公司 | 一种访问控制列表acl压缩方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050254502A1 (en) * | 2004-05-11 | 2005-11-17 | Lynn Choi | Packet classification method through hierarchical rulebase partitioning |
KR101665583B1 (ko) * | 2015-04-21 | 2016-10-24 | (주) 시스메이트 | 네트워크 트래픽 고속처리 장치 및 방법 |
US20170171362A1 (en) * | 2015-12-15 | 2017-06-15 | Intel Corporation | High speed flexible packet classification using network processors |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975592B1 (en) * | 2000-11-22 | 2005-12-13 | Nortel Networks Limited | Configurable rule-engine for layer-7 and traffic characteristic-based classification |
CN100454902C (zh) * | 2006-08-02 | 2009-01-21 | 华为技术有限公司 | 一种多域流分类的实现方法 |
CN101511136B (zh) | 2008-02-14 | 2013-02-20 | 台达电子工业股份有限公司 | 多组发光二极管的电流平衡供电电路 |
CN101540723B (zh) * | 2009-04-20 | 2011-07-06 | 杭州华三通信技术有限公司 | 一种流表查找方法和装置 |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
US10187353B2 (en) * | 2010-06-02 | 2019-01-22 | Symantec Corporation | Behavioral classification of network data flows |
CN102377581A (zh) * | 2010-08-09 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 一种多域流分类流水线的实现方法 |
US9596222B2 (en) * | 2011-08-02 | 2017-03-14 | Cavium, Inc. | Method and apparatus encoding a rule for a lookup request in a processor |
CN104462144B (zh) * | 2013-09-24 | 2019-06-14 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
US9569522B2 (en) * | 2014-06-04 | 2017-02-14 | International Business Machines Corporation | Classifying uniform resource locators |
US9244978B2 (en) * | 2014-06-11 | 2016-01-26 | Oracle International Corporation | Custom partitioning of a data stream |
KR20160035793A (ko) * | 2014-09-24 | 2016-04-01 | 에릭슨 엘지 주식회사 | 심층 패킷 분석 방법 및 장치 |
WO2016056217A1 (ja) * | 2014-10-07 | 2016-04-14 | 日本電気株式会社 | 測定装置、測定システム、測定方法、および、プログラム |
CN104468381B (zh) * | 2014-12-01 | 2017-05-10 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
US10044620B2 (en) * | 2015-05-01 | 2018-08-07 | Hughes Network Systems, Llc | Multi-phase IP-flow-based classifier with domain name and HTTP header awareness |
CN106326234A (zh) * | 2015-06-18 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 流分类方法及装置 |
US10305798B2 (en) * | 2016-06-21 | 2019-05-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Dynamic lookup optimization for packet classification |
JP2018033017A (ja) * | 2016-08-25 | 2018-03-01 | 日本電信電話株式会社 | ネットワーク処理装置およびパケット処理方法 |
US11088951B2 (en) * | 2017-01-16 | 2021-08-10 | Intel Corporation | Flow classification apparatus, methods, and systems |
-
2019
- 2019-04-12 CN CN201910294640.0A patent/CN111817978B/zh active Active
-
2020
- 2020-03-25 KR KR1020217029001A patent/KR102601351B1/ko active IP Right Grant
- 2020-03-25 JP JP2021556957A patent/JP7170905B2/ja active Active
- 2020-03-25 EP EP20786844.9A patent/EP3917099A4/en active Pending
- 2020-03-25 WO PCT/CN2020/081113 patent/WO2020207248A1/zh unknown
-
2021
- 2021-09-08 US US17/469,219 patent/US11882047B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050254502A1 (en) * | 2004-05-11 | 2005-11-17 | Lynn Choi | Packet classification method through hierarchical rulebase partitioning |
KR101665583B1 (ko) * | 2015-04-21 | 2016-10-24 | (주) 시스메이트 | 네트워크 트래픽 고속처리 장치 및 방법 |
US20170171362A1 (en) * | 2015-12-15 | 2017-06-15 | Intel Corporation | High speed flexible packet classification using network processors |
Also Published As
Publication number | Publication date |
---|---|
EP3917099A4 (en) | 2022-03-23 |
JP2022527704A (ja) | 2022-06-03 |
US20210409337A1 (en) | 2021-12-30 |
JP7170905B2 (ja) | 2022-11-14 |
US11882047B2 (en) | 2024-01-23 |
CN111817978B (zh) | 2022-10-04 |
EP3917099A1 (en) | 2021-12-01 |
KR20210121253A (ko) | 2021-10-07 |
WO2020207248A1 (zh) | 2020-10-15 |
CN111817978A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102601351B1 (ko) | 트래픽 분류 방법 및 장치 | |
US11102120B2 (en) | Storing keys with variable sizes in a multi-bank database | |
US9871728B2 (en) | Exact match hash lookup databases in network switch devices | |
EP2643762B1 (en) | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment | |
US8856203B1 (en) | System and method for algorithmic TCAM packet classification | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
WO2015127721A1 (zh) | 数据匹配的方法、装置及计算机存储介质 | |
US10795580B2 (en) | Content addressable memory system | |
Mitzenmacher et al. | OMASS: One memory access set separation | |
US9703484B2 (en) | Memory with compressed key | |
US20160105363A1 (en) | Memory system for multiple clients | |
Patgiri et al. | Shed More Light on Bloom Filter's Variants | |
KR101587756B1 (ko) | 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법 | |
EP3255571B1 (en) | System and method for efficient interval search using locality-preserving hashing | |
CN118227518B (zh) | 一种表项存储、查找方法、装置、网络设备及存储介质 | |
CN115714752B (en) | Packet classification method and device, forwarding chip and electronic equipment | |
CN114039915B (zh) | 根据存取控制列表进行封包处理的方法和系统 | |
Karrakchou et al. | FCTree: A Space Efficient FIB Data Structure for NDN Routers | |
Shen et al. | CoDE: Fast name lookup and update using conflict-driven encoding | |
Lin et al. | TCAM-Based Packet Classification Using Multi-stage Scheme | |
CN115714752A (zh) | 一种包分类方法、装置、转发芯片及电子设备 | |
Alhisnawi | Bloom-Quotient Based Name Matching Technique in Content Centric Networks | |
JP2015046711A (ja) | 検索装置および検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |