KR100505498B1 - 입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치 - Google Patents

입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치 Download PDF

Info

Publication number
KR100505498B1
KR100505498B1 KR10-2002-7008455A KR20027008455A KR100505498B1 KR 100505498 B1 KR100505498 B1 KR 100505498B1 KR 20027008455 A KR20027008455 A KR 20027008455A KR 100505498 B1 KR100505498 B1 KR 100505498B1
Authority
KR
South Korea
Prior art keywords
frame
processing
input information
information unit
input
Prior art date
Application number
KR10-2002-7008455A
Other languages
English (en)
Other versions
KR20020071911A (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
Priority claimed from US09/479,027 external-priority patent/US6775284B1/en
Priority claimed from US09/479,028 external-priority patent/US6633920B1/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20020071911A publication Critical patent/KR20020071911A/ko
Application granted granted Critical
Publication of KR100505498B1 publication Critical patent/KR100505498B1/ko

Links

Classifications

    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • 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

Abstract

본 발명은 데이터 처리 시스템에서 프레임 프로토콜을 분류하고 처리하는 방법과 시스템(예를 들면, 데이터 패킷 혹은 프레임을 스위칭 혹은 라우팅하는 것)에 관한 것이다. 본 발명은 사전결정된 테스트에 따라 프레임의 일부를 분석한 뒤, 이후의 프레임 처리에서 이용하기 위해 패킷의 주요 특성을 저장한다. 프레임(예컨대 입력 정보 단위)의 주요 특성으로서, 프레임에서 이용되는 계층 3 프로토콜의 유형, 계층 2 캡슐화 기법, 시작 인스트럭션 어드레스, 프레임이 가상 LAN을 이용하는지 나타내는 플래그, 프레임이 속하는 데이터 흐름의 식별부가 있다. 바람직하게는 분석의 대부분은 하드웨어를 이용해 수행되므로, 신속하고 그리고 균일한 시간 주기 내에 완료될 수 있다. 프레임의 저장된 특성들은 프레임의 처리시에 통신망 처리 복합체에 의해 이용된다. 처리기는 프레임의 유형에 대한 플래그와 더불어 계층 3 헤더의 시작 위치와 개시 인스트럭션 어드레스로 사전 조정된다. 즉, 프레임의 유형을 기초로 하여, 정확한 위치에서 프레임에 대한 처리를 시작하기 위해서 인스트럭션 어드레스 혹은 코드 엔트리 포인트가 처리기에 의해 이용된다. 추가 인스트럭션 어드레스는 적층되어 분기점에서 순차적으로 이용됨으로써, 추가적인 테스트 및 분기 인스트럭션을 피할 수 있다. 또한 데이터 흐름을 포함하는 프레임들은 그들이 수신된 순서대로 처리 및 전송될 수 있다.

Description

입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷 처리 장치{METHOD AND SYSTEM FOR FRAME AND PROTOCOL CLASSIFICATION}
발명의 분야
본 발명은 예컨대 다양한 유형과 능력의 정보 처리 시스템 혹은 컴퓨터를 함께 링크하는데 이용되는 통신망 장치(communication network apparatus)와, 이런 장치의 구성 성분 및 데이터 처리 방법에 관한 것이다. 더 구체적으로, 본 발명은 데이터 전송 통신망(data transmission network)에 접속된 처리 장치내의 데이터 흐름을 관리하는 개선된 시스템 및 방법에 관한 것으로, 다수의 독립적인 처리기(processor)에 의해 동시에 처리되며 다양한 상이한 프로토콜중 하나를 가질 수 있는 다수의 입력 정보 단위("패킷" 혹은 "프레임으로 공지됨)를 처리하는 방법과 시스템을 포함한다.
배경 기술
본 실시예는 다음의 문서들과 관련된 것으로, 이들 모두는 본 발명의 양수인에게 양도되었다.
미국 특허 출원 번호 S.N. 제 09/384,691호는 Brian Bass 등에 의해 "Network Processor Processing Vomplex and Methods"라는 명칭으로 1999년 8월 27일에 출원되었으며, 이것은 본 원에서 종종 "통신망 처리 유닛 특허" 혹은 NPU 특허라고 불리운다.
미국 특허 제 5,724,348호는 "Efficient Hardware/Software Interface for a Data Switch"라는 명칭으로 1998년 3월 3일에 출원되었으며, 본 원에서 종종 "인터페이스 특허"라고 불리운다.
미국 특허 출원 번호 제 09/330,968호는 "High Speed Parallel/Serial Link for Data Communications"라는 명칭으로 1999년 6월 11일에 출원되었으며, 본 원에서 종종 "링크 특허"라고 불리운다.
멀티프로토콜 스위칭 서비스(multiplotocol switching services)와 관련하여 IBM에 양도된 여러 가지 특허와 출원들은 종종 "MSS"라고 불리우는데, 이들 중 몇몇은 그 발명자가 Cedric Alexander로서, 종종 "MSS 특허"라고 불리운다.
이후의 본 실시예의 설명은 독자가 통신망 데이터 통신과, 이러한 통신망 통신에 유용한 라우터 및 스위치에 대한 기본 지식을 갖고 있음을 전제 조건으로 한다. 특히, 이러한 설명은 통신망 동작을 계층으로 분류하는 국제 표준화 기구(ISO) 모델의 통신망 아키텍처와 친숙한 것을 전제로 한다. ISO 모델에 기초한 전형적인 아키텍처는, 신호가 상향 전달되는 물리적인 패스웨이(pathway) 혹은 미디어(media)인 계층 1(이것은 종종 "L1"로 불리움)에서 시작해서, 계층 2(혹은 "L2"), 3(혹은 "L3") 등등을 통해, 통신망에 링크된 컴퓨터 시스템에 상주하는 애플리케이션 프로그래밍의 계층인 계층 7(혹은 "L7")까지 뻗어 있다. 전술한 문서들 전반에서, 이러한 계층 L1, L2, L3에 대한 언급은 통신망 아키텍처의 대응하는 계층에 대한 참조가 될 것이다. 본 원의 설명은 또한 통신망 통신에서 이용되는 패킷 혹은 프레임으로 알려진 비트 스트링의 기본적인 이해를 전제 조건으로 한다.
대역폭에 대한 고려(혹은 시스템이 단위 시간당 처리 가능한 데이터량)는 오늘날 통신망 동작 관점에서 더욱 더 중요해지고 있다. 통신망 트래픽(network traffic)은 근래들어 극적으로 증가하고 있는데, 그 주요 원인의 대부분은 인터넷(유연하게 링크된 컴퓨터들의 공중망으로 보통 월드와이드 웹으로 불림)의 폭발적인 성장에 의한 것이고, 사설 데이터 통신 통신망 혹은 인트라넷의 유행도 약간의 영향을 미치고 있다. 인터넷과 인트라넷은 정보와 신생 애플리케이션에 대한 원격 액세스와 관련하여 점점 증가하는 필요성을 만족시키기 위해 원격지 사이에 방대한 분량의 정보를 전송하는 것을 수반한다. 인터넷은 지리적으로 분산된 영역의 많은 사용자에게 엄청난 분량의 원격 정보를 개방해 주었고, 예컨대 전자 상거래처럼 다양한 새로운 애플리케이션을 가능하게 해주었는데, 이것은 결과적으로 통신망에 대한 부하를 증가시켰고, 그리고 점점 증가시키고 있다. E-메일, 파일 전송 및 데이터베이스 액세스같은 다른 애플리케이션도 통신망에 부하를 부가하는데, 이들중 몇몇은 이미 고도의 통신망 트래픽 때문에 부담을 받고 있다.
통신망을 통한 트래픽은 또한 점점 더 다양해지고 있다. 한때는, 몇몇 통신망들이 기본적으로 특정 유형의 통신 트래픽에 대해 이용되었는데, 예컨대 전화망에는 음성, 그리고 데이터 전송망을 통해서는 디지털 데이터가 통신되었다. 물론, 음성 신호에 덧붙여서, 전화망이 한정된 분량의 "데이터"(예컨대, 라우팅과 과금을 목적으로 하는 발신 번호 및 수신 번호)를 운반하기도 했지만, 몇몇 통신망과 관련한 기본적인 이용은 그 시점에서 사실상 동질의 패킷이다.
그러나, 현재에는 음성과 데이터 트래픽이 동일한 통신망상으로 한데 모아지고 있다. 인터넷이 확대되고 기술이 신뢰성 및 보안 분야에서 개선될수록, 예컨대 음성과 데이터처럼 상이한 유형의 정보의 혼합을 포함한 많은 상이한 유형의 정보를 비교적 동시에 전송할 기회가 제공된다.
데이터는 현재 인터넷(인터넷 프로토콜 혹은 IP를 통해)을 통해 무료로 전송되며, 음성 트래픽은 통상 가장 저렴한 경로를 거친다. 예컨대 IP를 통한 음성(VoIP)과, 비동기 전송 모드 혹은 ATM을 통한 음성(VoATM), 혹은 프레임 릴레이를 통한 음성(VoFR)같은 기술은 오늘날의 환경에서 음성 트래픽의 전송과 관련하여 비용면에서 효과적인 대체안이다. 이 서비스들이 확산될수록, 업계는 변하는 비용 구조같은 문제를 다룰 것이고, 처리기 간 정보 전송에서 서비스의 비용과 서비스의 품질 사이의 절충(trade off)에 관심을 가질 것이다.
서비스의 품질 측면은 용량 혹은 대역폭과, 응답 시간(프레임을 처리하는데 걸리는 시간)과, 처리의 융통성(예컨대 상이한 캡슐화(encapsulation) 혹은 프레임 헤더(frame header) 방법처럼 상이한 프로토콜과 프레임 구성에 응답하는지의 여부)을 포함한다. 자원을 이용하는 사람들은 제공된 상황에 따른 트레이드 오프로 서비스의 비용뿐만 아니라 서비스의 품질도 고려할 것이다.
데이터 패킷을 라우트하는 몇몇 종래의 시스템은 패킷이 단일 프로토콜 혹은 포맷이거나, 혹은 허용된 한정된 개수의 프로토콜 혹은 포맷중 하나이기를 요구한다. 이러한 시스템은 허용된 프로토콜에 대해 맞춰질 수 있기 때문에 시스템에서 오로지 한 가지 유형의 프로토콜(혹은 한정된 개수의 프로토콜)의 패킷이 발견될 때 비교적 단순한 설계로 인한 증가된 속도 및 응답성의 이점을 갖는다. 전체 데이터 전송 시스템이 단일 엔티티의 제어하에 있을 때, 제어 엔티티가 단일 규격의 전송 프로토콜을 사용자(허용된 프로토콜을 따르는 사용자 혹은 통신망을 사용하지 않는 사용자)에게 강제하는 것은 쉬웠다(그 이유는, 통신망이 오로지 특정 프로토콜만을 수용하도록 프로그램되었고, 아주 사소한 변화일지라도 프로토콜의 변화를 다룰 수 없기 때문이다).
그러나, 이더넷(Ethernet)같은 통신 규격의 프레임은 다수의 프로토콜중 하나를 이용해서 포맷될 수 있으며, 상이한 캡슐화 기법(encapsulation techniques)을 이용해 메시지로 캡슐화(encapsulated)될 수 있다. 이러한 상이한 프로토콜과 캡슐화 기법은 전형적으로 프레임의 처음에, 그리고 예컨대 L3 메시지의 처음처럼 다른 주요 정보 이전에 가변 데이터량을 제공한다. 따라서, 이더넷 프레임의 주요 정보는 만약 이더넷 L3 프로토콜 혹은 이더넷의 형식, 그리고 캡슐화 기법중 하나가 제공된다면 그에 따라서 프레임내의 상이한 장소에 위치될 수 있다. L3 메시지의 처리를 제공하는 시스템은 제공된 프로토콜이나 캡슐화 기법을 먼저 찾을 필요가 있고, 이것은 멀티-프로토콜 시스템에서 도전이 될 수 있다. 예를 들면, 이더넷 DIX 버전 2는 이더넷 802.3과 상이하므로, 이더넷을 통한 IPX는 이더넷 802.3을 통한 IPX와 상이하다. 이더넷 802.3은 그 자체가 3개의 상이한 포맷(노벨 사유(Novel proprietary), LLC, SNAP)을 갖는다. 더우기, IPX의 각 버전은 소위 IEEE 802.1q 규격으로 불리우는 것을 이용하여 가상 LAN(혹은 VLAN)을 지원할 수도 있고, 혹은 지원하지 않을 수도 있는데, 이것은 또한 프레임의 포맷을 변경시키는 효과를 가져서, L3 메시지의 위치를 변경시키는 효과를 갖는다.
수 많은 프로토콜의 프레임이 지원되었던 종래의 시스템에서는, 프로토콜을 식별하고 어떤 프로토콜에서 다른 프로토콜로 프레임을 번역하거나, 혹은 프레임에서 불필요한 정보(예컨대, 캡슐화 정보)를 제거하기 위해서 때때로 상당량의 오버헤드를 제공하는 것이 필수적이었다(예컨대 컴퓨터 프로그래밍은 때때로 비교 및 분기 인스트럭션으로 백 개 이상의 코드 라인을 포함함). 이러한 다중 프로토콜 처리는 시간을 소모하고, 더 나아가 프로토콜을 식별하는데 일정하지 않고 변동하는 시간이 걸렸다. 이러한 시스템이 프로토콜을 식별하고 필요한 처리를 제공하는데 일정하지 않은 시간을 필요로 하면, 시스템은 모든 프레임의 처리를 최악의 경우까지 늦추거나 또는 범주화(categorization)에 허용된 시간내에 몇몇 프레임이 처리되지 않았을 가능성을 생성하면서 (최악의 경우를 다루기 위해) 가장 긴 시간을 허용하도록 구성되어야 한다.
대부분의 처리기는 인스트럭션 세트의 공통 시작(모든 데이터에 대해 동일한 위치)에서부터 처리를 개시하여, 어디로 가야할지 그리고 어떤 인스트럭션을 실행할지 결정할 필요가 있을 때 처리기가 선택적으로 판독하는 플래그를 설정한다. 따라서, 어떤 종류의 데이터를 가졌는지 그리고 실질적인 처리를 어디에서 시작할지를 결정하기 위해 많은 처리기의 실행이 다수의 테스트를 수행하는데, 이 때 테스트들은 다수의 사이클과 관련되며, 많은 처리와 관련될 수 있다.
데이터를 처리하는 다중처리기 시스템은 종래 기술에 공지되었는데, 이들은 데이터의 고정 선입 선출(FIFO) 처리를 활용한다. 이런 작업은 처리가 일상적인 양식으로 일어날 때에는 좋지만, 어떤 입력의 처리가 지연되면, 시스템이 건너 뛰거나 기능을 중지하게 된다. 어떤 입력의 처리의 지연은 다른 것의 처리를 중지시키는 결과를 가져온다.
처리 동안에 입력 메시지 단위의 트랙을 유지하는 또다른 종래의 시스템이 공지되어 있다. 이 시스템은 처리 능력의 상당 부분을 시스템내에서 각각의 정보 단위가 존재하는 트랙을 유지하는데 쏟아부어야 하고, 예컨대 새로운 데이터 흐름이나 내부 발생의 메시지로부터의 추가 입력 정보 단위를 수용할 수 없다는 제한과 단점을 갖는다.
따라서, 데이터 패킷을 다루는 종래의 시스템은 시스템의 융통성이나 동작 속도, 혹은 이 둘 모두에 대해 영향을 미치는 바람직하지 않은 단점과 제한을 갖는다. 종래의 시스템의 다른 단점과 제한들은 다음의 본 발명의 상세한 설명의 관점에서 당업자에게 명확해질 것이다.
종래 기술의 제한과 단점들의 일부 및, 본 발명의 목적과 이점들의 일부는 설명했으며, 다른 목적들과 이점들은 본 발명의 개선된 라우팅 시스템 및 방법을 설명하는 도면과 관련한 다음의 설명에 의해 당업자에게 명확해질 것이다.
도 1은 본 발명을 실행함에 있어서 유용한 것으로서 NPU 특허에 설명되어 있는 매립 처리기 복합체를 포함하는 인터페이스 장치에 대한 블록도,
도 2는 본 발명에 유용한 분류기 하드웨어 어시스트(classifier hardware assist)를 갖는 도 1에 도시된 유형의 매립 처리기 복합체의 블록도,
도 3a 내지 도 3t는 본 발명의 하드웨어 분류기에 이용되는 다양한 이더넷 프로토콜 포맷을 예시하는 도면,
도 4는 본 발명의 분류기 하드웨어 어시스트의 흐름도로서, 본 발명에서 프레임 부분을 처리하기 위해 분류기에 의해 이용되는 로직을 도시한 도면,
도 5는 본 발명의 분류기를 예시하는 기능도,
도 6은 제 1 인스트럭션의 어드레스 뿐만 아니라 일련의 어드레스가 스택에 저장되는 것을 허용하는, 도시된 선택사양적인 개선점을 갖는 본 발명의 하드웨어 분류기의 다른 도면,
도 7은 각 프레임과 연관된 큐의 개략적인 도면,
도 8은 N개의 처리기의 각각에 대해 두 개의 레이블 저장소를 갖는, 본 발명의 완료 유닛의 상세한 도면,
도 9는 N개의 처리기의 각각에 의해 다루어지고 있는 데이터 흐름의 트랙을 유지하기 위한 레이블 저장소의 포맷의 개략적인 예시도,
도 10은 새로운 프레임이 처리 유닛들중 하나에 디스패치되었다는 표시를 수신하여 처리함에 있어서, 완료 유닛에 의해 수행되는 로직을 예시하는 흐름도,
도 11은 프레임의 처리가 완료되었다는 보고(report)를 처리할 때 완료 유닛에 의해 수행되는 로직 프로세스를 예시하는 흐름도,
도 12는 바람직한 실시예의 완료 유닛의 동작을 예시하기 위한 데이터를 포함하는, 도 8의 완료 유닛의 다른 예시도.
본 발명의 실시예는 다수의 허용된 상이한 메시지 프로토콜중 하나를 이용하여 생성되었으며 VLAN 시스템을 채용할 수도 있고 혹은 채용하지 않을 수도 있는 프레임 또는 패킷의 통신망을 통한 데이터 흐름을 관리하는 단순하지만 효과적인 방식을 제공함으로써 종래의 시스템의 단점과 제한들을 극복한다. 각각의 패킷 혹은 프레임을 빠르고 효과적인 방식으로 해석함으로써, 프레임의 유형과 프레임의 주요 특징이 결정되고, 장래의 참조 및 그 프레임에 대한 처리를 위해 예컨대 전술한 NPU 특허에 설명된 유형의 통신망 처리기에 저장될 수 있다.
본 실시예의 이점은, 상이한 프로토콜을 갖는 패킷을 처리함에 있어서 빠르고 효과적이며, 패킷의 처리가 고속이고 용이하여, 전체 시스템이 프레임 처리와 관련하여 고속으로 동작할 수 있다는 것이다.
본 실시예는 라우터 혹은 스위치가 특정 프레임 혹은 패킷이 어떤 포맷으로 생성되었는지를 미리 알지 않아도 가변 포맷의 연속 패킷 혹은 프레임을 처리할 수 있도록 한다. 이 실시예는 메시지 혹은 패킷의 계층 2(L2) 캡슐화 포맷을 식별한 뒤, 저장된 규칙을 L2 캡슐화, L3 프로토콜 및 VLAN의 존재를 식별하는데 적용하는 것을 포함한다. 이 판정 결과로서, 처리기는 개시 명령 어드레스에서 실행을 준비하는데, 즉, 처리기가 프레임의 식별에 근거하여 인스트럭션의 시작 어드레스로 사전 조정(preconditioned)된다. 따라서 처리기는 개시 인스트럭션 어드레스뿐만 아니라, 프레임의 데이터 부분내의 L3 헤더의 시작부에 대한 포인터와 함께 프로토콜, VLAN 존재 및 캡슐화 포맷을 나타내는 플래그를 갖는다.
본 실시예는 패킷의 초기 처리 동안에 패킷에 대한 주요 정보를 설정 및 저장한 뒤, 패킷 혹은 프레임에 대한 저장된 정보가 이후의 처리에서 이용될 수 있게 하여, 이후의 단계에서 예컨대 NPU 특허에 설명된 통신망 처리 유닛 복합체(network processing unit complexes)에 의해 패킷이 빠르고 보다 효과적으로 처리되게끔 하는 이점을 갖는다.
본 실시예는 단일 데이터 흐름으로부터의 입력 패킷 혹은 프레임이 처리를 위해 다수의 독립적인 처리기 중 하나에 할당되도록 하여, (처리된) 출력 패킷 혹은 프레임이 입력 패킷 혹은 프레임이 수신되었던 바로 그 순서로 재조합되도록 하는 이점을 갖는다.
본 실시예는 다중 데이터 흐름이 서로에게 영향을 미치지 않으면서 처리될 수 있게 하고, 하나의 데이터 흐름이 다른 데이터 흐름을 방해하지 않는 이점을 갖는다. 즉, 하나의 데이터 흐름에 대한 처리가 그 데이터 흐름의 한 부분의 처리가 종료하기를 기다리면서 중지될 때, 다른 데이터 흐름에 대한 처리가 계속될 수 있다.
본 실시예는 또한 종료된 프레임을 순서와 무관하게 즉시 디스패치하는 것 또는 시스템의 플러싱(flushing)을 허용하는데, 원한다면, 수신되었던 순서로 각각의 데이터 흐름을 처리하는 정규 동작을 무시하는 것도 가능하다.
또한 본 실시예는 버퍼와 저장 장치의 사용이 효과적이고 신속하게 동작하여, 처리 속도가 데이터 흐름 관리에 있어서의 오버헤드에 의해 감소되지 않는다는 이점을 갖는다.
본 실시예는 성분들간의 고속 데이터 전송이 가능하도록 통신망 처리기의 어레이 및 관련 저장 성분으로서 동일한 반도체 기판상에 구현될 수 있을 것으로 기대된다.
본 실시예는 소프트웨어보다는 하드웨어로 구현될 수 있는데, 요구되는 포맷 테스트는, 포맷과 무관하게, 그리고 포맷 또는 캡슐화 기법이 결정되기 전에 얼마나 많은 비교가 행해져야 하는지와도 무관하게 균일한 시간내에 종료될 수 있다. 도시된 설계에서, 두 개의 클록 사이클내에 프레임의 분류(classification)가 종료되면서, 필수 표시자는 어떤 종류의 프레임이 제공되었는지(예컨대, 어떤 캡슐화 기법과 어떤 계층 3 프로토콜이 이용되었는지)와 가상 LAN(혹은 VLAN)이 프레임에 대한 주요 정보와 함께 지원되는지를 나타내도록 설정된다. 동일한 두 개의 사이클 동안, 프레임은 디스패쳐(dispatcher)에 의해 유휴 통신망 처리 유닛(NPU 특허에 설명되어 있음)으로 라우트될 수 있다. 프로토콜과 캡슐화 방법을 결정하기 위한 프레임의 처리 결과로서, 처리기에 대한 시작 어드레스가 결정되어 처리기에게 전달됨으로써, 처리기는 시작 어드레스(관련 인스트럭션 저장장치에 대한 포인터)와 처리를 위한 다른 관련 정보가 사전 적재되어 프레임에 대한 자신의 작업을 시작할 수 있다. 처리를 위해 처리기에 시작 어드레스가 사전 적재되는 것을 때때로 처리기의 사전 조정(preconditioning)이라고 부르는데, 이것은 처리기를 효율적으로 만들어, 제공된 메시지의 특별한 포맷에 대해 초기 어드레스에서 시작하는 대신에, 다수의 테스트 인스트럭션을 거칠 필요없이 테스트 결과에 근거하여 인스트럭션을 건너뛰도록 한다.
또한 본 실시예의 시스템은 프레임의 분류 및 전처리(preprocessing)가 통신망 처리 복합체에 대한 프레임의 분배(distribution)과 병렬로 발생할 수 있다는 이점을 갖는다. 이러한 병렬 처리는 보다 효율적인 프레임 처리를 허용하고, 시스템이 고속으로 동작할 수 있게 한다.
본 실시예의 이용을 통해, 다중 처리 유닛들은 서로 독립적인 것이지만 동일한 데이터 흐름을 처리하면서도 부분들이 상이하고 바람직하지 않은 순서로 되지 않게 한다. 소정의 데이터 흐름에 대해 처리된 패킷 혹은 프레임의 출력은, 플러시(flush) 명령에 의해 무시되지 않는 한, 시스템이 데이터 흐름으로부터 입력 패킷 혹은 프레임을 수신했던 것과 동일한 순서가 될 것이다.
마지막으로, 본 실시예는, 통신망으로부터 수신된 데이터 흐름의 순서를 유지하는 처리에 영향을 미침이 없이 새로운 데이터 흐름의 삽입과 패킷 혹은 프레임의 생성을 허용한다.
본 실시예에 대한 한 가지 향상은 처리기의 사전 조정(제 1 인스트럭션의 어드레스를 저장함)뿐만 아니라 이후의 실행에 대한 인스트럭션의 추가 어드레스의 저장도 허용한다. 이런 식으로, 처리기는 제 1 인스트럭션의 어드레스를 가지며, 코드의 실행에 있어서 불필요한 테스팅(만약 조건을 만족하면, 인스트럭션 #1로 진행하고, 그렇지 않으면 인스트럭션 #2로 진행함)없이 추후 분기점(혹은 갈림길(fork))에서 인스트럭션에 대한 어드레스도 가진다. 이것은 코드가 더욱 효율적으로 실행되도록 만든다.
본 실시예의 다른 목적들과 이점들은 첨부 도면과 첨부된 특허청구범위를 함께 참조하면서 다음의 바람직한 실시예의 상세한 설명의 관점에서 당업자에게 명확해질 것이다.
다음의 바람직한 실시예의 설명에서, 현재 본 발명자에게 알려진 본 발명을 실행하는 가장 양호한 구현이 약간의 상세한 내용과 함께 설명될 것이다. 그러나, 이 설명은 특정 실시예에서 본 발명의 개념에 대한 넓은 일반적인 요지로서 의도된 것으로, 본 발명을 이 실시예에 도시된 것으로 한정하려던 의도는 아니며, 특히 당업자라면, 이 도면과 관련해 도시 및 설명된 특정한 구조 및 동작들에 대해 많은 변화와 변경이 가해질 수 있음을 이해할 것이다.
도 1은 패킷 혹은 정보 단위(이것은 때때로 프레임으로 불리우며, 이 용어는 본 문서에서 호환적으로 이용될 것임)의 형태로 데이터를 통신망에 대해 수신, 처리 및 재전송하는 데이터 전송 통신망에 첨부하기 적합한 처리 시스템의 기능적인 블록도이다. 도 1에 도시된 바와 같이, 데이터 처리를 위한 시스템은 다수의 서브 어셈블리(subassembleies)를 포함하고, 이것은 NPU 특허에 설명된 것처럼 단일 기판에 유리하게 집적된다. 단일 기판에 대한 전체 어셈블리의 집적은 시스템의 여러 가지 구성 성분을 근접하게 패킹(packing)하는 것을 허용하여, 구성 성분들간의 통신에 필요한 시간을 줄여주어, 시스템이 동작할 수 있는 속도를 증가시킨다. 다중 처리기에 대한 단일 기판의 이용과 로직 및 메모리를 지원하는 것은 상호 접속으로 인한 장해의 발생률을 줄여주고, 통신망내의 데이터 전송을 방해하는 잡음 또는 다른 표유하는 신호들에 대한 내성을 증가시킬 수 있다.
기판(10)에 장착된 서브 어셈블리는 상부 구성과 하부 구성으로 배열되는데, "상부" 구성("입구(ingress)"로 불리움)은 그 구성 성분들이 데이터 전송 통신망으로부터 칩에 도착한(칩까지 도달하거나 혹은 칩 내부로 들어가는) 데이터와 관계 있음을 말하는 것이고, "하부" 구성("출구(egress)"로 불리움)은 그 구성 성분들의 기능이 칩으로부터 데이터 전송 통신망을 향해 외부로 배출하는(칩으로부터 나오거나 혹은 통신망으로 진입하는) 양식으로 데이터를 전송하는 것임을 말한다. 데이터 흐름은 상부 및 하부 구성의 각 배열에 따르고, 따라서 도 1의 시스템에는 상부 데이터 흐름과 하부 데이터 흐름이 존재한다. 상부 혹은 입구 구성 요소는 인큐-디큐-스케줄링 업(EDS-UP;Enqueue-Dequeue-Scheduling UP) 로직(16), 다중 다중화 MAC's-UP(PMM-UP)(14), 스위치 데이터 무버-업(SDM-UP;SWitch Data Mover-UP)(18), 시스템 인터페이스(SIF;System Interface)(20), 데이터 얼라인 직렬 링크 A(DASL-A;Data Align Serial Link-A)(22) 및 데이터 얼라인 직렬 링크-B(DASL-B;Data Align Serial Link-B)(24)를 포함한다. 데이터 링크는 전술한 링크 특허에 더 자세히 설명되었으며, 이 시스템 부분의 보다 완전한 이해를 위해서는 이 인용 참증을 참조해야 할 것이다. 본 발명은 바람직한 실시예에 채용된 데이터 링크같은 특정한 보조 장치에만 한정되는 것이 아니므로, 본 발명의 바람직한 실시예가 전술한 특허에 더 많이 설명된 데이터 링크를 이용하더라도, 비교적 고속의 데이터 흐름과 시스템 요구를 지원하는 다른 시스템이 본 발명에 유리하게 이용될 수도 있음을 이해해야 한다.
시스템의 하부(혹은 출구)상에 표시된 성분들은 데이터 링크 DASL-A(26) 및 DASL-B(28), 시스템 인터페이스 SIF(30), 스위치 데이터 무버 SDM-DN(32), 인큐-디큐-스케줄러 EDS-DN(34) 및, 출구 PMM-DN(36)을 위한 다중 다중화 MAC's를 포함한다. 기판(10)은 또한 다수의 내부 정적 RAM 성분(S-RAM's), 트래픽 관리 스케줄러(TRAFFIC MGT SCHEDULER)(40) 및, 전술한 인용 참증의 NPU 특허에 더 깊이 설명되어 있는 매립 처리기 복합체(12)를 포함한다. 인터페이스 장치(38)는 각각의 DMU 버스에의해 PMM(14, 36)에 접속된다. 인터페이스 장치(38)는 예컨대 이더넷 물리적(ENET PHY) 장치 혹은 비동기 전송 모드 프레이밍 장비(ATM FRAMER)처럼 L1 회로에 접속하는 임의의 적절한 장치일 수 있는데, 이들은 둘다 업계에서 잘 알려져 있고 일반적으로 이런 목적으로 이용 가능한 장치의 예들이다. 인터페이스 장치의 유형과 사이즈는 현재의 칩과 그 시스템이 부착되는 통신망 미디어에 의해 적어도 부분적으로 결정된다. 다수의 외부 동적 RAM(D-RAM)과 S-RAM은 칩에 의한 이용을 위해 이용 가능하다.
관련 스위칭 및 라우팅 장치 외부로의 일반적인 데이터 흐름이 예컨대 빌딩에 설치된 배선과 케이블같은 전기 도전체를 통하는 통신망에 대해 특별히 개시되었을지라도, 본 발명은 통신망 스위치와 그 성분이 무선 환경에서 이용될 수 있는 것도 고려한다. 예를 들면, 본 원에 개시된 미디어 액세스 제어(MAC) 요소는 예컨대 실리콘 게르마늄 기술로 만들어진 적절한 무선 주파수 장치로 대체될 수 있어서, 개시된 장치가 무선 통신망에 직접 접속하도록 한다. 이러한 기술이 적절히 이용되는 한, 당업자에 의해 무선 주파수 요소는 본 원에 개시된 VLSI 구조로 집적될 수 있다. 선택적으로, 무선 주파수 혹은 예컨대 적외선(IR) 응답 장치같은 다른 무선 응답 장치가 본 원에 개시된 다른 요소들과 함께 블레이드(blade)상에 탑재되어, 무선 통신망 장치에 유용한 스위치 장치를 성취할 수 있다.
화살표는 도 1에 도시된 인터페이스 시스템내의 일반적인 데이터 흐름을 도시한다. ENET PHY 블록(38)에서 빠져 나와 DMU 버스를 통해 이더넷 MAC(14)로부터 수신된 데이터 혹은 메시지의 프레임들은 EDS-UP 장치(16)에 의해 내부 데이터 저장 버퍼(16a)에 위치된다. 프레임들은 정규 프레임(normal frames) 혹은 가이드 프레임(guided frames)으로 식별될 수 있는데, 이것은 다수의 처리기내의 추후 처리 방법과 위치에 관계된다.
도 2는 본 발명을 유리하게 채용할 수 있는 처리 시스템(100)의 블록도이다. 도 2에서, 다수의 처리 유닛(110)은 디스패쳐 유닛(112)과 완료 유닛(completion unit)(114) 사이에 위치된다. 각각의 착신 프레임(incomming frame) F(현재의 데이터 처리 시스템에 부착된 도시되지 않은 통신망으로부터)는 수신되어, UP 데이터 저장소(data store)(116)에 저장되는데, 이것은 데이터 저장소에 대해 데이터를 판독 및 기입할 수 있는 인터페이스 UP DS i/f를 통해 처리 유닛(110)에 접속된다. 프레임들은 디스패쳐(112)에 의해 순차적으로 제거되어, 처리 유닛이 프레임을 처리하는데 이용 가능한지와 관련한 디스패쳐(112)의 판정에 근거하여 다수의 처리 유닛(110)중 하나에 할당된다. 비록 할당 작업의 대체 방법(예컨대 라운드-로빈 할당(round-robin allocation) 또는 최저 사용 빈도 알고리즘(a least recently used algorithm))이 본 시스템에 유리하게 채용될 수 있을지라도, 이것은 프레임 F가 할당되는 하나의 처리 유닛이, 해당 특정 처리 유닛이 유휴 상태이고 작업에 이용 가능함을 나타내는 신호를 디스패쳐(112)에게 전송했음을 암시한다. 일반적으로 처리 시스템, 더 특별하게는 처리 유닛(110)의 보다 구체적인 구조와 기능은 전술한 NPU 특허에서 찾아 볼 수 있다. 디스패쳐(112)와 다수의 처리 유닛(110) 사이에는 하드웨어 분류기 어시스트(118)가 삽입되고, 이것은 특히 도 4 및 도 5와 연계하여 본 원 명세서에서 추후에 상세히 설명될 것이다. 또한 인스트럭션 저장 장치(122)(도 4에 도시됨)가 다수의 처리 유닛(110)과 연계되는데, 여기에는 각각의 처리 유닛(110)에 의한 검색 및 실행을 위해 다수의 상이한 인스트럭션 세트가 저장된다. 이후에 설명되는 것처럼, 인스트럭션 저장 장치(122)의 개시 인스트럭션은 하드웨어 분류기 어시스트(118)에 의해 결정되는 메시지의 유형(그의 프로토콜과 캡슐화 방법)에 근거한 어드레스에 따라 어드레스 지정된다.
완료 유닛(114)은 다수의 처리기(110)와 다운 인큐 시스템(도 1에서 DN-인큐 요소(34)로 표시됨)과 UP 인큐 시스템(도 1의 요소(16)) 사이에 동작가능하게 접속된다. DN 인큐 시스템(34)은 처리된 프레임을 처리 복합체로부터 통신망 혹은 복합체가 부착된 다른 시스템으로 전송하는데 이용되고, UP 인큐 시스템(16)은 처리된 프레임을 스위치 패브릭(switch fabric)으로 전송하는데 이용된다. 디스패쳐(112)는 각각의 프레임과 관련된 식별 정보를 이런 프레임을 처리하도록 할당된 처리 유닛에 할당 및 저장하도록 설계될 수 있다. 다음, 이 식별 정보는 완료 유닛(114)에 의해 이용되어, 단일 데이터 흐름을 구성하는 처리된 프레임이 자신이 수신되었던 그 순서로 전송되도록 한다. 본 발명의 이 양상은 본 명세서에서 추후에 더 상세히 논의될 것이다.
도 3은(다양한 세부 예시들인 도 3a 내지 도 3t로 이루어짐) 본 처리 시스템이 받아들여서 처리하도록 프로그램된 다수의 메시지 포맷(이더넷 메시지 포맷상의 성분과 변화)을 도시하지만, 메시지 또는 프레임의 레퍼토리들(repertoire)은 고려중인 시스템의 환경에 적합하도록 당업자에 의해 변경될 수 있는 것이다. 또한 본 시스템은 장래에 설계될 수도 있는 메시지 포맷과 변화를 포함하는 다른 메시지도 받아들이도록 재설계될 수 있다. 이처럼, 도 3에 도시된 메시지 포맷은 상이한 프로토콜과 캡슐화 유형을 갖는 프레임의 상이한 포맷을 예시하기 위한 것이며, 본 발명은 다양한 상이한 프로토콜과 캡슐화 포맷을 받아들여서, 캡슐화와 프로토콜의 유형에 대한 포인터를 제공함으로써 이들 포맷의 처리에 대한 어시스트를 제공하고, 소정 프레임을 다루는 처리기에 대해 인스트럭션 저장 장치내의 시작 어드레스를 제공하도록 설계된 융통성있는 시스템이다.
도 3a는 공통 혹은 기본 이더넷 메시지 포맷을 예시하는데, 이것은 이더넷 버전 2.0/DIX라고 불리운다. 이것은 메시지가 목적지 어드레스 DA, 소스 어드레스 SA, 메시지의 유형을 나타내는 블록(TYPE), 메시지 텍스트 혹은 데이터 및, 순환 리던던시 검사를 위한 트레일러(trailer) 또는 메시지 무결성 검증을 위한 CRC를 포함하는 메시지 포맷이다. 목적지 어드레스 DA와 소스 어드레스 SA는 둘다 6바이트(48비트)로 지정되고, Type 블록은 2바이트로 지정되는 반면, CRC 트레일러는 4바이트로 지정된다. 일반적으로, 메시지의 나머지 즉, 데이터는 임의의 길이를 갖는 것으로, 1500바이트까지 가질 수 있지만, 이후에 알 수 있듯이, 어떤 유형의 이더넷은 다른 이점을 위해 이런 길이에 대한 융통성을 제한한다. 소스 어드레스 SA는, 메시지가 통신망상의 하나의 노드상에서 단일 통신망 어드레스를 향하는 개별 메시지임을 나타내거나, 혹은 멀티캐스트(milticast) 혹은 브로드캐스트(broadcast) 메시지임을 나타낼 수 있다. 멀티캐스트 메시지는 통신망상의 노드 그룹으로 향하고, 브로드캐스트는 모든 국(stations)으로 향한다. Type 블록은 16비트로서, 사용되고 있는 더 상위 계층 프로토콜을 식별한다. 각각의 등록된 이더넷 프로토콜은 단일 유형 코드가 주어지고, 그 값은 항상 이더넷 802.3 길이 필드의 길이 필드에서 최대값보다 더 큰 값을 가져서, 필드가 공존하도록 한다. 데이터를 MAC 계층으로 보내기 이전에 46바이트의 최소 필드 길이가 충족되도록 상부 계층이 보장한다고 가정하면, 데이터 필드는 전형적으로 46-1500바이트 길이를 갖는다. 프레임의 허용된 길이보다 더 긴 메시지는 허용된 데이터 필드의 최대 길이보다 더 짧은 다수의 메시지로 분할되어야 한다.
도 3b는 IEEE 802.3 이더넷 포맷으로 불리우는 공통 이더넷 스타일에 대한 변화를 예시한다. 이것은 도 1의 공통 이더넷 메시지 포맷과 유사한데, 다만 Type 필드가 길이 필드 LEN으로 대체되는 것만 다르며, 이 길이 필드는 모든 패드(pad)를 제외한 상태에서 16비트로서, 다음에 오는 데이터 필드의 길이를 나타낸다. 이 규격은 패킷의 최소 길이 사이즈를 64바이트로 가정하고, 따라서 데이터 필드 Data는 적어도 46바이트여야 한다. 만약 데이터 필드 Data의 실제 데이터가 46바이트보다 작으면, MAC 계층은 LLC 데이터 필드에 위치 세이버(place savers)(패딩 문자)를 추가함으로써, 통신망을 통해 패킷을 전송하기 전에 최소 사이즈로 만들어야 한다. 그러나, 길이 필드는 패딩 문자를 제외한 길이이므로, 이것은 수신 시스템이 추가된 모든 패딩 문자를 식별 및 폐기하도록 만든다.
도 3c는 특히 IEEE 규격 802.1q를 참조하여 이더넷 메시지를 위한 태그 제어 정보 포맷을 예시한다. 이것은 3비트의 사용자 우선 순위(user priority)와, 1비트의 정규 포맷 표시자(CFI;Canonical Format Indicator)와, 12비트의 VID 혹은 가상 LAN(VLAN) 식별자로 이루어진다. VLAN 식별자는 VLAN을 포함하는 것으로 어드레스를 정의함으로써 가상 LAN으로 식별되는 노드 그룹에 대한 식별이며, 이로써 물리적으로 연관된 노드들이 개별적인 것이 아니라 그룹처럼 논리적으로 연관 및 주소 지정된다.
도 3d는 IEEE 규격 802.1q를 따르는 몇몇 이더넷 프로토콜 메시지 포맷에서 이용되는 매립 RIF(혹은 E-RIF) 포맷을 예시한다. 이 포맷에서, 라우트 유형 RT는 첫 번째 3비트로 표시되며, 다음 5비트는 길이 LTH를 표시하며(E-RIF 라우트 제어 및 E-RIF 라우트 기술자(route descriptor)를 포함해서 전체 E-RIF 부분의 바이트 길이를 표시함), 다음 1비트는 라우트 서술자 방향 D을 표시한다(보통 "0"은 라우트 기술자를 진행 순서로 이동함을 나타내고, "1"은 몇몇 특별히 라우트된 프레임에서 라우트 기술자가 역순임을 나타냄). E-RIF 포맷은 6비트의 가장 큰 프레임 표시자와 1비트의 비정규 포맷 표시자(NCFI)를 포함한다. 라우트 유형 RT은 00X, 01X 혹은 11X중 하나이고, 이것은 각각 프레임이 특별히 라우트된 프레임인지, 투명 프레임(transparent frame)인지, 모든 라우트 탐색 프레임(route explorer frame) 또는 스패닝 트리 탐색 프레임(spanning tree explorer frame)인지를 나타낸다. 가장 큰 프레임 LF 필드는 이더넷을 위한 IEEE 802.3 규격에 따라서 1470 바이트 혹은 그 미만이다. NCFI는 특정된 MAC 어드레스가 비정규 형태인지(0일 경우) 혹은 정규 형태인지(1인 경우)를 나타낸다.
도 3e는 12비트의 구내 정보 통신망 식별부 LAN ID와 4비트의 브릿지 번호(Bridge #)를 포함하는 E-RIF 라우트 기술자 포맷을 예시한다. E-RIF 라우트 기술자 포맷 필드는 또한 업계에 공지된 것으로, 그 이용은 이런 필드와 관련한 규격을 따른다.
도 3f 및 도 3g는 이더넷 메시지에서 이용하기 위한 LLC 포맷의 성분을 예시하는 것으로, 도 3f의 802.2 LPDU 포맷과 도 3g의 공통 SNAP 포맷을 포함한다. 도 3f의 LPDU 포맷은 1바이트(8비트)의 목적지 서비스 액세스 포인트 DSAP와, 1바이트의 소스 서비스 액세스 포인트 SSAP와, 인스트럭션, 응답, 시퀀스 번호 및 폴(poll)/최종(final) 비트를 포함하는 1-2바이트의 제어 필드 Control을 포함한다. 여기에서, 서비스 액세스 포인트는 6비트와 U비트 및 최종 비트(목적지 서비스 액세스 포인트에 대한 개별 I비트와 소스에 대한 인스트럭션/응답 표시자를 위한 C 비트)를 더한 것이다. 도 3g는 SNAP 포맷을 예시하는데, 조직(organization)(Organizationally Unique Identifier 혹은 OUI)을 나타내는 3바이트와, 인터넷 규격 0002 아래의 포맷에 할당된 유형을 나타내는 2바이트를 포함한다. Type 필드의 예는 IP의 경우 0800, IPX의 경우 8137, ARP의 경우 0806, RARP의 경우 8035, 802.1q VLAN의 경우 8100, IPv6의 경우 86DD, Appletalk의 경우 80DB, Appletalk AARP의 경우 80F3이다.
도 3h는 이더넷 포맷을 통한 IPX내의 메시지의 포맷을 예시하는 것으로, 이더넷 MAC 헤더와 IPX 헤더를 포함하며, 이 때 이더넷 MAC 헤더는 각각 6바이트인 소스 어드레스 SA와 목적지 어드레스 DA를 갖고, 그 다음에는 이 프레임이 IPX 포맷임을 나타내는 2바이트의 8137 유형을 갖는다. 다음, IPX 헤더는 2바이트의 체크섬(check sum), 2바이트의 패킷 길이, 1바이트의 TC, 1바이트의 TP, 4바이트의 목적지 통신망, 6바이트의 목적지 노드, 2바이트의 목적지 소켓(destination socket), 4바이트의 소스 노드, 6바이트의 소스 노드 및 2바이트의 소스 소켓으로 표시된 성분들을 포함한다.
도 3i는 이더넷 802.3의 사유 버전을 통한 IPX용 메시지 포맷(흔히 노벨 포맷으로 불림)을 도시하는 것으로, 메시지 길이가 3번째 필드에 지정되는(도 3h에 도시된 이더넷을 통한 IPX에서는 유형이 지정되었었음) 이더넷 802.3 MAC 헤더를 포함한다. 이 포맷의 체크섬은 그 프로토콜에 따라 "FFFF"로 설정된다.
도 3j는 802.2와 함께 이더넷 802.3을 통한 IPX를 예시하는데, 여기에는 메시지가 802.2용 LLC LPDU 필드에 의해 분리되어 있는 IPX 헤더(도 3h에 도시)와 함께 MAC 헤더를 포함한다.
도 3k는 SNAP과 함께 802.3을 통한 IPX 프레임의 포맷을 예시하는데, 여기에서는 도 3j와 관련해 설명된 포맷과 마찬가지로 메시지가 802.3 MAC 헤더를 포함하고, 그 다음에 LLC LPDU 필드가 뒤따르고, 마지막에는 IPX 헤더가 붙는다. LLP LPDU 부분과 IPX 헤더 사이에는 SNAP 필드가 위치하여, OUI와 8137의 Etype을 표시한다.
도 3l은 802.1q VLAN 지원을 갖는 이더넷을 통한 IPX의 포맷을 예시하고, 여기에서 type 필드는 8100으로 표시되고, VLAN 패킷은 이더넷 MAC 헤더와 IPX 헤더 하이에 위치된다(IPX 헤더는 도 3h, 도 3j, 도 3k와 관련해 설명된 것과 동일한 포맷을 시작함). VLAN 패킷은 2바이트의 TCI 필드와, 2바이트의 길이 LEN 혹은 e-type 필드를 포함하고, 그 다음에는 e-rif 제어 필드와 가변하는 수치의 e-rif 기술자 필드를 포함하는데, 이 때의 수치는 식 (LEN-2)/2로 표시되어 있다.
도 3m은 802.1q VLAN 지원을 이용하는 이더넷 802.3(사유)을 통한 IPX용 포맷을 예시한다. type 필드는 8100이고, VLAN 패킷은 도 3l의 VLAN의 것과 동일하다. IPX 헤더는 이전의 도 3i의 802.3 사유 프레임에 도시된 것과 동일하며, 체크섬 필드는 "FFFF"로 설정된다.
도 3n은 VLAN 지원을 갖는 이더넷 802.3을 통한 IPX를 이용하는 프레임에 대한 프레임 배열을 도시한다. 이것은 VLAN 패킷(도 3m과 같음), VLAN 패킷(도 3m과 같은 포맷), LLC LPDU(도 3j와 관련해 도시 및 설명된 것과 유사함) 및 IPX 헤더(도 3h에 도시됨)의 존재를 나타내도록 type가 8100인 802.3 MAC 헤더를 포함한다.
도 3o는 802.1q를 이용한 SNAP 및 VLAN 지원과 함께 이더넷 802.3을 통한 IPX의 메시지 구성 혹은 포맷을 도시한다. 이것은 도 3n의 포맷과 유사하며, LLC LPDU 필드와 IPX 헤더 사이에 SNAP 필드가 추가된다.
도 3p는 메시지가 이더넷 MAC 헤더와 IPv4 헤더를 포함하는 이더넷을 통한 IPv4의 포맷을 도시한다. 필드의 각각의 길이는 도면에 도시되었다.
도 3q는 802.2와 함께 이더넷 802.3를 통한 IPv4용 메시지 포맷을 예시하는데, MAC 헤더 다음에 LLC LPDU가 뒤따르고, 가음에 IPv4 헤더가 뒤따른다.
도 3r은 SNAP과 함께 이더넷 802.3을 통한 IPv4 프레임용 메시지 포맷을 예시하는데, 여기에는 802.3 MAC 헤더 다음에 LLc LPDU가 뒤따르고, IPv4 헤더가 뒤따른다(적용 가능하다면, UDP 혹은 TCP를 위한 선택성 트레일러와 함께).
도 3s는 802.1q VLAN 지원을 갖는 이더넷을 통한 IPv4용 메시지 포맷을 예시한다. 이 포맷은 802.1q VLAN 지원의 다른 사례에서 보이는 VLAN 패킷뿐만 아니라 IPv4의 특징도 갖는다.
도 3t는 802.1q VLAN 지원과 함께 이더넷 802.3을 통한 IPv4용 메시지 포맷을 예시하는데, 이것은 802.2를 갖는 802.3을 통한 IPv4의 속성과 VLAN 패킷의 메시지 특성을 결합한다.
도 3h 내지 도 3t의 각각에서, 맨 아래줄은 프레임 혹은 메시지의 계층 3(L3)을 나타내며, 메시지의 L3 부분에 선행하는 재료의 사이즈 변화때문에, 메시지의 L3 부분은 메시지의 유형(프로토콜 및 캡슐화 방법)에 따라 상이한 위치에서 시작한다. 비록 L3 메시지의 처리가 바람직하더라도(캡슐화를 무시함), 멀티-프로토콜과 다중-캡슐화 시스템이 L3 메시지의 시작 위치를 찾아내는 것은 어려울 수 있다. 더우기, 인스트럭션은 다수의 처리기(110)중 하나에 의해 프레임 프로토콜 및 캡슐화 방법의 유형에 따라 프레임상에 운반되었으므로, 어떤 것(이 경우에는 하드웨어 분류기 어시스트(118))이 인스트럭션 메모리(122)로 처리기를 위한 올바른 개시 인스트럭션에 대한 포인터를 제공하는 것이 바람직하다.
도 4는 도 2에 요소(118)로 도시된 분류기 하드웨어 어시스트에 대한 블록도를 예시하는데, 다수의 처리 유닛(110)중 하나와 인스트럭션 메모리(122)의 선택된 부분과 함께 예시되어 있다. 분류기 하드웨어 어시스트(118)는 입력 정보 단위(혹은 프레임)와 연관된 128비트 세그먼트상에서 동작하는데, 이 128비트 세그먼트는 때때로 "FISH"라고 불리우며, 디스패쳐(112)로부터 (개별 처리 유닛(110)중 하나와 함께) 분류기 하드웨어 어시스트(118)에 의해 수신된다. 이 분류 기능은 첫 번째 3FISH까지(혹은 프레임과 연관된 첫 번째 384비트, 이것은 다른 것으로부터 하나의 FISH를 구별하기 위해 FISH1, FISH2, FISH3으로 불리움)에 대해 동작한다. 제 1 FISH(FISH1)는 실제 수신된 프레임은 아니지만, 이 프레임과 관련있는 정보 세트인데, 예컨대 프레임이 도착한 포트와, 디폴트 코드 엔트리 포인트(291)와, 본 발명의 하드웨어 분류기를 이용하여 프레임 분류를 할 수 있는지 나타내는 표시자(292)(예 혹은 아니오) 등이다.
블록(210)에서, 필드가 현재 구성된 프로토콜, 예컨대 제 1 이더넷 버전(예를 들면, IPX) 혹은 제 2 이더넷 버전(예를 들면, IPv4)과 일치하는지를 판정하기 위해 이더넷의 유형이 프레임의 가변 위치에서 비교된다. 블록(220)에서, SAP(버시스 액세스 포인트) 필드가 레지스터내에 지정(예컨대 프로토콜의 유형을 나타내는 특정한 저장값)되어 있는 현재 구성된 프로토콜과 일치하는지 다시 판정된다. 또한 시스템은 블록(240)에서 상이한 유형의 캡슐화를 나타내고 있는 SNAP 필드가 존재하는지("AAAA03"같은 특정한 필드)를 판정하고, 블록(250)에서 메시지내에 가상 LAN(VLAN) 사용이 존재하는지 검사한다. 블록(260)은 분류 제어인데, 이것은 인에이블 분류(enable classification)(292)에 의해 실행 가능해질 때, 프레임과 연관된 파라미터를 저장하고, 프로토콜 유형, 계층 3 포인터, 분류 플래그를 나타내는 출력을 라인(270, 272, 274)에 제공할 책임이 있다.
각 메시지에 대한 제어 엔트리 포인트(처리의 시작점, 인스트럭션 메모리(122)내의 제 1 인스트럭션의 어드레스)는 각각의 정의된 포맷에 대해 미리 결정되어, 표(280)에 저장될 수 있다. 즉, ETYPE=0 이고, VLAN은 없는 경우, 제어 엔트리 포인트(시작 어드레스)는 인스트럭션 메모리내의 어드레스(122a)이고, ETYPE=1 이고, VLAN이 없는 경우에는, 제어 엔트리 포인트가 어드레스(122b)이다. 마찬가지로, ETYPE=0 이고, VLAN이 있는 경우, 그리고 ETYPE=1 이고, VLAN이 있는 경우에, 각각의 제어 엔트리 포인트(실제 메시지의 처리가 시작되는 위치)는 각기 인스트럭션(122c) 및 (122d)이다. ERIF 필드를 갖는 프레임의 경우에 처리는 인스트럭션(122f)에서 시작될 것이고, 프로토콜 또는 캡슐화 방법이 발견되지 않는 디폴트 프로그램에 대해서는 처리가 인스트럭션(122f)에서 시작할 것이다.
모든 이벤드에서, 디폴트 제어 엔트리 포인트는 메시지의 FISH1에 포함되고, 블록(290)에서 판독된다. 다음, 블록(295)은 디폴트 제어 엔트리 포인트를 사용할 것인지 판정하는데, 만약 하드웨어 분류가 라인(295)에서 가용이고, 블록(280)으로부터 어떠한 제어 엔트리 포인드도 판정되지 않으면, 디폴트 엔트리가 이용되고, 그렇지 않으면 표(280)의 제어 엔트리 포인트가 이용된다.
하드웨어 분류기(118)로부터의 라인(270, 272)(이것은 각기 하드웨어 분류 어시스트(118)에 의해 결정된 분류 플래그와 L3 베이스 어드레스를 가짐)은 프레임을 처리하도록 할당된 개별 처리기(110)에 공급되어, 데이터 메모리(110b)에 저장된 프레임을 처리하고 있는 하나의 처리 유닛과 연관된 범용 레지스터(110a)에 저장된다. 장치(295)의 출력 라인(276)은 특별한 유형의 프레임에 대해 인스트럭션 메모리에 대한 시작 어드레스를 제공하고, 그 데이터는 인스트럭션 제어 로직(110c)에 저장된다. ALU(arithmetic/logic unit)은 처리 유닛(110)의 일부이다. 처리기(110)는 인스트럭션 메모리(122)로부터 인스트럭션을 페치하기 위해 인스트럭션 제어 로직(110c)내의 인스트럭션 카운터를 이용한다. 이런 식으로, 하드웨어 분류기 어시스트(118)에 의해 결정된 프로토콜 및 캡슐화 방법에 근거하여, 처리 유닛(110)은 프레임이 처리되기에 적당한 인스트럭션 세트의 시작 어드레스로 사전 조정되고, 프레임의 유형을 나타내는 적절한 플래그가 설정됨으로써, 처리기(110)는 올바른 인스트럭션을 사용하여 프레임을 처리하기 시작한다.
도 5는 메시지 포맷의 분류화를 결정하는데 이용되는 로직을 예시한다. 이것은 블록(310)에서 시작하는데, 여기에서 FISH2가 선택되고, 블록(320)에서 프레임의 바이트 13-14(프레임에서 유형 정보를 포함하고 있는 2바이트인데, 이 때 프레임은 6바이트의 목적지 어드레스 DA와 6바이트 소스 어드레스 SA를 포함하고 있고, 그 뒤에 type 필드가 뒤따르고 있음)가 테스트된다. 만약 이들 바이트가 ETYPE0와 ETYPE1중 하나에 대한 내용과 일치한다면, 이 프로세스는 블록(323)에서 적절한 플래그를 설정함으로써 프로토콜 정보를 식별하고, 블록(325)에서 프로세스를 종결한다. 한편, 만약 Type 블록이 0600H(16진수)보다 작으면, 프레임은 이더넷 V2.0DIX 포맷이 아닌 이더넷 802.3 프레임 포맷이고, 이 필드는 Type 필드라기 보다는 길이 필드여서, 도 5의 도면의 좌측 부분에서 처리된다. 만약 이 Type 블록이 8100이면, 이 프레임은 802.1q VLAN 지원을 채용하는 프레임이고(예를 들면, 도 3l, 도 3m, 도 3n, 도 3o, 도 3s, 도 3t를 참조), 도 5의 도면의 우측 부분에서 처리된다. 만약 type 필드가 그 외의 것이라면, 제어는 블록(325)로 옮겨가고, 이 프레임은 명확하게 알려지지 않은 프로토콜이므로, 어떠한 프로토콜 정보도 기록함이 없이 분류가 완료된 것으로 간주한다.
만약 블록(320)에서 바이트 13-14가 0600H 미만인 것으로 판정되었다면, 블록(322)에서 바이트 15-17을 해석하여, 이들이 SAP 필드이지, 혹은 LLC인지, 혹은 type의 논리 링크 제어 필드(예를 들면, 도 3k에서 이용된 AAAA03)인지 결정한다. 만약 이 필드가 SAP 필드중 하나인 것으로 인지되면, SAP 필드가 설정되고, 블록(325)에서 분류 완료를 고려하기 전에 프로토콜 정보는 블록(323)에 저장된다. 만약 이 것이 SNAP 필드이면, 제어는 블록(324)로 계속되어 FISH3이 얻어지고, 이것의 바이트 2-6이 인지된 ETYPE에 대해 해석된다. 만약 ETYPE가 인지된다면, 블록(325)으로 나가기 전에 프로토콜 정보가 블록(323)에 저장된다.
만약 블록(320)에서 바이트 13-14가 IEEE 규격 802.1q에 지정된 VLAN임을 나타내는 8100인것으로 판정되었다면, VLAN의 존재가 블록(330)에 저장된 뒤, CFI 필드가 있는지 테스트된다. 만약, 있다면, 분류가 완료되고, 제어는 블록(325)로 진행한다. 만약, 그렇지 않다면, 블록(350)에서 FISH3의 바이트 1-2를 테스트하여, 이들이 공지된 ETYPE(블록(320)에서의 테스트처럼) 혹은 길이(0600H 미만)를 제공하고 있는지 판정한다. 만약 이들이 ETYPE를 제공한다면, 프로토콜 정보는 블록(323)에 저장되고, 제어는 블록(325)로 진행하여 분류가 완료된 것으로 간주된다. 만약 블록(350)에서 필드가 ETYPE로 인지되지 않으면, 분류 프로세스는 블록(325)에서 완료된 것으로 간주된다. 만약 블록(350)에서 테스트가 길이(0600H 미만)를 제공했다면, 블록(360)에서, 바이트 3-5는 공지된 SAP에 대해 테스트된다. 만약 이것이 AAAA03이면, 제어는 공지된 ETYPE에 대해 바이트 6-10을 판정하기 위해 블록(370)으로 진행한다.
도 6은 개선된 하드웨어 분류기를 예시하는데, 특히 도 4의 요소들이 개선된 것이다. 도 6에서, 하드웨어 분류기는 도 4의 요소들을 포함하는데, 인스트럭션 제어 로직(110c)이 단일 시작 어드레스를 포함하는 대신에 인스트럭션 스택(110d)에 저장된 일련의 어드레스를 포함하도록 개선되었다. 이 인스트럭션 스택은 초기 인스트럭션 어드레스를 포함하고, 그 다음에 처리기가 갈림길 혹은 분기 위치에 도달할 때 필요한 다른 어드레스들이 뒤따라서, 이후의 분기 위치에서 장래의 테스팅 혹은 조건 기술문을 방지한다. 다음, 시작 어드레스는 스택에 순서대로 저장되고, 분기 인스트럭션이 요구되면 스택으로부터 빠져 나갈 것이다.
다양한 프로토콜 혹은 캡슐화 기법의 이더넷 메시지의 본래 내용에 대한 추가 정보를 위해, 독자는 이더넷 프레임 구성에 대한 적절한 규격 혹은 기준 가이드를 살펴보기 바란다. 이더넷 프로토콜 및 캡슐화 기법과 그와 관련된 규격 및 옵션들을 이해하는데 유용할 수 있는 몇몇 일반적으로 이용 가능한 문서들로서, ISO/IEC Final CD 15802-3, IEEE P802.1D/D15, November 24, 1997, Annex C ; IEEE Draft Standard 802.1Q/D9 dated February 20, 1998 ; RFC 1700-Assigned Numbers by J. Reynolds and J. Postel, October, 1994(http://www/isi.edu/rfc-editor/rfc.html에서 입수 가능한 문서) ; IBM Token Ring Network Architecture Reference ; IBM LAN Bridge anf Switch Summary가 있다. 간행 번호 SG24-5000-00, Version1.3, January, 1996의 Chapter 1.1.1도 들 수 있다.
하드웨어 분류기는 로직 설계자의 수작업을 통한 전통적인 설계에 의해 설계되는 것뿐만 아니라 로직 설계를 하드웨어(혹은 실제 실리콘 기판상에 구현한) 구성으로 설계 및 제작하는 다양한 일반적으로 이용 가능한 소프트웨어 툴중 하나를 이용하는 것을 포함하여 다양한 방식으로 설계될 수 있다. 이 예에서, 원하는 테스트는 VLSI 하드웨어 정의 언어(VHDL)로 공지된 소프트웨어 언어를 이용하여 프로그램되고, 그 다음 하드웨어 양식으로 원하는 테스트를 수행하는데 필수적인 게이트와 로직을 갖는 설계를 생성하도록 공지된 소프웨어 피스(예컨대, IBM사가 판매하는 것과 Synopsis사가 판매하는 것)로 처리한다. 다른 유사한 설계 시스템도 존재하며, 이들을 유리하게 이용하여, 로직의 설계자가 게이트의 구조나 그 위치를 알 필요없이 그저 원하는 입력과 테스트와 출력이 관련된 논리적 기능만을 알게 하는 것도 가능하다.
전술한 바와 같이, 어떤 시스템에서는, 어떤 처리기가 각각의 프레임을 처리하도록 할당되었는지와 무관하게, 본 발명의 처리 시스템이 데이터 흐름중 처리된 프레임을 수신 순서대로 전송하는 능력을 갖는 것이 바람직할 수도 있다. 이런 시스템에서는, 이용 가능한 처리 유닛을 식별하고, 처리를 위해 수신된 프레임을 처리 유닛에 할당한 이후에, 디스패쳐(112)가 프레임과 이 프레임이 할당된 처리 유닛에 대한 식별 정보를 생성 및 저장할 것이다.
프레임은 전형적으로 예컨대 메시지 번호(MAC)와 소스의 어드레스(SA)와 프레임의 목적지(DA)같은 식별 정보와 함께 도착한다. 이런 정보의 위치와 내용은 메시지의 포맷과 그 캡슐화 기법에 따라 가변하지만, 이 정보는 전체 메시지가 단일 프레임보다 더 긴 경우에도 프레임이 시스템을 통해 목적지로 적절한 순서로 적절히 라우트될 수 있게 한다. 전형적으로, 메시지의 성분은 데이터 흐름으로 불리우며, 데이터 흐름의 각 부분은 동일한 식별 정보(예컨대 MAC, SA, DA)를 포함한다. 디스패쳐(112) 유닛에 의해 입력 프레임에 할당된 실제 레이블(혹은 식별 정보)은 다양한 방식으로 생성될 수 있는데, 예컨대 MAC-SA+DA나, 혹은 다른 메시지 포맷의 MID 필드와 LID를 논리적으로 배타적 논리합(XOR)하여 생성될 수 있다.
도 7에 도시된 바와 같이, 3개의 리스트 혹은 큐의 저장 장치는 각각의 프레임에 대해 생성될 수 있을 것이다. 먼저, 처리된 프레임의 큐(400)는 완료된 작업(출력 혹은 처리된 프레임, 이것은 소정의 프레임을 처리한 처리기로부터 수신됨)을 보유하도록 정의되는데, NPU-0 내지 NPU-N으로 식별된 처리기가 개별 프레임 프레임-0 내지 프레임-N에 접속되는 것으로 도시된 바와 같이, 각 처리기마다 적어도 하나의 완료 프레임을 위한 버퍼 혹은 메모리 공간을 필요로 한다. 디스패쳐(112)가 처리 유닛에 프레임을 전송하면, 처리 유닛은 그 프레임에 대한 식별자를 저장 위치 0 내지 n을 포함하는 제 2 메모리 혹은 큐(410)에 전송하는데, 이 저장 위치들은 각각의 통신망 처리 유닛 NPU-0 내지 NPU-N에 대응한다. 식별자 혹은 레이블 m을 갖는 프레임이 NPU-0으로 전송되면, NPU-0에 대한 레이블에 대응하는 메모리 0에는 저장장치에 대해 식별된 m이 보내져서, NPU-0이 m이라는 식별자를 갖는 입력 정보 단위를 처리중임을 나타낸다. 이것은 동일한 식별자 m을 갖는 이후의 프레임은 동일한 데이터 흐름에 속할 것이고, 다른 식별자 혹은 레이블을 갖는 프레임은 다른 데이터 흐름을 나타낼 것임을 상기시킬 것이다. 따라서, 만약 0의 레이블을 갖는 입력 정보 단위가 수신되어 NPU-1에 디스패치되면, NPU-1에 대응하는 저장 공간 1에는 0이 기록된다. 다음, 만약 이후에 동일한 데이터 흐름으로부터 제 2 입력 정보 단위가 디스패쳐(112)에 수신되어 처리기 NPU-N에 할당되면, 메모리 N은 정보 단위가 처리기 N에 할당되어 있음을 나타내는 0의 레이블을 저장한다.
제 3 메모리(420)는 n개 처리기 유닛들에 의해 현재 처리되고 있는 레이블들의 각각에 대한 저장 공간을 포함한다. 레이블의 각각에 대해, 할당된 처리기의 식별자가 저장되고, 리스트 작성은 순차적으로 발생하므로, 특별한 메시지 흐름에 할당된 제 1 처리기가 메모리의 처음에 나타난다. 이 때, 레이블 m의 경우, 메모리(422)의 엔트리 0은 NPU-0가 그 흐름의 입력 정보 단위를 처리중임을 나타내고, 레이블 0의 경우에는, 메모리(424)에 도시된 것처럼 첫 번째 단위는 처리기 NPU-N에 의해 처리되고 있고, 메모리(426)에 도시된 것처럼 두 번째 단위는 처리기 NPU-1에 의해 처리되고 있다. 소정의 흐름의 경우, 입력 정보 단위가 디스패쳐에 도착하는 순서는 유지되는 것이므로, 동일한 데이터 흐름의 후속 전송은 수신된 것과 동일한 순서대로 발생할 수 있으며, 따라서 입력 프레임이 통신망으로부터 수신되어 N처리기로 디스패치된 순서로 기재된 NPU 혹은 처리 유닛을 레이블 메모리(424, 426)가 갖는 것처럼 보여질 것이다.
도 8은 입력 프레임을 처리하는데 이용되는 완료 유닛(114)의 더욱 상세한 구조를 예시하는데, 이 완료 유닛은 전술한 데이터 관리 기술을 채용한다. 본 실시예에 도시된 완료 유닛(114)은 처리 유닛의 출력(예컨대 처리된 정보 단위)을 분배하기 위해 다수의 라운드 로빈 장치와 통신하는데, 도 4에는 도시되지 않았다. 다수의 라운드 로빈 장치는 하나의 업-라운드 로빈(250)과 두 개의 다운-라운드 로빈 장치를 포함하는데, 하나의 라운드 로빈(260)은 목표 포트(소수의 자주 이용되는 포트는 특정하게 어드레스 지정됨)를 위한 것이고, 하나의 라운드 로빈(270)은 일반적인 배분(처리된 정보가 특별히 어드레스 지정된 목표 포트가 아닌 다른 포트에 어드레스 지정됨)을 위한 것이다.
논리적 AND 게이트(252, 262, 272)는 라운드 로빈(450, 460, 470)에 대한 게이팅을 각기 제공한다. 프레임을 업 라운드 로빈(450)에게 제공하는 AND 게이트(452)의 경우, 입력은 (레디 FCB 페이지(Ready FCB page)(510)와 연관된 블록 UP로부터의) UP 프레임과, 유효 프레임(VF는 전송 준비 완료된 유효 프레임을 나타냄)인 프레임과, 관련 프레임 레이블 필드에서 유효인 레이블 필드(M01 내지 M92)와, 데이터 흐름의 헤드(초기) 프레임과 연관된 레이블이다.
프레임이 소정의 처리기에 디스패치되면, 디스패쳐(112)는 레이블 인큐(280)에 두 피스의 정보(two pieces of information)(라인(282) 상의 프레임에 대한 레이블과, 라인(284)상에서 프레임이 할당되는 처리기의 식별부(identity))를 제공한다. 프레임에 대한 레이블은 프레임이 속하는 데이터 흐름을 식별하는데, 본 실시예에서 이것은, 각각의 데이터 흐름에 대해 고유 식별자를 제공하기 위해, MAC와 소스 어드레스를 더한 것에서 목적지 어드레스를 뺀 값에 근거하며, 그렇게 함으로써, 동일한 데이터 흐름으로부터의 프레임은 동일한 레이블을 가질 것이고, 다른 데이터 흐름으로부터의 프레임은 상이한 레이블 혹은 식별자를 가질 것이다.
도 9는 N개 처리기의 각각과 연관된 정보를 저장하는 레이블 필드 요소(500)에 대한 포맷을 예시한다. N개 처리기의 각각은 관련된 두 개의 이러한 레이블을 갖는데, 하나는 처리되고 있는 프레임에 대한 것이고, 하나는 이미 처리되어 처리 복합체로부터 전송되기를 기다리고 있는 프레임에 대한 것이다. 전송 준비가 된 처리된 프레임은 최상부를 Read FCB Page로 부르는 메모리 혹은 저장 공간(510)에 보유되고, 이들 저장 공간중 하나는 N개 처리기의 각각에 대해 존재한다.
레이블 필드 요소(500)은 레이블 L, 헤더 H, 유효 필드 V, 테일 필드(tail field) T 및 다음 필드 N을 포함한다. 레이블 L은 메시지 내용으로부터 유도되고, 데이터 흐름의 각각에 대해 고유한 식별자를 나타낸다. 헤드 필드 H는, N 개 처리 유닛에 의해 현재 다루어지고 있는 것으로서 처리되고 있는 중이거나 혹은 처리가 끝난 뒤에 처리 복합체의 외부로 전송되기를 기다리는 데이터 흐름 또는 관련 프레임들의 체인의 시작 부분을 식별한다. N개의 처리기의 처리 복합체에서 처리되고 있는 각 데이터 흐름은 N개 처리기의 어느 곳에 헤드 또는 시작 부분(혹은 그 데이터 흐름에 대해 제 1 수신된 프레임)을 갖고, 그 시작 부분은 관련 레이블 필드 요소에 대한 헤드 필드 H에서 "헤드"가 1인 것으로서 식별된다. 마찬가지로, 처리기내의 각각의 데이터 흐름은 N처리기내에 최종 프레임을 갖고, 그 최종 프레임은 테일 필드 T에서 테일이 1인 것으로서 식별된다.
유효 필드 V는 처리기가 (처리에 의한) 실제 데이터를 포함하는지를 나타내는데, 포함하면, 유효 필드에 1로 표시되고, 포함하지 않으면, 유효 필드 V에는 0이 표시된다. 처리가 처음 시작될 때에는 시스템에 실제 혹은 유효 데이터가 존재하지 않고, 따라서 유효 필드 V는 시스템의 초기화의 일부로서 0으로 설정된다. 이후에, 데이터가 소정 처리기에 대한 레디 FCB 페이지(510)로부터 판독되면, 그 처리기 FCB Page에 대응하는 유효 필드는 0으로 설정되어, 처리기가 그 레이블에 대응하는 유효 정보를 가지고 있지 않음을 나타낸다(FCB page의 정보는 이미 라운드 로빈으로 보내졌기 때문임; 그럼에도 불구하고 처리기는 자신과 연관된 다른 레이블 필드에 유효 정보를 가질 수 있는데, 그 이유는 처리기가 다른 프레임에 대해 동작할 수도 있기 때문임). 다음 필드 N는 동일한 데이터 흐름의 다음 프레임-N개 처리기와 연관된 2N 레이블 필드중 다른 하나-과 연관된 레이블 필드를 나타낸다. 레이블 인큐(480)는 각각의 입력 정보 단위 또는 프레임에 대해, 소정의 프레임이 데이터 흐름과 프레임이 디스패치된 처리기에 대한 식별자와 함께 디스패치되었다는 메시지를 디스패쳐로부터 수신한다.
도 10은 도 4의 레이블 인큐(480)의 흐름을 예시한다. 프레임이 디스패쳐(112)로부터 n개 처리기중 하나로 디스패치되면, 블록(600)에서, 입력 정보 단위 혹은 프레임에 대한 레이블이 라인(482)상에서 레이블 인큐(480)로 전송되고, n개의 처리기중 어느 것이 프레임을 처리하고 있는지에 대한 식별은 라인(484)상에서 전송된다. 레이블 인큐(550)에 의한 첫 번째 처리는 블록(602)에서 제 1 레이블 필드가 가리키는 하나의 저장 공간에 대해 유효 필드 V가 1인지를 결정하는 것이다. 만약 유효 필드 V가 1이면, 지적된 저장 공간은 채워져 있고, 블록(606)에 표시된 것처럼, 데이터는 다른 저장 공간에 저장되어야 하며, 만약 그렇지 않다면, 지적된 저장 공간이 블록(604)에서 이용되어야 한다. 다음, 블록(650)에서, 적절한 저장 공간에 대한 유효 필드 V가 1로 설정되어, 유효 데이터가 해당 저장 공간에 저장되어 있음을 나타내고, 블록(640)에서, 현재 저장 위치에 대한 테일 표시자 T가 이것이 현재 데이터 스트림의 최종임을 나타내도록 설정된다(동일한 데이터 흐름에 대한 다음 프레임이 수신될 때까지 이며, 이 때 테일 필드 T는 리셋된다). 다음, 블록(610)에서, 레이블이 처리기중 어떤 것에 의해 다루어지고 있는 현재 레이블과 비교된다(물론, 이와 관련해 유효 필드 V는 1로 설정되어 이것이 유효 프레임임을 나타내야 한다). 이 비교의 결과, 현재 레이블이 이미 프로세스 과정중인 것과 동일한 것이면, 제어는 블록(670)으로 진행하고, 그렇지 않고 현재 처리기 과정중인 어떠한 레이블과도 일치하지 않는 것이면, 제어는 블록(630)으로 진행한다. 만약 현재 레이블중 하나와 일치한다면, 프레임은 기존의 데이터 흐름의 일부이고, 따라서 블록(670)에서, 데이터 흐름중 이전의 종단(end)의 테일 필드 T가 리셋되고(T=0), 그 레이블 필드에 대한 다음 필드 포인터는 현재 프레임의 위치 지점으로 설정된다. 다음, 블록(680)에서, 헤드 필드 H가 0으로 설정되어, 현재 프레임이 데이터 흐름의 헤드가 아님을 나타낸다. 만약 현재 프레임에 대한 레이블이 저장되어 있는 어떠한 레이블과도 동일하지 않았다면, 현재 프레임은 새로운 데이터 흐름이고, 현재 프레임은 그 데이터 흐름의 시작 부분이므로, 블록(630)에서 헤드 필드 H가 1로 설정되어, 이 상태를 나타내야 한다. 적절한 플래그, 특히 헤드 필드 H를 구성하는 블록(630) 또는 블록(680)의 처리 이후, 현재의 데이터 흐름에 링크하여 필드 혹은 플래그를 구성하는 프로세스가 행해진다.
도 11에서, 처리기 외부로 프레임을 처리하거나 전달하는 프로세스가 도시된다. 먼저, 블록(710)에서 제 1 필드 표시자가 플립(fliped)되어, 포인터가 처리기에 대한 제 1 또는 다음 필드처럼 다른 저장 공간을 가리키게 된다. 다음, 블록(720)에서, 유효 필드 V가 0으로 리셋되어, 데이터가 더이상 유효하지 않음을 나타낸다(프레임이 디스페치되었고, 데이터는 현재 처리되고 있는 프레임을 나타내지 않음). 블록(725)는 테일 필드 T가 특별한 데이터 흐름의 최종 프레임임을 나타내는 (T=1)로 설정되었는지 테스트한다. 만약 그렇다면, 제어는 블록(740)으로 진행하여 처리기가 종료되었음을 나타낸다. 만일 그렇지 않다면, 블록(730)에서, 연속하여 다음 프레임이 위치되고(다음 필드내의 포인터에 의해), 그 헤드 비트 혹은 플래그 H가 현재 처리기내의 해당 데이터 흐름에서 이것이 첫 프레임임을 나타내도록 설정된다. 다음, 블록(730)으로부터, 플래그의 설정이 블록(740)에 표시된 것처럼 행해진다.
도 12는 본 발명의 시스템을 일 예로 예시하는데, 도 10의 로직을 갖는 전술한 완료 유닛에 의해 몇 개의 데이터 흐름이 수용될 수 있는지를 예시한다. 디스패쳐(112)와 함께 N개의 처리기와 완료 유닛이 얼마 동안 작업하여, 도 12는 특히 레이블 저장 공간을 참조하여 완료 유닛의 일부에 저장된 데이터의 스냅샷(snapshot)을 나타낸다. 이 도면에 도시된 바와 같이, 레이블 인큐는 다수의 레이블 메모리에 접속되는데, N개 처리기의 각각에 대해 두 개이다. 처리기의 각각은 또한 처리된 프레임들이 도시된 세 개의 라운드 로빈에 대해 전송을 대기하는 출력 버퍼(레디 FCB 페이지(Ready FCB Page)라고도 불리움)와 연관된다. 레이블 메모리중 어느 것이 먼저 수신되었는지를 나타내기 위해 제 1 레이블 메모리가 레이블 메모리 쌍의 각각에는 연관된다(그리고, 레이블 메모리가 모두 유효이면, 제 1 레이블은 레디 FCB 페이지 버퍼의 것이고, 제 2 레이블 혹은 추후에 수신된 레이블은 각 처리기에서 현재 처리되고 있는 것을 나타낸다). 도면에는 5개의 별개의 데이터 흐름들이 도시되어 있지만, 소정 시간에 진행중인 데이터 흐름의 개수는 시스템(특히, 시스템의 사이즈와 통신망 트래픽)에 따라 다르다. 이 예에서, 10개의 처리기가 처리기 0 내지 처리기 9로서 식별되고, 레이블 메모리는 처리기 0에 대해 메모리 M01 및 M02으로 식별되기 시작해서 처리기 9에 대해서는 레이블 메모리 M91 및 M92으로 식별되며, 처리기의 개수는 설계시 선택 사항이므로, 원할 경우에 바꿀 수 있다. 식별자 A를 갖는 제 1 데이터 흐름은, 레이블 메모리 M01(및 처리기 0에 대응하는 참조 부호)이 체인 혹은 데이터 흐름의 헤드임을 표시하는 표시부(H=1)에 의해, 도시된 바와 같이, 레이블 메모리 M01에서 시작한다. 레이블 메모리 M01의 다음 필드 N은, 처리기 2가 이 데이터 흐름과 연관된 다음 정보 단위를 다루고 있음을 나타내도록 레이블 메모리 M21을 표시한다. 레이블 메모리 M21의 다음 필드는 레이블 메모리 M52를 표시하여, 처리기 5가 이 데이터 흐름의 다음 부분을 가짐을 표시한다. 레이블 메모리 M52에 대해 설정된 테일 필드는 이것이 N개의 처리기에 의해 현재 처리되고 있는 이 데이터 흐름의 최종 부분임을 나타낸다. 이 예에서, 데이터 흐름의 요소들간의 논리 연결을 설명하기 위해, 데이터 흐름의 시퀀스는 레이블 메모리 M01에서 레이블 메모리 M21으로 표시하는 화살표 A1과, 레이블 메모리 M21에서 레이블 메모리 M52로 표시하는 화살표 A2로 도시된다(화살표는 다음 필드내의 포인터를 논리적으로 나타낸 것이며, 물리적으로 실제 구현되는 것은 아니다). 마찬가지로, 레이블 M02에서 레이블 메모리 M11로의 데이터 흐름은 동일한 데이터 흐름의 순서를 화살표 A3으로 표시한다(비록 레이블 메모리 M01, M21, M52와 연계하여 설명된 것과는 다른 데이터 흐름일지라도). 제 3 데이터 흐름은 레이블 메모리 M31과 M42와 연계하여 화살표 A4로 표시되고, 제 4 데이터 흐름은 레이블 메모리 M71과 M72사이에 화살표 A5로 표시된다. 마지막으로, 제 5 데이터 흐름은 어떠한 화살표도 갖지 않는 레이블 메모리 M41에 표시되는데, 이것은 현재 오로지 단일 레이블 메모리만을 포함하는 데이터 흐름이기 때문이다. 레이블 메모리 M41은 이 데이터 흐름과 연관된 다른 레이블 메모리가 없기 때문에 데이터 흐름의 헤드이기도 하고 테일이기도 하며, 다음 필드는 갖지 않는다.
단일 처리기와 연관된 두 개의 레이블 메모리가 존재할 때, 이 레이블 메모리중 하나는 완료된 혹은 처리된 정보 단위를 나타내는데, 이 정보 단위는 흔히 레디 FCB 페이지(Ready FCB Page)로 불리우는 버퍼에 저장되며, 처리 복합체로부터의 전송을 위해 적절한 라운드 로빈 유닛으로 그 때의 사정에 따라서 업(up) 혹은 다운(down)으로 전송될 준비를 하는데, 여기에서 업 전송인 경우에는, 인터페이스 장치로 전송될 것이며, 하향 전송의 경우에는, 데이터 전송 통신망을 향해 다시 전송된다. 전술한 예에서, 처리기 0, 처리기 4 및 처리기 7은 연관된 레이블 메모리 모두에 데이터를 포함한다. 각각의 레디 FCB 페이지에는 UP 필드(이것이 업 페이지인지 다운 페이지인지를 나타냄)도 연관되는데, 다운 페이지일 경우에 프레임이 목표 포트에 어드레스 지정되었는지 혹은 범용 포트에 어드레스 지정되었는지도 나타낸다. 만약 처리기 0에 대해 초기에 수신된 프레임이 레이블 메모리 M02 였고, 이것이 데이터 흐름의 헤드이면서 처리기 복합체 및 그 버퍼의 다음 전송을 위해 업 라운드 로빈 장치에 의해 선정된 업 프레임이라면, FCB 페이지와 그 연관 데이터 필드는 레디 FCB 페이지에서 제거되어, 업 라운드 로빈에 정보를 전송한다. 다음, 제 1 레이블 표시자가 토글(toggled)되어, 처리기 1에 대한 다른 레이블 메모리 M01가 이제 첫 번째임을 나타내고, 레이블 메모리 M02에 대한 유효 필드 V는 0으로 설정되어, 이 레이블 메모리가 더 이상 활성 혹은 유효하지 않음을 나타내며, 관련 FCB 페이지에 대한 유효 필드는 0으로 리셋된다.
본 발명은 현재의 데이터 흐름을 방해하지 않으면서 새로운 데이터 흐름에 대해 미리 알아야 할 필요도 없이 새로운 데이터 흐름을 지원한다. 새로운 데이터 흐름을 나타내는 패킷(예를 들면, 처리 유닛중 하나로부터의 상태에 대한 메시지)은 다른 데이터 흐름에 대한 참조없이 자신의 식별 데이터와 간단히 저장된다. 식별자의 결핍은 "레이블 없음(no label)" 필드를 설정하여, 모든 현재의 데이터 흐름에 대한 식별자를 일치시키지 않을 것이고, 메시지는 언제든지 진행할 수 있다.
또한 본 발명은, 시스템이 레이블 필드의 체인닝(chaining)(다음 포인터와, 프레임을 전송한 라운드 로빈 장치에 대한 액세스를 하기 전에는 소정 프레임이 헤드인 필요 조건)을 무시한 채, 완료된 프레임을 이 완료된 프레임이 수신된 순서대로 처리하도록 함으로써, 플러시 인스트럭션이 각각의 순서대로의 데이터 흐름의 처리를 무시할 수 있게 한다. 이것은 FCB 페이지에 "레이블 없음 필드"를 강제함으로써 수행될 수 있을 것이다.
단일 데이터 흐름은 데이터 흐름의 헤드가 처리되기 전까지 차단된 채로 있을 것인데, 그 이유는 (플러시 선택없는) 정규 동작에서, 메시지 흐름의 헤드인 프레임만이 완료 유닛에 의한 라운드 로빈으로의 전송에 대해 고려될 것이기 때문이다. 그러나, 각각의 데이터 흐름은 자기 자신의 헤드를 가지므로, 어떤 데이터 흐름은 차단될 수도 있지만 다른 데이터 흐름은 처리를 계속하여, 중단이나 장애없이, 그리고 중재없이, 완료된 정보 단위를 라운드 로빈으로 전송할 수 있다. 이것은 특히 다른 데이터 흐름이 정지되지 않아서 단일 데이터 흐름이 정지되는 사례(예를 들면, 처리기가 고장나거나 단일 데이터 흐름의 한 요소를 처리할 수 없음) 에서 유용하다. 만약 그렇지 않다면, 단일 데이터 흐름 차단이 교정될 때까지 전체 처리는 중지된다.
당연히, 전술한 바람직한 실시예의 설명의 관점에서 본 발명의 많은 수정안들이 당업자에게는 명확할 것이다. 예를 들어, 분류기를 구현하는 하드웨어의 실제 유형은 많은 설계 선택 사항에 따르고, 설명된 특별한 선택 사항들은 메시지 컨텐트와, 메시지 캡슐화 방법 및, 행해지는 처리에 따른다. 본 발명의 사상을 벗어남이 없이, 시스템이 다룰 수 있는 메시지 구성과 시스템 구현에 대해 많은 수정안들이 가해질 수 있다. 저장된 레이블은 메시지 컨텐트에 근거하지 않고 다른 방식으로 발생될 수 있고, 또는 단순히 디스패쳐에 의해 식별되는 데이터 흐름의 연속적인 넘버링일 수 있다. 본 발명의 사상을 벗어나지 않으면서, 본 시스템에 대해 많은 수정과 조정이 유리하게 도입될 수 있으며, 본 발명의 몇몇 이점은 다른 관련된 특징의 유사한 이용없이 달성될 수 있다. 따라서, 전술한 바람직한 실시예의 설명은 단순히 본 발명의 사상을 예시하는 것으로 간주되어야 하고, 본 발명의 사상을 한정하려는 것이 아니다.

Claims (31)

  1. 장치에 있어서,
    반도체 기판과,
    상기 기판상에 제조된 N (N〉1) 개의 처리 유닛과,
    상기 기판상에 제조된 제 1 내부 데이터 메모리━상기 데이터 메모리는 상기 N 개의 처리 유닛으로 액세스 가능한 정보를 저장함━와,
    상기 반도체 기판 상에 제조되며, 상기 N 개의 처리 유닛에 동작가능하게 결합되어, 상기 N 개의 처리 유닛 중 하나의 처리 유닛으로 입력 정보 단위(an input information unit)를 수신 및 전송하는 디스패쳐(dispatcher)와,
    상기 디스패쳐에 접속된 분류기(classifier)━상기 분류기는 상기 반도체 기판 상에 제조되며, 입력 정보 단위에 대한 데이터 포맷을 결정하고, 상기 입력 정보 단위의 상기 데이터 포맷을 표시하는 입력 정보 단위 출력 표시자(input information unit output indicators)에 대한 출력 표시자 및 상기 입력 정보 단위에 대한 시작 어드레스를 생성하여 상기 내부 데이터 메모리에 저장하는 비교 유닛을 포함하되, 상기 표시자와 상기 시작 어드레스는 상기 N 개의 처리 유닛들 중 상기 하나의 처리 유닛이 상기 입력 정보 단위를 처리하는 동안에 상기 하나의 처리 유닛에 의해 이용가능하며 상기 입력 정보 단위의 처리에 이용됨━와,
    상기 반도체 기판상에 장착되고, 상기 N 개의 처리 유닛에 동작가능하게 접속되어, 상기 N 개의 처리 유닛 중 상기 하나의 처리 유닛에 의해 처리된 상기 정보 단위를 수신하는 완료 유닛(completion unit)을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 비교 유닛은 상기 입력 정보 데이터에 포함된 가상 구내 정보 통신망 필드(virtual local area network field)에 대한 테스트를 포함하고,
    상기 생성된 출력 표시자는 상기 입력 정보 단위 내의 상기 가상 구내 정보 통신망 필드의 존재를 식별하는 표시자를 포함하는 장치.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 분류기는, 상기 분류기에 의해 결정되는 상기 입력 정보 단위의 유형과 그의 캡슐화 기법을 기초로 하여 코드 엔트리 포인트를 결정하는 시스템을 포함하는 장치.
  7. 제 1 항에 있어서,
    상기 분류기는 상기 입력 정보 단위의 유형을 기초로 하여 디폴트 코드 엔트리 포인트와 코드 엔트리 포인트를 결정하는 시스템을 포함하는 장치.
  8. 제 7 항에 있어서,
    상기 입력 정보 단위의 유형을 기초로 하여 상기 디폴트 코드 엔트리 포인트와 상기 코드 엔트리 포인트로부터 선택하는 선택기(selector)를 더 포함하는 장치.
  9. 제 8 항에 있어서,
    가상 구내 정보 통신망 정보가 상기 입력 정보 단위에 포함되는지를 식별하는 시스템을 더 포함하는 장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 입력 정보 단위를 처리하는 방법에 있어서,
    상기 입력 정보 단위를 디스패쳐에서 수신하는 단계와,
    처리를 위해 상기 입력 정보 단위를 상기 디스패쳐로부터 다수의 처리기 중 하나의 처리기에 전송하는 단계와,
    상기 정보 단위가 상기 디스패쳐로부터 상기 다수의 처리기 중 상기 하나의 처리기로 전송되는 동안 상기 입력 정보 단위로부터 선택된 비트를 판독하는 단계와,
    상기 입력 정보 단위의 유형과 프로토콜을 식별하거나, 혹은 상기 입력 정보 단위가 입력 정보 단위의 어떠한 사전결정된 식별 유형도 충족시키지 않는다는 것을 확인하기 위해, 상기 입력 정보 단위로부터 판독된 비트를 상기 입력 정보 단위의 사전결정된 유형을 식별하는 알려진 표시자에 대해서 테스트하는 단계와,
    상기 입력 정보 단위로부터의 비트의 상기 테스트 결과를 기초로 하여, 상기 유형의 입력 정보 단위의 표시자와, 상기 입력 정보 단위에 대한 다른 정보를 저장하는 단계와,
    상기 다수의 처리기 중 상기 하나의 처리기가, 상기 입력 정보 단위의 처리시에 상기 입력 정보 단위에 대한 상기 저장된 표시자와 상기 다른 정보를 사용하는 단계를 포함하는
    입력 정보 단위 처리 방법.
  16. 제 15 항에 있어서,
    상기 표시자를 생성 및 저장하는 단계는 상기 입력 정보 단위가 상기 다수의 처리기 중 상기 하나의 처리기로 전송되는 동안에 발생하며, 이로써, 상기 다수의 처리기 중 하나의 처리기가 상기 입력 정보 단위를 처리할 경우, 상기 표시자와 상기 다른 정보가 결정 및 저장되고, 상기 다수의 처리기 중 상기 하나의 처리기는 상기 입력 정보 단위의 처리시에 상기 입력 정보 단위에 대한 상기 표시자와 상기 다른 정보를 사용하는
    입력 정보 단위 처리 방법.
  17. 제 15 항에 있어서,
    상기 입력 정보 단위의 추후 처리를 위해 상기 입력 정보 단위의 내용을 기초로 하여 시작 어드레스를 생성하는 단계를 더 포함하고,
    상기 다수의 처리기 중 상기 하나의 처리기가 상기 저장된 표시자를 이용하는 상기 단계는 상기 시작 어드레스를 이용하는 단계를 포함하는
    입력 정보 단위 처리 방법.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 입력 프레임을 식별하고, 상기 프레임의 추후 처리를 위해 상기 프레임에 대한 표시자를 제공하는 방법에 있어서,
    캡슐화의 유형과 프로토콜 유형을 나타내는 사전결정된 내용과 상기 입력 프레임의 섹션(section)을 비교함으로써, 상기 입력 프레임으로부터 캡슐화의 유형과 프로토콜 유형을 결정하는 단계와,
    각각의 입력 프레임에 대해, 상기 입력 프레임에 대한 캡슐화 유형 및 프로토콜 유형의 표시자를 생성 및 저장하는 단계와,
    상기 입력 프레임에 대해 계층 3 헤더의 위치를 결정 및 저장하는 단계와,
    상기 결정된 유형의 프로토콜 및 캡슐화 방법을 기초로 하여, 상기 입력 프레임의 추후 처리를 위한 시작 포인트를 결정 및 저장하여, 상기 위치 및 시작 포인트가 상기 입력 프레임의 추후 처리에서 사용될 수 있게 하는 단계를 포함하는
    입력 프레임 식별 및 표시자 제공 방법.
  25. 제 24 항의 단계들을 포함하는, 입력 프레임의 특성을 결정하는 방법에 있어서,
    상기 추후 처리를 위한 시작 포인트를 결정하는 상기 단계가 상기 입력 프레임으로부터 디폴트 코드 엔트리 포인트를 결정하는 단계를 포함하되,
    상기 입력 프레임 프로토콜 및 캡슐화 방법을 이용하여, 상기 캡슐화와 프로토콜의 조합(combination)에 대해서 저장된 제어 엔트리 포인트가 저장되었는지를 판정하며,
    만약 저장되었다면 추후 처리를 위한 상기 시작 포인트를 위해 상기 저장된 제어 엔트리 포인트를 이용하고,
    만약 저장되지 않았다면, 상기 추후 처리를 위한 시작 포인트로서 상기 디폴트 코드 엔트리를 이용하는
    입력 프레임 특성 결정 방법.
  26. 가변 포맷의 데이터 패킷을 통신망으로부터 수신하여 처리하는 장치에 있어서,
    데이터 패킷을 처리하여 입력 데이터 패킷을 기초로 하는 출력 데이터 패킷을 제공하는 다수의 처리기━각각의 처리기는 독립적으로 동작함━와,
    상기 처리기에 연결되어, 상기 통신망으로부터 데이터 패킷을 수신하고, 상기 다수의 독립적인 처리기 중 하나에 상기 패킷을 할당하는 디스패치 유닛과,
    상기 디스패치 유닛에 연결되어, 상기 패킷을 수신하고, 상기 패킷의 프로토콜과 캡슐화 기법 뿐만 아니라, 상기 처리 유닛에 의한 상기 프레임의 추후 처리를 위한 시작 어드레스도 결정하는 분류 디바이스(classification device)를 포함하며,
    상기 분류 디바이스는,
    상기 패킷의 일부에 근거하여 상기 캡슐화 기법을 결정하는 로직과,
    상기 패킷 내에서 가상 구내 정보 통신망 정보의 존재를 결정하는 로직과,
    상기 캡슐화의 유형과 상기 추후 처리를 위한 상기 시작 어드레스를 포함한 각각의 패킷에 대한 출력을 포함하는
    데이터 패킷 처리 장치.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 가변 프로토콜과 캡슐화를 갖는 정보의 프레임을 분석하여, 그 프레임을 처리할 시작 위치와, 그 프레임을 처리하는 초기 인스트럭션으로의 포인터를 제공하는 장치에 있어서,
    상기 프레임의 사전결정된 바이트를 조사하여, 상기 바이트가 길이나 프로토콜을 표시하는지를 결정하는 비교기와,
    상기 프레임에 대한 상기 프로토콜과 캡슐화 시스템을 결정하는 로직을 포함하며,
    상기 프로토콜과 캡슐화 시스템을 이용하여, 상기 프레임을 처리하기 위한 시작 어드레스와, 상기 프레임을 처리하는 상기 초기 인스트럭션으로의 포인터를 결정하는
    장치.
KR10-2002-7008455A 2000-01-07 2000-12-21 입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치 KR100505498B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/479,027 US6775284B1 (en) 2000-01-07 2000-01-07 Method and system for frame and protocol classification
US09/479,028 2000-01-07
US09/479,027 2000-01-07
US09/479,028 US6633920B1 (en) 2000-01-07 2000-01-07 Method and system for network data flow management with improved completion unit

Publications (2)

Publication Number Publication Date
KR20020071911A KR20020071911A (ko) 2002-09-13
KR100505498B1 true KR100505498B1 (ko) 2005-07-29

Family

ID=27046095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7008455A KR100505498B1 (ko) 2000-01-07 2000-12-21 입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치

Country Status (19)

Country Link
EP (1) EP1244964B1 (ko)
JP (1) JP4095802B2 (ko)
KR (1) KR100505498B1 (ko)
CN (1) CN100339832C (ko)
AT (1) ATE280411T1 (ko)
AU (1) AU2016601A (ko)
BR (2) BR0015717A (ko)
CA (1) CA2385339C (ko)
CZ (1) CZ20021442A3 (ko)
DE (1) DE60015186T2 (ko)
ES (1) ES2226958T3 (ko)
HK (1) HK1054098A1 (ko)
HU (1) HUP0203823A2 (ko)
IL (1) IL150587A0 (ko)
MX (1) MXPA02005419A (ko)
MY (1) MY122998A (ko)
PL (1) PL355786A1 (ko)
TW (1) TW526453B (ko)
WO (1) WO2001050259A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004524617A (ja) 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド クロック分配システム
US6973503B2 (en) 2002-05-23 2005-12-06 International Business Machines Corporation Preventing at least in part control processors from being overloaded
US7242682B1 (en) 2002-10-09 2007-07-10 Storage Technology Corporation Hardware frame modifier apparatus and method for storage virtualization
US7715350B2 (en) 2003-06-12 2010-05-11 Broadcom Corporation Classifier for communication device
CN100438492C (zh) * 2003-09-30 2008-11-26 美国博通公司 用于IEEE802.11g接收器的分类器
FR2867642B1 (fr) * 2004-03-09 2006-08-18 Cit Alcatel Dispositif et procede de traitement de trames a champ a utilisation multiprotocolaire, pour un reseau de communications
CN100466594C (zh) * 2004-10-09 2009-03-04 华为技术有限公司 一种对报文进行分类处理的方法
CN100421481C (zh) * 2005-03-09 2008-09-24 华为技术有限公司 基站中处理帧协议控制帧的方法
US7881475B2 (en) 2005-05-17 2011-02-01 Intel Corporation Systems and methods for negotiating security parameters for protecting management frames in wireless networks
KR100713483B1 (ko) 2005-08-05 2007-04-30 삼성전자주식회사 연성 재질을 이용한 슬라이딩 타입 휴대 단말기
US8229525B2 (en) 2006-09-26 2012-07-24 Samsung Electronics Co., Ltd. Semi-automatic sliding device for a portable terminal and portable terminal having the same
KR100800769B1 (ko) 2007-01-29 2008-02-01 삼성전자주식회사 멀티미디어 휴대 통신 장치
CN101242344B (zh) * 2007-02-05 2013-03-20 财团法人工业技术研究院 网络封包分类器与其方法
KR100891775B1 (ko) 2007-05-14 2009-04-07 삼성전자주식회사 멀티미디어 휴대 전자 장치
TWI387268B (zh) * 2009-04-03 2013-02-21 Hon Hai Prec Ind Co Ltd 路由器及其處理IPv6資料包的方法
WO2012136546A1 (de) 2011-04-06 2012-10-11 Robert Bosch Gmbh Verfahren und vorrichtung zur anpassung der datenübertragungssicherheit in einem seriellen bussystem
JP5770924B2 (ja) 2011-04-06 2015-08-26 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 直列バスシステム内でデータ伝送容量を上げるための方法及び装置
JP5702505B2 (ja) 2011-04-26 2015-04-15 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング メモリの大きさに対して調整される直列データ伝送のための方法及び装置
AU2012277899B2 (en) 2011-06-29 2017-06-29 Robert Bosch Gmbh Method and device for serial data transmission having a flexible message size and a variable bit length
WO2014038582A1 (ja) * 2012-09-04 2014-03-13 日本電気株式会社 パケット振分装置、パケット振分方法、およびパケット振分プログラム
US10579578B2 (en) 2017-10-24 2020-03-03 Micron Technology, Inc. Frame protocol of memory device
CN112740730B (zh) * 2018-09-29 2023-04-04 Oppo广东移动通信有限公司 无线通信方法、终端设备和接入网设备
CN112260896B (zh) * 2020-10-16 2022-05-10 山东云海国创云计算装备产业创新中心有限公司 一种网络传输测试方法、装置、设备及可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357632A (en) * 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
US5870394A (en) * 1996-07-23 1999-02-09 Northern Telecom Limited Method and apparatus for reassembly of data packets into messages in an asynchronous transfer mode communications system
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys

Also Published As

Publication number Publication date
ES2226958T3 (es) 2005-04-01
EP1244964A1 (en) 2002-10-02
AU2016601A (en) 2001-07-16
IL150587A0 (en) 2003-02-12
JP4095802B2 (ja) 2008-06-04
PL355786A1 (en) 2004-05-17
ATE280411T1 (de) 2004-11-15
KR20020071911A (ko) 2002-09-13
DE60015186D1 (de) 2004-11-25
HK1054098A1 (en) 2003-11-14
CN100339832C (zh) 2007-09-26
MXPA02005419A (es) 2002-11-29
JP2003519944A (ja) 2003-06-24
DE60015186T2 (de) 2006-02-02
EP1244964B1 (en) 2004-10-20
BR0015717A (pt) 2002-07-23
BRPI0015717B1 (pt) 2018-03-13
BRPI0015717B8 (pt) 2020-05-26
CA2385339A1 (en) 2001-07-12
CA2385339C (en) 2005-06-28
HUP0203823A2 (en) 2003-05-28
CZ20021442A3 (cs) 2002-07-17
MY122998A (en) 2006-05-31
CN1433543A (zh) 2003-07-30
WO2001050259A1 (en) 2001-07-12
TW526453B (en) 2003-04-01

Similar Documents

Publication Publication Date Title
KR100505498B1 (ko) 입력 정보 단위를 처리하는 방법 및 장치, 데이터 패킷처리 장치
US7440417B2 (en) Method and system for frame and protocol classification
US6430184B1 (en) System and process for GHIH-speed pattern matching for application-level switching of data packets
US6172990B1 (en) Media access control micro-RISC stream processor and method for implementing the same
US6226267B1 (en) System and process for application-level flow connection of data processing networks
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
KR100466083B1 (ko) 인터페이스 디바이스를 포함하는 장치 및 데이터 플로우 핸들링 방법
US7420979B2 (en) VLAN server
US7313142B2 (en) Packet processing device
KR100468800B1 (ko) 네트워크 프로세서
CN102427446B (zh) 分组合并
US6714553B1 (en) System and process for flexible queuing of data packets in network switching
KR100498824B1 (ko) Vlsi 네트워크 프로세서 및 방법
US6522188B1 (en) High-speed data bus for network switching
US20030007489A1 (en) Data extraction system for packet analysis
KR100481258B1 (ko) 네트워크 프로세서 프로세싱 콤플렉스 및 방법
US7751319B2 (en) Method and processor for classifying data packet units
US20110261820A1 (en) User-specified key creation from attributes independent of encapsulation type
US20040042490A1 (en) State record processing
JP2001500680A (ja) 分類キーを利用したフレーム分類
US8208482B2 (en) Transmitting packets between packet controller and network processor
JP4209186B2 (ja) パケットの高速ルーティング及びスイッチングに対するメモリ要件を低減するように構成されたプロセッサ
US6633920B1 (en) Method and system for network data flow management with improved completion unit
US7133931B1 (en) Method and system for making a frame alteration in a network processing system

Legal Events

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