KR100647949B1 - 네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서 - Google Patents

네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서 Download PDF

Info

Publication number
KR100647949B1
KR100647949B1 KR1020037017306A KR20037017306A KR100647949B1 KR 100647949 B1 KR100647949 B1 KR 100647949B1 KR 1020037017306 A KR1020037017306 A KR 1020037017306A KR 20037017306 A KR20037017306 A KR 20037017306A KR 100647949 B1 KR100647949 B1 KR 100647949B1
Authority
KR
South Korea
Prior art keywords
packet
flag
encap
decap
computer
Prior art date
Application number
KR1020037017306A
Other languages
English (en)
Other versions
KR20040019037A (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 KR20040019037A publication Critical patent/KR20040019037A/ko
Application granted granted Critical
Publication of KR100647949B1 publication Critical patent/KR100647949B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/52Multiprotocol routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • 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
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • 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/3018Input queuing
    • 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/3027Output queuing
    • 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/12Protocol engines
    • 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/18Multiprotocol handlers, e.g. single devices capable of handling multiple 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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

네트워크 패킷을 전달하는 방법이 개시된다. 본 방법은 다수의 플래그가 설정되는지 또는 클리어되는지를 판단하는(116, 130, 132) 다수의 플래그를 포함하는 테이블을 판독하는(114) 단계 및 플래그의 값에 따라 패킷을 캡슐 해제(118, 120) 또는 캡슐화(134)하는 동작을 패킷에 수행하는 단계를 포함한다.

Description

네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서{METHOD, APPARATUS AND COMPUTER PROGRAM FOR THE DECAPSULATION AND ENCAPSULATION OF PACKETS WITH MULTIPLE HEADERS}
본 발명은 네트워크 도메인 간에 네트워크 패킷을 전달하는 것에 관한 것이다.
패킷은 일련의 라우터 장치를 통해 라우팅되며, 각각의 라우팅 장치는 그 소스로부터 목적지로 패킷을 저장 및 전달한다. 예를 들면, 패킷은 인터넷 패킷으로서 시작하고 ATM(비동기 전송 모드 경로)을 통해 전달되며, 공통 네트워크 상의 이더넷에서 그 최종 수신자에게 반송될 수 있다. 네트워크가 이들 네트워크 도메인을 통과할 때, 패킷에 다양한 헤더 캡슐화가 추가되거나 제거될 수 있다. 일부 접속은 점 대 점 프로토콜(point-to-point protocol, PPP)을 사용하고, 다른 접속은 MPLS(multiprotocol label switching), LTTP(layer to tunneling protocol), ATM 등을 사용한다.
도 1은 하드웨어 기반 멀티스레드 프로세서를 사용하는 통신 시스템의 블록도,
도 2-1 내지 2-4는 도 1의 하드웨어 기반 멀티스레드 프로세서의 상세한 블록도,
도 3은 도 2의 멀티스레드 프로세서의 기능 장치를 도시하는 블록도,
도 4는 도 1의 프로세서에 사용되는 메모리에서의 데이터 구조를 도시하는 블록도,
도 5는 도 4의 테이블 내에 사용되는 테이블을 전달하기 위한 포맷을 도시하는 블록도,
도 6은 범용 패킷 전달 프로세스를 나타내는 순서도,
도 7은 도 6의 패킷 전달 프로세스의 다른 측면을 나타내는 순서도.
도 1을 참조하면, 통신 시스템(10)은 병렬의 하드웨어 기반 멀티스레드 프로세서 프로세서(12)를 포함한다. 하드웨어 기반 멀티스레드 프로세서(12)는 PCI 버스(14)와 같은 버스, 메모리 시스템(16) 및 제 2 버스(18)에 연결된다. 시스템(10)은 병렬의 서브태스크 또는 기능으로 분할될 수 있는 태스크에 특히 유용하다. 특히, 하드웨어 기반 멀티스레드 프로세서(12)는 지연 시간 지향적이 아닌 대역폭 지향적인 작업에 유용하다. 하드웨어 기반 멀티스레드 프로세서(12)는 마이크로 엔진(22)을 구비하며, 이 마이크로 엔진(22) 각각은 동시에 활성화되어 태스크에 대해 개별적으로 작용하는 다수의 하드웨어 제어 스레드에 작용할 수 있다.
또한, 하드웨어 기반 멀티스레드 프로세서(12)는 중앙 제어기(20)를 포함하며, 이 중앙 제어기(12)는 하드웨어 기반 멀티스레드 프로세서(12)의 다른 자원을 위한 마이크로코드 제어 로딩을 보조하고, 프로토콜, 예외 처리, 마이크로 엔진이 경계 조건과 같은 더욱 상세한 프로세싱을 위해 패킷을 전달하는 패킷 프로세싱을 위한 엑스트라 지원과 같은 그 밖의 범용 컴퓨터형 기능을 수행한다. 일 실시예에서, 프로세서(20)는 Strong Arm®계 아키텍처이다. 범용 마이크로프로세서(20)는 운영 체제를 가진다. 프로세서(20)는 운영 체제를 통해 마이크로 엔진(22a~22f) 상에서 동작하는 기능을 호출할 수 있다. 프로세서(20)는 임의의 지원 운영 체제(바람직하게는 Microsoft NT real-time, VxWorks와 같은 실시간 운영 체제)를 사용할 수 있다.
또한, 하드웨어 기반 멀티스레드 프로세서(12)는 다수의 기능 마이크로 엔진(22a~22f)을 포함한다. 기능 마이크로 엔진(마이크로 엔진)(22a~22f) 각각은 하드웨어인 다수의 프로그램 카운터를 보유하고 그 프로그램 카운터와 연관되는 상태를 유지한다. 효과적으로, 대응하는 다수의 스레드 집합은 각각의 마이크로 엔진(22a~22f) 상에서 동시에 활성화될 수 있으나, 실제로는 소정 시간에 단 하나만 동작한다.
일 실시예에서는, 도시한 바와 같이, 6개의 마이크로 엔진(22a~22f)이 있다. 각 마이크로 엔진(22a~22f)은 네 개의 하드웨어 스레드를 프로세싱하는 능력을 갖는다. 6개의 마이크로 엔진(22a~22f)은 메모리 시스템(16) 및 버스 인터페이스(24, 28)를 포함하는 공유 자원과 함께 동작한다. 메모리 시스템(16)은 SDRAM(Synchronous Dynamic Random Access Memory)(16a) 및 SRAM(Static Random Access Memory)(16b)를 포함한다. SDRAM 메모리(16a) 및 SDRAM 제어기(26a)는 보통 대량의 데이터 프로세싱, 예를 들면, 네트워크 패킷으로부터의 네트워크 페이로드 프로세싱에 사용된다. SRAM 제어기(26b) 및 SRAM 메모리(16b)는 낮은 지연 시간의 고속 액세스 작업, 가령, 룩업 테이블, 즉, 코어 프로세서(20)용 메모리로의 액세스 등의 네트워킹 구현에 사용된다.
6개의 마이크로 엔진(22a~22f)은 데이터의 특성에 따라 SDRAM(16a) 또는 SRAM(16b)을 액세스한다. 따라서, 낮은 지연 시간의 낮은 대역폭 데이터는 SRAM 내에 저장되고 그로부터 페치(fetch)되며, 지연 시간이 중요하지 않은 보다 높은 대역폭 데이터는 SDRAM 내에 저장되고 그로부터 페치된다. 마이크로 엔진(22a~22f)은 SDRAM 제어기(26a) 또는 SRAM 제어기(26b)에 대해 메모리 참조 인스트럭션을 실행할 수 있다.
하드웨어 멀티스레딩의 유리한 점은 SRAM 또는 SDRAM 메모리 액세스에 의해 설명될 수 있다. 예로서, 마이크로 엔진으로부터 Thread_0에 의해 요청되는 SRAM 액세스는 SRAM 제어기(26b)가 SRAM 메모리(16b)로의 액세스를 시작하게 할 것이다. SRAM 제어기는 SRAM 버스에 대한 중재를 제어하고, SRAM(16b)을 액세스하며, 데이터를 SRAM(16b)로부터 페치하고, 요청 마이크로 엔진(22a~22b)에 데이터를 반송한다. SRAM 액세스 동안, 마이크로 엔진(예컨대, 22a)이 동작할 수 있는 하나의 스레드만 갖는 경우, 그 마이크로 엔진은 데이터가 SRAM으로부터 반송될 때까지 휴지 상태일 것이다. 각 마이크로 엔진(22a~22f) 내에 하드웨어 콘텍스트 스와핑(swapping)을 채용함으로써, 하드웨어 콘텍스트 스와핑은 고유의 프로그램 카운터를 갖는 다른 콘텍스트가 그 동일 마이크로 엔진 내에서 실행되게 한다. 따라서, 제 1 스레드, 예를 들면, Thread_0이 판독 데이터가 반송을 기다리고 있는 동안, 다른 스레드, 예를 들면, Thread_1이 작용할 수 있다. 실행 동안에, Thread_1은 SDRAM 메모리(16a)를 액세스할 수 있다. Thread_1이 SDRAM 유닛 상에서 동작하고, Thread_0이 SRAM 유닛 상에서 동작하는 동안, 새로운 스레드, 예를 들면, Thread_2는 이제 마이크로 엔진(22a) 내에서 동작할 수 있다. Thread_2는 메모리를 액세스하거나 버스 인터페이스로의 액세스와 같은 소정의 다른 긴 지연 시간 동작을 수행할 필요가 있을 때까지 특정 시간량 동안 동작할 수 있다. 그러므로, 동시에, 프로세서(12)는 모두 하나의 마이크로 엔진(22a)에 의해 완료 또는 동작되는 버스 동작, SRAM 동작 및 SDRAM 동작을 가질 수 있고, 데이터 경로에서 더 많은 작업을 프로세싱하는 데 이용할 수 있는 하나 이상의 스레드를 가질 수 있다.
또한, 하드웨어 콘텍스트 스와핑은 태스크의 완료를 동기화한다. 예를 들면, 두 개의 스레드는 동일한 공유 자원, 예를 들면, SRAM을 히트(hit)할 수 있다. 이들 별도의 기능 장치들, 예를 들면, FBUS 인터페이스(28), SRAM 제어기(26a) 및 SDRAM 제어기(26b) 각각은, 마이크로 엔진 스레드 콘텍스트 중 하나로부터의 요청 태스크를 완료하면, 동작 완료를 발신하는 플래그를 역으로 보고한다. 플래그가 마이크로 엔진에 의해 수신되면, 마이크로 엔진은 어떤 스레드가 턴 온되는지 판단할 수 있다.
하드웨어 기반 멀티스레드 프로세서에 대한 애플리케이션의 일례는 멀티스레드 프로세서로서의 애플리케이션이다. 멀티스레드 프로세서로서, 하드웨어 기반 멀티스레드 프로세서(12)는 매체 액세스 제어기 장치, 예컨대, 10/100BaseT Octal MAC(13a) 또는 기가비트 이더넷 장치(13b)와 같은 네트워크 장치에 인터페이스한다. 일반적으로, 멀티스레드 프로세서는 대량의 데이터를 수신/전송하는 임의의 유형의 통신 장치 또는 인터페이스에 인터페이스할 수 있다. 네트워킹 애플리케이션 내에서 작동하는 통신 시스템(10)은 장치(13a, 13b)로부터 다수의 네트워크 패킷을 수신하고, 이들 패킷을 병렬로 프로세싱할 수 있다. 하드웨어 기반 멀티스레드 프로세서(12)를 이용하여, 각 네트워크 패킷은 독립적으로 프로세싱될 수 있다. 프로세서(12) 사용의 또 다른 예는 포스트스크립트 프로세서용 프린트 엔진 또는 저장 서브시스템(즉, RAID 디스크 저장소)을 위한 프로세서로서 사용된다. 또는, 매칭 엔진으로서 사용된다. 예를 들어, 보안 산업에서, 전자 거래는 구매자와 판매자간의 주문(orders)을 매칭하기 위하여 전자 매칭 엔진의 사용을 요구한다. 이들 및 그 밖의 병렬 유형의 태스크가 시스템(10) 상에서 수행될 수 있다.
프로세서(12)는 프로세서를 제 2 버스(18)에 연결하는 버스 인터페이스(28)를 포함한다. 일 실시예에서, 버스 인터페이스(29)는 프로세서(12)를 소위 FBUS(18)(FIFO 버스)에 연결한다. FBUS 인터페이스(28)는 프로세서(12)를 제어하여 FBUS(18)에 인터페이스시킨다. FBUS(18)는 MAC(Media Access Controller) 장치에 대한 최상의 버스로서 현재 사용되고 있는 64 비트 폭 FIFO 버스이다.
프로세서(12)는 제 2 인터페이스, 예컨대, PCI(14) 버스 상에 상주하는 다른 시스템 구성요소를 프로세서(12)에 연결하는 PCI 인터페이스(24)를 포함한다. PCI 버스 인터페이스(24)는 고속 데이터 경로(24a)를 메모리(16), 예를 들면, SDRAM 메모리(16a)에 제공한다. 그 경로를 통해, 데이터는 SDRAM(16a)으로부터 PCI 버스(14)를 통해 직접 메모리 액세스(DMA) 전달자를 거쳐 신속히 이동될 수 있다. 또한, PCI 버스 인터페이스(24)는 타겟 및 마스터 동작을 지원한다. 타겟 동작은 타겟 동작에 대해 슬레이브로서 제공되는 판독 및 기록을 통해 버스(14) 상의 슬레이브 장치가 SDRAM을 액세스하는 동작이다. 마스터 동작에서, 프로세서 코어(20)는 PCI 인터페이스(24)에 데이터를 직접 전송하거나 그로부터 데이터를 직접 수신한다.
각 기능 유닛은 하나 이상의 내부 버스에 연결된다. 프로세서는 프로세서 코어(20)를 이후 기술되는 메모리 제어기(26a, 26c) 및 AMBA 번역기(30)에 연결하는 AMBA 버스를 포함한다. 또한, 프로세서는 마이크로 엔진 유닛을 SRAM 제어기(26b), AMBA 번역기(30) 및 FBUS 인터페이스(28)에 연결하는 전용 버스(34)를 포함한다. 메모리 버스(38)는 부팅 동작 등에 사용되는 플래시롬(flashrom)(16c)을 포함하는 메모리 시스템(16) 및 버스 인터페이스(24, 28)에 메모리 제어기(26a, 26b)를 연결한다.
도 2-1 내지 2-4를 참조하면, 각 마이크로 엔진(22a~22f)은 플래그를 검사하여 동작될 이용 가능한 스레드를 판단하는 중재기를 포함한다. 마이크로 엔진(22a~22f) 중 임의의 엔진으로부터의 임의의 스레드는 SDRAM 제어기(26a), SDRAM 제어기(26b) 또는 FBUS 인터페이스(28)를 액세스할 수 있다. 메모리 제어기(26a, 26b) 각각은 다수의 큐를 포함하여 미처리 메모리 참조 요청을 저장한다. 큐는 메모리 참조의 순서를 유지하거나 메모리 참조를 배치하여 메모리 대역폭을 최적화한다. 예를 들어, thread_0이 thread_1에 의존성이나 관련성을 가지지 않는다면, thread_1 또는 thread_0은 고장난 SRAM 유닛에 대해 그 메모리 참조를 완료하지 못할 이유가 없다. 마이크로 엔진(22a~22f)은 메모리 제어기(26a, 26b)에 메모리 참조 요청을 발행한다. 마이크로 엔진(22a~22f)에는 프로세서(12) 동작 동안 보틀넥(bottleneck)이 될 정도의 충분히 많은 메모리 참조를 갖는 메모리 서브시스템(26a, 26b)이 몰린다.
메모리 서브시스템(16)에 독립적인 속성의 메모리 요청이 몰리면, 프로세서(12)는 메모리 참조 정렬(sorting)을 수행할 수 있다. 메모리 참조 정렬은 달성 가능한 메모리 대역폭을 향상시킨다. 이후에 기술하는 바와 같이, 메모리 참조 정렬은 SRAM으로의 액세스를 갖도록 발생하는 데드 타임(dead time) 또는 버블(bubble)을 감소시킨다. SRAM에 대한 메모리 참조를 이용하여, 신호 라인 상에서의 판독 및 기록 간 전류 방향 스위칭은 SRAM(16b)을 SRAM 제어기(26b)에 연결하는 도전체 상에 전류가 도달할 때까지 대기하는 버블 또는 데드 타임을 발생시킨다.
즉, 버스 상에 전류를 보내는 드라이버는 상태를 변경하기 전에 안정시킬 필요가 있다. 따라서, 판독 후에 기록이 따르는 반복 싸이클은 피크 대역폭을 열화시킬 수 있다. 메모리 참조 정렬은 프로세서(12)가 메모리에의 참조를 구성하여 긴 판독 스트링 후에 긴 기록 스트링이 이어질 수 있게 한다. 이는, 파이프라인 내의 데드 타임을 최소화하여 최대 가용 대역폭에 효과적으로 가까워지게 하는 데 사용된다. 참조 정렬은 병렬 하드웨어 콘텍스트 스레드 유지를 돕는다. SDRAM 상에서, 참조 정렬은 뱅크별 사전 충전(pre-charge)의 은닉을 허용한다. 특히, 메모리 시스템(16b)이 홀수 뱅크 및 짝수 뱅크로 구성되면, 프로세서가 홀수 뱅크 상에서 동작하는 동안, 메모리 제어기는 짝수 뱅크의 사전 충전을 시작할 수 있다. 사전 충전은 메모리 참조가 홀수와 짝수 뱅크 간에 교번하는 경우에 가능하다. 반대 뱅크로 교번하며 액세스하도록 메모리 참조의 순서를 정함으로써, 프로세서(12)는 SDRAM 대역폭을 향상시킨다.
FBUS 인터페이스(28)는 서비스가 보증되는 시기를 나타내는 인터럽트 플래그를 따라서 MAC 장치가 지원하는 각 포트를 위한 전송 및 수신 플래그를 지원한다. 또한, FBUS 인터페이스(28)는 FBUS(18)로부터 유입되는 패킷의 패킷 헤더 프로세싱을 수행하는 제어기(28a)를 포함한다. 제어기(28a)는 패킷 헤더를 추출하고 SRAM 내에서 (어드레스 평활화에 사용되는) 마이크로프로그래밍가능 소스/목적지/프로토콜 해시 룩업을 수행한다. 해시가 성공적으로 해결되지 않으면, 패킷 헤더는 추가 프로세싱을 위해 프로세서 코어(20)에 전송된다. FBUS 인터페이스(28)는 다음 내부 데이터 트랜젝션을 지원한다:
FBUS 유닛 (AMBA 버스를 통해) 프로세서 코어로/로부터
FBUS 유닛 (전용 버스를 통해) SRAM 유닛으로/으로부터
FBUS 유닛 (Mbus를 통해) SDRAM으로/으로부터
FBUS(18)는 표준 산업 버스이고, 데이터 버스(예컨대, 64 비트폭) 및 어드레스용 측대역 제어 및 판독/기록 제어를 포함한다. FBUS 인터페이스(28)는 일련의 입출력 FIFO(29a~29b)를 사용하여 대량의 데이터를 입력하는 기능을 제공한다. FIFO(29a~29b)로부터, 마이크로 엔진(22a~22f)은 데이터를 페치하거나, SDRAM 제어기(26a)에 명령하여 버스(18) 상의 디바이스로부터 유입된 데이터를 FBUS 인터페이스(28) 내로 이동시킨다. 데이터는 메모리 제어기(26a)를 통해 직접 메모리 액세스를 거쳐 SDRAM 메모리(16a)에 전송될 수 있다. 이와 유사하게, 마이크로 엔진은 SDRAM(26a)으로부터 인터페이스(28)로, FBUS 인터페이스(28)를 통해 FBUS(18)으로 데이터를 이동시킬 수 있다.
데이터 기능은 마이크로 엔진들 간에 분산된다. SRAM(26a), SDRAM(26b) 및 FBUS(28)에는 명령 요청을 통해 접속된다. 명령 요청은 메모리 요청 또는 FBUS 요청일 수 있다. 예를 들면, 명령 요청은 마이크로 엔진(22a) 내에 위치하는 레지스터로부터 공유 자원, 예컨대, SDRAM 위치, SRAM 위치, 플래시 메모리 또는 일부 MAC 어드레스로 데이터를 이동시킬 수 있다. 명령은 기능 장치 및 공유 자원 각각으로 전송된다. 그러나, 공유 자원이 데이터의 로컬 버퍼링을 유지할 필요는 없다. 오히려, 공유 자원은 마이크로 엔진 내부에 위치하는 분산 데이터를 액세스한다. 이는, 마이크로 엔진(22a~22f)이 버스 상의 액세스와 그 버스에 대한 리스크 경합을 중재하기보다는 데이터로의 로컬 액세스를 갖게 한다. 이 특징들로, 마이크로 엔진(22a~22f) 내부의 데이터를 대기하는 0 싸이클 스톨(stall)이 존재한다.
데이터 버스, 예를 들어, 이들 공유 자원, 예컨대, 메모리 제어기(26a, 26b)를 연결하는 AMBA 버스(30), SRAM 버스(34) 및 SDRAM 버스(38)는 어떠한 내부 보틀넥도 없는 충분한 대역폭을 갖는다. 따라서, 보틀넥을 회피하기 위해, 프로세서(12)는 각 기능 장치에 내부 버스 최대 대역폭의 적어도 두 배가 제공되는 대역폭 요건을 갖는다. 예로서, SDRAM은 83MHz에서 64 비트 폭 버스를 구동할 수 있다. SRAM 데이터 버스는 별도의 판독 및 기록 버스를 가질 수 있고, 예컨대, 166MHz에서 구동되는 32 비트 폭의 판독 버스 및 166MHz에서 구동되는 32 비트 폭 기록 버스일 수 있다. 즉, 본질적으로, 166MHz에서 구동되는 64 비트는 실제로 SDRAM 대역폭의 두 배이다.
또한, 코어 프로세서(20)는 공유 자원을 액세스할 수 있다. 코어 프로세서(20)는 버스(32)를 통해 SDRAM 제어기(26a)에서 버스 인터페이스(24) 및 SRAM 제어기(26b)로의 직접 통신을 갖는다. 그러나, 마이크로 엔진(22a~22f), 및 임의의 마이크로 엔진(22a~22f)에 위치하는 전송 레지스터를 액세스하기 위하여, 코어 프로세서(20)는 AMBA 번역기(30)를 통해 버스(34)를 거쳐 마이크로 엔진(22a~22f)을 액세스한다. AMBA 번역기(30)는 FBUS 인터페이스(28) 내에 물리적으로 상주할 수 있으나 논리적으로는 별도이다. AMBA 번역기(30)는 FBUS 마이크로 엔진 전송 레지스터 위치와 코어 프로세서 어드레서(즉, AMBA 버스) 간의 어드레스 변환을 수행해서 코어 프로세서(20)가 마이크로 엔진(22a~22c)에 속하는 레지스터를 액세스할 수 있다.
프로세서 코어(20)는 하나의 싸이클에서 하나 또는 두 개의 피연산자의 한 싸이클 시프트를 수행하는 5단 파이프라인에 구현되는 RISC 코어(50)를 포함하며 곱셈 및 32 비트 배럴 시프트를 지원한다. 이 RISC 코어(50)는 표준 Strong Arm®아키텍처이지만 성능 때문에 5단 파이프라인으로 구현된다. 또한, 프로세서 코어(20)는 16 킬로바이트 인스트럭션 캐시(52), 8 킬로바이트 데이터 캐시(54) 및 사전 페치 스트림 버퍼(56)를 포함한다. 코어 프로세서(20)는 산술 연산을 메모리 기록 및 인스트럭션 페치와 동시에 수행한다. 코어 프로세서(20)는 ARM 지정 AMBA 버스를 통해 다른 기능 장치와 인터페이스한다. AMBA 버스는 32 비트 양방향 버스(32)이다.
도 3을 참조하면, 네트워크 라우팅 기능을 수행하는 멀티스레드 프로세서(12)가 도시된다. 일례에서, 비동기 전송 모드(ATM), 이더넷 및 기타 유형의 패킷은 네트워크 인터페이스 MAC 장치를 통해 입력되어 멀티스레드 프로세서(12)에 전송된다. 이들 패킷은 범용 마이크로 프로세서(20) 상의 애플리케이션 또는 PCI 버스 인터페이스(도시 생략)를 통해 연결되는 또 다른 프로세서 상의 애플리케이션에서 프로세싱된다. 이러한 패킷의 수신 및 전송에 대해, 그 프로세서(20) 또는 PCI 버스를 통해 연결되는 프로세서 상에서 구동되는 애플리케이션은 네트워크 관리, 제어 및 시그널링 프로세스(74)를 포함하여 네트워크 통신을 관리하는 네트워크 스택(72)을 사용한다.
네트워크 스택(72) 및 애플리케이션은 마이크로 엔진 또는 PCI 버스에 연결되는 또 다른 프로세서를 제어하는 프로세서(20) 내에서 구동된다. 수신, 전송 및 데이터 전달 경로는 프로세서(12)를 통한 패킷 전송을 나타낸다. 관리 제어, 시그널링 및 네트워크 스택(72)은 통상 데이터 전달에 포함되지 않는다. 본질적으로, 프로세서(20)는 수신하고 전송한다. 프로세서(20)는 네트워크를 통해 전달되는 새로운 패킷을 생성한다. 프로세서(20)는 예외의 경우에 데이터 전달에 포함된다. 이는, 특별한 처리 및 복잡한 프로세싱을 필요로 할 수 있는 아주 특별한 패킷을 포함할 것이다.
데이터 전달 프로세스를 위해, 마이크로 엔진(22a~22f)이 사용된다. 소정의 경우에, 데이터 전달은 범용 프로세서(20) 레벨에서 발생할 수 있다. 신호 Init은 마이크로 엔진 코드의 시작을 위한 프로그래머의 인터페이스이다. 신호 Fini는 (제어 정보를 알고 있는 상태로 두기 위해) 종료에 사용된다. 마이크로 엔진(22a~22f)은 기능을 신속하게 제공하고, 저장하며, 전달한다. 엔진은 프로세스의 병렬 하드웨어 지원 스레드를 사용하여 확인, 분류, 폴리싱(policing) 및 필터링을 수행하는 다단의 범용 룩업 프로세스를 사용한다. 예외 및 제어 패킷은 네트워크 스택(72)의 프로세싱을 위해 프로세서(20)에 전달된다. 3원 네트워크 스택(ternary network stack)(도시 생략)은 PCI 포트 또는 장치 포트를 통해 호스트에서 오프칩으로 위치할 수 있다. 이는 프로세서(20)를 오프-로드(off-load)하거나, 한 장소에 대한 집중 관리 및 제어에 사용될 수 있다. 소정의 실시예에서, 마이크로 엔진은 압축 RISC 프로세서이고, 제한된 인스트럭션 공간을 가질 수 있다. 이러한 이유 및 그 밖의 이유 때문에, 다수의 프로토콜을 실행할 때 인스트럭션 코드 크기를 줄이는 것이 바람직하다. 멀티스레드 프로세서(12)는 인스트럭션 저장 한도를 초과하지 않고서 다양한 (기존 및 장래에 존재할 수 있는 유형의) 프로토콜을 처리하는 데 사용될 수 있다.
이제, 도 4를 참조하면, 메모리 내에 저장되는 테이블 구조(90)를 전달하는 관리 장치(80)가 도시되어 있다. 전달 테이블 구조 관리(80)는 네트워크 스택 인터페이스(84) 및 테이블 관리자(86)를 포함하는 제어 및 관리 구조(82)를 포함한다. 테이블 관리자(86)는 SRAM 내에 저장되는 라우팅 테이블(90)을 관리하고, 도 4에 도시한 바와 같이 계층 4 접속 테이블(92), 계층 3 목적지 테이블(94), 계층 2 브릿지 테이블(96) 및 계층 2 접속 테이블(98)을 포함하는 다수의 테이블(90)을 포함할 수 있다. 또한, 메모리 내에 저장되는 데이터 구조는 DRAM 내에 저장되는 패킷 버퍼(100)를 포함할 수 있다. 패킷 데이터 전달 프로세서로서 동작하는 마이크로 엔진은 SRAM 내의 라우팅 테이블(90)로부터 정보를 검색하고, DRAM 내의 패킷 버퍼로부터 패킷 정보를 전달한다. 다수의 테이블(90)은 제어 관리 프로세서(20)에 의해 구성된다. 예를 들면, 계층 2 접속 테이블(96)은 ATM 가상 회로, 프레임 릴레이 접속 MPLS 라벨 또는 그 밖의 낮은 레벨 접속에 사용될 수 있다. 계층 2 브릿지 테이블(96)은 이더넷 브릿지에 사용될 수 있다. 계층 3 목적지 테이블(94)은 목적지 IP 어드레스에 기초하는 인터넷 프로토콜(IP) 전달에 사용될 수 있다. 계층 4 접속 테이블(92)은 소스 및 목적지 포트, 어드레스 및 프로토콜에 기초하는 IP 전달에 사용될 수 있다. 모든 이들 테이블은 패킷이 캡슐 해제 또는 캡슐화되기를 요구할 수 있다.
테이블(90)이 일반적인 방식으로 전달 정보로 채워지면(populated), 패킷 데이터 전달 프로세서는 패킷을 수신하고, 테이블 룩업을 수행하여 테이블 엔트리에 의해 요구되는 바와 같이 정보를 획득하고 패킷을 변환할 수 있다. 제어 관리 프로세스는 캡슐 해제 및 캡슐화를 위해 공통의 포맷을 갖는 테이블(90)을 설정한다.
도 5를 참조하면, 그 서브셋이 각 테이블(90) 내에 포함되는 예시적인 테이블 엔트리가 도시되어 있다. 테이블 엔트리는 다음 필드들을 포함한다:
전달 테이블 포맷(Forwarding Table Format)
디캡 플래그(Decap Flag) : 바이트가 패킷으로부터 제거되어야 하는지의 여부를 나타낸다. 이 플래그가 어서트되면(asserted), 제거될 바이트 수는 디캡 바이트 카운트 필드 내에 있다.
디캡될 층(Decap To Layer) : 이 필드는 특정 계층으로의 헤더층 캡슐 해제를 규정한다. 계층의 길이 및 캡슐 해제는 패킷 헤더를 파싱함으로써 결정된다.
디캡 바이트 카운트(Decap Byte Count) : 이 필드는 패킷의 프론트로부터 제거될 바이트 수를 규정한다. Decap은 패킷 버퍼 내에서 패킷 시작 오프셋을 조정함으로써 수행된다.
현재 인캡(Current Encap) : 이 필드는 현재의 패킷 캡슐화 유형의 식별자를 규정한다.
인캡 플래그(Encap Flag) : 바이트가 패킷에 프리팬딩(prepending)되어야 하는지 여부를 나타낸다. 이 플래그가 어서트되면, 바이트 수는 인캡 바이트 카운트 필드 내에 있고 캡슐화될 바이트는 인캡 필드 내에 있다.
인캡 바이트 카운트(Encap Byte Count) : 패킷에 프리팬딩되어야 할 바이트 수.
다음 테이블 유형(Next Table Type) : 0이 아니면, 다른 룩업이 요구되는 지를 나타낸다. 이는 테이블 유형을 제공한다. 예를 들면, 계층 3 라우팅 또는 계층 4 접속 테이블 유형. 계층 3 라우팅 룩업은 목적지 IP 어드레스를 사용하여 최장 프리픽스 매칭 룩업 알고리즘을 사용할 것이다. 계층 4 접속 룩업은 소스 및 목적지 어드레스, 소스 및 목적지 포트와 프로토콜을 사용하여 104 비트 해시 알고리즘을 사용할 것이다.
다음 테이블 어드레스(Next Table Addr) : 다수의 다음 테이블 및 그 유형의 다수의 다음 테이블이 있을 수 있다. 이 필드는 테이블의 기초 어드레스를 규정한다.
플래그는 프로그래밍 프로세스에 의해 설정되거나 클리어된다. 시그널링 및 접속 설정부는 네트워크를 통한 어떤 경로가 헤더의 변경을 요구하는지를 판단하는 네트워크 시스템의 일부이다. 헤더가 변경될 수 있는 여러 가지 이유가 있을 수 있다. 보통, 하나의 네트워크 도메인으로부터 또 다른 네트워크 도메인으로 프로토콜이 변경되면 헤더 변경이 이루어진다.
이제 도 6을 참조하면, 캡슐화/캡슐 해제 프로토콜을 위한 프로세스(110)가 제공되어 있다. 먼저, 마이크로 엔진(22a~22f) 중 하나가 네트워크 인터페이스로부터 패킷을 수신한다(112). 패킷은 페이로드가 뒤따르는 하나 이상의 헤더로 구성된다. 마이크로 엔진, 예컨대 마이크로 엔진(22a)은 DRAM 내의 패킷 버퍼에 패킷의 페이로드 부분을 카피하고, 버퍼 내의 오프셋에 그 패킷을 배치시켜 패킷 전달을 위해 그 패킷에 프리팬딩될 수 있는 어떤 새로운 헤더 공간을 만들 수 있다. 그 패킷을 위한 패킷 오프셋 파라메터는 버퍼 내로의 오프셋에 결정되는 디폴트 값으로 설정된다. 마이크로 엔진은 패킷의 제 1 헤더를 판독하고(114) 계층 2 룩업을 수행한다. 계층 2 룩업은 테이블 계층 2 브릿지 테이블 및/또는 계층 2 접속 테이블을 판독할 것이다. 테이블은 디캡 또는 인캡 플래그와 같은 다양한 파라메터를 반송할 것이다. 프로세스(110)는 디캡 또는 인캡 플래그가 설정되는 지 여부를 판단할 것이다(116). 디캡 및 인캡 플래그가 설정되면, 프로세스는 디캡 바이트 카운트를 패킷 시작 오프셋에 더하고(118), 패킷 시작 오프셋에서 인캡 바이트 카운트를 감하여(120) 인캡 바이트 패킷에 프리팬딩한다. 프로세스(110)는 현재 판독 테이블 내의 빈 필드에서 주시함으로써 검사될 다음 테이블이 있는 지 여부를 검사한다(122). 다음 테이블이 있으면, 프로세스(110)는 다음 헤더를 파싱하고(124), 다음 테이블을 페치 및 판독한다. 프로세스(110)는 계속하여 주시하여 디캡 또는 인캡 플래그가 설정되는 지를 검사한다.
그러나, 프로세스가, 디캡 및 인캡 플래그가 설정되었다고 판단하지 않으면(위에서, 단계(116)), 인캡 플래그 및 디캡 플래그가 설정되었는 지의 여부를 판단할 것이다(130). 인캡 플래그가 설정되었으면, 시작 오프셋에서 인캡 플래그 바이트 카운트를 감하여 패킷에 인캡 바이트를 건다. 다른 한편으로, 디캡 플래그만 설정되었다면(132), 프로세스는 디캡 바이트 카운트를 버퍼 오프셋에 더하며, 어느 경우든 다음 테이블을 검사할 것이다(112). 프로세스가 테이블 검사의 종료라고 판단하면, 패킷을 종래의 방식으로 분류하고 전달한다(136). 즉, "아니오" 조건은 프로세스가 분류 및 전달을 할 수 있다는 것을 나타낸다. 헤더를 전달하는 것은 마이크로 엔진이 헤더를 가지고 그것을 프로세서(20)에 전송하게 하거나 다른 경우에, 그것이 페이로드로 재조립될 수 있게 한다. 헤더를 전달하는 것은 또한 패킷 등을 전달하는 것을 포함할 수 있다.
이제 도 7을 참조하면, 추가로, 룩업 테이블로부터 획득된 바이트 보급 수를 특정한다. 룩업 테이블은 테이블 내에 설정되는 계층 필드에 디캡을 가질 수 있다. 이 필드는 패킷의 프론트부가 어떤 계층으로 캡슐 해제되어야 한다는 것을 특정한다. 알려진 바와 같이, 패킷은 OSI(Open Systems Interconnect) 7 계층 네트워크 프로토콜에서 사용되는 프로토콜 계층으로 정의된다. 물리층(1)을 통과한 후, 멀티스레드 프로세서층에 의해 보이는 제 1 소프트웨어층은 계층 2이며, 링크층으로서 지칭되기도 한다. 캡슐 해제될 바이트 길이는, 패킷의 새로운 시작이 되는 계층 전의 패킷층을 파싱함으로써 결정된다. 길이는 패킷 시작 오프셋에 더해질 수 있다.
도 7은 캡슐 해제 길이가 테이블 내에 특정되지 않고 패킷 자체를 판독함으로써 결정되는 변형을 나타낸다. 환언하면, 이는, 패킷의 캡슐화 바이트 카운트를 오프셋으로 대체하는 도 6의 프로세싱으로 삽입될 수 있는 루틴 집합일 것이다.
이 오프셋을 결정하는 프로세스(140)는 도 7에 제공되어 있다. 프로세스(140)는 테이블을 판독하는 단계(142)와, 패킷 계층 비트에 디캡이 설정되었다는 것을 판단하는 단계(144)와, 설정되었으면, 헤더를 파싱함으로써 제거될 계층의 길이를 검색하는 단계(146)와, 그 길이를 패킷 시작 오프셋(148)에 더하는 단계를 포함한다. 디캡 계층이 설정되지 않으면 프로세스는 간단히 스킵된다. 어느 경우에도, 이 프로세스는 도 6과 연결하여 설명된 프로세스에 걸릴 수 있다.
일반적인 디캡 계층 비트의 사용은 계층 3 IP 헤더까지 캡슐 해제를 특정하는 것이다. 패킷 캡슐화가 RFC 1483 표준과 같은 ATM 네트워크 상의 다중 프로토콜이면, 계층 2 헤더 길이는 RFC 1483 길이 규칙을 사용하여 헤더 자체로 계층을 파싱함으로써 판단된다. 그러나, 패킷 캡슐화가 전형적 IP이면, 계층 2 길이는 전형적 IP 계층 길이 규칙을 따름으로써 결정된다. 패킷 캡슐화는, 그 포트로부터 프리팬딩된 주문 헤더로부터 오는 포트 유형으로써 알 수 있거나 현재 인캡 필드 내의 제 1 룩업 테이블로부터 획득될 수 있다.
각 네트워크 프로토콜이 별도의 프로토콜 변환을 정의하는 데 반해, 본 방법은 범용 방법을 제공한다. 본 방법은 코드 공간 및 소프트웨어 개발 타임 투 마켓(time-to-market)을 절약한다. 다른 실시예에서, 본 방법은 소프트웨어 라이브러리 루틴, 가령, 고객이 자신 소유의 헤더 캡슐화를 삽입할 수 있고 고객의 매각인이 고객 소유의 프로토콜 설계에 관련될 필요가 없는 캡슐 해제/캡슐화를 위한 범용 소프트웨어 구축 블록으로서 구현될 수 있다.
본 발명의 다수의 실시예가 설명되었다. 그러나, 본 발명의 사상 및 범주로부터 벗어나지 않고 다양한 변경이 이루어질 수 있다. 따라서, 다른 실시예들이 다음 청구의 범위의 범주 내에 있다.

Claims (31)

  1. 네트워크 패킷을 전달하는 방법에 있어서,
    다수의 플래그를 포함하는 테이블을 판독하여 상기 다수의 플래그 중 어떤 것이 설정되는지 클리어되는지 판단하는 단계와,
    상기 테이블이 디캡 플래그와 인캡 플래그를 반송했는지를 판단하는 단계와.
    디캡 플래그와 인캡 플래그가 설정되면, 디캡 바이트 카운트와 패킷 시작 오프셋을 가산하고, 패킷 시작 오프셋으로부터 인캡 바이트 카운트를 공제하는 단계와,
    상기 인캡 바이트를 상기 패킷에 프리팬딩하는 단계
    를 포함하는 네트워크 패킷 전달 방법.
  2. 제 1 항에 있어서,
    상기 테이블은 전달 정보로 채워지는(populated) 네트워크 패킷 전달 방법.
  3. 제 1 항에 있어서,
    상기 전달 테이블 구조는 네트워크 스택 인터페이스 및 테이블 관리자를 포함하는 제어 및 관리 구조를 포함하는 네트워크 패킷 전달 방법.
  4. 제 3 항에 있어서,
    상기 테이블 관리자는 라우팅 테이블을 관리하고, 계층 4 접속 테이블, 계층 3 목적지 테이블, 계층 2 브릿지 테이블 및 계층 2 접속 테이블을 포함하는 다수의 테이블을 포함할 수 있는 네트워크 패킷 전달 방법.
  5. 제 1 항에 있어서,
    상기 테이블은 바이트가 상기 패킷으로부터 제거되어야 하는지 여부를 나타내는 플래그와,
    제거될 바이트의 수를 나타내는 필드를 포함하는 네트워크 패킷 전달 방법.
  6. 제 1 항에 있어서,
    상기 테이블은 특정 계층까지 헤더 계층의 캡슐 해제를 특정하는 필드를 포함하는 네트워크 패킷 전달 방법.
  7. 제 1 항에 있어서,
    상기 테이블은 현재의 패킷 캡슐화 유형의 식별자를 특정하는 필드를 포함하는 네트워크 패킷 전달 방법.
  8. 제 1 항에 있어서,
    상기 테이블은 바이트가 상기 패킷에 프리팬딩(prepending)되어야 하는지의 여부를 나타내는 플래그와,
    바이트의 수 및 캡슐화될 바이트를 특정하는 필드를 포함하는 네트워크 패킷 전달 방법.
  9. 제 1 항에 있어서,
    상기 테이블은 다른 룩업이 요구된다고 나타내는 다음 테이블 유형을 포함하고, 상기 테이블 유형을 식별하는 네트워크 패킷 전달 방법.
  10. 패킷을 캡슐화 또는 캡슐 해제하는 방법에 있어서,
    패킷을 수신하는 단계와,
    상기 패킷의 제 1 헤더를 판독하고 파라미터를 반송하는 접속 테이블을 판독하는 계층 2 룩업을 수행하는 단계와,
    상기 테이블이 디캡 플래그와 인캡 플래그를 반송했는지 판단하는 단계와,
    디캡 플래그와 인캡 플래그가 설정되면, 디캡 바이트 카운트와 패킷 시작 오프셋을 가산하고, 패킷 시작 오프셋으로부터 인캡 바이트 카운트를 공제하는 단계와,
    상기 인캡 바이트를 상기 패킷에 프리팬딩하는 단계
    를 포함하는 패킷 캡슐화 또는 캡슐 해제 방법.
  11. 삭제
  12. 제 10 항에 있어서,
    현재 판독 테이블 내의 빈 필드를 주시함으로써 검사할 다음 테이블이 있는지 판단하는 단계를 더 포함하는 패킷 캡슐화 또는 캡슐 해제 방법.
  13. 제 12 항에 있어서,
    다음 테이블이 있으면,
    상기 다음 헤더를 파싱하고 상기 다음 테이블을 페치(fetch) 및 판독하는 패킷 캡슐화 또는 캡슐 해제 방법.
  14. 제 10 항에 있어서,
    상기 디캡 및 인캡 플래그가 설정되지 않았으면,
    상기 인캡 플래그가 설정되었는지 상기 디캡 플래그가 설정되었는지 판단하는 패킷 캡슐화 또는 캡슐 해제 방법.
  15. 제 10 항에 있어서,
    상기 인캡 플래그가 설정되었으면,
    상기 시작 오프셋에서 상기 인캡 플래그 바이트를 감하고 상기 인캡 바이트를 상기 패킷에 프리팬딩하는 패킷 캡슐화 또는 캡슐 해제 방법.
  16. 제 10 항에 있어서,
    상기 디캡 플래그가 설정되었으면, 디캡 바이트 카운트를 상기 버퍼 오프셋에 더하고 상기 다음 테이블을 검사하는 패킷 캡슐화 또는 캡슐 해제 방법.
  17. 제 10 항에 있어서,
    상기 패킷은 페이로드가 뒤따르는 하나 이상의 헤더로 구성되고,
    상기 방법은 상기 패킷의 상기 페이로드부를 패킷 버퍼에 카피하는 단계를 더 포함하는 패킷 캡슐화 또는 캡슐 해제 방법.
  18. 제 17 항에 있어서,
    상기 카피 단계는 상기 패킷을 상기 버퍼에서의 오프셋에 배치하여 패킷 전달을 위해 상기 패킷에 프리팬딩될 수 있는 어떤 새로운 헤더를 위한 공간을 만들 수 있는 패킷 캡슐화 또는 캡슐 해제 방법.
  19. 컴퓨터 판독 가능 매체 상에 상주하는 네트워크 패킷 전달용 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 매체로서,
    컴퓨터가 다수의 플래그를 포함하는 테이블을 판독하여, 상기 다수의 플래그들 중 어떤 플래그가 설정 또는 클리어되는지 판단하게 하는 인스트럭션과,
    컴퓨터가 상기 테이블이 디캡 플래그와 인캡 플래그를 반송했는지 판단하게 하는 인스트럭션과,
    디캡 플래그와 인캡 플래그가 설정되면, 컴퓨터가 디캡 바이트 카운트와 패킷 시작 오프셋을 가산하고, 패킷 시작 오프셋으로부터 인캡 바이트 카운트를 공제하도록 하는 인스트럭션과,
    컴퓨터가 상기 인캡 바이트를 상기 패킷에 프리팬딩하도록 하는 인스트럭션
    을 포함하는
    컴퓨터 판독 가능한 매체.
  20. 제 19 항에 있어서,
    상기 테이블은 전달 정보로 채워지는 컴퓨터 판독 가능한 매체.
  21. 제 19 항에 있어서,
    상기 전달 테이블 구조는 네트워크 스택 인터페이스 및 테이블 관리자를 포함하는 제어 및 관리 구조를 포함하는 컴퓨터 판독 가능한 매체.
  22. 컴퓨터 판독 가능한 매체 상에 상주하는 네트워크 패킷 전달용 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 매체로서,
    컴퓨터가 패킷을 수신하게 하는 인스트럭션과,
    컴퓨터가 상기 패킷의 제 1 헤더에서 판독하고 접속 테이블을 판독하는 계층 2 룩업을 수행하게 하는 인스트럭션과,
    컴퓨터가 상기 테이블이 디캡 플래그 및 인캡 플래그를 반송했는지 판단하게 하는 인스트럭션과,
    디캡 플래그와 인캡 플래그가 설정되면, 컴퓨터가 디캡 바이트 카운트와 패킷 시작 오프셋을 가산하고, 패킷 시작 오프셋으로부터 인캡 바이트 카운트를 공제하도록 하는 인스트럭션과,
    컴퓨터가 상기 인캡 바이트를 상기 패킷에 프리팬딩하도록 하는 인스트럭션
    을 포함하는
    컴퓨터 판독 가능한 매체.
  23. 삭제
  24. 제 22 항에 있어서,
    현재 판독 테이블 내의 빈 필드를 주시함으로써 검사할 다음 테이블이 있는 지 판단하는 인스트럭션을 더 포함하는 컴퓨터 판독 가능한 매체.
  25. 제 24 항에 있어서,
    다음 테이블이 있으면, 상기 컴퓨터 프로그램은 상기 다음 헤더를 파싱하고, 상기 다음 테이블을 페치 및 판독하는 인스트럭션을 실행하는 컴퓨터 판독 가능한 매체.
  26. 제 22 항에 있어서,
    상기 패킷은 페이로드가 뒤따르는 하나 이상의 헤더로 구성되고,
    상기 컴퓨터 프로그램은 상기 패킷의 상기 페이로드부를 패킷 버퍼에 카피하는 인스트럭션을 더 실행하는 컴퓨터 판독 가능한 매체.
  27. 제 26 항에 있어서,
    상기 카피 인스트럭션은 상기 버퍼에서의 오프셋에 상기 패킷을 배치하여 패킷 전달을 위해 상기 패킷에 프리팬딩될 수 있는 어떤 새로운 헤더를 위한 공간을 만드는 컴퓨터 판독 가능한 매체.
  28. 네트워크 패킷을 프로세싱하는 프로세서로서,
    인스트럭션을 저장하는 컴퓨터 저장 매체를 포함하되,
    상기 인스트럭션은,
    컴퓨터가 다수의 플래그를 포함하는 테이블을 판독하여 다수의 플래그 중 어떤 플래그가 설정 또는 제거되는지 판별하게 하고,
    컴퓨터가 상기 테이블이 디캡 플래그 및 인캡 플래그를 반송했는지 판단하게 하고,
    디캡 플래그와 인캡 플래그가 설정되면, 컴퓨터가 디캡 바이트 카운트와 패킷 시작 오프셋을 가산하고, 패킷 시작 오프셋으로부터 인캡 바이트 카운트를 공제하도록 하고,
    컴퓨터가 상기 인캡 바이트를 상기 패킷에 프리팬딩하도록 하는
    프로세서.
  29. 제 28 항에 있어서,
    상기 테이블은 전달 정보를 포함하는 프로세서.
  30. 삭제
  31. 삭제
KR1020037017306A 2001-09-28 2002-09-12 네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서 KR100647949B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/966,349 2001-09-28
US09/966,349 US7126952B2 (en) 2001-09-28 2001-09-28 Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
PCT/US2002/029074 WO2003030461A1 (en) 2001-09-28 2002-09-12 Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers

Publications (2)

Publication Number Publication Date
KR20040019037A KR20040019037A (ko) 2004-03-04
KR100647949B1 true KR100647949B1 (ko) 2006-11-17

Family

ID=25511271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037017306A KR100647949B1 (ko) 2001-09-28 2002-09-12 네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서

Country Status (10)

Country Link
US (1) US7126952B2 (ko)
EP (1) EP1430658B1 (ko)
KR (1) KR100647949B1 (ko)
CN (1) CN1593041B (ko)
AT (1) ATE366494T1 (ko)
CA (1) CA2460530C (ko)
DE (1) DE60221030T2 (ko)
HK (1) HK1067821A1 (ko)
TW (1) TWI239164B (ko)
WO (1) WO2003030461A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US8572278B2 (en) * 2001-04-30 2013-10-29 Facebook, Inc. Generating multiple data streams from a single data source
US7237033B2 (en) * 2001-04-30 2007-06-26 Aol Llc Duplicating switch for streaming data units to a terminal
US7124166B2 (en) 2001-04-30 2006-10-17 Aol Llc Duplicating digital streams for digital conferencing using switching technologies
US7149218B2 (en) * 2001-12-05 2006-12-12 International Business Machines Corporation Cache line cut through of limited life data in a data processing system
US7529242B1 (en) * 2002-02-15 2009-05-05 Symantec Corporation Routing network packets for multi-processor network flow analysis
TW561740B (en) * 2002-06-06 2003-11-11 Via Tech Inc Network connecting device and data packet transferring method
US8028092B2 (en) 2002-06-28 2011-09-27 Aol Inc. Inserting advertising content
US7136393B2 (en) * 2002-07-19 2006-11-14 Northrop Grumman Coporation Information transmission system and method of data transmission
US7181742B2 (en) * 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
US7346058B1 (en) * 2002-11-27 2008-03-18 Cisco Technology, Inc. Multiprotocol encapsulation system and method
US7042885B2 (en) * 2002-12-05 2006-05-09 Nokia Inc. System and method for implementing a distributed service platform using a system-wide switchtag definition
US7355974B2 (en) * 2003-01-27 2008-04-08 International Business Machines Corporation Method for forwarding data packets by a router
US20040196843A1 (en) * 2003-02-20 2004-10-07 Alcatel Protection of network infrastructure and secure communication of control information thereto
US7644177B2 (en) * 2003-02-28 2010-01-05 Cisco Technology, Inc. Multicast-routing-protocol-independent realization of IP multicast forwarding
US7386010B2 (en) * 2003-06-13 2008-06-10 Corrigent Systems Ltd Multiprotocol media conversion
KR100560761B1 (ko) * 2003-07-08 2006-03-13 삼성전자주식회사 인터페이스 변환 시스템 및 그 방법
US7447203B2 (en) 2003-07-29 2008-11-04 At&T Intellectual Property I, L.P. Broadband access for virtual private networks
US8019841B2 (en) * 2003-09-30 2011-09-13 Nortel Networks Limited Zoning for distance pricing and network engineering in connectionless and connection-oriented networks
EP1692595A2 (en) * 2003-11-04 2006-08-23 Nexthop Technologies, Inc. Secure, standards-based communications across a wide-area network
US7417995B2 (en) * 2004-01-20 2008-08-26 Nortel Networks Limited Method and system for frame relay and ethernet service interworking
US7406088B2 (en) * 2004-01-20 2008-07-29 Nortel Networks Limited Method and system for ethernet and ATM service interworking
US7333508B2 (en) * 2004-01-20 2008-02-19 Nortel Networks Limited Method and system for Ethernet and frame relay network interworking
US7843925B2 (en) * 2004-01-20 2010-11-30 Nortel Networks Limited Ethernet differentiated services architecture
US7505466B2 (en) * 2004-01-20 2009-03-17 Nortel Networks Limited Method and system for ethernet and ATM network interworking
KR100604835B1 (ko) * 2004-02-24 2006-07-26 삼성전자주식회사 프로토콜 변환중재회로, 이를 구비하는 시스템과 신호변환중재방법
CN1934837A (zh) * 2004-04-20 2007-03-21 北电网络有限公司 对在多协议标签交换上以太网多服务交互的服务质量支持的方法与系统
US20060072595A1 (en) * 2004-10-05 2006-04-06 Cisco Technology, Inc. System and method for service tagging for enhanced packet processing in a network environment
US20060215648A1 (en) * 2005-03-22 2006-09-28 Teng-Yi Jen System and method for hardware based protocol conversion between audio-visual stream and ip network
US7599364B2 (en) * 2005-09-13 2009-10-06 Agere Systems Inc. Configurable network connection address forming hardware
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
JP2007206955A (ja) * 2006-02-01 2007-08-16 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
JP2007235211A (ja) * 2006-02-27 2007-09-13 Fujitsu Ltd データ送受信装置、データ送受信方法およびデータ送受信プログラム
EP2031834A4 (en) * 2006-05-23 2010-01-20 Freebit Co Ltd COMMUNICATION MODULE AND APPLICATION PROGRAM HAVING THE MODULE
US7583674B2 (en) * 2006-11-20 2009-09-01 Alcatel Lucent Switch and method for supporting internet protocol (IP) network tunnels
CN101471817B (zh) * 2007-12-27 2011-11-30 华为技术有限公司 一种在无连接ip网络中的流量监测方法、系统及设备
CN103067199B (zh) * 2012-12-19 2015-11-25 华为技术有限公司 深度报文检测结果扩散方法及装置
US9871666B2 (en) 2015-06-25 2018-01-16 AvaLAN Wireless Systems, Inc. Intermediate unicast network and method for multicast data networks
JP6746040B1 (ja) * 2019-06-19 2020-08-26 三菱電機株式会社 命令変換装置、方法、及びプログラム
TWI820977B (zh) 2022-10-21 2023-11-01 中原大學 封包排序與重組電路模組

Family Cites Families (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) * 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
BE795789A (fr) * 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) * 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4016548A (en) * 1975-04-11 1977-04-05 Sperry Rand Corporation Communication multiplexer module
CH584488A5 (ko) * 1975-05-05 1977-01-31 Ibm
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4831358A (en) * 1982-12-21 1989-05-16 Texas Instruments Incorporated Communications system employing control line minimization
US4890222A (en) 1984-12-17 1989-12-26 Honeywell Inc. Apparatus for substantially syncronizing the timing subsystems of the physical modules of a local area network
US4709347A (en) 1984-12-17 1987-11-24 Honeywell Inc. Method and apparatus for synchronizing the timing subsystems of the physical modules of a local area network
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4788640A (en) 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4890218A (en) 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
FR2625340B1 (fr) * 1987-12-23 1990-05-04 Labo Electronique Physique Systeme graphique avec controleur graphique et controleur de dram
US5115507A (en) * 1987-12-23 1992-05-19 U.S. Philips Corp. System for management of the priorities of access to a memory and its application
JP2572136B2 (ja) 1988-03-14 1997-01-16 ユニシス コーポレーシヨン 多重処理データシステムにおけるロック制御方法
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
EP0446721B1 (en) * 1990-03-16 2000-12-20 Texas Instruments Incorporated Distributed processing memory
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5432918A (en) 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5251205A (en) 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) * 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
KR970008523B1 (ko) 1991-10-21 1997-05-24 가부시키가이샤 도시바 프로세서
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
EP0544083A3 (en) 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) * 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5742760A (en) * 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5404484A (en) * 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
DK0627100T3 (da) * 1992-12-23 2000-06-26 Ebauchesfabrik Eta Ag Laveffekt-multitaskkontroller
US5404464A (en) * 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
JPH0740746A (ja) * 1993-07-29 1995-02-10 Aisin Seiki Co Ltd 車両用サンルーフ装置のチエツク機構
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US5488570A (en) * 1993-11-24 1996-01-30 Intel Corporation Encoding and decoding video signals using adaptive filter switching criteria
US5809237A (en) 1993-11-24 1998-09-15 Intel Corporation Registration of computer-based conferencing system
US5740402A (en) * 1993-12-15 1998-04-14 Silicon Graphics, Inc. Conflict resolution in interleaved memory systems with multiple parallel accesses
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) * 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5781774A (en) 1994-06-29 1998-07-14 Intel Corporation Processor having operating modes for an upgradeable multiprocessor computer system
JP3810449B2 (ja) * 1994-07-20 2006-08-16 富士通株式会社 キュー装置
US5781551A (en) 1994-09-15 1998-07-14 Texas Instruments Incorporated Computer communications system with tree architecture and communications method
US5568476A (en) 1994-10-26 1996-10-22 3Com Corporation Method and apparatus for avoiding packet loss on a CSMA/CD-type local area network using receive-sense-based jam signal
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5784712A (en) 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for locally generating addressing information for a memory access
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5581729A (en) 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5886992A (en) * 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US5592622A (en) * 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5828746A (en) 1995-06-07 1998-10-27 Lucent Technologies Inc. Telecommunications network
US5828863A (en) 1995-06-09 1998-10-27 Canon Information Systems, Inc. Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5651002A (en) 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5689566A (en) 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5809530A (en) 1995-11-13 1998-09-15 Motorola, Inc. Method and apparatus for processing multiple cache misses using reload folding and store merging
KR0150072B1 (ko) 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5796413A (en) 1995-12-06 1998-08-18 Compaq Computer Corporation Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering
US5898701A (en) * 1995-12-21 1999-04-27 Cypress Semiconductor Corporation Method and apparatus for testing a device
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
WO1997024825A2 (de) * 1995-12-29 1997-07-10 Tixi.Com Gmbh Telecommunication Systems Verfahren und mikrocomputersystem zur automatischen, sicheren und direkten datenübertragung
US6201807B1 (en) * 1996-02-27 2001-03-13 Lucent Technologies Real-time hardware method and apparatus for reducing queue processing
US5761507A (en) 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5784649A (en) 1996-03-13 1998-07-21 Diamond Multimedia Systems, Inc. Multi-threaded FIFO pool buffer and bus transfer control system
US5797043A (en) 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US6199133B1 (en) * 1996-03-29 2001-03-06 Compaq Computer Corporation Management communication bus for networking devices
KR100219597B1 (ko) * 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
US5768528A (en) 1996-05-24 1998-06-16 V-Cast, Inc. Client-server system for delivery of online information
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) * 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
WO1998020647A1 (en) * 1996-11-08 1998-05-14 Integrated Telecom Technology Method and apparatus to translate data streams among multiple parties
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6256115B1 (en) * 1997-02-21 2001-07-03 Worldquest Network, Inc. Facsimile network
US5742587A (en) * 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) * 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6067585A (en) * 1997-06-23 2000-05-23 Compaq Computer Corporation Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) * 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
EP0918280B1 (en) * 1997-11-19 2004-03-24 IMEC vzw System and method for context switching on predetermined interruption points
US6360262B1 (en) * 1997-11-24 2002-03-19 International Business Machines Corporation Mapping web server objects to TCP/IP ports
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
JPH11203860A (ja) * 1998-01-07 1999-07-30 Nec Corp 半導体記憶装置
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6570850B1 (en) * 1998-04-23 2003-05-27 Giganet, Inc. System and method for regulating message flow in a digital data network
FR2778809B1 (fr) * 1998-05-18 2000-07-28 Inst Nat Rech Inf Automat Installation de transmission de messages a stations perfectionnees, et procede correspondant
US6067300A (en) * 1998-06-11 2000-05-23 Cabletron Systems, Inc. Method and apparatus for optimizing the transfer of data packets between local area networks
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6373848B1 (en) * 1998-07-28 2002-04-16 International Business Machines Corporation Architecture for a multi-port adapter with a single media access control (MAC)
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US6526451B2 (en) * 1998-09-30 2003-02-25 Stmicroelectronics, Inc. Method and network device for creating circular queue structures in shared memory
DE19846274A1 (de) * 1998-10-08 2000-04-20 Alcatel Sa Verfahren zur Durchführung von kooperativem Multitasking in einem Nachrichtenübertragungsnetz und Netzelement dafür
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6356692B1 (en) * 1999-02-04 2002-03-12 Hitachi, Ltd. Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module
US6404752B1 (en) * 1999-08-27 2002-06-11 International Business Machines Corporation Network switch using network processor and methods
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
EP1912124B8 (en) * 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6678746B1 (en) * 2000-08-01 2004-01-13 Hewlett-Packard Development Company, L.P. Processing network packets
US6553406B1 (en) * 2000-08-03 2003-04-22 Prelude Systems, Inc. Process thread system receiving request packet from server thread, initiating process thread in response to request packet, synchronizing thread process between clients-servers.

Also Published As

Publication number Publication date
WO2003030461A1 (en) 2003-04-10
CA2460530A1 (en) 2003-04-10
EP1430658B1 (en) 2007-07-04
CA2460530C (en) 2008-06-17
DE60221030T2 (de) 2008-03-20
DE60221030D1 (de) 2007-08-16
ATE366494T1 (de) 2007-07-15
EP1430658A1 (en) 2004-06-23
US7126952B2 (en) 2006-10-24
US20030067934A1 (en) 2003-04-10
CN1593041B (zh) 2011-06-29
TWI239164B (en) 2005-09-01
HK1067821A1 (en) 2005-04-15
CN1593041A (zh) 2005-03-09
KR20040019037A (ko) 2004-03-04

Similar Documents

Publication Publication Date Title
KR100647949B1 (ko) 네트워크 패킷 전달 방법 및 패킷 캡슐화 - 캡슐 해제 방법과 컴퓨터 판독 가능한 매체 및 프로세서
JP4755390B2 (ja) メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置
US8265092B2 (en) Adaptive low latency receive queues
US9280297B1 (en) Transactional memory that supports a put with low priority ring command
US9678866B1 (en) Transactional memory that supports put and get ring commands
US6631430B1 (en) Optimizations to receive packet status from fifo bus
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
JP4317365B2 (ja) 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置
WO2007144697A2 (en) High performance memory based communications interface
JP2002524005A (ja) 通信を高速化するインテリジェントネットワークインタフェース装置及びシステム
US9594702B2 (en) Multi-processor with efficient search key processing
US9342313B2 (en) Transactional memory that supports a get from one of a set of rings command
US20020049875A1 (en) Data communications interfaces
US20060140203A1 (en) System and method for packet queuing
US20020049878A1 (en) Data communications interfaces

Legal Events

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

Payment date: 20091116

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee