KR101583439B1 - 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치 - Google Patents

리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치 Download PDF

Info

Publication number
KR101583439B1
KR101583439B1 KR1020140168907A KR20140168907A KR101583439B1 KR 101583439 B1 KR101583439 B1 KR 101583439B1 KR 1020140168907 A KR1020140168907 A KR 1020140168907A KR 20140168907 A KR20140168907 A KR 20140168907A KR 101583439 B1 KR101583439 B1 KR 101583439B1
Authority
KR
South Korea
Prior art keywords
prefix
leaf
quadrant
input packet
header information
Prior art date
Application number
KR1020140168907A
Other languages
English (en)
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 KR1020140168907A priority Critical patent/KR101583439B1/ko
Application granted granted Critical
Publication of KR101583439B1 publication Critical patent/KR101583439B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks

Landscapes

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

Abstract

리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치가 개시된다. 패킷 분류 방법은 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신하고, 상기 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써 리프-푸싱 기반의 영역 분할 사분 트라이를 생성할 수 있다.

Description

리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치{PACKET CLASSIFICATION METHOD AND PACKET CLASSIFICATION APPARATUS USING AN AREA-BASED QUAD TRIE WITH LEAF-PUSHING}
본 발명은 패킷 분류 방법 및 패킷 분류 장치에 관한 것으로, 보다 구체적으로는 인터넷 라우터에서 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 패킷을 분류하는 방법 및 장치에 관한 것이다.
최근 통신 기술 및 시장의 급속한 성장으로 인터넷을 이용하는 다양한 어플리케이션이 개발되고 있다. 이러한 다양한 어플리케이션의 개발은 인터넷을 통해 송수신되는 데이터가 급속하게 늘어나는 결과를 초래하였다.
패킷 형태의 데이터는 인터넷 라우터를 통해 전송된다. 그러나, 급속히 늘어난 데이터는 인터넷 라우터가 처리할 수 있는 용량을 초과하여, 사용자에게 제공되는 서비스의 품질이 낮아지는 악영향을 미치고 있다.
그 결과, 사용자들이 보다 나은 서비스 품질을 원하는 상황에서 이런 사용자들이 원하는 서비스 품질을 보장하기 위해서는 인터넷 라우터에서 패킷을 분류하는 작업이 필수적이다.
기존에는 패킷 분류를 위하여 근원지 IP 프리픽스와 목적지 IP 프리픽스를 결합한 코드워드들의 2차원 트라이를 구축하는 영역 분할 사분 트라이(Area-based Quad Trie: AQT) 방식이 사용되고 있다.
그러나, 영역 분할 사분 트라이의 경우, 트라이의 루트 노드로부터 입력 패킷의 패스에 존재하는 모든 룰 노드에서 룰 비교가 일어나게 된다. 이러한 방식은 입력 패킷과 일치 가능성이 없는 룰들과의 불필요한 비교를 발생시키기 때문에 고속 분류 성능을 제공하지 못할 수 있다.
따라서, 사용자에게 서비스 품질을 보장하기 위하여 영역 분할 사분 트라이 방식 보다 빠르게 패킷을 분류할 수 있는 방법이 요구되고 있다.
본 발명은 패킷 분류 방법 및 패킷 분류 장치에 관한 것으로, 인터넷 사용자들이 원하는 서비스 품질의 보장을 위하여 수행되는 인터넷 라우터에서의 패킷 분류에 있어, 영역 분할 사분 트라이에서 룰이 저장된 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써, 각각의 입력 패킷이 룰이 저장된 노드를 한번만 만날 수 있게 하는 리프-푸싱 기반의 영역 분할 사분 트라이 방법 및 장치를 제공한다.
본 발명의 일실시예에 따라 패킷 분류 장치가 수행하는 패킷 분류 방법에 있어서, 패킷 분류 장치에 포함된 프로세서는 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신하고, 상기 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써 리프-푸싱 기반의 영역 분할 사분 트라이를 생성할 수 있다.
상기 프로세서는 상기 복수의 제1 노드들은 적어도 하나의 룰을 우선 순위에 따라 순차적으로 저장할 수 있다.
상기 프로세서는 상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 생성할 수 있다.
상기 프로세서는 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이에서 룰이 저장된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 구성된 리프-푸싱 기반의 영역 분할 사분 트라이를 식별하고, 입력 패킷에 포함된 헤더 정보를 이용하여 상기 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 검색하며, 상기 검색된 제1 노드에서의 룰과 상기 입력 패킷의 헤더 정보를 비교할 수 있다.
상기 리프-푸싱 기반의 영역 분할 사분 트라이는 상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 생성된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 생성될 수 있다.
상기 프로세서는 상기 입력 패킷을 수신하고, 상기 수신된 입력 패킷의 헤더 정보를 확인하여 근원지 IP 프리픽스와 목적지 IP 프리픽스를 추출하며, 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스를 이용하여 코드워드를 획득함으로써, 상기 획득된 코드워드에 해당하는 경로를 따라 상기 입력 패킷에 대해 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 확인할 수 있다.
상기 프로세서는 상기 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 적어도 하나에 와일드 카드가 존재하지 않는 경우. 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우보다 우선적으로 입력 패킷의 헤더 정보를 비교할 수 있다.
상기 프로세서는 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 생성된 와일드카드 테이블을 이용하여 상기 수신된 입력 패킷의 헤더 정보와 비교할 수 있다.
상기 프로세서는 우선순위가 높은 룰 순으로 저장된 상기 와일드카드 테이블에서, 상기 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 확인된 최적의 룰보다 우선순위가 높은 룰들에 대해서 수신된 입력 패킷의 헤더 정보와 비교할 수 있다.
패킷 분류 장치에 있어서, 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신하고, 상기 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써 리프-푸싱 기반의 영역 분할 사분 트라이를 생성하는 프로세서를 포함할 수 있다.
상기 복수의 제1 노드들은 적어도 하나의 룰을 우선 순위에 따라 순차적으로 저장할 수 있다.
상기 프로세서는, 상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 생성할 수 있다.
상기 프로세서는 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이에서 룰이 저장된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 구성된 리프-푸싱 기반의 영역 분할 사분 트라이를 식별하고, 입력 패킷 정보를 이용하여 상기 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 검색하며, 상기 검색된 제1 노드에서의 룰과 상기 입력 패킷의 헤더 정보를 비교할 수 있다.
상기 리프-푸싱 기반의 영역 분할 사분 트라이는 상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 생성된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 생성될 수 있다.
상기 프로세서는, 상기 입력 패킷을 수신하고, 상기 수신된 입력 패킷의 헤더 정보를 확인하여 근원지 IP 프리픽스와 목적지 IP 프리픽스를 추출하며, 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스를 이용하여 코드워드를 획득함으로써, 상기 획득한 코드워드에 해당하는 경로를 따라 상기 입력 패킷에 대해 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 확인할 수 있다.
상기 프로세서는, 상기 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 적어도 하나에 와일드 카드가 존재하지 않는 경우. 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우보다 우선적으로 입력 패킷의 헤더 정보를 비교할 수 있다.
상기 프로세서는 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 생성된 와일드카드 테이블을 이용하여 상기 수신된 입력 패킷의 헤더 정보와 비교할 수 있다.
상기 프로세서는 우선순위가 높은 룰 순으로 저장된 상기 와일드카드 테이블에서, 상기 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 확인된 최적의 룰보다 우선순위가 높은 룰들에 대해서 수신된 입력 패킷의 헤더 정보와 비교할 수 있다.
본 발명의 일실시예에 따르면, 영역 분할 사분 트라이에 리프-푸싱을 적용하여 리프-푸싱 기반의 영역 분할 사분 트라이를 이용함으로써, 인터넷 라우터 내의 패킷 분류 장치에서 패킷을 분류하는 성능을 향상시켜 패킷을 분류하는 속도를 높일 수 있다.
도 1은 일실시예에 따른 패킷 분류 장치를 도시화한 것이다.
도 2는 일실시예에 따른 셋팅된 룰의 예시를 도시화한 것이다.
도 3은 일실시예에 따른 도 2의 셋팅된 룰을 이용하여 도출된 코드워드를 도시화한 것이다.
도 4는 일실시예에 따른 도 3의 코드워드를 이용하여 영역 분할 사분 트라이의 예시를 도시화한 것이다.
도 5는 일실시예에 따른 이진 트라이를 리프-푸싱 기반의 이진 트라이로 변환하는 과정을 설명하기 위한 예시를 도시한 것이다.
도 6는 일실시예에 따른 도 4의 영역 분할 사분 트라이를 리프-푸싱 기반의 영역 분할 사분 트라이로 변환하는 예시를 도시화한 것이다.
도 7은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 전체 노드 개수를 도시화한 것이다.
도 8은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 룰을 포함하지 않는 내부 노드에 접근하는 평균 횟수를 도시화한 것이다.
도 9은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 룰이 저장된 노드에 접근하는 평균 횟수를 도시화한 것이다.
도 10는 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 입력 패킷의 헤더 정보와 비교되는 룰의 평균 횟수를 도시화한 것이다.
도 11은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 입력 패킷의 헤더 정보와 비교되는 룰의 최대 횟수를 도시화한 것이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명에서는 인터넷 라우터에서 패킷을 분류하는데 있어 사용되는 영역 분할 사분 트라이에 리프-푸싱을 적용하여 리프-푸싱 영역 분할 사분 트라이를 이용함으로써, 보다 빠른 속도로 패킷을 분류하는 장치 및 방법을 제공한다.
도 1은 일실시예에 따른 패킷 분류 장치를 도시화한 것이다.
인터넷 라우터 내에 존재하는 패킷 분류 장치(110)는 패킷 분류를 수행하는데 있어, 프로세서(120), 내부 메모리(130) 및 프로세서(120)의 외부에 존재하는 외부 메모리(140)로 구성될 수 있다. 이 때, 프로세서(120)는 하나의 칩으로 구현될 수 있다. 그래서, 프로세서(120)가 패킷 분류를 위해 내부 메모리(130)를 이용하는 경우, 패킷 분류는 온-칩(On-Chip)에서 진행될 수 있다. 하지만, 프로세서(120)가 패킷 분류를 위해 외부 메모리(140)를 이용하는 경우, 패킷 분류는 오프-칩(Off-Chip)에서 진행될 수 있다.
이 때, 오프 칩에서 진행되는 패킷 분류는 메모리 접근 시간으로 인해 온 칩에서 진행되는 패킷 분류보다 분류 속도가 늦다. 즉, 오프-칩 메모리에 접근할 때 소용되는 시간이 매우 길어 패킷을 검색하는 속도에 가장 큰 영향을 미치므로 오프-칩 메모리 접근 횟수를 패킷 분류 성능평가의 지표로 삼을 수 있다.
따라서, 패킷 분류에 필수적인 복잡한 검색 과정은 온-칩에서 이루어지도록 하고, 그 크기 때문에 칩의 내부 메모리(130)에 저장되기 어려운 룰 데이터베이스는 대용량 오프-칩에 저장하는 방식을 사용할 수 있다.
여기서, 패킷 분류란 인터넷 라우터에 미리 정의된 룰 중에서 입력 패킷에 대한 룰과 일치하는 룰들을 검색하고, 검색된 룰들에서 가장 우선순위가 가장 높은 룰(Best Matching Rule, BMR)에 해당하는 클래스로 입력 패킷을 분류하는 것을 의미할 수 있다.
패킷 분류 장치(110)의 프로세서(120)는 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신할 수 있다.
영역 분할 사분 트라이는 영역 분할 패킷 분류 알고리즘 중에서 메모리 요구량이 가장 적은 알고리즘이다. 영역 분할 사분 트라이는 2차원 영역분할에 기초한 패킷 분류 알고리즘이다. 근원지 IP 프리픽스 필드와 목적지 IP프리픽스 필드가 각각 x축과 y축을 이루는 정사각형 평면에 대하여, 영역 분할 사분 트라이 구조에서의 각각의 룰은 넓이를 갖는 사각형 영역으로 표현된다. 이때, 프리픽스의 길이가 길수록 해당 면적은 좁게 된다.
영역 분할 사분 트라이에서는 크로싱 필터 셋(crossing filter set)을 정의하는데, 어떤 영역에 대하여 룰이 차지하는 사각형 영역이 두 필드 중 어느 한 필드라도 꽉 채우고 있다면 그 룰은 해당 영역의 크로싱 필터 셋에 속하게 된다.
즉, 전체 정사각형 평면은 루트 노드에 해당되고, 전체 평면을 사분할한 정사각형 영역은 루트노드의 네개 자식 노드에 해당된다. 그러므로 영역 분할 사분 트라이는 2차원 알고리즘으로서 노드의 패스(path)는 0, 1, 2, 혹은 3의 패스를 갖게 된다. 이러한 방법으로 지속적으로 각 영역을 사분할하여 가면서 생성된 노드에, 이 영역의 크로싱 필터 셋에 속한 룰들을 저장하는 방식으로 사분할 트라이를 구축한다. 각 노드에는 여러 개의 룰이 해당될 수 있고, 이 룰들은 우선순위에 따라 저장된다. 이렇게 우선순위가 높은 룰을 먼저 저장하게 되면 검색을 할 때 일치하는 룰이 있으면 우선순위가 낮은 룰들의 검색을 진행하지 않아도 되는 장점이 있다. 룰들은 선형적으로 비교되므로, 특정 크로싱 필터 셋에 저장된 룰들이 많은 경우 빠른 분류속도를 보장하지 못한다.
영역 분할 사분 트라이는 또한 근원지 IP 프리픽스 필드와 목적지 IP 프리픽스 필드를 조합하여 만들어진 코드워드(code-word)를 사용하여 구축한 사분할 트라이로 설명할 수 있다.
도 2는 일실시예에 따른 셋팅된 룰의 예시를 도시화한 것이다.
각각의 룰들은 근원지 IP 프리픽스, 목적지 IP 프리픽스, 근원지 포트 넘버, 목적지 포트 넘버 및 프로토콜 필드 등의 정보를 포함할 수 있다.
이러한 정보들은 입력 패킷의 헤더에도 포함되어 있기 때문에 패킷 분류 장치(110)을 이용하여 입력 패킷의 헤더에 포함된 정보와 각각의 룰들에 포함된 정보를 비교함으로써 패킷을 분류하는 것이 가능할 수 있다.
이때, 근원지IP 프리픽스와 목적지 IP 프리픽스 중 *의 값을 갖는 부분은 와일드카드라 명칭하고 이후 비트들은 0 또는 1의 어떠한 값도 가질 수 있다.
도 3은 일실시예에 따른 도 2의 셋팅된 룰을 이용하여 도출된 코드워드를 도시화한 것이다.
도 3은 도 2에 있는 각각의 룰에 포함되어 있는 근원지 IP 프리픽스와 목적지 IP 프리픽스를 조합하여 만든 코드워드를 포함하고 있다. R0(010*, 011*)로 예를 들어 설명하면, R0의 경우 근원지 IP 프리픽스의 첫 번째 비트가 0이고 목적지 IP 프리픽스의 첫 번째 비트가 0이므로 코드워드는 00 이고, 첫 번째 디지트는 십진수 0이 된다. 이와 같은 방법으로 R0의 코드워드는 00_11_01이 되므로 R0의 코드워드는 십진수로 032가 된다. 각각의 룰의 코드워드의 길이는 근원지 IP 프리픽스의 길이와 목적지 IP 프리픽스의 길이 중 짧은 길이와 같다.
이때, 코드워드의 길이는 룰이 저장될 영역 분할 사분 트라이의 노드 레벨을 결정하고, 코드워드의 값은 룰이 저장될 영역 분할 사분 트라이의 노드 패스(path)를 결정한다. 예를 들어, R0(010*, 011*)의 코드워드는 십진수로 032이므로, R0는 영역 분할 사분 트라이의 세 번째 레벨에 위치하고 루트 노드에서 0, 3, 2의 패스에 존재하는 노드에 저장된다.
도 4는 일실시예에 따른 도 3의 코드워드를 이용하여 영역 분할 사분 트라이의 예시를 도시화한 것이다.
루트 노드에는 근원지 IP 프리픽스 필드나 목적지 IP 프리픽스 필드 중 하나라도 완전히 와일드카드의 값을 갖는 룰이 저장될 수 있다. 코드워드의 길이는 룰이 저장되는 레벨을 결정하며 코드워드의 값은 루트 노드로부터 룰이 저장되는 제1 노드까지의 패스를 결정할 수 있다. 검정색으로 표현된 노드는 룰이 저장된 노드이고, 흰색으로 표현된 노드는 룰이 저장되지 않은 노드일 수 있다.
영역 분할 사분 트라이의 검색 방법은 영역 분할 사분 트라이를 구성하는 방법과 동일하게 입력 패킷의 근원지 IP 주소와 목적지 IP 주소의 각각의 비트들의 조합으로 코드워드를 만든 다음, 루트로부터 이 코드워드의 패스를 따라가면서 검색을 진행한다.
검색의 예로 입력 패킷 (0110, 0110, 161, 1711, TCP)이 들어왔다고 가정하면, 먼저 근원지 주소와 목적지 주소를 가지고 코드워드를 생성한다. 입력 패킷의 코드워드는 00_11_11_00이 되므로 입력 패킷의 패스는 0330이 된다. 루트를 시작으로 검색을 진행하면 먼저 루트 노드는 룰이 저장된 노드이므로 오프칩 검색을 수행하여 R6, R7와 비교하고, 이들 룰은 입력 패킷과 일치하지 않는다. 패스 0을 따라가면 R5를 만나고 역시 일치하지 않으므로 계속 아래로 검색을 진행하게 된다. 그 다음 패스는 룰이 저장되지 않은 빈 노드이므로 오프-칩으로의 검색이 진행되지 않고 0330은 룰 노드이므로 오프-칩 검색이 이루어진다. 입력 패킷은 R1과 일치하고 더 이상 진행 할 패스가 없으므로 검색을 종료한다. 이 입력 패킷에 대하여 이루어진 총 5번의 노드 검색 중, 3번의 룰 노드의 접근과 2번의 빈 노드의 접근이 이루어 졌으며 4개 룰과 비교 검색이 이루어 졌다.
영역 기반 사분 트라이를 사용한 패킷 분류의 문제점은 두 개 프리픽스 필드 중 짧은 길이를 기준으로 프리픽스 정보를 조합하여 코드워드를 만들기 때문에, 트라이를 구축하는데 있어 긴 쪽 프리픽스의 나머지 정보가 이용되지 않는다는 점이다. 이러한 점은 입력과 일치 가능성이 없는 불필요한 룰들과의 비교를 위한 메모리 접근을 발생시켜 패킷 분류 성능을 저하시키는 요인이 될 수 있다. 특히, 루트 노드에 저장되는 룰들이 많은 경우 이러한 룰들은 모든 입력 패킷과 비교되어야 하기 때문에 패킷 분류 성능에 매우 나쁜 영향을 미쳐 패킷 분류 속도를 느리게 만들 수 있다.
도 5는 일실시예에 따른 이진 트라이를 리프-푸싱 기반의 이진 트라이로 변환하는 과정을 설명하기 위한 예시를 도시한 것이다.
당초 1차원 IP 주소 검색을 위한 구조로서 리프-푸싱 트라이가 제안되었다. 리프-푸싱이란 트라이의 내부 노드에 위치한 모든 프리픽스들을 트라이의 최하위 레벨인 리프로 내려 프리픽스 노드가 리프에만 존재하도록 만든 구조이다.
영역 분할 사분 트라이는 룰 복사가 이루어 지지 않아 메모리 요구량이 작다는 장점이 있지만, 루트 노드로부터 트라이의 최하위 레벨에 위치한 리프 노드로 이르는 패스에 존재하는 모든 룰들이 각 입력 패킷과 비교되어야 한다는 단점이 있다. 다시 말하면 근원지 IP 주소와 목적지 IP 주소로 코드워드를 만들어서 검색 패스를 정한 후, 룰 노드를 만나면 오프-칩에서 룰 검색이 이루어 진다. 또한 하나의 룰 노드에 포함된 룰이 많은 경우, 룰 노드를 만날 때 마다 오프-칩에서 룰들의 연결 리스트를 따라가면서 선형적으로 비교 검색하므로 검색 성능이 매우 좋지 않을 수 있다. 이에 리프-푸싱을 수행하면 모든 룰은 트라이의 리프에 위치하게 되므로 룰 노드로의 접근이 한번만 이루어 지는 장점이 있다.
리프-푸싱 기반의 영역 분할 사분 트라이는 영역 분할 사분 트라이에 리프-푸싱을 적용하여 패킷 분류 검색 성능을 향상시킨 알고리즘이다. 룰의 복사로 인한 메모리 사용량이 증가하지만 하나의 룰 노드만 접근하게 되므로 오프-칩에서 이루어지는 룰 비교 회수를 획기적으로 줄일 수 있어, 평균 패킷 분류 성능을 월등히 향상시킨 알고리즘이다.
리프-푸싱을 수행하면 모든 프리픽스들은 루트 노드에서 트라이의 최하위 레벨인 리프에 위치한 노드에 이르기까지 서로 겹치는 부분이 없는 관계가 된다. 도 5는 리프-푸싱을 설명하기 위하여 이진 트라이를 리프-푸싱 기반의 이진 트라이로 변환하는 예를 보여준다. 도 5의 A 트라이는 리프-푸싱이 이루어지기 전의 트라이이며, 각 프리픽스가 차지하는 직선상의 영역을 함께 표현하였다. 루트에 존재하는 P0는 전체 영역을 차지하고 있으며, 비트 값 0은 직선의 왼쪽 반, 비트 값 1은 직선의 오른 쪽 반에 해당되므로, 프리픽스 값 01*를 갖는 P1은 4분할된 직선의 두 번째 영역에 해당된다. 또한 프리픽스 값 0101*을 갖는 P2는 16분할된 직선의 여섯 번째 영역에 해당된다.
도 5의 B 트라이는 A 트라이를 리프-푸싱한 트라이를 보여주고 있다. 직선상의 각 영역을 서로 겹치지 않도록 나누고 각 영역에 해당하는 노드에 해당 프리픽스들을 저장한 트라이이다. 도 5의 B 트라이에서 리프에 위치하지 않은 노드 프리픽스인 P1과 P2를 리프-푸싱하여 생긴 노드들은 점선으로 연결하여 표현하였다. P0는 전체 영역을 차지하는 룰이므로 리프에 위치한 모든 노드에 복사되고, P1은 0100* 노드, 0101* 노드, 011* 노드로 복사되었다. 리프-푸싱을 수행하면 리프를 제외한 모든 노드들은 2개의 자식 노드를 갖게 됨을 볼 수 있다.
도 6는 일실시예에 따른 도 4의 영역 분할 사분 트라이를 리프-푸싱 기반의 영역 분할 사분 트라이로 변환하는 예시를 도시화한 것이다.
영역 분할 사분 트라이에서 룰을 포함하는 노드가 영역 분할 사분 트라이의 최하위 레벨인 리프에 위치하지 않는 경우, 프로세서(120)는 새로운 리프-푸싱 코드워드를 생성함으로써, 리프-푸싱 기반의 영역 분할 사분 트라이를 구성할 수 있다.
이때, 프로세서(120)는 영역 분할 사분 트라이를 구성하는 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 리프-푸싱 코드워드를 생성할 수 있다.
예를 들어, 도 4에서 R0~R3을 포함하는 노드는 영역 분할 사분 트라이의 리프에 위치하므로 R0~R3에 리프-푸싱을 적용하여 새로운 리프-푸싱 코드워드를 생성할 필요가 없다.
하지만, R4~R7을 포함하는 노드는 영역 분할 사분 트라이의 리프에 존재하지 않으므로 프로세서(120)는 새로운 리프-푸싱 코드워드를 생성하여 리프-푸싱 기반의 영역 사분 트라이를 구축함으로써, R4~R7을 포함하는 노드가 리프-푸싱 기반의 영역 사분 트라이의 리프에 위치하게 할 수 있다.
일실시예로, 도 4에서 R5는 룰이 저장된 노드이지만 영역 분할 사분 트라이의 리프에 존재하지 않는다. 따라서, 프로세서(120)는 R5를 영역 분할 사분 트라이의 리프에 위치하도록 하기 위하여 R5에 리프-푸싱을 적용하여 리프-푸싱 코드워드를 생성할 수 있다.
R5의 근원지 IP 프리픽스는 00*이고, 목적지 IP 프리픽스는 0*이다. 이때, R5의 첫번째 비트에 대한 코드워드는 00이며, 첫번째 디지트는 십진수로 나타내면 0이된다. R5의 두번째 비트에 대한 코드워드는 목적지 IP 프리픽스에서 두번째 비트가 존재하지 않으므로 형성되지 않는다. 따라서, R5의 코드워드는 0이 된다. 도 4를 보면 R5를 포함하는 노드는 패스 0를 지나면 검색할 수 있다.
하지만 패스 0 이후 R5를 포함하는 노드는 영역 분할 사분 트라이에서 리프에 해당하지 않으므로 새로운 리프-푸싱 기반의 영역 분할 사분 트라이를 생성하여야 한다.
이에, 리프-푸싱 기반의 영역 분할 사분 트라이를 구성하기 위하여, 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 길이가 짧은 프리픽스인 목적지 IP 프리픽스를 먼저 확장시킬 수 있다. 그러면 R5의 목적지 IP 프리픽스는 00* 또는 01*이 된다.
프로세서(120)는 확장된 R5의 목적지 IP 프리픽스와 근원지 IP 프리픽스를 이용하여 새로운 리프-푸싱 코드워드를 생성할 수 있다. 이때, 프로세서(120)는 IP 프리픽스와 근원지 IP 프리픽스의 각각의 비트들을 이용하여 00_00과 00_01의 코드워드를 생성할 수 있다. 생성된 코드워드를 이용하여 각각의 디지트를 십진수로 나타내면 00과 01이 된다. 도 4의 기존의 영역 분할 사분 트라이에서는 00과 01의 코드워드를 가지는 노드가 존재하지 않으므로 이를 추가함으로써 R5는 리프-푸싱 기반의 영역 분할 사분 트라이에서 리프에 위치하게 된다.
만약 목적지 IP 프리픽스를 2비트까지 확장해도 제1 노드가 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치하지 않는다면 근원지 IP 프리픽스와 목적지 IP 프리픽스를 모두 3비트로 확장하여 새로운 리프-푸싱 코드워드를 생성할 수 있다.
리프-푸싱 기반의 영역 분할 사분 트라이가 생성된 경우, 프로세서(120)는 입력 패킷의 헤더 정보와 일치하는 룰을 포함하는 노드를 검색할 수 있다.
리프-푸싱 기반의 영역 분할 사분 트라이에서의 검색 과정은 영역 분할 사분 트라이에서의 검색과정과 동일할 수 있다. 프로세서(120)는 패킷 분류 장치(110)로 입력된 패킷의 헤더 정보 중 근원지 IP 프리픽스와 목적지 IP 프리픽스를 추출할 수 있다. 프로세서(120)는 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스를 이용하여 코드워드를 획득할 수 있다.
영역 분할 사분 트라이의 검색의 예와 같은 입력 패킷 (0110, 0110, 161, 1711, TCP)으로 검색을 진행하여 보면, 먼저 근원지 IP 주소와 목적지 IP 주소의 코드워드를 생성한다. 입력 패킷의 코드워드는 0330 이고, 생성된 코드워드로 패스를 따라가면 R1이 저장된 노드를 만나게 되고 R1과 입력 패킷의 헤더 정보를 비교하여 BMR(Best Matching Rule)을 결정한다.
리프-푸싱의 특징은 입력 패킷의 헤더 정보와 일치하는 룰을 포함하는 노드를 검색하는 패스상에 단 하나의 룰 노드를 만나게 되고, 입력 패킷과 일치 가능성이 없는 룰들과의 비교를 피할 수 있다는 것이다. 앞의 영역 분할 사분 트라이의 예시에서는 입력 패킷과 일치 가능성이 없는 R5, R6, R7이 입력 패킷의 패스상에 존재하기 때문에 모두 비교되었으나, 리프-푸싱 기반의 영역 분할 사분 트라이에서는 이러한 룰들과의 비교를 피할 수 있었다.
또한 리프-푸싱을 수행하고 나면 룰을 포함하지 않는 노드(흰색 노드)와 룰을 포함하는 노드(검은색 노드)의 분리가 쉬우며, 룰을 포함하지 않는 노드들을 내부 메모리(130)에, 룰을 포함하는 노드들은 외부 메모리(140)에 저장함으로써 검색 성능을 더욱 향상시킬 수 있다.
이와는 다른 일실시예로, 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드인 룰이 존재한다면, 이 룰은 모든 리프 노드에 복사되어 메모리 사용량뿐 아니라 검색 성능에 매우 나쁜 영향을 미치게 된다.
프로세서(120)는 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 적어도 하나에 와일드 카드가 존재하지 않는 경우. 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우보다 우선적으로 입력 패킷의 헤더 정보를 비교할 수 있다.
또한 프로세서(120)는 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 생성된 와일드카드 테이블을 이용하여 상기 수신된 입력 패킷의 헤더 정보를 비교하는 것이 가능할 수 있다.
프로세서(120)는 우선순위가 높은 룰 순으로 저장된 상기 와일드카드 테이블에서, 상기 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 확인된 최적의 룰보다 우선순위가 높은 룰들에 대해서 수신된 입력 패킷의 헤더 정보와 비교할 수 있다.
도 7 은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 전체 노드 개수를 도시화한 것이다.
도 7 은 성능평가를 위해서 실제 라우터에서 사용되고 있는 룰 셋과 유사한 특성을 가지고 있는 클래스벤치에서 제공하는 ACL(Access Control List), FW (Firewall), IPC (IP Chain)의 타입에 대하여 각각 1000개, 5000개, 10000개의 룰을 갖는 셋을 생성하여 실험한 결과를 나타내고 있다.
영역 분할 사분 트라이에서 룰을 포함하고 있는 노드가 트라이의 최하위 레벨인 리프에 존재하지 않을 경우 리프-푸싱을 통해 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 존재하도록 하는 과정에서 전체적으로 노드의 개수가 증가하였음을 볼 수 있다.
도 8은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 룰을 포함하지 않는 내부 노드에 접근하는 평균 횟수를 도시화한 것이다.
도 8에서 영역 분할 사분 트라이와 리프-푸싱 기반의 영역 분할 사분 트라이의 룰을 포함하지 않는 내부 노드에 접근하는 평균 횟수를 비교하였다. 리프-푸싱 기반의 영역 분할 사분 트라이에서는 리프-푸싱으로 인해 노드의 수가 증가하여 기존의 영역 분할 사분 트라이보다 내부 노드의 접근횟수가 증가하였다. 리프-푸싱 기반의 영역 분할 사분 트라이에서 접근 횟수가 많다는 것은 그만큼 온-칩에서 많은 프로세싱이 일어난다는 것을 의미한다. 하지만 온-칩에서 이루어지는 검색 속도는 패킷 분류 속도에는 큰 영향을 미치지 않을 수 있다.
도 9은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 룰이 저장된 노드에 접근하는 평균 횟수를 도시화한 것이다.
룰이 저장된 노드의 접근 횟수는 오프-칩 메모리의 접근 횟수를 의미한다. 영역 분할 사분 트라이는 리프-푸싱 기반의 영역 분할 사부 트라이와는 달리 입력 패킷의 패스상에 존재하는 룰을 포함하는 노드가 많으므로 그만큼의 오프-칩으로 접근이 많이 발생한다.
그러나, 룰이 포함된 노드의 룰을 검색할 수 있는 오프-칩으로의 접근에 소요되는 시간이 길기 때문에 오프-칩으로의 접근이 적을수록 전체적인 패킷 분류의 속도가 향상된다. 이에 리프-푸싱 기반의 영역 분할 사분 트라이는 리프-푸싱의 특성상 입력 패킷의 헤더 정보와 일치하는 룰을 포함하는 노드까지의 패스 상에 하나의 룰 노드만 존재하므로 모든 입력 패킷은 단 하나의 룰 노드에 접근 할 수 있다.
도 9의 결과에서도 볼 수 있듯이 리프-푸싱 기반의 영역 분할 사분 트라이에서 룰이 포함된 노드를 검색할 수 있는 오프-칩으로의 접근 횟수가 영역 분할 사분 트라이에 비해 적음을 볼 수 있다. 이는 리프-푸싱 기반의 영역 분할 사분 트라이에서의 입력 패킷의 분류 속도가 빠름을 확인할 수 있다.
도 10는 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 입력 패킷의 헤더 정보와 비교되는 룰의 평균 횟수 도시화한 것이다.
리프-푸싱 기반의 영역 분할 사분 트라이의 경우 리프-푸싱으로 인해 룰이 포함된 노드로의 접근이 한번만 이루어 지므로 영역 분할 사분 트라이보다 평균 룰 비교 횟수가 월등히 좋아짐을 볼 수 있다. 패킷 분류의 성능은 외부 메모리에서의 룰의 비교 회수가 가장 큰 영향을 미치므로 리프-푸싱 기반의 영역 분할 사분 트라이는 영역 분할 사분 트라이보다 월등히 좋은 패킷 분류 속도를 보여줌을 알 수 있다. 리프-푸싱 기반의 영역 분할 사분 트라이에서는 평균 1.4배에서 7.5배까지의 패킷 분류 성능 향상을 보였다.
도 11은 일실시예에 따른 영역 분할 사분 트라이(AQT로 표시)와 리프-푸싱 기반의 영역 분할 사분 트라이(Proposed로 표시)에서 입력 패킷의 헤더 정보와 비교되는 룰의 최대 횟수를 도시화한 것이다.
영역 분할 사분 트라이의 경우 리프-푸싱 기반의 영역 분할 사분 트라이에 비해 최대 룰 비교 횟수가 높다. 영역 분할 사분 트라이는 루트 노드에서부터 리프에 위치한 노드까지 검색을 진행하면서 만나는 모든 룰을 포함한 노드에 대해 선형검색을 수행하기 때문이다. 하지만 리프-푸싱 기반의 영역 분할 사분 트라이는 리프에 위치한 노드 중 하나의 룰을 포함한 노드에 대해서만 선형검색을 수행하므로 최악의 경우에 있어서도 영역 분할 사분 트라이보다 훨씬 적은 룰 비교가 이루어 진다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110 : 패킷 분류 장치
120 : 프로세서
130 : 내부 메모리
140 : 외부 메모리

Claims (18)

  1. 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신하는 단계;
    상기 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써 리프-푸싱 기반의 영역 분할 사분 트라이를 생성하는 단계; 및
    입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 와일드카드 테이블을 생성하는 단계
    를 포함하는 패킷 분류 방법.
  2. 제1항에 있어서,
    상기 복수의 제1 노드들은
    적어도 하나의 룰을 우선 순위에 따라 순차적으로 저장하는 패킷 분류 방법.
  3. 제1항에 있어서,
    상기 리프-푸싱 기반의 영역 분할 사분 트라이를 생성하는 단계는
    상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 생성하는 패킷 분류 방법.
  4. 룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이에서 룰이 저장된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 구성된 리프-푸싱 기반의 영역 분할 사분 트라이를 식별하는 단계;
    입력 패킷에 포함된 헤더 정보를 이용하여 상기 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 검색하는 단계; 및
    상기 검색된 제1 노드에서의 룰과 상기 입력 패킷의 헤더 정보를 비교하는 단계
    를 포함하고
    상기 비교하는 단계는,
    상기 입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 생성된 와일드카드 테이블을 이용하여 수신된 입력 패킷의 헤더 정보를 비교하는 패킷 분류 방법.
  5. 제4항에 있어서,
    상기 리프-푸싱 기반의 영역 분할 사분 트라이는
    상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 생성된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 생성된 패킷 분류 방법.
  6. 제4항에 있어서,
    상기 검색하는 단계는,
    상기 입력 패킷을 수신하는 단계;
    상기 수신된 입력 패킷의 헤더 정보를 확인하여 근원지 IP 프리픽스와 목적지 IP 프리픽스를 추출하는 단계;
    상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스를 이용하여 코드워드를 획득하는 단계; 및
    상기 획득된 코드워드에 해당하는 경로를 따라 상기 입력 패킷에 대해 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 확인하는 단계
    를 포함하는 패킷 분류 방법.
  7. 제4항에 있어서,
    상기 입력 패킷의 헤더 정보를 비교하는 단계는,
    입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 적어도 하나에 와일드 카드가 존재하지 않는 경우, 상기 입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우보다 우선적으로 입력 패킷의 헤더 정보를 비교하는 패킷 분류 방법.
  8. 삭제
  9. 제4항에 있어서,
    상기 비교하는 단계는,
    입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 우선순위가 높은 룰 순으로 저장된 상기 와일드카드 테이블에서, 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 확인된 룰보다 우선순위가 높은 룰들에 대해서 수신된 입력 패킷의 헤더 정보와 비교하는 패킷 분류 방법.
  10. 패킷 분류 장치에 있어서,
    룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이(Area-based Quad Trie: AQT)를 수신하고, 상기 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 함으로써 리프-푸싱 기반의 영역 분할 사분 트라이를 생성하며, 입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 와일드카드 테이블을 생성하는 프로세서
    를 포함하는 패킷 분류 장치
  11. 제10항에 있어서,
    상기 복수의 제1 노드들은
    적어도 하나의 룰을 우선 순위에 따라 순차적으로 저장하는 패킷 분류 장치.
  12. 제10항에 있어서,
    상기 프로세서는,
    상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 복수의 제1 노드들을 영역 분할 사분 트라이의 리프에 위치하도록 생성하는 패킷 분류 장치.
  13. 패킷 분류 장치는,
    룰이 저장된 복수의 제1 노드들과 룰이 저장되지 않은 복수의 제2 노드들로 구성된 영역 분할 사분 트라이에서 룰이 저장된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 구성된 리프-푸싱 기반의 영역 분할 사분 트라이를 식별하고, 입력 패킷에 포함된 헤더 정보를 이용하여 상기 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 검색하며, 상기 검색된 제1 노드에서의 룰과 상기 입력 패킷의 헤더 정보를 비교하는 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 룰의 우선 순위를 고려하여 생성된 와일드카드 테이블을 이용하여 수신된 입력 패킷의 헤더 정보를 비교하는 패킷 분류 장치.
  14. 제13항에 있어서,
    상기 리프-푸싱 기반의 영역 분할 사분 트라이는
    상기 영역 분할 사분 트라이를 구성하는 제1 노드에 저장된 복수의 룰들 각각에 대해 근원지 IP 프리픽스와 목적지 IP 프리픽스를 확장시킴으로써 만들어진 코드워드에 따라 생성된 복수의 제1 노드들이 영역 분할 사분 트라이의 리프에 위치하도록 생성된 패킷 분류 장치.
  15. 제13항에 있어서,
    상기 프로세서는,
    상기 입력 패킷을 수신하고, 상기 수신된 입력 패킷의 헤더 정보를 확인하여 근원지 IP 프리픽스와 목적지 IP 프리픽스를 추출하며, 상기 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스를 이용하여 코드워드를 획득함으로써, 상기 획득한 코드워드에 해당하는 경로를 따라 상기 입력 패킷에 대해 리프-푸싱 기반의 영역 분할 사분 트라이의 리프에 위치한 제1 노드를 확인하는 패킷 분류 장치.
  16. 제13항에 있어서,
    상기 프로세서는,
    입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스 중 적어도 하나에 와일드 카드가 존재하지 않는 경우, 상기 입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우보다 우선적으로 입력 패킷의 헤더 정보를 비교하는 패킷 분류 장치.
  17. 삭제
  18. 제13항에 있어서,
    상기 프로세서는,
    입력 패킷의 헤더 정보에서 추출된 근원지 IP 프리픽스와 목적지 IP 프리픽스에 모두 와일드카드가 존재하는 경우, 우선순위가 높은 룰 순으로 저장된 상기 와일드카드 테이블에서, 리프-푸싱 기반의 영역 분할 사분 트라이를 이용하여 확인된 룰보다 우선순위가 높은 룰들에 대해서 수신된 입력 패킷의 헤더 정보를 비교하는 패킷 분류 장치.


