KR101607180B1 - 패킷 재조립 및 재배열 방법, 장치 및 시스템 - Google Patents

패킷 재조립 및 재배열 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101607180B1
KR101607180B1 KR1020147005957A KR20147005957A KR101607180B1 KR 101607180 B1 KR101607180 B1 KR 101607180B1 KR 1020147005957 A KR1020147005957 A KR 1020147005957A KR 20147005957 A KR20147005957 A KR 20147005957A KR 101607180 B1 KR101607180 B1 KR 101607180B1
Authority
KR
South Korea
Prior art keywords
packet
cell
queue
sequence number
descriptor
Prior art date
Application number
KR1020147005957A
Other languages
English (en)
Other versions
KR20140046052A (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 KR20140046052A publication Critical patent/KR20140046052A/ko
Application granted granted Critical
Publication of KR101607180B1 publication Critical patent/KR101607180B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • 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
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2408Traffic characterised by specific attributes, e.g. priority or QoS for supporting different services, e.g. a differentiated services [DiffServ] type of service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

패킷 재조립 및 재배열 방법은 소스 포트가 송신한, 소스 ID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하는 단계, SID에 따라, 수신된 셀을 전처리하여 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하는 단계, 패킷 시퀀스 번호에 따라, 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하는 단계, 정확하게 배열된 패킷이 완전한 패킷이면, 셀 시퀀스 번호에 따라, 정확하게 배열된 패킷의 셀을 배열하여 정확하게 배열된 셀을 획득하는 단계, 및 정확하게 배열된 셀에 대해 패킷 재조립을 수행하는 단계를 포함한다. 또한, 대응하는 네트워크 장치 및 통신 시스템이 제공된다.

Description

패킷 재조립 및 재배열 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR PACKET REASSEMBLY AND REORDERING}
본 출원은 2011년 8월 17일에 출원된 국제출원 No. PCT/CN2011/078504의 계속출원이며, 그 내용은 전체로서 여기에 원용된다.
본 발명은 통신 기술에 관한 것이며, 구체적으로는 패킷 재조립 및 재배열 방법, 장치 및 시스템에 관한 것이다.
데이터 통신 장치는 복수의 회선 카드(line card) 및 패브릭 스위치 기판으로 구성되며, 회선 카드 및 패브릭 스위치 기판은 십자형 및 수직으로 서로 연결되어 있다. 업스트림 장치로부터 상이한 목적지로 가는 다양한 길이의 패킷을 수신한 후, 입력단의 회선 카드는, 패킷 목적지에 따라 라우팅 테이블을 검색하여 출력단을 결정하고, 트래픽 관리(TM: Traffic Management)로 패킷을 전소하는 패킷 프로세서(PP: Packet Processor)로 패킷을 전송한다. TM에 의해 형성된 후, 패킷은 패브릭 스위치 인터페이스(FI: Fabric Switch Interface)에서 고정된 크기를 가지는 복수의 셀로 분할된다. 셀은 패브릭 스위치로 연속적으로 송신된다. 패브릭 스위치는 각각의 셀에 대한 경로를 독립적으로 선택하고 목적지 포트로 셀을 전송한다.
상이한 셀이 패브릭 스위치의 상이한 경로를 통하여 전송되기 때문에, 목적지 포트에 도착하는 셀은 무질서(disordered)할 수 있고(예를 들면, 동일한 패킷에 속하는 셀이 패킷에서의 위치 순서에 따라 순서대로 도착하지 않음), 따라서 무질서한 셀이 재배치될 필요가 있고, 동일한 패킷에 속하는 셀이 재조립되어 완전판 패킷이 된다. 그 다음, 동일한 소스 포트가 송신한 패킷이 보내진 순서대로 소스 포트에 배치되고, 최종적으로 출력 포트로부터 다운스트림 장치로 송신된다. 여기에서, 동작의 연속, 즉 동일한 패킷의 셀을 완전한 패킷으로 재조립하고, 동일한 소스 포트가 송신한 패킷을 그들의 송신 순서에 따라 소스 포트에 재배열하는 것 등을, 일반적으로 패킷 재조립 및 재배치라고 한다. 종래 기술에서는, 다양한 소스의 패킷이 보통 시간의 척도를 사용하여 목적지 포트에서 재조립되고 재배열된다. 이 방법은 시간 척도 동기화에 대한 높은 요구사항을 가지고 있다. 그러나 많은 소스가 존재하는 경우, 매우 정확한 시간 척도 동기화를 달성하기 힘들고, 따라서 이 방법은 높은 성능을 가지는 장치에는 적합하지 않다. 그러나, 만약 패킷이 시간 척도를 사용하지 않고 목적지 포트에서의 소스에 기초하여 단순히 재배열되면, 많은 메모리 및 제어 자원이 낭비된다.
본 발명의 배경 기술은 미국 특허출원공개공보 US2008/0279195 (2008.11.13) 및 국제공개공보 WO97/48250 (1997.12.18)에 개시되어 있다.
본 발명의 실시례는, 높은 성능의 장치에 적합한, 적은 메모리 및 제어 자원을 점유하는 패킷 재조립 및 재배열 방법, 장치 및 시스템을 제공한다.
패킷 재조립 및 재배열 방법은, 소스 포트가 송신한, 소스 ID(SID: Source Identification), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하는 단계; 상기 SID에 따라, 수신된 상기 셀을 전처리(preprocessing)하여 상기 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하는 단계; 상기 패킷 시퀀스 번호에 따라, 상기 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하는 단계; 상기 패킷 시퀀스 번호에 따라 상기 패킷 재조립 데이터베이스 내의 셀을 배열한 후, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정하는 단계; 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정된 후, 정확하게 배열된 셀을 획득하기 위해, 상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열하는 단계; 및 상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열한 후, 상기 정확하게 배열된 셀에 대해 패킷 재조립을 수행하는 단계를 포함한다.
네트워크 장치는, 소스 포트가 송신한, 소스 ID(SID: Source Identification), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하도록 구성되어 있는 수신 유닛; 상기 SID에 따라, 상기 수신 유닛에 의해 수신된 상기 셀을 전처리(preprocessing)하여 상기 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하도록 구성되어 있는 전처리 유닛; 상기 패킷 시퀀스 번호에 따라, 상기 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하도록 구성되어 있는 패킷 배열 유닛; 상기 패킷 시퀀스 번호에 따라 상기 패킷 재조립 데이터베이스 내의 셀을 배열한 후, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정하고, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정된 후, 정확하게 배열된 셀을 획득하기 위해, 상기 셀 시퀀스 번호에 따라, 상기 정확하게 배열된 패킷의 셀을 배열하도록 구성되어 있는 셀 배열 유닛; 및 상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열한 후, 상기 정확하게 배열된 셀에 대해 패킷 재조립을 수행하도록 구성되어 있는 재조립 유닛을 포함한다.
통신 시스템은, 본 발명의 실시례가 제공하는 소스 포트 장치 및 네트워크 장치를 포함하고, 상기 소스 포트 장치는 상기 네트워크 장치에 셀을 송신하도록 구성되어 있고, 상기 셀은 소스 ID(SID: Source ID), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함한다.
본 발명의 실시례는 SID에 따라 수신된 셀을 전처리하여, 수신된 셀이 패킷 재조립 데이터베이스에 삽입될지 여부를 결정하고, 그 후 셀의 셀 시퀀스 번호 및 패킷 시퀀스 번호에 따라 데이터베이스 내에서 셀을 직접 배열하고, 최종적으로 패킷 재조립을 달성한다. 해결 수단이 소스에 따라 패킷을 직접 재배열 및 재조립할 수 있기 때문에, 시간 척도 동기화에 기초하여 재배열 및 재조립하는 종래 기술과 비교하여 고성능 장비에 적합하다. 또한, 해결 수단이 수신된 셀을 제어하고 관리하기 때문에(즉, 재조립을 위해 대기하는 패킷), 자원의 활용율이 높고, 더 적은 메모리 및 제어 자원이 점유된다.
본 발명의 실시례에서의 기술적 해결수단을 더욱 명확하게 설명하기 위해, 이하에서는 실시례를 설명하기 위해 사용되는 도면들을 간략하게 소개한다. 분명한 것은, 이하의 도면은 단지 본 발명의 몇몇 실시례를 설명한다는 것이며, 당해 기술분야에서의 통상의 지식을 가진 자라면 어떠한 창작적 노력 없이도 이러한 포함되는 도면들로부터 다른 도면들을 이끌어 낼 수 있을 것이다.
도 1은 본 발명의 실시례 1이 제공하는 패킷 재조립 및 재배열 방법의 순서도이다.
도 2a는 본 발명의 실시례가 제공하는 패킷 재조립 및 재배열 방법의 처리의 구조도이다.
도 2b는 본 발명의 실시례 2가 제공하는 패킷 재조립 및 재배열 방법의 순서도이다.
도 2c는 유니캐스트에서의 패킷 재조립 데이터베이스 및 패킷 배열의 구조를 설명하는 개략도이다.
도 2d는 본 발명의 실시례의 전처리(preprocessing)의 순서도이다.
도 2e는 본 발명의 실시례가 제공하는 패킷 재조립 및 재배열 방법의 셀 배열 메커니즘을 설명하는 개략도이다.
도 3a는 본 발명의 실시례가 제공하는 네트워크 장치의 구조도이다.
도 3b는 본 발명의 실시례가 제공하는 네트워크 장치의 구조도이다.
이하에서는 본 발명의 실시례의 기술적 해결수단들을 도면을 참조하여 명확하고 완전하게 설명한다. 분명한 것은, 설명된 실시예들은 단지 본 발명의 모든 실시예들이 아닌 그 일부만을 나타낸다는 것이다. 본 발명의 실시예들에 기초하여 어떠한 창작적 노력 없이 당해 기술분야에서의 통상의 지식을 가진 자가 획득한 모든 다른 실시예들은 본 발명의 보호범위 내에 포함된다.
본 발명의 실시례는 패킷 재조립 및 재배열 방법, 장치 및 시스템을 제공하며, 각각 이하와 같이 설명된다.
실시례 1
본 실시례는 네트워크 장치가 목적지 포트의 역할을 하는 관점으로 설명된다.
패킷 재조립 및 재배열 방법은 이하를 포함한다. 소스 포트가 송신한, 소스 ID(SID: Source Identification), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하는 단계; SID에 따라 수신된 셀을 전처리(preprocessing)하여 셀이 패킷 재조립 데이터베이스에 삽입될 수 있는지 여부를 결정하는 단계; 패킷 시퀀스 번호에 따라 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하는 단계; 만약 정확하게 배열된 패킷이 완전한 패킷이면, 셀 시퀀스 번호에 따라 정확하게 배열된 패킷의 셀을 배열하여 정확하게 배열된 셀을 획득하는 단계; 및 정확하게 배열된 셀에 대해 패킷 재조립을 수행하는 단계.
도 1을 참조하면, 구체적인 순서는 이하와 같다.
101: 소스 포트가 송신한, SID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신
SID는 셀의 소스 및 등급을 확인하도록 구성되어 있고, 셀이 나오는 소스 포트는 SID에 따라 획득될 수 있다. SID는 소스 포트 번호 및 패킷의 서비스 등급(CoS: Classes of Service)의 집합, 즉 {소스 포트 번호, 패킷의 CoS}인 유니캐스트 SID, 소스 포트 번호, CoS 및 소스 회선 카드의 PP에 의한 멀티캐스트 패킷에 할당된 멀티캐스트 그룹 ID(MGIDs: Multicast Group IDs)의 집합, 즉 {소스 포트 번호, 패킷의 CoS, MGID}인 멀티캐스트 SID로 분류될 수 있다.
패킷 시퀀스 번호는 데이터 스트림 내의 패킷의 위치를 확인하도록 구성되어 있다.
셀 시퀀스 번호는 패킷 내의 셀의 위치를 확인하도록 구성되어 있다.
예를 들면, 소스 포트가 송신한 셀은 구체적으로 패브릭 스위치를 통해 수신될 수 있다. 여기서, 소스 포트는 패킷을 조각내어 셀을 획득하고, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 셀에 할당한다. 예를 들면, 동일한 목적지 포트의 2개의 패킷이 셀로 조각난다. 여기서, 제1 패킷은 (1, 1), (1, 2) 및 (1, 3)의 시퀀스 번호를 가지는 3개의 셀로 각각 조각나고, 제2 패킷은 (2, 1), (2, 2), (2, 3) 및 (2, 4)의 시퀀스 번호를 가지는 4개의 셀로 각각 조각난다. 여기서, 괄호 안의 첫번째 숫자는 패킷 시퀀스 번호이고, 괄호 안의 두번째 숫자는 셀 시퀀스 번호이다.
102: SID에 따라 수신된 셀을 전처리하여 셀이 패킷 재조립 데이터베이스에 삽입될지 여부를 결정
여기서, 셀은 셀 데이터 및 셀 정보를 포함할 수 있다. 자원을 절약하기 위해, 배열 처리 동안 셀 정보만이 가동되고, 패킷 재조립이 수행되는 경우에만, 대응되는 셀 데이터가 셀 정보에 따라 재조립을 위해 추출된다. 예를 들면, 구체적으로는 이하와 같다.
(1) 수신된 셀을 도착의 로컬 타임 스탬프(local time stamp)로 찍은 후, 셀의 셀 데이터를 SID에 따라 로드 메모리에 저장하고, 어떤 대응하는 셀 데이터가 로드 메모리로부터 획득될 수 있는지에 기초하여, 대응하는 로드 메모리 인덱스 값을 구성하는 단계;
(2) 입력 FIFO(IF: Input FIFO) 큐(queue)에 셀의 셀 정보를 삽입하는 단계 - 여기서, 셀 정보는 셀의 셀 시퀀스 번호, 패킷 시퀀스 번호, 로드 메모리 인덱스 값, 로컬 타임 스탬프 및 SID와 같은 셀-관련 정보를 포함할 수 있다.
여기서, 로컬 타임 스탬프는 로컬에서 셀 대기 시간을 판정하는데 주로 사용되고, 셀은 대기 시간이 너무 길면 폐기될 것이다; SID, 로드 메모리 인덱스 값, 패킷 시퀀스 번호 및 셀 시퀀스 번호의 기능에 관해서는 이전 설명을 참조하면 되고, 여기에서는 생략한다.
(3) SID, 패킷 시퀀스 번호 및 연기된 FIFO(PF: Postponed FIFO)의 상태에 따라 IF 큐에서의 셀 정보를 처리하여, 셀 정보가 셀 재조립 데이터베이스에 삽입될지 여부를 결정하는 단계
만약 각각의 PF 큐의 깊이가 사전 설정된 임계값(threshold)보다 작으면, IF 큐의 헤드 셀 정보에 대응하는 셀이 처리되어야 하는지 여부를 결정하는 단계; 만약 그렇다면, IF 큐의 헤드 셀 정보를 꺼내는(popping) 단계; 만약 그렇지 않으면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나(상이한 대기 시간의 버퍼 셀에 복수의 큐가 구성될 수 있음)에 밀어넣는 단계, 및 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계;
IF 큐의 헤드 셀 정보에 대응하는 셀 또는 PF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀이 타임아웃 되었는지를 판단하는 단계; 만약 그렇다면, 셀 정보에 대응하는 셀 및 셀이 속하는 셀을 재사용하는 단계; 만약 그렇지 않으면, 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 작은 경우, 셀 정보를 패킷 재조립 데이터베이스에 삽입하는 단계; 및 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 큰 경우 셀 정보를 PF 큐 중 하나에 삽입하는 단계.
반대로, 만약 특정 PF 큐의 깊이가 사전 설정된 임계값보다 크면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀이 처리되어야 하는지 여부를 결정하는 단계; 만약 그렇지 않으면, 오버플로우 PF 큐(즉, 사전 설정된 임계값보다 큰 깊이의 PF 큐, 예를 들면, PF 큐가 가득참)의 헤드 셀 정보에 대응하는 셀을 재사용하고, 그 후 IF 큐의 헤드 셀 정보에 대응하는 셀이 처리되어야 하는지 여부를 결정하는 단계(상술한 설명 참고); 만약 그렇다면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나에 밀어넣는 단계를 수행하고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계.
여기에서, PF 큐는 주로 목적지 포트에 너무 일찍 도착하는 셀을 저장하기 위해 사용된다. 즉, 만약 셀이 목적지 포트에 너무 일찍 도착하면, 현재 처리되기보단 PF 큐에 들어가게 되고, 그 후 PF 큐로부터 적당한 시간에 추출되어 패킷 재조립 데이터베이스로 삽입된다.
여기에서, 셀이 처리어야 하는지 여부는 큐 내의 오픈 패킷(즉, 처리되기를 기다리는 패킷)의 양에 따라 결정, 즉, 현재 처리되고 있는 패킷의 최소 패킷 시퀀스 번호와 현재 셀의 패킷 시퀀스 번호 사이의 차이가 사전 설정된 값보다 작은지를 결정한다; 만약 사전 설정된 값보다 작으면, 셀이 처리되어야 한다는 것을 의미하고, 그 후 현재 셀이 처리될 수 있다; 그렇지 않으면 셀이 처리되지 않는다는 것을 의미하고, 그 후 현재 셀이 지연, 즉 PF 큐로 들어갈 수 있다. 예를 들면, 만약 큐 내의 오픈 패킷의 최대 양이 16이고, 현재 처리되고 있는 패킷의 최소 패킷 시퀀스 번호가 1024면, 패킷 시퀀스 번호가 1024보다 작은 임의의 패킷의 셀은 직접 폐기되고, 패킷 시퀀스 번호가 1024보다 크거나 같고 "1024+16"보다 작은 임의의 패킷의 셀은 처리된다. 예를 들면, 셀이 타임아웃 되지 않고 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 작은 경우, 셀은 패킷 재조립 데이터베이스로 삽입될 것이다; "1024+16"보다 큰 시퀀스 번호의 임의의 패킷의 셀은 버퍼링, 즉 PF 큐로 삽입될 것이다. 즉, "SID, 패킷 시퀀스 번호 및 연기된 FIFO(PF: Postponed FIFO)의 상태에 따라 IF 큐에서의 셀 정보를 처리하여, 셀 정보가 셀 재조립 데이터베이스에 삽입될지 여부를 결정하는" 단계는 구체적으로 이하를 포함한다.
만약 PF 큐의 깊이가 사전 설정된 임계값보다 작으면, IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되고 있는 패킷의 최소 패킷 시퀀스 번호 사이의 차이가 제4 임계값보다 작은지 여부를 결정하는 단계; 만약 그렇다면, IF 큐의 헤드 셀 정보를 꺼내는 단계; 만약 그렇지 않으면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나에 밀어넣고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계; IF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀 또는 PF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀이 타임아웃 되었는지 여부를 판단하는 단계; 만약 타임아웃 되었으면, 셀 정보에 대응하는 셀 및 셀이 속하는 패킷을 재사용하는 단계; 만약 타임아웃 되지 않았으면, 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 오픈 패킷 시퀀스 번호보다 작은 경우, 패킷 재조립 데이터베이스에 셀 정보를 삽입하는 단계; 및 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 오픈 패킷 시퀀스 번호보다 큰 경우, PF 큐 중 하나에 셀 정보를 삽입하는 단계.
만약 특정 PF 큐의 깊이가 사전 설정된 임계값보다 크면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 패킷 시퀀스 번호와 현재 처리되고 있는 패킷의 최소 패킷 시퀀스 번호의 차이가 제5 임계값보다 작은지 여부를 결정하는 단계; 만약 그렇다면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀을 재사용하고, 그 후 IF 큐의 헤드 셀 정보에 대응하는 패킷 시퀀스 번호와 현재 처리되고 있는 패킷의 최소 패킷 시퀀스 번호의 차이가 제4 임계값보다 작은지 여부를 결정하는 단계를 수행하는 단계; 만약 그렇지 않으면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나에 밀어넣고 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계.
여기에서, 제4 및 제5 임계값은 실제 애플리케이션의 요구 사항에 따라 설정될 수 있다.
유니캐스트 또는 멀티캐스트 중 어느 하나는 재조립 및 재배열되기를 기다리는 복수의 패킷(재조립 및 재배열되기를 기다리는 패킷은 또한 오픈 패킷임)을 각각 가지는 많은 패킷 배열 큐를 포함할 수 있다. 여기에서, 유니캐스트는 패킷의 서비스 등급(CoS: Class of Service) 및 소스 ID(SID: Source Identification)에 따라 패킷 배열 큐를 분류, 즉 상이한 패킷 분류 큐에 상이한 패킷의 CoS 및 SID가 들어가게 할 수 있다. 멀티캐스트는 패킷의 서비스 등급(CoS: Class of Service), 소스 ID(SID: Source Identification) 및 멀티캐스트 그룹 ID(MGID: Multicast Group ID)에 따라 패킷 배열 큐를 분류할 수 있다. 여기에서, 각각의 패킷 분류 큐는 분류될 패킷을 수용하는 데이터의 역할을 하는 패킷 설명자 어레이(packet descriptor array)(즉, 사전 할당된 메모리)를 가진다. 패킷 설명자 어레이 내의 각각의 엔트리는 실제로 패킷에 속하는 셀 설명자를 가리키는 포인터이고, 셀 설명자는 다음 셀을 가리키는 포인터도 가지고 있다. 따라서 하나의 패킷에 속하는 모든 셀은 연계된 목록을 구성하고, 횡단은 패킷 어레이 내의 제1 포인터로부터 시작하여 모든 셀까지일 수 있다. 여기에서, 패킷 설명자 어레이의 크기(즉, 수용될 수 있는 오픈 패킷의 양)는 동적으로 조정 가능하다. 예를 들면, 다양한 크기의 복수의 패킷 설명자 어레이는 사전 할당될 수 있다. 만약 분류 큐의 오픈 패킷의 개수가 증가하여 패킷 설명자 어레이의 초과로 이어지면, 더 큰 패킷 설명자 어레이가 사용되어 원래의 더 작은 패킷 설명자 어레이를 대체할 수 있다.
유니캐스트에 대하여, 소스 설명자 메모리(SDM: Source Descriptor Memory) 및 소스 큐 메모리(SQM: Source Queue Memory)를 포함할 수 있다. 여기서, SDM은 패킷 재조립 데이터베이스는 소스 설명자를 저장하고 패킷의 CoS 및 소스 포트 번호를 인덱스로 취하도록, {패킷의 CoS, 소스 포트 번호}를 인덱스로 사용하도록 구성되어 있고, SQM은 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고, 각각의 패킷 설명자는 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키고, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함한다.
여기에서, 재배열-패킷-어레이-버퍼는 동적 패킷 설명자 어레이에 의해 구성될 수 있고, 구체적으로는 상이한 용량의 N가지 등급의 메모리 블록을 포함할 수 있고, 여기서 N은 양의 정수이다. 예를 들면, N=3이면, 후술하는 용량의 세 등급의 메모리 블록이 보호될 수 있다.
(32*X), (128*X) 및 (512*X), 여기서 X는 패킷 설명자의 폭이다.
멀티캐스트에 대하여, 패킷 재조립 데이터베이서는 MGID 설명자 메모리 및 MGID 큐 메모리를 포함할 수 있다. 여기서 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, MGID 및 소스 포트 번호를 인덱스로 취하도록, 즉 {패킷의 CoS, MGID, 소스 포트 번호)를 인덱스로 취하도록 구성되어 있고, 여기서 MGID 큐 메모리는 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있다; MGID 큐 메모리는, 각각의 패킷 설명자는 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키고, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함할 수 있다.
여기에서, 재배열-패킷-어레이-버퍼는 상이한 용량의 M가지 등급의 메모리 블록을 포함하는 동적 패킷 설명자 어레이이고, 여기서 M은 양의 정수이고, 유니캐스트의 경우와 유사하며, 여기에서는 생략한다.
{패킷의 CoS, MGID, 소스 포트 번호}에 의해 표현되는 공간이 매우 크기 때문에, {패킷의 CoS, MGID, 소스 포트 번호}의 각각의 인덱스에 대응하는 패킷 배열 큐를 생성하는 것은 매우 어렵다. 그 결과, 자원을 절약하기 위해, MGID 설명자 메모리 및 MGID 큐 메모리는 해시 함수(hash function)을 지원 가능하게 될 수 있고, 즉, 각각의 처리(예를 들면, IF 큐, PF 큐, 완전한 큐, 재배열-패킷-어레이-버퍼 및 셀 배열 버퍼)가 해시 함수를 통하여 MGID 설명자 메모리 및 MGID 큐 메모리에 액세스할 수 있다. 여기에서, 해시 함수는 복수의 해시 버킷(hash bucket)으로 구성될 수 있다. 소위 해시 함수는 {패킷의 CoS, MGID, 소스 포트 번호}를 더 작은 공간에 맵핑하는 것이다. 예를 들면, 해시 함수는 {패킷의 CoS, MGID, 소스 포트 번호}를 하나 이상(즉, 복수의 해시 버킷)의 패킷 배열 큐에 대응하는 인덱스 값을 계산하는 입력으로 취할 수 있다.
해시 함수의 사용은 자원 충돌을 야기할 수 있고, 따라서 완전 연관 희생 테이블(FAVT: Fully Associative Victim Table)이 유지되어, 자원 충돌이 발생하는 경우, 자원 충돌이 발생하는 셀이 또다른 MGID 큐로 밀어넣어지거나 또는 사전 설정된 FAVT에 따라 폐기될 수 있다.
또한, FAVT의 정보량이 사전 설정된 제1 임계값을 초과하는 경우, 사전 설정된 목적지 포트가 제어 정보를 멀티캐스트 소스로 송신하도록 활성화되고, 따라서 현재 목적지 포트에 송신된 멀티캐스트 데이터의 양을 감소시킨다. 여기에서, 제1 임계값은 실제 애플리케이션의 요구 사항에 따라 설정될 수 있다.
예를 들면, 각각의 해시 엔트리는 2개의 해시 버킷(즉, 2개의 패킷 해시 배열 큐)을 포함한다; (1, 2, 128), (7, 0, 256), (11, 3, 567) 등은 16에 맵핑, 즉, 해시 함수의 결과는 그 조합들이 입력으로 취해진 경우 16이다. (1, 2, 128)의 셀은 제1 패킷 배열 큐를 사용할 수 있고, (7, 0, 256)의 셀은 제2 패킷 배열 큐를 사용할 수 있으며, (11, 3, 567)의 셀은 각각의 해시 엔트리가 2개의 패킷 배열 큐만을 가지고 있기 때문에 폐기될 수밖에 없다. 물론, 만약 (1, 2, 128)의 모든 셀이 성공적으로 재조립되고 배열 큐 밖으로 스케줄링되면, 제1 패킷 배열 큐는 빌 것이다. 이 때, 제1 패킷 배열 큐는 (11, 3, 567)의 셀이 도착하는 경우 사용될 수 있다. FAVT는 (SID, CoS, MGID)의 어느 인덱스 값이 패킷 배열 큐를 점유하는지를 나타내고, 현재 상태에 따라 동적으로 유지된다.
103: 패킷 시퀀스 번호에 따라 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득. 예를 들면, 구체적으로는 이하와 같다.
패킷 시퀀스 번호에 따라 재배열-패킷-어레이-버퍼 내의 패킷 설명자를 배열하고, 패킷 재조립 데이터베이스 내의 동일한 패킷 시퀀스 번호를 가지는 셀 정보를 패킷 설명자에 대응하는 패킷 배열 큐에 넣는 단계; 예를 들면, 만약 패킷 재조립 데이터베이스 내에 저장된 셀 정보 내의 시퀀스 번호가 각각 (1, 1), (2, 3), (1, 3), (2, 1), (2, 4), (1, 2) 및 (2, 2)이고, 첫번째 번호는 패킷 시퀀스 번호이고 두번째 번호는 셀 시퀀스 번호라면, 패킷 배열 후의 경우는 이하와 같다.
제1 패킷 배열 큐: (1, 1), (1, 3), (1, 2);
제2 패킷 배열 큐: (2, 3), (2, 1), (2, 4), (2, 2).
그 때 패킷이 정확하게 배열된 것을 알 수 있지만, 패킷 내의 셀은 여전히 배열되지 않은 상태인 것을 알 수 있다.
104: 만약 정확하게 배열된 패킷이 완전한 패킷이면, 단계 103에서 셀 시퀀스 번호에 따라 획득된 정확하게 배열된 패킷을 배열하여 정확하게 배열된 패킷을 획득; 여기서 완전한 패킷은 패킷 내의 셀이 완전하게 수신되었다는 것을 의미한다. 예를 들면, 구체적인 것은 이하와 같다.
만약 패킷이 완전한 패킷이면, 완전한 패킷의 패킷 설명자를 셀의 방송 등급 및 패킷의 CoS에 따라 대응하는 완전-FIFO(CF: Complete-FIFO) 큐에 추가하고, CF 큐 내의 패킷 설명자에 따라 대응하는 셀 정보를 셀 배열 버퍼(셀 재배열 버퍼, 완전 패킷 FIFO로도 일컬어짐)에 삽입하고, 셀 시퀀스 번호에 따라 셀 배열 버퍼 내의 추출된 셀 정보를 배열하는 단계. 여기에서, 셀의 방송 등급은 유니캐스트 또는 멀티캐스트를 포함할 수 있다.
배열 효율을 향상시키기 위해, 셀 배열 버퍼는 셀 배열 동안 충분한 자유 공간이 사용 가능하다는 것을 보장한다. 따라서, 셀 배열 버퍼의 자유 공간이 사전 설정된 임계값보다 큰 경우에만, 예를 들면, 셀 배열 버퍼의 실제 데이터 양이 인정되는 데이터 양의 1/2보다 작은 경우에만, 완전한 큐 내의 패킷 설명자에 따라 대응하는 셀 정보가 셀 배열 버퍼로 삽입되는 것이 설정될 수 있다.
여기에서, 셀 시퀀스 번호에 따라 셀 배열 버퍼 내의 추출된 셀 정보를 배열하는 것은 구체적으로 이하와 같을 수 있다.
셀 배열 버퍼는 패킷 재조립을 수행하기 위해 배열된 셀을 하나씩 판독하는 판독 포인터 및 현재 수행중인 패킷의 시작 위치를 항상 가리키는 기록 포인터를 유지한다. 따라서 삽입된 셀 정보의 오프셋 위치가 기록 포인터에 셀 시퀀스 번호를 더함으로써 계산될 수 있고, 그 후 패킷 내의 삽입된 셀 정보(즉, 패킷 내의 정확한 위치)가 오프셋 위치에 따라 조정되어, 정확하게 배열된 셀 정보를 획득한다.
105: 정확하게 배열된 셀 상에 패킷 재조립을 수행. 예를 들면, 구체적으로는 다음과 같다.
정확하게 배열된 셀 정보가 속하는 패킷에 재조립 자원을 할당하고, 셀 배열 버퍼 내의 정확하게 배열된 셀 정보를 하나씩 판독하고, 판독된 셀 정보에 따라 대응하는 셀 데이터를 획득하고, 할당된 재조립 자원을 사용하여 셀 데이터 상에 패킷 재조립을 수행하는 단계.
여기에서, 효율을 향상시키기 위해, 정확하게 배열된 셀 정보가 속하는 패킷은 적어도 2개의 재조립 자원과 함께 할당될 수 있다. 자원 절약을 위해서는, 재조립 자원은 자원 풀 내에서 관리되고 필요한 경우에만, 즉 재조립 되어야 할 때에만 각각의 소스에 할당된다. 예를 들면, 배열 버퍼 내의 셀이 정확하게 배열된 후, 패킷 재조립을 요구하는 지시 신호(예를 들면, FIFO_RDY 신호)가 패킷 재조립 메커니즘으로 송신될 수 있고, 패킷 재조립 메커니즘은 패킷 재조립을 요구하는 지시 신호가 수신된 후에 배열 버퍼 내의 셀의 패킷 재조립을 시작한다.
물론, 적어도 2개의 셀 배열 버퍼가 있는 경우, 패킷 재조립 메커니즘은 패킷 재조립을 요구하는 복수의 지시 신호를 동시에 수신할 수 있다. 그 경우, 패킷 재조립 메커니즘은 패킷의 CoS에 따라 처리를 수행하는 셀 배열 버퍼를 선택할 수 있다. 즉, 그 때, 정확하게 배열된 셀 상에 패킷 재조립을 수행하는 것은 구체적으로 이하를 포함한다.
패킷의 CoS에 따라 셀 배열 버퍼를 선택하고, 선택된 셀 배열 버퍼 내의 정확하게 배열된 셀 정보를 판독하고, 판독된 셀 정보에 따라 셀 데이터를 추출하여 패킷 재조립을 수행하는 단계.
선택적으로, 자원을 절약하고, 효율을 향상시키고, 특정 패킷 내에서 너무 많은 시간 낭비를 피하기 위하여, 패킷 재조립을 위한 시간은 모니터링 될 수 있고, 패킷 재조립이 타임아웃 되는 경우 패킷은 폐기된다. 예를 들면, 패킷 내의 목적지 포트에 처음 도착하는 셀의 도착 시간(예를 들면, 도착 시간은 로컬 타임 스탬프에 의해 찍힐 수 있음)과 현재 시간과의 차이가 사전 설정된 제2 임계값보다 큰지 여부가 판정될 수 있다; 만약 그렇다면, 패킷 재조립이 타임아웃 되었는지 여부를 판단하고 패킷을 폐기되는 단계; 아니면, 패킷 재조립이 타임아웃 되지 않았는지 여부를 판단하고 패킷 재조립을 계속하는 단계.
여기에서, 재조립 오버타임 기간은, 패킷 시퀀스 번호에 따라 계산될 수 있는 패브릭 스위치 지연에 대한 추정 시간을 더 포함할 수 있다. 자세하게는, 종래 기술을 참조하면 되고, 여기에서는 생략한다. 그 다음, 만약 패킷이 패브릭 스위치 내에서 너무 오래 지연되면, 재조립 타임아웃 및 대기의 경우 폐기되는 것보다, 직접 폐기될 수도 있다. 즉, 선택적으로, 정확하게 배열된 셀을 패킷에 재조립하기 전에, 방법은 이하를 더 포함할 수 있다.
패브릭 스위치 지연이 사전 설정된 제3 임계값을 초과하는 경우 패킷을 폐기하는 단계
여기에서, 제2 및 제3 임계값은 실제 애플리케이션의 요구 사항에 따라 설정될 수 있다.
예를 들면, 특정 패킷 배열 큐의 헤드에서의 패킷은 패킷 시퀀스 번호 123을 가지고 패킷 내에 도착하지 않는 셀이 있다(즉, 패킷 시퀀스 번호 123의 패킷). 그 경우, 패킷 시퀀스 번호 124를 가지는 패킷과 같은 그 다음 패킷은 그 모든 셀이 도착한 경우라도 재조립될 수 없고, 패킷 시퀀스 번호 123을 가지는 패킷이 대기 후 타임아웃 된 경우 패킷 시퀀스 번호 123을 가지는 패킷이 모든 셀을 수신하거나 또는 폐기된 후에만 처리된다. 타임아웃 되기를 기다리는 것이 보통 장기간을 필요로 하기 때문에, 패킷 시퀀스 번호 123을 가지는 특정 패킷이 패브릭 스위치 내에서 특별히 긴 지연을 가지는 경우, 패킷 시퀀스 번호 123을 가지는 패킷의 타임아웃을 기다릴 필요가 없고, 패브릭 스위치 지연의 추정 값이 사전 설정된 제3 임계값을 초과하는지 여부를 결정한다. 예를 들면, 만약 배열 큐 내의 패킷 시퀀스 번호 256을 가지는 패킷의 셀이 이번에 수신되면, 256과 123의 차이가 제3 임계값(예를 들면, 제3 임계값이 100으로 설정)보다 크기 때문에, 패킷 시퀀스 번호 123을 가지는 패킷의 타임아웃을 기다릴 필요가 없고, 패킷 시퀀스 번호 123을 가지는 패킷을 직접 폐기한다.
추가적으로 주목할 것은, 효율을 향상시키기 위하여, 상술한 재배열 및 재조립 처리는 복수의 평행 재조립 및 재배열 엔진으로 분리되어 상이한 CoS의 유니캐스트 또는 멀티캐스트 데이터 스트림을 지원한다. 여기에서, 패킷의 CoS는 패킷 우선 순위에 대응한다.
본 실시례는 SID에 따라 수신된 셀을 전처리하여, 수신된 셀이 패킷 재조립 데이터베이스에 삽입될지 여부를 결정하고, 그 후 셀의 셀 시퀀스 번호 및 패킷 시퀀스 번호에 따라 데이터베이스 내에서 셀을 직접 배열하고, 최종적으로 패킷 재조립을 달성한다. 현재 해결 수단이 소스에 따라 패킷을 직접 재배열 및 재조립할 수 있기 때문에, 시간 척도 동기화에 기초하여 재배열 및 재조립하는 종래 기술과 비교하는 경우 고성능 장비에 적합하다. 또한, 현재 해결 수단이 수신된 셀을 제어하고 관리하기 때문에(즉, 재조립을 위해 대기하는 패킷), 자원의 활용율이 높고, 더 적은 메모리 및 제어 자원이 점유된다.
실시례 2
이하, 실시례 1에 따라 설명된 방법이 예를 통해 더 자세하게 설명한다.
패킷 재조립 및 재배열 방법의 처리의 구조도인 도 2a는, 도시된 바와 같이, 이하의 단계를 포함한다.
단계 1: 셀이 목적지 포트에 도착한 후, 메모리 할당 모듈이 수신된 셀에 로드 메모리를 할당한다; 전처리 모듈이 SID에 따라 셀의 셀 데이터를 로드 메모리에 할당하고, 셀의 SID에 따라 셀의 셀 정보를 분류하고, 등급에 따라 상이한 IF에 셀 정보를 각각 저장한다. 예를 들면, 도 2a에 도시된 바와 같이, 셀 정보는 방송 등급에 따라 분류되어, 유니캐스트 데이터인 경우 유니캐스트 입력 FIFO(UIF: Unicast Input FIFO) 큐에 들어가고, 멀티캐스트 데이터인 경우 멀티캐스트 입력 FIFO(MIF: Multicast Input FIFO) 큐에 들어간다. 여기에서, 셀 정보는 셀의 셀 시퀀스 번호, 패킷 시퀀스 번호, 로드 메모리 인덱스 값, 로컬 타임 스탬프 및 SID와 같은 셀 관련 정보를 포함할 수 있다.
전처리 모듈은, SID, 로컬 타임 스탬프 및 PF 큐의 상태에 따라 UIF 큐 밀 MIF 큐 내의 셀 정보를 각각 처리하여, 셀 정보가 패킷 배열 모듈의 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정한다. 여기에서, UIF 큐 밀 MIF 큐는 패킷 재조립 데이터베이스 내에 대응하는 처리 모듈을 가진다. 예를 들면, 도 2b에 도시된 바와 같이, UIF 큐는 패킷 재조립 데이터베이스 내의 "유니캐스트" 모듈에 대응하고, UIF 큐는 패킷 재조립 데이터베이스 내의 "멀티캐스트" 모듈에 대응한다.
단계 2: 패킷 배열: 패킷 배열 모듈이 다양한 소스의 패킷을 각각 배열하여 정확하게 배열된 패킷을 획득한다. 예를 들면, 도 2a의 "CoS0, CoS1, CoS2"를 참조하면, 재배열-패킷-어레이-버퍼 내의 패킷 설명자는 패킷 시퀀스 번호에 따라 배열될 수 있고, 패킷 재조립 데이터베이스 내에서 동일한 패킷 시퀀스 번호를 가지는 셀은 동일한 패킷 배열 큐에 들어간다. 여기서, CoS0, CoS1 및 CoS2는 각각 상이한 패킷 CoS의 패킷 배열 큐를 나타낸다. 그 경우, 패킷이 정확하게 배열되지만, 패킷 내의 셀은 여전히 배열되지 않은 상태이다. 즉, CoS0, CoS1 및 CoS2가 정확하게 배열되더라도, 그 안의 셀은 여전히 배열되지 않은 상태이다.
단계 3: 셀 배열: 셀 배열 모듈이 다양한 완전한 패킷 내의 셀을 각각 배열하여, 정확하게 배열된 셀을 획득한다. 여기에서, 완전한 패킷은 그 안의 모든 셀이 수신된 것을 나타낸다.
단계 4: 패킷 재조립: 패킷 재조립 모듈이 정확하게 조립된 셀을 완전한 패킷으로 재조립한다. 도 2a에 도시된 바와 같이, 그 때, 메모리 할당 유닛이 재조립 자원을 패킷 재조립 모듈에 할당할 수 있다. 그 다음, 도 2a에 도시된 바와 같이, 패킷 재조립 모듈이 셀 배열 모듈 내의 정확하게 배열된 셀 정보를 하나씩 판독하여, 판독된 셀 정보에 따라 로드 메모리로부터 셀 데이터를 추출하고, 패킷을 재조립하고, 재조립된 패킷을 출력한다.
상술한 재배열 및 재조립 처리는 복수의 평행 재조립 엔진으로 추가적으로 분리되어 상이한 CoS의 유니캐스트 또는 멀티캐스트 트래픽을 지원할 수 있다.
주목할 것은, 여기에서, 로드 메모리의 디자인이 클락 주기당 한번씩의 패킷 재조립 모듈로부터의 판독 요청을 만족시켜야 하는 것이다. 패킷 재조립 처리는 방해될 수 없기 때문에, 패킷 재조립 모듈은 전체 패킷을 수용할 능력이 있는 FIFO 큐를 필요로 하지 않고, 단지 2 내지 4개의 셀을 수용할 능력이 있는 FIFO 큐를 필요로 한다. 패킷이 재조립되기 시작한 후, 패킷의 재조립은 또다른 패킷의 재조립 시작 전에 완료될 것이다.
또한, 메모리 할당 유닛은 이하의 등급: 셀 설명자, 패킷 설명자 어레이, MGID 큐 메모리(멀티캐스트 데이터에 대한)의 메모리를 재사용하고 할당하는데에 주로 사용된다. 메모리의 각각의 등급은 할당 가능한 버퍼를 관리하기 위한 적어도 하나의 FIFO 큐를 포함한다. 각각의 FIFO 큐는 한 클락 주기 내에 하나의 버퍼 엔트리를 할당할 수 있다.
패킷을 대기 해제(dequeue)한 후, 패킷 배열 모듈은 패킷 재사용 모듈로 패킷을 제출하고, 패킷 재사용 모듈은 패킷 내의 셀을 하나씩 셀 재사용 모듈로 제출한다. 패킷이 폐기되는 경우, 그것은 패킷 재사용 모듈로 제출될 것이고, 패킷 재사용 모듈은 동일한 처리를 하여 패킷을 폐기하고, 그 동안, 폐기된 패킷보다 더 작은 패킷 시퀀스 번호를 가지며 패킷 재조립 데이터베이스 내에 존재하는 모든 패킷 또한 폐기된다.
이하, 유니캐스트를 예를 들어 자세히 설명한다. 도 2b를 참조하면, 구체적인 순서는 이하를 포함한다.
201: 소스 포트가 패킷을 셀로 조각내고, 각각의 셀에 대한 대응하는 셀 시퀀스 번호 및 패킷 시퀀스 번호를 할당
예를 들면, 소스 포트에서, 동일한 목적지 포트로 가는 2개의 패킷이 셀로 조각내어지고, 여기에서 제1 패킷은 (1, 1), (1, 2), (1, 3) 및 (1, 4)의 시퀀스 번호를 가지는 4개의 셀로 각각 분할되며, 제2 패킷은 (2, 1), (2, 2), (2, 3), (2, 4) 및 (2, 5)의 시퀀스 번호를 가지는 5개의 셀로 각각 분할된다. 괄호 내에서, 첫번째 숫자는 패킷 시퀀스 번호이고, 두번째 숫자는 셀 시퀀스 번호이다.
소스 포트에서, 패킷 시퀀스 번호는 데이터 스트림에 기초하여 유지되고 각각의 셀로 삽입된다. 예를 들면, 유니캐스트 데이터의 경우, 패킷 시퀀스 번호는 패킷의 CoS 및 목적지 포트에 따라 유지된다. 멀티캐스트 데이터의 경우, 패킷 시퀀스 번호는 패킷의 CoS 및 MGID에 따라 유지된다.
202: 소스 포트가 패브릭 스위치를 통해 SID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 목적지 포트로 전송
203: 목적지 포트의 전처리 모듈이 셀을 수신한 후, 도착의 로컬 타임 스탬프로 수신된 셀을 찍고, 메모리 할당 모듈에 의해 할당된 로드 메모리 내의 셀의 셀 데이터를 저장하고, 로드 메모리로부터 획득될 수 있는 대응하는 셀 데이터에 기초하여, 대응하는 로드 메모리 인덱스 값을 할당
204: 목적지 포트의 전처리 모듈이 SID에 따라 UIF 큐에, 셀의 셀 시퀀스 번호, 패킷 시퀀스 번호, 로드 메모리 인덱스 값, 로컬 타임 스탬프 및 SID와 같은 셀-관련 정보를 포함할 수 있는 셀의 셀 정보를 삽입
205: 목적지 포트의 전처리 모듈이 SID, 패킷 시퀀스 번호 및 PF 큐의 상태에 따라 UIF 큐 내의 셀 정보를 전처리하여 셀 정보가 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정
여기에서, 도 2c를 참조하면, 패킷 재조립 데이터베이스는 SDM 및 SQM으로 이루어지고, SDM은 SQM 내의 소스 큐에 대응하는 각각의 소스 설명자를 저장하도록 구성되어 있고; SQM은 재배열-패킷-어레이-버퍼 내의 복수의 패킷 설명자에 대응하는 각각의 소스 큐를 저장하도록 구성되어 있고, SQM은 재배열-패킷-어레이-버퍼를 가리키며, 패킷에 속하는 최근 수신된 셀의 셀 설명자를 각각 가리키는 32 내지 512 패킷 설명자를 수용할 능력이 있는 포인터를 포함한다. 각각의 셀 설명자는 로드 메모리 내에서 셀 데이터를 가리키는 로드 메모리 인덱스 값을 포함한다. 패킷 버퍼는 직접 액세스될 수 있고, 액세스 인덱스는 현재 패킷 시퀀스 번호에서 제1 패킷 시퀀스 번호를 빼서 계산될 수 있다(패킷-시퀀스-번호 - 제1-패킷-시퀀스).
SQM은, 상이한 용량의 N가지 등급의 메모리 블럭을 포함하는 동적 패킷 설명자 어레이로서 구성될 수 있다. 각각의 소스 설명자는 그러한 메모리 블록을 가리키는 포인터를 포함하고, 메모리 블록의 등급은 요구되는 패킷 설명자 어레이의 크기에 의해 결정된다. 패킷 설명자의 삽입 또는 삭제는 하나의 메모리 블록으로부터 또다른 메모리 블록으로의 스위칭을 필요로 할 수 있다. 대역폭을 획득하기 위해, 메모리 블록은 동시 판독 및 기록을 지원하고, 패킷이 추출된 후 어레이 내의 패킷 설명자의 위치가 이동되고, 판독 포인터는 항상 시작 위치를 가리키기 때문에, 따라서 판독 포인터가 유지될 필요가 없다.
도 2d에 따르면, 전처리의 구체적인 흐름은 이하와 같을 수 있다.
A1: 목적지 포트의 전처리 모듈(준비 패킷)이 각각의 PF 큐의 깊이가 사전 설정된 임계값보다 작은지 여부를 판단하고; 만약 그렇다면, 단계 A2를 수행하고, 그렇지 않으면, 단계 A7을 수행
여기에서, 특정 PF 큐의 깊이가 사전 설정된 임계값보다 작은 경우, PF 큐가 지연될 더 많은 셀을 버퍼링할 충분한 공간을 가진다는 것을 의미하고, 임계값은 실제 애플리케이션의 요구 사항에 따라 설정될 수 있다.
A2: 만약 각각의 PF 큐의 깊이가 사전 설정된 임계값보다 작은 경우, 목적지 포트의 전처리 모듈은 UIF 큐의 헤드 셀 정보에 대응하는 셀이 로컬 타임 스탬프에 따라 처리되어야 하는지 여부를 결정하고; 만약 그렇다면, 단계 A3을 수행하고, 그렇지 않으면, 단계 A9를 수행
A3: 만약 UIF 큐의 헤드 셀 정보에 대응하는 셀이 처리되어야 하면, 목적지 포트의 전처리 모듈이 IF 큐의 헤드 셀 정보를 꺼내고, 그리고 단계 A4를 수행
A4: 목적지 포트의 전처리 모듈이 IF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀 또는 PF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀이 타임 아웃인지를 판정하고; 만약 그렇다면, 단계 A5를 수행하고, 그렇지 않으면, 단계 A10을 수행
A5: 만약 셀이 타임 아웃이면, 목적지 포트의 전처리 모듈이 셀이 속하는 패킷 및 헤드 셀 정보에 대응하는 셀을 재사용, 즉, 헤드 셀 정보에 대응하는 셀을 셀 재사용 모듈로 송신하고, 셀이 속하는 패킷을 패킷 재사용 모듈로 송신
여기에서, 셀 재사용 모듈은 주로 셀을 재사용하기 위해 사용되고, 패킷 재사용 모듈은 주로 패킷을 재사용하기 위해 사용된다.
A6: 만약 모든 PF 큐의 깊이가 사전 설정된 임계값보다 작은 깊이를 가지지 않으면, 목적지 포트의 전처리 모듈은 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀이 로컬 타임 스탬프에 따라 처리되어야 하는지 여부를 결정하고; 만약 그렇다면, 단계 A7을 수행하고, 그렇지 않으면, 단계 A8을 수행
여기에서, 오버플로우 PF 큐는 사전 설정된 임계값보다 큰 깊이를 가지는 PF 큐를 일컫는다.
A7: 만약 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀이 처리되지 않는다면, 전처리 모듈은 오버플로우 PF 큐의 헤드 셀 정보를 꺼내고, 헤드 셀 정보에 대응하는 셀을 재사용, 즉, 헤드 셀 정보에 대응하는 셀을 셀 재사용 모듈로 송신하고, 그 다음에 단계 A2로 복귀
A8: 만약 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀이 처리되어야 한다면, 전처리 모듈은 IF 큐의 헤드 셀 정보를 꺼내고, 헤드 셀 정보를 PF 큐 중 하나로 밀어넣고, 그 다음에 단계 A9를 수행
A9: 전처리 모듈이 가장 찬 PF 큐의 헤드 셀 정보를 꺼내고, 그 다음에 단계 A4로 복귀
A10: 셀이 타임 아웃이 아니면, 전처리 모듈이 셀에 대응하는 헤드 셀 정보를 꺼내고, SID에 기초하여 패킷 재조립 데이터베이스 내에서 SDM을 판독하고, 그 다음에 단계 A11을 수행
A11: 전처리 모듈이 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호가 SDM 내의 최대 오픈 패킷 시퀀스 번호보다 큰지 여부를 판정하고; 만약 그렇다면, 단계 A12을 수행하고, 만약 그렇지 않으면, 단계 A13을 수행
A12: 전처리 모듈이 헤드 셀 정보를 SDM에 삽입
A13: 전처리 모듈이 헤드 셀 정보를 PF 큐 중 하나에 삽입
상술한 전처리 흐름에서 알 수 있듯이, 일반적으로 전처리 모듈은 오픈 패킷 처리 윈도우가 셀을 커버할때 까지 현재 오픈 패킷 처리 윈도우 내에서 위치되지 않은 셀을 지연시킨다.
선택적으로, 감시 장치(watchdog)이 PF 큐를 확인하기 위해 제공될 수 있다. 만약 긴 시간 동안 액세스되지 않은 비어있지 않은(non-empty) PF 큐가 있는 것으로 확인되면, 감시 장치가 그 PF를 유선적으로 처리하도록 촉발한다.
또한, PF 큐의 공간을 충분히 활용하고 PF 큐로부터의 데이터 추출에 의해 생성된 파열(burst)을 피하기 위해, PF 큐는 셀이 요구하는 지연 시간에 따라 복수의 평행한 큐로 분리될 수 있다. 셀 지연 시간은 현재 셀의 패킷 시퀀스 번호로부터 최대 패킷 시퀀스 번호를 뺌으로서 추정될 수 있고, 그 차이가 클 수록, 셀이 요구하는 지연 시간은 길어진다.
206: 패킷 배열 모듈이 패킷 설명자를 재배열-패킷-어레이-버퍼에 집어넣고, 재배열-패킷-어레이-버퍼 내의 패킷 설명자를 패킷 시퀀스 번호에 따라 배열하고, 패킷 재조립 데이터베이스 내에서 동일한 패킷 시퀀스 번호를 가지는 셀 정보를 패킷 설명자에 대응하는 패킷 배열 큐에 집어넣음
그 때, 패킷이 정확하게 배열되었더라도, 그 안의 셀은 여전히 배열되지 않은 상태이다.
207: 만약 정확하게 배열된 패킷이 완전한 패킷이면, 셀 배열 모듈은 셀 시퀀스 번호에 따라 정확하게 배열된 패킷 내에서 셀 정보를 배열하여 정확하게 배열된 셀 정보를 획득
여기에서, 셀 배열 모듈은 복수의 동시 발생(synchronous) 완전 큐로 구성될 수 있고, 각각의 CoS(우선순위로도 일컬어짐)는 그 제어 로직 및 데이터 버퍼 큐를 사용하여 독립적으로 작동할 수 있다.
셀 배열 모듈은 패킷 배열 큐로부터 각각의 완전한 패킷의 패킷 기술자를 추출하고, 그것을 패킷의 CoS 및 방송 등급에 따라 대응하는 완전한 패킷에 추가한다. 그 다음, 셀 배열 모듈은 대응하는 셀 정보를 완전한 큐 내의 패킷 설명자에 따라 셀 배열 버퍼에 삽입하고, 셀 일련번호에 따라 셀 배열 버퍼 내의 추출된 셀 정보를 배열한다.
여기에서, 완전한 패킷은 패킷의 모든 셀이 패킷 재조립 데이터베이스에 의해 수신되었다는것을 의미한다. 셀 배열 버퍼는 약 20킬로바이트의 2개의 점보 패킷을 수용할 수 있다. 데이터 양이 절반 이하인 경우에만, 패킷 설명자가 추출되고 대응하는 셀 정보가 배열된다.
도 2e를 참조하면, 도 2e는 셀 배열 버퍼가 판독 포인터(RD_PTR) 및 기록 포인터(WR_PTR)를 유지하는 셀 배열 메커니즘을 도시한 것이다. 판독 포인터는 항상 현재 배열되고 있는 패킷의 시작 위치를 가리키고, 삽입된 셀 정보의 오프셋 포지션은 기록 포인터에 셀 시퀀스 번호를 더함으로써 계산된다. 패킷에 대한 셀 정보 배열은 패킷의 크기가 셀 배열 버퍼 내의 공백 위치의 그것보다 작아질때까지 수행되지 않는다. 다음 패킷에 대한 셀 정보 배열이 완료된 후, 판독 포인터는 현재 패킷의 셀 정보를 하나씩 판독하기 시작한다. 여기에서, 도 2e의 "EOP"는 패킷의 마지막 셀을 나타내고, "SOP"는 패킷의 시작 위치를 나타낸다.
여기에서, 연결-셀(concatenated-cell)은 이하와 같이 처리될 수 있다. 제1 패킷이 삽입되는 경우, 제1 패킷의 마지막 셀의 포인터는 입력 FIFO로 2번 삽입될 수 있다. 그 동안, 셀-동기화-버퍼(셀-재배열-버퍼)에 마크(mark)가 추가되어, 제1 셀이 재조립 메커니즘으로 추출될 수 없다는 것을 나타낸다. 제2 셀의 재조립이 완료된 후, 데이터는 폐기된다.
이것은 소스단이 패킷을 셀로 조각내는 경우, 마지막 셀은 데이터 블랙홀(data black hole)을 가지고 있는 것, 즉, 패킷이 제한된 길이 때문에 완전한 다수의 셀로 조각날 수 없기 때문이고, 따라서 마지막 셀은 이전의 완전한 셀보다 적은 효과적인 데이터를 가지고 있다. 그러한 셀은 전송 및 처리 동안 자원 낭비를 일으킨다. 최적화 조치(optimization measure)는 패킷을 패킷당 셀로 조각내는 것이 아니고, 연속적인 패킷을 데이터 스트림으로 간주하고 데이터 스트림을 셀로 조각내어 모든 셀이 완전한 데이터 조각(data segment)을 가지게 되는 것이다. 그러나, 그 경우, 몇몇 셀은 확실히 이전 패킷의 데이터의 마지막 조각 및 다음 패킷의 데이터의 첫번째 조각을 모두 포함한다. 그러한 이전 패킷의 데이터의 마지막 조각 및 다음 패킷의 데이터의 첫번째 조각을 모두 포함하는 셀을 연결-셀이라 한다. 셀 재배열 동안, 셀의 속성이 알려질 것이고 "SOP" 및 "EOP"가 표시될 것이다. 연결-셀은 이전 패킷의 EOP 셀일 뿐 아니라, 다음 패킷의 SOP 셀이다. 따라서 그러한 연결-셀이 수신된 후, 그것은 입력 FIFO 큐로 2번 삽입될 것이다: 그 하나는 이전 패킷의 EOP 셀의 역할을 하고, 다른 하나는 다음 패킷의 SOP 셀의 역할을 한다. 그 결과, 셀이 재배열되어야 할 필요가 있는 경우, 2개의 셀은 셀 배열 모듈 내에 연속적으로 존재한다. 그러나, 동일한 내용을 가지기 때문에, 2개의 셀 모두가 패킷 재조립 유닛에 제출될 수 없다. 따라서, 그 플래그가 EOP로 확인된 제1 셀은 패킷 재조립 모듈로 제출될 수 없다. 그 대신, 제2 셀에 대한 패킷 재배열이 완료된 후, 제1 셀은 폐기되어, 하나의 데이터의 복사본만이 패킷 재조립 모듈로 제출되는 것을 보장한다.
패킷이 재조립 될 준비가 되면, 셀 배열 버퍼가 재조립 메커니즘으로 패킷 재조립을 요구하는 지시 신호(예를 들면, FIFO_RDY 신호)를 송신한다.
주목할 것은, 셀 배열 메커니즘(셀 배열 버퍼 및 완전한 큐를 포함)은 복수의 평행한 FIFO 큐로 구성되고, 그것들은 패킷의 CoS(우선순위로도 일컬어짐) 및 방송 등급에 기초하여 분별되고, 따라서 분배 메커니즘에 의한 추가적인 큐의 필요성을 없애고 자원을 절약한다.
208: 패킷 재조립을 요구하는 지시 신호(예를 들면, FIFO_RDY 신호)를 수신한 후, 패킷 재조립 모듈은 셀 배열 버퍼 내에서 정확하게 배열된 셀 정보를 하나씩 판독하고, 패킷 재조립에 대해 판독된 셀 정보에 따라 셀 데이터를 추출
패킷 재조립을 요구하는 지시 신호를 패킷 재조립 모듈로 동시에 송신하는 복수의 셀 배열 버퍼가 있을 수 있다. 그 경우, 패킷 재조립 모듈은 패킷의 CoS(즉, 우선 순위)에 기초하여, 패킷 재조립을 요구하는 지시 신호(예를 들면, FIFO_RDY 신호)를 송신하는 복수의 셀 배열 버퍼 사이에서 중재하여, 적절한 셀 배열 버퍼를 선택하고, 그 후 선택된 셀 배열 버퍼 내에서 정확하게 배열된 셀 정보를 하나씩 판독하고, 판독된 셀 정보(구체적으로, 셀 정보 내의 로드 메모리 인덱스 값)에 따라 로드 메모리로부터 셀 데이터를 추출하여, 패킷을 재조립한다.
상술한 상세한 설명으로부터 알 수 있듯이, 본 실시례는 SID에 따라 수신된 셀 정보를 전처리하여, 수신된 셀이 패킷 재조립 데이터베이스에 삽입될지 여부를 결정하고, 그 후 셀 정보 내의 셀 시퀀스 번호 및 패킷 시퀀스 번호에 따라 데이터베이스 내에서 셀 정보를 직접 배열하고, 배열된 셀 정보에 따라 대응하는 셀 데이터를 추출하여, 최종적으로 패킷 재조립을 달성한다. 해결 수단이 소스에 따라 패킷을 직접 재배열 및 재조립할 수 있기 때문에, 시간 척도 동기화에 기초하여 재배열 및 재조립하는 종래 기술과 비교하여 고성능 장비에 적합하다. 또한, 해결 수단이 수신된 셀을 제어하고 관리하기 때문에(즉, 재조립을 위해 대기하는 패킷), 자원의 활용율이 높고, 더 적은 메모리 및 제어 자원이 점유된다.
실시례 3
실시례 2에서 설명한 방법은 또한 멀티캐스트 데이터에 대해서도 적합하다. 멀티캐스트는 주로 유니캐스트와 이하와 같이 상이하다.
유니캐스트 패킷은 SDM을 요구하고 {우선 순위, 소스 포트 번호}를 인덱스로 사용한다. 멀티캐스트 패킷은 MGID 설명자 메모리를 요구하고, {우선 순위, MGID, 소스 포트 번호}의 해시 값을 인덱스로 사용하고, 여기에서 MGID는 동일한 복사 영역(replication domain)에 속하는 목적지 포트의 그룹을 의미한다. 따라서, 멀티캐스트에서, 유니캐스트의 SQM은 MGID 큐 메모리에 의해 교체된다. 즉, 멀티캐스트에 대한 패킷 재조립 데이터베이스는 구체적으로 이하와 같을 수 있다.
멀티캐스트에 대한 패킷 재조립 데이터베이스는 MGID 설명자 메모리 및 MGID 큐 메모리를 포함하고, 여기에서 MGID 설명자 메모리는 MGID 설명자를 저장하고 {우선 순위, MGID, 소스 포트 번호}의 해시 값을 인덱스로 취하도록 구성되어 있고, MGID 큐 메모리는 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있다; MGID 큐 메모리는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함할 수 있고, 그것은 배열되기를 기다리는 셀의 패킷 설명자를 저장하며, 각각의 패킷 설명자는 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리킨다.
여기에서, MGID 큐 메모리는 상이한 용량의 M가지 등급의 메모리 블록을 포함하는 동적인 패킷 설명자 어레이로 구성될 수 있고, 여기에서 M은 양의 정수이다. 각각의 MGID 설명자는 그러한 메모리 블록을 가리키는 포인터를 포함하고, 그 등급은 요구되는 패킷 설명자 어레이의 크기에 의해 결정된다.
주목할 것은, 해시 함수가 MGID 설명자 메모리 및 MGID 큐 메모리에 액세스하기 위해 사용되기 때문에, 메모리의 행(row)은 복수의 소스에 대응할 수 있다(즉, {우선 순위, MGID, 소스 포트 번호}). 메모리의 행이 하나의 소스에 대해 적용되기 때문에, 새로운 멀티캐스트 소스에 대해 자원이 적용되는 경우 새로운 요구 사항이 제안되고, 행이 풀리는(release) 것이 확인되어야 한다. 이 문제를 해결하기 위해, 또다른 메모리가 그 정보를 유지하기 위해 요구된다.
또한 주목할 것은, 해시 함수가 사용되므로, 자원 충돌이 일어날 수 있다는 것이다. 따라서 완전 연관 희생 테이블(FAVT: Fully Associative Victim Table)이 유지되어, 자원 충돌이 발생하는 경우, 자원 충돌이 발생하는 셀이 또다른 MGID 큐로 밀어넣어지거나 또는 사전 설정된 FAVT에 따라 폐기될 수 있다. FAVT가 꽉차는 것을 방지하기 위하여, 본 실시례에서 제1 임계값으로 일컬어지는 임계값이 설정될 수 있다. FAVT 내의 정보의 양이 제1 임계값을 초과하는 경우, 제어 정보의 조각이 활성화되어 소스로 송신되고, 목적지 포트로 송신되는 멀티캐스트 데이터의 트래픽을 감소시킨다.
멀티캐스트의 배열 메커니즘 및 재조립 메커니즘은 유니캐스트의 그것고 동일하고, 여기에서는 생략되므로, 자세한 사항은 실시례 2를 참조 바란다.
상술한 상세한 설명에서 알 수 있듯이, 본 발명의 본 실시례가 제공하는 패킷 재조립 및 재배열 방법은 유니캐스트 및 멀티캐스트 모두에 대해 적합하고, 실시례 2와 동일한 이로운 효과를 얻을 수 있다.
실시례 4
특정 패킷의 재조립 및 재배열에 너무 많은 시간이 쓰이는 것을 방지하기 위하여(즉, 타임아웃 트래픽을 방지), 상술한 방법 실시례를 기초로, 셀이 속하는 패킷 및 셀이 로컬 타임 스탬프에 따라 패킷 재조립 동안 또는 패브릭 스위치 내에서 너무 많은 시간을 쓰지 않는 것이 추가적으로 확인되어야 한다. 구체적으로는 이하와 같다.
(I) 재조립 타임아웃
패킷 재조립 동안 또는 패브릭 스위치 내에서 너무 많은 시간을 쓰지 않는 것을 확인하기 위하여, 각각의 패킷 설명자는 패킷의 모든 셀 중 목적지 포트에 처음 도착하는 셀의 도착 시간을 나타내는 가장 빠른-셀-타임 스탬프(Earliest-Cell-Timestamp)를 포함할 것이다. 만약 현재 시간과 가장 빠른-셀-타임 스탬프 사이의 차이가 사전 설정된 제2 임계값보다 크면, 패킷은 재조립 타임 아웃으로 마크될 것이다. 패킷 설명자 어레이의 헤드에 이 패킷이 도착하는 경우, 이 패킷은 큐 밖으로 꺼내어져 패킷의 모든 셀이 수신되지 않았더라도 폐기된다(패킷의 다른 셀을 수신하는 것을 더 이상 기다리지 않음). 그렇지 않으면, 패킷이 배열 어레이의 헤드에 도착하기 전에, 패킷이 재조립 타임 아웃인지 여부가 판정되지 않고, 이하의 동작이 수행된다.
각각의 패킷의 제1 셀이 삽입된 경우, 패킷 설명자 내에서 가장 빠른-셀-타임 스탬프 필드를 갱신하는 단계:
패킷 설명자 어레이의 헤드에 패킷이 도착하는 경우, 가장 빠른-셀-타임 스탬프가 그것이 속하는 소스 설명자로 복제된다.
셀이 삽입되는 경우, 셀이 도착한 셀의 어느 패킷에 속하든지간에 소스 설명자 내의 가장 빠른-셀-타임 스탬프가 확인된다. 예를 들면, 특정 소스가 도착된 데이터를 가지고 있지 않은 경우, 침묵-소스-검출(SSD: Silent-Source-Detection)가 그러한 확인을 촉발한다.
타임 아웃 패킷은 처리를 위한 패킷 재사용 메커니즘으로 전달된다.
(II) 패브릭 타임 아웃
패브릭 스위치내에서 너무 많은 시간을 쓰는 패킷은 재조립 타임 아웃을 대기하지 않고 폐기될 수 있다. 즉, 패킷 재조립 및 재배열 방법은 이하를 더 포함할 수 있다.
패브릭 스위치의 지연을 위해 추정된 값(즉, 패브릭 스위치 내의 패킷의 전송 시간)이 사전 설정된 제3 임계값을 초과하는 것으로 결정한 경우, 목적지 포트가 패킷을 폐기한다.
여기에서, 패킷 시퀀스 번호에 따라 패브릭 스위치 내의 패킷의 전송 시간이 목적지 포트에서 추정될 수 있다. 구체적인 사항은 종래 기술을 참고하고, 여기에서는 생략한다.
상술한 상세한 설명에서 알 수 있듯이, 본 실시례는 실시례 2와 동일한 이로운 효과를 얻을 뿐 아니라 로컬 타임 스탬프에 따라 패브릭 스위치 내의 패킷의 전송 시간 및 패킷 재조립 시간을 모니터링하여, 너무 긴 지연 발생을 방지하고, 패킷 재조립 및 재배령 효율을 향상시키는 것을 돕는다.
실시례 5
상술한 방법을 더욱 잘 구현하기 위하여, 본 발명의 실시례는 구체적으로 목적지 포트로 사용될 수 있는 네트워크 장치를 제공한다. 도 3a를 참조하면, 네트워크 장치는 수신 유닛(301), 전처리 유닛(302), 패킷 배열 유닛(303), 셀 배열 유닛(304) 및 재조립 유닛(305)을 포함한다.
수신 유닛(301)은 소스 포트가 송신한, SID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하도록 구성되어 있고, SID는 구체적으로 소스 포트 번호로 사용될 수 있다.
전처리 유닛(302)은 SID에 따라 수신 유닛(301)에 의해 수신된 셀을 전처리하여 셀이 패킷 재조립 데이터베이스에 삽입될 수 있는지 여부를 결정하도록 구성되어 있다.
패킷 배열 유닛(303)은 패킷 시퀀스 번호에 따라 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하도록 구성되어 있다.
셀 배열 유닛(304)은, 만약 패킷이 완전한 패킷으로 결정되면, 셀 시퀀스 번호에 따라 패킷 배열 유닛(303)에 의해 획득된 정확하게 배열된 패킷의 셀을 배열하여 정확하게 배열된 셀을 획득하도록 구성되어 있다.
재조립 유닛(305)은 셀 배열 유닛(304)에 의해 획득된 정확하게 배열된 셀에 대해 패킷 재조립을 수행하도록 구성되어 있다.
여기서, 셀은 셀 데이터 및 셀 정보를 포함할 수 있다. 자원을 절약하기 위해, 배열 처리 동안 셀 정보만이 가동되고, 재조립 유닛(305)에 의해 패킷 재조립이 수행되는 경우에만, 대응되는 셀 데이터가 셀 정보에 따라 재조립을 수행하기 위해 추출된다.
도 3b를 참조하면, 전처리 유닛(302)은 데이터 저장 서브유닛(3021), 정보 삽입 서브유닛(3022) 및 결정 서브유닛(3023)을 포함할 수 있다.
데이터 저장 서브유닛(3021)은 수신 유닛(301)에 의해 수신된 셀을 도착의 로컬 타임 스탬프로 찍고, 셀의 셀 데이터를 SID에 따라 로드 메모리에 저장하고, 대응하는 로드 메모리 인덱스 값을 구성하도록 구성되어 있다.
정보 삽입 서브유닛(3022)은 입력 IF 큐에 셀의 셀 정보를 삽입하도록 구성되어 있고, 여기서, 셀 정보는 셀의 셀 시퀀스 번호, 패킷 시퀀스 번호, 로드 메모리 인덱스 값, 로컬 타임 스탬프 및 SID와 같은 셀-관련 정보를 포함한다.
결정 서브유닛(3023)은 SID, 패킷 시퀀스 번호 및 PF의 상태에 따라 IF 큐에서의 셀 정보를 처리하여, 셀 정보가 셀 재조립 데이터베이스에 삽입될지 여부를 결정하도록 구성되어 있다.
결정 서브유닛(3023)은 구체적으로, 만약 각각의 PF 큐의 깊이가 사전 설정된 임계값보다 작으면, IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제4 임계값보다 작은지 여부를 결정하고, 만약 그렇다면, IF 큐의 헤드 셀 정보를 꺼내고; 만약 그렇지 않으면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나에 밀어넣고, 및 가장 찬 PF 큐의 헤드 셀 정보를 꺼내고, IF 큐의 헤드 셀 정보에 대응하는 셀 또는 PF 큐의 꺼내어진 헤드 셀 정보에 대응하는 셀이 타임아웃 되었는지를 판단하고; 만약 그렇다면, 셀 정보에 대응하는 셀 및 셀이 속하는 셀을 재사용하고; 만약 그렇지 않으면, 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 오픈 패킷 시퀀스 번호보다 작은 경우, 셀 정보를 패킷 재조립 데이터베이스에 삽입하고; 셀의 패킷 시퀀스 번호가 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 큰 경우 셀 정보를 PF 큐 중 하나에 삽입하도록 구성되어 있다.
결정 서브유닛은 추가적으로, 만약 특정 PF 큐의 깊이가 사전 설정된 임계값보다 크면, 로컬 타임 스탬프에 따라, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제4 임계값보다 작은지 여부를 결정하고; 만약 그렇다면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀을 재사용하고, 그 후 IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 시퀀스 번호의 차이가 제4 임계값보다 작은지 결정하는 단계를 수행하고; 만약 그렇지 않다면, IF 큐의 헤드 셀 정보를 PF 큐 중 하나에 밀어넣는 단계를 수행하고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼낸다.
구체적인 사항에 대해서는, 실시례 1-2 및 도 2d의 전처리 흐름을 참고 바란다.
구체적으로, 패킷 재조립 데이터베이스는 유니캐스트 및 멀티캐스트 각각에 대해 디자인될 수 있다. 예를 들면, 하나의 패킷 재조립 데이터베이스에서, 유니캐스트 및 멀티캐스트에 대한 패킷 재조립 데이터베이스가 제공될 수 있다.
여기에서, 유니캐스트에 대하여, SDM 및 SQM을 포함할 수 있다. 여기서, SDM은 패킷 재조립 데이터베이스는 소스 설명자를 저장하고 패킷의 CoS 및 소스 포트 번호를 인덱스로 취하도록, {패킷의 CoS, 소스 포트 번호}를 인덱스로 사용하도록 구성되어 있고, SQM은 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고, 각각의 패킷 설명자는 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키고, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함할 수 있다.
여기에서, SDM 및 SQM은 상이한 용량의 N가지 등급의 메모리 블록을 포함하는 동적 패킷 설명자 어레이에 의해 구성될 수 있고, 여기서 N은 양의 정수이다.
멀티캐스트에 대하여, 패킷 재조립 데이터베이서는 MGID 설명자 메모리 및 MGID 큐 메모리를 포함한다. 여기서 소스 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, MGID 및 소스 포트 번호를 인덱스로 취하도록, 즉 {패킷의 CoS, MGID, 소스 포트 번호)를 인덱스로 취하도록 구성되어 있고, 여기서 MGID 큐 메모리는 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있다; MGID 큐 메모리는, 각각의 패킷 설명자는 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키고, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함할 수 있다.
여기에서, MGID 설명자 메모리 및 MGID 큐 메모리는 상이한 용량의 M가지 등급의 메모리 블록을 포함하는 동적 패킷 설명자 어레이이고, 여기서 M은 양의 정수이다.
MGID 설명자 메모리 및 MGID 큐 메모리는 해시 함수를 지원하고, 즉, 각각의 처리(예를 들면, IF 큐, PF 큐, 완전한 큐, 재배열-패킷-어레이-버퍼 및 셀 배열 버퍼)가 해시 함수를 통하여 MGID 설명자 메모리 및 MGID 큐 메모리에 액세스할 수 있다. 즉, 패킷 배열 유닛(303)은 구체적으로 해시 함수를 통해 MGID 설명자 메모리 및 MGID 큐 메모리에 액세스하도록 구성되어 있다.
여기에서, 해시 함수는 복수의 해시 버킷으로서 구성될 수 있다. 해시 함수의 사용은 자원 충돌을 야기할 수 있고, 따라서 FAVT가 유지되어, 자원 충돌이 발생하는 경우, 자원 충돌이 발생하는 셀이 또다른 MGID 큐로 밀어넣어지거나 또는 사전 설정된 FAVT에 따라 폐기될 수 있다. 따라서 도 3b에 도시된 바와 같이, 네트워크 장치는 충돌 처리 유닛(306)을 더 포함할 수 있다.
충돌 처리 유닛(306)은, 자원 충돌이 발생하는 경우, 자원 충돌이 발생하는 셀을 사전 설정된 FAVT에 따라 또다른 MGID 큐에 밀어넣거나 셀을 폐기(즉, 재사용)하도록 구성되어 있다. 구체적으로, 패킷 배열 유닛(303)이 해시 함수를 통하여 MGID 설명자 메모리 및 MGID 큐 메모리에 액세스하는 경우, 만약 자원 충돌이 발생하면, 자원 충돌이 발생하는 셀을 사전 설정된 FAVT에 따라 또다른 MGID 큐에 밀어넣거나 셀을 폐기한다.
또한, FAVT가 꽉차는 것을 방지하기 위하여, 본 실시례에서 제1 임계값으로 일컬어지는 임계값이 설정될 수 있다. FAVT 내의 정보의 양이 제1 임계값을 초과하는 경우, 제어 정보의 조각이 활성화되어 소스로 송신되고, 목적지 포트로 송신되는 멀티캐스트 데이터의 트래픽을 감소시킨다. 따라서 도 3b에 도시된 바와 같이, 네트워크 장치는 제어 메시지 송신 유닛(307)을 더 포함할 수 있다.
제어 메시지 송신 유닛(307)은, FAVT의 정보의 양이 사전 설정된 제1 임계값을 초과하는 경우, 목적지 포트를 활성화시켜 제어 정보를 멀티티캐스트 소스로 송신하고, 목적지 포트로 송신되는 멀티캐스트 데이터의 트래픽을 감소시키도록 구성되어 있다.
여기에서, 도 3b에 도시된 바와 같이, 셀 배열 유닛(304)은 인큐잉(enqueuing) 서브유닛(3041), 버퍼링 서브유닛(3042) 및 배열 서브유닛(3043)을 더 포함할 수 있다.
인큐잉 서브유닛(3041)은, 패킷 배열 유닛(302)에 의해 배열된 패킷이 완전한 패킷으로 결정되면, 완전한 패킷의 패킷 설명자를 셀의 우선 순위 및 방송 등급에 따라 대응하는 완전한 큐에 추가하도록 구성되어 있다.
버퍼링 서브유닛(3042)은, 완전한 큐 내의 패킷 설명자에 따라 대응하는 셀 정보를 셀 배열 버퍼에 삽입하도록 구성되어 있다.
배열 서브유닛(3043)은, 셀 시퀀스 번호에 따라 셀 배열 버퍼 내의 추출된 셀 정보를 배열하도록 구성되어 있다.
여기에서, 셀 배열 버퍼는 패킷 재조립을 위해 배열된 셀 정보를 하나씩 판독하는 판독 포인터 및 현재 수행중인 패킷의 시작 위치를 항상 가리키는 기록 포인터를 유지한다. 따라서 삽입된 셀 정보의 오프셋 위치가 기록 포인터에 셀 시퀀스 번호를 더함으로써 계산될 수 있고, 그 후 패킷 내의 삽입된 셀 정보가 오프셋 위치에 따라 조정되어, 정확하게 배열된 셀 정보를 획득한다. 즉, 배열 서브유닛(3043)은 구체적으로, 기록 포인터에 셀 시퀀스 번호를 추가함으로써 삽입된 셀 정보의 오프셋 위치를 계산하고, 오프셋 위치에 따라 패킷 내에서 삽입된 셀 정보의 위치를 조정하도록 구성되어 있다.
여기에서, 도 3b에 도시된 바와 같이, 재조립 유닛(305)은 할당 서브유닛(3051), 판독 서브유닛(3052) 및 재조립 서브유닛(3053)을 포함할 수 있다.
할당 서브유닛(3051)은 셀 배열 유닛(304)에 의해 정확하게 배열된 셀 정보가 속하는 패킷을 재조립 자원에 할당하도록 구성되어 있다.
판독 서브유닛(3052)은 셀 배열 버퍼 내의 정확하게 배열된 셀 정보를 하나씩 판독하도록 구성되어 있다.
재조립 서브유닛(3053)은 판독 서브유닛(3052)에 의해 판독된 셀 정보에 따라 대응하는 셀 데이터를 획득하고, 할당 서브유닛(3051)에 의해 할당된 재조립 자원을 사용하여 획득된 셀 데이터 상에 패킷 재조립을 수행하도록 구성되어 있다. 예를 들면, 재조립 서브유닛(3052)은 데이터 저장 서브유닛(3021)에 의해 로드 메모리 내에 저장되어 있는 셀 데이터를, 판독 서브유닛(3052)에 의해 판독된 셀 정보에 다라 판독할 수 있다.
또한, 효율을 향상시키기 위해, 정확하게 배열된 셀 정보가 속하는 패킷은 적어도 2개의 재조립 자원과 함께 할당될 수 있다. 즉,
할당 서브유닛(3051)은 적어도 2개의 재조립 자원을 정확하게 배열된 셀 정보가 속하는 패킷에 할당하도록 추가적으로 구성되어 있다.
여기에서, 자원 절약을 위해서, 재조립 자원은 자원 풀 내에서 관리되고 필요한 경우에만, 즉 재조립 되어야 할 때에만 각각의 소스에 할당된다. 예를 들면, 배열 버퍼 내의 셀이 정확하게 배열된 후, 패킷 재조립을 요구하는 지시 신호(예를 들면, FIFO_RDY 신호)가 패킷 재조립 메커니즘으로 송신될 수 있고, 패킷 재조립 메커니즘은 패킷 재조립을 요구하는 지시 신호가 수신된 후에 배열 버퍼 내의 셀의 패킷 재조립을 시작한다.
물론, 적어도 2개의 셀 배열 버퍼가 있는 경우, 패킷 재조립 메커니즘은 패킷 재조립을 요구하는 복수의 지시 신호를 동시에 수신할 수 있다. 그 경우, 패킷 재조립 메커니즘은 패킷의 CoS에 따라 처리를 위한 셀 배열 버퍼를 선택할 수 있다. 즉, 재조립 유닛은 선택 서브유닛(3054)을 더 포함할 수 있다.
선택 서브유닛(3054)은 패킷의 CoS에 따라 셀 배열 버퍼를 선택하도록 구성되어 있다.
그 후, 할당 서브유닛(3051)은 구체적으로, 재조립 자원을 선택 서브유닛(3054)에 의해 선택된 셀 배열 버퍼 내에서 정확하게 배열된 셀 정보가 속하는 패킷에 할당하도록 구성되어 있다.
판독 서브유닛(3052)은 선택 서브유닛(3054)에 의해 선택된 셀 배열 버퍼 내의 정확하게 배열된 셀 정보를 하나씩 판독하도록 구성되어 있다.
특정 패킷 내에 대한 재조립 및 재배열에 너무 많은 시간이 쓰이는 것을 방지하기 위하여(즉, 타임 아웃 트래픽을 피함), 로컬 타임 스탬프에 따라, 셀이 속하는 패킷 및 셀이 패브릭 스위치 내에서 또는 패킷 재조립 동안 너무 많은 시간을 쓰는지가 추가적으로 확인될 수 있다. 따라서, 도 3b에 도시된 바와 같이, 네트워크 장치는 폐기 유닛을 더 포함할 수 있다.
폐기 유닛은 패킷 재조립이 타임 아웃이라고 결정된 경우, 패킷을 폐기하도록 구성되어 있다.
폐기 유닛은 구체적으로, 패킷 내의 목적지 포트에 처음 도착하는 셀의 도착 시간과 현재 시간과의 차이가 사전 설정된 제2 임계값보다 큰 경우, 패킷 재조립이 타임 아웃이라고 결정하도록 구성되어 있다. 구체적으로는 이하와 같을 수 있다.
각각의 패킷 설명자는 패킷의 모든 셀 중 목적지 포트에 처음 도착하는 셀의 도착 시간을 나타내는 가장 빠른-셀-타임 스탬프를 포함한다. 만약 현재 시간과 가장 빠른-셀-타임 스탬프 사이의 차이가 사전 설정된 제2 임계값보다 크면, 패킷은 재조립 타임 아웃으로 마크될 것이다. 패킷 설명자 어레이의 헤드에 도착하는 경우, 이 패킷은 큐 밖으로 꺼내어져 패킷의 모든 셀이 수신되지 않았더라도 폐기된다(패킷의 다른 셀을 수신하는 것을 더 이상 기다리지 않음).
또한, 패브릭 스위치 내에서 너무 많은 시간을 지연하는 패킷 역시 직접 폐기될 수 있다. 그 경우, 재조립 시간을 더이상 대기하지 않는다. 구체적으로는 이하와 동일할 수 있다.
수신 유닛(301)은 구체적으로, 패브릭 스위치를 통하여 소스 포트에 의해 송신된 셀을 수신하도록 구성되어 있다.
그 후, 폐기 유닛은 추가적으로, 패브릭 스위치의 지연의 추정 값이 사전 설정된 제3 임계값을 초과하는 것으로 결정되는 경우 패킷을 폐기하도록 구성되어 있다.
여기에서, 패브릭 스위치 내의 패킷의 전송 시간은, 패킷 시퀀스 번호에 따라 목적지 포트에서 추정됨으로써 획득될 수 있다. 구체적으로는 종래 기술을 참고하고, 여기에서는 생략한다.
제2 및 제3 임계값은 실제 애플리케이션의 요구 사항에 따라 설정될 수 있다.
구체적으로, 상술한 유닛은 개개의 엔티티로 각각 구현될 수 있거나, 또는 동일하거나 여러개의 엔티티로 구성될 수 있다. 예를 들면, 전처리 유닛(302)은 실시례 2의 전처리 유닛에 의해 구현될 수 있고, 패킷 배열 유닛(303)은 실시례 2의 패킷 배열 유닛에 의해 구현될 수 있고, 재조립 유닛(305)은 실시례 2의 패킷 재조립 모듈에 의해 구현될 수 있으며, 폐기 유닛은 실시례 2의 패킷 재사용 모듈 및 신호 재사용 모듈에 의해 구현될 수 있는 등이다.
상술한 유닛의 구현에 대해서는 이전 실시례를 참고하고, 여기에서는 생략한다.
상술한 상세한 설명으로부터 알 수 있듯이, 본 실시례의 네트워크 장치의 전처리 유닛(302)은 SID에 따라 수신된 셀을 전처리하여, 수신된 셀이 패킷 재조립 데이터베이스에 삽입될지 여부를 결정하고, 그 후 패킷 배열 유닛(303) 및 셀 배열 유닛(304)가 셀의 셀 시퀀스 번호 및 패킷 시퀀스 번호에 따라 데이터베이스 내에서 셀을 직접 배열하고, 배열된 셀에 따라 재조립 유닛(305)이 최종적으로 패킷 재조립을 수행한다. 해결 수단이 소스에 따라 패킷을 직접 재배열 및 재조립할 수 있기 때문에, 시간 척도 동기화에 기초하여 재배열 및 재조립하는 종래 기술과 비교하여 고성능 장비에 적합하다. 또한, 해결 수단이 수신된 셀을 제어하고 관리하기 때문에(즉, 재조립을 위해 대기하는 패킷), 자원의 활용율이 높고, 더 적은 메모리 및 제어 자원이 점유된다.
실시례 6
따라서, 본 발명의 실시례는 본 발명의 실시례가 제공하는 소스 포트 장치 및 네트워크 장치를 포함하는 통신 시스템을 추가적으로 제공하고, 여기에서 네트워크 장치는 목적지 포트의 역할을 한다(즉, 목적지 포트 장치로 불리운다). 구체적으로는 이전 실시례를 참고하고, 예를 들면:
목적지 포트의 역할을 하는 목적지 포트 장치는 소스 포트에 의해 송신된 셀을 수신하고 - 여기에서 셀은 SID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함함 - ; SID에 따라 수신된 셀을 전처리하여 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하고; 패킷 시퀀스 번호에 따라 패킷 재조립 데이터베이스 내의 셀을 배열하여 정확하게 배열된 패킷을 획득하고; 만약 정확하게 배열된 패킷이 완전한 패킷이면, 정확하게 배열된 패킷의 셀을 셀 시퀀스 번호에 따라 배열하여 정확하게 배열된 셀을 획득하고; 정확하게 배열된 셀에 대해 패킷 재조립을 수행하도록 구성되어 있다.
소스 포트의 역할을 하는 소스 포트 장치는 목적지 포트 장치로 셀을 송신하도록 구성되어 있고, 여기에서 셀은 SID, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함한다.
여기에서, 목적지 포트 장치는 구체적으로, 수신된 셀을 도착의 로컬 타임 스탬프로 찍고, SID에 따라 로드 메모리 내에서 셀의 셀 데이터를 저장하고, 대응하는 로드 메모리 인덱스 값을 구성하고; 셀의 셀 정보를 IF 큐에 삽입하고, 여기에서, 셀 정보는 SID, 로컬 타임 스탬프, 로드 메모리 인덱스 값, 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하고; SID, 로컬 타임 스탬프 및 PF 큐의 상태에 따라 IF 큐 내에서 셀 정보를 처리하여, 셀 재조립 데이터베이스에 셀 정보가 삽입되어야 하는지 여부를 결정한다. 구체적으로는 상술한 방법 실시례 및 도 2d를 참조바란다.
상술한 장치의 구현에 대해서는 이전 실시례를 참고하면 되고, 여기에서는 생략한다.
상술한 상세한 설명으로부터 알 수 있듯이, 본 실시례의 통신 시스템의 목적지 포트 장치는 SID에 따라 수신된 셀을 전처리하여, 수신된 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하고, 그 후, 셀의 셀 시퀀스 번호 및 패킷 시퀀스 번호에 따라 데이터베이스 내에서 셀을 직접 배열하고, 최종적으로 패킷 재조립을 달성한다. 해결 수단이 소스에 따라 패킷을 직접 재배열 및 재조립할 수 있기 때문에, 시간 척도 동기화에 기초하여 재배열 및 재조립하는 종래 기술과 비교하여 고성능 장비에 적합하다. 또한, 현재 해결 수단이 수신된 셀을 제어하고 관리하기 때문에(즉, 재조립을 위해 대기하는 패킷), 자원의 활용율이 높고, 더 적은 메모리 및 제어 자원이 점유된다.
통싱의 기술자라면 상술한 실시례의 다양한 방법을 구현하는 단계의 일부 또는 전부가 컴퓨터로 읽을 수 있는 저장 매체에 저장되어 있는 프로그램을 통하여 관련 하드웨어에 명령함으로써 완료될 수 있다는 것을 이해할 것이다. 저장 매체는 ROM, RAM, 자기 디스크, 광학 디스크 등을 포함할 수 있다.
본 발명의 실시례가 제공하는 패킷 재조립 및 재배열 방법, 장치 및 시스템이 자세히 설명되었고, 봉 발명의 원칙 및 구현이 구체적인 실시례를 통하여 설명되었다. 그러나, 상술한 실시례는 본 발명의 방법 및 핵심 사상을 이해하는 것을 돕기 위한 것일 뿐이다. 통상의 기술자라라면 본 발명의 사상에 따라 구체적인 실시례 및 애플리케이션 범위를 변경할 수 있을 것이다. 따라서, 본 명세서의 내용은 본 발명에 한정되는 것으로 해석되어서는 안된다.

Claims (35)

  1. 패킷 재조립 및 재배열 방법에 있어서,
    소스 포트가 송신한, 소스 ID(SID: Source Identification), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하는 단계;
    상기 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하기 위해, 상기 SID에 따라, 수신된 상기 셀을 전처리(preprocessing)하는 단계;
    정확하게 배열된 패킷을 획득하기 위해, 상기 패킷 시퀀스 번호에 따라, 상기 패킷 재조립 데이터베이스 내의 셀을 배열하는 단계;
    상기 패킷 시퀀스 번호에 따라 상기 패킷 재조립 데이터베이스 내의 셀을 배열한 후, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정하는 단계;
    상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정된 후, 정확하게 배열된 셀을 획득하기 위해, 상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열하는 단계; 및
    상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열한 후, 상기 정확하게 배열된 셀에 대해 패킷 재조립을 수행하는 단계
    를 포함하는 패킷 재조립 및 재배열 방법.
  2. 제1항에 있어서,
    상기 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하기 위해, 상기 SID에 따라, 수신된 상기 셀을 전처리하는 단계는,
    수신된 상기 셀에 도착의 로컬 타임 스탬프를 찍고, 상기 SID에 따라, 로드 메모리 내에 상기 셀의 셀 데이터를 저장하고, 대응하는 로드 메모리 인덱스 값을 구성하는 단계;
    상기 SID, 상기 로컬 타임 스탬프, 상기 로드 메모리 인덱스 값, 상기 패킷 시퀀스 번호 및 상기 셀 시퀀스 번호를 포함하는, 상기 셀의 셀 정보를 입력 FIFO(IF: Input FIFO) 큐(queue)에 삽입하는 단계; 및
    상기 셀 정보가 셀 재조립 데이터베이스에 삽입되어야 할지 여부를 결정하기 위해, 상기 SID, 상기 패킷 시퀀스 번호 및 연기된 FIFO(PF: Postponed FIFO)의 상태에 따라, 상기 IF 큐 내의 상기 셀 정보를 처리하는 단계
    를 포함하는, 패킷 재조립 및 재배열 방법.
  3. 제2항에 있어서,
    상기 셀 정보가 셀 재조립 데이터베이스에 삽입되어야 할지 여부를 결정하기 위해, 상기 SID, 상기 패킷 시퀀스 번호 및 PF 큐의 상태에 따라, 상기 IF 큐 내의 상기 셀 정보를 처리하는 단계는,
    각각의 PF 큐의 깊이가 사전 설정된 임계값보다 작으면, 상기 IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제4 임계값보다 작은지 여부를 결정하는 단계;
    상기 차이가 제4 임계값보다 작으면, 상기 IF 큐의 상기 헤드 셀 정보를 꺼내고(popping), 상기 차이가 제4 임계값보다 작지 않으면, 상기 IF 큐의 상기 헤드 셀 정보를 상기 PF 큐 중 하나에 밀어넣고, 가장 찬(fullest) PF 큐의 헤드 셀 정보를 꺼내는 단계;
    상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀이 타임 아웃인지 여부를 판정하는 단계;
    상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀이 타임 아웃이면, 상기 셀 정보에 대응하는 셀 및 상기 셀이 속하는 패킷을 재사용하고, 상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀이 타임 아웃이 아니면, 상기 셀의 상기 패킷 시퀀스 번호가 상기 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 작은 경우, 상기 셀 정보를 상기 패킷 재조립 데이터베이스에 삽입하고, 상기 셀의 상기 패킷 시퀀스 번호가 상기 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 큰 경우, 상기 셀 정보를 상기 PF 큐 중 하나에 삽입하는 단계
    를 포함하는, 패킷 재조립 및 재배열 방법.
  4. 제3항에 있어서,
    특정 PF 큐의 깊이가 사전 설정된 임계값보다 크면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제5 임계값보다 작은지 여부를 판단하는 단계;
    상기 차이가 제5 임계값보다 작으면, 상기 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀을 재사용하여, 상기 IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 상기 제4 임계값보다 작은지 여부를 결정하는 단계를 수행하고,
    상기 차이가 제5 임계값보다 작지않으면, 상기 IF 큐의 상기 헤드 셀 정보를 상기 PF 큐 중 하나에 밀어넣고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계를 수행하는 단계
    를 더 포함하는 패킷 재조립 및 재배열 방법.
  5. 제1항에 있어서,
    상기 패킷 재조립 데이터베이스는 소스 설명자 메모리(SDM: Source Descriptor Memory) 및 소스 큐 메모리(SQM: Source Queue Memory)를 포함하고,
    상기 SDM은 소스 설명자를 저장하고, 패킷의 서비스 등급(CoS: Class of Service) 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 SQM은 상기 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고,
    상기 SQM은, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼(Reorder-Packet-Array-Buffer)를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 패킷 재조립 및 재배열 방법.
  6. 제1항에 있어서,
    상기 패킷 재조립 데이터베이스는, 멀티캐스트 그룹 ID(MGID: Multicast Group ID) 설명자 메모리 및 MGID 큐 메모리를 포함하고,
    상기 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, 상기 MGID 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 MGID 큐 메모리는 상기 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있고,
    상기 MGID 큐 메모리는, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 패킷 재조립 및 재배열 방법.
  7. 제5항에 있어서,
    상기 재배열-패킷-어레이-버퍼는, 상이한 용량의 양의 정수개의 등급의 메모리 블록을 포함하는 동적 패킷 설명자 어레이인, 패킷 재조립 및 재배열 방법.
  8. 네트워크 장치에 있어서,
    소스 포트가 송신한, 소스 ID(SID: Source Identification), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는 셀을 수신하도록 구성되어 있는 수신 유닛;
    상기 셀이 패킷 재조립 데이터베이스에 삽입되어야 하는지 여부를 결정하기 위해, 상기 SID에 따라, 상기 수신 유닛에 의해 수신된 상기 셀을 전처리(preprocessing)하도록 구성되어 있는 전처리 유닛;
    정확하게 배열된 패킷을 획득하기 위해, 상기 패킷 시퀀스 번호에 따라, 상기 패킷 재조립 데이터베이스 내의 셀을 배열하도록 구성되어 있는 패킷 배열 유닛;
    상기 패킷 시퀀스 번호에 따라 상기 패킷 재조립 데이터베이스 내의 셀을 배열한 후, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정하고, 상기 정확하게 배열된 패킷이 완전한 패킷인 것으로 결정된 후, 정확하게 배열된 셀을 획득하기 위해, 상기 셀 시퀀스 번호에 따라, 상기 정확하게 배열된 패킷의 셀을 배열하도록 구성되어 있는 셀 배열 유닛; 및
    상기 셀 시퀀스 번호에 따라 상기 정확하게 배열된 패킷의 셀을 배열한 후, 상기 정확하게 배열된 셀에 대해 패킷 재조립을 수행하도록 구성되어 있는 재조립 유닛
    을 포함하는 네트워크 장치.
  9. 제8항에 있어서,
    상기 전처리 유닛은,
    수신된 상기 셀에 도착의 로컬 타임 스탬프를 찍고, 상기 SID에 따라, 로드 메모리 내에 상기 셀의 셀 데이터를 저장하고, 대응하는 로드 메모리 인덱스 값을 구성하도록 구성되어 있는 데이터 저장 서브유닛;
    상기 SID, 상기 로컬 타임 스탬프, 상기 로드 메모리 인덱스 값, 상기 패킷 시퀀스 번호 및 상기 셀 시퀀스 번호를 포함하는, 상기 셀의 셀 정보를 입력 FIFO(IF: Input FIFO) 큐(queue)에 삽입하도록 구성되어 있는 정보 삽입 서브유닛; 및
    상기 셀 정보가 셀 재조립 데이터베이스에 삽입되어야 할지 여부를 결정하기 위해, 상기 SID, 상기 패킷 시퀀스 번호 및 연기된 FIFO(PF: Postponed FIFO)의 상태에 따라, 상기 IF 큐 내의 상기 셀 정보를 처리하도록 구성되어 있는 결정 서브유닛
    을 포함하는, 네트워크 장치.
  10. 제9항에 있어서,
    상기 결정 서브유닛은
    각각의 PF 큐의 깊이가 사전 설정된 임계값보다 작으면, 상기 IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제4 임계값보다 작은지 여부를 결정하고;
    상기 차이가 제4 임계값보다 작으면, 상기 IF 큐의 상기 헤드 셀 정보를 꺼내고;
    상기 차이가 제4 임계값보다 작지 않으면, 상기 IF 큐의 상기 헤드 셀 정보를 상기 PF 큐 중 하나에 밀어넣고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼내고;
    상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 헤드 셀 정보에 대응하는 셀이 타임 아웃인지 여부를 판정하고;
    상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 헤드 셀 정보에 대응하는 셀이 타임 아웃이면, 상기 셀 정보에 대응하는 셀 및 상기 셀이 속하는 패킷을 재사용하고;
    상기 IF 큐의 상기 꺼낸 헤드 셀 정보에 대응하는 셀 또는 상기 PF 큐의 헤드 셀 정보에 대응하는 셀이 타임 아웃이 아니면, 상기 셀의 상기 패킷 시퀀스 번호가 상기 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 작은 경우, 상기 셀 정보를 상기 패킷 재조립 데이터베이스에 삽입하고, 상기 셀의 상기 패킷 시퀀스 번호가 상기 패킷 재조립 데이터베이스 내의 동일한 소스의 최대 패킷 시퀀스 번호보다 큰 경우, 상기 셀 정보를 상기 PF 큐 중 하나에 삽입하도록 구성되어 있는, 네트워크 장치.
  11. 제10항에 있어서,
    상기 결정 서브유닛은,
    특정 PF 큐의 깊이가 사전 설정된 임계값보다 크면, 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 제5 임계값보다 작은지 여부를 판단하고;
    상기 차이가 제5 임계값보다 작으면, 상기 오버플로우 PF 큐의 헤드 셀 정보에 대응하는 셀을 재사용하여, 상기 IF 큐의 헤드 셀 정보에 대응하는 셀의 패킷 시퀀스 번호와 현재 처리되는 패킷의 최소 패킷 시퀀스 번호의 차이가 상기 제4 임계값보다 작은지 여부를 결정하는 단계를 수행하고;
    상기 차이가 제5 임계값보다 작지않으면, 상기 IF 큐의 상기 헤드 셀 정보를 상기 PF 큐 중 하나에 밀어넣고, 가장 찬 PF 큐의 헤드 셀 정보를 꺼내는 단계를 수행하도록 구성되어 있는, 네트워크 장치.
  12. 제8항에 있어서,
    상기 패킷 재조립 데이터베이스는 소스 설명자 메모리(SDM: Source Descriptor Memory) 및 소스 큐 메모리(SQM: Source Queue Memory)를 포함하고,
    상기 SDM은 소스 설명자를 저장하고, 패킷 서비스 등급(CoS: Class of Service) 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 SQM은 상기 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고,
    상기 SQM은, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼(Reorder-Packet-Array-Buffer)를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 네트워크 장치.
  13. 제8항에 있어서,
    상기 패킷 재조립 데이터베이스는, 멀티캐스트 그룹 ID(MGID: Multicast Group ID) 설명자 메모리 및 MGID 큐 메모리를 포함하고,
    상기 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, 상기 MGID 및 소스 포트 번호를 인덱스로 취하도록 구성되어 있고,
    상기 MGID 큐 메모리는 상기 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있고,
    상기 MGID 큐 메모리는, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 네트워크 장치.
  14. 제12항에 있어서,
    상기 재배열-패킷-어레이-버퍼는, 상이한 용량의 정수개의 등급의 메모리 블록을 포함하는 동적 패킷 설명자 어레이인, 네트워크 장치.
  15. 제2항에 있어서,
    상기 패킷 재조립 데이터베이스는 소스 설명자 메모리(SDM: Source Descriptor Memory) 및 소스 큐 메모리(SQM: Source Queue Memory)를 포함하고,
    상기 SDM은 소스 설명자를 저장하고, 패킷의 서비스 등급(CoS: Class of Service) 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 SQM은 상기 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고,
    상기 SQM은, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼(Reorder-Packet-Array-Buffer)를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 패킷 재조립 및 재배열 방법.
  16. 제2항에 있어서,
    상기 패킷 재조립 데이터베이스는, 멀티캐스트 그룹 ID(MGID: Multicast Group ID) 설명자 메모리 및 MGID 큐 메모리를 포함하고,
    상기 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, 상기 MGID 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 MGID 큐 메모리는 상기 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있고,
    상기 MGID 큐 메모리는, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 패킷 재조립 및 재배열 방법.
  17. 제9항에 있어서,
    상기 패킷 재조립 데이터베이스는 소스 설명자 메모리(SDM: Source Descriptor Memory) 및 소스 큐 메모리(SQM: Source Queue Memory)를 포함하고,
    상기 SDM은 소스 설명자를 저장하고, 패킷 서비스 등급(CoS: Class of Service) 및 상기 SID를 인덱스로 취하도록 구성되어 있고,
    상기 SQM은 상기 소스 설명자에 대응하는 소스 큐를 저장하도록 구성되어 있고,
    상기 SQM은, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼(Reorder-Packet-Array-Buffer)를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 네트워크 장치.
  18. 제9항에 있어서,
    상기 패킷 재조립 데이터베이스는, 멀티캐스트 그룹 ID(MGID: Multicast Group ID) 설명자 메모리 및 MGID 큐 메모리를 포함하고,
    상기 MGID 설명자 메모리는 MGID 설명자를 저장하고, 패킷의 CoS, 상기 MGID 및 소스 포트 번호를 인덱스로 취하도록 구성되어 있고,
    상기 MGID 큐 메모리는 상기 MGID 설명자에 대응하는 MGID 큐를 저장하도록 구성되어 있고,
    상기 MGID 큐 메모리는, 배열되기를 기다리는 셀의 패킷 설명자를 저장하는 재배열-패킷-어레이-버퍼를 가리키는 포인터를 포함하고, 각각의 상기 패킷 설명자는 상기 패킷에 속하는 최근 수신된 셀의 셀 설명자를 가리키는, 네트워크 장치.
  19. 소스 포트 장치, 및 제8항 내지 제14항 및 제17항 내지 제18항 중 어느 한 항에 따른 네트워크 장치를 포함하는 통신 시스템에 있어서,
    상기 소스 포트 장치는 상기 네트워크 장치에 셀을 송신하도록 구성되어 있고,
    상기 셀은 소스 ID(SID: Source ID), 패킷 시퀀스 번호 및 셀 시퀀스 번호를 포함하는, 통신 시스템.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020147005957A 2011-08-17 2011-08-17 패킷 재조립 및 재배열 방법, 장치 및 시스템 KR101607180B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/078504 WO2012162949A1 (zh) 2011-08-17 2011-08-17 一种报文重组重排序方法、装置和系统

Publications (2)

Publication Number Publication Date
KR20140046052A KR20140046052A (ko) 2014-04-17
KR101607180B1 true KR101607180B1 (ko) 2016-03-29

Family

ID=47258297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147005957A KR101607180B1 (ko) 2011-08-17 2011-08-17 패킷 재조립 및 재배열 방법, 장치 및 시스템

Country Status (6)

Country Link
US (1) US9380007B2 (ko)
EP (1) EP2736197B1 (ko)
JP (1) JP5863076B2 (ko)
KR (1) KR101607180B1 (ko)
CN (1) CN103069757B (ko)
WO (1) WO2012162949A1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9253248B2 (en) * 2010-11-15 2016-02-02 Interactic Holdings, Llc Parallel information system utilizing flow control and virtual channels
US9146677B2 (en) * 2013-01-28 2015-09-29 Applied Micro Circuits Corporation Systems and methods for queue request ordering without stalling requests in aliasing conditions by using a hash indexed based table
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US9338105B2 (en) * 2013-09-03 2016-05-10 Broadcom Corporation Providing oversubscription of pipeline bandwidth
CN105573711B (zh) * 2014-10-14 2019-07-19 深圳市中兴微电子技术有限公司 一种数据缓存方法及装置
GB2533328A (en) * 2014-12-16 2016-06-22 Ibm Message processing
JP6342351B2 (ja) * 2015-03-02 2018-06-13 東芝メモリ株式会社 ストレージシステム
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US20170017420A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017419A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
CN106911644A (zh) * 2015-12-23 2017-06-30 中国移动通信集团广西有限公司 一种报文重组方法和设备
KR101785821B1 (ko) 2016-01-04 2017-10-16 엘에스산전 주식회사 시리얼 통신의 프레임 수신 모니터링 방법
US10089339B2 (en) * 2016-07-18 2018-10-02 Arm Limited Datagram reassembly
US9906821B1 (en) * 2016-08-23 2018-02-27 Cisco Technology, Inc. Packet reordering system
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
CN109561443B (zh) * 2017-09-26 2021-06-11 大唐移动通信设备有限公司 一种信息处理方法、装置、设备及计算机可读存储介质
US10686625B2 (en) 2017-10-02 2020-06-16 Vmware, Inc. Defining and distributing routes for a virtual network
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11223514B2 (en) 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
CN110391990A (zh) * 2018-04-18 2019-10-29 中兴通讯股份有限公司 数据传输方法及装置、系统、存储介质、电子装置
US10567307B2 (en) 2018-04-27 2020-02-18 Avago Technologies International Sales Pte. Limited Traffic management for high-bandwidth switching
US10686714B2 (en) * 2018-04-27 2020-06-16 Avago Technologies International Sales Pte. Limited Traffic management for high-bandwidth switching
US10820057B2 (en) 2018-11-07 2020-10-27 Nvidia Corp. Scalable light-weight protocols for wire-speed packet ordering
US11108704B2 (en) 2018-12-04 2021-08-31 Nvidia Corp. Use of stashing buffers to improve the efficiency of crossbar switches
US11805081B2 (en) * 2019-03-04 2023-10-31 Intel Corporation Apparatus and method for buffer management for receive segment coalescing
US10999137B2 (en) 2019-08-27 2021-05-04 Vmware, Inc. Providing recommendations for implementing virtual networks
US11044190B2 (en) 2019-10-28 2021-06-22 Vmware, Inc. Managing forwarding elements at edge nodes connected to a virtual network
EP4049421B1 (en) * 2019-10-29 2023-11-29 Huawei Technologies Co., Ltd. Systems and methods for sorting data elements with approximation to o(1)
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11606712B2 (en) 2020-01-24 2023-03-14 Vmware, Inc. Dynamically assigning service classes for a QOS aware network link
US11190457B2 (en) * 2020-02-19 2021-11-30 At&T Intellectual Property I, L.P. Selectively bypassing a routing queue in a routing device in a fifth generation (5G) or other next generation network
CN112511455A (zh) * 2020-04-30 2021-03-16 中兴通讯股份有限公司 信元流特征值调整方法、装置、系统和存储介质
US11363124B2 (en) 2020-07-30 2022-06-14 Vmware, Inc. Zero copy socket splicing
US11575591B2 (en) 2020-11-17 2023-02-07 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11575600B2 (en) 2020-11-24 2023-02-07 Vmware, Inc. Tunnel-less SD-WAN
US11929903B2 (en) 2020-12-29 2024-03-12 VMware LLC Emulating packet flows to assess network links for SD-WAN
WO2022154725A1 (en) * 2021-01-14 2022-07-21 Telefonaktiebolaget Lm Ericsson (Publ) Packet tunneling in a wireless communication network
US11792127B2 (en) 2021-01-18 2023-10-17 Vmware, Inc. Network-aware load balancing
US11979325B2 (en) 2021-01-28 2024-05-07 VMware LLC Dynamic SD-WAN hub cluster scaling with machine learning
CN113014586B (zh) * 2021-03-04 2022-09-13 即时匹配(上海)网络科技有限公司 Rtp数据包乱序处理及重组帧方法和系统
US11381499B1 (en) 2021-05-03 2022-07-05 Vmware, Inc. Routing meshes for facilitating routing through an SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US11681575B2 (en) * 2021-06-10 2023-06-20 Arm Limited Ordered data sub-component extraction
CN113691469B (zh) * 2021-07-27 2023-12-26 新华三技术有限公司合肥分公司 报文乱序重排方法及单板
CN113676413B (zh) * 2021-08-26 2024-05-17 锐捷网络股份有限公司 一种乱序报文的重排方法、装置及存储介质
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
CN113965391B (zh) * 2021-10-27 2023-10-20 成都数默科技有限公司 一种多数据包文件冒泡排序的方法
US11770215B2 (en) 2022-02-17 2023-09-26 Nvidia Corp. Transceiver system with end-to-end reliability and ordering protocols
CN114390004A (zh) * 2022-03-24 2022-04-22 成都数联云算科技有限公司 一种报文处理方法及系统及装置及介质
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs
CN114968893B (zh) * 2022-07-27 2022-09-30 井芯微电子技术(天津)有限公司 基于时间戳的PCIe报文队列调度方法、系统及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997048250A1 (en) 1996-06-10 1997-12-18 Telefonaktiebolaget Lm Ericsson (Publ) Minicell sequence number count
US20080279195A1 (en) 2007-05-07 2008-11-13 Hitachi, Ltd. Multi-plane cell switch fabric system
US7486678B1 (en) 2002-07-03 2009-02-03 Greenfield Networks Multi-slice network processor
US20090252168A1 (en) 2008-04-02 2009-10-08 Alaxala Networks Corporation Multi-plane cell switch fabric system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2848784B2 (ja) * 1994-08-02 1999-01-20 沖電気工業株式会社 パケット交換方式
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US6148001A (en) * 1997-06-12 2000-11-14 Nokia Telecommunications, Oy Multipoint-to-point system which multiplexes complete packets comprised of ATM cells on to a single virtual channel connection
US6741552B1 (en) * 1998-02-12 2004-05-25 Pmc Sierra Inertnational, Inc. Fault-tolerant, highly-scalable cell switching architecture
JP2001036549A (ja) * 1999-07-15 2001-02-09 Toshiba Corp データ処理システムおよびタイムスタンプ生成方法
US7102999B1 (en) * 1999-11-24 2006-09-05 Juniper Networks, Inc. Switching device
US6977930B1 (en) * 2000-02-14 2005-12-20 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US7107359B1 (en) * 2000-10-30 2006-09-12 Intel Corporation Host-fabric adapter having hardware assist architecture and method of connecting a host system to a channel-based switched fabric in a data network
US7095744B2 (en) * 2000-11-22 2006-08-22 Dune Networks Method and system for switching variable sized packets
US6781992B1 (en) * 2000-11-30 2004-08-24 Netrake Corporation Queue engine for reassembling and reordering data packets in a network
JP4489308B2 (ja) * 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
US7342942B1 (en) * 2001-02-07 2008-03-11 Cortina Systems, Inc. Multi-service segmentation and reassembly device that maintains only one reassembly context per active output port
US7085274B1 (en) * 2001-09-19 2006-08-01 Juniper Networks, Inc. Context-switched multi-stream pipelined reorder engine
US7167476B1 (en) * 2002-04-12 2007-01-23 Juniper Networks, Inc. Systems and methods for routing data in a network device
US7124231B1 (en) * 2002-06-14 2006-10-17 Cisco Technology, Inc. Split transaction reordering circuit
US20050100035A1 (en) * 2003-11-11 2005-05-12 Avici Systems, Inc. Adaptive source routing and packet processing
US7873693B1 (en) * 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
US8279866B2 (en) * 2004-11-17 2012-10-02 Samsung Electronics Co., Ltd. Method and system for switching packets in a communication network
US8553684B2 (en) * 2006-04-24 2013-10-08 Broadcom Corporation Network switching system having variable headers and addresses
ES2363942T3 (es) * 2008-12-19 2011-08-19 Alcatel Lucent Elemento de red escalable con funcionalidad de segmentación y reensamblaje (sar) para conmutar señales de multiplexación por división de tiempo.
CN101932006A (zh) * 2009-06-19 2010-12-29 中兴通讯股份有限公司 数据包发送、接收、传输方法及装置
CN101795236B (zh) * 2010-03-31 2012-08-08 成都市华为赛门铁克科技有限公司 报文保序方法及装置
US9602439B2 (en) * 2010-04-30 2017-03-21 Juniper Networks, Inc. Methods and apparatus for flow control associated with a switch fabric
US9071499B2 (en) * 2011-03-28 2015-06-30 Citrix Systems, Inc. Systems and methods for emulating a NIC for packet transmission on hardware RSS unaware NICs in a multi-core system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997048250A1 (en) 1996-06-10 1997-12-18 Telefonaktiebolaget Lm Ericsson (Publ) Minicell sequence number count
US7486678B1 (en) 2002-07-03 2009-02-03 Greenfield Networks Multi-slice network processor
US20080279195A1 (en) 2007-05-07 2008-11-13 Hitachi, Ltd. Multi-plane cell switch fabric system
US20090252168A1 (en) 2008-04-02 2009-10-08 Alaxala Networks Corporation Multi-plane cell switch fabric system

Also Published As

Publication number Publication date
WO2012162949A1 (zh) 2012-12-06
EP2736197A4 (en) 2014-05-28
US20140160935A1 (en) 2014-06-12
CN103069757A (zh) 2013-04-24
EP2736197B1 (en) 2016-03-09
EP2736197A1 (en) 2014-05-28
JP2014522202A (ja) 2014-08-28
KR20140046052A (ko) 2014-04-17
US9380007B2 (en) 2016-06-28
JP5863076B2 (ja) 2016-02-16
CN103069757B (zh) 2015-07-22

Similar Documents

Publication Publication Date Title
KR101607180B1 (ko) 패킷 재조립 및 재배열 방법, 장치 및 시스템
US9088520B2 (en) Network impairment unit for concurrent delay and packet queue impairments
US5311509A (en) Configurable gigabits switch adapter
US9894013B2 (en) Early queueing network device
EP0680179B1 (en) Multicasting apparatus
EP0680173B1 (en) Multicasting apparatus
US8135004B2 (en) Multi-plane cell switch fabric system
US8576713B2 (en) Traffic generator with priority flow control
EP2898641B1 (en) Ultra low latency network buffer storage
US8514874B2 (en) Thread synchronization in a multi-thread network communications processor architecture
US8520529B2 (en) Reordering network traffic
US9582440B2 (en) Credit based low-latency arbitration with data transfer
CA2015514C (en) Packet switching system having bus matrix switch
US20070153796A1 (en) Packet processing utilizing cached metadata to support forwarding and non-forwarding operations on parallel paths
JP4779955B2 (ja) パケット処理装置及びパケット処理方法
EP0581486A2 (en) High bandwidth packet switch
US20030133465A1 (en) System for reordering sequenced based packets in a switching network
CN112084136B (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
US20090196288A1 (en) Efficient Packet Replication
JP2009253422A (ja) セル分散型スイッチファブリック
CN108462649B (zh) 降低onu中拥塞状态下高优先级数据传输时延的方法和装置
US20080031262A1 (en) Load-balanced switch architecture for reducing cell delay time
CN114531488A (zh) 一种面向以太网交换器的高效缓存管理系统
US20130247071A1 (en) System and method for efficient shared buffer management
CN116893983B (zh) 数据缓存方法、设备及介质

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: 20190306

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 5