KR101331018B1 - 패킷 분류 방법 및 그 장치 - Google Patents

패킷 분류 방법 및 그 장치 Download PDF

Info

Publication number
KR101331018B1
KR101331018B1 KR1020110103356A KR20110103356A KR101331018B1 KR 101331018 B1 KR101331018 B1 KR 101331018B1 KR 1020110103356 A KR1020110103356 A KR 1020110103356A KR 20110103356 A KR20110103356 A KR 20110103356A KR 101331018 B1 KR101331018 B1 KR 101331018B1
Authority
KR
South Korea
Prior art keywords
rule
rfc
packet
index
key value
Prior art date
Application number
KR1020110103356A
Other languages
English (en)
Other versions
KR20130038975A (ko
Inventor
박우길
최영준
나준승
이정애
경제범
Original Assignee
주식회사 시큐아이
아주대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 시큐아이, 아주대학교산학협력단 filed Critical 주식회사 시큐아이
Priority to KR1020110103356A priority Critical patent/KR101331018B1/ko
Priority to PCT/KR2012/008181 priority patent/WO2013055083A1/ko
Publication of KR20130038975A publication Critical patent/KR20130038975A/ko
Application granted granted Critical
Publication of KR101331018B1 publication Critical patent/KR101331018B1/ko
Priority to US14/250,235 priority patent/US9240959B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

패킷 분류 방법 및 그 장치가 개시된다. 본 발명의 일 실시 예에 따른 패킷 분류 방법은 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 단계; 상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 단계; 수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인에 함께 로드하는 단계; 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하는 단계; 및 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 RFC 테이블 정보를 이용하여 룰에 대한 RFC 테이블을 검색하는 단계를 포함함으로써, 메모리 액세스 수를 줄이고, 룰에 대한 검색 속도를 향상시켜 패킷 전송 속도를 향상시킬 수 있다.

Description

패킷 분류 방법 및 그 장치 {METHOD FOR CLASSIFYING PACKET AND APPARATUS THEREOF}
본 발명은 패킷 분류(packet classification)에 관한 것으로, 보다 상세하게는 룰 집합을 기 설정된 패킷의 키 값에 따라 다수의 독립적인 룰 부분 집합으로 분할하고, 수신된 패킷의 해당 키 값에 대한 룰 부분 집합에 대한 정보(또는 파티션 정보)와 RFC 테이블에 대한 정보를 동일 캐시라인에 함께 로딩하여 룰에 대한 RFC 테이블을 검색함으로써, 메모리 액세스 수를 줄이고, 룰에 대한 검색 속도를 향상시킬 수 있는 패킷 분류 방법 및 그 장치에 관한 것이다.
인터넷의 급속한 성장과 더불어 인터넷 서비스의 질을 향상시키기 위하여 라우터에서의 패킷 포워딩이 매우 중요한 작업이 되고 있다. 패킷 포워딩이란 라우터 내로 들어온 패킷의 헤더 정보를 이용하여 최종 목적지 네트워크를 향해 패킷을 내 보내어 주는 작업을 말한다. 인터넷에서의 다양한 서비스의 요구는 패킷 처리를 더욱 어렵게 만들고 있는데, 예를 들어 오디오나 비디오 스트리밍과 같이 전달 속도에 민감한 응용 프로그램의 등장은 품질 보증을 요구하며, 방화벽(firewall protection)이나 로드 밸런싱(load balancing), 웹 스위칭, IDS(Intrusion Detection and Security) 등의 다양한 서비스가 요구되고 있다. 이러한 서비스들을 제공해주기 위하여 라우터에서는 패킷 분류(Packet Classification)가 선행되어야 한다.
패킷 포워딩에 있어 패킷들을 입력되는 링크 속도에 맞춰 처리하여 내보내 주어야 하는데, 패킷 분류는 단순히 목적지 주소만 확인하여 처리하는 IP 주소 검색과는 달리, 패킷 헤더 정보의 모든 필드를 검사하여야 하므로 패킷 처리 속도에 더 민감한 작업이라 할 수 있다. 따라서 패킷 분류를 효율적으로 수행하기 위한 다양한 패킷 분류 구조에 관한 연구가 활발하게 수행되어 오고 있다. 패킷 분류 구조들의 성능 평가에 있어 가장 중요한 기준은 패킷 처리 속도이고, 패킷 처리 속도는 메모리 액세스 수에 의하여 결정된다. 그 다음으로 중요한 기준은 패킷 분류 테이블을 저장하기 위해 요구되는 메모리의 크기이다. 요구되는 메모리의 크기는 패킷 분류 테이블이 갖는 데이터 구조에 의존한다.
종래 패킷 분류 알고리즘들 중에서 RFC(Recursive Flow Classification) 알고리즘은 패킷을 고속으로 분류할 수 있는 알고리즘들 중 하나이다. 그러나, 이 알고리즘은 룰 수에 따라서 메모리 사용량, 테이블 생성 시간, 테이블 사이즈가 기하 급수적으로 증가하므로 실제 사용하기에는 한계가 있다.
이후 많은 알고리즘들이 제안되었지만 대부분 RFC 알고리즘의 문제점들을 해결하는 대신에 가장 중요한 검색 속도가 낮아지는 문제가 발생하고 있다. 예를 들어, 'Scalable Packet Classification through Maximum Entropy Hashing' 논문에서 제안된 방식은 전체 룰 집합을 다수의 작은 룰 부분 집합으로 나누는 파티셔닝 기법을 사용함으로써, 작은 룰 부분 집합에 대해서 RFC 테이블을 생성하면 그 크기나 생성 시간이 매우 작게 된다.
하지만, 이런 파티셔닝 기법은 실제 주어진 키에 대해 대응되는 룰들을 찾기 위해서 우선 그 룰들을 포함하고 있는 룰 부분 집합을 찾는 과정이 필요하고 룰 부분 집합을 찾은 후에는 RFC 테이블 검색 과정이 이루어지기 때문에 전체 검색 성능은 단순히 RFC 테이블만 검색하는 경우에 비해 떨어지게 된다.
따라서, 메모리 액세스 수를 줄여 검색 속도를 향상시킬 수 있는 방법의 필요성이 대두된다.
한국공개특허 제2011-77869호 (공개일 2011.07.07) 한국등록특허 제965552호 (등록일 2010.06.15)
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 메모리 사용량을 줄이면서 검색 속도를 향상시킬 수 있는 패킷 분류 방법 및 그 장치를 제공하는 것을 목적으로 한다.
구체적으로, 본 발명은 키 값에 공통적으로 대응하는 룰 부분 집합들에 대한 파티션 정보와 룰 부분 집합들에 대한 RFC 테이블 정보를 동일한 캐시라인에 함께 로드함으로써, 메모리 액세스 수를 줄이고, 동일한 메모리 사용량으로 파티션 검색과 룰에 대한 RFC 테이블 검색 속도를 향상시킬 수 있다.
또한, 본 발명은 룰 부분 집합들에 대한 RFC 테이블들에 대한 정보를 청크 컨테이너로 합쳐 관리하고, 키 값에 대한 파티션 정보와 RFC 테이블 정보를 청크 컨테이너를 통해 검색하여 동일한 캐시라인에 함께 로드함으로써, 메모리 사용량을 줄이고, 메모리 액세스 수를 줄여 검색 속도를 향상시킬 수 있는 패킷 분류 방법 및 그 장치를 제공하는 것을 목적으로 한다.
또한, 본 발명은 패킷 분류 검색 속도를 향상시킴으로써, 장비의 성능을 향상시킬 수 있고, 패킷 전송 속도를 향상시킬 수 있는 패킷 분류 방법 및 그 장치를 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 패킷 분류 방법은 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 단계; 상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 단계; 수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인에 함께 로드하는 단계; 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하는 단계; 및 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 RFC 테이블 정보를 이용하여 룰에 대한 RFC 테이블을 검색하는 단계를 포함한다.
상기 룰 부분 집합들로 나누는 단계는 상기 패킷의 키 값들에 대해 기 설정된 순서로 파티셔닝을 수행하거나 상기 패킷의 필드에 대응하는 키 값들 중 최적의 키 값을 순차적으로 검색하여 파티셔닝을 수행할 수 있다.
상기 룰 부분 집합을 검색하는 키 값의 순서와 상기 RFC 테이블을 검색하는 키 값의 순서는 상이할 수 있다.
상기 로드하는 단계는 상기 다수의 룰 부분 집합들 각각에 대한 RFC 테이블 정보 중에서 상기 캐시라인의 해당 키 값에 대응하는 RFC 테이블 정보만을 로드할 수 있다.
본 발명의 다른 일 실시 예에 따른 패킷 분류 방법은 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 단계; 상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 단계; 상기 키 값에 따른 RFC 테이블들에 대한 CBM(Class BitMap) 인덱스와 파티션에 대한 파티션 인덱스의 관계가 정리된 청크 컨테이너를 생성하는 단계; 수신된 패킷의 키 값으로 상기 생성된 상기 청크 컨테이너를 검색하여 상기 수신된 패킷의 키 값에 공통적으로 대응하는 CBM 인덱스와 파티션 인덱스를 동일한 캐시라인에 함께 로드하는 단계; 및 상기 캐시라인에 로드된 상기 CBM 인덱스와 상기 파티션 인덱스를 이용하여 상기 수신된 패킷에 대한 파티션과 RFC 테이블을 검색하는 단계를 포함한다.
상기 생성하는 단계는 상기 캐시라인의 크기, 지원되어야 하는 룰 부분 집합의 수 및 테이블 메모리 크기에 따라 필드의 크기가 달라지는 적어도 하나 이상의 청크 컨테이너를 생성할 수 있다.
상기 청크 컨테이너는 상기 CBM 인덱스와 룰 인덱스 중 적어도 하나를 포함할 수 있다.
상기 검색하는 단계는 상기 검색된 파티션에 대한 룰 부분 집합으로부터 상기 키 값에 따라 생성된 청크 컨테이너들을 이용하여 상기 수신된 패킷에 대한 CBM 인덱스를 검색하고, 상기 검색된 CBM 인덱스를 이용하여 상기 수신된 패킷에 대한 RFC 테이블을 검색할 수 있다.
본 발명의 일 실시 예에 따른 패킷 분류 장치는 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 분할부; 상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 생성부; 수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인에 함께 로드하는 로딩부; 및 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하고, 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 RFC 테이블 정보를 이용하여 상기 검색된 상기 룰 부분 집합으로부터 룰에 대한 RFC 테이블을 검색하는 검색부를 포함한다.
본 발명의 다른 일 실시 예에 따른 패킷 분류 장치는 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 분할부; 상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 제1 생성부; 상기 키 값에 따른 RFC 테이블들에 대한 CBM(Class BitMap) 인덱스와 파티션에 대한 파티션 인덱스의 관계가 정리된 청크 컨테이너를 생성하는 제2 생성부; 수신된 패킷의 키 값으로 상기 생성된 상기 청크 컨테이너를 검색하여 상기 수신된 패킷의 키 값에 공통적으로 대응하는 CBM 인덱스와 파티션 인덱스를 동일한 캐시라인에 함께 로드하는 로딩부; 및 상기 캐시라인에 로드된 상기 CBM 인덱스와 상기 파티션 인덱스를 이용하여 상기 수신된 패킷에 대한 파티션과 RFC 테이블을 검색하는 검색부를 포함한다.
본 발명에 따르면, 전체 룰 집합을 다수의 룰 부분 집합으로 나누는 파티션 정보와 룰 부분 집합에 대한 RFC 테이블 정보를 동일한 캐시라인에 함께 로드함으로써, 동일한 메모리 사용량으로 파티션 검색과 룰에 대한 RFC 테이블 검색 속도를 향상시킬 수 있다.
구체적으로, 본 발명은 룰 부분 집합에 대해 생성된 RFC 테이블들을 하나의 청크 컨테이너(chunk container)로 합치고, 이런 청크 컨테이너를 검색하여 파티션에 대한 정보와 RFC 테이블에 대한 정보를 캐시라인에 동시에 로드하기 때문에 메모리 사용량을 줄이고, 메모리 액세스 수를 줄여 검색 속도를 향상시킬 수 있다.
즉, 동일한 키 값에 공통적으로 대응하는 파티션에 대한 정보와 RFC 테이블에 대한 정보를 함께 로드하기 때문에, 패킷 분류 시 파티션을 먼저 검색하고 이후에 RFC 테이블을 검색하는 경우에 하나의 키 값에 대해서는 한번씩 메모리에 접근하면 되고, 여러 번 메모리에 접근할 필요가 없다. 메모리 접근은 프로세서에 의한 연산(operation)보다 매우 큰 시간 손실을 초래하므로, 메모리 접근 횟수를 줄이면 전체 패킷 분류 시간을 크게 단축할 수 있다.
또한, 본 발명은 패킷 분류에 대한 룰 검색 속도를 향상시킴으로써, 장비의 성능을 향상시키고, 네트워크에서 패킷 전송 속도를 향상시킬 수 있다.
이런, 본 발명은 패킷을 분류하여 전송하는 장비 예를 들어, 라우터 등에 적용함으로써, 전체적인 시스템 성능과 네트워크 속도를 향상시킬 수 있는 장점이 있다.
도 1은 본 발명의 일 실시 예에 따른 패킷 분류 방법에 대한 동작 흐름도를 나타낸 것이다.
도 2는 정해진 키 값의 순서에 따른 파티셔닝을 설명하기 위한 일 예시도를 나타낸 것이다.
도 3은 도 1에 도시된 단계 S160을 설명하기 위한 캐시라인에 대한 일 예시도를 나타낸 것이다.
도 4는 본 발명의 다른 일 실시 예에 따른 패킷 분류 방법에 대한 동작 흐름도를 나타낸 것이다.
도 5는 단계 S410 내지S440까지의 과정에 대한 개략도를 나타낸 것이다.
도 6은 도 2에 도시된 룰 부분 집합들 중 룰 부분 집합 G0의 RFC 테이블에 대한 일 예를 나타낸 것이다.
도 7은 도 2에 도시된 룰 부분 집합들 중 룰 부분 집합 G1의 RFC 테이블에 대한 일 예를 나타낸 것이다.
도 8은 두 룰 부분 집합 G0와 G1에 대한 RFC 테이블을 합친 청크 컨테이너에 대한 일 예를 나타낸 것
도 9는 룰 부분 집합들의 RFC 테이블들이 청크 컨테이너 내에 어떻게 연결되어 있는지를 나타낸 것이다.
도 10은 도 9와 같이 룰 부분 집합들에 대한 파티션 인덱스와 CBM 인덱스가 캐시라인에 로드된 상태에서 수신된 패킷에 대한 룰 부분 집합을 검색하는 일 예를 나타낸 것이다.
도 11은 도 10에 의하여 검색된 룰 부분 집합에서 룰에 대한 RFC 테이블을 검색하는 일 예를 나타낸 것이다.
도 12는 본 발명의 일 실시 예에 따른 패킷 분류 장치에 대한 구성을 나타낸 것이다.
도 13은 본 발명의 다른 일 실시 예에 따른 패킷 분류 장치에 대한 구성을 나타낸 것이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 패킷 분류 방법 및 그 장치를 첨부된 도 1 내지 도 13을 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 패킷 분류 방법에 대한 동작 흐름도를 나타낸 것이다.
도 1을 참조하면, 패킷 분류 방법은 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하여 전체 룰 집합을 다수의 룰 부분 집합들로 나눈다(S110, S120).
여기서, 파티셔닝은 전체 룰 집합을 다수의 룰 부분 집합으로 나누는 것을 의미하는 것으로, 파티셔닝은 패킷의 필드에 대한 키 값들을 이용하여 수행되며 상기 키 값들 각각에 대해 기 설정된 조건에 만족될 때까지 파티셔닝을 수행함으로써 전체 룰 집합을 다수의 룰 부분 집합으로 나누게 된다.
이 때, 파티셔닝은 패킷의 필드에 대응하는 키 값들에 대해 순차적으로 수행될 수도 있고, 키 값들 중 최적의 키 값을 검색하여 파티셔닝을 수행한 후 그 다음 최적의 키 값을 검색하여 파티셔닝을 수행하는 방식으로 모든 키 값들에 대해 파티셔닝을 수행할 수도 있다.
여기서, 최적의 키 값은 키 값이 가장 큰 것을 의미할 수 있다. 예를 들어, 키 값 K1이 K1_1과 K1_2의 두 경우이고, 키 값 K2가 K2_1, K2_2, K2_3의 세 경우이며, 키 값 K3가 K3_1, K3_2, K3_3, K3_4의 네 경우라 가정하면, 파티셔닝은 K3을 이용하여 먼저 수행한 후 K2를 이용하여 수행하고 마지막으로 K1을 이용하여 수행할 수 있다.
본 발명에서의 파티셔닝은 트리 기반 방식, 즉 하나의 필드를 순차적으로 보는 방식이면 모두 사용 가능하며, 대표적인 방식으로 hicut이 있다. 파티셔닝에 의하여 나누어진 각 룰 부분 집합은 최대한 서로 겹치는 룰이 적게 파티셔닝이 되어야 한다.
룰이 총 5가지 필드 예컨대, 32비트의 source IP, 32비트의 destination IP, source port, destination port, protocol 필드로 구성되는 경우 필드에 대한 키 값들은 source IP와 destination IP에 대해 상위 16비트(SIP_U16, DIP_U16)와 하위 16비트(SIP_L16, DIP_L16), source port, destination port, protocol이 될 수 있으며, 이렇게 정해진 키 값의 순서에 따라 파티셔닝이 이루어질 수 있다.
간단히 예를 들기 위해서 일반적인 5가지 필드로 구성된 룰 집합 대신 source IP, destination IP 등, 2개의 필드로 구성된 룰 집합이 있다고 가정하고 도 2를 참조하여 설명한다. 도 2에 도시된 바와 같이, source IP의 상위 16비트 값(SIP_U16)의 범위에 따라 (G0,G1), (G2,G3), (G4,G5,G6,G7,G8) 등 3개의 룰 부분 집합으로 나뉘어지며, 여기서 GN은 최종 룰 부분 집합들 중 N번째 집합을 나타내고, N은 0이상의 정수이다.
각 룰 부분 집합은 다음 destination IP 상위 16비트(DIP_U16) 값 범위에 따라 다시 G0, G1, (G2,G3), (G4,G5,G6,G7), G8 5개의 룰 부분 집합으로 나누어지고, 나머지 필드(source IP의 하위 16비트 값(SIP_L16), destination IP 하위 16비트 값(DIP_L16))에 대해서도 파티셔닝을 수행하게 되면 최종적으로 9개의 룰 부분 집합으로 나누어지게 된다.
키 값들에 의하여 파티셔닝이 수행되어 다수의 룰 부분 집합들로 나누어지면 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성한다(S130).
여기서, 룰 부분 집합들에 대한 RFC 테이블을 생성하는 방법은 본 발명의 기술 분야에 종사하는 당업자라면 자명하기에 그 설명은 생략한다.
단계 S120과 단계 S130에 의해 수행된 파티션 정보와 RFC 테이블 정보는 메모리에 저장될 수 있다.
이후 외부로부터 패킷이 수신되면 수신된 패킷의 필드로부터 기 설정된 키 값들을 추출한다(S140, S150).
예를 들어, 기 설정된 키 값이 제1 필드의 K1, 제2 필드의 K2, 제3 필드의 K3이라고 가정하면 패킷의 제1 필드 내지 제3 필드로부터 키 값들 K1에 대한 값, K2에 대한 값, K3에 대한 값을 추출한다.
추출된 K1, K2, K3 각각의 값 범위에 해당하는 파티션 정보와 RFC 테이블 정보를 검색하여 각각의 캐시라인에 함께 로드한다(S160). 즉, 도 3에 도시된 일 예와 같이, 추출된 K1 값 범위에 해당하는 파티션 정보(PK1)와 RFC 테이블 정보(RK1)를 검색하여 해당 캐시라인 여기서는, 제1 캐시라인에 함께 로드하고, 추출된 K2 값 범위에 해당하는 파티션 정보(PK2)와 RFC 테이블 정보(RK2)를 검색하여 해당 캐시라인 여기서는, 제2 캐시라인에 함께 로드하며, 추출된 K3 값 범위에 해당하는 파티션 정보(PK3)와 RFC 테이블 정보(RK3)를 검색하여 해당 캐시라인 여기서는, 제3 캐시라인에 함께 로드한다.
이 때, 로드하는 단계 S160은 다수의 룰 부분 집합들 각각에 대한 RFC 테이블 정보 중에서 캐시라인의 해당 키 값에 대응하는 RFC 테이블 정보만을 로드하는 것이 바람직하다.
캐시라인에 로드된 추출된 키 값들 각각에 대한 파티션 정보를 이용하여 수신된 패킷에 대한 룰 부분 집합을 검색한다(S170).
예컨대, 도 3에서 추출된 K1 값 범위에 해당하는 파티션 정보(PK1), 추출된 K2 값 범위에 해당하는 파티션 정보(PK2)와 추출된 K3 값 범위에 해당하는 파티션 정보(PK3)를 이용하여 수신된 패킷에 대한 룰이 포함된 룰 부분 집합을 검색한다.
본 발명의 단계 S160과 S170에서 캐시라인에 모든 키 값들에 대응하는 파티션 정보와 RFC 테이블에 대한 정보를 로드한 후 룰 부분 집합을 검색하는 것으로 기재되었지만, 이에 한정하지 않으며 첫 번째 키 값에 대한 파티션 정보와 RFC 테이블에 대한 정보를 캐시라인에 로드한 후 첫 번째 키 값에 대한 룰 부분 집합을 검색하고, 두 번째 키 값에 대한 파티션 정보와 RFC 테이블에 대한 정보를 다른 캐시라인에 로드한 후 두 번째 키 값에 대한 룰 부분 집합을 검색하는 과정을 모든 키 값들에 대해 순차적으로 수행할 수도 있다.
수신된 패킷에 대한 룰 부분 집합이 검색되면 캐시라인에 로드된 키 값들 각각에 대한 RFC 테이블 정보를 이용하여 검색된 룰 부분 집합으로부터 룰에 대한 RFC 테이블을 검색한다(S180).
예컨대, 도 3에서 추출된 K1 값 범위에 해당하는 RFC 테이블 정보(RK1), 추출된 K2 값 범위에 해당하는 RFC 테이블 정보(RK2)와 추출된 K3 값 범위에 해당하는 RFC 테이블 정보(RK3)를 이용하여 검색된 룰 부분 집합으로부터 수신된 패킷의 룰에 대한 RFC 테이블을 검색한다.
이와 같이, 본 발명에 따른 패킷 분류 방법은 파티셔닝 기법과 키 값에 대응하는 캐시라인에 해당 키 값에 대한 파티션 정보와 RFC 테이블 정보를 함께 로드함으로써, 파티션 정보를 검색한 후 RFC 테이블 정보를 검색해야 할 때의 메모리 액세스 수를 줄이고, 이를 통해 검색 속도를 향상시킬 수 있다.
또한, 본 발명은 패킷 분류 검색 속도를 향상시킴으로써, 장비의 성능을 향상시킬 수 있으며, 네트워크에서의 패킷 전송 속도를 향상시킬 수 있다.
그리고, 도 1에서 룰 부분 집합을 검색하기 위한 키 값들의 순서와 룰에 대한 RFC 테이블을 검색하기 위한 키 값들의 순서는 같을 수도 있지만 상이할 수도 있다.
도 4는 본 발명의 다른 일 실시 예에 따른 패킷 분류 방법에 대한 동작 흐름도를 나타낸 것이다.
도 4를 참조하면, 패킷 분류 방법은 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하여 전체 룰 집합을 다수의 룰 부분 집합들로 나눈다(S410, S420).
도 4에서의 파티셔닝 또한 도 1에서 설명한 바와 같이, 패킷의 필드에 대응하는 키 값들에 대해 순차적으로 수행될 수도 있고, 키 값들 중 최적의 키 값을 순차적으로 검색하여 파티셔닝을 수행할 수도 있다.
키 값들에 의하여 파티셔닝이 수행되어 다수의 룰 부분 집합들로 나누어지면 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성한다(S430).
룰 부분 집합들 각각에 대해 RFC 테이블이 생성되면 생성된 RFC 테이블 정보를 이용하여 청크 컨테이너(chunk container)를 생성한다(S440).
물론, 생성된 청크 컨테이너는 장비에 구비된 저장 수단에 저장되는 것이 바람직하다.
도 5는 단계 S410 내지S440까지의 과정에 대한 개략도를 나타낸 것으로, 도시된 바와 같이, 전체 룰 집합(original total rule set)을 다수의 룰 부분 집합들(sub rule sets)로 나눈 후 나누어진 다수의 룰 부분 집합들 각각에 대한 RFC 테이블을 생성(RFC table building)하고, 생성된 RFC 테이블을 이용하여 청크 컨테이너를 생성(chunk container building)하는 과정을 나타낸다.
여기서, 도 6 내지 도 8을 이용하여 룰 부분 집합에 대한 RFC 테이블을 생성하고, 생성된 두 RFC 테이블을 합쳐 청크 컨테이너를 생성하는 것에 대해 설명한다. 여기서 X는 해당 엔트리값이 없음을 나타낸다.
도 6과 도 7은 도 2에 도시된 룰 부분 집합들 중 룰 부분 집합 G0와 G1의 RFC 테이블에 대한 일 예를 나타낸 것으로, 도시된 바와 같이 키 값에 의해 생성되는 RFC 테이블에 대한 CBM(Class BitMap) 인덱스 값으로 청크 테이블 엔트리가 채워져 있음을 알 수 있다. 또한, (+) 기호는 RFC 테이블에서 두 CBM 인덱스를 이용하여 그 다음 청크 인덱스를 계산하는 과정을 나타낸 것이다. 즉, 두 키 값에 대응하는 두 RFC 테이블의 두 CBM 인덱스를 이용하여 두 키 값에 의해 생성된 RFC 테이블과 관련된 그 다음 청크 인덱스를 계산하고, 계산된 청크 인덱스와 또 다른 키 값에 의해 생성된 RFC 테이블에 대한 CBM 인덱스를 이용하여 그 다음 청크 인덱스를 계산함으로써, 키 값들, CBM 인덱스 및 다수의 청크 컨테이너간의 관계를 알 수 있다.
도 8은 두 룰 부분 집합 G0와 G1에 대한 RFC 테이블을 합친 청크 컨테이너에 대한 일 예를 나타낸 것으로, 도시된 바와 같이 두 룰 부분 집합 G0, G1에 대한 RFC 테이블이 완성되면 청크 컨테이너는 RFC 알고리즘에서 각 필드와 단계에서 생성되는 테이블들을 하나의 테이블로 합치되 동일한 인덱스의 엔트리들을 하나의 캐시라인에 위치시킴으로써, 어떤 룰 부분 집합에 포함되어 있는가에 상관없이 테이블 검색을 하면 후에 특정 룰 부분 집합에 대한 값이 필요하더라도 이미 캐시라인에 로드되어 있게 됨으로써 추가적인 메모리 액세스가 일어나지 않아 검색 속도를 향상시킬 수 있다.
이와 같이, 청크 컨테이너는 적어도 두 개 이상의 룰 부분 집합에 대한 RFC 테이블 정보를 합쳐서 생성하는 것으로, 룰 부분 집합에 대한 파티션 인덱스와 룰 인덱스 또는 RFC 테이블에 대한 정보 예컨대, CBM 인덱스 그리고 청크 인덱스의 연결 관계가 정리되어 있다.
청크 컨테이너를 구성하는 요소는 청크 인덱스, 청크 컨테이너 주소, CBM 인덱스, 파티션 인덱스, 룰 인덱스 등 다양할 수 있으며, 상기 구성 요소들을 적절하게 배치시켜 다양한 청크 컨테이너를 구성할 수 있다.
또한, 청크 컨테이너를 구성하는 필드의 크기는 파티션 인덱스와 CBM 인덱스가 로드되는 캐시라인의 크기, 지원되어야 하는 룰 부분 집합의 수 및 테이블 메모리 크기 등에 따라 달라질 수 있다.
다시 도 4를 참조하여, 적어도 하나 이상의 청크 컨테이너가 생성되면, 외부로부터 수신된 패킷의 필드로부터 룰 부분 집합과 RFC 테이블을 검색하기 위한 키 값들을 추출한다(S450, S460).
수신된 패킷의 키 값들이 추출되면, 추출된 키 값들 각각에 대하여 대응되는 RFC 테이블에 대한 CBM 인덱스와 파티션 인덱스를 청크 컨테이너로부터 검색하고, 검색된 파티션 인덱스와 CBM 인덱스를 키 값들 각각에 대하여 공통적으로 대응하는 캐시라인에 함께 로드한다(S470, S480).
캐시라인에 로드된 키 값들 각각에 대응하는 파티션 인덱스를 이용하여 수신된 패킷에 대한 룰 부분 집합을 검색한다(S490).
수신된 패킷에 대한 룰 부분 집합이 검색되면, 파티션 인덱스와 함께 캐시라인에 로드된 키 값들 각각에 대응하는 CBM 인덱스를 이용하여 검색된 룰 부분 집합으로부터, 수신된 패킷의 룰에 대한 RFC 테이블을 검색한다(S500).
도 1에서와 마찬가지로, 룰 부분 집합에 대한 파티션 인덱스를 검색하기 위한 키 값들의 순서와 룰의 RFC 테이블에 대한 CBM 인덱스를 검색하기 위한 키 값들의 순서는 같을 수도 있지만 상이할 수도 있다.
상기 룰 부분 집합을 검색하는 단계(S490)와 룰에 대한 RFC 테이블을 검색하는 단계(S500)에 대하여 도 9 내지 도 11을 참조하여 상세히 설명하면 다음과 같다.
여기서, 수신된 패킷으로부터 추출되는 키 값이 네 개(K1, K2, K3, K4)이고, 추출된 키 값들 각각과 대응하는 룰 부분 집합이 5개(sub-rule set 0 내지 sub-rule set 4)이며, 룰 부분 집합을 검색하는 키 값의 순서가 K1, K2, K3, K4이고, 룰에 대한 RFC 테이블을 검색하는 키 값의 순서가 K1, K3, K2, K4라 가정하여 설명한다.
도 9는 룰 부분 집합들의 RFC 테이블들이 청크 컨테이너 내에 어떻게 연결되어 있는지를 나타낸 것으로, 도 9에서 알 수 있듯이 각 룰 부분 집합의 RFC 테이블 엔트리들 즉, CBM 인덱스들은 파티셔닝을 위한 검색 순서에 따라 해당 캐시라인에 포함될 수 있도록 메모리상에 위치함을 알 수 있으며, 직육면체로 표현된 구간은 하나의 캐시라인(cache block)을 나타낸다. 따라서 첫 번째 키 값 K1에 대응되는 RFC 테이블들에 대해서 모든 룰 부분 집합에 대한 엔트리들이 하나의 캐시라인에 포함되어 있다. 여기서 한 캐시라인에 룰 부분 집합 0에서 4까지 총 5개의 엔트리가 포함되는 것을 의미하지는 않는다. 예를 들어 도 8에 도시된 G0과 G1에 대한 DIP_U16 청크 컨테이너에서 알 수 있듯이, 한 청크 컨테이너 엔트리에 G0 혹은 G1에 대한 엔트리만 포함되어 있다. 따라서 한 청크 컨테이너 엔트리에는 대응되는 룰 부분 집합들의 엔트리값들이 저장된다. 이때 캐시라인에 포함되기 위해서 청크 컨테이너 엔트리는 캐시라인 크기에 따른 정렬된 주소를 갖게 된다. 즉 청크 컨테이너 엔트리가 하나의 캐시라인에 포함되도록 청크 컨테이너 테이블의 정렬, 청크 컨테이너 엔트리의 크기 등이 정해지게 된다.
두 번째 키 값 K2에 대해서는 룰 부분 집합 0, 1이 하나의 캐시라인에, 룰 부분 집합 2, 3이 다른 하나의 캐시라인에, 룰 부분 집합 4는 홀로 또 다른 캐시라인에 엔트리들이 존재하며, 세 번째 키 값 K3에 대해서는 룰 부분 집합 0 내지 3이 하나의 캐시라인에, 룰 부분 집합 4는 홀로 또 다른 캐시라인에 엔트리들이 존재하는 것을 나타낸다.
도 10은 도 9와 같이 룰 부분 집합들에 대한 파티션 인덱스와 CBM 인덱스가 캐시라인에 로드된 상태에서 수신된 패킷에 대한 룰 부분 집합을 검색하는 일 예를 나타낸 것으로, 단계 S490에 대한 과정을 설명하기 위한 일 예시도이다.
도 10a에 도시된 바와 같이, 첫 번째 키 값 K1에 대하여 캐시라인에 로드된 파티션 인덱스 즉, 테이블의 엔트리들을 읽고, 그 다음 도 10b에 도시된 바와 같이, 세 번째 키 값 K3에 대하여 캐시라인에 로드된 테이블의 엔트리들을 읽으며, 그 다음 도 10c에 도시된 바와 같이, 두 번째 키 값 K2에 대하여 캐시라인에 로드된 테이블의 엔트리들을 읽는다. 마지막으로 도 10d에 도시된 바와 같이, 네 번째 키 값에 대하여 캐시라인에 로드된 테이블의 엔트리들을 읽음으로써, 두 번째 룰 부분 집합(sub-rule set 1)(1010)을 찾게 된다.
이와 같은 과정에 의하여 룰 부분 집합 즉, 파티션을 검색하게 되면 검색된 파티션에 대한 룰 부분 집합에서 수신된 패킷에 대한 룰의 RFC 테이블을 검색한다. 도 11은 도 10에 의하여 검색된 룰 부분 집합에서 룰에 대한 RFC 테이블을 검색하는 일 예를 나타낸 것으로, 단계 S500에 대한 과정을 설명하기 위한 일 예시도이다.
도 11a에 도시된 바와 같이, 두 번째 룰 부분 집합에 대한 키 값 K1에 대해 캐시라인에 이미 로드되어 있는 RFC 테이블 엔트리(1110)를 읽고, 그 다음 도 11b에 도시된 바와 같이, 두 번째 룰 부분 집합에 대한 키 값 K2에 대해 캐시라인에 이미 로드되어 있는 RFC 테이블 엔트리(1120)을 읽는다.
그 다음 도 11c에 도시된 바와 같이, 키 값 K3에 대해 캐시라인에 이미 로드되어 있는 RFC 테이블 엔트리(1130)와 레벨 2의 첫 번째 테이블 엔트리(1140)를 읽으며, 그 다음 도 11d에 도시된 바와 같이, 키 값 K4에 대해 캐시라인에 이미 로드되어 있는 RFC 테이블 엔트리(1150)와 레벨 2의 두 번째 테이블 엔트리(1160)를 읽는다.
마지막으로 도 11e에 도시된 바와 같이, 레벨 2의 첫 번째 테이블 엔트리(1140)와 두 번째 테이블 엔트리(1160)에 의하여 수신된 패킷에 대한 룰의 최종 RFC 테이블 엔트리(1170)를 검색하게 된다.
이와 같이, 본 발명에 다른 패킷 분류 방법은 수신된 패킷의 키 값들에 대한 파티션 인덱스와 RFC 테이블에 대한 인덱스를 캐시라인에 함께 로드함으로써, 수신된 패킷의 룰 부분 집합 검색 후 RFC 테이블 검색 시 캐시라인에 이미 로드되어 있는 RFC 테이블에 대한 인덱스를 사용하기 때문에 별도의 메모리 액세스를 할 필요가 없으며, 이를 통해 메모리 액세스 수를 줄여 검색 속도를 향상시킬 수 있다.
도 12는 본 발명의 일 실시 예에 따른 패킷 분류 장치에 대한 구성을 나타낸 것이다.
도 12를 참조하면, 패킷 분류 장치(1200)는 분할부(1210), 생성부(1220), 수신부(1230), 추출부(1240), 로딩부(1250), 검색부(1260) 및 캐시라인(1270)을 포함한다.
분할부(1210)는 패킷의 필드에 대응하는 키 값들을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하여 전체 룰 집합을 다수의 룰 부분 집합들로 나눈다.
여기서, 분할부(1210)는 패킷의 필들에 대응하는 키 값들의 순서에 따라 파티셔닝을 수행할 수도 있고, 최적의 키 값을 검색하여 그 검색된 순서로 파티셔닝을 수행할 수도 있다.
생성부(1220)는 분할부(1210)에 의하여 나누어진 다수의 룰 부분 집합들 각각에 대한 RFC 테이블을 생성한다.
수신부(1230)는 외부로부터 패킷을 수신하고, 추출부(1240)는 수신된 패킷의 필드로부터 키 값들을 추출한다.
로딩부(1250)는 추출부(1240)에 의하여 추출된 수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인(1270)에 함께 로드한다.
여기서, 로딩부(1250)는 해당 키 값별로 캐시라인이 할당되고, 할당된 캐시라인에 해당 키 값에 대응하는 파티션 정보와 RFC 테이블 정보를 함께 로드할 수 있다.
이 때, 로딩부(1250)는 다수의 룰 부분 집합들 각각에 대한 RFC 테이블 정보 중에서 캐시라인의 해당 키 값에 대응하는 RFC 테이블 정보만을 로드하는 것이 바람직하다.
캐시라인(1270)은 로딩부(1250)에 의해 로드된 키 값들 각각에 대응되는 파티션 정보와 RFC 테이블 정보를 저장한다.
검색부(1260)는 캐시라인(1270)에 로드된 수신 패킷의 키 값들 각각에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하고, 캐시라인(1270)에 로드된 수신된 패킷의 키 값들 각각에 대한 RFC 테이블 정보를 이용하여 검색된 룰 부분 집합으로부터 룰에 대한 RFC 테이블을 검색한다.
여기서, 검색부(1260)는 룰 부분 집합을 검색하기 위한 키 값들의 순서와 RFC 테이블을 검색하기 위한 키 값들의 순서가 동일하거나 상이하게 설정되어 룰 부분 집합과 룰에 대한 RFC 테이블을 검색할 수 있다.
도 13은 본 발명의 다른 일 실시 예에 따른 패킷 분류 장치에 대한 구성을 나타낸 것이다.
도 13을 참조하면, 패킷 분류 장치(1300)는 분할부(1310), 제1 생성부(1320), 제2 생성부(1330), 수신부(1340), 추출부(1350), 로딩부(1360), 검색부(1370) 및 캐시라인(1380)을 포함한다.
분할부(1310)는 패킷의 필드에 대응하는 키 값들을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하여 전체 룰 집합을 다수의 룰 부분 집합들로 나눈다.
제1 생성부(1320)는 분할부(1310)에 의하여 나누어진 다수의 룰 부분 집합들 각각에 대한 RFC 테이블을 생성한다.
제2 생성부(1330)는 제1 생성부(1320)에 의해 생성된 키 값들 각각에 대한 RFC 테이블에 대한 CBM 인덱스와 분할부(1310)에 의해 분할된 파티션에 대한 파티션 인덱스의 관계가 정리된 청크 컨테이너를 생성한다.
수신부(1340)는 외부로부터 패킷을 수신하고, 추출부(1350)는 수신된 패킷의 필드로부터 키 값들을 추출한다.
로딩부(1360)는 추출부(1350)에 의하여 추출된 수신 패킷의 키 값들 각각에 대하여 제2 생성부(1330)에 의해 생성된 적어도 하나 이상의 청크 컨테이너를 검색하여 키 값들 각각에 공통적으로 대응하는 CBM 인덱스와 파티션 인덱스를 동일한 캐시라인(1380)에 함께 로드한다.
캐시라인(1380)은 로딩부(1360)에 의해 로드된 키 값들 각각에 대응되는 파티션 인덱스와 RFC 테이블에 대한 CBM 인덱스를 저장한다.
검색부(1370)는 캐시라인(1380)에 로드된 수신 패킷의 키 값들 각각에 대한 파티션 인덱스를 이용하여 룰 부분 집합을 검색하고, 캐시라인(1380)에 로드된 수신된 패킷의 키 값들 각각에 대한 CBM 인덱스를 이용하여 검색된 룰 부분 집합으로부터 룰에 대한 RFC 테이블을 검색한다.
이 때, 검색부(1370)는 캐시라인(1380)에 로드된 파티션 인덱스를 이용하여 수신된 패킷에 대한 룰이 존재하는 룰 부분 집합을 검색하고, 검색된 룰 부분 집합으로부터 수신된 패킷에 대한 CBM 인덱스를 검색하여 검색된 CBM 인덱스에 대한 RFC 테이블을 검색할 수 있다.
이와 같이, 본 발명에 따른 패킷 분류 장치는 수신된 패킷의 룰이 포함된 룰 부분 집합을 검색하기 위한 파티션 정보 또는 파티션 인덱스를 캐시라인에 로드할 때 해당 키 값에 공통적으로 대응하는 RFC 테이블에 대한 정보 또는 CBM 인덱스를 청크 컨테이너로부터 검색하여 함께 로드하기 때문에 룰 부분 집합 검색 후 RFC 테이블을 검색하기 위해 별도로 메모리를 액세스할 필요가 없으며, 따라서 메모리 액세스 수를 줄여 검색 속도를 향상시킬 수 있다.
본 발명의 일 실시 예에 따른 패킷 분류 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (13)

  1. 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 단계;
    상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 단계;
    수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인에 함께 로드하는 단계;
    상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하는 단계; 및
    상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 RFC 테이블 정보를 이용하여 상기 검색된 상기 룰 부분 집합으로부터 상기 수신된 패킷의 룰에 대한 RFC 테이블을 검색하는 단계
    를 포함하는 패킷 분류 방법.
  2. 제1항에 있어서,
    상기 룰 부분 집합들로 나누는 단계는
    상기 패킷의 키 값들에 대해 기 설정된 순서로 파티셔닝을 수행하거나 상기 패킷의 필드에 대응하는 키 값들 중 최적의 키 값을 순차적으로 검색하여 파티셔닝을 수행하는 것을 특징으로 하는 패킷 분류 방법.
  3. 제1항에 있어서,
    상기 룰 부분 집합을 검색하는 키 값의 순서와 상기 RFC 테이블을 검색하는 키 값의 순서는 상이한 것을 특징으로 하는 패킷 분류 방법.
  4. 제1항에 있어서,
    상기 로드하는 단계는
    상기 다수의 룰 부분 집합들 각각에 대한 RFC 테이블 정보 중에서 상기 캐시라인의 해당 키 값에 대응하는 RFC 테이블 정보만을 로드하는 것을 특징으로 하는 패킷 분류 방법.
  5. 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 단계;
    상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 단계;
    상기 키 값에 따른 RFC 테이블들에 대한 CBM(Class BitMap) 인덱스와 파티션에 대한 파티션 인덱스의 관계가 정리된 청크 컨테이너를 생성하는 단계;
    수신된 패킷의 키 값으로 상기 생성된 상기 청크 컨테이너를 검색하여 상기 수신된 패킷의 키 값에 공통적으로 대응하는 CBM 인덱스와 파티션 인덱스를 동일한 캐시라인에 함께 로드하는 단계; 및
    상기 캐시라인에 로드된 상기 CBM 인덱스와 상기 파티션 인덱스를 이용하여 상기 수신된 패킷에 대한 파티션과 RFC 테이블을 검색하는 단계
    를 포함하는 패킷 분류 방법.
  6. 제5항에 있어서,
    상기 생성하는 단계는
    상기 캐시라인의 크기, 지원되어야 하는 룰 부분 집합의 수 및 테이블 메모리 크기에 따라 필드의 크기가 달라지는 적어도 하나 이상의 청크 컨테이너를 생성하는 것을 특징으로 하는 패킷 분류 방법.
  7. 제5항에 있어서,
    상기 청크 컨테이너는
    상기 CBM 인덱스와 룰 인덱스 중 적어도 하나를 포함하는 것을 특징으로 하는 패킷 분류 방법.
  8. 제5항에 있어서,
    상기 검색하는 단계는
    상기 검색된 파티션에 대한 룰 부분 집합으로부터 상기 키 값에 따라 생성된 청크 컨테이너들을 이용하여 상기 수신된 패킷에 대한 CBM 인덱스를 검색하고, 상기 검색된 CBM 인덱스를 이용하여 상기 수신된 패킷에 대한 RFC 테이블을 검색하는 것을 특징으로 하는 패킷 분류 방법.
  9. 제1항 내지 제8항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  10. 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 분할부;
    상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 생성부;
    수신된 패킷의 키 값에 공통적으로 대응하는 파티션 정보와 RFC 테이블 정보를 동일한 캐시라인에 함께 로드하는 로딩부; 및
    상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 파티션 정보를 이용하여 룰 부분 집합을 검색하고, 상기 캐시라인에 로드된 상기 수신된 패킷의 키 값에 대한 RFC 테이블 정보를 이용하여 상기 검색된 상기 룰 부분 집합으로부터 상기 수신된 패킷의 룰에 대한 RFC 테이블을 검색하는 검색부
    를 포함하는 패킷 분류 장치.
  11. 제10항에 있어서,
    상기 검색부는
    상기 룰 부분 집합을 검색하는 키 값의 순서와 상기 RFC 테이블을 검색하는 키 값의 순서를 상이하게 하여 상기 룰 부분 집합과 상기 RFC 테이블을 검색하는 것을 특징으로 하는 패킷 분류 장치.
  12. 패킷의 필드에 대응하는 키 값을 이용하여 전체 룰 집합에 대한 파티셔닝(partitioning)을 수행하고 상기 전체 룰 집합을 다수의 룰 부분 집합들로 나누는 분할부;
    상기 나누어진 상기 다수의 룰 부분 집합들 각각에 대한 RFC(Recursive Flow Classification) 테이블을 생성하는 제1 생성부;
    상기 키 값에 따른 RFC 테이블들에 대한 CBM(Class BitMap) 인덱스와 파티션에 대한 파티션 인덱스의 관계가 정리된 청크 컨테이너를 생성하는 제2 생성부;
    수신된 패킷의 키 값으로 상기 생성된 상기 청크 컨테이너를 검색하여 상기 수신된 패킷의 키 값에 공통적으로 대응하는 CBM 인덱스와 파티션 인덱스를 동일한 캐시라인에 함께 로드하는 로딩부; 및
    상기 캐시라인에 로드된 상기 CBM 인덱스와 상기 파티션 인덱스를 이용하여 상기 수신된 패킷에 대한 파티션과 RFC 테이블을 검색하는 검색부
    를 포함하는 패킷 분류 장치.
  13. 제12항에 있어서,
    상기 검색부는
    상기 캐시라인에 로드된 상기 파티션 인덱스를 이용하여 상기 수신된 패킷에 대한 룰이 존재하는 룰 부분 집합을 검색하고, 상기 검색된 상기 룰 부분 집합으로부터 상기 수신된 패킷에 대한 CBM 인덱스를 검색하여 상기 검색된 CBM 인덱스에 대한 RFC 테이블을 검색하는 것을 특징으로 하는 패킷 분류 장치.
KR1020110103356A 2011-10-11 2011-10-11 패킷 분류 방법 및 그 장치 KR101331018B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110103356A KR101331018B1 (ko) 2011-10-11 2011-10-11 패킷 분류 방법 및 그 장치
PCT/KR2012/008181 WO2013055083A1 (ko) 2011-10-11 2012-10-10 패킷 분류 방법 및 그 장치
US14/250,235 US9240959B2 (en) 2011-10-11 2014-04-10 Method for packet classification and device therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110103356A KR101331018B1 (ko) 2011-10-11 2011-10-11 패킷 분류 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20130038975A KR20130038975A (ko) 2013-04-19
KR101331018B1 true KR101331018B1 (ko) 2014-01-15

Family

ID=48082077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110103356A KR101331018B1 (ko) 2011-10-11 2011-10-11 패킷 분류 방법 및 그 장치

Country Status (3)

Country Link
US (1) US9240959B2 (ko)
KR (1) KR101331018B1 (ko)
WO (1) WO2013055083A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102023475B1 (ko) * 2018-03-29 2019-09-20 계명대학교 산학협력단 고속 보안 정책 검색을 위한 이중 커팅 기반 패킷 분류 방법 및 시스템

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101505845B1 (ko) 2014-02-04 2015-03-26 한국전자통신연구원 패킷 처리 장치 및 방법
US9866498B2 (en) * 2014-12-23 2018-01-09 Intel Corporation Technologies for network packet cache management
US9729680B2 (en) * 2015-04-23 2017-08-08 Nxp Usa, Inc. Methods and systems to embed valid-field (VF) bits in classification keys for network packet frames
US10404594B2 (en) * 2016-12-13 2019-09-03 Oracle International Corporation System and method for providing partitions of classification resources in a network device
US10341242B2 (en) 2016-12-13 2019-07-02 Oracle International Corporation System and method for providing a programmable packet classification framework for use in a network device
WO2018138062A1 (en) 2017-01-24 2018-08-02 Rockley Photonics Limited Multi-field classifier
KR101941182B1 (ko) * 2017-06-28 2019-04-12 계명대학교 산학협력단 하이브리드 커팅을 이용한 고속 패킷 분류 방법 및 시스템
CN109376789B (zh) * 2018-10-31 2020-12-08 钟祥博谦信息科技有限公司 一种网络包分类算法与系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050108301A (ko) * 2004-05-11 2005-11-16 삼성전자주식회사 계층적 룰베이스 분할을 통한 패킷 분류 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020089937A1 (en) * 2000-11-16 2002-07-11 Srinivasan Venkatachary Packet matching method and system
US7474654B2 (en) * 2005-01-26 2009-01-06 Cisco Technology, Inc. Method and system for classification of packets based on meta-rules
CN100486211C (zh) * 2005-01-31 2009-05-06 国际商业机器公司 一种用于因特网的基于规则集合划分的分组分类的方法
US7668160B2 (en) * 2005-03-31 2010-02-23 Intel Corporation Methods for performing packet classification
KR100965552B1 (ko) 2008-08-06 2010-06-23 이화여자대학교 산학협력단 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치
US7872993B2 (en) 2008-10-30 2011-01-18 Alcatel Lucent Method and system for classifying data packets
KR101070407B1 (ko) 2009-02-12 2011-10-06 서울대학교산학협력단 에너지 효율적인 동기 방식을 사용하는 무선 네트워크 시스템
KR100996136B1 (ko) 2009-06-25 2010-11-23 이화여자대학교 산학협력단 패킷 분류 장치 및 그 방법
KR101070415B1 (ko) * 2009-12-30 2011-10-05 서울대학교산학협력단 패킷 분류용 테이블 관리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050108301A (ko) * 2004-05-11 2005-11-16 삼성전자주식회사 계층적 룰베이스 분할을 통한 패킷 분류 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Pankaj Gupta and Nick McKeown, "Packet Classification on Multiple Fields", Proc. ACM SIGCOMM 1999, p.147-160 *
Pi-Chung Wang, "Scalable Packet Classification with Controlled Cross-Producting", Computer Networks, Volume 53, Issue 6, 23 April 2009, p. 821-834 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102023475B1 (ko) * 2018-03-29 2019-09-20 계명대학교 산학협력단 고속 보안 정책 검색을 위한 이중 커팅 기반 패킷 분류 방법 및 시스템

Also Published As

Publication number Publication date
US20140219283A1 (en) 2014-08-07
KR20130038975A (ko) 2013-04-19
US9240959B2 (en) 2016-01-19
WO2013055083A1 (ko) 2013-04-18

Similar Documents

Publication Publication Date Title
KR101331018B1 (ko) 패킷 분류 방법 및 그 장치
US10257092B2 (en) CCN routing using hardware-assisted hash tables
US7668160B2 (en) Methods for performing packet classification
EP2643762B1 (en) Method and apparatus for high performance, updatable, and deterministic hash table for network equipment
US11687594B2 (en) Algorithmic TCAM based ternary lookup
US9098601B2 (en) Ternary content-addressable memory assisted packet classification
US7808929B2 (en) Efficient ACL lookup algorithms
US20060221956A1 (en) Methods for performing packet classification via prefix pair bit vectors
US8139586B2 (en) Enhanced packet classification
US20060221967A1 (en) Methods for performing packet classification
US10148571B2 (en) Jump on a match optimization for longest prefix match using a binary search tree
US20150127900A1 (en) Ternary content addressable memory utilizing common masks and hash lookups
US20110307656A1 (en) Efficient lookup methods for ternary content addressable memory and associated devices and systems
WO2014000670A1 (en) Internet protocol and ethernet lookup via a unified hashed trie
US9294390B2 (en) Hash table storage and search methods and devices
Meiners et al. Hardware based packet classification for high speed internet routers
US11888743B1 (en) Network device storage of incremental prefix trees
US6970971B1 (en) Method and apparatus for mapping prefixes and values of a hierarchical space to other representations
US9305115B1 (en) Method and apparatus for reducing power consumption during rule searches in a content search system
KR20100018409A (ko) 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치
KR101665583B1 (ko) 네트워크 트래픽 고속처리 장치 및 방법
CN111163077A (zh) 一种基于网络处理器实现多维连续掩码的系统和方法
Vijay et al. Implementation of memory-efficient linear pipelined IPv6 lookup and its significance in smart cities
CN101822027A (zh) 用于网际协议地址的高效cam查找的方法和设备
Erdem et al. Value-coded trie structure for high-performance IPv6 lookup

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: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181106

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191105

Year of fee payment: 7