KR1020140168907A 2014-11-28 2014-11-28 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치 KR101583439B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140168907A KR101583439B1 (ko) 2014-11-28 2014-11-28 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140168907A KR101583439B1 (ko) 2014-11-28 2014-11-28 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치

Publications (1)

Publication Number Publication Date
KR101583439B1 true KR101583439B1 (ko) 2016-01-08

Family

ID=55170628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140168907A KR101583439B1 (ko) 2014-11-28 2014-11-28 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치

Country Status (1)

Country Link
KR (1) KR101583439B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100018409A (ko) * 2008-08-06 2010-02-17 이화여자대학교 산학협력단 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치
KR20140027609A (ko) * 2012-08-02 2014-03-07 주식회사 엑스게이트 서브트리를 활용한 쿼드트리 기반의 패킷 분류 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100018409A (ko) * 2008-08-06 2010-02-17 이화여자대학교 산학협력단 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치
KR20140027609A (ko) * 2012-08-02 2014-03-07 주식회사 엑스게이트 서브트리를 활용한 쿼드트리 기반의 패킷 분류 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Lim, Hyesook, et al. "A quad-trie conditionally merged with a decision tree for packet classification," IEEE Communications Letters, Vol. 18, No. 4, pp. 676-679 (2014.04) *
Srinivasan, Venkatachary, and George Varghese. "Fast address lookups using controlled prefix expansion," ACM Transactions on Computer Systems (TOCS), Vol. 17, No. 1, PP. 1-40 (1999) *

Similar Documents

Publication Publication Date Title
US8856203B1 (en) System and method for algorithmic TCAM packet classification
US9521082B2 (en) Methods and devices for creating, compressing and searching binary tree
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
US9195939B1 (en) Scope in decision trees
US7668160B2 (en) Methods for performing packet classification
US9432284B2 (en) Method and apparatus for compiling search trees for processing request keys based on a key size supported by underlying processing elements
US9595003B1 (en) Compiler with mask nodes
US8139591B1 (en) Methods and apparatus for range matching during packet classification based on a linked-node structure
US20160335296A1 (en) Memory System for Optimized Search Access
EP3276501B1 (en) Traffic classification method and device, and storage medium
JP7170905B2 (ja) トラフィック分類方法及び装置
CN103281246A (zh) 报文处理方法及网络设备
WO2015090179A1 (en) Trie stage balancing for network address lookup
KR101331018B1 (ko) 패킷 분류 방법 및 그 장치
US20160335298A1 (en) Methods, systems, and non-transitory computer readable media for generating a tree structure with nodal comparison fields and cut values for rapid tree traversal and reduced numbers of full comparisons at leaf nodes
Pao et al. A multi-pipeline architecture for high-speed packet classification
US6970971B1 (en) Method and apparatus for mapping prefixes and values of a hierarchical space to other representations
Mishra et al. PC-DUOS: Fast TCAM lookup and update for packet classifiers
KR100965552B1 (ko) 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치
CN113723548A (zh) 决策树规则集预处理的方法和装置
KR101583439B1 (ko) 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치
JP5673667B2 (ja) パケット分類器、パケット分類方法、パケット分類プログラム
US20080189233A1 (en) Reduction of Ternary Rules with Common Priority and Actions
KR101665583B1 (ko) 네트워크 트래픽 고속처리 장치 및 방법
JP5682442B2 (ja) パケット分類器、パケット分類方法、及びパケット分類プログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee