KR20120065724A - 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법 - Google Patents

다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법 Download PDF

Info

Publication number
KR20120065724A
KR20120065724A KR1020100127001A KR20100127001A KR20120065724A KR 20120065724 A KR20120065724 A KR 20120065724A KR 1020100127001 A KR1020100127001 A KR 1020100127001A KR 20100127001 A KR20100127001 A KR 20100127001A KR 20120065724 A KR20120065724 A KR 20120065724A
Authority
KR
South Korea
Prior art keywords
processing
index
packet
processing engine
information
Prior art date
Application number
KR1020100127001A
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 KR1020100127001A priority Critical patent/KR20120065724A/ko
Priority to US13/323,178 priority patent/US8885646B2/en
Publication of KR20120065724A publication Critical patent/KR20120065724A/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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/14Multichannel or multilink protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 다수의 패킷 처리 엔진 사이에 패킷 부하를 균형 분배하는 방법 및 장치를 제공한다. 패킷 분산 처리 장치는, 할당된 패킷을 처리하는 복수 개의 처리 엔진과, 복수 개의 처리 엔진 중, 입력 패킷에 대한 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 입력 패킷을 할당하는 제1 태그 생성부와, 출력 패킷에 대한 태그 인덱스를 계산하는 제2 태그 생성부와, 복수 개의 처리 엔진의 부하가 분산되도록, 출력 패킷에 대한 태그 인덱스를 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 출력 패킷을 변환된 하나의 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 인덱스 변환부를 포함한다.

Description

다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법{Apparatus and method for load-balancing multiple packet processing engines}
본 발명은 컴퓨터 네트워크 분야에 관한 것으로, 특히 멀티 프로세서 시스템에서 패킷 처리의 부하 분산에 관한 것이다.
라우터, 스위치, 파이어 월, 미들 박스 등의 네트워크 장치들은 큰 대역폭에서 다양한 기능을 수용하도록 발전되어 왔다. 멀티코어 프로세서, 프로세서 어레이 구조와 같은 다수의 패킷 처리 엔진을 가지는 디자인은, 하나의 강력한 프로세서를 사용하는데 있어서 기술적 혹은 경제적인 한계 때문에 널리 사용되고 있다. 병렬화를 극대화하여 성능 향상을 높이려고 하는 시도는 입력된 패킷 스트림을 플로우라는 독립적인, 즉, 다른 집단과의 동기화나 문맥 공유가 필요하지 않은 패킷의 집합으로 나누는 기법으로 발전되었다.
이러한 기법에서 가장 잘 알려진 구조 모델은 해시 태그(hash tag)를 이용한 플로우 분산 모델이다. 각각의 입력된 인그레스 혹은 이그레스 패킷에 대해 일반적으로 해시 함수(hash function)를 이용해 태그 값이 계산되고 계산된 태그 값은 코어 혹은 프로세서의 인덱스 값으로 사용되어 해당 패킷은 해당 인덱스를 가진 코어 혹은 프로세서로 전달되는 구조이다. 이와 같은 방법들은 사용된 해시 함수의 무작위성을 이용함으로써 줄어든 시간 혹은 공간 복잡도에서 비슷한 정도로 균형적인 분배를 제공하였다. 하지만 그러한 방법들에서 플로우 수를 균일하게 분배한다는 목적은 여전히 유지되었다.
네트워크 장치에서 플로우 수 균일 분배의 문제점은 플로우 수와 그 플로우들에 속한 패킷의 수(혹은 데이터의 양) 사이의 불일치이다. 다른 말로, 처리 엔진들이 플로우 수의 관점에서 완벽히 균형되게 분배되어 있다고 할지라도, 처리 엔진들에 분배된 패킷의 수 혹은 바이트는 매우 불균형적이 될 수 있다.
짧은 시간 척도, 예를 들어, RTT(Round Trip Times)와 비슷한 정도의 시간, 즉 현실적으로 수백 밀리초 미만에서 발생하는 부하 불균형에 의해 처리 엔진에서 발생하는 트래픽 폭주는 어느 정도 지연을 감수하고 패킷 버퍼를 사용하여 효과적으로 처리하거나, 처리 엔진의 성능을 높여 예방할 수 있다. 하지만 큰 시간 척도에서 비정상(non-stationary)적으로 발생하는 부하 불균형에 의한 지속적인 과잉에 대응하기 위해서는 분배 기법에 변화를 필요로 한다.
패킷 처리 부하가 불균형적인 정도 역시 큰 시간 척도에서 더 크다. 헤비 테일드(Heavy-tailed) 혹은 파레토와 비슷하다고(Pareto-like) 알려진 플로우 크기의 분포는 로그노멀 분포(lognormal distribution)에 가깝다고 알려진 플로우 속도 분포보다 더 큰 테일을 가지고 있다. 일반적인 플로우의 지속 시간보다 긴 큰 시간 윈도우에서 각 처리 엔진이 처리해야 하는 패킷 부하의 분포는 플로우 크기의 분포와 근사한다. 한편, 짧은 시간 윈도우에서는 플로우 속도의 분포에 근사한다. 헤비테일드 분포와 같이 몇몇의 아주 큰 플로우가 전체 트래픽에서 큰 부분을 차지함에 따라, 플로우 수를 기반한 균형이 패킷 수나 바이트 차원에서의 부하 균형을 의미하지 않는다.
본 발명은 다수의 패킷 처리 엔진 사이에 패킷 부하를 균형있게 분배하는 방법 및 장치를 제공한다.
일 측면에 따른 패킷 분산 처리 장치는, 할당된 패킷을 처리하는 복수 개의 처리 엔진과, 복수 개의 처리 엔진 중, 입력 패킷에 대한 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 입력 패킷을 할당하는 제1 태그 생성부와, 출력 패킷에 대한 태그 인덱스를 계산하는 제2 태그 생성부와, 복수 개의 처리 엔진의 부하가 분산되도록, 출력 패킷에 대한 태그 인덱스를 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 출력 패킷을 변환된 하나의 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 인덱스 변환부를 포함한다.
다른 측면에 따른 패킷 분산 처리 장치는, 할당된 패킷을 처리하는 복수 개의 처리 엔진와, 복수 개의 처리 엔진 중, 출력 패킷에 대한 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 출력 패킷을 할당하는 제1 태그 생성부와, 입력 패킷에 대한 태그 인덱스를 계산하는 제2 태그 생성부와, 복수 개의 처리 엔진의 부하가 분산되도록, 입력 패킷에 대한 태그 인덱스를 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 입력 패킷을 변환된 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 인덱스 변환부를 포함한다.
또 다른 측면에 따른 복수 개의 처리 엔진을 이용하여 입력 패킷 및 출력 패킷을 분산 처리하는 방법은, 복수 개의 처리 엔진의 입력 패킷 및 출력 패킷에 대한 패킷 처리 부하가 분산되도록, 입력 패킷 및 출력 패킷 중 하나에 대한 태그 인덱스를 복수 개의 처리 엔진에 대한 복수 개의 처리 인덱스 중 하나의 처리 엔진 인덱스로 변환하는 단계와, 입력 패킷 및 출력 패킷 중 하나를 하나의 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 단계를 포함한다.
또 다른 측면에 따른 패킷 분산 처리 장치는, 복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블을 참조하여, 복수 개의 처리 엔진의 부하가 분산되도록, 입력 패킷 및 출력 패킷 중 하나의 패킷에 대한 태그 인덱스를 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스로 변환하기 위한 인덱스 변환 맵핑 정보를 계산하는 인덱스 변환 맵핑 계산부와, 계산된 인덱스 변환 맵핑 정보에 따라 하나의 패킷을 하나의 처리 엔진 인덱스로 변환하고, 하나의 패킷을 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 패킷 할당부를 포함한다.
본 발명은 헤비테일드 플로우 크기 분포를 고려하여 다수의 패킷 처리 엔진에서 균형된 부하 분산을 하고, 결과적으로 전체적인 시스템의 대역폭을 향상하기 위한 균형된 부하 분산을 제공한다. 또한 동적인 업데이트 기법을 차용해 시간적으로 변화하는 트래픽 부하에 효과적으로 대처할 수 있다.
도 1은 본 발명의 일 실시예에 따른 플로우 분산 처리 장치의 구성을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 처리 엔진 정보 테이블의 구성을 나타내는 도면이다.
도 3은 도 2의 인덱스 변환부의 구성의 일 예를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 패킷 분산 처리 방법을 나타내는 순서도이다.
도 5는 처리 엔진 정보 테이블의 갱신 과정을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 플로우 분산 처리 장치의 구성을 나타내는 도면이다.
플로우 분산 처리 장치(100)는 제1 태그 생성부(110), 제2 태그 생성부(120), 복수 개의 처리 엔진(130, 131, 132, 133), 처리 엔진 정보 테이블(140) 및 인덱스 변환부(150)를 포함할 수 있다. 플로우 분산 처리 장치(100)는 라우터, 네트워크 스위치 등과 같은 네트워크 장치로 구현될 수 있다.
플로우 분산 처리 장치(100)는 입력 패킷(10) 및 출력 패킷(20)의 처리를 수행하는 복수 개의 처리 엔진(130, 131, 132, 133)의 부하가 균형있게 분산되도록 동작한다. 입력 패킷(10)은 플로우 분산 처리 장치(100)의 입력 포트(도시되지 않음)을 통해 네트워크로부터 들어온 패킷을 나타내고, 출력 패킷(20)은 플로우 분산 처리 장치(100)의 출력 포트(도시되지 않음)을 통해 네트워크로 나가기 전에 복수 개의 처리 엔진(130, 131, 132, 133)을 이용하여, 소정의 처리가 수행되어야 하는 패킷을 나타낸다. 입력 패킷(10) 및 출력 패킷(20)은 패킷의 진행 방향에 따라 구분되는 것이며, 각각 하나 이상의 패킷들을 가리킬 수 있다.
제1 태그 생성부(110)는 입력 패킷(10)의 정보에 해시 함수를 적용하여 태그 인덱스를 생성한다. 예를 들어, 제1 태그 생성부(110)는 입력 패킷(10)의 헤더에 포함된 소스 IP 주소, 목적지 IP 주소, 소스 포트 주소, 목적지 포트 주소 및 프로토콜 타입 값에 해시 함수를 적용하여 태그 인덱스(또는 태그 값)을 생성할 수 있다. 태그 인덱스는 복수 개의 처리 엔진(130, 131, 132, 133)에 대한 처리 엔진 인덱스의 값에 대응되도록 생성될 수 있다. 제1 태그 생성부(110)는 복수 개의 처리 엔진(130, 131, 132, 133) 중 해당 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 입력 패킷(10)을 할당한다.
제2 태그 생성부(120)는 출력 패킷(20)의 정보에 해시 함수를 적용하여 태그 인덱스를 생성하고, 생성된 태그 인덱스를 인덱스 변환부(150)로 전달한다.
복수 개의 처리 엔진(130, 131, 132, 133)은, 제1 태그 생성부(110) 및 인덱스 변환부(150)로부터 할당받은 입력 패킷(10) 및 출력 패킷(20)에 대한 패킷 처리를 수행한다. 도 1에는 4개의 처리 엔진(130, 131, 132, 133)이 도시되어 있으나, 플로우 분산 처리 장치(100)에 포함되는 처리 엔진의 개수에는 제한이 없다.
처리 엔진 정보 테이블(140)은 복수 개의 처리 엔진(130, 131, 132, 133) 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 저장한다. 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보로, 프로세서의 사용량 측정값(예를 들어, CPU의 경우 점유율)이 이용될 수 있다. 또는, 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보로 일정 시간 동안 처리한 패킷 수나 바이트 정보가 이용될 수 있다. 예를 들어, 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보로 각 처리 엔진이 분당 처리한 패킷 수(PPM: Packet per minute), 일정 시간 처리한 패킷 크기의 합(bytes per unit time) 정보가 이용될 수 있다. 복수 개의 처리 엔진(130, 131, 132, 133) 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보는 주기적으로 갱신될 수 있다.
인덱스 변환부(150)는 제2 태그 생성부(120)에서 계산된 출력 패킷의 태그 인덱스를 복수 개의 처리 엔진(130, 131, 132, 133)의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환한다. 인덱스 변환부(150)는 복수 개의 처리 엔진(130, 131, 132, 133)의 부하가 최대로 분산되도록 설정된 출력 패킷의 태그 인덱스를 처리 엔진 인덱스로 변환하기 위한 정보를 포함하는 인덱스 변환 매핑 테이블(도시되지 않음)을 이용하여 태그 인덱스를 처리 엔진 인덱스로 변환할 수 있다.
도 1에서, 제1 태그 생성부(110)에서 계산된 입력 패킷(10)의 태그 인덱스는 그대로 처리 엔진의 인덱스로 사용되어, 입력 패킷(10)은 자신의 태그 인덱스를 가지는 처리 엔진에 할당될 수 있다. 그러나, 도 1에서 출력 패킷의 태그 인덱스는 그대로 처리 엔진의 인덱스로 사용되지 않고, 인덱스 변환부(150)를 통한 인덱스 변환 맵핑에 의해 처리 엔진 인덱스가 추출될 수 있다.
도 1에서는, 인덱스 변환부(150)가 출력 패킷(20)을 처리하는 위치 즉, 제2 태그 생성부(120)에 연결되어 있으나, 인덱스 변환부(150)는 제1 태그 생성부(110)에 연결되어 구성될 수 있다. 즉, 인덱스 변환부(150)는 입력 패킷 처리 경로 또는 출력 패킷 처리 경로 중 어느 쪽이든지 한쪽에 부착될 수 있다. 예를 들어, 입력 패킷 처리에서 복수 개의 처리 엔진(130, 131, 132, 133)의 부하가 분산되도록, 입력 패킷에 대한 태그 인덱스를 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 출력 패킷 처리에서는 변환없이 출력 패킷의 태그 인덱스가 그대로 처리 엔진 인덱스 값으로 사용될 수 있다. 이하에서는 설명의 편의를 위해서 도 1에 도시된 바와 같이, 인덱스 변환부(150)가 출력 패킷의 처리 경로에 위치되는 경우를 중심으로 설명한다.
인덱스 변환부(150)는 복수 개의 처리 엔진(130, 131, 132, 133)에 대한 패킷 처리 부하가 최대로 균형잡히는 방법으로 인덱스 변환 맵핑을 수행할 수 있다. N개의 처리 엔진이 있으며, 태그 인덱스가 i인 패킷을 처리하는 i번째 처리 엔진은 j번째로 높은 입력 패킷 처리 부하를 가진다고 가정하자. 인덱스 변환부(150)는 최대의 균형을 위해서는 그 i번째 처리 엔진은 N-j번째로 높은 출력 패킷 처리 부하를 가지도록 인덱스 변환 맵핑을 수행할 수 있다. 이러한 방법을 통하면 입력 패킷 처리에서 가장 부하가 높은 처리 엔진은, 출력 패킷 처리에서는 가장 부하가 적어질 수 있다. 비슷하게, 입력 패킷 처리에서 두 번째로 부하가 높은 처리 엔진은, 출력 패킷 처리에서는 두 번째로 부하가 적어질 수 있다.
도 2는 본 발명의 일 실시예에 따른 처리 엔진 정보 테이블의 구성을 나타내는 도면이다.
도 1 및 도 2를 참조하면, 복수 개의 처리 엔진(130, 131, 132, 133)의 부하에 기반한 인덱스 변환을 위해서 처리 엔진 정보 테이블(140)이 이용된다. 처리 엔진 정보 테이블(140)은 처리 엔진별 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함할 수 있다. 따라서, 패킷 분산 처리 장치에 N개의 처리 엔진이 있는 경우, 처리 엔진 정보는 N개의 처리 엔진에 대한 부하 정보를 포함할 수 있다.
각 처리 엔진의 입력 패킷 처리 부하 및 출력 패킷 처리 부하는 주기적으로 갱신될 수 있다. 이를 위해, 도 1의 제1 태그 생성부(110)는 입력되는 패킷들의 태그 인덱스에 따라서 패킷들을 복수 개의 처리 엔진(130, 131, 132, 133)에 할당하면서, 일정 시간 동안 복수 개의 처리 엔진(130, 131, 132, 133) 각각의 입력 패킷 처리 부하를 주기적으로 측정하고, 측정된 입력 패킷 처리 부하에 대한 정보를 처리 엔진 정보 테이블(140)로 갱신할 수 있다. 또한, 인덱스 변환부(150)는 출력되는 패킷들의 태그 인덱스에 대한 인덱스 변환 맵핑을 수행하고, 그에 따라 패킷들을 복수 개의 처리 엔진(130, 131, 132, 133)에 할당하면서, 일정 시간 동안 복수 개의 처리 엔진(130, 131, 132, 133) 각각의 출력 패킷 처리 부하를 주기적으로 측정하고, 측정된 출력 패킷 처리 부하에 대한 정보를 처리 엔진 정보 테이블(140)로 갱신할 수 있다.
다른 방법으로, 복수 개의 처리 엔진(130, 131, 132, 133)이 각각 자신이 처리한 패킷 수를 카운트하여, 처리 엔진 정보 테이블(140)의 자신의 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 갱신할 수 있다.
또한, 처리 엔진 정보 테이블(140)의 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보 중 적어도 하나가 갱신되면, 인덱스 변환부(150)는 처리 엔진 정보 테이블(140)의 정보를 이용하여, 출력 패킷의 태그 인덱스를 처리 엔진 인덱스로 변환하는 정보를 변경하는 인덱스 변환 맵핑을 다시 수행하여, 출력 패킷의 태그 인덱스에 맵핑된 처리 엔진 인덱스를 변경할 필요가 있는지 결정할 수 있다. 예를 들어, 인덱스 변환부(150)는 입력 패킷 처리 부하 정보 및 출력 패킷 부하 정보를 이용하여 처리 엔진별 부하를 계산하고, 계산된 부하가 과부하로 결정되는 기준값과 비교하여 인덱스 변환 맵핑을 다시 설정할 필요가 있는지 결정할 수 있다. 여기에서, 과부하로 결정되는 기준값은 처리 엔진별로 다르게 설정될 수 있다.
복수 개의 처리 엔진(130, 131, 132, 133)에 부하 불균형의 정도 또는, 특정 처리 엔진에 과부하가 걸려있다는 것을 판단하기 위해서는 전술한 미리 설정된 절대적 기준값을 이용하는 방법 이외에 다양한 방법이 이용될 수 있다. 예를 들어, 부하가 높은 처리 엔진의 부하와 부하가 낮은 처리 엔진의 부하의 비율과 같은 상대적 기준값이 이용될 수도 있다.
또한, 인덱스 변환부(150)는 출력 패킷의 태그 인덱스를 처리 엔진 인덱스로 변환하는 정보를 변경하기 위한 인덱스 변환 맵핑을 주기적으로 수행할 수도 있다. 인덱스 변환부(150)가 인덱스 변환 맵핑을 수행하는 주기는 구현예에 따라 다양할 수 있다. 인덱스 변환부(150)는 인덱스 변환 맵핑을 수행하는 주기를 줄여서 더 정밀하게 복수 개의 처리 엔진(130, 131, 132, 133)의 부하를 균형있게 분산할 수 있다. 그러나, 인덱스 변환부(150)는 큰 시간 척도에서의 부하 불균형을 해결하기 위한 점을 고려하여, 코어스 타이머(coarse timer)를 이용하여, 예를 들어, 수 초 주기로 인덱스 변환 맵핑을 수행하도록 할 수 있다. 또한, 자주 업데이트함으로 인해 생기는 성능 저하가 큰 문제가 아닌 경우에는, 인덱스 변환부(150)는 더 작은 주기의 타이머를 이용해 자주 부하를 균형 맞출 수 있다.
이하에서는, 도 1과 같은 플로우 분산 처리 장치(100)에서 입력 처리 부하 정보 및 출력 처리 부하 정보로 PPM(Packet per minute)이 이용되고, 각 처리 엔진(130, 131, 132, 133)이 자신이 처리한 입력 및 출력 패킷의 수를 카운트하고 있다가, 처리 엔진 정보 테이블(140)에 관련 필드를 갱신하는 경우, 플로우 분산 처리 장치(100)의 동작에 대해 설명한다.
플로우 분산 처리 장치(100)가 처음 시동될 때에는, 인덱스 변환 맵핑 테이블에는 태그 인덱스가 처리 엔진 인덱스로 사용되도록 설정될 수 있다. 이러한 인덱스 변환 맵핑 테이블의 상태는 표 1과 같이 나타낼 수 있다.
[표 1]
Figure pat00001
이 상황에서, 1분 동안, 플로우 분산 처리 장치(100)에 입력 처리를 위해 도착된 패킷의 태그 인덱스별 입력 패킷의 수가 표 2와 같다고 가정한다.
[표 2]
Figure pat00002
또한, 이와 동시에, 플로우 분산 처리 장치(100)에 출력 처리를 위해 도착된 패킷의 태그 인덱스별 출력 패킷의 수가 표 3과 같다고 가정한다.
[표 3]
Figure pat00003
입력 패킷 수 및 출력 패킷 수로 표현되는 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보는 즉, 표 2 및 표 3의 정보는, 처리 엔진 정보 테이블(140)에 1분마다 갱신될 수 있다. 이를 위해, 각 처리 엔진은 패킷이 입력될 때마다 수를 증가시키는 레지스터를 포함하고, 레지스터는 패킷의 수가 카운트되다가 1분 단위로 처리 엔진 정보 테이블(140)에 업데이트된 후 각 레지스터가 리셋되도록 동작할 수 있다.
입력 패킷에 대한 태그 인덱스는 그대로 처리 엔진 인덱스로 이용되고, 출력 패킷에 대한 태그 인덱스에 매핑된 처리 엔진 인덱스도 초기 설정에 따라 동일한 상태이므로, 즉, 태그 인덱스=처리 엔진 인덱스인 상태에서, 각 처리 엔진별로 1분동안 처리한 패킷의 수는 표 4와 같다.
[표 4]
Figure pat00004
이와 같이, 처리 엔진 정보 테이블(140)에 입력 패킷 처리 부하 정보 및 출력 패킷 부하 정보가 갱신된 경우, 인덱스 변환부(150)는 1분마다 처리 엔진 테이블(140)을 검사하여, 처리 엔진들에 부하 불균형이 있는지 검사할 수 있다.
복수 개의 처리 엔진들 중 어느 하나 이상의 처리 엔진의 부하가 400PPM이 넘으면, 과부하라고 결정된다고 가정한다. 이 경우, 처리 엔진 2가 과부하 상태인 것으로 결정될 수 있다. 따라서, 인덱스 변환부(150)는 인덱스 변환 맵핑을 계산한다.
각 처리 엔진 인덱스에 대한 입력 패킷 수를 내림차순으로 정리하면, 표 5와 같이 나타낼 수 있다.
[표 5]
Figure pat00005
또한, 각 처리 엔진 인덱스에 대한 출력 패킷 수를 올림차순으로 정리하면, 표 6과 같이 나타낼 수 있다.
[표 6]
Figure pat00006
따라서, 인덱스 변환부(150)는 표 5 및 표 6과 같은 정보를 이용하여, 부하를 가장 균형적으로 분배하기 위하여 표 7과 같은 인덱스 변환 맵핑 정보를 생성할 수 있다.
[표 7]
Figure pat00007
인덱스 변환 맵핑이 수행된 후, 다음 1분 동안 플로우 분산 처리 장치(100)에서, 입력 처리를 위해 도착된 입력 패킷 수가 표 8과 같다고 가정한다.
[표 8]
Figure pat00008
이와 동시에, 패킷 분산 처리 장치(100)에서, 출력 처리를 위해 도착된 출력 패킷 수가 표 9와 같다고 가정한다.
[표 9]
Figure pat00009
인덱스 변환 맵핑 정보에 따라 처리 엔진별 부하를 계산하면, 표 10과 같이 부하가 분산된다.
[표 10]
Figure pat00010
표 10의 정보를, 인덱스 변환이 변하지 않은 경우의 처리 엔진별 부하를 나타내는 표 11과 비교하면, 부하가 고르게 분산되었음이 명확하다.
Figure pat00011
여기에서는, 설명의 편의를 위하여, 처리 엔진의 부하를 입력 패킷 수 및 출력 패킷 수를 단순히 더한 정보를 이용하였으나, 처리 엔진의 부하는 다른 다양한 방법을 이용하여 결정될 수 있다. 예를 들어, 하나의 패킷을 처리하는데 입력 처리에는 출력 처리부다 2배의 시간(또는 부하)가 걸리는 경우, 2×(입력 패킷 수) + 1×(출력 패킷 수)와 같이 가중치를 이용하여 처리 엔진의 부하가 계산될 수도 있다. 본 발명은 데이터 트래픽이 어느 정도 지속성(persistance)을 가지고 있으며, 입력 패킷 수의 규모와 출력 패킷 수의 규모가 큰 차이가 나지 않는 TCP(transmission control traffic) 트래픽 데이터의 처리시에 유용하게 이용될 수 있다.
도 3은 도 1의 인덱스 변환부(150)의 구성의 일 예를 나타내는 도면이다.
인덱스 변환부(150)는 인덱스 변환 맵핑 계산부(310), 인덱스 변환 맵핑 정보 저장부(320) 및 패킷 할당부(330)를 포함할 수 있다.
인덱스 변환 맵핑 계산부(310)는 복수 개의 처리 엔진(130, 131, 132, 133) 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블(140)을 참조하여, 복수 개의 처리 엔진(130, 131, 132, 133)의 부하가 분산되도록, 입력 패킷 및 출력 패킷 중 하나의 패킷에 대한 태그 인덱스를 처리 엔진 인덱스에 변환하기 위한 인덱스 변환 맵핑 정보를 계산한다.
인덱스 변환 맵핑 정보 저장부(320)는 계산된 인덱스 변환 맵핑 정보에 따른 인덱스 변환 맵핑 정보를 테이블 형식으로 저장할 수 있다. 일 예로, 인덱스 변환 맵핑 정보는 복수 개의 처리 인덱스별로 매핑된, 입력 패킷의 태그 인덱스로 구성될 수 있다. 다른 예로, 인덱스 변환 맵핑 정보는 복수 개의 처리 인덱스별로 매핑된, 출력 패킷의 태그 인덱스로 구성될 수 있다. 도 4에는, 인덱스 변환 맵핑 정보 저장부(320)가 인덱스 변환부(330)에 포함된 것으로 도시되어 있으나, 인덱스 변환 맵핑 정보 저장부(320)는 패킷 분산 처리 장치의 다른 구성요소에 포함될 수 있으며, 별도의 메모리에 저장될 수도 있다.
인덱스 변환 맵핑 계산부(310)는, 복수 개의 처리 엔진(130, 131, 132, 133) 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블(140)이 갱신되는 경우, 갱신된 처리 엔진 정보 테이블(140)에 포함된 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여, 상기 복수 개의 처리 엔진별 부하 정보를 계산할 수 있다. 처리 엔진별 부하 정보 중 적어도 하나가 미리 설정된 기준치를 초과하는 경우, 인덱스 변환 맵핑 계산부(310)는 패킷의 태그 인덱스를 해당 패킷이 할당될 처리 엔진 인덱스로 변환하는 정보를 나타내는 인덱스 변환 맵핑 정보를 다시 계산할 수 있다. 인덱스 변환 맵핑 계산부(310)는, 계산된 인덱스 변환 맵핑 정보를 인덱스 변환 맵핑 정보 저장부(320)에 갱신하여 저장할 수 있다.
인덱스 변환부(150)가 도 1에 도시된 바와 같이 출력 패킷을 처리하는 경로에 연결되고, 인덱스 변환 맵핑 계산부(310)는 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 입력 패킷의 처리 부하를 가지는 경우, 인덱스 변환부는 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 출력 패킷 처리 부하를 가지도록 인덱스 변환 맵핑을 수행할 수 있다. 한편, 인덱스 변환부(150)가 입력 패킷을 처리하는 경로에 연결되고, 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 출력 패킷의 처리 부하를 가지는 경우, 인덱스 변환 맵핑 계산부(310)는 인덱스 변환부는 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 입력 패킷 처리 부하를 가지도록 인덱스 변환 맵핑을 수행할 수 있다.
패킷 할당부(330)는 계산된 인덱스 변환 맵핑 정보에 따라 입력 패킷 및 출력 패킷 중 어느 하나의 패킷을 하나의 처리 엔진 인덱스로 변환하고, 인덱스 변환부(150)에 의해 변환된 처리 엔진 인덱스를 가지는 처리 엔진으로 그 패킷을 할당할 수 있다. 인덱스 변환부(150) 및 패킷 할당부(130)는 인덱스 변환 맵핑에 따라 패킷을 할당하기 위하여 하드웨어 크로스바 스위치로 구현될 수 있다.
도 4는 본 발명의 일 실시예에 따른 패킷 분산 처리 방법을 나타내는 순서도이다.
복수 개의 처리 엔진을 이용하여 입력 패킷 및 출력 패킷의 분산 처리하기 위하여, 복수 개의 처리 엔진의 입력 패킷 및 출력 패킷에 대한 패킷 처리 부하가 분산되도록, 입력 패킷 및 출력 패킷 중 하나의 패킷에 대한 태그 인덱스를 처리 엔진 인덱스로 변환한다(410). 입력 패킷 및 출력 패킷 중 하나의 패킷에 대한 태그 인덱스를 처리 엔진 인덱스로 변환하기 위해서, 입력 패킷 및 출력 패킷 중 하나의 패킷에 대한 태그 인덱스를 처리 엔진 인덱스로 변환하기 위한 정보를 포함하는 인덱스 맵핑 변환 정보가 이용될 수 있다.
입력 패킷 및 출력 패킷 중 하나의 패킷을 변환된 처리 엔진 인덱스를 가지는 처리 엔진에 할당한다(420).
도 5는 본 발명의 일 실시예에 따른 인덱스 변환 맵핑 테이블의 갱신 과정을 나타내는 순서도이다.
복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블이 갱신된다(510). 갱신된 처리 엔진 정보 테이블의 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여 계산된 처리 엔진별 부하 중 적어도 하나가 기준치를 초과하는지는 결정한다(520).
처리 엔진별 부하 중 적어도 하나가 기준치를 초과하는 경우(520), 갱신된 처리 엔진 정보 테이블을 참조하여 인덱스 변환 맵핑 정보를 계산한다(530).
계산된 인덱스 변환 맵핑 정보를 인덱스 변환 맵핑 테이블에 갱신한다(540).
이후에, 갱신된 인덱스 변환 맵핑 테이블의 인덱스 변환 맵핑 정보에 따라 입력 패킷 및 출력 패킷 중 하나의 태그 인덱스가 처리 엔진 인덱스로 변환될 수 있으며, 해당 패킷의 처리 엔진 인덱스를 가지는 처리 엔진에 할당될 수 있다.
본 발명의 패킷 분산 처리 방법 및 인덱스 변환 맵핑 테이블의 갱신 방법은 라우터 등의 네트워크 장치에서, 네트워크 프로세서, ASIC(Application Specific Integrated Circuit), FPGA(Field-Programmable Gate Array) 등으로 구현될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
110: 제1 태그 생성부 120: 제2 태그 생성부
130, 131, 132, 133: 처리 엔진 140: 처리 엔진 정보 테이블
150: 인덱스 변환부

Claims (20)

  1. 할당된 패킷을 처리하는 복수 개의 처리 엔진;
    상기 복수 개의 처리 엔진 중, 입력 패킷에 대한 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 입력 패킷을 할당하는 제1 태그 생성부;
    출력 패킷에 대한 태그 인덱스를 계산하는 제2 태그 생성부;
    상기 복수 개의 처리 엔진의 부하가 분산되도록, 상기 출력 패킷에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 상기 출력 패킷을 상기 변환된 하나의 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 인덱스 변환부를 포함하는 패킷 분산 처리 장치.
  2. 제1항에 있어서,
    상기 복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블을 더 포함하고,
    상기 인덱스 변환부는, 상기 처리 엔진 정보 테이블을 참조하여, 상기 복수 개의 처리 엔진의 부하가 분산되도록, 출력 패킷의 태그 인덱스에 대한 처리 엔진 인덱스를 매핑한 인덱스 변환 맵핑 정보를 계산하고, 상기 계산된 인덱스 변환 맵핑 정보를 이용하여, 상기 출력 패킷에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하는 패킷 분산 처리 장치.
  3. 제2항에 있어서,
    상기 제1 태그 생성부는, 상기 복수 개의 처리 엔진에 대한 입력 패킷 처리 부하를 측정하고, 상기 측정된 입력 패킷 처리 부하의 정보를 상기 처리 엔진 정보 테이블의 상기 입력 패킷 처리 부하 정보에 갱신하고,
    상기 인덱스 변환부는, 상기 복수 개의 처리 엔진에 대한 출력 패킷 처리 부하를 측정하고, 상기 측정된 출력 패킷 처리 부하의 정보를 상기 처리 엔진 정보 테이블의 상기 출력 패킷 처리 부하 정보에 갱신하는 패킷 분산 처리 장치.
  4. 제3항에 있어서,
    상기 처리 엔진 정보 테이블이 갱신되면, 상기 인덱스 변환부는 상기 갱신된 처리 엔진 정보 테이블을 참조하여, 상기 복수 개의 처리 엔진의 부하가 분산되도록, 상기 인덱스 변환 맵핑 정보를 변경하는 인덱스 변환 맵핑을 수행하는 패킷 분산 처리 장치.
  5. 제3항에 있어서,
    상기 처리 엔진 정보 테이블이 갱신되면, 상기 인덱스 변환부는 상기 갱신된 처리 엔진 정보 테이블에 포함된 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여, 상기 복수 개의 처리 엔진별 부하 정보를 계산하고, 상기 처리 엔진별 부하 정보 중 적어도 하나가 미리 설정된 기준치를 초과하는 경우, 상기 갱신된 처리 엔진 정보 테이블을 참조하여 출력 패킷의 태그 인덱스를 상기 처리 엔진 인덱스로 변환하는 정보를 변경하는 인덱스 변환 맵핑을 수행하는 패킷 분산 처리 장치.
  6. 제1항에 있어서,
    상기 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 입력 패킷 처리 부하를 가지는 경우, 상기 인덱스 변환부는 상기 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 출력 패킷 처리 부하를 가지도록 인덱스 변환 맵핑을 수행하는 패킷 분산 처리 장치.
  7. 할당된 패킷을 처리하는 복수 개의 처리 엔진;
    상기 복수 개의 처리 엔진 중, 출력 패킷에 대한 태그 인덱스에 대응하는 처리 엔진 인덱스를 가지는 처리 엔진에 상기 출력 패킷을 할당하는 제1 태그 생성부;
    입력 패킷에 대한 태그 인덱스를 계산하는 제2 태그 생성부;
    상기 복수 개의 처리 엔진의 부하가 분산되도록, 상기 입력 패킷에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하고, 상기 입력 패킷을 상기 변환된 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 인덱스 변환부를 포함하는 패킷 분산 처리 장치.
  8. 제7항에 있어서,
    상기 복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블을 더 포함하고,
    상기 인덱스 변환부는, 상기 처리 엔진 정보 테이블을 참조하여, 상기 복수 개의 처리 엔진의 부하가 분산되도록, 입력 패킷의 태그 인덱스에 대한 처리 엔진 인덱스를 매핑한 인덱스 변환 맵핑 정보를 계산하고, 상기 계산된 인덱스 변환 맵핑 정보를 이용하여, 상기 입력 패킷에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스 중 하나의 처리 엔진 인덱스로 변환하는 패킷 분산 처리 장치.
  9. 제8항에 있어서,
    상기 제1 태그 생성부는, 상기 복수 개의 처리 엔진에 대한 출력 패킷 처리 부하를 측정하고, 상기 측정된 출력 패킷 처리 부하의 정보를 상기 처리 엔진 정보 테이블의 상기 출력 패킷 처리 부하 정보에 갱신하고,
    상기 인덱스 변환부는, 상기 복수 개의 처리 엔진에 대한 입력 패킷 처리 부하를 측정하고, 상기 측정된 입력 패킷 처리 부하의 정보를 상기 처리 엔진 정보 테이블의 상기 입력 패킷 처리 부하 정보에 갱신하는 패킷 분산 처리 장치.
  10. 제9항에 있어서,
    상기 처리 엔진 정보 테이블이 갱신되면, 상기 인덱스 변환부는 상기 갱신된 처리 엔진 정보 테이블을 참조하여, 상기 인덱스 변환 맵핑 정보를 변경하는 인덱스 변환 맵핑을 다시 수행하는 패킷 분산 처리 장치.
  11. 제9항에 있어서,
    상기 처리 엔진 정보 테이블이 갱신되면, 상기 인덱스 변환부는 상기 갱신된 처리 엔진 정보 테이블에 포함된 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여, 상기 복수 개의 처리 엔진별 부하 정보를 계산하고, 상기 처리 엔진별 부하 정보 중 적어도 하나가 미리 설정된 기준치를 초과하는 경우, 상기 갱신된 처리 엔진 정보 테이블을 참조하여 상기 인덱스 변환 맵핑 정보를 변경하는 인덱스 변환 맵핑을 수행하는 패킷 분산 처리 장치.
  12. 제7항에 있어서,
    상기 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 출력 패킷 처리 부하를 가지는 경우, 상기 인덱스 변환부는 상기 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 입력 패킷 처리 부하를 가지도록 인덱스 변환 맵핑을 수행하는 패킷 분산 처리 장치.
  13. 복수 개의 처리 엔진을 이용하여 입력 패킷 및 출력 패킷을 분산 처리하는 방법으로서,
    상기 복수 개의 처리 엔진의 상기 입력 패킷 및 출력 패킷에 대한 패킷 처리 부하가 분산되도록, 상기 입력 패킷 및 상기 출력 패킷 중 하나에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 인덱스 중 하나의 처리 엔진 인덱스로 변환하는 단계; 및
    상기 입력 패킷 및 상기 출력 패킷 중 하나를 상기 하나의 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 단계를 포함하는 패킷 분산 처리 방법.
  14. 제13항에 있어서,
    복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블을 갱신하는 단계를 더 포함하는 패킷 분산 처리 방법.
  15. 제14항에 있어서,
    복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블이 갱신되는 경우,
    상기 갱신된 처리 엔진 정보 테이블에 포함된 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여, 상기 복수 개의 처리 엔진별 부하 정보를 계산하는 단계;
    상기 처리 엔진별 부하 정보 중 적어도 하나가 미리 설정된 기준치를 초과하는 경우, 상기 입력 패킷 및 상기 출력 패킷 중 하나에 대한 태그 인덱스를 상기 처리 엔진 인덱스로 변환하기 위한 인덱스 변환 매핑 정보를 갱신하는 단계; 및
    상기 갱신된 인덱스 변환 맵핑 정보를 이용하여, 상기 입력 패킷 및 상기 출력 패킷 중 하나에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 인덱스 중 하나의 처리 엔진 인덱스로 변환하는 단계를 더 포함하는 패킷 분산 처리 방법.
  16. 제15항에 있어서,
    상기 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 입력 패킷 처리 부하를 가지는 경우,
    상기 인덱스 변환 매핑 정보를 갱신하는 단계는,
    상기 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 출력 패킷 처리 부하를 가지도록 상기 인덱스 변환 맵핑 정보를 갱신하는 단계를 포함하는 패킷 분산 처리 방법.
  17. 복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블을 참조하여, 복수 개의 처리 엔진의 부하가 분산되도록, 상기 입력 패킷 및 상기 출력 패킷 중 어느 하나의 패킷에 대한 태그 인덱스를 상기 복수 개의 처리 엔진에 대한 복수 개의 처리 엔진 인덱스로 변환하기 위한 인덱스 변환 맵핑 정보를 계산하는 인덱스 변환 맵핑 계산부; 및
    상기 계산된 인덱스 변환 맵핑 정보에 따라 상기 하나의 패킷을 하나의 처리 엔진 인덱스로 변환하고, 상기 하나의 패킷을 상기 처리 엔진 인덱스를 가지는 처리 엔진에 할당하는 패킷 할당부를 포함하는 패킷 분산 처리 장치.
  18. 제17항에 있어서,
    상기 인덱스 변환 맵핑 정보를 저장하는 인덱스 변환 맵핑 테이블을 더 포함하는 패킷 분산 처리 장치.
  19. 제17항에 있어서,
    상기 인덱스 변환 맵핑 계산부는, 상기 복수 개의 처리 엔진 각각에 대한 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 포함하는 처리 엔진 정보 테이블이 갱신되는 경우, 상기 갱신된 처리 엔진 정보 테이블에 포함된 입력 패킷 처리 부하 정보 및 출력 패킷 처리 부하 정보를 이용하여, 상기 복수 개의 처리 엔진별 부하 정보를 계산하고, 상기 처리 엔진별 부하 정보 중 적어도 하나가 미리 설정된 기준치를 초과하는 경우, 상기 인덱스 변환 매핑 정보를 다시 계산하는 패킷 분산 처리 장치.
  20. 제17항에 있어서,
    상기 인덱스 변환 맵핑 계산부는, 상기 복수 개의 처리 엔진이 N개의 있으며, i번째 처리 엔진이 j번째로 높은 제1 패킷의 처리 부하를 가지는 경우, 상기 인덱스 변환부는 상기 i번째 처리 엔진의 처리 엔진 인덱스가 N-j번째로 높은 제2 패킷 처리 부하를 가지도록 인덱스 변환 맵핑 정보를 계산하고,
    상기 제1 패킷이 입력 패킷인 경우 상기 제2 패킷은 출력 패킷이고, 상기 제1 패킷이 출력 패킷인 경우 상기 제2 패킷은 입력 패킷인 패킷 분산 처리 장치.
KR1020100127001A 2010-12-13 2010-12-13 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법 KR20120065724A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100127001A KR20120065724A (ko) 2010-12-13 2010-12-13 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법
US13/323,178 US8885646B2 (en) 2010-12-13 2011-12-12 Apparatus and method for balancing load across multiple packet processing engines

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100127001A KR20120065724A (ko) 2010-12-13 2010-12-13 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20120065724A true KR20120065724A (ko) 2012-06-21

Family

ID=46199344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100127001A KR20120065724A (ko) 2010-12-13 2010-12-13 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US8885646B2 (ko)
KR (1) KR20120065724A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103220217B (zh) * 2013-04-27 2016-05-04 杭州华三通信技术有限公司 一种路由生成方法和设备
CN107733805B (zh) * 2016-08-12 2021-04-16 腾讯科技(深圳)有限公司 业务负载调度方法和装置
US10656960B2 (en) * 2017-12-01 2020-05-19 At&T Intellectual Property I, L.P. Flow management and flow modeling in network clouds
US11523002B2 (en) * 2020-01-31 2022-12-06 Charter Communications Operating, Llc Dynamic bandwidth service limits

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6853638B2 (en) 1998-04-01 2005-02-08 Cisco Technology, Inc. Route/service processor scalability via flow-based distribution of traffic
US6854117B1 (en) 2000-10-31 2005-02-08 Caspian Networks, Inc. Parallel network processor array
US7073118B2 (en) * 2001-09-17 2006-07-04 Digeo, Inc. Apparatus and method for saturating decoder values
US7382782B1 (en) * 2002-04-12 2008-06-03 Juniper Networks, Inc. Packet spraying for load balancing across multiple packet processors
US7639674B2 (en) * 2004-10-25 2009-12-29 Alcatel Lucent Internal load balancing in a data switch using distributed network processing
JP4919608B2 (ja) * 2005-03-02 2012-04-18 株式会社日立製作所 パケット転送装置

Also Published As

Publication number Publication date
US8885646B2 (en) 2014-11-11
US20120147891A1 (en) 2012-06-14

Similar Documents

Publication Publication Date Title
US8355328B2 (en) Dynamic load balancing
US10116579B2 (en) Method and system for queue management in a packet-switched network
Bourguiba et al. Improving network I/O virtualization for cloud computing
US6625161B1 (en) Adaptive inverse multiplexing method and system
US20140025823A1 (en) Methods for managing contended resource utilization in a multiprocessor architecture and devices thereof
CN106302227B (zh) 混合网络流调度方法和交换机
US8320247B2 (en) Dynamic queue management
US20160036689A1 (en) Method and apparatus for reducing response time in information-centric networks
CN104067578A (zh) 无分组重排序的动态负载均衡
US10063478B2 (en) Switching device and control method of switching device
KR20120065724A (ko) 다수 패킷 처리 엔진에서의 부하 분산을 위한 패킷 분산 처리 장치 및 방법
CN108632159A (zh) 一种基于预测的网络业务流量负载均衡方法
EP3001883A2 (en) Systems and methods for traffic engineering in software defined networks
KR101448413B1 (ko) Atca-기반 장비에서 통신 트래픽을 스케줄링하기 위한 방법 및 장치
Prakash et al. Server-based dynamic load balancing
Raumer et al. Performance exploration of software-based packet processing systems
Addanki et al. Controlling software router resource sharing by fair packet dropping
CN115174583B (zh) 基于可编程数据平面的服务器负载均衡方法
Oeldemann et al. Inter-server RSS: Extending receive side scaling for inter-server workload distribution
Kang et al. Efficient traffic splitting on sdn switches
Guo et al. A QoS aware multicore hash scheduler for network applications
Jereczek et al. A lossless switch for data acquisition networks
Biersack et al. Priority-aware inter-server receive side scaling
JP2019009630A (ja) ネットワーク負荷分散装置および方法
Nemeth et al. The limits of architectural abstraction in network function virtualization

Legal Events

Date Code Title Description
SUBM Surrender of laid-open application requested