KR20110114909A - 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법 - Google Patents

멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법 Download PDF

Info

Publication number
KR20110114909A
KR20110114909A KR1020100034293A KR20100034293A KR20110114909A KR 20110114909 A KR20110114909 A KR 20110114909A KR 1020100034293 A KR1020100034293 A KR 1020100034293A KR 20100034293 A KR20100034293 A KR 20100034293A KR 20110114909 A KR20110114909 A KR 20110114909A
Authority
KR
South Korea
Prior art keywords
packet
processing
processing engine
scheduling
packets
Prior art date
Application number
KR1020100034293A
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 KR1020100034293A priority Critical patent/KR20110114909A/ko
Publication of KR20110114909A publication Critical patent/KR20110114909A/ko

Links

Images

Classifications

    • 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/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/60Queue scheduling implementing hierarchical scheduling

Landscapes

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

Abstract

본 발명은 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법에 관한 것으로서, 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당하고, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출하며, 상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링 하더라도 동일 플로우의 패킷 처리 순서를 유지하도록 스케줄링하고, 상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리할 수 있다.

Description

멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법{NETWORK PROCESSOR SYSTEM BASED ON MULTI-PROCESSING ENGINE AND METHOD OF PACKET SCHEDULING USING THE NETWORK PROCESSOR SYSTEM}
본 발명은 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법에 관한 것으로서, 동일 플로우의 패킷들을 서로 다른 프로세서에서 처리하는 경우 서로 다른 프로세싱 엔진에서 처리된 동일 플로우 패킷들의 순서를 유지시키는 기술에 관한 것이다.
고속 대역폭 지원을 위한 네트워크 프로세서는 수백만 플로우를 처리해야 한다. 이를 위해 패킷 처리를 위한 멀티 프로세싱 엔진들을 병렬화하여 패킷을 처리하는 네트워크 프로세서가 개발되고 있으며, 다양한 요구 서비스에 따른 수백만 플로우들을 효과적으로 처리하기 위한 스케줄러의 연구가 진행되고 있다.
고속 대역폭을 지원하기 위해 병렬화된 멀티 프로세싱 엔진을 사용하여 패킷을 처리할 경우 플로우별 패킷의 순서를 유지시키기 어려운 문제점이 있다. 따라서 고속 대역폭 지원을 위한 네트워크 프로세서는 멀티 프로세싱 엔진을 통해 처리된 플로우별 패킷의 순서를 유지시키기 위한 방법이 필요하다.
근래 대부분의 네트워크 프로세서에서는 플로우별 큐를 갖고 있으며, 플로우별 큐를 특정 프로세싱 엔진에 할당하여 패킷을 처리함으로써 패킷의 순서를 유지시키는 방법을 사용한다. 이러한 방법은 동일 플로우의 패킷을 동일한 프로세싱 엔진에 할당하기 때문에 동일한 플로우의 패킷이 연속적으로 처리되어야 하는 경우 멀티 프로세싱 엔진의 전체 사용 효율이 낮아지고 패킷 처리 성능이 낮아지는 단점이 있다.
이 밖에도, 플로우별 패킷의 순서를 유지시키기 위해서 패킷의 고유 번호 및 패킷 처리 완료 플래그(completion flag)를 사용하여, 패킷의 순서를 유지하는 방법이 사용될 수 있다.
이러한 방법을 사용하면, 플로우별 큐에 저장된 패킷들을 동일한 프로세싱 엔진을 사용해서 처리하지 않아도 패킷의 순서를 유지시킬 수 있으나, 특정 고유 번호의 패킷 처리가 지연될 경우, 이 패킷 이후의 패킷들은 다른 프로세싱 엔진에 의해 처리가 완료되더라도, 처리가 지연되고 있는 패킷의 처리가 완료될 때까지 패킷을 출력하지 못하고 버퍼에 저장해야 되는 문제점이 있다.
유사하게, 플로우별 패킷의 순서를 유지시키기 위해서 각 플로우별 패킷의 고유번호 매칭을 통해서 패킷의 순서를 유지하는 방법이 사용될 수 있다. 이러한 방법은 버퍼에 입력되는 패킷의 고유 번호와 버퍼 내부에서 관리하는 고유 번호가 일치하지 않는다면 프로세싱 엔진은 패킷을 버퍼에 저장하지 못하며, 따라서 프로세싱 엔진의 성능이 낮아지는 문제점가 발생될 수 있다.
또한, 플로우별 패킷의 순서를 유지시키기 위해서 메모리 포인터 및 완료 플래그(completion flag)를 사용해서 패킷의 순서를 유지하기 위한 방법이 사용될 수 있다. 그러나 이러한 방법은 패킷의 시퀀스 번호에 해당하는 버퍼가 필요하며, 패킷의 시퀀스 번호에 해당하는 패킷 처리 완료 플래그를 각 패킷 별로 설정해야 하는 단점이 있다.
또한, 플로우별 패킷의 순서를 유지시키기 위해서 각 패킷에 시퀀스 번호를 할당 한 후 이를 사용해 패킷을 정렬 및 출력하는 방법이 사용될 수 있다.
이는 패킷에 할당된 시퀀스 번호 및 출력 버퍼 내부의 현재 시퀀스 번호를 비교하여 버퍼에 패킷을 순서대로 저장하는 방법으로서, 만약 두 시퀀스 번호가 일치하지 않는다면 패킷은 버퍼에 저장되지 못하며, 시스템 자원의 낭비가 발생하는 치명적인 단점이 있다.
다양한 기술들에도 불구하고, 근래 플로우별 패킷의 순서를 유지시키기 위한 방법들은 특정 플로우 큐에 대해 동일한 프로세싱 엔진을 사용하여 패킷을 처리함으로써 발생하는 멀티 프로세싱 엔진의 비효율적인 사용 문제에 직면할 수 있다. 뿐만 아니라, 플로우별 패킷의 순서를 유지시키기 위한 방법들은 플로우별 출력 버퍼 및 패킷 고유 번호의 관리가 필요한 문제가 발생될 수 있다.
본 발명의 일실시예에 따른 네트워크 프로세서 시스템은 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당하고, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출하는 패킷 분석부, 상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링하는 패킷 스케줄링 처리부, 및 상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리하는 프로세싱 엔진 어레이부를 포함한다.
본 발명의 일실시예에 따른 네트워크 프로세서 시스템의 동작 방법은 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당하는 단계, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출하는 단계, 상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링하는 단계, 및 상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리하는 단계를 포함한다.
본 발명의 일실시예에 따르면, 네트워크 프로세서에 입력되는 각 플로우별 패킷들을 멀티 프로세싱 엔진을 사용하여 처리함으로써 프로세싱 엔진의 사용 효율을 높일 수 있다.
본 발명의 일실시예에 따르면, 입력되는 패킷에 대하여 서로 다른 프로세싱 엔진을 사용함으로써, 처리된 패킷의 출력 순서를 효율적으로 유지할 수 있다.
도 1은 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템을 설명하는 블록도이다.
도 2는 본 발명의 일실시예에 따른 패킷 스케줄링 처리부를 설명하는 블록도이다.
도 3은 본 발명의 일실시예에 따른 프로세싱 엔진 어레이부를 설명하는 블록도이다.
도 4는 도 2에 개시된 우선순위 스케줄러 1 및 프로세싱 엔진그룹 1 스케줄링 테이블을 구체적으로 설명하는 도면이다.
도 5는 도 2에 개시된 패킷 분석기 및 우선순위 스케줄러 1을 구체적으로 설명하는 도면이다.
도 6은 우선순위 스케줄러1의 패킷 스케줄링 결과에 따른 프로세싱 엔진그룹1 스케줄링 테이블을 상태 변화를 설명하는 도면이다.
도 7은 도 6의 프로세싱 엔진3 스케줄링 테이블의 상태 변화를 구체적으로 설명하는 도면이다.
도 8은 본 발명의 일실시예에 따른 패킷 스케줄링 처리부의 스케줄링 알고리즘을 설명하는 흐름도이다.
도 9는 도 8의 스케줄링 알고리즘에 의해 프로세싱 엔진그룹1 스케줄링 테이블에 스케줄링 된 결과를 설명하는 도면이다.
도 10은 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법을 설명하는 흐름도이다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 바람직한 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템(100)을 설명하는 블록도이다.
본 발명의 일실시예에 따른 네트워크 프로세서 시스템(100)은 패킷 분석부(110), 패킷 스케줄링 처리부(120), 프로세싱 엔진 어레이부(130), 출력 큐(140), 및 메모리(150) 중에서 적어도 하나를 포함할 수 있다.
본 발명의 일실시예에 따른 패킷 분석부(110)는 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당하고, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출할 수 있다.
본 발명의 일실시예에 따른 패킷 스케줄링 처리부(120)는 상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 프로세싱 엔진 어레이부(130)는 상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리할 수 있다.
다시 말해, 본 발명의 일실시예에 따른 패킷 분석부(110)는 입력되는 패킷의 플로우 정보를 파악한 후 패킷에 고유 순서 번호를 할당하고, 패킷의 길이 및 패킷 처리가 요구되는 서비스에 따라 패킷 처리시간을 계산할 수 있다.
본 발명의 일실시예에 따른 패킷 스케줄링 처리부(120)는 생성된 플로우별 패킷의 고유 순서 번호 및 패킷 처리 시간을 기반으로 각 플로우별 패킷들을 서로 다른 프로세싱 엔진을 사용해 처리하더라도 처리가 완료된 동일 플로우의 패킷들의 순서가 유지되어 출력될 수 있도록, 생성된 정보를 사용해 패킷을 적절한 프로세싱 엔진에 할당함으로써, 패킷을 스케줄링할 수 있다.
본 발명의 일실시예에 따른 프로세싱 엔진 어레이부(130)는 각 프로세싱 엔진이 스케줄링 테이블을 참조하여 자신에게 할당된 패킷을 처리하고, 출력 큐(140)는 처리가 완료된 패킷을 링크로 출력함으로써, 각 프로세싱 엔진을 통해 처리된 플로우별 패킷들을 출력할 수 있다.
본 발명의 일실시예에 따른 메모리(150)는 메모리 주소 관리기의 제어를 통해서 패킷을 임시 저장할 수 있다.
도 2는 본 발명의 일실시예에 따른 패킷 스케줄링 처리부(200)를 구체적으로 설명하는 블록도이다.
본 발명의 일실시예에 따른 패킷 스케줄링 처리부(200)는 메모리 주소 관리기(201), 패킷분류기(202), 적어도 하나 이상의 우선순위 스케줄러(203, 205, 207), 적어도 하나 이상의 프로세싱 엔진그룹 스케줄링 테이블(204, 206, 208), 프로세싱 엔진 스케줄링 테이블 관리기(209), 및 유휴 프로세싱 엔진 스케줄러(210)를 포함할 수 있다.
메모리 주소 관리기(201)는 패킷을 메모리에 저장하고 패킷의 데이터가 저장된 메모리의 주소 및 패킷 정보를 패킷분류기(202)로 전송하고, 패킷분류기(202)는 상기 패킷이 저장된 메모리의 주소 및 패킷의 정보를 각 우선순위 스케줄러로 전송할 수 있다.
패킷 스케줄링 처리부(200)의 동작을 구체적으로 설명하기 앞서, 패킷 분석부는 입력되는 패킷의 플로우 정보를 분석한 후 패킷에 고유 순서 번호를 할당하고, 요구되는 패킷 처리 서비스에 따라 패킷 처리 시간을 계산 후 패킷의 플로우 정보, 패킷의 도착 시간, 계산된 패킷의 처리시간 및 패킷 처리 완료시간 정보를 패킷 스케줄링 처리부(200)로 전송할 수 있다.
이때, 시간은 네트워크 프로세서상의 가상시간이 사용될 수 있다.
패킷 스케줄링 처리부(200)의 메모리 주소 관리기(201)에서는 패킷 분석부(110)에서 전달된 패킷을 메모리에 저장하고, 패킷이 저장된 메모리의 주소 및 패킷의 정보를 패킷분류기(202)로 전송할 수 있다.
패킷분류기(202)에서는 패킷의 플로우 정보를 사용해서 우선순위 스케줄러1-M(203, 205, 207)에 패킷을 할당할 수 있다.
본 발명의 일실시예에 따른 우선순위 스케줄러1-M(203, 205, 207)는 자신에게 할당된 프로세싱 엔진그룹 스케줄링 테이블1-M(204, 206, 208)을 사용하여 패킷을 스케줄링할 수 있다.
이때, 각 프로세싱 엔진그룹 스케줄링 테이블에 할당된 초기 프로세싱 엔진의 수는 작업부하(workload) 및 플로우의 우선순위에 따라 결정될 수 있다. 또한, 각 프로세싱 엔진그룹 스케줄링 테이블에 할당된 초기 프로세싱 엔진의 수는 프로세싱 엔진의 효율적인 사용을 위해 프로세싱 엔진 스케줄링 테이블 관리기(209)에서 조절될 수 있다.
본 발명의 일실시예에 따르면, 특정 우선순위 스케줄러에 할당되지 않은 프로세싱 엔진들은 유휴(idle) 프로세싱 엔진 스케줄러(210)에 의해 할당될 수 있다.
도 3은 본 발명의 일실시예에 따른 프로세싱 엔진 어레이부(300)를 설명하는 블록도이다.
도 3에서 보는 바와 같이, 프로세싱 엔진 어레이부(300)는 N개의 프로세싱 엔진을 포함할 수 있다.
프로세싱 엔진 어레이부(300)는 N개의 프로세싱 엔진을 이용하여, 프로세싱 엔진그룹1-M 스케줄링 테이블을 사용하여 패킷을 처리할 수 있으며, 도 2에서 설명하였듯이 프로세싱 엔진 스케줄링 테이블 관리기에 의해서 각 프로세싱 엔진그룹 스케줄링 테이블에 할당되는 프로세싱 엔진의 수가 조절될 수 있다.
도 4는 도 2에 개시된 우선순위 스케줄러 1 및 프로세싱 엔진그룹 1 스케줄링 테이블을 구체적으로 설명하는 도면이다.
도 4는 우선순위 스케줄러1(402) 및 네 개의 프로세싱 엔진 스케줄링 테이블(404, 405, 406, 407)을 갖는 프로세싱 엔진그룹1 스케줄링 테이블(403)이 개시되어 있다.
예를 들어, 프로세싱 엔진1 스케줄링 테이블(404)은 프로세싱 엔진1에서 처리할 패킷(401)의 메모리의 주소가 저장된 테이블을 나타낼 수 있다.
구체적으로 우선순위 스케줄러 1에 입력되는 패킷(401)의 정보 중에서, 패킷 분석부(110)로부터 입력되는 i 플로우의, k 번째 패킷이 입력된 시간은
Figure pat00001
로 표현될 수 있고, 패킷 분석기에 의해 계산된 패킷 처리 시간은
Figure pat00002
로 표현될 수 있으며, 패킷 분석기에 의해 계산된 패킷 처리 완료 시간은
Figure pat00003
로 표현될 수 있다. 이 중에서,
Figure pat00004
Figure pat00005
Figure pat00006
의 합으로 표현될 수도 있다.
본 발명의 일실시예에 따르면, 패킷 분석부로부터 입력되는 도4의 패킷(401) 정보는 [표 1]를 통해 확인될 수 있다.
[표 1]
Figure pat00007

[표 1]은 도 4의 실시예에 따른 것으로써, 패킷 분석부로부터 우선순위 스케줄러1로 입력되는 패킷 정보를 각 플로우 및 패킷의 순서별로 나타낸 것으로 해석될 수 있다. 즉, 우선순위 스케줄러1은 [표 1]의 정보들을 사용해서 패킷을 스케줄링 한다.
본 발명의 일실시예에 따른 패킷 스케줄링 처리부는 패킷 분석부로부터 입력된 정보를 사용하여 동일 플로우 i 에서 현재 k 번째의 패킷과 이전 k-1 번째의 패킷에 대한 상대적인 처리 완료시간을 계산할 수 있다.
이때, 상기 상대적인 처리 완료 시간은 [수학식 1]과 같이 계산될 수 있다.
[수학식 1]
Figure pat00008
=
Figure pat00009

또한, 패킷 처리 시작시간(
Figure pat00010
)는 아래의 [수학식 2]를 통해 계산될 수 있다.
[수학식 2]
Figure pat00011
=
Figure pat00012

만약,
Figure pat00013
값이 1보다 작다면 현재 패킷 처리 완료시간이 동일 플로우의 이전 순서 패킷의 처리 완료시간보다 빠르다. 따라서 서로 다른 프로세싱 엔진을 사용하여 패킷을 처리할 경우 패킷 처리 완료 후 패킷의 순서가 바뀌게 되는 상황이 발생할 수 있다. 이 경우
Figure pat00014
를 사용해서 패킷 처리 시작 시간을 지연시켜 패킷 처리 완료 시 패킷 처리 순서가 유지되도록 할 수 있다.
[수학식 2]를 통해서 패킷 처리 시작시간이 결정되면 아래 [수학식 3]을 사용하여 패킷 처리 완료시간(
Figure pat00015
)이 계산될 수 있다.
[수학식 3]
Figure pat00016
=
Figure pat00017

도 5는 도 2에 개시된 패킷 분석기 및 우선순위 스케줄러 1을 구체적으로 설명하는 도면이다.
도 5는 도4의 패킷 스케줄링 알고리즘의 일부 동작 예를 나타낸다.
구체적으로 설명하면, 패킷 분석부(510)는 패킷 분석부(510)에 플로우 1의 패킷 1번(515)이 입력되고, 이어서 플로우 2의 1번 패킷(514), 플로우 1의 2번(513), 3번(512), 4번(511) 패킷이 차례대로 입력될 때, 패킷의 도착시간(
Figure pat00018
), 패킷 처리시간(
Figure pat00019
) 및 패킷 처리 완료시간(
Figure pat00020
)을 계산하고, 계산된 정보들(
Figure pat00021
,
Figure pat00022
,
Figure pat00023
)을 우선순위 스케줄러1로 순서대로 출력할 수 있다.
이후, 우선순위 스케줄러1(520)에서는 패킷 분석부(510)로부터 입력 받은 정보들(
Figure pat00024
,
Figure pat00025
,
Figure pat00026
)을 사용하여
Figure pat00027
를 계산하고, 패킷 처리 시작 시간(
Figure pat00028
) 및 패킷 처리 완료 시간(
Figure pat00029
)을 결정할 수 있다.
그리고 패킷 데이터는 메모리에 저장하고 패킷이 저장된 메모리의 주소 및 패킷의 스케줄링 정보를 프로세싱 엔진그룹1 스케줄링 테이블에 저장할 수 있다.
프로세싱 엔진그룹1 스케줄링 테이블(530)에 할당된 프로세싱 엔진 1, 2, 3 및 4는 프로세싱 엔진 스케줄링 테이블1(531), 2(532), 3(533) 및 4(534)를 사용해서 패킷을 처리할 수 있다.
예를 들어, 프로세싱 엔진1은 프로세싱 엔진1 스케줄링 테이블(531)을 참조하여, 패킷의 스케줄링 정보와 패킷이 저장된 메모리의 주소를 사용하여 패킷을 처리할 수 있다.
도 5를 통해서 패킷 분석부(510)에 입력된 패킷들의 스케줄링 동작을 좀더 자세히 살펴보면, 먼저 플로우 1의 패킷 1번(515)의 경우에 패킷의 도착 시간
Figure pat00030
= 0, 패킷의 처리시간
Figure pat00031
= 5, 및 패킷의 처리완료 시간
Figure pat00032
= 5이다.
또한, 동일 플로우 1의 패킷 2번(513)의 경우
Figure pat00033
= 2, = 4,
Figure pat00035
= 6 이다.
따라서 동일 플로우의 두 패킷이 서로 다른 프로세서에서 처리되더라도 패킷의 출력 순서가 유지될 수 있다.
그러나, 플로우 1의 패킷 3번(512)의 경우
Figure pat00036
= 3,
Figure pat00037
= 1,
Figure pat00038
= 4 이다.
따라서 플로우 1의 패킷 3번(512)은 플로우 1의 패킷 1번(515) 및 패킷 2번(513) 보다 패킷 처리 완료시간이 빠르기 때문에 만약 서로 다른 프로세싱 엔진을 사용하여 패킷 1, 2 및 3을 처리할 경우 패킷 출력 순서가 바뀌게 된다. 따라서 우선순위 스케줄러1(520)에서는 수식1, 2 및 3을 사용하여 플로우 1의 패킷 3(512)의 스케줄링 시간을
Figure pat00039
= 6,
Figure pat00040
= 7로(522) 조절할 수 있다.
따라서 서로 다른 프로세싱 엔진을 통해 패킷이 처리되더라도, 패킷의 출력 순서는 유지될 수 있다.
도 6은 도 5의 우선순위 스케줄러1에서, 패킷 스케줄링 결과에 따른 프로세싱 엔진그룹1 스케줄링 테이블의 상태 변화를 설명하는 도면이다.
구체적으로, 도 6은 도 5의 우선순위 스케줄러1(520)의 패킷 스케줄링 결과에 의해 프로세싱 엔진그룹1 스케줄링 테이블(530)을 사용하여, 각 프로세싱 엔진에서 처리되는 패킷들을 가상시간 단위로 도시한 것이다.
우선 프로세싱 엔진1 스케줄링 테이블(600)을 살펴보면, 프로세싱 엔진1에서는 플로우 1의 패킷 1번(525)이 가상시간 0에서 5까지 처리되는 것을 나타낼 수 있다.
그리고 프로세싱 엔진2 스케줄링 테이블(620)을 살펴보면, 프로세싱 엔진 2에서는 플로우 2의 패킷 1번(524)이 가상시간 1에서 3까지 처리되는 것을 확인할 수 있다.
이와 마찬가지로 프로세싱 엔진3 스케줄링 테이블(630)에서는 플로우 1의 2번(523), 3번(522) 및 4번(521) 패킷이 연속적으로 처리되고, 각 플로우별 패킷의 처리 순서가 유지되는 것을 알 수 있다.
도 7은 도 6의 프로세싱 엔진3 스케줄링 테이블의 상태 변화를 구체적으로 설명하는 도면이다.
도 7은 도 6의 프로세싱 엔진3 스케줄링 테이블(630)의 가상시간 별 상태 변화를 도시한 것이다.
각 프로세싱 엔진 스케줄링 테이블은 현재 처리할 패킷의 메모리 주소뿐만 아니라, 다음에 처리할 패킷의 주소를 저장하는 공간(702) 및 마지막에 처리할 패킷의 주소를 저장하는 공간(703)을 가질 수 있다.
도 7의 가상시간 2에서는 플로우 1의 2번(523) 패킷이 저장된 메모리의 주소(701)가 프로세싱 엔진3 스케줄링 테이블에 저장될 수 있다.
이후 가상시간 3에서 플로우 1의 3번(522) 패킷이 저장된 메모리의 주소(704)가 입력되면, 다음 처리할 패킷의 메모리 주소 공간(702) 및 마지막에 처리할 패킷의 메모리 주소 공간(703)에 링크리스트 형태로 저장될 수 있다.
그리고 가상시간 4에서 플로우 1의 4번(521) 패킷이 저장된 메모리의 주소(705)가 입력되면, 마지막에 처리할 패킷의 메모리 주소 공간(703)에 저장되고, 링크리스트 형태로 스케줄링 테이블에 추가될 수 있다.
가상시간 6에서는 프로세싱 엔진3이 플로우1의 2번(523) 패킷의 처리를 완료하면, 다음 처리할 패킷의 메모리 주소 공간의 데이터를 가지고 와서 패킷을 처리할 수 있다.
따라서, 가상시간 6에서는 프로세싱 엔진3 스케줄링 테이블에 플로우 1의 패킷 3번이 저장된 메모리의 주소(704)가 저장되고, 프로세싱 엔진1은 이를 사용하여 패킷을 처리할 수 있다.
즉, 각 프로세싱 엔진은 현재 처리 중인 패킷을 처리 완료 후 자신의 스케줄링 테이블에 링크된 정보를 사용해 패킷을 처리할 수 있다.
스케줄링 테이블은 링크 리스트 형태로 구성되며, 다음 처리할 패킷 데이터를 미리 저장해 두기 때문에 각 프로세싱 엔진은 프로세싱 엔진 스케줄링 테이블에 저장된 데이터에 따라 순서대로 패킷을 처리할 수 있다.
도 6에서 플로우 1의 패킷 3번 및 4번은 프로세싱 엔진1, 2 및 4 스케줄링 테이블에도 할당될 수 있었지만 프로세싱 엔진3 스케줄링 테이블에 할당된 이유는 플로우 1의 패킷 2번이 현재 프로세싱 엔진3에서 처리되고 있기 때문에 프로세서의 상태(context)를 유지하여 패킷 처리 효율을 높일 수 있기 때문으로 해석될 수 있다.
도 8은 본 발명의 일실시예에 따른 패킷 스케줄링 처리부의 스케줄링 알고리즘을 설명하는 흐름도이다.
구체적으로, 도 8은 본 발명의 일실시예에 따른 패킷 스케줄링 처리부의 각 패킷 스케줄러에서의 스케줄링 동작 알고리즘을 나타낸다.
패킷 스케줄러는 입력되는 패킷의 플로우 및 순서 번호를 참조하여 동일 플로우 이전 순서 패킷과의 상대적인 처리 완료시간을 계산(단계 801)한다.
패킷 스케줄러는 처리 완료 시간이 1 이상인지 여부를 판단하고(단계 802), 비어있는 스케줄링 테이블이 있는지를 더 판단할 수 있다(단계 803).
만약 상대적인 처리 완료 시간이 1 이상이고, 비어있는 스케줄링 테이블이 있다면 서로 다른 프로세싱 엔진에서 패킷을 처리하더라도, 패킷의 순서가 유지되는 것을 의미하기 때문에, 패킷 스케줄러는 스케줄러에 할당된 프로세싱 엔진 스케줄링 테이블 중 비어있는 곳을 찾아 패킷을 할당할 수 있다(단계 808).
만약, 패킷 스케줄러의 확인결과 처리 완료 시간이 1 이상이나, 비어있는 스케줄링 테이블이 없다면, 패킷 스케줄러는 패킷 처리 시작시간이 현재 패킷의 처리 완료시간보다 큰 스케줄링 테이블을 탐색한다(단계 804).
패킷 스케줄러는 탐색 결과를 확인하여, 처리 완료시간보다 큰 스케줄링 테이블이 있는지 여부를 판단할 수 있다(단계 805).
처리 완료시간보다 큰 스케줄링 테이블이 있다면, 패킷 스케줄러는 스케줄링 테이블에 패킷을 할당하고(단계 808), 만약 없다면 패킷 처리 완료시간이 가장 빠른 스케줄링 테이블을 탐색할 수 있다(단계 806).
패킷 스케줄러는 탐색 후 패킷 처리 시작시간 및 패킷 처리 완료시간을 다시 계산하고(단계 807), 스케줄링 테이블에 패킷을 할당할 수 있다(단계 808).
이때 테이블의 탐색에는 도 7에서 도시한 현재 처리할 패킷의 메모리 주소뿐만 아니라, 다음에 처리할 패킷의 주소를 저장하는 공간 및 마지막에 처리할 패킷의 주소를 저장하는 공간을 사용하여 탐색할 수도 있다.
만약 동일 플로우 이전 순서 패킷과의 상대적인 처리 완료시간을 계산 결과가 1보다 작다고 판단되는 경우, 서로 다른 프로세싱 엔진을 사용하여 패킷을 처리할 경우 패킷의 순서가 유지되지 못함을 의미할 수 있다.
따라서, 패킷 스케줄러는 동일 플로우 이전 순서의 패킷이 저장된 스케줄링 테이블을 탐색(단계 809)하고, 테이블 탐색 결과를 판단하여(단계 810), 테이블 탐색 결과가 존재하는 경우에 스케줄링 테이블에 패킷을 할당할 수 있다(단계 808).
이 때 도 8의 마지막에 처리할 패킷의 주소를 저장하는 공간이 탐색되나, 테이블 탐색 결과가 존재하지 않는다면, 단계 806 내지 808을 순서대로 수행할 수 있다. 즉, 이미 기존의 다른 패킷들이 마지막에 처리할 패킷의 주소를 저장하는 공간에 저장되어 있는 경우 패킷 처리 완료시간이 가장 빠른 스케줄링 테이블을 탐색하고(단계 806), 패킷 처리 시작시간 및 패킷 처리 완료시간을 다시 계산하여(단계 807), 스케줄링 테이블에 패킷을 할당(단계 808)할 수 있다.
[표 2]는 도 4 및 도 8의 실시예에 따른 패킷 스케줄링 결과를 표로 나타낸 것이다.
[표 2]를 통해 패킷 처리 완료시간을 살펴보면, 플로우별 패킷 순서에 따라 패킷 처리 완료시간(
Figure pat00041
)이 맞추어진 것을 알 수 있다. 그리고 플로우 4의 모든 패킷과 플로우 5의 패킷 2번은 패킷 스케줄링 시 패킷 처리 시간이 정해졌지만, 정해진 시간대에 스케줄링 가능한 프로세싱 엔진이 없어 패킷 처리 시작 시간이 다시 정해 진 것이다.
즉 패킷 처리 시작 시간에 사용 가능한 프로세싱 엔진이 없어, 각 프로세싱 엔진의 스케줄 테이블을 탐색 후 처리 완료시간이 가장 빠른 프로세싱 엔진에 스케줄링 된 경우를 나타낼 수 있다.
[표 2]
Figure pat00042

도 9는 도 8의 스케줄링 알고리즘에 의해 프로세싱 엔진그룹1 스케줄링 테이블에 스케줄링 된 결과를 설명하는 도면이다.
구체적으로, 도 9는 [표 2] 및 도 8에 따른 패킷 스케줄링 결과에 따라 각 패킷이 각 프로세싱 엔진 스케줄링 테이블에 스케줄링 된 결과를 나타낸다.
도 9를 통해 스케줄링 결과를 살펴보면 서로 다른 프로세싱 엔진에서 처리된 패킷의 경우에도 프로세싱된 패킷의 순서가 유지되는 것을 알 수 있다.
각 스케줄러는 패킷을 스케줄링하는 동안 패킷 처리 시작시간(
Figure pat00043
)이 일정 시간 이상 지연되면 도 2의 프로세싱 엔진 스케줄링 테이블 관리기(209)에게 프로세싱 엔진 스케줄링 테이블의 추가 할당을 요구하고, 유휴 프로세싱 엔진 스케줄러(210)로부터 프로세싱 엔진 스케줄링 테이블을 추가 할당 받아 패킷을 처리함으로써 대역폭을 유지한다.
그리고 각 스케줄러의 프로세싱 엔진 스케줄링 테이블에 할당된 프로세싱 엔진의 유휴시간이 일정하게 증가하면 자신에게 할당된 프로세싱 엔진을 유휴 프로세싱 엔진 스케줄러로 반환함으로써 프로세싱 엔진을 효율적으로 사용할 수 있다. 유휴 프로세싱 엔진 스케줄러에 할당된 프로세싱 엔진은 패킷 프로세싱 동작을 하지 않기 때문에 전력 면에서도 효율적이 특징을 갖는다.
결국, 본 발명에 따르면 동일 플로우에 대한 패킷을 멀티 프로세싱 엔진을 사용하여 처리하더라도 패킷의 순서를 유지할 수 있으며, 패킷 스케줄링 알고리즘의 병렬처리 효율이 뛰어나 고속의 패킷처리가 가능하다.
또한, 패킷의 처리량에 따라 프로세서의 사용을 효율적으로 조절할 수 있기 때문에 저전력 네트워크 프로세서의 구현을 가능하게 한다. 따라서 향후 고속 대역폭 지원을 위한 네트워크 프로세서의 패킷 스케줄링 방법으로 사용될 수 있다.
도 10은 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법을 설명하는 흐름도이다.
본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법은 입력되는 패킷에 고유 번호를 할당하고(단계 1001), 상기 고유 번호가 할당된 패킷에 대한 처리 시간을 산출한다(단계 1002).
다음으로, 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법은 적어도 하나 이상의 프로세싱 엔진에 할당되도록 상기 입력되는 패킷을 스케줄링한다(단계 1003).
구체적으로, 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법은 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당할 수 있다. 이에, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출할 수 있다.
처리 시간이 산출되면, 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법은 상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링할 수 있다.
다음으로, 본 발명의 일실시예에 따른 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템의 동작 방법은 상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리할 수 있다(단계 1004).
본 발명의 일실시예에 따른 네트워크 프로세서 시스템의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 네트워크 프로세서 시스템 110: 패킷 분석부
120: 패킷 스케줄링 처리부 130: 프로세싱 엔진 어레이부
140: 출력 큐 150: 메모리

Claims (1)

  1. 입력되는 패킷의 플로우 정보를 분석하여 상기 입력되는 패킷에 고유 번호를 할당하고, 상기 입력되는 패킷에 대한 서비스 특성을 반영하여 상기 고유번호가 할당된 패킷에 대한 처리 시간을 산출하는 패킷 분석부;
    상기 할당된 고유 번호 및 상기 산출된 처리시간을 고려하여, 상기 입력된 패킷이 적어도 하나 이상의 프로세싱 엔진에 할당되도록 스케줄링 하더라도 동일 플로우의 패킷 처리 순서를 유지하도록 스케줄링하는 패킷 스케줄링 처리부; 및
    상기 적어도 하나 이상의 프로세싱 엔진에 할당된 패킷을 처리하는 프로세싱 엔진 어레이부
    를 포함하는 네트워크 프로세서 시스템.
KR1020100034293A 2010-04-14 2010-04-14 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법 KR20110114909A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100034293A KR20110114909A (ko) 2010-04-14 2010-04-14 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100034293A KR20110114909A (ko) 2010-04-14 2010-04-14 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법

Publications (1)

Publication Number Publication Date
KR20110114909A true KR20110114909A (ko) 2011-10-20

Family

ID=45029710

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100034293A KR20110114909A (ko) 2010-04-14 2010-04-14 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법

Country Status (1)

Country Link
KR (1) KR20110114909A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10530846B2 (en) 2014-06-26 2020-01-07 Gubernet Inc. Scheduling packets to destination virtual machines based on identified deep flow
KR20200126542A (ko) * 2019-04-30 2020-11-09 동의대학교 산학협력단 네트워크 프로세서 패킷 처리 장치 및 그 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10530846B2 (en) 2014-06-26 2020-01-07 Gubernet Inc. Scheduling packets to destination virtual machines based on identified deep flow
KR20200126542A (ko) * 2019-04-30 2020-11-09 동의대학교 산학협력단 네트워크 프로세서 패킷 처리 장치 및 그 방법

Similar Documents

Publication Publication Date Title
US10261806B2 (en) Adaptive hardware configuration for data analytics
US9141430B2 (en) Scheduling mapreduce job sets
US8924978B2 (en) Sequential cooperation between map and reduce phases to improve data locality
US9645848B2 (en) Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment
JP5615991B2 (ja) 文書からのトピックの並列生成
US20060112388A1 (en) Method for dynamic scheduling in a distributed environment
US9354938B2 (en) Sequential cooperation between map and reduce phases to improve data locality
US9367293B2 (en) System and method for compiler assisted parallelization of a stream processing operator
US20090282217A1 (en) Horizontal Scaling of Stream Processing
US11016897B2 (en) Cache management in a stream computing environment that uses a set of many-core hardware processors
Liu et al. Optimizing shuffle in wide-area data analytics
CN110048966B (zh) 基于截止时间的最小化系统开销的Coflow调度方法
Agrawal et al. Scheduling parallelizable jobs online to minimize the maximum flow time
Duan et al. Mercury: A simple transport layer scheduler to accelerate distributed DNN training
CN107210970B (zh) 用于在源节点与宿节点之间发送数据的方法
KR20110114909A (ko) 멀티 프로세싱 엔진 기반의 네트워크 프로세서 시스템 및 상기 네트워크 프로세서 시스템의 패킷 스케줄링 방법
Atar et al. Subdiffusive load balancing in time-varying queueing systems
CN110502337B (zh) 针对Hadoop MapReduce中混洗阶段的优化系统
Huang et al. AutoVNF: An Automatic Resource Sharing Schema for VNF Requests.
WO2019000435A1 (zh) 任务处理方法、装置、介质及其设备
Liu et al. A dependency-graph based priority assignment algorithm for real-time traffic over NoCs with shared virtual-channels
Morla et al. High-performance network traffic analysis for continuous batch intrusion detection
Rahul et al. Optimization of Resource Scheduling and Allocation Algorithms
Mukherjee et al. Automated deep learning model partitioning for heterogeneous edge devices
Jeż et al. Scheduling multipacket frames with frame deadlines

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid