KR100429904B1 - 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법 - Google Patents

차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법 Download PDF

Info

Publication number
KR100429904B1
KR100429904B1 KR10-2002-0027594A KR20020027594A KR100429904B1 KR 100429904 B1 KR100429904 B1 KR 100429904B1 KR 20020027594 A KR20020027594 A KR 20020027594A KR 100429904 B1 KR100429904 B1 KR 100429904B1
Authority
KR
South Korea
Prior art keywords
memory
packet
partition
differential
flow
Prior art date
Application number
KR10-2002-0027594A
Other languages
English (en)
Other versions
KR20030089747A (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 KR10-2002-0027594A priority Critical patent/KR100429904B1/ko
Priority to US10/256,000 priority patent/US7274700B2/en
Priority to FR0211978A priority patent/FR2839835B1/fr
Publication of KR20030089747A publication Critical patent/KR20030089747A/ko
Application granted granted Critical
Publication of KR100429904B1 publication Critical patent/KR100429904B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data 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
    • H04L45/302Route determination based on requested QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2408Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

차등화된 QoS 서비스를 지원하는 라우터 및 그것의 고속화된 IP 패킷 분류 방법이 개시된다. 상기 라우터는 플로우 테이블을 저장하는 메모리를 고속의 내부 캐쉬 메모리와 저가의 외부 일반 메모리로 계층화한다. 내부 캐쉬 메모리에는 최근에 검색된 테이블 엔트리가 저장된다. 라우터는 패킷 분류시 내부 캐쉬 메모리의 플로우 테이블을 우선적으로 검색한다. 그리고, 내부 캐쉬 메모리에서의 검색이 성공하지 못한 경우에만 외부 메모리에서 플로우 테이블 검색을 수행한다. 그 결과, 패킷 분류기와 외부 메모리 사이의 상호작용 빈도가 줄어들게 되어, 패킷 분류 처리 속도가 향상된다.

Description

차등화된 QoS 서비스를 제공하는 라우터 및 그것의 고속 IP 패킷 분류 방법{Router providing differentiated quality-of-service and fast internet protocol packet classification method for the same}
본 발명은 IP(internet protocol) 패킷 분류 방법에 관한 것으로, 특히 차등화된 QoS(Quality-of-Service) 서비스를 제공하기 위한 고속 IP 패킷 분류 방법에 관한 것이다.
현재 대부분의 상용 라우터는 단순한 최선형 서비스(Best-Effort Service)를 제공하기 때문에, 전송되는 데이터의 성격에 따른 차등화 서비스(Differentiated Service)를 제공하지 못하고 있다. 품질제어가 가능한 인터넷 서비스를 위해 각 라우터는 유입되는 패킷마다 입력허가 제어(Admission Control), 자원 예약(Resource Reservation), 플로우별 큐잉(Per-flow Queuing), 및 공정성을 보장하는 스케쥴링(Fair Scheduling)을 지원할 수 있어야 한다.
차등화 서비스는, 유입되는 패킷의 플로우별로 소속 조건(condition)과 해당동작(action)을 정의한 규칙(rule)들을 기반으로 하여 이루어진다. 이러한 규칙 집합(rule set)을 기반으로 하여 패킷을 플로우별로 분류하여 처리하는 기능 단위를 패킷 분류기(packet classifier)라 한다.
플로우별로 적용되는 규칙들은, 실질적으로 라우터에서 플로우 테이블(flow table) 형태로 관리된다. 따라서, 플로우별로 차등화된 서비스를 제공하기 위해서는 유입되는 패킷마다 플로우 테이블을 검색하는 과정이 반복적으로 수행되어야 한다. 이를 위해 인터넷 표준단체인 IETF(Internet Engineering Task Force)는, 플로우 테이블 검색시 패킷 헤더로부터 근원 IP주소(source IP Address), 목적 IP주소(destination IP Address), 근원 TCP/UDP 포트 번호(source TCP/UDP port number), 목적 TCP/UDP 포트번호(destination TCP/UDP port number), IP 프로토콜 타입 필드, 차등서비스 코드포인트(Differentiated Service Code Point : DSCP) 필드와 같은 6개의 다중 필드 값을 추출하여 테이블 검색키로 사용하도록 권고하고 있다.
그러나, 라우터로 유입되는 모든 패킷마다 상기와 같은 다중 필드를 기반으로 하는 검색을 수행한다는 것은 라우팅 과정에 대한 연산부하로서 작용하게 된다. 특히, 요구되는 패킷처리 속도가 높아질수록 상기 패킷 분류과정에 의한 연산부하는 더욱 심화되는 문제가 있다. 따라서, 이와 같은 패킷 분류에 의한 연산부하를 줄이기 위한 새로운 방안이 요구된다.
본 발명이 이루고자 하는 기술적 과제는, 패킷 분류로 인하여 발생하는 라우팅 과정의 연산부하를 최소화함으로써 패킷 분류 성능을 극대화시킬 수 있는 라우터 및 그것의 고속 IP 패킷 분류 방법을 제공하는 데 있다.
도 1은 본 발명의 바람직한 실시예에 따른 라우터 및 그것을 구비한 QoS 정책기반 네트워크의 블록도이다.
도 2는 도 1에 도시된 패킷 분류기의 상세 블록도이다.
도 3은 패킷 분류를 위한 다중 필드 검색키의 구성을 보여주는 도면이다.
도 4는 도 2에 도시된 패킷 분류기의 전체 동작 수순을 보여주는 흐름도이다.
도 5는 도 2에 도시된 온칩(캐쉬) 메모리 파티션 제어기에서 수행되는 동적 파티션 관리 방법을 보여주는 흐름도이다.
도 6은 도 5에 도시된 파티션 조정 알고리즘 수행 단계에 대한 상세 흐름도이다.
도 7은 도 5에 도시된 주기 보정 알고리즘 수행 단계에 대한 상세 흐름도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
10 : 라우터 20 : 메인 프로세서
22 : QoS 정책 클라이언트 30 : 라인 인터페이스 카드
50 : 오프칩(외부) 메모리 70 : 패킷 입력 버퍼
80 : QoS 자원 제어기 95 : 패킷 출력 스케쥴러
100 : QoS 정책기반 네트워크 660 : 온칩(캐쉬) 메모리
501-50m : 차등 클래스별 플로우 테이블
661-66m : 차등 클래스별 플로우 테이블 캐쉬
901-90n : 플로우별 포워딩 경로
상기의 과제를 이루기 위하여 본 발명에 의한 라우터는, QoS 정책 클라이언트, 플로우 테이블 처리기, 패킷 분류기, 및 QoS 자원제어기를 포함한다. QoS 정책 클라이언트는 QoS 정책 서버 시스템으로부터 전송된 QoS 정책을 QoS 자원제어 정보로 변환한다. 플로우 테이블 처리기는 상기 QoS 자원제어 정보에 응답해서 복수 개의 플로우 테이블들을 구축한다. 패킷 분류기는 상기 플로우 테이블에 저장된 정보를 근거로 하여 각각의 패킷을 플로우별로 분류하여 동작코드를 발생한다. QoS 자원제어기는 상기 동작코드에 응답해서 상기 각각의 패킷을 플로우별로 포워딩 시키고, 출력측 자원에 대한 스케쥴링을 제어한다.
바람직한 실시예에 있어서, 상기 라우터는 상기 복수 개의 플로우 테이블들을 저장하는 제 1 메모리를 더 포함하며, 상기 패킷 분류기는, 상기 패킷에 대한 다중 필드 정보를 추출하는 다중필드 정보 추출기, 상기 패킷을 차등 클래스별로 분류하는 차등 클래스 분류기, 상기 플로우 테이블 정보를 상기 차등 클래스별로 검색하는 복수 개의 차등 클래스 플로우 테이블 검색기, 상기 플로우 테이블의 정보 중 일부를 저장하는 제 2 메모리, 상기 차등 클래스별로 상기 제 2 메모리의 파티션을 조정하는 파티션 제어기, 상기 제 2 메모리에서의 검색이 성공하지 못한 경우 상기 제 1 메모리에 구비된 상기 플로우 테이블을 검색할 수 있도록 인터페이스를 제공하는 메모리 정합기, 및 상기 플로우 테이블 검색결과가 순차적으로 출력될수 있도록 중재하는 출력신호 중재기를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 패킷 분류 방법은, 입력 패킷에 대한 다중 필드 검색키가 추출되는 단계; 추출된 상기 다중 필드 검색키로부터 차등서비스 코드포인트 필드가 추출되는 단계; 추출된 상기 차등서비스 코드포인트 필드에 응답해서 상기 패킷의 클래스를 분류하는 단계; 상기 다중 필드 검색키에 응답해서 상기 차등서비스 코드포인트 필드에 해당되는 제 1 플로우 테이블 그룹을 검색하는 단계; 상기 검색이 성공한 경우, 상기 검색 결과로부터 동작코드를 추출하는 단계; 및 상기 검색이 성공하지 않은 경우, 상기 다중 필드 검색키에 응답해서 상기 차등서비스 코드포인트 필드에 해당되는 제 2 플로우 테이블 그룹을 검색하고, 상기 검색 결과로부터 동작코드를 추출하는 단계를 포함한다. 여기서, 상기 제 1 플로우 테이블 그룹은 패킷 분류기 내부에 구비된 제 1 메모리에 저장되고, 상기 제 2 플로우 테이블 그룹은 상기 패킷 분류기 외부에 구비된 제 2 메모리에 저장되는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 패킷 분류 방법은, 상기 제 1 메모리를 상위 서비스 그룹과 하위 서비스 그룹으로 분류하는 단계; 상기 서비스 그룹들을 파티션하는 단계; 및 상기 서비스 그룹들에 대한 파티션 주기를 보정하는 단계를 더 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 서비스 그룹들을 파티션하는 단계는, 상기 하위 서비스 그룹의 각 차등 서비스 빈도로부터 서비스율을 산출하는 단계; 상기 하위 서비스 그룹의 차등 클래스별 파티션 보정량을 산출하는 단계; 상기 파티션보정량이 음의 값을 가지는 경우, 상기 음의 보정량을 가지는 하위 서비스 그룹의 차등 클래스 리스트를 작성하는 단계; 상기 각 차등 클래스에 대하여 상기 파티션 보정량에 해당되는 메모리를 해제하는 단계; 상기 파티션 보정량이 양의 값을 가지는 경우, 상기 양의 보정량을 가지는 하위 서비스 그룹의 차등 클래스 리스트를 작성하는 단계; 및 상기 각 차등 클래스에 대하여 상기 파티션 보정량에 해당되는 메모리를 추가하는 단계를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 파티션의 주기를 보정하는 단계는, 각 차등 클래스별로 적중빈도를 산출하는 단계; 산출된 상기 적중빈도에 응답해서 모든 차등 클래스에 대한 적중 빈도를 산출하는 단계; 모든 차등 클래스에 대한 적중 빈도의 총 합을 구하여 실제 적중 빈도를 구하는 단계; 이미 설정되어 있는 희망 적중률과, 주어진 주기 내에 유입된 패킷의 총수를 곱하여 예상 적중빈도를 구하는 단계; 상기 실제 적중 빈도에서 상기 예상 적중빈도를 뺀 값을 보정주기로 산출하는 단계; 상기 보정 주기에 주기 설정값을 더하고, 이를 새로운 주기설정값으로 산출하는 단계; 및 주기 카운터를 상기 산출된 주기설정 값으로 설정하는 단계를 포함하는 것을 특징으로 한다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 라우터(10) 및 그것을 구비한 QoS 정책기반 네트워크(100)의 블록도이다.
도 1을 참조하면, 본 발명에 따른 QoS 정책기반 네트워크(100)는 크게 QoS정책 서버 시스템(1)과 라우터(10)로 구성된다.
QoS 정책 서버 시스템(1)은 라우터(10)에 대한 QoS 자원 제어 정보인 QoS 정책을 통합 관리하는 기능을 수행한다. 이를 위해 QoS 정책 서버 시스템(1)은 네트워크 관리자가 관리하는 최상위의 추상화된 정책을 기반으로 하여 관리 대상 IP 라우터(10)에게 QoS 정책을 다운로드한다.
라우터(10)는, 동일한 전송 프로토콜을 사용하여 분리된 네트웍을 연결하는 장치로서, 크게 메인 프로세서(20)와 라인 인터페이스 카드(30)로 구성된다. 라우터(10)는 라인 인터페이스 카드(30)로 입력되는 각 패킷에 대한 차등적인 QoS 서비스를 위해 IP 패킷 분류 과정을 고속으로 수행한다.
IP 패킷 분류 과정은 QoS 정책에 의하여 미리 정의된 패킷 분류 정보 테이블(이하, 플로우 테이블이라 칭함)을 검색하여 패킷에 대한 QoS 자원제어 정보(이하, 동작코드라 칭함)를 획득하는 과정이 주를 이룬다. 플로우 테이블의 검색 엔트리 수는, 인터넷 서비스 사업자가 인터넷을 통한 수익성 제고를 위해 점점 더 다양하고 세분화된 QoS 정책을 요구함에 따라 그 수가 지속적으로 증가하고 있는 추세에 있다.
라우터(10)의 상세 구성을 살펴보면 다음과 같다. 먼저, 메인 프로세서(20)에는 QoS 정책 클라이언트(22)가 포함되어 있어, 라인 인터페이스 카드(30)에 구비된 패킷 분류기(60)와 패킷 출력 스케쥴러(95)의 동작을 제어하는 역할을 수행한다. QoS 정책 클라이언트(22)는 QoS 정책서버 시스템(1)과 연동하여 QoS 정책을 QoS 자원제어 정보로 변환하고, 이를 라인인터페이스 카드(30)로 중개하는 역할을수행한다.
라인 인터페이스 카드(30)에는 플로우 테이블 처리기(40), 복수 개의 플로우 테이블들(501-50m)이 구비된 오프칩(외부) 메모리(50), 패킷 분류기(60), 패킷 입력 버퍼(70), QoS 자원 제어기(80), 복수 개의 플로우별 포워딩 경로들(901-90n, n은 1 이상의 정수), 및 패킷 출력 스케쥴러(965)가 포함된다.
플로우 테이블(501-50m)은 QoS 정책 클라이언트로(22)부터 제공된 플로우별 QoS 자원제어 정보를 저장한다. 플로우 테이블 처리기(40)는 QoS 정책 클라이언트(22)로부터 수신된 QoS 자원제어 정보에 응답해서 라인 인터페이스 카드(30)상에 플로우 테이블들(도 1의 501-50m 및 도 2의 661-66m)을 구축하고 관리하는 기능을 수행한다. 패킷 분류기(60)는 플로우 테이블(501-50m, 661-66m) 정보를 기반으로 하여, 고속으로 수신된 매 패킷을 플로우별로 분류하는 역할을 수행한다. 패킷 입력 버퍼(70)는 패킷분류 과정 동안 패킷을 임시로 저장한다. 플로우별 포워딩 경로들(901-90n)은 패킷을 각각의 플로우별로 포워딩시킨다. 패킷 출력 스케쥴러(95)는 각 플로우별로 포워딩된 패킷을 다중화하고, 라인 인터페이스 카드(30)의 각 출력측 자원에 대한 스케쥴링을 수행한다. QoS 자원제어기(80)는, 패킷 분류기(60)에서 패킷 분류 결과로서 생성된 해당 플로우의 동작코드에 응답해서, 플로우별 포워딩 경로들(901-90n)과, 패킷 출력 스케쥴러(95)의 동작을 제어한다.
상기 QoS 정책기반 네트워크(100)에서 수행되는 동작은 다음과 같다.
먼저, QoS 정책 서버 시스템(1)은 메인 프로세서(20)에 구비된 QoS 정책 클라이언트(22)에게 QoS 정책 정보를 발생한다. QoS 정책 클라이언트(22)는 QoS 정책 정보를 기반으로 하여 QoS 자원제어 정보를 재구성하고, 이를 라인 인터페이스 카드(30)에게 전달한다. 아래에서 상세히 설명되겠지만. 라인 인터페이스 카드(30)는 입력된 QoS 자원제어 정보를 기반으로 하여 각 플로우별 포워딩 경로(901-90n)에서 해당 플로우에 적합한 트래픽 제어 메커니즘을 수행하고, 출력단의 패킷 스케쥴러(95)를 통해서 플로우간의 서비스 차등상태가 유지되도록 출력 대역폭의 사용을 조절한다.
라인 인터페이스 카드(30)에서 수행되는 동작은 다음과 같다.
라인 인터페이스 카드(30)에 구비된 플로우 테이블 처리기(40)는, QoS 정책 클라이언트(22)로부터 QoS 자원제어 정보가 발생되면, 상기 QoS 자원제어 정보를 차등 클래스(예를 들면, 분류 조건, 해당 동작의 조합형태 등) 별로 분류하고, 각각의 클래스별로 구성된 플로우 테이블(501-50m)에 저장한다.
클래스별 플로우 테이블(501-50m)은 패킷 분류기(60)의 외부에 별도로 존재하는 오프칩(외부) 메모리(50) 상에 구축되며, 차등서비스 코드포인트(도 3 참조) 값을 기준으로 하여 차등 클래스별로 분류된다. 이 때, QoS 정책서버 시스템이 지정하는 차등 클래스의 수가 m개이면 각 라인 인터페이스 카드에 생성되는 플로우 테이블도 m개가 된다.
패킷 분류기(60)는 플로우테이블(501-50m)에 유입된 패킷에 대해서 플로우별 분류를 수행한다. 패킷 분류동작은 라인 인터페이스 카드(30)로 유입되는 모든 패킷마다 플로우 테이블(501-50m)을 검색하여 해당 패킷에 대한 플로우별 포워딩 경로(901-90n)를 선택하는 과정과, QoS 자원제어기(80)를 통해 플로우별 포워딩 경로(901-90n)와 패킷 출력 스케쥴러(95)의 동작을 제어하는 일련의 과정으로 구성된다.
이와 같은 패킷 분류 과정은 패킷의 헤더 정보를 기반으로 수행된다. 패킷 분류 과정 동안 해당 패킷 전체는 패킷 입력 버퍼(70)에 일시적으로 저장된다. 패킷 분류기(60)가 해당 패킷에 대하여 패킷 분류 과정을 종료한 후 패킷 입력 버퍼(70)에게 패킷 제어신호를 출력하게 되면, 패킷 입력 버퍼(70)에 저장되어 있던 패킷은 플로우별 포워딩 경로(901-90n)로 보내지게 된다. 도 1에 도시된 각 플로우별 포워딩 경로(901-90n)는 실제로 플로우별로 정의된 처리 동작을 추상화하여 나타낸 것으로, 실제적인 처리 동작은 패킷을 폐기(drop)하거나 서비스 등급을 조절하기 위해 패킷 헤더에 포함된 차등서비스 코드포인트 필드 값을 재설정(remark)하는 작업으로 정의된다.
패킷 분류시, 유입되는 매 패킷마다 패킷 분류기(60) 외부에 존재하는 별도의 메모리(50)를 액세스하여 차등 클래스별로 모든 테이블 엔트리를 검색하는 것은 라우터 시스템에 무시할 수 없는 부하(load)로 작용할 수 있다. 따라서, 본 발명에 따른 라우터(10)는 이와 같은 문제를 해결하기 위해 최근에 검색된 테이블 엔트리를 패킷 분류기(60) 내부에 존재하는 메모리(도 2의 온칩(캐쉬) 메모리(660))에 저장하여 사용한다. 그 결과, 패킷 분류기(60)와 오프칩(외부) 메모리(50)와의 상호작용 빈도가 줄어들게 되어, 패킷 분류 처리 속도가 향상된다.
본 발명에서는 하드웨어적인 구현을 고려하여 라우터(10)에 탑재된 메모리를온칩(on-chip) 메모리와 오프칩(off-chip) 메모리로 구분한다. 온칩 메모리는 패킷 분류기(60) 내부에 구비된 고속의 소 용량 메모리를 의미하고, 오프칩 메모리는 패킷 분류기(60) 외부에 구비된, DRAM(dynamic random access memory)과 같은 대용량의 일반 메모리를 의미한다. 온칩 메모리에 구현된 알고리즘과 제어구조는 캐쉬 메모리에 적용되고, 오프칩 메모리에 적용된 구현된 알고리즘과 제어구조는 외부 일반 메모리에 각각 적용된다. 이 같은 본 발명에 따른 패킷 분류 알고리즘은 하드웨어적인 방식과 소프트웨어적인 방식 모두에 대해 구현이 가능하다.
도 2는 도 1에 도시된 패킷 분류기(60)의 상세 블록도이다. 도 2를 참조하면, 본 발명에 의한 패킷 분류기(60)는 크게 검색경로부(610)와 제어부(690)로 구성된다.
검색경로부(610)는 유입되는 각 패킷마다 플로우 테이블을 검색하여 해당 플로우 처리를 결정하는 역할을 수행한다. 검색경로부(610)는 다중 필드 검색키 추출기(620), 차등 클래스 분류기(630), 복수 개의 차등 클래스 플로우 테이블 검색기(641-64m), 복수 개의 차등 클래스 플로우 테이블들(661-66m)이 구비된 온칩(캐쉬) 메모리(660), 및 복수 개의 차등 클래스 오프칩(외부) 메모리 정합기(681-68m)를 구비한다.
다중 필드 검색키 추출기(620)는 유입된 패킷의 헤더로부터 다중필드 정보를 추출하여 다중 필드 검색키(300)를 생성한다.
도 3은 패킷 분류를 위한 다중 필드 검색키(300)의 구성을 보여주는 도면이다. 도 3을 참조하면, 다중 필드 검색키(300)는 차등서비스 코드 포인트(310), 근원 IP 주소(320), 목적 IP 주소(330), IP 프로토콜 타입(340), 근원 TCP/UDP 포트 번호(350), 및 목적 TCP/UDP 포트 번호(360)를 포함하는 6개의 필드로 구성된다. 차등서비스 코드 포인트(310)는 1 바이트로 구성되고, 근원 IP 주소(320) 및 목적 IP 주소(330)는 각각 4 바이트로 구성된다. 그리고, IP 프로토콜 타입 필드(340)는 1 바이트로 구성되고, TCP/UDP 포트 번호 필드(350) 및 목적 TCP/UDP 포트 번호 필드(360)는 각각 2 바이트로 구성된다.
다시 도 2를 참조하면, 차등 클래스 분류기(630)는 다중 필드 검색키 추출기(620)로부터 추출된 다중 필드 검색키(300)에 포함된 차등서비스 코드포인트 필드(310) 값을 기반으로 하여 완전 매칭(exact matching) 방식에 의한 차등 클래스 분류를 수행한다.
차등 클래스 플로우 테이블 검색기(641-64m)들은 분류된 차등 클래스별로 해당 플로우 테이블들(661-66m)에 대한 검색을 병렬로 수행한다. 차등 클래스별로 온칩(캐쉬) 메모리(660) 상에 구축된 플로우 테이블들(661-66m)에는 최근에 검색된 테이블 엔트리가 저장된다. 상기 플로우 테이블들(661-66m)은 오프칩(외부) 메모리(50)에 구비된 복수 개의 플로우 테이블들(501-50m)과 매칭되도록 파티션된다.
차등 클래스 오프칩(외부) 메모리 정합기(681-68m)는, 온칩(캐쉬) 메모리(660)에서 플로우 테이블(661-66m) 검색이 성공되지 않을 경우, 차등 클래스 플로우 테이블 검색기(641-64m)로부터 검색요청을 받아들여 오프칩(외부) 메모리(50)에 구축된 플로우 테이블(501-50m)을 검색한다. 그리고, 오프칩(외부)메모리(50)에 대한 검색이 성공하면, 검색 결과를 온칩(캐쉬) 메모리(660)의 플로우 테이블들(661-66m)에 저장한다.
제어부(690)는 출력신호 중재기(695) 및 온칩(캐쉬) 메모리 파티션 제어기(697)로 구성되어, 검색경로의 동작을 모니터링하고 제어하는 역할을 수행한다. 출력신호 중재기(695)는 각각의 차등 클래스 플로우 테이블 검색기(641-64m)로부터 출력되는 동작코드를 FIFO(First In First Out)구조의 내부 버퍼(미 도시됨)에 저장하고, 저장된 동작코드를 순차적으로 QoS자원 제어기(80)로 출력함과 동시에, 패킷 입력 버퍼(70)에게 제어신호를 보내어 패킷이 해당 포워딩 경로(901-90n)로 전달되도록 한다. 메모리 파티션 제어기(697)는 전체 차등 클래스를 상위 서비스 그룹과 하위 서비스 그룹으로 분류한다. 그리고 상위 서비스 그룹을 고정된 크기로 균등 분할하고, 하위 서비스 그룹을 클래스별로 발생한 서비스 빈도에 비례하여 불균등하게 분할하여, 플로우 정보 검색 기능을 향상시킨다. 제어부(690)에서 수행되는 각각의 차등 클래스별 플로우 테이블(661-66m)에 대한 파티션 크기의 할당 및 관리 기능은 도 5, 도 6 및 도 7에서 상세히 설명될 것이다.
본 발명에 의한 패킷 분류기(60)는, 차등서비스 코드포인트 필드(310) 값을 기준으로 하여 각 클래스에 대한 처리를 독립적으로 수행한다. 그 결과, 차등 클래스별로 검색이 병렬로 수행된다. 그러므로, 연달아 유입된 패킷들이 동일한 차등 클래스에 속하지 않는 한, 유입된 패킷들은 선행 패킷의 패킷 분류 과정이 종료될 때까지 기다리지 않고 바로 처리될 수 있게 된다.
이 때, 온칩(캐쉬) 메모리(660) 상에 구현되어 있는 플로우 테이블(661-66m)의 검색이 성공되지 않아 오프칩(외부) 메모리(50)에 구축된 플로우 테이블(501-50m)을 검색해야 될 때, 만일 패킷 분류기(60)가 상기와 같은 병렬처리 기능을 지원하지 않는다면, 패킷 입력 버퍼(70)의 대기행렬과 패킷 분류 과정에 의한 패킷 처리 지연시간(delay time)이 불필요하게 길어질 가능성이 있다. 따라서, 본 발명에서는 이와 같은 문제점을 해결하기 위해 파이프라인(pipeline) 기법을 패킷 분류에 도입함으로써, 전체적인 패킷 처리 시간을 단축시켜 준다.
고속의 온칩(캐쉬) 메모리(660)에는 플로우 테이블 항목 중 참조 빈도가 높은 항목들이 미리 복사되어 있어, 플로우 테이블 검색이 고속으로 수행된다. 고속의 내부 메모리인 온칩(캐쉬) 메모리(660)에 존재하는 각각의 플로우 테이블(661-66m)은 차등 클래스별로 파티션되어 운용된다. 상기 파티션은 단순히 정적으로 유지되는 것이 아니라, 주기적으로 패킷 분류 처리 성능을 감시하고, 감시결과를 바탕으로 동적으로 조정된다. 이 같은 동적인 파티션 조정은 플로우 캐쉬에 대한 적중률을 높여준다.
전체 패킷 분류 처리과정을 일정한 주기 간격으로 나누어 볼 때, 특정 주기동안 모든 차등 클래스들에게 패킷 분류 작업이 균일하게 발생하지는 않는다. 예를 들어, 빈번하게 패킷 분류 작업이 수행되는 차등 클래스가 존재하는 반면, 상대적으로 패킷 분류 작업 빈도가 낮은 차등 클래스가 존재한다. 그러므로, 본 발명에서는, 제어부(690)에 구비된 온칩(캐쉬) 메모리 파티션 제어기(697)를 통해 패킷 분류 작업 발생 빈도를 고려하여 플로우 캐쉬(660)에 상주시키는 플로우 테이블 항목 수를 조정함으로서, 플로우 캐쉬(660)의 사용 효율을 극대화시킨다.
한편, 출력신호 중재기(695)는 각각의 차등 클래스별 플로우 테이블 검색기(641-64m)로부터 동시 다발적으로 발생되는 동작코드들을 패킷 분류기(60)의 검색 결과로서 받아들인다. 그리고, 입력된 동작코드들을 중재기(695) 내부에 구비된 FIFO 버퍼(미 도시됨)에 임시로 저장하고, 출력순서를 재정렬하여 QoS자원 제어기(80)로 출력한다.
동작코드와 관련된 패킷은 동작코드의 송출과 동기를 맞추어 패킷 입력버퍼(70)로부터 플로우별 포워딩 경로(901-90n)에게 전송되어야 한다. 출력신호 중재기(695)는 동작코드와 패킷 전송의 동기를 위해 동작코드 출력과 동기를 맞추어 패킷입력 버퍼(70)에게 패킷 제어 신호를 송출한다. 패킷 제어 신호는 전송되어야 하는 패킷에 대한 식별자와 플로우별 포워딩 경로 식별자를 포함한다. 패킷 입력 버퍼(70)는 상기 패킷 제어 신호에 포함된 식별자와 플로우별 포워딩 경로 식별자에 의해 해당 패킷을 지정된 플로우별 포워딩 경로(901-90n)로 전송한다.
도 4는 도 2에 도시된 패킷 분류기(60)의 전체 동작 수순을 보여주는 흐름도이다. 패킷 분류기(60)는 각 차등 클래스별로 패킷을 분류하고, 분류 결과에 따라 플로우별 검색 경로를 처리한다. 도 4에 도시된 동작 수순은 유입된 하나의 패킷에 적용되는 분류와 관련된 일련의 동작에 관한 것으로, 패킷 분류기(60)의 패킷 분류 동작은, 패킷 분류기능이 종료될 때까지 패킷수신을 대기하는 동작과 패킷 수신시 플로우 테이블을 검색하는 과정을 순환적으로 반복하게 된다.
본 발명에서는 상기와 같은 일련의 분류작업을 파이프라인 기법에 의해 처리한다. 즉, 라인 인터페이스 카드(30)로 입력되는 패킷은, 선행 패킷에 대해 6001단계 내지 6015단계에 이르는 패킷 분류 과정이 모두 처리될 때까지 기다리지 않고 다음 패킷이 처리될 수 있도록 한다. 이 때, 연속적으로 유입된 두 패킷이 동일한 차등 클래스에 속하지 않는다면, 선행 패킷에 대해 차등 클래스 분류 과정(즉, 6004 단계)이 종료되고 6005단계 이후에서 다중 필드 검색키 기반의 플로우 테이블 검색과정이 수행될 때, 다음 패킷 역시 6004 단계의 차등 클래스 분류 과정을 거쳐 6005단계 이후의 플로우 테이블 검색과정에 곧바로 진입할 수 있다. 본 발명에 따른 패킷 분류기(60)는 이와 같은 파이프라인 기법에 의해 패킷 분류를 다중으로 처리함으로써, 패킷 처리 시간을 전체적으로 단축시킨다.
도 4를 참조하여 본 발명에 따른 패킷 분류기(60)의 전체 동작을 살펴보면 다음과 같다. 먼저, 패킷 분류기(60)는 초기에 패킷 수신 대기 상태에 놓여지게 된다(6001 단계). 이 때, 패킷 입력버퍼(70)에 패킷이 입력되어 패킷 유입 통보 신호가 발생되면(6002 단계), 패킷 입력 버퍼(70)에 저장된 패킷의 헤더로부터 다중 필드 검색키(300)가 추출된다(6003 단계). 그리고, 추출된 다중 필드 검색키(300)로부터 다시 차등서비스 코드포인트 필드(310)를 추출하고, 추출된 차등서비스 코드포인트 필드(310)를 기반으로 하여 클래스를 구분한다(6004 단계). 이때, 패킷이 라인 인터페이스 카드(30)로 유입되어 패킷 입력버퍼(70)에 저장될 때마다 패킷 유입통보 신호가 인터럽트 형태로 발생하게 되는데, 이 신호가 패킷 분류기(60)로 수신되면 6004 단계와 같은 차등서비스 코드포인트(310)를 기반으로 하는 클래스 분류작업이 자동적으로 수행된다. 즉, 고정된 차등 클래스별 분류 처리시간을 갖는 이벤트들이 패킷 유입에 의한 인터럽트에 의해 순차적으로 발생된다.
6004 단계에서 차등 클래스별 분류 작업을 마치게 되면, 패킷들은 해당 클래스별로 플로우 테이블을 검색하는 과정을 거치게 된다(6005 단계). 6005 단계에서는 다중 필드 검색키(300)를 사용하여 해당 차등 클래스별로 플로우 캐쉬(660)에 대한 검색을 먼저 수행하게 된다. 이어서, 플로우 캐쉬(660)에서 검색이 성공적으로 이루어졌는지 여부가 판별된다(6006 단계).
6006 단계에서의 판별 결과, 플로우 캐쉬(660)에서 검색이 성공적으로 이루어졌으면, 상기 검색결과에서 해당 플로우에 대한 동작코드를 추출하고(6007 단계), 6013 단계로 진행한다. 이 때, 검색결과는 해당 다중필드 검색키(300) 값과 동작코드의 쌍으로 구성된다. 검색결과에 포함된 다중 필드 검색키(300) 값은, 해당 플로우를 식별하기 위해서, 시스템 내부에서만 국소적으로 의미를 가지는(locally significant) 플로우 레이블(flow label)로 변환된다. 플로우 레이블은 플로우 테이블 검색과정을 통하여 결정된 플로우별 포워딩 경로를 시스템 내부에서 식별하기 위한 인덱스로서, 고정된 크기를 갖는 단일 값으로 정의된다. 이 같이 규격화된 인덱스를 포워딩 과정에 적용하게 되면, 플로우 포워딩 처리가 고속화되는 효과가 있다.
6006 단계에서의 판별 결과, 플로우 캐쉬(660)에서 검색이 성공적으로 이루어지지 않았으면, 차등 클래스 오프칩 메모리 정합기(681-68m)를 통하여 오프칩(외부) 메모리(50)에 있는 해당 차등 클래스별 플로우 테이블(501-50m)을 검색하고(6008 단계), 플로우 테이블(501-50m)의 검색이 성공하였는지 여부를 판별한다(6009 단계).
6009 단계에서의 판별 결과, 플로우 테이블에서도 검색이 성공하지 못하였으면, 정의되지 않은 패킷 분류항목으로 판단하고 디폴트 동작코드(일반적으로, Best Effort 서비스를 기술하는 동작코드)를 생성하고(6012 단계), 6013 단계로 진행한다.
반대로, 6009 단계에서의 판별 결과, 플로우 테이블의 검색이 성공하였으면 검색결과를 플로우 캐쉬(660)에 저장한다(6010 단계). 그리고, 검색결과에서 동작코드를 추출한 후(6011 단계), 6013 단계로 진행한다. 이때, 플로우 테이블 검색 결과를 플로우 캐쉬(660)에 저장하는 이유는, 이후에 유입되는 동일한 다중 필드 검색키(300) 값을 가진 패킷에 대하여 오프칩(외부) 메모리(50)에 있는 플로우 테이블(501-50m)을 검색하지 않고 바로 플로우 캐쉬(660)로부터 해당 플로우의 동작코드를 얻기 위함이다. 6011 단계에서 수행되는 동작코드의 추출은 라인 속도에 영향을 주지 않는다.
현재의 인터넷 트래픽은 동일한 다중 필드 검색키 값을 가진 패킷들이 그룹화 되어 전송되는 경우가 일반적이기 때문에, 위와 같이 가장 최근에 사용된 동작코드를 플로우 캐쉬(660)에 보관하여 바로 재 사용하는 것은 패킷 분류 처리 성능을 향상시키는 중요한 방법이 된다. 플로우 테이블 검색 결과를 플로우 캐쉬(660)에 저장할 때, 만약 플로우 캐쉬(660)가 모두 사용되고 있어 새로운 항목을 로드할 수 있는 공간이 존재하지 않는다면, 기존에 로드되어 있던 항목들 중에서 한 항목을 삭제하여 새롭게 로드되는 항목을 위한 저장공간으로 마련하여야 한다. 본 발명에서는 이와 같은 항목 폐기를 위해 LRU(Least Recently Used) 알고리즘을 사용한다. LRU 알고리즘은 가장 오래 전에 참조되었던 항목이 앞으로 참조될 확률이 가장 적을 것이라는 가정 하에 가장 오래 전에 참조되었던 항목을 우선적으로 삭제하는 알고리즘이다. 이와 같이, 본 발명에 따른 패킷 분류기(60)는 항목 폐기시 LRU 알고리즘을 사용함으로써, 플로우 캐쉬(660)의 적중률을 향상시킨다.
6013 단계에서 본 발명에 의한 패킷 분류기(60)는 플로우 테이블 검색결과로서 얻어진 해당 플로우별 동작코드를 출력신호 중재기(695) 내부에 있는 FIFO 방식의 버퍼에 저장한다. 그리고, 동작코드를 버퍼에서 하나씩 순차적으로 뽑아내어 QoS 자원 제어기(80)로 송출한다(6014 단계). 패킷 분류기(60)는 이와 동기를 맞추어 패킷 입력버퍼(70)에 저장되어 있는 해당 패킷이 적합한 플로우별 포워딩 경로(901-90n)로 보내질 수 있도록 패킷 제어 신호를 패킷 입력버퍼(70)로 송출한다(6015 단계).
본 발명에 의한 패킷 분류기(60)는 처리하게 될 대부분의 패킷에 대하여 플로우 캐쉬 적중이 일어나도록 함으로써, 6008 내지 6011 단계와 같은 오프칩(외부) 메모리(50)의 검색 과정을 거치지 않고, 직접 온칩(캐쉬) 메모리(660)로부터 해당 플로우별 동작코드를 추출하여, 패킷 분류 성능을 극대화시킨다. 이를 위해 본 발명에 의한 패킷 분류기(60)는, 온칩(캐쉬) 메모리 파티션 제어기(697)를 통해 동적 파티션 관리 기능을 수행함으로써, 플로우 캐쉬(660)에 대한 검색 적중 가능성을 높여준다. 또한, 본 발명에 의한 패킷 분류기는 해당 플로우별 동작코드를 추출하는 작업이 라인 속도에 영향을 주지 않고 처리될 수 있도록 향상된 성능을 제공한다.
도 5는 도 2에 도시된 온칩(캐쉬) 메모리 파티션 제어기(697)에서 수행되는 동적 파티션 관리 방법을 보여주는 흐름도이다. 도 5를 참조하면, 먼저 온칩(캐쉬) 메모리 파티션 제어기(697)는 상위 서비스 그룹과 하위 서비스 그룹의 파티션이 소정의 차이를 유지하도록 설정한다(6901 단계). 이 때, 상위 서비스 그룹에 속하는 클래스들의 파티션은 하위 서비스 그룹에 속하는 클래스들의 파티션들에 비해 미리 정의되어 있는 고정적인 크기 차만큼 더 크게 설정된다. 이로 인해 전송지연에 민감한(delay-sensitive) 특성을 갖는 상위 서비스 그룹의 클래스들이 빠른 플로우 정보 검색을 통해서 향상된 전송지연 성능을 보장받을 수 있게 된다. 그 결과, 상위 서비스 그룹에 속하는 클래스들은 트래픽의 상황과 무관하게 항상 동일한 온칩(캐쉬) 메모리(660) 공간을 할당받음으로써 일정한 패킷처리 성능을 보장받을 수 있게 된다. 이 경우, 상위 서비스 그룹에 대한 온칩(캐쉬) 메모리(660) 공간이 하위 서비스 그룹보다 더 많게 설정되고, 상위 서비스에 해당하는 클래스의 수가 하위 서비스 클래스보다 적기 때문에, 평균적으로 상위 서비스 그룹에 속하는 클래스가 하위 서비스 그룹에 속하는 클래스보다 더 빠르게 패킷 분류를 수행할 수 있게 된다.
이어서, 온칩(캐쉬) 메모리 파티션 제어기(697)는 각 차등 클래스에 대하여 QoS 서비스 자원할당에 차등을 두지 않도록, 플로우 테이블의 항목을 저장할 온칩(캐쉬) 메모리 공간을 균등하게 할당한다(6902 단계). 이 같은 메모리 파티션 할당 과정은 일정한 주기를 기준으로 하여 반복적으로 수행된다. 본 발명에서는 유입된 패킷의 수를 기준으로 하여 파티션 조정 주기를 설정한다.
예를 들어, 유입된 패킷이 100개일 때마다 차등 클래스별 메모리 파티션이 조정되는 경우, 카운터를 이용하여 유입되는 패킷의 수를 카운트하고, 카운트된 패킷의 수가 초기 설정된 100이라는 값에서 매 패킷 유입시마다 1씩 감소하여 0이 되면 파티션을 재조정한다. 이와 같이 온칩(캐쉬) 메모리 파티션 제어기(697)에는 파티션 조정 주기의 설정을 위해 주기를 카운트하는 카운터가 구비되는데, 이를 주기 카운터라 한다.
6902 단계에서 메모리 파티션에 대한 초기 설정이 완료되면, 상기 주기 카운터는 미리 정의된 디폴트 주기 값으로 설정된다(6903 단계). 앞에서 설명한 바와 같이, 주기마다 차등 클래스별 온칩(캐쉬) 메모리(660) 파티션을 재조정할 때, 메모리 파티션의 크기는 하위 서비스 그룹에 속하는 차등 클래스별 서비스된 빈도에 따라 보정된다. 이를 위해서는 클래스별로 서비스된 빈도에 대한 카운터 정보가 유지되어야 한다. 따라서, 본 발명에 따른 온칩(캐쉬) 메모리 파티션 제어기(697)에는 각 차등 클래스별로 서비스 빈도를 기록하는 카운터가 구비되는데, 이를 서비스 카운터라 한다. 차등 클래스별로 제공되는 서비스 카운터들은, 매 주기가 시작될 때마다 모두 0으로 초기화된다(6904 단계).
온칩(캐쉬) 메모리 파티션 제어기(697)는, 앞에서 설명한 4 단계의 초기화 과정(6901-6904 단계)이 모두 끝나고 나면 패킷 수신 대기 상태에 진입하고, 패킷이 유입될 때까지 상기 상태를 유지한다(6905 단계). 이어서, 패킷 입력버퍼(70)로부터 패킷이 유입되면 온칩(캐쉬) 메모리 파티션 제어기(697)로 패킷 유입 통보신호가 입력된다(6906 단계). 온칩(캐쉬) 메모리 파티션 제어기(697)는 상기 신호에응답해서 유입된 패킷의 차등 클래스를 확인하여 해당 클래스의 서비스 카운터 값을 1 만큼 증가시키고(6907 단계), 주기 카운터 값을 1 만큼 감소시킨 후(6908 단계), 주기 카운터 값이 0이 되었는지 여부를 판별한다(6909 단계).
6909 단계에서의 판별 결과, 주기 카운터 값이 0이면 파티션 조정 알고리즘과 주기보정 알고리즘을 수행한다(6910-6920 단계). 6910 단계에서 수행되는 파티션 조정 알고리즘은 도 6에 상세히 도시되어 있고, 6920 단계에서 수행되는 파티션 조정 알고리즘은 도 7에 상세히 도시되어 있다.
그리고, 6909 단계에서의 판별 결과, 주기 카운터 값이 0이 아니면 6905단계로 되돌아가 패킷 수신 대기 상태가 된다.
앞에서 설명한 바와 같이, 본 발명에 따른 온칩(캐쉬) 메모리 파티션 제어기(697)는 상기 과정을 반복함으로써, 하위 서비스 그룹에 속하는 차등 클래스별 서비스 빈도에 따라 클래스별 온칩(캐쉬) 메모리의 파티션을 재조정하는 기능을 수행한다.
도 6은 도 5에 도시된 파티션 조정 알고리즘 수행 단계에 대한 상세 흐름도이다. 파티션 조정 알고리즘은 주어진 주기 내에서 발생한 각 차등 클래스별 서비스 빈도를 참조하여 다음 주기에서 사용할 각 차등 클래스별 온칩(캐쉬) 메모리(660) 파티션의 크기를 결정하는 데 사용된다.
도 6을 참조하면, 본 발명에 따른 파티션 조정 알고리즘은 먼저 하위 서비스 그룹에 속하는 각 차등 클래스별로 서비스율을 산출한다(6911 단계). 서비스율은, 주어진 주기 내의 특정 차등 클래스의 서비스 빈도 수가 주기 내의 모든 차등 클래스의 전체 서비스 빈도 수(주기와 일치)에서 차지하는 비율로, [수학식 1]과 같이 정의된다.
[수학식 1]
예를 들어, 주기가 100으로 설정되어 있고 하위 서비스 그룹의 총 서비스 수가 80이라고 할 때, 하위 서비스 그룹의 특정 차등 클래스의 서비스 빈도수가 20이면 해당 클래스의 서비스율은 0.25(즉, 20/80 = 0.25)가 된다. 이 서비스율로부터 다음 주기에 사용될 차등 클래스별 온칩(캐쉬) 메모리(660)의 파티션 크기가 결정된다. 다음 주기에서 적용될 각 하위 서비스 그룹 클래스에 대한 메모리 파티션의 크기는 하위 서비스 그룹에 할당된 온칩(캐쉬) 메모리(660)의 전체 크기에 서비스율을 곱한 것과 같다.
이어서, 하위 서비스 그룹의 차등 클래스별 파티션을 보정할 파티션 보정량이 구해진다(6912 단계). 상기 파티션 보정량은 다음 주기에 사용될 차등 클래스별 온칩(캐쉬) 메모리 파티션의 크기에서 현재 해당 클래스에 할당된 파티션의 크기를 빼줌에 의해 얻어진다. 이를 수학식으로 나타내면 다음과 같다.
[수학식 2]
파티션 보정량=(하위 서비스 그룹의 캐쉬 크기 × 서비스율)- 파티션 크기
파티션 보정량이 계산되면, 계산된 파티션 보정량이 음의 값을 갖는지 여부가 판별된다(6913 단계). 본 발명에 따른 파티션 조정 알고리즘에서는 파티션 보정량이 양의 값을 갖는지 음의 값을 갖는지에 따라서 적용되는 후속의 과정이 달라진다.
6913 단계에서의 판별 결과 파티션 보정량이 음의 값을 갖는 경우, 음의 파티션 보정량을 갖는 하위 서비스 그룹의 차등 클래스들에 대하여 리스트를 작성한다(6914 단계). 그리고, 이 리스트에 속한 차등 클래스의 온칩(캐쉬) 메모리 파티션을 조정하기 위해서, 해당 파티션 보정량만큼 온칩(캐쉬) 메모리를 해제시킨다(6915 단계). 이 때, 사용되지 않는 메모리 파티션이 온칩(캐쉬) 메모리 내에 보정량 이상 충분히 존재한다면, 사용되지 않는 메모리를 파티션 보정량만큼 파티션에서 제외시키면 된다. 그러나, 만일 사용되지 않는 메모리가 파티션 보정량만큼 충분히 존재하지 않는다면, 현재 사용되고 있는 메모리의 일부를 강제로 해제시켜야 한다. 본 발명에서는 메모리의 강제 해제를 위해 LRU 알고리즘을 사용한다. LRU 알고리즘에 의하면, 가장 최근에 사용되지 않은 순서에 의해 메모리가 해제되기 때문에, 플로우 캐쉬의 적중률을 저하시키지 않으면서도 필요한 메모리를 반환시킬 수 있게 된다. 앞에서 설명한 방법에 의해 서비스 빈도가 낮은 차등 클래스에 대한 파티션 메모리의 반환 과정이 끝나게 되면, 반환된 온칩(캐쉬) 메모리를 서비스 빈도가 높은 차등 클래스에게 할당해 주게 된다.
이를 위해, 먼저 양의 파티션 보정량을 갖는 하위 서비스 그룹의 차등 클래스 리스트가 작성된다(6916 단계). 그리고, 해당 파티션 보정량만큼 메모리를 추가시킴으로써(6917 단계), 상기 리스트에 속한 차등 클래스의 온칩(캐쉬) 메모리의 파티션을 조정하게 된다. 이때, 추가되는 메모리는 앞의 6915 단계에서 반환된 온칩(캐쉬) 메모리를 이용한다.
도 6에 도시된 본 발명에 따른 온칩(캐쉬) 메모리 파티션 제어기(697)의 패킷 분류 알고리즘은, 온칩(캐쉬) 메모리의 파티션을 보정하는 주기가 일정하게 고정되지 않고, 상황에 따라 조절된다. 따라서, 플로우 캐쉬의 적중률을 높여주는 장점을 가진다.
플로우 캐쉬 적중률을 극대화하기 위해서는 매 패킷마다 파티션 조정 알고리즘이 수행되어야 하지만, 잦은 파티션 조정 알고리즘의 수행은 시스템의 패킷 처리 성능에 영향을 미치게 된다. 따라서, 본 발명에서는 패킷 처리 성능에 영향을 미치지 않으면서 플로우 캐쉬에 대한 적중률을 일정한 수준으로 유지할 수 있도록, 도 7에 도시된 바와 같은 온칩(캐쉬) 메모리의 파티션을 조정하는 주기를 조절하는 알고리즘이 사용된다.
도 7은 도 5에 도시된 주기 보정 알고리즘 수행 단계에 대한 상세 흐름도이다. 도 7에 도시된 주기 보정 알고리즘은, 매 주기마다 파티션 조정 알고리즘이 수행되고 난 후 새로운 주기가 시작되기 이전에 수행된다.
도 7을 참조하면, 본 발명에 따른 주기 보정 알고리즘은 먼저 각 차등 클래스별로 캐쉬 적중빈도를 산출하고(6921 단계), 산출된 캐쉬 적중빈도를 이용하여 모든 차등 클래스에 대한 캐쉬 적중 빈도를 산출한다(6922 단계).
각 차등 클래스별 캐쉬 적중빈도는, 주어진 주기 내에서 해당 클래스별로 플로우 캐쉬를 검색하였을 때 검색에 성공한 횟수를 의미한다. 이렇게 구한 각 차등 클래스별 캐쉬 적중빈도를 모두 합하게 되면, 주어진 주기 내에서 이루어진 전체캐쉬 적중빈도가 구해지게 되는데, 이를 실제 캐쉬 적중빈도라 한다. 실제 캐쉬 적중빈도를 수학식으로 나타내면 다음과 같다.
[수학식 3]
실제 캐쉬 적중빈도 = ∑각 차등 클래스의 캐쉬 적중빈도
이어서, 6922단계에서 구해진 실제 캐쉬 적중빈도와 비교를 수행하기 위한 대상으로 예상 캐쉬 적중빈도가 산출된다(6923 단계). 예상 캐쉬 적중빈도는, 이미 설정되어 있는 희망 캐쉬 적중률과, 주어진 주기 내에 유입된 패킷의 총수(본 발명에서는 주기 설정값과 동일함)를 곱함으로써 얻어진다. 이를 수학식으로 나타내면 다음과 같다.
[수학식 4]
예상 캐쉬 적중빈도 = 주기설정값 × 희망 캐쉬 적중률
이 경우, 캐쉬 적중률이 80%로 설정되어 있고, 주기의 설정값이 100이어서 총 100개의 패킷이 유입되었다고 가정하면, 예상 캐쉬 적중빈도는 80이 된다.
6922 단계 및 6923 단계에서 실제 캐쉬 적중빈도와 예상 캐쉬 적중빈도가 구해지면, 이들 적중빈도들의 차를 구하여 보정 주기를 산출한다(6924 단계). 6924 단계에서 구해지는 보정주기는 아래의 [수학식 5]와 같다.
[수학식 5]
보정 주기 = 실제 캐쉬 적중빈도 - 예상 캐쉬 적중빈도
이렇게 구해진 보정 주기는 시스템에서 요구하는 캐쉬 적중빈도와 비교되어, 실제 캐쉬 적중빈도가 초과 상태에 있는지 미달 상태에 있는지를 정량적으로 나타내는 값으로서 사용된다.
보정 주기가 구해지고 나면, 이를 근거로 하여 주기 설정값이 산출되고(6925 단계), 주기 카운터를 산출된 신규 주기 설정값으로 설정한다. 6925 단계에서 산출되는 주기 설정값은 다음과 같다.
[수학식 6]
주기 설정값 = 주기 설정값 + 보정 주기
앞에서 설명한 바와 같이, 주기 카운터를 [수학식 6]에서 구해지는 주기 설정값으로 설정하게 되면, 실제 캐쉬 적중빈도의 초과 또는 미달 여부에 따라 주기가 증가 또는 감소된다.
구체적으로, 본 발명에 따른 온칩(캐쉬) 메모리 파티션 제어기(697)는, 실제 캐쉬 적중빈도가 초과된 경우, 실제 캐쉬 적중빈도와 예상 캐쉬 적중빈도의 차만큼 주기를 증가시켜 파티션 조정 알고리즘 수행 빈도를 낮추어 준다. 그리고, 실제 캐쉬 적중빈도가 미달인 경우, 실제 캐쉬 적중빈도와 예상 캐쉬 적중빈도의 차만큼 주기를 감소시켜줌으로써, 예상 캐쉬 적중빈도가 유지될 수 있도록 한다.
본 발명에서는 위와 같은 적응성이 있는(adaptive) 주기 보정 알고리즘을 이용하여 캐쉬 적중률과 패킷처리 속도라는 두 성능 요소사이에 타협(trade-off)을 이루고, 전체 패킷 분류 처리 성능을 극대화시킨다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상에 설명한 바와 같이, 본 발명에 의한 라우터 및 그것의 고속 IP 패킷 분류 방법에 의하면, 플로우 테이블을 저장하는 메모리가 고속의 내부 캐쉬 메모리와 저가의 외부 일반 메모리로 계층화되어 사용된다. 그리고, 서비스 클래스의 특성에 맞게 패킷 분류 메커니즘이 차별화 되고, 트래픽의 상태를 주기적으로 반영하여 패킷 분류가 동적으로 제어된다. 따라서, 신속한 검색이 수행될 수 있고, 패킷 분류 성능이 극대화될 수 있다.

Claims (32)

  1. QoS 정책 서버 시스템으로부터 전송된 QoS 정책을 QoS 자원제어 정보로 변환하는 QoS 정책 클라이언트;
    상기 QoS 자원제어 정보에 응답해서 복수 개의 플로우 테이블들을 구축하는 플로우 테이블 처리기;
    상기 플로우 테이블에 저장된 정보를 근거로 하여 각각의 패킷을 플로우별로 분류하여 동작코드를 발생하는 패킷 분류기; 및
    상기 동작코드에 응답해서 상기 각각의 패킷을 플로우별로 포워딩 시키고, 출력측 자원에 대한 스케쥴링을 제어하는 QoS 자원제어기를 포함하는 것을 특징으로 하는 라우터.
  2. 제 1 항에 있어서,
    상기 라우터는 상기 복수 개의 플로우 테이블들을 저장하는 제 1 메모리를 더 포함하는 것을 특징으로 하는 라우터.
  3. 제 2 항에 있어서, 상기 패킷 분류기는
    상기 패킷에 대한 다중 필드 정보를 추출하는 다중필드 정보 추출기;
    상기 패킷을 차등 클래스별로 분류하는 차등 클래스 분류기;
    상기 플로우 테이블의 정보를 상기 차등 클래스별로 검색하는 복수 개의 차등 클래스 플로우 테이블 검색기;
    상기 플로우 테이블의 정보 중 최근에 검색된 테이블 엔트리를 저장하는 제 2 메모리;
    상기 차등 클래스별로 상기 제 2 메모리의 파티션을 조정하는 파티션 제어기;
    상기 제 2 메모리에서의 검색이 성공하지 못한 경우 상기 제 1 메모리에 구비된 상기 플로우 테이블을 검색할 수 있도록 인터페이스를 제공하는 복수 개의 메모리 정합기; 및
    상기 플로우 테이블 검색결과가 순차적으로 출력될 수 있도록 중재하는 출력신호 중재기를 포함하는 것을 특징으로 하는 라우터.
  4. 제 3 항에 있어서,
    상기 제 1 메모리는 상기 패킷 분류기 외부에 구비된 DRAM인 것을 특징으로 하는 라우터.
  5. 제 3 항에 있어서,
    상기 제 2 메모리는 상기 패킷 분류기 내부에 구비된 캐쉬인 것을 특징으로 하는 라우터.
  6. 제 3 항에 있어서,
    상기 제 2 메모리는 상기 제 1 메모리에 구비된 상기 복수 개의 플로우 테이블들과 매칭되도록 파티션된 복수 개의 플로우 테이블들을 구비하는 것을 특징으로 하는 라우터.
  7. 제 3 항에 있어서,
    상기 복수 개의 차등 클래스 플로우 테이블 검색기는 상기 제 2 메모리에 구비된 상기 복수 개의 플로우 테이블들 각각에 매칭되어, 플로우 검색을 병렬로 처리하는 것을 특징으로 하는 라우터.
  8. 제 3 항에 있어서,
    상기 복수 개의 메모리 정합기는 상기 제 1 메모리에 구비된 상기 복수 개의 플로우 테이블들 각각에 매칭되어, 상기 제 1 메모리에 구비된 상기 플로우 테이블을 검색하는 것을 특징으로 하는 라우터.
  9. 제 8 항에 있어서,
    상기 복수 개의 메모리 정합기는, 상기 제 1 메모리에 구비된 상기 복수 개의 플로우 테이블들의 검색 성공시, 상기 검색 결과를 상기 제 2 메모리에 구비된 상기 복수 개의 플로우 테이블들에 저장하는 것을 특징으로 하는 라우터.
  10. 제 3 항에 있어서,
    상기 파티션 제어기는 상기 제 2 메모리에 저장될 상기 플로우 테이블들의 전체 차등 클래스를 상위 서비스 그룹과 하위 서비스 그룹으로 분류하고, 상기 상위 서비스 그룹의 파티션 크기를 상기 하위 서비스 그룹의 파티션 크기보다 소정의 양만큼 크게 할당하는 것을 특징으로 하는 라우터.
  11. 제 10 항에 있어서,
    상기 파티션 제어기는 상기 상위 서비스 그룹을 고정된 크기로 균등 분할하는 것을 특징으로 하는 라우터.
  12. 제 10 항에 있어서,
    상기 파티션 제어기는 상기 클래스별로 발생한 서비스 빈도에 비례하여 상기 하위 서비스 그룹을 불균등하게 분할하는 것을 특징으로 하는 라우터.
  13. 제 12 항에 있어서,
    상기 파티션 제어기는, 상기 하위 서비스 그룹의 분할에 있어서 이전 주기에 할당된 파티션 크기보다 작은 파티션이 책정된 경우, 기존에 사용중인 상기 제 2 메모리를 해제하되, 가장 오래 전에 사용된 메모리를 해제하는 것을 특징으로 하는 라우터.
  14. 제 11 항 또는 제 12 항에 있어서,
    상기 상위 서비스 그룹 및 상기 하위 서비스 그룹에 대한 상기 분할의 주기는, 각 차등 클래스별로 카운트된 상기 제 2 메모리의 실제 적중 빈도와 희망 적중 빈도의 차이에 의해 조절되는 것을 특징으로 하는 라우터.
  15. 제 14 항에 있어서,
    상기 파티션 제어기는, 상기 실제 적중빈도가 초과 상태에 있는 경우, 상기실제 적중빈도와 상기 희망 적중빈도의 차만큼 상기 분할 주기를 증가시키는 것을 특징으로 하는 라우터.
  16. 제 14 항에 있어서,
    상기 파티션 제어기는, 상기 실제 적중빈도가 미달 상태에 있는 경우, 상기실제 적중빈도와 상기 희망 적중빈도의 차만큼 상기 분할 주기를 감소시키는 것을 특징으로 하는 라우터.
  17. 제 3 항에 있어서,
    상기 출력신호 중재기는, FIFO 방식의 메모리를 구비하여, 병렬로 생성되는 상기 플로우 테이블 검색결과를 저장하고, 상기 플로우 테이블 검색결과를 FIFO 방식으로 순차적으로 출력하는 것을 특징으로 하는 라우터.
  18. 입력 패킷에 대한 다중 필드 검색키가 추출되는 단계;
    추출된 상기 다중 필드 검색키로부터 차등서비스 코드포인트 필드가 추출되는 단계;
    추출된 상기 차등서비스 코드포인트 필드에 응답해서 상기 패킷의 클래스를 분류하는 단계;
    상기 다중 필드 검색키에 응답해서 상기 차등서비스 코드포인트 필드에 해당되는 제 1 플로우 테이블 그룹을 검색하는 단계;
    상기 검색이 성공한 경우, 상기 검색 결과로부터 동작코드를 추출하는 단계; 및
    상기 검색이 성공하지 않은 경우, 상기 다중 필드 검색키에 응답해서 상기 차등서비스 코드포인트 필드에 해당되는 제 2 플로우 테이블 그룹을 검색하고, 상기 검색 결과로부터 동작코드를 추출하는 단계를 포함하되,
    상기 제 1 플로우 테이블 그룹은 제 1 메모리에 저장되고, 상기 제 2 플로우 테이블 그룹은 제 2 메모리에 저장되는 것을 특징으로 하는 패킷 분류 방법.
  19. 제 18 항에 있어서,
    상기 제 1 메모리는 패킷 분류기 내부에 구비된 캐쉬인 것을 특징으로 하는 패킷 분류방법.
  20. 제 18 항에 있어서,
    상기 제 2 메모리는 패킷 분류기 외부에 구비된 DRAM인 것을 특징으로 하는 패킷 분류방법.
  21. 제 18 항에 있어서,
    상기 제 1 플로우 테이블 그룹은 플로우 테이블의 정보 중 최근에 검색된 테이블 엔트리를 저장하는 것을 특징으로 하는 패킷 분류 방법.
  22. 제 18 항에 있어서,
    상기 제 1 플로우 테이블 그룹은 상기 제 2 플로우 테이블 그룹에 포함된 복수 개의 플로우 테이블들과 매칭되도록 파티션된 것을 특징으로 하는 패킷 분류 방법.
  23. 제 18 항에 있어서, 상기 패킷 분류 방법은
    상기 제 1 메모리를 상위 서비스 그룹과 하위 서비스 그룹으로 분류하는 단계;
    상기 서비스 그룹들을 파티션하는 단계; 및
    상기 서비스 그룹들에 대한 파티션 주기를 보정하는 단계를 더 포함하는 것을 특징으로 하는 패킷 분류 방법.
  24. 제 23 항에 있어서,
    상기 상위 서비스 그룹의 파티션 크기는 상기 하위 서비스 그룹의 파티션 크기보다 소정의 양만큼 크게 할당되는 것을 특징으로 하는 패킷 분류 방법.
  25. 제 23 항에 있어서,
    상기 상위 서비스 그룹은 고정된 크기로 균등 분할되는 것을 특징으로 하는 패킷 분류 방법.
  26. 제 23 항에 있어서,
    상기 하위 서비스 그룹은 클래스별로 발생한 서비스 빈도에 비례하여 불균등하게 분할되는 것을 특징으로 하는 패킷 분류 방법.
  27. 제 23 항에 있어서, 상기 서비스 그룹들을 파티션하는 단계는,
    상기 하위 서비스 그룹의 각 차등 서비스 빈도로부터 서비스율을 산출하는 단계;
    상기 하위 서비스 그룹의 차등 클래스별 파티션 보정량을 산출하는 단계;
    상기 파티션 보정량이 음의 값을 가지는 경우, 상기 음의 보정량을 가지는 하위 서비스 그룹의 차등 클래스 리스트를 작성하는 단계;
    상기 각 차등 클래스에 대하여 상기 파티션 보정량에 해당되는 메모리를 해제하는 단계;
    상기 파티션 보정량이 양의 값을 가지는 경우, 상기 양의 보정량을 가지는 하위 서비스 그룹의 차등 클래스 리스트를 작성하는 단계; 및
    상기 각 차등 클래스에 대하여 상기 파티션 보정량에 해당되는 메모리를 추가하는 단계를 포함하는 것을 특징으로 하는 패킷 분류 방법.
  28. 제 27 항에 있어서,
    상기 서비스율은인 것을 특징으로 하는 패킷 분류 방법.
  29. 제 27 항에 있어서,
    상기 차등 클래스별 파티션 보정량은 (하위 서비스 그룹의 메모리 크기 ×서비스율)-파티션 크기인 것을 특징으로 하는 패킷 분류 방법.
  30. 제 27 항에 있어서,
    상기 제 1 메모리는 가장 오래 전에 사용된 메모리 순으로 해제되는 것을 특징으로 하는 패킷 분류 방법.
  31. 제 23 항에 있어서, 상기 파티션의 주기를 보정하는 단계는,
    각 차등 클래스별로 적중빈도를 산출하는 단계;
    산출된 상기 적중빈도에 응답해서 모든 차등 클래스에 대한 적중 빈도를 산출하는 단계;
    모든 차등 클래스에 대한 적중 빈도의 총 합을 구하여 실제 적중 빈도를 구하는 단계;
    이미 설정되어 있는 희망 적중률과, 주어진 주기 내에 유입된 패킷의 총수를 곱하여 예상 적중빈도를 구하는 단계;
    상기 실제 적중 빈도에서 상기 예상 적중빈도를 뺀 값을 보정주기로 산출하는 단계;
    상기 보정 주기에 주기 설정값을 더하고, 이를 새로운 주기설정값으로 산출하는 단계; 및
    주기 카운터를 상기 산출된 주기설정 값으로 설정하는 단계를 포함하는 것을 특징으로 하는 패킷 분류 방법.
  32. 제 18 항 내지 제 31 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR10-2002-0027594A 2002-05-18 2002-05-18 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법 KR100429904B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0027594A KR100429904B1 (ko) 2002-05-18 2002-05-18 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
US10/256,000 US7274700B2 (en) 2002-05-18 2002-09-26 Router providing differentiated quality of service (QoS) and fast internet protocol packet classifying method for the router
FR0211978A FR2839835B1 (fr) 2002-05-18 2002-09-27 Routeur et procede de classification de paquets ip pour la mise en oeuvre dudit routeur

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0027594A KR100429904B1 (ko) 2002-05-18 2002-05-18 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법

Publications (2)

Publication Number Publication Date
KR20030089747A KR20030089747A (ko) 2003-11-28
KR100429904B1 true KR100429904B1 (ko) 2004-05-03

Family

ID=29398529

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0027594A KR100429904B1 (ko) 2002-05-18 2002-05-18 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법

Country Status (3)

Country Link
US (1) US7274700B2 (ko)
KR (1) KR100429904B1 (ko)
FR (1) FR2839835B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155012B1 (ko) * 2010-11-24 2012-06-14 한국과학기술정보연구원 오픈플로우 네트워크 시스템 및 그 제어방법

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8199647B2 (en) * 2001-09-20 2012-06-12 Nokia Siemens Networks Gmbh & Co. Kg Data transmission in a packet-oriented communication network
US7320037B1 (en) 2002-05-10 2008-01-15 Altera Corporation Method and apparatus for packet segmentation, enqueuing and queue servicing for multiple network processor architecture
US7606248B1 (en) 2002-05-10 2009-10-20 Altera Corporation Method and apparatus for using multiple network processors to achieve higher performance networking applications
US7339943B1 (en) 2002-05-10 2008-03-04 Altera Corporation Apparatus and method for queuing flow management between input, intermediate and output queues
US7277437B1 (en) * 2002-05-20 2007-10-02 Altera Corporation Packet classification method
US7336669B1 (en) 2002-05-20 2008-02-26 Altera Corporation Mechanism for distributing statistics across multiple elements
US7593334B1 (en) 2002-05-20 2009-09-22 Altera Corporation Method of policing network traffic
EP1547324A2 (de) * 2002-09-30 2005-06-29 Siemens Aktiengesellschaft Verfahren zur teilweisen erhaltung der paketreihenfolge bei verbindungsloser paketvermittlung mit alternativem routing
US7801171B2 (en) 2002-12-02 2010-09-21 Redknee Inc. Method for implementing an Open Charging (OC) middleware platform and gateway system
US7457865B2 (en) * 2003-01-23 2008-11-25 Redknee Inc. Method for implementing an internet protocol (IP) charging and rating middleware platform and gateway system
US8477780B2 (en) * 2003-03-26 2013-07-02 Alcatel Lucent Processing packet information using an array of processing elements
US7440441B2 (en) 2003-06-16 2008-10-21 Redknee Inc. Method and system for Multimedia Messaging Service (MMS) rating and billing
US8199764B2 (en) * 2003-08-25 2012-06-12 Cisco Technology, Inc. Scalable approach to large scale queuing through dynamic resource allocation
US20050190779A1 (en) * 2004-03-01 2005-09-01 Cisco Technology, Inc., A California Corporation Scalable approach to large scale queuing through dynamic resource allocation
US9614772B1 (en) * 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
CN100397824C (zh) * 2003-11-25 2008-06-25 华为技术有限公司 一种实现ip报文流分类的方法
US8059562B2 (en) * 2004-10-18 2011-11-15 Nokia Corporation Listener mechanism in a distributed network system
US7639674B2 (en) * 2004-10-25 2009-12-29 Alcatel Lucent Internal load balancing in a data switch using distributed network processing
US8848530B2 (en) * 2004-11-01 2014-09-30 At&T Intellectual Property Ii, L.P. System and method for providing differentiated quality of service
KR100603584B1 (ko) * 2004-11-16 2006-07-24 삼성전자주식회사 라우터 및 이를 이용한 패킷의 큐 관리 방법
US20060221850A1 (en) * 2005-03-31 2006-10-05 Teresa Buckley Field content based packet classification
US7865624B1 (en) * 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
KR100668661B1 (ko) * 2005-10-19 2007-01-16 한국전자통신연구원 휴대 인터넷 시스템에서 트랜스포트 연결 식별자의생성/변경 방법 및 그를 위한 단말기
KR100737525B1 (ko) 2005-10-19 2007-07-10 한국전자통신연구원 아이피 버전 6 (IPv6) 플로우레이블 생성방법
US7664088B2 (en) 2005-12-08 2010-02-16 Electronics And Telecommunications Research Institute Method for providing QoS using flow label in providing multimedia service in IPv6 network and system applying the same
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US8223642B2 (en) * 2006-04-28 2012-07-17 Tellabs San Jose, Inc. Differentiated services using weighted quality of service (QoS)
US8745185B1 (en) 2006-10-12 2014-06-03 Timothy J. Salo Method and apparatus for providing semantically aware network services
WO2008046444A1 (en) * 2006-10-16 2008-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Prioritising messages in a communications network
KR101340939B1 (ko) * 2006-10-25 2014-01-14 톰슨 라이센싱 프레임 분류를 위한 방법 및 시스템
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
KR101292445B1 (ko) * 2007-02-06 2013-07-31 주식회사 엘지씨엔에스 피투피 트래픽의 탐지 및 차단 장치 그리고 이의 탐지 및차단 방법
US8619766B2 (en) * 2007-03-02 2013-12-31 At&T Intellectual Property Ii, L.P. Method and apparatus for classifying packets
KR100884746B1 (ko) * 2007-04-24 2009-02-20 한국전자통신연구원 맞춤형 QoS를 제공하는 QoS 패킷 플로우 설정 및 QoS 패킷 처리방법
US8982887B2 (en) * 2007-05-18 2015-03-17 International Business Machines Corporation System, method and program for making routing decisions
US7808898B2 (en) * 2007-08-14 2010-10-05 Hewlett-Packard Development Company, L.P. Flow estimator
US8385205B2 (en) * 2007-09-20 2013-02-26 Tellabs Operations, Inc. Modeling packet traffic using an inverse leaky bucket
KR100920518B1 (ko) 2007-11-27 2009-10-09 한국전자통신연구원 패킷 분류 장치 및 방법
US8854966B2 (en) * 2008-01-10 2014-10-07 Apple Inc. Apparatus and methods for network resource allocation
CN101247337B (zh) * 2008-02-18 2012-11-21 华为技术有限公司 一种报文转发的方法和设备
US20100100936A1 (en) * 2008-09-08 2010-04-22 Vladimir Alexander Brik Secure Wireless Network Using Radiometric Signatures
US8693328B2 (en) * 2009-02-19 2014-04-08 Sandvine Incorporated Ulc Method and apparatus for distributing credits to multiple shapers to enable shaping traffic targets in packet communication networks
US20150334016A1 (en) * 2009-11-26 2015-11-19 Nec Corporation Relay device
CA2781932A1 (en) * 2009-11-26 2011-06-03 Nec Corporation Relay device
US9755947B2 (en) 2010-05-18 2017-09-05 Intel Corporation Hierarchical self-organizing classification processing in a network switch
US9485200B2 (en) 2010-05-18 2016-11-01 Intel Corporation Network switch with external buffering via looparound path
US8314807B2 (en) 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
US8631213B2 (en) 2010-09-16 2014-01-14 Apple Inc. Dynamic QoS upgrading
KR101145389B1 (ko) * 2010-09-28 2012-05-15 한국전자통신연구원 분산화를 통한 확장성 있는 중앙 집중식 네트워크 구조 및 제어 방법과 이를 위한 네트워크 스위칭 장치
US8897316B2 (en) * 2010-12-31 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) On-chip packet cut-through
JP2012146201A (ja) 2011-01-13 2012-08-02 Toshiba Corp オンチップルータ及びそれを用いたマルチコアシステム
US20140016476A1 (en) * 2011-03-24 2014-01-16 Nec Europe Ltd. Method for operating a flow-based switching system and switching system
US9247023B2 (en) 2011-07-27 2016-01-26 Qualcomm Incorporated System and method for prioritizing requests to a SIM
US9049251B2 (en) * 2012-02-28 2015-06-02 Futurewei Technologies, Inc. Method and apparatus for internet protocol based content router
US9559948B2 (en) 2012-02-29 2017-01-31 Dell Products, Lp System and method for managing unknown flows in a flow-based switching device
US20130223226A1 (en) * 2012-02-29 2013-08-29 Dell Products, Lp System and Method for Providing a Split Data Plane in a Flow-Based Switching Device
US8930690B2 (en) * 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
JP5624579B2 (ja) * 2012-03-23 2014-11-12 株式会社東芝 オンチップルータ
US9092269B2 (en) 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
KR101479950B1 (ko) * 2012-10-12 2015-01-07 주식회사 케이티 M2m 네트워크 자원 할당 방법 및 장치
US9053058B2 (en) 2012-12-20 2015-06-09 Apple Inc. QoS inband upgrade
US9229896B2 (en) 2012-12-21 2016-01-05 Apple Inc. Systems and methods for maintaining an order of read and write transactions in a computing system
US9680738B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9674087B2 (en) 2013-09-15 2017-06-06 Nicira, Inc. Performing a multi-stage lookup to classify packets
US9680748B2 (en) 2013-09-15 2017-06-13 Nicira, Inc. Tracking prefixes of values associated with different rules to generate flows
US9686185B2 (en) 2013-09-15 2017-06-20 Nicira, Inc. Generating flows using common match techniques
US9602398B2 (en) 2013-09-15 2017-03-21 Nicira, Inc. Dynamically generating flows with wildcard fields
KR101515581B1 (ko) * 2013-10-29 2015-05-04 고려대학교 산학협력단 이동 트래픽의 플로우 제어방법
US9996467B2 (en) 2013-12-13 2018-06-12 Nicira, Inc. Dynamically adjusting the number of flows allowed in a flow table cache
US9569368B2 (en) * 2013-12-13 2017-02-14 Nicira, Inc. Installing and managing flows in a flow table cache
US9985896B2 (en) 2014-03-31 2018-05-29 Nicira, Inc. Caching of service decisions
CN104009924B (zh) * 2014-05-19 2017-04-12 北京东土科技股份有限公司 一种基于tcam和fpga的报文处理方法及装置
US9696920B2 (en) * 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
US11178051B2 (en) 2014-09-30 2021-11-16 Vmware, Inc. Packet key parser for flow-based forwarding elements
CN106330694A (zh) * 2015-06-26 2017-01-11 中兴通讯股份有限公司 一种流表遍历业务的实现方法及装置
KR102412289B1 (ko) 2017-12-13 2022-06-23 한국전자통신연구원 병렬 스케줄링 방법 및 장치
CN115037680B (zh) * 2022-04-25 2023-08-22 哈尔滨工业大学(威海) 一种面向sase的流量选路方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740175A (en) * 1995-10-03 1998-04-14 National Semiconductor Corporation Forwarding database cache for integrated switch controller
US6104700A (en) * 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6041053A (en) * 1997-09-18 2000-03-21 Microsfot Corporation Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards
US6272133B1 (en) * 1998-05-21 2001-08-07 Inviscid Networks, Inc. Packet filtering method
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6167445A (en) * 1998-10-26 2000-12-26 Cisco Technology, Inc. Method and apparatus for defining and implementing high-level quality of service policies in computer networks
US6594268B1 (en) * 1999-03-11 2003-07-15 Lucent Technologies Inc. Adaptive routing system and method for QOS packet networks
US6628610B1 (en) * 1999-06-28 2003-09-30 Cisco Technology, Inc. Methods and apparatus for managing a flow of packets using change and reply signals
US6674743B1 (en) * 1999-12-30 2004-01-06 3Com Corporation Method and apparatus for providing policy-based services for internal applications
US6747968B1 (en) * 2000-01-14 2004-06-08 Nokia Ip Inc. Methods and systems for weighted PCF polling lists for WLAN QoS support
JP3591420B2 (ja) * 2000-04-07 2004-11-17 日本電気株式会社 ルータにおけるキャッシュテーブル管理装置およびプログラム記録媒体
US6772223B1 (en) * 2000-04-10 2004-08-03 International Business Machines Corporation Configurable classification interface for networking devices supporting multiple action packet handling rules
JP2001292167A (ja) * 2000-04-10 2001-10-19 Fujitsu Ltd ネットワーク中継システムおよび中継装置
US7290028B2 (en) * 2000-08-24 2007-10-30 International Business Machines Corporation Methods, systems and computer program products for providing transactional quality of service
GB2368228B (en) * 2000-10-18 2003-07-23 3Com Corp Network unit with address cache for frequently occuring network conversations
US7002965B1 (en) * 2001-05-21 2006-02-21 Cisco Technology, Inc. Method and apparatus for using ternary and binary content-addressable memory stages to classify packets
US7020143B2 (en) * 2001-06-18 2006-03-28 Ericsson Inc. System for and method of differentiated queuing in a routing system
US6940862B2 (en) * 2001-06-25 2005-09-06 Mark Goudreau Apparatus and method for classifying packets

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155012B1 (ko) * 2010-11-24 2012-06-14 한국과학기술정보연구원 오픈플로우 네트워크 시스템 및 그 제어방법

