KR101594112B1 - 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법 - Google Patents

플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법 Download PDF

Info

Publication number
KR101594112B1
KR101594112B1 KR1020090122643A KR20090122643A KR101594112B1 KR 101594112 B1 KR101594112 B1 KR 101594112B1 KR 1020090122643 A KR1020090122643 A KR 1020090122643A KR 20090122643 A KR20090122643 A KR 20090122643A KR 101594112 B1 KR101594112 B1 KR 101594112B1
Authority
KR
South Korea
Prior art keywords
packet
processor
flow
data
input
Prior art date
Application number
KR1020090122643A
Other languages
English (en)
Other versions
KR20110065942A (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 KR1020090122643A priority Critical patent/KR101594112B1/ko
Publication of KR20110065942A publication Critical patent/KR20110065942A/ko
Application granted granted Critical
Publication of KR101594112B1 publication Critical patent/KR101594112B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

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

Abstract

플로우 기반의 네트워크 환경에서의 패킷 스케줄링 기술에 관한 것으로, 프로세서 어레이로부터 패킷 처리 결과를 획득하여, 획득된 처리 결과에 기초하여 이 후에 수신 패킷을 처리할 프로세서를 선택하고, 선택된 프로세서로 상기 수신 패킷을 전달하는 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 방법에 의해 칩에 내장된 프로세서 코어의 개수가 늘어남에 따라 선형적으로 그 성능을 향상시킬 수 있어 기존의 멀티 코어에서 패킷 스케줄링 방식에 따른 단점을 개선할 수 있다.
멀티코어, 멀티프로세서, 플로우, 패킷, 스케줄링

Description

플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법{Apparatus and Method for scheduling of packet in network based on flow}
본 발명은 패킷 스케줄링 기술에 관한 것으로, 특히 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법에 관한 것이다.
본 발명은 지식경제부 사업의 일환으로 수행한 연구로부터 도출된 것이다.[국가관리번호 : 2009-S-043-01, 과제명 : Scalable 마이크로 플로우 처리기술개발]
인터넷이 발달하면서 네트워크 역할의 중요성도 커지고 있다. 따라서 네트워크는 지능적으로 패킷을 관리하고 전달할 수 있어야 한다. 이에 따라 네트워크 시장은 최선형(best-effort) 기반의 네트워크에서 플로우 기반의 네트워크로 빠르게 진화하고 있다.
플로우 기반 네트워크로 진화하면서 네트워크는 패킷을 보다 지능적으로 관리하기 위해 높은 프로세싱 파워를 요구한다. 따라서 이를 위해 멀티 코어의 네트워크 프로세스가 사용되고 있다.
기존의 방식은 L2~L4 레벨에서 입력된 패킷을 각각의 장치에서 정의한 플로 우 즉, 5tuple(source and destination IP addresses, source and destination UDP ports and the ToS field) 이나 인터페이스로 구별하고, 상위 계층의 패킷 처리는 멀티 코어를 이용하여 처리한다.
기존 방식에 따르면, 플로우를 L2~L4 계층에서 나누지만, 상위 계층에 대한 플로우를 구별하지 못하기 때문에 멀티코어에서 패킷 처리에 사용되는 프로그램을 빈번히 교체해야 하고, 하나의 패킷을 여러 프로세서에서 병렬적으로 처리함으로써 출력 순서에 혼란이 야기된다는 문제점이 있다. 또한 하나의 패킷을 처리하는 데 필요한 데이터 또는 패킷의 페이로드를 여러 프로세서가 공유하고 있기 때문에 관련 데이터를 동시에 읽고 쓸 경우에 버스 충돌이 발생할 우려가 있다.
본 발명은 이 같은 문제점을 해결하기 위해 도출된 것으로 코어 개수 증가에 따라 선형적으로 성능을 향상시키고, 플로우 기반의 네트워크 환경에서 지능적이고 효율적으로 네트워크 관리를 수행하는 패킷 스케줄링 장치 및 방법을 제공하는 것을 목적으로 한다.
상기 기술적 과제는 프로세서 어레이로부터 패킷 처리 결과를 획득하여, 획득된 처리 결과에 기초하여 이 후에 수신 패킷을 처리할 프로세서를 선택하고, 선택된 프로세서로 상기 수신 패킷을 전달하는 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 방법에 의해 달성된다.
한편, 상기 기술적 과제는 적어도 하나의 프로세서를 포함하여 상기 프로세서에서의 패킷 처리 결과를 스케줄러로 피드백하는 프로세서 어레이 및 피드백된 패킷 처리 결과에 기초하여 상기 프로세서 어레이의 프로세서들 중 수신 패킷을 처리할 프로세서를 선택하여 전달하는 스케줄러를 포함하는 것을 특징으로 하는 패킷 스케줄링 장치에 의해서도 달성된다.
본 발명에 따르면 칩에 내장된 프로세서 코어의 개수가 늘어남에 따라 선형적으로 그 성능을 향상시킬 수 있어 기존의 멀티 코어에서 패킷 스케줄링 방식에 따른 단점을 개선할 수 있는 효과가 있다.
또한 입력되는 플로우를 처리할 수 있는 프로세서 및 스레드, 태스크, 프로세스, 프로그램을 개별 할당하여 관리하기 때문에, 다수의 코어에서 동작함으로써 플로우 내의 패킷 처리 결과 출력 순서가 바뀌는 것을 막을 수 있다.
전술한, 그리고 추가적인 본 발명의 양상들은 첨부된 도면들을 참조하여 설명되는 바람직한 실시예들을 통해 더욱 명확해질 것이다. 이하에서는 본 발명을 이러한 실시예들을 통해 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 설명하기로 한다.
도 1 및 도 2 는 일반적인 패킷 처리 구조의 예시도이다.
도 1 은 L4 계층에서 입력된 패킷 처리 구조를 도시한 것이다. 도 1 에 도시된 바와 같이 L4 분류기(10)에서 L4레벨 5tuple(소스/목적 IP, 소스/목적 포트, 프로토콜)을 이용하여 플로우를 구분한다. 그리고 패킷은 분배기(20)를 통해 멀티코어 즉 L2~L7 프로세서 어레이(30)로 전달되고, 프로세서에 의해 처리된다. 이 같이 L4 레벨에서 플로우를 구별한다. 그러나 상위 계층의 패킷 처리에 대한 프로그램이 상위 계층의 종류에 따라 다르기 때문에 캐시의 빈번한 교환이 이루어져야 한다는 단점이 있다.
또한 도 2 는 L2 계층에서 입력된 포트나 인터페이스를 구분하여 플로우를 정의하는 방식에서 패킷 처리 구조를 도시한 것이다. 도 1 에 도시된 방식과 달리 입력된 패킷이 L2 분류기(15)를 통해 L2 레벨에서 구별되기 때문에 상위 계층에 따라 상대적으로 많은 종류의 패킷 처리를 수행해야한다. 즉, 도 1 에 도시된 경우 플로우 별로 그룹화된 프로세서들이 하나의 패킷을 처리하는 반면, 도 2 에 도시된 방식에서는 여러 개의 프로세서가 하나의 패킷을 병렬적으로 처리한다.
이 같은 기존의 방식은 상위 계층에 대한 플로우를 구별하지 못하기 때문에 멀티코어에서 패킷 처리에 사용되는 프로그램을 빈번히 교체해야한다. 또한 하나의 패킷을 여러 개의 프로세서에서 병렬적으로 처리함으로써 출력 순서가 뒤바뀔 수 있기 때문에 이를 해결해야 하는 문제가 있다. 또한 이 경우 하나의 패킷을 처리하는데 필요한 데이터 또는 패킷 페이로드를 여러 개의 프로세서가 공유하기 때문에 관련 데이터를 동시에 읽고 쓰거나 할 경우에 버스 충돌이 발생할 우려도 있다.
도 3 은 일 실시예에 따른 패킷 스케줄링 장치의 구성도이다.
도시된 바와 같이 일 실시예에 따른 스케줄링 장치는 스케줄러(300) 및 다수의 프로세서들을 포함하는 프로세서 어레이(310)를 포함한다.
일 실시예에 따른 스케줄링 장치의 스케줄러(300)는 새로운 플로우의 처음 데이터 혹은 패킷이 수신되면 다수의 프로세서로 할당하여 그 플로우를 처리할 수 있는 프로세서를 설정한다. 그리고 프로세서는 스케줄러로 플로우를 구별할 수 있는 해쉬 키와 같은 관련 정보를 피드백한다. 또한, 이전에 처리 이력이 있는 플로우는 플로우 테이블 관련 정보에 기초하여 그 플로우를 처리할 수 있는 프로그램을 갖는 프로세서로 해당 플로우 패킷을 할당하여 처리하도록 한다.
프로세서 어레이(310)는 각각의 내부 메모리에 저장된 프로그램을 실행시킴으로써 스케줄러(300)로부터 수신되는 데이터 또는 패킷을 처리한다. 스케줄 러(300)는 입력된 데이터 또는 패킷을 분석하거나 파싱하여 플로우를 구분한다. 그리고 프로세서 어레이(310)로부터 피드백되는 정보에 기초하여 수신 패킷을 프로세서 어레이(310)의 프로세서들 중 하나로 전달한다.
도 4는 일 실시예에 따른 스케줄러의 구성을 상세히 도시한 구성도이다.
도 4 에 도시된 바와 같이 스케줄러(300)는 파서(302), 프로그램 제어부(304), 플로우 할당부(306)를 포함한다.
파서(parser, 302)는 입력되는 입력데이터를 분석한다. 일 실시예에 있어서 파서(302)는 해쉬 기능(function)을 가지며, 입력 데이터로부터 해쉬 키를 생성할 수 있다.
프로그램 제어부(304)는 프로세서 어레이의 프로세서에서 처리할 수 있는 프로그램 혹은 태스크, 스레드, 프로세스 등을 저장하고 관리한다.
플로우 할당부(306)는 입력 데이터에 따라 플로우를 구별하고 프로세서 어레이(310)의 특정 프로세서에 플로우를 할당한다. 일 실시예에 있어서 플로우 할당부(306)는 플로우 정보 저장부(308)에 저장된 플로우 테이블 정보에 기초하여 플로우들을 프로세서에 할당할 수 있다. 이때 플로우 정보 저장부(308)는 스케줄러 내부에 구비된 저장 공간으로 구현될 수도 있고, 외부의 별도 메모리 장치로 구현될 수도 있다. 그리고 스케줄러(300)는 파싱 데이터(parsing)와, 페이로드(payload), 인스트럭션(Instruction)들을 포함하는 출력 데이터를 출력한다.
또한 칩 외부의 범용 프로세서(GP:General purpose processor)와 통신할 수 있는 인터페이스와 프로세서 어레이와 통신하기 위한 포트들을 포함한다.
도 5는 일 실시예에 따른 패킷 스케줄링 방법의 플로우차트이다.
먼저, 플로우의 데이터 혹은 패킷이 입력되면 이전에 처리 이력이 있는 플로우인지 여부를 파악한다(500). 입력되는 데이터 혹은 패킷을 분석하여 해쉬키를 생성하고, 기 저장된 플로우 정보에 그 해쉬키가 존재하는지를 확인함으로써 새로운 플로우인지를 파악할 수 있다.
그리고 입력 이력이 없는 새로운 플로우의 데이터 혹은 패킷이라면, 어떤 프로그램을 적용하여 처리해야 하는지 모르기 때문에, 현재 동작하고 있지 않은 대기 상태의 아이들(idel) 프로세서로 전달한다(510, 520). 이때 프로세서 어레이에 포함되는 각각의 프로세서는 서로 다른 플로우를 처리할 수 있는 프로그램 혹은 프로세스, 태스크, 스레드를 저장하고 있다. 대기 상태 프로세서가 존재하지 않으면, 칩 외부에 있는 범용 프로세서로 전달한다(525).
그리고 입력된 데이터 또는 패킷이 속한 플로우를 어떤 프로세서에 어떻게 처리할지를 분석한다. 해쉬 키(hash key)와 같은 플로우 분석 정보는 스케줄러로 피드백되고, 이에 따라 플로우 테이블 정보가 업데이트 된다(530). 따라서 이후에 입력되는 해당 플로우의 데이터 혹은 패킷은 동일한 프로세서로 전달될 수 있다.
각각의 프로세서는 입력되는 데이터 혹은 패킷을 저장된 프로세스, 태스크, 스레드 혹은 프로그램에 의해 처리하고 그 결과값을 출력 버퍼로 출력한다(540).
한편, 입력된 플로우의 데이터 혹은 패킷이 이전에 처리 이력이 있는 플로우의 데이터 혹은 패킷이라면, 기 저장된 플로우 테이블에 기초하여 해당 플로우 관련 정보를 검색한다(550). 그리고 해당 플로우를 처리한 적이 있는 프로세서로 입 력된 데이터 혹은 패킷을 전달한다(560). 이때 만일 입력 데이터 혹은 패킷의 처리 이력이 있는 프로세서가 다른 데이터 혹은 패킷을 처리하고 있는 중이면, 그 처리가 완료될 때까지 대기한다. 즉, 이전에 입력된 데이터 혹은 패킷은 현재 입력된 데이터 또는 패킷과 같은 플로우에 속한 것이기 때문에, 동일한 플로우에 속하는 데이터 혹은 패킷 간에 순서가 어긋나는 것을 막을 수 있다. 즉, 프로세서는 순차적으로 플로우에 포함되는 데이터 혹은 패킷을 처리할 수 있다(570).
도 6 은 일 실시예에 따른 데이터 혹은 패킷의 프로세서 할당 방법의 플로우차트이다.
먼저, 데이터 혹은 패킷이 입력되면 해쉬(hash) 함수를 이용하여 해쉬키(hash key)를 생성한다(600). 그리고 기 저장된 플로우 테이블에 같은 해쉬키가 존재하는지를 확인한다(610). 플로우 테이블에서 동일한 해쉬키가 검색되지 않으면, 이전에 처리 이력이 없는 새로운 플로우이므로, 플로우 테이블에서는 미스(miss) 신호를 발생시킨다. 그리고 범용 프로세서(general purpose processor) 혹은 대기 상태의 프로세서(idle processor)를 할당하여 해당 데이터 혹은 패킷을 전달하여 처리하도록 하고(612). 플로우 테이블을 업데이트한다(614).
한편, 플로우 테이블에 해쉬키가 존재하면, 우선 대기 상태의 프로세서가 존재하는지를 살핀다(620). 그리고 대기 상태의 프로세서가 있으면 그 프로세서에 데이터를 할당하고(630), 프로세싱 시작 시각을 플로우 테이블에 적재한다(614). 프로세서 동일 플로우의 처리 시간은 대부분 비슷한 시간이 소모되기 때문에, 프로세싱 시작 시각에 따라 데이터 처리 순서를 파악할 수 있다. 이에 따라 패킷 순서 를 프로세싱 시작 시각 정보만으로도 간단하게 파악할 수 있다.
이때 온도, 전압, 지터 의 영향으로 인해 수행시간에 약간의 차이가 있을 수 있기 때문에 어느 정도 오차 값은 고려될 수도 있다.
대기상태의 프로세서가 존재하지 않으면, 플로우 테이블을 검색하여 해당 플로우를 처리할 수 있는 프로세서가 몇 개인지 확인한다. 그리고 하나의 프로세서에만 데이터 혹은 패킷이 할당된 경우에는(640), 그 프로세서로 입력된 데이터 혹은 패킷을 전달하여 처리토록 한다(650, 660).
반면, 여러 개의 프로세서에 데이터 혹은 패킷이 할당되어 처리되고 있는 경우에는 다수개의 프로세서들 중 현재 대기상태(idle)인 프로세서 중 하나로 전달한다(642, 660). 대기 상태의 프로세서가 없다면 각각 프로세서에서 처리되고 있는 데이터 혹은 패킷의 수신 시각을 파악한다. 그리고 처리중인 데이터 혹은 패킷의 수신 시각이 가장 빠른 것을 선택하여(644), 이전 데이터가 처리완료될 때까지 대기한 후에(646) 그 프로세서로 데이터 혹은 패킷을 전달한다(660).
이 경우 입력되는 플로우 개수가 적거나, 적은 수의 플로우에 집중적으로 데이터 혹은 패킷이 입력될 경우에 대기 상태의 프로세서에 우선적으로 데이터 혹은 패킷을 할당하게 된다. 이에 따라 프로세서에 할당되는 부하가 균일하게 분포되고, 특정 플로우를 처리할 수 있는 특정 프로세서가 몇 개씩 할당되어 있지만, 데이터 혹은 패킷의 수신 시각을 고려하여 데이터를 전달하기 때문에 프로세싱 완료 후에 동일한 플로우에서 입력된 데이터를 수신하여 처리함으로써 순서가 뒤바뀌는 것을 막을 수 있다.
또한 프로세서 개수가 늘어나면 처리할 수 있는 데이터 혹은 패킷의 양도 선형적으로 증가된다는 장점이 있다.
도 7 은 일 실시예에 있어서 플로우의 최초 패킷이 입력되었을 때 동작 설명을 위한 예시도이다.
최초에 플로우의 첫 패킷이 입력되면, 어떤 플로우의 패킷인지 모르기 때문에 스케줄러(300)의 파서(302)는 프로그램 제어부(304)로 프로세서 어레이에 데이터 혹은 패킷의 헤더 부분을 파싱하여 프로세서 어레이(310)에 포함되는 프로세서들 중 하나로 전달한다. 그리고 프로세서 어레이(310)의 각각의 프로세서들은 내부에 저장된 프로그램을 이용하여 스케줄러(300)로부터 전달되는 플로우를 분석하고 처리한다. 프로세서 어레이(310)는 그 분석 결과를 스케줄러(300)로 피드백한다. 프로세서 어레이(310)에서의 처리 결과는 출력 버퍼로 전달된다.
이 후에 동일한 플로우의 데이터 혹은 패킷이 수신되면 스케줄러(300)의 플로우 할당부(306)는 기 저장된 정보에 기초하여, 그 플로우를 처리했던 프로세서로 데이터 혹은 패킷을 전달할 수 있다. 도 7에서 일 실시예에 따라 ⓐ 플로우가 RIP 처리를 하는 경우, RIP를 처리할 수 있는 프로그램을 내부에 포함하는 P2 프로세서에서 처리되고, 첫 데이터 혹은 패킷의 수행 시작 시각은 10 : 11이다. 이때 10 : 11은 내부 카운터 값일 수 있다.
도 8 은 일 실시예에 있어서 플로우의 두 번째 패킷이 입력되었을 때 동작 설명을 위한 예시도이다.
도 7에서 입력된 데이터 혹은 패킷과 동일한 플로우 상의 데이터 혹은 패킷이 수신된 경우에, 스케줄러의 플로우 할당부(306)는 기 저장된 정보에 기초하여 입력된 플로우에 대한 정보가 존재함을 인식할 수 있다. 플로우 할당부(306)는 기 저장된 플로우 테이블에 기초하여 입력된 데이터 혹은 패킷을 P2로 전달할 수 있다.
도 9 는 일 실시예에 있어서 플로우의 n번째 패킷이 입력되었을 때 동작 설명을 위한 예시도이다.
도 9에 도시된 바와 같이 이미 n-1개의 플로우가 처리된 상태에서, n번째 플로우의 패킷 혹은 데이터가 입력된 경우이다. 이미 P1~Pn -1 프로세서에는 모두 플로우가 할당되어 있으므로, n번째 플로우는 기존에 플로우가 할당되지 않은 P0프로세서로 전달된다. 도 9에서 알 수 있듯이, 프로세서 P1는 현재 처리중인 패킷이 없으므로 유효(valid) 비트가 1이지만, 내부 메모리에 0번째 플로우를 처리할 수 있는 프로그램이 적재되어있으므로, 새로 들어온 n 번째 플로우는 P0 프로세서에 할당된다.
새로운 n번째 플로우는 프로세서 P0에서 VLAN 처리를 수행한 후, 처리된 데이터 결과는 출력 버퍼로 전달된다. 이때 P0 플로우가 다른 처리를 해야 하는 경우에는 P0프로세서는 프로그램 제어부로부터 다른 프로그램을 받아서 실행시켜야 한다. 프로세서P0는 플로우 관련 정보를 스케줄러(300)로 피드백하고, 플로우 할당 부(306)는 프로세서 어레이(310)로부터 피드백되는 정보들에 기초하여 이 후에 동일 플로우의 데이터 혹은 패킷이 입력되면 바로 프로세서 P0으로 전달할 수 있다.
도 10은 일 실시예에 있어서 플로우의 n+1번째 패킷이 입력되었을 때 동작 설명을 위한 예시도이다.
n개의 프로세서를 갖는 스케줄링 장치에 n+1 번째 새로운 플로우가 입력되면, 먼저 스케줄러(300)는 기 저장된 플로우 테이블을 검색하여 이전에 처리 이력이 있는 플로우인지를 판단한다. 그리고 새로운 플로우라면 새롭게 프로세서를 할당해야 한다. 그런데 만약 모든 프로세서가 데이터 혹은 패킷을 처리하고 있다면, 새로 입력되는 데이터 혹은 패킷을 칩 외부에 있는 범용 프로세서로 전달하거나, 프로세서 어레이의 프로세서 중 어느 하나에서 데이터 혹은 패킷의 처리가 완료될 때까지 대기해야 한다. 이때 범용 프로세서로 전달할지, 프로세서 어레이의 프로세서들 중 하나의 처리가 완료될 때까지 대기할지 여부는 사용자 정의에 의해 결정될 수 있다.
그리고, 대기(idle) 상태의 프로세서가 하나인 경우에는 n+1 번째 플로우의 데이터 혹은 패킷을 그 프로세서에 할당하고, 대기 상태의 프로세서가 둘 이상인 경우에는 Belady 알고리즘을 이용하여 미래에 가장 적게 사용될 프로세서를 예상하거나, LRU(Least Recently Used), NRU(Not Recently Used), LFU(Least Frequently Used)등과 같은 리플레이스먼트(replacement) 알고리즘을 사용하여 플로우를 할당할 프로세서를 결정한다.
일 실시예에 있어서 도 10에서는 P2 프로세서가 선택되었다. P2 프로세서에는 RIP를 처리할 수 있는 프로그램이 들어가 있으므로, 새로 입력되는 n+1번째 플로우의 데이터 혹은 패킷을 RIP로 처리한다. 그리고 맞으면 처리 결과를 출력 버퍼로 출력하고, 관련 플로우 정보를 플로우 테이블로 피드백하여 업데이트한다. 만약 입력된 플로우가 RIP 프로그램으로 처리가 안되는 경우에는 스케줄러의 프로그램 제어부(304)로부터 다른 프로그램을 획득하여 실행시킨다. 처리가 완료되면 P2 프로세서는 플로우 ⓞ를 처리할 수 있는 프로세서가 된다. 플로우 할당부(306)는 플로우 테이블에서 이전에 P2가 처리하던 플로우 ⓐ 의 프로세서 넘버를 none으로 바꿔서 이 후에 플로우 ⓐ 의 데이터 혹은 패킷이 입력되면 다른 프로세서에 할당되도록한다.
도 11은 적은 수의 플로우가 입력될 경우에 동작 설명을 위한 예시도이다.
플로우 개수가 적거나, 몇 개의 플로우의 데이터 혹은 패킷이 집중적으로 입력된다면, 프로세서 어레이의 프로세서들 중 플로우가 할당되지 않은 프로세서는 계속 대기 상태로 있게 된다. 이를 위해 입력된 플로우의 수가 적을 경우에도 동일한 플로우의 데이터 혹은 패킷을 하나 이상의 프로세서에서 처리 가능하도록 할 수 있다. 도 11에 도시된 바와 같이, 플로우 ⓑ와 플로우 ⓝ의 데이터가 연속적으로 입력될 수 있다. 모든 프로세서 어레이는 플로우 ⓑ와 플로우 ⓝ의 데이터를 처리할 수 있는 프로그램이 내장되어 있고, 이전에 입력된 데이터 혹은 패킷을 처리하고 있는 상태라, 유효 비트는 모두 '0'다.
예를 들어 플로우 ⓝ의 새로운 데이터가 입력되면, 플로우 ⓝ을 처리할 수 있는 프로세서들 중 하나로 할당해야 한다. 이때 플로우 ⓝ을 처리할 수 있는 프로세서들 중 처리중인 데이터의 입력 시각을 파악하여, 이전 데이터가 가장 빨리 입력된 프로세서를 선택하여 데이터를 할당한다. 하나의 프로세서가 동일한 프로그램으로 데이터 혹은 패킷을 처리하는 데 걸리는 시간은 거의 동일하다. 즉, 시작 시각이 빠른 프로세서가 해당 데이터 처리를 가장 먼저 완료할 수 있다. 또한, 그 프로세서에서 처리하던 데이터의 순서도 동일 플로우의 다른 데이터 혹은 패킷들 중 가장 먼저 입력된 것이기 때문에 다른 프로세서 수행되고 있는 해당 플로우의 데이터와 출력 버퍼로 출력되는 순서도 뒤바뀌지 않게 유지될 수 있다.
한편, 전술한 패킷 스케줄링 방법은 컴퓨터 프로그램으로 작성 가능하다. 또한, 상기 프로그램은 컴퓨터가 읽을 수 있는 정보저장매체(computer readable media)에 저장되고, 컴퓨터에 의해 읽혀지고 실행됨으로써 구현될 수 있다. 상기 저장매체는 자기 기록매체, 광 기록 매체 등을 포함한다.
이제까지 본 발명에 대해 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1 및 도 2 는 일반적인 패킷 처리 구조의 예시도,
도 3 은 일 실시예에 따른 패킷 스케줄링 장치의 구성도,
도 4 는 일 실시예에 따른 스케줄러의 구성을 상세히 도시한 구성도,
도 5 는 일 실시예에 따른 패킷 스케줄링 방법의 플로우차트,
도 6 은 일 실시예에 따른 데이터 혹은 패킷의 프로세서 할당 방법의 플로우차트,
도 7 은 일 실시예에 있어서 플로우의 최초 패킷이 입력되었을 때 동작 설명을 위한 예시도,
도 8 은 일 실시예에 있어서 플로우의 두 번째 패킷이 입력되었을 때 동작 설명을 위한 예시도,
도 9 는 일 실시예에 있어서 플로우의 n번째 패킷이 입력되었을 때 동작 설명을 위한 예시도,
도 10은 일 실시예에 있어서 플로우의 n+1번째 패킷이 입력되었을 때 동작 설명을 위한 예시도,
도 11은 적은 수의 플로우가 입력될 경우에 동작 설명을 위한 예시도이다.

Claims (10)

  1. 플로우 기반의 네트워크 환경에서 패킷 스케줄링 장치의 패킷 스케줄링 방법에 있어서,
    최초 수신 패킷의 헤더를 파싱하여 해쉬 키를 생성하고 파싱된 패킷을 프로세서 어레이에 전달하는 단계;
    전달된 패킷으로부터 파악된 플로우 정보를 포함한 패킷 처리 결과를 상기 프로세서 어레이로부터 획득하는 단계;
    획득된 처리 결과에 기초하여 이후 수신 패킷을 대상으로 수신 패킷을 처리할 프로세서를 선택하는 단계; 및
    상기 선택된 프로세서로 수신 패킷을 전달하는 단계;
    를 포함하는 것을 특징으로 하는 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 방법.
  2. 제 1 항에 있어서, 상기 패킷 스케줄링 방법은
    기 저장된 플로우 테이블에 상기 생성된 해쉬 키와 동일한 해쉬 키가 존재하는지를 확인하는 단계;
    플로우 테이블에서 동일한 해쉬 키가 존재하지 않으면 범용 프로세서 혹은 대기 상태의 프로세서에 패킷을 할당하는 단계; 및
    플로우 테이블에서 동일한 해쉬 키가 존재하면 대기 상태의 프로세서 존재 유무 및 할당된 프로세서의 수에 따라 프로세서에 패킷을 할당하는 단계;
    를 더 포함하는 것을 특징으로 하는 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치에 있어서,
    적어도 하나의 프로세서를 포함하여 상기 프로세서에서의 패킷 처리 결과를 스케줄러로 피드백하는 프로세서 어레이; 및
    최초 수신 패킷의 헤더를 파싱하여 해쉬 키를 생성하고 파싱된 패킷을 상기 프로세서 어레이에 전달하며, 전달된 패킷으로부터 파악된 플로우 정보를 포함한 패킷 처리 결과를 상기 프로세서 어레이로부터 획득하면 획득된 패킷 처리 결과에 기초하여 상기 프로세서 어레이의 프로세서들 중 수신 패킷을 처리할 프로세서를 선택하여 전달하는 스케줄러;
    를 포함하는 것을 특징으로 하는 패킷 스케줄링 장치.
  10. 삭제
KR1020090122643A 2009-12-10 2009-12-10 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법 KR101594112B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090122643A KR101594112B1 (ko) 2009-12-10 2009-12-10 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090122643A KR101594112B1 (ko) 2009-12-10 2009-12-10 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110065942A KR20110065942A (ko) 2011-06-16
KR101594112B1 true KR101594112B1 (ko) 2016-02-26

Family

ID=44398969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090122643A KR101594112B1 (ko) 2009-12-10 2009-12-10 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101594112B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015199366A1 (ko) * 2014-06-26 2015-12-30 정기웅 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치
EP3404533B1 (en) 2017-05-17 2021-05-05 Samsung Electronics Co., Ltd. Method and apparatus for data processing based on multicore

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8649264B2 (en) * 2006-10-04 2014-02-11 Qualcomm Incorporated IP flow-based load balancing over a plurality of wireless network links
KR100934714B1 (ko) * 2007-07-30 2009-12-30 영남대학교 산학협력단 단계적 플로우 정보기반의 네트워크 트래픽 모니터링 시스템

Also Published As

Publication number Publication date
KR20110065942A (ko) 2011-06-16

Similar Documents

Publication Publication Date Title
US8407707B2 (en) Task queuing in a network communications processor architecture
US8515965B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
JP2019047489A (ja) エージェント‐メッシュ・アーキテクチャーにおいてネットワーク・パケットを処理する技術
US10341264B2 (en) Technologies for scalable packet reception and transmission
US20070286194A1 (en) Method and Device for Processing Data Packets
WO2014113646A1 (en) Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of ip cores using high level specification
US9965434B2 (en) Data packet processing
TWI680404B (zh) 數據虛擬化存儲方法和裝置
US20050100017A1 (en) Using ordered locking mechanisms to maintain sequences of items such as packets
KR102126592B1 (ko) 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛
CN108762810B (zh) 一种基于并行微引擎的网络报文头处理器
US20190044893A1 (en) Technologies for buffering received network packet data
US11671382B2 (en) Technologies for coordinating access to data packets in a memory
KR101594112B1 (ko) 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법
JP2006135574A (ja) パケット伝送装置
US8935508B1 (en) Implementing pseudo content access memory
US9590897B1 (en) Methods and systems for network devices and associated network transmissions
US11411868B2 (en) Batch oriented service chaining method and corresponding devices and computer program
CN106302259B (zh) 片上网络中处理报文的方法和路由器
US10931591B2 (en) Allocation of virtual queues of a network forwarding element
US9455598B1 (en) Programmable micro-core processors for packet parsing
US10067690B1 (en) System and methods for flexible data access containers
TWI664842B (zh) 網路封包智能處理系統及其方法
US20170041237A1 (en) Apparatus and method for parallel processing
US20230342652A1 (en) Multitasking scheme for quantum computers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee