KR101371858B1 - 복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스 - Google Patents

복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스 Download PDF

Info

Publication number
KR101371858B1
KR101371858B1 KR1020127018496A KR20127018496A KR101371858B1 KR 101371858 B1 KR101371858 B1 KR 101371858B1 KR 1020127018496 A KR1020127018496 A KR 1020127018496A KR 20127018496 A KR20127018496 A KR 20127018496A KR 101371858 B1 KR101371858 B1 KR 101371858B1
Authority
KR
South Korea
Prior art keywords
sub
data packet
hash
tag
engines
Prior art date
Application number
KR1020127018496A
Other languages
English (en)
Other versions
KR20120112568A (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 알까뗄 루슨트
Publication of KR20120112568A publication Critical patent/KR20120112568A/ko
Application granted granted Critical
Publication of KR101371858B1 publication Critical patent/KR101371858B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/552Prevention, detection or correction of errors by ensuring the integrity of packets received through redundant connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • H04L49/309Header conversion, routing tables or routing tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Abstract

본 발명은 적어도 하나의 스위칭 디바이스(1)를 포함하는 패킷 교환 통신 네트워크에서 복수의 데이터 패킷들을 프로세싱하는 방법 및 대응하는 스위칭 디바이스에 관한 것이다. 스위칭 디바이스(1)는 2 개 이상의 서브-엔진들(21,..., 29)을 포함한다. 적어도 하나의 스위칭 디바이스(1)의 제어 유닛(7)은 통신 네트워크를 통해 교환되는 통신 패킷의 헤더(10)를 포함하는 데이터 패킷을 수신한다. 제어 유닛(7)은 적어도 하나의 필터 연산(50)을 헤더(10)에 적용하고, 이로써 필터링된 정보(100)를 생성한다. 제어 유닛(7)은 해시-함수(300)에 따라 필터링된 정보(100)를 해시-태그(30) 상에 맵핑한다. 제어 유닛(7)은 해시-태그(30)를 데이터 패킷의 헤더(10)에 삽입함으로써 태깅된 헤더(11)를 제공한다. 제어 유닛(7)은 데이터 패킷의 부가적인 프로세싱을 위해 상기 태깅된 헤더(11)에 따라 데이터 패킷을 2 개 이상의 서브-엔진들(21,..., 29) 중 하나의 서브-엔진(24)으로 전송한다.

Description

복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스{METHOD FOR PROCESSING A PLURALITY OF DATA AND SWITCHING DEVICE FOR SWITCHING COMMUNICATION PACKETS}
본 발명은 패킷 교환 통신 네트워크(packet switched communication network)에서 복수의 데이터 패킷들을 프로세싱하기 위한 방법 및 대응하는 스위칭 디바이스에 관한 것이다.
오늘날, 패킷 교환 통신 서비스들과 연관된 데이터 패킷들 및/또는 통신 패킷들은 수적으로 빠르게 증가하고 있다. 따라서, 패킷 교환 통신 네트워크들 상의 로드가 유사한 방식으로 증가하고 있다. 또한, 패킷 교환 통신 네트워크에 의해 지원되는 실시간 서비스들과 연관된 데이터 패킷들의 프랙션(fraction)이 또한 증가하고 있다. VoIP(Voice over IP) 서비스, 비디오 화상 회의 서비스들, 다중-사용자 온라인 게임 서비스들 등과 같은 실시간 서비스는 실시간 서비스와 연관된 데이터 패킷들의 정렬된 고속 전송 및 도착을 요구하는 시간 임계 서비스들이다(IP = Internet Protocol). 그러나, 스위치들, 브리지들, 라우터들, 게이트웨이들 등과 같은 스위칭 디바이스들은 세트로 되어 있는 데이터 패킷들을 소스 노드로부터 목적지 노드로 라우팅하는데 있어서 패킷 교환 통신 네트워크를 지원한다. 소스 및 목적지 노드는 패킷 교환 통신 네트워크에 속한다. 이로써, 스위칭 디바이스들의 로드(load)는 과도하게 증가할 수 있다. 부가적인 문제점으로서, 패킷 기반 실시간 서비스들의 QoS가 감소될 수 있다(QoS = Quality of Service).
따라서, 본 발명의 목적은 패킷 교환 통신 네트워크에서 복수의 데이터 패킷들을 프로세싱하기 위한 개선된 방법을 개선하는 것이다. 또한, 본 발명의 목적은 패킷 교환 통신 네트워크에서 통신 패킷들을 스위칭하기 위한 개선된 스위칭 디바이스를 제공하는 것이다.
본 발명의 목적은 적어도 하나의 스위칭 디바이스를 포함하는 패킷 교환 통신 네트워크에서 복수의 데이터 패킷들을 프로세싱하기 위한 방법에 의해 성취되고, 여기서 적어도 하나의 스위칭 디바이스의 제어 유닛은 상기 통신 네트워크를 통해 교환되는 통신 패킷의 헤더를 포함하는 데이터 패킷을 수신하고, 제어 유닛은 적어도 하나의 필터 연산을 헤더에 적용하고, 이로써 필터링된 정보를 생성하고, 제어 유닛은 해시-함수에 따라 필터링된 정보를 해시-태그 상에 맵핑하고, 제어 유닛은 해시-태그를 데이터 패킷의 헤더에 삽입함으로써 태깅된 헤더를 제공하고, 제어 유닛은 데이터 패킷의 부가적인 프로세싱을 위해 태깅된 헤더에 따라 데이터 패킷을 스위칭 디바이스의 2 개 이상의 서브-엔진들 중 하나의 서브-엔진으로 전송한다. 본 발명의 목적은 또한 패킷 교환 통신 네트워크에서 통신 패킷들을 스위칭하기 위한 스위칭 디바이스에 의해 성취되고, 여기서 스위칭 디바이스는 2 개 이상의 서브-엔진들 및 제어 유닛을 포함하고, 제어 유닛은 상기 통신 네트워크를 통해 교환되는 통신 패킷들 중 하나의 통신 패킷의 헤더를 포함하는 데이터 패킷을 수신하고, 적어도 하나의 필터 연산을 헤더에 적용하고, 이로써 필터링된 정보를 생성하고, 해시-함수에 따라 필터링된 정보를 해시-태그 상에 맵핑하고, 해시-태그를 데이터 패킷의 헤더에 삽입함으로써 태깅된 헤더를 제공하고, 데이터 패킷의 부가적인 프로세싱을 위해 태깅된 헤더에 따라 데이터 패킷을 2 개 이상의 서브-엔진들 중 하나의 서브-엔진으로 전송하도록 적응된다.
단어, 통신 패킷은 데이터 패킷이란 단어 대신에 동의어로 사용될 수 있다. 그러나, 일반적으로, 통신 패킷은 데이터 패킷과 연관된 통신 서비스의 데이터 패킷일 수 있다.
본 발명에 의해, 데이터 패킷의 콘텐츠 및/또는 데이터 패킷과 연관된 데이터 트래픽 흐름들의 명시적인 지식 없이 또는 완전한 지식 없이, 즉, 불완전한 지식을 갖고 부가적인 프로세싱을 위해 데이터 패킷들을 서브-엔진으로 전송하는 것이 가능하다. 데이터 패킷과 연관된 데이터 트래픽 흐름은 정렬된 엘리먼트들을 포함하는 5-튜플(tuple)에 의해 지정될 수 있고, 상기 엘리먼트들은 직렬 배열의 IP 소스 어드레스, IP 목적지 어드레스, IP 소스 포트, IP 목적지 포트, 및 전송 프로토콜의 타입이다. 특히, 데이터 패킷의 콘텐츠 및/또는 데이터 패킷과 연관된 데이터 트래픽 흐름들의 이러한 불완전한 지식이 임의의 어드레스 정보, 예를 들면, IP 소스 어드레스 또는 IP 목적지 어드레스, 프로토콜 식별자들, 또는 소스 또는 목적지 포트들과 같은 다른 IP 어드레스 관련 정보를 포함하지 않는 것이 가능하다. 해시-함수에 의해 맵핑된 필터링된 정보에 대응하는 해시-태그, 즉, 해시-값은 부가적인 프로세싱을 위한 서브-엔진을 표시하는 라벨 또는 식별자로서 사용되는 의사 난수(pseudo random number)일 수 있거나 이와 유사할 수 있다. 동일한 해시-태그와 연관된 데이터 패킷들은 부가적인 프로세싱을 위해 동일한 서브-엔진으로 전송될 수 있다. 이로써, 본 발명의 실시예들은 데이터 패킷의 헤더 및/또는 그의 콘텐츠에 따라 데이터 패킷의 부가적인 프로세싱, 예를 들면, 데이터 패킷의 스위칭 및/또는 라우팅을 위해 서브-엔진으로의 데이터 패킷들의 간단한 라우팅을 제공한다. 따라서, 본 발명의 실시예들은 기본적으로 2 개의 단계들로 분리되는 복수의 데이터 패킷들의 스위칭을 제공하고, 제 1 단계에서, 간단한 방식으로, 즉, 수치적으로 및 계산적으로 빠른 방식으로, 아마도, 수반되는 임의의 평가 없이, 어떠한 서브-엔진이 데이터 패킷의 스위칭을 수행하는지를 표시하는 해시-태그가 제공되고, 제 2 단계에서, 서브-엔진이 데이터 패킷의 스위칭을 수행한다. 특히, 본 발명의 실시예들은 상기 제 1 단계 동안에 데이터 패킷의 상태, 데이터 패킷과 연관된 시그널링 및/또는 프로토콜, 데이터 패킷과 연관된 어드레싱 및/또는 데이터 패킷과 연관된 데이터 트래픽 흐름을 알 수 없다.
통상적으로, 2 개 이상의 서브-엔진들은 병렬 프로세싱 컴퓨터 및/또는 네트워크 컴퓨팅 클러스터의 랙-장착 프로세싱 노드(rack-mounted processing node)와 같은 하나 이상의 프로세싱 코어들을 갖는 중앙 프로세싱 유닛일 수 있다. 또한, 서브-엔진이 대량 병렬 프로세싱 아키텍처(massive parallel processing architecture)의 프로세싱 유닛인 것이 가능하다. 예를 들면, 대량 병렬 프로세싱 아키텍처는 적어도 100 개의 프로세싱 코어들 및/또는 프로세싱 노드들, 바람직하게는 128 내지 1048576 개의 프로세싱 코어들 및/또는 프로세싱 노드들을 각각 갖는 대량 병렬 프로세서, 대량 병렬 컴퓨터 및/또는 병렬 컴퓨팅 클러스터이다. 20 비트들의 MPLS 태그에 의해 1048576 개까지의 프로세싱 코어들 및/또는 프로세싱 노드들을 어드레싱하는 것이 가능하고(MLPS = Multiprotocol Label Switching), 그러한 경우에, 20 비트들이 220=1048576 개의 상이한 어드레스들에 대응한다. 서브-엔진들은 데이터 패킷들의 부가적인 프로세싱을 위해 해시-태그 및/또는 데이터 패킷과 연관된 데이터를 포함하는 데이터 베이스에 접속될 수 있다. 본 발명에 따른 실시예들이 동일한 해시-태그와 연관되거나 및/또는 동일한 해시-태그로 라벨링된 데이터 패킷들을 동일한 서브-엔진으로 전송할 수 있기 때문에, 서브-엔진은 해시-태그 및/또는 프로세싱된 데이터 패킷 또는 데이터 패킷들과 연관된 데이터를 좀처럼 업데이트하지 않는다. 이로써, 데이터 베이스는 해시-태그 및/또는 프로세싱되는 데이터 패킷 또는 데이터 패킷들과 연관된 데이터를 업데이트하고, 바람직하게는 이를 제공하도록 좀처럼 액세스되지 않고, 바람직하게는 한 번만 액세스된다. 따라서, 본 발명의 실시예들은 2 개 이상의 서브-엔진들의 수에 관하여 개선된 확장성(scalability)을 제공한다.
이로써, 본 발명의 실시예들은, 높은 볼륨 트래픽, 즉, 데이터 트래픽 흐름이 처리되어야 하고, 확장성 관심사가 데이터 트래픽 흐름 인지와 같은 새로운 특징들의 도입 또는 시스템의 성장을 저해하는 경우에, 개선된 확장성을 제공할 수 있다.
본 발명의 실시예들은, 예를 들면, 대량 병렬 프로세싱 아키텍처에서 개별적인 프로세싱 코어 상의 로드 및 복잡성이 해싱 및/또는 스위칭 후에 이용 가능한 프로세싱 코어들의 총수에 의해 주어진 프랙션(fraction)으로 제한되는 것을 제공한다. 특히, 본 발명의 실시예들은 순수 로드 분포(pure load distribution), 개별적인 데이터 트래픽 흐름들의 개별적인 데이터 트래픽 흐름들의 상태 기반의 거동(stateful behavier)을 허용하는 로드 및 복잡성의 프로토콜 불가지론적 분포(protocol agnostic distribution), 및/또는 서브-엔진의 로드, 복잡성 및 기능적 범위의 감소에 대해 사용될 수 있다.
본 발명의 실시예가 서브-엔진의 로드, 복잡성 및 기능적 범위의 감소에 대해 사용되는 경우에, 실시예를 2 개 이상의 단계들로 캐스케이딩함으로써 그러한 사용이 성취될 수 있다. 제 1 단계는 다양한 기능들을 유도하는데 관련된 패킷 헤더들의 정보 엘리먼트들을 사용하여 해시-분포를 생성한다. 해시-함수는 해시-함수에 의해 생성된 분포일 수 있거나, 특수 해시-함수일 수 있다. 후속 단계는 한 그룹의 기능들에 속하는 흐름들을 다양한 서브-엔진들로 분배함으로써 확장성을 유지한다. "무엇"이 규정 및/또는 결정되기 전에, 헤더 구조들 내에서 핵심 정보가 "어디"에 있는지를 인지함으로써만 전용 서브-엔진들에 디스패치될 수 있는 데이터 트래픽 흐름들의 특수 처리로 인해, 그러한 사용은 애플리케이션 인에이블먼트(application enablement)가 네트워크 기어들(network gears)을 미래의 안전 아키텍처에 제공하는데 중요하다.
본 발명과 관련하여 단어, 해시-함수가 일반화된 의미로 함수로서 사용될 수 있다는 것이 이해될 수 있다.
바람직하게, 해시-함수는 하나 이상의 1 차원 또는 다중-차원 값들을 각각 해시-값들의 세트로 또는 해시 값들의 세트 상에 전사적으로(surjectively) 맵핑한다. 하나 이상의 1 차원 또는 다중-차원 값들은 또한 해시-함수의 입력 값들로 불릴 수 있다. 해시-함수는 주어진 입력 값을 해시-값들의 세트의 엘리먼트인 해시-값인 출력 값으로 맵핑한다. 단어, 해시-태그는 해시-함수의 출력 값에 대해 사용될 수 있다. 또한, 입력 값들의 세트의 원소수(cardinality)는 적어도 해시-값들의 세트 또는 출력 값들의 세트의 원소수만큼 많다.
제어 유닛이 2 개 이상의 서브-엔진들 중 한 서브-엔진인 것이 가능하다.
본 발명에 따른 스위칭 디바이스의 실시예들은, 바람직하게, 스위치들, 브리지들, 라우터들, 게이트웨이들, 코어 및/또는 에지 디바이스들 등을 포함한다.
부가적인 이점들은 종속항들에 의해 표시된 본 발명의 실시예들에 의해 성취된다.
본 발명의 바람직한 실시예에 따라, 헤더로부터 정보를 필터링하기 위한 적어도 하나의 필터링 연산이 제공될 수 있다. 바람직하게, 제어 유닛은 헤더로부터 정보를 필터링하기 위한 적어도 하나의 필터 연산을 제공한다. 적어도 하나의 필터 연산은 식별자를 필터링한다. 식별자는 복수의 데이터 패킷들과 연관된 하나 이상의 데이터 트래픽 흐름들 중 하나의 데이터 트래픽 흐름에 대한 데이터 패킷의 연관성을 표시한다. 해시-함수는 상기 식별자를 포함하는 필터링된 정보를 바람직하게는 자연수 k에 맵핑한다. 제어 유닛이 필터링된 정보를 맵핑하기 위한 해시-함수를 제공 및/또는 수행하는 것이 가능하다. 자연수 k는 자연수들의 간격 [m,..., M]의 엘리먼트이다. 자연수 m는 최소값이다. 바람직하게, 최소값 m = 1이다. M은 M < N 또는 M = N인 최대값이다. N은 2 개 이상의 서브-엔진들의 수이다. 특히, 최소값 m 및 최대값 M이 간격 [m,..., M] 내의 최소수 및 최대수인 것이 가능하다. 바람직하게, 간격 [m,..., M]의 원소수는, 태깅된 헤더에 따라 복수의 데이터 패킷들의 상이한 데이터 트래픽 흐름들과 연관된 데이터 패킷들을 2 개 이상의 서브-엔진들 중 상이한 서브-엔진들로 전송하기 위해 하나 이상의 데이터 트래픽 흐름들의 수보다 많거나 동일하다.
특히, 2 개 이상의 서브-엔진들이 넘버링, 인덱싱 및/또는 라벨링되어, 바람직하게는 수 1로 시작하고 2 개 이상의 서브-엔진들의 수인 수 N으로 종료되는 것이 가능한다. 이로써, 수 k를 포함하는 해시-태그는 부가적인 프로세싱을 위해 데이터 패킷이 어떠한 서브-엔진으로 전송되어야 하는지에 대한 정보로서 사용될 수 있다. 수 k는 필터링된 정보를 맵핑하기 위한 해시-함수에 의해 생성된다. 수, 인덱스 및/또는 라벨이 MPLS 태그 또는 VLAN 태그인 어드레스에 각각 대응하는 것이 가능하다(VLAN = Virtual Local Area Network). 해시-태그는 MPLS 태그 또는 VLAN 태그로서 사용될 수 있다.
바람직하게, 복수의 데이터 패킷들 중 데이터 패킷들은 하나 이상의 데이터 트래픽 흐름들에 할당된다. 제어 유닛은, 동일한 데이터 트래픽 흐름과 연관된 데이터 패킷의 부가적인 프로세싱을 위해 태깅된 헤더에 따라 하나 이상의 데이터 트래픽 흐름들 중 동일한 데이터 트래픽 흐름과 연관된 데이터 패킷들을 2 개 이상의 서브-엔진들 중 동일한 서브-엔진으로 전송할 수 있다. 적어도 하나의 필터 연산은, 헤더로부터 정보를 필터링하기 위해, 바람직하게는, 제어 유닛에 의해 생성된다. 적어도 하나의 필터 연산은 하나 이상의 데이터 트래픽 흐름들 중 데이터 트래픽 흐름에 대한 데이터 패킷의 연관성을 표시하는 식별자를 필터링하도록 적응될 수 있다.
본 발명의 바람직한 실시예에 따라, 서브-엔진은 수신된 데이터 패킷의 부가적인 프로세싱을 위해 제어 유닛으로부터 데이터 패킷을 수신한다. 서브-엔진은, 서브-엔진의 메모리가 수신된 데이터 패킷 및/또는 해시-태그와 연관된 데이터를 보유하지 않는 경우에 수신된 데이터 패킷의 부가적인 프로세싱을 위해 수신된 데이터 패킷 및/또는 해시-태그와 연관된 데이터를 보유하는 데이터 베이스를 액세스한다. 서브-엔진은 헤더, 수신된 데이터 패킷 및/또는 해시-태그와 연관된 데이터, 및/또는 수신된 데이터 패킷의 페이로드를 사용함으로써 수신된 데이터 패킷을 프로세싱한다.
서브-엔진이 수신된 데이터 패킷을 프로세싱하는데 필요한 데이터를 획득하기 위해 수신된 데이터 패킷 및/또는 해시-태그와 연관된 데이터를 보유하는 데이터 베이스를 액세스하는 것이 가능하다. 바람직하게, 서브-엔진은 서브-엔진이 해시-태그와 연관된 수신된 데이터 패킷을 프로세싱 또는 부가적으로 프로세싱할 때마다 또는 첫 번째에만 데이터 베이스를 액세스한다. 데이터 베이스가 첫 번째에만 액세스되는 경우에, 스위칭 디바이스의 서브-엔진들의 수를 통한 확장성이 개선되는 동시에, 네트워크 로드 및/또는 데이터 베이스 상의 로드가 감소될 수 있다.
본 발명의 바람직한 실시예에 따라, 서브-엔진은 수신된 데이터 패킷의 부가적인 프로세싱을 위해 제어 유닛으로부터 데이터 패킷을 수신한다. 서브-엔진은 태깅된 헤더로부터 해시-태그를 추출한다. 서브-엔진은, 서브-엔진이 수신된 데이터 패킷의 부가적인 프로세싱을 위해 지정된다는 것을 해시-태그가 표시하면 수신된 데이터 패킷을 프로세싱한다. 바람직하게, 해시-태그는 서브-엔진이 수신된 데이터 패킷의 부가적인 프로세싱을 위해 지정된다는 것을 수치적 수로 표시한다. 수치적 수가 2 개 이상의 서브-엔진들의 수보다 작거나 동일한 것이 가능하다.
본 발명의 바람직한 실시예에 따라, 필터링된 정보는 인터넷 프로토콜 소스 어드레스, 인터넷 프로토콜 목적지 어드레스, 인터넷 프로토콜 소스 포트, 인터넷 프로토콜 목적지 포트, 전송 프로토콜의 타입, 및 서비스 비트들의 타입(Type of Service Bits)의 그룹으로부터 선택된 하나 이상의 정보 엘리먼트들을 포함한다. 필터링된 정보가 인터넷 프로토콜 소스 어드레스, 인터넷 프로토콜 목적지 어드레스, 인터넷 프로토콜 소스 포트, 인터넷 프로토콜 목적지 포트, 및 서비스 비트들의 타입을 포함하는 5-튜플로 배열되는 것이 또한 가능하다.
바람직하게, 서비스 비트들의 타입은 IP 헤더 내에 8 개의 비트들을 포함한다. 서비스 비트들의 타입은 하나 이상의 서브-필드들로 분할될 수 있다. 이러한 서브-필드들은 선행 비트들(precedence bits), 요청 저지연 비트, 요청 고처리량 비트, 요청 고신뢰도 비트, 요청 저비용 비트 및/또는 명시적 폭주 통지 비트들(Explicit Congestion Notification bits)의 그룹의 하나 이상의 정보 엘리먼트들을 제공할 수 있다. 선행 비트들은 루틴, 우선 순위, 즉시(immediate), 플래시, 플래시 오버라이드, 임계, 인터네트워크 제어, 또는 네트워크 제어로 설정될 수 있다. 그러나, 8 개의 비트들 중 제 1의 6 개의 비트가 DSCP인 것이 또한 가능하다(DSCP = Differential Service Code Point). 서비스 비트들의 타입은 데이터 패킷이 할당될 수 있는 서비스 클래스들의 타입들을 식별하는데 사용될 수 있다.
본 발명의 바람직한 실시예에 따라, 해시-함수는 모듈로(modulo)-p 함수를 포함한다. 수 p는 p < N 또는 p = N 인 수이고, N은 2 개 이상의 서브-엔진들의 수이다. 수 p는 소수(prime number)일 수 있다. 수 p가 소수가 아닌 것이 또한 가능하다. 바람직하게, 수 p는 N에 대해 다음으로 더 작은 소수이다. N에 대해 다음으로 더 작은 소수인 수 p가 사용되면, 그후 프로세싱 로드는 2 개 이상의 서브-엔진들 사이에서 최적으로 분배될 수 있다. p < N이면, 하나 이상, 바람직하게는 N - p 개의 서브-엔진들이 데이터 패킷을 부가적으로 프로세싱하지 않는 것이 가능하다. 바람직하게는, p > N 인 경우들에서, 하나 이상, 바람직하게는 p - N 개의 서브-엔진들은 2 개 이상의 해시-태그들과 연관된 데이터 패킷들을 부가적으로 프로세싱한다.
해시-함수가 다항식 나눗셈(polynomial division)을 포함하는 함수인 것이 또한 가능하다. 해시-함수는 필터링된 정보의 크기, 특히 그의 비트-길이로 적응된다. 해시-함수는 CRC-함수일 수 있다(CRC = Cyclical Redundancy Check). 바람직하게, CRC-함수의 타입은 필터링된 정보의 크기, 특히, 그의 비트-길이에 의존한다. CRC-함수는 소프트웨어 수단 또는 하드웨어 수단에 의해 구현될 수 있다. 특히, CRC-함수는 고속 하드웨어 솔루션들에서 필터 연산의 큰 필터 결과들에 대한 해시-태그를 계산하는데 선호된다.
또한, 모듈로-p 함수가, 바람직하게는, 수 p로 나눗셈된 정수의 정수 나눗셈의 나머지를 결과로서 반환하는 수학적 함수인 것이 가능하다. 모듈로-p 함수는 임의의 정수 j를 간격 [0,..., p-1]의 수 k로 맵핑할 수 있다. 그러한 경우에, 모듈로-p 함수는 mod(j,p)로 표기될 수 있고, 여기서 결과 또는 반환값은 mod(j,p) = k로 주어지고, 간격 [0,..., p-1]의 원소수는 수 p와 동일하다. 이와 관련하여, 적절한 해시-함수 h는 h(j) = 1 + mod(j,p)로 주어질 수 있고, 왜냐하면, 2 개 이상의 서브-엔진들 중 제 1 서브-엔진이 수 1로 넘버링될 수 있기 때문이다. 바람직하게, 수 p는 수 N보다 작거나 동일하고, 왜냐하면 그렇지 않다면 모듈로-p 함수는 정수 j'를 2 개 이상의 서브-엔진들의 수 N보다 큰 수 k'로 맵핑할 수 있기 때문이고, 이로써 수 k'는 데이터 패킷의 부가적인 프로세싱을 위한 서브-엔진을 직접적으로 표시하는 해시-태그로서 적절하지 않을 것이다.
본 발명의 바람직한 실시예에 따라, 해시-함수는 필터링된 정보를 수 k로 맵핑하도록 적응된다. 수 k는 자연수들의 간격 [m,..., M]의 엘리먼트이다. 자연수 m는 최소값이다. 바람직하게, 최소값 m = 1이다. M은 M < N 또는 M = N인 최대값이고, N은 2 개 이상의 서브-엔진들의 수이다. 특히, 최소수 m 및 최대수 M가 각각 간격 [m,..., M] 내의 수들의 최소수 및 최대수인 것이 가능하다.
본 발명의 바람직한 실시예에 따라, 해시-함수는 해시-함수의 모든 값들이 해시-함수의 최소값과 최대값 사이에 동일하게 분포되는 그러한 방식으로 배열된다. 이로써, 2 개 이상의 서브-엔진들의 사용을 로드 밸런싱하는 것이 가능하다.
본 발명의 바람직한 실시예에 따라, 제어 유닛은 필터링된 정보를 생성하기 위해 연속적인 적용을 위한 2 개 이상의 필터 연산을 헤더에 적용하도록 적응된다. 2 개 이상의, 바람직하게는 간단한 필터 연산의 연속적인 적용은 필터링된 연산을 생성하기 위한 제어 유닛의 개선된 실행 시간을 제공할 수 있다. 2 개 이상의 필터 연산의 연속적인 적용은 단일의, 바람직하게는 복잡한 필터 연산으로 대체될 수 있다. 이와 관련하여 단어, '간단하다는 것'은 필터 연산이 감소된 양의 소프트웨어 및/또는 하드웨어 노력으로 실현 가능하다는 것을 의미하고, 반면에 이와 관련하여 단어, '복잡하다는 것'은 필터 연산이 대량의 소프트웨어 및/또는 하드웨어 노력으로 실현 가능하다는 것을 의미한다. 따라서, 2 개 이상의 간단한 필터 연산의 연속적인 적용이 2 개 이상의 간단한 필터 연산과 동등한 하나의 복잡한 필터 연산의 사용보다 필터링된 연산을 생성하기 위한 제어 유닛의 더 적은 실행 시간을 제공하는 것이 가능하다.
함수의 각각의 실행 시간을 측정함으로써, 함수, 예를 들면, 해시-함수, 필터 연산, 태그-스위치 및/또는 데이터 패킷의 스위칭과 같은 스위칭 연산의 소프트웨어 및/또는 하드웨어 노력의 양을 측정 또는 결정하는 것이 특히 가능하다. 대량의 함수의 소프트웨어 및/또는 하드웨어 노력은, 또 다른 함수의 실행 시간보다 많은 함수의 각각의 많은 실행 시간에 대응한다. 이러한 경우에, 다른 함수의 소프트웨어 및/또는 하드웨어 노력의 양은 함수의 실행 시간보다 더 짧은 각각의 다른 함수의 실행 시간에 대응하고, 다른 함수의 소프트웨어 및/또는 하드웨어 노력의 양은 감소된 소프트웨어 및/또는 하드웨어 노력의 양이다. 예를 들면, 함수, 예를 들면, 해시-함수, 필터 연산, 태그-스위치 및/또는 데이터 패킷의 스위칭과 같은 스위칭 연산의 소프트웨어 및/또는 하드웨어 노력의 양이 미리 결정되는 경우에, 스위칭 디바이스의 확장성 및/또는 데이터 패킷 처리량 또는 대역폭을 최적화 및/또는 개선하는 것이 가능하다.
바람직하게, 필터링된 정보를 생성하기 위해 헤더에 대한 연속적인 적용을 위한 2 개 이상의 필터 연산이 제어 유닛에 의해 적용되는 경우에, 제어 유닛은 필터링된 정보의 하나 이상의 엘리먼트들을 생성하도록 적응된다. 2 개 이상의 필터 연산 각각에 대해, 필터링된 정보의 각각의 엘리먼트가 생성되는 것이 가능하다. 제어 유닛은 하나 이상의 중간 해시-함수들을 필터링된 정보의 엘리먼트들 중 하나 이상의 엘리먼트들 또는 필터링된 정보의 엘리먼트들 각각에 적용하도록 적응된다. 이로써, 이러한 하나 이상의 중간 해시-함수들의 결과는 또한 생성된 필터링된 정보 또는 생성된 필터링된 정보의 부분으로서 간주될 수 있다. 그후, 해시-함수는 생성된 필터링된 정보 및/또는 생성된 필터링된 정보의 부분에 적용된다. 하나 이상의 중간 해시-함수들은 해시-함수와 유사할 수 있다. 바람직하게, 하나 이상의 중간 해시-함수들은 모듈로-p 함수들이고 및/또는 해시-함수와 동일하거나 유사한 특징들을 가질 수 있다. 해시-함수의 특징들은 이전에 기재되었다. 하나 이상의 중간 해시-함수들은 또한 2 개 이상의 필터 연산 및/또는 필터 연산의 기능으로서 이해될 수 있다. 또한, 하나 이상의 중간 해시-함수들이 CRC-함수들인 것이 가능하다.
바람직하게, 서브-엔진들의 수가 해시-함수에 의해 실현되는 해싱 방법에 의해 정확히 매칭되어야 하고, 서브-엔진들 중 2 개 이상, 바람직하게는 모든 서브 엔진들 사이에 로드 밸런싱이 외부적으로 제어될 수 있는 방식으로 수행되어야 하는 경우들에서, 해시-테이블은 해시-태그의 계산 및 서브-엔진들의 어드레싱 사이에 삽입되는 것이 바람직하다. 해시-태그는 본 발명의 실시예에 따라 테이블의 입력 데이터 또는 기존 데이터일 수 있다. 해시-함수의 결과가 태그 및 따라서 테이블의 입력 데이터, 예를 들면, 탐색 키 또는 인덱스로서 사용되면, 해시-테이블은 서브-엔진이 하나 이상의 태그들에 할당되는 스위칭 테이블에 의해 직접적으로 실현될 수 있다. 데이터 패킷들과 연관된 상이한 데이터 트래픽 흐름들의 수 T가 서브-엔진들의 수 N보다 많고, 부가적으로 해시-함수로서 모듈로-p 함수가 사용되고, 여기서 T > p > N 또는 T >> p >> N인 경우들에서, 그러한 실시예가 바람직하다.
본 발명의 바람직한 실시예에 따라, 스위칭 디바이스는 태그-스위치를 포함한다. 태그-스위치는 태깅된 헤더에 따라 데이터 패킷을 서브-엔진으로 스위칭한다. 바람직하게, 태그-스위치는 제어-유닛의 기능 및/또는 스위칭 디바이스의 부가적인 엔티티 또는 디바이스이다. 태그-스위치의 기능은 소프트웨어 수단 및/또는 하드웨어 수단에 의해 부분적으로 또는 완전하게 실현될 수 있다.
본 발명의 바람직한 실시예에 따라, 스위칭 디바이스는 태깅된 헤더로부터 헤더-태그를 제거한다. 바람직하게, 태그-스위치는 태깅된 헤더로부터 헤더-태그를 제거한다. 이로써, 태깅된 헤더에 따라 데이터 패킷을 서브-엔진으로 스위칭하기 전에, 오리지널 헤더가 제공된다. 또한, 헤더 대신에 태깅된 헤더를 포함하는 데이터 패킷들의 부가적인 프로세싱을 위해 2 개 이상의 서브-엔진들의 어떠한 적응 요건도 존재하지 않을 수 있다.
본 발명의 바람직한 실시예에 따라, 제어 유닛 및/또는 2 개 이상의 서브-엔진들 각각은 적어도 하나의 중앙 프로세싱 유닛을 포함한다. 제어 유닛 및/또는 2 개 이상의 서브-엔진들 중 하나의 서브-엔진이 메모리, 캐시 메모리, 통신 수단, 및 입력/출력 유닛의 그룹 중 하나 이상의 부가적인 디바이스를 포함하는 것이 가능하다.
본 발명의 바람직한 실시예에 따라, 제어 유닛은 하드웨어 수단에 의한 해시-함수 및/또는 적어도 하나의 필터 연산을 제공한다.
바람직하게, 제어-유닛, 해시-함수, 적어도 하나의 필터 연산, 2 개 이상의 서브-엔진들 중 하나 이상의 서브-엔진들, 및 태그-스위치의 그룹 중 하나 이상의 엔티티들은 소프트웨어 수단 및/또는 하드웨어 수단에 의해 제공된다. 태그-스위치는 태깅된 헤더에 따라 데이터 패킷을 서브-엔진으로 스위칭한다.
본 발명의 바람직한 실시예에 따라, 제어-유닛 및/또는 서브-엔진들 중 하나 이상의 서브-엔진들은 통신 버스에 의해 상호 접속된다. 예를 들면, 제어-유닛 및/또는 2 개 이상의 서브-엔진들 중 하나 이상의 서브-엔진들은 이더넷, 인피니밴드(Infiniband), 무선 네트워크 기술들, 및 광 섬유에 기초한 네트워크 기술들의 그룹 중 하나 이상의 기술들에 의해 상호 접속된다. 바람직하게, 제어-유닛 및/또는 2 개 이상의 서브-엔진들 중 하나 이상의 서브-엔진들을 상호 접속하는 통신 버스는 직렬 버스 또는 병렬 버스이다. 스위칭 디바이스는 통신 수단을 포함할 수 있다. 통신 수단이 바람직하게는 고속 인터페이스들인 하나 이상의 인터페이스들이거나 이를 포함하는 것이 가능하다. 통신 버스는 적어도 10 Gbit/s일 수 있는 고대역폭을 제공할 수 있다. 특히, 하나 이상의 인터페이스들 각각이 적어도 10 Gbit/s일 수 있는 고대역폭을 제공하는 것이 가능하다. 바람직하게, 통신 버스는 하나 이상의 인터페이스들을 포함하는 통신 수단에 의해 취급되는 데이터 패킷들의 종합된 트래픽을 반송하기에 충분히 큰 대역폭을 제공하기 위해 적어도 1 또는 10 Tbit/s를 제공할 수 있다.
바람직하게, 2 개 이상의 서브-엔진들은 병렬 프로세싱 유닛, 특히, 대량 병렬 프로세싱 유닛에 의해 제공 및/또는 구성된다.
제어 유닛, 통신 수단, 데이터 베이스, 및 2 개 이상의 서브-엔진들을 포함하는 병렬 프로세싱 유닛의 그룹 중 적어도 2 개의 엔티티들은 제 1 통신 버스를 통해 서로와 상호 접속된다. 바람직하게, 통신 수단은 적어도 하나의 인터페이스를 포함한다. 또한, 제 2 통신 버스는 2 개 이상의 서브-엔진들 중 적어도 2 개 또는 이들 각각을 서로 상호 접속할 수 있다. 제 1 통신 버스가 제 2 통신 버스와 상호 접속되는 것이 가능하다. 상술된 바와 같이, 제 1 통신 버스 및/또는 제 2 통신 버스를 실현하기 위해 사용될 수 있는 바람직한 기술들은 이더넷, 인피니밴드, 무선 네트워크 기술들, 및 광 섬유에 기초한 네트워크 기술들의 그룹 중 하나 이상의 기술들이다.
바람직하게, 해시-태그는 MPLS 태그 및/또는 VLAN 태그로서 헤더에 삽입된다. 해시-태그가 데이터 패킷의 헤더의 MPLS 태그 및/또는 VLAN 태그에 삽입되는 것이 또한 가능하다.
제어 유닛은 또한 서브-엔진의 기능을 제공할 수 있다. 이로써, 제어 유닛이 데이터 패킷의 부가적인 프로세싱을 위해 서브-엔진으로서 작동하는 것이 가능할 수 있다.
본 발명의 주요 아이디어를 요약하면 다음과 같다. 본 발명에 따른 실시예들은, 예를 들면, 스위칭 및/ 라우팅을 위해, 바람직하게는, 수만 내지 수십만 개의 서브-엔진들을 포함하는, 상술된 바와 같은 대량 병렬 아키텍처들을 사용하여 또한 적용 가능하다. 복수의 데이터 패킷들을 프로세싱하는 방법을 사용하는 경우에, 스케일링(scaling)이 개선될 수 있다. 로드가 개별적인 코어들, 즉, 서브-엔진들 사이에서 공유될 뿐만 아니라, 또한 복잡한 경우에, 상기 방법만이 더 양호하게 스케일링한다. 태스크, 즉, 프로세싱을 흐름 태깅, 즉, 데이터 패킷 흐름들의 태깅마다 수행하는 유닛으로 시프팅하는 것은 문제를 단지 차선으로 해결하는데, 왜냐하면 모든 복잡성이 태깅 디바이스로 시프팅되기 때문이다. 그러나, 본 발명에 따른 실시예들은 기본적으로 2 개의 단계 접근법에 의해 이러한 딜레마를 해결한다. 제 1 단계에서, 하나 이상의 헤더들 또는 헤더 엘리먼트들의 관련 비트들이 필터링된다. 전체 로드가 분배되어야 하는 코어들 또는 서브-엔진들의 수에 대응하여, 이러한 정보로부터 해시, 즉, 해시-태그가 생성된다. 해시-태그는 라벨로서 사용되고, 데이터 패킷에 삽입된다. 제 2 단계에서, 데이터 패킷은 부가적인 프로세싱, 예를 들면, 최종 라우팅 및/또는 스위칭 결정을 위해 해시-태그에 의해 각각 어드레스되는 코어 또는 서브-엔진으로 스위칭된다.
본 발명의 실시예들은 개선된 확장성을 제공한다. 해싱 또는 해시-함수는, 의사 난수들(pseudo random numbers)과 유사한 출력에 필터링 및 생성한 비트들에 대해 불가지론을 동작시키는 "덤(dumb)" 알고리즘을 각각 제공한다. 예를 들면, TTL(TTL = Time To Live) 또는 시퀀스 넘버 필드들을 회피하고, 흐름, 특히, 데이터 트래픽 흐름, 및/또는 접속마다 정적인 정보만을 사용함으로써, 해싱 알고리즘이 동작하는 비트들이 잘 선택되면, 흐름 및/또는 접속에 속하는 모든 데이터 패킷들이 동일한 코어, 즉, 서브-엔진으로 각각 전달될 수 있다. 해싱은 필터링된 정보, 특히, 필터링된 헤더 정보에 대해 동작하고, 따라서, "데이터 패킷 내의 정보가 무엇인가"가 아닌 "어디를 볼 것인지"만을 고려한다. 따라서, 해시-태그에 의해 어드레스되는 코어, 즉, 서브-엔진은 모든 흐름들, 특히 데이터 트래픽 흐름들의 제한된 서브세트만을 처리할 수 있다. 캐스케이드마다 상이한 필터-규칙들 또는 필터 연산들을 사용함으로써 캐스케이딩하는 것은, 디스패치된 프로토콜들의 상세한 지식을 갖지 않고, 개별적인 코어들, 즉, 서브-엔진들에 대한 데이터 패킷들의 프로토콜 또는 서비스 특정 분배를 유도할 수 있다. 그후, 코어들 또는 서브-엔진들은 반응하여 지정된 작업들에 초점을 맞출 수 있다. VLAN 태그가 해시-태그의 삽입 위치로서 사용되면, 전개(fan-out)는 1:4096 개까지의 코어들 또는 서브-엔진들에 도달할 수 있는데, 왜냐하면, 해시-태그를 삽입하기 위해 12 비트들이 사용될 수 있고, 이는 컴퓨팅을 위해 이용 가능한 대량 병렬 프로세서들의 스케일에 대응하기 때문이다. MPLS 라벨은 1048576 개의 코어들 또는 서브-엔진들의 전개를 제공할 것이고, 왜냐하면 해시-태그를 삽입하기 위해 20 비트들이 사용될 수 있기 때문이다.
본 발명의 이들 및 부가적인 특징들 및 이점들은 첨부된 도면들과 연관하여 취해진 현재 바람직한 예시적인 실시예들의 다음의 상세한 설명을 판독함으로써 더 양호하게 이해될 것이다.
도 1은 스위칭 디바이스의 바람직한 실시예의 도면.
도 2는 복수의 데이터 패킷들을 프로세싱하는 방법의 바람직한 실시예의 흐름도.
도 1은 스위칭 디바이스(1)의 바람직한 실시예의 도면을 도시한다. 스위칭 디바이스(1)는 다음과 같은 엔티티들: 병렬 프로세싱 유닛(2), 통신 수단(3), 제 1 통신 버스(5), 데이터베이스(6) 및 제어 유닛(7)을 포함한다. 이러한 엔티티들은 단일 하우징(도시되지 않음) 내에 제공될 수 있거나, 이러한 서브-디바이스들(도시되지 않음) 중 하나 이상의 서브-디바이스들 각각을 포함하는 하나 이상의 서브-디바이스들에 의해 제공될 수 있다. 바람직하게, 제 1 통신 버스(5)는, 예를 들면, 적어도 10 Gbit/s의 고대역폭을 제공하는 직렬 버스 또는 병렬 버스이다. 스위칭 디바이스(1)는 패킷 교환 통신 네트워크(도시되지 않음)의 엔티티이다. 패킷 교환 통신 네트워크는 코어 통신 네트워크, 에지 및/또는 액세스 통신 네트워크, 원격 통신 네트워크, 유선 기반 통신 네트워크, 무선 통신 네트워크, 및/또는 전력선 통신 네트워크일 수 있다.
스위칭 디바이스(1)가 부가적인 통신 버스를 포함하여, 제 1 통신 버스(5) 및 부가적인 통신 버스가 2 개의 통신 경로들을 제공하는 것이 가능하고, 이러한 2 개의 통신 버스들 중 하나는 병렬 프로세싱 유닛(2)의 N 개의 서브-엔진들(21,..., 29) 사이에서 데이터 패킷들을 수송하고, 이러한 2 개의 통신 버스들 중 다른 하나는 시스템 제어 데이터, 및/또는 데이터 베이스(6)에 의해 제공될 수 있는 데이터 패킷들과 연관된 데이터를 수송한다. 이로써, 이러한 2 개의 통신 버스들 중 다른 하나는 제어 버스로서 작동할 수 있고, 제 1 통신 버스(5)는 데이터 패킷들의 스위칭 및/또는 프로세싱에 대해 지정된다.
병렬 프로세싱 유닛(2)은 N 개의 서브-엔진들(21,..., 29)을 포함한다. 바람직하게, N은 적어도 256이다. N 개의 서브-엔진들(21,..., 29)은 숫자들 1,..., N으로 순차적으로 라벨링된다. N 개의 서브-엔진들(21,..., 29)은 제 2 통신 버스(51)에 의해 상호 접속된다. 바람직하게, 제 2 통신 버스(51)는, 예를 들면, 적어도 10 Gbit/s의 고대역폭을 제공하는 직렬 버스 또는 병렬 버스이다. N 개의 서브-엔진들(21,..., 29) 중 각각의 서브-엔진은 적어도 중앙 프로세싱 유닛, 메모리, 캐시 메모리, 및 제 2 통신 버스(51) 및 바람직하게는 제 1 통신 버스(5)를 통해 통신하기 위한 통신 수단을 제공한다. 또한, N 개의 서브-엔진들(21,..., 29) 중 각각의 서브-엔진은 데이터 패킷들의 스위칭을 수행하도록 적응된다. 특히, N 개의 서브-엔진들(21,..., 29) 중 각각의 서브-엔진은 데이터 패킷의 심층 패킷 분석(Deep Packet Inspection)을 수행하고 및/또는 데이터 패킷의 헤더를 평가 및 조작하도록 적응될 수 있다. 바람직하게, 병렬 프로세싱 유닛(2)은 병렬 프로세서이고, 병렬 프로세서의 하나 이상의 프로세싱 코어들은 N 개의 서브-엔진들(21,..., 29)을 제공한다.
통신 수단(3)은 적어도 하나의 인터페이스(31,..., 35)를 포함한다. 예를 들면, 통신 수단은 포트들로서 작동할 수 있는 48 개의 인터페이스들을 포함한다. 통신 수단(3)은 적어도 OSI 계층 2 또는 3에 따라 통신하기 위한 적어도 기능 및 각각의 프로토콜 및 프로토콜 스택을 제공한다(OSI = Open System Interconnection Reference Model). 인터페이스들(31,..., 35) 각각은, 예를 들면, 적어도 1 Gib/s의 고대역폭을 제공한다.
제 1 통신 버스(5)는 병렬 프로세싱 유닛(2), 통신 수단(3), 데이터 베이스(6) 및 제어 유닛(7)을 서로 상호 접속한다. 병렬 프로세싱 유닛(2)은 제 2 통신 버스(51)에 의해 제 1 통신 버스(5)와 상호 접속된다.
데이터 베이스(6)는 복수의 데이터 패킷들의 스위칭과 연관된 데이터를 보유한다. 바람직하게, 데이터 베이스(6)는 중앙 프로세싱 유닛, 하나 이상의 하드 디스크들 또는 고체 상태 디스크들과 같은 저장 수단, 및 제 1 통신 버스(5)를 통해 통신하기 위한 통신 수단을 포함한다. 데이터베이스(6)에 의해 보유되는 데이터는, 복수의 데이터 패킷들을 스위칭하는데 사용 가능한 통신 세션 정보 또는, 예를 들면, 실시간 서비스의 데이터 트래픽 흐름들의 상태 정보를 제공하는 부가적인 데이터를 포함할 수 있다. 데이터 트래픽 흐름들은 복수의 데이터 패킷들 중 데이터 패킷들과 연관된다. 예를 들면, 데이트 트래픽 흐름들은 VoIP(Voice over IP) 세션들, IP 컨퍼런싱 세션들(conferencing sessions), IP 게이밍 세션들, 및/또는 RTP 세션들, SIP 세션들, FTP 세션, SSH 세션들, HTTP 및/또는 HTTPS 세션들, SMTP 등과 같은 표준 IP 세션들과 연관된다(RTP = Real-time Transfer Protocol, SIP = Session Initiation Protocol, FTP = File Transfer Protocol, SSH = Secure Shell, HTTP = Hyper-Text Transfer Protocol, HTTPS = HTTP Secure, SMTP = Simple Mail Transfer Protocol).
제어 유닛(7)은 적어도 중앙 프로세싱 유닛, 메모리, 캐시 메모리, 및 제 1 통신 버스(5)를 통해 통신하기 위한 통신 수단을 포함한다. 제어 유닛(7)은 그의 통신 수단(3)을 통해 헤더를 포함하는 데이터 패킷을 수신하도록 적응된다. 제어 유닛(7)은 적어도 하나의 필터 연산을 헤더에 적용하도록 적응된다. 이로써, 필터링된 정보를 생성하는 것이 가능하다. 제어 유닛(7)은 또한 필터링된 정보를 해시-태그 상에 맵핑하도록 적응된다. 맵핑은 해시-함수에 따라 실행된다. 제어 유닛(7)은 태깅된 헤더를 제공하도록 적응된다. 태깅된 헤더는 오리지널 헤더일 수 있고, 해시-태그는 제어 유닛(7)에 의해 헤더 내에 삽입되고, 이로써 태깅된 헤더를 형성한다. 예를 들면, 데이터 패킷의 헤더가 MPLS 태그 및/또는 VLAN 태그를 포함하는 경우들에서, 해시-태그는 이러한 MPLS 태그 및/또는 VLAN 태그 각각에 삽입될 수 있다. 그러한 경우에, 헤더 및 태깅된 헤더는 동일한 비트-길이를 갖는다. 그러나, 해시-태그가 해시-태그를 헤더에 부가함으로써 헤더에 삽입되는 것이 또한 가능하다. 이러한 경우에, 태깅된 헤더는 적어도 헤더의 비트-길이 및 해시-태그의 비트-길이의 합산과 동일한 길이인 비트-길이를 갖는다. 임의의 경우에, 제어 유닛(7)은 해시-태그를 데이터 패킷의 헤더에 삽입하도록 적응된다. 또한, 제어 유닛(7)은 데이터 패킷의 부가적인 프로세싱을 위해 태깅된 헤더에 따라 N 개의 서브-엔진들(21,..., 29) 중 하나의 서브-엔진(24)에 데이터 패킷을 전송하도록 적응된다.
해시-태그가 이더넷-헤더와 IP-헤더 사이, IP-터널 헤더와 IP-헤더 사이, 또는 IP-헤더 위의 MPLS-태그에 삽입되는 것이 가능하다.
도 2는 패킷 교환 통신 네트워크에서 복수의 데이터 패킷들을 프로세싱하는 방법의 바람직한 실시예의 흐름도를 도시한다. 복수의 데이터 패킷들을 프로세싱하는 방법의 바람직한 실시예는 다음과 같이 도 2를 통해 다음에 설명된다.
제어 유닛(7)은 데이터 패킷의 헤더(10)로부터 정보를 필터링하기 위한 필터링 연산(50)을 제공한다. 필터 연산(50)은, 필터링된 정보(100)를 생성하기 위해 헤더(10)에 대한 연속적인 적용을 위해, 또한 필터 연산들인, 하나 이상의 서브-필터 연산들로 분할될 수 있다. 바람직하게, 데이터 패킷의 헤더(10)는 데이터 패킷과 연관된 하나 이상의 정보 엘리먼트들을 저장하기 위한 하나 이상의 비트들을 포함한다. 필터 연산(50)은 헤더(10)로부터 비트들 및/또는 비트들(20)의 시퀀스들을 선택하고, 이로써 헤더 단편들(header fragments)(10a)을 생성할 수 있다. 필터 연산(50)은 헤더 단편들(10a)에 기초하여 필터링된 정보(100)를 생성한다. 필터링된 정보(100)는 IP 소스 어드레스, IP 목적지 어드레스, IP 소스 포트, IP 목적지 포트, 및 전송 프로토콜의 타입을 포함하는 5-튜플로 배열된다. 이로써, 필터링된 정보(100)는 데이터 패킷들을 각각의 데이터 트래픽 흐름들에 연관시키는데 사용될 수 있다. 다음에서, 필터링된 정보(100)는 j로 표기될 수 있다. 필터 연산(50)은 또한 복수의 데이터 패킷들과 연관된 하나 이상의 데이터 트래픽 흐름들 중 하나의 데이터 트래픽 흐름에 대한 데이터 패킷의 연관성을 표시하는 식별자를 필터링하도록 적응될 수 있다. 5-튜플은 그러한 식별자로서 해석될 수 있다.
DSCP, IP-헤더의 프로토콜 필드, TCP 포트, UDP 포트, 이더넷의 타입, MPLS 태그, VLAN 태그, 데이터 패킷의 페이로드의 데이터의 그룹으로부터 선택된 하나 이상의 정보 엘리먼트들이 필터링된 정보로서 사용되는 것이 또한 가능하다(TCP = Transmission Control Protocol, UDP = User Datagram Protocol). 해싱 및 태그-스위칭이 패킷들의 페이로드 영역에서 수행되면, 바람직하게, 하나 이상의 서브-엔진들은 컴퓨터 멀웨어 서명들(computer malware signatures), 특히, 바이러스 서명들에 대해 데이터 패킷들, 또는 서비스 거부 공격들(Denial of service attacks)과 같은 컴퓨터 범죄들의 특징들을 테스트 및/또는 체크한다.
제어 유닛(7)은 상기 식별자를 포함하는 필터링된 정보(100)를 수 k로 맵핑하기 위한 해시-함수(300)를 제공하고, k는 자연수들의 간격 [m,..., M]의 엘리먼트이다. 자연수 m은 최소값이고, 자연수 M은 간격 [m,..., M]의 최대값이다. 예를 들면, 스위칭 디바이스는 N = 256 개의 서브-엔진들(21,..., 29)을 포함한다. 다음에서, 몇몇의 이유로, p = 256인 모듈로-p 함수를 포함하는 해시 함수가 요구되지 않지만, p는 소수이다는 것이 가정된다. 그러나, 일반적으로 p = 256인 모듈로-p 함수는 바람직한 해시-함수일 것이다.
2 개의 가장 가까운 소수들 p1 = 251 및 p2 = 257이 존재한다. 소수 p1 = 251는 N = 256에 대해 다음으로 더 작은 소수, 즉, 서브-엔진들(21,..., 29)의 수이다.
제어 유닛(7)이 서브-엔진으로서 작동할 수 없는 경우에, p1 = 251는 해시-함수(300)를 규정하는데 사용될 수 있다. 해시-함수(300)는 모듈로-p 함수 h1(j) = 1 + mod(j,p1)=k이다. 따라서, m = 1 및 M = 251이다. 이러한 경우에, 간격 [m,..., M]의 원소수는 p1과 동일하다.
제어 유닛(7)이 서브-엔진으로서 작동할 수 있는 또 다른 경우에, p2 = 257는 해시-함수(300)를 규정하는데 사용될 수 있다. 해시-함수(300)는 모듈로-p 함수 h2(j) = mod(j,p2) = k이다. 이로써, 실제로, N + 1 개의 서브-엔진들이 이용 가능하다. 소수 p2는, 이러한 경우에 규정에 의해 N + 1과 동일한 N + 1에 대해 다음으로 더 작은 소수이다. 따라서, m = 0 및 M = 256이다. h2(j) = 0, 즉, k = 0 인 경우들에서, 제어 유닛(7)은 데이터 패킷의 부가적인 프로세싱을 수행한다. 이러한 경우에, 간격 [m,..., M]의 원소수는 p2와 동일하다.
양자의 경우들에서, 해시-함수(300)의 모든 값들 k은 해시-함수(300)의 최소값 m과 최대값 M 사이에서 동일하게 분포되는데, 왜냐하면, 양자의 경우에서 해시-함수가 실질적으로 모듈로-p 함수이기 때문이다. 이러한 해시-함수(300)의 값들 k의 동일한 분포는 데이터 패킷들의 부가적인 프로세싱 동안에 서브-엔진들(21,..., 29)의 로드들의 로드 밸런스를 제공할 수 있다.
제어 유닛(7)이 서브-엔진으로서 작동할 수 없는 경우에, 해시-함수(300)를 규정하기 위해 p2 = 257이 사용되는 것이 또한 가능할 수 있다. 그러나, 이러한 경우에, 모듈로-p 함수 h3(j) = 1 + mod(j,p2) = k는 j를 간격 [1,..., 257] 내의 k로 맵핑한다. 서브-엔진들(21,..., 29)의 수 N보다 큰 해시-태그와 연관된 데이터 패킷들이 프로세싱되도록 하기 위해, 이러한 데이터 패킷들은 부가적인 프로세싱을 위해 서브-엔진들(21,..., 29) 중 하나 이상의 서브-엔진, 예를 들면, 숫자 1를 갖는 서브-엔진으로 지시되어야 한다. 특히, 2 개 이상의 해시-태그들을 하나의 서브-엔진과 연관시키는 것이 가능하다. 이로써, 모든 데이터 패킷들이 프로세싱되지만, 해시-함수(300)의 값들 k의 동일한 분포가 데이터 패킷들의 부가적인 프로세싱 동안에 서브-엔진들(21,..., 29)의 로드들을 로드 밸런싱하도록 제공될 수 없는 것이 보장될 수 있다.
또한, 대안적으로, 병렬 프로세싱 유닛(2)은 멀티프로세서 아키텍처 내의 하나 이상의 프로세싱 코어들을 제공한다. 병렬 프로세싱 유닛(2)은 가상 서브-엔진들로서 2 개 이상의 서브-엔진들(21,..., 29), 예를 들면, N = 256 개의 가상 서브-엔진들을 제공할 수 있다. 가상 서브-엔진들을 사용하는 것은, 가상 서브-엔진들의 수가 바람직하게는 모듈로-p 함수인 해시-함수(300)에 정확히 적응될 수 있는 것을 가능하게 한다. 해시-함수(300)를 결정하는 소수 p에 대한 최적의 선택은 이용 가능한 프로세싱 코어들의 수에 대해 다음의 소수 p'일 수 있다. 그러나, 이용 가능한 프로세싱 코어들의 수에 대해 다음의 소수 p'가 이용 가능한 프로세싱 코어들의 수보다 많은 것이 가능하다. 이러한 경우에, 간격 [0,..., p'-1] 내의 k'를 갖는 해시-함수 h'(j,p') = mod(j,p') = k'는 j를 프로세싱 코어와 연관될 수 없는 k'로 맵핑할 수 있다. 서브-엔진들의 가상화에 의해, 이용 가능한 프로세싱 코어들이 정확히 p'개의 가상 서브-엔진들(21,..., 29)을 제공하여, 병렬 프로세싱 유닛(2)의 최적의 사용을 허용하는 것이 가능하다.
위의 예에서, 수 p1 및/또는 수 p2는 소수가 아닌 자연수로 대체될 수 있다.
바람직하게, 필터링된 정보(100)를 생성하기 위해 헤더에 대한 연속적인 적용을 위한 2 개 이상의 필터 연산이 제어 유닛(7)에 의해 적용되는 경우에, 제어 유닛(7)은 필터링된 정보(100)의 하나 이상의 엘리먼트들, 예를 들면, 비트들 및/또는 비트들(20)의 시퀀스들을 생성하도록 적응된다. 2 개 이상의 필터 연산 각각에 대해, 필터링된 정보의 각각의 엘리먼트가 생성되는 것이 가능하다. 제어 유닛(7)은 하나 이상의 중간 해시-함수들을 필터링된 정보의 엘리먼트들 중 하나 이상의 엘리먼트들 또는 필터링된 정보의 엘리먼트들 각각에 적용하도록 적응된다.
이로써, 이러한 하나 이상의 중간 해시-함수들의 결과는 생성된 필터링된 정보로서 또는 생성된 필터링된 정보(100)의 부분으로서 간주될 수 있다. 그후, 해시-함수(300)는 생성된 필터링된 정보(100) 및/또는 생성된 필터링된 정보의 부분에 적용된다. 해시-함수(300)가 모듈로-p 합산 및/또는 모듈로-p 승산과 같은 2 개 이상의 모듈로-p 계산을 포함하는 것이 가능하고, p는 바람직하게는 소수인데, 왜냐하면, 그렇지 않다면 2 개 이상의 서브-엔진들(21,...29)로의 해시-함수(300)의 모든, 바람직하게는, p 개의 값들의 동일하게 분포된 맵핑 및/또는 완전한 맵핑이 보장될 수 없기 때문이다. 해시-함수(300)는 명시적으로 또는 암시적으로 2 개 이상의 모듈로-p 계산을 포함할 수 있다. 단어, "명시적으로"는 이와 관련하여 이러한 2 개 이상의 모듈로-p 계산이 해시-함수(300)에 의해서만 제공된다는 것을 의미하고, 반면에 단어, "암시적으로"는 이와 관련하여 이러한 2 개 이상의 모듈로-p 계산이 해시-함수(300) 및/또는 하나 이상의 중간 해시-함수들에 의해 제공된다는 것을 의미한다.
2 개 이상의 프로세싱 코어가 가상화에 의해 가상 서브-엔진인 서브-엔진을 제공하는데 사용되는 것이 또한 가능하다. 이로써, 가상화는 임의대로 선택된 해시-함수들의 사용을 허용할 수 있다. 또한, 2 개 이상의 서브-엔진들의 수를 임의대로 선택하는 것이 가능하고, 여기서 서브-엔진들은 가상 서브-엔진들이다.
또한, 간격 [m,..., M]의 원소수는, 태깅된 헤더(11)에 따라 복수의 데이터 패킷들의 상이한 데이터 트래픽 흐름들과 연관된 데이터 패킷들을 N = 256 개의 서브-엔진들(21,..., 29) 중 상이한 서브-엔진들로 전송하기 위한 하나 이상의 데이터 트래픽 흐름들의 수보다 많거나 동일할 수 있다. 이로써, 동일한 데이터 트래픽 흐름과 연관된 데이터 패킷들을 N = 256 개의 서브-엔진들(21,..., 29) 중 동일한 서브-엔진에 암시적으로 할당하는 것이 가능하다.
이제 상기 방법에 더욱 상세히 의존하여, 상기 방법은 또한 다음과 같이 예시적으로 수행된다.
제어 유닛(7)은 통신 네트워크를 통해 교환되는 통신 패킷의 헤더(10)를 포함하는 데이터 패킷을 수신한다. 제어 유닛(7)은 필터 연산(50)을 헤더(10)에 적용하고, 이로써 상술된 바와 같은 필터링된 정보(100)를 생성한다. 제어 유닛(7)은 해시-함수(300)에 따라 필터링된 정보(100)를 해시-태그(30) 상에 맵핑한다. 특히, 제어 유닛(7)이 하드웨어 수단에 의해 해시-함수(300) 및/또는 적어도 하나의 필터 연산(50)을 제공하는 것이 가능하다. 제어 유닛(7)은 해시-태그(30)를 데이터 패킷의 헤더(10)에 삽입함으로써 태깅된 헤더(11)를 제공한다. 제어 유닛(7)은 태그-스위치(40)에 의한 데이터 패킷의 부가적인 프로세싱을 위해 태깅된 헤더(11)에 따라 N = 256 개의 서브-엔진들(21,..., 29) 중 하나의 서브-엔진(24)으로 데이터 패킷을 전송한다. 태그-스위치(40)는 태깅된 헤더(11)에 따라 데이터 패킷을 서브-엔진(24)으로 스위칭한다. 스위칭 디바이스(1)는 태그-스위치(40)를 포함한다. 태그-스위치(40)는 태깅된 헤더(11)로부터 해시-태그(30)를 제거하고, 이로써 태깅된 헤더(11)에 따라 데이터 패킷을 서브-엔진(24)으로 스위칭하기 전에, 오리지널 헤더(10)가 제공된다. 서브-엔진(24)은 수신된 데이터 패킷의 부가적인 프로세싱을 위해 제어 유닛(7)으로부터 데이터 패킷을 수신한다. 서브-엔진(24)은, 서브-엔진(24)의 메모리가 수신된 데이터 패킷 및/또는 해시-태그(30)와 연관된 데이터를 보유하지 않는 경우에, 수신된 데이터 패킷의 부가적인 프로세싱을 위해 수신된 데이터 패킷 및/또는 해시-태그(30)와 연관된 데이터를 보유하는 데이터 베이스(6)를 액세스한다. 서브-엔진(24)은 태깅된 헤더(11)로부터 해시-태그(30)를 추출한다. 서브-엔진(24)은 헤더(10)를 사용함으로써 수신된 데이터 패킷, 수신된 데이터 패킷 및/또는 해시-태그(30)와 연관된 데이터, 및/또는 수신된 데이터 패킷의 페이로드를 프로세싱한다. 대안적으로, 태그-스위치가 태깅된 헤더로부터 해시-태그(30)를 제거하지 않는 것이 가능하다. 그러한 경우에, 바람직하게는 해시-태그(30)인 수치적 수 k는, 서브-엔진(24)이 수신된 데이터 패킷의 부가적인 프로세싱을 위해 지정되는지를 서브-엔진(24)이 체크할 수 있고, 이로써 긍정적인 경우에 수신된 데이터 패킷을 부가적으로 프로세싱하는 것을 허용한다.

Claims (15)

  1. 적어도 하나의 스위칭 디바이스(1)를 포함하는 패킷 교환 통신 네트워크(a packet switched communication network)에서 복수의 데이터 패킷을 프로세싱하는 방법으로서,
    상기 적어도 하나의 스위칭 디바이스(1)의 제어 유닛(7)에 의해, 상기 통신 네트워크를 통해 교환되는 통신 패킷의 헤더(10)를 포함하는 데이터 패킷을 수신하는 단계 - 상기 적어도 하나의 스위칭 디바이스(1)는 상기 제어 유닛(7)의 기능부인 태그-스위치(40)를 포함하고, 상기 제어 유닛은 상기 적어도 하나의 스위칭 디바이스(1)의 2개 이상의 서브-엔진들 중 하나의 서브-엔진임 - 와,
    상기 제어 유닛(7)에 의해, 적어도 하나의 필터 연산(50)을 상기 헤더(10)에 적용하고, 이로써 필터링된 정보(100)를 생성하는 단계와,
    상기 제어 유닛(7)에 의해, 해시-함수(300)에 따라 상기 필터링된 정보(100)를 해시-태그(30) 상에 맵핑하는 단계와,
    상기 제어 유닛(7)에 의해, 상기 해시-태그(30)를 상기 데이터 패킷의 헤더(10)에 삽입함으로써 태깅된 헤더(11)를 제공하는 단계와,
    상기 제어 유닛(7)에 의해, 상기 데이터 패킷의 추가적인 프로세싱을 위해 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 2개 이상의 서브-엔진들(21,...,29) 중 다른(another) 서브-엔진(24)으로 전송하는 단계 - 상기 태그 스위치(40)는 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 상기 다른 서브-엔진(24)으로 스위칭함 - 를 포함하고,
    상기 2개 이상의 서브-엔진들(21,...,29)은, 상기 제어 유닛(7)에 의해 생성되는 가능한 해시-태그 값들의 수에 적응되는 다수의 가상 서브-엔진들을 제공하고,
    상기 가상 서브-엔진들의 수는 이용가능한 프로세싱 코어들의 수보다 많을 수 있으며,
    상기 다른 서브-엔진은 상기 수신된 데이터 패킷의 페이로드를 이용하여 상기 수신된 데이터 패킷을 프로세싱하는
    데이터 패킷 프로세싱 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 필터 연산(50)은 상기 복수의 데이터 패킷들과 연관된 하나 이상의 데이터 트래픽 흐름들 중 하나의 데이터 트래픽 흐름에 대한 상기 데이터 패킷의 연관성을 표시하는 식별자를 필터링하고,
    상기 해시-함수(300)는 상기 식별자를 포함하는 상기 필터링된 정보(100)를 수 k에 맵핑하고, k는 자연수들의 간격 [m,..., M]의 엘리먼트이고, m은 최소값이고, M은 M < N 또는 M = N인 최대값이고, N은 2개 이상의 서브-엔진들(21,..., 29)의 수이고, 상기 간격 [m,..., M]의 원소수(cardinality)는 상기 태깅된 헤더(11)에 따라 상기 복수의 데이터 패킷의 상이한 데이터 트래픽 흐름들과 연관된 데이터 패킷들을 상기 2개 이상의 서브-엔진들(21,..., 29) 중 상이한 서브-엔진들로 전송하기 위해 하나 이상의 데이터 트래픽 흐름들의 수보다 많거나 동일한
    데이터 패킷 프로세싱 방법.
  3. 제 1 항에 있어서,
    상기 다른 서브-엔진(24)에 의해, 상기 수신된 데이터 패킷의 추가적인 프로세싱을 위해 상기 제어 유닛(7)으로부터 상기 데이터 패킷을 수신하는 단계와,
    상기 다른 서브-엔진(24)의 메모리가 상기 수신된 데이터 패킷 및 상기 해시-태그(30) 중 적어도 하나와 연관된 데이터를 보유하지 않는 경우에, 상기 다른 서브-엔진(24)에 의해, 상기 수신된 데이터 패킷의 추가적인 프로세싱을 위해 상기 수신된 데이터 패킷 및 상기 해시-태그(30) 중 적어도 하나와 연관된 데이터를 보유하는 데이터 베이스(6)에 액세스하는 단계와,
    상기 다른 서브-엔진(24)에 의해, 상기 헤더(10), 상기 수신된 데이터 패킷 및 상기 해시-태그(30) 중 적어도 하나와 연관된 데이터, 및 상기 수신된 데이터 패킷의 페이로드 중 적어도 하나를 사용함으로써 상기 수신된 데이터 패킷을 프로세싱하는 단계를 더 포함하는
    데이터 패킷 프로세싱 방법.
  4. 제 1 항에 있어서,
    상기 다른 서브-엔진(24)에 의해, 상기 수신된 데이터 패킷의 추가적인 프로세싱을 위해 상기 제어 유닛(7)으로부터 상기 데이터 패킷을 수신하는 단계와,
    상기 다른 서브-엔진(24)에 의해, 상기 태깅된 헤더(11)로부터 상기 해시-태그(30)를 추출하는 단계와,
    상기 다른 서브-엔진(24)이 상기 수신된 데이터 패킷의 추가적인 프로세싱을 위해 지정되어 있음을 상기 해시-태그(30)가 수치적 숫자로 표시하는 경우, 상기 다른 서브-엔진(24)에 의해, 상기 수신된 데이터 패킷을 프로세싱하는 단계를 더 포함하는
    데이터 패킷 프로세싱 방법.
  5. 패킷 교환 통신 네트워크에서 통신 패킷들을 스위칭하기 위한 스위칭 디바이스(1)로서,
    2개 이상의 서브-엔진들(21,..., 29), 및 태그 스위치(40)를 갖는 제어 유닛(7)을 포함하되,
    상기 제어 유닛(7)은 상기 2개 이상의 서브-엔진들 중 하나의 서브-엔진이며, 상기 태그 스위치(40)는 상기 제어 유닛(7)의 기능부이고,
    상기 제어 유닛(7)은 상기 통신 네트워크를 통해 교환되는 상기 통신 패킷들 중 하나의 통신 패킷의 헤더(10)를 포함하는 데이터 패킷을 수신하고, 적어도 하나의 필터 연산(50)을 상기 헤더(10)에 적용하고, 이로써 필터링된 정보(100)를 생성하고, 해시-함수(300)에 따라 상기 필터링된 정보(100)를 해시-태그(30) 상에 맵핑하고, 상기 해시-태그(30)를 상기 데이터 패킷의 헤더(10)에 삽입함으로써 태깅된 헤더(11)를 제공하고, 상기 데이터 패킷의 추가적인 프로세싱을 위해 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 상기 2개 이상의 서브-엔진들(21,..., 29) 중 다른 서브-엔진(24)으로 전송 - 상기 태그 스위치(40)는 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 상기 다른 서브-엔진(24)으로 스위칭함 - 하도록 구성되며,
    상기 2개 이상의 서브-엔진들(21,...,29)은, 상기 제어 유닛(7)에 의해 생성되는 가능한 해시-태그 값들의 수에 적응되는 다수의 가상 서브-엔진들을 제공하고,
    상기 가상 서브-엔진들의 수는 이용가능한 프로세싱 코어들의 수보다 많을 수 있으며,
    상기 다른 서브-엔진은 상기 수신된 데이터 패킷의 페이로드를 이용하여 상기 수신된 데이터 패킷을 프로세싱하는
    스위칭 디바이스(1).
  6. 제 5 항에 있어서,
    상기 필터링된 정보(100)는 인터넷 프로토콜 소스 어드레스, 인터넷 프로토콜 목적지 어드레스, 인터넷 프로토콜 소스 포트, 인터넷 프로토콜 목적지 포트, 전송 프로토콜의 타입, 및 서비스 비트들의 타입의 그룹으로부터 선택된 하나 이상의 정보 엘리먼트들을 포함하거나,
    상기 필터링된 정보(100)는 인터넷 프로토콜 소스 어드레스, 인터넷 프로토콜 목적지 어드레스, 인터넷 프로토콜 소스 포트, 인터넷 프로토콜 목적지 포트, 및 서비스 비트들의 타입(a type of service bits)을 포함하는 5-튜플(tuple)로 배열되는
    스위칭 디바이스(1).
  7. 제 5 항에 있어서,
    상기 해시-함수(300)는 모듈로(modulo)-p 함수를 포함하고, p < N 또는 p = N이고, N은 2개 이상의 서브-엔진들(21,..., 29)의 수이고, p는 소수(prime number) 및 N에 대해 다음으로 작은 소수 중 적어도 하나인
    스위칭 디바이스(1).
  8. 제 5 항에 있어서,
    상기 해시-함수(300)는 상기 필터링된 정보(100)를 수 k에 맵핑하도록 구성되고, k는 자연수들의 간격 [m,..., M]의 엘리먼트이고, m은 최소값이고, M은 M < N 또는 M = N인 최대값이고, N은 상기 2개 이상의 서브-엔진들(21,..., 29)의 수인
    스위칭 디바이스(1).
  9. 제 5 항에 있어서,
    상기 해시-함수(300)는 상기 해시-함수(300)의 모든 값들이 상기 해시-함수(300)의 최소값과 최대값 사이에서 균등하게 분포되는 방식으로 배열되는
    스위칭 디바이스(1).
  10. 제 5 항에 있어서,
    상기 제어 유닛(7)은 상기 필터링 정보(100)를 생성하기 위해 상기 헤더(10)로의 연속적인 적용을 위한 2개 이상의 필터 연산(50)을 적용하도록 구성되는
    스위칭 디바이스(1).
  11. 제 5 항에 있어서,
    상기 스위칭 디바이스(1)는, 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 상기 다른 서브-엔진(24)으로 스위칭하는 태그-스위치(40)를 포함하는
    스위칭 디바이스(1).
  12. 제 5 항에 있어서,
    상기 스위칭 디바이스(1)는, 태그-스위치(40)에 의해, 상기 태깅된 헤더(11)로부터 상기 해시-태그(30)를 제거하고, 이로써 상기 태깅된 헤더(11)에 따라 상기 데이터 패킷을 상기 다른 서브-엔진(24)으로 스위칭하기 전에 오리지널 헤더(10)를 제공하는
    스위칭 디바이스(1).
  13. 제 5 항에 있어서,
    상기 제어 유닛(7) 및 상기 2개 이상의 서브-엔진들(21,..., 29) 중 적어도 하나의 각각은 적어도 하나의 중앙 프로세싱 유닛을 포함하는
    스위칭 디바이스(1).
  14. 제 5 항에 있어서,
    상기 제어 유닛(7)은 하드웨어 수단에 의해 상기 해시-함수(300) 및 상기 적어도 하나의 필터 연산(50) 중 적어도 하나를 제공하는
    스위칭 디바이스(1).
  15. 제 5 항에 있어서,
    상기 제어 유닛(7) 및 하나 이상의 서브-엔진들(21,..., 29) 중 적어도 하나는 통신 버스(5, 51)에 의해 상호 접속되고,
    상기 서브-엔진들(21,..., 29) 각각은, 상기 다른 서브-엔진(24)이 상기 수신된 데이터 패킷의 추가적인 프로세싱을 위해 지정되어 있음을 상기 해시-태그(30)가 표시하는 경우에, 상기 통신 버스(5, 51)를 통해 수신된 데이터 패킷을 프로세싱하도록 구성되는
    스위칭 디바이스(1).
KR1020127018496A 2009-12-17 2010-11-18 복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스 KR101371858B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09290960.5A EP2337274B1 (en) 2009-12-17 2009-12-17 Method for processing a plurality of data and switching device for switching communication packets
EP09290960.5 2009-12-17
PCT/EP2010/067753 WO2011072978A1 (en) 2009-12-17 2010-11-18 Method for processing a plurality of data and switching device for switching communication packets

Publications (2)

Publication Number Publication Date
KR20120112568A KR20120112568A (ko) 2012-10-11
KR101371858B1 true KR101371858B1 (ko) 2014-03-07

Family

ID=41809221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127018496A KR101371858B1 (ko) 2009-12-17 2010-11-18 복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스

Country Status (6)

Country Link
US (1) US9282064B2 (ko)
EP (1) EP2337274B1 (ko)
JP (1) JP5544429B2 (ko)
KR (1) KR101371858B1 (ko)
CN (1) CN102656850B (ko)
WO (1) WO2011072978A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9185073B2 (en) * 2011-10-06 2015-11-10 Qualcomm Incorporated Systems and methods for data packet processing
EP2592784B1 (en) * 2011-11-14 2013-09-18 Alcatel Lucent Apparatus, method and computer program for routing data packets
US8891364B2 (en) * 2012-06-15 2014-11-18 Citrix Systems, Inc. Systems and methods for distributing traffic across cluster nodes
US9264357B2 (en) * 2013-04-30 2016-02-16 Xpliant, Inc. Apparatus and method for table search with centralized memory pool in a network switch
US9571380B2 (en) * 2013-09-10 2017-02-14 Marvell World Trade Ltd. Multi-stage interconnect network in a parallel processing network device
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US10193806B2 (en) * 2014-03-31 2019-01-29 Nicira, Inc. Performing a finishing operation to improve the quality of a resulting hash
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9497294B2 (en) * 2014-06-19 2016-11-15 Cavium, Inc. Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
CN106534394B (zh) * 2015-09-15 2020-01-07 瞻博网络公司 用于管理端口的设备、系统和方法
CN105187436B (zh) * 2015-09-25 2019-03-08 中国航天科工集团第二研究院七〇六所 一种基于散列表的包过滤主机网络控制方法
US10587491B1 (en) 2016-12-27 2020-03-10 Amazon Technologies, Inc. Testing computer networks in real time
US11076025B1 (en) 2016-12-27 2021-07-27 Amazon Technologies, Inc. Generating network packet centric signatures
US10659571B1 (en) * 2016-12-27 2020-05-19 Amazon Technologies, Inc. Network device with integrated packet generators or packet checkers
US10666775B1 (en) 2016-12-27 2020-05-26 Amazon Technologies, Inc. Integrated packet generator and checker
KR102050828B1 (ko) * 2018-10-26 2020-01-08 한국과학기술원 병렬 연산을 이용한 오픈 가상 스위치의 가속화 방법 및 이를 이용한 오픈 가상 스위치
US10805164B2 (en) 2018-12-14 2020-10-13 At&T Intellectual Property I, L.P. Controlling parallel data processing for service function chains
US20220400079A1 (en) * 2019-11-13 2022-12-15 Nippon Telegraph And Telephone Corporation Sort device, sort method, and sort program
KR102229554B1 (ko) * 2019-12-20 2021-03-18 한국과학기술원 해시 키 생성 방법 및 그 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040071142A1 (en) 2002-10-11 2004-04-15 Hitachi, Ltd. Packet communication device

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473607A (en) * 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
US5708659A (en) * 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
US6567377B1 (en) * 1999-03-18 2003-05-20 3Com Corporation High performance load balancing of outbound internet protocol traffic over multiple network interface cards
US7463648B1 (en) * 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US8300534B2 (en) * 2000-05-24 2012-10-30 Alcatel Lucent Programmable packet processor with flow resolution logic
JP3963690B2 (ja) * 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
US8189591B2 (en) * 2001-10-30 2012-05-29 Exar Corporation Methods, systems and computer program products for packet ordering for parallel packet transform processing
JP4157403B2 (ja) * 2003-03-19 2008-10-01 株式会社日立製作所 パケット通信装置
JP4196732B2 (ja) * 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
US7366092B2 (en) * 2003-10-14 2008-04-29 Broadcom Corporation Hash and route hardware with parallel routing scheme
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7809009B2 (en) * 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US20070239891A1 (en) * 2006-04-06 2007-10-11 Wainner Warren S Method and apparatus for point-to-multipoint distribution using pseudowires
US8024787B2 (en) * 2006-05-02 2011-09-20 Cisco Technology, Inc. Packet firewalls of particular use in packet switching devices
US8249067B2 (en) * 2008-02-27 2012-08-21 Broadcom Corporation Separation of fabric and packet processing source in a system
US8503468B2 (en) * 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
US8239610B2 (en) * 2009-10-29 2012-08-07 Red Hat, Inc. Asynchronous page faults for virtual machines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040071142A1 (en) 2002-10-11 2004-04-15 Hitachi, Ltd. Packet communication device

Also Published As

Publication number Publication date
CN102656850B (zh) 2016-01-20
JP5544429B2 (ja) 2014-07-09
KR20120112568A (ko) 2012-10-11
WO2011072978A1 (en) 2011-06-23
US20120275460A1 (en) 2012-11-01
US9282064B2 (en) 2016-03-08
CN102656850A (zh) 2012-09-05
JP2013514691A (ja) 2013-04-25
EP2337274A1 (en) 2011-06-22
EP2337274B1 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
KR101371858B1 (ko) 복수의 데이터를 프로세싱하기 위한 방법 및 통신 패킷들을 스위칭하기 위한 스위칭 디바이스
US9866540B2 (en) System and method for rule matching in a processor
US11811902B2 (en) Resilient hashing for forwarding packets
US7688761B2 (en) Method and system for classifying packets in a network based on meta rules
US8665875B2 (en) Pipelined packet switching and queuing architecture
EP1754349B1 (en) Hardware filtering support for denial-of-service attacks
US8761182B2 (en) Targeted flow sampling
CN110035009B (zh) 用于在网络设备内处理分组的设备及方法、计算机可读介质
US8555374B2 (en) High performance packet processing using a general purpose processor
EP3281369A1 (en) Server load balancing
WO2011150074A2 (en) Consistent updates for packet classification devices
US11314417B2 (en) Methods and systems for NVMe target load balancing based on real time metrics
US9172645B1 (en) Methods and apparatus for destination based hybrid load balancing within a switch fabric
US20210185153A1 (en) Hybrid Fixed/Programmable Header Parser for Network Devices
US10616116B1 (en) Network traffic load balancing using rotating hash
US9515929B2 (en) Traffic data pre-filtering
US10887234B1 (en) Programmatic selection of load balancing output amongst forwarding paths
CN113556364B (zh) 一种基于DPDK的DDoS实时防御系统
US20230004395A1 (en) Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline
US11374872B1 (en) Methods and systems for adaptive network quality of service for latency critical applications
US8040882B2 (en) Efficient key sequencer
KR100770643B1 (ko) Tcam을 이용한 고성능 패킷 분류 방법 및 그 장치
US9152494B2 (en) Method and apparatus for data packet integrity checking in a processor
CN115865802B (zh) 虚拟实例的流量镜像方法、装置、虚拟机平台及存储介质
CN105763296B (zh) 用于在处理资源之间调度网络帧的方法

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