Also Published As

Publication number Publication date
US20030214948A1 (en) 2003-11-20
KR20030089747A (ko) 2003-11-28
US7274700B2 (en) 2007-09-25
FR2839835B1 (fr) 2004-11-12
FR2839835A1 (fr) 2003-11-21

Similar Documents

Publication Publication Date Title
KR100429904B1 (ko) 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
US6810426B2 (en) Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network
US9100314B2 (en) Dequeuing and congestion control systems and methods for single stream multicast
US8064344B2 (en) Flow-based queuing of network traffic
US8036117B1 (en) Dequeuing and congestion control systems and methods
US7885281B2 (en) Systems and methods for determining the bandwidth used by a queue
US7619969B2 (en) Hardware self-sorting scheduling queue
US6721796B1 (en) Hierarchical dynamic buffer management system and method
US8462802B2 (en) Hybrid weighted round robin (WRR) traffic scheduling
EP0872988A2 (en) A method for supporting per-connection queuing for feedback-controlled traffic
US20040246976A1 (en) System and method for automatic management of many computer data processing system pipes
US7613199B1 (en) Systems and methods for permitting queues to oversubscribe
US7969881B2 (en) Providing proportionally fair bandwidth allocation in communication systems
US8072998B2 (en) Systems and methods for congestion control using random early drop at head of buffer
EP2670085B1 (en) System for performing Data Cut-Through
US8660001B2 (en) Method and apparatus for providing per-subscriber-aware-flow QoS
US20060153199A1 (en) Apparatus and method for guaranteeing fairness among a plurality of subscribers in subscriber network
JP2000083055A (ja) ルータ
EP3425862B1 (en) Automatically cycling among packet traffic flows subjecting them to varying drop probabilities in a packet network
US6904056B2 (en) Method and apparatus for improved scheduling technique
US11182205B2 (en) Multi-processor queuing model
KR100745679B1 (ko) 적응 라운드 로빈을 이용한 패킷 스케쥴링 방법 및 장치
CN117278489A (zh) 端口队列容量的动态调整方法、系统、终端及存储介质
EP4282144A1 (en) Method and system for buffer management based on predictive analytics
KR20040048233A (ko) 선형제어를 이용한 큐 스케쥴링 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140416

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 16