KR20010050528A - 입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형패킷처리장치 및 방법 - Google Patents

입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형패킷처리장치 및 방법 Download PDF

Info

Publication number
KR20010050528A
KR20010050528A KR1020000055090A KR20000055090A KR20010050528A KR 20010050528 A KR20010050528 A KR 20010050528A KR 1020000055090 A KR1020000055090 A KR 1020000055090A KR 20000055090 A KR20000055090 A KR 20000055090A KR 20010050528 A KR20010050528 A KR 20010050528A
Authority
KR
South Korea
Prior art keywords
packet
digest information
processing
digest
unit
Prior art date
Application number
KR1020000055090A
Other languages
English (en)
Other versions
KR100370937B1 (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 KR20010050528A publication Critical patent/KR20010050528A/ko
Application granted granted Critical
Publication of KR100370937B1 publication Critical patent/KR100370937B1/ko

Links

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

고속패킷처리를 실현할 수 있고, 프로토콜 변화에 대한 적응성이 뛰어나며 네트워크 환경에 따라서 최적의 기능을 실현하는 체계를 선택할 수 있는 능력을 가진 패킷처리장치가 개시된다. 본 발명의 패킷처리장치는 입력패킷으로부터 소정의 복수개의 비트 시퀀스들을 추출하고, 이 소정의 복수개의 비트 시퀀스들의 값에 따라 입력패킷에 적용될 처리중 적어도 일부분을 특정하는 다이제스트 정보를 생성하는 다이제스트 정보 생성유닛과; 상기 다이제스트 정보 생성유닛에 의해 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령 시퀀스를 사용하여 입력패킷을 처리하는 패킷처리유닛;을 구비하고, 상기 다이제스트 정보 생성유닛은 상기 패킷처리유닛이 하나의 패킷에 대한 처리를 수행하는 동안에 다음 입력 패킷에 대하여 다이제스트 정보를 생성한다.

Description

입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형 패킷처리장치 및 방법 {FAST AND ADAPTIVE PACKET PROCESSING DEVICE AND METHOD USING DIGEST INFORMATION OF INPUT PACKET}
본 발명은 패킷처리장치와 패킷처리를 수행하는 패킷처리방법에 관한 것이다.
최근에, 인터넷상에서 소통량이 급격하게 증가하면서, 인터넷 상에서 정보를 전송하는 패킷의 고속처리를 실현할 수 있는 장치에 대한 요구가 증가하고 있다. 패킷 처리는 외부에서 입력되는 패킷의 헤더 부분을 참조하고 그 헤더 부분에 포함된 정보에 따라 원하는 처리를 수행함으로써 실현된다.
여기에서, 원하는 처리는 예컨대 다음과 같은 처리를 포함하는 여러 처리들중 하나일 수 있다.
(1) 패킷의 헤더부분에 포함된 수신처 어드레스를 참조하여 패킷을 특정 출력링크로 전송하는 처리.
(2) 우선 레벨 정보 또는 패킷을 사용하여 통신을 수행하는 응용프로그램의 속성을 나타내는 정보(패킷의 헤더부분에 포함된)를 참조하여 예컨대 더 높은 우선 레벨을 갖는 패킷이 다른 패킷이 전송되어야 할 출력링크로 전송되는 경우 그 다른 패킷의 전송이 일시 정지하도록 각 출력링크에서 패킷 전송 타이밍을 제어하는 처리.
(3) 패킷의 길이가 특정 출력포트에서 허용되는 최대패킷길이를 초과하는 경우에 소정의 방법에 따라 패킷을 분할하는 처리.
(4) 패킷 상의 특정정보를 증분시키고 이 특정정보가 소정의 값에 도달하면 그 패킷을 버리는 처리.
(5) 필요에 따라 소정의 방법으로 수신처 어드레스 또는 송신처 어드레스의 값을 재기록하는 처리.
(6) 필요에 따라 패킷의 에러정정코드를 계산하는 처리.
역사적으로, 패킷처리장치는 미니 컴퓨터나 마이크로 컴퓨터와 같은 정보처리장치로 실현되었다. 이 경우에 있어서, 상술한 바와 같이 각 패킷에 대하여 수행될 특정 처리는 미니 컴퓨터나 마이크로 컴퓨터에서 특정 명령 시퀀스를 실행함으로써 실현된다. 그러나, 이러한 체계(scheme)에서는 고속 패킷처리를 실현하기 어려웠다. 이러한 이유로, 최근에는 하드웨어를 사용하여 패킷처리를 구현함으로써 고속 패킷처리를 실현하는 것이 통상적이다.
그러나, 인터넷 프로토콜은 빈번하게 변화하는 특성을 가지고 있다. 예를 들면, 패킷 내의 수신처 어드레스와 송신처 어드레스는 몇년전까지 인터넷 내부에서 재기록되지 않았으나, 최근의 인터넷 붐에 기인한 IP 어드레스 부족의 해결책으로서 최근 이삼년 사이에 인터넷 내부에 수신처 어드레스와 송신처 어드레스를 재기록하는 것이 통상적으로 되었다.
이와 같이, 네트워크가 동작하는 동안에 문제가 일어날 때마다 그 문제를 해결하기 위하여 프로토콜이 변화되도록 하는 방식으로 인터넷이 동작된다. 결과적으로, 인터넷 프로토콜은 계속 변화될 것이다. 따라서, 하드웨어를 사용하여 프로토콜 처리를 구현함으로써 고속 패킷처리를 실현하는 상기 체계는 프로토콜에 아주 약간의 변화만 있는 경우에도 그 하드웨어로 처리를 수행하는 것이 불가능해지며, 따라서 패킷처리장치를 매우 자주 교체하여야 한다는 문제점을 가진다.
또한, 예컨대 IP패킷의 헤더에 포함된 수신처 어드레스를 분석하는 처리와 같은 패킷처리에 요구되는 기능들을 실현하기 위한 체계에 대하여 다양하게 제안되었지만, 다른 기능을 실현하는 체계의 다른 장점들에 비추어 각 기능실현방법은 그 자체의 바람직한 응용분야를 갖는다. 그러나, 종래의 패킷처리장치는 이러한 복수개의 기능실현체계로부터 용이하게 적절한 체계를 선택하는 방법을 제공하지 않았으며, 여러 패킷처리 체계로부터 선택된 오직 하나의 특별한 체계만이 종래의 패킷처리장치에서 구현되었다. 결과적으로, 예컨대 다른 패킷유형들의 혼합율과 같은 네트워크 환경에 따라 최적의 구성을 선택하는 것이 불가능하여, 효율적으로 패킷처리를 수행할 수 없었다.
상술한 바와 같이, 종래의 패킷처리장치는 다음과 같은 문제점을 가지고 있다. (1) 장치가 미니 컴퓨터 또는 마이크로 컴퓨터에서 특정 명령 시퀀스를 실행하여 실현되는 경우에 고속처리를 실현하기 어렵다. (2) 장치가 하드웨어를 사용하여 패킷처리를 구현함으로써 실현되는 경우에 프로토콜 변화에 유연하게 대처할 수 없다. (3) 네트워크 환경에 따라 최적의 기능실현체계를 선택할 수 없다.
본 발명의 목적은 고속패킷처리를 실현할 수 있고, 프로토콜 변화에 대한 적응성이 뛰어나며 네트워크 환경에 따라서 최적의 기능을 실현하는 체계를 선택할 수 있는 능력을 가진 패킷처리장치와 패킷처리방법을 제공하는 것이다.
도 1은 본 발명의 제1 실시예에 따른 패킷처리장치의 예시적 구성을 나타내는 블록도이다.
도 2는 도 1의 장치중 다이제스트 생성유닛의 예시적 구성을 나타내는 블록도이다.
도 3은 도 2의 다이제스트 생성유닛중 헤더정보 추출유닛에 의해 추출될 예시적 필드를 나타내는 도면이다.
도 4는 본 발명의 제1 실시예에 따른 패킷처리장치의 다른 예시적 구성을 나타내는 블록도이다.
도 5는 도 1의 패킷처리장치중 패킷처리유닛의 예시적 구성을 나타내는 블록도이다.
도 6은 본 발명의 제1 실시예에 따른 패킷처리장치의 또 다른 예시적 구성을 나타내는 블록도이다.
도 7은 본 발명의 제1 실시예에 따른 패킷처리장치의 또 다른 예시적 구성을 나타내는 블록도이다.
도 8은 본 발명의 제1 실시예에 따른 패킷처리장치의 또 다른 예시적 구성을 나타내는 블록도이다.
도 9는 본 발명의 제2 실시예에 따른 패킷처리장치의 예시적 구성을 나타내는 블록도이다.
도 10은 도 9의 패킷처리장치중 마이크로명령 시퀀스 테이블의 예시적 구성을 나타내는 도면이다.
도 11은 본 발명의 제2 실시예에 따른 패킷처리장치의 다른 예시적 구성을 나타내는 블록도이다.
도 12는 도 11의 패킷처리장치중 매크로명령 시퀀스 테이블의 예시적 구성을 나타내는 도면이다.
도 13은 도 11의 패킷처리장치중 마이크로명령 시퀀스 테이블의 예시적 구성을 나타내는 도면이다.
본 발명의 일 태양에 따른 패킷처리장치는, 입력패킷으로부터 소정의 복수개의 비트 시퀀스들을 추출하고, 이 소정의 복수개의 비트 시퀀스들의 값에 따라 입력패킷에 적용될 처리중 적어도 일부분을 특정하는 다이제스트 정보를 생성하는 다이제스트 정보 생성유닛; 및 상기 다이제스트 정보 생성유닛에 의해 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령 시퀀스를 사용하여 입력패킷을 처리하는 패킷처리유닛;을 구비하고, 여기에서 상기 다이제스트 정보 생성유닛은 상기 패킷처리유닛이 하나의 패킷에 대한 처리를 수행하는 동안에 다음 입력 패킷에 대하여 다이제스트 정보를 생성한다.
본 발명의 다른 태양에 따른 패킷처리방법은 (a) 입력패킷으로부터 소정의 복수개의 비트 시퀀스를 추출하고, 복수개의 소정의 비트 시퀀스들의 값에 따라 입력패킷에 적용될 처리중 적어도 일부분을 특정할 수 있는 다이제스트 정보를 생성하는 단계; 및 (b) 상기 단계(a)에 의해 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령시퀀스를 사용하여 입력패킷을 처리하는 단계;를 구비하고, 상기 단계(b)가 하나의 패킷에 대하여 처리를 수행하는 동안에 상기 단계(a)는 다음 입력패킷에 대하여 다이제스트 정보를 생성한다.
이하 첨부도면 및 상세한 설명을 읽고 나면 본 발명의 특징 및 장점들이 명료해질 것이다.
도 1 내지 도 8을 참조하면서, 본 발명에 따른 패킷처리장치 및 패킷처리방법의 제1 실시예를 상세히 설명한다.
도 1은 본 발명의 제1 실시예에 따른 패킷처리장치(또는 메시지 처리장치)의 예시적인 구성를 나타낸다.
도 1에 도시된 바와 같이, 제1 실시예의 패킷처리장치는 다이제스트(digest) 생성유닛(101), 패킷처리유닛(패킷 포워더(forwarder); 102) 및 패킷전송유닛(103)을 구비한다.
이 패킷처리장치에 도달하는 패킷은 제일 먼저 다이제스트 생성유닛(101)에 입력된다.
다이제스트 생성유닛(101)은 들어오는 패킷의 헤더부분을 참조하여, 소정의 복수개의 비트 시퀀스(여기에서 비트 시퀀스는 1 비트만을 포함할 수 있다)를 이 헤더부분으로부터 추출하고, 추출된 복수개의 비트 시퀀스에 패턴 매칭과 논리계산등을 적용하여 그 패킷의 다이제스트 정보를 생성하는 처리를 수행한다.
여기서, "비트 시퀀스"란 예컨대 프로토콜 스펙(specification)에 의해 정의되는 패킷 헤더 내부의 필드 전체 또는 일부분을 나타낸다.
상술한 바와 같이, 다이제스트 정보는 각 패킷의 헤더부분의 소정의 위치를 참조하여 얻어지는 패킷유형을 나타내는 정보로서, 패킷유형은 다음 4개의 타입중 어느 하나로 주어질 수 있다.
(1) 이더넷 프레임의 IPv4 패킷, UDP;
(2) 이더넷 프레임의 IPv4 패킷, TCP SYN/FIN 메시지;
(3) 이더넷 프레임의 IPv4 패킷, ICMP 메시지;
(4) 기타.
다이제스트 정보는 다이제스트 정보가 4개의 타입으로 주어지는 경우에 2비트 데이터일 수 있다는 점에 주목하여야 한다.
상술한 것 이외에 다이제스트 생성유닛(101)에 의해 생성될 다이제스트 정보에 대하여 다른 다양한 구성을 고려해보는 것도 물론 가능하다. 예컨대, 브로드캐스트(broadcast), 멀티캐스트(multicast) 또는 유니캐스트(unicast)와 같이 입력된 이더넷 프레임 또는 IP 패킷의 분류에 따라 다이제스트 정보를 구성하거나 또는 UDP나 TCP와 같이 입력된 IP패킷내에 전재된 전송 프로토콜의 분류에 따라 다이제스트 정보를 구성할 수도 있다. 그러나, 간단히 하기 위하여 이하에서는 다이제스트 정보가 상술한 4개의 타입으로 주어지는 경우에 대하여 설명한다.
다이제스트 정보는 제1 실시예에서 기술된 패킷유형을 나타내는 정보 이외에도, 라우팅(routing) 테이블을 위한 최적의 검색 알고리즘을 선택하도록 패킷의 수신처 어드레스로부터 생성된 정보를 포함하거나 또는 QoS(서비스 품질)를 제공하기 위하여 패킷의 우선순위를 나타내는 정보를 포함할 수도 있다는 점에 역시 주목하여야 한다. 다이제스트 정보에 관한 이러한 여러가지 수정예를 이하 상세히 설명한다.
또한, 이하에서는 상술한 4가지 타입의 다이제스트 정보를 각각 "00", "01", "10", "11"로 표시한다.
다이제스트 정보가 생성되면, 다이제스트 생성유닛(101)은 이 다이제스트 정보를 대응 패킷과 함께 패킷처리유닛(102)으로 전송한다.
패킷처리유닛(102)은 패킷과 함께 제공되는 다이제스트 정보를 사용하여 이 패킷을 처리하여 출력한다.
예를 들어, 다이제스트 정보가 "00"인 경우, 이 패킷은 미리 제공되는 UDP 처리루틴을 활성화시킴으로써 (또는 이 시점에서 UDP 처리루틴을 생성하여 활성화시킴으로써) 처리된다. 다이제스트 정보가 "01" 또는 "10"인 경우에도 유사하게 취급된다. 다이제스트 정보가 "11"인 경우에는 "기타"로 분류되는 패킷이어서, 이 패킷은 범용 패킷 처리루틴을 활성화시킴으로써 그 패킷유형이 통상적으로 행해지는 것으로 분류되면서 처리된다.
또한, 패킷처리유닛(102)은 상술한 처리에 있어서 (또는 상술한 처리와는 별개로 활성화되는 처리에 있어서) 패킷이 출력될 출력단자(출력 인터페이스)를 특정하는 정보와 패킷을 전송하는 우선 레벨을 특정하는 정보를 포함하는 전송제어정보를 생성하여 출력하는 처리를 수행한다. 전송제어정보를 갖는 패킷은 이어서 패킷 전송유닛(103)으로 입력된다.
패킷 전송유닛(103)은 패킷에 구비된 전송제어정보에 따라 특정 출력단자를 선택함으로써 입력된 패킷을 출력하는 처리를 수행한다.
도 2는 다이제스트 생성유닛(101)의 예시적인 구성을 나타낸다.
이 다이제스트 생성유닛(101)은 입력된 패킷의 헤더 부분에서 소정의 섹션을 추출하는 헤더정보 추출유닛(201)과 그리고 헤더정보 추출유닛(201)에 의해 추출된 정보가 소정의 비트 패턴내에 있는지의 여부를 판단함으로써 다이제스트 정보를 생성하는 패턴매칭유닛(202)을 구비한다.
본 실시예에서 사용된 구체적인 예에서, 헤더정보 추출유닛(201)은 도 3에 도시된 바와 같은 섹션들, 즉 다음의 섹션들을 추출한다.
- 이더넷 헤더내의 프로토콜 타입 필드(301);
- IP헤더 내의 버젼(version) 필드(302);
- IP 헤더내의 프로토콜 필드(303)
- TCP 헤더내의 SYN 플래그(304);
- TCP 헤더내의 FIN 플래그(305).
패턴 매칭유닛(202)은 추출된 필드 값을 확인하여 상술한 4가지 타입으로부터 출력될 다이제스트 정보의 타입을 판단한다.
예를 들어, 이더넷 헤더 내의 프로토콜 타입 필드가 값 "0800"을 가지고, IP헤더 내의 버젼 필드가 값 "4"를 가지고, IP 헤더내의 프로토콜 타입 필드가 값 "6"을 가지며, TCP 헤더내의 SYN 플래그 또는 FIN 플래그가 온인 경우 TCP SYN/FIN 메시지로 판단된다.
다이제스트 정보는 도 2에 예시적으로 도시된 패턴 매칭유닛(202)에서 패턴 매칭을 수행함으로써 구해지지만, 이 대신에 입력으로서 헤더정보 추출유닛(201)으로부터 주어진 비트 패턴을 사용하여 다이제스트 정보를 출력하는 논리계산을 수행함으로써 다이제스트 정보를 구할 수도 있다는 것을 주목하여야 한다.
또한, 다이제스트 생성 유닛(101)에 있어서, 추출될 복수개의 비트 시퀀스와 패턴매칭을 사용하는 경우 패턴매칭에 사용되는 비트 패턴 또는 논리계산을 사용하는 경우 논리계산의 내용은 바람직하게는 외부로부터 변화될 수 있어야 한다는 점에 주목하여야 한다. 이러한 방식으로, 다이제스트 정보의 상세한 구성을 변화시킴으로써, 프로토콜 스펙(specification) 변화에 유연하게 대처하고 본 패킷처리장치가 적용되는 환경에서 패킷유형의 혼합율에 따라 다이제스트 정보를 최적화하는 것이 가능하게 된다.
또한, 도 4에 도시된 바와 같이 다이제스트 생성유닛(101)은 입력 패킷으로부터 추출된 소정의 정보 (또는 이러한 소정의 정보를 처리함으로써 얻어지는 정보)를 다이제스트 정보와 함께 패킷처리유닛(102)에 추가정보(파라미터)로서 줄 수 있다. 수신된 파라미터들을 사용하면, 패킷처리유닛(102)은 고속처리를 실현할 수 있다.
도 5는 패킷처리유닛(102)의 예시적인 구성을 나타낸다.
이 패킥 처리유닛(102)은 프로그램 메모리(401), 프로세서(402), 패킷 버퍼(403) 및 입력/출력 포트(404)를 가진다.
프로그램 메모리(401)는 다른 다이제스트 정보 타입들에 대응하는 처리루틴을 저장한다.
본 실시예에 사용된 구체적인 예의 경우에, 프로그램 메모리(401)는 다음을 저장하는데,
(1) UDP 처리루틴(4011)
(2) TCP SYN/FIN 처리루틴(4012)
(3) ICMP 처리루틴(4013)
(4) 범용 패킷 처리루틴(4014)
이는 다음에 대응한다;
(1) 이더넷 프레임의 IPv4 패킷, UDP;
(2) 이더넷 프레임의 IPv4 패킷, TCP SYN/FIN 메시지;
(3) 이더넷 프레임의 IPv4 패킷, ICMP 메시지;
(4) 기타.
다이제스트 생성유닛(101)으로부터 입력된 패킷은 패킷 버퍼(403)에 기록된다. 이 패킷과 함께 주어진 다이제스트 정보는 인터럽션(interruption) 신호로서 프로세서(402)에 주어진다. 프로세서(402)는 다이제스트 정보에 따라 대응 처리루틴을 활성화시켜 이 패킷을 처리하며 입력/출력 포트(404)를 통해 패킷 전송유닛(103)으로 전송제어정보와 함께 상기 패킷을 출력한다.
또한 미리 실행가능한 처리루틴을 제공하는 것보다는 실행가능한 처리루틴이 생성될 수 있는 (비실행)프로그램을 제공하여 다이제스트 정보를 받는 시점에서 대응 프로그램으로부터 실행가능한 처리루틴을 생성할 수 있다는 것에 주목하여야 한다. 이는 예컨대 2진 데이터로 유지되는 실행가능한 처리루틴이 생성될 수 있는 프로그램의 소정부분에 도 4에 도시된 추가정보에 따라 생성된 비트 시퀀스들을 구비함으로써 실현될 수 있다.
여기에서, 각 패킷의 속성들은 다이제스트 생성유닛(101)에 의해 미리 구별되며 이 속성들에 따른 처리루틴이 활성화되어 모든 패킷에 대하여 범용 패킷 처리루틴을 실행하는 것에 비하여 처리루틴 내의 브랜치(branch)들의 개수를 줄이는 것이 가능하다. 따라서, 프로세서 내부에서 파이프라인에 대한 장애가 줄어들 수 있으며 이 속성들에 따라 처리루틴에 최적화를 적용할 수 있어서, 패킷처리장치의 시스템효율을 개선시킬 수 있다.
이하에서, 몇가지 더 상세한 예시적 변형예를 기술한다.
먼저, 다이제스트 생성유닛(101)과 패킷처리유닛(102)을 독립적으로 실행하는 경우에 대하여 설명한다.
상술한 바와 같이, 패킷유형을 분류하면서 패킷을 처리하는 통상적인 방식은 많은 브랜치들을 포함하며 시간을 낭비한다는 문제점을 가지고 있다. 이러한 점 때문에, 본 실시예에서는 유형들의 분류와 연관된 브랜치들이 다이제트 생성유닛(101)에 의해 만들어지고 패킷의 수신처로부터 출력경로를 구하는 처리 등은 패킷처리유닛(102)에서 수행된다.
다이제스트 생성유닛(101)과 패킷처리유닛(102)은 독립적으로 동작하는 것이 바람직하다. 이를 위하여, 예컨대 패킷 큐(queue)를 통해 이 유닛들을 접속시킬 필요가 있다. LSI를 사용하여 구현하는 경우에는 메모리 양을 덜 요구하고 그리고 이 메모리에 억세스(access)하는 횟수를 덜 요구하는 구성을 채택하는 것이 바람직하다.
도 6의 구성에 있어서, 외부로부터 입력된 패킷은 메모리 통제유닛(121)의 제어를 받으면서 패킷 메모리(122)에 저장된다. 이어서, 패킷이 저장되는 메모리 어드레스와 입력 인터페이스의 상태를 나타내는 정보가 제1 큐(123)에 단일 엔트리(entry)로서 내장된다.
다이제스트 생성유닛(101)은 제1 큐(123)로부터 처리될 패킷을 저장하고 있는 메모리 어드레스를 포함하는 엔트리를 취하고, 메모리 통제유닛(121)을 통해 패킷 메모리(122)에 억세스함으로써 필요한 정보를 얻으며, 다이제스트 생성을 수행한다.
생성된 다이제스트 정보는 패킷의 메모리 어드레스 및 입력 인터페이스 상태 정보와 함께 단일 엔트리로서 제2 큐(124)에 삽입된다.
패킷처리유닛(102)은 제2 큐(124)로터 처리될 패킷을 포함하고 있는 엔트리를 취하고, 다이제스트 정보에 따라 처리를 수행한다. 이 시점에서 상기 처리는 필요에 따라 패킷 메모리(122)상에서 패킷에 적용된다. 그 후에, 처리가 적용될 어드레스저장패킷과 출력 인터페이스를 특정하는 정보가 패킷 전송유닛(103)에 전송된다. 패킷 전송유닛(103)은 이 정보에 따라 특정 패킷을 특정 출력단자에 전송한다.
이렇게 구성하게 되면, 다이제스트 생성유닛(101)과 패킷처리유닛(102)은 서로 다른 패킷에 대하여 그 각각의 처리를 수행할 수 있어서 요구되는 메모리 양을 줄이면서 파이프라인 병렬동작이 실현될 수 있다. 또한, 다이제스트 생성유닛(101)과 패킷처리유닛(102)의 처리시간이 다른 패킷들에 대하여 다른 경우조차도 제2 큐(124)를 위하여 충분한 길이를 보장함으로써 처리시간의 흔들림(jitter)을 흡수하는 것이 가능하다.
다음에, 도 7에 도시된 구성과 그 동작을 상기 예시적 구성의 추가 변형예로서 설명한다.
도 7의 구성에 있어서, 패킷은 외부로부터 다이제스트 생성유닛(101)으로 입력 인터페이스의 상태를 나타내는 정보와 함께 입력된다. 다이제스트 생성유닛(101)은 즉시 다이제스트 생성을 수행하여 생성된 다이제스트 정보를 패킷 및 입력 인터테이스 상태 정보와 함께 단일 엔트리로서 제3 큐(125)에 삽입한다.
패킷처리장치(102)는 제3 큐(125)에 입력된 패킷을 취하여 첨부된 다이제스트 정보에 따라 이 패킷에 처리를 적용하고, 이 패킷이 출력되어야 하는 출력단자를 특정하는 정보와 함께 이 패킷을 패킷 전송유닛(103)에 출력한다. 패킷 전송유닛(103)은 이 정보들에 따라 이 패킷을 특정 출력단자로 전송한다.
이 경우에 있어서, 다이제스트 생성유닛(101)은 패킷 메모리(122)를 참조하지 않고 다이제스트 생성을 수행하는데, 이는 다이제스트 생성유닛(101)과 패킷처리유닛(102)에 의한 패킷 메모리(122)로의 억세스 충돌이 감소될 수 있다는 장점을 갖는다. 또한, 다이제스트 생성유닛(101)으로의 입력 인터페이스의 기능들의 일부분인 기능들을 병합하는 것이 가능하다. 이러한 경우의 예는 링크층에서의 프레임 동기화 및 CRC 계산에 의해 표시되는 비트 스트림(bit stream)들을 취급하는 것을 포함한다.
다음에, 도 5에 도시된 패킷처리유닛(102)의 더 상세한 동작에 의해 패킷 도착시점에서 인터럽션을 실현하는 예시적인 구성을 설명한다. 인터럽션 처리를 실행하는 경우에 있어서, 인터럽션의 승인을 금지하는 방법을 포함하는 기술적인 과제들이 있다.
이 경우에, 프로세서(402)는 다이제스트 정보를 저장하는 2개의 레지스터 세트를 가진다. 하나는 최근에 처리된 패킷에 대응하는 다이제스트 정보를 저장하기 위한 것이고, 다른 하나는 처리계속중인 상태에 있는 패킷에 대응하는 다이제스트 정보를 저장하기 위한 것이다. 이하. 전자를 처리 레지스터라 하고 후자를 미결 레지스터라 한다.
다이제스트 정보가 프로세서(402)에 도착하면, 이 다이제스트 정보는 먼저 미결 레지스터에 저장된다. 다이제스트 정보가 미결 레지스터에 도착하게 되면, 인터럽션 수(number)가 다이제스트 정보로부터 생성되고 프로세서(402)에 대한 인터럽션이 시도된다.
인터럽션이 프로세서(402)에서 승인되면, 제어가 인터럽션 취급루틴인 패킷 처리프로그램으로 전송된다. 동시에, 다이제스트 정보가 처리 레지스터에 전송된다. 패킷처리유닛(102)과 다이제스트 생성유닛(101) 사이에 큐가 있다면, 이 큐에서 대기하고 있는 다이제스트 정보가 앞으로 전진하게 되고, 그 상위부분이 미결 레지스터에 전송된다.
프로세서(402)는 패킷 처리프로그램을 실행하는 동안 인터럽션 불능 상태 (interruption disabled state)에 있다. 패킷 처리가 완료되는 시점에서 인터럽션 가능(enable) 명령을 실행함으로써 다음 다이제스트 정보의 처리가 개시된다.
다이제스트 정보 생성과 패킷 처리루틴 구성은 패킷에 적용될 처리에 있어서의 차에 따른 분류의 예시적 경우에 대하여 상술한 바와 같지만, 처리의 차에 따른 분류 이외의 분류가 또한 가능하다.
다이제스트 정보의 다양한 변형을 이하 설명한다.
예를 들어, 동일한 처리를 수행하는 경우에서 조차도, 이러한 처리를 실현하는 복수의 방법이 존재할 수 있다. 패킷처리유닛(102)에서, 키(key)로서 패킷 헤더의 특정필드를 사용하여 데이터베이스(미도시)를 검색하는 것이 자주 수행될 것이다. 데이터베이스 검색용의 알고리즘이 복수개 있고, 계산량이나 검색의 지연이 키의 타입 및 데이터베이스 상에서의 그 키의 분산에 따라 다르다고 하자. 이는 키로서 네트워크 어드레스를 사용하여 출력단자(출력 인터페이스)를 결정하기 위한 데이터베이스 검색에서 자주 직면하는 경우이다.
4개의 검색 알고리즘이 있다고 하고, 검색키는 32 비트 필드로 주어진다고 하자. 또한, 이 32 비트 공간은 128개의 동일한 부분으로 분할된다고 하면, 평균에서의 가장 효율적인 검색 알고리즘이 각 부분에 대하여 결정될 수 있다. 이러한 동작은 데이터베이스의 특성에 따라 결정되어 패킷 처리의 실시간 처리와는 별개로 오프라인으로 수행된다. 결과적으로, 32 비트중 상위 7비트와 그리고 검색 알고리즘을 특정하는 2 비트 식별자 사이의 대응이 결정된다. 또한, 다이제스트 정보로 하여금 검색 알고리즘을 특정하는 식별자를 포함하도록 하고 다이제스트 생성유닛(101)으로 하여금 상술한 바와 같이 32 비트 네트워크 어드레스중 상위 7비트로부터 검색 알고리즘을 특정하는 정보를 생성하도록 하는 것이 가능하다. 이러한 다이제스트 정보는 반도체 메모리나 또는 몇가지 논리계산에 의해 실현되는 탐색표(look-up table)에 의해 생성될 수 있다.
또한, 다이제스트 생성에 사용되는 복수의 비트 시퀀스가 다이제스트 생성유닛(101)에서 패킷 헤더로부터 추출되며, 또한 이러한 비트 시퀀스들은 패킷처리유닛(102)에서 자주 다시 추출되도록 할 필요가 있다는 것에 주목하라. 비트 시퀀스 추출은 정상적으로는 시프트(shift) 계산이나 마스크(mask) 계산과 연관되며, 이러한 동작들이 다이제스트 생성유닛(101)에서 일단 행해지면 패킷처리유닛(102)에서 이러한 동작들을 다시 수행할 필요는 없다. 추출된 정보는 패킷처리장치(102)에 직접 다이제트 정보의 일부분으로서 통보되어 불필요한 반복을 생략할 수 있다. 이러한 방식으로, 패킷처리장치(102)의 처리부하가 줄어들 수 있고 패킷 버퍼에 대한 판독 요청이 줄어들 수 있어서 시스템 효율을 개선시킬 수 있다.
다음에, 다이제스트 생성유닛(101)으로부터 패킷처리유닛(102)으로 다이제스트 정보와 함께 파라미터들을 주는 경우를 설명한다.
다이제스트 생성유닛(101)에서, 상기 하나 또는 복수의 비트 시퀀스가 다이제스트 정보를 위하여 복수의 비트 시퀀스를 추출하는 것과는 별개로 추출될 수 있는데, (1) 상기 하나 또는 복수개의 비트 시퀀스, (2) 추가된 다이제스트 정보를 위하여 추출된 복수개의 비트 시퀀스 전체중 일부분의 데이터를 구비한 상기 하나 또는 복수개의 비트 시퀀스, (3) 상기 (1)의 데이터를 처리하여 얻어진 데이터, (4) 상기 (2)의 데이터를 처리하여 얻어진 데이터, (5) 다이제스트 정보를 위하여 추출된 복수개의 비트 시퀀스 전체중 일부분, 또는 (6) 상기 (5)의 데이터를 처리하여 얻어진 데이터 중에서 임의의 것이 패킷처리유닛(102)에 파라미터로서 주어질 수 있다. 또한 추가 정보로서 전체 패킷 헤더를 사용할 수도 있다는 것에 주목하라.
다이제스트 정보를 생성하는 프로세스에서 생성된 파라미터들은 (이러한 파라미터들이 다른 부작용을 야기시키지 않는 방식으로 사용되어야 하는 것이 바람직함에도 불구하고) 물론 패킷처리유닛(102)에서 효율적으로 사용될 수 있다.
예를 들어, 키로서 몇개의 필드의 값을 사용하여 데이터베이스(미도시)를 검색하는 것이 패킷처리유닛(102)에서 수행되며, 동일한 필드의 전체 또는 일부분을 사용하는 해쉬계산(hash calculation)이 다이제스트 정보를 생성할 때 수행되는 경우를 생각해보자. 이 경우에, 데이터베이스의 키들을 해쉬기능에 따라 데이터베이스들을 분류하여 더 작은 데이터베이스들의 직접곱으로 분할함으로써 탐색표적이 되는 키의 전체 개수를 줄이는 것이 가능하여, 탐색 알고리즘이 키의 전체 개수에 비례하는 계산양을 요구하는 경우에 더 고속의 처리를 실현할 수 있다.
다음과 같이 구성된 패킷처리장치(102)를 고려할 수도 있다.
패킷처리장치(102)에 있어서, 빈번하게 사용되는 데이터는 고속의 데이터베이스 검색을 실현하기 위하여 고속 캐쉬 메모리 내에 가끔 임시로 저장된다. 이 경우에, 캐쉬상의 데이터와 그리고 패킷에 대한 탐색 동작에서 요구되는 데이터 사이의 상관이 더 높은 경우에 캐쉬 적중율이 더 높게 되고 고속 실현에대한 기여도는 더 커지게 된다.
캐쉬상에서 매우 높게 상관된 데이터를 가질 가능성을 증가시키는 방법으로서, 선인출(prefetch) 동작으로 알려진 방법이 가끔 사용된다. 이는 가까운 장래에 참조될 가능성이 더 높은 데이터들을 미리 판독함으로써 메인 메모리로부터 캐쉬로의 판독이 투기적으로 이루어지는 동작이다. 이는 이러한 데이터의 판독에 기인하는 부작용이 없으며 캐쉬에서 판독된 데이터가 실제로 사용되는지 또는 사용되지 않는지에는 관심이 없는 경우에만 행해진다.
이러한 선인출 동작이 효율적이 되도록 하기 위하여, 선인출로부터 사용때가지의 시간은 메인 메모리로부터 캐쉬로의 판독에 기인하는 지연보다 충분히 길어야 한다. 달리 말하면, 선인출 동작을 미리 충분히 수행할 필요가 있다.
그러나, 선인출이 패킷의 필드들을 추출하여 이 패킷이 도착한 후에만 그 필드들에 따라 데이터베이스의 어드레스를 구함으로써 수행되는 경우에 선인출 동작이 효율적으로 되도록 충분히 긴 지연시간을 실현하기는 어렵다.
이러한 관점에서, 다이제스트 생성유닛(101)에서 추출될 비트 시퀀스들이 데이터베이스 검색용 키들이 될 부분들을 포함하는 비트 시퀀스들이며 데이터베이스 검색의 메모리 억세스용 어드레스로서 사용될 값들은 다이제스트 생성의 중간결과로서 얻어질 수 있는 다이제스트 생성방법을 채택하는 것이 가능하다. 더 자세하게는, 해쉬테이블이 데이터베이스 검색 알고리즘으로서 사용되며 다이제스트 정보는 상기 해쉬테이블 상에서 사용되는 동일한 해쉬 기능을 사용하여 생성되는 체계를 채택하는 것이 가능하다.
이 경우에, 해쉬 테이블에 억세스하는데 사용될 어드레스들은 다이제스트 생성과 관련된 계산들의 중간 결과로서 미리 계산되어, 이 어드레스들이 다이제스트 정보에 첨부된 파라미터들로서 패킷처리장치(102)에 통보된다. 패킷처리장치(102)에서, 선인출 동작은 패킷 처리루틴이 활성화되자마자 곧 데이터베이스들의 어드레스들로서 수신된 파라미터들의 값들을 사용하여 수행된다. 이러한 방식으로, 패킷처리에 있어서 가능한 한 제일 초기 단계에서 선인출동작을 수행하는 것이 가능해져 지연을 은폐하는 더 큰 효과가 실현될 수 있다.
다르게는, 수신된 파라미터들의 값들을 다이제스트 정보가 패킷 처리유닛(102)에 통지되는 시점에서 데이터베이스 검색의 메모리 어드레스들로 간주함으로써 데이터베이스 검색을 투기적으로 실행하는 것도 가능하다. 이 경우에, 패킷 처리루틴을 활성화시킬 때까지의 시간이 선인출에서 역시 지연을 숨기게 되어 선인출의 더 큰 효과를 기대하는 것이 가능하다.
다이제스트 정보의 다른 변형예로서, 다음과 같이 우선정보 내에 패킷의 우선 제어정보를 포함시키는 것도 가능하다.
먼저, 패킷의 우선 제어정보와 패킷의 상위 레벨 프로토콜을 특정하는 프로토콜 식별자의 조합이 고려될 것이다. 여기서, 패킷 처리방법은 그 각각이 특정되는 방법에 따라 크게 다르다. 상술한 바와 같이 단일 프로그램에 의하여 그 양자를 실현시키는 것은 비효율적이다.
여기서, 우선 제어정보가 8비트이고 상위 레벨 프로토콜 스펙가 8비트라면, 간단한 조합은 16비트일 것이다. 그 각각에 대하여 최적화된 프로그램을 제공하는 것도 가능하다.
비슷한 유형의 처리를 모아서 취급하는 것도 가능하다. 예를 들어, 간단한 조합보다 상당히 적은 프로그램을 사용한 처리가 단일 프로그램에 의하여 동일한 처리를 요하는 모든 프로토콜을 취급함으로써 실현될 수 있다.
8비트 우선 제어정보는 예컨대 비슷한 처리 유형의 분류에 따라 3비트의 식별자로 변환되며 8비트 프로코콜 수는 비슷한 처리유형의 분류에 따라 2 비트 식별자로 변환된다. 이렇게 얻어진 또는 몇개의 논리계산(간단한 사슬형일 수 있는)을 적용하여 얻어진 3비트 식별자와 2비트 식별자는 5비트의 식별자로 변환된다. 이는 다이제스트 정보로서 사용될 수 있을 것이다. 패킷처리장치(102)는 이 다이제스트 정보에 따라 활성화될 패킷 처리루틴을 활성화킨다. 본 명세서에서 설명된 예제에서는, 32개의 패킷 처리루틴 유형중 하나가 선택될 수 있다. 이 패킷 처리루틴의 각각은 3비트 식별자에 의해 특정되는 우선제어와 관련된 처리를 포함한다.
다음에, 다이제스트 정보로서 사용될 비트의 개수는 유한하다. 예를 들어, 패킥 처리루틴의 저장능력을 초과하여 분류유형을 생성하는 것은 불가능하다 (도 4의 4011 내지 4014). 또한 다이제스트 생성유닛(101)과 패킷처리유닛(102) 사이의 통신경로의 비트 폭에 기인하는 한계가 존재한다. 한편, 패킷의 더 분류된 유형들은 다이제스트 생성유닛(101)이 더 상세한 패킷 유형의 판단을 할 수 있어서 패킷 처리루틴이 더 특수화될 수 있고 패킷처리유닛(102)의 처리능력이 개선될 수 있다는 것을 의미한다.
따라서, 다이제스트 정보의 비트 길이를 한편으로는 가능한 한 길게 다이제스트 생성유닛(101)에 의해 생성되도록 설정하는 것이 바람직하지만, 다이제스트 정보의 개수는 다른 한편으로는 가능한 한 작게 패킷처리유닛(102)에 의해 동시에 취급되도록 설정하는 것이 바람직하다. 이하에서, 이러한 조건들을 모두 만족시키는 방법을 설명한다.
다이제스트 생성유닛(101)에서, 큰 개수의 비트들에 의해 주어진 정보는 가상 다이제스트 정보로서 생성된다. 패킷 처리루틴은 이러한 가상 다이제스트 정보에 대응하여 제공된다.
도 8에 도시된 바와 같이, 다이제스트 생성유닛(101)과 패킷처리유닛(102) 사이를 연결하는 인터페이스에서, 가상 다이제스트 정보를 패킷처리유닛(102)에 실제로 통지될 수 있는 다수의 비트들에 의해 주어지는 물리적인 다이제스트 정보로 변환하는 다이제스트 정보 변환유닛(120)이 구비된다. 패킷처리유닛(102)에 보내질 다이제스트 정보는 다이제스트 정보 변환유닛(120)을 사용하여 가상 다이제스트 정보를 물리적인 다이제스트 정보로 변환함으로써 생성될 수 있다.
가상 다이제스트 정보와 물리적인 다이제스트 정보 사이의 대응이 다이제스트 정보 변환유닛(120)의 제어기능에 의해 결정되는 경우에, 이러한 대응은 변환 테이블 기록 기능에 의하여 다이제스트 정보 변환유닛(120) 내부의 변환 테이블에 반영되며, 가상 다이제스트 정보의 분류된 유형에 대응하는 패킷처리유닛은 물리적인 다이제스트 정보에 대응하는 패킷 처리루틴으로서 패킷처리유닛(102)의 프로그램 메모리에 저장된다.
가상 다이제스트 정보는 물리적인 다이제스트 정보보다 더 긴 비트 길이를 가짐으로써 임의의 특정 물리적인 다이제스트 정보에 할당될 수 없는 몇 개의 가상 다이제스트 정보가 존재한다. "기타"를 표시하는 물리적인 다이제스트 정보는 이 가상 다이제스트 정보에 할당되고, 임의의 패킷 유형 분류없이 처리하는 범용 처리루틴이 "기타"를 나타내는 물리적인 다이제스트 정보에 대응하는 패킷 처리루틴으로서 할당되어 프로그램 메모리에 저장된다.
범용처리루틴의 처리성능은 특별 처리루틴의 처리능력보다 열등하여 범용 처리루틴을 활성화시키는 빈도를 최소로 억제하는 것이 바람직하다. 이러한 이유로 인하여, 변환 테이블 제어기능은 본 패킷처리장치가 놓여지는 환경하에서 "기타"를 선택하는 빈도를 가능한 한 낮게 하는 가상 다이제스트 정보와 물리적인 다이제스트 정보 사이의 이러한 대응을 찾아내어야 하며 변환테이블에 이러한 대응을 반영하여야 한다.
변환 테이블을 생성하는 더욱 효과적인 방법으로서, 다음의 구성을 사용하는 것도 가능하다.
가상 다이제스트 정보로부터 물리적인 다이제스트 정보로 변환하는 변환 테이블에 있어서, 입력 가상 다이제스트 정보가 들어오게 되는 시간의 개수를 계수하는 계수기가 각 가상 다이제스트 정보를 위하여 제공될 수 있다.
변환 테이블 제어기능은 개별적인 계수기 값에 따라 각각 가상 다이제스트 정보의 발생빈도를 얻을 수 있고, 물리적인 다이제스트 정보를 더 큰 발생빈도를 갖는 가상 다이제스트 정보로 할당시킬 수 있다.
더 자세하게는, 다른 절차를 채택하는 것이 가능하다.
초기 상태로서, "기타"를 나타내는 물리적인 다이제스트 정보는 모든 가상 다이제스트 정보에 할당된다. 이러한 상태에서 가상 다이제스트 정보의 발생빈도의 유의적인 측정이 행해지는 정도까지 패킷처리장치를 동작시킨 후에, 가상 다이제스트 정보와 물리적인 다이제스트 정보 사이의 대응이 변환 테이블에서 결정되어 반영된다. 그 후에, 발생빈도의 측정이 계속되며, 초기에 얻어진 대응과의 유의적 차가 식별가능하다고 판단되면 변환 테이블과 패킷 처리유닛이 새로운 대응을 반영하는 것들에 의해 대체된다.
도 9 내지 도 13을 참조하면서 본 발명에 따른 패킷 처리장치와 처리방법의 제2 실시예를 상세하게 설명한다.
도 9는 본 발명의 제2 실시예에 따른 패킷처리장치(또는 메시지 처리장치)의 예시적인 구성을 나타낸다.
도 9에 도시된 바와 같이, 제2 실시예의 패킷처리장치는 시스템 버스(501), 메인 메모리(502), 입력/출력 포트(503), 메모리 억세스 제어 유닛(504), 캐쉬(505), 파이프라인(506), 레지스터(507), 다이제스트 생성유닛(508), 패킷 처리명령 시퀀스 생성유닛(509), 마이크로 명령 시퀀스 테이블(510) 및 명령 시퀀스 큐(511)를 구비한다.
여기에서, 메모리 억세스 제어 유닛(504), 캐쉬(505), 파이프라인(506) 및 레지스터(507)는 메인 메모리(502)에 포함된 명령시퀀스들을 해석하고 실행하며 이 명령 시퀀스에 의해 특정된 처리에 데이터를 적용하는 명령처리유닛(520)을 구성한다.
여기서, 캐쉬(505)는 명령 시퀀스들의 일부분을 캐쉬하는 명령 캐쉬(505-1)와 그리고 처리가 적용될 데이터의 일부분을 캐쉬하는 데이터 캐쉬(505-2)로 분리된다.
또한, 명령을 실행하는 파이프라인(506)은 그 구성이 다수 있을 수 있지만, 인출(506-1), 디코드(506-2), 실행(506-3), 메모리 억세스(5064-4) 및 재기록(506-5)의 다섯 단계를 가지는 주지된 파이프라인으로 가정한다.
절차들을 처리하는 정보 및 처리될 데이터를 표시하는 명령 시퀀스들을 저장하는 메인 메모리(502), 외부에 대하여 데이터를 입력/출력하는 하드웨어인 입력/출력 포트(503), 패킷 처리명령 시퀀스 생성 유닛(509) 및 명령처리유닛(520)은 시스템 버스(501)에 의해 연결된다.
본 제2 실시예의 기본적인 구성 및 동작은 제1 실시예와 유사하므로 (변형예들의 설명도 동일하게 적용됨), 도 9의 구성에 대하여 특수한 특징들을 이하 주로 설명한다.
다이제스트 생성 유닛(508)은 제1 실시예와 유사한데, 외부로부터 들어오는 패킷의 헤더부분을 수신하여 다이제스트 정보를 생성시키며, 제1 실시예에서와 마찬가지로 추가정보(파라미터들)를 생성할 수도 있다.
패킷 처리명령 생성유닛(509)은 다이제스트 생성유닛(508)으로부터 다이제스트 정보를 수신하며, 이하에서 설명되는 절차에 따라 패킷을 처리하기 위하여 명령 시퀀스를 생성하고, 이를 명령 시퀀스 큐(511)에 보내는 기능을 가지고 있다. 여기서 생성될 명령 시퀀스는 마이크로 명령 시퀀스 테이블(510)의 내용을 참조함으로써 생성된다.
외부로부터 도착된 패킷은 입력/출력 포트(503)와 시스템 버스(501)를 통해 메인 메모리(502)의 상기 영역에 저장된다.
그 후에, 예컨대 데이터링크 층의 헤더, 네트워크 층의 헤더 및 이송층의 헤더와 같은 소정의 섹션들(복수의 비트 시퀀스들)이 추출되어 다이제스트 생성유닛(508)으로 보내진다. 이러한 처리는 메인 메모리(502)에 저장된 명령 시퀀스에 의해 실행될 수 있다. 이하, 이러한 소정의 섹션들을 설명을 위하여 처리제어정보라 한다. 또한, 이 처리제어정보는 패킷이 메인 메모리(502)에 저장되는 위치를 나타내는 정보를 포함할 수 있다.
입력/출력 포트(503)로부터 처리제어정보를 수신하게 되면, 다이제스트 생성유닛(508)은 그 정보로부터 다이제스트 정보를 생성한다.
다이제스트 생성유닛(508)으로부터 다이제스트 정보를 수신하면, 패킷 처리명령 시퀀스 생성유닛(509)은 명령 시퀀스를 생성한다.
여기서, 마이크로 명령 시퀀스 테이블(510)은 도 10에 도시된 바와 같이 각각의 패킷 유형에 따라 처리를 실현시키기 위하여 실행가능한 명령 시퀀스들 (마이크로 명령의 시퀀스들)을 잡고 있는다. 패킷 처리명령 시퀀스 생성유닛(509)은 마이크로 명령 시퀀스 테이블(510)로부터 생성된 다이제스트 정보에 따라 명령 시퀀스를 판독하고 이를 명령 시퀀스 큐(511)에 저장한다.
한편, 명령처리유닛(520)은 구비된 프로그램 계수기(미도시)에 따라 메인 메모리(502)로부터 명령캐쉬(505-1)로 명령 시퀀스들을 판독하고, 계속하여 파이프라인(506)을 사용함으로써 이 명령 시퀀스를 실행한다.
이 시점에서, 파이프라인(506)의 각 단은 다음과 같은 각각 할당된 역할을 한다;
- 인출(506-1)은 명령 캐쉬(505-1)로부터 명령을 인출한다.
- 디코드(506-2)는 이 명령을 디코드하고 이어지는 파이프라인과 레지스터(507)의 연산내용을 결정한다.
- 실행(506-3)은 디코드(506-2)의 명령에 따라 레지스터(507)로부터 주어진 데이터에 처리를 적용한다.
- 메모리 억세스(506-4)는 데이터 캐쉬(505-2)를 통해 실행(506-3)으로부터 주어진 데이터를 기록하거나 다음 단계로 넘긴다.
- 재기록(506-5)은 메모리 억세스(506-4)로부터 레지스터(507)로 주어진 데이터를 재기록한다.
이러한 패킷처리장치의 경우에, 메인 메모리(502)는 물론 명령 시퀀스 큐(511)에서 처리될 명령 시퀀스가 존재하여, 명령 시퀀스 큐(511)가 비어 있지 않은 등의 소정의 상태가 유지될 때마다, 인출(506-1)은 다르게는 메인 메모리(502)와 명령 시퀀스 큐(511) 상의 명령 시퀀스로부터 명령을 인출하고 이어지는 단계로 인출된 명령을 보낸다. 이러한 방식으로, 패킷 처리명령 시퀀스 생성유닛(509)에 의해 생성된 명령 시퀀스가 실행되고 이에 의해 원하는 처리가 들어오는 패킷에 대하여 수행된다.
복수의 독립적인 명령 시퀀스들 (즉, 메인 메모리(502)로부터의 명령 시퀀스와 그리고 명령 큐(511)로부터의 명령 시퀀스)를 이런식으로 다르게 실행하는 이 경우에, 레지스터는 각 명령시퀀스에 배타적으로 할당될 수 있다. 이렇게 하여, 레지스터 장애에 기인하는 파이프라인(506)의 멈춤이 방지될 수 있다.
제2 실시예에서, 다이제스트 정보에 대응하는 각 처리루틴을 위한 명령 시퀀스는 마이크로 명령 시퀀스 테이블(510)에 포함되지만, 이 마이크로 명령 시퀀스 테이블(510)은 이 테이블이 필요에 따라 각각의 처리루틴을 재기록함으로써 재구성될 수 있도록 재기록가능한 메모리 매체에 의하여 형성될 수 있다. 이런식으로, 마이크로 명령 시퀀스 테이블(510)이 메인 메모리(502) 상의 명령 시퀀스를 실행함으로써 재기록가능하도록 마이크로 명령 시퀀스 테이블(510)이 시스템 버스(501)에 연결되는 구성을 채택하는 것도 가능하다.
또한, 제2 실시예에서, 패킷 처리명령 시퀀스 생성유닛(509)에 의해 생성된 프로토콜 처리를 위한 명령 시퀀스 및 명령 처리유닛(520)의 프로그램 계수기(미도시)에 따라 메인 메모리(502)로부터 판독된 명령 시퀀스는 메인 메모리(502)(의 데이터 저장영역)를 용이하게 공유할 수 있다. 이러한 이유로, 예를 들면 메인 메모리(502) 상의 명령 시퀀스에 의해 실행되는 연산시스템에의 적용에 의하여 패킷 처리명령 시퀀스 생성유닛(509)으로부터 명령시퀀스에 의하여 실행된 프로토콜 처리연산의 제어감시를 용이하게 실현하는 것도 가능하다.
다음에, 다이제스트 정보는 패킷처리루틴을 선택하는 정보뿐만 아니라 패킷 자체에 관한 정보를 포함할 수 있다. 이러한 경우에, 패킷 처리명령 시퀀스 생성유닛(509)은 명령 테이블로부터 파이프라인으로 단순히 명령을 집어넣는 것보다는 다이제스트 정보를 사용하여 효율적인 명령 시퀀스를 생성시킬 수 있다. 이러한 경우의 구성을 이하 설명한다.
도 11은 이러한 경우의 패킷처리장치의 예시적인 구성을 나타낸다. 이하, 도 9의 구성과 다른 점을 주로 설명한다.
패킷에 대하여 수행될 처리루틴은 많은 공통 연산을 포함한다. 예를 들어, 헤더로부터 비트 시퀀스를 판독하고 이를 패킷 헤더 처리에서 재기록하는 동작과, 그리고 다수의 메모리 간접 어드레싱 또는 링크된 리스트 순회(traversal)에서의 해슁(hashing)과 키 매칭의 동작은 라우팅(routing) 테이블에 대한 억세스로서의 어드레스가능한 메모리 억세스를 만족시키는데, 패킷 처리에서 통상적으로 사용되는 기본적인 동작들이다. 이러한 동작들은 마이크로 명령 시퀀스들에 의하여 실현될 수 있고 이 마이크로 명령 시퀀스들을 단일 명령으로서 엔코드하는 매크로 명령이 정의될 수 있다. 그리고, 패킷 처리루틴은 도 12에 도시된 형태로 매크로 명령 시퀀스들로서 매크로 명령 시퀀스 테이블(도 11의 531)에 저장되며, 각 매크로 명령에 대한 마이크로 명령 시퀀스들은 마이크로 명령 시퀀스 테이블(도 11의 532)에 도 13에 도시된 형태로 저장된다.
다이제스트 생성유닛(508)으로부터 다이제스트 정보를 수신한 후에, 패킷 처리명령 시퀀스 생성유닛(509)은 매크로 명령 시퀀스 테이블(531)로부터 다이제스트 정보에 대응하는 매크로 명령 시퀀스를 판독하고, 마이크로 명령 시퀀스 테이블(532)로부터 그 매크로 명령 시퀀스의 각 매크로 명령을 위하여 대응하는 마이크로 명령 시퀀스들을 판독하며, 이들을 명령 시퀀스 큐(511)에 기록한다.
패킷 처리는 명령 처리유닛(520)의 파이프라인(506)에서 이 마이크로 명령 시퀀스들을 실행함으로써 수행된다.
패킷 처리명령 시퀀스 생성유닛(509)에서 마이크로 명령 시퀀스들을 생성함에 있어서, 마이크로 명령 시퀀스 테이블(532)로부터 판독된 마이크로 명령을 명령 시퀀스 큐(511)에 직접 기록하는 대신에, 더 짧고 더 효율적인 마이크로 명령들이 명령 처리유닛(520)에서 실행될 수 있도록 이 명령 시퀀스 큐(511)에 기록하기 전에 마이크로 명령상에 다음의 변환을 적용하는 것도 가능하다. 즉, 마이크로 명령이 다이제스트 정보를 참조하는 연산자를 가지는 경우 이 다이제스트 정보는 자료자신으로서 마이크로 명령에 포함될 수 있다.
예를 들어, 하나의 다이제스트 정보(D)가 데이터 캐쉬(505)의 어드레스(A)에 위치하는 경우, 다른 데이터(B)에 대하여 추가 계산을 수행하는 마이크로 명령 시퀀스가 다음의 명령 시퀀스에 의해 주어질 수 있다.
load R, mem[A] // load from memory, from address A into register R
add R, R, B // add R and B into register R
여기에서 메모리 억세스가 레지스터 치환이 되도록 자료자신을 참조하는 다이제스트 정보를 참조함으로써, 다음의 명령 시퀀스를 생성하는 것이 가능하다.
move R, D // move value D into register R
add r, r, B // add R and B into register R
다른 예로서, 마이크로 명령의 레지스터 수 부분에서 레지스터 수 대신에 자료자신으로서 다이제스트 정보의 내장을 특정하는 수를 특정하는 것이 가능한 경우 상기 명령 시퀀스는 다음과 같이 표현될 수 있다.
add R, digest-value, B // add digest value and B into register R
이 경우에, 패킷 처리명령 시퀀스 생성유닛(509)은 명령 시퀀스 중 다이제스트 정보 부분을 다음과 같이 다이제스트 명령의 실제값으로 대체함으로써 이 명령 시퀀스를 변환할 수 있다.
add R, D, B // add D and B into register R
이상 설명한 바와 같이, 제1 및 제2 실시예에서 패킷 유형은 들어온 패킷의 헤더 부분에 따라 먼저 분류되며, 그리고 패킷 처리에 대한 명령 시퀀스는 분류된 유형에 따라 생성되어, 프로토콜 처리의 명령 시퀀스에 포함된 조건부 브랜치의 수가 줄어든다. 종래의 경우, 헤더 부분의 필드를 계속해서 판독함으로써 패킷 유형을 분류하는 동안 필요한 처리가 수행될 때 많은 조건부 브랜치가 프로토콜 처리의 명령 시퀀스에 포함되어, 많은 파이프라인 장애가 발생하며, 이는 종래기술에 있어서 고속의 프로토콜 처리를 실현시키는데 주된 방해물이었다. 이러한 관점에서 본 발명의 경우 conditional branch의 수가 감소된 상태에서 명령 시퀀스에 의하여 프로토콜 처리를 실행하는 것이 가능해져, 파이프라인 장애들이 최소로 억제될 수 있으며 파이프라인 성능의 전체 장점을 취하는 프로토콜 처리를 실현시키는 것이 가능하게 된다.
상술한 바와 같이, 본 발명에 따르면 입력 패킷에 적용될 처리중 적어도 일부분을 특정할 수 있는 하나의 다이제스트 정보가 입력패킷으로부터 생성되고 입력 패킷은 이 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령시퀀스를 사용하여 처리되어, 고속의 패킷처리가 가능해지며 프로토콜 변화에 유연하게 대처하는 것이 가능해진다. 또한, 패킷 유형과 같은 네트워크 환경에 따라 다이제스트 정보를 적절히 변경시킴으로써 프로토콜 처리를 효율적으로 실현하는 것도 가능하다.
상술한 것 이외에도 본 발명의 신규함 및 장점들로부터 벗어나지 않으면서 본 발명 실시예들의 수정예 및 변형예들이 다수 이루어질 수 있다. 따라서, 이러한 모든 수정예 및 변형예들은 이하 첨부되는 청구범위 내에 포함되는 것으로 간주된다.

Claims (18)

  1. 입력패킷으로부터 소정의 복수개의 비트 시퀀스들을 추출하고, 이 소정의 복수개의 비트 시퀀스들의 값에 따라 입력패킷에 적용될 처리중 적어도 일부분을 특정할 수 있는 다이제스트 정보를 생성하는 다이제스트 정보 생성유닛; 및
    상기 다이제스트 정보 생성유닛에 의해 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령 시퀀스를 사용하여 입력패킷을 처리하는 패킷처리유닛;을 구비하고,
    여기에서 상기 다이제스트 정보 생성유닛은 상기 패킷처리유닛이 하나의 패킷에 대한 처리를 수행하는 동안에 다음 입력 패킷에 대하여 다이제스트 정보를 생성하는 패킷처리장치.
  2. 제1항에 있어서, 상기 패킷처리유닛은 캐쉬를 가지며 상기 다이제스트 정보 생성유닛에 의해 생성되는 다이제스트 정보에 따라서 데이터를 상기 캐쉬에 선인출하는 것을 특징으로 하는 패킷처리장치.
  3. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 각 다이제스트 정보에 대응하는 소정의 복수개의 비트 시퀀스들을 위한 비트 패턴을 가지며 입력패킷으로부터 추출된 소정의 복수개의 비트 시퀀스들의 값을 각 비트 패턴과 비교하여 다이제스트 정보를 생성하는 것을 특징으로 하는 패킷처리장치.
  4. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 소정의 다이제스트 정보에 대응하는 소정의 복수개의 비트 시퀀스들의 비트 패턴의 입력으로부터 출력으로서 소정의 다이제스트 정보를 얻기 위하여 입력패킷으로부터 추출된 소정의 복수개의 비트 시퀀스들의 값에 논리계산을 적용함으로써 다이제스트 정보를 생성하는 것을 특징으로 하는 패킷처리장치.
  5. 제1항에 있어서, 복수의 다이제스트 정보에 대응하는 복수개의 처라루틴을 저장하는 프로그램 메모리; 및
    인터럽션 신호로서 다이제스트 정보 생성유닛에 의해 생성된 다이제스트 정보를 사용하여, 다이제스트 정보 생성유닛에 의해 생성되는 다이제스트 정보에 의하여 특정되는 상기 프로그램 메모리에 저장된 복수개의 처리루틴중 하나를 활성화시고 실행시키는 프로세서;를 포함하는 것을 특징으로 하는 패킷처리장치.
  6. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 입력패킷으로부터 입력패킷의 처리를 위한 파라미터들을 또한 추출하고 패킷처리유닛에 다이제스트 정보와 함께 이 파라미터들을 넘겨주며;
    상기 패킷처리유닛은 상기 파라미터들과 그리고 다이제스트 정보에 따라 얻어진 명령 시퀀스를 사용하여 입력패킷을 처리하는 것을 특징으로 하는 패킷처리장치.
  7. 제1항에 있어서, 상기 패킷처리유닛은
    마이크로 명령 시퀀스들의 파이프라인 처리를 수행하는 명령처리유닛;
    복수의 다이제스트 정보에 대응하는 복수의 마이크로 명령 시퀀스들을 저장하는 마이크로 명령 테이블;
    다이제스트 정보 생성유닛에 의해 생성된 다이제스트 정보에 따라 명령 시퀀스 테이블로부터 선택된 마이크로 명령 시퀀스를 명령처리유닛에 넘겨주는 유닛;을 포함하는 것을 특징으로 하는 패킷처리장치.
  8. 제7항에 있어서, 상기 명령처리유닛은 명령시퀀스 테이블로부터 선택된 명령시퀀스와 그리고 입력패킷에 대한 처리 이외의 처리를 수행하는 메인 메모리에 기록된 명령시퀀스를 교대로 실행할 수 있는 것을 특징으로 하는 패킷처리장치.
  9. 제1항에 있어서, 상기 패킷처리유닛은
    매크로명령 시퀀스들의 파이프라인 처리를 수행하는 명령처리유닛;
    복수의 다이제스트 정보에 대응하는 복수의 마이크로명령 시퀀스들을 저장하는 명령 시퀀스 테이블;
    다이제스트 정보 생성유닛에 의하여 생성된 다이제스트 정보에 따라 명령 시퀀스 테이블로부터 선택된 매크로명령 시퀀스를 마이크로 명령으로 변환하는 변환유닛;
    변환유닛에 의해 얻어진 마이크로 명령을 명령처리유닛에 넘겨주는 유닛을 포함하는 것을 특징으로 하는 패킷처리장치.
  10. 제9항에 있어서, 상기 명령처리유닛은 명령시퀀스 테이블로부터 선택된 명령시퀀스와 그리고 입력패킷에 대한 처리 이외의 처리를 수행하는 메인 메모리에 기록된 명령시퀀스를 교대로 실행할 수 있는 것을 특징으로 하는 패킷처리장치.
  11. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 입력패킷으로부터 입력패킷의 처리를 위한 파라미터들을 또한 추출하고 패킷처리유닛에 다이제스트 정보와 함께 이 파라미터들을 넘겨주며;
    상기 패킷처리유닛은
    매크로명령 시퀀스들의 파이프라인 처리를 수행하는 명령처리유닛;
    복수의 다이제스트 정보에 대응하는 복수의 마이크로명령 시퀀스들을 저장하는 명령 시퀀스 테이블;
    다이제스트 정보 생성유닛에 의하여 생성된 다이제스트 정보에 따라 명령 시퀀스 테이블로부터 선택된 매크로명령 시퀀스를 파라미터들을 고려하면서 마이크로 명령으로 변환하는 변환유닛;
    변환유닛에 의해 얻어진 마이크로 명령을 명령처리유닛에 넘겨주는 유닛을 포함하는 것을 특징으로 하는 패킷처리장치.
  12. 제11항에 있어서, 상기 명령처리유닛은 명령시퀀스 테이블로부터 선택된 명령시퀀스와 그리고 입력패킷에 대한 처리 이외의 처리를 수행하는 메인 메모리에 기록된 명령시퀀스를 교대로 실행할 수 있는 것을 특징으로 하는 패킷처리장치.
  13. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 패킷처리장치가 접속된 네트워크 내의 패킷유형의 혼합율에 따라 복수의 패킷유형에 대응하는 복수의 다이제스트 정보를 미리 저장하고, 입력패킷의 패킷유형에 대응하는 다이제스트 정보가 미리 저장되어 있지 않은 경우 기타를 표시하는 특별한 다이제스트 정보를 생성하며;
    상기 패킷처리유닛은 기타를 표시하는 특별한 다이제스트 정보가 다이제스트 정보 생성유닛으로부터 주어진 경우 입력패킷의 패킷유형을 검사하는 동안에 미리 패킷유형을 특정하지 않고 입력패킷을 처리하는 것을 특징으로 하는 패킷처리장치.
  14. 제1항에 있어서, 상기 패킷처리유닛은 패킷처리장치가 접속된 네트워크에 입력패킷을 출력하는 처리를 수행하여, 입력패킷이 원하는 수신처에 전송되도록 하는 것을 특징으로 하는 패킷처리장치.
  15. 제1항에 있어서, 상기 다이제스트 정보 생성유닛은 입력패킷의 수신처 정보로부터 생성된 추가정보를 포함하는 다이제스트 정보를 패킷처리유닛에 건네주며;
    패킷처리유닛은 상기 추가정보에 따라 복수개의 라우팅 정보테이블 검색방법중 하나를 선택하고, 선택된 라우팅 정보테이블 검색방법을 사용하여 라우팅 정보테이블을 검색함으로써 입력패킷의 출력경로를 결정하는 것을 특징으로 하는 패킷처리장치.
  16. (a) 입력패킷으로부터 소정의 복수개의 비트 시퀀스를 추출하고, 복수개의 소정의 비트 시퀀스들의 값에 따라 입력패킷에 적용될 처리중 적어도 일부분을 특정할 수 있는 다이제스트 정보를 생성하는 단계; 및
    (b) 상기 단계(a)에 의해 생성된 다이제스트 정보에 따라 얻어진 입력패킷에 적용될 명령시퀀스를 사용하여 입력패킷을 처리하는 단계;를 구비하고
    상기 단계(b)가 하나의 패킷에 대하여 처리를 수행하는 동안에 상기 단계(a)는 다음 입력패킷에 대하여 다이제스트 정보를 생성하는 패킷처리방법.
  17. 제16항에 있어서, 상기 단계 (b)는 상기 단계 (a)에 의해 생성된 다이제스트 정보에 따라서, 미리 제공된 복수의 명령시퀀스중 하나를 선택함으로써 명령시퀀스를 구하는 것을 특징으로 하는 패킷처리방법.
  18. 제16항에 있어서, 상기 단계 (b)는 상기 단계 (a)에 의해 생성된 다이제스트 정보에 따라서 명령시퀀스를 생성함으로써 명령시퀀스를 구하는 것을 특징으로 하는 패킷처리방법.
KR10-2000-0055090A 1999-09-20 2000-09-20 입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형패킷처리장치 및 방법 KR100370937B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP26521099A JP3643507B2 (ja) 1999-09-20 1999-09-20 パケット処理装置及びパケット処理方法
JP1999-265210 1999-09-20

Publications (2)

Publication Number Publication Date
KR20010050528A true KR20010050528A (ko) 2001-06-15
KR100370937B1 KR100370937B1 (ko) 2003-02-05

Family

ID=17414066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0055090A KR100370937B1 (ko) 1999-09-20 2000-09-20 입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형패킷처리장치 및 방법

Country Status (7)

Country Link
US (3) US6804240B1 (ko)
EP (1) EP1085723B1 (ko)
JP (1) JP3643507B2 (ko)
KR (1) KR100370937B1 (ko)
CN (1) CN1249963C (ko)
DE (1) DE60029710T2 (ko)
TW (1) TW502516B (ko)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7075926B2 (en) * 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
US7747757B2 (en) * 2000-11-17 2010-06-29 Computer Associates Think, Inc. Distributed network query
FR2818066B1 (fr) 2000-12-12 2003-10-10 Eads Airbus Sa Procede et dispositif de transmission deterministe de donnees asynchrones mises en paquet
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
WO2002096043A1 (en) * 2001-05-21 2002-11-28 Xelerated Ab Method and apparatus for processing blocks in a pipeline
US20020188732A1 (en) * 2001-06-06 2002-12-12 Buckman Charles R. System and method for allocating bandwidth across a network
US7095715B2 (en) * 2001-07-02 2006-08-22 3Com Corporation System and method for processing network packet flows
US20030033519A1 (en) * 2001-08-13 2003-02-13 Tippingpoint Technologies,Inc. System and method for programming network nodes
US7190695B2 (en) * 2001-09-28 2007-03-13 Lucent Technologies Inc. Flexible application of mapping algorithms within a packet distributor
US7239639B2 (en) 2001-12-27 2007-07-03 3Com Corporation System and method for dynamically constructing packet classification rules
US7421515B2 (en) * 2002-01-17 2008-09-02 Hewlett-Packard Development Company, L.P. Method and system for communications network
US20030185220A1 (en) * 2002-03-27 2003-10-02 Moshe Valenci Dynamically loading parsing capabilities
US7590855B2 (en) * 2002-04-30 2009-09-15 Tippingpoint Technologies, Inc. Steganographically authenticated packet traffic
US7336660B2 (en) * 2002-05-31 2008-02-26 Cisco Technology, Inc. Method and apparatus for processing packets based on information extracted from the packets and context indications such as but not limited to input interface characteristics
US7304999B2 (en) 2002-08-24 2007-12-04 Cisco Technology Inc. Methods and apparatus for processing packets including distributing packets across multiple packet processing engines and gathering the processed packets from the processing engines
AU2003252054B2 (en) * 2002-08-24 2008-09-25 Cisco Technology, Inc. Packet processing engine
US7404015B2 (en) 2002-08-24 2008-07-22 Cisco Technology, Inc. Methods and apparatus for processing packets including accessing one or more resources shared among processing engines
JP3886432B2 (ja) * 2002-09-17 2007-02-28 沖電気工業株式会社 ルーティング処理装置及びパケット種類識別装置
US7286483B2 (en) * 2002-11-14 2007-10-23 Intel Corporation Electronic data transfer based on selective storage of incoming packets
US7310337B2 (en) * 2002-12-31 2007-12-18 Intel Corporation Packet header alignment
US7983239B1 (en) 2003-01-07 2011-07-19 Raytheon Bbn Technologies Corp. Systems and methods for constructing a virtual model of a multi-hop, multi-access network
US6981490B2 (en) * 2003-03-13 2006-01-03 Denso Corporation Fuel feed apparatus having sub tank and jet pump
US7747731B2 (en) 2003-03-27 2010-06-29 Nokia Corporation Minimizing message processing latency in a communication network
US20040246902A1 (en) * 2003-06-02 2004-12-09 Weinstein Joseph J. Systems and methods for synchronizing multple copies of a database using datablase digest
US7881229B2 (en) * 2003-08-08 2011-02-01 Raytheon Bbn Technologies Corp. Systems and methods for forming an adjacency graph for exchanging network routing data
US7606927B2 (en) 2003-08-27 2009-10-20 Bbn Technologies Corp Systems and methods for forwarding data units in a communications network
US7668083B1 (en) 2003-10-28 2010-02-23 Bbn Technologies Corp. Systems and methods for forwarding data in a communications network
US7562363B1 (en) 2003-11-25 2009-07-14 Cisco Technology, Inc. Gang scheduling among one or more components or systems
US7903555B2 (en) * 2003-12-17 2011-03-08 Intel Corporation Packet tracing
US7480308B1 (en) 2004-03-29 2009-01-20 Cisco Technology, Inc. Distributing packets and packets fragments possibly received out of sequence into an expandable set of queues of particular use in packet resequencing and reassembly
US7385984B2 (en) * 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7551617B2 (en) 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7561589B2 (en) 2005-02-23 2009-07-14 Cisco Technology, Inc Virtual address storage which may be of particular use in generating fragmented packets
US7606250B2 (en) 2005-04-05 2009-10-20 Cisco Technology, Inc. Assigning resources to items such as processing contexts for processing packets
US7965708B2 (en) 2005-06-07 2011-06-21 Cisco Technology, Inc. Method and apparatus for using meta-packets in a packet processing system
US8068495B2 (en) * 2005-09-27 2011-11-29 Intel Corporation Mechanisms for data rate improvement in a wireless network
US20070076685A1 (en) * 2005-09-30 2007-04-05 Pak-Lung Seto Programmable routing for frame-packet based frame processing
US7739426B1 (en) 2005-10-31 2010-06-15 Cisco Technology, Inc. Descriptor transfer logic
FI119166B (fi) * 2005-11-30 2008-08-15 Tellabs Oy Menetelmä ja laitteisto palvelunlaatuluokasta riippuvan reitityspäätöksen muodostamiseksi
US8014299B2 (en) * 2006-05-22 2011-09-06 Alcatel Lucent Method and apparatus for detecting forwarding loops
US8184549B2 (en) 2006-06-30 2012-05-22 Embarq Holdings Company, LLP System and method for selecting network egress
US8194643B2 (en) 2006-10-19 2012-06-05 Embarq Holdings Company, Llc System and method for monitoring the connection of an end-user to a remote network
US8000318B2 (en) 2006-06-30 2011-08-16 Embarq Holdings Company, Llc System and method for call routing based on transmission performance of a packet network
US8717911B2 (en) 2006-06-30 2014-05-06 Centurylink Intellectual Property Llc System and method for collecting network performance information
US9094257B2 (en) 2006-06-30 2015-07-28 Centurylink Intellectual Property Llc System and method for selecting a content delivery network
US7948909B2 (en) 2006-06-30 2011-05-24 Embarq Holdings Company, Llc System and method for resetting counters counting network performance information at network communications devices on a packet network
US8488447B2 (en) 2006-06-30 2013-07-16 Centurylink Intellectual Property Llc System and method for adjusting code speed in a transmission path during call set-up due to reduced transmission performance
US8289965B2 (en) 2006-10-19 2012-10-16 Embarq Holdings Company, Llc System and method for establishing a communications session with an end-user based on the state of a network connection
US8407765B2 (en) 2006-08-22 2013-03-26 Centurylink Intellectual Property Llc System and method for restricting access to network performance information tables
US8098579B2 (en) 2006-08-22 2012-01-17 Embarq Holdings Company, LP System and method for adjusting the window size of a TCP packet through remote network elements
US8274905B2 (en) 2006-08-22 2012-09-25 Embarq Holdings Company, Llc System and method for displaying a graph representative of network performance over a time period
US7808918B2 (en) 2006-08-22 2010-10-05 Embarq Holdings Company, Llc System and method for dynamically shaping network traffic
US8040811B2 (en) 2006-08-22 2011-10-18 Embarq Holdings Company, Llc System and method for collecting and managing network performance information
US7843831B2 (en) 2006-08-22 2010-11-30 Embarq Holdings Company Llc System and method for routing data on a packet network
US8107366B2 (en) 2006-08-22 2012-01-31 Embarq Holdings Company, LP System and method for using centralized network performance tables to manage network communications
US8238253B2 (en) 2006-08-22 2012-08-07 Embarq Holdings Company, Llc System and method for monitoring interlayer devices and optimizing network performance
US9479341B2 (en) 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US8549405B2 (en) 2006-08-22 2013-10-01 Centurylink Intellectual Property Llc System and method for displaying a graphical representation of a network to identify nodes and node segments on the network that are not operating normally
US8576722B2 (en) 2006-08-22 2013-11-05 Centurylink Intellectual Property Llc System and method for modifying connectivity fault management packets
US8537695B2 (en) 2006-08-22 2013-09-17 Centurylink Intellectual Property Llc System and method for establishing a call being received by a trunk on a packet network
US7889660B2 (en) 2006-08-22 2011-02-15 Embarq Holdings Company, Llc System and method for synchronizing counters on an asynchronous packet communications network
US8130793B2 (en) 2006-08-22 2012-03-06 Embarq Holdings Company, Llc System and method for enabling reciprocal billing for different types of communications over a packet network
US7940735B2 (en) 2006-08-22 2011-05-10 Embarq Holdings Company, Llc System and method for selecting an access point
US8194555B2 (en) 2006-08-22 2012-06-05 Embarq Holdings Company, Llc System and method for using distributed network performance information tables to manage network communications
US8619600B2 (en) 2006-08-22 2013-12-31 Centurylink Intellectual Property Llc System and method for establishing calls over a call path having best path metrics
US8064391B2 (en) 2006-08-22 2011-11-22 Embarq Holdings Company, Llc System and method for monitoring and optimizing network performance to a wireless device
US8015294B2 (en) 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US8743703B2 (en) 2006-08-22 2014-06-03 Centurylink Intellectual Property Llc System and method for tracking application resource usage
US8199653B2 (en) 2006-08-22 2012-06-12 Embarq Holdings Company, Llc System and method for communicating network performance information over a packet network
US8224255B2 (en) 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for managing radio frequency windows
US8144586B2 (en) 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for controlling network bandwidth with a connection admission control engine
US7684332B2 (en) 2006-08-22 2010-03-23 Embarq Holdings Company, Llc System and method for adjusting the window size of a TCP packet through network elements
US8125897B2 (en) 2006-08-22 2012-02-28 Embarq Holdings Company Lp System and method for monitoring and optimizing network performance with user datagram protocol network performance information packets
US8144587B2 (en) 2006-08-22 2012-03-27 Embarq Holdings Company, Llc System and method for load balancing network resources using a connection admission control engine
US8223655B2 (en) 2006-08-22 2012-07-17 Embarq Holdings Company, Llc System and method for provisioning resources of a packet network based on collected network performance information
US8228791B2 (en) 2006-08-22 2012-07-24 Embarq Holdings Company, Llc System and method for routing communications between packet networks based on intercarrier agreements
US8531954B2 (en) 2006-08-22 2013-09-10 Centurylink Intellectual Property Llc System and method for handling reservation requests with a connection admission control engine
US8750158B2 (en) 2006-08-22 2014-06-10 Centurylink Intellectual Property Llc System and method for differentiated billing
US8223654B2 (en) * 2006-08-22 2012-07-17 Embarq Holdings Company, Llc Application-specific integrated circuit for monitoring and optimizing interlayer network performance
US8189468B2 (en) 2006-10-25 2012-05-29 Embarq Holdings, Company, LLC System and method for regulating messages between networks
US8307065B2 (en) 2006-08-22 2012-11-06 Centurylink Intellectual Property Llc System and method for remotely controlling network operators
US8228896B2 (en) * 2006-09-22 2012-07-24 Avaya Inc. Method and apparatus for verification of at least a portion of a datagram's header information
US8111692B2 (en) 2007-05-31 2012-02-07 Embarq Holdings Company Llc System and method for modifying network traffic
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
JP2009230476A (ja) * 2008-03-24 2009-10-08 Toshiba Corp メッセージを処理する装置、方法およびプログラム
US8175085B2 (en) * 2008-03-25 2012-05-08 Fusion-Io, Inc. Bus scaling device
US8068425B2 (en) 2008-04-09 2011-11-29 Embarq Holdings Company, Llc System and method for using network performance information to determine improved measures of path states
US7911982B1 (en) * 2008-05-01 2011-03-22 Juniper Networks, Inc. Configuring networks including spanning trees
TW201031141A (en) * 2009-02-04 2010-08-16 Univ Nat Taiwan Packets inspection device and method
US8139504B2 (en) * 2009-04-07 2012-03-20 Raytheon Bbn Technologies Corp. System, device, and method for unifying differently-routed networks using virtual topology representations
US8503456B2 (en) * 2009-07-14 2013-08-06 Broadcom Corporation Flow based path selection randomization
US8743877B2 (en) * 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US9201796B2 (en) 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US10305959B2 (en) 2014-12-11 2019-05-28 At&T Intellectual Property I, L.P. Self-organizing network communication
US10015048B2 (en) 2014-12-27 2018-07-03 Intel Corporation Programmable protocol parser for NIC classification and queue assignments
US10044583B2 (en) * 2015-08-21 2018-08-07 Barefoot Networks, Inc. Fast detection and identification of lost packets
US9826071B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Configuring a switch for extracting packet header fields
US9825862B2 (en) 2015-08-26 2017-11-21 Barefoot Networks, Inc. Packet header field extraction
KR102343999B1 (ko) 2015-08-27 2021-12-28 한국단자공업 주식회사 커넥터 및 그 조립 방법
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
KR101701086B1 (ko) * 2016-04-26 2017-01-31 엘에스산전 주식회사 사용자 정의 프로토콜을 적용한 하드웨어 프로토콜 스택과 하드웨어 프로토콜 스택의 사용자 정의 프로토콜 적용 방법
US10630813B2 (en) * 2016-05-16 2020-04-21 Telefonaktiebolaget Lm Ericsson (Publ) Transporting UDP packets over an MPTCP connection
US10419366B1 (en) 2017-01-31 2019-09-17 Barefoot Networks, Inc. Mechanism for communicating to remote control plane from forwarding element
US10694006B1 (en) 2017-04-23 2020-06-23 Barefoot Networks, Inc. Generation of descriptive data for packet fields
US10826840B1 (en) 2017-07-23 2020-11-03 Barefoot Networks, Inc. Multiple copies of stateful tables
US10594630B1 (en) 2017-09-28 2020-03-17 Barefoot Networks, Inc. Expansion of packet data within processing pipeline
US11831743B1 (en) * 2019-01-08 2023-11-28 Xilinx, Inc. Streaming architecture for packet parsing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4748618A (en) * 1986-05-21 1988-05-31 Bell Communications Research, Inc. Telecommunications interface
US5067104A (en) * 1987-05-01 1991-11-19 At&T Bell Laboratories Programmable protocol engine having context free and context dependent processes
US5335325A (en) * 1987-12-22 1994-08-02 Kendall Square Research Corporation High-speed packet switching apparatus and method
US5249292A (en) * 1989-03-31 1993-09-28 Chiappa J Noel Data packet switch using a primary processing unit to designate one of a plurality of data stream control circuits to selectively handle the header processing of incoming packets in one data packet stream
US5544329A (en) * 1992-07-31 1996-08-06 Grumman Aerospace Corporation Interface system with memory map locations for holding flags indicating a priority for executing instructions held within messages received by the interface
US5394394A (en) * 1993-06-24 1995-02-28 Bolt Beranek And Newman Inc. Message header classifier
US5473607A (en) * 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
GB9326476D0 (en) * 1993-12-24 1994-02-23 Newbridge Networks Corp Network
JPH07182157A (ja) * 1994-10-24 1995-07-21 Mitsubishi Electric Corp ディジタル信号処理プロセッサ
US5598410A (en) * 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
US5566170A (en) * 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
US5608662A (en) * 1995-01-12 1997-03-04 Television Computer, Inc. Packet filter engine
US5825774A (en) * 1995-07-12 1998-10-20 3Com Corporation Packet characterization using code vectors
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5774739A (en) * 1996-09-20 1998-06-30 Bay Networks, Inc. Using a lockup processor to search a table of keys whose entries contain instruction pointer values of code to execute if key is found
JP3372455B2 (ja) * 1997-07-03 2003-02-04 富士通株式会社 パケット中継制御方法,パケット中継装置およびプログラム記憶媒体
US6141348A (en) * 1997-08-25 2000-10-31 Cisco Technology, Inc. Constant-time programmable field extraction system and method
US6307860B1 (en) * 1998-04-03 2001-10-23 Mmc Networks, Inc. Systems and methods for data transformation and transfer in networks
US6347087B1 (en) * 1998-10-05 2002-02-12 Packet Engines Incorporated Content-based forwarding/filtering in a network switching device
US6463059B1 (en) * 1998-12-04 2002-10-08 Koninklijke Philips Electronics N.V. Direct memory access execution engine with indirect addressing of circular queues in addition to direct memory addressing
FR2796168B1 (fr) * 1999-07-08 2001-09-28 Automa Tech Sa Installation d'exposition a la lumiere d'une carte de circuit imprime double face

Also Published As

Publication number Publication date
DE60029710D1 (de) 2006-09-14
US6804240B1 (en) 2004-10-12
US20050030949A1 (en) 2005-02-10
US7027442B2 (en) 2006-04-11
CN1249963C (zh) 2006-04-05
EP1085723A2 (en) 2001-03-21
JP3643507B2 (ja) 2005-04-27
US20050086353A1 (en) 2005-04-21
KR100370937B1 (ko) 2003-02-05
EP1085723B1 (en) 2006-08-02
DE60029710T2 (de) 2006-11-30
EP1085723A3 (en) 2003-05-14
TW502516B (en) 2002-09-11
JP2001094596A (ja) 2001-04-06
CN1291032A (zh) 2001-04-11

Similar Documents

Publication Publication Date Title
KR100370937B1 (ko) 입력패킷의 다이제스트 정보를 사용하는 고속 및 적응형패킷처리장치 및 방법
US5507028A (en) History based branch prediction accessed via a history based earlier instruction address
US8908693B2 (en) Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket
US6771646B1 (en) Associative cache structure for lookups and updates of flow records in a network monitor
JP4558879B2 (ja) テーブルを用いたデータ処理装置および処理システム
US8392590B2 (en) Deterministic finite automata (DFA) processing
CA2460530C (en) Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers
US7692561B2 (en) Method and apparatus for data decompression in the presence of memory hierarchies
US20050248970A1 (en) Distributed content addressable memory
US11010167B2 (en) Instruction-based non-deterministic finite state automata accelerator
WO2002051098A1 (en) Efficient mapping of signal elements to a limited range of identifiers
US20030159019A1 (en) Prediction of instructions in a data processing apparatus
US11343358B2 (en) Flexible header alteration in network devices
JP3590427B2 (ja) 先行読出機能付命令キャッシュメモリ
US11379239B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
US6507895B1 (en) Method and apparatus for access demarcation
JPH10255485A (ja) 連想メモリおよびネットワークフレーム中継器
US20050135367A1 (en) Memory controller
US20040111592A1 (en) Microprocessor performing pipeline processing of a plurality of stages
US9098262B2 (en) Efficient arithimetic logic units
US7610440B2 (en) Content addressable memory with automated learning
US9026424B1 (en) Emulation of multiple instruction sets
KR20000003930A (ko) 명령어 캐시 미스 시 손실을 줄이기 위한 명령어 페치 장치
KR960025034A (ko) 알아이에스씨(risc) 씨피유(cpu)를 채용한 멀티포트 로컬 브리지
JPH02255918A (ja) 命令取出し制御方式

Legal Events

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

Payment date: 20090109

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee